Page 1 of 1

Hi, DotP modding cards and personas

PostPosted: 17 Apr 2015, 06:33
by DragonL0rd132
So I just got DotP 1014 and loaded all the community .WADs, Riiak Shi Nal's Deck Builder and my own custom decks! But now I'm trying my hand at adding cards. Behold Deathbringer Liege and Edge of the Divinity:

Deathbringer Liege | Open
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
<FILENAME text="DEATHBRINGER_LIEGE_231157288" />
<CARDNAME text="DEATHBRINGER_LIEGE" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Deathbringer Liege]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Noble féal de Portemort]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Siervo mortal]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Vasall der Todesbringer]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Vassallo Latore di Morte]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[死を運ぶ者のしもべ]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Deathbringer Liege]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Смертоносный Вассал]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Soberano Fatífero]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="231157288" />
<ARTID value="231157288" />
<ARTIST name="Drew Tucker" />
<CASTING_COST cost="{2}{W/B}{W/B}{W/B}" />
<TYPE metaname="Creature" />
<SUB_TYPE metaname="Horror" />
<EXPANSION value="EVE" />
<RARITY metaname="R" />
<POWER value="3" />
<TOUGHNESS value="4" />
<STATIC_ABILITY>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Other white creatures you control get +1/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Les autres créatures blanches que vous contrôlez gagnent +1/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Las otras criaturas blancas que controlas obtienen +1/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Andere weiße Kreaturen, die du kontrollierst, erhalten +1/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Le altre creature bianche che controlli prendono +1/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたがコントロールする他の白のクリーチャーは+1/+1の修整を受ける。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Other white creatures you control get +1/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Другие белые существа под вашим контролем получают +1/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[As outras criaturas brancas que você controla recebem +1/+1.]]></LOCALISED_TEXT>
<FILTER>
local filter = ClearFilter()
filter:Add( FE_CARD_INSTANCE, OP_NOT, EffectSource() )
filter:Add( FE_COLOUR, OP_IS, COLOUR_WHITE )
filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
filter:Add( FE_CONTROLLER, OP_IS, EffectController())
</FILTER>
<CONTINUOUS_ACTION layer="7C" filter_id="0">
if FilteredCard() ~= nil then
local characteristics = FilteredCard():GetCurrentCharacteristics()
characteristics:Power_Add( 1 )
characteristics:Toughness_Add( 1 )
end
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<STATIC_ABILITY>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Other black creatures you control get +1/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Les autres créatures noires que vous contrôlez gagnent +1/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Las otras criaturas negras que controlas obtienen +1/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Andere schwarze Kreaturen, die du kontrollierst, erhalten +1/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Le altre creature nere che controlli prendono +1/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたがコントロールする他の黒のクリーチャーは+1/+1の修整を受ける。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Other black creatures you control get +1/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Другие черные существа под вашим контролем получают +1/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[As outras criaturas pretas que você controla recebem +1/+1.]]></LOCALISED_TEXT>
<FILTER>
local filter = ClearFilter()
filter:Add( FE_CARD_INSTANCE, OP_NOT, EffectSource() )
filter:Add( FE_COLOUR, OP_IS, COLOUR_BLACK )
filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
filter:Add( FE_CONTROLLER, OP_IS, EffectController())
</FILTER>
<CONTINUOUS_ACTION layer="7C" filter_id="0">
if FilteredCard() ~= nil then
local characteristics = FilteredCard():GetCurrentCharacteristics()
characteristics:Power_Add( 1 )
characteristics:Toughness_Add( 1 )
end
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<TRIGGERED_ABILITY>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Whenever you cast a white spell, you may tap target creature.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[À chaque fois que vous jouez un sort blanc, vous pouvez engager la créature ciblée.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Siempre que juegues un hechizo blanco, puedes girar la criatura objetivo.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Immer wenn du einen weißen Zauberspruch spielst, kannst du eine Kreatur deiner Wahl tappen.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Ogniqualvolta lanci una magia bianca, puoi TAPpare una creatura bersaglio.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたが白の呪文をプレイするたび、クリーチャー1体を対象とする。あなたはそれをタップしてもよい。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Whenever you cast a white spell, you may tap target creature.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Каждый раз, когда вы разыгрываете белое заклинание, вы можете повернуть целевое существо.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Toda vez que você joga uma mágica branca, você pode virar a criatura alvo.]]></LOCALISED_TEXT>
<SFX text="CASTER_BUFF_PLAY" />
<TRIGGER value="SPELL_PLAYED" simple_qualifier="objectyoucontrol">
return TriggerObject():GetColour():Test( COLOUR_WHITE )
</TRIGGER>
<MAY />
<TARGET tag="CARD_QUERY_CHOOSE_CREATURE_TAP" definition="0" compartment="0" count="1" />
<TARGET_DEFINITION id="0">
local filter = ClearFilter()
filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
</TARGET_DEFINITION>
<RESOLUTION_TIME_ACTION>
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if target ~= nil then
target:Tap()
end
</RESOLUTION_TIME_ACTION>
<AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ENEMY_ONLY" />
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Whenever you cast a black spell, you may destroy target creature if it’s tapped.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[À chaque fois que vous jouez un sort noir, vous pouvez détruire la créature ciblée si elle est engagée.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Siempre que juegues un hechizo negro, puedes destruir la criatura objetivo si está girada.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Immer wenn du einen schwarzen Zauberspruch spielst, kannst du eine Kreatur deiner Wahl zerstören, falls sie getappt ist.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Ogniqualvolta lanci una magia nera, puoi distruggere una creatura bersaglio se è TAPpata.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたが黒の呪文をプレイするたび、クリーチャー1体を対象とする。それがタップ状態である場合、あなたはそれを破壊してもよい。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Whenever you cast a black spell, you may destroy target creature if it’s tapped.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Каждый раз, когда вы разыгрываете черное заклинание, вы можете уничтожить целевое существо, если оно повернуто.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Toda vez que você joga uma mágica preta, você pode destruir a criatura alvo se estiver virada.]]></LOCALISED_TEXT>
<SFX text="CASTER_BUFF_PLAY" />
<TRIGGER value="SPELL_PLAYED" simple_qualifier="objectyoucontrol">
return TriggerObject():GetColour():Test( COLOUR_BLACK )
</TRIGGER>
<MAY />
<TARGET tag="CARD_QUERY_CHOOSE_CREATURE_TAPPED_TO_DESTROY" definition="0" compartment="0" count="1" />
<TARGET_DEFINITION id="0">
local filter = ClearFilter()
filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
filter:Add( FE_IS_TAPPED, true )
</TARGET_DEFINITION>
<RESOLUTION_TIME_ACTION>
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if target ~= nil then
target:Destroy()
end
</RESOLUTION_TIME_ACTION>
<AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ENEMY_ONLY" />
</TRIGGERED_ABILITY>
<SFX text="COMBAT_BLUNT_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
<SFX text="COMBAT_BLUNT_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
<AI_BASE_SCORE score="600" zone="ZONE_BATTLEFIELD" />
<EDITORS><![CDATA[DragonL0rd132]]></EDITORS>
<DATE><![CDATA[5-16-15]]></DATE>
</CARD_V2>

