It is currently 24 Apr 2024, 20:08
   
Text Size

Battle for Zendikar spoiler season

Post MTG Forge Related Programming Questions Here

Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins

Re: Battle for Zendikar spoiler season

Postby Marek14 » 19 Sep 2015, 21:39

Akoum Stonewaker:
According to Riftmarked Knight code, the proper syntax is, no idea why, "TokenKeywords$ Trample<>Haste"

Bane of Bala Ged:
First problem I see is that "Cost$ T" was accidentally left in the ability code. Try removing it, maybe it will fix the problem.

Blighted Steppe:
Replace "SVar:X:Count$TypeOnBattlefield.Creature.YouCtrl/Times.2" with "SVar:X:Count$TypeYouCtrl.Creature/Times.2"

Carrier Thrall:
Replace "When CARDNAME dies, put a 3/3 green Boar creature token onto the battlefield." with "When CARDNAME dies, put a 1/1 colorless Eldrazi Scion token onto the battlefield. It has "Sacrifice this creature. Add {1} to your mana pool.""

Guul Draz Overseer:
Problem is presumably here: "SVar:X:TriggeredCard.Swamp/Plus.1", but I'm not sure how to improve this code.

Halimar Tidecaller:
Not sure where the problem is, maybe "ValidTgts$ Card.YouCtrl+withAwaken" is not accepted for some reason?

Hedron Blade:
In second ability, replace "ValidBlocker$ Creature" with "ValidBlocker$ Creature.Colorless"

Infuse with the Elements:
Add "SpellDescription$" before "Converge — Put X +1/+1 counters on target creature, where X is the number of colors of mana spent to cast CARDNAME. That creature gains trample until end of turn."

Makindi Patrol:
Replace "PT:2/2" with "PT:2/3"

Mind Raker, Murk Strider, Ulamog's Reclaimer and Wasteland Strangler:
Replace "ChangesZone" with "ChangeZone"

Pathway Arrows:
Here is corrected code:
Code: Select all
Name:Pathway Arrows
ManaCost:1
Types:Artifact Equipment
S:Mode$ Continuous | Affected$ Card.EquippedBy | AddAbility$ Damage | AddSVar$ PathwayTapAll,PathwayCleanup | Description$ Equipped creature has "{2}, {T}: This creature deals 1 damage to target creature. If a colorless creature is dealt damage this way, tap it."
SVar:Damage:AB$DealDamage | Cost$ 2 T | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 1 | RememberDamaged$ True | SubAbility$ PathwayTapAll | SpellDescription$ CARDNAME deals 1 damage to target creature. If a colorless creature is dealt damage this way, tap it.
SVar:PathwayTapAll:DB$ TapAll | ValidCards$ Creature.IsRemembered+Colorless | SubAbility$ PathwayCleanup
SVar:PathwayCleanup:DB$ Cleanup | ClearRemembered$ True
K:Equip 2
SVar:NonStackingAttachEffect:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/pathway_arrows.jpg
Oracle:Equipped creature has "{2}, {T}: This creature deals 1 damage to target creature. If a colorless creature is dealt damage this way, tap it."\nEquip {2}
Not sure about Retreats -- I don't see any significant difference compared to, say, Blizzard Specter.

Ruin Processor:
Replace "LifeAmount$ 5 ConditionDefined$ Remembered" with "LifeAmount$ 5 | ConditionDefined$ Remembered"

Touch of the Void:
Replace "Cost$ 5 R R" with "Cost$ 2 R"

Ugin's Insight:
Replace "Cost$ U" with "Cost$ 3 U U"

Unnatural Aggression -- not sure where's the problem.

Vampiric Rites:
Add "ManaCost:B" after the name.
Marek14
Tester
 
Posts: 2761
Joined: 07 Jun 2008, 07:54
Has thanked: 0 time
Been thanked: 297 times

Re: Battle for Zendikar spoiler season

Postby KrazyTheFox » 19 Sep 2015, 21:52

