Commit graph

227 commits

Author SHA1 Message Date
Ricardo Luís Vaz Silva
c0d17bbda3 limit light alpha mult to renderflag 2025-04-29 15:47:28 -03:00
Boondorl
d0e056565b Exported episode and skill infos 2025-03-13 14:08:25 -03:00
Boondorl
69b0932f23 Use unique flag for clientside Actor handling in GZDoom
This offers different behaviors from Zandronum so should be made exclusive.
2025-03-11 10:14:28 -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
Boondorl
d527829ee3 Added NOAUTOOFFSKULLFLY flag
Disables resetting skullfly and state when velocity is zero while charging.
2025-01-30 13:33:33 -03:00
Boondorl
e0394ef16a Added flags for angle handling on bounce
Allows for keeping the current angle on bounce or modifying the pitch.
2025-01-27 21:27:03 -03:00
Major Cooke
9ca5bef4ea Fixed STRETCHPIXELS flag not being exposed. 2024-10-30 18:54:23 -03:00
inkoalawetrust
34dc204517
Re-added sector damage for non-players. (#2773)
* 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.
2024-10-20 07:51:36 -04:00
nashmuhandes
12c6d1361a Move no-mipmapping from actor renderflag/particle flag, to a material property in GLDEFS, where it makes more sense. The feature was introduced in the short-lived engine version of 4.13 which was deemed too broken and needed to be replaced with a newer version anyway, so might as well perform an API-breaking change at this point in time. Note that this currently only works for sprites (its primary targeted use case) -- walls, flats and models can be patched in later. 2024-10-19 18:35:54 -04:00
Rachael Alexanderson
4ba53e34e4
Revert "Added SECMF_HURTMONSTERS, SECMF_HARMINAIR and NOSECTORDAMAGE."
This reverts commit 391f496512.
2024-10-19 10:25:03 -04:00
Rachael Alexanderson
dd740b59e0
Revert "- simplify and deconstruct logic for applying sector damage - also fixes voodoo doll sector damage in TNT MAP30"
This reverts commit 3e33e31d19.

Revert "Added MF9_FORCESECTORDAMAGE."

This reverts commit 61bd3a739a.
2024-10-19 10:17:22 -04:00
inkoalawetrust
61bd3a739a Added MF9_FORCESECTORDAMAGE.
This flag forces non-player actors to take  damage from hurt floors even if SECMF_HURTMONSTERS isn't true.
2024-10-09 13:51:48 -03:00
Christoph Oelckers
3798fd815f the MISSILE(EVEN)MORE flags still need to be accessible by ZScript for backwards compatibility.
Since these do not exist anymore an internal interface to Handle/CheckDeprecatedFlags was added.
2024-10-03 12:32:09 +02:00
Christoph Oelckers
8354c4a5c3 Replaced MISSILE(EVEN)MORE with a real property and added related Dehacked options from Crispy Doom.
This also adds proper deprecation messages to the deprecated flags which were missing due to a bad definition macro.
2024-10-03 12:24:16 +02:00
jekyllgrim
1392db2f5b Made DamageSource and bIsPuff readonly 2024-10-01 11:53:11 -03:00
jekyllgrim
f13bc09840 Add bIsPuff flag 2024-10-01 11:53:11 -03:00
inkoalawetrust
391f496512 Added SECMF_HURTMONSTERS, SECMF_HARMINAIR and NOSECTORDAMAGE.
- 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.
2024-09-29 18:12:30 -04:00
Rachael Alexanderson
5895f9b1b1
- implement +SQUAREPIXELS flag 2024-09-07 23:09:36 -04:00
dileepvr
95b264bdb6
Isometric Mode and Robin (#2618)
* 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.
2024-08-11 10:04:40 -04:00
nashmuhandes
593e1c0225 Add SPF_NOMIPMAP to force actor sprites or particles to have no mipmaps. This makes tiny sprites/particles look more crisp and legible in the distance. Mipmapping causes the sprites/particles to have an inconsistent look where they'd sometimes be clearly visible and sometimes less visible depending on camera distance and movement. 2024-08-03 18:45:48 -03:00
Christoph Oelckers
520b960ca5 Reverted the path node system
Code reviews were unfavorable so better nix it before it finds wider use.
2024-03-15 20:24:39 +01:00
Major Cooke
81ebd8c8c4 More progress.
- AMBUSH flag on nodes makes them blind and untargetable when getting `startnode` and `goalnode` for `FindPath()`. This is useful for indicating a node should be skipped when tele/portaling, so the current path can be preserved.
- Setup is simple: place nodes behind lines that tele/portal entities and mark them as AMBUSH.

Other changes:

- Restored global array since blockmap is not a viable option here.
- Added MAPINFO `pathing` flag which enables pathing by default.
- Added NOPATHING flag to disable pathing entirely, useful for maps that have pathing enabled.
- Added `ReachedNode(Actor mo)` virtual, responsible for handling node traversal.
- Nodes now make use of MeleeRange to limit their sight checking functions.
2024-03-05 13:44:38 -05:00
Major Cooke
b2cb4b0a6d Begin adding PathNodes. 2024-03-05 13:44:38 -05:00
Boondorl
a1a916a823 Added real-time client camera tracking for texture cams 2024-02-24 17:57:53 +01:00
Major Cooke
278ebf3202 Aded FLIPSPRITEOFFSET<X/Y> for actors and bFlipOffset<X/Y> for visual thinkers.
- Inverts the direction that (Sprite)Offset pushes the sprite without affecting *any* other offsets, allowing them to combine seemlessly.
2024-01-21 03:33:48 -05:00
Boondorl
4b3cfc6ab7 Converted NetworkBuffer to Object
Fixed a memory leak with _buffer in DNetworkBuffer. Added more wrapper functions to ZScript for basic scenarios.
2024-01-05 16:42:13 +01:00
Boondorl
202d0d747f Added NetworkBuffer
Allows for a command to be built before sending it off. Added wrapper functions for certain data types. Changed command from a number to a Name.
2024-01-05 16:42:13 +01:00
Boondorl
9565c94cd2 Added SendNetworkCommand
Allows for a custom message to be sent over the network without the need for SendNetworkEvent. This includes all the possible valid types of byte, word, long, float, and string.
2024-01-05 16:42:13 +01:00
Rachael Alexanderson
b4d5c7d669 - add actor flag +BILLBOARDNOFACECAMERA which forces sprite aimed at camera heading instead of camera position when gl_billboard_faces_camera is true
```
class ZombieManNoFaceCamera : Zombieman replaces Zombieman
{
	default
	{
		+BILLBOARDNOFACECAMERA;
	}
}
```
2023-12-09 05:57:51 -05:00
Rachael Alexanderson
3caa6247be - add flag +BILLBOARDFACECAMERA - renders actor billboard to always face the camera
tested with this code snippet:
```
class ZombieManFaceCamera : Zombieman replaces Zombieman
{
	default
	{
		+BILLBOARDFACECAMERA;
	}
}
```
2023-12-08 10:12:58 -05:00
Ricardo Luís Vaz Silva
aed85a25a2 serialize cvars 2023-11-25 21:06:39 -05:00
Ricardo Luís Vaz Silva
5d5e7ca042 Decoupled IQM Model Animations 2023-11-20 22:08:33 -05:00
Ricardo Luís Vaz Silva
e61ab4cbe2 Expose OF_Transient to actors as bNoSaveGame 2023-09-14 16:28:23 +02:00
inkoalawetrust
814c6f2188 Added MF9_SHADOWAIMVERT.
This flag causes the vertical aiming of monsters to also be affected when they aim at shadow actors.
2023-08-02 00:39:35 -04:00
inkoalawetrust
c729b831af Added MF9_SHADOWBLOCK.
Actors in the line of fire with this flag trigger the MF_SHADOW aiming penalty. The shooter needs to have MF9_DOSHADOWBLOCK to check for actors with this flag.
2023-08-02 00:39:35 -04:00
inkoalawetrust
162dbf0554 Added MF9_SHADOWAIM.
This flag allows actors with MF6_SEEINVISIBLE to still get an aim penalty by trying to shoot at a shadow actor.
2023-08-02 00:39:35 -04:00
Rachael Alexanderson
4475240da8 - rename the flags MNOTVISIBLE and VISALWAYSFAIL to MINVISIBLE and MVISBLOCKED respectively, to reflect what they really do 2023-02-15 11:51:48 -05:00
Rachael Alexanderson
45f67bdd50 - add +VISALWAYSFAIL flag 2023-02-14 23:14:35 -05:00
Rachael Alexanderson
8af2f5aaf6 - add +mnotvisible flag as per feature suggestion: https://forum.zdoom.org/viewtopic.php?t=77277 2023-02-13 13:32:44 -05:00
Boondorl
f6128f0e9e Fixed global TerrainDef array not being exported correctly 2023-01-20 22:33:12 +01:00
Boondorl
dd7cb8649f Exported LinePortals
Added helper functions for lines related to portals
2023-01-15 22:01:37 +01:00
Ricardo Luís Vaz Silva
cd46f97dcc Structified A_SpawnParticle/Ex 2022-12-03 23:54:52 +01:00
Boondorl
aea346f1f3 Improved Slam functionality:
*Added ONLYSLAMSOLID flag to ignore non-solid Actors that aren't shootable while SKULLFLY is on.
*Added Slam state that gets entered when slamming an Actor.
2022-11-10 22:55:43 +01:00
Christoph Oelckers
f0fbdba593 - disable implicit conversions from float to TAngle 2022-08-26 18:01:26 +02:00
nashmuhandes
593627f049 Add +ONLYVISIBLEINMIRRORS and +INVISIBLEINMIRRORS actor flags. The former makes the actor only visible in reflections, while the latter makes the actor not cast reflections in mirrors. 2022-06-22 09:36:04 +02:00
Major Cooke
3d14cec191 Added ADDLIGHTLEVEL to add the sector light level to an actor's own defined light level, if desired. 2022-05-31 21:00:31 +02:00
Sally Cochenour
bb42e541e9
MASTERNOSEE flag (#1601)
Makes it so that if an actor's master is invisible due to camera/mirror/portal shenanigans, then the actor will also be invisible. Name based off of an Unreal Engine flag that does the exact same thing.

Co-authored-by: Christoph Oelckers <coelckers@users.noreply.github.com>
2022-05-31 12:34:15 +02:00
Major Cooke
748156c846 Optimized CanCrossLine.
- Remove P_PointOnLineSide check
- Made CanCrossLine opt-in by requiring the CROSSLINECHECK flag.
2022-05-31 10:46:06 +02:00
inkoalawetrust
dbf707b83b Added MF8_SEEFRIENDLYMONSTERS.
Non-friendly monsters with this flag on will be able to attack friendly monsters on sight.
2022-05-10 08:25:30 -04:00
inkoalawetrust
3d1ddbc80e
Toggleable player following. (#1583)
* Added MF8_DONTFOLLOWPLAYERS.

Added the MF8_DONTFOLLOWPLAYERS flag, which allows friendly monsters to not follow their FriendPlayer when they have no target or goal left to head to.

* Changed the order that the DONTFOLLOWPLAYERS check runs in.

This is done to not produce unnecessary overhead on hostile monsters.
2022-04-07 23:32:16 -04:00