From 95adcf0e9ab5d85c34a14690a731bc9486dc7cf9 Mon Sep 17 00:00:00 2001 From: Susucre <34709007+Susucre@users.noreply.github.com> Date: Tue, 30 Apr 2024 11:51:11 +0200 Subject: [PATCH] revert the GameEvent::setSourceId removal xenodron mentionned that one of the use of setSourceId is to more easily find the Event that use non-standard sourceId. So reverting the change made in a previous commit. It was a non-functional change meant to ease new BatchEvent sharing sourceId, but I'll use setSourceId instead there. --- .../java/mage/game/events/AttachEvent.java | 4 +- .../java/mage/game/events/AttachedEvent.java | 3 +- .../game/events/AttackerDeclaredEvent.java | 3 +- .../java/mage/game/events/BatchEvent.java | 5 ++- .../game/events/BlockerDeclaredEvent.java | 3 +- .../mage/game/events/CoinFlippedEvent.java | 3 +- .../game/events/CopiedStackObjectEvent.java | 3 +- .../java/mage/game/events/DamageEvent.java | 3 +- .../java/mage/game/events/DamagedEvent.java | 3 +- .../game/events/DeclareAttackerEvent.java | 3 +- .../mage/game/events/DeclareBlockerEvent.java | 3 +- .../java/mage/game/events/DrawCardEvent.java | 12 +++--- .../java/mage/game/events/DrawCardsEvent.java | 12 +++--- .../java/mage/game/events/DrewCardEvent.java | 12 +++--- .../mage/game/events/EnchantPlayerEvent.java | 3 +- .../game/events/EnchantedPlayerEvent.java | 3 +- .../main/java/mage/game/events/GameEvent.java | 43 ++++++++++--------- .../game/events/MadnessCardExiledEvent.java | 3 +- .../java/mage/game/events/ManaPaidEvent.java | 3 +- .../mage/game/events/PhaseChangedEvent.java | 3 +- .../mage/game/events/PreventDamageEvent.java | 3 +- .../game/events/PreventedDamageEvent.java | 3 +- .../mage/game/events/StayAttachedEvent.java | 3 +- .../java/mage/game/events/TargetEvent.java | 6 ++- .../java/mage/game/events/UnattachEvent.java | 3 +- .../mage/game/events/UnattachedEvent.java | 3 +- 26 files changed, 88 insertions(+), 63 deletions(-) diff --git a/Mage/src/main/java/mage/game/events/AttachEvent.java b/Mage/src/main/java/mage/game/events/AttachEvent.java index b5f94ec7d23..87a8aa41415 100644 --- a/Mage/src/main/java/mage/game/events/AttachEvent.java +++ b/Mage/src/main/java/mage/game/events/AttachEvent.java @@ -10,7 +10,9 @@ import java.util.UUID; */ public class AttachEvent extends GameEvent { + // TODO: investigate why source is provided but not used at all? public AttachEvent(UUID targetPermanentId, Permanent attachment, Ability source) { - super(GameEvent.EventType.ATTACH, targetPermanentId, attachment.getId(), attachment.getControllerId()); + super(GameEvent.EventType.ATTACH, targetPermanentId, null, attachment.getControllerId()); + this.setSourceId(attachment.getId()); } } diff --git a/Mage/src/main/java/mage/game/events/AttachedEvent.java b/Mage/src/main/java/mage/game/events/AttachedEvent.java index f5632b0fe89..9e5e6ad7878 100644 --- a/Mage/src/main/java/mage/game/events/AttachedEvent.java +++ b/Mage/src/main/java/mage/game/events/AttachedEvent.java @@ -12,6 +12,7 @@ public class AttachedEvent extends GameEvent { // TODO: investigate why source is provided but not used at all? public AttachedEvent(UUID targetPermanentId, Permanent attachment, Ability source) { - super(GameEvent.EventType.ATTACHED, targetPermanentId, attachment.getId(), attachment.getControllerId()); + super(GameEvent.EventType.ATTACHED, targetPermanentId, null, attachment.getControllerId()); + this.setSourceId(attachment.getId()); } } diff --git a/Mage/src/main/java/mage/game/events/AttackerDeclaredEvent.java b/Mage/src/main/java/mage/game/events/AttackerDeclaredEvent.java index 91a9caf7c9b..2ee7243fc7f 100644 --- a/Mage/src/main/java/mage/game/events/AttackerDeclaredEvent.java +++ b/Mage/src/main/java/mage/game/events/AttackerDeclaredEvent.java @@ -8,6 +8,7 @@ import java.util.UUID; public class AttackerDeclaredEvent extends GameEvent { public AttackerDeclaredEvent(UUID targetId, UUID attackerId, UUID attackerControllerId) { - super(GameEvent.EventType.ATTACKER_DECLARED, targetId, attackerId, attackerControllerId); + super(GameEvent.EventType.ATTACKER_DECLARED, targetId, null, attackerControllerId); + this.setSourceId(attackerId); } } diff --git a/Mage/src/main/java/mage/game/events/BatchEvent.java b/Mage/src/main/java/mage/game/events/BatchEvent.java index a24a31011cb..718d4caa206 100644 --- a/Mage/src/main/java/mage/game/events/BatchEvent.java +++ b/Mage/src/main/java/mage/game/events/BatchEvent.java @@ -25,9 +25,10 @@ public abstract class BatchEvent extends GameEvent { * @param firstEvent added to initialize the batch (batch is never empty) */ protected BatchEvent(EventType eventType, boolean singleTargetId, boolean singleSourceId, T firstEvent) { - super(eventType, (singleTargetId ? firstEvent.getTargetId() : null), (singleSourceId ? firstEvent.getSourceId() : null), null); + super(eventType, (singleTargetId ? firstEvent.getTargetId() : null), null, null); this.singleTargetId = singleTargetId; this.singleSourceId = singleSourceId; + this.setSourceId(singleSourceId ? firstEvent.getSourceId() : null); if (firstEvent instanceof BatchEvent) { // sanity check, if you need it then think twice and research carefully throw new UnsupportedOperationException("Wrong code usage: nesting batch events not supported"); } @@ -38,7 +39,7 @@ public abstract class BatchEvent extends GameEvent { * For alternate event structure logic used by ZoneChangeBatchEvent, list of events starts empty. */ protected BatchEvent(EventType eventType) { - super(eventType, null, (UUID) null, null); + super(eventType, null, null, null); this.singleTargetId = false; this.singleSourceId = false; } diff --git a/Mage/src/main/java/mage/game/events/BlockerDeclaredEvent.java b/Mage/src/main/java/mage/game/events/BlockerDeclaredEvent.java index d109e713eb1..1789f5ceb0e 100644 --- a/Mage/src/main/java/mage/game/events/BlockerDeclaredEvent.java +++ b/Mage/src/main/java/mage/game/events/BlockerDeclaredEvent.java @@ -8,6 +8,7 @@ import java.util.UUID; public class BlockerDeclaredEvent extends GameEvent { public BlockerDeclaredEvent(UUID attackerId, UUID blockerId, UUID blockerControllerId) { - super(GameEvent.EventType.BLOCKER_DECLARED, attackerId, blockerId, blockerControllerId); + super(GameEvent.EventType.BLOCKER_DECLARED, attackerId, null, blockerControllerId); + this.setSourceId(blockerId); } } diff --git a/Mage/src/main/java/mage/game/events/CoinFlippedEvent.java b/Mage/src/main/java/mage/game/events/CoinFlippedEvent.java index c30fb1d1fd6..e4b45285f2e 100644 --- a/Mage/src/main/java/mage/game/events/CoinFlippedEvent.java +++ b/Mage/src/main/java/mage/game/events/CoinFlippedEvent.java @@ -15,11 +15,12 @@ public class CoinFlippedEvent extends GameEvent { private final int flipCount; // Number of flips that lead to this event. see [[Krark's Thumb]] CoinFlippedEvent(UUID playerId, UUID sourceId, int flipCount, boolean result, boolean chosen, boolean winnable) { - super(GameEvent.EventType.COIN_FLIPPED, playerId, sourceId, playerId); + super(GameEvent.EventType.COIN_FLIPPED, playerId, null, playerId); this.result = result; this.chosen = chosen; this.winnable = winnable; this.flipCount = flipCount; + this.setSourceId(sourceId); } public boolean getResult() { diff --git a/Mage/src/main/java/mage/game/events/CopiedStackObjectEvent.java b/Mage/src/main/java/mage/game/events/CopiedStackObjectEvent.java index 3715a83397a..c7b56eae337 100644 --- a/Mage/src/main/java/mage/game/events/CopiedStackObjectEvent.java +++ b/Mage/src/main/java/mage/game/events/CopiedStackObjectEvent.java @@ -10,6 +10,7 @@ import java.util.UUID; public class CopiedStackObjectEvent extends GameEvent { public CopiedStackObjectEvent(MageObject target, MageObject newCopy, UUID newControllerId) { - super(GameEvent.EventType.COPIED_STACKOBJECT, newCopy.getId(), target.getId(), newControllerId); + super(GameEvent.EventType.COPIED_STACKOBJECT, newCopy.getId(), null, newControllerId); + this.setSourceId(target.getId()); } } diff --git a/Mage/src/main/java/mage/game/events/DamageEvent.java b/Mage/src/main/java/mage/game/events/DamageEvent.java index 9fa174d4337..431d1f74479 100644 --- a/Mage/src/main/java/mage/game/events/DamageEvent.java +++ b/Mage/src/main/java/mage/game/events/DamageEvent.java @@ -12,8 +12,9 @@ public abstract class DamageEvent extends GameEvent { private boolean asThoughWither = false; public DamageEvent(EventType type, UUID targetId, UUID damageSourceId, UUID targetControllerId, int amount, boolean preventable, boolean combat) { - super(type, targetId, damageSourceId, targetControllerId, amount, preventable); + super(type, targetId, null, targetControllerId, amount, preventable); this.combat = combat; + this.setSourceId(damageSourceId); } public boolean isCombatDamage() { diff --git a/Mage/src/main/java/mage/game/events/DamagedEvent.java b/Mage/src/main/java/mage/game/events/DamagedEvent.java index bbd56ae762b..40778542b75 100644 --- a/Mage/src/main/java/mage/game/events/DamagedEvent.java +++ b/Mage/src/main/java/mage/game/events/DamagedEvent.java @@ -11,9 +11,10 @@ public abstract class DamagedEvent extends GameEvent { protected int excess; public DamagedEvent(EventType type, UUID targetId, UUID attackerId, UUID playerId, int amount, boolean combat) { - super(type, targetId, attackerId, playerId, amount, false); + super(type, targetId, null, playerId, amount, false); this.combat = combat; this.excess = 0; + this.setSourceId(attackerId); } public boolean isCombatDamage() { diff --git a/Mage/src/main/java/mage/game/events/DeclareAttackerEvent.java b/Mage/src/main/java/mage/game/events/DeclareAttackerEvent.java index 7ff0c8630c4..52bf9a958d0 100644 --- a/Mage/src/main/java/mage/game/events/DeclareAttackerEvent.java +++ b/Mage/src/main/java/mage/game/events/DeclareAttackerEvent.java @@ -8,6 +8,7 @@ import java.util.UUID; public class DeclareAttackerEvent extends GameEvent { public DeclareAttackerEvent(UUID targetId, UUID attackerId, UUID attackerControllerId) { - super(GameEvent.EventType.DECLARE_ATTACKER, targetId, attackerId, attackerControllerId); + super(GameEvent.EventType.DECLARE_ATTACKER, targetId, null, attackerControllerId); + this.setSourceId(attackerId); } } diff --git a/Mage/src/main/java/mage/game/events/DeclareBlockerEvent.java b/Mage/src/main/java/mage/game/events/DeclareBlockerEvent.java index 04151bf5308..410f1c5d2a8 100644 --- a/Mage/src/main/java/mage/game/events/DeclareBlockerEvent.java +++ b/Mage/src/main/java/mage/game/events/DeclareBlockerEvent.java @@ -8,6 +8,7 @@ import java.util.UUID; public class DeclareBlockerEvent extends GameEvent { public DeclareBlockerEvent(UUID attackerId, UUID blockerId, UUID blockerControllerId) { - super(GameEvent.EventType.DECLARE_BLOCKER, attackerId, blockerId, blockerControllerId); + super(GameEvent.EventType.DECLARE_BLOCKER, attackerId, null, blockerControllerId); + this.setSourceId(blockerId); } } diff --git a/Mage/src/main/java/mage/game/events/DrawCardEvent.java b/Mage/src/main/java/mage/game/events/DrawCardEvent.java index a5c121622c4..ff42083931c 100644 --- a/Mage/src/main/java/mage/game/events/DrawCardEvent.java +++ b/Mage/src/main/java/mage/game/events/DrawCardEvent.java @@ -10,12 +10,12 @@ import java.util.UUID; public class DrawCardEvent extends GameEvent { public DrawCardEvent(UUID playerId, Ability source, GameEvent originalDrawEvent) { - super(GameEvent.EventType.DRAW_CARD, playerId, - // source of draw events must be kept between replacements, example: UnpredictableCycloneTest - originalDrawEvent == null - ? source == null ? null : source.getSourceId() - : originalDrawEvent.getSourceId(), - playerId, 0, false); + super(GameEvent.EventType.DRAW_CARD, playerId, null, playerId, 0, false); + + // source of draw events must be kept between replacements, example: UnpredictableCycloneTest + this.setSourceId(originalDrawEvent == null + ? source == null ? null : source.getSourceId() + : originalDrawEvent.getSourceId()); // source of draw events must be kept between replacements, example: UnpredictableCycloneTest if (originalDrawEvent != null) { diff --git a/Mage/src/main/java/mage/game/events/DrawCardsEvent.java b/Mage/src/main/java/mage/game/events/DrawCardsEvent.java index aa2c82f7054..d6e7288a35b 100644 --- a/Mage/src/main/java/mage/game/events/DrawCardsEvent.java +++ b/Mage/src/main/java/mage/game/events/DrawCardsEvent.java @@ -10,12 +10,12 @@ import java.util.UUID; public class DrawCardsEvent extends GameEvent { public DrawCardsEvent(UUID playerId, Ability source, GameEvent originalDrawEvent, int amount) { - super(GameEvent.EventType.DRAW_CARDS, playerId, - // source of draw events must be kept between replacements, example: UnpredictableCycloneTest - originalDrawEvent == null - ? source == null ? null : source.getSourceId() - : originalDrawEvent.getSourceId(), - playerId, amount, false); + super(GameEvent.EventType.DRAW_CARDS, playerId, null, playerId, amount, false); + + // source of draw events must be kept between replacements, example: UnpredictableCycloneTest + this.setSourceId(originalDrawEvent == null + ? source == null ? null : source.getSourceId() + : originalDrawEvent.getSourceId()); // source of draw events must be kept between replacements, example: UnpredictableCycloneTest if (originalDrawEvent != null) { diff --git a/Mage/src/main/java/mage/game/events/DrewCardEvent.java b/Mage/src/main/java/mage/game/events/DrewCardEvent.java index 194a4020217..fa9cca0effa 100644 --- a/Mage/src/main/java/mage/game/events/DrewCardEvent.java +++ b/Mage/src/main/java/mage/game/events/DrewCardEvent.java @@ -10,11 +10,11 @@ import java.util.UUID; public class DrewCardEvent extends GameEvent { public DrewCardEvent(UUID cardId, UUID playerId, Ability source, GameEvent originalDrawEvent) { - super(EventType.DREW_CARD, cardId, - // source of draw events must be kept between replacements, example: UnpredictableCycloneTest - originalDrawEvent == null - ? source == null ? null : source.getSourceId() - : originalDrawEvent.getSourceId(), - playerId, 0, false); + super(EventType.DREW_CARD, cardId, null, playerId, 0, false); + + // source of draw events must be kept between replacements, example: UnpredictableCycloneTest + this.setSourceId(originalDrawEvent == null + ? source == null ? null : source.getSourceId() + : originalDrawEvent.getSourceId()); } } diff --git a/Mage/src/main/java/mage/game/events/EnchantPlayerEvent.java b/Mage/src/main/java/mage/game/events/EnchantPlayerEvent.java index 5562ef7e7f5..608c481f767 100644 --- a/Mage/src/main/java/mage/game/events/EnchantPlayerEvent.java +++ b/Mage/src/main/java/mage/game/events/EnchantPlayerEvent.java @@ -12,6 +12,7 @@ public class EnchantPlayerEvent extends GameEvent { // TODO: investigate why source is provided but not used at all? public EnchantPlayerEvent(UUID targetId, Permanent attachment, Ability source) { - super(GameEvent.EventType.ENCHANT_PLAYER, targetId, attachment.getId(), attachment.getControllerId()); + super(GameEvent.EventType.ENCHANT_PLAYER, targetId, null, attachment.getControllerId()); + this.setSourceId(attachment.getId()); } } diff --git a/Mage/src/main/java/mage/game/events/EnchantedPlayerEvent.java b/Mage/src/main/java/mage/game/events/EnchantedPlayerEvent.java index cef27ed8f0c..ab290fb539e 100644 --- a/Mage/src/main/java/mage/game/events/EnchantedPlayerEvent.java +++ b/Mage/src/main/java/mage/game/events/EnchantedPlayerEvent.java @@ -12,6 +12,7 @@ public class EnchantedPlayerEvent extends GameEvent { // TODO: investigate why source is provided but not used at all? public EnchantedPlayerEvent(UUID targetId, Permanent attachment, Ability source) { - super(GameEvent.EventType.ENCHANTED_PLAYER, targetId, attachment.getId(), attachment.getControllerId()); + super(GameEvent.EventType.ENCHANTED_PLAYER, targetId, null, attachment.getControllerId()); + this.setSourceId(attachment.getId()); } } diff --git a/Mage/src/main/java/mage/game/events/GameEvent.java b/Mage/src/main/java/mage/game/events/GameEvent.java index e1e6d80c35f..ca4610c26a1 100644 --- a/Mage/src/main/java/mage/game/events/GameEvent.java +++ b/Mage/src/main/java/mage/game/events/GameEvent.java @@ -641,31 +641,23 @@ public class GameEvent implements Serializable { } public GameEvent(EventType type, UUID targetId, Ability source, UUID playerId) { - this(type, null, targetId, source == null ? null : source.getSourceId(), playerId, 0, false); - } - - protected GameEvent(EventType type, UUID targetId, UUID sourceId, UUID playerId) { - this(type, null, targetId, sourceId, playerId, 0, false); + this(type, null, targetId, source, playerId, 0, false); } public GameEvent(EventType type, UUID targetId, Ability source, UUID playerId, ApprovingObject approvingObject) { - this(type, null, targetId, source == null ? null : source.getSourceId(), playerId, 0, false, approvingObject); + this(type, null, targetId, source, playerId, 0, false, approvingObject); } public GameEvent(EventType type, UUID targetId, Ability source, UUID playerId, int amount, boolean flag) { - this(type, null, targetId, source == null ? null : source.getSourceId(), playerId, amount, flag); - } - - public GameEvent(EventType type, UUID targetId, UUID sourceId, UUID playerId, int amount, boolean flag) { - this(type, null, targetId, sourceId, playerId, amount, flag); + this(type, null, targetId, source, playerId, amount, flag); } public GameEvent(UUID customEventType, UUID targetId, Ability source, UUID playerId) { - this(EventType.CUSTOM_EVENT, customEventType, targetId, source == null ? null : source.getSourceId(), playerId, 0, false); + this(EventType.CUSTOM_EVENT, customEventType, targetId, source, playerId, 0, false); } public GameEvent(UUID customEventType, UUID targetId, Ability source, UUID playerId, int amount, boolean flag) { - this(EventType.CUSTOM_EVENT, customEventType, targetId, source == null ? null : source.getSourceId(), playerId, amount, flag); + this(EventType.CUSTOM_EVENT, customEventType, targetId, source, playerId, amount, flag); } public static GameEvent getEvent(EventType type, UUID targetId, Ability source, UUID playerId, int amount) { @@ -682,7 +674,7 @@ public class GameEvent implements Serializable { @Deprecated // usage must be replaced by getEvent with source ability public static GameEvent getEvent(EventType type, UUID targetId, UUID playerId) { - return new GameEvent(type, targetId, (UUID) null, playerId); + return new GameEvent(type, targetId, null, playerId); } public static GameEvent getEvent(EventType type, UUID targetId, Ability source, UUID playerId, String data, int amount) { @@ -700,21 +692,18 @@ public class GameEvent implements Serializable { return new GameEvent(customEventType, targetId, source, playerId); } - private GameEvent(EventType type, UUID customEventType, - UUID targetId, UUID sourceId, UUID playerId, - int amount, boolean flag - ) { - this(type, customEventType, targetId, sourceId, playerId, amount, flag, null); + private GameEvent(EventType type, UUID customEventType, UUID targetId, Ability source, UUID playerId, int amount, boolean flag) { + this(type, customEventType, targetId, source, playerId, amount, flag, null); } private GameEvent(EventType type, UUID customEventType, - UUID targetId, UUID sourceId, UUID playerId, + UUID targetId, Ability source, UUID playerId, int amount, boolean flag, ApprovingObject approvingObject ) { this.type = type; this.customEventType = customEventType; this.targetId = targetId; - this.sourceId = sourceId; + this.sourceId = source == null ? null : source.getSourceId(); // We only keep the sourceId from the whole source. this.amount = amount; this.playerId = playerId; this.flag = flag; @@ -863,6 +852,18 @@ public class GameEvent implements Serializable { return identifier.equals(approvingObject.getApprovingAbility().getIdentifier()); } + /** + * Custom sourceId setup for some events (use it in constructor). + * TODO: replace all custom sourceId to normal event classes + * for now, having the setter helps find all that do not provide an Ability source, + * so keeping it is worthwhile until a thoughtfull cleanup. + * + * @param sourceId + */ + protected void setSourceId(UUID sourceId) { + this.sourceId = sourceId; + } + @Override public String toString() { return this.type.toString(); diff --git a/Mage/src/main/java/mage/game/events/MadnessCardExiledEvent.java b/Mage/src/main/java/mage/game/events/MadnessCardExiledEvent.java index dbaf77d6209..921f5e78e54 100644 --- a/Mage/src/main/java/mage/game/events/MadnessCardExiledEvent.java +++ b/Mage/src/main/java/mage/game/events/MadnessCardExiledEvent.java @@ -10,6 +10,7 @@ import java.util.UUID; public class MadnessCardExiledEvent extends GameEvent { public MadnessCardExiledEvent(UUID cardId, Ability source, UUID controllerId) { - super(GameEvent.EventType.MADNESS_CARD_EXILED, cardId, source.getOriginalId(), controllerId); + super(GameEvent.EventType.MADNESS_CARD_EXILED, cardId, null, controllerId); + setSourceId(source.getOriginalId()); } } diff --git a/Mage/src/main/java/mage/game/events/ManaPaidEvent.java b/Mage/src/main/java/mage/game/events/ManaPaidEvent.java index febe076f1af..e35eef467c4 100644 --- a/Mage/src/main/java/mage/game/events/ManaPaidEvent.java +++ b/Mage/src/main/java/mage/game/events/ManaPaidEvent.java @@ -16,11 +16,12 @@ public class ManaPaidEvent extends GameEvent { private final ManaType manaType; public ManaPaidEvent(Ability abilityToPay, UUID manaSourceId, boolean manaFlag, UUID manaOriginalId, MageObject sourceObject, ManaType manaType) { - super(GameEvent.EventType.MANA_PAID, abilityToPay.getId(), manaSourceId, abilityToPay.getControllerId(), 0, manaFlag); + super(GameEvent.EventType.MANA_PAID, abilityToPay.getId(), null, abilityToPay.getControllerId(), 0, manaFlag); this.setData(manaOriginalId.toString()); this.sourcePaidId = abilityToPay.getSourceId(); this.sourceObject = sourceObject; this.manaType = manaType; + this.setSourceId(manaSourceId); } public UUID getSourcePaidId() { diff --git a/Mage/src/main/java/mage/game/events/PhaseChangedEvent.java b/Mage/src/main/java/mage/game/events/PhaseChangedEvent.java index 6251b9e32e1..ba35cdc0ac6 100644 --- a/Mage/src/main/java/mage/game/events/PhaseChangedEvent.java +++ b/Mage/src/main/java/mage/game/events/PhaseChangedEvent.java @@ -10,6 +10,7 @@ import java.util.UUID; public class PhaseChangedEvent extends GameEvent { public PhaseChangedEvent(UUID playerId, TurnMod extraTurnMode) { - super(GameEvent.EventType.PHASE_CHANGED, playerId, extraTurnMode == null ? null : extraTurnMode.getId(), playerId); + super(GameEvent.EventType.PHASE_CHANGED, playerId, null, playerId); + this.setSourceId(extraTurnMode == null ? null : extraTurnMode.getId()); } } diff --git a/Mage/src/main/java/mage/game/events/PreventDamageEvent.java b/Mage/src/main/java/mage/game/events/PreventDamageEvent.java index 5527a01c86a..73abe088169 100644 --- a/Mage/src/main/java/mage/game/events/PreventDamageEvent.java +++ b/Mage/src/main/java/mage/game/events/PreventDamageEvent.java @@ -11,7 +11,8 @@ public class PreventDamageEvent extends GameEvent { // TODO: investigate why source is provided but not used? public PreventDamageEvent(UUID targetId, UUID attackerId, Ability source, UUID playerId, int damageToPrevent, boolean isCombatDamage) { - super(GameEvent.EventType.PREVENT_DAMAGE, targetId, attackerId, playerId, damageToPrevent, isCombatDamage); + super(GameEvent.EventType.PREVENT_DAMAGE, targetId, null, playerId, damageToPrevent, isCombatDamage); + this.setSourceId(attackerId); } public boolean isCombatDamage() { diff --git a/Mage/src/main/java/mage/game/events/PreventedDamageEvent.java b/Mage/src/main/java/mage/game/events/PreventedDamageEvent.java index 2e2a99585a7..e490667f5c2 100644 --- a/Mage/src/main/java/mage/game/events/PreventedDamageEvent.java +++ b/Mage/src/main/java/mage/game/events/PreventedDamageEvent.java @@ -10,6 +10,7 @@ import java.util.UUID; public class PreventedDamageEvent extends GameEvent { public PreventedDamageEvent(UUID targetId, UUID attackerId, Ability source, UUID playerId, int preventedDamage) { - super(GameEvent.EventType.PREVENTED_DAMAGE, targetId, attackerId, playerId, preventedDamage, false); + super(GameEvent.EventType.PREVENTED_DAMAGE, targetId, null, playerId, preventedDamage, false); + this.setSourceId(attackerId); } } diff --git a/Mage/src/main/java/mage/game/events/StayAttachedEvent.java b/Mage/src/main/java/mage/game/events/StayAttachedEvent.java index b84278fdd82..ddac70abe98 100644 --- a/Mage/src/main/java/mage/game/events/StayAttachedEvent.java +++ b/Mage/src/main/java/mage/game/events/StayAttachedEvent.java @@ -11,6 +11,7 @@ public class StayAttachedEvent extends GameEvent { // TODO: investigate why source is not used as source for the event? public StayAttachedEvent(UUID targetId, UUID attachmentId, Ability source) { - super(GameEvent.EventType.STAY_ATTACHED, targetId, attachmentId, null); + super(GameEvent.EventType.STAY_ATTACHED, targetId, null, null); + this.setSourceId(attachmentId); } } diff --git a/Mage/src/main/java/mage/game/events/TargetEvent.java b/Mage/src/main/java/mage/game/events/TargetEvent.java index 63d93a5df38..f2c90ebc87b 100644 --- a/Mage/src/main/java/mage/game/events/TargetEvent.java +++ b/Mage/src/main/java/mage/game/events/TargetEvent.java @@ -17,11 +17,13 @@ public class TargetEvent extends GameEvent { * @param sourceControllerId can be different from real controller (example: ability instructs another player to targeting) */ public TargetEvent(Card target, UUID sourceId, UUID sourceControllerId) { - super(GameEvent.EventType.TARGET, target.getId(), sourceId, sourceControllerId); + super(GameEvent.EventType.TARGET, target.getId(), null, sourceControllerId); + this.setSourceId(sourceId); } public TargetEvent(Player target, UUID sourceId, UUID sourceControllerId) { - super(GameEvent.EventType.TARGET, target.getId(), sourceId, sourceControllerId); + super(GameEvent.EventType.TARGET, target.getId(), null, sourceControllerId); + this.setSourceId(sourceId); } /** diff --git a/Mage/src/main/java/mage/game/events/UnattachEvent.java b/Mage/src/main/java/mage/game/events/UnattachEvent.java index 51719082dea..51375d50ff5 100644 --- a/Mage/src/main/java/mage/game/events/UnattachEvent.java +++ b/Mage/src/main/java/mage/game/events/UnattachEvent.java @@ -12,6 +12,7 @@ public class UnattachEvent extends GameEvent { // TODO: investigate why source is not used as source for the event? public UnattachEvent(UUID targetId, UUID attachmentId, Permanent attachment, Ability source) { - super(GameEvent.EventType.UNATTACH, targetId, attachmentId, attachment == null ? null : attachment.getControllerId()); + super(GameEvent.EventType.UNATTACH, targetId, null, attachment == null ? null : attachment.getControllerId()); + this.setSourceId(attachmentId); } } diff --git a/Mage/src/main/java/mage/game/events/UnattachedEvent.java b/Mage/src/main/java/mage/game/events/UnattachedEvent.java index 35348abf145..f6495107c36 100644 --- a/Mage/src/main/java/mage/game/events/UnattachedEvent.java +++ b/Mage/src/main/java/mage/game/events/UnattachedEvent.java @@ -12,6 +12,7 @@ public class UnattachedEvent extends GameEvent { // TODO: investigate why source is provided but not used at all? public UnattachedEvent(UUID targetId, UUID attachmentId, Permanent attachment, Ability source) { - super(GameEvent.EventType.UNATTACHED, targetId, attachmentId, attachment == null ? null : attachment.getControllerId()); + super(GameEvent.EventType.UNATTACHED, targetId, null, attachment == null ? null : attachment.getControllerId()); + this.setSourceId(attachmentId); } }