It is currently 16 Sep 2025, 09:33
   
Text Size

Card Contributions

Post MTG Forge Related Programming Questions Here

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

Re: Card Contributions

Postby ArsenalNut » 30 Apr 2012, 15:38

Stolen Goods | Open
Name:Stolen Goods
ManaCost:3 U
Types:Sorcery
Text:no text
A:SP$ DigUntil | Cost$ 3 U | ValidTgts$ Opponent | Valid$ Card.nonLand | ValidDescription$ nonland | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ DBPump | SpellDescription$ Target opponent exiles cards from the top of his or her library until he or she exiles a nonland card. Until end of turn, you may cast that card without paying its mana cost.
SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ May be played by your opponent & HIDDEN Alternative Cost 0 | PumpZone$ Exile | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/stolen_goods.jpg
End

I wanted to check on this script before I checked it in.

I am confused by the rulings about paying for casting this card. I wasn't sure if you're suppose to get a choice between paying the normal mana cost and no mana cost when casting the exiled card. Also not sure about the interaction with things like Fist of Suns. As scripted, if you have a Fist of Suns in play and you go to cast the exiled card, you get a choice between paying its normal mana cost and paying no mana. Is this is correct?
So many cards, so little time
User avatar
ArsenalNut
 
Posts: 512
Joined: 08 Jul 2011, 03:49
Has thanked: 27 times
Been thanked: 121 times

Re: Card Contributions

Postby Sloth » 30 Apr 2012, 15:42

ArsenalNut wrote:
Stolen Goods | Open
Name:Stolen Goods
ManaCost:3 U
Types:Sorcery
Text:no text
A:SP$ DigUntil | Cost$ 3 U | ValidTgts$ Opponent | Valid$ Card.nonLand | ValidDescription$ nonland | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ DBPump | SpellDescription$ Target opponent exiles cards from the top of his or her library until he or she exiles a nonland card. Until end of turn, you may cast that card without paying its mana cost.
SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ May be played by your opponent & HIDDEN Alternative Cost 0 | PumpZone$ Exile | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/stolen_goods.jpg
End

I wanted to check on this script before I checked it in.

I am confused by the rulings about paying for casting this card. I wasn't sure if you're suppose to get a choice between paying the normal mana cost and no mana cost when casting the exiled card. Also not sure about the interaction with things like Fist of Suns. As scripted, if you have a Fist of Suns in play and you go to cast the exiled card, you get a choice between paying its normal mana cost and paying no mana. Is this is correct?
This is not correct. I will add the keyword "May be played by your opponent without paying its mana cost" and check your script in if it works.
User avatar
Sloth
Programmer
 
Posts: 3498
Joined: 23 Jun 2009, 19:40
Has thanked: 125 times
Been thanked: 507 times

Re: Card Contributions

Postby ArsenalNut » 30 Apr 2012, 22:40

Descendants' Path | Open
Name:Descendants' Path
ManaCost:2 G
Types:Enchantment
Text:no text
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ At the beginning of your upkeep, reveal the top card of your library. If it's a creature card that shares a creature type with a creature you control, you may cast that card without paying its mana cost. Otherwise, put that card on the bottom of your library.
SVar:TrigDig:AB$ Dig | Cost$ 0| DigNum$ 1 | Reveal$ True | NoMove$ True | RememberRevealed$ True | SubAbility$ DBPlayIT
SVar:DBPlayIT:DB$ Play | Defined$ Remembered | Controller$ You | WithoutManaCost$ True | Optional$ True | RememberPlayed$ True | ConditionCheckSVar$ MatchType | ConditionSVarCompare$ EQ1 | SubAbility$ DBMoveIfNotPlayed
SVar:DBMoveIfNotPlayed:DB$ ChangeZone | Origin$ Library | Destination$ Library | LibraryPosition$ -1 | Defined$ Remembered | DefinedPlayer$ You | ConditionCheckSVar$ NotPlayed | ConditionSVarCompare$ EQ1 | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:NotPlayed:Remembered$Valid Card.IsRemembered
SVar:MatchType:Remembered$Valid Creature.sharesCreatureTypeWith Card
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/descendants_path.jpg
End

