Edit: Nevermind for some reason I had an old version of the Addons Compilation lying around. The most recent one actually has that bug in Oblivion fixed.
Edit 2: To make this not a completely pointless post, I found another bug that can prevent the player from completing the game in Oblivion.
This was actually present in the original version too, but only with the final sphere boss fight. In the Addons Compilation version, all of the gems are affected. See the following code:
useractor notenemy BOSS_SLAYED_GEM 0
fall
ifmove RESPAWN_ACTOR_FLAG
state respawnit
else
ifp pshrunk nullop
else
ifp palive
ifpdistl RETRIEVEDISTANCE
ifcount 6
ifcanseetarget
{
quote 162
ifspawnedby BOSS_SLAYED_GEM
{
ifspritepal 10 { setvar SPD_BOSS1 1 }
ifspritepal 11 { setvar SPD_BOSS2 1 }
ifspritepal 12 { setvar SPD_BOSS3 1 }
ifspritepal 13 { setvar SPD_BOSS4 1 }
ifspritepal 14 { setvar SPD_BOSS5 1 }
ifspritepal 15 { setvar SPD_BOSS6 1 }
ifspritepal 16 { setvar SPD_BOSS7 1 }
state getcode
}
else
state quikget
}
enda
This defines the 7 boss gems needed to fight the final boss of the map. The problem here is the `ifspawnedby BOSS_SLAYED_GEM` command.
Notice the description on the wiki:
https://wiki.eduke32...iki/Ifspawnedby
Quote
If the actor wasn't spawned by any actor and was loaded by the map, the value takes his own tile number. This check no longer works properly after an actor has taken damage as the same memory location is reused to hold the tile number of whatever caused the damage. Therefore, this command is identical to ifwasweapon.
And that's precisely what can happen here. It's possible to accidentally hit the gem with a radius explosion, which will cause it to change the htowner and thus the `ifspawnedby` check will no longer return `true`. Thus one of the variables required to exit the room and fight the final boss will not be set.
This actually recently happened to me when playing Episode 4 for Devon's stream. The simplest way to fix this would be to remove the `ifspawnedby` check entirely, as it is not needed.
Edit 3: The reason the default Duke3D items are not affected by this, is that they are hardcoded to be unhittable by explosions. These custom items are not.
This actually also affects the blue gem that ends episode 1:
useractor notenemy CHAOS_GEM1 0
ifp palive
ifpdistl RETRIEVEDISTANCE
ifcount 6
ifcanseetarget
{
palfrom 62 -63 62 -61
sound CHAOSPOWER
ifspawnedby CHAOS_GEM1
endofgame 52
state getcode
else
state quikget
}
enda
If you shoot it with an explosive weapon -- congrats, you can't end the episode anymore.