@Override public boolean untap(Game game) { //20091005 - 701.15b if (tapped) { if (!replaceEvent(EventType.UNTAP, game)) { this.tapped = false; fireEvent(EventType.UNTAPPED, game); return true; } } return false; }
@Override public boolean unflip(Game game) { if (flipped) { if (!replaceEvent(EventType.UNFLIP, game)) { this.flipped = false; fireEvent(EventType.UNFLIPPED, game); return true; } } return false; }
@Override public boolean flip(Game game) { if (!flipped) { if (!replaceEvent(EventType.FLIP, game)) { this.flipped = true; fireEvent(EventType.FLIPPED, game); return true; } } return false; }
@Override public boolean tap(boolean forCombat, Game game) { //20091005 - 701.15a if (!tapped) { if (!replaceEvent(EventType.TAP, game)) { this.tapped = true; game.fireEvent(new GameEvent(EventType.TAPPED, objectId, ownerId, controllerId, 0, forCombat)); return true; } } return false; }
@Override public boolean transform(Game game) { if (transformable) { if (!replaceEvent(EventType.TRANSFORM, game)) { setTransformed(!transformed); game.applyEffects(); game.addSimultaneousEvent(GameEvent.getEvent(EventType.TRANSFORMED, getId(), getControllerId())); return true; } } return false; }
@Override public boolean phaseIn(Game game, boolean onlyDirect) { if (!phasedIn) { if (!replaceEvent(EventType.PHASE_IN, game) && ((onlyDirect && !indirectPhase) || (!onlyDirect))) { this.phasedIn = true; this.indirectPhase = false; if (!game.isSimulation()) { game.informPlayers(getLogName() + " phased in"); } for (UUID attachedId : this.getAttachments()) { Permanent attachedPerm = game.getPermanent(attachedId); if (attachedPerm != null) { attachedPerm.phaseIn(game, false); } } fireEvent(EventType.PHASED_IN, game); return true; } } return false; }
@Override public boolean phaseOut(Game game, boolean indirectPhase) { if (phasedIn) { if (!replaceEvent(EventType.PHASE_OUT, game)) { for (UUID attachedId : this.getAttachments()) { Permanent attachedPerm = game.getPermanent(attachedId); if (attachedPerm != null) { attachedPerm.phaseOut(game, true); } } this.removeFromCombat(game); this.phasedIn = false; this.indirectPhase = indirectPhase; if (!game.isSimulation()) { game.informPlayers(getLogName() + " phased out"); } fireEvent(EventType.PHASED_OUT, game); return true; } } return false; }