Commit graph

424 commits

Author SHA1 Message Date
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
nashmuhandes
21ba4e6ab0 Add missing item tags for items in Doom and Chex Quest. There are mods out there that read tags. The accompanying language entries have been sent to the localization spreadsheet. 2025-07-27 17:34:08 -03:00
Boondorl
12fac42bab Mark appropriate voidptr fields as readonly 2025-07-27 03:56:33 -04: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
Boondorl
8a020fbe9d Mark offensive items and ammo as WEAPONSPAWN
Better filters these when playing in co-op mode with multiplayer things enabled.
2025-07-10 14:12:21 -03:00
Boondorl
a73d9f6e8f Added support for client-side Behaviors 2025-07-08 11:34:04 -03: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
MajorCooke
3fba33204c - Fixed <Pre/Post>Morph() being called twice for monsters. 2025-06-30 22:21:10 -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
Rachael Alexanderson
6c42ea7518
- fix pointer mixup in whirlwind DoSpecialDamage() 2025-05-28 01:09:24 -04: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
Ricardo Luís Vaz Silva
5c74250b73 return rotation with GetBonePosition 2025-05-26 07:48:01 -03:00
Rachael Alexanderson
d7d18c7cc0
- whoops, missed renaming one of the variables in whirlwind.DoSpecialDamage() virtual 2025-05-26 02:06:25 -04:00
Rachael Alexanderson
d357b7956f
- fix ironlich whirlwind blaming the victim for its damage 2025-05-23 14:44:54 -04:00
Boondorl
d3f965e862 Fixed MBF21_GunFlashTo
This needs to use the original vanilla behavior for processing PSprites since it's dehacked.
2025-05-22 11:43:23 -03:00
Ricardo Luís Vaz Silva
706d1b6978 Scriptified scoreboard drawing 2025-05-21 10:50:34 -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
XLightningStormL
1f1d9dc1b5 Fixed a major bug
Fixed a potential loop crash caused by an undefined amount int in TakeInventory (and derivatives) now it will assume if by is less than 1 that the item is to be destroyed.
2025-05-14 12:35:01 -03:00
Ricardo Luís Vaz Silva
9e2b1f9c4c
Bone Getters Part 2/3, plus fixed warnings for MSVC
* add getters for frame poses

* fix missing joint in GetJointPose

* clean up models_iqm.cpp

* clean up usage of I_GetTimeFrac, split out matrix calculation into its own function

* clean up SetModelBoneRotationInternal

* clean up a few float <-> double and unsigned <-> signed warnings

* fix more warnings

* further clean up warnings

* split mode ObjectToWorldMatrix stuff

* initial work on bone getters, matrix hell

