mirror of
https://github.com/correl/mage.git
synced 2024-12-26 19:16:54 +00:00
Implemented Crystalline Giant
This commit is contained in:
parent
1126610243
commit
77ad5eab87
2 changed files with 104 additions and 0 deletions
103
Mage.Sets/src/mage/cards/c/CrystallineGiant.java
Normal file
103
Mage.Sets/src/mage/cards/c/CrystallineGiant.java
Normal file
|
@ -0,0 +1,103 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.BeginningOfCombatTriggeredAbility;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.counters.CounterType;
|
||||
import mage.counters.Counters;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.util.RandomUtil;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class CrystallineGiant extends CardImpl {
|
||||
|
||||
public CrystallineGiant(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
|
||||
|
||||
this.subtype.add(SubType.GIANT);
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
// At the beginning of combat on your turn, choose a kind of counter at random that Crystalline Giant doesn't have on it from among flying, first strike, deathtouch, hexproof, lifelink, menace, reach, trample, vigilance, or +1/+1. Put a counter of that kind on Crystalline Giant.
|
||||
this.addAbility(new BeginningOfCombatTriggeredAbility(
|
||||
new CrystallineGiantEffect(), TargetController.YOU, false
|
||||
));
|
||||
}
|
||||
|
||||
private CrystallineGiant(final CrystallineGiant card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CrystallineGiant copy() {
|
||||
return new CrystallineGiant(this);
|
||||
}
|
||||
}
|
||||
|
||||
class CrystallineGiantEffect extends OneShotEffect {
|
||||
|
||||
private static final EnumSet<CounterType> counterTypeSet = EnumSet.noneOf(CounterType.class);
|
||||
|
||||
static {
|
||||
counterTypeSet.add(CounterType.FLYING);
|
||||
counterTypeSet.add(CounterType.FIRST_STRIKE);
|
||||
counterTypeSet.add(CounterType.DEATHTOUCH);
|
||||
counterTypeSet.add(CounterType.HEXPROOF);
|
||||
counterTypeSet.add(CounterType.LIFELINK);
|
||||
counterTypeSet.add(CounterType.MENACE);
|
||||
counterTypeSet.add(CounterType.REACH);
|
||||
counterTypeSet.add(CounterType.TRAMPLE);
|
||||
counterTypeSet.add(CounterType.VIGILANCE);
|
||||
counterTypeSet.add(CounterType.P1P1);
|
||||
}
|
||||
|
||||
CrystallineGiantEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "choose a kind of counter at random that {this} doesn't have on it from among " +
|
||||
"flying, first strike, deathtouch, hexproof, lifelink, menace, reach, trample, vigilance, or +1/+1. " +
|
||||
"Put a counter of that kind on {this}";
|
||||
}
|
||||
|
||||
private CrystallineGiantEffect(final CrystallineGiantEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CrystallineGiantEffect copy() {
|
||||
return new CrystallineGiantEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Permanent permanent = game.getPermanent(source.getSourceId());
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
Counters counters = permanent.getCounters(game);
|
||||
List<CounterType> counterTypes = counterTypeSet
|
||||
.stream()
|
||||
.filter(counterType -> !counters.containsKey(counterType))
|
||||
.collect(Collectors.toList());
|
||||
if (counterTypes.size() == 0) {
|
||||
return false;
|
||||
}
|
||||
return permanent.addCounters(counterTypes.get(
|
||||
RandomUtil.nextInt(counterTypes.size())
|
||||
).createInstance(), source, game);
|
||||
}
|
||||
}
|
|
@ -35,6 +35,7 @@ public final class IkoriaLairOfBehemoths extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Chittering Harvester", 80, Rarity.UNCOMMON, mage.cards.c.ChitteringHarvester.class));
|
||||
cards.add(new SetCardInfo("Cloudpiercer", 112, Rarity.COMMON, mage.cards.c.Cloudpiercer.class));
|
||||
cards.add(new SetCardInfo("Colossification", 148, Rarity.RARE, mage.cards.c.Colossification.class));
|
||||
cards.add(new SetCardInfo("Crystalline Giant", 234, Rarity.RARE, mage.cards.c.CrystallineGiant.class));
|
||||
cards.add(new SetCardInfo("Dire Tactics", 183, Rarity.UNCOMMON, mage.cards.d.DireTactics.class));
|
||||
cards.add(new SetCardInfo("Dirge Bat", 84, Rarity.RARE, mage.cards.d.DirgeBat.class));
|
||||
cards.add(new SetCardInfo("Drannith Stinger", 113, Rarity.COMMON, mage.cards.d.DrannithStinger.class));
|
||||
|
|
Loading…
Reference in a new issue