Added Riddlekeeper and refactored similar cards

This commit is contained in:
Styxo 2016-10-25 12:54:46 +02:00
parent 070a0ca3fa
commit a0e3571d7b
5 changed files with 464 additions and 491 deletions

View file

@ -43,12 +43,12 @@ import mage.target.targetpointer.FixedTarget;
*
* @author LevelX2
*/
public class AttacksAllTriggeredAbility extends TriggeredAbilityImpl {
protected FilterCreaturePermanent filter;
protected boolean attacksYouOrYourPlaneswalker;
protected SetTargetPointer setTargetPointer;
protected boolean controller;
public AttacksAllTriggeredAbility(Effect effect, boolean optional) {
this(effect, optional, new FilterCreaturePermanent(), SetTargetPointer.NONE, false);
@ -59,10 +59,15 @@ public class AttacksAllTriggeredAbility extends TriggeredAbilityImpl {
}
public AttacksAllTriggeredAbility(Effect effect, boolean optional, FilterCreaturePermanent filter, SetTargetPointer setTargetPointer, boolean attacksYouOrYourPlaneswalker) {
this(effect, optional, filter, setTargetPointer, attacksYouOrYourPlaneswalker, false);
}
public AttacksAllTriggeredAbility(Effect effect, boolean optional, FilterCreaturePermanent filter, SetTargetPointer setTargetPointer, boolean attacksYouOrYourPlaneswalker, boolean controller) {
super(Zone.BATTLEFIELD, effect, optional);
this.filter = filter;
this.attacksYouOrYourPlaneswalker = attacksYouOrYourPlaneswalker;
this.setTargetPointer = setTargetPointer;
this.controller = controller;
}
public AttacksAllTriggeredAbility(final AttacksAllTriggeredAbility ability) {
@ -70,6 +75,7 @@ public class AttacksAllTriggeredAbility extends TriggeredAbilityImpl {
this.filter = ability.filter.copy();
this.attacksYouOrYourPlaneswalker = ability.attacksYouOrYourPlaneswalker;
this.setTargetPointer = ability.setTargetPointer;
this.controller = ability.controller;
}
@Override
@ -95,21 +101,20 @@ public class AttacksAllTriggeredAbility extends TriggeredAbilityImpl {
return false;
}
}
switch(setTargetPointer) {
switch (setTargetPointer) {
case PERMANENT:
for (Effect effect: getEffects()) {
for (Effect effect : getEffects()) {
effect.setTargetPointer(new FixedTarget(permanent.getId()));
}
break;
case PLAYER:
UUID defendingPlayerId = game.getCombat().getDefendingPlayerId(permanent.getId(), game);
if (defendingPlayerId != null) {
for (Effect effect: getEffects()) {
effect.setTargetPointer(new FixedTarget(defendingPlayerId));
UUID playerId = controller ? permanent.getControllerId() : game.getCombat().getDefendingPlayerId(permanent.getId(), game);
if (playerId != null) {
for (Effect effect : getEffects()) {
effect.setTargetPointer(new FixedTarget(playerId));
}
}
break;
}
return true;
}
@ -123,7 +128,7 @@ public class AttacksAllTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
return "Whenever a " + filter.getMessage() + " attacks" + (attacksYouOrYourPlaneswalker ? " you or a planeswalker you control":"") +", " + super.getRule();
return "Whenever a " + filter.getMessage() + " attacks" + (attacksYouOrYourPlaneswalker ? " you or a planeswalker you control" : "") + ", " + super.getRule();
}
}