mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +00:00
Player counters removed this turn (#5377)
This commit is contained in:
@@ -102,7 +102,7 @@ public class Game {
|
||||
private CardZoneTable untilHostLeavesPlayTriggerList = new CardZoneTable();
|
||||
|
||||
private Table<CounterType, Player, List<Pair<Card, Integer>>> countersAddedThisTurn = HashBasedTable.create();
|
||||
private Multimap<CounterType, Pair<Card, Integer>> countersRemovedThisTurn = ArrayListMultimap.create();
|
||||
private Multimap<CounterType, Pair<GameEntity, Integer>> countersRemovedThisTurn = ArrayListMultimap.create();
|
||||
|
||||
private List<Card> leftBattlefieldThisTurn = Lists.newArrayList();
|
||||
private List<Card> leftGraveyardThisTurn = Lists.newArrayList();
|
||||
@@ -1228,10 +1228,14 @@ public class Game {
|
||||
countersRemovedThisTurn.put(cType, Pair.of(CardCopyService.getLKICopy(card), value));
|
||||
}
|
||||
|
||||
public int getCounterRemovedThisTurn(CounterType cType, String validCard, Card source, Player sourceController, CardTraitBase ctb) {
|
||||
public void addCounterRemovedThisTurn(CounterType cType, Player player, Integer value) {
|
||||
countersRemovedThisTurn.put(cType, Pair.of(player, value));
|
||||
}
|
||||
|
||||
public int getCounterRemovedThisTurn(CounterType cType, String valid, Card source, Player sourceController, CardTraitBase ctb) {
|
||||
int result = 0;
|
||||
for (Pair<Card, Integer> p : countersRemovedThisTurn.get(cType)) {
|
||||
if (p.getKey().isValid(validCard.split(","), sourceController, source, ctb)) {
|
||||
for (Pair<GameEntity, Integer> p : countersRemovedThisTurn.get(cType)) {
|
||||
if (p.getKey().isValid(valid.split(","), sourceController, source, ctb)) {
|
||||
result += p.getValue();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -635,21 +635,20 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
return cnt >= energyPayment;
|
||||
}
|
||||
|
||||
public final int loseEnergy(int lostEnergy) {
|
||||
public final boolean loseEnergy(int lostEnergy) {
|
||||
int cnt = getCounters(CounterEnumType.ENERGY);
|
||||
if (lostEnergy > cnt) {
|
||||
return -1;
|
||||
return false;
|
||||
}
|
||||
cnt -= lostEnergy;
|
||||
this.setCounters(CounterEnumType.ENERGY, cnt, null, true);
|
||||
return cnt;
|
||||
subtractCounter(CounterEnumType.ENERGY, lostEnergy, this);
|
||||
return true;
|
||||
}
|
||||
|
||||
public final boolean payEnergy(final int energyPayment, final Card source) {
|
||||
if (energyPayment <= 0)
|
||||
return true;
|
||||
|
||||
return canPayEnergy(energyPayment) && loseEnergy(energyPayment) > -1;
|
||||
return canPayEnergy(energyPayment) && loseEnergy(energyPayment);
|
||||
}
|
||||
|
||||
public final boolean canPayShards(final int shardPayment) {
|
||||
@@ -904,6 +903,8 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
|
||||
setCounters(counterName, newValue, null, true);
|
||||
|
||||
getGame().addCounterRemovedThisTurn(counterName, this, delta);
|
||||
|
||||
/* TODO Run triggers when something cares
|
||||
int curCounters = oldValue;
|
||||
for (int i = 0; i < delta && curCounters != 0; i++) {
|
||||
|
||||
Reference in New Issue
Block a user