private boolean hasDoubleStrike(Permanent perm) { return perm.getAbilities().containsKey(DoubleStrikeAbility.getInstance().getId()); }
private boolean hasFirstOrDoubleStrike(Permanent perm) { return perm.getAbilities().containsKey(FirstStrikeAbility.getInstance().getId()) || perm.getAbilities().containsKey(DoubleStrikeAbility.getInstance().getId()); }
public int evaluate(Permanent creature, Game game) { if (!values.containsKey(creature.getId())) { int value = 0; if (creature.canAttack(null, game)) { value += 2; } value += creature.getPower().getValue(); value += creature.getToughness().getValue(); value += creature.getAbilities().getEvasionAbilities().size(); value += creature.getAbilities().getProtectionAbilities().size(); value += creature.getAbilities().containsKey(FirstStrikeAbility.getInstance().getId()) ? 1 : 0; value += creature.getAbilities().containsKey(DoubleStrikeAbility.getInstance().getId()) ? 2 : 0; value += creature.getAbilities().containsKey(TrampleAbility.getInstance().getId()) ? 1 : 0; values.put(creature.getId(), value); } return values.get(creature.getId()); }
public int evaluate(Permanent creature, Game game) { if (!values.containsKey(creature.getId())) { int value = 0; if (creature.canAttack(null, game)) { value += 2; } value += creature.getPower().getValue(); value += creature.getToughness().getValue(); value += creature.getAbilities().getEvasionAbilities().size(); value += creature.getAbilities().getProtectionAbilities().size(); value += creature.getAbilities().containsKey(FirstStrikeAbility.getInstance().getId()) ? 1 : 0; value += creature.getAbilities().containsKey(DoubleStrikeAbility.getInstance().getId()) ? 2 : 0; value += creature.getAbilities().containsKey(TrampleAbility.getInstance().getId()) ? 1 : 0; values.put(creature.getId(), value); } return values.get(creature.getId()); }
protected int combatPotential(Permanent creature, Game game) { log.debug("combatPotential"); if (!creature.canAttack(null, game)) { return 0; } int potential = creature.getPower().getValue(); potential += creature.getAbilities().getEvasionAbilities().size(); potential += creature.getAbilities().getProtectionAbilities().size(); potential += creature.getAbilities().containsKey(FirstStrikeAbility.getInstance().getId()) ? 1 : 0; potential += creature.getAbilities().containsKey(DoubleStrikeAbility.getInstance().getId()) ? 2 : 0; potential += creature.getAbilities().containsKey(TrampleAbility.getInstance().getId()) ? 1 : 0; return potential; }
public CreatureSimulator(Permanent permanent) { this.id = permanent.getId(); this.damage = permanent.getDamage(); this.power = permanent.getPower().getValue(); this.toughness = permanent.getToughness().getValue(); this.hasDoubleStrike = permanent.getAbilities().containsKey(DoubleStrikeAbility.getInstance().getId()); this.hasFirstStrike = permanent.getAbilities().containsKey(FirstStrikeAbility.getInstance().getId()); this.hasTrample = permanent.getAbilities().containsKey(TrampleAbility.getInstance().getId()); }
public static int evaluateCreature(Permanent creature, Game game) { int value = 0; value += creature.getPower().getValue(); value += creature.getToughness().getValue(); // if (creature.canAttack(game)) // value += creature.getPower().getValue(); // if (!creature.isTapped()) // value += 2; value += creature.getAbilities().getEvasionAbilities().size(); value += creature.getAbilities().getProtectionAbilities().size(); value += creature.getAbilities().containsKey(FirstStrikeAbility.getInstance().getId()) ? 1 : 0; value += creature.getAbilities().containsKey(DoubleStrikeAbility.getInstance().getId()) ? 2 : 0; value += creature.getAbilities().containsKey(TrampleAbility.getInstance().getId()) ? 1 : 0; return value; }
if (attackerValue > blockerValue || blocker.getAbilities().containsKey(FirstStrikeAbility.getInstance().getId()) || blocker.getAbilities().containsKey(DoubleStrikeAbility.getInstance().getId()) || blocker.getAbilities().contains(new ExaltedAbility()) || blocker.getAbilities().containsKey(DeathtouchAbility.getInstance().getId()) || blocker.getAbilities().containsKey(IndestructibleAbility.getInstance().getId()) || !attacker.getAbilities().containsKey(FirstStrikeAbility.getInstance().getId()) || !attacker.getAbilities().containsKey(DoubleStrikeAbility.getInstance().getId()) || !attacker.getAbilities().contains(new ExaltedAbility())) { safeToAttack = false;