1) Keep track of the source of damage assigned to a Player this turn.

2) Add counting based on this: Count$OppTypeDamageThisTurn <Type>
This commit is contained in:
slapshot5
2012-01-29 20:35:13 +00:00
parent 5c23b6fb3a
commit dd4d29b039
3 changed files with 46 additions and 9 deletions

View File

@@ -387,7 +387,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable {
} else if (phase.equals(Constant.Phase.END_OF_TURN)) {
AllZone.getEndOfTurn().executeAt();
} else if (phase.equals(Constant.Phase.CLEANUP)) {
AllZone.getPhaseHandler().getPlayerTurn().setAssignedDamage(0);
AllZone.getPhaseHandler().getPlayerTurn().clearAssignedDamage();
// Reset Damage received map
final CardList list = AllZoneUtil.getCardsIn(Zone.Battlefield);

View File

@@ -59,7 +59,7 @@ public abstract class Player extends GameEntity {
private int startingLife;
/** The assigned damage. */
private int assignedDamage;
private Map<Card,Integer> assignedDamage = new HashMap<Card, Integer>();
/** The life lost this turn. */
private int lifeLostThisTurn = 0;
@@ -172,7 +172,7 @@ public abstract class Player extends GameEntity {
this.life = 20;
lifeLostThisTurn = 0;
this.poisonCounters = 0;
this.assignedDamage = 0;
this.assignedDamage.clear();
this.setPreventNextDamage(0);
this.lastDrawnCard = null;
this.numDrawnThisTurn = 0;
@@ -531,7 +531,7 @@ public abstract class Player extends GameEntity {
}
}
if (damageToDo > 0) {
this.addAssignedDamage(damageToDo);
this.addAssignedDamage(damageToDo, source);
GameActionUtil.executeDamageDealingEffects(source, damageToDo);
GameActionUtil.executeDamageToPlayerEffects(this, source, damageToDo);
@@ -823,8 +823,8 @@ public abstract class Player extends GameEntity {
* @param n
* a int.
*/
public final void setAssignedDamage(final int n) {
this.assignedDamage = n;
public final void clearAssignedDamage() {
this.assignedDamage.clear();
}
/**
@@ -835,8 +835,8 @@ public abstract class Player extends GameEntity {
* @param n
* a int.
*/
public final void addAssignedDamage(final int n) {
this.assignedDamage += n;
public final void addAssignedDamage(final int n, final Card source) {
this.assignedDamage.put(source, n);
}
/**
@@ -847,7 +847,32 @@ public abstract class Player extends GameEntity {
* @return a int.
*/
public final int getAssignedDamage() {
return this.assignedDamage;
int num = 0;
for (Integer value : assignedDamage.values()) {
num += value;
}
return num;
}
/**
* <p>
* Getter for the field <code>assignedDamage</code>.
* </p>
*
* @return a int.
*/
public final int getAssignedDamage(String type) {
Map<Card,Integer> valueMap = new HashMap<Card, Integer>();
for (Card c : assignedDamage.keySet()) {
if (c.isType(type)) {
valueMap.put(c, assignedDamage.get(c));
}
}
int num = 0;
for (Integer value : valueMap.values()) {
num += value;
}
return num;
}
/**

View File

@@ -2878,6 +2878,18 @@ public class CardFactoryUtil {
return CardFactoryUtil.doXMath(c.getController().getAssignedDamage(), m, c);
}
// Count$YourTypeDamageThisTurn Type
if (sq[0].contains("OppTypeDamageThisTurn")) {
String[] type = sq[0].split(" ");
return CardFactoryUtil.doXMath(c.getController().getOpponent().getAssignedDamage(type[1]), m, c);
}
// Count$YourTypeDamageThisTurn Type
if (sq[0].contains("YourTypeDamageThisTurn")) {
String[] type = sq[0].split(" ");
return CardFactoryUtil.doXMath(c.getController().getAssignedDamage(type[1]), m, c);
}
if (sq[0].contains("YourLandsPlayed")) {
return CardFactoryUtil.doXMath(c.getController().getNumLandsPlayed(), m, c);
}