Math - FreeSlave/halflife-featureful GitHub Wiki
Wiki is deprecated. Proceed to GitHub pages!
Half-Life has a very limited number of entities to do math operations. They're game_counter and game_counter_set. These entities are very limited by themselves, and Featureful SDK provides more powerful ways to do math operations.
Calc Ratio
All entities have a calculable value associated with them - the concept borrowed from Spirit of Half-Life, where it's called Calc Ratio (see also: Locus system). While most entities have a constant zero value as Calc Ratio, there're few entities that actually implement this concept in Featureful SDK:
game_counter- the Calc Ratio is the current counter value. Note thatgame_counterholds integer values only.env_global- since each global has an integer number associated with them in Featureful SDK, theenv_globalcan be used to access this number.- Monsters. For them Calc Ratio is the health / max health fraction (the the number in [0..1] range).
- Wall rechargers (health and armor). For them Calc Ratio is the juice left / max juice capacity fraction (the the number in [0..1] range).
calc_ratio- Calc Ratio is calculated based on Calc Ratio of another entity.calc_eval_number- see calc_eval_number.game_number- Calc Ratio is a stored floating point value.player_calc_ratio- report some player related values like current health, armor and ammo.
Locus Ratio
Locus Ratio (or LR for short) is a type of entity parameter. In FGD file they're marked with [LR] suffix. LR parameter can be either a constant number or a name of another entity. In the latter case the Calc Ratio result of another entity will be used as a number.
The entity that have LR parameters can behave differently depending on their values.
Some examples of entities having LR parameters:
trigger_push- can have a speed factor calculable from another entity.env_shooter- can have a speed factor calculable from another entity.calc_ratio- calculates its own Calc Ratio depending onLRparameter.- Vector related calc entities (e.g.
calc_subvelocity) haveLRparameter for factor. calc_eval_number- see calc_eval_number.trigger_compare- when triggered, compares calculated values of twoLRparameters and fire the targets accordingly to result.
calc_eval_number
This entity calculates a result of binary operation on two LR parameters.
calc_eval_number can act as LR parameter of another entity by itself. In this case the result of operation is used as Calc Ratio. The calc_eval_number entity can be used as one of operands for another calc_eval_number entity, allowing to do calculations on more than two operands.
When calc_eval_number is triggered by something else it can store the result of operation in other entity (see below).
Storing a value
There're few entities that can act as value storage for the result of calc_eval_number.
game_counter- the stored value will be cast to integer. The counter may fire its target and reset if it hit the limit.game_number- the stored value will be preserved as is. This entity just stores the value and it's expected to be accessed by other entities.env_globalwithModify/Set valuetrigger mode. The value will be cast to integer.