Commit graph

227 commits

Author SHA1 Message Date
Mitchell Richters
3b82a08123 Revert "- Fix non-Windows and non-MSVC builds due to missing header for strupr()."
This reverts commit 2217dcb632.
2021-07-25 19:38:06 +10:00
Mitchell Richters
2217dcb632 - Fix non-Windows and non-MSVC builds due to missing header for strupr(). 2021-07-25 19:27:31 +10:00
Christoph Oelckers
7702b3bb92 - rewrote the sound handling in the patrolling code for Raze's sound backend. 2021-07-25 10:42:15 +02:00
Christoph Oelckers
eae355110f - use enums instead of #defines. 2021-07-25 10:30:14 +02:00
Christoph Oelckers
cc3e6b74f3 - handle newly activated 'unused' fields properly for serialization. 2021-07-25 10:29:50 +02:00
Christoph Oelckers
b588abbca6 - deleted two unused functions that got back in again by accident. 2021-07-25 08:50:46 +02:00
Mitchell Richters
ffe62da3c7 - Blood: Add some nullptr checks to the aiPatrol*() inline bools. 2021-07-25 15:37:50 +10:00
Mitchell Richters
7329cb8f1f - Blood: Comment out bonk code from 754554a493 to get things building for now. 2021-07-25 13:12:29 +10:00
NoOneBlood
754554a493 Increase kMaxSuperXSprites from 128 to 512.
Fix mirror (ROR) intialization so it won't crash if more than 1024 sectors used.
Fix random item generator so items that inherits TX ID won't send command at respawn.
Fix for things (400 - 433) that affected by modern physics so it won't return to vanilla physics after getting damage.
Fix kTeleportTarget so teleported sprites won't stuck in floors or ceilings.
Corpses won't gib as gargoyles anymore (gModernMap).

kModernCondition:
 - remove bool comparison (condCmpb).
 - remove no extra comparison (condCmpne).
 - remove "else if" search at level start.
 - add global (game) conditions type.
 - add more conditions.
 - make error report a bit more informative.

Add more options and damage effects for kModernSpriteDamager.
Add more options for kModernMissileGen and allow to spawn projectile on TX ID sprites location.
Add more options and vertical wind processing for kModernWindGen.
Add more options and effects for kModernEffectGen.
Allow kMarkerDudeSpawn to spawn enemies on TX ID sprites location (gModernMap).
Allow kModernCustomDudeSpawn to spawn dude on TX ID sprites location.
Add Screen and Aim trigger flags for sprites that can be triggered with Sight (gModernMap).

Patrolling enemies:
 - add turn AI state.
 - add "return back" option for path markers.
 - add "turning while waiting" option for markers.
 - make enemies to hear some sounds assuming that player generates and hears it too.
 - add kModernStealthRegion type to affect current spot progress velocity.
 - replace AI's CanMove and aiChooseDirection to a better versions.
 - make flying enemies to not spin around the marker.
 - treat Phantasm as flying enemy!
 - allow to continue patrol when falling in water.

