Board index Programs with AI or Rules Enforcement Magic: The Gathering - Duels of the Planeswalkers Programming Talk
Morph tests
Moderator: CCGHQ Admins
Re: Morph tests
by thefiremind » 13 Sep 2014, 09:53
Just a hint: I don't know if it will work in this particular case (probably not), but for problems of this kind, remember that there's MTG():ReevaluateContinuousEffects() which should force the game to apply continuous effects immediately.NeoAnderson wrote:I understand what you say because i already tried before but timing is too quick and the game doesn't update the card status when considering it for casting
< Former DotP 2012/2013/2014 modder >
Currently busy with life...
Currently busy with life...
-
thefiremind - Programmer
- Posts: 3515
- Joined: 07 Nov 2011, 10:55
- Has thanked: 118 times
- Been thanked: 721 times
Re: Morph tests
by NeoAnderson » 13 Sep 2014, 10:05
Thanks Fire, but i already know that and i also used it inside the card code, but it seems cannot change any continuous effect already applied to the card, i mean the cost reductions/increase are already applied when it reevaluate the contionuous effects, and the same seems to be about ability granted as like flash..thefiremind wrote:Just a hint: I don't know if it will work in this particular case (probably not), but for problems of this kind, remember that there's MTG():ReevaluateContinuousEffects() which should force the game to apply continuous effects immediately.NeoAnderson wrote:I understand what you say because i already tried before but timing is too quick and the game doesn't update the card status when considering it for casting
The problem is we are able to change what happen before consider_for_cast trigger inside the PREREQUISITE BLOCK of the alternative cost, and this influence the cost reductions effects, but it also change what happen when we cast the card normally.
About the Flash granted it seems to be not considered also if we turn into a creature the card into prerequisite block.
- NeoAnderson
- Posts: 914
- Joined: 10 Sep 2013, 07:49
- Has thanked: 18 times
- Been thanked: 139 times
Re: Morph tests
by NeoAnderson » 13 Sep 2014, 23:16
NEED HELP :
I am fighting with a weird issue, i have an activated ability with cost
1. if i have only mana of 1 kind, so no other combinations available, everything works fine, but if i have mana of different colours or colourless mana the game ask to choose the best combination of mana to use then when i push ok it crash with dump file.
2. I tried to change PayManaCost with PayResourceCost using an utility ability same as above.
3. I tried to change the cost of the activated ability with
Honestly this is the first time i find something like this and i don't know how to fix it..so please if someone have an idea to resolve will be very helpful.
UPDATE : After i lose my mind i understand which was the problem, it seems that the function PayManaCost doesn't works properly if we are pay for something while is going to be cast, i resolved using CastUsingResourceCost and i have create an utility ability with generic cost and inside the utility ability i used PayManaCost.
I am fighting with a weird issue, i have an activated ability with cost
- Code: Select all
<COST mana_cost="{0}" type="Mana" />
- Code: Select all
if EffectController():CanPayManaCost("{3}") then
EffectController():PayManaCost("{3}")
end
1. if i have only mana of 1 kind, so no other combinations available, everything works fine, but if i have mana of different colours or colourless mana the game ask to choose the best combination of mana to use then when i push ok it crash with dump file.
2. I tried to change PayManaCost with PayResourceCost using an utility ability same as above.
3. I tried to change the cost of the activated ability with
- Code: Select all
<COST mana_cost="{3}" type="Mana" />
Honestly this is the first time i find something like this and i don't know how to fix it..so please if someone have an idea to resolve will be very helpful.
UPDATE : After i lose my mind i understand which was the problem, it seems that the function PayManaCost doesn't works properly if we are pay for something while is going to be cast, i resolved using CastUsingResourceCost and i have create an utility ability with generic cost and inside the utility ability i used PayManaCost.
Last edited by NeoAnderson on 14 Sep 2014, 00:36, edited 1 time in total.
- NeoAnderson
- Posts: 914
- Joined: 10 Sep 2013, 07:49
- Has thanked: 18 times
- Been thanked: 139 times
Re: Morph tests
by RiiakShiNal » 14 Sep 2014, 00:34
I already responded to this via PM (as that is where I saw the question first), but I will summarize what I said there for everyone else here.
If the problem is with multiple combinations of mana only when manual mana tokens (i.e. invisible tokens) are available then there is probably a workaround that can be used.
If the problem occurs with multiple combinations of mana when only basic lands and/or regular permanents are available then it is a really bad engine problem that we probably can't do anything about. Or there is something wrong with your installation, though if all other aspects of the game work then it is not likely an installation problem.
So additional information and test are needed.
If the problem is with multiple combinations of mana only when manual mana tokens (i.e. invisible tokens) are available then there is probably a workaround that can be used.
If the problem occurs with multiple combinations of mana when only basic lands and/or regular permanents are available then it is a really bad engine problem that we probably can't do anything about. Or there is something wrong with your installation, though if all other aspects of the game work then it is not likely an installation problem.
So additional information and test are needed.
Just getting started: Xander9009's DotP 2014 Community Wad
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
- RiiakShiNal
- Programmer
- Posts: 2185
- Joined: 16 May 2011, 21:37
- Has thanked: 75 times
- Been thanked: 496 times
Re: Morph tests
by NeoAnderson » 14 Sep 2014, 00:39
Thanks my friend i was so focused that i haven't seen your PM, anyway i figured out where the engine was crashing, i just update the post above :RiiakShiNal wrote:I already responded to this via PM (as that is where I saw the question first), but I will summarize what I said there for everyone else here.
If the problem is with multiple combinations of mana only when manual mana tokens (i.e. invisible tokens) are available then there is probably a workaround that can be used.
If the problem occurs with multiple combinations of mana when only basic lands and/or regular permanents are available then it is a really bad engine problem that we probably can't do anything about. Or there is something wrong with your installation, though if all other aspects of the game work then it is not likely an installation problem.
So additional information and test are needed.
UPDATE : After i lose my mind i understand which was the problem, it seems that the function PayManaCost doesn't works properly if we are pay for something while is going to be cast, i resolved using CastUsingResourceCost and i have create an utility ability with generic cost and inside the utility ability i used PayManaCost.
I swear i was going to be crazy also because there is no reason to crash as i had implemented before.
- NeoAnderson
- Posts: 914
- Joined: 10 Sep 2013, 07:49
- Has thanked: 18 times
- Been thanked: 139 times
Re: Morph tests
by NeoAnderson » 14 Sep 2014, 00:57
OK guys,
After thousand and thousand tests, i made another test version of Lumithread Field.
I decided to keep the morph cost always on 3 (Right now is the best solution).
I would post what i have done i need tests, many different tests to understand how many conflicts are still unsolved.
After thousand and thousand tests, i made another test version of Lumithread Field.
I decided to keep the morph cost always on 3 (Right now is the best solution).
I would post what i have done i need tests, many different tests to understand how many conflicts are still unsolved.
- Right now i made it compliant with the follow situations : | Open
- 1. Compliant with cards like Nightveil Specter that grants the ability to play card not from hand.
2. Compliant with cards like Omniscience that grants the ability to cast for free.
3. Compliant with Primeval Bounty
4. Compliant with Iona, Shield of Emeria
5. Compliant with CASCADE ability - tested with Bloodbraid Elf
6. Partial Compliant with the follow cards who grant flash ability:- Teferi, Mage of Zhalfir
Leyline of Anticipation
Prophet of Kruphix
Vedalken Orrery
Aluren
Vernal Equinox
8. Allow to check Morph ability
9. Allow to check Facedown status
10. Allow other cards ability to access hidden card info.
11. Allow controller to view hidden card info.
Know issues :
1. The facedown casting cost is constant (probably something could be done)
2. Still not respect some effects limitations like Ethersworn Canonist
3. If there is an effect in play from cards of point 6 above, and there are other effects like Ovinize you will still be able to cast the card.
- Lumithread Field - Morph Test Neo - Ver.Omega-1a | Open
- Code: Select all
<?xml version="1.0"?>
<CARD_V2 ExportVersion="1">
<FILENAME text="NEO_MORPH_PACK_002_LUMITHREAD_FIELD_599126186" />
<CARDNAME text="LUMITHREAD_FIELD" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Lumithread Field]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Champ de lumifilaments]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Campo de hilos de luz]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Feld aus Leuchtfäden]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Campo Lumitrama]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[光糸の場]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Lumithread Field]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Поле Светящихся Нитей]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Campo Fibroluminal]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[明缕力场]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[Lumithread Field]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="599126186" />
<ARTID value="599126186" />
<ARTIST name="Scott Altmann" />
<CASTING_COST cost="{1}{W}" />
<FLAVOURTEXT>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Having conquered the Bastion of Suns, the Ota took its light for their own.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Après avoir conquis le Bastion des soleils, les Otas s’emparèrent de sa lumière.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Tras conquistar el Bastión de los Soles, los Ota tomaron su luz para sí mismos.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Nachdem sie die Bastion der Sonnen erobert hatten, verwendeten die Ota deren Licht für sich.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Dopo aver conquistato il Bastione dei Soli, gli Ota si impossessarono della sua luce.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[“太陽の拠点”を征服したオタ族はその光を自分自身のためのものとした。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Having conquered the Bastion of Suns, the Ota took its light for their own.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Покорив Бастион Солнц, оты завладели его светом.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Após conquistar o Bastião dos Sóis, os Ota se apoderaram de sua luz.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[征服太阳堡垒后,欧塔族将此光据为己有。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[Having conquered the Bastion of Suns, the Ota took its light for their own.]]></LOCALISED_TEXT>
</FLAVOURTEXT>
<TYPE metaname="Enchantment" />
<EXPANSION value="FUT" />
<RARITY metaname="C" />
<STATIC_ABILITY>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Creatures you control get +0/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Les créatures que vous contrôlez gagnent +0/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Las criaturas que controlas obtienen +0/+1. Metamorfosis {1}{W}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Alle Kreaturen, die du kontrollierst, erhalten +0/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Le creature che controlli prendono +0/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたがコントロールするクリーチャーは+0/+1の修整を受ける。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Creatures you control get +0/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Существа под вашим контролем получают +0/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Criaturas que você controla recebem +0/+1,]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[由你操控的生物得+0/+1。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[Creatures you control get +0/+1.]]></LOCALISED_TEXT>
<FILTER filter_id="0">
local filter = ClearFilter()
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( 0 )
characteristics:Toughness_Add( 1 )
end
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<TRIGGERED_ABILITY replacement_query="1" active_zone="ZONE_ANY">
<TRIGGER value="BEGINNING_OF_STEP">
if MTG():GetStep() == STEP_UPKEEP then
local Chest_Id = Object():GetRef()
local chest = MTG():DuelDataChest():Get_Chest(Chest_Id)
if chest ~= nil then
return false
else
MTG():CreateDelayedTrigger(8, nil)
chest = MTG():DuelDataChest():Make_Chest(Chest_Id)
return true
end
end
return false
</TRIGGER>
<RESOLUTION_TIME_ACTION>
MTG():PutTokensOntoBattlefield( "NEO_TEST_TOKEN_001_MORPH_2_2_570092001", 1, EffectController(), EffectDC():Make_Chest(0) )
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local chest = EffectDC():Get_Chest(0)
if chest ~= nil then
local token = chest:Get_NthCardPtr(0)
if token ~= nil then
local Chest_Id = Object():GetRef()
token:StoreCopiableValues(MTG():DuelDataChest():Make_Chest(Chest_Id))
end
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<STATIC_ABILITY active_zone="ZONE_ANY">
<CONTINUOUS_ACTION layer="1">
if Object() ~= nil then
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER, 0 )
if RSN_Characteristics_GetInt( Object(), NEO_CHARACTERISTIC_FACEDOWN ) == 1 then
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH, 0 )
else
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH, 1 )
end
end
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<UTILITY_ABILITY qualifier="Alternate" active_zone="ZONE_HAND" >
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Morph {1}{W}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Mue {1}{W}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Metamorfosis {1}{W}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Morph {1}{W}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Metamorfosi {1}{W}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Morph {1}{W}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Morph {1}{W}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Morph {1}{W}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Metamorfose {1}{W}]]></LOCALISED_TEXT>
<ABILITY_TEXT tag="MODE_CAST_MORPH_FACE_DOWN_PAY_3" />
<COST type="Generic">
<PREREQUISITE>
if Object():GetZone() ~= ZONE_HAND and Object():GetErstwhileZone() ~= 5 then
if EffectController():CanCastSpellForFree(Object()) and EffectController():CanPayManaCost("{3}") then
return true
else
return false
end
end
</PREREQUISITE>
<PLAY_TIME_ACTION>
EffectController():PayManaCost("{3}")
MTG():CreateDelayedTrigger(7, nil)
local Chest_Id = Object():GetRef()
if MTG():DuelDataChest():Get_Chest(Chest_Id) == nil then
MTG():CreateDelayedTrigger(8, nil)
end
local delayDC = EffectDC():Make_Chest(0)
delayDC:Set_Int(0, Chest_Id)
MTG():CreateDelayedTrigger(9, delayDC)
local characteristics = Object():GetCurrentCharacteristics()
local card_type = characteristics:CardType_GetWritable()
local sub_type = characteristics:SubType_GetWritable()
sub_type:ClearAllOfType( CARD_TYPE_ENCHANTMENT )
card_type:Clear()
card_type:Add( CARD_TYPE_CREATURE )
Object():GetCurrentCharacteristics():Colour_Get():Clear()
</PLAY_TIME_ACTION>
</COST>
</UTILITY_ABILITY>
<TRIGGERED_ABILITY resource_id="7" replacement_query="1" priority="20">
<TRIGGER value="STATE_BASED_EFFECTS" pre_trigger="1" />
<CLEANUP fire_once="1" />
<PLAY_TIME_ACTION>
if Object() ~= nil then
local Chest_Id = Object():GetRef()
if MTG():DuelDataChest():Get_Chest(Chest_Id) == nil then
MTG():PutTokensOntoBattlefield( "NEO_TEST_TOKEN_001_MORPH_2_2_570092001", 1, EffectController(), EffectDC():Make_Chest(0) )
else
Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))
end
end
</PLAY_TIME_ACTION>
<PLAY_TIME_ACTION>
if Object() ~= nil then
local Chest_Id = Object():GetRef()
if MTG():DuelDataChest():Get_Chest(Chest_Id) == nil then
local token_chest = EffectDC():Get_Chest(0)
if token_chest ~= nil then
local token = token_chest:Get_NthCardPtr(0)
if token ~= nil then
token:StoreCopiableValues(MTG():DuelDataChest():Make_Chest(Chest_Id))
Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))
end
end
end
end
</PLAY_TIME_ACTION>
<CONTINUOUS_ACTION layer="1">
if Object() ~= nil then
local Chest_Id = Object():GetRef()
if MTG():DuelDataChest():Get_Chest(Chest_Id) ~= nil then
Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 1 )
Object():GetCurrentCharacteristics():GrantAbility(10)
Object():GetCurrentCharacteristics():GrantAbility(12)
Object():GetCurrentCharacteristics():GrantAbility(13)
end
end
</CONTINUOUS_ACTION>
<DURATION>
return RSN_Characteristics_GetInt( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER ) == 1
</DURATION>
</TRIGGERED_ABILITY>
<UTILITY_ABILITY resource_id="40">
<ABILITY_TEXT tag="MODE_CAST_MORPH_FACE_DOWN_PAY_3" />
<COST type="Generic">
<PREREQUISITE>
return EffectController():CanPayManaCost("{3}")
</PREREQUISITE>
<PLAY_TIME_ACTION>
EffectController():PayManaCost("{3}")
</PLAY_TIME_ACTION>
</COST>
</UTILITY_ABILITY>
<ACTIVATED_ABILITY forced_skip="1" active_zone="ZONE_HAND" >
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[You may Cast this face down as a 2/2 creature for {3}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Vous pouvez jouer cette carte face cachée comme une créature 2/2 pour {3}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Puedes jugar esta carta boca abajo como una criatura 2/2 pagando {3}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Du kannst diese Karte verdeckt für {3} als eine 2/2 Kreatur spielen.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Gioca questa carta a faccia in giù come una creatura 2/2 pagando {3}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[You may Cast this face down as a 2/2 creature for {3}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[You may Cast this face down as a 2/2 creature for {3}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[You may Cast this face down as a 2/2 creature for {3}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Você pode baixar este card com a face voltada para baixo como uma criatura 2/2 por {3}]]></LOCALISED_TEXT>
<COST mana_cost="{0}" type="Mana" />
<AVAILABILITY>
return EffectController():CanPayManaCost("{3}")
</AVAILABILITY>
<RESOLUTION_TIME_ACTION>
if Object() ~= nil then
local Chest_Id = Object():GetRef()
local delayDC = EffectDC():Make_Chest(1)
delayDC:Set_Int(0, Chest_Id)
MTG():CreateDelayedTrigger(9, delayDC)
if MTG():DuelDataChest():Get_Chest(Chest_Id) == nil then
MTG():CreateDelayedTrigger(8, nil)
MTG():PutTokensOntoBattlefield( "NEO_TEST_TOKEN_001_MORPH_2_2_570092001", 1, EffectController(), EffectDC():Make_Chest(0) )
else
Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))
end
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
if Object() ~= nil then
local Chest_Id = Object():GetRef()
if MTG():DuelDataChest():Get_Chest(Chest_Id) == nil then
local token_chest = EffectDC():Get_Chest(0)
if token_chest ~= nil then
local token = token_chest:Get_NthCardPtr(0)
if token ~= nil then
token:StoreCopiableValues(MTG():DuelDataChest():Make_Chest(Chest_Id))
Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))
end
end
end
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
if Object() ~= nil then
MTG():CreateDelayedTrigger(17, nil)
end
</RESOLUTION_TIME_ACTION>
<CONTINUOUS_ACTION layer="1">
if Object() ~= nil then
local Chest_Id = Object():GetRef()
if MTG():DuelDataChest():Get_Chest(Chest_Id) ~= nil then
Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 1 )
Object():GetCurrentCharacteristics():GrantAbility(10)
Object():GetCurrentCharacteristics():GrantAbility(12)
Object():GetCurrentCharacteristics():GrantAbility(13)
end
end
</CONTINUOUS_ACTION>
<DURATION>
return RSN_Characteristics_GetInt( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER ) == 1
</DURATION>
</ACTIVATED_ABILITY>
<TRIGGERED_ABILITY resource_id="17" replacement_query="1">
<TRIGGER value="STATE_BASED_EFFECTS" pre_trigger="1" />
<CLEANUP fire_once="1" />
<RESOLUTION_TIME_ACTION>
MTG():ReevaluateContinuousEffects()
</RESOLUTION_TIME_ACTION>
<PLAY_TIME_ACTION>
local value = 0
if EffectSource():CanBePlayed(EffectController()) == true or EffectController():CanCastSpellUsingResourceCost( EffectSource(), 40 ) == true then
if EffectController():MyTurn() == true then
if MTG():GetStep() == STEP_MAIN_1 or MTG():GetStep() == STEP_MAIN_2 or CheckThisCreatureForCharacteristic(CHARACTERISTIC_FLASH, EffectSource()) == 1 or CheckCardGrantFlashControlledBy(EffectController()) == 1 or CheckCardGrantFlashControlledByOthers(EffectController()) == 1 then
value = 1
end
elseif CheckThisCreatureForCharacteristic(CHARACTERISTIC_FLASH, EffectSource()) == 1 or CheckCardGrantFlashControlledBy(EffectController()) == 1 or CheckCardGrantFlashControlledByOthers(EffectController()) == 1 then
value = 1
end
end
if CheckCardOverrideCreatureCastControlledByAny() == 1 then
value = 0
end
EffectDC():Set_Int(8, value)
if value == 1 then
EffectController():BeginNewMultipleChoice()
EffectController():AddMultipleChoiceAnswer( "MODE_CAST_MORPH_FACE_DOWN_PAY_3", EffectController():CanPayManaCost("{3}"))
EffectController():AddMultipleChoiceAnswer( "CARD_QUERY__NEO_OPTION_DO_NOTHING" )
EffectController():AskMultipleChoiceQuestion( "MODE_MORPH_INFO_CARD" )
end
</PLAY_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local valueA = EffectDC():Get_Int(8)
if valueA == 1 then
local value = EffectController():GetMultipleChoiceResult()
if value == 0 then
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 1 )
if EffectController():CanCastSpellUsingResourceCost( EffectSource(), 40 ) then
EffectController():CastSpellUsingResourceCost( EffectSource(), 40 )
end
else
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER, 1 )
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 0 )
end
else
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER, 1 )
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 0 )
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY resource_id="8" replacement_effect="1" active_zone="ZONE_ANY" priority="-1">
<TRIGGER value="ZONECHANGE_CONSIDERED" to_zone="ZONE_BATTLEFIELD" from_zone="ZONE_ANY" pre_trigger="1">
if TriggerObject() ~= nil and TriggerObject():GetCardName() == "" then
if TriggerObject():GetErstwhileZone() == 0 then
MTG():OverrideEvent()
return true
end
end
return false
</TRIGGER>
<CLEANUP fire_once="1" />
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY resource_id="9" replacement_effect="1" active_zone="ZONE_ANY" priority="-1">
<TRIGGER value="ZONECHANGE_END" simple_qualifier="self" to_zone="ZONE_BATTLEFIELD" >
if TriggerObject() ~= nil and RSN_Characteristics_GetInt( Object(), NEO_CHARACTERISTIC_FACEDOWN ) == 1 then
local oDC = RSN_GetObjectDC( Object(), true )
local value = EffectDC():Get_Int(0)
oDC:Int_Set( 585, value )
return true
end
return false
</TRIGGER>
<CLEANUP fire_once="1" />
</TRIGGERED_ABILITY>
<ACTIVATED_ABILITY resource_id="10" forced_skip="1" >
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Morph (|View hidden info of the card|)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Mue (|Voir les informations cachées de la carte|)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Metamorfosis -(|Ver la informacion oculta de la carta|)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Morph (|Ausgeblendete Informationen der Karte zeigen|)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Metamorfosi (|Visualizza info nascoste della carta|)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Morph (カードの隠された情報を見る)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Morph (카드의 숨겨진 정보를보기)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Morph (|Посмотреть скрытую информацию карты|)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Metamorfose (|Ver informação oculta do cartão|)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[Morph (|View hidden info of the card|)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[Morph (|View hidden info of the card|)]]></LOCALISED_TEXT>
<COST mana_cost="{0}" type="Mana" />
<PLAY_TIME_ACTION>
local oDC = RSN_GetObjectDC( Object(), false )
local value = oDC:Int_Get(585)
if value < 0 then
value = (-value)
end
local QueryString = "CARD_QUERY_MORPH_"..value
EffectController():BeginNewMultipleChoice()
EffectController():AddMultipleChoiceAnswer( QueryString, EffectController():CanPayManaCost("{1}{W}") )
EffectController():AddMultipleChoiceAnswer( "CARD_QUERY__NEO_OPTION_DO_NOTHING" )
EffectController():AskMultipleChoiceQuestion( "MODE_MORPH_INFO_CARD", Object() )
</PLAY_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local value = EffectController():GetMultipleChoiceResult()
if value == 0 then
EffectController():PayManaCost("{1}{W}")
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER, 1 )
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 0 )
MTG():FireTrigger( TRIGGER_TURNED_FACE_UP, Object() )
end
</RESOLUTION_TIME_ACTION>
<AI_AVAILABILITY type="in_response" />
<AI_AVAILABILITY window_step="begin_combat" window_turn="their_turn" type="window" />
<AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
<AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
<AI_AVAILABILITY window_step="main_2" window_turn="my_turn" type="window" />
<AI_AVAILABILITY window_step="declare_blockers" type="window" />
<AI_AVAILABILITY window_step="end_of_turn" type="window" />
</ACTIVATED_ABILITY>
<TRIGGERED_ABILITY resource_id="12" replacement_effect="1">
<TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="self" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
return true
</TRIGGER>
<RESOLUTION_TIME_ACTION>
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER, 1 )
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 0 )
MTG():ReevaluateContinuousEffects()
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY resource_id="13" replacement_effect="1" active_zone="ZONE_STACK">
<TRIGGER value="SPELL_BEING_COUNTERED" simple_qualifier="self" pre_trigger="1" />
<RESOLUTION_TIME_ACTION>
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER, 1 )
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 0 )
MTG():ReevaluateContinuousEffects()
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TOKEN_REGISTRATION reservation="1" type="NEO_TEST_TOKEN_001_MORPH_2_2_570092001" />
<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" />
</CARD_V2>
Last edited by NeoAnderson on 16 Sep 2014, 16:05, edited 1 time in total.
- NeoAnderson
- Posts: 914
- Joined: 10 Sep 2013, 07:49
- Has thanked: 18 times
- Been thanked: 139 times
Re: Morph tests
by braquio » 14 Sep 2014, 02:26
Only one question,
And the same for omniscience.
with cascade shouldn't let you cast morphed cause is an alternative cost and cascade lets you play for free so alternative cost are not allowed, isn't it?5. Compliant with CASCADE ability - tested with Bloodbraid Elf
And the same for omniscience.
____________________________________________________________________________________________________________________________
Braquio Dotp2014 DLC
Alternative Sealed Campaigns for DotP 2014
Braquio Dotp2014 DLC
Alternative Sealed Campaigns for DotP 2014
Re: Morph tests
by NeoAnderson » 14 Sep 2014, 02:40
Right my friend when another ability let you cast for free, as like CASCADE, or Omniscience is already an alternative cost so you can only cast normal mode for free.braquio wrote:Only one question,with cascade shouldn't let you cast morphed cause is an alternative cost and cascade lets you play for free so alternative cost are not allowed, isn't it?5. Compliant with CASCADE ability - tested with Bloodbraid Elf
And the same for omniscience.
What do you think of this version could be better than the other one??? Now should not see any card exchange or other lag...
- NeoAnderson
- Posts: 914
- Joined: 10 Sep 2013, 07:49
- Has thanked: 18 times
- Been thanked: 139 times
Re: Morph tests
by NeoAnderson » 14 Sep 2014, 18:40
MAJOR UPDATE :
Right now i made it compliant with the follow situations :
1. Compliant with cards like Nightveil Specter that grants the ability to play card not from hand.
2. Compliant with cards like Omniscience that grants the ability to cast for free.
3. Compliant with Primeval Bounty
4. Compliant with Iona, Shield of Emeria
5. Compliant with CASCADE ability - tested with Bloodbraid Elf
6. Partial Compliant with the follow cards who grant flash ability:
8. Allow to check Morph ability
9. Allow to check Facedown status
10. Allow other cards ability to access hidden card info.
11. Allow controller to view hidden card info.
12. Compliant with Eidolon of Rhetoric and Angelic Arbiter
13. Compliant with Ethersworn Canonist
14. Compliant with Grid Monitor and Steel Golem
15. Dinamic Facedown cost mostly compliant with cards :
Know issues :
1. If there is an effect like Ovinize in play on cards of points (6,13,15) above, facedown is still affected by source effect as that card hasn't lose the abilities.
Riiak ObjectDC Functions
Riiak Characteristics Functions
Right now i made it compliant with the follow situations :
1. Compliant with cards like Nightveil Specter that grants the ability to play card not from hand.
2. Compliant with cards like Omniscience that grants the ability to cast for free.
3. Compliant with Primeval Bounty
4. Compliant with Iona, Shield of Emeria
5. Compliant with CASCADE ability - tested with Bloodbraid Elf
6. Partial Compliant with the follow cards who grant flash ability:
- Teferi, Mage of Zhalfir
Leyline of Anticipation
Prophet of Kruphix
Vedalken Orrery
Aluren
Vernal Equinox
8. Allow to check Morph ability
9. Allow to check Facedown status
10. Allow other cards ability to access hidden card info.
11. Allow controller to view hidden card info.
12. Compliant with Eidolon of Rhetoric and Angelic Arbiter
13. Compliant with Ethersworn Canonist
14. Compliant with Grid Monitor and Steel Golem
15. Dinamic Facedown cost mostly compliant with cards :
- Sphere of Resistance
Lodestone Golem
Helm of Awakening
Animar, Soul of Elements
Rakdos, Lord of Riots
Planar Gate
Heartless Summoning
Dream Chisel
Stone Calendar
Centaur Omenreader
Feroz's Ban
Grand Arbiter Augustin IV
Know issues :
1. If there is an effect like Ovinize in play on cards of points (6,13,15) above, facedown is still affected by source effect as that card hasn't lose the abilities.
- Lumithread Field - MORPH TEST NEO - VER.OMEGA-1B | Open
- Code: Select all
<?xml version="1.0"?>
<CARD_V2 ExportVersion="1">
<FILENAME text="NEO_MORPH_PACK_002_LUMITHREAD_FIELD_599126186" />
<CARDNAME text="LUMITHREAD_FIELD" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Lumithread Field]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Champ de lumifilaments]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Campo de hilos de luz]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Feld aus Leuchtfäden]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Campo Lumitrama]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[光糸の場]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Lumithread Field]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Поле Светящихся Нитей]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Campo Fibroluminal]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[明缕力场]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[Lumithread Field]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="599126186" />
<ARTID value="599126186" />
<ARTIST name="Scott Altmann" />
<CASTING_COST cost="{1}{W}" />
<FLAVOURTEXT>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Having conquered the Bastion of Suns, the Ota took its light for their own.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Après avoir conquis le Bastion des soleils, les Otas s’emparèrent de sa lumière.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Tras conquistar el Bastión de los Soles, los Ota tomaron su luz para sí mismos.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Nachdem sie die Bastion der Sonnen erobert hatten, verwendeten die Ota deren Licht für sich.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Dopo aver conquistato il Bastione dei Soli, gli Ota si impossessarono della sua luce.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[“太陽の拠点”を征服したオタ族はその光を自分自身のためのものとした。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Having conquered the Bastion of Suns, the Ota took its light for their own.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Покорив Бастион Солнц, оты завладели его светом.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Após conquistar o Bastião dos Sóis, os Ota se apoderaram de sua luz.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[征服太阳堡垒后,欧塔族将此光据为己有。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[Having conquered the Bastion of Suns, the Ota took its light for their own.]]></LOCALISED_TEXT>
</FLAVOURTEXT>
<TYPE metaname="Enchantment" />
<EXPANSION value="FUT" />
<RARITY metaname="C" />
<STATIC_ABILITY>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Creatures you control get +0/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Les créatures que vous contrôlez gagnent +0/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Las criaturas que controlas obtienen +0/+1. Metamorfosis {1}{W}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Alle Kreaturen, die du kontrollierst, erhalten +0/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Le creature che controlli prendono +0/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたがコントロールするクリーチャーは+0/+1の修整を受ける。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Creatures you control get +0/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Существа под вашим контролем получают +0/+1.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Criaturas que você controla recebem +0/+1,]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[由你操控的生物得+0/+1。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[Creatures you control get +0/+1.]]></LOCALISED_TEXT>
<FILTER filter_id="0">
local filter = ClearFilter()
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( 0 )
characteristics:Toughness_Add( 1 )
end
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<TRIGGERED_ABILITY replacement_query="1" active_zone="ZONE_ANY">
<TRIGGER value="BEGINNING_OF_STEP">
if MTG():GetStep() == STEP_UPKEEP then
local Chest_Id = Object():GetRef()
local chest = MTG():DuelDataChest():Get_Chest(Chest_Id)
if chest ~= nil then
return false
else
MTG():CreateDelayedTrigger(8, nil)
chest = MTG():DuelDataChest():Make_Chest(Chest_Id)
return true
end
end
return false
</TRIGGER>
<RESOLUTION_TIME_ACTION>
MTG():PutTokensOntoBattlefield( "NEO_TEST_TOKEN_001_MORPH_2_2_570092001", 1, EffectController(), EffectDC():Make_Chest(0) )
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local chest = EffectDC():Get_Chest(0)
if chest ~= nil then
local token = chest:Get_NthCardPtr(0)
if token ~= nil then
local Chest_Id = Object():GetRef()
token:StoreCopiableValues(MTG():DuelDataChest():Make_Chest(Chest_Id))
end
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<STATIC_ABILITY active_zone="ZONE_ANY">
<CONTINUOUS_ACTION layer="1">
if Object() ~= nil then
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER, 0 )
if RSN_Characteristics_GetInt( Object(), NEO_CHARACTERISTIC_FACEDOWN ) == 1 then
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH, 0 )
else
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH, 1 )
end
end
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<UTILITY_ABILITY qualifier="Alternate" active_zone="ZONE_HAND" >
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Morph {1}{W}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Mue {1}{W}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Metamorfosis {1}{W}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Morph {1}{W}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Metamorfosi {1}{W}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Morph {1}{W}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Morph {1}{W}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Morph {1}{W}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Metamorfose {1}{W}]]></LOCALISED_TEXT>
<ABILITY_TEXT tag="MODE_CAST_MORPH_FACE_DOWN_PAY_3" />
<COST type="Generic">
<PREREQUISITE>
if Object():GetZone() ~= ZONE_HAND and Object():GetErstwhileZone() ~= 5 then
local UpdatedCost = UpdateFaceDownCastingCost(EffectController())
local FaceDownStringCost = "{"..UpdatedCost.."}"
if EffectController():CanCastSpellForFree(Object()) and EffectController():CanPayManaCost(FaceDownStringCost) then
return true
else
return false
end
end
</PREREQUISITE>
<PLAY_TIME_ACTION>
local UpdatedCost = UpdateFaceDownCastingCost(EffectController())
local FaceDownStringCost = "{"..UpdatedCost.."}"
EffectController():PayManaCost(FaceDownStringCost)
MTG():CreateDelayedTrigger(7, nil)
local Chest_Id = Object():GetRef()
if MTG():DuelDataChest():Get_Chest(Chest_Id) == nil then
MTG():CreateDelayedTrigger(8, nil)
end
local delayDC = EffectDC():Make_Chest(0)
delayDC:Set_Int(0, Chest_Id)
MTG():CreateDelayedTrigger(9, delayDC)
local characteristics = Object():GetCurrentCharacteristics()
local card_type = characteristics:CardType_GetWritable()
local sub_type = characteristics:SubType_GetWritable()
sub_type:ClearAllOfType( CARD_TYPE_ENCHANTMENT )
card_type:Clear()
card_type:Add( CARD_TYPE_CREATURE )
Object():GetCurrentCharacteristics():Colour_Get():Clear()
</PLAY_TIME_ACTION>
</COST>
</UTILITY_ABILITY>
<TRIGGERED_ABILITY resource_id="7" replacement_query="1" priority="20">
<TRIGGER value="STATE_BASED_EFFECTS" pre_trigger="1" />
<CLEANUP fire_once="1" />
<PLAY_TIME_ACTION>
if Object() ~= nil then
local Chest_Id = Object():GetRef()
if MTG():DuelDataChest():Get_Chest(Chest_Id) == nil then
MTG():PutTokensOntoBattlefield( "NEO_TEST_TOKEN_001_MORPH_2_2_570092001", 1, EffectController(), EffectDC():Make_Chest(0) )
else
Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))
end
end
</PLAY_TIME_ACTION>
<PLAY_TIME_ACTION>
if Object() ~= nil then
local Chest_Id = Object():GetRef()
if MTG():DuelDataChest():Get_Chest(Chest_Id) == nil then
local token_chest = EffectDC():Get_Chest(0)
if token_chest ~= nil then
local token = token_chest:Get_NthCardPtr(0)
if token ~= nil then
token:StoreCopiableValues(MTG():DuelDataChest():Make_Chest(Chest_Id))
Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))
end
end
end
end
</PLAY_TIME_ACTION>
<CONTINUOUS_ACTION layer="1">
if Object() ~= nil then
local Chest_Id = Object():GetRef()
if MTG():DuelDataChest():Get_Chest(Chest_Id) ~= nil then
Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 1 )
Object():GetCurrentCharacteristics():GrantAbility(10)
Object():GetCurrentCharacteristics():GrantAbility(12)
Object():GetCurrentCharacteristics():GrantAbility(13)
end
end
</CONTINUOUS_ACTION>
<DURATION>
return RSN_Characteristics_GetInt( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER ) == 1
</DURATION>
</TRIGGERED_ABILITY>
<UTILITY_ABILITY resource_id="40">
<ABILITY_TEXT tag="MODE_CAST_MORPH_FACE_DOWN_PAY_3" />
<COST type="Generic">
<PREREQUISITE>
local UpdatedCost = UpdateFaceDownCastingCost(EffectController())
local FaceDownStringCost = "{"..UpdatedCost.."}"
return EffectController():CanPayManaCost(FaceDownStringCost)
</PREREQUISITE>
<PLAY_TIME_ACTION>
local UpdatedCost = UpdateFaceDownCastingCost(EffectController())
local FaceDownStringCost = "{"..UpdatedCost.."}"
EffectController():PayManaCost(FaceDownStringCost)
</PLAY_TIME_ACTION>
</COST>
</UTILITY_ABILITY>
<ACTIVATED_ABILITY forced_skip="1" active_zone="ZONE_HAND" >
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[You may Cast this face down as a 2/2 creature for {3}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Vous pouvez jouer cette carte face cachée comme une créature 2/2 pour {3}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Puedes jugar esta carta boca abajo como una criatura 2/2 pagando {3}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Du kannst diese Karte verdeckt für {3} als eine 2/2 Kreatur spielen.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Gioca questa carta a faccia in giù come una creatura 2/2 pagando {3}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[You may Cast this face down as a 2/2 creature for {3}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[You may Cast this face down as a 2/2 creature for {3}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[You may Cast this face down as a 2/2 creature for {3}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Você pode baixar este card com a face voltada para baixo como uma criatura 2/2 por {3}]]></LOCALISED_TEXT>
<COST mana_cost="{0}" type="Mana" />
<AVAILABILITY>
local UpdatedCost = FakeFaceDownCastingCost(EffectController())
local FaceDownStringCost = "{"..UpdatedCost.."}"
return EffectController():CanPayManaCost(FaceDownStringCost)
</AVAILABILITY>
<RESOLUTION_TIME_ACTION>
if Object() ~= nil then
local Chest_Id = Object():GetRef()
local delayDC = EffectDC():Make_Chest(1)
delayDC:Set_Int(0, Chest_Id)
MTG():CreateDelayedTrigger(9, delayDC)
if MTG():DuelDataChest():Get_Chest(Chest_Id) == nil then
MTG():CreateDelayedTrigger(8, nil)
MTG():PutTokensOntoBattlefield( "NEO_TEST_TOKEN_001_MORPH_2_2_570092001", 1, EffectController(), EffectDC():Make_Chest(0) )
else
Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))
end
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
if Object() ~= nil then
local Chest_Id = Object():GetRef()
if MTG():DuelDataChest():Get_Chest(Chest_Id) == nil then
local token_chest = EffectDC():Get_Chest(0)
if token_chest ~= nil then
local token = token_chest:Get_NthCardPtr(0)
if token ~= nil then
token:StoreCopiableValues(MTG():DuelDataChest():Make_Chest(Chest_Id))
Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))
end
end
end
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
if Object() ~= nil then
MTG():CreateDelayedTrigger(17, nil)
end
</RESOLUTION_TIME_ACTION>
<CONTINUOUS_ACTION layer="1">
if Object() ~= nil then
local Chest_Id = Object():GetRef()
if MTG():DuelDataChest():Get_Chest(Chest_Id) ~= nil then
Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 1 )
Object():GetCurrentCharacteristics():GrantAbility(10)
Object():GetCurrentCharacteristics():GrantAbility(12)
Object():GetCurrentCharacteristics():GrantAbility(13)
end
end
</CONTINUOUS_ACTION>
<DURATION>
return RSN_Characteristics_GetInt( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER ) == 1
</DURATION>
</ACTIVATED_ABILITY>
<TRIGGERED_ABILITY resource_id="17" replacement_query="1">
<TRIGGER value="STATE_BASED_EFFECTS" pre_trigger="1" />
<CLEANUP fire_once="1" />
<RESOLUTION_TIME_ACTION>
MTG():ReevaluateContinuousEffects()
</RESOLUTION_TIME_ACTION>
<PLAY_TIME_ACTION>
local UpdatedCost = FakeFaceDownCastingCost(EffectController())
local FaceDownStringCost = "{"..UpdatedCost.."}"
local value = 0
if EffectSource():CanBePlayed(EffectController()) == true or EffectController():CanCastSpellUsingResourceCost( EffectSource(), 40 ) == true then
if EffectController():MyTurn() == true then
if MTG():GetStep() == STEP_MAIN_1 or MTG():GetStep() == STEP_MAIN_2 or CheckThisCreatureForCharacteristic(CHARACTERISTIC_FLASH, EffectSource()) == 1 or CheckCardGrantFlashControlledBy(EffectController()) == 1 or CheckCardGrantFlashControlledByOthers(EffectController()) == 1 then
value = 1
end
elseif CheckThisCreatureForCharacteristic(CHARACTERISTIC_FLASH, EffectSource()) == 1 or CheckCardGrantFlashControlledBy(EffectController()) == 1 or CheckCardGrantFlashControlledByOthers(EffectController()) == 1 then
value = 1
end
end
local EtherswornCanonist = FakeEtherswornCanonistCheck(EffectController())
local OvverideCreatureCast = CheckCardOverrideCreatureCastControlledBy(EffectController())
if (CheckCardOverrideCreatureCastControlledByAny() == 1) or (EtherswornCanonist == 1) or (OvverideCreatureCast == 1) then
value = 0
end
EffectDC():Set_Int(8, value)
if value == 1 then
EffectController():BeginNewMultipleChoice()
EffectController():AddMultipleChoiceAnswer( "MODE_CAST_MORPH_FACE_DOWN_PAY_3", EffectController():CanPayManaCost(FaceDownStringCost))
EffectController():AddMultipleChoiceAnswer( "CARD_QUERY__NEO_OPTION_DO_NOTHING" )
EffectController():AskMultipleChoiceQuestion( "MODE_MORPH_INFO_CARD" )
end
</PLAY_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local valueA = EffectDC():Get_Int(8)
if valueA == 1 then
local value = EffectController():GetMultipleChoiceResult()
if value == 0 then
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 1 )
if EffectController():CanCastSpellUsingResourceCost( EffectSource(), 40 ) then
EffectController():CastSpellUsingResourceCost( EffectSource(), 40 )
end
else
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER, 1 )
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 0 )
end
else
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER, 1 )
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 0 )
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY resource_id="8" replacement_effect="1" active_zone="ZONE_ANY" priority="-1">
<TRIGGER value="ZONECHANGE_CONSIDERED" to_zone="ZONE_BATTLEFIELD" from_zone="ZONE_ANY" pre_trigger="1">
if TriggerObject() ~= nil and TriggerObject():GetCardName() == "" then
if TriggerObject():GetErstwhileZone() == 0 then
MTG():OverrideEvent()
return true
end
end
return false
</TRIGGER>
<CLEANUP fire_once="1" />
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY resource_id="9" replacement_effect="1" active_zone="ZONE_ANY" priority="-1">
<TRIGGER value="ZONECHANGE_END" simple_qualifier="self" to_zone="ZONE_BATTLEFIELD" >
if TriggerObject() ~= nil and RSN_Characteristics_GetInt( Object(), NEO_CHARACTERISTIC_FACEDOWN ) == 1 then
local oDC = RSN_GetObjectDC( Object(), true )
local value = EffectDC():Get_Int(0)
oDC:Int_Set( 585, value )
return true
end
return false
</TRIGGER>
<CLEANUP fire_once="1" />
</TRIGGERED_ABILITY>
<ACTIVATED_ABILITY resource_id="10" forced_skip="1" >
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Morph (|View hidden info of the card|)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Mue (|Voir les informations cachées de la carte|)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Metamorfosis -(|Ver la informacion oculta de la carta|)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Morph (|Ausgeblendete Informationen der Karte zeigen|)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Metamorfosi (|Visualizza info nascoste della carta|)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Morph (カードの隠された情報を見る)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Morph (카드의 숨겨진 정보를보기)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Morph (|Посмотреть скрытую информацию карты|)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Metamorfose (|Ver informação oculta do cartão|)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[Morph (|View hidden info of the card|)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[Morph (|View hidden info of the card|)]]></LOCALISED_TEXT>
<COST mana_cost="{0}" type="Mana" />
<PLAY_TIME_ACTION>
local oDC = RSN_GetObjectDC( Object(), false )
local value = oDC:Int_Get(585)
if value < 0 then
value = (-value)
end
local QueryString = "CARD_QUERY_MORPH_"..value
EffectController():BeginNewMultipleChoice()
EffectController():AddMultipleChoiceAnswer( QueryString, EffectController():CanPayManaCost("{1}{W}") )
EffectController():AddMultipleChoiceAnswer( "CARD_QUERY__NEO_OPTION_DO_NOTHING" )
EffectController():AskMultipleChoiceQuestion( "MODE_MORPH_INFO_CARD", Object() )
</PLAY_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local value = EffectController():GetMultipleChoiceResult()
if value == 0 then
EffectController():PayManaCost("{1}{W}")
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER, 1 )
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 0 )
MTG():FireTrigger( TRIGGER_TURNED_FACE_UP, Object() )
end
</RESOLUTION_TIME_ACTION>
<AI_AVAILABILITY type="in_response" />
<AI_AVAILABILITY window_step="begin_combat" window_turn="their_turn" type="window" />
<AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
<AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
<AI_AVAILABILITY window_step="main_2" window_turn="my_turn" type="window" />
<AI_AVAILABILITY window_step="declare_blockers" type="window" />
<AI_AVAILABILITY window_step="end_of_turn" type="window" />
</ACTIVATED_ABILITY>
<TRIGGERED_ABILITY resource_id="12" replacement_effect="1">
<TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="self" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
return true
</TRIGGER>
<RESOLUTION_TIME_ACTION>
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER, 1 )
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 0 )
MTG():ReevaluateContinuousEffects()
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY resource_id="13" replacement_effect="1" active_zone="ZONE_STACK">
<TRIGGER value="SPELL_BEING_COUNTERED" simple_qualifier="self" pre_trigger="1" />
<RESOLUTION_TIME_ACTION>
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER, 1 )
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 0 )
MTG():ReevaluateContinuousEffects()
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TOKEN_REGISTRATION reservation="1" type="NEO_TEST_TOKEN_001_MORPH_2_2_570092001" />
<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" />
</CARD_V2>
Riiak ObjectDC Functions
Riiak Characteristics Functions
- Attachments
-
- Lumithread Field - Morph WAD and source Test Ver.Omega 1b.rar
- Lumithread Field - Morph WAD and source Test Ver.Omega 1b
- (428.72 KiB) Downloaded 310 times
Last edited by NeoAnderson on 14 Sep 2014, 21:15, edited 1 time in total.
- NeoAnderson
- Posts: 914
- Joined: 10 Sep 2013, 07:49
- Has thanked: 18 times
- Been thanked: 139 times
Re: Morph tests
by Kithkin » 14 Sep 2014, 20:30
I tested the card, but something is wrong.
With 3 lands on the field I selected the ability on Lumithread. Then the card changed into the token and went back to my hand. I cast the token, but the land did not tap. The token does not give any information about the morph card and I am not able to pay the morph costs.
Is there anything else needed besides the wad?
With 3 lands on the field I selected the ability on Lumithread. Then the card changed into the token and went back to my hand. I cast the token, but the land did not tap. The token does not give any information about the morph card and I am not able to pay the morph costs.
Is there anything else needed besides the wad?
-
Kithkin - Posts: 456
- Joined: 21 Feb 2014, 07:12
- Location: Cologne, GERMANY
- Has thanked: 11 times
- Been thanked: 56 times
Re: Morph tests
by NeoAnderson » 14 Sep 2014, 20:51
The wad should include any needed file. Anyway i haven't tested it, so if you want you can use the source files. I will test the wad later, i would like to know if you are using manual mana or not. Which lands are using? The info text should appears anyway...Kithkin wrote:I tested the card, but something is wrong.
With 3 lands on the field I selected the ability on Lumithread. Then the card changed into the token and went back to my hand. I cast the token, but the land did not tap. The token does not give any information about the morph card and I am not able to pay the morph costs.
Is there anything else needed besides the wad?
- NeoAnderson
- Posts: 914
- Joined: 10 Sep 2013, 07:49
- Has thanked: 18 times
- Been thanked: 139 times
Re: Morph tests
by NeoAnderson » 14 Sep 2014, 21:17
So the problem is that you haven't Riiak functions installed.Kithkin wrote:Characteristics.wad was missing.
I have updated the post with the links.
Riiak ObjectDC Functions
Riiak Characteristics Functions
- NeoAnderson
- Posts: 914
- Joined: 10 Sep 2013, 07:49
- Has thanked: 18 times
- Been thanked: 139 times
Re: Morph tests
by NeoAnderson » 15 Sep 2014, 13:55
MAJOR UPDATE :
Small test pack cards included :
NEW VERSION RELEASED :MORPH SMALL PACK OMEGA VER 3.1
- Compliant with the follow interactions : | Open
- 1. Compliant with cards like Nightveil Specter that grants the ability to play card not from hand.
2. Compliant with cards like Omniscience that grants the ability to cast for free.
3. Compliant with Primeval Bounty
4. Compliant with Iona, Shield of Emeria
5. Compliant with CASCADE ability - tested with Bloodbraid Elf
6. Partial Compliant with the follow cards who grant flash ability:- Teferi, Mage of Zhalfir
Leyline of Anticipation
Prophet of Kruphix
Vedalken Orrery
Aluren
Vernal Equinox
8. Allow to check Morph ability
9. Allow to check Facedown status
10. Allow other cards ability to access hidden card info.
11. Allow controller to view hidden card info.
12. Compliant with Eidolon of Rhetoric and Angelic Arbiter
13. Compliant with Ethersworn Canonist
14. Compliant with Grid Monitor and Steel Golem
15. Dinamic Facedown cost mostly compliant with cards :- Sphere of Resistance
Lodestone Golem
Helm of Awakening
Animar, Soul of Elements
Rakdos, Lord of Riots
Planar Gate
Heartless Summoning
Dream Chisel
Stone Calendar
Centaur Omenreader
Feroz's Ban
Grand Arbiter Augustin IV
17. Compliant with Copy effects like Clone.
18. Added new turn face up trigger function.
UPDATE : Omega Ver 3.0
19. Fixed facedown abilities regain and implemented external facedown function (compliant with Backslide).
Know issues :
1. If there is an effect like Ovinize in play on cards of points (6,13,14,15,16) above, is still affected by source effect as that card hasn't lose the abilities.
Small test pack cards included :
NEW VERSION RELEASED :MORPH SMALL PACK OMEGA VER 3.1
Last edited by NeoAnderson on 16 Sep 2014, 15:47, edited 1 time in total.
- NeoAnderson
- Posts: 914
- Joined: 10 Sep 2013, 07:49
- Has thanked: 18 times
- Been thanked: 139 times
Re: Morph tests
by braquio » 16 Sep 2014, 14:19
Im tested it and at the moment i didnt see any issue, you did it again! another difficult ability coded!
____________________________________________________________________________________________________________________________
Braquio Dotp2014 DLC
Alternative Sealed Campaigns for DotP 2014
Braquio Dotp2014 DLC
Alternative Sealed Campaigns for DotP 2014
Who is online
Users browsing this forum: No registered users and 17 guests