* Howlpack Avenger - fixed game error on usage (#9781)

This commit is contained in:
Oleg Agafonov 2023-03-26 22:45:23 +04:00
parent b632d89caa
commit a648268c4c
6 changed files with 23 additions and 4 deletions

View file

@ -48,7 +48,7 @@ public class DealsCombatDamageEquippedTriggeredAbility extends TriggeredAbilityI
.getEvents()
.stream()
.filter(DamagedEvent::isCombatDamage)
.filter(e -> e.getSourceId().equals(sourcePermanent.getAttachedTo()))
.filter(e -> e.getAttackerId().equals(sourcePermanent.getAttachedTo()))
.mapToInt(GameEvent::getAmount)
.sum();
if (amount < 1) {

View file

@ -812,16 +812,19 @@ public class GameState implements Serializable, Copyable<GameState> {
}
public void addSimultaneousDamage(DamagedEvent damagedEvent, Game game) {
// combine damages per type (player or permanent)
boolean flag = false;
for (GameEvent event : simultaneousEvents) {
if ((event instanceof DamagedBatchEvent)
&& ((DamagedBatchEvent) event).getDamageClazz().isInstance(damagedEvent)) {
// old batch
((DamagedBatchEvent) event).addEvent(damagedEvent);
flag = true;
break;
}
}
if (!flag) {
// new batch
addSimultaneousEvent(DamagedBatchEvent.makeEvent(damagedEvent), game);
}
}

View file

@ -32,4 +32,8 @@ public abstract class DamagedEvent extends GameEvent {
public int getExcess() {
return excess;
}
public UUID getAttackerId() {
return getSourceId();
}
}

View file

@ -112,7 +112,12 @@ public class GameEvent implements Serializable {
flag true = comabat damage - other damage = false
*/
DAMAGED_PLAYER,
/* DAMAGED_PLAYER_BATCH
combines all player damaged events in one single event
*/
DAMAGED_PLAYER_BATCH,
/* DAMAGE_CAUSES_LIFE_LOSS,
targetId the id of the damaged player
sourceId sourceId of the ability which caused the damage, can be null for default events like combat
@ -387,9 +392,15 @@ public class GameEvent implements Serializable {
flag not used for this event
*/
OPTION_USED,
DAMAGE_PERMANENT,
DAMAGED_PERMANENT,
/* DAMAGED_PERMANENT_BATCH
combine all permanent damage events to single event
*/
DAMAGED_PERMANENT_BATCH,
DESTROY_PERMANENT,
/* DESTROY_PERMANENT_BY_LEGENDARY_RULE
targetId id of the permanent to destroy