Fix compile warnings
Various minor fixes / cleanup.
2021-07-25 13:11:55 +10:00
Mitchell Richters
a55b8f716d - Blood: Repair some missing nullptr checks causing a crash upon reloading after dying.
* Reported by Spill.
2021-07-24 21:39:29 +10:00
Mitchell Richters
675356be1a - Ensure g_nextskill is used everywhere so that setting skill for next level works properly. 2021-07-20 18:51:34 +10:00
Mitchell Richters
33845c4a23 - Add skill CCMD to return player's current skill, while also being able to set skill for next game.
* Fixes #332.
2021-07-20 18:50:58 +10:00
Mitchell Richters
77630dcbc7 - Rename DeferedStartGame() to DeferredStartGame(). 2021-07-20 18:43:17 +10:00
Mitchell Richters
0f5243c39e - Blood: Lock input after setting angle/horizon targets in nnexts.cpp code, then unlock in ProcessInput() where resetForcedSyncInput() is called. 2021-07-18 19:26:24 +10:00
Mitchell Richters
58ed7f8745 - Blood: Restore original horizon algorithm in trPlayerCtrlSetLookAngle() and adjust to Raze's backend input code. 2021-07-18 18:52:21 +10:00
Mitchell Richters
b4af9e87c1 - Blood: Make delirium rotscrnang smoother with use of more precision. 2021-07-18 18:13:48 +10:00
Mitchell Richters
c62e5db2bc - Blood: Fix angle issues with NHIS. 2021-07-18 17:35:11 +10:00
Mitchell Richters
9432f9ec90 - Blood: Add nullptr check for actor2 in ProcessTouchObjects().
* Fixes crash during testing of NHIS.
2021-07-18 16:56:49 +10:00
Mitchell Richters
f022f197ab - Blood: Repair weapon switching issue by adding missing guard from 6980e8b355 that got lost during e375c799ce.
* Fixes #366.
2021-07-17 09:14:08 +10:00
Mitchell Richters
76554f5f4d - Repair incorrect method call to IniFile class from 6576adb80b.
* Fixes #473.
2021-07-16 23:01:07 +10:00
Christoph Oelckers
6576adb80b - Blood: validate .ini files before using them.
They must at least have one "Episode?" section to be accepted.
2021-07-13 12:34:35 +02:00
Christoph Oelckers
7a99b6376e - forgot to save this... 2021-07-13 12:31:14 +02:00
Christoph Oelckers
b06ad5c77f - Blood: fixed order of initialization for voxels.
Just like Shadow Warrior it needs to load its voxel table before .def files.
2021-07-13 12:11:17 +02:00
Mitchell Richters
5af06923d8 - Blood: Revise 6018213c71 and use the proper volume flag VF_HIDEFROMSP to hide multiplayer episodes from the menu. 2021-07-11 22:30:59 +10:00
Christoph Oelckers
4dd293d551 - zero-terminate the buffer for reading Blood's INI files. 2021-06-26 12:04:21 +02:00
Christoph Oelckers
0f7d3d0cbb - streamlined and fixed game startup with '-map' option.
* Blood: Initialize global pointers in app_init so that they are not NULL.
* consider Mapinfo data when checking for a given level name.
* removed redundant level name output.
2021-06-26 10:11:50 +02:00
Christoph Oelckers
63bc36e3c4 - renamed some constants.
Manually copied from NBlood because the underlying code has changed too much already.
2021-06-24 14:14:16 +02:00
Mitchell Richters
6018213c71 - Blood: Don't parse BloodBathOnly levels in the INI loader.
* Fixes #442.
2021-06-24 18:21:06 +10:00
Christoph Oelckers
207298aeb4 - fixed compilation (again.) 2021-06-02 21:00:39 +02:00
NoOneBlood
73683b3ebe Remove viewSetSystemMessage() when setting dude flags via command
# Conflicts:
#	source/blood/src/nnexts.cpp
2021-06-02 20:52:49 +02:00
Christoph Oelckers
86082d4c10 - fixed last commit 2021-06-02 20:52:48 +02:00
NoOneBlood
f433c6ee11 Use dude physics as base for debris physics
Remove dude flags commands
Update kModernSlopeChanger
Add stealth dude flag
Update for sector pause/continue motion

# Conflicts:
#	source/blood/src/db.h
#	source/blood/src/nnexts.cpp
#	source/blood/src/nnexts.h

# Conflicts:
#	source/blood/src/nnexts.cpp
2021-06-02 20:52:48 +02:00
Christoph Oelckers
7fa690082e - fixed cherry picked commit.
# Conflicts:
#	source/core/gamecontrol.h
2021-06-02 20:52:47 +02:00
NoOneBlood
3a59243ea0 - Fixed getPlayeById() function in multiplayer.
- Fixed debris physics flags was not properly reset on level restart.
- Added new modern type "kModernSlopeChanger" that can manipulate sector and sprite slopes.
- Allow to drop items and keys for players in multiplayer (gModernMap only).
- Added event commands to manipulate dude flags.
- Patrol enemies (xsprite.dudeFlag4, gModernMap only):
  - Added path markers following.
  - Added stealth mechanics.
  - Added spot target progress bar.
  - Added alarm dude flag.
  - Added blind dude flag.
  - Added deaf dude flag.
  - Added conditions for kModernCondition related to patrol enemies.
- kModernDamager can work like generator and damage anyone in sectors or in map.
- kSectorDamage is not does the damage if in Off state (gModernMap only).
- Additional options kModernSeqSpawner.
- Effects that created with kModernEffectSpawner now inherits offset of the sprite.
- Added kCmdSectorMotionPause and kCmdSectorMotionContinue event commands that allows to pause or continue sector motion (gModernMap only, WIP).
- Various minor fixes.

