Foreword: Thank you for implementing support for MBF21!
How to reproduce the bossaction problem:
(Tested on Linux/powerpc and NetBSD/amd64)
Warp to Ultimate Doom Map E2M8 and kill the Cyberdemon.
With SVN r1667 the level ends (as expected).
With SVN r1678 the level does not end.
Looks like in A_Bosstype_Death() the bit MF3_E2M8_BOSS is not set in the new flags3 field.
With undefined MBF21 macro in "doomdef.h" it does not compile:
p_enemy.c: In function 'FastMonster_OnChange':
p_enemy.c:310:9: error: redeclaration of 'i' with no linkage
int i;
^
p_enemy.c:251:9: note: previous declaration of 'i' was here
int i;
^
and
dehacked.c: In function 'fix_action_parm':
dehacked.c:1204:5: error: 'sep' undeclared (first use in this function)
sep->args_set = 0xFF; // done with defaulting
Patched in SVN 1679.
Removed extra int i:
The copy of mobjinfo->flags3 to the spawned mobj was missing.
The DSDA-Doom reference did not have a flags3, as they had just expanded flags2 to 64 bits instead.
There may be more bugs like this due to implementing it in a significantly different environment.
I have not done much for test playing it yet.
The fix for the sep in fix_action_parm is in next commit. That line gets moved up into the if brackets.
Works again with SVN 1705.
Do not remember seeing this bug report before.
I noticed that the 666 boss test was not working.
It was in the new MBF21 code where a "&" appeared where it should have been "&&", where it was testing for boss death on map07.
That works now.
Checking the latest, the define of "int i" is outside the #ifdef for MBF21, so maybe I have already fixed this and just forgot about it.
There was a "int i" deleted in the next patch after r1668.
And it added setting the flags3 field.
Thank you for testing and reporting.
The bug report system is hiding my previous comments from me until I get done putting in the new comment. The 1.48.16 binaries just got posted by filebin 4f1j8hxq9kezrnfs, right before I noticed your comment.
Last edit: Wesley Johnson 2024-11-30