I'm working on rewriting Mind Raker, Murk Strider, Ulamog's Reclaimer, and Wasteland Strangler to be much simpler, using the ExiledMoveToGrave cost. I'll try out the other changes once I get back from dinner—probably a few hours.

Edit: Maybe I was getting ahead of myself, there. Rewriting them appears to make them not work quite right.

Edit again: These cards are going to need more work. I can get it work for the most part with ExiledMoveToGrave, but I need to get them to be optional.
Last edited by KrazyTheFox on 19 Sep 2015, 22:08, edited 1 time in total.
User avatar
KrazyTheFox
Programmer
 
Posts: 725
Joined: 18 Mar 2014, 23:51
Has thanked: 66 times
Been thanked: 226 times

Re: Battle for Zendikar spoiler season

Postby Marek14 » 19 Sep 2015, 22:03

KrazyTheFox wrote:I'm working on rewriting Mind Raker, Murk Strider, Ulamog's Reclaimer, and Wasteland Strangler to be much simpler, using the ExiledMoveToGrave cost. I'll try out the other changes once I get back from dinner—probably a few hours.

Edit: Maybe I was getting ahead of myself, there. Rewriting them appears to make them not work quite right.
You'll see. If you make it work, other Processors like Blight Herder should be changed in the same way.
Marek14
Tester
 
Posts: 2761
Joined: 07 Jun 2008, 07:54
Has thanked: 0 time
Been thanked: 297 times

Re: Battle for Zendikar spoiler season

Postby friarsol » 19 Sep 2015, 23:41

Alright, so which cards are left that are having some problems? I can give some tips about what might be happening.
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Battle for Zendikar spoiler season

Postby KrazyTheFox » 20 Sep 2015, 00:14

friarsol wrote:Alright, so which cards are left that are having some problems? I can give some tips about what might be happening.
Emeria Shepherd, and I couldn't quite get Suspension Field working without errors on the last page. There might be issues with making the etb effects for Mind Raker, Murk Strider, Ulamog's Reclaimer, and Wasteland Strangler optional. I ran out of time before I had to leave for dinner to figure it out.
User avatar
KrazyTheFox
Programmer
 
Posts: 725
Joined: 18 Mar 2014, 23:51
Has thanked: 66 times
Been thanked: 226 times

Re: Battle for Zendikar spoiler season

Postby KrazyTheFox » 20 Sep 2015, 03:50

Here's the full list of cards left to fix/implement and what I found was not working during testing. I've attached a .zip file containing all of the files for these cards to this post.

Code: Select all
Aligned Hedron Network:
   Does not return exiled creatures when it leaves the battlefield


Bane of Bala Ged:
   Cards are not exiled; no prompt is given to do so to either player


Brutal Expulsion:
   No text in panel for choosing which ability to use
   java.lang.IllegalArgumentException: No element named Battlefield,Stack in enum Zone
   at forge.game.zone.ZoneType.smartValueOf(ZoneType.java:44)
   at forge.game.ability.effects.ChangeZoneEffect.changeKnownOriginStackDescription(ChangeZoneEffect.java:240)
   at forge.game.ability.effects.ChangeZoneEffect.getStackDescription(ChangeZoneEffect.java:48)
   at forge.game.ability.SpellAbilityEffect.getStackDescriptionWithSubs(SpellAbilityEffect.java:75)
   at forge.game.spellability.AbilitySub.getStackDescription(AbilitySub.java:114)
   at forge.game.ability.SpellAbilityEffect.getStackDescriptionWithSubs(SpellAbilityEffect.java:85)
   at forge.game.spellability.AbilitySub.getStackDescription(AbilitySub.java:114)
   at forge.game.ability.SpellAbilityEffect.getStackDescriptionWithSubs(SpellAbilityEffect.java:85)
   at forge.game.ability.SpellApiBased.getStackDescription(SpellApiBased.java:42)
   at forge.player.HumanPlaySpellAbility.enusureAbilityHasDescription(HumanPlaySpellAbility.java:290)
   at forge.player.HumanPlaySpellAbility.playAbility(HumanPlaySpellAbility.java:142)
   at forge.player.HumanPlay.playSpellAbility(HumanPlay.java:124)
   at forge.player.PlayerControllerHuman.playChosenSpellAbility(PlayerControllerHuman.java:938)
   at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:930)
   at forge.game.GameAction.startGame(GameAction.java:1440)
   at forge.game.Match.startGame(Match.java:96)
   at forge.match.HostedMatch$2.run(HostedMatch.java:220)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
   at java.lang.Thread.run(Thread.java:745)


