Commit Graph

8104 Commits

Author SHA1 Message Date
Mitchell Richters 6f08eb2292 - Blood: Replace all numerical constants for player's `newWeapon` with enum values. 2021-08-18 20:02:22 +10:00
Mitchell Richters ba94614078 - Blood: Replace all numerical constants for player's `curWeapon` with enum values. 2021-08-18 20:02:20 +10:00
Mitchell Richters d939602875 - Blood: Define enum values for weapon numbers. Not in use yet. 2021-08-18 20:02:14 +10:00
Mitchell Richters 6fec5d582e - Blood: Define enum values for QAVs. Not in use yet. 2021-08-18 20:01:34 +10:00
Mitchell Richters db5aa4ba17 - Blood: Backport voodoo doll fix from BloodGDX. 2021-08-18 20:00:52 +10:00
Mitchell Richters b01cef7f15 - Blood: Remove `lastframetic` hack from `QAV::Draw()` added in 99508e6f15 since we now use proper timing code. 2021-08-18 20:00:49 +10:00
Mitchell Richters 24fbaa527c - Blood: Re-time weapon and scene QAV code based on reworked timer and QAV struct code. 2021-08-18 20:00:44 +10:00
Mitchell Richters ab502ebc66 - Blood: Ensure looped QAVs interpolate using last frame in the array. 2021-08-18 20:00:36 +10:00
Mitchell Richters c75778c08d - Blood: Re-time menu's blood dripping based on reworked timer and QAV struct code. 2021-08-18 20:00:32 +10:00
Mitchell Richters 502b76af70 - Blood: Parse the values of the QAV files instead of casting the binary data so we can extend the struct. 2021-08-18 20:00:22 +10:00
Christoph Oelckers adf9747e5b - Blood: removed redundant STAT_Update call in StartLevel.
This was killing the level times for the 'printstats' display.
2021-08-17 23:44:46 +02:00
carnivoroussociety a29303cde5 Don't trigger fall scream after player has died 2021-08-16 09:05:51 +02:00
carnivoroussociety 7ac662e0c8 Apply burning bypass to correct sprite type 2021-08-15 12:24:41 +02:00
carnivoroussociety bd98096527 Fix burning Caleb's state 2021-08-15 12:24:41 +02:00
carnivoroussociety 52025fce68 Fixed burning Caleb state 2021-08-15 12:24:41 +02:00
carnivoroussociety cd88bb1a67 Fixed burning cultists switching type in water
Fixed glitched burning enemy state
Fixed burning Caleb using innocent burning sprite
2021-08-15 12:24:41 +02:00
Christoph Oelckers 38c9d3f702 - Exhumed: fixed crash when ending the game. 2021-08-14 10:40:14 +02:00
Christoph Oelckers a5e3a85c98 - changed palette lookup to consider the remapping of color 0 to 255.
This is to ensure that black maps to the proper index, even if there's duplicates.
2021-08-14 10:26:04 +02:00
Christoph Oelckers bad2c2e55f - backend update from GZDoom
* replacement of 'long' in string code.
* palette removal in V_GetColor.
* fixes to DShape2D buffer management.
2021-08-14 10:04:45 +02:00
Christoph Oelckers c4c9f4acbe - call ColorMatcher.Pick instead of BestColor when remapping a voxel.
This was the only place in the engine using BestColor directly with the game palette.
2021-08-14 09:49:03 +02:00
Christoph Oelckers 5d3f7947bf - avoid calling the node builder to triangulate degenerate sectors.
This tends to crash.
2021-08-14 09:48:05 +02:00
carnivoroussociety c3d03f21da Cleaned underwater next/prev weapon fix 2021-08-14 07:59:14 +02:00
carnivoroussociety 1957fc53be Tweaked next/prev weapon behavior underwater 2021-08-14 07:59:14 +02:00
Christoph Oelckers 5aa27bad3b - flag SW's cutscenes as 'boss death only'. 2021-08-13 22:25:13 +02:00
Christoph Oelckers d5c9768414 - append an empty line to thr RFS file to be parsed.
Looks like the parser needs the last line to be properly terminated.
2021-08-13 21:44:23 +02:00
carnivoroussociety 8765b583f0 Fix spray -> tnt -> spray animation bug 2021-08-12 15:15:35 +02:00
carnivoroussociety 715bca4d53 input.newWeapon -> newWeapon 2021-08-12 13:59:44 +02:00
carnivoroussociety 1a344fe09b Fix ignited spray/TNT issue when going underwater 2021-08-12 13:59:44 +02:00
Christoph Oelckers 23b8707fc2 - added means to define resource IDs in all container formats allowing long file names.
To define these, construct a file name like "basename.{resourceid}.extension", e.g. blaster.{65}.qav will define 'blaster.qav' with a resource ID of 65.
2021-08-11 12:04:53 +02:00
Christoph Oelckers b2f7eb5b4f - fixed: Raze did not have gl_lights yet, but recent additions need this CVAR.
Put it in v_video.cpp so that it is in a common backend file.
2021-08-11 12:02:56 +02:00
Christoph Oelckers 8106d788f6 - backend update from GZDoom.
Fixes:
* do not strip 'filter' as a directory prefix.
* proper spacing for scaled sheet fonts.
* fix of transparent color in BMF fonts.
* fix restart button on error pane in Windows.
* do not skip over empty 'if's with a condition that would error out.
2021-08-11 10:28:21 +02:00
Mitchell Richters 4a70f6efd0 - Allow ticrate to be specified to timer code, while still defaulting to `GameTicRate`. Move out `I_GetBuildTime()` from common code to `gamefuncs.h` as part of this.
* Allow specification of floating point ticrates as it's possible Blood's QAVs could have a fractional ticrate.
2021-08-05 14:52:55 +10:00
Mitchell Richters 0d9afc1aaf - Extend menu's `ImageScroller` ZScript class with `mAnimated` and use with Blood for the help and credits menu. 2021-08-05 14:52:51 +10:00
Mitchell Richters 1ed1222e10 - Extend menu's `ListMenu` ZScript class with `mAnimated` already natively available, and use with Blood where `BloodDripDrawer` is defined.
* Finalises the interpolated blood dripping code changes from 9884d5f396.
2021-08-04 10:31:45 +10:00
Christoph Oelckers 888f8888bb - backported some fixes in the common backend from GZDoom 2021-08-03 13:00:09 +02:00
Mitchell Richters 17b2154e9a - Blood: Expose legacy 1.0 weapon handling game option as a CVAR. 2021-08-03 00:47:05 +10:00
alexey.lysiuk 7522a3e359 - added detection of Steam's Powerslave on macOS 2021-07-31 12:51:21 +03:00
alexey.lysiuk 33167b2a0d - fixed detection of Steam's Duke3D on macOS 2021-07-31 12:47:10 +03:00
Mitchell Richters a9b75e7e7d - Blood: Put QAV interpolation code behind a CVAR for now until some final minor issues are resolved.
* Thanks to Dzierzan for testing and the reports.
2021-07-31 10:15:51 +10:00
Mitchell Richters f6c7ed3984 - Blood: Restore originally intended `isRunning` code that never worked behind two CVARs to offer an alternative playing experience.
* `cl_bloodvanillarun` enables/disables the `isRunning` code that affects AI, bobbing and swaying.
* `cl_bloodvanillabobbing` enables/disables the `isRunning` code that affects bobbing and swaying, allowing only the `isRunning` AI changes.
2021-07-31 10:14:56 +10:00
Mitchell Richters 9884d5f396 - Blood: Perform interpolation of menu's blood dripping.
* All supporting code is here, is tested and works, need to determine best how to flag the menu as "Animated" to uncap the frame-rate.
2021-07-31 10:05:25 +10:00
Mitchell Richters a67c126129 - Blood: Extend 99508e6f15 to find picnum of previous frame in all previous frame's tile indices if the current frame's tile index doesn't match.
* Allows more interpolation magic.
* Revealed an issue with `interpolatedanglef()` that was undetected. Removed in place of a binangle version returned as floating point build.
2021-07-29 19:23:00 +10:00
Mitchell Richters 019922dcf1 - Fix constexpr issue with `interpolatedanglef()` since `fmod()` isn't available as constexpr. 2021-07-29 18:38:07 +10:00
Mitchell Richters 32215ba570 - SW: Tidy some extra panel coordinate math that was missed in 4d4946fb6b. 2021-07-29 17:53:57 +10:00
Mitchell Richters 99508e6f15 - Blood: Perform interpolation between frames for each tile coordinate when there is more than one frame and the picnum between frames match. 2021-07-29 17:39:22 +10:00
Christoph Oelckers bd23ea144c - validate 'nextsector' fields on walls.
Build utterly relied on the map having these right and put the entire responsibility on the mapper.
There's maps, however which have bad values here causing either render glitches or crashes so these bad indices need to be fixed.
Two good examples where this causes problems are RR's E3L1 and the second map of SW's Last Warrior mod where this even glitches in Polymost.
2021-07-27 22:12:29 +02:00
Christoph Oelckers 9a8ee00aec - set currentLevel before calling engineLoadBoard.
This is needed if the compatibility patcher needs to alter mapinfo data.
2021-07-27 22:12:29 +02:00
NoOneBlood a40d036623 Fix max players range check for kModernPlayerControl
Add power up control for kModernPlayerControl
2021-07-27 08:05:31 +10:00
Mitchell Richters 1fa0863a52 - Duke: Amend af9f2f3eb6 to not reset the skill if incoming skill is -1; 2021-07-26 19:41:17 +10:00
nukeykt adb9547ba9 Blood: fix impact sprite OOB issue 2021-07-26 19:19:41 +10:00
nukeykt ced8a83331 Blood: fix potential view sprite overflows 2021-07-26 16:06:56 +10:00
nukeykt 557cd7e734 Blood: fix view sprites overflow in ROR code 2021-07-26 16:00:13 +10:00
nukeykt 39547e2df5 Blood: fix OOB issue in aiPatrolSetMarker 2021-07-26 15:55:13 +10:00
Christoph Oelckers 1fde9f2173 - workaround to allow playing SW's Last Warrior mod in one go.
This disables the boss's death in L4 ending the game and just advances to the next level.
This seems to be the intent with this mod as the second episode starting at L5 is not defined and the first episode's subtitle advertises the full game.
2021-07-26 00:58:00 +02:00
Christoph Oelckers 1a5a2aba2b - Blood: fixed path validation for cutscene files. 2021-07-25 17:27:52 +02:00
Christoph Oelckers a12dfbe1d8 - fixed bad operator grouping in cheat code. 2021-07-25 17:17:29 +02:00
Christoph Oelckers 5c5799c21f - quote argument for sending cheats from the chat editor. 2021-07-25 12:48:27 +02:00
Christoph Oelckers c69efe5817 - fix crash issue with empty VOCs.
Pointer to empty data causes undefined behavior if length is 0.
2021-07-25 12:43:42 +02:00
Christoph Oelckers dfb18ef9a9 - Duke/RR: Call Bowling lane reset code only when playing RR.
This may alter some tile references which will cause problems with hires replacements in Duke .
2021-07-25 12:43:03 +02:00
Christoph Oelckers c51c6fa524 - adapted the Zip root folder eliminator to deal with archives that do not add proper folder records to their central directory. 2021-07-25 12:18:53 +02:00
Christoph Oelckers 3864dcfc17 - adapted cheat input handler to treat spaces as '0' when entering parts of numeric fields. 2021-07-25 11:59:12 +02:00
Christoph Oelckers fa586d6d7c - Blood: fixed parser for 'mario' cheat to treat a leading space for the level number as 0. 2021-07-25 11:53:20 +02:00
Christoph Oelckers b23db149e3 - use snprintf in condError.
While sprintf is generally problematic, it is particularly dangerous here where it is impossible to estimate the length of the messages.
2021-07-25 11:50:23 +02:00
Mitchell Richters 9fad44bab2 - Blood: Replace use of non-standard `strupr()` from 754554a493 with an FString object. 2021-07-25 19:44:07 +10:00
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
sirlemonhead e4fb67bc25 Rides Again: Possible array index by -1 in Proj_DoHitscan(). Added check to prevent this. 2021-07-25 19:37:02 +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 4298399e00 - Build: Change `MAXSPRITESONSCREEN` from constant of 2560 to 1/4 of MAXSPRITES.
* Mods like Blood's Eviction are pushing these limits hard. Bumping the onscreen limit resolved recurring crash on `sstation.map` with no apparent ill-effects.
2021-07-25 15:38:51 +10: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 ef05eec531 - Change a68d5aae70 to not do a leading zero, but add an extra space of `frameDelay` less than 10.
* Thanks, Graf. It's better :)
2021-07-24 17:51:14 +10:00
Christoph Oelckers 8e8b3a32fe - fixed initialization pf upscale state properly.
This avoids indirectly calling FlushAll during startup.
2021-07-24 09:10:21 +02:00
Christoph Oelckers ccce75667e Revert "- Remove `CVAR_NOINITCALL` bit from `gl_texture_hqresize*` CVARs."
This reverts commit e03d532670.
2021-07-24 09:08:29 +02:00
Mitchell Richters e03d532670 - Remove `CVAR_NOINITCALL` bit from `gl_texture_hqresize*` CVARs.
* Fixes https://forum.zdoom.org/viewtopic.php?f=340&t=72466.
2021-07-24 15:58:05 +10:00
Mitchell Richters a68d5aae70 - Add leading zero to `statFPS()` output (`vid_fps`) so that the text doesn't bounce continually when alternating between 10 ms and <10 ms. 2021-07-24 15:40:47 +10:00
alexey.lysiuk 56d313f08d - use SDL Vulkan window flag directly 2021-07-21 17:37:52 +03:00
Vanfanel 2aea69b48a Pass the missing fullscreen flag when creating a Vukan window. 2021-07-21 14:41:28 +03:00
Mitchell Richters d9a7465c08 - SW: Remove `gi->FreeGameData()` from game as its inside code wasn't freeing game data but level data already freed in `gi->FreeLevelData()`.
* This was causing `GameMain()` to try to call `TerminateLevel()` after tile data had been freed, causing a hard stop.
* Fixes #464.
2021-07-20 20:11:29 +10:00
Mitchell Richters c5f63b95e5 - Capitalise `CPART07.AR_` and `CPART15.AR_` in `ProcessOptions()`. The original files are in capitals and this is important as POSIX systems are case-sensitive. We can't cater towards every use-case but this should cover most bases.
* Fixes #308.
2021-07-20 19:06:45 +10:00
Mitchell Richters af9f2f3eb6 - Duke: Ensure `gi->NextLevel()` sets the skill level upon invocation. 2021-07-20 18:55:16 +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 4ac1376b9f - Make naming of multiplayer episode exclusion stuff from d0e6a7ea29 more generic and exclude invalid episodes from "Duke It Out in DC", "Duke Nuclear Winter" and "Duke Caribbean". 2021-07-19 12:24:47 +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 ca65c4c9da - Allow ticker to lock input to player's angle and horizon without having to force use of synchronised input. 2021-07-18 19:25:41 +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 bcff74f5e4 Revert "- Duke: Restore a little bit of original code to make comparisons between us and the source easier."
This reverts commit 7607190dad.

* Not good in hindsight... We need the actual value from the backend to ensure we can match up against `WeaponSel_Next`/`WeaponSel_Prev`/`WeaponSel_Alt` as required.
2021-07-17 22:42:58 +10:00
Christoph Oelckers 4ee93de36c - added 'endofgame' CCMD.
Not really good yet, but it does what's needed, i.e. write out the statistics for the current session.
2021-07-17 09:42:59 +02:00
Mitchell Richters 2a8e636066 - Exhumed: Extend 7b8dcde5d2 by showing the M60's clip/magazine amount available when `cl_showmagamt 1` is set. 2021-07-17 14:57:43 +10:00
Mitchell Richters 6940384625 - Exhumed: Move pistol clip/magazine recalculation code that was added in 593bbe10ef from `FillWeapons()` to `CheckClip()`. 2021-07-17 14:57:00 +10:00
Mitchell Richters 052429f350 - Exhumed: Change M60's clip/magazine capacity from 99 to 100 to better match the max ammo capacity of the weapon. This does not increase the player's available ammunition. 2021-07-17 14:56:05 +10:00
Mitchell Richters f9b75b1aa9 - Exhumed: Make `FillWeapons()` fill the ammo count to the maximum allowed by the game for all weapons (300). 2021-07-17 14:54:36 +10:00
Mitchell Richters 7607190dad - Duke: Restore a little bit of original code to make comparisons between us and the source easier. 2021-07-17 12:12:36 +10:00
Mitchell Richters ec20f66eda - Duke/RR: Always ensure player's `wantweaponfire` is reset to `-1` after switching weapon.
* Fixes #333.
2021-07-17 12:12:12 +10:00
Mitchell Richters 0bb0896985 - Duke: Fix BOSS2 (Cycloid Emperor) killing himself issue by removing some lines left behind from a2e3bb5725.
* Fixes #455.
2021-07-17 10:56:21 +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 d77e143ee8 - allow palette emulation for indexed hightiles. 2021-07-17 07:40:13 +10:00
Christoph Oelckers 3e76f71f02 - support for indexed hightiles. 2021-07-17 07:40:05 +10:00
Mitchell Richters d0e6a7ea29 - Allow CON-based games to have multiplayer episodes filtered from menu.
* Fixes #461.
* Fixes #462.
2021-07-16 20:55:29 +02:00
Mitchell Richters 593bbe10ef - Exhumed: Ensure `FillWeapons()` recalculates the pistol clip amount after filling.
* When cheating, this wasn't done which lead to the clip having 6 rounds when via modulo it should have only had 3.
2021-07-17 00:11:37 +10:00
Mitchell Richters 7b8dcde5d2 - Exhumed: Make use of `cl_showmagamt`.
* Fixes #463.
2021-07-16 23:52:56 +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 a614f741fd - relaxed consistency checks for VOC files.
Rampage Warrior contains a few sounds that failed validation so this check does not exist in the original 3D Realms sound code.
2021-07-14 23:22:41 +02: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
Christoph Oelckers e3737d3330 - fixed texture lookup for hightile lookup.
Not all commands had the proper flags to also look in the root folder.
2021-07-13 08:38:24 +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
Mitchell Richters 5441272bec - SW: Create inline function `pspPresentRetractScale()` to scale the rate at which weapons present and retract based on the current tile's height vs. the original asset's height.
* Reported to me by @Phredreeke, who had it reported to him from someone else.
* The sword in the widescreen assets pack we load by default has a height of 216px vs 136px of the default tile.
* Because the game presents and retracts weapons at a set rate, the time it took to swap between the sword and other weapons took ~1.58x longer than the original assets.
* This speeds up the present/retract rate based on the loaded asset's height to ensure the weapon switches in the same elapsed time.
* This may be extended to other weapons if required but the sword is the only one I'm aware of that has more height.
* Confirmed no matter what motion the sword was performing, `psp->picndx` was always 2080 so we shouldn't need a hashtable or anything like this.
2021-07-11 19:22:59 +10:00
Christoph Oelckers 8a8379f5fc - Backend update from GZDoom. 2021-07-11 09:50:36 +02:00
alexey.lysiuk 577c6cb374 - fixed crash when parsing malformed .def file
This fixes #439
2021-07-11 10:16:26 +03:00
Christoph Oelckers a98507f737 - fixed endless loop in replay gain analyzer when getting passed music with an unhandled sample rate. 2021-07-11 09:11:59 +02:00
Christoph Oelckers 1b45c83d59 - SW: fixed countermeasure for empty lower skills 2021-07-11 08:24:10 +02:00
Mitchell Richters 3e30869aeb - Remove some remains of Redneck Deer Huntin'. 2021-07-11 12:44:31 +10:00
Mitchell Richters 32283037ed - Use `isWW2GI()` in more places. 2021-07-11 12:42:33 +10:00
Mitchell Richters fe652c9348 - Use `isNamWW2GI()` in more places. 2021-07-11 12:41:08 +10:00
Mitchell Richters aa13b50504 - Use `isRR()` in more places. 2021-07-11 12:40:46 +10:00
Mitchell Richters 6894be4ad1 - Use the new `isSWALL()` wrapper everywhere. 2021-07-11 12:40:01 +10:00
Mitchell Richters ffba10a7c5 - SW: Set default skill level to match original release and what the manual says is default. 2021-07-11 12:08:12 +10:00
Mitchell Richters 172b77b9e7 - SW: Ensure `PANEL_SPRITEstruct`'s `ox`/`oy` values are in the save data. 2021-07-11 12:05:53 +10:00
Mitchell Richters 9d64779da0 - SW: Replace all uses of `NULL` with `nullptr`. 2021-07-10 22:25:18 +10:00
Mitchell Richters e3f2d76378 - SW: Declare and initialise variables in `pWeaponBob()` vs declaring and initialising later on to reduce warnings about variables being uninitialised. 2021-07-10 22:16:51 +10:00
Mitchell Richters b5b9452adb - Optimise `fFindDistance2D()` to multiply by inverse rather than divide by a constant. 2021-07-10 22:08:48 +10:00
Mitchell Richters 5d7938c24e - SW: Rename `cl_smoothsway` to `cl_swsmoothsway` and enable by default 2021-07-10 22:07:05 +10:00
Mitchell Richters 55cef642b6 - SW: Factor out bob coordinate backups. 2021-07-10 22:01:42 +10:00
Mitchell Richters 9575f8a3d3 - SW: Factor out panel interpolation backups; 2021-07-10 22:01:40 +10:00
Mitchell Richters 4d4946fb6b - SW: Factor out repeated panel coordinate math into inline functions. 2021-07-10 22:01:37 +10:00
Mitchell Richters 27f1e487a2 - SW: Remove fixed-point math from panel x/y coordinate updating. 2021-07-10 22:01:35 +10:00
Dino Bollinger 8dd0f947f7 Remove useless code introduced in bad17f29 2021-07-07 21:31:32 +02:00
Christoph Oelckers 62a5a720e8 - Check for maps with bad setup of their wall lists.
Lo Wang In Time's map 11 does not include wall 0 into its sector, which caused crashes when trying to triangulate this sector.
2021-07-06 10:29:24 +02:00
Christoph Oelckers 64fc0b66b2 - SW: added countermeasure to re-enable lower skills on mods not implementing them.
Aside from spawning the enemies from the lowest supported skill it will also reduce the threat level by reducing health of some enemies or by replacing the harder Ninja variants with the base type.
2021-07-06 10:26:43 +02:00
Christoph Oelckers e5cb1976d3 - disable texture name truncation for textures/ directory.
Unlike Doom, a similar limit does not exist here and must not be enforced. Any texture from this folder needs to be usable by its full name without extension to be able to replace named tiles.
2021-07-05 22:39:24 +02:00
Mitchell Richters 1dbf34fe56 - Repair some potential issues from 1354d52c05 that might be causing issues with #455. 2021-07-04 21:06:13 +10:00
Christoph Oelckers 5d67987fe1 - don't attempt to decode animation frames at offsets beyond the end of the current page.
Copied from EDuke32.
2021-07-02 20:33:53 +02:00
Mitchell Richters 0724b3326c - SW: Promote `PANEL_SPRITEstruct`'s `xorig`/`yorig` values from int to double to match `x`/`ox` and `y`/`oy` respectively.
* Makes bobbing a touch smoother.
* Removes 47 explicit casts.
2021-06-27 22:40:33 +10:00
Christoph Oelckers 5e96e955f3 - add hitscan only autoaim for SW.
# Conflicts:
#	source/games/sw/src/weapon.cpp
2021-06-26 12:22:10 +02:00
Christoph Oelckers 2af2d29084 - add hitscan only autoaim for SW. 2021-06-26 12:18:27 +02:00
Christoph Oelckers e9b2bf9e4e - shortened the message for not found game data and restrict to non-Windows systems. 2021-06-26 12:10:46 +02:00
Hugo Locurcio a10018bc36 Display game data path when no game data files are found
This helps users find the location where they should place
game data files.
2021-06-26 12:06:35 +02: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 acadd716f8 - For Unix systems, ensure that the root of the player's .config directory is scanned for content, not just subdirectories.
* Fixes #430.
2021-06-24 20:47:14 +10:00
Mitchell Richters b015bc0685 - Duke (RRRA): Fix alt weapon slot for `CHICKEN_WEAPON` and `CROSSBOW_WEAPON`.
* Fixes #440.
2021-06-24 18:56:12 +10:00
Mitchell Richters 39983f8144 - Fix maps loaded from the command line starting with corrupted sectors.
* Starting game same way `map` CCMD does it for now.
2021-06-24 18:50:10 +10:00
Mitchell Richters 9645009b28 - Fix `-map` command-line argument not working.
* Fixes #441.
2021-06-24 18:49:26 +10:00
Mitchell Richters 6018213c71 - Blood: Don't parse BloodBathOnly levels in the INI loader.
* Fixes #442.
2021-06-24 18:21:06 +10:00
Emile Belanger b6e76337e0 Fix so small font is displayed correctly 2021-06-20 16:34:26 +02:00
Christoph Oelckers 0069af02e7 - use a slightly higher depth bias for translucent elements.
These can otherwise cause z-fighting when being used with non-translucent floor and wall sprites.
2021-06-13 09:39:07 +02:00
Christoph Oelckers 5556756d43 - map fix for Hickston Swamp (RR mod) E1L3:
Wall sprite is placed in the wrong sector which makes the new renderer's far stricter checks to reduce sprite flicker fail to position it correctly.
2021-06-13 09:32:30 +02:00
Christoph Oelckers 20ca676539 - RR: fixed crash in function that handles acts of mass destruction (like blowing up gas stations.)
With bad setups 'spr' could be left uninitialized. This crashed E1L1 of 'The Hickston Swamp' mod.
2021-06-11 23:20:50 +02:00
Christoph Oelckers 15635ec7c8 - fixed crash when trying to triangulate broken sectors.
In these cases it is possible that the wall index may go below 0.
2021-06-11 23:18:46 +02:00
Christoph Oelckers d270d75d74 - re-added line of code that got lost during refactoring. 2021-06-10 00:14:04 +02:00
Christoph Oelckers 4b35a30de5 - RR: fixed the bowling lane lights.
Tiles had not been made writable.
Also renamed a few bowling related things.
2021-06-09 23:53:05 +02:00
Christoph Oelckers 1cea743536 - restrict lookup of engine/engine.def to the main game files.
Mods should not use this to load their data.
2021-06-09 08:38:40 +02:00
Christoph Oelckers 9d36e61d3f - depth bias fixes. 2021-06-09 00:47:13 +02:00
Christoph Oelckers 5b38343407 - fixed sprite exclusion logic in getzrange.
This was using the wrong flag.
2021-06-09 00:31:54 +02:00
Christoph Oelckers a32489be31 - wall sprite positioning tweaks.
Turns out that a distance of one Build unit from a wall alone is not enough to render them glitch-free, some depth bias is still needed.
2021-06-09 00:31:54 +02:00
Christoph Oelckers 89344a6023 - Exhumed: precache all frames of tile animations. 2021-06-02 21:31:38 +02: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 f96521a7f4 - fixed: Floor sprites must set their view orientation.
The translucent element sorter needs this to operate properly.
2021-06-02 20:32:35 +02:00
Christoph Oelckers 3c5ef9c8e6 - properly render geometry that's fully shrouded in fog. 2021-06-01 21:48:39 +02:00
Christoph Oelckers dc846dcd49 - Duke: avoid clipping against self when executing script logic for floor sprites.
A good place to see the result is a kitchen knife in E4L2 that went missing due to the faulty check.
2021-06-01 21:21:39 +02:00
Christoph Oelckers f0d2aef9d9 - fixed hires replacements for colorized font characters. 2021-06-01 11:29:39 +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 1636ddc00e - set the main resource file's index in the file system.
Some checks need this.
2021-05-31 21:20:32 +02:00
Christoph Oelckers 25e57763af - implemented substitution for incomplete fonts. 2021-05-31 21:20:32 +02:00
Christoph Oelckers 9c60ab791b - implemented all needed font overrides for localization. 2021-05-31 21:20:31 +02:00
Christoph Oelckers d174b61c3c - allow switching between the two Duke BigFonts and fix Y in Duke's BigFont13. 2021-05-31 21:20:31 +02:00
Christoph Oelckers 90bcba302e - layout adjustments for localized texts.
In particular SW's main menu was far too tightly spaced, allowing no room for accents.
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 cd56fd66d2 - RR: fixed advanced notify display's font size.
At some point the scale multiplier must have gotten lost, which with the twice as large fonts in this game resulted in text being too large.
2021-05-31 21:20:28 +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 d7e1707b37 - removed the Doom specific font init code.
This has no use in Raze and only got in the way by enforcing unwanted defaults.
2021-05-31 21:20:28 +02:00
Christoph Oelckers a7921e4c01 - use the same formula as Duke to offset SW's shadows in Polymost. 2021-05-29 14:04:57 +02:00
Christoph Oelckers 1ea09cd3d2 - removed bogus assert in SW's track setup.
One of the stock maps (WT $airport map.) triggers this assert so it cannot remain.
2021-05-29 13:22:14 +02:00
Christoph Oelckers 2b8a80c6ce - added the out-of-bounds vertex handler to the secondary triangulator as well.
If SW does this, triangulation must not be attempted as it will inevitably fail.
2021-05-29 13:19:44 +02:00
Christoph Oelckers db21313c96 - add some hackery to deal with WT's bosses.
This was the result of some gross change to the spawning code which suddenly changed the rules about minibosses.
To reduce the impact, it is only enabled for the "Alien World Order" maps.
2021-05-29 13:12:50 +02:00
Christoph Oelckers 2e9732ce79 - fixed new renderer's use of fog on skies: The palette value from the wall was used instead of the one from the sky plane. 2021-05-29 12:09:16 +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