Commit graph

779 commits

Author SHA1 Message Date
Marcus Minhorst
8352039e3f Cleanup 2025-08-24 03:02:06 -04:00
Marcus Minhorst
4a3bfae42e Fixed up format specifiers
also cleanup imports
2025-08-09 21:20:56 -03:00
Ricardo Luís Vaz Silva
d411893e44 fix wrong sign comparison 2025-08-08 05:49:30 -03:00
Ricardo Luís Vaz Silva
439d09059e turn assert into if 2025-08-07 21:04:26 -03:00
Ricardo Luís Vaz Silva
773c534896 remove linked lists entirely from lights 2025-08-07 21:04:26 -03:00
Ricardo Luís Vaz Silva
04c29dcf4b make sure lights are unlinked, and clear light lists even when loading saves as saves may be from different levels 2025-08-07 21:04:26 -03:00
Ricardo Luís Vaz Silva
807043b995 dynlight optimize attempt 2025-08-07 21:04:26 -03:00
Boondorl
789829f967 Fixed regression with camera while travelling
Also readds guard for trying to move travellers out of the list at map start.
2025-08-02 17:35:16 -03:00
Boondorl
8604830f4c Prevent thinkers from being set to travel while not changing level 2025-08-02 17:35:16 -03:00
Boondorl
86375c1b79 Move travelling to two-step system
Mark Actors meant to travel early so their flag can be written into the snapshot, followed by moving them over all at once at the same time as previously. On finish, destroy any marked Actors to prevent duplication in hubs. Switch to a unique function that does the verification instead of ChangeStatNum and lock out STAT_TRAVELLING entirely since it shouldn't be used for regular gameplay.
2025-08-02 17:35:16 -03:00
Boondorl
00d2b43ce0 Remember statnum when travelling
Also cleans up the functions a little.
2025-08-02 17:35:16 -03:00
Boondorl
d7d71177d7 Reworked Travelling logic
Added safety barriers for STAT_STATIC and STAT_TRAVELLING to avoid potential exploits. Properly clear all internal fields pointing towards non-read barriered data and always relink properly when finishing travelling. Moved ZScript callback to after travelling has finished for all Thinkers, that way everything is initialized correctly.  Allow arbitrary thinkers (excluding native ones) to be added to the travelling list (for Actors, their positioning will need to be handled by modders). Ensure lights get re-enabled after travelling.
2025-08-02 17:35:16 -03:00
Boondorl
1fd267a96a Improved Object handling while predicting
Added a warning if a networked Object or non-client-side Thinker was erroneously destroyed manually while predicting. This only applies to ZScript since this is the only place it's relevant. Added a warning if a non-client-side Thinker was spawned while predicting. Sweep objects before backing up while predicting to ensure invalid pointers aren't captured.
2025-08-02 15:03:18 -03:00
Boondorl
b6b3c311e1 Export DecalBase
Allows setting this between Actors with type safety. Now also serializes these fields.
2025-07-28 15:24:04 -03:00
Boondorl
a4ed63033e Fixed quick save rotator breaking save logic
The game should only ever save during the gameplay loop and never on the spot. Also fixes the quick save rotator skipping certain checks.
2025-07-28 02:50:10 -04:00
Boondorl
9a4c2dc111 Ensure BlockingMobj checks don't fail on destroyed Actors when handling physics 2025-07-27 17:18:53 -03:00
Boondorl
443e899759 Fixed assert in P_GeometryRadiusAttack
Clamp the floor to the ceiling so malformed sectors don't break height checking.
2025-07-25 04:18:59 -03:00
Ricardo Luís Vaz Silva
9b44f2315d fix BlockingMobj ignoring the GC and possibly becoming a stale pointer 2025-07-24 06:23:32 -03:00
Boondorl
7d1f2df404
Added scale and alpha interpolation
Similar to angles, needs to be enabled via flags to prevent breaking existing sprites.
2025-07-22 11:35:20 -03:00
nashmuhandes
47f6f4cb1c Allow the blood splat decal distance to be customizable in MAPINFO's GameInfo block 2025-07-22 10:37:22 -03:00
Dileep V. Reddy
19291c5e5c Sprite lean/angled roll with geometric consistency in multiplayer and mirrors. An ANGLEDROLL flag ties actor's sprite-rolling axis to physical direction instead of viewpoint. Y-Billboarding occurs about a rolled axis (unlike flatsprites which don't billboard). This makes roll consistent when viewed from all angles and in reflections. Useful for sprite-based laser beams and lean mechanics with third-person cameras and/or multiplayer mods. 2025-07-22 10:36:07 -03:00
Marcus Minhorst
649ddd7774 Replaced uint with unsigned int 2025-07-19 11:37:24 -03:00
Marcus Minhorst
9b0f5d9b0d Fixes sign-compare warnings 2025-07-18 21:11:50 -03:00
Chris Cowan
ab7b1642bc Prevent buffer overflows when using streams 2025-07-10 14:11:08 -03:00
Boondorl
42a3ca3d56 Move OnLoad to after everything is done serializing
Makes behavior much more consistent and safer.
2025-07-09 22:08:54 -04:00
Boondorl
ca98f33f42 Added support for client-side VisualThinkers 2025-07-08 16:28:40 -03:00
Boondorl
7e90f3a0f3 Fixed teleporters breaking view interpolation 2025-07-08 16:28:16 -03:00
Boondorl
a73d9f6e8f Added support for client-side Behaviors 2025-07-08 11:34:04 -03:00
Boondorl
17f1c90d4a Always back up players even in singleplayer
This way client-side actions will be consistent between multiplayer and singleplayer.
2025-07-08 11:32:15 -03:00
Boondorl
ccf178577d Updated client-side ACS handling
Moved to a new ownership system. Only clients that own the activators will be allowed to call truly client-side scripts. Server objects that attempt to do this will instead run on the server.
2025-07-08 11:32:15 -03:00
Boondorl
672a21f533 Fixed bad VisualThinker nodes getting into the render list
Relink on loading instead of serializing since order doesn't matter here.
2025-07-05 08:21:21 -04:00
Cacodemon345
a2450e1195 Add mechanism for Prosperity Rune-like powerups
Also add a flag to use Zandronum/Skulltag semantics for BasicArmorPickup
2025-07-04 09:25:28 -03:00
Boondorl
5ea8981472 Only print the message for the player trying to initiate a conversation 2025-07-02 07:29:28 -04:00
Boondorl
311e1d09be Allow limiting NPC conversations to settings controllers
Also cleans up the network menu a little bit.
2025-07-02 07:29:28 -04:00
Rachael Alexanderson
6b2b8a198f - implement limits for state loops to prevent infinite state freezes 2025-06-25 09:57:11 -04:00
Cacodemon345
028256f06f WorldRailgunFired flags are now passed properly
There's also a new DamageMobj flag to indicate railgun attacks without
having to rely on damagetypes.
2025-06-24 21:21:48 -03:00
Boondorl
7cac623ecb Fix SMF_PRECISE flag for seekers
Use the player's actual eye position when calculating.
2025-06-18 14:47:43 -03:00
Ricardo Luís Vaz Silva
f4eebd1ced CallVM API, plus multi-return and vector support 2025-06-18 03:52:23 -03:00
Boondorl
8071fd1368 Scriptified ReactToDamage
Allows pain handling to be overridden without needing to override the entirety of DamageMobj.
2025-06-18 01:51:57 -03:00
Boondorl
e0baf7a85c Added OnRevive virtual
Called when a monster is resurrected (allows resetting properties without needing an event handler).
2025-06-16 14:46:17 -03:00
Boondorl
1e281bfce2 Added player iterators
Allows for easily iterating through players currently in the game.
2025-06-16 14:42:15 -03:00
Boondorl
989a355f80 Moved BobTimer to playerinfo
This was a bit too invasive for mods that used full PlayerThink overrides.
2025-06-14 14:04:11 -03:00
Ricardo Luís Vaz Silva
a8eed72b38 wrong comparison sign 🤦‍♀️ 2025-06-09 17:35:20 -03:00
Ricardo Luís Vaz Silva
0e3682ae24 add proper range to bone getter functions, prevents crash if called between enabling bone getters but before actually calculating bones 2025-06-06 18:05:37 -03:00
Boondorl
486be3a5b6 Clear next and prev list pointers on VTs when destroyed 2025-05-29 15:42:28 -03:00
Ricardo Luís Vaz Silva
c0c4b784ca GetBoneEulerAngles 2025-05-26 07:48:01 -03:00
Ricardo Luís Vaz Silva
cffdfa802e up vector for TransformByBone/GetBonePosition 2025-05-26 07:48:01 -03:00
Ricardo Luís Vaz Silva
097c99032c rename GetBone to GetBoneTRS in zscript 2025-05-26 07:48:01 -03:00
nashmuhandes
b44f8f0cc9 - Add "Intensity" property for dynamic lights in GLDEFS that will multiply the brightness of the light, useful for overbrightening/underbrightening a light.
- Also add an "intensity" parameter for A_AttachLight in ZScript.

Note that for any kind of light overbrightening to do anything at all, one of the unclamped LightBlendModes in MAPINFO must be enabled.
2025-05-17 00:42:01 -03:00
Ricardo Luís Vaz Silva
385033e999 fix CalcModelFrame/SetBone/GetBone/SetAnimation not grabbing smf from modeldata for decoupled anims 2025-05-10 18:24:16 -03:00