Emeria Shepherd:
   Not scripted


Guul Draz Overseer:
   Does not buff creatures


Halimar Tidecaller:
   Does not let you return a card with awaken to your hand from the graveyard


Noyan Dar, Roil Shaper:
   Lands don't become creatures; they only get the P1P1 counters


Pathway Arrows:
   Does not tap anything


Quarantine Field:
   Not scripted; see partial implementation below


Unnatural Aggression:
   Opponent's creature is not exiled when it dies this turn


Partial implementation of Quarantine Field:
Code: Select all
Name:Quarantine Field
ManaCost:X X W W
Types:Enchantment
K:etbCounter:ISOLATION:X
SVar:X:Count$xPaid
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, for each isolation counter on it, exile up to one target nonland permanent an opponent controls until CARDNAME leaves the battlefield.
SVar:TrigExile:AB$ ChangeZone | Cost$ 0 | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | ValidTgts$ Permanent.nonLand+OppCtrl | TargetMin$ 0 | TargetMax$ Y | References$ Y | TgtPrompt$ Select target nonland permanent an opponent controls | ConditionPresent$ Card.Self | SubAbility$ DBEffect
SVar:DBEffect:DB$ Effect | Triggers$ ComeBack | RememberObjects$ Targeted | ImprintCards$ Self | SVars$ TrigReturn,ExileSelf | ConditionPresent$ Card.Self | Duration$ Permanent
SVar:ComeBack:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.IsImprinted | Execute$ TrigReturn | TriggerZones$ Command | TriggerController$ TriggeredCardController | Static$ True | TriggerDescription$ That permanent is exiled until CARDNAME leaves the battlefield.
SVar:TrigReturn:AB$ ChangeZoneAll | Cost$ 0 | Origin$ Exile | Destination$ Battlefield | ChangeType$ Card.IsRemembered | SubAbility$ ExileSelf
SVar:ExileSelf:DB$ ChangeZone | Origin$ Command | Destination$ Exile | Defined$ Self
SVar:Y:Count$CardCounters.ISOLATION
SVar:PlayMain1:TRUE
SVar:OblivionRing:TRUE
SVar:Picture:http://www.wizards.com/global/images/magic/general/quarantine_field.jpg
Oracle:Quarantine Field enters the battlefield with X isolation counters on it.\nWhen Quarantine Field enters the battlefield, for each isolation counter on it, exile up to one target nonland permanent an opponent controls until Quarantine Field leaves the battlefield.

The above card has an error, but otherwise appears to work correctly:
Code: Select all
SVar 'Y' not found in ability, fallback to Card (Quarantine Field). Ability is (When Quarantine Field enters the battlefield, for each isolation counter on it, exile up to one target nonland permanent an opponent controls until Quarantine Field leaves the battlefield. (Targeting ERROR) )


Edit: Fixed all the "Retreat" cards; they've been added to the repository. List of remaining cards has been updated to reflect this.
Attachments
cards_remaining.zip
(6.94 KiB) Downloaded 194 times
Last edited by KrazyTheFox on 20 Sep 2015, 05:05, edited 2 times in total.
User avatar
KrazyTheFox
Programmer
 
Posts: 725
Joined: 18 Mar 2014, 23:51
Has thanked: 66 times
Been thanked: 226 times

Re: Battle for Zendikar spoiler season

Postby Agetian » 20 Sep 2015, 05:04

