Skip to content

Various Q3 and QL map entity features and fixes

bones_was_here requested to merge bones_was_here/mapents into master

Clean up droptofloor() macro hacks and clarify naming

It wasn't clear at call sites that this had been changed to a delayed function (in SVQC only), and that the return value was no longer available. We can just use different names for the QC implementation, with different names for delayed and direct calls, and leave the original name for calling the builtin if required. The builtin's wrapper macro for changing the self global to a parameter is retained and it now works the same in SVQC and CSQC.

Removes another case of cc83c39c

target_speaker: silence a legacy warning on Q3 maps

Add engine extension check: fullspawndata

This one isn't supported by checkextension().

q3compat: reduce entity field allocation

These fields are only read during worldspawn on Q3 maps, we don't need them on every entity.

I retained .gametype and .not_gametype as I expect we'll want to implement these for Xonotic mappers, and we're already using the .gametype field elsewhere.

Will now support edge cases where the mapper used \ as the .music path separator instead of the canonical /

Support Domination control points on QL maps

Support gametype and not_gametype fields on QL maps

Documents all Q3A and QL gametypes including the inconsistencies between entity fields and .arena files.

Includes minor corrections.

Support Mine Layer on Q3TA/QL maps

In !849 (merged) I changed weapon_prox_launcher to spawn the Mortar, in hindsight this was a mistake. Some maps have both weapons, and although the Mortar is more popular, some players really like the Mine Layer, so let's just go with what the mapper chose. Server admins can easily change items with .ent files if they want.

target_push: implement Q3 wind tunnel and angles+speed modes

Test maps:

  • 13zone has a wind tunnel, plus all the jump pads are actually target_push
  • 13dream_xt the fancy base->powerup teleporters

Reset door locking when the match is reset

Test map: jamdm1 unlock the door, then do resetmatch in console

Refactor default key model selection

Remove key-specific BIT macro

Support door keys on QL maps

Also adds a MASTER key for Xonotic mapping (useful for secrets...)

Removes blind nudging of keys as was done for normal items in cc83c39c

Test map: jamdm1 is ported to Q3 from QL and retains QL entity features that Q3 ignores

Support custom door sounds on QL maps


For reference: QL entities.def

Edited by bones_was_here

Merge request reports