refactor: improved damaged batch events, added todo to fix (related to #10870)

This commit is contained in:
Oleg Agafonov 2023-09-13 03:05:54 +04:00
parent d056f81ecc
commit 316e0dc1f3
27 changed files with 138 additions and 125 deletions

View file

@ -83,7 +83,7 @@ class AlelaCunningConquerorTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PLAYER_BATCH_ONE_PLAYER;
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_ONE_PLAYER;
}
@Override

View file

@ -10,7 +10,7 @@ import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.game.Game;
import mage.game.events.DamagedEvent;
import mage.game.events.DamagedPermanentBatchEvent;
import mage.game.events.DamagedBatchForPermanentsEvent;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.players.Player;
@ -70,7 +70,7 @@ class BenSoloTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PERMANENT_BATCH;
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PERMANENTS;
}
@Override
@ -83,7 +83,7 @@ class BenSoloTriggeredAbility extends TriggeredAbilityImpl {
}
int damage = 0;
DamagedPermanentBatchEvent dEvent = (DamagedPermanentBatchEvent) event;
DamagedBatchForPermanentsEvent dEvent = (DamagedBatchForPermanentsEvent) event;
Set<DamagedEvent> set = dEvent.getEvents();
for (DamagedEvent damagedEvent : set) {
UUID targetID = damagedEvent.getTargetId();

View file

@ -16,7 +16,7 @@ import mage.constants.SubType;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.DamagedEvent;
import mage.game.events.DamagedPermanentBatchEvent;
import mage.game.events.DamagedBatchForPermanentsEvent;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.players.Player;
@ -76,7 +76,7 @@ class BlazingSunsteelTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PERMANENT_BATCH;
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PERMANENTS;
}
@Override
@ -92,7 +92,7 @@ class BlazingSunsteelTriggeredAbility extends TriggeredAbilityImpl {
}
int damage = 0;
DamagedPermanentBatchEvent dEvent = (DamagedPermanentBatchEvent) event;
DamagedBatchForPermanentsEvent dEvent = (DamagedBatchForPermanentsEvent) event;
for (DamagedEvent damagedEvent : dEvent.getEvents()) {
UUID targetID = damagedEvent.getTargetId();
if (targetID == null) {

View file

@ -10,7 +10,7 @@ import mage.cards.*;
import mage.constants.*;
import mage.game.Game;
import mage.game.events.DamagedEvent;
import mage.game.events.DamagedPlayerBatchEvent;
import mage.game.events.DamagedBatchForPlayersEvent;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.players.Player;
@ -67,12 +67,12 @@ class BreechesBrazenPlundererTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PLAYER_BATCH;
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PLAYERS;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
DamagedPlayerBatchEvent dEvent = (DamagedPlayerBatchEvent) event;
DamagedBatchForPlayersEvent dEvent = (DamagedBatchForPlayersEvent) event;
Set<UUID> opponents = new HashSet<>();
for (DamagedEvent damagedEvent : dEvent.getEvents()) {
Permanent permanent = game.getPermanent(damagedEvent.getSourceId());

View file

@ -20,7 +20,7 @@ import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.events.DamagedEvent;
import mage.game.events.DamagedPlayerBatchEvent;
import mage.game.events.DamagedBatchForPlayersEvent;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
@ -82,12 +82,12 @@ class ContaminantGrafterTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PLAYER_BATCH;
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PLAYERS;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
DamagedPlayerBatchEvent dEvent = (DamagedPlayerBatchEvent) event;
DamagedBatchForPlayersEvent dEvent = (DamagedBatchForPlayersEvent) event;
for (DamagedEvent damagedEvent : dEvent.getEvents()) {
if (!damagedEvent.isCombatDamage()) {
continue;

View file

@ -20,7 +20,7 @@ import mage.constants.SubType;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.DamagedEvent;
import mage.game.events.DamagedPermanentBatchEvent;
import mage.game.events.DamagedBatchForPermanentsEvent;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.players.Player;
@ -80,7 +80,7 @@ class FiendlashTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PERMANENT_BATCH;
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PERMANENTS;
}
@Override
@ -97,7 +97,7 @@ class FiendlashTriggeredAbility extends TriggeredAbilityImpl {
game.getState().setValue("Fiendlash" + equipment.getId(), attachedCreature);
DamagedPermanentBatchEvent dEvent = (DamagedPermanentBatchEvent) event;
DamagedBatchForPermanentsEvent dEvent = (DamagedBatchForPermanentsEvent) event;
for (DamagedEvent damagedEvent : dEvent.getEvents()) {
UUID targetID = damagedEvent.getTargetId();
if (targetID == null) {

View file

@ -13,7 +13,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.game.Game;
import mage.game.events.DamagedEvent;
import mage.game.events.DamagedPlayerBatchEvent;
import mage.game.events.DamagedBatchForPlayersEvent;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.HumanKnightToken;
@ -60,12 +60,12 @@ class ForthEorlingasTriggeredAbility extends DelayedTriggeredAbility {
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PLAYER_BATCH;
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PLAYERS;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
DamagedPlayerBatchEvent dEvent = (DamagedPlayerBatchEvent) event;
DamagedBatchForPlayersEvent dEvent = (DamagedBatchForPlayersEvent) event;
for (DamagedEvent damagedEvent : dEvent.getEvents()) {
if (!damagedEvent.isCombatDamage()) {
continue;

View file

@ -16,7 +16,7 @@ import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.Game;
import mage.game.events.DamagedEvent;
import mage.game.events.DamagedPlayerBatchEvent;
import mage.game.events.DamagedBatchForPlayersEvent;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
@ -73,12 +73,12 @@ class HordewingSkaabTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PLAYER_BATCH;
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PLAYERS;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
DamagedPlayerBatchEvent dEvent = (DamagedPlayerBatchEvent) event;
DamagedBatchForPlayersEvent dEvent = (DamagedBatchForPlayersEvent) event;
Set<UUID> opponents = new HashSet<>();
for (DamagedEvent damagedEvent : dEvent.getEvents()) {
if (!damagedEvent.isCombatDamage()) {

View file

@ -16,7 +16,6 @@ import mage.constants.SubType;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.DamagedBatchEvent;
import mage.game.events.DamagedPermanentBatchEvent;
import mage.game.events.GameEvent;
import mage.target.common.TargetAnyTarget;
@ -77,7 +76,7 @@ class HowlpackAvengerTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PERMANENT_BATCH;
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PERMANENTS;
}
@Override

View file

@ -16,7 +16,7 @@ import mage.filter.FilterSpell;
import mage.filter.StaticFilters;
import mage.filter.predicate.other.HasOnlySingleTargetPermanentPredicate;
import mage.game.Game;
import mage.game.events.DamagedPermanentBatchEvent;
import mage.game.events.DamagedBatchForPermanentsEvent;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.game.stack.StackObject;
@ -80,12 +80,12 @@ class ImodaneThePyrohammerTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PERMANENT_BATCH;
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PERMANENTS;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
DamagedPermanentBatchEvent dEvent = (DamagedPermanentBatchEvent) event;
DamagedBatchForPermanentsEvent dEvent = (DamagedBatchForPermanentsEvent) event;
int damage = dEvent
.getEvents()
.stream()

View file

@ -13,7 +13,7 @@ import mage.constants.SuperType;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.DamagedEvent;
import mage.game.events.DamagedPlayerBatchEvent;
import mage.game.events.DamagedBatchForPlayersEvent;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.TreasureToken;
@ -68,12 +68,12 @@ class MalcolmKeenEyedNavigatorTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PLAYER_BATCH;
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PLAYERS;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
DamagedPlayerBatchEvent dEvent = (DamagedPlayerBatchEvent) event;
DamagedBatchForPlayersEvent dEvent = (DamagedBatchForPlayersEvent) event;
Set<UUID> opponents = new HashSet<>();
for (DamagedEvent damagedEvent : dEvent.getEvents()) {
Permanent permanent = game.getPermanent(damagedEvent.getSourceId());

View file

@ -72,8 +72,8 @@ class OliviasAttendantsTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PLAYER_BATCH
|| event.getType() == GameEvent.EventType.DAMAGED_PERMANENT_BATCH;
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PLAYERS
|| event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PERMANENTS;
}
@Override

View file

@ -80,7 +80,7 @@ class RisonaAsariCommanderTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PLAYER_BATCH;
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PLAYERS;
}
@Override

View file

@ -91,8 +91,8 @@ class ZurgoAndOjutaiTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PLAYER_BATCH
|| event.getType() == GameEvent.EventType.DAMAGED_PERMANENT_BATCH;
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PLAYERS
|| event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PERMANENTS;
}
@Override

View file

@ -4,9 +4,7 @@ import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.Effect;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.DamagedEvent;
import mage.game.events.DamagedPlayerBatchEvent;
import mage.game.events.DamagedPlayerEvent;
import mage.game.events.DamagedBatchForPlayersEvent;
import mage.game.events.GameEvent;
import mage.target.targetpointer.FixedTarget;
@ -65,12 +63,12 @@ public class CombatDamageDealtToYouTriggeredAbility extends TriggeredAbilityImpl
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PLAYER_BATCH;
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PLAYERS;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
DamagedPlayerBatchEvent damageEvent = (DamagedPlayerBatchEvent) event;
DamagedBatchForPlayersEvent damageEvent = (DamagedBatchForPlayersEvent) event;
boolean check = damageEvent.getEvents()
.stream()
.anyMatch(c -> c.isCombatDamage() && c.getPlayerId() == this.controllerId);

View file

@ -55,7 +55,7 @@ public class DealCombatDamageControlledTriggeredAbility extends TriggeredAbility
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PLAYER_BATCH_ONE_PLAYER;
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_ONE_PLAYER;
}
@Override

View file

@ -5,7 +5,7 @@ import mage.abilities.effects.Effect;
import mage.constants.AbilityWord;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.DamagedPermanentBatchEvent;
import mage.game.events.DamagedBatchForPermanentsEvent;
import mage.game.events.GameEvent;
/**
@ -36,12 +36,12 @@ public class DealtDamageToSourceTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PERMANENT_BATCH;
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PERMANENTS;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
DamagedPermanentBatchEvent dEvent = (DamagedPermanentBatchEvent) event;
DamagedBatchForPermanentsEvent dEvent = (DamagedBatchForPermanentsEvent) event;
int damage = dEvent
.getEvents()
.stream()

View file

@ -8,7 +8,7 @@ import mage.constants.Zone;
import mage.game.Controllable;
import mage.game.Game;
import mage.game.events.DamagedEvent;
import mage.game.events.DamagedPlayerBatchEvent;
import mage.game.events.DamagedBatchForPlayersEvent;
import mage.game.events.GameEvent;
import mage.target.targetpointer.FixedTarget;
@ -57,12 +57,12 @@ class InitiativeDamageTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PLAYER_BATCH;
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_PLAYERS;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
DamagedPlayerBatchEvent dEvent = (DamagedPlayerBatchEvent) event;
DamagedBatchForPlayersEvent dEvent = (DamagedBatchForPlayersEvent) event;
UUID playerId = dEvent
.getEvents()
.stream()

View file

@ -1,6 +1,5 @@
package mage.game;
import static java.util.Collections.emptyList;
import mage.MageObject;
import mage.MageObjectReference;
import mage.abilities.*;
@ -45,6 +44,8 @@ import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import static java.util.Collections.emptyList;
/**
* @author BetaSteward_at_googlemail.com
* <p>
@ -816,53 +817,44 @@ public class GameState implements Serializable, Copyable<GameState> {
}
public void addSimultaneousDamage(DamagedEvent damagedEvent, Game game) {
// This method does look for Batch Event in simultaneousEvents to batch
// damagedEvent with. For each kind of batch, either there is a batch
// of the proper class fitting the damagedEvent, or there is not.
// Combine multiple damage events in the single event (batch)
// * per damage type (see GameEvent.DAMAGED_BATCH_FOR_PERMANENTS, GameEvent.DAMAGED_BATCH_FOR_PLAYERS)
// * per player (see GameEvent.DAMAGED_BATCH_FOR_ONE_PLAYER)
//
// If there is not one of the batched event (i.e. if the respective flag is
// at false after the loop), then a batched event is created for future
// events to be batched with.
// Warning, one event can be stored in multiple batches,
// example: DAMAGED_BATCH_FOR_PLAYERS + DAMAGED_BATCH_FOR_ONE_PLAYER
// All damage from any source to anything
// the batch is of class DamagedBatchEvent
boolean flagBatchAll = false;
// All damage from any source to a specific player (damagedEvent.getPlayerId())
// the batch is of class DamagedPlayerBatchOnePlayerEvent
boolean flagBatchForPlayer = false;
boolean isPlayerDamage = damagedEvent instanceof DamagedPlayerEvent;
// existing batch
boolean isDamageBatchUsed = false;
boolean isPlayerBatchUsed = false;
for (GameEvent event : simultaneousEvents) {
// per damage type
if ((event instanceof DamagedBatchEvent)
&& ((DamagedBatchEvent) event).getDamageClazz().isInstance(damagedEvent)) {
// existing batch for damage of that damage class.
((DamagedBatchEvent) event).addEvent(damagedEvent);
flagBatchAll = true;
isDamageBatchUsed = true;
}
if (event instanceof DamagedPlayerBatchOnePlayerEvent) {
DamagedPlayerBatchOnePlayerEvent eventForPlayer = (DamagedPlayerBatchOnePlayerEvent) event;
if (eventForPlayer.getDamageClazz().isInstance(damagedEvent)
// per player
if (isPlayerDamage && event instanceof DamagedBatchForOnePlayerEvent) {
DamagedBatchForOnePlayerEvent oldPlayerBatch = (DamagedBatchForOnePlayerEvent) event;
if (oldPlayerBatch.getDamageClazz().isInstance(damagedEvent)
&& event.getPlayerId().equals(damagedEvent.getTargetId())) {
// existing batch for damage of that damage class to the same player
eventForPlayer.addEvent(damagedEvent);
flagBatchForPlayer = true;
oldPlayerBatch.addEvent(damagedEvent);
isPlayerBatchUsed = true;
}
}
}
if (!flagBatchAll) {
// new batch for any kind of damage, creating a fresh one with damagedEvent inside.
// new batch
if (!isDamageBatchUsed) {
addSimultaneousEvent(DamagedBatchEvent.makeEvent(damagedEvent), game);
}
if (!flagBatchForPlayer && damagedEvent.getPlayerId() != null && damagedEvent.getPlayerId().equals(damagedEvent.getTargetId())) {
// new batch for damage from any source to the specific damaged player,
// creating a fresh one with damagedEvent inside.
DamagedBatchEvent event = new DamagedPlayerBatchOnePlayerEvent(damagedEvent.getPlayerId());
if (!isPlayerBatchUsed && isPlayerDamage) {
DamagedBatchEvent event = new DamagedBatchForOnePlayerEvent(damagedEvent.getTargetId());
event.addEvent(damagedEvent);
addSimultaneousEvent(event, game);
}

View file

@ -4,6 +4,7 @@ import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
/**
* @author TheElk801
@ -30,8 +31,19 @@ public abstract class DamagedBatchEvent extends GameEvent {
.sum();
}
public Set<UUID> getTargetIds() {
return events
.stream()
.map(GameEvent::getTargetId)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
}
@Override
@Deprecated // events can store a diff value, so search it from events list instead
public UUID getTargetId() {
// TODO: replace it by getTargetIds or seearch in getEvents, enable exception
//throw new IllegalStateException("Wrong code usage. Must search batch value from a list");
return events
.stream()
.map(GameEvent::getTargetId)
@ -40,8 +52,19 @@ public abstract class DamagedBatchEvent extends GameEvent {
.orElse(null);
}
public Set<UUID> getSourceIds() {
return events
.stream()
.map(GameEvent::getSourceId)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
}
@Override
@Deprecated // events can store a diff value, so search it from events list instead
public UUID getSourceId() {
// TODO: replace it by getSourceIds or seearch in getEvents, enable exception
//throw new IllegalStateException("Wrong code usage. Must search batch value from a list");
return events
.stream()
.map(GameEvent::getSourceId)
@ -61,10 +84,10 @@ public abstract class DamagedBatchEvent extends GameEvent {
public static DamagedBatchEvent makeEvent(DamagedEvent damagedEvent) {
DamagedBatchEvent event;
if (damagedEvent instanceof DamagedPlayerEvent) {
event = new DamagedPlayerBatchEvent();
event = new DamagedBatchForPlayersEvent();
event.addEvent(damagedEvent);
} else if (damagedEvent instanceof DamagedPermanentEvent) {
event = new DamagedPermanentBatchEvent();
event = new DamagedBatchForPermanentsEvent();
event.addEvent(damagedEvent);
} else {
event = null;

View file

@ -0,0 +1,14 @@
package mage.game.events;
import java.util.UUID;
/**
* @author Susucr
*/
public class DamagedBatchForOnePlayerEvent extends DamagedBatchEvent {
public DamagedBatchForOnePlayerEvent(UUID playerId) {
super(EventType.DAMAGED_BATCH_FOR_ONE_PLAYER, DamagedPlayerEvent.class);
this.setPlayerId(playerId);
}
}

View file

@ -0,0 +1,11 @@
package mage.game.events;
/**
* @author TheElk801
*/
public class DamagedBatchForPermanentsEvent extends DamagedBatchEvent {
public DamagedBatchForPermanentsEvent() {
super(EventType.DAMAGED_BATCH_FOR_PERMANENTS, DamagedPermanentEvent.class);
}
}

View file

@ -0,0 +1,11 @@
package mage.game.events;
/**
* @author TheElk801
*/
public class DamagedBatchForPlayersEvent extends DamagedBatchEvent {
public DamagedBatchForPlayersEvent() {
super(GameEvent.EventType.DAMAGED_BATCH_FOR_PLAYERS, DamagedPlayerEvent.class);
}
}

View file

@ -1,11 +0,0 @@
package mage.game.events;
/**
* @author TheElk801
*/
public class DamagedPermanentBatchEvent extends DamagedBatchEvent {
public DamagedPermanentBatchEvent() {
super(EventType.DAMAGED_PERMANENT_BATCH, DamagedPermanentEvent.class);
}
}

View file

@ -1,11 +0,0 @@
package mage.game.events;
/**
* @author TheElk801
*/
public class DamagedPlayerBatchEvent extends DamagedBatchEvent {
public DamagedPlayerBatchEvent() {
super(GameEvent.EventType.DAMAGED_PLAYER_BATCH, DamagedPlayerEvent.class);
}
}

View file

@ -1,14 +0,0 @@
package mage.game.events;
import java.util.UUID;
/**
* @author Susucr
*/
public class DamagedPlayerBatchOnePlayerEvent extends DamagedBatchEvent {
public DamagedPlayerBatchOnePlayerEvent(UUID playerId) {
super(EventType.DAMAGED_PLAYER_BATCH_ONE_PLAYER, DamagedPlayerEvent.class);
this.setPlayerId(playerId);
}
}

View file

@ -118,15 +118,16 @@ public class GameEvent implements Serializable {
*/
DAMAGED_PLAYER,
/* DAMAGED_PLAYER_BATCH
combines all player damaged events in one single event
/* DAMAGED_BATCH_FOR_PLAYERS,
combines all player damage events to a single batch (event)
*/
DAMAGED_PLAYER_BATCH,
DAMAGED_BATCH_FOR_PLAYERS,
/* DAMAGED_PLAYER_BATCH_ONE_PLAYER
combines all player damaged events for a single player in one single event
/* DAMAGED_BATCH_FOR_ONE_PLAYER
combines all player damage events to a single batch (event) and split it per damaged player
playerId the id of the damaged player
*/
DAMAGED_PLAYER_BATCH_ONE_PLAYER,
DAMAGED_BATCH_FOR_ONE_PLAYER,
/* DAMAGE_CAUSES_LIFE_LOSS,
targetId the id of the damaged player
@ -406,10 +407,10 @@ public class GameEvent implements Serializable {
DAMAGE_PERMANENT,
DAMAGED_PERMANENT,
/* DAMAGED_PERMANENT_BATCH
combine all permanent damage events to single event
/* DAMAGED_BATCH_FOR_PERMANENTS
combine all permanent damage events to a single batch (event)
*/
DAMAGED_PERMANENT_BATCH,
DAMAGED_BATCH_FOR_PERMANENTS,
DESTROY_PERMANENT,
/* DESTROY_PERMANENT_BY_LEGENDARY_RULE