mage icon indicating copy to clipboard operation
mage copied to clipboard

server log error: getSpellOrLKIStack got non-spell id in getSpellKickedCountStrict

Open xenohedron opened this issue 1 year ago • 2 comments

ERROR 2024-06-20 19:59:12,308 getSpellOrLKIStack got non-spell id mage.game.stack.Stac
kAbility correlating to non-spell object stack ability (Equip {1} <i>({1}: Attach to t
arget creature you control. Equip only as a sorcery.)</i>). =>[GAME a895c7d8-9902-4570
-b9ce-badb19324edf] GameImpl.getSpellOrLKIStack 
java.lang.Throwable
        at mage.game.GameImpl.getSpellOrLKIStack(GameImpl.java:718)
        at mage.abilities.keyword.KickerAbility.getSpellKickedCountStrict(KickerAbilit
y.java:283)
        at mage.abilities.keyword.KickerAbility.getSpellKickedCount(KickerAbility.java
:276)
        at mage.abilities.condition.common.KickedCondition.apply(KickedCondition.java:
28)
        at mage.ConditionalMana.apply(ConditionalMana.java:83)
        at mage.players.PlayerImpl.canPayMinimumManaCost(PlayerImpl.java:3708)
        at mage.players.PlayerImpl.canPlay(PlayerImpl.java:3634)
        at mage.players.PlayerImpl.findActivatedAbilityFromPlayable(PlayerImpl.java:39
22)
        at mage.players.PlayerImpl.getPlayableFromObjectSingle(PlayerImpl.java:4078)
        at mage.players.PlayerImpl.getPlayableFromObjectAll(PlayerImpl.java:3985)
        at mage.players.PlayerImpl.getPlayable(PlayerImpl.java:4252)
        at mage.players.PlayerImpl.getPlayableObjects(PlayerImpl.java:4314)
        at mage.server.game.GameSessionPlayer.prepareGameView(GameSessionPlayer.java:2
16)
        at mage.server.game.GameSessionPlayer.getGameView(GameSessionPlayer.java:200)
        at mage.server.game.GameSessionWatcher.lambda$update$0(GameSessionWatcher.java:54)
        at java.util.Optional.ifPresent(Optional.java:159)
        at mage.server.game.GameSessionWatcher.update(GameSessionWatcher.java:54)
        at mage.server.game.GameController.updateGame(GameController.java:805)
        at mage.server.game.GameController.lambda$init$3aa0d15c$1(GameController.java:122)
        at mage.game.events.EventDispatcher.fireEvent(EventDispatcher.java:28)
        at mage.game.events.TableEventSource.fireTableEvent(TableEventSource.java:44)
        at mage.game.GameImpl.fireUpdatePlayersEvent(GameImpl.java:3127)
        at mage.game.GameImpl.playPriority(GameImpl.java:1693)
        at mage.game.turn.Step.priority(Step.java:67)

xenohedron avatar Jun 26 '24 05:06 xenohedron

Looks like I caused this problem, when I added support for [[Wastescape Battlemage]]'s kicker abilities. Not sure what the best way to solve it would be, the easiest solution would be to just return null instead of throwing an error. An alternative is creating a separate KickedCondition for just Wastescape Battlemage (presumably inside of the card's implementation)

ssk97 avatar Jun 26 '24 07:06 ssk97

Wastescape Battlemage - (Gatherer) (Scryfall) (EDHREC)

{1}{C} Creature — Eldrazi Wizard 2/2 Kicker {G} and/or {1}{U} When you cast this spell, if it was kicked with its {G} kicker, exile target artifact or enchantment an opponent controls. When you cast this spell, if it was kicked with its {1}{U} kicker, return target creature an opponent controls to its owner's hand.

github-actions[bot] avatar Jun 26 '24 07:06 github-actions[bot]