Hidden Triggers in TRNG
by
AkyV
Page 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
The subject of the Animation Memory Zone is always an absolute animation ID. (See Chapter 4.2. to understand what 'absolute animation' means.)
But be careful! This zone is probably buggy in some cases. It means probably all the condition combinations will work with any animations, but the executable combinations will probably work only with the animations of Lara object.
Triggers for the executable combinations:
The basic formulas:
a, the version if you don't use big numbers:
Trigger1. An F307 to define the actual subject of Animation Memory Zone. (Hereafter we call that subject 'X absolute animation ID'.)
Trigger2. An F232 to put a value (Y) between 0 and 127 into the chosen variable. Or an F252 to put a value (Y) between -1 and -128 into the chosen variable.
Trigger3. An F296 to force the chosen variable value into the chosen field.
b, the version if you use big numbers:
Trigger1. An F307 to define the actual subject of Animation Memory Zone. (Hereafter we call that subject 'X absolute animation ID'.)
Trigger2. An F263 to put a value (Y) between -65536 and 65535 into the chosen variable.
Trigger3. An F296 to force the chosen variable value into the chosen field.
Changing the basic formula:
a, If the number you want to force is above 65535: see Chapter I-21.
b, If you want to accomplish something special with the formula: see Chapter 7. and 8.
Triggers for the condition combinations:
The basic formulas:
a, the version if you don't use big numbers:
Trigger1. An F307 to define the actual subject of Animation Memory Zone.
Trigger2. An F295 to put the value of the chosen memory zone field into the chosen variable.
Trigger3. A C43 trigger to study the chosen variable value if that is equal with a chosen number (A) between 0 and 31.
b, the version if you use big numbers:
Trigger1. An F307 to define the actual subject of Animation Memory Zone.
Trigger2. An F295 to put the value of the chosen memory zone field into the chosen variable.
Trigger3. A C40 trigger to study the chosen variable value if that is equal with a chosen number (A) between 0 and 65535.
Changing the basic formula:
a, For smaller/bigger condition relations (if I say that or - if you're studying a sequence - any time):
- if you don't use big numbers:
= replace C43 trigger by C42 trigger to study the chosen variable value if that is smaller than a chosen number between 0 and 31, or
= replace C43 trigger by C41 trigger to study the chosen variable value if that is bigger than/equal with a chosen number between 0 and 31..
- if you use big numbers:
= replace C40 trigger by C39 trigger to study the chosen variable value if that is smaller than a chosen number between 0 and 65535, or
= replace C40 trigger by C38 trigger to study the chosen variable value if that is bigger than/equal with a chosen number between 0 and 65535.
b, If you're studying a sequence, and the condition need a tolerance: see Chapter I-18.
c, If the subject may have negative value in the examined property: see Chapter I-19. (I will always tell when it is needed.)
d, If the number you want to study is above 65535: see Chapter I-22.
e, If you want to accomplish something special with the formula: see Chapter 7. and 8.
5.1. The name of the field:
Absolute Index of first AnimCommand (Short)
The value is 0 if the field doesn't have an AnimCommand.
But if it has, then the value is: all the amount of the AnimCommands in the animations with less ID then the present one, plus 1. (So eg. if you study absolute animation 720 then the value is: the amount of the AnimCommands in the previous 720 animations - from Animation 0 to Animation 719 - plus one more AnimCommand.)
Activate a TriggerGroup only with F307, F295 triggers (in this order) to put this value into a variable. - Maybe you can use this information in a condition or in some other way.
By the way, you can find this value (as 'AnimCommandsInd') in the green window of NG Center\Tools\Animation Watcher\Show Present Animations for Current Slot.
5.2. The name of the field:
Absolute Index of first State Change (Short)
The value is: all the amount of the state changes in the animations with less ID then the present one, plus one more change. - Except:
- there is no 'plus 1' if the present animation doesn't have state changes,
- each State ID is counted only once in its animation.
Activate a TriggerGroup only with F307, F295 triggers (in this order) to put this value into a variable. - Maybe you can use this information in a condition or in some other way.
By the way, you can find this value (as 'StateChangeIndex') in the green window of NG Center\Tools\Animation Watcher\Show Present Animations for Current Slot.
5.3. The name of the field:
First absolute Frame index (Short)
If you want to know what absolute first frame ID is, then see this Chapter: 1.1.7.
Activate a TriggerGroup only with F307, F295 triggers (in this order) to put the absolute first frame ID of the animation into a variable. - Maybe you can use this information in a condition or in some other way.
5.4. The name of the field:
Frame Rate (Byte)
Executable combination:
Force (Y) frame rate on (X) animation
Y: from 1 to any
Force: single.
Note:
Be careful - it doesn't work even in the case of some Lara animations.
Condition combination:
If (X) animation has (A) frame rate
A: from 1 to any
Type: sequence.
Note:
The condition is useful if you want to change the frame rate by the executable combination, and if you want to study if it has happened yet or not.
5.5. The name of the field:
High Accelleration (Short)
Executable combination:
Force (Y) acceleration on (X) animation
Y: negative or positive numbers or 0
Force: single.
Condition combination:
If (X) animation has (A) acceleration
A: positive numbers or 0 (So you need to study the positive versions if the value is negative!)
Type: sequence.
Notes:
- F284 (between the two original triggers of the formula) is needed to invert the sign in the chosen variable if the value is negative.
(I.e. In this field we won't use Negative/Positive/Null formula, because now we just turn the sign.)
- The condition is useful if you want to change the frame rate by the executable combination, and if you want to study if it has happened yet or not.
- This condition works only with positive (including 0) or only with negative accelerations. (I.e. we don't calculate that case when you want to customize an animation with positive acceleration into negative, or vice verse. It looks illogical.)
5.6. The name of the field:
Last absolute Frame index (Short)
If you understood first absolute frame index (see above), then it's easy to understand the present field:
So, for example if the first frame of the animation (ID0) has 65 absolute ID then the last frame of that animation (eg. ID25) has 90 (65+25) absolute ID.
Activate a TriggerGroup only with F307, F295 triggers (in this order) to put the absolute last frame ID of the animation into a variable. - Maybe you can use this information in a condition or in some other way.
5.7. The name of the field:
Next Frame index (Short)
Executable combination:
Force (Y) next frame on (X) animation
Y: from 1 to any (as absolute frame ID)
Force: single.
Note:
- It is easy to calculate an absolute ID of a next frame. Let's see a fictive example: the next frame of Animation7 is Animation9 Frame20. Animation9 first frame (Frame0) absolute index is 127, so Frame20 absolute ID is 127+20=147.
- See the original absolute next frame ID's here: as 'FrameNext', in the green window of NG Center\Tools\Animation Watcher\Show Present Animations for Current Slot.
Condition combination:
If (X) animation has (A) next frame
A: 'equal' from 1 to any (as absolute frame ID)
Type: simple.
Note:
The condition is useful if you want to change the next frame by the executable combination, and if you want to study if it has happened yet or not.
5.8. The name of the field:
Number of Animation Commands (Short)
This field counts the amount of the AnimCommands in the given animation. - For example, Animation0 of LARA object has AnimCommands with ID 0, 1, 2, 3, 4 and 5 so the value of the field is 6 now.
Activate a TriggerGroup only with F307, F295 triggers (in this order) to put this AnimCommand amount of the animation into a variable. - Maybe you can use this information in a condition or in some other way.
5.9. The name of the field:
Number of State Changes (Short)
This field counts the amount of the State Changes in the given animation - counting every State ID there only once. - For example, Animation0 of LARA object has 13 state changes, using 7 State ID's so the value of the field is 7 now.
Activate a TriggerGroup only with F307, F295 triggers (in this order) to put this State Changes amount of the animation into a variable. - Maybe you can use this information in a condition or in some other way.
5.10. The name of the field:
Speed (Short)
Executable combination:
Force (Y) horizontal speed on (X) animation
Y: from 1 to any
Force: single.
Note:
See another method to force horizontal speed: Chapter 1.1.15. - The difference between the methods:
- the present field works with a given animation and not always the actual animation,
- now you don't need continuous forcing (in fact, you should - but only because of the 'well-known' savegame-stability' problem),
- this time (probably) you can't use the animations with 'hardcoded speed' (but can the other ones),
- animations with 'hardcoded speed' have changing speed, the other ones have constant.
Condition combination:
If (X) animation has (A) horizontal speed
A: from 1 to any
Type: sequence.
Note:
The condition is useful if you want to change the speed by the executable combination, and if you want to study if it has happened yet or not.
5.11. The name of the field:
State Id (Short)
See more about State ID here: Chapter 1.1.17. and 1.1.18.
Executable combination:
Force (Y) State ID on (X) animation
Y: from 1 to any
Force: single.
Condition combination:
If (X) animation has (A) State ID
A: 'equal' from 1 to any
Type: simple.
Note:
The condition is useful if you want to change the State ID by the executable combination, and if you want to study if it has happened yet or not.