Hidden Triggers in TRNG
by AkyV

Page 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16

2. Combinations in Savegame Memory Zone

Triggers for the executable combinations:

 

The basic formulas if you use variables in the combination:

 

a, the version if you don't use big numbers:

 

Trigger1. 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.

 

Trigger2. An F245 to force the chosen variable value into the chosen field.

 

b, the version if you use big numbers:

 

Trigger1. An F263 to put a value (Y) between -65536 and 65535 into the chosen variable.

 

Trigger2. An F245 to force the chosen variable value into the chosen field.

 

The basic formulas if you don't use variables in the combination:

 

a, the version if you don't use big numbers:

 

Trigger1. An F246 to put a value (Y) between 0 and 127 into the chosen field. Or an F254 to put a value (Y) between -1 and -128 into the chosen field.

 

b, the version if you don't use big numbers:

 

Trigger1. An F262 to put a value (Y) between -65536 and 65535 into the chosen field.

 

Changing the basic formula: 

 

a, Only with variables - 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 8.

 

Triggers for the condition combinations:

 

The basic formulas:

 

a, the version if you don't use big numbers:

 

Trigger1. An F244 to put the value of the chosen memory zone field into the chosen variable.

Trigger2. 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 F244 to put the value of the chosen memory zone field into the chosen variable.

Trigger2. 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 8.

 

2.1. The name of the field:

Inventory. Ammo Explosive CrossBow (Short)

 

Executable combination:

Adjust (Y) explosive arrow amount in the inventory (expanded)

 

Y: more than 127 ammo amount (not the clip amount!), -1: unlimited

Force: single.

 

There are more methods to change ammo amount without picking up weapons or ammo clips:

 

- 'Inventory-Item' flipeffect triggers will add +1 to the amount, subtract -1 from that, remove all the amount or adjust 1-127 amount, during the game.

- Equipment Script command will define any amount at the start of the game (including unlimited amount).

 

But what if I want to adjust

 

- more than 127 amount during the game or

- unlimited amount during the game?

 

That's why this combination is useful. - 'Expanded' means we expanded the limits of the 'Inventory-Item' flipeffects.

(Though eg. if you want to force 200 ammo amount then you can force 100 with the 'Inventory-Item' flipeffect, and then you force another 100 at once. But this method could be tiresome if you want to force eg. 2000 amount.)

 

Condition combination:

If explosive arrow amount in the inventory is (A) (expanded)

 

A:

'equal', 'bigger/equal', 'smaller' 31 or more: ammo (not clip!) amount (type: sequence), or

'smaller' 0: unlimited (type: simple).

 

Perhaps this condition combination is unnecessary. I mean, see C3 and C4 triggers. One of them says 'there are at least A amount in the inventory' and the other one says 'there are less than A amount in the inventory'. Use the two triggers at once, because 'at least A plus less than A+1' together means 'exactly A'.

But the biggest value in C3 and C4 is 31, so our biggest A+1 is 31. That's why if we use C3 and C4 together then the biggest examined 'exactly A' amount is 30. - That's why we need this combination if A>30.

('Expanded' means we expanded the limits of the C3, C4 triggers.)

 

Notes:

- Use a 'less ammo' condition instead of C4 only if A>=32.

- Use a 'more/equal ammo' condition instead of C3 only if A>=32.

 

2.2. The name of the field:

Inventory. Ammo Flash Grenade (Short)

 

Executable combination:

Adjust (Y) flash grenade amount in the inventory (expanded)

Condition combination:

If flash grenade amount in the inventory is (A) (expanded)

 

These combinations work in similar way as I said in Chapter 2.1.

 

2.3. The name of the field:

Inventory. Ammo Normal CrossBow (Short) 

 

Executable combination:

Adjust (Y) normal arrow amount in the inventory (expanded)

Condition combination:

If normal arrow amount in the inventory is (A) (expanded)

 

These combinations work in similar way as I said in Chapter 2.1.

2.4. The name of the field:

Inventory. Ammo Normal Grenade (Short)

 

Executable combination:

Adjust (Y) normal grenade amount in the inventory (expanded)

Condition combination:

If normal grenade amount in the inventory is (A) (expanded)

 

These combinations work in similar way as I said in Chapter 2.1.

 

2.5. The name of the field:

Inventory. Ammo Normal Shotgun (Short)

 

Executable combination:

Adjust (Y) normal shotgun ammunition amount in the inventory (expanded)

Condition combination:

If normal shotgun ammunition amount in the inventory is (A) (expanded)

 

These combinations work in similar way as I said in Chapter 2.1.

 

Note:

The shotgun ammo amount in the field is always six times bigger than the amount in the inventory. (So, for example, if the 'real' amount is 20 bullets, then the value of the field is 6x20=120.)

 

2.6. The name of the field:

Inventory. Ammo Pistol (Short) 

 

Executable combination:

Adjust (Y) pistol ammunition amount in the inventory (expanded)

Condition combination:

If pistol ammunition amount in the inventory is (A) (expanded)

 

These combinations work in similar way as I said in Chapter 2.1.

 

2.7. The name of the field:

Inventory. Ammo Poisoned CrossBow (Short)

 

Executable combination:

Adjust (Y) poisoned arrow amount in the inventory (expanded)

Condition combination:

If poisoned arrow amount in the inventory is (A) (expanded)

 

These combinations work in similar way as I said in Chapter 2.1.

 

2.8. The name of the field:

Inventory. Ammo revolver (Short)

 

Executable combination:

Adjust (Y) revolver ammunition amount in the inventory (expanded)

Condition combination:

If revolver ammunition amount in the inventory is (A) (expanded)

 

These combinations work in similar way as I said in Chapter 2.1.

 

2.9. The name of the field:

Inventory. Ammo Super Grenade (Short)

 

Executable combination:

Adjust (Y) super grenade amount in the inventory (expanded)

Condition combination:

If super grenade amount in the inventory is (A) (expanded)

 

These combinations work in similar way as I said in Chapter 2.1.

 

2.10. The name of the field:

Inventory. Ammo UZI (Short)

 

Executable combination:

Adjust (Y) Uzi ammunition amount in the inventory (expanded)

Condition combination:

