mirror of
https://github.com/correl/mage.git
synced 2024-12-25 03:00:15 +00:00
Fix the counter removal code so it doesn't throw events when it's removing nonexistent counters.
This commit is contained in:
parent
5e12a141cb
commit
9ff3e2c670
3 changed files with 15 additions and 7 deletions
|
@ -656,7 +656,9 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
|
|||
@Override
|
||||
public void removeCounters(String name, int amount, Game game) {
|
||||
for (int i = 0; i < amount; i++) {
|
||||
getCounters(game).removeCounter(name, 1);
|
||||
if (!getCounters(game).removeCounter(name, 1)) {
|
||||
break;
|
||||
}
|
||||
GameEvent event = GameEvent.getEvent(GameEvent.EventType.COUNTER_REMOVED, objectId, getControllerOrOwner());
|
||||
event.setData(name);
|
||||
game.fireEvent(event);
|
||||
|
|
|
@ -74,26 +74,30 @@ public class Counters extends HashMap<String, Counter> implements Serializable {
|
|||
}
|
||||
}
|
||||
|
||||
public void removeCounter(String name) {
|
||||
removeCounter(name, 1);
|
||||
public boolean removeCounter(String name) {
|
||||
return removeCounter(name, 1);
|
||||
}
|
||||
|
||||
public void removeCounter(CounterType counterType, int amount) {
|
||||
public boolean removeCounter(CounterType counterType, int amount) {
|
||||
if (this.containsKey(counterType.getName())) {
|
||||
get(counterType.getName()).remove(amount);
|
||||
if (get(counterType.getName()).count == 0) {
|
||||
this.remove(counterType.getName());
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void removeCounter(String name, int amount) {
|
||||
public boolean removeCounter(String name, int amount) {
|
||||
if (this.containsKey(name)) {
|
||||
this.get(name).remove(amount);
|
||||
if (this.get(name).getCount() == 0) {
|
||||
this.remove(name);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void removeAllCounters(CounterType counterType){
|
||||
|
|
|
@ -1877,7 +1877,9 @@ public abstract class PlayerImpl implements Player, Serializable {
|
|||
@Override
|
||||
public void removeCounters(String name, int amount, Ability source, Game game) {
|
||||
for (int i = 0; i < amount; i++) {
|
||||
counters.removeCounter(name, 1);
|
||||
if (!counters.removeCounter(name, 1)) {
|
||||
break;
|
||||
}
|
||||
GameEvent event = GameEvent.getEvent(GameEvent.EventType.COUNTER_REMOVED,
|
||||
getId(), (source == null ? null : source.getSourceId()), (source == null ? null : source.getControllerId()));
|
||||
event.setData(name);
|
||||
|
|
Loading…
Reference in a new issue