Commit graph

511 commits

Author SHA1 Message Date
b2a9dbf809 Merge remote-tracking branch 'gzdoom/master' into gzdoom_merge 2025-09-24 19:39:17 +02:00
nashmuhandes
a8c5355f31 Allow particle fade-out and fade-in to be defined individually for FSpawnParticleParams and A_SpawnParticleEx. Requires either SPF_FADE_IN_OUT or SPF_FADE_IN_HOLD_OUT flags to be enabled first, and startalpha to be 0 for fading in. The old fadestep parameter serves as the fade-in time, while the new fadeoutstep parameter controls the fade-out time. SPF_FADE_IN_HOLD_OUT ensures the particle will stay solid for the duration of its lifetime before starting to fade out. 2025-09-10 07:10:13 -03:00
Marcus Minhorst
0e621e2f30 Added rumble from damage 2025-08-24 03:02:06 -04:00
Marcus Minhorst
d4a6e1c6aa Added rumble from world 2025-08-24 03:02:06 -04:00
Marcus Minhorst
7a21853d3f Added rumble from menus 2025-08-24 03:02:06 -04:00
Marcus Minhorst
b2979f0e23 Added rumble from actions 2025-08-24 03:02:06 -04:00
Marcus Minhorst
848df46ee0 Added haptic bindings 2025-08-24 03:02:06 -04:00
Marcus Minhorst
8352039e3f Cleanup 2025-08-24 03:02:06 -04:00
jekyllgrim
ba9e127e9f Added to CreateTossable and PowerWeaponLevel2 2025-08-22 12:09:51 -03:00
jekyllgrim
977b5acbe1 Added OnSelect() and OnDeselect() to weapons 2025-08-22 12:09:51 -03:00
Magnus Norddahl
3fdd22ef91 Merge remote-tracking branch 'gzdoom/master' into big_beautiful_merge 2025-08-06 21:06:53 +02: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
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
nashmuhandes
beb6842e94 Remove redundant readonly qualifier 2025-06-13 12:57:02 +08:00
nashmuhandes
a39c84a77a Define the shadow casting style on an Actor using a property. Currently only for lightmaps. 2025-06-13 12:57:02 +08:00
Rachael Alexanderson
6c42ea7518
- fix pointer mixup in whirlwind DoSpecialDamage() 2025-05-28 01:09:24 -04:00
Ricardo Luís Vaz Silva
af653e8b67 bone getters part 2.5 2025-05-26 13:33:51 +02: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
783a3524ed Remove Linearity from A_AttachLight for now as it goes over the kFuncArgCount limit in the JIT (TODO: struct-ify A_AttachLight in future) 2025-05-18 03:43:07 +08:00
nashmuhandes
051751220b Add SoftShadowRadius and Linearity to GLDEFS and A_AttachLight 2025-05-18 02:08:37 +08:00
nashmuhandes
af7c9db9c5 GLDEFS light intensity and A_AttachLight intensity, VKDoom edition 2025-05-17 21:43:47 +08: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
d5f5c71d67 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-10 08:42:20 +08: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
9aa44fa13b Merge branch '4.14.2' into gz_merge 2025-05-02 17:15:41 -03:00
Ricardo Luís Vaz Silva
8833126801 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 15:47:38 +02:00