use of mage.abilities.keyword.ProtectionAbility in project mage by magefree.
the class ProtectionChosenColorTargetEffect method apply.
@Override
public boolean apply(Game game, Ability source) {
Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source));
if (permanent != null) {
ObjectColor color = (ObjectColor) game.getState().getValue(permanent.getId() + "_color");
if (color != null && (protectionAbility == null || !color.equals(chosenColor))) {
chosenColor = color;
FilterObject protectionFilter = new FilterObject(chosenColor.getDescription());
protectionFilter.add(new ColorPredicate(chosenColor));
protectionAbility = new ProtectionAbility(protectionFilter);
}
if (protectionAbility != null) {
permanent.addAbility(protectionAbility, source.getSourceId(), game);
return true;
}
}
return false;
}
use of mage.abilities.keyword.ProtectionAbility in project mage by magefree.
the class ProtectionChosenColorSourceEffect method apply.
@Override
public boolean apply(Game game, Ability source) {
Permanent permanent = game.getPermanent(source.getSourceId());
if (permanent != null) {
ObjectColor color = (ObjectColor) game.getState().getValue(permanent.getId() + "_color");
if (color != null && (protectionAbility == null || !color.equals(chosenColor))) {
chosenColor = color;
FilterObject protectionFilter = new FilterObject(chosenColor.getDescription());
protectionFilter.add(new ColorPredicate(chosenColor));
protectionAbility = new ProtectionAbility(protectionFilter);
}
if (protectionAbility != null) {
permanent.addAbility(protectionAbility, source.getSourceId(), game);
return true;
}
}
return false;
}
use of mage.abilities.keyword.ProtectionAbility in project mage by magefree.
the class ProtectionChosenColorAttachedEffect method apply.
@Override
public boolean apply(Game game, Ability source) {
Permanent attachement = game.getPermanent(source.getSourceId());
if (attachement != null && attachement.getAttachedTo() != null) {
ObjectColor color = (ObjectColor) game.getState().getValue(attachement.getId() + "_color");
if (color != null && (protectionAbility == null || !color.equals(chosenColor))) {
chosenColor = color;
FilterObject protectionFilter = new FilterObject(chosenColor.getDescription());
protectionFilter.add(new ColorPredicate(chosenColor));
protectionAbility = new ProtectionAbility(protectionFilter);
if (notRemoveItself) {
protectionAbility.setAuraIdNotToBeRemoved(source.getSourceId());
}
if (notRemoveControlled) {
protectionAbility.setDoesntRemoveControlled(true);
protectionAbility.setRemoveEquipment(false);
protectionAbility.setRemovesAuras(false);
}
}
if (protectionAbility != null) {
Permanent attachedTo = game.getPermanent(attachement.getAttachedTo());
if (attachedTo != null) {
attachedTo.addAbility(protectionAbility, source.getSourceId(), game);
}
return true;
}
}
return false;
}
use of mage.abilities.keyword.ProtectionAbility in project mage by magefree.
the class SamiteElderEffect method apply.
public boolean apply(Game game, Ability source) {
Permanent target = game.getPermanent(source.getFirstTarget());
if (target != null) {
for (ObjectColor color : target.getColor(game).getColors()) {
FilterCard filter = new FilterCard(color.getDescription());
filter.add(new ColorPredicate(color));
game.addEffect(new GainAbilityControlledEffect(new ProtectionAbility(filter), Duration.EndOfTurn, new FilterControlledCreaturePermanent()), source);
}
return true;
}
return false;
}
use of mage.abilities.keyword.ProtectionAbility in project mage by magefree.
the class FavorOfTheMightyEffect method apply.
@Override
public boolean apply(Game game, Ability source) {
int maxCMC = Integer.MIN_VALUE;
for (Permanent permanent : game.getBattlefield().getActivePermanents(StaticFilters.FILTER_PERMANENT_CREATURE, source.getControllerId(), game)) {
if (permanent != null && permanent.getManaValue() > maxCMC) {
maxCMC = permanent.getManaValue();
}
}
FilterPermanent filterMaxCMC = new FilterCreaturePermanent();
filterMaxCMC.add(new ManaValuePredicate(ComparisonType.EQUAL_TO, maxCMC));
for (Permanent permanent : game.getBattlefield().getActivePermanents(filterMaxCMC, source.getControllerId(), game)) {
if (permanent != null) {
permanent.addAbility(new ProtectionAbility(filter), source.getSourceId(), game);
}
}
return true;
}
Aggregations