This works except that the library gets shuffled when the revealed card is not played and put on the bottom of the library. The ChangeZone AF automatically shuffles if the destination and origin are both the library. I don't know why this always the case but I didn't want to change it without posting. Also noticed that ChangeZone AF doesn't check the value associated with the "Shuffle" key so "Shuffle$ False" would cause a shuffle.
So many cards, so little time
User avatar
ArsenalNut
 
Posts: 512
Joined: 08 Jul 2011, 03:49
Has thanked: 27 times
Been thanked: 121 times

Re: Card Contributions

Postby friarsol » 01 May 2012, 00:33

ArsenalNut wrote:This works except that the library gets shuffled when the revealed card is not played and put on the bottom of the library. The ChangeZone AF automatically shuffles if the destination and origin are both the library. I don't know why this always the case but I didn't want to change it without posting. Also noticed that ChangeZone AF doesn't check the value associated with the "Shuffle" key so "Shuffle$ False" would cause a shuffle.
Why not have the dig place the card on the bottom if it doesn't share types? Then remember if you do or not, and Conditionally Cast if it's still there.

5/1/2012: If the revealed card is a creature card that shares a creature type with a creature you control, but you choose not to cast it, it stays on top of your library.
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Card Contributions

Postby ArsenalNut » 01 May 2012, 02:42

friarsol wrote:Why not have the dig place the card on the bottom if it doesn't share types? Then remember if you do or not, and Conditionally Cast if it's still there.

5/1/2012: If the revealed card is a creature card that shares a creature type with a creature you control, but you choose not to cast it, it stays on top of your library.
Attempt number two
Descendants' Path | Open
Name:Descendants' Path
ManaCost:2 G
Types:Enchantment
Text:no text
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ At the beginning of your upkeep, reveal the top card of your library. If it's a creature card that shares a creature type with a creature you control, you may cast that card without paying its mana cost. Otherwise, put that card on the bottom of your library.
SVar:TrigDig:AB$ Dig | Cost$ 0| DigNum$ 1 | Reveal$ True | RememberRevealed$ True | ChangeNum$ All | ChangeValid$ Creature.sharesCreatureTypeWith Creature.YouCtrl | DestinationZone$ Library | LibraryPosition$ 0 | LibraryPosition2$ -1 | SubAbility$ DBPlayIT
SVar:DBPlayIT:DB$ Play | Defined$ Remembered | Controller$ You | WithoutManaCost$ True | Optional$ True | RememberPlayed$ True | ConditionCheckSVar$ MatchType | ConditionSVarCompare$ EQ1 | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:MatchType:Remembered$Valid Creature.sharesCreatureTypeWith Card
SVar:RemAIDeck:True
SVar:RemRandomDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/descendants_path.jpg
End

The only thing that might be a problem is cards with additional costs. If you cannot pay the additional cost or choose not to pay it, the revealed card gets put on the bottom of the library. There is nothing the script can do to change this. It is just the way forge.GameAction.playSpellAbility(SpellAbility) handles the situation.
So many cards, so little time
User avatar
ArsenalNut
 
Posts: 512
Joined: 08 Jul 2011, 03:49
Has thanked: 27 times
Been thanked: 121 times

Re: Card Contributions

Postby friarsol » 01 May 2012, 03:06

ArsenalNut wrote:The only thing that might be a problem is cards with additional costs. If you cannot pay the additional cost or choose not to pay it, the revealed card gets put on the bottom of the library. There is nothing the script can do to change this. It is just the way forge.GameAction.playSpellAbility(SpellAbility) handles the situation.
That doesn't sound right. It sounds like the card is always going to the bottom, and if you refuse/can't pay it it stays on the bottom instead of going to the stack, which means either the check valid isn't working, or it's inverted.
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Card Contributions

Postby ArsenalNut » 01 May 2012, 03:17

friarsol wrote:
ArsenalNut wrote:The only thing that might be a problem is cards with additional costs. If you cannot pay the additional cost or choose not to pay it, the revealed card gets put on the bottom of the library. There is nothing the script can do to change this. It is just the way forge.GameAction.playSpellAbility(SpellAbility) handles the situation.
That doesn't sound right. It sounds like the card is always going to the bottom, and if you refuse/can't pay it it stays on the bottom instead of going to the stack, which means either the check valid isn't working, or it's inverted.
Nope, the dig is working correctly. If I decline to play the card when the Play AF asks, the card is left on top and I receive the card during the draw step. I tried to follow what's happening in the debugger but got lost. I did see that the card is moved to the stack before the additional cost is paid. I assume there is some place in the code that moves it back off the stack if the cost is not paid. I was testing with a Headless Skaab and some other zombies.
So many cards, so little time
User avatar
ArsenalNut
 
