Commit graph

6613 commits

Author SHA1 Message Date
Christoph Oelckers
7bdb98cc0b - removed debug stuff. 2016-06-30 11:31:00 +02:00
Christoph Oelckers
fc3682006a - fixed PointOnSide functions to consider 'on the line' as 'in front of'.
The bad code was taken from the 2005 floating point rewrite that, by comparing the value with '> -EQUAL_EPSILON', returned 1 for any value close to 0 (as 'on the line') so it was mistakenly reported as 'behind the line'.
2016-06-30 11:30:32 +02:00
Christoph Oelckers
c6fb35ed52 - added per-item colors for static text items in the menu.
For option menus this replaces the 'highlighted' parameter with an actual color, for list menus it adds a new parameter.
2016-06-30 10:27:14 +02:00
Edoardo Prezioso
4defb6e967 - Fix myoffsetof using misaligned pointer access.
That could be a problem for particularly pedantic platforms.
2016-06-29 13:04:31 +02:00
MajorCooke
41d20fa6cf Fixed freeze with A_ClearOverlays. 2016-06-29 12:46:50 +02:00
Christoph Oelckers
6cf96372ba - fixed: incorrect flag masking for polyobjects disabled all line portals. 2016-06-29 12:46:20 +02:00
Christoph Oelckers
f8ae166281 - fixed return value inversion of FS's ceilingheight and floorheight functions. 2016-06-29 12:46:20 +02:00
Christoph Oelckers
a3450ab824 - removed unused cruft in FS code. 2016-06-29 12:46:19 +02:00
Christoph Oelckers
c6d8125b45 - fixed FraggleScript's resurrect function to call AActor::Revive to ensure that everything gets reset. 2016-06-29 12:46:19 +02:00
Christoph Oelckers
4899c405c3 - fixed: all non-ZDoom compatibility profiles need compat_maskedmidtex set.
This was neither fixed in Boom nor MBF.
2016-06-21 10:45:17 +02:00
MajorCooke
613fa4c9e4 Fixed: GetDistance was missing the original Z check disabling introduced in commit bd16ccb. 2016-06-21 10:14:25 +02:00
MajorCooke
9df65f73fc Localized the input checker into P_Thing_CheckInputNum now called by both ACS and DECORATE.. 2016-06-20 09:41:46 -05:00
MajorCooke
26408a5043 Switched the pointer to AAPTR_DEFAULT. 2016-06-20 09:11:38 -05:00
MajorCooke
85a34bbb88 Added GetPlayerInput(int numinput, int ptr = AAPTR_PLAYER1).
- Works exactly like the ACS version, but with pointers instead. The pointer can be anything, so long as it can be identified as a player.
2016-06-20 08:49:57 -05:00
Edoardo Prezioso
6384e81d0f - Add support for Skulltag ACS IsNetworkGame.
Once known as PlayerOnTeam, then it became IsMultiplayer, but Skulltag code ignored emulated multiplayer, hence the new and clearer name.
2016-06-20 09:34:41 +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
2f6c98ead3 - Added support for old Skulltag ACS PlayerTeam. 2016-06-19 22:57:42 +02:00
Edoardo Prezioso
de55d693f9 - Fixed ACS Singleplayer for non-net multiplayer. 2016-06-19 12:59:46 +02:00
Christoph Oelckers
8cf150e68a - set up portal rotations in the finalizing step, not during initialization.
Anything earlier may miss some information required to do this correctly.
2016-06-19 12:40:38 +02:00
Christoph Oelckers
da05dfa72e fixed: Polyobject-based line portals may not cache their angle as it may change at any time. 2016-06-19 12:32:45 +02:00
Edoardo Prezioso
4e148f00e6 - Fixed wrong Skulltag ConsoleCommand pcode name.
Also report this pcode as not supported by the program.
2016-06-19 12:01:29 +02:00
Christoph Oelckers
cebd877191 - fixed the center point calculation for triangular sectors.
The old method does not work as expected with the higher precision of doubles, so instead just average the 3 vertex positions to get the triangle's center.
2016-06-19 11:48:20 +02:00
Edoardo Prezioso
56508a2d82 - Avoid issues with misused Strife actions. 2016-06-17 23:09:34 +02:00
Leonard2
24c73071f4 Fixed a crash with A_JumpIfNoAmmo
Non-weapon layers can pass the caller check even when there is no ReadyWeapon
2016-06-17 18:36:57 +02:00
Leonard2
68c483c041 Renamed the weapon action function caller check to ACTION_CALL_FROM_PSPRITE to avoid confusion
This was always checking for every psprites rather than just weapon layers
2016-06-17 18:36:57 +02:00
Leonard2
abc7113e09 Removed the INSTATECALL flag because it is now unused and was replaced by stateinfo 2016-06-17 18:36:57 +02:00
Christoph Oelckers
05fabbe294 - fixed: G_InitNew may only clear the hub statistics when it is not called during loading of a savegame. 2016-06-17 16:14:58 +02:00
Christoph Oelckers
2c928a2cda - fixed: Strife's firehands' coordinates need WEAPONTOP being added because it cannot be taken from the main weapon layer which no longer exists when the hands appear. 2016-06-17 15:26:00 +02:00
Christoph Oelckers
018615ca0d - fixed weapon-based Psprite adjustment to always use the weapon this was called from and make non-weapon specific checks only exclude the targeter. 2016-06-17 14:14:35 +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
Christoph Oelckers
7ccdbf9b62 Merge branch 'PSprites' 2016-06-16 16:16:16 +02:00
MajorCooke
c9f4620702 Reimplemented P_SetPsprite. 2016-06-16 07:24:00 -05:00
Xaser Acheron
de0301a704 split bfg self-damage code into its own function, A_RadiusDamageSelf 2016-06-16 00:43:07 +02:00
Xaser Acheron
481ef7a5b5 added SMMU-BFG11k-style 'damrad' property to A_BFGSpray 2016-06-16 00:43:07 +02:00
Xaser Acheron
8e8248284a added BFGF_HURTSOURCE and BFGF_MISSILEORIGIN to A_BFGSpray 2016-06-16 00:43:06 +02:00
MajorCooke
2d4eb8dde4 - Added limit parameter to A_RailAttack and A_CustomRailgun. 2016-06-14 18:20:43 -05:00
Christoph Oelckers
f1597a5d26 - fixed: Trace should set CrossedWater only if a water surface actually is crossed, i.e. the start of the trace and the end of the trace are on different sides of the surface.
This was incorrectly spawning splashes when shooting inside a deep water sector, but in most cases the splash just was not visible. It could become visible if its position got clipped by a nearby one-sided wall.
2016-06-13 21:30:58 +02:00
MajorCooke
82bc5e7bd1 Fixed wrong token for Light keyword. 2016-06-13 09:50:12 -05:00
Christoph Oelckers
d74584e5b2 - fixed: DAnimatedDoor must not start an interpolation on the door sector's ceiling. 2016-06-13 13:58:39 +02:00
Braden Obrzut
624c935385 - Fixed: Floating point conversion error in SBarInfo DrawBar which broke interpolation. 2016-06-12 06:28:50 -04:00
Christoph Oelckers
b8e392eaa5 - do not try to load empty BEHAVIOR lumps.
These would otherwise print an error message but there's a lot of maps out there which only have an empty entry to mark the map as Hexen format.
2016-06-12 11:45:25 +02:00
Christoph Oelckers
373c59f924 - fixed inverse sign for rocket trail particle movement. 2016-06-12 00:05:23 +02:00
Christoph Oelckers
db2cef96d6 - removed unnecessary FLOAT2FIXED call in particle code. 2016-06-11 23:43:07 +02:00
MajorCooke
4c8028d64b - Fixed a discrepancy with A_FaceMovementDirection involving pitch adjustments going the wrong way both in motion, and standing still. 2016-06-11 14:07:27 -05:00
MajorCooke
fb286d1737 - Changed endsize to sizestep. Endsize affected more things than I thought it would. 2016-06-11 08:05:29 -05:00
Leonard2
ebe3f23677 Added GetCVar(string name)
Works like ACS's GetCVar
2016-06-11 10:15:49 +02:00
MajorCooke
d8bf958a06 Fixed: Frozen particles would still be deleted when frozen instead of doing nothing with. 2016-06-11 10:00:50 +02:00
MajorCooke
f787056198 - Added endsize parameter and SPF_NOTIMEFREEZE for A_SpawnParticle.
SPF_NOTIMEFREEZE processes particles with this flag regardless of time freeze. The endsize parameter changes the scale of the particle to that size throughout its lifetime linearly.
2016-06-11 10:00:50 +02:00
Christoph Oelckers
c4d8950a7f - fixed: APROP_Friction was missing a 'break'. 2016-06-10 13:23:23 +02:00
Christoph Oelckers
ef86b3975a - added 'strictdecorate' CVAR. If this is set to 'true', any DECORATE error that had to be demoted to a warning for backwards compatibility will be treated as an actual error. 2016-06-08 10:56:11 +02:00
Christoph Oelckers
cf21bb1524 - reinstated abort-on-error for any problem that gets reported during DECORATE code generation.
- fixed: DECORATE allowed a silent conversion from names to integers.

In old versions the name was converted to 0, since the scripting branch to the name index. Reverted to the old behavior but added a warning message.
2016-06-08 10:46:35 +02:00
Christoph Oelckers
1703842a94 - fixed some issues with teleport fog:
* many calls didn't use TELEFOGHEIGHT, mostly those coming from external code submissions that never were tested on anything but Doom. Addressed by adding this value inside P_SpawnTeleportFog and making the distinction between projectiles and non-projectiles from P_Teleport also part of this function.
* there were still a few places which spawned the teleport fog directly, skipping all the added features of P_SpawnTeleportFog.
2016-06-06 10:48:40 +02:00
MajorCooke
53837de17d Added DONTFLIP flag.
- By default, when viewing a flat sprite from behind, the image is flipped around on the X axis. This may not always be desired, so this flag disables it.
2016-06-05 15:21:19 -05:00
Christoph Oelckers
8a08fb2f6a - fixed nullptr/bool mixup. 2016-06-04 20:52:56 +02: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
bc334ccc9f Avoid creating the targeter layers if the inventory item isn't attached to
its owner yet
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
d933f77bf5 Fixed: the game could crash if some inventory items were destroyed in a
certain way
2016-06-02 20:00:22 +02:00
Christoph Oelckers
2afadb0108 - fixed: ADehackedPickup was missing NULL pointer checks in nearly all methods that used RealPickup.
Some DECORATE hacks make it possible that this does not contain a valid pointer when these methods are called.
2016-06-01 23:41:34 +02:00
Christoph Oelckers
26a15d0ccc - delete thinkers before starting to restore the savegame data to avoid interference of the old thinkers' Destroy() method with the newly loaded data.
Note that even with this change it is still not possible to unarchive any thinker pointers before the thinker list has been loaded as it would create broken lists.
2016-06-01 11:43:56 +02:00
Christoph Oelckers
978e522fb4 - fixed: portal-related sound calculations offset the sound in the wrong direction. 2016-06-01 11:14:25 +02:00
Christoph Oelckers
14e4a64c82 - fixed: Destroying a SkyViewpoint disabled all sector portals. 2016-06-01 10:10:18 +02:00
alexey.lysiuk
5348a15b75 Added option to control dynamic loading of OpenAL
Dynamic loading is enabled by default, set DYN_OPENAL to OFF to link with static or dynamic library