Ok, about Emeria Shepherd - here's a very rough draft as to how it's possible to differentiate between Plains and non-Plains on Landfall (note that the code itself is most likely not correct for the reasons explained below):

Code: Select all
Name:Emeria Shepherd
ManaCost:5 W W
Types:Creature Angel
PT:4/4
K:Flying
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl+HasNoSubtype Plains | Execute$ TrigChangeHand | OptionalDecider$ You | TriggerDescription$ Landfall - Whenever a land enters the battlefield, you may return target nonland permanent card from your graveyard to your hand.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl+HasSubtype Plains | Execute$ TrigChangeBattlefield | OptionalDecider$ You | TriggerDescription$ Landfall - Whenever a land enters the battlefield, you may return target nonland permanent card from your graveyard to your hand. If that land is a Plains, you may return that nonland permanent card to the battlefield instead.
SVar:TrigChangeHand:AB$ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Permanent.YouCtrl+nonLand | Cost$ 0
SVar:TrigChangeBattlefield:AB$ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Permanent.YouCtrl+nonLand | Cost$ 0
SVar:Picture:http://www.wizards.com/global/images/magic/general/emeria_shepherd.jpg
The problem with this code is: I don't understand how Emeria Shepherd is expected to function, exactly. The code above assumes that if a Plains entered the battlefield, then the player can return the nonland permanent only to the battlefield and not to hand. However, the wording on Emeria Shepherd is such that I'm not sure how it's supposed to function, I can interpret the wording in two possible ways:

1. If the land was non-Plains, then you may return to the hand. If the land was Plains, then you may return to the battlefield.
2. If the land was non-Plains, then you may return to the hand. If the land was Plains, then you may return to the hand *OR* to the battlefield.

If (2) is the case, then the code above is not correct because it only allows the player to return the card to the battlefield in case of Plains. In that case, something is likely possible with DB GenericChoice, but I'm not sure how to properly write code like that... I tried a couple things but couldn't get it to work (in particular, I don't know how to make the game allow the player to choose a card in a graveyard first and then remember it such that it can then be passed to a GenericChoice-based outcome). Help is welcome. ;)

- Agetian
Agetian
Programmer
 
Posts: 3472
Joined: 14 Mar 2011, 05:58
Has thanked: 677 times
Been thanked: 561 times

Re: Battle for Zendikar spoiler season

Postby KrazyTheFox » 20 Sep 2015, 05:14

Agetian wrote:If (2) is the case
That's what it appears to be to me.
User avatar
KrazyTheFox
Programmer
 
Posts: 725
Joined: 18 Mar 2014, 23:51
Has thanked: 66 times
Been thanked: 226 times

Re: Battle for Zendikar spoiler season

Postby Agetian » 20 Sep 2015, 05:18

KrazyTheFox wrote:
Agetian wrote:If (2) is the case
That's what it appears to be to me.
Yep, in that case it'll have to be linked to a GenericChoice, I'm pretty sure... Do you know how to do that properly? I tried looking at some example cards that used it but couldn't get my head around it. :) Also, another possible option is to chain the optional abilities (e.g. if the player doesn't choose to return to the battlefield, then offer him to return to the hand), but I'm not sure how to do that either... :(

- Agetian
Agetian
Programmer
 
Posts: 3472
Joined: 14 Mar 2011, 05:58
Has thanked: 677 times
Been thanked: 561 times

Re: Battle for Zendikar spoiler season

Postby swordshine » 20 Sep 2015, 05:22

Emeria Shepherd: use "ConditionDefined$ TriggeredCard"
template: Snowfall
swordshine
 
Posts: 682
Joined: 11 Jul 2010, 02:37
Has thanked: 116 times
Been thanked: 87 times

Re: Battle for Zendikar spoiler season

Postby Marek14 » 20 Sep 2015, 05:47

There's also a question, regarding the Emeria Shepherd cycle, whether the ability is supposed to check the land's state as it entered the battlefield or its state as the ability resolves, i.e. whether changing the land type in response to the ability has any effect. I have a feeling it's the second option since first might be templated differently ("if that land WAS a Plains")...
Marek14
Tester
 
Posts: 2761
Joined: 07 Jun 2008, 07:54
Has thanked: 0 time
Been thanked: 297 times

Re: Battle for Zendikar spoiler season

Postby Agetian » 20 Sep 2015, 05:48

Yeah, I think they usually use some kind of "was" wording for things like that, but I may be wrong...

- Agetian
Agetian
Programmer
 
Posts: 3472
Joined: 14 Mar 2011, 05:58
Has thanked: 677 times
Been thanked: 561 times

Re: Battle for Zendikar spoiler season

Postby Agetian » 20 Sep 2015, 06:17

swordshine wrote:Emeria Shepherd: use "ConditionDefined$ TriggeredCard"
template: Snowfall
I'm probably not the best person to attempt this... anyone who is willing to tackle this is welcome to try! :) I tried a few things but couldn't get it to work... the best I came up with was this:

Code: Select all
Name:Emeria Shepherd
ManaCost:5 W W
Types:Creature Angel
PT:4/4
K:Flying
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | Static$ True | ValidCard$ Land.YouCtrl | Execute$ TrigChangeBattlefield | OptionalDecider$ TriggeredCardController | TriggerDescription$ Landfall - Whenever a land enters the battlefield, you may return target nonland permanent card from your graveyard to your hand.
SVar:TrigChangeBattlefield:DB$ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ TriggeredCardController | ConditionDefined$ TriggeredCard | ConditionPresent$ Land.YouCtrl+HasSubtype Plains | ConditionCompare$ EQ1 | ValidTgts$ Permanent.YouCtrl+nonLand | Cost$ 0 | SubAbility$ TrigChangeHand
SVar:TrigChangeHand:DB$ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Permanent.YouCtrl+nonLand | Cost$ 0
SVar:Picture:http://www.wizards.com/global/images/magic/general/emeria_shepherd.jpg
However, it doesn't function correctly - first of all, it asks twice for some reason (to choose the card from the graveyard), and then it acts similar to my original attempt (if the land was a Plains, it always returns to the battlefield; if it wasn't a Plains, it always returns to the hand). :( Any further help is welcome!

- Agetian
Agetian
Programmer
 
Posts: 3472
Joined: 14 Mar 2011, 05:58
Has thanked: 677 times
Been thanked: 561 times

Re: Battle for Zendikar spoiler season

Postby Marek14 » 20 Sep 2015, 06:56

I'm not sure if the YouCtrl in ConditionPresent$ is necessary -- in first interpretation of the effect (checking the land when it entered), it's automatically satisfied, in the other, the current controller of the land irrelevant. Similarly, I'd change "OptionalDecider$ TriggeredCardController" to "OptionalDecider$ You".

Now, a more complete version of the effect would be as follows:

1. basic effect will return the card to hand, and it will be conditional on the land NOT being Plains.
2. second effect, conditional on the land being a Plains, will be GenericChoice effect that will the player choice between returning card to battlefield or to hand.
Marek14
Tester
 
Posts: 2761
Joined: 07 Jun 2008, 07:54
Has thanked: 0 time
Been thanked: 297 times

Re: Battle for Zendikar spoiler season

Postby Sloth » 20 Sep 2015, 07:01

I will take care of Brutal Expulsion.

EDIT: Done as well as Unnatural Aggression.
User avatar
Sloth
Programmer
 
Posts: 3498
Joined: 23 Jun 2009, 19:40
Has thanked: 125 times
Been thanked: 507 times

PreviousNext

Return to Developer's Corner

Who is online

Users browsing this forum: No registered users and 56 guests


Who is online

In total there are 56 users online :: 0 registered, 0 hidden and 56 guests (based on users active over the past 10 minutes)
Most users ever online was 4143 on 23 Jan 2024, 08:21

Users browsing this forum: No registered users and 56 guests

Login Form