www.tombraiderforums.com

Go Back   www.tombraiderforums.com > Tomb Raider Modding > Tomb Raider Level Editor > Tomb Raider Level Editor Tutorials

Closed Thread
 
Thread Tools
Old 29-05-14, 19:44   #1
AkyV
Moderator
 
Join Date: Dec 2011
Location: Hungary
Posts: 2,376
Default TRNG TriggerGroups how to use them

The so-called “TriggerGroup” Script commands contain TRNG triggers exported in the Script. Each TriggerGroup has an ID number and the codes of one or more exported triggers.

Only ACTION, FLIPEFFECT and CONDITION triggers can be exported into the Script.

If you want to export a trigger into the Script, then adjust the trigger in STT (Set Trigger Type panel), then hit Export Script Trigger button. It will open a TXT file (saved automatically in Level Editor main folder), like eg. this:

; Set Trigger Type - FLIPEFFECT 91
; Exporting: TRIGGER(532:0) for FLIPEFFECT(91)
; <#> : Lara. (Health) Lara invulnerable for <&>time with (E)effect
; <&> : 20 seconds
; (E) : Blinking transparency - fast
; Values to add in script command: $2000, 91, $214


Use CTRL+C to copy the code in the “Values to add in script command” line and then CTRL+V to paste it in a TriggerGroup command, in the Script.

Let’s see for example this TriggerGroup:

TriggerGroup= 1, $2000, 91, $214, $5000, 8, $21F

This TriggerGroup has ID1 and contains the codes of two triggers: “$2000, 91, $214” is the first trigger code and “$5000, 8, $21F” is the second trigger code.

Notes:

- “TriggerGroup” doesn’t mean everyway it is a group of triggers. A TriggerGroup command can contain even only one exported trigger, if you want that.
- We can’t export the activation mode (TRIGGER, PAD, HEAVY, etc.), One Shot button or number button statuses into the Script. That is why you don’t need to care about them in STT now.
- TriggerGroup commands have a maximum amount in each level. It is 999.
- You can choose a random TriggerGroup ID, but only from a 1, 2, 3,… 9998, 9999 interval, in each level.
You have some help to prevent the maximum amount from outrunning:

= the NG Center will show an error message if you have too many TriggerGroups, or
= see the NG Center log just after building the Script: the Statistics part will show the actual and the maximum amount of the TriggerGroups.

1. TriggerGroup types

There are three main types of TriggerGroups:

- Executable TriggerGroups: a TriggerGroup like that will contain only executable triggers.
This TriggerGroup is used to execute those exported triggers when you execute the TriggerGroup.

- Condition TriggerGroups: a TriggerGroup like that will contain only condition triggers.
This TriggerGroup cannot be executed. All you can do is study the conditions in this TriggerGroup. If the conditions are true, then a/some executable triggers (somewhere else) will be executed.

- Mixed TriggerGroups: a TriggerGroup like that will contain both executable and condition triggers.
This TriggerGroup is used to execute those exported executable triggers (if the conditions in this TriggerGroup are true) when you execute the TriggerGroup.

Let’s see some examples:

TriggerGroup= 1, $2000, 91, $214, $5000, 8, $21F
The TriggerGroup contains a FLIPEFFECT and an ACTION trigger, so it is an Executable TriggerGroup: if you activate this TriggerGroup, then $2000, 91, $214 and $5000, 8, $21F will be activated, which means Lara will be invulnerable for 20 seconds, marked by fast blinking, plus Moveable object with ID8 will be moved down by 3 clicks.

TriggerGroup= 2, $9000, 5, $1A, $8000, 368, $1
The TriggerGroup contains CONDITION triggers, so it is a Condition TriggerGroup: if Lara is touching a Moveable object with ID5, plus if there are no big medipacks in the inventory, then a/some executable trigger(s) somewhere else will be executed.

TriggerGroup= 3, $9000, 5, $1A, $2000, 91, $214
The TriggerGroup contains first a CONDITION trigger, then a FLIPEFFECT after that, so it is a Mixed TriggerGroup: if Lara is touching a Moveable object with ID5, then Lara will be invulnerable for 20 seconds, marked by fast blinking.

TriggerGroup= 4, $9000, 5, $1A, $8000, 368, $1, $2000, 91, $214, $5000, 8, $21F
The TriggerGroup contains first two CONDITION triggers, then a FLIPEFFECT and an ACTION after that, so it is a Mixed TriggerGroup: if Lara is touching a Moveable object with ID5, plus if there are no big medipacks in the inventory, then Lara will be invulnerable for 20 seconds, marked by fast blinking, plus Moveable object with ID8 will be moved down by 3 clicks.

TriggerGroup= 5, $2000, 91, $214, $9000, 5, $1A, $5000, 8, $21F
The TriggerGroup contains a FLIPEFFECT, then a CONDITION trigger after that, then an ACTION after that, so it is a Mixed TriggerGroup.
But the FLIPEFFECT is not after the CONDITION, but before that. That is why the FLIPEFFECT will be executed everyway if the TriggerGroup is executed.
So the meaning of the TriggerGroup is: Lara will be invulnerable for 20 seconds, marked by fast blinking, everyway, plus, if Lara is touching a Moveable object with ID5, then Moveable object with ID8 will be moved down by 3 clicks.


In special cases, not only Mixed TriggerGroups, but Condition TriggerGroups can also contain exported executable triggers. The difference is Condition TriggerGroups always end with condition triggers. So if there are executable triggers before this last (condition) trigger, then their only purposes to “fill up” that condition trigger with data. - For example:

TriggerGroup= 6, $2000, 244, $1650, $8000, 80, $12B
The TriggerGroup contains a FLIPEFFECT, then a CONDITION trigger after that. The condition will examine if Local Short Alfa1 variable is 1. The FLIPEFFECT will put the actual value of “Lara. Test. Lara is aiming at the enemy automatically (1 = yes) (Short)” Savegame Memory Zone field into Local Short Alfa1. – So, after all, the condition examines if the actual value of “Lara. Test. Lara is aiming at the enemy automatically (1 = yes) (Short)” Savegame Memory Zone field is 1.

2. Controlling TriggerGroups

You can execute Executable TriggerGroups or Mixed TriggerGroups in one of these ways:

- F118 or F371 or F372 or F373 triggers, placed in the map or exported into the Script.
- IdPerformTriggerGroup field or IdOnFalseTriggerGroup field of a GlobalTrigger Script command.
- Some fields of some other Script commands.

You can study the conditions in a Condition TriggerGroup in one of these ways:

- A C15 placed in the map. The local executable trigger(s) overlapped with C15 will be executed if C15 is true.
(By the way, you can use C15 even exported in Condition or Mixed TriggerGroups, just like other exported CONDITION triggers.)
- The IdConditionTriggerGroup field of a GlobalTrigger:

= The Executable/Mixed TriggerGroup in IdPerformTriggerGroup field of the GlobalTrigger will be executed, if IdConditionTriggerGroup field is true.
= The Executable/Mixed TriggerGroup in IdOnFalseTriggerGroup field of the GlobalTrigger will be executed, if IdConditionTriggerGroup field is false.

- ENV_CONDITION_TRIGGER_GROUP constant in an Animation, AnimationSlot and MultEnvCondition Script command, refers to a Condition TriggerGroup:

= If that TriggerGroup is true, then the animation for that Animation, AnimationSlot will be performed.
= If that TriggerGroup is true, then that MultEnvCondition command is true. True MultEnvCondition commands are useful for Animation, AnimationSlot commands or for C16 (local or exported) condition triggers.
(Use a MultEnvCondition for a C16, if you need conditions that you can’t define in other CONDITION triggers. So using MultEnvCondition for a C16 is useful only if that MultEnvCondition contains not - only - ENV_CONDITION_TRIGGER_GROUP, but - even - other ENV constants for other conditions.)

Triggers to control TriggerGroups:

If an F118/371/372/373 trigger refers to a TriggerGroup ID, then the TriggerGroup with that ID will be executed if you activate that trigger, executing the triggers exported in that TriggerGroup.

But why do we need F118 for single/multiple/continuous working methods, when we have F371 for single method, F372 for multiple method and F373 for continuous method?
Well, in the older TRNG’s only F118 existed, handling maximum 255 ID’s. Then it turned out that we need more TriggerGroup ID’s than 255. But technically it seemed impossible. That is why (keeping F118 useable) we needed three more different triggers (F371, F372, F373) to handle single, multiple, continuous methods.
All of F371, F372 and F373 handle all the 9999 ID’s.

So you can choose:

- F118 or F371 for single mode, from ID 1 to 255,
- F118 or F372 for multiple mode, from ID 1 to 255,
- F118 or F373 for continuous mode, from ID 1 to 255,
- F371 for single mode, from ID 256 to 9999,
- F372 for multiple mode, from ID 256 to 9999,
- F373 for continuous mode, from ID 256 to 9999.