# Conflicts:
#	src/sound/oalsound.cpp
#	src/sound/oalsound.h
2016-05-29 14:25:04 +02:00
Edoardo Prezioso
243030046a - Fixed issues with invalid GetMaxInventory calls. 2016-05-29 12:50:37 +02:00
Christoph Oelckers
44f09edf4c - fixed: monsters cannot crouch, so their crouch factor has to be 1, as 0 would yield incorrect results if the value is used in subsequent calculations (e.g. adjusting a trajectory to a target which can be or may not be a player.) 2016-05-29 12:48:27 +02:00
MajorCooke
bb91723174 - Added GetCrouchFactor(ptr).
Gets the crouch factor of a player. Can be set to target/master/tracer, as long as it's a player. Defaults to the first player.
2016-05-29 12:43:46 +02:00
MajorCooke
2719905ade - Added source and inflictor parameters to all A_Damage/Kill functions.
- Source is the actor to blame for the cause of damage (monster infighting for example). For missiles, modders should consider setting to AAPTR_TARGET.
- Inflictor is the actor doing the damage itself. Note that by changing this, it will take into account the flags on the pointed actor.
2016-05-29 12:40:17 +02:00
MajorCooke
33ddbe8ab3 Added SKYEXPLODE support for P_LineAttack on horizons. 2016-05-29 12:38:37 +02:00
Benjamin Moir
6633e41cca added CheckProximity to ACS 2016-05-29 12:38:37 +02:00
alexey.lysiuk
89016020a8 Used ISO Latin 1 encoding for title text in startup window on OS X
Windows version uses ANSI_CHARSET to handle the corresponding text
This solves the problem like in https://github.com/alexey-lysiuk/gzdoom/issues/63:
*** Assertion failure in -[NSTextFieldCell _objectValue:forString:errorDescription:], /Library/Caches/com.apple.xbs/Sources/AppKit/AppKit-1404.47/AppKit.subproj/NSCell.m:1684
Invalid parameter not satisfying: aString != nil
2016-05-29 10:58:12 +03:00
Christoph Oelckers
fc25a74a03 - fixed: In case of a crash the buffered console output was not dumped to the rich edit control so it never got into the crash log. 2016-05-28 20:11:19 +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
d43ea33031 - fixed: A_CustomBulletAttack may not rely on the parameter default setter to get a valid puff. This must be checked explicitly in the functions body to ensure it is never NULL. 2016-05-27 11:39:44 +02:00
Christoph Oelckers
b926cf35d5 - fixed: The portal init code should only delete REJECT if there's actually some portals to consider. 2016-05-27 09:45:17 +02:00
Christoph Oelckers
19003a7973 - fixed: The node builder's FindMapBounds function included all vertices generated by the node builder.
This could cause problems on maps with bogus nodes so it's better to only check vertices that are referenced by a linedef.
2016-05-27 09:38:33 +02:00
Christoph Oelckers
34c67b9eae - fixed: The NoiseList array was not cleared before use. 2016-05-27 00:00:27 +02:00
Christoph Oelckers
cc685e982b - fixed: interactive line portals were always deactivated, regardless of alignment type. 2016-05-25 11:36:23 +02:00
Christoph Oelckers
f241d9773a - made P_NoiseAlert non-recursive to avoid stack overflow problems in large open-area maps with a high sector count. 2016-05-25 11:30:11 +02:00
Christoph Oelckers
72a3257400 - fixed: DIntermissionScreen::Init did not handle non-existent strings in the string table and crashed on a NULL pointer. 2016-05-25 01:45:55 +02:00
Christoph Oelckers
49234b1fc3 - fixed: UpdateRenderSectorList did some bad calculations for checking portal plane order. 2016-05-24 13:53:29 +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
d058820c65 - fixed scroll speed calculation for Heretic. 2016-05-24 10:01:57 +02:00