Commit graph

672 commits

Author SHA1 Message Date
Boondorl
287277b1f8 Player spawn fix in co-op new games
If there aren't enough player spawns present in co-op, the game will instead fail to spawn extra players, waiting for the ticker to automatically capture the fact they have PST_ENTER. This presents a problem in WorldLoaded() where it becomes unreliable whether or not a player has truly spawned. This also means those extra players had slightly different spawn behavior compared to regular pawns.
2024-04-26 14:56:30 -03:00
Christoph Oelckers
ebd4ebf298 StringTable cleanup and improvements
cleaned up function interface to avoid referencing the file system in the worker functions.
replaced StringTable's operators with functions.. The main reason is that these are far easier to look up when browsing the source.
This also fixes a premature translation in SBARINFO that was done in the parsing stage, not the printing stage.
2024-04-21 10:34:44 +02:00
Boondorl
f4a42dae1d Added pistol start gameplay option
Automatically resets the player's inventory and health when changing maps.
2024-04-21 03:21:08 -04:00
Boondorl
bcd6c6170e
Reapply "Improvements to death and cheat handling"
This reverts commit c7bba2a126.
2024-04-20 01:15:46 -04:00
Rachael Alexanderson
c7bba2a126
Revert "Improvements to death and cheat handling"
This reverts commit 3033fafaa7.

Revert "Improved ZScript interface for morphing"

This reverts commit 6c64a4403c.

Revert "Further morphing clean up"

This reverts commit 12dc5c1506.

Revert "Fixed inconsistencies between player and monster morphing"

This reverts commit 30730647fe.

Revert "Reworked Morphing"

This reverts commit 2c09a443b4.

- fix compile
2024-04-17 17:55:24 -04:00
Boondorl
442ac3f78b Updated substitution logic to only replace pointers if safe 2024-03-28 15:48:23 -04: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
257ddb520a Extra safety checks. 2024-03-05 13:44:38 -05:00
Major Cooke
69001ad4f7 Added ExcludeNode virtual for actors to reject certain nodes of choice.
- Changed MeleeRange to FriendlySeeBlocks so it's supported by Doom Builder.
2024-03-05 13:44:38 -05: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
Ricardo Luís Vaz Silva
ad52e2cc1e AStar 2024-03-05 13:44:38 -05:00
Major Cooke
b2cb4b0a6d Begin adding PathNodes. 2024-03-05 13:44:38 -05:00
Boondorl
2c09a443b4 Reworked Morphing
Removed StaticPointerSubstitution in favor of a much safer function that only changes select pointers. As a result the ability to properly modify morphing has been opened back up to ZScript. Many missing virtual callbacks were amended and MorphedDeath has been reworked to only be called back on an actual morphed death. MorphedMonster is no longer required to morph an Actor. CheckUnmorph virtual added that gets called back on morphed Actors. Fixed numerous bugs related to morph behavior.
2024-03-01 08:35:31 -05:00
Dileep V. Reddy
25f1407228 Cleaning up implementation of isometric camera with optional orthographic projection.
All CVars, mapinfo variables, and playerinfo/playerpawn variables are gone.
A Camera actor named 'SpectatorCamera' is defined in warsrc/static/zscript/actors/shared/camera.zs

The following new flag bits were defined in the 'DViewPosition' struct for use with actor->ViewPos in src/playsim/actor.h:
	VPSF_ALLOWOUTOFBOUNDS =		1 << 3,			// Allow viewpoint to go out of bounds (hardware renderer only).
	VPSF_ORTHOGRAPHIC =		1 << 4,			// Use orthographic projection.
	VPSF_ISOMETRICSPRITES =		1 << 5,			// Displace sprites towards camera and don't billboard (drawn from isometric perspective).

Basically, spawn a SpectatorCamera actor with the appropriate flags and set it to player.camera.
See example template: https://www.mediafire.com/file/fv8rytayjt9l6g1/isometric_actor_wads.zip/file

Has been tested with multiplayer death and disconnection (and respawns). Not tested with portals.
Still only works with hardware renderer (mostly). But should be compatible with older mods and libraries.
2024-02-01 08:43:34 -05:00
Dileep V. Reddy
d3405837ce Changed all of the isometric functionality to mapinfo and playerinfo variables. Retained function of most of the CVars. 2024-01-21 12:13:42 -05:00
Rachael Alexanderson
af08413e10
- reverting pull request #2361 - apparently pull request #2364 changed some behaviour and these two do not play nice together. One or the other unfortunately has to be rolled back to allow GZDoom to build properly again.
Revert "Restored r_orthographic behavior."

This reverts commit 26908f5bc5.

Revert "Changed all of the isometric functionality to mapinfo and playerinfo variables. Retained function of most of the CVars."

This reverts commit dc897eacc0.

Revert "Adding isometric camera mode with orthographic projection to current state of master branch of GZDoom."

