* Re-add non-player sector damage.
Reimplements SECMF_HURTMONSTERS and SECMF_HARMINAIR.
* Fixed 3D floor handling for sector damage.
Fixes sector damage to either monsters or players not working on (non-)solid 3D floors.
Allows for calling to save custom cvars manually to ensure they're reliably stored. As is, the only way to ensure that cvars are saved is to safely/manually close out GZDoom, meaning if a crash occurs, that data is lost.
THis is very detrimental to mods/standalone projects that rely on CVars for storing custom data, and or data that transcends save games.
* 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.
Fixed the discrepancy where WalkStepTics and RunStepTics were called, well, that. In the terrain struct in both C++ and ZScript. While the terrain parser looked for WALKINGSTEPTIME and RUNNINGSTEPTIME instead.
Also made the parse not multiply these time values by the ticrate to treat them as seconds instead of tics.
Added flags for P_HitWater().
Added optional overridable footsteps for players.
Added an overridable MakeFootsteps() virtual in PlayerPawn. Which allows for adding totally custom footstep logic for players. By default, it comes with a basic footstep system that uses the footstep properties of whatever terrain the pawn is standing on. bMakeFootsteps must be enabled on the pawn for the virtual to run.
Added generic StepSound TERRAIN property.
Added a generic step sound TERRAIN property, for defining foot-agnostic step sounds. Used by the built-in footstep system over the individual foot ones.
Simplified MakeFootsteps().
Also removed a leftover debug message.
- Added SECMF_HURTMONSTERS, which allows monsters in the flagged sector to be hurt with the same behavior as players (i.e damage leaking).
- Added SECMF_HARMINAIR, which allows players (And monsters with SECMF_HURTMONSTERS) to be hurt when they're inside the sector in general, instead of only when they're walking on it. Replicates the behavior of the DAMAGE_IN_AIR flag that SectorDamage() uses.
- Added NOSECTORDAMAGE, which makes actors with the flag immune to any harmful floors.
This adds a new actor property: `FloatBobFactor` (default 1.0). This will be a multiplier for level.time in `AActor::GetBobOffset`, which finally allows to control not only the range of float bobbing (which is FloatBobStrength) but also the frequency of bobbing.
This issue was previously fixed in 0c2ed71cdd, but that change added a bug that would trigger an infinite loop on scrolling in a list without any selectable items. Then 4fdbe81a13 restored the old behavior, reintroducing the issue.
This new fix does handle lists without any selectable items correctly.
CallTryPickup will cache the item's class and pass it to HasReceived, so the latter will know what item was received even if the item has been destroyed by the time it's called.
* Feature-complete isometric mode fork.
* Dithered transparency condition tweaks.
* Dithered transparency for non-corpse monsters only (and missiles).
* SpectatorCamera vertical shift.
* Including math.h in hw_sprites.cpp to keep visual studio happy (it couldn't find M_SQRT2 definition).
* Defining MY_SQRT2 in hw_sprites.cpp to keep visual studio happy (it couldn't find M_SQRT2 definition).
* Defining MY_SQRT2 in r_utility.cpp also to keep visual studio happy.
* retrigger checks
* Have correct sprite angle-frame face the camera with orthographic projection enabled.
* Dithered Transparency now works properly on 3D floors. Moved that dither-trans flag setting code within hw_bsp.cpp to handle double-processing of linedefs. Added helper functions to FRenderViewpoint class 'bool IsOrtho()' and 'bool IsAllowedOoB()' to clean up checks everywhere in the code.
* Fixed indents. Added bbox property to subsector struct and use it instead of BSP nodes and Clippers (creating a bbox around viewpoint and checking for overlap) in orthographic mode when no fog of war is active. Turns out to be much faster. Though you need really big maps (Winter's Fury MAP01) to see a difference in fps.
* Non-linux checks don't like uint. Changed to unsigned int.
* Small change of a float to camera.zs. Ignore for testing. Should make no difference.
* Update actor.h to remain mergeable
RF2_NOMIPMAP was introduced, so I had to displace RF_ISOMETRICSPRITES to next bit.
Fixed missing teleport specials when predicting. Added rubberband limit; if too far away from the predicted position, will instead instantly snap the player's view to their new spot. Deprecated cl_noprediction; this was pointless as you'd never not want to predict your position/angles. Fixed angle targets not being backed up. Fixed oldbuttons not being set. Updated menu