The NGLE Manual
The
Torch
By AkyV
Part1 - The
Basics
1.1. WHAT IS NEEDED
If you want to use Lara’s torch in your level, then you need
these things in your WAD – you can find them all for example
in the WAD of an original TRLE project, coastal.wad:
a, The torch item (BURNING_TORCH_ITEM). Place it so Lara can
pick it up. In this case it won’t get into inventory: Lara
will hold it in the left hand and you can get rid of it if
Lara throws it (by key “drawing a weapon”, i.e. SPACE) or
drops it (by drawing a weapon with shortcut keys 1, 2 etc.
or choosing a weapon from inventory).
b, The TORCH_ANIM object: it contains Lara’s “left hand with
the torch” mesh and some animations to use the torch.
c, The animations 427, 428, 429, 430 and 431 of LARA object
to use the torch for ignition.
Note:
You don’t want Lara to pick up the torch with SARCOPHAGUS
method. (See for example original TRLE project cleopal.prj
Room97 to get what this method means.)
1.2. IGNITING THE TORCH
If Lara has the torch in her hand then she can ignite it if
she stands close to a triggered flame (an object
FLAME_EMITTER or a FLAME_EMITTER2), and holds the torch to
that, using key Action (CTRL).
For the successful igniting operation the flame object isn’t
allowed to be:
a, lower than Lara’s soles
b, higher than 1 square (4 clicks) from Lara’s soles (with
FLAME_EMITTER)
c, higher than 3,5 clicks from Lara’s soles (with
FLAME_EMITTER2)*
*: 1 click on Floor+/-, Ceiling+/- buttons with the left
mouse button (or hitting key Q, A, W, S once) moves the
marked effect bulb, light bulb or object with 0,5 click
unit. (Doing the same thing with the right button moves them
with 4 click units.)


Notes:
1. It should also work with the non-default flames of these
objects:
a, FLAME_EMITTER with negative OCB window value (blown
flame, igniting the torch at the source of the flame)
b, FLAME_EMITTER2 with OCB window value 1 or 3 (small or
very small flame)
c, FLAME_EMITTER2 with OCB window value 2 (“traveling”
flame)
d, FLAME_EMITTER2 with OCB window value 123 (flame on the
middle of the square – because the default flame of
FLAME_EMITTER2 won’t be on the middle of the square where
the flame object is – as opposed to FLAME_EMITTER - but it
will be at the side of the square where the bottom of this
“red pyramid” object – we call the objects like this
“nullmesh” - is.)
But it won’t work for other flames (for example,
FLAME_EMITTER3).
2. The statuses of these flames (as for Lara):
torch: harmless
FLAME_EMITTER: harmful
FLAME_EMITTER2: harmless
1.3. THE BASIC USING OF THE IGNITED
TORCH
You can use the ignited torch mostly for these purposes:
a, Lighting with it in the darkness.
Just think about this situation: Lara doesn’t have any
flares so she has to find and ignite the torch to see in a
pitch dark room.
(Okay, she can also light a bit with the gunflash but what
if she doesn’t have any weapons? – See “Lara (Weapons)”
FLIPEFFECT triggers.
And, okay, she can also light with binoculars, but we can
take that from her as well. – See Equipment script command
or “Inventory Item” FLIPEFFECT triggers.)
b, Igniting flames with it.
In these cases the rules are (mostly) the same just as at
igniting the torch: if Lara has the flaming torch in her
hand and she stands to a non-triggered flame (an object
FLAME_EMITTER or a FLAME_EMITTER2), then she will ignite the
flame object with the torch, if she holds the torch to the
flame object, using key Action (CTRL). These flame objects
must be within 0-4 (0-3,5) clicks vertical distance, but it
doesn’t matter if they don’t have the default OCB window
values.
But you have to do one more thing to make this setup work:
place one HEAVY trigger on the square of each of these flame
objects. The subject of a HEAVY is the flame object on that
square.
The non-flaming flame objects are invisible, of course. So,
if you want to know whereto Lara holds the flaming torch to
ignite this flame object then you have to mark the place of
this object somehow. – For example, placing the object to an
oil lamp:

c, The ropes in FIREROPE object slot are flammable. If Lara
stands to a rope like this with the flaming torch, then the
rope will be ignited. (You don’t have to use CTRL to ignite.
But the torch must touch the rope over the square of the
rope so if you don’t reach the rope with the torch then jump
to it.)
See this example in “Coastal Ruins” level (original TRLE
project coastal.prj Room108 and the adjacent rooms):

d, You can use the torch for
the burning floor.
e, You can use the torch for
the element puzzle.
1.4. THE TORCH AND THE WATER
a, Lara will never be able to pick up the torch in deep
water. (But she will if she’s standing in water.)
b, Lara will let the torch go automatically if she falls /
dives into deep water. (But she won’t if she’s standing in
water or floating on the surface of water.)
c, If it’s not in Lara’s hand then the torch will be put out
automatically under the surface of water.
Note:
These rules don’t work about quicksand. In quicksand rooms
the torch will work as on land.
1.5. TAKING THE TORCH IN LARA’S HAND
INTO THE NEXT LEVEL
Lara can hold the flaming/non-flaming torch when jumping
level. In this case she shows up in the new level with the
torch in the hand.
If it’s problematic then place another torch item anywhere
in this new level.
(If it’s still problematic then I think it must be a WAD
problem in the new level.)
1.6. ADDITIONAL FEATURES
1.6.1. Putting the torch into/taking it from Lara’s hand
You can also give the torch into Lara’s hand or remove it
from the hand if you use this FLIPEFFECT trigger:
Lara. (Mesh) Torch. <&>Give/Remove Torch to/from hand of
Lara
But don’t forget about these things when giving the torch
with that trigger:
a, The torch won’t be flaming just when Lara gets it if
- she hasn’t got the torch in her hand before in this level,
- the last torch in her hand wasn’t flaming in this level.
b, The torch will be flaming just when Lara gets it if the
last torch in her hand was flaming in this level.
c, Don’t give the torch to Lara’s hand if she just has
something (pistols etc.) in it. (In some cases you may try
it. For example if she’s driving motorbike. But even if it’s
successful then it can’t be ignited or flaming in that
position.)
1.6.2. Throwing the torch away
Activating this FLIPEFFECT trigger, Lara will holster the
weapons in the hands or throw the flare/torch in the hand:
Lara. (Weapons) Remove weapons or flare from lara's hands
Note:
After a throwing like this Lara’s next weapon-drawing must
be with shortcut keys or from inventory.
1.6.3. The flame on the torch
You can also ignite/put out the torch (if it’s just in
Lara’s hand) if you use this FLIPEFFECT trigger:
Lara. (Mesh) Torch. <&>Light/Put-Out the Torch in the hands
of Lara
Part2 - Advanced Settings
2.1. USING CONDITIONS
FOR THE TORCH
You can use the torch for some more purposes if you use
conditions for the torch.
2.1.1. Conditions customized for the
torch
Use these constants in script:
HOLD_ANY_TORCH: it means the condition is true if Lara just
has the flaming/non-flaming torch in the hand
HOLD_FIRED_TORCH: it means the condition is true if Lara
just has the flaming torch in the hand
HOLD_OUT_TORCH: it means the condition is true if Lara just
has the non-flaming torch in the hand
You can use the constants in GlobalTrigger or
MultEnvCondition script commands as conditions.
Let’s see two examples:
GlobalTrigger= 1, IGNORE, GT_LARA_HOLDS_ITEM,
HOLD_FIRED_TORCH, IGNORE, 1, 2
This GlobalTrigger says if Lara has the flaming torch in her
hand then TriggerGroup#1 will happen or else (i.e.
if she has a non-flaming torch or other things in the hand
or if her hands are empty) TriggerGroup#2 will happen.
MultEnvCondition= 1, ENV_HOLD_EXTRA_ITEM_IN_HANDS, IGNORE,
HOLD_OUT_TORCH
This MultEnvCondition defines a condition that is true if
Lara has the non-flaming torch in her hand.
You can use this MultEnvCondition:
a, in a CONDITION trigger: “Multiple condition of
<#>MultEnvCondition script command in (E)way”.
b, in an Animation script command – for example:
Animation= 500, 30, IGNORE, FAN_KEYS_AS_SCANCODE,
ENV_MULT_CONDITION, 1, IGNORE, -103
So you can start Lara’s Animation500 with key A (the 30
means this key – see Keyboard Scancodes list in
NG_Center\Reference) if Lara’s standing (i.e. if she has
Animation103) and has a non-flaming torch in the hand.
(Thanks to FAN_KEYS_AS_SCANCODE constant you can use non-TR4
keys to start an animation.)
Notes:
1. “Lara. (Holds) Lara is holding/driving the <#>item”
CONDITION trigger also has those any/fired/out torch
conditions.
2. It could also be useful to adjust this general CONDITION
trigger for the torch:
“Lara. (Animation) Lara is performing <#>animation”: the
condition is true if Lara’s just performing an animation
(marked in window #) of using the torch.
2.1.2. Conditions of the variables used
for the torch
For example you want to simulate this thing: “Lara
throws/drops the flaming torch and the current of air –
caused by this flying torch – will blow the flame out”. – In
this case write this in the Script:
GlobalTrigger= 2, IGNORE, GT_CONDITION_GROUP, IGNORE, 3, 4,
IGNORE
TriggerGroup= 3, $2000, 244, $1450, $8000, 80, $12B,
$8000+TGROUP_OR, 80, $22B
TriggerGroup= 4, $2000, 199, $0
This GlobalTrigger says if the condition in TriggerGroup#3
is true then TriggerGroup#4 will happen.
; Exporting: TRIGGER(5200:0) for
FLIPEFFECT(244)
; <#> : Variables. Memory. Copy to <&>Numeric Variable the
(E)Savegame Memory value
; <&> : Local Short Alfa1
; (E) : Lara. Test. Throw out item from the Hands (1 = lara
is throwing out item) (Short)
; Values to add in script command: $2000, 244, $1450
This trigger gives data for the condition in TriggerGroup#3,
i.e. puts the actual value of window E into Local Short
Alfa1 variable.
The window E is a field of Savegame Memory Zone: “Lara.
Test. Throw out item from the Hands (1 = lara is throwing
out item) (Short)”. (See more about it in the tutorial in
Variables demo project.)
This field is about the actual status of the torch,
presenting that with these values:
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
; Exporting: CONDITION(43:60) for
PARAMETER(80)
; <#> : Local Short Alfa1
; <&> : Variables. The <#>Numeric Variable is = than
(E)Value
; (E) : Value= 1
; Values to add in script command: $8000, 80, $12B
; Exporting: CONDITION(43:58) for PARAMETER(80)
; <#> : Local Short Alfa1
; <&> : Variables. The <#>Numeric Variable is = than
(E)Value
; (E) : Value= 2
; Values to add in script command: $8000, 80, $22B
The two triggers above examine the value of “Lara. Test.
Throw out item from the Hands (1 = lara is throwing out
item) (Short)” in Local Short Alfa1 variable. If it’s 1
(because Lara’s just throwing the torch) or 2 (because
Lara’s just dropping the torch) then the condition in
TriggerGroup#3 is true. (Thanks to TGROUP_OR constant we can
adjust “OR connection” between $8000, 80, $12B and $8000,
80, $22B.)
; Exporting: TRIGGER(0:0) for
FLIPEFFECT(199)
; <#> : Lara. (Mesh) Torch. <&>Light/Put-Out the Torch in
the hands of Lara
; <&> : Put out the Torch
; (E) :
; Values to add in script command: $2000, 199, $0
So if Lara’s just throwing / dropping the torch then this
trigger puts out the flame on the torch.
Notes:
1. Just think about this situation: Lara picks the torch up
at the starting point of the level, and she also ignites it
there at a flame. Then she carries the torch to the end of
the level where she ignites a flame with the torch before
finishing the level.
But, what if there’s no other flame placed and ignited in
the level and Lara throws/drops the torch in the middle of
the level? If you used that “flame-blowing” condition, then
Lara picks the torch up again, goes back to the starting
point, journeying half the level, and ignites that there
again. – But it’s a bad level editing, of course.
To prevent this problem disable the Globaltrigger for some
points of the level (with “GlobalTriggers. <&>Enable/Disable
the (E)GlobalTrigger” FLIPEFFECT trigger), so the torch
won’t be put out at those points if Lara throws/drops it.
(Saying, for example, the “blowing feature” won’t work
there, because the “blowing feature” will work only in
outside areas where “the wind helps to blow”.)
2. Maybe sometimes you can see flashing some kind of flame
in the very foreground of the screen. One of reasons of this
is the flaming torch thrown/dropped down – so, in a
technical meaning (i.e. to disable this unwanted effect),
it’s a useful thing to put out the torch.
2.1.3. Mixed conditions
You can mix the customized and variable type conditions of
the torch. – See this example:
GlobalTrigger= 3, IGNORE, GT_LARA_HOLDS_ITEM,
HOLD_OUT_TORCH, 5, 6, IGNORE
TriggerGroup= 5, $2000, 244, $1450, $8000, 80, $32B
; Exporting: CONDITION(43:56) for
PARAMETER(80)
; <#> : Local Short Alfa1
; <&> : Variables. The <#>Numeric Variable is = than
(E)Value
; (E) : Value= 3
; Values to add in script command: $8000, 80, $32B
The value 3 means “Lara ignites the torch with the flame /
the flame with the torch” (see above). But we also use a
HOLD_OUT_TORCH condition this time, so TriggerGroup#6 will
happen only if Lara’s just igniting the (non-flaming) torch
with a flame and won’t if Lara’s just igniting a flame with
the (flaming) torch.
2.2. “FREE HAND” FEATURE WITH THE TORCH
Lara can’t do some animations if she has the torch in the
hand: crouching, catching a ledge etc.
We can do some trick to solve that problem – i.e., for
example, we can make Lara catch the ledges with the torch in
the hand -, but it may have some risk (i.e. it may mess up
some of the adjacent animations), so be careful:
That’s what I’m talking about:
Some of Lara animations must have an AnimCommand so-called
“Command3”. If it’s not there then maybe Lara refuses to
grab the subject of the animation: for example, she refuses
to grab a switch in an animation of using a switch. Because
without Command3 the game always senses Lara’s hands are not
free, thinking they are engaged by something – a weapon, for
example. - Lucky us, the command won’t work if there’s
really something in Lara’s hands. (Because of State-ID of
the animation?)
But, if we use that AnimCommand at an animation without that
problem then Lara will overwrite the disallowance for the
really engaged hands in that animation. It means, for
example, she will be able to grab a ledge with a weapon in
the hand.
But Command3 (an original TR4 feature) won’t work if we want
that trick for the torch.
No matter, we can solve it, exporting this FLIPEFFECT as an
AnimCommand: “AnimCommand. Set temporary Free Hands until is
performing <&>Animation”. It can do all the things that
Command3 can do, moreover, it works for the torch. (The
value of window & is the animation where we want to use that
AnimCommand. Add the command to any frame of the animation.)
Notes:
1. Just after that tricky animation you can find Lara with a
lowered left hand. The torch in the lowered hand is useless,
moreover, for example, you can draw weapon now and it means
the torch will disappear in Lara’s hand.
You can solve the problem if you use “Lara. (Mesh) Torch.
<&>Give/Remove Torch to/from hand of Lara” trigger (see
above) just after that tricky animation to raise Lara's hand
again (i.e. to give her the torch back).
2. If the torch was flaming just before that animation then
that FLIPEFFECT (or any other one) won’t help, the flame
will be put out when Lara starts the animation.
3. Other methods to adjust “free hands” for the torch (and
other things in Lara’s hand):
a, ENV_FREE_HANDS constant for MultEnvCondition or Animation
script commands, as a condition.
b, FAN_SET_FREE_HANDS_TEMP constant for Animation script
command, as an order.
This tutorial was made using TRNG 1.2.2.6
Back to Top