@Override public AbilitiesImpl<T> copy() { return new AbilitiesImpl<>(this); }
@Override public Abilities<Ability> getAbilities() { Abilities<Ability> abilities = new AbilitiesImpl<>(); abilities.add(ability); return abilities; }
public CardState(final CardState state) { this.faceDown = state.faceDown; if (state.info != null) { info = new HashMap<>(); info.putAll(state.info); } counters = state.counters.copy(); if (state.abilities != null) { abilities = new AbilitiesImpl<>(); for (Ability ability : state.abilities) { abilities.add(ability.copy()); } } }
public void addAbility(Ability ability) { if (abilities == null) { abilities = new AbilitiesImpl<>(); } abilities.add(ability); abilities.addAll(ability.getSubAbilities()); }
public MageObjectImpl(UUID id) { objectId = id; power = new MageInt(0); toughness = new MageInt(0); color = new ObjectColor(); frameColor = new ObjectColor(); frameStyle = FrameStyle.M15_NORMAL; manaCost = new ManaCostsImpl<>(""); abilities = new AbilitiesImpl<>(); textParts = new ArrayList<>(); }
public PlayerImpl(String name, RangeOfInfluence range) { this(UUID.randomUUID()); this.name = name; this.range = range; hand = new CardsImpl(); graveyard = new Graveyard(); abilities = new AbilitiesImpl<>(); counters = new Counters(); manaPool = new ManaPool(playerId); library = new Library(playerId); sideboard = new CardsImpl(); }
public CaravanEscort(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.KNIGHT); this.color.setWhite(true); this.power = new MageInt(1); this.toughness = new MageInt(1); this.addAbility(new LevelUpAbility(new ManaCostsImpl("{2}"))); AbilitiesImpl<Ability> levelAbilities = new AbilitiesImpl<>(FirstStrikeAbility.getInstance()); this.addAbilities(LevelerCardBuilder.construct( new LevelerCardBuilder.LevelAbility(1, 4, new AbilitiesImpl<>(), 2, 2), new LevelerCardBuilder.LevelAbility(5, -1, levelAbilities, 5, 5) )); setMaxLevelCounters(5); }
public HalimarWavewatch(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}"); this.subtype.add(SubType.MERFOLK); this.subtype.add(SubType.SOLDIER); this.color.setBlue(true); this.power = new MageInt(0); this.toughness = new MageInt(3); this.addAbility(new LevelUpAbility(new ManaCostsImpl("{2}"))); Abilities<Ability> levelAbilities = new AbilitiesImpl<>(); levelAbilities.add(new IslandwalkAbility()); this.addAbilities(LevelerCardBuilder.construct( new LevelerCardBuilder.LevelAbility(1, 4, new AbilitiesImpl<>(), 0, 6), new LevelerCardBuilder.LevelAbility(5, -1, levelAbilities, 6, 6) )); setMaxLevelCounters(5); }
/** * Gets all current abilities - includes additional abilities added by other * cards or effects * * @param game * @return A list of {@link Ability} - this collection is not modifiable */ @Override public Abilities<Ability> getAbilities(Game game) { Abilities<Ability> otherAbilities = game.getState().getAllOtherAbilities(objectId); if (otherAbilities == null || otherAbilities.isEmpty()) { return abilities; } Abilities<Ability> all = new AbilitiesImpl<>(); all.addAll(abilities); all.addAll(otherAbilities); return all; }
public ZulaportEnforcer(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}"); this.subtype.add(SubType.HUMAN, SubType.WARRIOR); this.color.setBlack(true); this.power = new MageInt(1); this.toughness = new MageInt(1); this.addAbility(new LevelUpAbility(new ManaCostsImpl("{4}"))); // LEVEL 1-2: 3/3 // LEVEL 3+: 5/5 // Zulaport Enforcer can't be blocked except by black creatures. Abilities<Ability> levelAbilities = new AbilitiesImpl<>(); levelAbilities.add(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(notBlackCreatures, Duration.WhileOnBattlefield))); this.addAbilities(LevelerCardBuilder.construct( new LevelerCardBuilder.LevelAbility(1, 2, new AbilitiesImpl<>(), 3, 3), new LevelerCardBuilder.LevelAbility(3, -1, levelAbilities, 5, 5) )); setMaxLevelCounters(3); }
@Override public Abilities<TriggeredAbility> getTriggeredAbilities(Zone zone) { Abilities<TriggeredAbility> zonedAbilities = new AbilitiesImpl<>(); for (T ability : this) { if (ability instanceof TriggeredAbility && ability.getZone().match(zone)) { zonedAbilities.add((TriggeredAbility) ability); } else if (ability instanceof ZoneChangeTriggeredAbility) { ZoneChangeTriggeredAbility zcAbility = (ZoneChangeTriggeredAbility) ability; if (zcAbility.getToZone() != null && zcAbility.getToZone().match(zone)) { zonedAbilities.add((ZoneChangeTriggeredAbility) ability); } } } return zonedAbilities; }
@Override public Abilities<Ability> getAbilities(Game game) { Abilities<Ability> allAbilites = new AbilitiesImpl<>(); for (Ability ability : super.getAbilities(game)) { if (ability instanceof SpellAbility && ((SpellAbility) ability).getSpellAbilityType() != SpellAbilityType.SPLIT && ((SpellAbility) ability).getSpellAbilityType() != SpellAbilityType.SPLIT_AFTERMATH) { allAbilites.add(ability); } } allAbilites.addAll(leftHalfCard.getAbilities(game)); allAbilites.addAll(rightHalfCard.getAbilities(game)); return allAbilites; }
@Override public Abilities<Ability> getAbilities() { Abilities<Ability> allAbilites = new AbilitiesImpl<>(); for (Ability ability : super.getAbilities()) { if (ability instanceof SpellAbility && ((SpellAbility) ability).getSpellAbilityType() != SpellAbilityType.SPLIT && ((SpellAbility) ability).getSpellAbilityType() != SpellAbilityType.SPLIT_AFTERMATH) { allAbilites.add(ability); } } allAbilites.addAll(leftHalfCard.getAbilities()); allAbilites.addAll(rightHalfCard.getAbilities()); return allAbilites; }
public StudentOfWarfare (UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.KNIGHT); this.color.setWhite(true); this.power = new MageInt(1); this.toughness = new MageInt(1); this.addAbility(new LevelUpAbility(new ManaCostsImpl("{W}"))); Abilities<Ability> abilities1 = new AbilitiesImpl<>(); abilities1.add(FirstStrikeAbility.getInstance()); Abilities<Ability> abilities2 = new AbilitiesImpl<>(); abilities2.add(DoubleStrikeAbility.getInstance()); this.addAbilities(LevelerCardBuilder.construct( new LevelerCardBuilder.LevelAbility(2, 6, abilities1, 3, 3), new LevelerCardBuilder.LevelAbility(7, -1, abilities2, 4, 4) )); setMaxLevelCounters(7); }
public SkywatcherAdept(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}"); this.subtype.add(SubType.MERFOLK); this.subtype.add(SubType.WIZARD); this.color.setBlue(true); this.power = new MageInt(1); this.toughness = new MageInt(1); this.addAbility(new LevelUpAbility(new ManaCostsImpl("{3}"))); Abilities<Ability> abilities1 = new AbilitiesImpl<>(); abilities1.add(FlyingAbility.getInstance()); Abilities<Ability> abilities2 = new AbilitiesImpl<>(); abilities2.add(FlyingAbility.getInstance()); this.addAbilities(LevelerCardBuilder.construct( new LevelerCardBuilder.LevelAbility(1, 2, abilities1, 2, 2), new LevelerCardBuilder.LevelAbility(3, -1, abilities2, 4, 2) )); setMaxLevelCounters(3); }
public NullChampion (UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}"); this.subtype.add(SubType.ZOMBIE); this.subtype.add(SubType.WARRIOR); this.color.setBlack(true); this.power = new MageInt(1); this.toughness = new MageInt(1); this.addAbility(new LevelUpAbility(new ManaCostsImpl("{3}"))); Abilities<Ability> abilities1 = new AbilitiesImpl<>(); Abilities<Ability> abilities2 = new AbilitiesImpl<>(); abilities2.add(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{B}"))); this.addAbilities(LevelerCardBuilder.construct( new LevelerCardBuilder.LevelAbility(1, 3, abilities1, 4, 2), new LevelerCardBuilder.LevelAbility(4, -1, abilities2, 7, 3) )); setMaxLevelCounters(4); }
public NirkanaCutthroat (UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}"); this.subtype.add(SubType.VAMPIRE); this.subtype.add(SubType.WARRIOR); this.color.setBlack(true); this.power = new MageInt(3); this.toughness = new MageInt(2); this.addAbility(new LevelUpAbility(new ManaCostsImpl("{2}{B}"))); Abilities<Ability> abilities1 = new AbilitiesImpl<>(); abilities1.add(DeathtouchAbility.getInstance()); Abilities<Ability> abilities2 = new AbilitiesImpl<>(); abilities2.add(FirstStrikeAbility.getInstance()); abilities2.add(DeathtouchAbility.getInstance()); this.addAbilities(LevelerCardBuilder.construct( new LevelerCardBuilder.LevelAbility(1, 2, abilities1, 4, 3), new LevelerCardBuilder.LevelAbility(3, -1, abilities2, 5, 4) )); setMaxLevelCounters(3); }
public KabiraVindicator(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.KNIGHT); this.color.setWhite(true); this.power = new MageInt(2); this.toughness = new MageInt(4); this.addAbility(new LevelUpAbility(new ManaCostsImpl("{2}{W}"))); Abilities<Ability> abilities1 = new AbilitiesImpl<>(); abilities1.add(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE, true))); Abilities<Ability> abilities2 = new AbilitiesImpl<>(); abilities2.add(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(2, 2, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE, true))); this.addAbilities(LevelerCardBuilder.construct( new LevelerCardBuilder.LevelAbility(2, 4, abilities1, 3, 6), new LevelerCardBuilder.LevelAbility(5, -1, abilities2, 4, 8) )); setMaxLevelCounters(5); }
public CoralhelmCommander(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{U}"); this.subtype.add(SubType.MERFOLK); this.subtype.add(SubType.SOLDIER); this.color.setBlue(true); this.power = new MageInt(2); this.toughness = new MageInt(2); this.addAbility(new LevelUpAbility(new ManaCostsImpl("{1}"))); Abilities<Ability> abilities1 = new AbilitiesImpl<>(); abilities1.add(FlyingAbility.getInstance()); Abilities<Ability> abilities2 = new AbilitiesImpl<>(); abilities2.add(FlyingAbility.getInstance()); abilities2.add(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, true))); this.addAbilities(LevelerCardBuilder.construct( new LevelerCardBuilder.LevelAbility(2, 3, abilities1, 3, 3), new LevelerCardBuilder.LevelAbility(4, -1, abilities2, 4, 4) )); setMaxLevelCounters(4); }
public EnclaveCryptologist (UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}"); this.subtype.add(SubType.MERFOLK); this.subtype.add(SubType.WIZARD); this.color.setBlue(true); this.power = new MageInt(0); this.toughness = new MageInt(1); this.addAbility(new LevelUpAbility(new ManaCostsImpl("{1}{U}"))); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawDiscardControllerEffect(), new TapSourceCost()); Abilities<Ability> abilities1 = new AbilitiesImpl<>(ability); ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new TapSourceCost()); Abilities<Ability> abilities2 = new AbilitiesImpl<>(ability); this.addAbilities(LevelerCardBuilder.construct( new LevelerCardBuilder.LevelAbility(1, 2, abilities1, 0, 1), new LevelerCardBuilder.LevelAbility(3, -1, abilities2, 0, 1) )); setMaxLevelCounters(3); }