mirror of
https://github.com/correl/mage.git
synced 2024-12-25 11:11:16 +00:00
Implemented Legion Warboss
This commit is contained in:
parent
6cfa5b6c45
commit
9ba023ce66
3 changed files with 123 additions and 1 deletions
121
Mage.Sets/src/mage/cards/l/LegionWarboss.java
Normal file
121
Mage.Sets/src/mage/cards/l/LegionWarboss.java
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
package mage.cards.l;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.StaticAbility;
|
||||||
|
import mage.abilities.common.BeginningOfCombatTriggeredAbility;
|
||||||
|
import mage.abilities.effects.ContinuousEffect;
|
||||||
|
import mage.abilities.effects.OneShotEffect;
|
||||||
|
import mage.abilities.effects.common.CreateTokenEffect;
|
||||||
|
import mage.abilities.effects.common.combat.AttacksIfAbleSourceEffect;
|
||||||
|
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||||
|
import mage.abilities.keyword.HasteAbility;
|
||||||
|
import mage.constants.SubType;
|
||||||
|
import mage.abilities.keyword.MentorAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.Outcome;
|
||||||
|
import mage.constants.TargetController;
|
||||||
|
import mage.constants.Zone;
|
||||||
|
import mage.game.Game;
|
||||||
|
import mage.game.permanent.token.GoblinToken;
|
||||||
|
import mage.target.targetpointer.FixedTarget;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author TheElk801
|
||||||
|
*/
|
||||||
|
public final class LegionWarboss extends CardImpl {
|
||||||
|
|
||||||
|
public LegionWarboss(UUID ownerId, CardSetInfo setInfo) {
|
||||||
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
|
||||||
|
|
||||||
|
this.subtype.add(SubType.GOBLIN);
|
||||||
|
this.subtype.add(SubType.SOLDIER);
|
||||||
|
this.power = new MageInt(2);
|
||||||
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
|
// Mentor
|
||||||
|
this.addAbility(new MentorAbility());
|
||||||
|
|
||||||
|
// At the beginning of combat on your turn, create a 1/1 red Goblin creature token. That token gains haste until end of turn and attacks this combat if able.
|
||||||
|
this.addAbility(new BeginningOfCombatTriggeredAbility(
|
||||||
|
new LegionWarbossEffect(),
|
||||||
|
TargetController.YOU, false
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public LegionWarboss(final LegionWarboss card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public LegionWarboss copy() {
|
||||||
|
return new LegionWarboss(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class LegionWarbossEffect extends OneShotEffect {
|
||||||
|
|
||||||
|
public LegionWarbossEffect() {
|
||||||
|
super(Outcome.Benefit);
|
||||||
|
staticText = "create a 1/1 red Goblin creature token. "
|
||||||
|
+ "That token gains haste until end of turn "
|
||||||
|
+ "and attacks this combat if able";
|
||||||
|
}
|
||||||
|
|
||||||
|
public LegionWarbossEffect(final LegionWarbossEffect effect) {
|
||||||
|
super(effect);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public LegionWarbossEffect copy() {
|
||||||
|
return new LegionWarbossEffect(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean apply(Game game, Ability source) {
|
||||||
|
CreateTokenEffect effect = new CreateTokenEffect(new GoblinToken());
|
||||||
|
effect.apply(game, source);
|
||||||
|
effect.getLastAddedTokenIds().stream().map((tokenId) -> {
|
||||||
|
ContinuousEffect continuousEffect = new GainAbilityTargetEffect(
|
||||||
|
HasteAbility.getInstance(), Duration.EndOfTurn
|
||||||
|
);
|
||||||
|
continuousEffect.setTargetPointer(new FixedTarget(tokenId, game));
|
||||||
|
return continuousEffect;
|
||||||
|
}).forEachOrdered((continuousEffect) -> {
|
||||||
|
game.addEffect(continuousEffect, source);
|
||||||
|
});
|
||||||
|
effect.getLastAddedTokenIds().stream().map((tokenId) -> {
|
||||||
|
ContinuousEffect continuousEffect = new GainAbilityTargetEffect(
|
||||||
|
new LegionWarbossAbility(), Duration.EndOfCombat
|
||||||
|
);
|
||||||
|
continuousEffect.setTargetPointer(new FixedTarget(tokenId, game));
|
||||||
|
return continuousEffect;
|
||||||
|
}).forEachOrdered((continuousEffect) -> {
|
||||||
|
game.addEffect(continuousEffect, source);
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class LegionWarbossAbility extends StaticAbility {
|
||||||
|
|
||||||
|
public LegionWarbossAbility() {
|
||||||
|
super(Zone.BATTLEFIELD, new AttacksIfAbleSourceEffect(
|
||||||
|
Duration.WhileOnBattlefield, false
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public LegionWarbossAbility(LegionWarbossAbility ability) {
|
||||||
|
super(ability);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public LegionWarbossAbility copy() {
|
||||||
|
return new LegionWarbossAbility(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -27,6 +27,7 @@ public final class GuildsOfRavnica extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Emmara, Soul of the Accord", 168, Rarity.RARE, mage.cards.e.EmmaraSoulOfTheAccord.class));
|
cards.add(new SetCardInfo("Emmara, Soul of the Accord", 168, Rarity.RARE, mage.cards.e.EmmaraSoulOfTheAccord.class));
|
||||||
cards.add(new SetCardInfo("Firemind's Research", 171, Rarity.RARE, mage.cards.f.FiremindsResearch.class));
|
cards.add(new SetCardInfo("Firemind's Research", 171, Rarity.RARE, mage.cards.f.FiremindsResearch.class));
|
||||||
cards.add(new SetCardInfo("Impervious Greatwurm", 273, Rarity.MYTHIC, mage.cards.i.ImperviousGreatwurm.class));
|
cards.add(new SetCardInfo("Impervious Greatwurm", 273, Rarity.MYTHIC, mage.cards.i.ImperviousGreatwurm.class));
|
||||||
|
cards.add(new SetCardInfo("Legion Warboss", 109, Rarity.RARE, mage.cards.l.LegionWarboss.class));
|
||||||
cards.add(new SetCardInfo("Narcomoeba", 47, Rarity.RARE, mage.cards.n.Narcomoeba.class));
|
cards.add(new SetCardInfo("Narcomoeba", 47, Rarity.RARE, mage.cards.n.Narcomoeba.class));
|
||||||
cards.add(new SetCardInfo("Necrotic Wound", 79, Rarity.UNCOMMON, mage.cards.n.NecroticWound.class));
|
cards.add(new SetCardInfo("Necrotic Wound", 79, Rarity.UNCOMMON, mage.cards.n.NecroticWound.class));
|
||||||
cards.add(new SetCardInfo("Overgrown Tomb", 253, Rarity.RARE, mage.cards.o.OvergrownTomb.class));
|
cards.add(new SetCardInfo("Overgrown Tomb", 253, Rarity.RARE, mage.cards.o.OvergrownTomb.class));
|
||||||
|
|
|
@ -25,7 +25,7 @@ public class AttacksIfAbleSourceEffect extends RequirementEffect {
|
||||||
super(duration);
|
super(duration);
|
||||||
this.eachCombat = eachCombat;
|
this.eachCombat = eachCombat;
|
||||||
if (this.duration == Duration.EndOfTurn) {
|
if (this.duration == Duration.EndOfTurn) {
|
||||||
staticText = "{this} attacks " + (eachCombat ? "each combat" : "this turn") + " if able";
|
staticText = "{this} attacks " + (eachCombat ? "each combat" : "this combat") + " if able";
|
||||||
} else {
|
} else {
|
||||||
staticText = "{this} attacks each " + (eachCombat ? "combat" : "turn") + " if able";
|
staticText = "{this} attacks each " + (eachCombat ? "combat" : "turn") + " if able";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue