Producers, gates, consumers, server revalidation
Eden interaction circuits internals
A no-script puzzle system. Nodes are synchronized editor modules; direction comes from named input IDs; the ACE action appears only when the circuit evaluates true, and the server re-checks before writing state.
1. Graph model
Every node is a module with a nodeId. A downstream node lists upstream IDs in inputIds.
interactionInputs resolves each ID against directly synchronized neighbours and rejects missing,
duplicated or ambiguous IDs. That is why a cycle or a forgotten sync line keeps the action unavailable instead of
producing a random result.
2. Producers
| Source | Reads |
|---|---|
playerItem | Exact class and count in the interacting player's inventory. |
containerItem | Direct cargo of the synchronized container, not nested containers. |
objectVariable | Boolean (or numeric equality) variable on the synchronized object. |
missionVariable | Boolean in missionNamespace; broadcast it for multiplayer. |
Circuits check conditions; they never consume or transfer items.
3. Gates
AND, OR, NOT and XOR. OR and XOR exist so alternate keys or routes can open the same door without extra scripting.
4. Consumers
A consumer is synchronized to one or more target objects and to its inputs. It creates an ACE action on each target
when the circuit passes. On use the client calls the server, which validates the curator/owner relationship, distance,
liveness and the full circuit again — interactionExecute refuses anything that fails. Only then does it
broadcast the completion variable, optionally with a numeric value, and drive an animation source.
5. Patterns
- Fuse panel: container producer (fuse) → consumer on the panel writing
RUN. - Chained logic: producer on the panel reading
RUN→ gate → another consumer. - Three-position lever: three consumers writing
-1 / 0 / 1toSWITCH; producers read numeric equality. - Late joiners: consumers re-broadcast their action setup to all clients, so a player joining mid-mission sees the same interaction.
Related functions
FF_utils_fnc_interactionAvailable— Shared client/server circuit check. Returns [available, empty] after validating the targetFF_utils_fnc_interactionInputs— Resolves the consumer/gate input node IDs against directly synchronized neighbours. ReturnFF_utils_fnc_interactionSignal— Evaluates one producer or gate and returns [passes, detail]. Producers read items, objectFF_utils_fnc_interactionExecute— Server-side completion of a consumer action. Re-validates owner, distance, liveness and thFF_utils_fnc_interactionClientInit— Installs the ACE action on a consumer's target objects for every client and re-adds it aftFF_utils_fnc_moduleInteraction— Eden module callback for circuit consumers. Registers target objects and pushes the ACE ac