Commit graph

199 commits

Author SHA1 Message Date
nashmuhandes
aeaa7f21c7 Add some new optional parameters to A_SprayDecal:
- useBloodColor: when true, the sprayed decal will be shaded to match the calling actor's blood color.
- decalColor: when defined, the sprayed decal will be shaded to the specified color. Note that this will take precedence over useBloodColor. It is recommended to use only one parameter.

Note that due to how decals work in the engine, the "decalColor" parameter will only properly colorize the decal if the image is grayscale.
2021-05-22 10:20:52 -04:00
Cacodemon345
9a860ae445 Account for portals when spawning missiles in A_FireBullets/A_CustomBulletAttack
This also gives the caller the information whether the LineAttack
hitscan passed through a portal regardless of whether it actually hit an
actor or not as a nice bonus.
2021-05-20 19:42:29 +02:00
Christoph Oelckers
9df70cd0df - change switch checking back to vanilla order. 2021-05-19 19:25:32 +02:00
Christoph Oelckers
97b8c0ccfb Revert "- fixed some uses of postincre,ment/decrements on narrow types."
This reverts commit 668f8f2cf6.

Revert "- added a proper error message when '--' or '++' gets used on 8 or 16 bit values."

This reverts commit a94f5dd1b3.

None of this was necessary - the triggered assert was bogus and had to be removed.
2021-05-17 18:13:30 +02:00
Christoph Oelckers
668f8f2cf6 - fixed some uses of postincre,ment/decrements on narrow types.
THe VM has no opcode for this, all these places produced code with undefined behavior.
2021-05-17 12:42:22 +02:00
Christoph Oelckers
5077973012 - fixed A_CheckTerrain's check for instant death sectors.
This was still checking the sector special even though this had been reactored 5 years ago.
2021-05-17 12:00:16 +02:00
nashmuhandes
5446a1a355 Add sprite shadows for the software renderer 2021-04-24 22:40:54 -04:00
James Le Cuirot
90381c4ad6 Allow ACS SpawnDecal zoffset and distance args to be fixed point
The wiki currently says they should be fixed point but the code
currently treats them as integers. Given that they are placed with
double precision horizontally, it is odd that the same precision
cannot be applied vertically. Changing this would break existing maps
so add two flags to support both types.
2021-04-24 14:37:20 -04:00
Nikolay Ambartsumov
cf30982ddf Add Polyobj_StopSound special 2021-04-24 15:31:04 -03:00
alexey.lysiuk
de0361842f - removed useless initializations in binds printing ACS code
variables are initialized by FKeyBindings::GetKeysForCommand() anyway
2021-04-19 18:05:52 +03:00
sgrunt
0c776e3acd Move the modified behaviour to a new "resetvel" parameter 2021-03-19 20:12:20 +01:00
sgrunt
3873ad6151 Fix behaviour of VelIntercept's oldvel parameter
Previously Vel would be reset only if the target was moving. This change
ensures that Vel is always reset, as seems to be the intent of the
oldvel parameter.
2021-03-19 20:12:20 +01:00
drfrag
cdbae4b5d9 - Fixed crash with voodoo dolls in MP after players quit the game. 2021-03-19 20:10:39 +01:00
nashmuhandes
b28e5cb917 Add GetCharacterName() to retrieve an NPC's name as defined in its dialogue script, if it exists. Otherwise it will just return the same output as GetTag(). 2021-03-15 21:31:16 +01:00
drfrag
12aa7a8ff6 - Fix crash with wind effect on special water sectors. 2021-03-10 13:37:57 +01:00
nashmuhandes
b7bbfd4efd Add SetSubtitleNumber(int num, str sound) ACS function. Works exactly like its ZScript counterpart. The activator of the script must be a player. 2021-03-09 09:37:10 +01:00
Timothy Quinn
fa2228d523 - Line_QuickPortal must check the partner line's special. 2021-03-05 16:40:12 +01:00
Timothy Quinn
7e74d1c4a1 - ported Eternity's Line_QuickPortal 2021-03-04 22:54:36 +01:00
Cacodemon345
b5f80bb69c Hitscan attacks can now hit SPECTRAL actors if the hitscan puff has SPECTRAL flag set 2021-02-02 03:33:23 -05:00
Kevin Caccamo
26eac560dd Fix ScriptCall missing default arguments
There was one VMCall in DLevelScript::ScriptCall that didn't use default arguments. This was causing assertion failures in the GZDoom debug build when trying to run Wolfenstein: Blade of Agony on any map that wasn't TITLEMAP, because ACSTools.FindInventoryClass returns a boolean, and it has a default argument.
2021-01-16 17:11:39 +01:00
Marisa Kirisame
44b4359ba5 Add alternate "Full" mode for PowerIronFeet that prevents leaky damage. 2021-01-16 17:09:57 +01:00
drfrag
24cf27e9e2 - Fix ALWAYSFAST actor flag. 2021-01-13 20:13:52 +01:00
Rachael Alexanderson
476e59fbab - add sv_instantreaction dmflag 2021-01-13 07:04:18 -05:00
drfrag
4ff72e937f - Fixed: Monster reaction time was always zero with fast monsters and not just on nightmare. 2021-01-13 06:30:13 -05:00
Rachael Alexanderson
e6c71c2f0c - reimplement fix #1267 from @drfrag666 differently - fix damagecount overflow 2021-01-05 11:09:19 -05:00
Christoph Oelckers
e19b1b2ee7 - fixed: IceGuyFX2 set its owner too late. 2020-11-25 07:37:17 +01:00
Christoph Oelckers
58d8ce1a4f - cleanup of m_fixed.h.
With fixed point math barely being used anywhere with the vast majority of calls in the software voxel drawer it makes sense to reduce the function interface to the minimum possible and move the shift value into the function call as an argument.
2020-11-22 10:25:04 +01:00
Player701
7ff79546e4 - Fixed: If AbsorbDamage resulted in an item having been destroyed, the following items in the inventory chain were not processed. 2020-11-17 12:54:05 +01:00
Chronos Ouroboros
75c791ecff Fixed the previous commit not accounting for mods that already fixed this internally. 2020-11-14 14:53:43 -03:00
Chronos Ouroboros
0aefc61f86 Fixed weapon bob jittering. 2020-11-14 14:34:09 -03:00
alexey.lysiuk
381d2bcd73 - do not keep impact decal that fails to stick to a wall
Such invisible decals were not taken into account when calculating their total number
Changing cl_maxdecals CVAR may not work as expected because of limit counter's inconsistent value

