mirror of
https://github.com/correl/mage.git
synced 2024-12-24 11:50:45 +00:00
New implementation for LevelUpAbility. All tests ok.
This commit is contained in:
parent
c2ea8246d2
commit
f39d5dbca1
26 changed files with 433 additions and 322 deletions
|
@ -27,7 +27,6 @@
|
|||
*/
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Rarity;
|
||||
import mage.MageInt;
|
||||
|
@ -35,14 +34,16 @@ import mage.abilities.Abilities;
|
|||
import mage.abilities.AbilitiesImpl;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.cards.LevelerCard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author North
|
||||
* @author North, noxx
|
||||
*/
|
||||
public class BeastbreakerOfBalaGed extends LevelerCard<BeastbreakerOfBalaGed> {
|
||||
|
||||
|
@ -58,11 +59,13 @@ public class BeastbreakerOfBalaGed extends LevelerCard<BeastbreakerOfBalaGed> {
|
|||
|
||||
this.addAbility(new LevelUpAbility(new ManaCostsImpl("{2}{G}")));
|
||||
|
||||
this.getLevels().add(new LevelAbility(1, 3, new AbilitiesImpl<Ability>(), 4, 4));
|
||||
|
||||
Abilities<Ability> levelAbilities = new AbilitiesImpl<Ability>();
|
||||
levelAbilities.add(TrampleAbility.getInstance());
|
||||
this.getLevels().add(new LevelAbility(4, -1, levelAbilities, 6, 6));
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(1, 3, new AbilitiesImpl<Ability>(), 4, 4),
|
||||
new LevelerCardBuilder.LevelAbility(4, -1, levelAbilities, 6, 6)
|
||||
);
|
||||
}
|
||||
|
||||
public BeastbreakerOfBalaGed(final BeastbreakerOfBalaGed card) {
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Rarity;
|
||||
import mage.Constants.Zone;
|
||||
|
@ -40,14 +39,16 @@ import mage.abilities.common.SimpleActivatedAbility;
|
|||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.DamageTargetEffect;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.cards.LevelerCard;
|
||||
import mage.target.common.TargetCreatureOrPlayer;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
* @author Loki, noxx
|
||||
*/
|
||||
public class BrimstoneMage extends LevelerCard<BrimstoneMage> {
|
||||
|
||||
|
@ -65,14 +66,16 @@ public class BrimstoneMage extends LevelerCard<BrimstoneMage> {
|
|||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost());
|
||||
ability.addTarget(new TargetCreatureOrPlayer());
|
||||
abilities1.add(ability);
|
||||
this.getLevels().add(new LevelAbility(1, 2, abilities1, 2, 3));
|
||||
|
||||
Abilities<Ability> abilities2 = new AbilitiesImpl<Ability>();
|
||||
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3), new TapSourceCost());
|
||||
ability.addTarget(new TargetCreatureOrPlayer());
|
||||
abilities2.add(ability);
|
||||
this.getLevels().add(new LevelAbility(3, -1, abilities2, 2, 4));
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(1, 2, abilities1, 2, 3),
|
||||
new LevelerCardBuilder.LevelAbility(3, -1, abilities2, 2, 4)
|
||||
);
|
||||
}
|
||||
|
||||
public BrimstoneMage (final BrimstoneMage card) {
|
||||
|
|
|
@ -27,19 +27,19 @@
|
|||
*/
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Rarity;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Abilities;
|
||||
import mage.abilities.AbilitiesImpl;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.keyword.FirstStrikeAbility;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.cards.LevelerCard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author North
|
||||
|
@ -58,11 +58,13 @@ public class CaravanEscort extends LevelerCard<CaravanEscort> {
|
|||
|
||||
this.addAbility(new LevelUpAbility(new ManaCostsImpl("{2}")));
|
||||
|
||||
this.getLevels().add(new LevelAbility(1, 4, new AbilitiesImpl<Ability>(), 2, 2));
|
||||
AbilitiesImpl<Ability> levelAbilities = new AbilitiesImpl<Ability>(FirstStrikeAbility.getInstance());
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(1, 4, new AbilitiesImpl<Ability>(), 2, 2),
|
||||
new LevelerCardBuilder.LevelAbility(5, -1, levelAbilities, 5, 5)
|
||||
);
|
||||
|
||||
Abilities<Ability> levelAbilities = new AbilitiesImpl<Ability>();
|
||||
levelAbilities.add(FirstStrikeAbility.getInstance());
|
||||
this.getLevels().add(new LevelAbility(5, -1, levelAbilities, 5, 5));
|
||||
setMaxLevelCounters(5);
|
||||
}
|
||||
|
||||
public CaravanEscort(final CaravanEscort card) {
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
*/
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Duration;
|
||||
import mage.Constants.Rarity;
|
||||
|
@ -40,11 +39,13 @@ import mage.abilities.common.SimpleStaticAbility;
|
|||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.continious.BoostControlledEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.cards.LevelerCard;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author North
|
||||
|
@ -71,12 +72,15 @@ public class CoralhelmCommander extends LevelerCard<CoralhelmCommander> {
|
|||
|
||||
Abilities<Ability> abilities1 = new AbilitiesImpl<Ability>();
|
||||
abilities1.add(FlyingAbility.getInstance());
|
||||
this.getLevels().add(new LevelAbility(2, 3, abilities1, 3, 3));
|
||||
|
||||
Abilities<Ability> abilities2 = new AbilitiesImpl<Ability>();
|
||||
abilities2.add(FlyingAbility.getInstance());
|
||||
abilities2.add(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, true)));
|
||||
this.getLevels().add(new LevelAbility(4, -1, abilities2, 4, 4));
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(2, 3, abilities1, 3, 3),
|
||||
new LevelerCardBuilder.LevelAbility(4, -1, abilities2, 4, 4)
|
||||
);
|
||||
}
|
||||
|
||||
public CoralhelmCommander(final CoralhelmCommander card) {
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Rarity;
|
||||
import mage.Constants.Zone;
|
||||
|
@ -41,13 +40,15 @@ import mage.abilities.costs.common.TapSourceCost;
|
|||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.DrawCardControllerEffect;
|
||||
import mage.abilities.effects.common.DrawDiscardControllerEffect;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.cards.LevelerCard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
* @author BetaSteward_at_googlemail.com, noxx
|
||||
*/
|
||||
public class EnclaveCryptologist extends LevelerCard<EnclaveCryptologist> {
|
||||
|
||||
|
@ -61,16 +62,17 @@ public class EnclaveCryptologist extends LevelerCard<EnclaveCryptologist> {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
this.addAbility(new LevelUpAbility(new ManaCostsImpl("{1}{U}")));
|
||||
Abilities<Ability> abilities1 = new AbilitiesImpl<Ability>();
|
||||
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawDiscardControllerEffect(), new TapSourceCost());
|
||||
abilities1.add(ability);
|
||||
this.getLevels().add(new LevelAbility(1, 2, abilities1, 0, 1));
|
||||
Abilities<Ability> abilities1 = new AbilitiesImpl<Ability>(ability);
|
||||
|
||||
Abilities<Ability> abilities2 = new AbilitiesImpl<Ability>();
|
||||
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardControllerEffect(1), new TapSourceCost());
|
||||
abilities2.add(ability);
|
||||
this.getLevels().add(new LevelAbility(3, -1, abilities2, 0, 1));
|
||||
Abilities<Ability> abilities2 = new AbilitiesImpl<Ability>(ability);
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(1, 2, abilities1, 0, 1),
|
||||
new LevelerCardBuilder.LevelAbility(3, -1, abilities2, 0, 1)
|
||||
);
|
||||
}
|
||||
|
||||
public EnclaveCryptologist (final EnclaveCryptologist card) {
|
||||
|
|
|
@ -28,8 +28,6 @@
|
|||
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.Constants;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Rarity;
|
||||
|
@ -41,14 +39,16 @@ import mage.abilities.common.SimpleActivatedAbility;
|
|||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.continious.BoostTargetEffect;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.cards.LevelerCard;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
* @author Loki, noxx
|
||||
*/
|
||||
public class GuulDrazAssassin extends LevelerCard<GuulDrazAssassin> {
|
||||
|
||||
|
@ -62,18 +62,23 @@ public class GuulDrazAssassin extends LevelerCard<GuulDrazAssassin> {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
this.addAbility(new LevelUpAbility(new ManaCostsImpl("{1}{B}")));
|
||||
|
||||
Abilities<Ability> abilities1 = new AbilitiesImpl<Ability>();
|
||||
Ability ability = new SimpleActivatedAbility(Constants.Zone.BATTLEFIELD, new BoostTargetEffect(-2, -2, Constants.Duration.EndOfTurn), new ManaCostsImpl("{B}"));
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
ability.addCost(new TapSourceCost());
|
||||
abilities1.add(ability);
|
||||
this.getLevels().add(new LevelAbility(2, 3, abilities1, 2, 2));
|
||||
|
||||
Abilities<Ability> abilities2 = new AbilitiesImpl<Ability>();
|
||||
Ability ability2 = new SimpleActivatedAbility(Constants.Zone.BATTLEFIELD, new BoostTargetEffect(-4, -4, Constants.Duration.EndOfTurn), new ManaCostsImpl("{B}"));
|
||||
ability2.addTarget(new TargetCreaturePermanent());
|
||||
ability2.addCost(new TapSourceCost());
|
||||
abilities2.add(ability2);
|
||||
this.getLevels().add(new LevelAbility(4, -1, abilities2, 4, 4));
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(2, 3, abilities1, 2, 2),
|
||||
new LevelerCardBuilder.LevelAbility(4, -1, abilities2, 4, 4)
|
||||
);
|
||||
}
|
||||
|
||||
public GuulDrazAssassin (final GuulDrazAssassin card) {
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
*/
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Rarity;
|
||||
import mage.MageInt;
|
||||
|
@ -35,15 +34,17 @@ import mage.abilities.Abilities;
|
|||
import mage.abilities.AbilitiesImpl;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.abilities.keyword.ShroudAbility;
|
||||
import mage.abilities.keyword.UnblockableAbility;
|
||||
import mage.cards.LevelerCard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author North
|
||||
* @author North, noxx
|
||||
*/
|
||||
public class HadaSpyPatrol extends LevelerCard<HadaSpyPatrol> {
|
||||
|
||||
|
@ -61,12 +62,15 @@ public class HadaSpyPatrol extends LevelerCard<HadaSpyPatrol> {
|
|||
|
||||
Abilities<Ability> abilities1 = new AbilitiesImpl<Ability>();
|
||||
abilities1.add(UnblockableAbility.getInstance());
|
||||
this.getLevels().add(new LevelAbility(1, 2, abilities1, 2, 2));
|
||||
|
||||
Abilities<Ability> abilities2 = new AbilitiesImpl<Ability>();
|
||||
abilities2.add(UnblockableAbility.getInstance());
|
||||
abilities2.add(ShroudAbility.getInstance());
|
||||
this.getLevels().add(new LevelAbility(3, -1, abilities2, 3, 3));
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(1, 2, abilities1, 2, 2),
|
||||
new LevelerCardBuilder.LevelAbility(3, -1, abilities2, 3, 3)
|
||||
);
|
||||
}
|
||||
|
||||
public HadaSpyPatrol(final HadaSpyPatrol card) {
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
*/
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Rarity;
|
||||
import mage.MageInt;
|
||||
|
@ -36,13 +35,15 @@ import mage.abilities.AbilitiesImpl;
|
|||
import mage.abilities.Ability;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.keyword.IslandwalkAbility;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.cards.LevelerCard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author North
|
||||
* @author North, noxx
|
||||
*/
|
||||
public class HalimarWavewatch extends LevelerCard<HalimarWavewatch> {
|
||||
|
||||
|
@ -58,11 +59,13 @@ public class HalimarWavewatch extends LevelerCard<HalimarWavewatch> {
|
|||
|
||||
this.addAbility(new LevelUpAbility(new ManaCostsImpl("{2}")));
|
||||
|
||||
this.getLevels().add(new LevelAbility(1, 4, new AbilitiesImpl<Ability>(), 0, 6));
|
||||
|
||||
Abilities<Ability> levelAbilities = new AbilitiesImpl<Ability>();
|
||||
levelAbilities.add(new IslandwalkAbility());
|
||||
this.getLevels().add(new LevelAbility(5, -1, levelAbilities, 6, 6));
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(1, 4, new AbilitiesImpl<Ability>(), 0, 6),
|
||||
new LevelerCardBuilder.LevelAbility(5, -1, levelAbilities, 6, 6)
|
||||
);
|
||||
}
|
||||
|
||||
public HalimarWavewatch(final HalimarWavewatch card) {
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Rarity;
|
||||
import mage.MageInt;
|
||||
|
@ -36,15 +35,16 @@ import mage.abilities.Abilities;
|
|||
import mage.abilities.AbilitiesImpl;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.abilities.keyword.VigilanceAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.LevelerCard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
* @author Loki, noxx
|
||||
*/
|
||||
public class IkiralOutrider extends LevelerCard<IkiralOutrider> {
|
||||
|
||||
|
@ -58,12 +58,17 @@ public class IkiralOutrider extends LevelerCard<IkiralOutrider> {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
this.addAbility(new LevelUpAbility(new ManaCostsImpl("{4}")));
|
||||
|
||||
Abilities<Ability> abilities1 = new AbilitiesImpl<Ability>();
|
||||
abilities1.add(VigilanceAbility.getInstance());
|
||||
this.getLevels().add(new LevelAbility(1, 3, abilities1, 2, 6));
|
||||
|
||||
Abilities<Ability> abilities2 = new AbilitiesImpl<Ability>();
|
||||
abilities2.add(VigilanceAbility.getInstance());
|
||||
this.getLevels().add(new LevelAbility(4, -1, abilities2, 3, 10));
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(1, 3, abilities1, 2, 6),
|
||||
new LevelerCardBuilder.LevelAbility(4, -1, abilities2, 3, 10)
|
||||
);
|
||||
}
|
||||
|
||||
public IkiralOutrider (final IkiralOutrider card) {
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Duration;
|
||||
import mage.Constants.Rarity;
|
||||
|
@ -42,17 +41,19 @@ import mage.abilities.common.SimpleActivatedAbility;
|
|||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.continious.GainAbilityControlledEffect;
|
||||
import mage.abilities.effects.common.BasicManaEffect;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.effects.common.continious.GainAbilityControlledEffect;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.abilities.mana.SimpleManaAbility;
|
||||
import mage.cards.LevelerCard;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
* @author BetaSteward_at_googlemail.com, noxx
|
||||
*/
|
||||
public class JoragaTreespeaker extends LevelerCard<JoragaTreespeaker> {
|
||||
|
||||
|
@ -76,7 +77,6 @@ public class JoragaTreespeaker extends LevelerCard<JoragaTreespeaker> {
|
|||
|
||||
Abilities<Ability> abilities1 = new AbilitiesImpl<Ability>();
|
||||
abilities1.add(new SimpleManaAbility(Zone.BATTLEFIELD, new BasicManaEffect(Mana.GreenMana(2)), new TapSourceCost()));
|
||||
this.getLevels().add(new LevelAbility(1, 4, abilities1, 1, 2));
|
||||
|
||||
Abilities<Ability> abilities2 = new AbilitiesImpl<Ability>();
|
||||
abilities2.add(new SimpleStaticAbility(Zone.BATTLEFIELD,
|
||||
|
@ -84,7 +84,11 @@ public class JoragaTreespeaker extends LevelerCard<JoragaTreespeaker> {
|
|||
new BasicManaEffect(Mana.GreenMana(2)),
|
||||
new TapSourceCost()),
|
||||
Duration.WhileOnBattlefield, filter)));
|
||||
this.getLevels().add(new LevelAbility(5, -1, abilities2, 1, 4));
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(1, 4, abilities1, 1, 2),
|
||||
new LevelerCardBuilder.LevelAbility(5, -1, abilities2, 1, 4)
|
||||
);
|
||||
}
|
||||
|
||||
public JoragaTreespeaker(final JoragaTreespeaker card) {
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
*/
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Duration;
|
||||
import mage.Constants.Rarity;
|
||||
|
@ -39,14 +38,16 @@ import mage.abilities.Ability;
|
|||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.continious.BoostControlledEffect;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.cards.LevelerCard;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author North
|
||||
* @author North, noxx
|
||||
*/
|
||||
public class KabiraVindicator extends LevelerCard<KabiraVindicator> {
|
||||
|
||||
|
@ -64,11 +65,14 @@ public class KabiraVindicator extends LevelerCard<KabiraVindicator> {
|
|||
|
||||
Abilities<Ability> abilities1 = new AbilitiesImpl<Ability>();
|
||||
abilities1.add(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, new FilterCreaturePermanent(), true)));
|
||||
this.getLevels().add(new LevelAbility(2, 4, abilities1, 3, 6));
|
||||
|
||||
Abilities<Ability> abilities2 = new AbilitiesImpl<Ability>();
|
||||
abilities2.add(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(2, 2, Duration.WhileOnBattlefield, new FilterCreaturePermanent(), true)));
|
||||
this.getLevels().add(new LevelAbility(5, -1, abilities2, 4, 8));
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(2, 4, abilities1, 3, 6),
|
||||
new LevelerCardBuilder.LevelAbility(5, -1, abilities2, 4, 8)
|
||||
);
|
||||
}
|
||||
|
||||
public KabiraVindicator(final KabiraVindicator card) {
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Duration;
|
||||
import mage.Constants.Rarity;
|
||||
|
@ -41,14 +40,16 @@ import mage.abilities.common.SimpleActivatedAbility;
|
|||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.continious.BoostSourceEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.cards.LevelerCard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
* @author BetaSteward_at_googlemail.com, noxx
|
||||
*/
|
||||
public class KarganDragonlord extends LevelerCard<KarganDragonlord> {
|
||||
|
||||
|
@ -62,14 +63,19 @@ public class KarganDragonlord extends LevelerCard<KarganDragonlord> {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
this.addAbility(new LevelUpAbility(new ManaCostsImpl("{R}")));
|
||||
|
||||
Abilities<Ability> abilities1 = new AbilitiesImpl<Ability>();
|
||||
abilities1.add(FlyingAbility.getInstance());
|
||||
this.getLevels().add(new LevelAbility(4, 7, abilities1, 4, 4));
|
||||
|
||||
Abilities<Ability> abilities2 = new AbilitiesImpl<Ability>();
|
||||
abilities2.add(FlyingAbility.getInstance());
|
||||
abilities2.add(TrampleAbility.getInstance());
|
||||
abilities2.add(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{R}")));
|
||||
this.getLevels().add(new LevelAbility(8, -1, abilities2, 8, 8));
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(4, 7, abilities1, 4, 4),
|
||||
new LevelerCardBuilder.LevelAbility(8, -1, abilities2, 8, 8)
|
||||
);
|
||||
}
|
||||
|
||||
public KarganDragonlord(final KarganDragonlord card) {
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
*/
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Rarity;
|
||||
import mage.Constants.Zone;
|
||||
|
@ -39,14 +38,15 @@ import mage.abilities.common.SimpleActivatedAbility;
|
|||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.cards.LevelerCard;
|
||||
import mage.game.permanent.token.ElephantToken;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author North
|
||||
* @author North, noxx
|
||||
*/
|
||||
public class KazanduTuskcaller extends LevelerCard<KazanduTuskcaller> {
|
||||
|
||||
|
@ -66,13 +66,16 @@ public class KazanduTuskcaller extends LevelerCard<KazanduTuskcaller> {
|
|||
abilities1.add(new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||
new CreateTokenEffect(new ElephantToken()),
|
||||
new TapSourceCost()));
|
||||
this.getLevels().add(new LevelAbility(2, 5, abilities1, 1, 1));
|
||||
|
||||
Abilities<Ability> abilities2 = new AbilitiesImpl<Ability>();
|
||||
abilities2.add(new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||
new CreateTokenEffect(new ElephantToken(), 2),
|
||||
new TapSourceCost()));
|
||||
this.getLevels().add(new LevelAbility(6, -1, abilities2, 1, 1));
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(2, 5, abilities1, 1, 1),
|
||||
new LevelerCardBuilder.LevelAbility(6, -1, abilities2, 1, 1)
|
||||
);
|
||||
}
|
||||
|
||||
public KazanduTuskcaller(final KazanduTuskcaller card) {
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
*/
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Rarity;
|
||||
import mage.MageInt;
|
||||
|
@ -36,14 +35,16 @@ import mage.abilities.AbilitiesImpl;
|
|||
import mage.abilities.Ability;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.abilities.keyword.VigilanceAbility;
|
||||
import mage.cards.LevelerCard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author North
|
||||
* @author North, noxx
|
||||
*/
|
||||
public class KnightOfCliffhaven extends LevelerCard<KnightOfCliffhaven> {
|
||||
|
||||
|
@ -61,12 +62,15 @@ public class KnightOfCliffhaven extends LevelerCard<KnightOfCliffhaven> {
|
|||
|
||||
Abilities<Ability> abilities1 = new AbilitiesImpl<Ability>();
|
||||
abilities1.add(FlyingAbility.getInstance());
|
||||
this.getLevels().add(new LevelAbility(1, 3, abilities1, 2, 3));
|
||||
|
||||
Abilities<Ability> abilities2 = new AbilitiesImpl<Ability>();
|
||||
abilities2.add(FlyingAbility.getInstance());
|
||||
abilities2.add(VigilanceAbility.getInstance());
|
||||
this.getLevels().add(new LevelAbility(4, -1, abilities2, 4, 4));
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(1, 3, abilities1, 2, 3),
|
||||
new LevelerCardBuilder.LevelAbility(4, -1, abilities2, 4, 4)
|
||||
);
|
||||
}
|
||||
|
||||
public KnightOfCliffhaven(final KnightOfCliffhaven card) {
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.Constants;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Outcome;
|
||||
|
@ -40,16 +39,18 @@ import mage.abilities.Ability;
|
|||
import mage.abilities.TriggeredAbilityImpl;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.cards.LevelerCard;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.turn.TurnMod;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
* @author BetaSteward_at_googlemail.com, noxx
|
||||
*/
|
||||
public class LighthouseChronologist extends LevelerCard<LighthouseChronologist> {
|
||||
|
||||
|
@ -63,13 +64,16 @@ public class LighthouseChronologist extends LevelerCard<LighthouseChronologist>
|
|||
this.toughness = new MageInt(3);
|
||||
|
||||
this.addAbility(new LevelUpAbility(new ManaCostsImpl("{U}")));
|
||||
|
||||
Abilities<Ability> abilities1 = new AbilitiesImpl<Ability>();
|
||||
this.getLevels().add(new LevelAbility(4, 6, abilities1, 2, 4));
|
||||
|
||||
Abilities<Ability> abilities2 = new AbilitiesImpl<Ability>();
|
||||
abilities2.add(new LighthouseChronologistAbility());
|
||||
this.getLevels().add(new LevelAbility(7, -1, abilities2, 3, 5));
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(4, 6, abilities1, 2, 4),
|
||||
new LevelerCardBuilder.LevelAbility(7, -1, abilities2, 3, 5)
|
||||
);
|
||||
}
|
||||
|
||||
public LighthouseChronologist (final LighthouseChronologist card) {
|
||||
|
|
|
@ -28,8 +28,6 @@
|
|||
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Rarity;
|
||||
import mage.MageInt;
|
||||
|
@ -39,13 +37,15 @@ import mage.abilities.Ability;
|
|||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.keyword.DeathtouchAbility;
|
||||
import mage.abilities.keyword.FirstStrikeAbility;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.cards.LevelerCard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
* @author Loki, noxx
|
||||
*/
|
||||
public class NirkanaCutthroat extends LevelerCard<NirkanaCutthroat> {
|
||||
|
||||
|
@ -61,12 +61,15 @@ public class NirkanaCutthroat extends LevelerCard<NirkanaCutthroat> {
|
|||
|
||||
Abilities<Ability> abilities1 = new AbilitiesImpl<Ability>();
|
||||
abilities1.add(DeathtouchAbility.getInstance());
|
||||
this.getLevels().add(new LevelAbility(1, 2, abilities1, 4, 3));
|
||||
|
||||
Abilities<Ability> abilities2 = new AbilitiesImpl<Ability>();
|
||||
abilities2.add(FirstStrikeAbility.getInstance());
|
||||
abilities2.add(DeathtouchAbility.getInstance());
|
||||
this.getLevels().add(new LevelAbility(3, -1, abilities2, 5, 4));
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(1, 2, abilities1, 4, 3),
|
||||
new LevelerCardBuilder.LevelAbility(3, -1, abilities2, 5, 4)
|
||||
);
|
||||
}
|
||||
|
||||
public NirkanaCutthroat (final NirkanaCutthroat card) {
|
||||
|
|
|
@ -28,8 +28,6 @@
|
|||
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.Constants;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Rarity;
|
||||
|
@ -40,15 +38,15 @@ import mage.abilities.Ability;
|
|||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.RegenerateSourceEffect;
|
||||
import mage.abilities.keyword.DeathtouchAbility;
|
||||
import mage.abilities.keyword.FirstStrikeAbility;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.cards.LevelerCard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
* @author Loki, noxx
|
||||
*/
|
||||
public class NullChampion extends LevelerCard<NullChampion> {
|
||||
|
||||
|
@ -63,11 +61,14 @@ public class NullChampion extends LevelerCard<NullChampion> {
|
|||
this.addAbility(new LevelUpAbility(new ManaCostsImpl("{3}")));
|
||||
|
||||
Abilities<Ability> abilities1 = new AbilitiesImpl<Ability>();
|
||||
this.getLevels().add(new LevelAbility(1, 3, abilities1, 4, 2));
|
||||
|
||||
Abilities<Ability> abilities2 = new AbilitiesImpl<Ability>();
|
||||
abilities2.add(new SimpleActivatedAbility(Constants.Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{B}")));
|
||||
this.getLevels().add(new LevelAbility(4, -1, abilities2, 7, 3));
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(1, 3, abilities1, 4, 2),
|
||||
new LevelerCardBuilder.LevelAbility(4, -1, abilities2, 7, 3)
|
||||
);
|
||||
}
|
||||
|
||||
public NullChampion (final NullChampion card) {
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
*/
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Rarity;
|
||||
import mage.MageInt;
|
||||
|
@ -36,13 +35,15 @@ import mage.abilities.AbilitiesImpl;
|
|||
import mage.abilities.Ability;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.cards.LevelerCard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author North
|
||||
* @author North, noxx
|
||||
*/
|
||||
public class SkywatcherAdept extends LevelerCard<SkywatcherAdept> {
|
||||
|
||||
|
@ -60,11 +61,14 @@ public class SkywatcherAdept extends LevelerCard<SkywatcherAdept> {
|
|||
|
||||
Abilities<Ability> abilities1 = new AbilitiesImpl<Ability>();
|
||||
abilities1.add(FlyingAbility.getInstance());
|
||||
this.getLevels().add(new LevelAbility(1, 2, abilities1, 2, 2));
|
||||
|
||||
Abilities<Ability> abilities2 = new AbilitiesImpl<Ability>();
|
||||
abilities2.add(FlyingAbility.getInstance());
|
||||
this.getLevels().add(new LevelAbility(3, -1, abilities2, 4, 2));
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(1, 2, abilities1, 2, 2),
|
||||
new LevelerCardBuilder.LevelAbility(3, -1, abilities2, 4, 2)
|
||||
);
|
||||
}
|
||||
|
||||
public SkywatcherAdept(final SkywatcherAdept card) {
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Rarity;
|
||||
import mage.MageInt;
|
||||
|
@ -38,13 +37,15 @@ import mage.abilities.Ability;
|
|||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.keyword.DoubleStrikeAbility;
|
||||
import mage.abilities.keyword.FirstStrikeAbility;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.cards.LevelerCard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
* @author Loki, noxx
|
||||
*/
|
||||
public class StudentOfWarfare extends LevelerCard<StudentOfWarfare> {
|
||||
|
||||
|
@ -60,10 +61,14 @@ public class StudentOfWarfare extends LevelerCard<StudentOfWarfare> {
|
|||
this.addAbility(new LevelUpAbility(new ManaCostsImpl("{W}")));
|
||||
Abilities<Ability> abilities1 = new AbilitiesImpl<Ability>();
|
||||
abilities1.add(FirstStrikeAbility.getInstance());
|
||||
this.getLevels().add(new LevelAbility(2, 6, abilities1, 3, 3));
|
||||
|
||||
Abilities<Ability> abilities2 = new AbilitiesImpl<Ability>();
|
||||
abilities2.add(DoubleStrikeAbility.getInstance());
|
||||
this.getLevels().add(new LevelAbility(7, -1, abilities2, 4, 4));
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(2, 6, abilities1, 3, 3),
|
||||
new LevelerCardBuilder.LevelAbility(7, -1, abilities2, 4, 4)
|
||||
);
|
||||
}
|
||||
|
||||
public StudentOfWarfare (final StudentOfWarfare card) {
|
||||
|
|
|
@ -40,7 +40,7 @@ import mage.cards.LevelerCard;
|
|||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author North
|
||||
* @author North, noxx
|
||||
*/
|
||||
public class TranscendentMaster extends LevelerCard<TranscendentMaster> {
|
||||
|
||||
|
@ -61,9 +61,9 @@ public class TranscendentMaster extends LevelerCard<TranscendentMaster> {
|
|||
Abilities<Ability> abilities2 = new AbilitiesImpl<Ability>(LifelinkAbility.getInstance(),
|
||||
IndestructibleAbility.getInstance());
|
||||
|
||||
LevelAbilityBuilder.construct(this,
|
||||
new LevelAbility(6, 11, abilities1, 6, 6),
|
||||
new LevelAbility(12, -1, abilities2, 9, 9)
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(6, 11, abilities1, 6, 6),
|
||||
new LevelerCardBuilder.LevelAbility(12, -1, abilities2, 9, 9)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
*/
|
||||
package mage.sets.riseoftheeldrazi;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Duration;
|
||||
import mage.Constants.Rarity;
|
||||
|
@ -38,15 +37,17 @@ import mage.abilities.Ability;
|
|||
import mage.abilities.EvasionAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.RestrictionEffect;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
import mage.abilities.keyword.LevelUpAbility;
|
||||
import mage.abilities.keyword.LevelerCardBuilder;
|
||||
import mage.cards.LevelerCard;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author North
|
||||
* @author North, noxx
|
||||
*/
|
||||
public class ZulaportEnforcer extends LevelerCard<ZulaportEnforcer> {
|
||||
|
||||
|
@ -61,13 +62,18 @@ public class ZulaportEnforcer extends LevelerCard<ZulaportEnforcer> {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
this.addAbility(new LevelUpAbility(new ManaCostsImpl("{4}")));
|
||||
|
||||
// LEVEL 1-2: 3/3
|
||||
this.getLevels().add(new LevelAbility(1, 2, new AbilitiesImpl<Ability>(), 3, 3));
|
||||
|
||||
// LEVEL 3+: 5/5
|
||||
// Zulaport Enforcer can't be blocked except by black creatures.
|
||||
Abilities<Ability> levelAbilities = new AbilitiesImpl<Ability>();
|
||||
levelAbilities.add(ZulaportEnforcerAbility.getInstance());
|
||||
this.getLevels().add(new LevelAbility(3, -1, levelAbilities, 5, 5));
|
||||
|
||||
LevelerCardBuilder.construct(this,
|
||||
new LevelerCardBuilder.LevelAbility(1, 2, new AbilitiesImpl<Ability>(), 3, 3),
|
||||
new LevelerCardBuilder.LevelAbility(3, -1, levelAbilities, 5, 5)
|
||||
);
|
||||
}
|
||||
|
||||
public ZulaportEnforcer(final ZulaportEnforcer card) {
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
package org.mage.test.ai;
|
||||
|
||||
import junit.framework.Assert;
|
||||
import mage.Constants;
|
||||
import mage.counters.Counter;
|
||||
import mage.counters.CounterType;
|
||||
import mage.game.permanent.Permanent;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestBase;
|
||||
|
||||
import java.util.Map;
|
||||
import org.junit.Ignore;
|
||||
|
||||
/**
|
||||
* Make sure AI uses level up ability, but not too much (over the max useful level - Issue 441).
|
||||
*
|
||||
* @author ayratn
|
||||
*/
|
||||
public class LevelUpAbilityTest extends CardTestBase {
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void testLevelUpAbilityUsage() {
|
||||
addCard(Constants.Zone.BATTLEFIELD, playerA, "Transcendent Master");
|
||||
addCard(Constants.Zone.BATTLEFIELD, playerA, "Swamp", 15);
|
||||
setStopOnTurn(3);
|
||||
|
||||
execute();
|
||||
|
||||
Permanent master = getPermanent("Transcendent Master", playerA.getId());
|
||||
Assert.assertNotNull(master);
|
||||
|
||||
System.out.println("Results:");
|
||||
for (Map.Entry<String, Counter> counter : master.getCounters().entrySet()) {
|
||||
System.out.println(counter.getKey() + " : " + counter.getValue().getName() + " : " + counter.getValue().getCount());
|
||||
}
|
||||
|
||||
Assert.assertNotNull(master.getCounters());
|
||||
Assert.assertFalse(master.getCounters().isEmpty());
|
||||
Assert.assertEquals(12, master.getCounters().getCount(CounterType.LEVEL));
|
||||
}
|
||||
}
|
|
@ -1,112 +0,0 @@
|
|||
/*
|
||||
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are
|
||||
* permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||
* conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* The views and conclusions contained in the software and documentation are those of the
|
||||
* authors and should not be interpreted as representing official policies, either expressed
|
||||
* or implied, of BetaSteward_at_googlemail.com.
|
||||
*/
|
||||
|
||||
package mage.abilities.keyword;
|
||||
|
||||
import mage.Constants.Zone;
|
||||
import mage.abilities.Abilities;
|
||||
import mage.abilities.AbilitiesImpl;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.StaticAbility;
|
||||
|
||||
/**
|
||||
* The implementation by BetaSteward was discarded as requires special handling in Mage.Core.
|
||||
*
|
||||
* Instead it was replaced by conditional continuous effects and builder pattern.
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
* @author noxx
|
||||
*/
|
||||
public class LevelAbility extends StaticAbility<LevelAbility> {
|
||||
|
||||
private int level1;
|
||||
private int level2;
|
||||
private int power;
|
||||
private int toughness;
|
||||
|
||||
private Abilities<Ability> abilities = new AbilitiesImpl<Ability>();
|
||||
|
||||
public LevelAbility(int level1, int level2, Abilities<Ability> abilities, int power, int toughness) {
|
||||
super(Zone.BATTLEFIELD, null);
|
||||
this.level1 = level1;
|
||||
this.level2 = level2;
|
||||
this.abilities.addAll(abilities);
|
||||
this.power = power;
|
||||
this.toughness = toughness;
|
||||
}
|
||||
|
||||
public LevelAbility(LevelAbility ability) {
|
||||
super(ability);
|
||||
this.level1 = ability.level1;
|
||||
this.level2 = ability.level2;
|
||||
this.abilities = ability.abilities.copy();
|
||||
this.power = ability.power;
|
||||
this.toughness = ability.toughness;
|
||||
}
|
||||
|
||||
public int getLevel1() {
|
||||
return level1;
|
||||
}
|
||||
|
||||
public int getLevel2() {
|
||||
return level2;
|
||||
}
|
||||
|
||||
public Abilities<Ability> getAbilities() {
|
||||
return abilities;
|
||||
}
|
||||
|
||||
public int getPower() {
|
||||
return power;
|
||||
}
|
||||
|
||||
public int getToughness() {
|
||||
return toughness;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRule() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("Level ").append(level1);
|
||||
if (level2 == -1)
|
||||
sb.append("+");
|
||||
else
|
||||
sb.append("-").append(level2);
|
||||
sb.append(": ").append(power).append("/").append(toughness).append(" ");
|
||||
for (String rule: abilities.getRules("{this}")) {
|
||||
sb.append(rule).append(" ");
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public LevelAbility copy() {
|
||||
return new LevelAbility(this);
|
||||
}
|
||||
|
||||
}
|
232
Mage/src/mage/abilities/keyword/LevelerCardBuilder.java
Normal file
232
Mage/src/mage/abilities/keyword/LevelerCardBuilder.java
Normal file
|
@ -0,0 +1,232 @@
|
|||
/*
|
||||
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are
|
||||
* permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||
* conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* The views and conclusions contained in the software and documentation are those of the
|
||||
* authors and should not be interpreted as representing official policies, either expressed
|
||||
* or implied, of BetaSteward_at_googlemail.com.
|
||||
*/
|
||||
|
||||
package mage.abilities.keyword;
|
||||
|
||||
import mage.Constants;
|
||||
import mage.Constants.Zone;
|
||||
import mage.abilities.Abilities;
|
||||
import mage.abilities.AbilitiesImpl;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.HasCounterCondition;
|
||||
import mage.abilities.decorator.ConditionalContinousEffect;
|
||||
import mage.abilities.effects.ContinuousEffect;
|
||||
import mage.abilities.effects.common.continious.GainAbilitySourceEffect;
|
||||
import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.LevelerCard;
|
||||
import mage.counters.CounterType;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* The implementation by BetaSteward was discarded as requires special handling in Mage.Core.
|
||||
*
|
||||
* Instead it was replaced by conditional continuous effects and builder pattern.
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
* @author noxx
|
||||
*/
|
||||
public class LevelerCardBuilder {
|
||||
|
||||
private int level1;
|
||||
private int level2;
|
||||
private int power;
|
||||
private int toughness;
|
||||
private String rule = "";
|
||||
|
||||
private Abilities<Ability> abilities = new AbilitiesImpl<Ability>();
|
||||
|
||||
/**
|
||||
* Main method constructing ability.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public List<Ability> build() {
|
||||
List<Ability> constructed = new ArrayList<Ability>();
|
||||
|
||||
Condition condition = new HasCounterCondition(CounterType.LEVEL, level1, level2);
|
||||
for (Ability ability : abilities) {
|
||||
ContinuousEffect effect = new GainAbilitySourceEffect(ability);
|
||||
ConditionalContinousEffect abEffect = new ConditionalContinousEffect(effect, condition, "");
|
||||
constructed.add(new SimpleStaticAbility(Zone.BATTLEFIELD, abEffect));
|
||||
}
|
||||
|
||||
ContinuousEffect effect = new SetPowerToughnessSourceEffect(power, toughness, Constants.Duration.WhileOnBattlefield);
|
||||
ConditionalContinousEffect ptEffect = new ConditionalContinousEffect(effect, condition, rule);
|
||||
constructed.add(new SimpleStaticAbility(Zone.BATTLEFIELD, ptEffect));
|
||||
|
||||
return constructed;
|
||||
}
|
||||
|
||||
public LevelerCardBuilder setLevel1(int level1) {
|
||||
this.level1 = level1;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LevelerCardBuilder setLevel2(int level2) {
|
||||
this.level2 = level2;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LevelerCardBuilder setPower(int power) {
|
||||
this.power = power;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LevelerCardBuilder setToughness(int toughness) {
|
||||
this.toughness = toughness;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LevelerCardBuilder addAbility(Ability ability) {
|
||||
this.abilities.add(ability);
|
||||
return this;
|
||||
}
|
||||
|
||||
public LevelerCardBuilder setRule(String rule) {
|
||||
this.rule = rule;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LevelerCardBuilder reset() {
|
||||
this.level1 = 0;
|
||||
this.level2 = 0;
|
||||
this.power = 0;
|
||||
this.toughness = 0;
|
||||
this.abilities.clear();
|
||||
this.rule = "";
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add abilities to card to enable switching between levels.
|
||||
*
|
||||
* @param card
|
||||
* @param levelAbilities
|
||||
*/
|
||||
public static void construct(Card card, LevelAbility... levelAbilities) {
|
||||
LevelerCardBuilder builder = new LevelerCardBuilder();
|
||||
|
||||
for (LevelAbility levelAbility : levelAbilities) {
|
||||
// set main params
|
||||
builder = builder
|
||||
.reset()
|
||||
.setLevel1(levelAbility.getLevel1())
|
||||
.setLevel2(levelAbility.getLevel2() == -1 ? Integer.MAX_VALUE : levelAbility.getLevel2())
|
||||
.setPower(levelAbility.getPower())
|
||||
.setToughness(levelAbility.getToughness())
|
||||
.setRule(levelAbility.getRule());
|
||||
|
||||
// set abilities that give the next level
|
||||
for (Ability addedAbility : levelAbility.getAbilities()) {
|
||||
builder.addAbility(addedAbility);
|
||||
}
|
||||
|
||||
// build static abilities and add them to card
|
||||
for (Ability simpleStaticAbility : builder.build()) {
|
||||
card.addAbility(simpleStaticAbility);
|
||||
}
|
||||
}
|
||||
|
||||
// set max level counters (for ai)
|
||||
if (card instanceof LevelerCard) {
|
||||
int maxValue = 0;
|
||||
for (LevelAbility levelAbility : levelAbilities) {
|
||||
if (levelAbility.getLevel1() > maxValue) {
|
||||
maxValue = levelAbility.getLevel1();
|
||||
}
|
||||
}
|
||||
((LevelerCard) card).setMaxLevelCounters(maxValue);
|
||||
}
|
||||
}
|
||||
|
||||
public static class LevelAbility {
|
||||
|
||||
private int level1;
|
||||
private int level2;
|
||||
private int power;
|
||||
private int toughness;
|
||||
|
||||
private Abilities<Ability> abilities = new AbilitiesImpl<Ability>();
|
||||
|
||||
public LevelAbility(int level1, int level2, Abilities<Ability> abilities, int power, int toughness) {
|
||||
this.level1 = level1;
|
||||
this.level2 = level2;
|
||||
this.abilities.addAll(abilities);
|
||||
this.power = power;
|
||||
this.toughness = toughness;
|
||||
}
|
||||
|
||||
public LevelAbility(LevelAbility ability) {
|
||||
this.level1 = ability.level1;
|
||||
this.level2 = ability.level2;
|
||||
this.abilities = ability.abilities.copy();
|
||||
this.power = ability.power;
|
||||
this.toughness = ability.toughness;
|
||||
}
|
||||
|
||||
public int getLevel1() {
|
||||
return level1;
|
||||
}
|
||||
|
||||
public int getLevel2() {
|
||||
return level2;
|
||||
}
|
||||
|
||||
public Abilities<Ability> getAbilities() {
|
||||
return abilities;
|
||||
}
|
||||
|
||||
public int getPower() {
|
||||
return power;
|
||||
}
|
||||
|
||||
public int getToughness() {
|
||||
return toughness;
|
||||
}
|
||||
|
||||
public String getRule() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("Level ").append(level1);
|
||||
if (level2 == -1)
|
||||
sb.append("+");
|
||||
else
|
||||
sb.append("-").append(level2);
|
||||
sb.append(": ").append(power).append("/").append(toughness).append(" ");
|
||||
for (String rule: abilities.getRules("{this}")) {
|
||||
sb.append(rule).append(" ");
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -30,10 +30,7 @@ package mage.cards;
|
|||
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.Rarity;
|
||||
import mage.abilities.keyword.LevelAbility;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
|
@ -42,7 +39,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public abstract class LevelerCard<T extends LevelerCard<T>> extends CardImpl<T> {
|
||||
|
||||
protected List<LevelAbility> levels = new ArrayList<LevelAbility>();
|
||||
private int maxLevelCounters;
|
||||
|
||||
public LevelerCard(UUID ownerId, int cardNumber, String name, Rarity rarity, CardType[] cardTypes, String costs) {
|
||||
super(ownerId, cardNumber, name, rarity, cardTypes, costs);
|
||||
|
@ -50,38 +47,13 @@ public abstract class LevelerCard<T extends LevelerCard<T>> extends CardImpl<T>
|
|||
|
||||
public LevelerCard(LevelerCard card) {
|
||||
super(card);
|
||||
for (LevelAbility ability: (List<LevelAbility>)card.levels) {
|
||||
this.levels.add(ability.copy());
|
||||
}
|
||||
}
|
||||
|
||||
public List<LevelAbility> getLevels() {
|
||||
return levels;
|
||||
}
|
||||
|
||||
public LevelAbility getLevel(int level) {
|
||||
for (LevelAbility levelerLevel: levels) {
|
||||
if (level >= levelerLevel.getLevel1() && (levelerLevel.getLevel2() == -1 || level <= levelerLevel.getLevel2()))
|
||||
return levelerLevel;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public int getMaxLevelCounters() {
|
||||
for (LevelAbility levelerLevel: levels) {
|
||||
if (levelerLevel.getLevel2() == -1)
|
||||
return levelerLevel.getLevel1();
|
||||
}
|
||||
return 0;
|
||||
return maxLevelCounters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getRules() {
|
||||
List<String> rules = new ArrayList<String>();
|
||||
rules.addAll(super.getRules());
|
||||
for (LevelAbility ability: levels) {
|
||||
rules.add(ability.getRule());
|
||||
}
|
||||
return rules;
|
||||
}
|
||||
public void setMaxLevelCounters(int maxLevelCounters) {
|
||||
this.maxLevelCounters = maxLevelCounters;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,8 +35,6 @@ import mage.game.Game;
|
|||
import mage.game.events.ZoneChangeEvent;
|
||||
import mage.players.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
|
@ -45,7 +43,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public class PermanentCard extends PermanentImpl<PermanentCard> {
|
||||
|
||||
protected List<String> levelerRules;
|
||||
protected int maxLevelCounters;
|
||||
protected Card card;
|
||||
|
||||
|
@ -67,7 +64,6 @@ public class PermanentCard extends PermanentImpl<PermanentCard> {
|
|||
this.loyalty = new MageInt(card.getLoyalty().getValue());
|
||||
}*/
|
||||
if (card instanceof LevelerCard) {
|
||||
levelerRules = ((LevelerCard) card).getRules();
|
||||
maxLevelCounters = ((LevelerCard) card).getMaxLevelCounters();
|
||||
}
|
||||
}
|
||||
|
@ -239,14 +235,4 @@ public class PermanentCard extends PermanentImpl<PermanentCard> {
|
|||
return this.maxLevelCounters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getRules() {
|
||||
if (levelerRules == null)
|
||||
return super.getRules();
|
||||
List<String> rules = new ArrayList<String>();
|
||||
rules.addAll(super.getRules());
|
||||
rules.addAll(levelerRules);
|
||||
return rules;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue