Hi @Average4PlayersGame,
Thank you for your response.
To clarify my point, let me provide an example:
Imagine you are playing as Hero Spider-Ham “30001a” with the upgrade Clarity of Purpose “31029.” In this scenario, there are no ‘toon’ counters on your hero, and you only have one card in hand: Hogwashed “30004.”
Given these conditions, do you think you would be able to play “30004”?
Now, let me explain how this works in the game engine:
The script for “23008” is as follows:
def repulsor_beam(effect: 'Effect', message: 'Message.WhenPlayerInTurn') -> None:
this.DealDamage(effect.targets, 4, effect)
return [
AbilityFactory.WhenInYourPlayTurn(
AbilityType.HeroAction,
repulsor_beam
).SetPlay().SetLabel('attack')
.SetCostFunc(CostFunc.Counter(Select.From(None, CardFinder(name="War Machine")), 1, 'ammo'))
.SetTarget(Enemy),
]
In this case, the game engine checks all SetCostFunc
to determine if the card can be played. If you don’t have any ‘ammo’ on “War Machine,” the condition is not met, and the card cannot be played.
Additionally, the engine cannot determine if you are paying for this card using “23005” or any other means, which is why it doesn’t work as you mentioned.
If we were to update the code to this:
def repulsor_beam(effect: 'Effect', message: 'Message.WhenPlayerInTurn') -> None:
if remove 'toon' counter on "War Machine": # Add this condition check
this.DealDamage(effect.targets, 4, effect)
return [
AbilityFactory.WhenInYourPlayTurn(
AbilityType.HeroAction,
repulsor_beam
).SetPlay().SetLabel('attack')
.SetTarget(Enemy), # Remove `SetCostFunc`
]
It could work as you suggested. However, since “23008” follows a standard “COST ARROW” description, we believe that updating it to the second code is not a good idea.
Looking forward to your thoughts!