[EOE] Implement Sami, Ship's Engineer

This commit is contained in:
theelk801 2025-06-20 22:05:40 -04:00
parent 7b3082c3b5
commit 8ff2a59981
7 changed files with 100 additions and 8 deletions

View file

@ -11,7 +11,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.StaticFilters;
import mage.game.permanent.token.RobotToken;
import mage.game.permanent.token.Robot33Token;
/**
* @author Cguy7777
@ -27,7 +27,7 @@ public final class AutomatedAssemblyLine extends CardImpl {
// Pay {E}{E}{E}: Create a tapped 3/3 colorless Robot artifact creature token.
this.addAbility(new SimpleActivatedAbility(
new CreateTokenEffect(new RobotToken(), 1, true),
new CreateTokenEffect(new Robot33Token(), 1, true),
new PayEnergyCost(3)));
}

View file

@ -14,7 +14,7 @@ import mage.cards.CardSetInfo;
import mage.game.Game;
import mage.game.events.DieRolledEvent;
import mage.game.events.GameEvent;
import mage.game.permanent.token.RobotToken;
import mage.game.permanent.token.Robot33Token;
import mage.game.permanent.token.Token;
import mage.game.permanent.token.TreasureToken;
import mage.players.Player;
@ -116,7 +116,7 @@ class MrHousePresidentAndCEOTokenEffect extends OneShotEffect {
int amount = (Integer) getValue("rolled");
if (amount >= 4) {
Token robotToken = new RobotToken();
Token robotToken = new Robot33Token();
robotToken.putOntoBattlefield(1, game, source);
}
if (amount >= 6) {

View file

@ -0,0 +1,63 @@
package mage.cards.s;
import mage.MageInt;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.game.permanent.token.RobotToken;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class SamiShipsEngineer extends CardImpl {
private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("you control two or more tapped creatures");
static {
filter.add(TappedPredicate.TAPPED);
}
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter);
private static final Hint hint = new ValueHint(
"Tapped creatures you control", new PermanentsOnBattlefieldCount(filter)
);
public SamiShipsEngineer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{W}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.ARTIFICER);
this.power = new MageInt(2);
this.toughness = new MageInt(4);
// At the beginning of your end step, if you control two or more tapped creatures, create a tapped 2/2 colorless Robot artifact creature token.
this.addAbility(new BeginningOfEndStepTriggeredAbility(
new CreateTokenEffect(new RobotToken(), 1, true)
).withInterveningIf(condition).addHint(hint));
}
private SamiShipsEngineer(final SamiShipsEngineer card) {
super(card);
}
@Override
public SamiShipsEngineer copy() {
return new SamiShipsEngineer(this);
}
}

View file

@ -24,6 +24,7 @@ public final class EdgeOfEternities extends ExpansionSet {
cards.add(new SetCardInfo("Breeding Pool", 251, Rarity.RARE, mage.cards.b.BreedingPool.class));
cards.add(new SetCardInfo("Godless Shrine", 254, Rarity.RARE, mage.cards.g.GodlessShrine.class));
cards.add(new SetCardInfo("Sacred Foundry", 256, Rarity.RARE, mage.cards.s.SacredFoundry.class));
cards.add(new SetCardInfo("Sami, Ship's Engineer", 225, Rarity.UNCOMMON, mage.cards.s.SamiShipsEngineer.class));
cards.add(new SetCardInfo("Stomping Ground", 258, Rarity.RARE, mage.cards.s.StompingGround.class));
cards.add(new SetCardInfo("Tezzeret, Cruel Captain", 2, Rarity.MYTHIC, mage.cards.t.TezzeretCruelCaptain.class));
cards.add(new SetCardInfo("Watery Grave", 261, Rarity.RARE, mage.cards.w.WateryGrave.class));

View file

@ -0,0 +1,28 @@
package mage.game.permanent.token;
import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
/**
* @author TheElk801
*/
public final class Robot33Token extends TokenImpl {
public Robot33Token() {
super("Robot Token", "3/3 colorless Robot artifact creature token");
cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE);
subtype.add(SubType.ROBOT);
power = new MageInt(3);
toughness = new MageInt(3);
}
private Robot33Token(final Robot33Token token) {
super(token);
}
public Robot33Token copy() {
return new Robot33Token(this);
}
}

View file

@ -10,12 +10,12 @@ import mage.constants.SubType;
public final class RobotToken extends TokenImpl {
public RobotToken() {
super("Robot Token", "3/3 colorless Robot artifact creature token");
super("Robot Token", "2/2 colorless Robot artifact creature token");
cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE);
subtype.add(SubType.ROBOT);
power = new MageInt(3);
toughness = new MageInt(3);
power = new MageInt(2);
toughness = new MageInt(2);
}
private RobotToken(final RobotToken token) {

View file

@ -2270,7 +2270,7 @@
|Generate|TOK:PIP|Human Knight|||ThePrydwenSteelFlagshipHumanKnightToken|
|Generate|TOK:PIP|Human Soldier|||HumanSoldierToken|
|Generate|TOK:PIP|Junk|||JunkToken|
|Generate|TOK:PIP|Robot|||RobotToken|
|Generate|TOK:PIP|Robot|||Robot33Token|
|Generate|TOK:PIP|Settlement|||SettlementToken|
|Generate|TOK:PIP|Soldier|1||SoldierTokenWithHaste|
|Generate|TOK:PIP|Soldier|2||SoldierToken|