https://forum.zdoom.org/viewtopic.php?t=70457
2020-11-01 11:36:32 +01:00
alexey.lysiuk
b8b93e0dd8 - fixed most of implicit fallthrough compilation warnings
src/common/console/c_console.cpp:1032:4: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/common/console/c_console.cpp:958:4: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/common/scripting/backend/codegen.cpp:2969:4: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/common/scripting/frontend/zcc_compile.cpp:2656:4: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/common/scripting/frontend/zcc_compile.cpp:521:5: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/common/scripting/jit/jit_math.cpp:966:19: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/d_main.cpp:1538:3: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/d_main.cpp:1549:3: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/d_main.cpp:3820:3: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/gameconfigfile.cpp:544:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/gamedata/p_xlat.cpp:193:11: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/gamedata/p_xlat.cpp:200:11: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/gamedata/p_xlat.cpp:210:11: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/g_game.cpp:1145:20: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/maploader/maploader.cpp:2142:3: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/menu/doommenu.cpp:159:28: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/m_cheat.cpp:109:3: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/playsim/mapthinkers/a_ceiling.cpp:254:24: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/playsim/mapthinkers/a_floor.cpp:322:18: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/playsim/mapthinkers/a_floor.cpp:330:18: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/playsim/mapthinkers/a_floor.cpp:344:10: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/playsim/mapthinkers/a_plats.cpp:129:47: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/playsim/mapthinkers/a_plats.cpp:284:8: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/playsim/p_acs.cpp:6302:18: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/playsim/p_acs.cpp:8111:16: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/playsim/p_spec.cpp:344:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/scripting/decorate/thingdef_parse.cpp:1343:9: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/scripting/zscript/zcc_compile_doom.cpp:298:12: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/wi_stuff.cpp:463:14: warning: this statement may fall through [-Wimplicit-fallthrough=]
2020-10-31 13:37:51 +02:00
alexey.lysiuk
112640e6c0 - fixed compilation warnings reported by GCC and Clang
src/common/menu/menudef.cpp:785:19: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
src/playsim/p_pspr.cpp:178:3: warning: field 'processPending' will be initialized after field 'HAlign' [-Wreorder]
2020-10-31 13:37:51 +02:00
Marisa Kirisame
c933d02034
Linetrace properly reports 3D line hits as "middle" part (#1228)
* Linetrace properly reports 3D line hits as "middle" part, as was intended.

* Typo fix
2020-10-26 04:24:04 -04:00
Rachael Alexanderson
5b03e86a2b - add 'sv_alwaysspawnmulti' dmflags2 2020-10-26 03:33:02 -04:00
nashmuhandes
6e692e5571 Allow retrieval of the custom Crush state in WorldThingGround 2020-10-25 20:10:52 +01:00
nashmuhandes
7285c5aca8 Added WorldThingGround event to hook into the actor at exact moment its corpse spawns gibs upon being crushed. 2020-10-25 20:10:52 +01:00
Christoph Oelckers
3bd365f934 - Added the usable parts of Rachael's 'Spawnmulti' spawn flag PR.
This needed a small fix in SpawnMapThing to apply the correct flags for Hexen format maps.
2020-10-25 15:57:43 +01:00
Major Cooke
18e7b56bdc Restored A_OverlayOffset's ability to cancel out interpolation without the interpolate/add flags. 2020-10-25 15:42:12 +01:00
Major Cooke
7477dfa922 Converted scale and pivot to vectors, and rotation to an angle. 2020-10-25 15:42:12 +01:00
Major Cooke
a6bbddf167 Finished implementing PSprite interpolation for vertices.
- Setting WOF_INTERPOLATE on any of the functions with flags (except A_OverlayFlags) will enable one tic for interpolating.
- Setting PSPF_INTERPOLATE with A_OverlayFlags will permanently enable it for that layer, but requires manual calling.
2020-10-25 15:42:11 +01:00
Major Cooke
7c4c0163a3 Added A_OverlayPivotAlign and A_OverlayVertexOffset.
A_OverlayPivotAlign(int layer, int halign, int valign)
- Aligns the pivot point origin to a corner of the PSprite before applying offsets.
- - halign: Horizontal. Applicable constants are PSPA_<LEFT/CENTER/RIGHT>.
- - valign: Vertical. Applicable constants are PSPA_<TOP/CENTER/BOTTOM>.
- - Default is top left.

A_OverlayVertexOffset(int layer, int index, double x, double y, int flags)
- Allows offsetting the corners of the psprite, granting modders the ability to skew weapon sprites as they see fit.
- - index: The index of the vertice. Valid ranges are between [0,3].
- - x/y: Offsets of vertices.
- - flags: Takes WOF_ flags.

Other changes:
- Removed pivot point interpolation since it's pointless.
- Removed PSPF_PIVOTSCREEN due to complications with it having relativity. This will be revisited either later or in another submission.
- Added ResetPSprite() to be called with BringUpWeapon(), A_Lower(), and morph weapon raising to reset all the new properties to 0.

Nearly ready now. Just some final testing needed.
2020-10-25 15:42:11 +01:00
Major Cooke
42902959a8 - Removed relativity from GetWeaponRect.
- Fixed PSPF_PIVOTPERCENT not being applied at start by default.
- Pivots now start in the upper left corner. Alignment flags are planned next for pivot point starting.

Significant progress made, but more testing still required.
2020-10-25 15:42:10 +01:00
Major Cooke
06b3e384a8 Apply WOF_Relative to A_Overlay/WeaponOffset as well if specified. 2020-10-25 15:42:10 +01:00
Major Cooke
f9f6e896f3 - Added functionality to WOF_Relative. Untested until the relative code from GetWeaponRect is taken out.
- Fixed A_OverlayPivot carrying over copying of X to Y if Y is zero. This is meant to be exclusive to A_OverlayScale only.
- Added WOF_ZeroY to prevent copying X to Y for A_OverlayScale when desired, mirroring A_SetScale's behavior.
2020-10-25 15:42:09 +01:00
Major Cooke
4a3a5c3877 Replaced PSPF_PIVOTOFFSETREL with WOF_RELATIVE.
The idea behind this is to outright remove the relative position adding from the engine side and let it happen with A_OverlayOffset instead. Still more work to do.
2020-10-25 15:42:09 +01:00
Major Cooke
8f74cebd44 Added code for rotating the PSprite, courtesy of IvanDobrovski.
- However, the XY offsets are relative as a result.This must be made toggleable.
2020-10-25 15:42:09 +01:00
Major Cooke
e5ca3caa6c Setting everything up. 2020-10-25 15:42:08 +01:00
Major Cooke
e3d21d09c9 Renamed flag to ALLOWTHRUBITS and rearranged the checks so the flag comes after.
- Since most will have 0 for the property, this will not check for the flag unless the mask fits.
2020-10-25 15:37:15 +01:00
Major Cooke
85a121ad28 ThruBits is now opt-in for convenience with the +THRUBITS flag. 2020-10-25 15:37:15 +01:00