forked from External/mage
implemented Afflict + simple HOU cards
This commit is contained in:
parent
ae640ee0b7
commit
5bcaafd738
7 changed files with 213 additions and 0 deletions
33
Mage.Sets/src/mage/cards/a/AdornedPouncer.java
Normal file
33
Mage.Sets/src/mage/cards/a/AdornedPouncer.java
Normal 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);
|
||||
}
|
||||
}
|
||||
32
Mage.Sets/src/mage/cards/k/KhenraEternal.java
Normal file
32
Mage.Sets/src/mage/cards/k/KhenraEternal.java
Normal 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);
|
||||
}
|
||||
}
|
||||
37
Mage.Sets/src/mage/cards/p/ProvenCombatant.java
Normal file
37
Mage.Sets/src/mage/cards/p/ProvenCombatant.java
Normal 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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
40
Mage.Sets/src/mage/cards/s/SinuousStriker.java
Normal file
40
Mage.Sets/src/mage/cards/s/SinuousStriker.java
Normal 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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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));
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue