Hidden Triggers in TRNG
by AkyV

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

1.22. Spikeball subject

 

1.22.1. The name of the field:

Custom_D (Different usage in according with type of item) (Short)
 

Condition combination (1):

If (X) spikeball first activity status is (A)
 

A:

'equal'

0: the spikeball has never been activated before

0, with TGROUP_NOT flag in the condition trigger:

a, the spikeball is active or

b, the spikeball is inactive but has been activated before at least once

Type: simple.
 

Note:

The spikeball is inactive only if it has returned into its cage on the ceiling.
 

Condition combination (2):

If the injuriousness status of (X) spikeball is (A)
 

A: 'equal' 50 (injurious - i.e. the knives are extended), 150 (not injurious - the ball is still falling down, or has fallen down but the knives haven't extended yet)

Type: simple.
 

1.23. Flame emitter subject
 

These fields work only if the flame is being blown horizontally/vertically from the emitter!
 

1.23.1. The name of the field:

Custom_A (Different usage in according with type of item) (Short)
 

Executable combination (1):

Make (X) flame emitter stop blowing and start the next blow in (Y) frames

 

Y: 1 or bigger frames

Force: single.
 

Notes:

- The 'stop' means the emitter starts stopping the blow, as usual, i.e. by degrees, so it is not a sudden stop.

Naturally, if the flame is just not being flown, then nothing will stop, but the next blow will start in Y frames.

- The combination will work only for the next blow that is just coming. So the blows after this next blow will come according to the default value (i.e. according to the OCB value of the emitter).

- If the emitter hasn't been activated when you activate the combination, then the timer starts when the emitter has been activated.
 

Executable combination (2):

Make (X) flame emitter stop blowing and disable to start more blows
 

Y: 1 or bigger frames

Force: continuous. When stopping it: the blow will start in Y frames.
 

Note:

Maybe you think you shouldn't use this combination. But, instead of that, you will antitrigger the flame and then - also using Executable combination (1) - you will trigger the flame again.

But that is not the same. Because, when the emitter is antitriggered then you can't see the 'basic flame' (which is not blown). But if you stop the blows by this combination, then you'll see the basic flame.
 

Executable combination (3):

Make (X) flame emitter start a continuous blow or (if the flame is just being blown) make the actual blown flame continuous
 

Y: 0

Force: continuous. When stopping it, and after that, if you forced a value by Executable combination (1): the flame will start working with its normal rhythm.
 

Condition combination (1):

If the blow status of (X) flame emitter is (A)
 

A:

'equal'

0: the emitter is just blowing the flame

0, with TGROUP_NOT flag in the condition trigger: the flame is just not being blown, or reducing just after finishing the blow

Type: simple.
 

Condition combination (2):

If the next blow of (X) flame emitter starts in (A) frames

 

A: from 1 to bigger frames

Type: sequence.
 

Note:

The condition is useful only if the flame is not being blown or if the actual blown flame has started decreasing.
 

1.23.2. The name of the field:

Custom_B (Different usage in according with type of item) (Short)
 

Executable combination:

Make (X) flame emitter have (Y) long flame
 

Y: from -1 to -8192 (-8192 is the default length, probably -1 means 1 unit)

Force: continuous. When stopping it: the length will go back to the result one.
 

Notes:

- It's recommended using it only if the blow is continuous.

- You cannot change the direction. (So, eg. don't try to force a positive number at a vertically blown flame, because the flame won't be blown downwards.)
 

Condition combination:

If the blown flame of (X) flame emitter has (A) length

 

A: from 1 to 8192 (I.e. use the positive version of the negative value!)

Type: sequence.
 

Note:

Use F284 to invert the sign in the chosen variable. Place that F284 exactly before the condition trigger in the TriggerGroup.

I.e. in this field we won't use Negative/Positive/Null formula, because the values are surely only negative values!
 

1.23.3. The name of the field:

Custom_C (Different usage in according with type of item) (Short)
 

Condition combination (1):

If the blown flame of (X) flame emitter has (A) length status
 

A:

'equal'

0 (the length is just at the maximum)

256 (the length is just at the minimum)

'bigger/equal' (1) and 'smaller' (256): the flame is just increasing/decreasing (Yes, two condition triggers, after each other!)

Type: simple.
 

Note:

It's worth using 'If the blow status of (X) flame emitter is (A)' condition together with 'the flame is just increasing/decreasing' condition. (I.e. in the same TriggerGroup, after each other.) Because, for example, 'the emitter is just blowing the flame' and the 'the flame is just increasing/decreasing' together means 'the flame is just increasing', ruling out the 'decreasing' part.
 

Condition combination (2):

If the blown flame of (X) flame emitter is just (A) harmful/not harmful to Lara
 

A:

'equal'

256: the flame is just harmless (being at the minimum length)

256, with TGROUP_NOT flag in the condition trigger: the flame is just harmful (not being at the minimum length)

Type: simple.
 

1.23.4. The name of the field:

Custom_D (Different usage in according with type of item) (Short)
 

Executable combination (1):

Make the flame being just blown from (X) flame emitter be emitted further (Y) frames from now on
 

Y: from 1 to any frames

Force: single.
 

Notes:

- If the flame isn't just being blown then the combination is useless.

- 0 frame value means the blow starts stopping by degrees at once.
 

Executable combination (2):

Make the actual or (if the flame is just not being blown) the next blown flame of (X) flame emitter be continuous
 

Y: from 1 to any frames

Force: continuous. When stopping it: the blow (being just blown) will start stopping in Y frames.
 

Note:

Values below about 10 seem buggy. (I.e. the length will be too short.)
 

Condition combination:

If (X) flame emitter starts stopping the blow in (A) frames

 

A: from 1 to any frames

Type: sequence.
 

1.24. Flame emitter2 subject

 

1.24.1. The name of the field:

Custom_A (Different usage in according with type of item) (Short)
 

This field works only if a negative number is typed in the OCB window of the emitter, for a special usage!
 

Condition combination:

If the flipmap of the scales-ahmet setup - controlled by (X) flame emitter2 - (A) has been/has not been switched on
 

A:

'equal'

0 (has not been switched on)

1 (has been switched on)

Type: simple.
 

Note:

If a Flame emitter2 has a negative number in its OCB window then a flipmap (without any flames) will be activated if you trigger that emitter. (For example, Flipmap Number 3 if the OCB value is -3.) - But:

- You can't antitrigger this emitter to switch off the flipmap.

- Don't use this condition if you control the flipmap by other triggers (as well).
 

1.25. Flame emitter3 subject
 

1.25.1. The name of the field:

Custom_A (Different usage in according with type of item) (Short)
 

This field works only if the emitter produces flames!
 

Executable combination:

Make (X) flame emitter3 has only two, continuous bursts in (Y) way
 

Y: from 1 to 11

Force: continuous. When stopping it: the emitter starts working 'normally'.
 

As you know Flame emitter3 has more bursts that will burst from the floor at different points, at different time. But if you force a value here between 1 and 11, then only 2 bursts will burst, but continuously.

You can't really control which two bursts will burst if you force a value. I.e. it seems random. But probably different values have different pairs. So eg. probably 'this' and 'that' burst will appear together randomly only if you force Value 1, and they never will be together with Value 2. (I say 'probably' so maybe it is absolutely unimportant if you force 1, 2, or 11.)
 

1.26. Firerope subject
 

1.26.1. The name of the field:

Custom_B (Different usage in according with type of item) (Short)
 

Condition combination:

If the status of (X) firerope is (A)
 

The basic formula is peculiar now:
 

Trigger1. An A54 to define the actual subject of Item Memory Zone.

Trigger2. An F256 to put the value of the chosen memory zone field into the chosen variable.

Trigger3. An F256 to put the value of Custom_D field into another variable.

Trigger4. A C41/C42/C43 trigger to study the chosen variable value.

Trigger5. A C43 trigger to study the second variable value, if that is 0.

Trigger6. A C43 trigger to study a third variable value, if that is 0 or if that is 1. (Use this trigger only in 'not ignited' or 'started crumbling' cases.)

 

A:

'equal'

0, if the third variable value=0: the rope hasn't been ignited

0, with TGROUP_NOT flag in Trigger4 and in Trigger5: the rope is burning

0, if the third variable value=1: the rope has just started crumbling

16: the rope has been crumbled

'bigger/equal' (1) and 'smaller' (16): the rope is crumbling (Yes, two condition triggers -Trigger4a, Trigger4b -, after each other!)

Type: simple.
 

An additional condition is necessary (to put a value into that third variable) if you need Trigger6:
 

GlobalTrigger= 2, IGNORE, GT_CONDITION_GROUP, IGNORE, 2, 3, IGNORE

TriggerGroup= 2

TriggerGroup= 3
 

TriggerGroup2:

Trigger1. An A54 to define the actual subject of Item Memory Zone.

Trigger2. An F256 to put the value of Custom_D field into the second variable.

Trigger3. A C43 trigger to study if the second variable value is 1.
 

TriggerGroup3:

Trigger1. An F232 to put 1 in the third variable.
 

(So GlobalTrigger2 turns the third variable value into 1 when the rope catches fire.

But that variable will remain 0 - i.e. the default value of the variable - if the firerope has not been ignited yet.)
 

1.26.2. The name of the field:

Custom_D (Different usage in according with type of item) (Short)
 

Executable combination (1):

Make (X) firerope (still burning) be burning further (Y) frames from now on
 

Y: from 1 to any frames

Force: single.
 

Note:

If the firerope isn't just burning then the combination is useless.
 

Executable combination (2):

Disable (X) firerope to start crumbling
 

Y: from 1 to any frames

Force: continuous. When stopping it: the flaming firerope will start crumbling in Y frames.
 

'Disable' means the rope will catch fire if Lara hits the rope with the torch after activating the combination, but the rope will be burning continuously, never starting crumbling.
 

Notes:

- It will work both for burning or still not burning fireropes.

- Values below about 10 seem buggy. (I.e. with those numbers, some parts of the rope will crumble at once when Lara ignites the rope and/or the flames will disappear.)
 

Condition combination:

If (X) firerope (still burning) starts crumbling in (A) frames
 

A: from 1 to 150 frames (customize the maximum by Executable combination (1))

Type: sequence.
 

1.27. Twoblock platform subject
 

These fields work only if it is a platform that descends half a click when Lara steps on it!
 

1.27.1. The name of the field:

Custom_A (Different usage in according with type of item) (Short)
 

Executable combination:

Make (X) twoblock platform to descend to (Y) units position if Lara is standing on it
 

Y:

- positive numbers: units counted below Floor Level 0. (So eg. 1024 means the platform will descend to a position which is 1024 clicks below Floor Level 0.)

- negative numbers: units counted above Floor Level 0. (So eg. -1024 means the platform will descend to a position which is 1024 clicks above Floor Level 0.)

- 0 as Floor Level 0

Force: single.
 

Notes:

- Before activating the combination, the position of the twoblock platform must be higher than Value Y.

- After activating the combination, the platform will do nothing till Lara steps on it. It starts descending when Lara steps on it.

- If the platform descending reaches Y position then the platform will descend half a click as well, as usual. Now if Lara steps off it then the platform will ascend half a click, as usual. Stepping on the platform again and again after that, now only those half a click changes will be repeated.

- If Lara steps off the platform descending before the platform reaches Y position then the platform will stop at once. If she steps on the platform again then the platform will continue descending towards Y position.
 

Condition combination:

If the base of (X) twoblock platform is at (A) units
 

A:

- with Positive formula (base is below Floor Level 0 or on exactly Floor Level 0): 0 or positive units

- with Negative formula (base is above Floor Level 0 or on exactly Floor Level 0): 0 or positive units

- with Null formula (base is exactly Floor Level 0): 0 unit

Type: simple, but you can use either 'equal' or 'smaller' or 'bigger/equal' conditions.
 

Notes:

'Base' means this is the position from which the platform will perform that descend with half a click. If you didn't use the executable formula then the 'base' is the original position of the platform. If you used the executable formula then the 'base' is the Y (forced) position of the platform.
 

1.27.2. The name of the field:

Custom_B (Different usage in according with type of item) (Short)
 

Condition combination:

If (X) twoblock platform is in (A) base/lower position
 

A:

'equal' 1 (the platform is in base position or the platform is just descending from base position)

'smaller' 0 (the platform is in lower position or the platform is just ascending from lower position)

Type: simple.

 

Note:

See above to understand what 'base' means. 'Lower' is the position if the platform has descended that half a click.
 

1.28. Raising block subject

 

1.28.1. The name of the field:

Custom_B (Different usage in according with type of item) (Short)
 

Executable combination:

Force (X) raising block to have (Y) size
 

Y: from 1 to any

Force: see below.
 

Notes:

- 4096 is always the default maximum size. So 4096 is '1 square high' at RAISING_BLOCK1 but '2 squares high' at RAISING_BLOCK2. (0 naturally means the platform is totally descended, being on ground level.)

- Be careful! Blocks with forced size have a bad collision.

- See for example RAISING_BLOCK2.

2048 is the half of 4096, so if the forced value is 2048 that means RAISING_BLOCK2 will be extended only 1 square high.

On the other hand, 8192 is twice as big as 4096, so if the forced value is 8192 that means RAISING_BLOCK2 will be extended 4 squares high.

See some examples:
 

= Force 2048 singly before activating the block. The block will jump to that size at once, and remain that. Trigger the block and that will ascend to the normal 4096 size. Then antitrigger the block to lower that into the ground.

= Force 2048 continuously before activating the block. The block will jump to that size at once, and remain that. Trigger the block - but nothing will happen. Stop the continuous force - and the block starts ascending to 4096 size.

= Trigger the block, then force 2048 singly. Whether the block has reached 4096 size or not, now the block will jump to 2048 size and starts ascending to 4096 size.

= Trigger the block, then antitrigger it, then force 2048 singly. Whether the block has reached the ground or not, now the block will jump to 2048 size and starts descending to the ground.

= Force 8192 singly before activating the block. The block will jump to that size at once, and remain that. Trigger the block and that will descend to the normal 4096 size.

= Trigger the block, then force 8192 singly. Whether the block has reached 4096 size or not, now the block will jump to 8192 size and remain that.

= Trigger the block, then antitrigger it, then force 8192 singly. Whether the block has reached the ground or not, now the block will jump to 8192 size and starts descending to the ground.
 

RAISING_BLOCK1 is naturally analogous with that.

- An extra: use negative numbers to force them. Negative sizes make the things interesting. I mean, they will 'turn in' the outside of the block.
 

Condition combination:

If (X) raising block actual size is (A)
 

A: from 1 to any

Type: sequence.
 

Note:

Seeing the executable formula, eg. A=4096 means 'the block has totally extended', or A=2048 means 'the block ascending/descending has extended the half of its whole size' etc. (Naturally the meanings of the numbers will change if you use the executable formula. I mean, eg. 4096 is not the total size if you forced 8192.)
 

1.29. Expanding platform subject
 

1.29.1. The name of the field:

Custom_B (Different usage in according with type of item) (Short)
 

Executable combination:

Force (X) expanding platform to have (Y) size
 

Y: from 1 to any

Force: see below.
 

Notes:

- 4096 is always the default maximum size. So 4096 means 'extended the distance of 1 square'. (0 naturally means the platform is totally drawn back.)

- Be careful! Platforms with forced size have a bad collision.

- See the raising block to understand how it works. So, for example, you can force 2048 singly in a way like that:

Trigger the platform, then force 2048 singly. Whether the platform has reached 4096 size or not, now the platform will jump to 2048 size and starts extending to 4096 size. Etc.

- An extra: use negative numbers to force them. Negative sizes make the things interesting. I mean, they will 'turn in' the outside of the platform.
 

Condition combination:

If (X) expanding platform actual size is (A)
 

A: from 1 to any

Type: sequence.
 

Note:

See the similar condition with raising blocks to understand how it works.
 

1.30. Squishy block2 subject
 

1.30.1. The name of the field:

Custom_A (Different usage in according with type of item) (Short)
 

Executable combination (1):

Make (X) squishy block2 (triggered yet) fall down in (W) frames

 

W: 60 minus Y frames

Y: from 1 to 59

Force: single.
 

Executable combination (2):

Disable (X) squishy block2 (triggered yet) to fall down in (W) way
 

W: 60 minus Y frames

Y: from 1 to 59

Force: continuous. When stopping it: the block will fall down in W frames.
 

The default time between triggering the block and the block starts falling down is 60 frames. 'In (W) way' means the level is quaking when the block is about to fall down, and the intensity of the quake is different at different frames. For example, the intensity at 20th frame is not the same as the intensity at 45th frame.

So eg. if you want the level (after triggering the block) to have a quake with a constant '20th frame intensity' till the block falls down then W must be 20 now.
 

Note:

You can activate the combination either before activating the block or after that.
 

Condition combination:

If there are still (B ) frames before (X) squishy block2 (triggered yet) falls down
 

B: 60 minus A frames

A: from 1 to 59 frames

Type: sequence.
 

Note:

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

1.31. Pushable object subject
 

1.31.1. The name of the field:

Custom_A (Different usage in according with type of item) (Short)

 

Condition combination:

If (X) pushable object first activity status is (A)
 

A:

'equal'

0: the object has never been pushed/pulled before

0, with TGROUP_NOT flag in the condition trigger:

a, the object is just being pushed/pulled or

b, the object is just not being pushed/pulled but has been pushed/pulled before at least once

Type: simple.