From 79c18d28e2ba09af42568070ec8aa68bbfd246c6 Mon Sep 17 00:00:00 2001 From: ciaccona007 Date: Tue, 9 Jan 2018 12:40:39 -0800 Subject: [PATCH] Implement Chicken Egg --- Mage.Sets/src/mage/cards/c/ChickenEgg.java | 77 +++++++++++++++++++ Mage.Sets/src/mage/sets/Unglued.java | 1 + .../src/main/java/mage/constants/SubType.java | 2 + .../permanent/token/GiantChickenToken.java | 18 +++++ 4 files changed, 98 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/c/ChickenEgg.java create mode 100644 Mage/src/main/java/mage/game/permanent/token/GiantChickenToken.java diff --git a/Mage.Sets/src/mage/cards/c/ChickenEgg.java b/Mage.Sets/src/mage/cards/c/ChickenEgg.java new file mode 100644 index 00000000000..e25ee82fc7e --- /dev/null +++ b/Mage.Sets/src/mage/cards/c/ChickenEgg.java @@ -0,0 +1,77 @@ +package mage.cards.c; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.SacrificeSourceEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.SubType; +import mage.constants.TargetController; +import mage.game.Game; +import mage.game.permanent.token.GiantChickenToken; +import mage.players.Player; + +import java.util.UUID; + +/** + * + * @author ciaccona007 + */ + +public class ChickenEgg extends CardImpl { + + public ChickenEgg(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}"); + + this.subtype.add(SubType.EGG); + this.power = new MageInt(0); + this.toughness = new MageInt(1); + + // At the beginning of your upkeep, roll a six-sided die. If you roll a 6, sacrifice Chicken Egg and create a 4/4 red Giant Chicken creature token. + this.addAbility(new BeginningOfUpkeepTriggeredAbility(new ChickenEggEffect(), TargetController.YOU, false)); + } + + public ChickenEgg(final ChickenEgg card) { + super(card); + } + + @Override + public ChickenEgg copy() { + return new ChickenEgg(this); + } +} + +class ChickenEggEffect extends OneShotEffect { + + ChickenEggEffect() { + super(Outcome.Benefit); + this.staticText = "roll a six-sided die. If you roll a 6, sacrifice {this} and create a 4/4 red Giant Chicken creature token"; + } + + ChickenEggEffect(final ChickenEggEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + int result = controller.rollDice(game, 6); + if (result == 6) { + new SacrificeSourceEffect().apply(game, source); + return (new CreateTokenEffect(new GiantChickenToken(), 1)).apply(game, source); + } + } + return false; + } + + @Override + public ChickenEggEffect copy() { + return new ChickenEggEffect(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Unglued.java b/Mage.Sets/src/mage/sets/Unglued.java index 824c1b65b80..7c83ce1e062 100644 --- a/Mage.Sets/src/mage/sets/Unglued.java +++ b/Mage.Sets/src/mage/sets/Unglued.java @@ -20,6 +20,7 @@ public class Unglued extends ExpansionSet { private Unglued() { super("Unglued", "UGL", ExpansionSet.buildDate(1998, 8, 11), SetType.JOKESET); + cards.add(new SetCardInfo("Chicken Egg", 41, Rarity.COMMON, mage.cards.c.ChickenEgg.class)); cards.add(new SetCardInfo("Forest", 88, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(FrameStyle.UGL_FULL_ART_BASIC, false))); cards.add(new SetCardInfo("Island", 85, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(FrameStyle.UGL_FULL_ART_BASIC, false))); cards.add(new SetCardInfo("Mountain", 87, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(FrameStyle.UGL_FULL_ART_BASIC, false))); diff --git a/Mage/src/main/java/mage/constants/SubType.java b/Mage/src/main/java/mage/constants/SubType.java index 276dcfd1897..ddbb44d31f0 100644 --- a/Mage/src/main/java/mage/constants/SubType.java +++ b/Mage/src/main/java/mage/constants/SubType.java @@ -85,6 +85,7 @@ public enum SubType { CENTAUR("Centaur", SubTypeSet.CreatureType), CEREAN("Cerean", SubTypeSet.CreatureType, true), // Star Wars CEPHALID("Cephalid", SubTypeSet.CreatureType), + CHICKEN("Chicken", SubTypeSet.CreatureType), CHIMERA("Chimera", SubTypeSet.CreatureType), CHISS("Chiss", SubTypeSet.CreatureType, true), CITIZEN("Citizen", SubTypeSet.CreatureType), @@ -114,6 +115,7 @@ public enum SubType { DWARF("Dwarf", SubTypeSet.CreatureType), // E EFREET("Efreet", SubTypeSet.CreatureType), + EGG("Egg", SubTypeSet.CreatureType), ELDER("Elder", SubTypeSet.CreatureType), ELDRAZI("Eldrazi", SubTypeSet.CreatureType), ELEMENTAL("Elemental", SubTypeSet.CreatureType), diff --git a/Mage/src/main/java/mage/game/permanent/token/GiantChickenToken.java b/Mage/src/main/java/mage/game/permanent/token/GiantChickenToken.java new file mode 100644 index 00000000000..71d93e91af2 --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/GiantChickenToken.java @@ -0,0 +1,18 @@ +package mage.game.permanent.token; + +import mage.MageInt; +import mage.constants.CardType; +import mage.constants.SubType; + +public class GiantChickenToken extends Token { + + public GiantChickenToken() { + super("Giant Chicken", "4/4 red Giant Chicken creature token"); + cardType.add(CardType.CREATURE); + color.setRed(true); + subtype.add(SubType.GIANT); + subtype.add(SubType.CHICKEN); + power = new MageInt(4); + toughness = new MageInt(4); + } +}