Aha - yes, that would do it. Most other temporary cannot-block effects (any that go through the standard pump_ability_until_eot function) will do the same.
The reason is that we use one of the flags for new special abilities, SP_KEYWORD_CANNOT_BLOCK, to tell pump_ability_until_eot() to add this effect; but instead of actually adding that flag, it calls a function in the exe instead. At end of turn, though, that bit is removed. The problem is that the field we use for all the new abilities except double strike and infect doesn't default to 0 (no bits set) when a card is created; it defaults to -1 (ALL bits set). There's a check when adding bits (and when determining what icons to display) to see whether the current value is below zero (i.e., the highest bit, SP_KEYWORD_DOES_NOT_END_AT_EOT, is set); if so, the add-a-bit functions first zero the field entirely, and the icon-display function doesn't show anything.
A quick and dirty fix for this, a likely similar problem with haste-until-eot, and anything similar we do in the future:
- Code: Select all
diff --git a/src/functions/functions.c b/src/functions/functions.c
index cd0df23..e5ded8c 100644
--- a/src/functions/functions.c
+++ b/src/functions/functions.c
@@ -1216,6 +1216,10 @@ int block_if_able(int player, int card, event_t event){
int special_abilities(int player, int card, event_t event, int sp_abilities ){
+ card_instance_t* instance = get_card_instance(player, card);
+ if (instance->targets[16].card < 0)
+ instance->targets[16].card = 0;
+
if( sp_abilities & SP_KEYWORD_FEAR ){
fear(player, card, event);
}
Incidental bug:
Smoldering Spires doesn't let you target your own creature, nor force you to target your own creature if that's the only valid target. Awful hard to come up with situations where it's relevant, though. Maybe with
Skulking Ghost and its variants; or cheating lands into play during your opponent's turn while he has shrouded/hexproof creatures to attack with.