# Conflicts:
#	source/blood/src/ai.cpp
#	source/blood/src/common_game.h
#	source/blood/src/eventq.cpp
#	source/blood/src/nnexts.cpp
#	source/blood/src/nnexts.h
#	source/blood/src/triggers.cpp
#	source/blood/src/triggers.h
#	source/blood/src/view.cpp

# Conflicts:
#	source/games/blood/src/ai.cpp
#	source/games/blood/src/nnexts.h

# Conflicts:
#	source/games/blood/src/actor.cpp
#	source/games/blood/src/ai.cpp
2021-06-02 20:51:47 +02:00
Christoph Oelckers
c4fa99c891 - ProcessTouchObjects 2021-06-02 20:44:55 +02:00
Christoph Oelckers
f7668fc074 - first pass over ProcessTouchObject 2021-06-02 20:44:54 +02:00
Christoph Oelckers
a7572bca0a - actImpactMissile. 2021-06-02 20:43:14 +02:00
Christoph Oelckers
454816299e - reorganized loading of textures.
Due to dependencies on initializing some data in app_init it was not possible to cleanly set up the fonts.
This adds a game-side function for loading the entire palettes before starting with the texture data and another one for loading game-side texture data.
This now allows fully setting up the palettes before starting with the textures and to fully set up the textures before reading the .def files.

All this is needed because to properly initialize, the fonts need to be able to access the fully initialized texture state, including replacements and hires substitutions from the .def files.
2021-06-01 11:05:26 +02:00
Christoph Oelckers
8b507ed606 - enabled the ENDOOM-like text screens when quitting Duke and SW.
Turned out that all they needed was the font.
2021-05-31 23:16:52 +02:00
Christoph Oelckers
9c60ab791b - implemented all needed font overrides for localization. 2021-05-31 21:20:31 +02:00
Christoph Oelckers
af781e0422 - moved all font setup out of the C++ code.
All internal fonts now get defined through FONTDEFS.
Also fixing a few offsets.
2021-05-31 21:20:31 +02:00
Christoph Oelckers
42b70a7d93 - added internationalized fonts.
This still needs a bit of fixing and tweaking but most is working.
2021-05-31 21:20:30 +02:00
Christoph Oelckers
f97b4e830d - pass fonts instead of indices to Blood's viewDrawText function.
As preparation for building a proper font system.
2021-05-31 21:20:28 +02:00
Christoph Oelckers
8fae793341 - defined a new constant, CR_NATIVEPAL, to use the font functions with a predefined palette.
This is mainly for code clarification, the value is the same as CR_UNDEFINED.
2021-05-29 11:47:05 +02:00
Christoph Oelckers
e10bcf6294 - split the screen job code into a generic and a Raze specific part.
Preparations for porting this to GZDoom.
2021-05-22 01:35:50 +02:00
Christoph Oelckers
5ee4bc5cca - Blood: handle title screens so that mods changing the original one still display it.
The rules are:
* If CRC of tile 2518 has changed, use that.
* If CRC of tile 2046 has changed, use that.
* If tile 2518 is not present, use tile 2046
* otherwise use tile 2518.

