mirror of
https://github.com/magefree/mage.git
synced 2025-12-24 20:41:58 -08:00
[SOI] Added all missing green cards.
This commit is contained in:
parent
c6f17e6569
commit
18c48d6b4e
30 changed files with 1975 additions and 87 deletions
|
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package mage.abilities.common;
|
||||
|
||||
import mage.abilities.TriggeredAbilityImpl;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class SacrificeAllTriggeredAbility extends TriggeredAbilityImpl {
|
||||
|
||||
private final FilterPermanent filter;
|
||||
private final TargetController sacrificingPlayer;
|
||||
|
||||
public SacrificeAllTriggeredAbility(Effect effect, FilterPermanent filter, TargetController sacrificingPlayer, boolean optional) {
|
||||
super(Zone.ALL, effect, optional);
|
||||
this.filter = filter;
|
||||
this.sacrificingPlayer = sacrificingPlayer;
|
||||
}
|
||||
|
||||
public SacrificeAllTriggeredAbility(final SacrificeAllTriggeredAbility ability) {
|
||||
super(ability);
|
||||
this.filter = ability.filter;
|
||||
this.sacrificingPlayer = ability.sacrificingPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SacrificeAllTriggeredAbility copy() {
|
||||
return new SacrificeAllTriggeredAbility(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkEventType(GameEvent event, Game game) {
|
||||
return event.getType() == GameEvent.EventType.SACRIFICED_PERMANENT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
switch (sacrificingPlayer) {
|
||||
case YOU:
|
||||
if (event.getPlayerId().equals(getControllerId())) {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case OPPONENT:
|
||||
Player controller = game.getPlayer(getControllerId());
|
||||
if (controller == null || !controller.hasOpponent(event.getPlayerId(), game)) {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
Permanent sacrificedPermanent = game.getPermanentOrLKIBattlefield(event.getTargetId());
|
||||
return sacrificedPermanent != null && filter.match(sacrificedPermanent, getSourceId(), getControllerId(), game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRule() {
|
||||
String targetControllerText = "a player sacrifices ";
|
||||
switch (sacrificingPlayer) {
|
||||
case YOU:
|
||||
targetControllerText = "you sacrifice ";
|
||||
break;
|
||||
case OPPONENT:
|
||||
targetControllerText = "an opponent sacrifices ";
|
||||
break;
|
||||
}
|
||||
return "Whenever " + targetControllerText + filter.getMessage() + ", " + super.getRule();
|
||||
}
|
||||
}
|
||||
|
|
@ -94,7 +94,7 @@ public class ZoneChangeTriggeredAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return new StringBuilder(rule).append(super.getRule()).toString();
|
||||
return rule + super.getRule();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -152,11 +152,7 @@ public abstract class TargetImpl implements Target {
|
|||
|
||||
@Override
|
||||
public String getTargetName() {
|
||||
StringBuilder sb = new StringBuilder(targetName);
|
||||
if (isRandom()) {
|
||||
sb.append(" chosen at random");
|
||||
}
|
||||
return sb.toString();
|
||||
return targetName + (isRandom() ? " chosen at random" : "");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -334,10 +330,8 @@ public abstract class TargetImpl implements Target {
|
|||
} else {
|
||||
return chosen;
|
||||
}
|
||||
} else {
|
||||
if (!getTargetController(game, playerId).chooseTarget(outcome, this, source, game)) {
|
||||
return chosen;
|
||||
}
|
||||
} else if (!getTargetController(game, playerId).chooseTarget(outcome, this, source, game)) {
|
||||
return chosen;
|
||||
}
|
||||
chosen = targets.size() >= getNumberOfTargets();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue