@Override public boolean checkTrigger(GameEvent event, Game game) { Permanent land = game.getPermanent(event.getTargetId()); return land.getControllerId().equals(controllerId); }
@Override public boolean applies(Permanent permanent, Ability source, Game game) { if (game.getOpponents(source.getControllerId()).contains(permanent.getControllerId())) { return true; } return false; }
public void damageAssignmentOrder(Game game) { for (CombatGroup group : groups) { group.pickBlockerOrder(attackingPlayerId, game); } for (Map.Entry<UUID, CombatGroup> blockingGroup : blockingGroups.entrySet()) { Permanent blocker = game.getPermanent(blockingGroup.getKey()); if (blocker != null) { blockingGroup.getValue().pickAttackerOrder(blocker.getControllerId(), game); } } }
@Override public boolean applies(GameEvent event, Ability source, Game game) { return event.getTargetId() == permanentId && game.isActivePlayer(game.getPermanent(permanentId).getControllerId()); } }
@Override public boolean applies(Permanent permanent, Ability source, Game game) { if (permanent.getId().equals(getTargetPointer().getFirst(game, source))) { if (game.isActivePlayer(permanent.getControllerId())) { return true; } } return false; }
@Override public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { Player player = game.getPlayer(blocker.getControllerId()); if (player != null) { if (game.getBattlefield().countAll(filter, player.getId(), game) > 0) { return false; } } return true; }
@Override public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanentOrLKIBattlefield(targetPointer.getFirst(game, source)); if (permanent != null) { FrogLizardToken token = new FrogLizardToken(); token.putOntoBattlefield(1, game, source.getSourceId(), permanent.getControllerId()); } return true; } }
@Override public boolean checkTrigger(GameEvent event, Game game) { DamagedPlayerEvent damageEvent = (DamagedPlayerEvent) event; if (damageEvent.isCombatDamage()) { Permanent permanent = game.getPermanent(event.getSourceId()); if (damageEvent.getPlayerId().equals(getControllerId()) && permanent != null && permanent.isCreature()) { game.getState().setValue(getSourceId().toString(), permanent.getControllerId()); return true; } } return false; }
@Override public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanentOrLKIBattlefield(targetPointer.getFirst(game, source)); if (permanent != null) { FrogLizardToken token = new FrogLizardToken(); token.putOntoBattlefield(1, game, source.getSourceId(), permanent.getControllerId()); } return true; }
@Override public ActivationStatus canActivate(UUID playerId, Game game) { if (playerId.equals(caster)) { Permanent permanent = game.getBattlefield().getPermanent(this.getSourceId()); if (permanent != null) { if (filter.match(permanent, permanent.getId(), permanent.getControllerId(), game)) { return super.canActivate(playerId, game); } } } return ActivationStatus.getFalse(); }
@Override public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanentOrLKIBattlefield(this.getTargetPointer().getFirst(game, source)); if (permanent != null) { CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect(permanent.getControllerId()); effect.setTargetPointer(targetPointer); effect.apply(game, source); } return true; } }
@Override public boolean checkTrigger(GameEvent event, Game game) { Permanent blocker = game.getPermanent(event.getSourceId()); if (blocker != null) { getEffects().get(0).setTargetPointer(new FixedTarget(blocker.getControllerId())); return true; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (event.getFlag()) { return false; } Permanent permanent = game.getPermanent(event.getTargetId()); Player player = game.getPlayer(controllerId); return permanent != null && player != null && permanent.isCreature() && player.hasOpponent(permanent.getControllerId(), game); }
@Override public boolean apply(Game game, Ability source) { for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, game)) { CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect(permanent.getControllerId()); effect.setTargetPointer(new FixedTarget(permanent, game)); effect.apply(game, source); } return true; } }
@Override public boolean checkTrigger(GameEvent event, Game game) { Permanent land = game.getPermanent(event.getTargetId()); if (land != null && filter.match(land, game)) { for (Effect effect : this.getEffects()) { effect.setTargetPointer(new FixedTarget(land.getControllerId())); } return true; } return false; }
@Override public boolean applies(GameEvent event, Ability source, Game game) { Permanent brand = game.getPermanent(source.getSourceId()); if (brand != null && brand.getAttachedTo() != null) { UUID enchantedController = game.getPermanent(brand.getAttachedTo()).getControllerId(); if(Objects.equals(enchantedController, event.getPlayerId()) && game.getObject(event.getSourceId()).isCreature()) { return true; } } return false; } }
@Override public boolean apply(Game game, Ability source) { Permanent target = game.getPermanent(targetPointer.getFirst(game, source)); if (target != null) { Player player = game.getPlayer(target.getControllerId()); if (player != null) { int power = target.getPower().getValue(); player.damage(power, source.getId(), game, false, true); } } return false; }
@Override public boolean apply(Game game, Ability source) { Permanent land = game.getPermanentOrLKIBattlefield(getTargetPointer().getFirst(game, source)); if (land != null) { Player player = game.getPlayer(land.getControllerId()); if (player != null) { player.getManaPool().addMana(getMana(game, source), game, source); return true; } } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { ZoneChangeEvent zEvent = (ZoneChangeEvent) event; if (zEvent.isDiesEvent() && zEvent.getTarget() != null && zEvent.getTargetId().equals(getTargets().getFirstTarget())) { this.getTargets().clear(); // else spell fizzles because target creature died Target target = new TargetPlayer(); target.add(zEvent.getTarget().getControllerId(), game); this.addTarget(target); return true; } return false; }
@Override public void adjustTargets(Ability ability, Game game) { UUID creatureId = ability.getEffects().get(0).getTargetPointer().getFirst(game, ability); Permanent creature = game.getPermanentOrLKIBattlefield(creatureId); if (creature != null) { ability.getEffects().get(0).setTargetPointer(new FixedTarget(creature.getControllerId())); } } }