The ID range for the other triggers of TriggerGroups (F192, F345) could be increased successfully to 9999. (F192 will stop the execution of continuous methods. F345 will make possible to activate a TriggerGroup with TGROUP_SINGLE_SHOT flag once again, if that was activated once before.)
However, C15 could be increased only to ID1023, so you can’t use the ID1024-ID9999 interval in C15 condition triggers.

In the further part of the tutorial I don’t want to make the things too complicated, that’s why I will mention only F118 to activate a TriggerGroup (saying it is single, multiple or continuous) – but that naturally means you can use F371, F372 or F373 instead of F118, if you want.

See more about single/multiple/continuous methods in this tutorial:
http://www.tombraiderforums.com/show...29#post7060929

Script commands to control TriggerGroups:

- Animation or AnimationSlot command:
Type a FAN_PERFORM_TRIGGER_GROUP flag in FAN_ Flags field. This time not an animation ID but a TriggerGroup ID must be typed in AnimIndex field of the command. The TriggerGroup will be executed if the conditions, you typed in the other fields of the command, are true.
Plus, see ENV_CONDITION_TRIGGER_GROUP above.

- Customize= CUST_AMMO command:

= Type a TriggerGroup ID in IdTriggerGroupWhenHitEnemy field. The TriggerGroup will be executed if Lara hits an enemy with the given ammo.
= Type a TriggerGroup ID in IdTriggerGroupAtEnd field. The TriggerGroup will be executed if Lara hits anyone/anything with the given grenade/arrow type.

- Customize= CUST_DARTS command:
Type a DRT_PERFOM_TRIGGERGROUP flag in Dart Flags (DRT_ ...) field. In that case, the TriggerGroup – whose ID is typed in IdTriggerGroup field – will be activated if a dart of a given dart emitter (having the same OCB number as typed in IdCustDarts field now) hits Lara.

- GlobalTrigger command. See above.

- MultEnvCondition. See above.

- Organizer command:
This command is able to list several TriggerGroup ID’s, having time values between each ID’s. If the given time elapses after the latest TriggerGroup, then the next TriggerGroup will be activated.

- Parameters= PARAM_ACTOR_SPEECH command:
If the sequence of the command reaches an SPC_PERFORM_TG constant, then the TriggerGroup (whose ID is attached to the constant with a + sign) will be executed.

- StandBy command:

= Type a TriggerGroup ID in IdTriggerGroupBegin field. The TriggerGroup will be executed if the camera sequence starts.
= Type a TriggerGroup ID in IdTriggerGroupEnd field. The TriggerGroup will be executed if the camera sequence ends.

- Switch command:
This command is able to list several TriggerGroup ID’s. Each of them will be executed only if the value of a given variable is a given number.

3. The purposes of TriggerGroups

a, You want to use Executable or Mixed TriggerGroups for new local events, activating them with some local trigger placed in the map:

- You can force a new working method for the event.
- With Mixed TriggerGroups, you can accomplish some really new/complex event, mostly using TGROUP condition flags for them. (See below.)
- TGROUP…INDEX flags are able to change the subject of the trigger. (See below.)

b, You want to use Executable or Mixed TriggerGroups for troubleshooting of some local events, activating them with some local trigger placed in the map:

- Sometimes classic and new procedures will not do the same. (For example, instead of using One Shot for the trigger in STT, use a TGROUP_SINGLE_SHOT flag in the Script, at the TriggerGroup command, because One Shot or TGROUP_SINGLE_SHOT have not exactly the same effect.)
- TGROUP_SINGLE_SHOT_RESUMED is a “special One Shot”, it is useful to prevent this bug: your FLIPEFFECT or ACTION local trigger has more squares, that is why each square of the trigger is able to activate the event.
- Some triggers will work properly only exported in TriggerGroups. (For example, about activating some new, TRNG cameras.)
- There is a limit for the amount of triggers placed in the map. - See this information in Room Info Box:

= Triggers: X of 512 – the maximum (512) and the actual (X) amount of local triggers placed in the map in that project.
= Items: X of 6000 – the maximum (6000) and the actual (X) aggregated amount of the effects (light, camera, fog, sink, sound), Moveable and Static objects and local triggers placed in the map in that project.

So, you can use TriggerGroups, if you want to decrease the amount of triggers placed in the map.
For example, if you have eight local triggers to be activated on the same floor square, then you can activate it in two ways:

