Re: Card Creation Request Thread
by gorem2k
Thank you! Works perfectly. and it's completely different from what I tried to do. thefiremind used a different way for his Auntie's Snitch. I think your code will be more adaptable to other Prowl cards.sumomole wrote:gorem2k wrote:I need some help. How can I verify if a "prowl" cost was paid?
so, why are you using Int_Set( -2629, 1 ) ? is there any reason for -2629? could it be, say 1234 or whatever?
also, tfm used Kinship( Object(), TriggerObject() ) for trigger return... is this an official function?
No need for a complete explanation, just a yes or no will do
I'm almost done with Knowledge Exploitation.
for some reason, it won't let me cast a Rite of Replication from opponent's library. if you have a minute or two to clean it up, here it is:
- Knowledge Exploitation | Open
- Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2>
<FILENAME text="KNOWLEDGE_EXPLOITATION_152664" />
<CARDNAME text="KNOWLEDGE_EXPLOITATION" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Knowledge Exploitation]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Exploitation de connaissance]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Explotar el conocimiento]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Ausbeutung von Wissen]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Sfruttamento della Conoscenza]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[知識の搾取]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Knowledge Exploitation]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Эксплуатация Знаний]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Exploração da Sabedoria]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="152664" />
<ARTID value="A152664" />
<ARTIST name="Darrell Riche" />
<CASTING_COST cost="{5}{U}{U}" />
<TYPE metaname="Tribal" />
<TYPE metaname="Sorcery" />
<SUB_TYPE metaname="Rogue" />
<EXPANSION value="MOR" />
<RARITY metaname="R" />
<TRIGGERED_ABILITY internal="1" filter_zone="ZONE_IN_PLAY" active_zone="ZONE_ANY">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Prowl {3}{U}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Incursion {3}{U}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Rondar {3}{U}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Beutezug {3}{U}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Predatore {3}{U}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[徘徊 {3}{U} (このターン、あなたがならず者でいずれかのプレイヤーに戦闘ダメージを与えている場合、あなたはこれをその徘徊コストでプレイしてもよい。)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Prowl {3}{U}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Мародерство {3}{U}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Espreitar {3}{U}]]></LOCALISED_TEXT>
<TRIGGER value="CREATURE_DEALS_COMBAT_DAMAGE_TO_PLAYER" simple_qualifier="objectyoucontrol">
return TriggerObject() ~= nil and Kinship( Object(), TriggerObject() )
</TRIGGER>
<CONTINUOUS_ACTION layer="8">
if Object():GetZone() == ZONE_HAND or Object():GetZone() == ZONE_LIBRARY then
Object():DecreaseCost(2)
Object():DecreaseColouredCost( COLOUR_BLUE, 1 )
end
</CONTINUOUS_ACTION>
<DURATION simple_duration="UntilEOT" />
</TRIGGERED_ABILITY>
<SPELL_ABILITY>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Search target opponent’s library for an instant or sorcery card. You may cast that card without paying its mana cost. Then that player shuffles his or her library.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Cherchez dans la bibliothèque de l’adversaire ciblé une carte d’éphémère ou de rituel. Vous pouvez jouer cette carte sans payer son coût de mana. Ce joueur mélange ensuite sa bibliothèque.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Busca en la biblioteca del oponente objetivo una carta de instantáneo o conjuro. Puedes jugar esa carta sin pagar su coste de maná. Luego ese jugador baraja su biblioteca.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Durchsuche die Bibliothek eines Gegners deiner Wahl nach einer Spontanzauber- oder Hexereikarte. Du kannst diese Karte spielen, ohne ihre Manakosten zu bezahlen. Dieser Spieler mischt dann seine Bibliothek.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Passa in rassegna il grimorio di un avversario bersaglio per una carta istantaneo o stregoneria. Puoi lanciare quella carta senza pagare il suo costo di mana. Poi quel giocatore rimescola il suo grimorio.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[対戦相手1人を対象とし、そのプレイヤーのライブラリーからインスタント・カード1枚かソーサリー・カード1枚を探す。 あなたはそのカードをそのマナ・コストを支払うことなくプレイしてもよい。 その後、そのプレイヤーは自分のライブラリーを切り直す。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Search target opponent’s library for an instant or sorcery card. You may cast that card without paying its mana cost. Then that player shuffles his or her library.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Найдите карту мгновенного заклинания или волшебства в библиотеке целевого оппонента. Вы можете разыграть ту карту без уплаты её мана-стоимости. Затем тот игрок тасует свою библиотеку.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Procure no grimório do oponente alvo por um card de mágica instantânea ou feitiço. Você pode jogar aquele card sem pagar seu custo de mana. Depois, aquele jogador embaralha seu próprio grimório.]]></LOCALISED_TEXT>
<TARGET_DEFINITION id="0">
local filter = Object():GetFilter()
filter:Clear()
filter:SetFilterType( FILTER_TYPE_PLAYERS + FILTER_TYPE_OPPONENTS)
filter:SetOwner( EffectController() )
filter:SetHint( HINT_ENEMY_ONLY, EffectController() )
</TARGET_DEFINITION>
<TARGET_DETERMINATION>
return AtLeastOneTargetFromDefinition(0)
</TARGET_DETERMINATION>
<PLAY_TIME_ACTION target_choosing="1">
EffectController():ChooseTarget( 0, "CARD_QUERY_CHOOSE_PLAYER", EffectDC():Make_Targets(0) )
</PLAY_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local player = EffectDC():Get_Targets(0):Get_PlayerPtr(0)
local filter = Object():GetFilter()
if player ~= nil then
filter:Clear()
filter:SetPlayer( player )
filter:SetZone( ZONE_LIBRARY )
filter:AddCardType( CARD_TYPE_INSTANT )
filter:AddCardType( CARD_TYPE_SORCERY )
filter:SetHint( HINT_ENEMY, EffectController() )
filter:NotTargetted()
EffectController():SetTargetCount( 1 )
EffectController():ChooseTarget( NO_VALIDATION, "CARD_QUERY_CHOOSE_INSTANT_OR_SORCERY_TO_CAST", EffectDC():Make_Targets(1))
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local spell = EffectDC():Get_Targets(1):Get_CardPtr(0)
if spell ~= nil then
if spell:CanBePlayed( EffectController() ) then
local delayDC = EffectDC():Make_Chest(1)
delayDC:Set_CardPtr(0, EffectDC():Get_Targets(0):Get_CardPtr(0))
delayDC:Protect_CardPtr(0)
MTG():CreateDelayedTrigger( 1, delayDC)
spell:PlayFreeFromAnywhere( EffectController() )
end
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local player = EffectDC():Get_Targets(0):Get_PlayerPtr(0)
player:ShuffleLibrary()
</RESOLUTION_TIME_ACTION>
</SPELL_ABILITY>
<TRIGGERED_ABILITY internal="1" pre_trigger="1" resource_id="1" active_zone="ZONE_ANY">
<CLEANUP simple_cleanup="EndOfTurn" />
<TRIGGER value="ZONECHANGE_CONSIDERED" to_zone="ZONE_GRAVEYARD" from_zone="ZONE_ANY">
if (TriggerObject() == EffectDC():Get_CardPtr(0)) then
override = 1
TriggerObject():PutInGraveyard()
return true
end
return false
</TRIGGER>
</TRIGGERED_ABILITY>
</CARD_V2>
cleaned up myself using a better source code.
- card | Open
- Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2>
<FILENAME text="KNOWLEDGE_EXPLOITATION_152664" />
<CARDNAME text="KNOWLEDGE_EXPLOITATION" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Knowledge Exploitation]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Exploitation de connaissance]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Explotar el conocimiento]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Ausbeutung von Wissen]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Sfruttamento della Conoscenza]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[知識の搾取]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Knowledge Exploitation]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Эксплуатация Знаний]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Exploração da Sabedoria]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="152664" />
<ARTID value="A152664" />
<ARTIST name="Darrell Riche" />
<CASTING_COST cost="{5}{U}{U}" />
<TYPE metaname="Tribal" />
<TYPE metaname="Sorcery" />
<SUB_TYPE metaname="Rogue" />
<EXPANSION value="MOR" />
<RARITY metaname="R" />
<TRIGGERED_ABILITY internal="1" filter_zone="ZONE_IN_PLAY" active_zone="ZONE_ANY">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Prowl {3}{U}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Incursion {3}{U}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Rondar {3}{U}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Beutezug {3}{U}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Predatore {3}{U}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[徘徊 {3}{U} (このターン、あなたがならず者でいずれかのプレイヤーに戦闘ダメージを与えている場合、あなたはこれをその徘徊コストでプレイしてもよい。)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Prowl {3}{U}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Мародерство {3}{U}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Espreitar {3}{U}]]></LOCALISED_TEXT>
<TRIGGER value="CREATURE_DEALS_COMBAT_DAMAGE_TO_PLAYER" simple_qualifier="objectyoucontrol">
return TriggerObject() ~= nil and Kinship( Object(), TriggerObject() )
</TRIGGER>
<CONTINUOUS_ACTION layer="8">
if Object():GetZone() == ZONE_HAND or Object():GetZone() == ZONE_LIBRARY then
Object():DecreaseCost(2)
Object():DecreaseColouredCost( COLOUR_BLUE, 1 )
end
</CONTINUOUS_ACTION>
<DURATION simple_duration="UntilEOT" />
</TRIGGERED_ABILITY>
<SPELL_ABILITY>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Search target opponent’s library for an instant or sorcery card. You may cast that card without paying its mana cost. Then that player shuffles his or her library.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Cherchez dans la bibliothèque de l’adversaire ciblé une carte d’éphémère ou de rituel. Vous pouvez jouer cette carte sans payer son coût de mana. Ce joueur mélange ensuite sa bibliothèque.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Busca en la biblioteca del oponente objetivo una carta de instantáneo o conjuro. Puedes jugar esa carta sin pagar su coste de maná. Luego ese jugador baraja su biblioteca.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Durchsuche die Bibliothek eines Gegners deiner Wahl nach einer Spontanzauber- oder Hexereikarte. Du kannst diese Karte spielen, ohne ihre Manakosten zu bezahlen. Dieser Spieler mischt dann seine Bibliothek.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Passa in rassegna il grimorio di un avversario bersaglio per una carta istantaneo o stregoneria. Puoi lanciare quella carta senza pagare il suo costo di mana. Poi quel giocatore rimescola il suo grimorio.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[対戦相手1人を対象とし、そのプレイヤーのライブラリーからインスタント・カード1枚かソーサリー・カード1枚を探す。 あなたはそのカードをそのマナ・コストを支払うことなくプレイしてもよい。 その後、そのプレイヤーは自分のライブラリーを切り直す。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Search target opponent’s library for an instant or sorcery card. You may cast that card without paying its mana cost. Then that player shuffles his or her library.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Найдите карту мгновенного заклинания или волшебства в библиотеке целевого оппонента. Вы можете разыграть ту карту без уплаты её мана-стоимости. Затем тот игрок тасует свою библиотеку.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Procure no grimório do oponente alvo por um card de mágica instantânea ou feitiço. Você pode jogar aquele card sem pagar seu custo de mana. Depois, aquele jogador embaralha seu próprio grimório.]]></LOCALISED_TEXT>
<TARGET_DEFINITION id="0">
local filter = Object():GetFilter()
filter:Clear()
filter:AddCardType( CARD_TYPE_INSTANT )
filter:AddCardType( CARD_TYPE_SORCERY )
filter:SetZone( ZONE_LIBRARY )
filter:SetHint( HINT_ENEMY, EffectController() )
filter:SetControllersTeam( EffectController():GetTeam() )
filter:AddExtra( FILTER_EXTRA_FLIP_TEAM )
</TARGET_DEFINITION>
<TARGET_DETERMINATION>
return AtLeastOneTargetFromDefinition(0)
</TARGET_DETERMINATION>
<PLAY_TIME_ACTION>
local player = EffectController()
player:SetTargetCount( 1 )
player:SetTargetPrompt( 0, "CARD_QUERY_CHOOSE_PLAYER" )
player:SetTargetPrompt( 1, "CARD_QUERY_CHOOSE_INSTANT_OR_SORCERY_TO_CAST" )
player:ChooseTargets( 0, EffectDC():Make_Targets(0) )
</PLAY_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local spell = EffectDC():Get_Targets(0):Get_CardPtr(0)
if ( spell ~= nil ) then
spell:PlayFreeFromAnywhere( EffectController() )
end
</RESOLUTION_TIME_ACTION>
</SPELL_ABILITY>
</CARD_V2>
EDIT3: nevermind. I misread the rules.
You cast the instant or sorcery card as part of the resolution of this spell. It's cast from your opponent's library, not your hand. You choose modes, pay additional costs, choose targets, etc. for the spell as normal when casting it. Any X in the mana cost will be 0. Alternative costs can't be paid.
I sound so foolish



