Player counters removed this turn (#5377)

This commit is contained in:
Hans Mackowiak
2024-06-05 11:36:52 +02:00
committed by GitHub
parent 95a6443c11
commit 20fa6c35c4
2 changed files with 15 additions and 10 deletions

View File

@@ -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();
}
}

View File

@@ -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++) {