Skip to content

Possible unintended behavior with Dehacked “shootable” flag #857

@KLNeidecker

Description

@KLNeidecker

This may be unintended, but when launching with nomonsters active (for map testing), a thing with “shootable” active via dehacked (flag 4 IIRC) seems to be defaults considered a monster and therefor not in the map.

I noticed this when making destructible decorations. Other ports show the decoration flagged shootable, but Retro treats them as monsters.

Doom Retro is by far my favorite port for vanilla-ish work so it’s what I’m using as a base for the mapset’s features.

Obviously, destructible decorations (or whatever similar dehacked things someone might make shootable) not showing up with nomonsters activated is reeeeeallly confusing. Ask me how I know! Yep, I spent an hour trying everything under the sun to see where I went wrong…before going “oh crap…maybe it’s because I’m launching via UDB with nomonsters active…” and yeah.

If I’m simply missing some flag which would tell Retro the thing is indeed not a monster, and this is user error, let me know. Otherwise I think the “things which are shootable” check you may be doing is too broad, though only rears it’s head for the edge-case of shootable non-monster dehacked patch launched with nomonsters active… certainly not something everyone will run into.

Great work, love the port to death, and thank you for all the work you put into it!

Edit:
Yeah, it’s in p_mobj.c

if (!spawnmonsters && (mobjinfo[i].flags & MF_SHOOTABLE) && type != Barrel && (type != OfficeLampBreakable || !legacyofrust) && (type != Cacodemon || !hacx)) return NULL;

Maybe a check for “counts for total” would be better? I’d imagine most dehacked monsters would have that flag, while most decorative objects would not, vs. just checking shootable. Otherwise, a Retro bit “notmonster” or the like would be fine.

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions