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
by 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 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:
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.
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 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}
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.
Re: Battle for Zendikar spoiler season
by 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.
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.
-
KrazyTheFox - Programmer
- Posts: 725
- Joined: 18 Mar 2014, 23:51
- Has thanked: 66 times
- Been thanked: 226 times
Re: Battle for Zendikar spoiler season
by Marek14 » 19 Sep 2015, 22:03
You'll see. If you make it work, other Processors like Blight Herder should be changed in the same way.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.
Re: Battle for Zendikar spoiler season
by 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
by KrazyTheFox » 20 Sep 2015, 00:14
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.friarsol wrote:Alright, so which cards are left that are having some problems? I can give some tips about what might be happening.
-
KrazyTheFox - Programmer
- Posts: 725
- Joined: 18 Mar 2014, 23:51
- Has thanked: 66 times
- Been thanked: 226 times
Re: Battle for Zendikar spoiler season
by 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.
Partial implementation of Quarantine Field:
The above card has an error, but otherwise appears to work correctly:
Edit: Fixed all the "Retreat" cards; they've been added to the repository. List of remaining cards has been updated to reflect this.
- 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.
-
KrazyTheFox - Programmer
- Posts: 725
- Joined: 18 Mar 2014, 23:51
- Has thanked: 66 times
- Been thanked: 226 times
Re: Battle for Zendikar spoiler season
by 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):
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
- 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
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
by KrazyTheFox » 20 Sep 2015, 05:14
That's what it appears to be to me.Agetian wrote:If (2) is the case
-
KrazyTheFox - Programmer
- Posts: 725
- Joined: 18 Mar 2014, 23:51
- Has thanked: 66 times
- Been thanked: 226 times
Re: Battle for Zendikar spoiler season
by Agetian » 20 Sep 2015, 05:18
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...KrazyTheFox wrote:That's what it appears to be to me.Agetian wrote:If (2) is the case
- 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
by swordshine » 20 Sep 2015, 05:22
- swordshine
- Posts: 682
- Joined: 11 Jul 2010, 02:37
- Has thanked: 116 times
- Been thanked: 87 times
Re: Battle for Zendikar spoiler season
by 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")...
Re: Battle for Zendikar spoiler season
by 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
- Agetian
- Programmer
- Posts: 3472
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 561 times
Re: Battle for Zendikar spoiler season
by Agetian » 20 Sep 2015, 06:17
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
- 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
by 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.
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.
Re: Battle for Zendikar spoiler season
by Sloth » 20 Sep 2015, 07:01
-
Sloth - Programmer
- Posts: 3498
- Joined: 23 Jun 2009, 19:40
- Has thanked: 125 times
- Been thanked: 507 times
Who is online
Users browsing this forum: No registered users and 56 guests