[fixed]Firescreamer bug
Moderators: BAgate, drool66, Aswan jaguar, gmzombie, stassy, CCGHQ Admins
[fixed]Firescreamer bug
by etphonehome » 27 Aug 2021, 21:12
Firescreamer activated during my cleanup step and +1/+0 didn't clean up at the end of the turn.
Now that this happened, i think i've already seen other cards activate their effects during my cleanup phase like that was their turn already, AI untap their cards and don't loose the until EOT effect, like it considered my cleanup phase like the AI turn already
THX
Now that this happened, i think i've already seen other cards activate their effects during my cleanup phase like that was their turn already, AI untap their cards and don't loose the until EOT effect, like it considered my cleanup phase like the AI turn already
THX
- Attachments
-
- firescreamer savegame.rar
- (2.2 KiB) Downloaded 71 times
Last edited by drool66 on 29 Aug 2021, 21:52, edited 2 times in total.
Reason: fixed
Reason: fixed
- etphonehome
- Posts: 299
- Joined: 21 May 2020, 12:50
- Has thanked: 270 times
- Been thanked: 39 times
Re: Firescreamer bug
by Aswan jaguar » 28 Aug 2021, 11:32
I think most of the issue here, is explained by Korath as how ending phase should work and how it works in manalink and what needs to be done: viewtopic.php?f=86&t=18013&p=190420&hilit=at+the+beginning+of+the+end#p190420
---
Trying to squash some bugs and playtesting.
Trying to squash some bugs and playtesting.
-
Aswan jaguar - Super Tester Elite
- Posts: 8078
- Joined: 13 May 2010, 12:17
- Has thanked: 730 times
- Been thanked: 458 times
Re: [confirmed]Firescreamer bug
by Korath » 28 Aug 2021, 14:59
If until-end-of-turn effects are being treated as at-the-start-of-the-next-end-step triggers, then that's a recent, gamebreaking bug right now that shouldn't wait until everything I mention there is correct.
What's happening is that most effects timed "until end of turn" are removed during EVENT_CLEANUP, which is - as mentioned in my old post linked above - sent before TRIGGER_EOT. (Some happen during TRIGGER_EOT, which is an unambiguous error: while the events and triggers sent in the original implementation only mostly match up to the current game turn sequence, and while might have mislabelled some of them, we do know that these effects should end at an event, not a trigger.) There was an unused and incomplete framework to allow instant- and interrupt-speed responses to triggers; that was enabled to allow Stifle and similar cards. So the AI is pumping these creatures during TRIGGER_EOT, and the effects last until the next time EVENT_CLEANUP is sent, near the end of the next turn.
The fastest mitigation is to disable instant+interrupt-speed responses to triggers during TRIGGER_EOT. This is really the absolute minimum that must be done before another release: being able to Stifle end-step triggers is not worth having Shivan Dragon pumps persisting into the next turn.
The real fix is to move the parts of cleanup_phase() and end_turn_phase() around, at least to put EVENT_CLEANUP after TRIGGER_EOT even if everything else doesn't end up where it ultimately should. That should be feasible even without moving either into C: EVENT_CLEANUP is sent (manually with a for-loop in card-index-ascending order, rather than in timestamp order by dispatch_event()) as the last part of cleanup_phase(), and there's function calls that can be easily hooked in end_turn_phase() just after TRIGGER_EOT is dispatched. I'd try putting it just before the reassess_all_cards() call, and seeing whether cards with enough damage marked on them to kill them once their temporary toughness pumps wear off work properly.
What's happening is that most effects timed "until end of turn" are removed during EVENT_CLEANUP, which is - as mentioned in my old post linked above - sent before TRIGGER_EOT. (Some happen during TRIGGER_EOT, which is an unambiguous error: while the events and triggers sent in the original implementation only mostly match up to the current game turn sequence, and while might have mislabelled some of them, we do know that these effects should end at an event, not a trigger.) There was an unused and incomplete framework to allow instant- and interrupt-speed responses to triggers; that was enabled to allow Stifle and similar cards. So the AI is pumping these creatures during TRIGGER_EOT, and the effects last until the next time EVENT_CLEANUP is sent, near the end of the next turn.
The fastest mitigation is to disable instant+interrupt-speed responses to triggers during TRIGGER_EOT. This is really the absolute minimum that must be done before another release: being able to Stifle end-step triggers is not worth having Shivan Dragon pumps persisting into the next turn.
The real fix is to move the parts of cleanup_phase() and end_turn_phase() around, at least to put EVENT_CLEANUP after TRIGGER_EOT even if everything else doesn't end up where it ultimately should. That should be feasible even without moving either into C: EVENT_CLEANUP is sent (manually with a for-loop in card-index-ascending order, rather than in timestamp order by dispatch_event()) as the last part of cleanup_phase(), and there's function calls that can be easily hooked in end_turn_phase() just after TRIGGER_EOT is dispatched. I'd try putting it just before the reassess_all_cards() call, and seeing whether cards with enough damage marked on them to kill them once their temporary toughness pumps wear off work properly.
-
Korath - DEVELOPER
- Posts: 3707
- Joined: 02 Jun 2013, 05:57
- Has thanked: 496 times
- Been thanked: 1106 times
Re: [confirmed]Firescreamer bug
by drool66 » 28 Aug 2021, 20:03
It looks like it was activating in response to TRIGGER_EOT. Fixed for now by disabling interaction under that trigger sic:
cant_be_responded_to |= trigger_condition == TRIGGER_EOT;
Committed in 133af66
cant_be_responded_to |= trigger_condition == TRIGGER_EOT;
Committed in 133af66
Last edited by drool66 on 29 Aug 2021, 19:34, edited 1 time in total.
Reason: hash info
Reason: hash info
The latest images for Manalink will be here.
The latest Manalink installation directory will be here. Well, not quite, anymore. Check the latest patches.
The latest Manalink installation directory will be here. Well, not quite, anymore. Check the latest patches.
-
drool66 - Programmer
- Posts: 1163
- Joined: 25 Nov 2010, 22:38
- Has thanked: 186 times
- Been thanked: 267 times
4 posts
• Page 1 of 1
Who is online
Users browsing this forum: No registered users and 11 guests