implemented Afflict + simple HOU cards

This commit is contained in:
igoudt 2017-06-24 01:13:42 +02:00
parent ae640ee0b7
commit 5bcaafd738
7 changed files with 213 additions and 0 deletions

View file

@ -0,0 +1,33 @@
package mage.cards.a;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.keyword.DoubleStrikeAbility;
import mage.abilities.keyword.EternalizeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import java.util.UUID;
public class AdornedPouncer extends CardImpl{
public AdornedPouncer(UUID ownerId, CardSetInfo cardSetInfo){
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
subtype.add("Cat");
//double strike
addAbility(DoubleStrikeAbility.getInstance());
//eternalize 3WW
addAbility(new EternalizeAbility(new ManaCostsImpl("{3}{W}{W}"), this));
}
public AdornedPouncer(AdornedPouncer adornedPouncer){
super(adornedPouncer);
}
public AdornedPouncer copy(){
return new AdornedPouncer(this);
}
}

View file

@ -0,0 +1,32 @@
package mage.cards.k;
import mage.MageInt;
import mage.abilities.keyword.AfflictAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import java.util.UUID;
public class KhenraEternal extends CardImpl {
public KhenraEternal(UUID ownerId, CardSetInfo cardSetInfo){
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
subtype.add("Zombie");
subtype.add("Jackal");
subtype.add("Warrior");
power = new MageInt(2);
toughness = new MageInt(2);
addAbility(new AfflictAbility(1));
}
public KhenraEternal(final KhenraEternal khenraEternal){
super(khenraEternal);
}
public KhenraEternal copy(){
return new KhenraEternal(this);
}
}

View file

@ -0,0 +1,37 @@
package mage.cards.p;
import mage.MageInt;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.keyword.EternalizeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import java.util.UUID;
public class ProvenCombatant extends CardImpl {
public ProvenCombatant(UUID ownerId, CardSetInfo cardSetInfo){
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{U}");
subtype.add("Human");
subtype.add("Warrior");
power = new MageInt(1);
toughness = new MageInt(1);
//Eternalize 4UU
addAbility(new EternalizeAbility(new ManaCostsImpl("{4}{U}{U}"), this));
}
public ProvenCombatant(final ProvenCombatant provenCombatant){
super(provenCombatant);
}
public ProvenCombatant copy(){
return new ProvenCombatant(this);
}
}

View file

@ -0,0 +1,40 @@
package mage.cards.s;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.keyword.EternalizeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Zone;
import java.util.UUID;
public class SinuousStriker extends CardImpl {
public SinuousStriker(UUID ownerId, CardSetInfo cardSetInfo){
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
subtype.add("Naga");
subtype.add("Warrior");
power = new MageInt(2);
toughness = new MageInt(2);
//U : Sinious Striker gets +1/-1 until end of turn
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(+1, -1, Duration.EndOfTurn), new ManaCostsImpl("{U}")));
//Eternalize 3UU
this.addAbility(new EternalizeAbility(new ManaCostsImpl("{3}{U}{U}"), this));
}
public SinuousStriker(final SinuousStriker sinuousStriker){
super(sinuousStriker);
}
public SinuousStriker copy(){
return new SinuousStriker(this);
}
}

View file

@ -65,6 +65,7 @@ public class HourOfDevastation extends ExpansionSet {
cards.add(new SetCardInfo("Abrade", 83, Rarity.UNCOMMON, mage.cards.a.Abrade.class));
cards.add(new SetCardInfo("Accursed Horde", 56, Rarity.UNCOMMON, mage.cards.a.AccursedHorde.class));
cards.add(new SetCardInfo("Adorned Pouncer", 3, Rarity.RARE, mage.cards.a.AdornedPouncer.class));
cards.add(new SetCardInfo("Angel of the God-Pharaoh", 4, Rarity.UNCOMMON, mage.cards.a.AngelOfTheGodPharaoh.class));
cards.add(new SetCardInfo("Carrion Screecher", 61, Rarity.COMMON, mage.cards.c.CarrionScreecher.class));
cards.add(new SetCardInfo("Defiant Khenra", 89, Rarity.COMMON, mage.cards.d.DefiantKhenra.class));
@ -75,12 +76,15 @@ public class HourOfDevastation extends ExpansionSet {
cards.add(new SetCardInfo("Desert of the True", 174, Rarity.COMMON, mage.cards.d.DesertOfTheTrue.class));
cards.add(new SetCardInfo("Hour of Revelation", 15, Rarity.RARE, mage.cards.h.HourOfRevelation.class));
cards.add(new SetCardInfo("Inferno Jet", 99, Rarity.UNCOMMON, mage.cards.i.InfernoJet.class));
cards.add(new SetCardInfo("Khenra Eternal", 66, Rarity.COMMON, mage.cards.k.KhenraEternal.class));
cards.add(new SetCardInfo("Khenra Scrapper", 100, Rarity.COMMON, mage.cards.k.KhenraScrapper.class));
cards.add(new SetCardInfo("Marauding Boneslasher", 70, Rarity.COMMON, mage.cards.m.MaraudingBoneslasher.class));
cards.add(new SetCardInfo("Nicol Bolas, God-Pharoh", 140, Rarity.MYTHIC, mage.cards.n.NicolBolasGodPharoh.class));
cards.add(new SetCardInfo("Open Fire", 105, Rarity.COMMON, mage.cards.o.OpenFire.class));
cards.add(new SetCardInfo("Proven Combatant", 42, Rarity.COMMON, mage.cards.p.ProvenCombatant.class));
cards.add(new SetCardInfo("Ramunap Excavator", 129, Rarity.RARE, mage.cards.r.RamunapExcavator.class));
cards.add(new SetCardInfo("Samut, the Tested", 144, Rarity.MYTHIC, mage.cards.s.SamutTheTested.class));
cards.add(new SetCardInfo("Sinuous Striker", 45, Rarity.UNCOMMON, mage.cards.s.SinuousStriker.class));
cards.add(new SetCardInfo("Steadfast Sentinel", 24, Rarity.COMMON, mage.cards.s.SteadfastSentinel.class));
cards.add(new SetCardInfo("Supreme Will", 49, Rarity.UNCOMMON, mage.cards.s.SupremeWill.class));

View file

@ -0,0 +1,43 @@
package org.mage.test.cards.abilities.keywords;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
public class AfflictTest extends CardTestPlayerBase {
private String khenra = "Khenra Eternal";
private String elves = "Llanowar Elves";
@Test
public void testBecomesBlocked(){
addCard(Zone.BATTLEFIELD, playerA, khenra);
addCard(Zone.BATTLEFIELD, playerB, elves );
attack(1, playerA, khenra);
block(1, playerB, elves, khenra);
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertLife(playerB, 19);
}
@Test
public void testNotBlocked(){
addCard(Zone.BATTLEFIELD, playerA, khenra);
addCard(Zone.BATTLEFIELD, playerB, elves );
attack(1, playerA, khenra);
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertLife(playerB, 18);
}
}

View file

@ -0,0 +1,24 @@
package mage.abilities.keyword;
import mage.abilities.common.BecomesBlockedTriggeredAbility;
import mage.abilities.effects.common.LoseLifeDefendingPlayerEffect;
public class AfflictAbility extends BecomesBlockedTriggeredAbility {
private int lifeLoss;
@Override
public AfflictAbility copy() {
return new AfflictAbility(this);
}
public AfflictAbility(int amount){
super(new LoseLifeDefendingPlayerEffect(amount, true), false);
}
public AfflictAbility(final AfflictAbility afflictAbility){
super(afflictAbility);
lifeLoss = afflictAbility.lifeLoss;
}
}