Commit graph

68 commits

Author SHA1 Message Date
Boondorl
b43c440552 Added ShouldShareItem virtual
Allows for easier customizing of whether or not an item should be shared with players upon pickup in co-op (e.g. it allows it to be expanded to weapons with custom cvars).
2024-04-26 21:28:47 -03:00
Boondorl
e6df94ca76 Fixed local copies of items not respecting their Amount value 2024-04-21 10:05:46 -04:00
Boondorl
5ed4f477ed
Fixed PowerMorph setting wrong Owner
Also sets default flash effects.
2024-04-20 01:15:47 -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
70a165b566 Fixed local items not copying properties properly
Revert "Fixed local items not copying properties properly"

This reverts commit 5f352df587c629545fafc09e80428e645f5e8df3.

...
2024-04-15 17:55:49 +02:00
Boondorl
6c64a4403c Improved ZScript interface for morphing
Added getter and setter functions for handling whether or not the player fields should be gotten/set. Added MRF_KEEPARMOR flag to prevent stripping armor on morph. Optimized unmorphed Actor by setting it to NoInteraction and removing it from the blockmap and sector lists.
2024-03-01 08:35:31 -05:00
Boondorl
12dc5c1506 Further morphing clean up
Players will now use their Alternative field to check if they're morphed instead of their MorphTics. This makes the current state of morphing more reliable, otherwise setting this to 0 manually without unmorphing could have very odd results. Both monsters and players consider 0 morph time to mean infinite now (previously this only applied to monsters). Player unmorphs no longer die in the case of a failed unmorph on death. Removed inventory swapping on player pointer substitution as it's too messy to do here.
2024-03-01 08:35:31 -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
Rachael Alexanderson
22f04bb689
Merge branch 'master' into ItemSharing 2024-02-01 08:44:35 -05:00
Boondorl
c90a3290fe Items set to stay or respawn no longer get picked up locally 2024-02-01 08:43:49 -05:00
Boondorl
c1539c2286 Added client-side item pick ups
Includes feature to disable Actor rendering locally (this cannot be checked from the playsim) and options for disabling co-op only things.
2024-02-01 08:43:49 -05:00
Boondorl
c3f26b5405 Improved key sharing functionality
Localized functionality to an inventory function so that any item can make use of sharing. Added flag to avoid infinite recursions. HandlePickup() will now also share keys (for more complete handling). PuzzleItems are now included in sharing.
2024-01-28 18:04:04 -05:00
jekyllgrim
19435293af Add Actor.HasReceived 2024-01-04 14:33:06 -05:00
jekyllgrim
d0288264a2
Add Actor.CanReceive (#2295)
Adds CanReceive() to Actor, called by items from CallTryPickup(). This will let actors themselves determine if they can receive the item before any other checks.

Co-authored-by: Rachael Alexanderson <18584402+madame-rachelle@users.noreply.github.com>
2024-01-04 07:24:32 -05:00
Ricardo Luís Vaz Silva
52c878c0d7 Fix vanilla weapon functions passing ammo count to DepleteAmmo 2023-12-10 07:19:21 +01:00
nashmuhandes
a04f909d06 Add sv_coopsharekeys - in coop, picking up a key will distribute it to all online players 2023-11-11 20:50:31 -05:00
Ricardo Luís Vaz Silva
d699ba248e warn when fewer returns than expected are given for a function 2023-10-15 18:51:05 +02:00
Rachael Alexanderson
ce893d2cd4 - remove some double semicolons 2023-09-19 07:29:36 -04:00
Ricardo Luís Vaz Silva
0e70e95fa4 Add Inventory::ModifyBob and Inventory::ModifyBob3D 2023-09-14 16:28:38 +02:00
Ricardo Luís Vaz Silva
bcbb85b1dd Add Weapon::ModifyBobLayer , Weapon::ModifyBobLayer3D and Weapon::ModifyBobPivotLayer3D 2023-08-02 01:05:24 -04:00
Ricardo Luís Vaz Silva
99850ea216 fix the ammocount parameter in Weapon.CheckAmmo 2023-07-09 10:47:39 +02:00
Blue Shadow
40cb7f14d0 - added MaxEffectTics field to Powerup 2023-04-12 16:25:15 +02:00
Marisa the Magician
6f8901ea87 Rename ValidLock to IsLockDefined (more descriptive). 2022-12-23 22:48:01 +01:00
Marisa the Magician
b85add01c7 Additional lock-related ZScript functions.
* Key.ValidLock: returns whether a lock number is valid (can be unlocked) or belongs to a "does not work" door.
* Key.GetMapColorForLock: returns the automap color for a lock number (or -1 if the lock isn't valid).
* Key.GetMapColorForKey: likewise, but for a specific key.
2022-12-23 17:47:31 +01:00
Boondorl
0d4d5587b5 Added FOV Interpolation 2022-12-18 08:23:19 +01:00
Ricardo Luís Vaz Silva
46d36cf5c7 add BobWeapon3D 2022-12-09 21:49:38 +01:00
nashmuhandes
7ce364bf0f Add sv_noextraammo. When set to true, disables that weird hardcoded behavior from original Doom that gives extra ammo when picking up weapons in deathmatch 2022-09-15 20:41:16 -04:00
Christoph Oelckers
a952d0f36a -let A_FireProjectile pass through the second return value of SpawnPlayerMissile. 2022-07-14 07:59:52 +02:00
Blue Shadow
d862bf4347 - added FailSound property to PuzzleItem 2022-06-12 17:26:18 +02:00
Rachael Alexanderson
f87c7b538a - add sv_ammofactor to change the skill adjustment for ammo 2022-05-18 15:09:13 -04:00
Xaser Acheron
bfb79e5b32 Merge branch 'master' into feature_weaponscale 2022-01-23 20:01:59 -06:00
Xaser Acheron
e9c86017e4 apply WeaponScaleX/Y to all PSprites on a weapon 2022-01-23 19:59:06 -06:00
Xaser Acheron
a4b124bff8 fix mbf21 A_ConsumeAmmo ignoring explicit amount arg if weapon's ammopershot field set 2022-01-18 08:06:29 +01:00
Xaser Acheron
0b93aef776 add WeaponScaleX/WeaponScaleY properties for applying global scaling to a weapon's PSprites 2021-11-14 23:21:07 -06:00
Marisa Kirisame
d5ad8b28ec PreTravelled virtual for player and inventory. 2021-10-15 17:37:19 +02:00
Christoph Oelckers
c700682a36 - MBF21: ported the code pointers to ZScript.
So far it's just the functions and some initial changes to Dehacked's parser. None of this is usable yet.
2021-07-01 00:53:15 +02: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
28dab3889b - moved the handling of ending PowerWeaponLevel2 into PlayerPawn.Tick and restored the immediate weapon switch.
This got changed because switching weapons in EndPowerup is not safe - this can be called from weapon states where the player can end up with a different weapon being active than the one running the state.
The actual weapon switch has to be delayed until the state processing has ended.
2021-05-19 17:59:44 +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
a94f5dd1b3 - added a proper error message when '--' or '++' gets used on 8 or 16 bit values. 2021-05-17 12:27:27 +02:00
Marisa Kirisame
44b4359ba5 Add alternate "Full" mode for PowerIronFeet that prevents leaky damage. 2021-01-16 17:09:57 +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
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
Christoph Oelckers
486e07300c - fixed: Inventory items that are terminated by GoAwayAndDie must be removed from the blockmap and sector lists.
Since they were just scheduled for delayed deletion any map related action they can trigger is unwanted.
2020-06-16 01:11:08 +02:00
Christoph Oelckers
6444a7535c - fixed use of Powerup.Strength in PowerInvisibility.
An integer division made the feature useless.
2020-05-25 16:43:01 +02:00
Major Cooke
079e7ee4e9 Enforce the reflective flag as well. 2020-05-10 10:48:32 +02:00
Major Cooke
b70bc2b152 Fixed an issue where multiple invulnerability powerups could cancel each other out from just one expiring. 2020-05-10 10:48:32 +02:00
nashmuhandes
7a141f3aa3 Add help messages for most of the deprecated stuff in ZScript. 2020-03-14 12:56:03 +02:00
Christoph Oelckers
a638cfbd6e - fixed: player_t::GetPSprite cannot guarantee success
As a consequence it must return null in the failure case instead of asserting and all calls to this function must check for the failure case.
2020-03-11 00:56:29 +01:00