Edge of the Divinity | Open
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
<FILENAME text="EDGE_OF_THE_DIVINITY_231151155" />
<CARDNAME text="EDGE_OF_THE_DIVINITY" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Edge of the Divinity]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Tranchant de la divinité]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Filo de la divinidad]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Zwiefalt der Gottheit]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Lama della Divinità]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[御身の刃]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Edge of the Divinity]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Грань Божества]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Limite da Divindade]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="231151155" />
<ARTID value="231151155" />
<ARTIST name="Dan Scott" />
<CASTING_COST cost="{W/B}" />
<TYPE metaname="Enchantment" />
<SUB_TYPE metaname="Aura" />
<EXPANSION value="EVE" />
<RARITY metaname="C" />
<SPELL_ABILITY attach_definition="0">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Enchant creature]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Enchanter : créature]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Encantar criatura.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Kreaturenverzauberung]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Incanta creatura]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[エンチャント(クリーチャー)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Enchant creature]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Зачаровать существо]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Encantar criatura]]></LOCALISED_TEXT>
<TARGET tag="CARD_QUERY_CHOOSE_CREATURE_TO_ENCHANT" definition="0" compartment="0" count="1" />
<TARGET_DEFINITION id="0">
local filter = ClearFilter()
filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
</TARGET_DEFINITION>
<RESOLUTION_TIME_ACTION>
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if (target ~= nil and EffectSource() ~= nil) then
EffectSource():Attach( target )
end
</RESOLUTION_TIME_ACTION>
<AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ALLIED_ONLY" />
</SPELL_ABILITY>
<STATIC_ABILITY>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[As long as enchanted creature is white, it gets +1/+2.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Tant que la créature enchantée est blanche, elle gagne +1/+2.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Mientras la criatura encantada sea blanca, obtiene +1/+2.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Solange die verzauberte Kreatur weiß ist, erhält sie +1/+2.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Fintanto che la creatura incantata è bianca, prende +1/+2.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[エンチャントされているクリーチャーが白であるかぎり、それは+1/+2の修整を受ける。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[As long as enchanted creature is white, it gets +1/+2.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Пока зачарованное существо белое, оно получает +1/+2.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Enquanto a criatura encantada for branca, ela receberá +1/+2 .]]></LOCALISED_TEXT>
<CONTINUOUS_ACTION layer="6">
local creature = EffectSource():GetParent()
if creature ~= nil then
local characteristics = creature:GetCurrentCharacteristics()
if creature:GetColour():Test( COLOUR_WHITE ) then
characteristics:Power_Add( 1 )
characteristics:Toughness_Add( 2 )
end
end
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<STATIC_ABILITY>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[As long as enchanted creature is black, it gets +2/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Tant que la créature enchantée est noire, elle gagne +2/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Mientras la criatura encantada sea negra, obtiene +2/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Solange die verzauberte Kreatur schwarz ist, erhält sie +2/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Fintanto che la creatura incantata è nera, prende +2/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[エンチャントされているクリーチャーが黒であるかぎり、それは+2/+1の修整を受ける。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[As long as enchanted creature is black, it gets +2/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Пока зачарованное существо черное, оно получает +2/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Enquanto a criatura encantada for preta, ela receberá +2/+1.]]></LOCALISED_TEXT>
<CONTINUOUS_ACTION layer="6">
local creature = EffectSource():GetParent()
if creature ~= nil then
local characteristics = creature:GetCurrentCharacteristics()
if creature:GetColour():Test( COLOUR_BLACK ) then
characteristics:Power_Add( 2 )
characteristics:Toughness_Add( 1 )
end
end
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<HELP title="MORE_INFO_BADGE_TITLE_4" body="MORE_INFO_BADGE_BODY_4" zone="ZONE_ANY" />
<AI_BASE_SCORE score="900" zone="ZONE_HAND" />
<AI_BASE_SCORE score="300" type="Parent" zone="ZONE_BATTLEFIELD" />
</CARD_V2>


So how do I turn the .XMLs into a .WAD with images?
Has anyone experimented with the personas yet? I'd like to add my own.

Re: Hi, DotP modding cards and personas

PostPosted: 17 Apr 2015, 10:54
by RiiakShiNal
Well for one you can't turn card XMLs into images. For that you need to go out to the web and find the images for the cards (cropped images). Then you will turn those images into TDX files using Gibbed.Duels.TdxConvert (or my modified version if you want compression). Once they are in TDX format then they go in the DATA_ALL_PLATFORMS\ART_ASSETS\ILLUSTRATIONS directory with the name <ArtId>.TDX where the ArtId is the ArtId from the card XML.

Since you are using my Deck Builder I will assume you have already "Setup the Custom Data Folder" and have been putting your created resources in there. In which case you can simply use "Create Core Wad from Custom Data" to pack it into a compressed Wad. Otherwise you will need to use Gibbed.Duels.Pack to make the WAD.

If you are talking about player personas then there was some modding along those lines for DotP 2013, but I have not seen any for DotP 2014.

Re: Hi, DotP modding cards and personas

PostPosted: 18 Apr 2015, 01:55
by DragonL0rd132
Thanks! So .WADs are basically encrypted folders that DotP can read. So I can put both the card data and card images into one .WAD.

I have found the personas in the core data .WAD. Here's numba 30 as proof:
Image
Should be easy to add more.

Re: Hi, DotP modding cards and personas

PostPosted: 18 Apr 2015, 11:20
by RiiakShiNal
DragonL0rd132 wrote:Thanks! So .WADs are basically encrypted folders that DotP can read. So I can put both the card data and card images into one .WAD.
They aren't actually encrypted, think of WADs as more like Zip archives except that they are specially structured for the games.

In DotP 2015 the ZED data files are actually encrypted and we have not broken them yet. So modding is still at a virtual stand still on DotP 2015.

DragonL0rd132 wrote:I have found the personas in the core data .WAD. Here's numba 30 as proof:
Should be easy to add more.
In DotP 2013 it was pretty easy to add personas. The hardest part was trying to coordinate custom personas with everyone else as all personas had a unique sequential ID in the DATA_ALL_PLATFORMS\CONFIGS\PLAYER_AVATARS XML file entries.

I just don't think anyone bothered looking for them or messed around with them in DotP 2014 before. Though looking at them it looks like DotP 2014 personas are quite similar to the DotP 2013 ones, but have more entries and images for each persona.

Re: Hi, DotP modding cards and personas

PostPosted: 19 Apr 2015, 23:24
by DragonL0rd132
Well I gathered all the persona images and already made a Ugin one.
The Persona codes are in the same file path. Experimentation ahoy!

Also tested my Edge and Deathbringer cards, the Edge works wonders but my Deathbringer didn't trigger both abilities when I played a Chief of the Edge, just the white tap. Any suggestions on how to fix that?

Re: Hi, DotP modding cards and personas

PostPosted: 20 Apr 2015, 01:32
by RiiakShiNal
DragonL0rd132 wrote:Also tested my Edge and Deathbringer cards, the Edge works wonders but my Deathbringer didn't trigger both abilities when I played a Chief of the Edge, just the white tap. Any suggestions on how to fix that?
What probably happened is that the white ability triggered first then the black ability. Since there were likely no tapped cards at the time the black ability resolved it did nothing, then the white ability resolved. You will probably need to play around with the ability priorities to get the black ability to trigger first then have the white ability trigger second (so that the white will resolve first with the black resolving second). This is because abilities on the stack resolve in the reverse order that they trigger (first in, last out).