package magic.model.action;
import magic.ai.ArtificialScoringSystem;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPermanentState;
import magic.model.trigger.MagicTriggerType;
// Must check if creature is tapped.
public class UntapAction extends MagicAction {
private final MagicPermanent permanent;
private boolean isTapped;
public UntapAction(final MagicPermanent permanent) {
this.permanent=permanent;
}
@Override
public void doAction(final MagicGame game) {
isTapped=permanent.hasState(MagicPermanentState.Tapped);
if (isTapped) {
permanent.clearState(MagicPermanentState.Tapped);
setScore(permanent.getController(),-ArtificialScoringSystem.getTappedScore(permanent));
game.executeTrigger(MagicTriggerType.WhenBecomesUntapped,permanent);
game.setStateCheckRequired();
}
}
@Override
public void undoAction(final MagicGame game) {
if (isTapped) {
permanent.setState(MagicPermanentState.Tapped);
}
}
@Override
public String toString() {
return getClass().getSimpleName()+" ("+permanent.getName()+')';
}
}