[MID] Implemented Tavern Ruffian // Tavern Smasher

This commit is contained in:
Evan Kranzler 2021-09-02 21:22:54 -04:00
parent 693c790f51
commit dd45977a9b
6 changed files with 173 additions and 0 deletions

View file

@ -0,0 +1,43 @@
package mage.cards.t;
import mage.MageInt;
import mage.abilities.keyword.DayboundAbility;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class TavernRuffian extends CardImpl {
public TavernRuffian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.WARRIOR);
this.subtype.add(SubType.WEREWOLF);
this.power = new MageInt(2);
this.toughness = new MageInt(5);
this.transformable = true;
this.secondSideCardClazz = mage.cards.t.TavernSmasher.class;
// Daybound
this.addAbility(DayboundAbility.getInstance());
this.addAbility(new TransformAbility());
}
private TavernRuffian(final TavernRuffian card) {
super(card);
}
@Override
public TavernRuffian copy() {
return new TavernRuffian(this);
}
}

View file

@ -0,0 +1,40 @@
package mage.cards.t;
import mage.MageInt;
import mage.abilities.keyword.NightboundAbility;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class TavernSmasher extends CardImpl {
public TavernSmasher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF);
this.power = new MageInt(6);
this.toughness = new MageInt(5);
this.nightCard = true;
// Nightbound
this.addAbility(NightboundAbility.getInstance());
this.addAbility(new TransformAbility());
}
private TavernSmasher(final TavernSmasher card) {
super(card);
}
@Override
public TavernSmasher copy() {
return new TavernSmasher(this);
}
}

View file

@ -54,6 +54,8 @@ public final class InnistradMidnightHunt extends ExpansionSet {
cards.add(new SetCardInfo("Snarling Wolf", 199, Rarity.COMMON, mage.cards.s.SnarlingWolf.class)); cards.add(new SetCardInfo("Snarling Wolf", 199, Rarity.COMMON, mage.cards.s.SnarlingWolf.class));
cards.add(new SetCardInfo("Stormrider Spirit", 79, Rarity.COMMON, mage.cards.s.StormriderSpirit.class)); cards.add(new SetCardInfo("Stormrider Spirit", 79, Rarity.COMMON, mage.cards.s.StormriderSpirit.class));
cards.add(new SetCardInfo("Swamp", 272, Rarity.LAND, mage.cards.basiclands.Swamp.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Swamp", 272, Rarity.LAND, mage.cards.basiclands.Swamp.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Tavern Ruffian", 163, Rarity.COMMON, mage.cards.t.TavernRuffian.class));
cards.add(new SetCardInfo("Tavern Smasher", 163, Rarity.COMMON, mage.cards.t.TavernSmasher.class));
cards.add(new SetCardInfo("Triskaidekaphile", 81, Rarity.RARE, mage.cards.t.Triskaidekaphile.class)); cards.add(new SetCardInfo("Triskaidekaphile", 81, Rarity.RARE, mage.cards.t.Triskaidekaphile.class));
cards.add(new SetCardInfo("Unruly Mob", 40, Rarity.COMMON, mage.cards.u.UnrulyMob.class)); cards.add(new SetCardInfo("Unruly Mob", 40, Rarity.COMMON, mage.cards.u.UnrulyMob.class));
cards.add(new SetCardInfo("Wrenn and Seven", 208, Rarity.MYTHIC, mage.cards.w.WrennAndSeven.class)); cards.add(new SetCardInfo("Wrenn and Seven", 208, Rarity.MYTHIC, mage.cards.w.WrennAndSeven.class));

View file

@ -0,0 +1,43 @@
package mage.abilities.keyword;
import mage.abilities.MageSingleton;
import mage.abilities.StaticAbility;
import mage.constants.Zone;
import java.io.ObjectStreamException;
/**
* @author TheElk801
* TODO: Implement this
*/
public class DayboundAbility extends StaticAbility implements MageSingleton {
private static final DayboundAbility instance;
static {
instance = new DayboundAbility();
// instance.addIcon(DayboundAbilityIcon.instance); (needs to be added)
}
private Object readResolve() throws ObjectStreamException {
return instance;
}
public static DayboundAbility getInstance() {
return instance;
}
private DayboundAbility() {
super(Zone.ALL, null);
}
@Override
public String getRule() {
return "daybound <i>(If a player casts no spells during their own turn, it becomes night next turn.)</i>";
}
@Override
public DayboundAbility copy() {
return instance;
}
}

View file

@ -0,0 +1,43 @@
package mage.abilities.keyword;
import mage.abilities.MageSingleton;
import mage.abilities.StaticAbility;
import mage.constants.Zone;
import java.io.ObjectStreamException;
/**
* @author TheElk801
* TODO: Implement this
*/
public class NightboundAbility extends StaticAbility implements MageSingleton {
private static final NightboundAbility instance;
static {
instance = new NightboundAbility();
// instance.addIcon(NightboundAbilityIcon.instance); (needs to be added)
}
private Object readResolve() throws ObjectStreamException {
return instance;
}
public static NightboundAbility getInstance() {
return instance;
}
private NightboundAbility() {
super(Zone.ALL, null);
}
@Override
public String getRule() {
return "nightbound <i>(If a player casts at least two spells during their own turn, it becomes day next turn.)</i>";
}
@Override
public NightboundAbility copy() {
return instance;
}
}

View file

@ -16,6 +16,7 @@ Crew|number|
Cumulative upkeep|cost| Cumulative upkeep|cost|
Cycling|cost| Cycling|cost|
Dash|card, manaString| Dash|card, manaString|
Daybound|instance|
Deathtouch|instance| Deathtouch|instance|
Demonstrate|new| Demonstrate|new|
Delve|new| Delve|new|
@ -71,6 +72,7 @@ Mountainwalk|new|
Morph|card, cost| Morph|card, cost|
Mutate|card, manaString| Mutate|card, manaString|
Myriad|new| Myriad|new|
Nightbound|instance|
Ninjutsu|cost| Ninjutsu|cost|
Outlast|cost| Outlast|cost|
Partner|instance| Partner|instance|