Based on Shpuld's Cleaned up Quake id1 v1.01 QuakeC source
Conduit is a Quake mod that allows entities to transfer values between eachother.
The behavior of SUB_UseTargets
has been modified such that a firing entity
writes its io_send
field to the targeted entity's io_received
field.
Any previously existing entity (with the exception of trigger_relay
) can have
its io_send
field initialized, such that it will be sent when it calls its
targets.
Monsters wake up together if they share the same squad
name.
Causes targetted monsters to fire at it.
Fires its target when a monster that shares the same squad
name wakes up.
Analagous to info_player_start2
but for co-op spawns. If a map has both
an info_player_start2
and at least 1 info_player_coop
entity, it should
have as many info_player_coop2
entities.
trigger_relay
has been modified to transfer its received value to its
send field. This has the effect of relaying its received value to its
target entity.
For default trigger_relay
behavior, see math_var
below.
trigger_setskill
has been updated to allow being targeted if given a
targetname
. It can also be set to use its received value as the skill
level, and it will send the skill value to its targets.
This entity repeats firing its targeted entity count
times; that is, it is
fired count
+ 1 times in total when triggered. The entity will send its
current value starting from 0 and ending with count
. The initial firing
occurs delay
seconds after triggered, while the interval between subsequent
firings is wait
seconds.
Fires on map load. Can be set to send its provided io_send
field or the
current skill level.
Cause monsters in its volume to continue to the next path_corner
if waiting.
Holds a value of 0 or 1, and assigns itself the opposite and sends that
value to its target. Can be initializd with io_send
.
Added spawnflag "Latent" (4). Latent triggers are inactive until another entity targets them.
This entity center-prints its received value. A prefix can be provided
using the message
field; it defaults to "Received:".
Augmented to only open if receiving a positive input, only close if receiving a negative input, and behaving as it would in vanilla with an input of 0. E.g. a toggleable door in the open position will only close if receiving a value of 0 or lower.
Set squad
name to explicitly specify what group a linked door belongs to.
This entity stores a value which other entities can add to via received
value. The value can be bounded between a lower bound (waitmin
) and upper
bound (waitmax
) as well as being directed to fire only when the value changes,
or hits a boundary. When it is fired, it will send its value to the
targeted entity.
This entity compares its received value against its io_arg2
field. The
comparison can be greater than, less than, equal, etc. If the comparison
evaluates to true, it fires its targeted entity. Like the vanilla entities,
the io_send
field can be set to provide a value to send to targeted entities.
Load/store a global variable that transitions between maps. Variable must be an
integer in the approx. range of +/-500,000 (19 bits + sign bit). Set mode with
style
.
Modes:
-
Query. Send global to targets.
-
Store. Received value is stored to the global.
-
Adder. Global is increased by received value.
This entity evaluates a unary operation on its received value, or a binary
operation on its received value and its io_arg2
field. Then the entity
will send the result of the evaluation. Unless "Propagate non-reals*" is
checked, if an error occurs during evaluation it will not fire.
* Non-reals are any value encoding infinity
, -infinity
, or NaN
(not-a-number). These are usually caused by division by zero.
Now targets entities when killed. Can be jumped on.
Spawns monsters at its location. Set think
to the classname of the monster
to spawn and trigger up to count
times to spawn monsters. Can be given an
initial velocity with speed
and height
(matching behavior of
trigger_monsterjump
).
Added spawnflag "Run to" (1) which causes monsters to run to the waypoint instead of walking. Set a wait >0 to cause the monster to wait at the corner for that number of seconds, or <0 to wait until awoken or forced from its paused state.
Instead of firing its target, this entity sets its target's opacity to the
received value. A flag can be set to determine whether or not to disable
solidity when the targeted entity's opacity is effectively 0 (only works on
func_wall
).
This entity sets its target's io_send
value to the received value.
WARNING: Will cause unstable behavior if targeting trigger_repeater
or
math_adder
since both rely on maintaining the state of their io_send
fields.
If the targeting trigger_relay
, math_op
, or func_slider
it has no
effect.
Sets the 2nd operand of a math_op
or math_compare
to its received
value.
Sets the target's frame
value to the received value.
Controls target's animation. Animates between frames waitmin
and waitmax
,
pausing on each frame for wait
seconds. If the starting frame is greater
than the end frame, the animation plays in reverse. When triggered, a
received value of 0 toggles the animation on/off, a positive value starts
the animation playing, and a negative value stops the animation.
This entity moves to arbitrary positions along a linear path. You can set a
reference point to move to via the target
field. BE SURE one of the brushes
this entity is composed of is textured with "origin", otherwise the world's
origin will be used as a reference point. When triggered, the received
value indicates where the brush will move to -- 1 will cause it to move to its
target, 0 will cause it to move to its initial position, 0.5 will cause it to
move to a point half-way between, etc. Negative values and values greater than
1 are also valid. Damage behavior can be set to "Grow" (damage grows
quadratically), "Constant" (damage remains the same) or "Crush" (damage is
applied every frame to kill its blocker quickly). The entity can also be set
to be non-solid (useful for indicators that aren't meant to obstruct the player
or monsters). When a func_slider
stops at a destination, it will send
its current received value.
Non-solid indicator that rotates about its origin (use an origin-textured
brush). This entity can be configured to move between a start (angles
) and
end (mangle
) position. It moves to a position relative to its received
value.
A toggleable model/sprite. Specify a primary model with model
and/or a
secondary model with map
. If targeted and the received value is 0,
the models will be swapped. If the received value is negative, the model
will be set to its primary model. If the received value is positive, the
model will be set to its secondary model.
Weapons picked up for the first time in co-op will now fire their targets.
Monsters no longer become turrets.
Ogres fire in bursts of 2 shots.
Vore balls move at same speed as they do in easier difficulties when near their enemy, but are harder to lose while the vore is alive.
Enforcers fire in bursts of 3 instead of 2.
Grenades getting "stuck" on slopes leading downwards have been fixed. (Thanks, Spike!)
Grenades now deal a minimum of 100 damage to targets they hit, which guarantees that two direct hits will down an ogre.
Changelevel sets a server flag causing secondary spawns (info_player_start2
and info_player_coop2
) to be used, as if a player had picked up a rune.
Fiends and dogs now bounce off players' heads, dealing damage only on a single frame.
Fish no longer get stuck at the surface.
Shamblers can attempt to target a second point on their enemy (e.g. the player's head) if they can't hit the default position with lightning.