= Place all the triggers one by one on that square. It means 8 triggers placed in the map.
= Create a TriggerGroup command in the Script. Export all the eight triggers into that TriggerGroup, then place an F118 on that square to activate that TriggerGroup. It is 1 trigger placed in the map.

c, You want to use Executable or Mixed TriggerGroups to activate with some Script command:
This is the only way to add executable triggers to that Script command. But if it is a Mixed TriggerGroup, mostly using TGROUP condition flags for them, then the event created by the triggers could be really unique.

d, You want to study conditions of Condition TriggerGroups:

- If it is a C15 placed in the map, then it could be necessary, because you can have only one CONDITION trigger on a square. But if you use C15 for that only one CONDITION, then C15 will refer to a Condition TriggerGroup, that can contain even several exported CONDITIONs. Moreover, some TGROUP condition flags can be used in Condition TriggerGroups, to make the TriggerGroup more complex.
- If it is a C15 exported in the Script, then it seems necessary only if you don’t want to type a range of condition triggers in a Mixed TriggerGroup. That is why you type that range in a Condition TriggerGroup, and then refer to that Condition TriggerGroup with a C15 in the Mixed TriggerGroup.
- You need an IdConditionTriggerGroup field of a GlobalTrigger if you use a Condition TriggerGroup (or maybe another GT constant as well) as the condition for IdPerformTriggerGroup and IdOnFalseTriggerGroup fields of the GlobalTrigger.

4. Flags for TriggerGroups

Flags for TriggerGroups are TGROUP Script constants, attached with a + sign to the first number of the exported trigger in the TriggerGroup, to modify the property of that trigger/TriggerGroup.
For example, if you want to use a TGROUP_OR flag for “$9000, 5, $1A” condition, then you must type “+TGROUP_OR” after $9000:

$9000+TGROUP_OR, 5, $1A

Hereafter we will handle the triggers in TriggerGroups in an easier way in the further part tutorial. So eg. ET1 means the first executable trigger of the TriggerGroup, ET2 means the second executable trigger of the TriggerGroup, CT1 means the first condition trigger of the TriggerGroup, CT2 means the second condition trigger of the TriggerGroup etc.
So eg. the first condition with a TGROUP_OR flag will look this way:
CT1+TGROUP_OR


TGROUP flag types are:

- TGROUP_SINGLE_SHOT and TGROUP_SINGLE_SHOT_RESUMED flags will control the “only once” function.
- Condition flags will change the basic status of the condition triggers in TriggerGroups.
- Index flags will change the Moveable object index in exported triggers.

Condition flags:

Without condition flags, the game will always examine the “true” status of a condition:

TriggerGroup= 7, CT1, ET1 - if CT1 is true, then ET1 will be executed.

Condition flags are able to turn the “true” meaning of the conditions: “if the condition is wrong, then…”

Without condition flags, there are always “and” connections between the conditions:

TriggerGroup= 8, CT1, CT2, ET1, ET2 - if CT1 and CT2 are true, then ET1 and ET2 will be executed.

Condition flags are able to change the “and” connection between the conditions into “or” or “else” connection.

Note:
Since the basic meaning is “and”, TGROUP_AND flag is always unnecessary.

“Or” connection:

If you want “or” connection between two conditions typed after each other, then use a TGROUP_OR constant, attaching the constant to the second condition. – For example:

TriggerGroup= 9, CT1, CT2+TGROUP_OR, ET1

This TriggerGroup says this: if CT1 is true OR if CT2 is true then ET1 will be executed.
Or let’s see a bit more complex case:

TriggerGroup= 10, CT1, CT2, CT3+TGROUP_OR, ET1

This TriggerGroup says this: if CT1 is true and if (CT2 or CT3) is true then ET1 will be executed.

Turning the condition into “wrong”:

If you want to turn a “true” condition into “wrong”, then attach a TGROUP_NOT flag into it. - For example:

TriggerGroup= 11, CT1, CT2+TGROUP_NOT, ET1, ET2, ET3

This TriggerGroup says this: if CT1 is true AND if CT2 is NOT true, then ET1 and ET2 and ET3 will be executed. – But let’s change it a bit:

TriggerGroup= 12, CT1+TGROUP_OR, CT2+TGROUP_NOT, ET1, ET2, ET3

This TriggerGroup says this: if CT1 is true OR if CT2 is NOT true, then ET1 and ET2 and ET3 will be executed.

