* 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
* 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
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.
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).
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.
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.
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.
- 0: Offset. This pushes the camera further away, going behind the camera. Default is 1.0 (converted to negative - the value cannot go lower than that).
* Compartmentalized the LookForEnemiesInBlock checks
* Added LookForEnemiesEx().
This function allows for ZScript code to get an array with all enemies of the caller found in range. Using similar sight logic as functions like LookForEnemies().
* Added noPlayers parameter to LookForEnemiesEx().
This parameter allows the function to also find players around it.
* Added VM abort to LookForEnemiesEx().
Prevent crashes by passing a null array by reference.