If Uzi ammunition amount in the inventory is (A) (expanded)

 

These combinations work in similar way as I said in Chapter 2.1.

 

2.11. The name of the field:

Inventory. Ammo Wide-shot Shotgun (Short)

 

Executable combination:

Adjust (Y) wideshot shotgun ammunition amount in the inventory (expanded)

Condition combination:

If wideshot shotgun ammunition amount in the inventory is (A) (expanded)

 

These combinations work in similar way as I said in Chapter 2.1.

 

Note:

The shotgun ammo amount in the field is always six times bigger than the amount in the inventory. (So, for example, if the 'real' amount is 20 bullets, then the value of the field is 6x20=120.)

 

2.12. The name of the field:

Inventory. Revolver (Byte)

 

Executable combination:

Force (Y) lasersight status on the revolver

 

Y: 9 (not combined), 13 (combined)

Force: single.

 

Notes:

- See LOAD_LASERSIGHT Script flag if you want to force lasersight on the revolver when the game starts.

- This combination works under any circumstances: if the weapon and/or the lasersight is/is not in the inventory or if Lara has the revolver with/without lasersight (or crossbow with lasersight) in her hand. (This combination also puts the weapon into the inventory if Lara doesn't have it.)

But those 'lots of situations' cause some bugs. (For example, you combine them with this combination when there are both the weapons and the lasersight in the inventory. It causes you will see the revolver with the lasersight in the inventory AND another lasersight in the inventory. Or if you remove the lasersight with this combination when Lara is holding the weapon, then Lara will still have the 'revolver+lasersight' right handmesh. Or you can combine them with this combination even if the crossbow has the lasersight. Etc.)

To prevent the problem, you need to use this combination under well-controlled circumstances. Here are some tricks (not all of them) that can help you:

 

= Using this formula in Value 13 mode, place two more triggers after the last trigger of the formula: the first is a C2 to examine if the (single) lasersight is in the inventory. If it is, then the second trigger (an F47) will remove the lasersight from the inventory.

= Using this formula in Value 9 mode, place two more triggers after the last trigger of the formula: the first is a C35 to examine if Lara is holding the revolver. If she is, then the second trigger (an F100) will change the actual right hand mesh (of LARA_REVOLVER_LASER slot) for the same mesh of SIXSHOOTER_ANIM slot (the one without the lasersight).

= Etc.

 

Condition combination:

If lasersight status of the revolver is (A)

 

A: 'equal' 9 (not combined), 13 (combined)

Type: simple.

 

2.13. The name of the field:

Inventory. Shotgun (Byte)

 

Executable combination:

Load (Y) ammunition type into the shotgun

 

Y: 9 (normal), 17 (wideshot)

Force: single.

 

Notes:

- See LOAD_AMMO_TYPE Script flags if you want to change the ammunition type when the game starts.

- If you don't have the weapon when you activate this combination then the weapon will also be put into the inventory.

 

Condition combination:

If ammunition type loaded into the shotgun is (A)

 

A: "equal" 9 (normal), 17 (wideshot)

Type: simple.

 

2.14. The name of the field:

Inventory. CrowBow (Byte)

 

Executable combination:

Force (Y) lasersight status on the crossbow and load (Y) ammunition type

 

Y: 9 (normal, not combined), 13 (normal, combined), 17 (poisoned, not combined), 21 (poisoned, combined), 33 (explosive, not combined), 37 (explosive, combined)

Force: single.

 

Notes:

- See LOAD_LASERSIGHT Script flag if you want to force lasersight on the crossbow when the game starts.

- See LOAD_AMMO_TYPE Script flags if you want to change the ammunition type when the game starts.

- If you don't have the weapon when you activate this combination then the weapon will also be put into the inventory.

- If you want to change the lasersight status that could be buggy the same way as I said above at the revolver.

 

Condition combination:

If lasersight status/ammunition type of the crossbow is (A)

 

A: "equal" 9 (normal, not combined), 13 (normal, combined), 17 (poisoned, not combined), 21 (poisoned, combined), 33 (explosive, not combined), 37 (explosive, combined)

Type: simple.

 

Note:

If you want to examine only the lasersight status or only the ammo type then multiply the condition trigger in this combination, connected them with TGROUP_OR flags to each other. - For example:

'If lasersight is combined':

 

Trigger1. An F244 to put the value of the chosen memory zone field into the chosen variable.

Trigger2. A C43 trigger to study the chosen variable value if that is equal with 13.

Trigger3. A C43 trigger (with TGROUP_OR flag) to study the chosen variable value if that is equal with 21.

Trigger4. A C40 trigger (with TGROUP_OR flag) to study the chosen variable value if that is equal with 37.

 

2.15. The name of the field:

Inventory. Greanade-Gun (Byte)

 

Executable combination:

Load (Y) ammunition type into the grenade gun

 

Y: 9 (normal), 17 (super), 33 (flash)

Force: single.

 

Notes:

- See LOAD_AMMO_TYPE Script flags if you want to change the ammunition type when the game starts.

- If you don't have the weapon when you activate this combination then the weapon will also be put into the inventory.

 

Condition combination:

If ammunition type loaded into the grenade gun is (A)

 

A: "equal" 9 (normal), 17 (super), 33 (flash)

Type: simple.

 

2.16. The name of the field:

Inventory. Large Medikit (Short)

 

Executable combination:

Adjust (Y) large medipack amount in the inventory (expanded)

 

Y: more than 127 medipack amount, -1: unlimited

Force: single.

 

See Chapter 2.1. to understand how it works.

 

Condition combination:

If large medipack amount in the inventory is (A) (expanded)

 

A:

'equal', 'bigger/equal', 'smaller' 31 or more: medipack amount (type: sequence), or

'smaller' 0: unlimited (type: simple).

 

See Chapter 2.1. to understand how it works.

 

2.17. The name of the field:

Inventory. Small medikit (Short)

 

Executable combination:

Adjust (Y) small medipack amount in the inventory (expanded)
 

Condition combination:

If small medipack amount in the inventory is (A) (expanded)

 

These combinations work in similar way as I said in Chapter 2.16.

 

2.18. The name of the field:

Inventory. Flares (Short)

 

Executable combination:

Adjust (Y) flare amount in the inventory (expanded)

 

Y: more than 127 flare amount (not the amount of the boxes of flares!), -1: unlimited

Force: single.

 

See Chapter 2.1. to understand how it works.

 

Condition combination:

If flare amount in the inventory is (A) (expanded)

 

A:

'equal', 'bigger/equal', 'smaller' 31 or more: flare amount (not the amount of the boxes of flares!) (type: sequence), or

'smaller' 0: unlimited (type: simple).

 

See Chapter 2.1. to understand how it works.

 

2.19. The name of the field:

Inventory. Remaining usage of Mechanical Scarab (Short)

 

Executable combination:

Adjust (Y) remaining usage on the mechanical scarab

 

Y: 0 or more (even more than the default maximum 3!)

Force: single.

 

Condition combination:

If mechanical scarab can be used further (A) times

 

A: 0 or more

Type: sequence.

 

2.20. The name of the field:

Lara. Air for Lara (0 - 1800) (Short)

 

Executable combination:

Adjust Lara's air to (Y)

 

Y: from 0 to 1800 (1800=100 % air)

Force: single.

 

Notes:

- This combination is useful because F110 will give Lara a given amount or a given percent air, but this combination adjusts the air to a given amount. These are not the same. (F104 can give infinite air.)

- 100 % air is enough for exactly 1 minute.

- Activate the combination only if Lara's on/in water.

 

Condition combination:

If Lara has (A) air

 

A: from 0 to 1800 (1800=100 % air)

Type: sequence.

 

Notes:

- The combination also works if Lara has come up to the water surface with low air, and her air has started to increase, and then it has reached the examined value. So, if you want this condition to be true only if Lara is under water then also use an 'if Lara is under water' condition (anywhere in the present combination).

- The field value is constantly 100 % (1800) if Lara is out of water - though you can't see the air bar on the screen.

 

2.21. The name of the field:

Lara. Current Weapon (not necessarly in the hand) (Short)

 

Executable combination:

Adjust (Y) weapon to be drawn when the player will hit SPACE the next time

 

Y:

0: no weapon selected - now Lara can draw a weapon only with shortcut keys or directly from the inventory.

1: pistols

2: revolver

3: Uzis

4: shotgun

5: grenade gun

6: crossbow

Force: single.

 

Note:

I don't recommend forcing 'no weapon' value because the wrong hand and/or holster meshes may also be included in the solution. (Though you can fix it by F100 triggers.)

 

Condition combination:

If the weapon that is drawn when the player will hit SPACE the next time is (A)

 

A:

'equal'

0: no weapon selected (That's what will happen, for example, after you have made Lara to throw flare/torch by F83 trigger.)

1: pistols (default)

2: revolver

3: Uzis

4: shotgun

5: grenade gun

6: crossbow

Type: simple.

 

Note:

This condition won't study if Lara has just the weapon in the hands or the holsters. You have a C35 trigger for that.

 

2.22. The name of the field:

Lara. Environment where lara is. (ground, underwater ecc,) (Short)

 

Condition combination:

If Lara (A) is/is not in DOZY mode

 

A:

'equal'

3: is in DOZY mode

3, with TGROUP_NOT flag in the condition trigger: is not in DOZY mode

Type: simple.

 

2.23. The name of the field:

Lara. Hands. Attached Lara Status (Short) 

 

Condition combination:

If Lara is performing (A) special action (1)

 

A:

'equal'

0: empty hands or holding a flare

1: being on all fours, grabbing a ledge, a ladder, a monkey bar, a rope, a polerope, a parallel bar, a zipline, driving a vehicle (or getting in/on/out), picking up (first moves) a torch or a working flare, picking up other items (in any way), placing items, using switches, interacting with doors (including kicking in), pushing/pulling pushable objects (or ready to move them), using a crowbar, using a waterskin/jerrycan/bag of sand, using the nitro, using the mechanical scarab

2: drawing a weapon, igniting a flare

3: holstering a weapon, throwing automatically/by hitting the flare button the flare in the hand

4: holding a weapon, a torch, igniting*/throwing a torch, igniting* with a torch, picking up (last moves) the torch

5: picking up (last moves) the working flare

*: just ending this movement, the value will be 0 for a frame.

Type: simple.

 

Note:

This combination is usually not too useful without other conditions, because each value is too complex (except: Value 5). - But see this example, how we can 'fix' the 'problem':

Put some other conditions, anywhere in this combination, to examine Lara's animations. These animations are Lara's animations to pick up flares: standing OR swimming OR crouching (Animation 204, 206, 312). So if you use Value 1 in A then only 'picking up (first moves) a working flare' part will be true of Value 1.

So the 'aggregated meaning' of this 'mixed' condition is: 'if Lara reaches for the working flare to pick it up'. (I.e. not including the moves when she picks it up.)

 

2.24. The name of the field:

Lara. Hands. Item in the Hands of Lara (Current) (Short)

 

Condition combination:

If Lara (A) has/has not got a weapon or a flare or a torch in the hand after dropping the torch the last time

 

A:

'equal'

0: has not

0, with TGROUP_NOT flag in the condition trigger: has

Type: simple.

 

2.25. The name of the field:

Lara. Hands. Item in the Hands of Lara (Following (Short)

 

Executable combination:

Make Lara empty hands and extract (Y) weapon or flare

 

Y:

1: pistols

2: revolver

3: Uzis

4: shotgun

5: grenade gun

6: crossbow

7: flare

Force: single.

 

Notes:

- 'Empty hands' mean she will holster the actual weapons or drop the flare or the torch in the hands.

- Nothing will happen if the chosen weapon is in the hands/holsters.

 

2.26. The name of the field:

Lara. Hands. Remaining time with lighted flare in the hand (Short)

 

Executable combination (1):

Force the actual flare in Lara's hand to be put out in further (W) frames from now on

 

W: 900 (or the customized maximum) minus Y

Y: from 1 to 899 frames (or to the customized maximum minus 1)

Force: single.

 

Notes:

- You can customize the maximum value with CUST_FLARE Script command.

- The flare won't forget about the forced value if Lara drops it before putting out.

 

Executable combination (2):

Force the actual flare in Lara's hand to be put out at once and make Lara throw it

 

Y: any bigger than 900 (or any bigger than the customized maximum value)

Force: single.

 

Condition combination:

If the actual flare in Lara's hand is put out in (B ) frames

 

B: 900 (or the customized maximum) minus A

A: from 1 to 899 frames (or to the customized maximum minus 1)

Type: sequence.

 

Notes:

- It doesn't matter if Lara throws directly the flare after using the condition or not.

- Now the relations will be inverted, if you use them: 'less than A' means 'more than B', 'more than/equal with A' means 'less than/equal with B'.

 

2.27. The name of the field:

Lara. Item Index of Lara (Short)

 

Activate F244 to put the game ('tomb') index of Lara into a variable. - Maybe you can use this information in a condition or in some other way.

 

2.28. The name of the field:

Lara. Poison1  (giant scorpion = 2048) (Short)

 

Executable combination (1):

Place a quick poisoned flickering with (Y) intensity on the screen

 

Y: from 1 (lowest flickering) to 4097 (hardest flickering)

Force: single.

 

As you know the screen starts flickering if Lara has been poisoned. The intensity of the flickering is low at the beginning, but then becomes harder and harder when the poison starts working harder and harder. So the flickering has an increasing rhythm. But if you force a value now that means

 

- if Lara is poisoned then the flickering will jump to the forced value and then goes back to the regular rhythm at once,

- if Lara is not poisoned then she will be poisoned only for a moment, with a flickering screen with the forced intensity during that.

 

Notes:

- When you want to choose the proper forced intensity then you need to know this:

The flickering scale is not linear but works in a decreasing exponential way (till the differences between two intensities reaches Value 1, because the change will be constant 1 after that.)

For example it works this (kind of) way in the case of the little scorpion:

0, 32, 62, 90, 116, 141, 524, 526, 528, 598, 599, 600,

And for example it works this (kind of) way in the case of the big scorpion:

0, 128, 248, 360, 465, 564, 657 etc.

Each value means a newer frame. The changes are bigger in the case of the big scorpion - naturally, because its poison works harder.

Each newer bite starts the decreasing exponential procedure again. So eg. if the small scorpion bites Lara at 1243 poison value, then the next value will be not 1244 but 1276, and then 1307, then 1337, then 1365 etc.

- If Lara is poisoned then her life energy is naturally decreasing continuously. If the poison value reaches the maximum value (4097) then won't change further (i.e. the flickering won't be harder) - even when Lara's life energy is still not too low, and continues decreasing. Lara naturally remains poisoned after reaching the maximum poison intensity, i.e. the intensity becomes constant with 4097 intensity, till Lara die or the player gives her a medipack.

- Under special circumstances, the maximum may exceed Value 4097. But you shouldn't force values above 4097.

 

Executable combination (2):

Place a poisoned flickering with a constant (Y) intensity on the screen

 

Y: from 1 (lowest flickering) to 4097 (hardest flickering)

Force: continuous.

 

This is what will happen:

 

- If Lara is poisoned, then her life energy continues decreasing, though the flickering will have a constant Y intensity. If you stop forcing then the poison intensity starts increasing again.

- If Lara is not poisoned, then she will be poisoned, with a constant Y intensity, her life energy starts decreasing. If you stop forcing then she will recover fast.

 

Condition combination:

If there is a poisoned flickering on the screen with (A) intensity (1)

 

A: from 0 to 4097(or the maximum could be bigger, as I said above)

Type: sequence.

 

Notes:

- When the player has given health to Lara then the intensity starts decreasing fast, back to 0. (The life bar remains green till reaching 0.)

- This trigger is more than a C25 condition trigger. C25 examines only if Lara is poisoned. This combination examines the degree of the poisoning as well.

 

2.29. The name of the field:

Lara. Poison2 (Short)

 

Executable combination (1):

Place a poisoned flickering with (Y) intensity on the screen

 

Y: from 1 (lowest flickering) to 4097 (hardest flickering)

Force: single.

 

This is what will happen if you activate the combination:

 

= If Lara is poisoned, then the intensity jumps to Y and continues increasing, and her life energy also continues decreasing.

= If Lara is not poisoned, then she will be poisoned, with Y intensity, which starts increasing, and her life energy also starts decreasing.

 

Notes:

 

- Poison2 is not another poison status. The difference between Poison1 and Poison2 field is Poison2 will count the intensities in another way. - See how it works in the case of small scorpion:

0, 512, 513, 514, 515 etc.

So, when the creature has poisoned Lara, then the intensity will jump a big value (512), then it starts changing with a constant Value 1.

So, 32 intensity in Poison1 field is 512 in Poison2, 62 in Poison1 is 513 in Poison2 etc.

- This trigger does the same as F113 does, but F113 has only preset intensity values.

 

Condition combination:

If there is a poisoned flickering on the screen with (A) intensity (2)

 

A: from 0 to 4097(or the maximum could be bigger, as I said above)

Type: sequence.

 

It works almost exactly the same way as 'If there is a poisoned flickering on the screen with (A) intensity (1)'.

Except:

- As I said, intensity is calculated in a different way.

- And, which is more important, the present field has 0 intensity at once after the player has given a medipack to Lara, there is no decreasing part. (So if you think the 'decreasing part' is not a 'real poisoned status' because Lara is already healthy after all, and that's why you don't want to study that intensity in a condition, then use the present condition instead of 'If there is a poisoned flickering on the screen with (A) intensity (1)'.)

 

2.30. The name of the field:

Lara. Rope. Speed sliding on the rope (Short)

 

Condition combination (1):

If Lara has swung (A) far from the original position of the actual rope when (B ) hanging idly/swinging

 

A:

- with Positive formula (swinging before the original position or just is in the original position): from 0 to about 11000 (sometimes it could be more, till about 13000)

- with Negative formula (swinging behind the original position or just is in the original position): from 0 to about 11000 (sometimes it could be more, till about 13000)

- with Null formula (just is in the original position): 0

Type: sequence.

 

Important!

We need more additional condition triggers before the first trigger of any formula, in this order:

 

- C30 (performing Animation373), C30 (performing Animation374, with TGROUP_OR flag): if B=hanging idly

- C30 (performing Animation387), C30 (performing Animation394, with TGROUP_OR flag): if B=swinging (idly or hitting Key Dash)

- C13 (dash, inactive, single), C30 (performing Animation387), C30 (performing Animation394, with TGROUP_OR flag): if B=swinging idly

- C13 (dash, active, single), C30 (performing Animation387), C30 (performing Animation394, with TGROUP_OR flag): if B=swinging, hitting Key Dash

- C30 (performing Animation373), C30 (performing Animation374, with TGROUP_OR flag), C30 (performing Animation387, with TGROUP_OR flag), C30 (performing Animation394, with TGROUP_OR flag): if B=hanging idly or swinging (idly or hitting Key Dash)

 

Notes:

- The 'original position' is the rope at rest.

- So this condition examines Lara's actual position when she is still swinging on the rope.

- Probably 4096 means 1 square long in A.

- Because of technical reasons we cannot study now when Lara is climbing around/up/down the rope.

 

Condition combination (2):

If Lara is swinging (A) before/behind the original position of the actual rope when (B ) hanging idly/swinging

 

B - see the possible values just above (Use the original basic condition combination, but put triggers for B before the first trigger of the combination.)

A:

'equal': 0 just in the original position

'bigger/equal' 1: before

'smaller' 0: behind

Type: simple.

 

2.31. The name of the field:

Lara. Special Status of Lara (Byte)

 

Condition combination:

If Lara is performing (A) special action (2)

 

A:

'equal'

0: she jumps aside, steps aside, the moment when standing and facing the wall (or in a low angle) touches/bumps that, shimmying around the corner (both on ledges and ladders), dead, the moment when getting the parallel bar, ignites the torch/with the torch, picks up the item (in any way), places the item (except nitro), uses sandbag/waterskin/jerrycan, interaction with doors/switches*/pushables, uses the crowbar, uses the mechanical scarab

+1: this value is added if she holds the flare/torch in her hand** - but only if she does that according to FLARE_ANIM or TORCH_ANIM. (So, eg. the value is not added if she holds the flare jumping or swimming etc., because her hand movements are different from ANIM object hand animations.)

+4: this value is added if she does anything that is not mentioned at Value 0.

+8: this value is added if she is burning.

+32: this value is added if Lara starts an interactive animation (to pick up an item etc.) and she needs some automatic alignment (sidesteps etc.) to start the animation. (The value is added even if the alignment is so little that you can't see any alignment on the screen.)***

+64: this value is added if Lara is over a square having the monkey attribute. (So the value is also added if Lara is not doing monkey swing there.)****

 

*: it seems +4 value in the case of buttons, instead of 0.

**: with the torch in Lara's hand, the value is usually 5 (+1+4). When Lara ignites the torch/with the torch then these will be the new values before getting back to 5: 4 (moving hand to the fire), 0 (igniting), 1 (moving hand back from the fire).

***: if this value exists, then it will turn into picking up '0' value a bit later, naturally, if the interactive animation starts. But, not at once. I mean, if +32 value exists, then the value turns into 4 or 32 before the 0. (If it's 4 or 32 that depends on the type of the aligning.)

****: this value will be dropped for a frame if the player releases monkey bars during Lara is moving.

 

Type: simple.

 

Notes:

 

- Let's see these three examples to understand:

 

a, Lara is running over some flat squares, with a flare in her hand when there are monkey bars above her - the value is now: +64+1+4=69. (+64 is for monkey squares. +1 is for 'flares on flat squares', because she wouldn't use FLARE_ANIM if she were sliding. +4 means the 'running' animation is not included Value 0.)

b, Lara bumps to the wall while burning - the value is now: 0+8=8. (0 is for bumping to the wall. +8 is for burning.)

c, Lara is lying dead on the floor while burning - the value is now: 0+8=8. (0 is for dead status. +8 is for burning.)

 

- You see those remark with * signs, right? They definitely prove some values will be added only for one or two frames. I mentioned some of them - but only the more important cases. (So maybe you encounter other cases when the value will change only for some moments.)

So be careful if you use this combination.

 

2.32. The name of the field:

Lara. Special2 Status of Lara (Byte)

 

Condition combination:

If Lara is performing (A) special action (3)

 

A:

'equal'

+1: Lara is over a square having a grey frame (by Room Editor 'B' button) for the mechanical scarab.

+4: Lara is crouching - after standing or on all four.

+8: Lara shoots. (The effective shooting. I mean, it doesn't matter now, eg., if Lara loads the shotgun.)

+16: the screen is seen through the binoculars or the lasersight graphics.

+32: Lara has a burning torch in her hand.

+64: Lara uses/used a ladder (and didn't hang on a ledge after that).

Type: simple.

 

Notes:

- When there is the lasersight graphics on the screen and Lara's shooting with the revolver then +8 won't be added to +16. I.e. it will work only with the crossbow.

- Two examples to understand the field:

 

a, Lara has climbed up a ladder and drawn her crossbow and now she's shooting - the value is now: +64+8=72. (+64 because she hasn't hung on any ledge after getting off the ladder. +8 because she's shooting.)

b, Lara has climbed down a ladder then grabbed a ledge to hang and fallen down. Now she's crouching on a square with a grey frame - the flag is now +1+4= 5. (There is no +64 because she has hung on a ledge after getting off the ladder. +1 for being above the square of the scarab. +4 for crouching.)

 

2.33. The name of the field:

Lara. Test. Climb sector Test (=1 yes; =0 no) (Short)

 

Executable combination:

(Y) Enable/disable the climb attribute on all the four sides of the actual square where Lara is

 

Y: 0 (disable), 1 (enable)

Force: continuous. When stopping it: everything will start working 'normally'. Till you stop forcing, wherever Lara goes, there will be (1)/won't be (0) ladders all around her.

 

Notes:

- This combination could be useful if you don't want to use a flipmap to create/remove 'ladders'.

- See ENV_CLIMB Script constants if you want a condition about ladders.

 

2.34. The name of the field:

Lara. Test. Lara has a flare in the and (1 = yes) (Short)

 

Condition combination:

If there (A) is/is not a flare working in Lara's hand

 

A: 'equal' 0: is not, 1: is

Type: simple.

 

Notes:

- 'Working' means: if the flare is almost totally out, so it will start flickering, then the value also starts 'flickering' between 0 and 1.

- This 0 could be pretty useful to use it with an 'empty hand' condition together, if you want a 'totally empty hand' condition, because a simple 'empty hand' condition means 'totally empty or a flare in it' condition.

 

2.35. The name of the field:

Lara. Test. Lara is on rope (different than -1 lara is on the rope) (Long)

 

Condition combination:

If Lara is on (A) rope

 

A:

'equal' 0, 1, 2, 3, 4: she's on the rope with this ID

'bigger/equal' 0: she is on any rope

'smaller' 0: she is not on any rope

Type: simple.

 

Rope ID's are not the object ID's of the ropes. If you want to know what rope ID's mean then you need to understand this:

The rope ID's depend on the Room ID (the lower room ID's have the lower rope ID's) and when the given rope was placed in the given room (the sooner placed ropes have the lower rope ID's). - For example, in a level that has these five ropes:

 

Room6:

- Rope placed in the first place of the ropes that are just placed in this room: Rope ID 0

- Rope placed in the second place of the ropes that are just placed in this room: Rope ID 1

Room14:

- Rope placed in the first place of the ropes that are just placed in this room: Rope ID 2

- Rope placed in the second place of the ropes that are just placed in this room: Rope ID 3

Room15:

- The only one rope in this room now: Rope ID 4

 

Note:

I mentioned only 0, 1, 2, 3 and 4 ID's because I experienced a level can take maximum five ropes.

 

2.36. The name of the field:

Lara. Test. Lara is placing the weapon on the back (1 = yes) (Short)

 

Condition combination:

If Lara (A) is/is not aiming at an enemy

 

A: 'equal' 0 (not aiming), 1 (aiming)

Type: simple.

 

Notes:

- Only the 'real aiming' is what matters. So, if the enemy is aimed only because you force the aiming with the lasersight, that is not calculated now.

- If Lara is aiming but holstering the weapons then the value will remain 1 during the holstering move.

 

2.37. The name of the field:

Lara. Test. Throw out item from the Hands (1 = lara is throwing out item) (Short)

 

Condition combination:

If Lara performs (A) action with the torch

 

A:

'equal'

0: Lara picks up/holds the torch / torch is (in NGLE position/thrown/dropped) on the floor

1: Lara throws the torch by hitting SPACE

2: Lara drops the torch by drawing a weapon (with shortcut keys or in inventory)

3: Lara ignites the torch with the flame / the flame with the torch

Type: simple.

 

Notes:

- Maybe you should also use a C35 (Lara holds the out/fired torch condition) somewhere in this combination.

Why? Because eg. Value 3 in the present combination and 'Lara holds torch-out' condition together rules out the 'Lara ignites the flame with the torch' part, so Value 3 only means this: 'Lara ignites the torch with the flame'.

- If you want to force some other action with the torch, then see these flipeffect triggers: F83 (to make Lara drop the torch) or F199, F200.

 

2.38. The name of the field:

Lara. Weapon on the back of Lara (Short)

 

Condition combination:

If there is (A) weapon on Lara's back

 

A:

'equal'

0:no weapon

3: shotgun (because object slot ID3 is SHOTGUN_ANIM)

4: crossbow (because object slot ID4 is CROSSBOW_ANIM)

5: grenade gun (because object slot ID5 is GRENADE_GUN_ANIM)

Type: simple.

 

Note:

See F100 trigger if you want to change the weapon mesh on Lara's back. (The new mesh doesn't affect which weapon will be drawn when hitting SPACE.)

 

2.39. The name of the field:

Statistics. Distance (Long)

 

Executable combination:

Change 'distance travelled' in Statistics to (Y) units

 

Y: from 0 to any units

Force: single.

 

Notes:

- About (?) each 419 units means a meter in Value Y.

- Eg. there is no '5,5' meters or something like that after reaching 2095 (=5x419=5 meters). I mean, till the counter reaches 2514 (=6x419=6 meters), the Statistics shows 5 meters.

- Horizontal and vertical distances are both calculated.

- If the animation has a SetPosition AnimCommand, changing a coordinate, then that coordinate won't be refreshed in this field while the animation is being performed - so, till the end of the animation, the distance won't be refreshed either.

- This combination could be useful eg. if you start a new level and you force 0 here so the distance in the new level will be counted from 0 meter (as if the counter worked on only the actual level and not the whole game).

 

Condition combination:

If 'distance travelled' in Statistics is (A) units

 

A: from 0 to any units

Type: sequence.

 

Note:

This condition could be useful eg. if you open a secret level for the player only if he/she was clever and did all the tasks of the level without too much sauntering. I.e. eg. you will use an 'if the Value is smaller than,' condition in a GlobalTrigger that will trigger a TRIGGER_TRIGGERER object in the FINISH trigger to that secret level.

 

2.40. The name of the field:

Statistics. Killed Enemies (Short)

 

Executable combination:

Change 'killed enemies' in Statistics to (Y) enemies

 

Y: from 0 to any

Force: single.

 

Notes:

- As you definitely know, 'killed enemies' isn't in the default Statistics screen of TR4. But it doesn't mean you can't use this Statistics information. (By the way this parameter also counts the enemies for the whole game - as well as the other Statistics parameters work for the whole game.)

- Sometimes it is worth forcing a value here. For example, if you start a new level then you force 0 here so the number of the killed enemies will be counted from 0 (as if the counter worked on only the actual level and not the whole game).

 

Condition combination:

If 'killed enemies' in Statistics is (A) enemies

 

A: from 0 to any units

Type: sequence.

 

Notes:

- Each killing by explosive ammunition now is calculated as if Lara had killed 2 enemies at once.

- 'Special' deaths (killings by ACTION triggers, WRAITH1 disappears in the water, poisoned death, 'headless' skeleton etc.) isn't calculated in this field.

 

2.41. The name of the field:

Statistics. Secrets (Byte)

 

Executable combination:

Change 'secrets found' in Statistics to (Y) secrets

 

Y: from 0 to 99

Force: single.

 

Notes:

- Sometimes it is worth forcing a value here. For example, if you start a new level then you force 0 here so the number of the found secrets will be counted from 0 (as if the counter worked on only the actual level and not the whole game).

- Don't misunderstand: CUST_SET_SECRET_NUMBER Script flag will define the maximum secret number of a level, and not the start number of the found secrets on that level.

 

Condition combination:

If 'secrets found' in Statistics is less than (A) secrets

 

A: from 0 to 99

Type: sequence.

 

Note:

So you should use C42/C39 instead of C43/C40. See 'equal' or 'at least' ('bigger than,') triggers about secrets found here: C18, C17.

 

2.42. The name of the field:

Statistics. Used Ammos (Short)

 

Executable combination:

Change 'ammo used' in Statistics to (Y) bullets

 

Y: from 0 to any bullets (including arrows, grenades)

Force: single.

 

Notes:

- Each shot bullet (arrow, grenade) is +1 in this field. (Naturally each shot with dual weapons - pistols, Uzis - means +2 in this field.)

- Sometimes it is worth forcing a value here. For example, if you start a new level then you force 0 here so the number of the shot ammunition will be counted from 0 (as if the counter worked on only the actual level and not the whole game).

 

Condition combination:

If 'ammo used' in Statistics is (A) bullets

 

A: from 0 to any bullets (including arrows, grenades)

Type: sequence.

 

Notes:

This condition could be useful eg. if you open a secret level for the player only if he/she was clever and did all killings only with a few amount of ammo, i.e. aiming precisely. I.e. you will use an 'if the Value is smaller than,' condition in a GlobalTrigger that will trigger a TRIGGER_TRIGGERER object in the FINISH trigger to that secret level.

(Of course, it will be a nice condition only if Lara doesn't have some 'super ammo' just as grenades.)

 

2.43. The name of the field:

Statistics. Used MediPacks (Byte)

 

Executable combination:

Change 'health packs used' in Statistics to (Y) medipacks

 

Y: from 0 to any

Force: single.

 

Notes:

- Small AND large medipacks are also included in the counter.

- Sometimes it is worth forcing a value here. For example, if you start a new level then you force 0 here so the number of the used medipacks will be counted from 0 (as if the counter worked on only the actual level and not the whole game).

 

Condition combination:

If 'health packs used' in Statistics is (A) medipacks

 

A: from 0 to any medipacks

Type: sequence.

 

Notes:

This condition could be useful eg. if you open a secret level for the player only if he/she was clever and did the things without too much loss in the health. I.e. you will use an 'if the Value is smaller than,' condition in a GlobalTrigger that will trigger a TRIGGER_TRIGGERER object in the FINISH trigger to that secret level.

 

2.44. The name of the field:

System. Auto-Aiming for Enemy (Byte)

 

Condition combination:

If targeting mode is (A) automatic/manual

 

A: 'equal' 0 (manual), 2 (automatic)

Type: simple.

 

Note:

If the auto-aiming is enabled then Value 2 won't show up in the field till drawing a weapon at the very first time.

 

2.45. The name of the field:

System. Disable special keys (15 disable inventory pause f5) (Short)

 

Condition combination:

If (A) frames has elapsed since Lara has started the actual dying animation

 

A: from 0 to 301 frames

Type: sequence.

 

This field starts counting the frames (from 0) when Lara starts a dying animation. When the dying animation ends (so if Lara becomes 'really dead') then the counter is still running. When the counter reaches 301 (i.e. 10 seconds+one more frame) then the game will load you back to the title. (Of course, with some buttons, the player can force this load to happen sooner. Eg. hitting ESC.)

It means this is a very nice condition, because, usually, you can't activate anything after Lara died. But, as you see, now the counter also runs after Lara becomes 'really dead', so now you are able to activate things when Lara is lying dead on the floor. (Because eg. if the longest dying animation is 7 seconds=210 frames long, then an 'If (215) frames has elapsed since Lara has started the dying animation' condition means the condition let the trigger be activated only after any dying animation has ended.)

(In fact, you can achieve something similar - customized for each dying animation - if you activate one AnimCommand at the first frame of each dying animation. Each AnimCommand starts its own Organizer. When the required frame - different in each Organizer, maximum 301 - has elapsed, then the Organizer activates the required thing. Even a different thing in each Organizer.)

 

2.46. The name of the field:

System. Fog Bulb Color (Long)

 

Condition combination:

If the color of fog bulbs or the distance fog is (A)

 

A: 'equal' positive values

Type: simple.

 

If you have the RGB code you want to study then turn it into hexadecimal format. For example the color is R/G/B=20/100/50. It is $14/$64/$32 in hexadecimal. Merge the numbers: $146432. Then turn that back into decimal: 1336370. This 1336370 is your Value A.

 

Notes:

- Only fog bulbs or only the distance fog can be colored. (It depends on Volumetric FX is enabled or disabled.) This condition will always work on the enabled fog type: this is the one that could be colored.

- If the color is defined by Fog Script command then this condition doesn't work. You need to define the color now by F28 (for fog bulbs) or F224 (for the distance fog).

 

2.47. The name of the field:

System. Item Memory address of enemy aimed by Lara (Long)

 

Condition combination:

If Lara is aiming at (A) enemy

 

A: 'equal' object (Room Editor) ID

Type: simple.

 

Notes:

- We need two more triggers between the executable and the condition triggers of the formula:

The field value is a pretty, 'meaningless' long number, such as 52551314. But this long number contains some kind of identification of the object. F351, the first new trigger will transform this identification into the game ('tomb') index of the object. F300, the second new trigger will transform the game ID into the 'normal' (Room Editor) object ID.

- Only the real and automatic aiming is what matters. ('Real': if the enemy is aimed only because you force the aiming with the lasersight, that is not calculated now.)

 

2.48. The name of the field:

System. Screen Timer (Increased only when it is different than 0) (Long)

 

Executable combination:

Adjust screen timer to (Y) frames

 

Y: from 0 to any frames

Type: single.

 

Screen timer is the (always increasing) timer you could originally see on the screen when Lara and Von Croy were racing for the Iris in Cambodia in TR4.

If you want to see the screen timer in your level, then

 

a, you need a Timer= ENABLED Script command and

b, use F86 trigger

 

- to show the timer ('show' also means: to start it or turning it back into 0),

- to hide the timer ('hide' also means: to stop it).

 

You can run the screen timer in hidden way, using only F86, but not using the Timer command.

 

Note:

If you force a value when the timer is not running then the timer starts running from the forced value.

 

Condition combination:

If screen timer is at (A) frames (hidden)

 

A: from 0 to any frames

Type: sequence.

 

'Hidden' means use this combination only if you use the timer in a hidden way. If the timer is seeable on the screen, then use C20 instead of this condition. (There's a clerical error in C20, i.e. you must change the 'lower' and the 'higher' conditions for each other.)

 

2.49. The name of the field:

System. Unknown (Item chosen from Inventory? (Long)

 

Condition combination:

If inventory has been closed at (A) inventory item the last time

 

A:

'equal' 0-118: inventory item ID

'smaller' 0: the inventory has never been opened before in the whole game

Type: single.

 

Represent F335 trigger in Set Trigger Type panel and then click on P button next to Timer window. A TXT file will open in which you can meet the inventory item ID's.

 

Notes:

- Don't use ID18 (Pistols Ammo Item), 24 (Compass Item) or 111 (Burning Torch Item).

- The value will be updated if the player quits the inventory at that item, using ENTER, CTRL or ESC. (It doesn't matter it is useful or not. I mean, eg. it will work if the player closes it at the shotgun when Lara holds the shotgun. Or it will work if the player closes it at the medipack when Lara is totally healthy etc.)

- The value won't be updated, if the player select that item not from the inventory. (Eg. if you hit SPACE to draw the shotgun.)

- If the player opens the inventory the next time then that will open at that item.

- If you remove that item before opening the inventory the next time, then the inventory will open at pistols the next time. (Or, if Lara has been disarmed meanwhile, then the inventory will be rolled rightwards from the position of the pistols to the next available item.)

- This value will be carried to the next level, even if you remove the item before opening the inventory the next time.

- There is an executable combination of the field (to open the inventory at a given item), but that is unnecessary. Use F306 trigger instead.

 

2.50. The name of the field:

TRNG Index. Index of last item found with testposition or condition (Short) 

 

Condition combination:

If the Moveable object in the last condition was (A)

 

A: 'equal' object (Room Editor) ID

Type: simple.

 

Let's see an example to understand this field:

Use a GT_COLLIDE_SLOT type GlobalTrigger, with ANIMATING6 slot. - It means an executable trigger will be activated 'if Lara collides with any object of ANIMATING6 slot'. Let's say there are two ANIAMTING6 object placed in the level: one with object ID 47, and the other with object ID 62.

Let's say Lara collides with ID 47 (that executable trigger will be activated), then collides with an ANIMATING7 having ID59 and then steps on a trigger that contains this combination. The last condition for an object before stepping there was that GT_COLLIDE_SLOT-ANIMATING6 GlobalTrigger, using object ID47 - so the combination now identifies object ID 47.

 

Notes:

- We need one more trigger between the executable and the condition triggers of the formula:

This field identifies a game object ID. F300, the new trigger will transform the game ID into the 'normal' (Room Editor) object ID.

- Please note that the field will be updated only when the combination identifies an object again.

 

2.51. The name of the field:

TRNG Index. Index of last item used by Lara (Short)

 

Condition combination:

If the actual interaction of Lara is with (A) Moveable object (limited)

 

A: 'equal' object (Room Editor) ID

Type: simple.

 

Notes:

- Be careful - 'limited' means the combination works only with these objects:

Pushable objects, pushed rollingballs, vehicles (motorbike, jeep, motorboat, rubber boat, kayak), ropes, parallel (swing) bars, some switches (eg. 'the hole in the wall', even for pick an item out of here).

But doesn't work with these ones:

Poleropes, tightropes, fireropes, pickups, some switches, key/puzzle holes, pushpull/kick doors, double doors, crowbar doors, underwater doors, floor/ceiling trapdoors, ziplines, sarcophagus, scales, element puzzle, falling blocks, smashable bike wall/floor, burning floors, twoblock platforms (moving by the weight of Lara), SAS drag blokes.

(I didn't test other objects here but you can try that.)

- We need one more trigger between the executable and the condition triggers of the formula:

This field identifies a game object ID. F300, the new trigger will transform the game ID into the 'normal' (Room Editor) object ID.

- Please note that the field will be updated only if Lara has a new interaction (but only if that object works in this field).

 

2.52. The name of the field:

TRNG Index. Index of moveable performing last AnimComand (Short)

 

Condition combination:

If the Moveable object in the last AnimCommand was (A)

 

A: "equal" object (Room Editor) ID

Type: simple.

 

For example, your BADDY_1 slot has an AnimCommand at a frame of AnimationX. This AnimCommand is an F118 trigger to activate a TriggerGroup. This TriggerGroup contains the combination.

Let's say we have two baddies moving in the level at the same time: baddy with ID84 and baddy with ID108.

For example A is 108 now, so, with this condition combination, you can be sure ID108 baddy, not ID84 baddy has done that AnimCommand.

 

Notes:

- After all, this combination is also a great tool to restrict the sphere of action of an AnimCommand only on a concrete object as well as the combination in Chapter 1.1.7.

A serious difference between the two methods could be the object ID of the present combination will be updated only if an (any) object will activate that AnimCommand the next time.

- We need one more trigger between the executable and the condition triggers of the formula:

This field identifies a game object ID. F300, the new trigger will transform the game ID into the 'normal' (Room Editor) object ID.

 

2.53. The name of the field:

TRNG Organizer Timer. (Increased always in game but not in inventory and pause) (Long)

 

Executable combination:

Adjust active game time to (Y) frames

 

Y: from 0 to any frames

Force: single.

 

Notes:

- This field counts only the active game time, i.e. when the gameplay isn't interrupted by open menus. (It is not the same time you see in Statistics. The time in Statistics includes the time when the inventory is open - but excludes when F5, F6, Pause menus are open.)

So use this timer if you want to know 'the absolutely menu-free' time of the game.

- Sometimes it is worth forcing a value here. For example, if you start a new level then you force 0 here so the number of the passed time will be counted from 0 (as if the counter worked on only the actual level and not the whole game).

 

Condition combination:

If active game time is (A) frames

 

A: from 0 to any frames

Type: sequence.