As you see, the TGROUP_OR can also be connected to the first condition of the two conditions typed after each other, instead of the second one, if the second condition of them has a TGROUP_NOT flag.

And now let’s see a “double negation”:

TriggerGroup= 13, CT1+TGROUP_NOT, CT2+TGROUP_NOT, ET1, ET2

This TriggerGroup says this: if CT1 is NOT true AND/OR if CT2 is NOT true, then ET1 and ET2 will be executed.

AND/OR means sometimes it’s not easy to judge, if you have two TGROUP_NOT constants after each other, then that is a “not OR not” or a “not AND not” situation. So be careful with adjusting your setup here, test the situation cautiously.
(But usually there is no difference: “not blue or not green” or “not blue and not green” means the same: “it is anything but blue/green”.)

“Else” connection:

There is possible to put more than one condition trigger next to NOT each other in a TriggerGroup. But if you do that then you need to attach a TGROUP_ELSE flag to the condition being between the executable triggers.
If the executable trigger before that condition cannot be executed (because the examination of the condition for that executable trigger has a bad result) then the condition with this flag will be examined. – For example:

TriggerGroup= 14, CT1, ET1, CT2+TGROUP_ELSE, ET2

This TriggerGroup says this: first of all, the game will study CT1 condition. If that is true, then ET1 will be executed. But if CT1 is not true, then the game will skip ET1 and will study CT2 condition. If CT2 is true then ET2 will be executed.

Or, let’s see a complex example:

TriggerGroup= 15, CT1, CT2+TGROUP_OR, ET1, ET2, CT3+TGROUP_ELSE, ET3, >
CT4+TGROUP_ELSE, CT5+TGROUP_NOT, ET4, ET5, ET6

This TriggerGroup says this: the game studies CT1 and CT2. If any of them is true, then ET1 and ET2 will be executed. If none of them is true then CT3 will be studied. If that is true than ET3 will be executed. But if it is not true, then the game will study CT4 and CT5. If CT4 is true and CT5 is not true then ET4, ET5 and ET6 will be executed.

If you need an “if the condition is true or if the same condition is not true” setup, then you don’t need two conditions. Instead, use only one condition, attaching the “else” flag to the first executable trigger of the wrong situation. – For example:

TriggerGroup= 16, CT1, ET1, ET2+TGROUP_ELSE, ET3

So this TriggerGroup says this: “if CT1 is true then execute ET1, but if CT1 is not true, then execute ET2 and ET3”.

Condition flags for Condition TriggerGroups:


Just above, I told you what if you use condition flags in Mixed TriggerGroups.
But you can use certain (TGROUP_OR or TGROUP_NOT) flags even in Condition TriggerGroups: – Let’s see an example:

There’s an executable trigger placed, overlapped with a C15, and this is in the TriggerGroup of C15:

TriggerGroup= 17, CT1, CT2+TGROUP_OR

It means: “the executable trigger will be activated if CT1 or CT2 is true”.

Index flags:

TGROUP_USE_EXECUTOR_ITEM_INDEX:

Use this flag if the F118 for the TriggerGroup will be activated by a HEAVY.
The trigger in the TriggerGroup for example is an A14 trigger to kill a dog with object ID23. But you want each enemy to be killed, getting in the zone of that HEAVY trigger, sauntering around. That’s why you attach this flag to that trigger, because the flag will overwrite the ID in the trigger for the activator ID.
So the new object ID of the trigger will always be the ID of the object that is just activating that HEAVY.

As you see, after all, that is not important now, if the object in the trigger is which object – and that is true for all the triggers with index flags.

TGROUP_USE_FOUND_ITEM_INDEX:

For example, you have an F118 placed in the map, which contains an A30 (to raise an object), with this flag.
Before you activate that F118, a Moveable object index must be found everyway. Let’s suppose the last method that can find a Moveable object index, before activating that F118, is a GT_COLLIDE_SLOT type GlobalTrigger, for an ANIMATING6: it will execute an executable trigger if Lara touches any ANIMATING6 object that is placed in the map. - Let’s suppose two ANIMATING6 objects are placed in the map now: ID7 and ID18.
So, if Lara touches ANIMATING6 ID7 just before activating that F118, then the A30 will raise ANIMATING6 ID7, because it is ID7 that GlobalTrigger condition has found.
But, if Lara touches ANIMATING6 ID18 just before activating that F118, then the A30 will raise ANIMATING6 ID18, because it is ID18 that GlobalTrigger condition has found.

