mirror of
https://github.com/magefree/mage.git
synced 2025-12-28 22:42:03 -08:00
[DMC] Implement Robaran Mercenaries (#9502)
This commit is contained in:
parent
f3e6eaae87
commit
20a1d2df93
3 changed files with 105 additions and 2 deletions
|
|
@ -73,7 +73,7 @@ class ManascapeRefractorGainAbilitiesEffect extends ContinuousEffectImpl {
|
|||
public boolean apply(Game game, Ability source) {
|
||||
Permanent perm = game.getPermanent(source.getSourceId());
|
||||
if (perm == null) {
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
for (Ability ability : game.getState()
|
||||
.getBattlefield()
|
||||
|
|
@ -85,6 +85,7 @@ class ManascapeRefractorGainAbilitiesEffect extends ContinuousEffectImpl {
|
|||
.filter(ability -> ability.getAbilityType() == AbilityType.ACTIVATED
|
||||
|| ability.getAbilityType() == AbilityType.MANA)
|
||||
.collect(Collectors.toList())) {
|
||||
// optimization to disallow the adding of duplicate, unnecessary basic mana abilities
|
||||
if (!(ability instanceof BasicManaAbility)
|
||||
|| perm.getAbilities(game)
|
||||
.stream()
|
||||
|
|
|
|||
100
Mage.Sets/src/mage/cards/r/RobaranMercenaries.java
Normal file
100
Mage.Sets/src/mage/cards/r/RobaranMercenaries.java
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
package mage.cards.r;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.ContinuousEffectImpl;
|
||||
import mage.abilities.keyword.VigilanceAbility;
|
||||
import mage.abilities.mana.BasicManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author PurpleCrowbar
|
||||
*/
|
||||
public final class RobaranMercenaries extends CardImpl {
|
||||
|
||||
public RobaranMercenaries(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.MERCENARY);
|
||||
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
// Vigilance
|
||||
this.addAbility(VigilanceAbility.getInstance());
|
||||
|
||||
// Robaran Mercenaries has all activated abilties of all legendary creatures you control.
|
||||
this.addAbility(new SimpleStaticAbility(new RobaranMercenariesEffect()));
|
||||
}
|
||||
|
||||
private RobaranMercenaries(final RobaranMercenaries card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RobaranMercenaries copy() {
|
||||
return new RobaranMercenaries(this);
|
||||
}
|
||||
}
|
||||
|
||||
class RobaranMercenariesEffect extends ContinuousEffectImpl {
|
||||
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
|
||||
|
||||
static {
|
||||
filter.add(SuperType.LEGENDARY.getPredicate());
|
||||
}
|
||||
|
||||
RobaranMercenariesEffect() {
|
||||
super(Duration.WhileOnBattlefield, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility);
|
||||
staticText = "{this} has all activated abilities of all legendary creatures you control.";
|
||||
this.addDependencyType(DependencyType.AddingAbility);
|
||||
}
|
||||
|
||||
private RobaranMercenariesEffect(final RobaranMercenariesEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Permanent perm = game.getPermanent(source.getSourceId());
|
||||
if (perm == null) {
|
||||
return false;
|
||||
}
|
||||
for (Ability ability : game.getState()
|
||||
.getBattlefield()
|
||||
.getActivePermanents(filter, source.getControllerId(), source, game)
|
||||
.stream()
|
||||
.map(permanent -> permanent.getAbilities(game))
|
||||
.flatMap(Collection::stream)
|
||||
.filter(Objects::nonNull)
|
||||
.filter(ability -> ability.getAbilityType() == AbilityType.ACTIVATED
|
||||
|| ability.getAbilityType() == AbilityType.MANA)
|
||||
.collect(Collectors.toList())) {
|
||||
// optimization to disallow the adding of duplicate, unnecessary basic mana abilities
|
||||
if (!(ability instanceof BasicManaAbility)
|
||||
|| perm.getAbilities(game)
|
||||
.stream()
|
||||
.noneMatch(ability.getClass()::isInstance)) {
|
||||
perm.addAbility(ability, source.getSourceId(), game);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RobaranMercenariesEffect copy() {
|
||||
return new RobaranMercenariesEffect(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -150,9 +150,11 @@ public final class DominariaUnitedCommander extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Read the Bones", 117, Rarity.COMMON, mage.cards.r.ReadTheBones.class));
|
||||
cards.add(new SetCardInfo("Reliquary Tower", 227, Rarity.UNCOMMON, mage.cards.r.ReliquaryTower.class));
|
||||
cards.add(new SetCardInfo("Rienne, Angel of Rebirth", 166, Rarity.MYTHIC, mage.cards.r.RienneAngelOfRebirth.class));
|
||||
cards.add(new SetCardInfo("Robaran Mercenaries", 22, Rarity.RARE, mage.cards.r.RobaranMercenaries.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Robaran Mercenaries", 72, Rarity.RARE, mage.cards.r.RobaranMercenaries.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Rocky Tar Pit", 228, Rarity.UNCOMMON, mage.cards.r.RockyTarPit.class));
|
||||
cards.add(new SetCardInfo("Rohgahh, Kher Keep Overlord", 41, Rarity.RARE, mage.cards.r.RohgahhKherKeepOverlord.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Rohgahh, Kher Keep Overlord", 63, Rarity.RARE, mage.cards.r.RohgahhKherKeepOverlord.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Rocky Tar Pit", 228, Rarity.UNCOMMON, mage.cards.r.RockyTarPit.class));
|
||||
cards.add(new SetCardInfo("Rosnakht, Heir of Rohgahh", 25, Rarity.RARE, mage.cards.r.RosnakhtHeirOfRohgahh.class));
|
||||
cards.add(new SetCardInfo("Sandsteppe Citadel", 229, Rarity.UNCOMMON, mage.cards.s.SandsteppeCitadel.class));
|
||||
cards.add(new SetCardInfo("Savage Lands", 230, Rarity.UNCOMMON, mage.cards.s.SavageLands.class));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue