Commit graph

189 commits

Author SHA1 Message Date
Leonard2
bcb18cf7d8 Added a flag to prevent the weapon from jumping to its Deselect state when the player dies 2016-07-28 08:29:46 +02:00
Leonard2
446bc1018c Fixed: weapons didn't clear their flash layer when the player died 2016-07-17 17:28:45 +02:00
Leonard2
e482a54389 Fixed a crash with A_ClearOverlays 2016-07-17 14:27:56 +02:00
Leonard2
05d1df3571 Fixed crashes with the A_CrispyPlayer and A_HandLower action functions
Simply using FindPSprite in those functions wouldn't be enough because if a mod is using the firehands layer when they are called this would go very wrong
2016-07-13 13:01:32 +02:00
Leonard2
3ea70980f9 Fixed: the strife firehands were interpolated if a mod used the layer before them
The flags were also already reset, no need to do it twice
2016-07-13 13:01:32 +02:00
Leonard2
da6e12d5bc Fixed: the weapon layer offsets were interpolated even after the player switched his weapon 2016-07-13 13:01:32 +02:00
Leonard2
75cb8c00a6 Fixed: the flags weren't properly reset if a mod used the old layers before the code used them 2016-07-13 13:01:32 +02:00
MajorCooke
41d20fa6cf Fixed freeze with A_ClearOverlays. 2016-06-29 12:46:50 +02:00
MajorCooke
e02ed3a6f7 Take in the targeter layers if someone disables the safety and uses 0 for start and stop. 2016-06-20 01:15:51 +02:00
MajorCooke
ecfa7415b3 This small change was left out by mistake. 2016-06-20 01:15:51 +02:00
MajorCooke
30880aab79 And a bit more optimization... 2016-06-20 01:15:50 +02:00
MajorCooke
2b91db7b3a Refactored A_ClearOverlays. 2016-06-20 01:15:50 +02:00
MajorCooke
dd410876cf Added A_ClearOverlays(int start, int stop, bool safety).
- Clears a set of overlays in ranges [start,stop]. If unspecified, wipes all non-hardcoded layers. Safety determines whether to affect core layers or not (i.e. weapon). Returns the number of layers cleared.

Added no override boolean to A_Overlay and a boolean return type.

- If true, and a layer already has an active layer, the function returns false. Otherwise, sets the layer and returns true.
2016-06-20 01:15:49 +02:00
Edoardo Prezioso
574f2936d4 - Fixed GCC/Clang compiler errors and warnings. 2016-06-17 10:19:03 +02:00
Christoph Oelckers
cfaa3e3fa9 - changed action function interface so that callers can be identified directly, instead of guessing it from looking at the parameters.
With arbitrary PSP layers the old method was no longer safe because the layer ID was not available in the action function.
2016-06-16 16:16:27 +02:00
MajorCooke
c9f4620702 Reimplemented P_SetPsprite. 2016-06-16 07:24:00 -05:00
Leonard2
0b88bae458 The strife firehands now make proper use of the psprite layers 2016-06-03 19:46:31 +02:00
Leonard2
afa708c138 Allow psprite layers to be manipulated directly from the player's own body 2016-06-03 19:18:58 +02:00
Leonard2
eeff17c550 Account for this on the renderer's side instead
This fixes the weapon's layer behaving differently when called from
A_Overlay (the flag would be set in this case breaking the offsets)
2016-06-03 00:50:12 +02:00
Leonard2
543414d31f Added 2 new layer flags: PSPF_CVARFAST and PSPF_POWDOUBLE
These flags allowed to easily restore a lost part of the targeter layers
behavior
2016-06-03 00:50:11 +02:00
Leonard2
e1f139ddcd The targeter layers now use a proper Caller
This will avoid having to check for certain stuff and also allow them to not be destroyed when the ReadyWeapon is null like before
2016-06-03 00:50:10 +02:00
Leonard2
8244d2c844 Make sure never to call GetPSprite when the ReadyWeapon is null 2016-06-03 00:37:55 +02:00
Leonard2
9ee5e57340 Call GetPSprite here to update the ReadyWeapon but avoid doing so if it
is null

TickPSprites will take care of destroying the weapon/flash layers if the
ReadyWeapon is null
2016-06-03 00:37:54 +02:00
Leonard2
f14a840777 The ReadyWeapon is now assumed to not be null 2016-06-03 00:37:54 +02:00
Leonard2
8668719bbc Revert "- re-added P_SetPSrite."
This reverts commit e6d89b9f71.
2016-06-02 20:02:03 +02:00
Leonard2
360ad7a844 Replaced every remaining instances of the old layer names 2016-05-28 01:19:42 +02:00
Leonard2
2f5ae3b51e Changed the default layer indices and renamed them
Note that this doesn't compile yet
2016-05-28 01:19:41 +02:00
Leonard2
c82620129c Added A_OverlayFlags
Allows psprites to follow the weapon and/or the player's bobbing
2016-05-28 01:19:40 +02:00
Leonard2
8f360f3bea Small refactor 2016-05-27 23:37:35 +02:00
Leonard2
b220db4ebe Fixed: a layer's movements weren't interpolated in some cases
The old position members would be incorrectly updated if a layer sets another layer's offsets and this layer ticks before the other
2016-05-27 23:37:34 +02:00
Leonard2
bca9829950 Fixed: a few members weren't properly initialized
This could go wrong if a layer had only one state of -1 tics
2016-05-27 22:58:27 +02:00
Leonard2
599fa7cfd1 Fixed: it was no longer possible to set the flash state in the very first
weapon's state

This was due to an oversight in my first commit
2016-05-27 22:31:18 +02:00
Christoph Oelckers
e6d89b9f71 - re-added P_SetPSprite.
For debugging purposes it's better to have this as a function.
2016-05-24 13:05:43 +02:00
Christoph Oelckers
d767d10322 - made PSprites submission GC aware. 2016-05-21 13:11:43 +02:00
Leonard2
8c205ebac3 Added A_OverlayOffset
Like A_WeaponOffset except it can access any psprites
2016-05-20 17:04:45 +02:00
Leonard2
1ecfb5897b Added A_Overlay 2016-05-20 17:04:45 +02:00
Leonard2
1966b61b8f Generalized the psprites implementation 2016-05-20 17:04:44 +02:00
MajorCooke
115dbd0b58 - Added A_WeaponOffset(x = 0, y = 32, flags).
- Places the weapon offset by the defined x and y. Both are floats. This stacks with weapon bobbing.
- WOF_KEEPX: Don't change the X offset.
- WOF_KEEPY: Don't change the Y offset.
- WOF_ADD: Add onto instead of replacing the coordinates.
2016-05-18 11:19:24 +02:00
Christoph Oelckers
7ebb961917 - added weapon bobbing interpolation.
This was so ridiculously simple that I really fail to understand why the previous attempt was so overcomplicated that it just failed for that.
2016-04-07 11:48:23 +02:00
Christoph Oelckers
7f23a91488 - fixed: smooth bobbing uses the full angular range to calculate its position. 2016-04-07 11:14:39 +02:00
Christoph Oelckers
21340c6eba - floatified the rest of thingdef_codeptr.cpp and got rid of the remaining fixed_t and angle_t parameters in VM-accessed function. The VM should now be free of those types completely. 2016-03-25 12:57:22 +01:00
Christoph Oelckers
6557f3b8c8 - floatified quake and weapon code 2016-03-23 20:45:48 +01:00
Christoph Oelckers
2d2eeb49f0 - make weapon sprite offsets floats. 2016-03-21 01:16:34 +01:00
Christoph Oelckers
51b05d331d - replaced AActor::vel and player_t::Vel with a floating point version.
- Converted P_MovePlayer and all associated variables to floating point because this wasn't working well with a mixture between float and fixed.

Like the angle commit this has just been patched up to compile, the bulk of work is yet to be done.
2016-03-20 00:54:18 +01:00
Christoph Oelckers
f332a098cd - reworked calls to P_SpawnPlayerMissile, P_AimLineAttack and P_LineAttack to use floating point angles. 2016-03-18 00:43:05 +01:00
Christoph Oelckers
671291227e - first stage of converting actor angles to float complete
Patched up everything so that it compiles without errors again. This only addresses code related to some compile error. A large portion of the angle code still uses angle_t and converts back and forth.
2016-03-16 12:41:26 +01:00
Randy Heit
55142078d8 Normalize line endings 2016-03-01 09:47:10 -06:00
Christoph Oelckers
b4a002a07f - preparations for allowing hitscans through portals.
To allow processing the hit through an arbitrary portal without reference to the portal group table, P_AimLineAttack and P_LineAttack need to pass some more info than just the linetarget.
We need the relative positions of shooter and target within the visual reference of the other to calculate proper angles and we need to know if such a portal was crossed at all, because a few things, e.g. seeker missiles won't work with them.

- fixed setup of target acquisition for the Mage Staff.

The pre-acquired seeker target was never passed to the spawned projectiles.
2016-03-01 16:39:31 +01:00
Randy Heit
b2ccd0bd28 Use action function return value to make state jumps happen
- The A_Jump family of action functions now return the state to jump
  to (NULL if no jump is to be taken) instead of jumping directly.
  It is the caller's responsibility to handle the jump. This will
  make it possible to use their results in if statements and
  do something other than jump.
- DECORATE return statements can now return the result of a function
  (but not any random expression--it must be a function call). To
  make a jump happen from inside a multi-action block, you must
  return the value of an A_Jump function. e.g.:
    { return A_Jump(128, "SomeState"); }
- The VMFunction class now contains its prototype instead of storing
  it at a higher level in PFunction. This is so that
  FState::CallAction can easily tell if a function returns a state.
- Removed the FxTailable class because with explicit return
  statements, it's not useful anymore.
2016-02-18 20:39:40 -06:00
Randy Heit
b3b0886b64 Merge branch 'scripting'
Conflicts:
	src/actor.h
	src/g_doom/a_doomweaps.cpp
	src/g_hexen/a_blastradius.cpp
	src/p_enemy.cpp
	src/p_enemy.h
	src/thingdef/thingdef.h
	src/thingdef/thingdef_codeptr.cpp
	wadsrc/static/actors/constants.txt
2016-02-04 15:17:22 -06:00
rheit
56359b6f23 Merge pull request #342 from marrub--/fastweaponsfix
sv_fastweapons extension
2016-02-04 13:31:47 -06:00
Braden Obrzut
88a616da75 - Removed what appears to be a debug breakpoint.
- Cleared some GCC and Clang warnings. Mostly static analysis false positives, but one of them generated a pretty massive warning in a release build.
- Use -Wno-unused-result since I doubt we're going to address those unless they actually prove to be a problem (and they only appear in release builds).
2016-01-23 19:36:13 -05:00
Christoph Oelckers
cfcd2668cc Merge commit '772a5724313f2ad0bd6828fcc28545a9ee5e6068' into scripting
Conflicts:
	src/p_pspr.cpp
	src/thingdef/thingdef_codeptr.cpp
2016-01-17 20:00:45 +01:00
MajorCooke
77013877d1 A_WeaponReady Fix
- Zoom and Reload keys triggered the other states instead of themselves (i.e. zoom keybind triggered reload states instead of zoom)
2016-01-02 11:27:02 -06:00
Randy Heit
1d759283c0 Cleanup the zoom/reload/userX handling for A_WeaponReady
- There was lots of code duplication. Consolidated it.
- Renamed WRF_UserX to WRF_AllowUserX for consistancy.
2015-12-31 16:46:19 -06:00
MajorCooke
3566d3157a Use | instead of +. 2015-12-31 16:46:17 -06:00
MajorCooke
eed6680a67 Added support for weapon states User#.
- Added keybinds for the user state triggering.
- Added WRF_USER# flags which must be specified in order to use.
- # can be 1-4.
2015-12-31 16:46:16 -06:00
Christoph Oelckers
b613db4ae5 Revert "Merge pull request #359 from Leonard2/master"
This reverts commit 364ca11b43, reversing
changes made to dae0e217d1.

Conflicts:
	src/r_data/r_interpolate.cpp
2015-09-18 17:41:16 +02:00
Leonard
86e9504d04 Added weapon interpolation. 2015-08-19 15:59:54 +02:00
Marrub
08e9d75538 removed sv_fastweapons 4 as it may cause issues 2015-06-27 15:00:31 -04:00
Marrub
4208993f22 use sv_fastweapons 3 and 4 instead 2015-06-27 08:26:48 -04:00
Marrub
873ef3fea8 that works better 2015-06-25 10:15:40 -04:00
Marrub
bbc3173629 yep 2015-06-25 09:47:37 -04:00
Christoph Oelckers
bfc10f4c5e Merge branch 'master' into scripting 2015-05-05 11:24:43 +02:00
Christoph Oelckers
535102ae6e - fixed: NULLing the flash state in P_BringUpWeapon should be done before setting the main weapon state so that it doesn't cancel any flash state effects that get initiated there. 2015-05-05 11:23:41 +02:00
Randy Heit
b5e4153c78 Merge branch 'master' into gonesolong
Conflicts:
	src/CMakeLists.txt
	src/b_think.cpp
	src/g_doom/a_doomweaps.cpp
	src/g_hexen/a_clericstaff.cpp
	src/g_hexen/a_fighterplayer.cpp
	src/namedef.h
	src/p_enemy.cpp
	src/p_local.h
	src/p_mobj.cpp
	src/p_teleport.cpp
	src/sc_man_tokens.h
	src/thingdef/thingdef_codeptr.cpp
	src/thingdef/thingdef_function.cpp
	src/thingdef/thingdef_parse.cpp
	wadsrc/static/actors/actor.txt
	wadsrc/static/actors/constants.txt
	wadsrc/static/actors/shared/inventory.txt

- Added register reuse to VMFunctionBuilder for FxPick's code emitter.
- Note to self: Need to reimplement IsPointerEqual and CheckClass, which
  were added to thingdef_function.cpp over the past year, as this file no
  longer exists in this branch.
2014-12-21 21:15:11 -06:00
Randy Heit
2d87eb0ba2 Merge branch 'master' into gonesolong
Conflicts:
	src/CMakeLists.txt
	src/actor.h
	src/g_heretic/a_hereticmisc.cpp
	src/g_heretic/a_hereticweaps.cpp
	src/g_heretic/a_ironlich.cpp
	src/info.h
	src/namedef.h
	src/p_buildmap.cpp
	src/p_enemy.cpp
	src/p_map.cpp
	src/p_mobj.cpp
	src/thingdef/thingdef_codeptr.cpp
	zdoom.vcproj
2014-12-20 19:13:14 -06:00
ChillyDoom
db323643f8 - Renamed FBot to DBot and made it inherit from DThinker.
- Fixed: Bots added by players other than the net arbitrator did not have their skill set.
2014-10-14 19:57:11 +01:00
ChillyDoom
83d84eaae9 - Moved bot related variables from player_t into a new FBot class. 2014-10-13 18:40:25 +01:00
Christoph Oelckers
ee6e87d94b - use a separate counter from AActor::special1 to count weapon use with some Hexen weapons. special1 is used for some other purposes as well, and when using a separate counter it can be reset to 0 when changing weapons, preventing counting errors. 2014-09-13 12:38:16 +02:00
Christoph Oelckers
261bc77846 - fixed: when bringing up a new weapon the current flash state needs to be removed.
Especially when dropping the current weapon it can still be active, this is most easily observed with Strife's crossbow which loops the flash state, but it also can happen with other weapons, right after shooting.
2014-05-20 10:29:27 +02:00
Randy Heit
459ad5abff - Updated scripting branch to latest version in trunk.
SVN r4337 (scripting)
2013-06-07 03:31:30 +00:00
Randy Heit
445bc148b7 - Fixed: r4067 completely disabled weapon switching via A_ReFire.
SVN r4157 (trunk)
2013-02-22 02:42:42 +00:00
Randy Heit
e0c751114f - Fixed: A TITLEMAP defined with SpawnWithWeaponRaised set caused a crash.
SVN r4156 (trunk)
2013-02-22 01:51:35 +00:00
Randy Heit
619e65ad6f - Allow negative parameters to A_Light.
SVN r4144 (trunk)
2013-02-19 02:25:20 +00:00
Randy Heit
cdfd671dff - P_MovePsprites() should now always call P_CheckWeaponSwitch(), because the latter function
now has its own WF_WEAPONSWITCHOK check in the correct place.

SVN r4068 (trunk)
2013-02-07 20:42:24 +00:00
Randy Heit
2cf141e914 - In A_ReFire, allow refiring when a weapon is pending, but weapon switching is not okay at this time.
SVN r4067 (trunk)
2013-02-07 20:38:41 +00:00
Randy Heit
87b8b6201c - Added WRF_DISABLESWITCH flag for A_WeaponReady to indicate that any attempts to switch the weapon
should be discarded.

