Board index Programs with AI or Rules Enforcement Magic: The Gathering - Duels of the Planeswalkers Programming Talk
General DotP 2014 Coding Questions
Moderator: CCGHQ Admins
Re: General DotP 2014 Coding Questions
by thefiremind » 04 Dec 2013, 23:34
If it works for you, then I have only 1 explanation: your friend didn't understand the card. I wouldn't be surprised, there are many newbie players who don't know the difference between casting a spell and putting a permanent onto the battlefield, so maybe he was expecting the trigger to activate upon putting an Elf onto the battlefield with Elvish Piper or something similar.GrovyleXShinyCelebi wrote:One of my mates has had trouble with this card working (apparently the trigger doesn't activate), but it seems to work fine for me.
< 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: General DotP 2014 Coding Questions
by GrovyleXShinyCelebi » 04 Dec 2013, 23:42
There isn't anything in the deck I put it in that just puts it on the battlefield (no Elvish Piper or anything like that). He's hardcasting it, and it still doesn't seem to work. Is there anything in the code that might imply a problem?
Also, does anyone have high quality art for Thassa's Bounty? MagicVille doesn't have any, nor does MediaFire, and a Google search turns up a very small scan of the card.
Also, does anyone have high quality art for Thassa's Bounty? MagicVille doesn't have any, nor does MediaFire, and a Google search turns up a very small scan of the card.
(in Duels 2014)
Duels 2012: viewtopic.php?f=109&t=12152
Duels 2013: viewtopic.php?f=109&t=12481&p=137458#p137458
Duels 2012: viewtopic.php?f=109&t=12152
Duels 2013: viewtopic.php?f=109&t=12481&p=137458#p137458
-
GrovyleXShinyCelebi - Posts: 294
- Joined: 12 Jun 2013, 18:23
- Has thanked: 14 times
- Been thanked: 37 times
Re: General DotP 2014 Coding Questions
by thefiremind » 05 Dec 2013, 00:11
I can't see anything wrong, and you said that it works for you, which wouldn't be possible if something were wrong. You can go on with the usual troubleshooting: could there be an old, non-working version that gets read in place of this one?GrovyleXShinyCelebi wrote:There isn't anything in the deck I put it in that just puts it on the battlefield (no Elvish Piper or anything like that). He's hardcasting it, and it still doesn't seem to work. Is there anything in the code that might imply a problem?
Someone has it for sure: Ryan Yee himself. His official site doesn't have it, though, so I guess it hasn't been shared yet.GrovyleXShinyCelebi wrote:Also, does anyone have high quality art for Thassa's Bounty? MagicVille doesn't have any, nor does MediaFire, and a Google search turns up a very small scan of the card.
< 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: General DotP 2014 Coding Questions
by GrovyleXShinyCelebi » 05 Dec 2013, 23:28
Another question: does DisplayMessage work in a .LOL function file? 'Cause I can't seem to get it to work in there.
(in Duels 2014)
Duels 2012: viewtopic.php?f=109&t=12152
Duels 2013: viewtopic.php?f=109&t=12481&p=137458#p137458
Duels 2012: viewtopic.php?f=109&t=12152
Duels 2013: viewtopic.php?f=109&t=12481&p=137458#p137458
-
GrovyleXShinyCelebi - Posts: 294
- Joined: 12 Jun 2013, 18:23
- Has thanked: 14 times
- Been thanked: 37 times
Re: General DotP 2014 Coding Questions
by thefiremind » 05 Dec 2013, 23:55
There shouldn't be any difference at all in calling a function from a LOL file or directly from the card's code. Are you sure there's nothing else wrong?GrovyleXShinyCelebi wrote:Another question: does DisplayMessage work in a .LOL function file? 'Cause I can't seem to get it to work in there.
< 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: General DotP 2014 Coding Questions
by GrovyleXShinyCelebi » 06 Dec 2013, 23:04
Well, here's my original function for clash:
Card:
- Code: Select all
GXSC_Clash = function(player, jugador)
local n = MTG():GetActionRepCount()
if player ~= nil and jugador ~= nil then
if n == 0 then
local card = player:Library_GetTop()
local tarjeta = jugador:Library_GetTop()
if card ~= nil and tarjeta ~= nil then
card:Reveal()
tarjeta:Reveal()
player:BeginNewMultipleChoice()
player:AddMultipleChoiceAnswer( "MODE_CARD_TOP" )
player:AddMultipleChoiceAnswer( "MODE_CARD_BOTTOM" )
player:AskMultipleChoiceQuestion( "MODE_CHOOSE_ONE", card )
EffectDC():Set_CardPtr(15, card)
EffectDC():Protect_CardPtr(15)
end
return true
elseif n == 1 then
EffectDC():Set_Int(16, player:GetMultipleChoiceResult() )
return true
elseif n == 2 then
local tarjeta = jugador:Library_GetTop()
if tarjeta ~= nil then
jugador:BeginNewMultipleChoice()
jugador:AddMultipleChoiceAnswer( "MODE_CARD_TOP" )
jugador:AddMultipleChoiceAnswer( "MODE_CARD_BOTTOM" )
jugador:AskMultipleChoiceQuestion( "MODE_CHOOSE_ONE", tarjeta )
EffectDC():Set_CardPtr(17, tarjeta)
EffectDC():Protect_CardPtr(17)
end
return true
elseif n == 3 then
EffectDC():Set_Int(18, jugador:GetMultipleChoiceResult() )
return true
elseif n == 4 then
local card = EffectDC():Get_CardPtr(15)
local tarjeta = EffectDC():Get_CardPtr(17)
if card ~= nil and tarjeta ~= nil then
local answer = EffectDC():Get_Int( 16 )
local contesta = EffectDC():Get_Int( 18 )
if answer == 1 then
card:PutOnBottomOfLibrary()
end
if contesta == 1 then
tarjeta:PutOnBottomOfLibrary()
end
local count = card:GetConvertedManaCost()
local contar = tarjeta:GetConvertedManaCost()
if count > contar then
player:DisplayMessage("CARD_MESSAGE_CLASH_WIN")
jugador:DisplayMessage("CARD_MESSAGE_CLASH_LOSE")
EffectDC():Set_Int(99, 1)
elseif contar > count then
jugador:DisplayMessage("CARD_MESSAGE_CLASH_WIN")
player:DisplayMessage("CARD_MESSAGE_CLASH_LOSE")
EffectDC():Set_Int(99, 2)
else
player:DisplayMessage("CARD_MESSAGE_CLASH_TIE")
jugador:DisplayMessage("CARD_MESSAGE_CLASH_TIE")
EffectDC():Set_Int(99, 3)
end
end
return true
end
end
return false
end
Card:
- Code: Select all
<RESOLUTION_TIME_ACTION repeating="1">
local target = EffectDC():Get_Targets(1):Get_PlayerPtr(0)
local controller = EffectDC():Get_PlayerPtr(4)
if target ~= nil and controller ~= nil then
local n = MTG():GetActionRepCount()
local player = EffectController()
local jugador = target
if player ~= nil and jugador ~= nil then
if n == 0 then
local card = player:Library_GetTop()
local tarjeta = jugador:Library_GetTop()
if card ~= nil and tarjeta ~= nil then
player:BeginNewMultipleChoice()
player:AddMultipleChoiceAnswer( "MODE_CARD_TOP" )
player:AddMultipleChoiceAnswer( "MODE_CARD_BOTTOM" )
player:AskMultipleChoiceQuestion( "MODE_CHOOSE_ONE", card )
EffectDC():Set_CardPtr(15, card)
EffectDC():Protect_CardPtr(15)
end
return true
elseif n == 1 then
EffectDC():Set_Int(16, player:GetMultipleChoiceResult() )
return true
elseif n == 2 then
local tarjeta = jugador:Library_GetTop()
if tarjeta ~= nil then
jugador:BeginNewMultipleChoice()
jugador:AddMultipleChoiceAnswer( "MODE_CARD_TOP" )
jugador:AddMultipleChoiceAnswer( "MODE_CARD_BOTTOM" )
jugador:AskMultipleChoiceQuestion( "MODE_CHOOSE_ONE", tarjeta )
EffectDC():Set_CardPtr(17, tarjeta)
EffectDC():Protect_CardPtr(17)
end
return true
elseif n == 3 then
EffectDC():Set_Int(18, jugador:GetMultipleChoiceResult() )
return true
elseif n == 4 then
local card = EffectDC():Get_CardPtr(15)
local tarjeta = EffectDC():Get_CardPtr(17)
if card ~= nil and tarjeta ~= nil then
local answer = EffectDC():Get_Int( 16 )
local contesta = EffectDC():Get_Int( 18 )
if answer == 1 then
card:PutOnBottomOfLibrary()
end
if contesta == 1 then
tarjeta:PutOnBottomOfLibrary()
end
card = player:Library_GetTop()
tarjeta = jugador:Library_GetTop()
if card ~= nil and tarjeta ~= nil then
card:Reveal()
tarjeta:Reveal()
local count = card:GetConvertedManaCost()
local contar = tarjeta:GetConvertedManaCost()
if count > contar then
player:DisplayMessage("CARD_MESSAGE_CLASH_WIN")
jugador:DisplayMessage("CARD_MESSAGE_CLASH_LOSE")
EffectDC():Set_Int(9, 1)
elseif contar > count then
jugador:DisplayMessage("CARD_MESSAGE_CLASH_WIN")
player:DisplayMessage("CARD_MESSAGE_CLASH_LOSE")
EffectDC():Set_Int(9, 2)
else
player:DisplayMessage("CARD_MESSAGE_CLASH_TIE")
jugador:DisplayMessage("CARD_MESSAGE_CLASH_TIE")
EffectDC():Set_Int(9, 3)
end
if EffectDC():Get_Int(9) == 1 then
controller:MillCards( 4 )
end
end
end
end
end
end
</RESOLUTION_TIME_ACTION>
Last edited by GrovyleXShinyCelebi on 06 Dec 2013, 23:59, edited 1 time in total.
(in Duels 2014)
Duels 2012: viewtopic.php?f=109&t=12152
Duels 2013: viewtopic.php?f=109&t=12481&p=137458#p137458
Duels 2012: viewtopic.php?f=109&t=12152
Duels 2013: viewtopic.php?f=109&t=12481&p=137458#p137458
-
GrovyleXShinyCelebi - Posts: 294
- Joined: 12 Jun 2013, 18:23
- Has thanked: 14 times
- Been thanked: 37 times
Re: General DotP 2014 Coding Questions
by thefiremind » 06 Dec 2013, 23:22
The 2 versions aren't identical... I haven't looked carefully, but I noticed that the LOL function calls Reveal before the query, while the card doesn't. I remember sumomole discovering that there are scenarios where calling function A before function B leads to strange results even if A and B don't seem to be related in any way. Maybe you could investigate on the differences between the 2 versions. That's all I can suggest for a code that is quite difficult to read for someone who didn't write it.
< 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: General DotP 2014 Coding Questions
by GrovyleXShinyCelebi » 06 Dec 2013, 23:36
Actually, I did copy version 1 initially into my card (which worked afterwards), the Reveal thing I only changed because of a rule I learned after making the code.
Another thing I'm wondering, is it at all possible to make lands framed like the Zendikar lands from Heart of World '2009? I mean, since we have custom lands in 2014 and all.
Another thing I'm wondering, is it at all possible to make lands framed like the Zendikar lands from Heart of World '2009? I mean, since we have custom lands in 2014 and all.
(in Duels 2014)
Duels 2012: viewtopic.php?f=109&t=12152
Duels 2013: viewtopic.php?f=109&t=12481&p=137458#p137458
Duels 2012: viewtopic.php?f=109&t=12152
Duels 2013: viewtopic.php?f=109&t=12481&p=137458#p137458
-
GrovyleXShinyCelebi - Posts: 294
- Joined: 12 Jun 2013, 18:23
- Has thanked: 14 times
- Been thanked: 37 times
Re: General DotP 2014 Coding Questions
by thefiremind » 06 Dec 2013, 23:46
That falls into the category of making custom frames, which is not possible since DotP2013.GrovyleXShinyCelebi wrote:Another thing I'm wondering, is it at all possible to make lands framed like the Zendikar lands from Heart of World '2009?
< 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: General DotP 2014 Coding Questions
by GrovyleXShinyCelebi » 10 Dec 2013, 02:29
Hey mate, I got a few very important questions for you: does TRIGGER_SPELL_RESOLVED activate immediately after one/all SPELL_ABILITY blocks activate while the object is still on the stack (in fact, when exactly does it activate)? As in, does it work the same way as ABILITY_RESOLVED but with spells?
Also, can EffectDC/LinkedDC carry an integer from a COST set to generic in a UTILITY_ABILITY block to a SPELL_ABILITY?
I have an idea to make Overload ability, but I need to confirm these work. Especially the first: it's quintessential to my plan to beat the TARGET_DEFINITION block.
Also, can EffectDC/LinkedDC carry an integer from a COST set to generic in a UTILITY_ABILITY block to a SPELL_ABILITY?
I have an idea to make Overload ability, but I need to confirm these work. Especially the first: it's quintessential to my plan to beat the TARGET_DEFINITION block.
(in Duels 2014)
Duels 2012: viewtopic.php?f=109&t=12152
Duels 2013: viewtopic.php?f=109&t=12481&p=137458#p137458
Duels 2012: viewtopic.php?f=109&t=12152
Duels 2013: viewtopic.php?f=109&t=12481&p=137458#p137458
-
GrovyleXShinyCelebi - Posts: 294
- Joined: 12 Jun 2013, 18:23
- Has thanked: 14 times
- Been thanked: 37 times
Re: General DotP 2014 Coding Questions
by thefiremind » 10 Dec 2013, 09:27
I'm not sure. Your best option is to find the answer yourself: insert this code into the trigger:GrovyleXShinyCelebi wrote:does TRIGGER_SPELL_RESOLVED activate immediately after one/all SPELL_ABILITY blocks activate while the object is still on the stack (in fact, when exactly does it activate)?
- Code: Select all
EffectController():DisplayMessage( TriggerObject():GetZone() )
I guess it should be the same, but again, I'm not sure.GrovyleXShinyCelebi wrote:As in, does it work the same way as ABILITY_RESOLVED but with spells?
EffectDC should be enough, but in case it doesn't work for some reason, LinkedDC should be 100% sure to work.GrovyleXShinyCelebi wrote:Also, can EffectDC/LinkedDC carry an integer from a COST set to generic in a UTILITY_ABILITY block to a SPELL_ABILITY?
< 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: General DotP 2014 Coding Questions
by GrovyleXShinyCelebi » 10 Dec 2013, 23:52
Alright, I managed to make an overload that functions about 99.9999999995% like the actual ability:
- Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
<FILENAME text="ELECTRICKERY_99253545" />
<CARDNAME text="ELECTRICKERY" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Electrickery]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Électromperie]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Eléctruco]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Elektrickserei]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Elettroinganno]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[電謀]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[전기 속임수]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Электротрюк]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Eletrotruque]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="99253545" />
<ARTID value="99253545" />
<ARTIST name="Greg Staples" />
<CASTING_COST cost="{R}" />
<TYPE metaname="Instant" />
<EXPANSION value="RTR" />
<RARITY metaname="C" />
<SPELL_ABILITY linked_ability_group="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Electrickery deals 1 damage to target creature you don’t control.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[L’Électromperie inflige 1 blessure à une créature ciblée que vous ne contrôlez pas.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Eléctruco hace 1 punto de daño a la criatura objetivo que no controlas.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Elektrickserei fügt einer Kreatur deiner Wahl, die du nicht kontrollierst, 1 Schadenspunkt zu.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[L’Elettroinganno infligge 1 danno a una creatura bersaglio che non controlli.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたがコントロールしていないクリーチャー1体を対象とする。電謀はそれに1点のダメージを与える。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[당신이 조종하지 않는 생물 한 개를 목표로 정한다. 전기 속임수는 그 생물에게 피해 1점을 입힌다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Электротрюк наносит 1 повреждение целевому существу не под вашим контролем.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Eletrotruque causa 1 ponto de dano à criatura alvo que você não controla.]]></LOCALISED_TEXT>
<SFX text="GLOBAL_MAGMA_PLAY" />
<FILTER filter_id="0" >
local filter = ClearFilter()
filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
filter:Add( FE_CONTROLLER, OP_NOT, EffectController() )
</FILTER>
<RESOLUTION_TIME_ACTION filter_id="0" >
local target_creature = FilteredCard()
if ( target_creature ~= nil ) then
EffectSourceLKI():DealDamageTo( 1, target_creature )
end
</RESOLUTION_TIME_ACTION>
</SPELL_ABILITY>
<TRIGGERED_ABILITY linked_ability_group="1" active_zone="ZONE_ANY">
<TRIGGER value="SPELL_RESOLVED" pre_trigger="1" simple_qualifier="self" >
if LinkedDC():Get_Int(500) == 0 then
MTG():OverrideEvent()
return true
end
</TRIGGER>
<SFX text="TARGET_LIGHTNING_PLAY" />
<TARGET_DEFINITION id="0">
local filter = ClearFilter()
filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
filter:Add( FE_CONTROLLER, OP_NOT, EffectController() )
</TARGET_DEFINITION>
<TARGET tag="CARD_QUERY_CHOOSE_DEAL_1_DAMAGE" definition="0" compartment="0" count="1" />
<RESOLUTION_TIME_ACTION>
local target_creature = EffectDC():Get_Targets(0) and EffectDC():Get_Targets(0):Get_CardPtr(0)
local target_player = EffectDC():Get_Targets(0) and EffectDC():Get_Targets(0):Get_PlayerPtr(0)
if ( target_creature ~= nil ) then
EffectSourceLKI():DealDamageTo( 1, target_creature )
elseif ( target_player ~= nil ) then
EffectSourceLKI():DealDamageTo( 1, target_player )
end
</RESOLUTION_TIME_ACTION>
<AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ENEMY_ONLY" />
</TRIGGERED_ABILITY>
<UTILITY_ABILITY qualifier="Alternate" linked_ability_group="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Overload {1}{R}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Surcharge {1}{R} » par « chaque ».)]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Sobrecarga {1}{R}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Überlast {1}{R}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Sovraccarico {1}{R}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[超過 {1}{R}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[과부하 {1}{R}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Перегрузка {1}{R}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Sobrecarga {1}{R}]]></LOCALISED_TEXT>
<COST type="Mana" mana_cost="{1}{R}" />
<COST type="generic">
<PREREQUISITE>
return true
</PREREQUISITE>
<RESOLUTION_TIME_ACTION>
LinkedDC():Set_Int(500, 1)
</RESOLUTION_TIME_ACTION>
</COST>
<ABILITY_TEXT tag="MODE_OVERLOAD" />
</UTILITY_ABILITY>
<AI_AVAILABILITY type="in_response" response_source="1" />
<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="declare_blockers" type="window" />
<AI_AVAILABILITY window_step="end_of_turn" type="window" />
<AI_AVAILABILITY type="in_response" response_source="1" response_target="1" />
<AI_BASE_SCORE score="750" zone="ZONE_HAND" />
</CARD_V2>
(in Duels 2014)
Duels 2012: viewtopic.php?f=109&t=12152
Duels 2013: viewtopic.php?f=109&t=12481&p=137458#p137458
Duels 2012: viewtopic.php?f=109&t=12152
Duels 2013: viewtopic.php?f=109&t=12481&p=137458#p137458
-
GrovyleXShinyCelebi - Posts: 294
- Joined: 12 Jun 2013, 18:23
- Has thanked: 14 times
- Been thanked: 37 times
Re: General DotP 2014 Coding Questions
by RiiakShiNal » 11 Dec 2013, 01:07
I can't think of anything that would cause a problem with the delayed trigger occurring while the original spell is in the graveyard, but I can think of situations where not having the TARGET in the spell ability could cause problems. For example abilities like Jetting Glasskite won't work properly with non-overloaded spells as there is no way to counter abilities in the DotP engine.
Also have you tested to make sure if an overloaded spell is copied that the copy is also overloaded? According to MtG rules Overload is a choice made while casting and as such is a "copyable value" and should be inherited by copies, however, since you use a LinkedDC() it is possible that this does not carry over to copies and as such needs to be tested.
Edit: Thinking about it your approximation would also cause problems with cards with Heroic (Theros), Confound, Grip of Chaos, Hydromorph Guardian, or Ink-Treader Nephilim, because you don't have the TARGET in the SPELL_ABILITY a non-overloaded spell won't count for the purposes of those abilities even though it should.
Also have you tested to make sure if an overloaded spell is copied that the copy is also overloaded? According to MtG rules Overload is a choice made while casting and as such is a "copyable value" and should be inherited by copies, however, since you use a LinkedDC() it is possible that this does not carry over to copies and as such needs to be tested.
Edit: Thinking about it your approximation would also cause problems with cards with Heroic (Theros), Confound, Grip of Chaos, Hydromorph Guardian, or Ink-Treader Nephilim, because you don't have the TARGET in the SPELL_ABILITY a non-overloaded spell won't count for the purposes of those abilities even though it should.
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: 497 times
Re: General DotP 2014 Coding Questions
by GrovyleXShinyCelebi » 12 Dec 2013, 04:06
Ugh, just tested Overload and you're right as copies aren't being taken account. I wonder if that's something your ObjectDC can solve ('bout time I started using it anyways).
I actually thought for a bit that if I found a way to make Overload target selection when spell is on the stack ( like with ZONECHANGE_END or SPELL_ABOUT_TO_RESOLVE ), I could beat those fringe instances when this wouldn't work. Then I realised they use the SPELL's data chest...
Anyways, right now I really don't have time for this, I got other mod and real-life stuff to take care of, and I'm already pushing myself to the point of crying (literally) with coding Overload. I've made the judgment that this still works 99.9% right, about a TFM-ish approximation, but a perfect Overload is impossible. I'll look back into it in a week or so, in a less hectic time. If anyone has suggestions for improvements feel free to share them.
I actually thought for a bit that if I found a way to make Overload target selection when spell is on the stack ( like with ZONECHANGE_END or SPELL_ABOUT_TO_RESOLVE ), I could beat those fringe instances when this wouldn't work. Then I realised they use the SPELL's data chest...
Anyways, right now I really don't have time for this, I got other mod and real-life stuff to take care of, and I'm already pushing myself to the point of crying (literally) with coding Overload. I've made the judgment that this still works 99.9% right, about a TFM-ish approximation, but a perfect Overload is impossible. I'll look back into it in a week or so, in a less hectic time. If anyone has suggestions for improvements feel free to share them.
(in Duels 2014)
Duels 2012: viewtopic.php?f=109&t=12152
Duels 2013: viewtopic.php?f=109&t=12481&p=137458#p137458
Duels 2012: viewtopic.php?f=109&t=12152
Duels 2013: viewtopic.php?f=109&t=12481&p=137458#p137458
-
GrovyleXShinyCelebi - Posts: 294
- Joined: 12 Jun 2013, 18:23
- Has thanked: 14 times
- Been thanked: 37 times
Re: General DotP 2014 Coding Questions
by RiiakShiNal » 12 Dec 2013, 04:40
No, my ObjectDC functions won't help there as they are locked to the object's instance and each copy would have it's own instance. I can't really think of a good way to get a card and only its copies to access a single chest without having it being influenced by other spells or instances. For example you can't just have a card use a single DuelDataChest() because then if two different copies are cast with one being overloaded and the other without if they access the same chest they would both either be overloaded or not even though different costs were paid.GrovyleXShinyCelebi wrote:Ugh, just tested Overload and you're right as copies aren't being taken account. I wonder if that's something your ObjectDC can solve ('bout time I started using it anyways).
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: 497 times
Who is online
Users browsing this forum: No registered users and 19 guests