This allows display of Cryptic Passage's title screen while still using the "with Plasma" version for the regular game.
2021-05-19 00:07:50 +02:00
Christoph Oelckers
60fe1d32fb - Blood: unpositioned sounds must be limited to one per channel. 2021-05-16 11:51:51 +02:00
Christoph Oelckers
317238147b - Blood: fixed scriptified MP statusbar code to the point where it compiles.
Mainly to avoid code rot by future changes, this probably cannot remain as it is if MP gets reimplemented.
2021-05-15 10:25:37 +02:00
Christoph Oelckers
e5dd4a8638 - made the scripted version of Blood's status bar functional. 2021-05-12 21:50:02 +02:00
Christoph Oelckers
778378fd5c - scriptified version of Blood's status bar compiles.
Not tested yet.
2021-05-12 21:50:02 +02:00
Christoph Oelckers
4ad20e4c00 - more preparations for scriptification of Blood's status bar.
* restructured some code that could not be converted as-is due to access to data that should be off-limits to scripts.
* exporting most of PLAYER's member fields.
2021-05-12 21:50:02 +02:00
Christoph Oelckers
5859188d3a - Blood: use names instead of indices to address textures in the status bar drawer.
This is a preparation for scriptification of the status bars. Blood's wasn't using any symbolic constants at all aside from the new HUD fonts.
2021-05-12 21:50:01 +02:00
Christoph Oelckers
3e2cacfaf6 - silenced warnings in Blood. 2021-05-12 21:49:06 +02:00
Christoph Oelckers
d097c8e635 - removed the non-functional and long abandoned level music alias feature.
With RMAPINFO such a hack is no longer needed for anything.
2021-05-12 21:48:40 +02:00
Christoph Oelckers
03289f5097 - silenced some warnings. 2021-05-12 21:47:32 +02:00
Christoph Oelckers
c6991add46 - Blood: fixed null pointer crash in actBurnSprite. 2021-05-11 00:02:26 +02:00
Christoph Oelckers
e40ed2262e - cleanup of 'gotpic' handling. 2021-05-10 20:13:28 +02:00
Christoph Oelckers
e74aca291c - position tweaking for Nam's skies.
Why is this such an utter mess to get skies placed correctly? :(
2021-05-10 20:13:28 +02:00
Christoph Oelckers
fc11f9327a - refactored actDamageSprite 2021-05-10 20:13:28 +02:00
Christoph Oelckers
b8dcd09f77 - reformatting. 2021-05-10 20:13:28 +02:00
Christoph Oelckers
965939957e - split up actKillSprite into several smaller functions.
The biggest problem in here was tracking the lifetime of local variables.
2021-05-10 20:13:28 +02:00
Christoph Oelckers
0efe15ae98 - deleted some unused utilities. 2021-05-08 18:06:57 +02:00
Christoph Oelckers
9a5a32c826 - Blood: split out the 'modern dude' part of actKillDude. 2021-05-08 14:43:09 +02:00
Christoph Oelckers
34b7bfc10b - handled the actDrop* functions. 2021-05-08 14:43:08 +02:00
Christoph Oelckers
d1cc7403b3 - actNapalmMove - another previously unnamed function.
# Conflicts:
#	source/games/blood/src/aiunicult.cpp
2021-05-08 14:43:08 +02:00
Christoph Oelckers
23df336ebe - complete cleanup of sub_2A620, now renamed to actRadiusDamage. 2021-05-08 14:43:08 +02:00
Christoph Oelckers
6110ec5cfd - redid ConcussSprite. 2021-05-08 14:43:08 +02:00
Christoph Oelckers
c679f83f75 - make all games return to the main menu when the game is ended with F10.
Duke still went to the intro movies which was a bit problematic.
2021-05-04 11:32:09 +02:00
Christoph Oelckers
a303da37a9 - added a mapinfo dumper and used it to verify correctness of the data generated from game-native definitions.
Also simplified the levelnumber setup a bit.
2021-05-03 23:00:24 +02:00
Christoph Oelckers
0db8fc6163 - removed UNREFERENCED_PARAMETER macro.
Using C++ standard of not naming such parameters instead.
2021-05-03 19:10:53 +02:00
Christoph Oelckers
7d77b2315f - merged the few remaining contents of mmulti.h into d_net.h 2021-05-03 19:01:00 +02:00
Christoph Oelckers
d206a767b2 - added render workaround for CP07. 2021-05-03 17:48:35 +02:00
Christoph Oelckers
56fcf904b5 - Backend update from GZDoom. 2021-05-03 14:48:55 +02:00
Christoph Oelckers
30b1b046e4 - added an intermediate data structure to decouple the rendering from the immediate map data.
This will be needed for sectors consisting of disjoint parts and for providing some help with addressing rendering anomalies
2021-05-03 00:04:36 +02:00
Christoph Oelckers
8003ab6fa3 Merge branch 'scriptable_cutscenes' into newrenderer 2021-05-02 22:37:46 +02:00
Christoph Oelckers
a1381c0ff2 - fixed Blood cutscene setup to avoid dependency on the sound code initialization.
It now only stores the sound name or ID but not the internal index which is only looked up when needed.
2021-05-02 18:10:59 +02:00
Christoph Oelckers
e9385ed4e8 - adapted Blood to the new level progression features and simplified several parts, particularly the clumsy retrieval of the next level.
Some cheats in Duke will not work correctly with this commit!
2021-05-02 09:08:57 +02:00
Christoph Oelckers
93bfc35ad6 - use the volumes to find the starting maps for the menu and the clusters for the cutscenes. 2021-05-02 01:01:30 +02:00
Christoph Oelckers
825963661b - migrated volumes to the new storage. 2021-05-02 00:35:56 +02:00
Christoph Oelckers
f732d4ec64 - added MAPINFO parser, based on GZDoom's.
This isn't hooked up yet, but all necessary structures and fields have been added so that selected pieces can be tested.
2021-05-01 22:52:28 +02:00
Christoph Oelckers
e0ec0f24d0 - fixed Blood's HUD time display.
This somehow got lost.
2021-05-01 20:08:51 +02:00
Christoph Oelckers
aa148d602c - scriptified SW's 2D screens.
Compiles but not tested yet.
2021-04-30 20:08:35 +02:00
Christoph Oelckers
eaf5e1fba5 - Cutscene support in Blood.
Intro tested, rest to do.
2021-04-30 20:08:34 +02:00
Christoph Oelckers
869dbd70e5 - fixed the design by merging the episode start handler into ShowIntermission.
Tying the start-of-episode cutscene to the cluster does not really work because it gets triggered by all maps of the cluster.
All currently existing intro cutscenes are tied to the map anyway.
Also correcting transition movie name for RRRA E2L1.
2021-04-30 20:08:34 +02:00
Christoph Oelckers
0dc6980e5c - made episode intro cutscenes a game independent feature.
So far only defined for Duke E4 but all the logic is outside the game code now and can be universally handled.
2021-04-30 20:08:33 +02:00
Christoph Oelckers
1166b00af2 - switched intro movie playing over to the new system
Not tested yet.
2021-04-30 20:08:32 +02:00
Christoph Oelckers
e05f900315 - added the data structures to hold the cutscene data. 2021-04-30 20:08:31 +02:00
Christoph Oelckers
4ff2010bd1 - moved the entire screen job management to the script side.
This isn't hooked up yet and lots of code is commented out, the games won't start with this commit.
2021-04-30 20:08:30 +02:00
Christoph Oelckers
4a7430c8e4 - got rid of JobDesc. 2021-04-30 20:08:23 +02:00
Christoph Oelckers
71e5f9b70f - changed screen job list to work without per-job completion callbacks.
They made things more complex than necessary and do not translate well to scripting.
2021-04-30 20:08:22 +02:00
Christoph Oelckers
fb5e2fe0c0 - use flags instead of bools. 2021-04-30 20:08:22 +02:00
Mitchell Richters
93edeac791 - Clean-up of input functions.
* Remove unused `getincanglef()`.
* Remove unused `getincangleq16()`.
* In `PlayerHorizon` struct, clamp value when setting target in `__settarget()`, not each public `settarget()` overload.
* Rename `PlayerAngle` method `applylook()` to `applyinput()`.
* Rename `PlayerHorizon` method `sethorizon()` to `applyinput()`.
* In `PlayerHorizon::applylook()`, slightly clean return to centre code so it doesn't do math if already at 0.
* In `PlayerAngle::applylook()`, slightly clean rotscrnang/look_ang code so it doesn't do math if already at 0 and reposition where mouse input is applied so that if input is applied, the player never enters a spin.
* In `Duke3d::player_struct::apply_seasick()`, use `buildfang()` method instead of scaling float to BAM within function.
2021-04-21 20:41:04 +10:00
Christoph Oelckers
aaad546729 - palookup. 2021-04-20 20:21:51 +02:00
Mitchell Richters
d34070b8ae - gameinput.h: Remove precise bool from horizsumfrac(), look_anghalf() and looking_arc() added in a4895cb270.
* It looks terrible to have low precision math versions of look_anghalf and looking_arc since we always interpolate `look_ang` now, so lets just not.
2021-04-20 21:12:17 +10:00
Mitchell Richters
de06030ea0 - gameinput.cpp: Make sethorizon(), applylook() and calcviewpitch() class functions of PlayerHorizon and PlayerAngle where appropriate. 2021-04-19 20:50:10 +10:00
Mitchell Richters
171d541112 Merge branch 'master' into newrenderer 2021-04-18 10:05:10 +10:00
Christoph Oelckers
eb912604d2 - RFS compatibility with GDX: The outermost path component can be left out. 2021-04-17 23:59:10 +02:00
Christoph Oelckers
82194bbf6b Merge branch 'master' into newrenderer
# Conflicts:
#	source/games/exhumed/src/2d.cpp
2021-04-17 13:22:30 +02:00
Christoph Oelckers
d2c9b5979d - gave key 7 a proper spawn record using the blue outline as image.
A proper definition here is needed to allow dropping this item.
The original code had a picnum of -1 here which caused crashes.
2021-04-17 12:05:37 +02:00
Christoph Oelckers
0cdb7a53ce - more char removal - mostly weapon.cpp 2021-04-17 10:34:12 +02:00