The method that can find that index should be some “scripted thing” (mostly GlobalTrigger or TestPosition).
So eg. a CONDITION trigger placed in the map to find an index perhaps is not useable now.

Note:
If you want to know the found index is just ID7 or ID18 now, then use an F244 to put “TRNG Index. Index of last item found with testposition or condition (Short)” Savegame Memory Zone field into Current Value. It is the tomb (game) index of the object, so you also need an F300 to transform the tomb (game) index in Current Value into the usual NGLE (Room Editor) object index you can see in the map.
After that, you can study in Current Value if the value is 7 or 18.

TGROUP_USE_ITEM_USED_BY_LARA_INDEX:

For example, we have a CONDITION+TRIGGER overlap placed in the map: “Lara is pushing/pulling a pushblock” (C5)+a TRIGGER F118 to perform TriggerGroup#1.
TriggerGroup#1 has this ACTION trigger: ”add the effect of an AddEffect Script command on the PUSHABLE_OBJECT with index 54” (A48), with TGROUP_USE_ITEM_USED_BY_LARA_INDEX flag.
There is two PUSHABLE_OBJECTs placed in the map: ID54 and ID55. If Lara pushes/pulls the pushblock with ID54 over the trigger, then the effect will show up on that pushblock. But if Lara pushes/pulls the pushblock with ID55 over the trigger, then the effect will show up on that pushblock.

Notes:

- This flag probably is useful only with certain object types (rollingballs, vehicles, ropes etc.). - See them in NG Center/Reference, at the description of this flag.
So it is useless if you want to use it eg. with pushpull/kick doors, poleropes, sarcophagus etc.
- Paolone says (see that NG Center description again) that you should use this flag only with an AnimCommand.
It is not important anyway – if you use some related animation condition with that trigger. And that is exactly what I did in the example above: I applied “Lara is pushing/pulling a pushblock” condition for pushblocks.
Moreover, if you don’t use an AnimCommand or a related animation condition, that doesn’t mean everyway the trigger is wrong. – But the meaning of the flag will be changed: the trigger will be applied on the object Lara is just using or she was using at the latest.
- If you want to know the used index is just ID54 or ID55 now (even if the animation has already stopped), then use an F244 to put “TRNG Index. Index of last item used by Lara (Short)” Savegame Memory Zone field into Current Value. It is the tomb (game) index of the object, so you also need an F300 to transform the tomb (game) index in Current Value into the usual NGLE (Room Editor) object index you can see in the map.
After that, you can study in Current Value if the value is 54 or 55.

TGROUP_USE_OWNER_ANIM_ITEM_INDEX

If you attach this flag to an ACTION in a TriggerGroup, then you should use the F118 of the TriggerGroup as an exported AnimCommand in WADMerger.
Now that ACTION will do the same as when you export that ACTION directly (i.e. not in a TriggerGroup) into WADMerger, choosing Yes for the AnimCommand – i.e. this time any object of the object slot will perform that AnimCommand on itself (whatever object is named in the ACTION), reaching the given animation/frame.
Then why do we need this “ACTION+TGROUP_USE_OWNER_ANIM_ITEM_INDEX+TriggerGr oup+F118 AnimCommand” setup? Wouldn’t be an “ACTION Yes AnimCommand” setup easier?
Well, there is some difference: if you want other AnimCommand triggers at the given frame, then you need to place other AnimCommands there, if you use an ACTION Yes setup. But if you use an F118 TGROUP_USE_OWNER_ANIM_ITEM_INDEX setup, then you can export those other triggers into the TriggerGroup, you don’t need to place them as AnimCommands in WADMerger.

Note:
Let’s say we have two baddies moving in the level at the same time: baddy with ID84 and baddy with ID108.
If you want to know ID84 or ID108 baddy permformes/performed that AnimCommand on himself, then use an F244 to put “TRNG Index. Index of moveable performing last AnimComand (Short)” Savegame Memory Zone field into Current Value. It is the tomb (game) index of the object, so you also need an F300 to transform the tomb (game) index in Current Value into the usual NGLE (Room Editor) object index you can see in the map.
After that, you can study in Current Value if the value is 84 or 108.

TGROUP_USE_TRIGGER_ITEM_INDEX:

I don’t think this is a useful flag.

Made using TRNG 1.2.2.7.

Last edited by AkyV; 13-04-16 at 12:10.
AkyV is offline  
Closed Thread

Bookmarks

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



All times are GMT. The time now is 03:25.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2017, vBulletin Solutions Inc.