Posts: 512
Joined: 08 Jul 2011, 03:49
Has thanked: 27 times
Been thanked: 121 times

Re: Card Contributions

Postby friarsol » 01 May 2012, 03:30

ArsenalNut wrote:Nope, the dig is working correctly. If I decline to play the card when the Play AF asks, the card is left on top and I receive the card during the draw step. I tried to follow what's happening in the debugger but got lost. I did see that the card is moved to the stack before the additional cost is paid. I assume there is some place in the code that moves it back off the stack if the cost is not paid. I was testing with a Headless Skaab and some other zombies.
Ah perfect. I know exactly what that is. Someone reported being able to rearrange your graveyard by canceling a flashback spell, this is the same thing. Just have to keep track of the zone position when putting a card on the stack. I'll try to do this on Wednesday.

If anyone has a chance to look at it before that it's in SpellAbilityRequirement around line 198

MoveTo | Open
} else if (this.payment.isCanceled()) {
final Card c = this.ability.getSourceCard();
if (this.bCasting && !c.isCopiedSpell()) { // and not a copy
// add back to Previous Zone
Singletons.getModel().getGameAction().moveTo(this.fromZone, c);
}


We would need to call something like GameAction.moveTo(this.fromZone, c, this.zonePosition) after storing the position right before moving zones (which I'm not sure we have a utility for right now). It mostly only matters for Library and Graveyard. Anyway, I have this worked out in my head if noone feels like doing it tomorrow night.

Thanks for debugging Arsenal
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Card Contributions

Postby friarsol » 03 May 2012, 01:26

ArsenalNut wrote:Nope, the dig is working correctly. If I decline to play the card when the Play AF asks, the card is left on top and I receive the card during the draw step. I tried to follow what's happening in the debugger but got lost. I did see that the card is moved to the stack before the additional cost is paid. I assume there is some place in the code that moves it back off the stack if the cost is not paid. I was testing with a Headless Skaab and some other zombies.
Fix should be in for that. Just tested it and it worked with your example case. Lemme know if it seemes funky.
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Card Contributions

Postby moomarc » 03 May 2012, 06:58

@Squee: Now that I'm finished with the pet art, I have a bit more free time so added Wild Evocation. Will hopefully get a few more from that batch in finally.
-Marc
User avatar
moomarc
Pixel Commander
 
Posts: 2091
Joined: 04 Jun 2010, 15:22
Location: Johannesburg, South Africa
Has thanked: 371 times
Been thanked: 372 times

Re: Card Contributions

Postby moomarc » 15 May 2012, 13:46

@Squee: just looked at the last of the cards you submitted:
- Yamabushi's Storm doesn't limit the exile-at-death to creatures that were damaged. I know there's a few "whenever a creature is dealt damage this way" cards that are implemented similar to how you've done it but they're generally targeted so still interact properly with Protection (I think they still have issues though if damage is redirected/replaced and will do until all damage is tracked and we have a 'RememberDamaged' param).
- Wishmonger doesn't work properly because the activator choose the color instead of the targeted controller.
- Withering Wisps doesn't work because ActivationLimit doesn't support X at the moment. I couldn't quite manage to add the support because I don't know how to access the host card from SpellAbilityRestriction.SetRestrictions (without a bunch of refactoring that would break Forge if attempted by me :? ). Otherwise it should look something like this:
Code: Select all
if (params.containsKey("ActivationLimit")) {
    Card hostCard = InsertRelevantCallHere;
    String activationLimit = params.get("ActivationLimit");
    int activationLimitValue = activationLimit.matches("[0-9][0-9]?") ? Integer.parseInt(params.get("ActivationLimit")) : CardFactoryUtil.xCount(hostCard, hostCard.getSVar(activationLimit));
    this.setActivationLimit(activationLimitValue);
}
Sorry you've had to wait so long and now none of the remaining cards could be implemented. But at least you can post the next batch 8-[
-Marc
User avatar
moomarc
Pixel Commander
 
Posts: 2091
Joined: 04 Jun 2010, 15:22
Location: Johannesburg, South Africa
Has thanked: 371 times
Been thanked: 372 times

Re: Card Contributions

Postby squee1968 » 15 May 2012, 14:58

Yeah, it took awhile, but while I'm not exactly happy about it, I do understand. Life happens. I need to be more patient. But in the meantime, I spent my time doing more cards, so I have a few batches in the holding pattern. Hopefully, they will work out better than the last batch.

Code: Select all
Name:Abundance
ManaCost:2 G G
Types:Enchantment
Text:no text
R:Event$ Draw | ValidPlayer$ You | ReplaceWith$ Choice | Optional$ True | Description$ If you would draw a card, you may instead choose land or nonland and reveal cards from the top of your library until you reveal a card of the chosen kind. Put that card into your hand and put all other cards revealed this way on the bottom of your library in any order.
SVar:Choice:AB$ Generic Choice | Cost$ 0 | Choices$ DigLand,DigNonland | Defined$ You
SVar:DigLand:DB$ DigUntil | Valid$ Card.Land | ValidDescription$ land | FoundDestination$ Hand | RevealedDestination$ Library | RevealedLibraryPosition$ -1
SVar:DigNonland:DB$ DigUntil | Valid$ Card.nonLand | ValidDescription$ nonland | FoundDestination$ Hand | RevealedDestination$ Library | RevealedLibraryPosition$ -1
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/abundance.jpg
End
Code: Select all
Name:Acidic Dagger
ManaCost:4
Types:Artifact
Text:no text
A:AB$ Effect | Cost$ 4 T | Name$ Acidic Dagger Effect | ValidTgts$ Creature | TgtPrompt$ Select target creature | Triggers$ TrigDam, TrigLeave | sVars$ TrigDestroy, TrigSac | RememberObjects$ Targeted | ActivationPhases$ BeginCombat->Declare Attackers - Play Instants and Abilities | SpellDescription$ Whenever target creature deals combat damage to a non-Wall creature this turn, destroy that non-Wall creature. When the targeted creature leaves the battlefield this turn, sacrifice CARDNAME. Activate this ability only during combat before blockers are declared.
SVar:TrigDam:Mode$ DamageDone | ValidSource$ Creature.IsRemembered | ValidTarget$ Creature.nonWall | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever target creature deals combat damage to a non-Wall creature this turn, destroy that non-Wall creature.
SVar:TrigLeave:Mode$ ChangesZone | ValidCard$ Creature.IsRemembered | Origin$ Battlefield | Destination$ Any | Execute$ TrigSac | TriggerDescription$ When the targeted creature leaves the battlefield this turn, sacrifice CARDNAME.
SVar:TrigDestroy:AB$Destroy | Cost$ 0 | Defined$ TriggeredTarget
SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/acidic_dagger.jpg
End
Code: Select all
Name:Acorn Catapult
ManaCost:4
Types:Artifact
Text:no text
A:AB$ Generic Choice | Cost$ 1 T | Choices$ DmgYou,DmgOpp,DmgCrtr | Defined$ You | SpellDescription$ CARDNAME deals 1 damage to target creature or player. That creature’s controller or that player puts a 1/1 green Squirrel creature token onto the battlefield.
SVar:DmgYou:DB$DealDamage | NumDmg$ 1 | Defined$ You | SubAbility$ TokenYou
SVar:DmgOpp:DB$DealDamage | NumDmg$ 1 | ValidTgts$ Opponent | SubAbility$ TokenOpp
SVar:DmgCrtr:DB$DealDamage | NumDmg$ 1 | ValidTgts$ Creature | TgtPrompt$ Select a creature | SubAbility$ TokenCtrllr
SVar:TokenYou:DB$Token | TokenAmount$ 1 | TokenName$ Squirrel | TokenTypes$ Creature,Squirrel | TokenOwner$ You | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1
SVar:TokenOpp:DB$Token | TokenAmount$ 1 | TokenName$ Squirrel | TokenTypes$ Creature,Squirrel | TokenOwner$ Opponent | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1
SVar:TokenCtrllr:DB$Token | TokenAmount$ 1 | TokenName$ Squirrel | TokenTypes$ Creature,Squirrel | TokenOwner$ TargetedController | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/acorn_catapult.jpg
End
Code: Select all
Name:Angel of Salvation
ManaCost:6 W W
Types:Creature Angel
Text:no text
PT:5/5
K:Flash
K:Convoke
K:Flying
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ HolyHeal | TriggerDescription$ When CARDNAME enters the battlefield, prevent the next 5 damage that would be dealt this turn to any number of target creatures and/or players, divided as you choose.
SVar:HolyHeal:AB$ PreventDamage | Cost$ 0 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player (1) | Amount$ 1 | SubAbility$ Heal2
SVar:Heal2:AB$ PreventDamage | Cost$ 0 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player (2) | Amount$ 1 | SubAbility$ Heal3
SVar:Heal3:AB$ PreventDamage | Cost$ 0 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player (3) | Amount$ 1 | SubAbility$ Heal4
SVar:Heal4:AB$ PreventDamage | Cost$ 0 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player (4) | Amount$ 1 | SubAbility$ Heal5
SVar:Heal5:AB$ PreventDamage | Cost$ 0 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player (5) | Amount$ 1
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/angel_of_salvation.jpg
End
Code: Select all
Name:Antagonism
ManaCost:3 R
Types:Enchantment
Text:no text
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | ConditionCheckSVar$ X | ConditionSVarCompare$ LE0 | Execute$ TeaseYou | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's end step, CARDNAME deals 2 damage to that player unless one of his or her opponents was dealt damage this turn.
SVar:TeaseYou:DB$ DealDamage | Defined$ You | NumDmg$ 2
SVar:X:Count$OppDamageThisTurn
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Opponent | ConditionCheckSVar$ Y | ConditionSVarCompare$ LE0 | Execute$ TeaseOpp | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ At the beginning of each player's end step, CARDNAME deals 2  damage to that player unless one of his or her opponents was dealt damage this turn.
SVar:TeaseOpp:DB$ DealDamage | Defined$ Opponent | NumDmg$ 2
SVar:Y:Count$YourDamageThisTurn
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/antagonism.jpg
End
Code: Select all
Name:Anthem of Rakdos
ManaCost:2 B R R
Types:Enchantment
Text:no text
T:Mode$ Attacks | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ AnthemPump | TriggerDescription$ Whenever a creature you control attacks, it gets +2/+0 until end of turn and CARDNAME deals 1 damage to you.
SVar:AnthemPump:AB$Pump | Cost$ 0 | Defined$ TriggeredAttacker | NumAtt$ +2 | SubAbility$ RakdosBurn
SVar:RakdosBurn:DB$ DealDamage | Defined$ You | NumDmg$ 1
R:Event$ DamageDone | ValidSource$ Card.YouCtrl | ValidTarget$ Permanent,Player | Hellbent$ True | ConditionCheckSVar$ Y | ConditionSVarCompare$ LE0 | ReplaceWith$ DmgTwice | IsCombat$ False | Description$ Hellbent - As long as you have no cards in hand, if a source you control would deal damage to a creature or player, it deals double that damage to that creature or player instead.
R:Event$ DamageDone | ValidSource$ Card.YouCtrl | ValidTarget$ Permanent,Player | Hellbent$ True | ReplaceWith$ DmgTwiceCombat | IsCombat$ True | ConditionCheckSVar$ Y | ConditionSVarCompare$ LE0 | Secondary$ True | Description$ Hellbent - As long as you have no cards in hand, if a source you control would deal damage to a creature or player, it deals double that damage to that creature or player instead.
SVar:DmgTwice:AB$DealDamage | Cost$ 0 | Defined$ ReplacedTarget | DamageSource$ ReplacedSource | NumDmg$ X
SVar:DmgTwiceCombat:AB$DealDamage | Cost$ 0 | CombatDamage$ True | Defined$ ReplacedTarget | DamageSource$ ReplacedSource | NumDmg$ X
SVar:X:ReplaceCount$DamageAmount/Twice
SVar:Y:Count$CardsInYourHand
SVar:PlayMain1:TRUE
SVar:RemRandomDeck:True
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/anthem_of_rakdos.jpg
End
Code: Select all
Name:Aphetto Dredging
ManaCost:3 B
Types:Sorcery
Text:no text
A:SP$ ChooseType | Cost$ 3 B | Defined$ You | Type$ Creature | SubAbility$ DredgeUp | AILogic$ MostProminentInComputerDeck | SpellDescription$ Return up to three target creature cards of the creature type of your choice from your graveyard to your hand.
SVar:DredgeUp:DB$ChangeZone | Origin$ Graveyard | Destination$ Hand | ChangeNum$ 3 | ChangeType$ Creature.ChosenType
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/aphetto_dredging.jpg
End
Code: Select all
Name:Apocalypse Chime
ManaCost:2
Types:Artifact
Text:no text
A:AB$DestroyAll | Cost$ 2 T Sac<1/CARDNAME> | ValidCards$ Permanent.nonToken+setHML | NoRegen$ True | SpellDescription$ Destroy all nontoken permanents from the Homelands expansion. They can't be regenerated.
SVar:RemAIDeck:True
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/apocalypse_chime.jpg
End
Code: Select all
Name:Aquamorph Entity
ManaCost:2 U U
Types:Creature Shapeshifter
Text:no text
PT:*/*
K:Morph:2 U
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ MorphChoice | TriggerDescription$ As CARDNAME enters the battlefield or is turned face up, it becomes your choice of 5/1 or 1/5.
T:Mode$ TurnFaceUp | ValidCard$ Card.Self | Execute$ MorphChoice | Secondary$ True | TriggerDescription$ When CARDNAME enters the battlefield or is turned face up, it becomes your choice of 5/1 or 1/5.
SVar:MorphChoice:AB$ Generic Choice | Cost$ 0 | Choices$ BigPower,BigTough
SVar:BigPower:DB$ Animate | Permanent$ True | Power$ 5 | Toughness$ 1
SVar:BigTough:DB$ Animate | Permanent$ True | Power$ 1 | Toughness$ 5
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/aquamorph_entity.jpg
End
Only 9 cards this batch because Sloth already added Advice from the Fae. I have little notes that i save along with the scripts, so I wanted to keep that intact, rather than just add a card from the next batch.
If the code from Aquamorph Entity is acceptable, then I have a bonus of 2 more hardcoded cards that can be converted to script.

Code: Select all
Name:Primal Clay
ManaCost:4
Types:Artifact Creature Shapeshifter
Text:no text
PT:*/*
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ MoldChoice | TriggerDescription$ As CARDNAME enters the battlefield, it becomes your choice of a 3/3 artifact creature, a 2/2 artifact creature with flying, or a 1/6 Wall artifact creature with defender in addition to its other types.
SVar:MoldChoice:AB$ Generic Choice | Cost$ 0 | Defined$ You | Choices$ GroundMold,AirMold,WallMold
SVar:GroundMold:AB$ Animate | Cost$ 0 | Permanent$ True | Power$ 3 | Toughness$ 3
SVar:AirMold:AB$ Animate | Cost$ 0 | Permanent$ True | Power$ 2 | Toughness$ 2 | Keywords$ Flying
SVar:WallMold:AB$ Animate | Cost$ 0 | Permanent$ True | Power$ 1 | Toughness$ 6 | Types$ Wall | Keywords$ Defender
SVar:Rarity:Rare
SVar:Picture:http://resources.wizards.com/magic/cards/4e/en-us/card2065.jpg
SetInfo:5ED|Rare|http://magiccards.info/scans/en/5e/395.jpg
SetInfo:6ED|Rare|http://magiccards.info/scans/en/6e/308.jpg
SetInfo:3ED|Rare|http://magiccards.info/scans/en/rv/271.jpg
SetInfo:4ED|Rare|http://magiccards.info/scans/en/4e/360.jpg
SetInfo:ATQ|Uncommon|http://magiccards.info/scans/en/aq/26.jpg
Oracle:As Primal Clay enters the battlefield, it becomes your choice of a 3/3 artifact creature, a 2/2 artifact creature with flying, or a 1/6 Wall artifact creature with defender in addition to its other types.
End
Code: Select all
Name:Primal Plasma
ManaCost:3 U
Types:Creature Elemental Shapeshifter
Text:no text
PT:*/*
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ PlasmaChoice | TriggerDescription$ As CARDNAME enters the battlefield, it becomes your choice of a 3/3 creature, a 2/2 creature with flying, or a 1/6 creature with defender.
SVar:PlasmaChoice:AB$ Generic Choice | Cost$ 0 | Defined$ You | Choices$ GroundPlasma,AirPlasma,WallPlasma
SVar:GroundPlasma:AB$ Animate | Cost$ 0 | Permanent$ True | OverwriteTypes$ True | Power$ 3 | Toughness$ 3
SVar:AirPlasma:AB$ Animate | Cost$ 0 | Permanent$ True | OverwriteTypes$ True | Power$ 2 | Toughness$ 2 | Keywords$ Flying
SVar:WallPlasma:AB$ Animate | Cost$ 0 | Permanent$ True | OverwriteTypes$ True | Power$ 1 | Toughness$ 6 | Keywords$ Defender
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://resources.wizards.com/magic/cards/plc/en-us/card124757.jpg
SetInfo:PLC|Common|http://magiccards.info/scans/en/pc/59.jpg
Oracle:As Primal Plasma enters the battlefield, it becomes your choice of a 3/3 creature, a 2/2 creature with flying, or a 1/6 creature with defender.
End
squee1968
 
Posts: 254
Joined: 18 Nov 2011, 03:28
Has thanked: 110 times
Been thanked: 45 times

Re: Card Contributions

Postby friarsol » 15 May 2012, 15:15

squee1968 wrote:Yeah, it took awhile, but while I'm not exactly happy about it, I do understand. Life happens. I need to be more patient. But in the meantime, I spent my time doing more cards, so I have a few batches in the holding pattern. Hopefully, they will work out better than the last batch.
Squee, what would it take to get you to be able to test your scripts? Just looking briefly I can tell that GenericChoice has a space in it, where the API does not have a space in it. Is there something preventing you from doing that?
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Card Contributions

Postby squee1968 » 15 May 2012, 17:40

friarsol wrote:
squee1968 wrote:Yeah, it took awhile, but while I'm not exactly happy about it, I do understand. Life happens. I need to be more patient. But in the meantime, I spent my time doing more cards, so I have a few batches in the holding pattern. Hopefully, they will work out better than the last batch.
Squee, what would it take to get you to be able to test your scripts? Just looking briefly I can tell that GenericChoice has a space in it, where the API does not have a space in it. Is there something preventing you from doing that?
Wow. Am I reading your tone wrong or are you really ticked off at me? I apologize if I or my efforts have offended you in any way. As for not testing my scripts, I have an issue that I reported on about 3 months ago. I cannot start Forge without restarting my computer, sometimes several times. This can take quite a bit of time in and of itself, as my computer is somewhat old and slow to begin with. I would be happy to test my scripts in the somewhat limited way that I know how to test them if this issue was fixed. If you'd like to take a look at the issue, it can be found here: viewtopic.php?f=52&t=5192&hilit=Crash&start=180
squee1968
 
Posts: 254
Joined: 18 Nov 2011, 03:28
Has thanked: 110 times
Been thanked: 45 times

Re: Card Contributions

Postby friarsol » 15 May 2012, 17:49

squee1968 wrote:Wow. Am I reading your tone wrong or are you really ticked off at me? I apologize if I or my efforts have offended you in any way. As for not testing my scripts, I have an issue that I reported on about 3 months ago. I cannot start Forge without restarting my computer, sometimes several times. This can take quite a bit of time in and of itself, as my computer is somewhat old and slow to begin with. I would be happy to test my scripts in the somewhat limited way that I know how to test them if this issue was fixed. If you'd like to take a look at the issue, it can be found here: viewtopic.php?f=52&t=5192&hilit=Crash&start=180
Nope, definitely no tone intended. I was mostly trying to see if we can get you a functional environment, so you wouldn't have to be stuck by people being busy, and then the scripts could get some firsthand testing before being posted up. Things like an API being wrong would be caught immediately, whereas a card functioning slightly incorrectly isn't so easy to spot.

I thought I had remembered you saying there was an issue, but figured it'd be easier to ask then search blindly for what it was.

Edit: Also, that link doesn't seem to work for me since I sort my threads by newest instead of oldest.
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

PreviousNext

Return to Developer's Corner

Who is online

Users browsing this forum: No registered users and 70 guests

Main Menu

User Menu

Our Partners


Who is online

In total there are 70 users online :: 0 registered, 0 hidden and 70 guests (based on users active over the past 10 minutes)
Most users ever online was 7967 on 09 Sep 2025, 23:08

Users browsing this forum: No registered users and 70 guests

Login Form