Logic random outputs

From Valve Developer Community
Revision as of 02:31, 12 March 2022 by Popcorn (talk | contribs) (Bug in CS:GO.)
Jump to navigation Jump to search
English (en)Translate (Translate)

Template:Base point It randomly fires one of up to eight separate outputs. Use logic_case in older engine branches or if you need twice as many outputs.

Icon-Bug.pngBug:Counter-Strike: Global Offensive[other games?] The numbering of the KeyValues and outputs does not match: In-game, the game expects the KeyValues OnTriggerChance0-7 (and not 1-8), mapping to the outputs OnTrigger1-8.code This means that the KeyValue OnTriggerChance8 doesn't exist and that the output OnTrigger1 can only be fired if the KeyValue OnTriggerChance0 is given (and > 0), which however is !FGD. See below for a fix.  [todo tested in ?]
PlacementTip.pngExample:When receiving the Trigger input while OnTriggerChance1 equals 0.25, this entity will fire its OnTrigger1 output with a probability of 25 %.
Icon-Bug.pngBug:Counter-Strike: Global Offensive Instead, the output OnTrigger2 is fired with 25 %.  [todo tested in ?]

Keyvalues

OnTrigger1 Chance (OnTriggerChance1) to OnTrigger8 Chance (OnTriggerChance8) <float>
Chance (from 0 to 1) of the OnTrigger1-8 output firing when this entity is triggered.
Start Disabled (StartDisabled) <boolean>
Stay dormant until activated (with theEnableinput).


Flags

Only trigger once : [1]
Allow fast retrigger : [2]

Inputs

Trigger
Trigger this entity, causing its OnTrigger outputs to fire if it is enabled.
Toggle
Toggle this entity between enabled and disabled.
CancelPending
Cancel any events fired by this entity that are currently pending in the I/O event queue.

EnableDisable:

Enable / Disable
Enable/disable this entity from performing its task. It might also disappear from view.


Outputs

OnSpawn
Fired when this entity is spawned. If this entity is set to only trigger once, it will delete itself after firing this output.
OnTrigger1 to OnTrigger8
This output has a chance to fire when the entity is triggered.


FGD Code

Counter-Strike: Global Offensive[other games?] This code belongs to base.fgd. In the highlighted lines, the index of the KeyValue's name was decreased by 1 each but not their display text, so that with this fix, the numbering of the KeyValues and outputs will match in Hammer as long as SmartEdit is turned on.

@PointClass base(Targetname, EnableDisable) iconsprite("editor/logic_random_outputs.vmt") = logic_random_outputs :
	"A message forwarder. Fires up to eight separate outputs, each with a different chance of firing."
[
	spawnflags(flags) =
	[
		1: "Only trigger once" : 0
		2: "Allow fast retrigger" : 0
	]
	OnTriggerChance0(float) : "OnTrigger1 Chance" : "1.0" : "Chance (from 0 to 1) of the OnTrigger1 output firing when this entity is triggered."
	OnTriggerChance1(float) : "OnTrigger2 Chance" : "1.0" : "Chance (from 0 to 1) of the OnTrigger2 output firing when this entity is triggered."
	OnTriggerChance2(float) : "OnTrigger3 Chance" : "1.0" : "Chance (from 0 to 1) of the OnTrigger3 output firing when this entity is triggered."
	OnTriggerChance3(float) : "OnTrigger4 Chance" : "1.0" : "Chance (from 0 to 1) of the OnTrigger4 output firing when this entity is triggered."
	OnTriggerChance4(float) : "OnTrigger5 Chance" : "1.0" : "Chance (from 0 to 1) of the OnTrigger5 output firing when this entity is triggered."
	OnTriggerChance5(float) : "OnTrigger6 Chance" : "1.0" : "Chance (from 0 to 1) of the OnTrigger6 output firing when this entity is triggered."
	OnTriggerChance6(float) : "OnTrigger7 Chance" : "1.0" : "Chance (from 0 to 1) of the OnTrigger7 output firing when this entity is triggered."
	OnTriggerChance7(float) : "OnTrigger8 Chance" : "1.0" : "Chance (from 0 to 1) of the OnTrigger8 output firing when this entity is triggered."

	// Inputs
	input Trigger(void) : "Trigger this entity, causing its OnTrigger outputs to fire if it is enabled."
	input Toggle(void) : "Toggle this entity between enabled and disabled."
	input CancelPending(void) : "Cancel any events fired by this entity that are currently pending in the I/O event queue."
	
	// Outputs
	output OnSpawn(void) : "Fired when this entity is spawned. If this entity is set to only trigger once, it will "+
		"delete itself after firing this output."
	output OnTrigger1(void) : "This output has a chance to fire when the entity is triggered."
	output OnTrigger2(void) : "This output has a chance to fire when the entity is triggered."
	output OnTrigger3(void) : "This output has a chance to fire when the entity is triggered."
	output OnTrigger4(void) : "This output has a chance to fire when the entity is triggered."
	output OnTrigger5(void) : "This output has a chance to fire when the entity is triggered."
	output OnTrigger6(void) : "This output has a chance to fire when the entity is triggered."
	output OnTrigger7(void) : "This output has a chance to fire when the entity is triggered."
	output OnTrigger8(void) : "This output has a chance to fire when the entity is triggered."
]