mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
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:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user