SVN r4062 (trunk)
2013-02-05 02:27:35 +00:00
Randy Heit
f0bc2fdc53 - Fixed CF_DOUBLEFIRINGSPEED is in player->cheats, not player->WeaponState.
SVN r4061 (trunk)
2013-02-05 01:45:23 +00:00
Randy Heit
61322cc33b - Fixed: A_Lower needs to check player->cheats for WF_INSTANTWEAPSWITCH, not player->WeaponState.
SVN r4055 (trunk)
2013-01-27 04:08:00 +00:00
Randy Heit
a2f55c8067 - Well, poo. WRF_NoFire is two bits, not just one.
SVN r4054 (trunk)
2013-01-27 03:02:00 +00:00
Randy Heit
ed8a33aeaf - Use P_DropWeapon() everywhere it makes sense.
SVN r4045 (trunk)
2013-01-25 03:32:49 +00:00
Randy Heit
5dca935305 - If this was a git repository, I wouldn't have needed to just make three broken commits in a row.
SVN r4044 (trunk)
2013-01-25 03:32:20 +00:00
Randy Heit
1c999d9d55 - Be more concise for WRF_NoFire in A_WeaponReady.
SVN r4043 (trunk)
2013-01-25 03:25:32 +00:00
Randy Heit
9d43ba39fc - Using the proper container for weapon state flags would be good.
SVN r4042 (trunk)
2013-01-25 03:18:45 +00:00
Randy Heit
281ac3a49a - Separate the player weapon state flags from the other player "cheat" flags.
SVN r4041 (trunk)
2013-01-25 03:09:17 +00:00
Randy Heit
ea81d3638d - Revert WRF_NOSWITCH changes from r4024.
SVN r4039 (trunk)
2013-01-25 02:05:48 +00:00
Braden Obrzut
76b5757dab - Fixed: 0 duration A_Lower loops could cause an infinite loop since A_Lower checked if the player was dead in two different ways and returned before the second one.
SVN r4029 (trunk)
2013-01-18 18:19:05 +00:00
Randy Heit
3111b6e7b0 - Do not clear the CF_WEAPONSWITCHOK flag each tic, so that the last setting from A_WeaponReady
will carry over until the next A_WeaponReady. Changed P_CheckWeaponSwitch() to clear any
  pending weapon requests while weapon switching is disabled.

SVN r4024 (trunk)
2013-01-11 02:53:11 +00:00
Randy Heit
787c338871 - Added MAPINFO flag "SpawnWithWeaponRaised".
SVN r4013 (trunk)
2013-01-03 02:08:08 +00:00
Randy Heit
562cf04db2 - Update scripting branch to trunk.
SVN r3758 (scripting)
2012-07-14 03:04:41 +00:00
Randy Heit
44932a6c56 - Added OB_MPDEFAULT string for being killed by a player for an unknown reason. This can be
overridden in custom player classes by changing their Obituary property to something else.
- ClientObituary() now only looks up the obituary message from the killing player's weapon if the
  damage type was 'Melee' or 'Hitscan'.
- Gave P_GunShot() and A_FireBullets the new damage type 'Hitscan'.
- Switched A_Saw and A_CustomPunch to the 'Melee' damage type.

SVN r3646 (trunk)
2012-05-13 01:06:28 +00:00
Christoph Oelckers
cbcc7443c6 - added Xaser's bobbing style options submission.
SVN r3615 (trunk)
2012-05-02 20:58:29 +00:00
Christoph Oelckers
235a09d92a - Added Xaser's weapon patch to check +reload and +zoom in A_WeaponReady.
SVN r3530 (trunk)
2012-04-07 13:07:25 +00:00
Randy Heit
19ec79d4f3 - Apply patch to prevent the flash state from being processed twice after using A_GunFlash.
SVN r3500 (trunk)
2012-04-01 02:49:04 +00:00
Randy Heit
f00f5d2304 - Allow subclasses when checking for PowerWeaponLevel2.
SVN r3314 (trunk)
2011-11-07 00:43:41 +00:00
Christoph Oelckers
163301dcd5 - took all includes of farchive.h out of headers. This file will have to be included explicitly in each source file that needs it.
SVN r3259 (trunk)
2011-07-06 14:20:54 +00:00
Christoph Oelckers
6ba0689b8d - added DavidPH's A_AlertMonsters range submission.
SVN r3233 (trunk)
2011-06-13 10:30:30 +00:00
Christoph Oelckers
60a411c9ad - added A_GunFlash extension submission.
SVN r3217 (trunk)
2011-05-26 23:29:36 +00:00
Christoph Oelckers
0715b7dfc6 - cleaned up switch code and fixed several problems:
* savegames stored an index in the switch table and performed no validation when loading a savegame.
  * setting of a random switch animation duration was broken.
  * separated the 2 values stored in the Time variable into 2 separate variables.
  * defining a switch with one texture already belonging to another switch could leave broken definitions in the switch table.
- added function for serializing switch and door animation pointers.
- bumped min. savegame versions due to changes to DButtonThinker and removed all current savegame compatibility code.


SVN r3030 (trunk)
2010-12-12 15:43:35 +00:00