You've already forked Arcturus-Morningstar-Extended
mirror of
https://github.com/duckietm/Arcturus-Morningstar-Extended.git
synced 2026-06-19 15:06:19 +00:00
1430 lines
48 KiB
Markdown
1430 lines
48 KiB
Markdown
# Wired Full Reference
|
||
|
||
## 1. Scope
|
||
|
||
This document is a code-based reference for the current wired runtime in `Arcturus-Morningstar-Extended`.
|
||
|
||
It covers:
|
||
|
||
- general wired engine rules
|
||
- tick and delay rules
|
||
- protection and monitor rules
|
||
- custom variable rules
|
||
- every registered wired trigger, effect, selector, condition, extra, and variable definition
|
||
|
||
Primary runtime sources used for this reference:
|
||
|
||
- `Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java`
|
||
- `Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredManager.java`
|
||
- `Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredEngine.java`
|
||
- `Emulator/src/main/java/com/eu/habbo/habbohotel/wired/tick/WiredTickService.java`
|
||
- `Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredHandler.java`
|
||
|
||
This file is meant to describe the runtime behavior and configuration surface, not the Nitro UI layout in detail. For `:wired` monitor and inspection tooling, also see `Arcturus-Morningstar-Extended/docs/wired_tools_reference.md`.
|
||
|
||
---
|
||
|
||
## 2. Wired Engine, Tick, and General Runtime Rules
|
||
|
||
### 2.1 Main runtime architecture
|
||
|
||
The modern wired runtime is centered around these components:
|
||
|
||
- `WiredManager`
|
||
- initializes the wired runtime
|
||
- loads config
|
||
- owns the centralized engine and stack index
|
||
- exposes high-level trigger methods such as user click, walk on, say, signal, game events, and so on
|
||
- `WiredEngine`
|
||
- receives `WiredEvent` objects
|
||
- finds candidate stacks through the room stack index
|
||
- evaluates selectors, conditions, extras, and effects
|
||
- enforces abuse protection, delayed queue limits, recursion limits, and diagnostics
|
||
- `RoomWiredStackIndex`
|
||
- caches stack membership so the engine can quickly find candidate stacks for a given event type
|
||
- `WiredTickService`
|
||
- runs a single global tick loop
|
||
- keeps repeaters and other tickables synchronized across rooms
|
||
- `WiredHandler`
|
||
- legacy compatibility path that still exists in the codebase
|
||
- still useful to understand older stack execution logic and some compatibility behavior
|
||
|
||
### 2.2 Current execution model
|
||
|
||
At a high level, the engine processes a stack like this:
|
||
|
||
1. receive an event
|
||
2. find candidate stacks for the event type
|
||
3. check whether the trigger matches
|
||
4. build a `WiredContext`
|
||
5. run selectors first, so the target set is available
|
||
6. apply selection-filter extras if present
|
||
7. evaluate conditions
|
||
8. apply stack-level gates such as execution limit
|
||
9. activate the trigger and extras
|
||
10. execute or schedule effects
|
||
|
||
Important consequences of this model:
|
||
|
||
- selectors run before conditions in the new engine
|
||
- conditions can inspect the selected targets or even the whole stack
|
||
- effects may run immediately or with delay
|
||
- extras can modify selection, condition evaluation, effect ordering, and effect subset choice
|
||
|
||
### 2.3 Tick rules
|
||
|
||
The centralized tick service is defined in `WiredTickService`.
|
||
|
||
Current core rules:
|
||
|
||
- default global tick interval: `50ms`
|
||
- hard allowed range: `10ms` to `500ms`
|
||
- repeaters and other tickables use a shared global tick counter
|
||
- tickables are registered per room
|
||
- when a room is unloaded, tickables should be unregistered
|
||
|
||
This means:
|
||
|
||
- repeaters are synchronized with each other
|
||
- two repeaters with the same timing do not drift independently per room
|
||
- unload/cleanup behavior matters for room-scoped temporary state
|
||
|
||
### 2.4 Delay rules
|
||
|
||
The classic wired delay value is stored in half-second steps.
|
||
|
||
Runtime rule:
|
||
|
||
- `effective delay in milliseconds = delay * 500`
|
||
|
||
Examples:
|
||
|
||
- delay `0` = immediate execution
|
||
- delay `1` = `500ms`
|
||
- delay `2` = `1000ms`
|
||
|
||
This rule is used both by the legacy path and by the new engine.
|
||
|
||
### 2.5 Stack ordering rules
|
||
|
||
There are several separate notions of order:
|
||
|
||
- **stack candidate order**
|
||
- candidate stacks are found through the index for the specific event type
|
||
- **item ordering inside one tile stack**
|
||
- `WiredExecutionOrderUtil` sorts by:
|
||
- `z`
|
||
- then `item id`
|
||
- **effect subset modifiers**
|
||
- `wf_xtra_random` can choose only part of the effects
|
||
- `wf_xtra_unseen` can rotate through effects without repeats
|
||
- **ordered execution**
|
||
- `wf_xtra_exec_in_order` is the explicit “run in stable stack order” modifier
|
||
|
||
Practical takeaway:
|
||
|
||
- if there is no order modifier, execution may depend on the collection/order produced by the runtime path
|
||
- if exact order matters, `wf_xtra_exec_in_order` is the intended box to use
|
||
|
||
### 2.6 Selection rules
|
||
|
||
Selectors build or refine the `WiredTargets` inside `WiredContext`.
|
||
|
||
In practice:
|
||
|
||
- target users and target furni are built before conditions are checked
|
||
- later effects consume those selected targets
|
||
- some selectors are pure “build a selection” tools
|
||
- some extras then trim, sort, or invert that selection
|
||
|
||
### 2.7 Condition rules
|
||
|
||
Conditions are evaluated after selectors.
|
||
|
||
General behavior:
|
||
|
||
- if there are no conditions, the stack can continue directly to effects
|
||
- if there are conditions, all configured condition logic must pass according to the current evaluation mode
|
||
- `wf_xtra_or_eval` changes how the condition results are aggregated
|
||
|
||
The runtime supports both:
|
||
|
||
- ordinary condition matching
|
||
- grouped OR semantics through condition operators and the OR-eval extra
|
||
|
||
### 2.8 Protection rules
|
||
|
||
The wired runtime has multiple safety layers:
|
||
|
||
- maximum steps per stack
|
||
- recursion depth protection
|
||
- per-room event rate limiting
|
||
- room temporary wired ban after abuse
|
||
- delayed queue cap
|
||
- execution budget / usage cap per room window
|
||
|
||
Main defaults from runtime/config:
|
||
|
||
- `wired.engine.maxStepsPerStack = 100`
|
||
- `wired.abuse.max.recursion.depth = 10`
|
||
- `wired.abuse.max.events.per.window = 100`
|
||
- `wired.abuse.rate.limit.window.ms = 10000`
|
||
- `wired.abuse.ban.duration.ms = 600000`
|
||
- `wired.monitor.usage.window.ms = 1000`
|
||
- `wired.monitor.usage.limit = 1000`
|
||
- `wired.monitor.delayed.events.limit = 100`
|
||
|
||
### 2.9 Monitor and diagnostics rules
|
||
|
||
The new engine tracks room diagnostics through `WiredRoomDiagnostics`.
|
||
|
||
This is where `:wired` monitor gets values such as:
|
||
|
||
- usage in current window
|
||
- delayed events count
|
||
- average execution time
|
||
- peak execution time
|
||
- recursion state
|
||
- heavy room status
|
||
- overload windows
|
||
|
||
Heavy/overload decisions are based on rolling windows, not on a single event.
|
||
|
||
### 2.10 Legacy compatibility notes
|
||
|
||
The project still contains `WiredHandler`.
|
||
|
||
Important practical notes:
|
||
|
||
- `WiredManager` is the intended modern entrypoint
|
||
- `wired.engine.enabled` and `wired.engine.exclusive` are treated as compatibility-only flags by `WiredManager`
|
||
- `WiredHandler` still exists and is useful for compatibility and for understanding legacy behavior
|
||
|
||
So when documenting stacks, it is best to think in terms of:
|
||
|
||
- modern runtime: `WiredManager` + `WiredEngine`
|
||
- legacy compatibility surface: `WiredHandler`
|
||
|
||
### 2.11 Custom variable rules
|
||
|
||
Custom wired variables are defined by:
|
||
|
||
- `wf_var_user`
|
||
- `wf_var_furni`
|
||
- `wf_var_room`
|
||
|
||
Shared rules:
|
||
|
||
- variable names must be unique across the whole room, even across different variable types
|
||
- allowed name length: `1..40`
|
||
- allowed characters: letters, numbers, `_`
|
||
|
||
Availability rules:
|
||
|
||
- `wf_var_user`
|
||
- room-scoped while the user is in the room
|
||
- or permanent
|
||
- `wf_var_furni`
|
||
- room-active while the room is active/loaded
|
||
- or permanent
|
||
- `wf_var_room`
|
||
- room-active
|
||
- or permanent
|
||
|
||
Timestamp rules:
|
||
|
||
- user variables: creation/update are tied to the assignment on that user
|
||
- furni variables: creation/update are tied to the assignment on that furni
|
||
- room variables: practically meaningful timestamp is mainly the last update time
|
||
|
||
Current context-status note:
|
||
|
||
- `context` appears in several variable-related layouts
|
||
- it is still partial / placeholder in several runtime paths
|
||
- `user`, `furni`, and `room/global` are the truly active targets today
|
||
|
||
### 2.12 Useful global config keys
|
||
|
||
| Key | Meaning |
|
||
|---|---|
|
||
| `wired.engine.enabled` | Compatibility-only legacy flag |
|
||
| `wired.engine.exclusive` | Compatibility-only legacy flag |
|
||
| `wired.engine.maxStepsPerStack` | Loop/step protection limit |
|
||
| `wired.engine.debug` | Verbose engine logging |
|
||
| `wired.custom.enabled` | Legacy custom wired compatibility behavior |
|
||
| `hotel.wired.furni.selection.count` | Max furni selection size stored by wired boxes |
|
||
| `hotel.wired.max_delay` | Max accepted delay value |
|
||
| `hotel.wired.message.max_length` | Max wired/bot text size |
|
||
| `wired.effect.teleport.delay` | Teleport effect delay |
|
||
| `wired.tick.interval.ms` | Global tick loop interval |
|
||
| `wired.tick.debug` | Tick debug logging |
|
||
| `wired.tick.thread.priority` | Tick thread priority |
|
||
| `wired.abuse.max.recursion.depth` | Recursion protection |
|
||
| `wired.abuse.max.events.per.window` | Event spam protection |
|
||
| `wired.abuse.rate.limit.window.ms` | Abuse window size |
|
||
| `wired.abuse.ban.duration.ms` | Temporary room wired-ban duration |
|
||
| `wired.monitor.usage.window.ms` | Usage monitor window size |
|
||
| `wired.monitor.usage.limit` | Execution budget per window |
|
||
| `wired.monitor.delayed.events.limit` | Delayed queue ceiling |
|
||
| `wired.monitor.overload.average.ms` | Overload average threshold |
|
||
| `wired.monitor.overload.peak.ms` | Overload peak threshold |
|
||
| `wired.monitor.heavy.usage.percent` | Heavy-room usage threshold |
|
||
| `wired.highscores.displaycount` | Wired highscore rows shown to users |
|
||
|
||
---
|
||
|
||
## 3. Triggers
|
||
|
||
### `wf_trg_walks_on_furni`
|
||
|
||
- **Class:** `WiredTriggerHabboWalkOnFurni`
|
||
- **Behavior:** fires when a user walks onto the selected furni/tile stack.
|
||
- **Main settings:** selected furni, standard trigger cooldown.
|
||
- **Notes:** commonly used as the first event in movement or pressure-style stacks.
|
||
|
||
### `wf_trg_walks_off_furni`
|
||
|
||
- **Class:** `WiredTriggerHabboWalkOffFurni`
|
||
- **Behavior:** fires when a user leaves the selected furni/tile stack.
|
||
- **Main settings:** selected furni, standard trigger cooldown.
|
||
- **Notes:** useful for exit logic, cleanup logic, and delayed “leave area” patterns.
|
||
|
||
### `wf_trg_click_furni`
|
||
|
||
- **Class:** `WiredTriggerHabboClicksFurni`
|
||
- **Behavior:** fires when a user clicks a furni.
|
||
- **Main settings:** selected furni.
|
||
- **Notes:** click-based stacks often combine this with selectors or trigger-user conditions.
|
||
|
||
### `wf_trg_click_tile`
|
||
|
||
- **Class:** `WiredTriggerHabboClicksTile`
|
||
- **Behavior:** fires when a user clicks a tile.
|
||
- **Main settings:** selected click-tile furni / trigger area depending on setup.
|
||
- **Notes:** often used for invisible tile-style interactions.
|
||
|
||
### `wf_trg_click_user`
|
||
|
||
- **Class:** `WiredTriggerHabboClicksUser`
|
||
- **Behavior:** fires when one avatar clicks another avatar.
|
||
- **Main settings:** runtime flags such as menu blocking and rotation behavior.
|
||
- **Notes:** the event carries both the clicking user and the clicked user.
|
||
|
||
### `wf_trg_user_performs_action`
|
||
|
||
- **Class:** `WiredTriggerHabboPerformsAction`
|
||
- **Behavior:** fires when a user performs a configured avatar action.
|
||
- **Main settings:** action id and action parameter.
|
||
- **Notes:** pairs naturally with the matching positive/negative action conditions.
|
||
|
||
### `wf_trg_enter_room`
|
||
|
||
- **Class:** `WiredTriggerHabboEntersRoom`
|
||
- **Behavior:** fires when a user enters the room.
|
||
- **Main settings:** none beyond default cooldown.
|
||
- **Notes:** common for welcome logic, spawn logic, variable assignment, and snapshot restore.
|
||
|
||
### `wf_trg_leave_room`
|
||
|
||
- **Class:** `WiredTriggerHabboLeavesRoom`
|
||
- **Behavior:** fires when a user leaves the room.
|
||
- **Main settings:** none beyond default cooldown.
|
||
- **Notes:** common for cleanup and last-known-state stacks.
|
||
|
||
### `wf_trg_says_something`
|
||
|
||
- **Class:** `WiredTriggerHabboSaysKeyword`
|
||
- **Behavior:** fires when a user says the configured text/keyword.
|
||
- **Main settings:** text/keyword, message hiding mode.
|
||
- **Notes:** can optionally suppress the visible chat output when configured to hide the message.
|
||
|
||
### `wf_trg_clock_counter`
|
||
|
||
- **Class:** `WiredTriggerClockCounter`
|
||
- **Behavior:** fires when a selected counter reaches its configured match point.
|
||
- **Main settings:** target counter(s), counter matching behavior.
|
||
- **Notes:** often combined with `wf_act_control_clock` and `wf_act_adjust_clock`.
|
||
|
||
### `wf_trg_periodically`
|
||
|
||
- **Class:** `WiredTriggerRepeater`
|
||
- **Behavior:** fires on a repeating interval.
|
||
- **Main settings:** repeat interval.
|
||
- **Notes:** synchronized through the global tick service.
|
||
|
||
### `wf_trg_period_short`
|
||
|
||
- **Class:** `WiredTriggerRepeaterShort`
|
||
- **Behavior:** faster repeating trigger with short cadence.
|
||
- **Main settings:** short repeater timing.
|
||
- **Notes:** aligned to the global `50ms` tick service.
|
||
|
||
### `wf_trg_period_long`
|
||
|
||
- **Class:** `WiredTriggerRepeaterLong`
|
||
- **Behavior:** repeating trigger with longer cadence.
|
||
- **Main settings:** long repeater timing.
|
||
- **Notes:** intended for lower-frequency repeating behavior.
|
||
|
||
### `wf_trg_state_changed`
|
||
|
||
- **Class:** `WiredTriggerFurniStateToggled`
|
||
- **Behavior:** fires when the state of the selected furni changes.
|
||
- **Main settings:** selected furni.
|
||
- **Notes:** runtime is shared with `wf_trg_stuff_state`.
|
||
|
||
### `wf_trg_stuff_state`
|
||
|
||
- **Class:** `WiredTriggerFurniStateToggled`
|
||
- **Behavior:** same runtime behavior as `wf_trg_state_changed`.
|
||
- **Main settings:** selected furni.
|
||
- **Notes:** kept as a second key/alias for compatibility/content mapping.
|
||
|
||
### `wf_trg_at_given_time`
|
||
|
||
- **Class:** `WiredTriggerAtSetTime`
|
||
- **Behavior:** fires once after the configured time target is reached.
|
||
- **Main settings:** time value.
|
||
- **Notes:** behaves like a one-shot timer rather than a repeater.
|
||
|
||
### `wf_trg_at_time_long`
|
||
|
||
- **Class:** `WiredTriggerAtTimeLong`
|
||
- **Behavior:** long-duration variant of the set-time trigger.
|
||
- **Main settings:** time value.
|
||
- **Notes:** used when the short version is not sufficient for the desired range.
|
||
|
||
### `wf_trg_collision`
|
||
|
||
- **Class:** `WiredTriggerCollision`
|
||
- **Behavior:** fires when the configured collision case is detected.
|
||
- **Main settings:** collision participants / collision mode.
|
||
- **Notes:** can easily produce loops when combined with chase/flee unless protections are configured.
|
||
|
||
### `wf_trg_game_starts`
|
||
|
||
- **Class:** `WiredTriggerGameStarts`
|
||
- **Behavior:** fires when the room game starts.
|
||
- **Main settings:** none beyond default cooldown.
|
||
- **Notes:** useful for score resets, timers, and spawn setup.
|
||
|
||
### `wf_trg_game_ends`
|
||
|
||
- **Class:** `WiredTriggerGameEnds`
|
||
- **Behavior:** fires when the room game ends.
|
||
- **Main settings:** none beyond default cooldown.
|
||
- **Notes:** useful for rewards, cleanup, and reset logic.
|
||
|
||
### `wf_trg_bot_reached_stf`
|
||
|
||
- **Class:** `WiredTriggerBotReachedFurni`
|
||
- **Behavior:** fires when a bot reaches the selected furni.
|
||
- **Main settings:** bot path target furni.
|
||
- **Notes:** typically paired with bot movement effects.
|
||
|
||
### `wf_trg_bot_reached_avtr`
|
||
|
||
- **Class:** `WiredTriggerBotReachedHabbo`
|
||
- **Behavior:** fires when a bot reaches an avatar.
|
||
- **Main settings:** target avatar/source mode.
|
||
- **Notes:** useful for escort, interaction, or story-style flows.
|
||
|
||
### `wf_trg_score_achieved`
|
||
|
||
- **Class:** `WiredTriggerScoreAchieved`
|
||
- **Behavior:** fires when the configured score threshold is reached.
|
||
- **Main settings:** score threshold.
|
||
- **Notes:** usually tied to game or team score flows.
|
||
|
||
### `wf_trg_game_team_win`
|
||
|
||
- **Class:** `WiredTriggerTeamWins`
|
||
- **Behavior:** fires when a team wins the current room game.
|
||
- **Main settings:** target team.
|
||
- **Notes:** can be used for reward or celebration logic.
|
||
|
||
### `wf_trg_game_team_lose`
|
||
|
||
- **Class:** `WiredTriggerTeamLoses`
|
||
- **Behavior:** fires when a team loses the current room game.
|
||
- **Main settings:** target team.
|
||
- **Notes:** often paired with reset or consolation logic.
|
||
|
||
### `wf_trg_recv_signal`
|
||
|
||
- **Class:** `WiredTriggerReceiveSignal`
|
||
- **Behavior:** fires when a matching signal is received from `wf_act_send_signal`.
|
||
- **Main settings:** selected antenna(s), signal/channel matching.
|
||
- **Notes:** can receive user/furni payload carried by the signal event.
|
||
|
||
---
|
||
|
||
## 4. Effects
|
||
|
||
### `wf_act_toggle_state`
|
||
|
||
- **Class:** `WiredEffectToggleFurni`
|
||
- **Behavior:** toggles the state of the selected furni.
|
||
- **Main settings:** selected furni, effect delay.
|
||
- **Notes:** one of the most common state-manipulation effects.
|
||
|
||
### `wf_act_reset_timers`
|
||
|
||
- **Class:** `WiredEffectResetTimers`
|
||
- **Behavior:** resets compatible timer/repeater-style boxes.
|
||
- **Main settings:** selected timer/counter/repeater items.
|
||
- **Notes:** used to restart timing flows cleanly.
|
||
|
||
### `wf_act_match_to_sshot`
|
||
|
||
- **Class:** `WiredEffectMatchFurni`
|
||
- **Behavior:** restores furni to a saved snapshot of state/position/rotation settings.
|
||
- **Main settings:** selected furni, snapshot match mode/settings.
|
||
- **Notes:** usually paired with move/rotate or state-change effects.
|
||
|
||
### `wf_act_move_rotate`
|
||
|
||
- **Class:** `WiredEffectMoveRotateFurni`
|
||
- **Behavior:** moves and/or rotates furni according to the configured pattern.
|
||
- **Main settings:** selected furni, movement direction, rotation behavior, effect delay.
|
||
- **Notes:** obeys move physics extras when present.
|
||
|
||
### `wf_act_give_score`
|
||
|
||
- **Class:** `WiredEffectGiveScore`
|
||
- **Behavior:** gives score to the target user/player.
|
||
- **Main settings:** score amount.
|
||
- **Notes:** room/game scoring effect.
|
||
|
||
### `wf_act_show_message`
|
||
|
||
- **Class:** `WiredEffectWhisper`
|
||
- **Behavior:** sends the configured message text.
|
||
- **Main settings:** message text, effect delay.
|
||
- **Notes:** text length is limited by wired message config.
|
||
|
||
### `wf_act_teleport_to`
|
||
|
||
- **Class:** `WiredEffectTeleport`
|
||
- **Behavior:** teleports the target user to the configured destination.
|
||
- **Main settings:** target furni/tile, effect delay.
|
||
- **Notes:** also respects `wired.effect.teleport.delay`.
|
||
|
||
### `wf_act_join_team`
|
||
|
||
- **Class:** `WiredEffectJoinTeam`
|
||
- **Behavior:** moves the target user into the selected team.
|
||
- **Main settings:** team id/color.
|
||
- **Notes:** game-specific utility effect.
|
||
|
||
### `wf_act_leave_team`
|
||
|
||
- **Class:** `WiredEffectLeaveTeam`
|
||
- **Behavior:** removes the target user from their team.
|
||
- **Main settings:** effect delay.
|
||
- **Notes:** typically used in game cleanup.
|
||
|
||
### `wf_act_chase`
|
||
|
||
- **Class:** `WiredEffectMoveFurniTowards`
|
||
- **Behavior:** moves furni toward the configured target.
|
||
- **Main settings:** selected furni, target source, movement distance/direction rules.
|
||
- **Notes:** can interact strongly with collision and movement validation.
|
||
|
||
### `wf_act_flee`
|
||
|
||
- **Class:** `WiredEffectMoveFurniAway`
|
||
- **Behavior:** moves furni away from the configured target.
|
||
- **Main settings:** selected furni, target source, movement rules.
|
||
- **Notes:** often paired with collision or proximity triggers.
|
||
|
||
### `wf_act_move_to_dir`
|
||
|
||
- **Class:** `WiredEffectChangeFurniDirection`
|
||
- **Behavior:** changes furni direction/rotation.
|
||
- **Main settings:** selected furni, new direction or direction mode.
|
||
- **Notes:** pure direction-change effect without full movement pathing.
|
||
|
||
### `wf_act_give_score_tm`
|
||
|
||
- **Class:** `WiredEffectGiveScoreToTeam`
|
||
- **Behavior:** gives score directly to a team.
|
||
- **Main settings:** team id and score amount.
|
||
- **Notes:** separate from single-user score.
|
||
|
||
### `wf_act_toggle_to_rnd`
|
||
|
||
- **Class:** `WiredEffectToggleRandom`
|
||
- **Behavior:** toggles a random compatible furni among the selected set.
|
||
- **Main settings:** selected furni.
|
||
- **Notes:** randomness is per execution.
|
||
|
||
### `wf_act_move_furni_to`
|
||
|
||
- **Class:** `WiredEffectMoveFurniTo`
|
||
- **Behavior:** moves furni to a configured target position.
|
||
- **Main settings:** selected furni, destination tile/furni, effect delay.
|
||
- **Notes:** works with movement physics and animation extras.
|
||
|
||
### `wf_act_give_reward`
|
||
|
||
- **Class:** `WiredEffectGiveReward`
|
||
- **Behavior:** gives a configured reward.
|
||
- **Main settings:** reward type, reward content, amount, inventory/catalog parameters depending on reward mode.
|
||
- **Notes:** may generate inventory items, badges, or related reward outputs depending on configuration.
|
||
|
||
### `wf_act_call_stacks`
|
||
|
||
- **Class:** `WiredEffectTriggerStacks`
|
||
- **Behavior:** triggers other stacks indirectly.
|
||
- **Main settings:** selected furni/tile sources.
|
||
- **Notes:** recursion protection is important here.
|
||
|
||
### `wf_act_kick_user`
|
||
|
||
- **Class:** `WiredEffectKickHabbo`
|
||
- **Behavior:** kicks the target user from the room.
|
||
- **Main settings:** target source, effect delay.
|
||
- **Notes:** administrative/gameplay removal effect.
|
||
|
||
### `wf_act_mute_triggerer`
|
||
|
||
- **Class:** `WiredEffectMuteHabbo`
|
||
- **Behavior:** mutes the target user.
|
||
- **Main settings:** mute duration / target source depending on layout.
|
||
- **Notes:** often used in moderation or mini-game penalties.
|
||
|
||
### `wf_act_bot_teleport`
|
||
|
||
- **Class:** `WiredEffectBotTeleport`
|
||
- **Behavior:** teleports the selected bot.
|
||
- **Main settings:** bot source and destination.
|
||
- **Notes:** bot-only effect.
|
||
|
||
### `wf_act_bot_move`
|
||
|
||
- **Class:** `WiredEffectBotWalkToFurni`
|
||
- **Behavior:** makes a bot walk toward the selected furni.
|
||
- **Main settings:** bot source, target furni.
|
||
- **Notes:** commonly paired with bot reached triggers.
|
||
|
||
### `wf_act_bot_talk`
|
||
|
||
- **Class:** `WiredEffectBotTalk`
|
||
- **Behavior:** makes a bot say configured text.
|
||
- **Main settings:** bot source, message text.
|
||
- **Notes:** subject to wired/bot text size limits.
|
||
|
||
### `wf_act_bot_give_handitem`
|
||
|
||
- **Class:** `WiredEffectBotGiveHandItem`
|
||
- **Behavior:** gives a handitem to a bot.
|
||
- **Main settings:** bot source, handitem id.
|
||
- **Notes:** bot cosmetic / state effect.
|
||
|
||
### `wf_act_bot_follow_avatar`
|
||
|
||
- **Class:** `WiredEffectBotFollowHabbo`
|
||
- **Behavior:** makes a bot follow an avatar.
|
||
- **Main settings:** bot source, avatar source.
|
||
- **Notes:** useful for escort or scripted behaviors.
|
||
|
||
### `wf_act_bot_clothes`
|
||
|
||
- **Class:** `WiredEffectBotClothes`
|
||
- **Behavior:** changes a bot’s clothes/look.
|
||
- **Main settings:** bot source, look string.
|
||
- **Notes:** bot appearance effect.
|
||
|
||
### `wf_act_bot_talk_to_avatar`
|
||
|
||
- **Class:** `WiredEffectBotTalkToHabbo`
|
||
- **Behavior:** makes a bot talk toward an avatar/target.
|
||
- **Main settings:** bot source, avatar target, text.
|
||
- **Notes:** dialogue-oriented bot effect.
|
||
|
||
### `wf_act_give_respect`
|
||
|
||
- **Class:** `WiredEffectGiveRespect`
|
||
- **Behavior:** gives respect to the target user.
|
||
- **Main settings:** respect amount / target source.
|
||
- **Notes:** social reward effect.
|
||
|
||
### `wf_act_alert`
|
||
|
||
- **Class:** `WiredEffectAlert`
|
||
- **Behavior:** sends an alert window/message.
|
||
- **Main settings:** alert text.
|
||
- **Notes:** distinct from whisper-style chat output.
|
||
|
||
### `wf_act_give_handitem`
|
||
|
||
- **Class:** `WiredEffectGiveHandItem`
|
||
- **Behavior:** gives a handitem to the target user.
|
||
- **Main settings:** handitem id.
|
||
- **Notes:** user state/cosmetic effect.
|
||
|
||
### `wf_act_give_effect`
|
||
|
||
- **Class:** `WiredEffectGiveEffect`
|
||
- **Behavior:** gives an avatar effect to the target user.
|
||
- **Main settings:** effect id.
|
||
- **Notes:** visual avatar effect.
|
||
|
||
### `wf_act_freeze`
|
||
|
||
- **Class:** `WiredEffectFreeze`
|
||
- **Behavior:** freezes the selected user targets.
|
||
- **Main settings:** target source, effect delay.
|
||
- **Notes:** mainly game/control utility.
|
||
|
||
### `wf_act_unfreeze`
|
||
|
||
- **Class:** `WiredEffectUnfreeze`
|
||
- **Behavior:** unfreezes the selected user targets.
|
||
- **Main settings:** target source, effect delay.
|
||
- **Notes:** counterpart to `wf_act_freeze`.
|
||
|
||
### `wf_act_furni_to_user`
|
||
|
||
- **Class:** `WiredEffectFurniToUser`
|
||
- **Behavior:** moves furni toward/on a user target.
|
||
- **Main settings:** furni source, user source, effect delay.
|
||
- **Notes:** movement batching/physics extras may change the visible result.
|
||
|
||
### `wf_act_user_to_furni`
|
||
|
||
- **Class:** `WiredEffectUserToFurni`
|
||
- **Behavior:** moves a user toward a furni target.
|
||
- **Main settings:** user source, furni target.
|
||
- **Notes:** a user-targeted movement effect.
|
||
|
||
### `wf_act_furni_to_furni`
|
||
|
||
- **Class:** `WiredEffectFurniToFurni`
|
||
- **Behavior:** moves one furni set onto another furni set.
|
||
- **Main settings:** primary furni source, secondary furni source.
|
||
- **Notes:** supports double-selection source flow.
|
||
|
||
### `wf_act_set_altitude`
|
||
|
||
- **Class:** `WiredEffectSetAltitude`
|
||
- **Behavior:** sets furni altitude.
|
||
- **Main settings:** selected furni, altitude value or altitude mode.
|
||
- **Notes:** used in advanced movement / stacking setups.
|
||
|
||
### `wf_act_rel_mov`
|
||
|
||
- **Class:** `WiredEffectRelativeMove`
|
||
- **Behavior:** moves furni using relative X/Y offsets.
|
||
- **Main settings:** selected furni, X offset, Y offset.
|
||
- **Notes:** easier to reason about than absolute destination when building movement loops.
|
||
|
||
### `wf_act_control_clock`
|
||
|
||
- **Class:** `WiredEffectControlClock`
|
||
- **Behavior:** controls counter boxes.
|
||
- **Main settings:** selected counter(s), action mode such as start/stop/reset/pause/resume.
|
||
- **Notes:** works directly with counter-based trigger/condition flows.
|
||
|
||
### `wf_act_adjust_clock`
|
||
|
||
- **Class:** `WiredEffectAdjustClock`
|
||
- **Behavior:** adjusts a counter’s current value.
|
||
- **Main settings:** selected counter(s), operation mode, amount.
|
||
- **Notes:** intended for dynamic counter manipulation.
|
||
|
||
### `wf_act_move_rotate_user`
|
||
|
||
- **Class:** `WiredEffectMoveRotateUser`
|
||
- **Behavior:** moves and/or rotates user targets.
|
||
- **Main settings:** user source, movement mode, direction/rotation settings.
|
||
- **Notes:** user-side analogue of furni move/rotate logic.
|
||
|
||
### `wf_act_send_signal`
|
||
|
||
- **Class:** `WiredEffectSendSignal`
|
||
- **Behavior:** sends a signal through antenna-based wiring.
|
||
- **Main settings:** selected antenna furni, signal payload/source options.
|
||
- **Notes:** can carry user/furni payload to `wf_trg_recv_signal`.
|
||
|
||
### `wf_act_give_var`
|
||
|
||
- **Class:** `WiredEffectGiveVariable`
|
||
- **Behavior:** assigns a custom variable to a compatible target.
|
||
- **Main settings:** variable definition, target type/source, overwrite flag, initial value if the variable has value.
|
||
- **Notes:** works with `wf_var_user` and `wf_var_furni`; room/global variables are definition-driven and do not need this assigner.
|
||
|
||
### `wf_act_remove_var`
|
||
|
||
- **Class:** `WiredEffectRemoveVariable`
|
||
- **Behavior:** removes a custom variable assignment from the selected target.
|
||
- **Main settings:** variable definition, target type/source.
|
||
- **Notes:** counterpart to `wf_act_give_var`.
|
||
|
||
### `wf_act_change_var_val`
|
||
|
||
- **Class:** `WiredEffectChangeVariableValue`
|
||
- **Behavior:** changes the value of a variable by applying an operation.
|
||
- **Main settings:** variable selection, operation, reference mode, constant or reference variable, reference source, target source.
|
||
- **Supported operations:** assign, add, subtract, multiply, divide, power, modulo, min, max, random, absolute, bitwise AND/OR/XOR/NOT, left shift, right shift.
|
||
- **Notes:** one of the most flexible variable effects; textual rendering is separate and handled by extras.
|
||
|
||
---
|
||
|
||
## 5. Selectors
|
||
|
||
### General selector notes
|
||
|
||
Selectors typically do one or both of these:
|
||
|
||
- build a new target set
|
||
- filter/transform an existing target set
|
||
|
||
When the UI exposes classic selector options, those usually include:
|
||
|
||
- filter the existing selection
|
||
- invert the result
|
||
|
||
### `wf_slc_furni_area`
|
||
|
||
- **Class:** `WiredEffectFurniArea`
|
||
- **Behavior:** selects furni in a configured area.
|
||
- **Main settings:** area size/position.
|
||
- **Notes:** foundational room-space selector.
|
||
|
||
### `wf_slc_furni_neighborhood`
|
||
|
||
- **Class:** `WiredEffectFurniNeighborhood`
|
||
- **Behavior:** selects furni in a local neighborhood around the source point.
|
||
- **Main settings:** neighborhood/radius.
|
||
- **Notes:** useful for adjacency-based logic.
|
||
|
||
### `wf_slc_furni_bytype`
|
||
|
||
- **Class:** `WiredEffectFurniByType`
|
||
- **Behavior:** selects furni by base furni type.
|
||
- **Main settings:** furni type.
|
||
- **Notes:** good for “all chairs”, “all switches”, and similar patterns.
|
||
|
||
### `wf_slc_furni_altitude`
|
||
|
||
- **Class:** `WiredEffectFurniAltitude`
|
||
- **Behavior:** selects furni by altitude relation/value.
|
||
- **Main settings:** compare mode and altitude target.
|
||
- **Notes:** useful in stacked build logic.
|
||
|
||
### `wf_slc_furni_onfurni`
|
||
|
||
- **Class:** `WiredEffectFurniOnFurni`
|
||
- **Behavior:** selects furni that are on top of other furni.
|
||
- **Main settings:** base furni selection.
|
||
- **Notes:** stack-inspection selector.
|
||
|
||
### `wf_slc_furni_picks`
|
||
|
||
- **Class:** `WiredEffectFurniPicks`
|
||
- **Behavior:** selects a hand-picked list of furni.
|
||
- **Main settings:** selected furni list.
|
||
- **Notes:** capped by `hotel.wired.furni.selection.count`.
|
||
|
||
### `wf_slc_furni_signal`
|
||
|
||
- **Class:** `WiredEffectFurniSignal`
|
||
- **Behavior:** selects furni carried by a signal event.
|
||
- **Main settings:** signal source mode.
|
||
- **Notes:** meaningful only in signal-driven stacks.
|
||
|
||
### `wf_slc_users_area`
|
||
|
||
- **Class:** `WiredEffectUsersArea`
|
||
- **Behavior:** selects users in a configured area.
|
||
- **Main settings:** area size/position.
|
||
- **Notes:** area equivalent of the furni selector.
|
||
|
||
### `wf_slc_users_neighborhood`
|
||
|
||
- **Class:** `WiredEffectUsersNeighborhood`
|
||
- **Behavior:** selects users in a nearby neighborhood.
|
||
- **Main settings:** neighborhood/radius.
|
||
- **Notes:** good for local interaction logic.
|
||
|
||
### `wf_slc_users_signal`
|
||
|
||
- **Class:** `WiredEffectUsersSignal`
|
||
- **Behavior:** selects users carried by a signal event.
|
||
- **Main settings:** signal source mode.
|
||
- **Notes:** signal-only context.
|
||
|
||
### `wf_slc_users_bytype`
|
||
|
||
- **Class:** `WiredEffectUsersByType`
|
||
- **Behavior:** selects users by runtime category.
|
||
- **Main settings:** user type such as habbo, bot, pet.
|
||
- **Notes:** useful for mixed rooms with bots and pets.
|
||
|
||
### `wf_slc_users_team`
|
||
|
||
- **Class:** `WiredEffectUsersTeam`
|
||
- **Behavior:** selects users by team membership.
|
||
- **Main settings:** team id/color.
|
||
- **Notes:** game-centric selector.
|
||
|
||
### `wf_slc_users_byaction`
|
||
|
||
- **Class:** `WiredEffectUsersByAction`
|
||
- **Behavior:** selects users by current action/state.
|
||
- **Main settings:** action type / action parameter.
|
||
- **Notes:** complements the action trigger/conditions.
|
||
|
||
### `wf_slc_users_byname`
|
||
|
||
- **Class:** `WiredEffectUsersByName`
|
||
- **Behavior:** selects users whose names are listed in the text area.
|
||
- **Main settings:** multiline list of usernames.
|
||
- **Notes:** direct name-driven selector.
|
||
|
||
### `wf_slc_users_handitem`
|
||
|
||
- **Class:** `WiredEffectUsersHandItem`
|
||
- **Behavior:** selects users holding a specific handitem.
|
||
- **Main settings:** handitem id.
|
||
- **Notes:** useful for role/item possession flows.
|
||
|
||
### `wf_slc_users_onfurni`
|
||
|
||
- **Class:** `WiredEffectUsersOnFurni`
|
||
- **Behavior:** selects users standing on selected furni.
|
||
- **Main settings:** base furni selection.
|
||
- **Notes:** common in pressure/tile gameplay.
|
||
|
||
### `wf_slc_users_group`
|
||
|
||
- **Class:** `WiredEffectUsersGroup`
|
||
- **Behavior:** selects users by group relationship in the room.
|
||
- **Main settings:** group relation/mode.
|
||
- **Notes:** useful for rights/group-room logic.
|
||
|
||
### `wf_slc_furni_with_var`
|
||
|
||
- **Class:** `WiredEffectFurniWithVariable`
|
||
- **Behavior:** selects furni that hold a chosen custom variable.
|
||
- **Main settings:** variable selection, optional value filter, comparison operator, constant or variable reference, reference source, selector options.
|
||
- **Notes:** if value filtering is disabled, it behaves as a presence-only selector.
|
||
|
||
### `wf_slc_users_with_var`
|
||
|
||
- **Class:** `WiredEffectUsersWithVariable`
|
||
- **Behavior:** selects users that hold a chosen custom variable.
|
||
- **Main settings:** variable selection, optional value filter, comparison operator, constant or variable reference, reference source, selector options.
|
||
- **Notes:** user-side analogue of the furni variable selector.
|
||
|
||
---
|
||
|
||
## 6. Conditions
|
||
|
||
### General condition notes
|
||
|
||
Conditions can be thought of as gates for the stack.
|
||
|
||
Common patterns:
|
||
|
||
- positive/negative counterpart pairs
|
||
- threshold checks
|
||
- “match the current selection”
|
||
- variable-based checks
|
||
- time/date checks
|
||
|
||
### `wf_cnd_has_furni_on`
|
||
|
||
- **Class:** `WiredConditionFurniHaveFurni`
|
||
- **Behavior:** true if the configured furni have other furni on top.
|
||
- **Main settings:** target furni selection.
|
||
|
||
### `wf_cnd_furnis_hv_avtrs`
|
||
|
||
- **Class:** `WiredConditionFurniHaveHabbo`
|
||
- **Behavior:** true if the configured furni currently have avatars on top.
|
||
- **Main settings:** target furni selection.
|
||
|
||
### `wf_cnd_stuff_is`
|
||
|
||
- **Class:** `WiredConditionFurniTypeMatch`
|
||
- **Behavior:** true if the furni match the configured type.
|
||
- **Main settings:** furni type.
|
||
|
||
### `wf_cnd_actor_in_group`
|
||
|
||
- **Class:** `WiredConditionGroupMember`
|
||
- **Behavior:** true if the acting user is in the required group relation.
|
||
- **Main settings:** group relation.
|
||
|
||
### `wf_cnd_user_count_in`
|
||
|
||
- **Class:** `WiredConditionHabboCount`
|
||
- **Behavior:** true if room user count satisfies the configured threshold.
|
||
- **Main settings:** comparison and count value.
|
||
|
||
### `wf_cnd_wearing_effect`
|
||
|
||
- **Class:** `WiredConditionHabboHasEffect`
|
||
- **Behavior:** true if the target user is wearing the configured effect.
|
||
- **Main settings:** effect id.
|
||
|
||
### `wf_cnd_wearing_badge`
|
||
|
||
- **Class:** `WiredConditionHabboWearsBadge`
|
||
- **Behavior:** true if the target user wears the configured badge.
|
||
- **Main settings:** badge code.
|
||
|
||
### `wf_cnd_time_less_than`
|
||
|
||
- **Class:** `WiredConditionLessTimeElapsed`
|
||
- **Behavior:** true if less than the configured time has elapsed.
|
||
- **Main settings:** duration.
|
||
|
||
### `wf_cnd_match_snapshot`
|
||
|
||
- **Class:** `WiredConditionMatchStatePosition`
|
||
- **Behavior:** true if the current furni state/position matches the stored snapshot.
|
||
- **Main settings:** selected furni, snapshot fields to compare.
|
||
|
||
### `wf_cnd_time_more_than`
|
||
|
||
- **Class:** `WiredConditionMoreTimeElapsed`
|
||
- **Behavior:** true if more than the configured time has elapsed.
|
||
- **Main settings:** duration.
|
||
|
||
### `wf_cnd_not_furni_on`
|
||
|
||
- **Class:** `WiredConditionNotFurniHaveFurni`
|
||
- **Behavior:** logical negation of `wf_cnd_has_furni_on`.
|
||
- **Main settings:** target furni selection.
|
||
|
||
### `wf_cnd_not_hv_avtrs`
|
||
|
||
- **Class:** `WiredConditionNotFurniHaveHabbo`
|
||
- **Behavior:** logical negation of `wf_cnd_furnis_hv_avtrs`.
|
||
- **Main settings:** target furni selection.
|
||
|
||
### `wf_cnd_not_stuff_is`
|
||
|
||
- **Class:** `WiredConditionNotFurniTypeMatch`
|
||
- **Behavior:** logical negation of `wf_cnd_stuff_is`.
|
||
- **Main settings:** furni type.
|
||
|
||
### `wf_cnd_not_user_count`
|
||
|
||
- **Class:** `WiredConditionNotHabboCount`
|
||
- **Behavior:** logical negation of the user-count match.
|
||
- **Main settings:** comparison and count value.
|
||
|
||
### `wf_cnd_not_wearing_fx`
|
||
|
||
- **Class:** `WiredConditionNotHabboHasEffect`
|
||
- **Behavior:** true if the user is not wearing the configured effect.
|
||
- **Main settings:** effect id.
|
||
|
||
### `wf_cnd_not_wearing_b`
|
||
|
||
- **Class:** `WiredConditionNotHabboWearsBadge`
|
||
- **Behavior:** true if the user is not wearing the configured badge.
|
||
- **Main settings:** badge code.
|
||
|
||
### `wf_cnd_not_in_group`
|
||
|
||
- **Class:** `WiredConditionNotInGroup`
|
||
- **Behavior:** true if the user is not in the configured group relation.
|
||
- **Main settings:** group relation.
|
||
|
||
### `wf_cnd_not_in_team`
|
||
|
||
- **Class:** `WiredConditionNotInTeam`
|
||
- **Behavior:** true if the user is not in the configured team.
|
||
- **Main settings:** team id/color.
|
||
|
||
### `wf_cnd_not_match_snap`
|
||
|
||
- **Class:** `WiredConditionNotMatchStatePosition`
|
||
- **Behavior:** logical negation of snapshot match.
|
||
- **Main settings:** selected furni, snapshot fields to compare.
|
||
|
||
### `wf_cnd_not_trggrer_on`
|
||
|
||
- **Class:** `WiredConditionNotTriggerOnFurni`
|
||
- **Behavior:** true if the triggerer is not on the selected furni.
|
||
- **Main settings:** selected furni.
|
||
|
||
### `wf_cnd_actor_in_team`
|
||
|
||
- **Class:** `WiredConditionTeamMember`
|
||
- **Behavior:** true if the actor belongs to the required team.
|
||
- **Main settings:** team id/color.
|
||
|
||
### `wf_cnd_trggrer_on_frn`
|
||
|
||
- **Class:** `WiredConditionTriggerOnFurni`
|
||
- **Behavior:** true if the triggerer is on the selected furni.
|
||
- **Main settings:** selected furni.
|
||
|
||
### `wf_cnd_has_handitem`
|
||
|
||
- **Class:** `WiredConditionHabboHasHandItem`
|
||
- **Behavior:** true if the user currently holds the configured handitem.
|
||
- **Main settings:** handitem id.
|
||
|
||
### `wf_cnd_not_has_handitem`
|
||
|
||
- **Class:** `WiredConditionNotHabboHasHandItem`
|
||
- **Behavior:** logical negation of the handitem condition.
|
||
- **Main settings:** handitem id.
|
||
|
||
### `wf_cnd_date_rng_active`
|
||
|
||
- **Class:** `WiredConditionDateRangeActive`
|
||
- **Behavior:** true if current server time is between the configured absolute date/time bounds.
|
||
- **Main settings:** start timestamp, end timestamp.
|
||
|
||
### `wf_cnd_valid_moves`
|
||
|
||
- **Class:** `WiredConditionMovementValidation`
|
||
- **Behavior:** simulates movement-related effects in the current stack and fails if a movement would be invalid.
|
||
- **Main settings:** no major user-facing setting besides stack composition.
|
||
- **Notes:** especially useful before move/rotate stacks.
|
||
|
||
### `wf_cnd_counter_time_matches`
|
||
|
||
- **Class:** `WiredConditionCounterTimeMatches`
|
||
- **Behavior:** true if the selected counter(s) match the configured time value.
|
||
- **Main settings:** counter selection, compare mode, target value, quantifier.
|
||
|
||
### `wf_cnd_match_time`
|
||
|
||
- **Class:** `WiredConditionMatchTime`
|
||
- **Behavior:** true if server local time matches the configured clock rule.
|
||
- **Main settings:** hour/minute/second or related time fields.
|
||
|
||
### `wf_cnd_match_date`
|
||
|
||
- **Class:** `WiredConditionMatchDate`
|
||
- **Behavior:** true if server local date matches the configured date rule.
|
||
- **Main settings:** weekday/day/month/year.
|
||
|
||
### `wf_cnd_actor_dir`
|
||
|
||
- **Class:** `WiredConditionActorDir`
|
||
- **Behavior:** true if the actor faces the configured direction.
|
||
- **Main settings:** direction.
|
||
|
||
### `wf_cnd_slc_quantity`
|
||
|
||
- **Class:** `WiredConditionSelectionQuantity`
|
||
- **Behavior:** true if the current selection size matches the configured threshold.
|
||
- **Main settings:** compare mode and amount.
|
||
|
||
### `wf_cnd_user_performs_action`
|
||
|
||
- **Class:** `WiredConditionUserPerformsAction`
|
||
- **Behavior:** true if the tracked user action matches.
|
||
- **Main settings:** action id / action parameter.
|
||
|
||
### `wf_cnd_not_user_performs_action`
|
||
|
||
- **Class:** `WiredConditionNotUserPerformsAction`
|
||
- **Behavior:** logical negation of the user action condition.
|
||
- **Main settings:** action id / action parameter.
|
||
|
||
### `wf_cnd_has_altitude`
|
||
|
||
- **Class:** `WiredConditionHasAltitude`
|
||
- **Behavior:** true if the selected furni satisfy the altitude comparison.
|
||
- **Main settings:** compare mode and altitude value.
|
||
|
||
### `wf_cnd_triggerer_match`
|
||
|
||
- **Class:** `WiredConditionTriggererMatch`
|
||
- **Behavior:** true if the triggerer matches the required target/source rule.
|
||
- **Main settings:** target source/match mode.
|
||
|
||
### `wf_cnd_not_triggerer_match`
|
||
|
||
- **Class:** `WiredConditionNotTriggererMatch`
|
||
- **Behavior:** logical negation of triggerer match.
|
||
- **Main settings:** target source/match mode.
|
||
|
||
### `wf_cnd_team_has_score`
|
||
|
||
- **Class:** `WiredConditionTeamHasScore`
|
||
- **Behavior:** true if the selected team score satisfies the configured comparison.
|
||
- **Main settings:** team id, comparison mode, score threshold.
|
||
|
||
### `wf_cnd_team_has_rank`
|
||
|
||
- **Class:** `WiredConditionTeamHasRank`
|
||
- **Behavior:** true if the selected team currently has the configured rank/placement.
|
||
- **Main settings:** team id, rank target.
|
||
|
||
### `wf_cnd_has_var`
|
||
|
||
- **Class:** `WiredConditionHasVariable`
|
||
- **Behavior:** true if the target entity holds the chosen variable.
|
||
- **Main settings:** variable selection, quantifier (`all` / `any`), variable source target.
|
||
- **Notes:** current layout/runtime is centered on user and furni variables; context exists as future placeholder.
|
||
|
||
### `wf_cnd_neg_has_var`
|
||
|
||
- **Class:** `WiredConditionNotHasVariable`
|
||
- **Behavior:** logical negation of `wf_cnd_has_var`.
|
||
- **Main settings:** variable selection, quantifier, source target.
|
||
|
||
### `wf_cnd_var_val_match`
|
||
|
||
- **Class:** `WiredConditionVariableValueMatch`
|
||
- **Behavior:** compares a variable value against a constant or another variable.
|
||
- **Main settings:** variable selection, compare type (`>`, `≥`, `=`, `≤`, `<`, `≠`), reference mode, reference variable/source, quantifier.
|
||
- **Notes:** room/global variables are supported here; context remains partial.
|
||
|
||
### `wf_cnd_var_age_match`
|
||
|
||
- **Class:** `WiredConditionVariableAgeMatch`
|
||
- **Behavior:** compares variable age against a duration.
|
||
- **Main settings:** variable selection, compare field (`creation` or `update` time), compare type (`lower than` / `higher than`), duration value + unit, quantifier, source.
|
||
- **Notes:** room/global variables are mostly meaningful for update time.
|
||
|
||
---
|
||
|
||
## 7. Extras
|
||
|
||
### `wf_xtra_random`
|
||
|
||
- **Class:** `WiredExtraRandom`
|
||
- **Behavior:** executes only a random subset of effects instead of all effects.
|
||
- **Main settings:** number of effects to choose, optional recent-history protection.
|
||
- **Notes:** effect subset changes at each execution.
|
||
|
||
### `wf_xtra_unseen`
|
||
|
||
- **Class:** `WiredExtraUnseen`
|
||
- **Behavior:** rotates through effects without repeating one until the full cycle is exhausted.
|
||
- **Main settings:** hidden runtime state / no-repeat cycle.
|
||
- **Notes:** useful when true round-robin behavior is preferred over randomness.
|
||
|
||
### `wf_blob`
|
||
|
||
- **Class:** `WiredBlob`
|
||
- **Behavior:** special wired/game helper item.
|
||
- **Main settings:** blob-specific gameplay/runtime state.
|
||
- **Notes:** not a normal logic extra in the same sense as the others, but it is registered in the wired extra family.
|
||
|
||
### `wf_xtra_or_eval`
|
||
|
||
- **Class:** `WiredExtraOrEval`
|
||
- **Behavior:** changes how condition results are aggregated.
|
||
- **Main settings:** evaluation mode and compare value.
|
||
- **Notes:** lets stacks use modes beyond plain “all conditions must pass”.
|
||
|
||
### `wf_xtra_filter_furni`
|
||
|
||
- **Class:** `WiredExtraFilterFurni`
|
||
- **Behavior:** trims the current furni selection to a limited quantity.
|
||
- **Main settings:** quantity.
|
||
- **Notes:** selection-filter extra, not a normal selector.
|
||
|
||
### `wf_xtra_filter_user`
|
||
|
||
- **Class:** `WiredExtraFilterUser`
|
||
- **Behavior:** trims the current user selection to a limited quantity.
|
||
- **Main settings:** quantity.
|
||
- **Notes:** same runtime family as `wf_xtra_filter_users`.
|
||
|
||
### `wf_xtra_filter_users`
|
||
|
||
- **Class:** `WiredExtraFilterUser`
|
||
- **Behavior:** same runtime behavior as `wf_xtra_filter_user`.
|
||
- **Main settings:** quantity.
|
||
- **Notes:** alias key kept for content compatibility.
|
||
|
||
### `wf_xtra_filter_furni_by_var`
|
||
|
||
- **Class:** `WiredExtraFilterFurniByVariable`
|
||
- **Behavior:** sorts furni by variable metric and keeps only the top N.
|
||
- **Main settings:** variable selection, sort mode, quantity mode, constant quantity or variable reference, reference source.
|
||
- **Supported sort modes:** highest value, lowest value, oldest creation, latest creation, oldest update, latest update.
|
||
|
||
### `wf_xtra_filter_users_by_var`
|
||
|
||
- **Class:** `WiredExtraFilterUsersByVariable`
|
||
- **Behavior:** sorts users by variable metric and keeps only the top N.
|
||
- **Main settings:** variable selection, sort mode, quantity mode, constant quantity or variable reference, reference source.
|
||
- **Supported sort modes:** highest value, lowest value, oldest creation, latest creation, oldest update, latest update.
|
||
|
||
### `wf_xtra_mov_carry_users`
|
||
|
||
- **Class:** `WiredExtraMoveCarryUsers`
|
||
- **Behavior:** carries users together with moved furni.
|
||
- **Main settings:** carry mode.
|
||
- **Notes:** affects how movement results are applied when furni move.
|
||
|
||
### `wf_xtra_mov_no_animation`
|
||
|
||
- **Class:** `WiredExtraMoveNoAnimation`
|
||
- **Behavior:** suppresses movement animation.
|
||
- **Main settings:** none besides presence in stack.
|
||
- **Notes:** intended for instant or hidden movement behavior.
|
||
|
||
### `wf_xtra_anim_time`
|
||
|
||
- **Class:** `WiredExtraAnimationTime`
|
||
- **Behavior:** overrides movement animation time.
|
||
- **Main settings:** animation duration.
|
||
- **Notes:** influences visual pacing, not core selection logic.
|
||
|
||
### `wf_xtra_mov_physics`
|
||
|
||
- **Class:** `WiredExtraMovePhysics`
|
||
- **Behavior:** changes the physics rules applied during movement.
|
||
- **Main settings:** physics flags such as collision/pass-through/stack behavior depending on layout.
|
||
- **Notes:** important for advanced furni movement setups.
|
||
|
||
### `wf_xtra_exec_in_order`
|
||
|
||
- **Class:** `WiredExtraExecuteInOrder`
|
||
- **Behavior:** forces ordered effect execution.
|
||
- **Main settings:** none besides presence in stack.
|
||
- **Notes:** the explicit “do not rely on arbitrary order” extra.
|
||
|
||
### `wf_xtra_execution_limit`
|
||
|
||
- **Class:** `WiredExtraExecutionLimit`
|
||
- **Behavior:** allows the stack to execute only a configured number of times per window.
|
||
- **Main settings:** max executions, time window.
|
||
- **Notes:** stack-level throttle.
|
||
|
||
### `wf_xtra_text_output_username`
|
||
|
||
- **Class:** `WiredExtraTextOutputUsername`
|
||
- **Behavior:** exposes one or more usernames as a text placeholder for other wired text.
|
||
- **Main settings:** placeholder name, placeholder type (single/multiple), delimiter, user source.
|
||
- **Notes:** works like a text injector for later wired text output.
|
||
|
||
### `wf_xtra_text_output_furni_name`
|
||
|
||
- **Class:** `WiredExtraTextOutputFurniName`
|
||
- **Behavior:** exposes furni names as a text placeholder.
|
||
- **Main settings:** placeholder name, placeholder type (single/multiple), delimiter, furni source.
|
||
- **Notes:** furni-name counterpart to username output.
|
||
|
||
### `wf_xtra_text_output_variable`
|
||
|
||
- **Class:** `WiredExtraTextOutputVariable`
|
||
- **Behavior:** exposes a variable value as a text placeholder.
|
||
- **Main settings:** placeholder name, variable selection, display type (`numeric` / `textual`), placeholder type (`single` / `multiple`), delimiter, dynamic variable source.
|
||
- **Notes:** textual display works only when the selected variable is connected through `wf_xtra_var_text_connector`.
|
||
|
||
### `wf_xtra_var_text_connector`
|
||
|
||
- **Class:** `WiredExtraVariableTextConnector`
|
||
- **Behavior:** maps numeric values to text labels for a variable.
|
||
- **Main settings:** text area mapping in the form `0=text`, `1=text`, and so on.
|
||
- **Notes:** must live in the same stack context as the corresponding `wf_var_*` definition to be meaningful.
|
||
|
||
---
|
||
|
||
## 8. Variable Definitions
|
||
|
||
### `wf_var_user`
|
||
|
||
- **Class:** `WiredExtraUserVariable`
|
||
- **Behavior:** defines a custom variable that can be assigned to users.
|
||
- **Main settings:** variable name, `has value` flag, availability (`while user is in room` / `permanent`).
|
||
- **Notes:** assignment is done through `wf_act_give_var`; timestamps belong to the assignment on the individual user.
|
||
|
||
### `wf_var_furni`
|
||
|
||
- **Class:** `WiredExtraFurniVariable`
|
||
- **Behavior:** defines a custom variable that can be assigned to furni.
|
||
- **Main settings:** variable name, `has value` flag, availability (`while room is active` / `permanent`).
|
||
- **Notes:** non-permanent assignments are cleaned when the room is unloaded/unregistered from room tickables.
|
||
|
||
### `wf_var_room`
|
||
|
||
- **Class:** `WiredExtraRoomVariable`
|
||
- **Behavior:** defines a room/global variable.
|
||
- **Main settings:** variable name, availability (`while room is active` / `permanent`).
|
||
- **Notes:** always has a value; there is no separate “has value” checkbox for room variables.
|
||
|
||
---
|
||
|
||
## 9. Special Wired Items
|
||
|
||
These are part of the wired ecosystem, even if they are not regular trigger/effect/selector/condition/extra boxes.
|
||
|
||
### `wf_highscore`
|
||
|
||
- **Class:** `InteractionWiredHighscore`
|
||
- **Behavior:** wired highscore furniture that stores and displays ranked score data.
|
||
- **Main settings:** score type, clear/reset policy, display behavior depending on furniture configuration.
|
||
- **Notes:** governed also by `wired.highscores.displaycount`.
|
||
|
||
---
|
||
|
||
## 10. Practical Design Notes
|
||
|
||
### 10.1 If exact order matters
|
||
|
||
Use:
|
||
|
||
- `wf_xtra_exec_in_order`
|
||
|
||
Do not rely on “it seems to run in that order” when the stack becomes more complex.
|
||
|
||
### 10.2 If the stack performs movement
|
||
|
||
Prefer to think about:
|
||
|
||
- movement validation
|
||
- movement physics extras
|
||
- carry-users extra
|
||
- animation/no-animation extras
|
||
- snapshot restore effects
|
||
|
||
Movement stacks are where most subtle runtime interactions appear.
|
||
|
||
### 10.3 If the stack uses variables
|
||
|
||
Remember:
|
||
|
||
- variable name must be room-unique
|
||
- target type matters
|
||
- room/global variables are definition-driven
|
||
- textual rendering requires the text connector
|
||
- `context` is not yet fully implemented everywhere
|
||
|
||
### 10.4 If the stack uses repeaters/timers
|
||
|
||
Remember:
|
||
|
||
- repeaters are synchronized on the global tick loop
|
||
- delay units are half-seconds
|
||
- counters, repeaters, and timer-style triggers often need explicit reset/control logic
|
||
|
||
### 10.5 If the stack is heavy
|
||
|
||
Check:
|
||
|
||
- selection size
|
||
- number of delayed effects
|
||
- recursion or self-trigger chains
|
||
- random/unseen subsets
|
||
- execution limits
|
||
- room diagnostics in `:wired`
|
||
|
||
---
|
||
|
||
## 11. Quick Alias / Shared Runtime Notes
|
||
|
||
- `wf_trg_state_changed` and `wf_trg_stuff_state` share the same runtime.
|
||
- `wf_xtra_filter_user` and `wf_xtra_filter_users` share the same runtime.
|
||
- Several positive/negative conditions are simple logical counterparts.
|
||
- `wf_act_give_var`, `wf_act_remove_var`, `wf_act_change_var_val`, variable selectors, and variable conditions all operate on top of the same custom variable system defined by `wf_var_*`.
|