(the matrix/vec3 multiplications are probably wrong af, just gotta add more stuff 'till i can test it)

* clean up matrix math

* GetBone/TransformByBone

* fix GetBoneFramePose

* fix ObjectToWorldMatrix

* fix missing array resize

* raw matrix getters (for use with gutamatics/etc)

* reverse matrix mult order

* replace GetBoneLength/GetBoneDir with GetBoneBaseTRS

* fix GetBonePosition, remove GetBoneWorldMatrix as it's useless

* GetBonePosition

* deduplicate code

* rename GetBonePosition to GetBoneBasePosition to avoid confusion

* GetBoneBaseRotation

* GetBonePosition helper function

* forgot include_offsets
2025-05-09 17:06:16 -03:00
Owlet7
6564fa04e1 Added obituaries to ID24 monsters
Renamed the language identifiers of the ID24 monsters to match the ones used by Legacy of Rust in DOOM + DOOM II.
2025-05-06 22:05:23 -03:00
TheSuperDave938
eb22547fc9 ID24 Weapon Lights and Decals 2025-05-06 11:50:17 -03:00
Owlet7
fc7e4c768e Use correct ID24 actors ednums 2025-05-06 11:49:33 -03:00
Owlet7
54a100d975 Add support for ID24 monsters and decorations 2025-05-06 11:49:33 -03:00
XLightningStormL
9c383e9379
DepleteBy virtual
* Update inventory_util.zs

Added ExtraDepletionBehavior() functionality to TakeInventory and UseInventory

* Update inventory.zs

Added ExtraDepletionBehavior (int takeAmount) function

* Update inventory_util.zs

ExtraDepletionBehavior now requires at least 1 item in reserve to work

* Replaced ExtraDepletion with DepleteBy Logic

Shoutout to RicardoLuis0

* Replaced ExtraDepletion with DepleteBy Logic

Shoutout to RicardoLuis0

* Update inventory_util.zs

added sv_infiniteinventory checks for takeinventory for custominventory items, restored support for sv_infiniteinventory useinventory items

* Update inventory.zs

cleaned up DepleteBy - removing unnecessary "--Amount <= 0 && usedItem" check and usedItem bool

* Update inventory_util.zs

removed unnecessary sv_infiniteinventory check

* Update inventory.zs

amount is integer, depleteordestroy should occur when amount is less than 1
2025-05-02 20:27:28 -03:00
Ricardo Luís Vaz Silva
3780c5910a
Bone Manip part 1 - bone setters
* split frame info calculation from RenderFrameModels

* clean up fvec4 being used as quat in iqms

* initial work on bone setting

* implement bone setters

* clean up FindModelFrame

* refactor model overrides into its own function

* refactor frame rendering into RenderModelFrame

* split frame processing into ProcessModelFrame

* refactor BoneOverride in preparation for translation/scale overrides

* clean up macros

* SetBoneTranslation/SetBoneScaling

* GetBoneOffset

* fix compilation on linux/mac (fuck you MSVC)

* fix typo 😅

* make sure bone overrides are cleared on model switches, add ClearBoneOffsets to clear them manually

* bone info getters

* fix joint lengths, add joint dirs

* serialize bone overrides

* fix bone dir return type

* GetBoneIndex/GetBoneCount

* helper functions for working with non-quat angles

* add mode enum, add more helper functions

* fix up formatting
2025-05-01 10:15:46 -03:00
Ricardo Luís Vaz Silva
c0d17bbda3 limit light alpha mult to renderflag 2025-04-29 15:47:28 -03:00
MajorCooke
6c4afed100 SpawnBlood now returns an actor spawned by the function. 2025-04-23 18:49:11 -03:00
Boondorl
524cd55813 Added OnLoad virtual
Allows for things to be reinitialized where needed for Thinkers. Moved hidden state of items over to OnLoad.
2025-04-17 18:58:02 -03:00
DyNaM1Kk
a0ab9ba25c Added autoSwitch parameter to A_ReFire 2025-03-30 21:59:41 -04:00
Boondorl
5b1023c447 Fixed inventory ticking when playing online
No longer tied to the player's latency value as it now runs in the client-side logic.
2025-03-24 22:40:49 -03:00
nashmuhandes
2d42438ebd Properly assign tags to various Raven game items 2025-03-22 14:49:27 -03:00
Boondorl
345926f057 Fixed setinv cheat 2025-03-14 21:10:44 -03:00
Boondorl
f7e62a8cd6 Added client-side Thinkers
Adds support for client-side Thinkers, Actors, and ACS scripts (ACS uses the existing CLIENTSIDE keyword). These will tick regardless of the network state allowing for localized client handling and are put in their own separate lists so they can't be accidentally accessed by server code. They currently aren't serialized since this would have no meaning for other clients in the game that would get saved. Other logic like the menu, console, HUD, and particles have also been moved to client-side ticking to prevent them from becoming locked up by poor network conditions. Additionally, screenshotting and the automap are now handled immediately instead of having to wait for any game tick to run first, making them free of net lag.
2025-03-11 10:14:28 -03:00
nashmuhandes
2e05e196db Interpolate turning 180 degrees 2025-03-07 14:35:08 -03:00
Boondorl
94be307225 Netcode Overhaul
Rewrote netcode to be more stable and functional. Packet-server mode has been restrategized and will now be the default netmode when playing with 3+ non-LAN players. TryRunTics has been cleaned up with older tick control behavior removed to account for the rewritten renderer. The main thread is now more consistent when playing online to prevent potential slow downs and lock ups. Load barriers are better accounted for to prevent spikes on level transition. Improvements to chat and lobby systems including a force start game button. Added a suite of new host options such as kicking and controlling who can pause the game. Max players increased from 8 to 16 since the new code can now handle it.

Note: Demo functionality is untested. This will be rewritten at a later time alongside improvements to GZDoom's playback features (e.g. freecam mode).
2025-03-05 12:52:52 -05:00
Ricardo Luís Vaz Silva
7685553af8 4.14.1 accepts 4.15, bump version to 4.15.1 2025-03-03 08:28:59 -03:00
inkoalawetrust
645dbcfa51 Made the BFG and EXPLOSIVE weapon flags usable.
- Made the BFG and EXPLOSIVE weapon flags usable again.
- Marked the appropriate weapons with them for the 3 main supported games.
2025-02-20 20:37:20 -03:00
f7cjo
f1e6445e82 Add GetSelfObituary 2025-02-20 04:13:56 -03:00
Boondorl
606bc1d04e Added versioning for Behaviors 2025-02-20 04:12:46 -03:00
Boondorl
7a4927fdf5 Added TransferredOwner virtual
Allows for proper cleaning up of behaviors when moving between Actors. Important for player respawn handling and morphing.
2025-02-20 04:12:46 -03:00
Boondorl
7efd301810 Clean up for Behavior API
Use TObjPtr to improve null checking. Add option to clear only specific kinds of Behaviors. Fixed removal checks while ticking. Don't stop at now-null behaviors when iterating.
2025-02-20 04:12:46 -03:00
Boondorl
3d6506df5b Added owner type parameter to iterator 2025-02-20 04:12:46 -03:00
Boondorl
14f7a10ae6 Added global iterator for behaviors
Imported Behaviors to the engine to allow them to properly clean up their level list. Restrict Behaviors from being new'd in ZScript as they need an owner to function.
2025-02-20 04:12:46 -03:00
Boondorl
e27bf38165 Added behavior iterator for Actors
Renamed Readded to Reinitialize.
2025-02-20 04:12:46 -03:00
Boondorl
bd60fd7546 Added initial Behavior API
Allows for arbitrary behaviors to be attached to Actors in a way that doesn't require the use of Inventory tokens. This list can't be freely modified nor can it have duplicates meaning it has far better deterministic behavior than using Inventory items for this purpose.
2025-02-20 04:12:46 -03:00