This reverts commit d2c2c93cf1.
2024-01-21 08:18:16 -05:00
Dileep V. Reddy
dc897eacc0 Changed all of the isometric functionality to mapinfo and playerinfo variables. Retained function of most of the CVars. 2024-01-21 03:34:00 -05:00
Boondorl
a8e350aed8 Renamed Networking Functions
New names more appropriately match the size of the value they write to/read from the stream.
2024-01-05 23:33:15 +01:00
inkoalawetrust
ce2a0c9295 Added LightningSound MAPINFO property.
Also added a tempSound parameter to ForceLightning(). Allowing for changing the specific sound that particular thunderbolt makes when it hits.
2024-01-05 17:35:03 +01:00
Rachael Alexanderson
42ab7dd70f - mark gl_maplightmode as a cheat
I've heard from several people since this was put in that this should be marked as a cheat. This PR lets you make the final call on that.
2023-12-10 18:22:57 +01:00
Christoph Oelckers
ebc808e2a9 did some cleanup of the FResourceFile interface.
* making all members protected (but adding friend overrides for the classes which still need it)
* allowing to read data without retrieving the FResourceLump object.
2023-12-10 10:24:39 +01:00
Professor Hastig
3781c43aec allow defining zero gravity through MAPINFO 2023-11-09 07:17:16 -05:00
Christoph Oelckers
12bc9db609 hooked up the per-level colormaps with the hardware renderer. 2023-10-29 08:13:01 +01:00
Ricardo Luís Vaz Silva
e12f2ce0fe Allow setting the colormap from mapinfo (dsda-doom) 2023-10-29 07:40:56 +01:00
Christoph Oelckers
c94c63110e added a third batch of GetChars call to FStrings. 2023-10-07 23:03:40 +02:00
Christoph Oelckers
084301f4d6 - refined light mode selection.
This is to ensure that if the map specifies light mode Doom (i.e. hardware approximation of software lighting) it is not overridden by the user-selected software emulating light mode.
gl_lightmode should only apply if neither the map nor gl_maplightmode set an explicit light mode.
2023-09-17 08:40:36 +02:00
Christoph Oelckers
f55e388d3f - add description to gl_lightmode 2023-09-16 12:09:57 +02:00
Christoph Oelckers
7fbd99ca0f - fixed flags for gl_lightmode.
With how this is being handled now, the CVAR needs to have the CVAR_GLOBALCONFIG flag and CVAR_NOINITCALL unset or it simply won't work right.
Since its meaning has completely changed now (i.e. it's mainly a performance switch to a less demanding implementation instead of being able to select vastly different lighting methods) making it global is more sensible.
2023-09-16 12:06:42 +02:00
Ricardo Luís Vaz Silva
736d38e8c3 add StartGameDirect function 2023-09-14 16:28:08 +02:00
Christoph Oelckers
ebb71cebf1 - put the entire filesystem code into a namespace and created some subdirectories. 2023-08-22 22:54:54 +02:00
Christoph Oelckers
f9a86c595c - fixed getRealLightmode: don't overwrite level->info->lightmode. 2023-07-21 14:55:59 +02:00
Professor Hastig
4b49d9d185 fixed bad operator 2023-07-17 22:50:05 +02:00
Professor Hastig
666a99f204 lightmode refactor
* make all legacy light modes except 'Doom' MAPINFO only. A CVAR still exists for testing but its value won't be saved to the config.
* user can only select between "performance', 'software' and 'vanilla'. 'performance' is the old 'Doom' mode which is still needed to speed things up on low end hardware.
* MAPINFO can not enforce any of the two software light modes, as low end users require the option to change this to the 'performance' setting. Selecting one will always revert to the user's light mode selection.
2023-07-17 22:50:05 +02:00
Rachael Alexanderson
4ac76d82d8 - redirected maps need to be defined in order to redirect 2023-02-03 20:21:40 -05:00
Rachael Alexanderson
33b217bcc9 - unlatch cvars before checking cvar map redirections 2023-02-01 01:56:10 -05:00
Rachael Alexanderson
04ea28defc - add RedirectCVAR directive for loading alternate maps based on a Bool CVAR setting 2023-02-01 00:06:01 -05:00
Marisa the Magician
0e5c6e37b1 Prevent important messages from being accidentally filtered. 2023-01-04 17:54:09 +01:00
Boondorl
0d4d5587b5 Added FOV Interpolation 2022-12-18 08:23:19 +01:00
Christoph Oelckers
d0c86952ee - disabled shortcutting the intermission code if no summary screen is wanted.
This also disabled all cutscenes being attached to the completed map.
2022-11-16 16:29:02 +01:00
Christoph Oelckers
df7a58d756 - missed one BaseBlend use. 2022-11-08 12:01:34 +01:00
Marisa the Magician
2bb0dcca13 Fix print color of level load message. 2022-11-05 13:08:51 +01:00
Marisa the Magician
a75a96d993 Level name printout on load shouldn't be sent to the HUD. 2022-11-05 13:08:51 +01:00
Christoph Oelckers
6eab875ec2 - added option to show hub and episode names on the alt HUD.
Still very much work in progress because few mods have set this up.
CVARs default to off and are not exposed to the menu.
2022-10-26 17:44:51 +02:00
Christoph Oelckers
453688ccc6 - reworked CVARs to not use a linked list and to be initialized manually.
This solves two problems:

* The linked list is too slow, a map is better. A map cannot be used with statically allocated CVARs because order of initialization is undefined.
* The current CVAR system is an unordered mishmash of static variables and dynamically allocated ones and the means of identification are unsafe. With this everything is allocated on the heap so it can all be handled the same by the cleanup code.
2022-10-21 18:56:43 +02:00
Christoph Oelckers
8aaab153fa - add a system interface for CheckCheatmode and moved some sound code to the backend. 2022-10-02 16:48:56 +02:00
Christoph Oelckers
71ce8aa79a - block wipes when streaming movies are playing.
For synchronization purposes they cannot be interrupted by the wipe loop.
This also groups the cutscene state in a struct for readability purposes.
2022-06-06 12:30:47 +02:00
Christoph Oelckers
4cb7c70e27 - restored accidentally deleted line of code. 2022-06-05 16:43:12 +02:00
Christoph Oelckers
3c96f7e21c - added handling for start-of-episode cutscenes. 2022-06-04 21:58:46 +02:00
Christoph Oelckers
df74288f7b - use the same rules for cutscenes as for old intermissions when travelling in a hub 2022-06-03 00:30:34 +02:00
Christoph Oelckers
99d98cf79d - added cutscene creation code 2022-06-03 00:03:57 +02:00