key+="attacker:";
// removed possible attackers are interesting for blocking a re attack! (Evaluation)
generatePossibleAttackers(p, possibleAttackers, removedPossibleAttackers);
for(int c=0; c< possibleAttackers.size(); c++)
{
CardSim card = possibleAttackers.getCard(c);
key += card.getCard().getUniqueID()+": "+card.getNowPower()+"/"+card.getNowToughness()+""+card.getNowCardAbilities();
}
for(int c=0; c< removedPossibleAttackers.size(); c++)
{
CardSim card = removedPossibleAttackers.getCard(c);
key += card.getCard().getUniqueID()+": "+card.getNowPower()+"/"+card.getNowToughness()+""+card.getNowCardAbilities();
}
// BLOCKERS
CardSimList blocker = vMatch.getBattlefield(o).getSubListByType("Creature").onlyTapstate(false);
// remove creatures with activation ability
// blocker = blocker.onlyTapstate(false);
// strange things happen - there was a cache hit, where actions in attavk were done on opponents
// creatures that were not in comnbat
// and this cretaure was on hit removed to lib - null pointer exeption...
// thererfor here - ALL opponents creaturs
key+="blocker:";
for(int c=0; c< blocker.size(); c++)
{
CardSim card = blocker.getCard(c);
key += card.getCard().getUniqueID()+": "+card.getNowPower()+"/"+card.getNowToughness()+""+card.getNowCardAbilities();
}
// attacker may decide to cats instants in attack phase on blockers which are even tapped!
if ((playerIsAttacker) && (vMatch.getHand(p).onlyWithTypes("Instant").size() >0))
{
blocker = vMatch.getBattlefield(o).getSubListByType("Creature").onlyTapstate(true);
key+="tapped blocker:";
for(int c=0; c< blocker.size(); c++)
{
CardSim card = blocker.getCard(c);
key += card.getCard().getUniqueID()+": "+card.getNowPower()+"/"+card.getNowToughness()+""+card.getNowCardAbilities();
}
}
return key;