Commit graph

633 commits

Author SHA1 Message Date
Marisa Kirisame
bc4a8190bf Fix incorrect HitTexture reassignment in LineTrace. 2018-03-03 09:30:06 +01:00
Christoph Oelckers
910a3062c7 - fixed some problems with the stepping up through a portal logic:
* this has to be disabled for missiles which should explode instead of stepping up.
* interpolation adjustment was not correct
* it could crash because the target portal group could be retrieved from a non-portal sector.
2018-02-28 10:12:10 +01:00
alexey.lysiuk
a3236aa7ef Set target for blood actor with PUFFGETSOWNER flag spawned by crusher
https://forum.zdoom.org/viewtopic.php?t=59447
2018-02-19 16:57:52 +02:00
alexey.lysiuk
47b276024e Fixed compilation warnings reported by MSVC
src\p_map.cpp(4857): warning C4800: 'int': forcing value to bool 'true' or 'false' (performance warning)
src\p_map.cpp(4858): warning C4800: 'int': forcing value to bool 'true' or 'false' (performance warning)
2018-01-22 12:29:16 +02:00
Marisa Kirisame
15e7d9daba Gave the user data struct for CheckLineTrace a more unique name to avoid confusion with FLineTraceData 2018-01-21 10:54:02 +01:00
Marisa Kirisame
69e8c9ec6e A more "general purpose" line trace function. Far from a complete ZScript interface with Trace(), though. 2018-01-21 10:54:02 +01:00
Major Cooke
d5d393aaf2 - Added GetRadiusDamage. Returns the raw calculated explosion damage falloff by distance only.
- Split off both explosion damage calculations into P_Get(Old)RadiusDamage functions for ease of maintenance.
2018-01-20 18:45:01 +02:00
alexey.lysiuk
549a9d3cf0 Extended Actor.CheckMove() with optional position information
https://forum.zdoom.org/viewtopic.php?t=58964
2018-01-03 10:48:10 +02:00
alexey.lysiuk
c4648a2b1c Added CheckMove() function to ZScript Actor class
https://forum.zdoom.org/viewtopic.php?t=58964
2018-01-02 13:04:28 +02:00
alexey.lysiuk
40fd816d54 Improved compatibility of blocking lines handling
Only the first blocking line changes contact state during line iteration
This reverts 3b818171d5

https://forum.zdoom.org/viewtopic.php?t=57870
2017-12-31 11:34:12 +02:00
Major Cooke
d422392b94 Extended LineAttack() with offsets and new flags
Added forward and side offsets for LineAttack() function
Added absolute offset and absolute position flags for LineAttack() function
2017-11-07 11:02:54 +02:00
Christoph Oelckers
2a291165ee - fixed: For original Hexen, executing a death special should not clear it. This addresses the bell in HexDD's Badlands being rung before it is ready to use. This also removes the redundant special handling in the ZBell actor. 2017-09-02 09:16:26 +02:00
Christoph Oelckers
485c4c71b5 - fixed: When stepping through a sector portal and touching a two sided line on the opposite side, its opening must be used, regardless of the FFCF_NOFLOOR flag. 2017-08-27 10:36:34 +02:00
Christoph Oelckers
3b818171d5 - do not let P_AdjustFloorCeil use the return from P_CheckPosition if floorz is greater than ceilingz.
This can only happen if some thing gets placed somewhere it doesn't physically fit in and as a result of the floor move would be pushed into an even more invalid place.

See https://forum.zdoom.org/viewtopic.php?f=2&t=56764
2017-06-05 12:20:59 +02:00
Major Cooke
bb1e927c46 Give the parameter a better name to associate by. 2017-05-17 23:03:22 +02:00
Major Cooke
65f13b0927 - Added a Z offsetting parameter to the ZScript LineAttack function.
- Added LAF_OVERRIDEZ flag to LineAttack. Disregards all internal offsetting aside the actor's Z position before adding the offset parameter.
2017-05-17 23:03:22 +02:00
Christoph Oelckers
8a91153aeb - Why does the Visual Studio editor hate tildes so much...? 2017-05-14 12:36:13 +02:00
Christoph Oelckers
1767dd6a42 - fixed: A_CheckBlock performed item pickup checks which could be done in completely inappropriate spots if this function was used from weapon overlays, for example. 2017-05-14 11:55:32 +02:00
Christoph Oelckers
96d328de9b - removed all Doom Source license and all default Raven copyright headers and replaced them with GPLv3. Also fixed the license in a few other files.
For some files that had the Doom Source license attached but saw heavy external contributions over the years I added a special note to license all original ZDoom code under BSD.
2017-04-17 13:33:19 +02:00
Christoph Oelckers
6599e2c425 - moved the VM types into their own file and only include it where really needed. 2017-04-13 01:12:04 +02:00
Christoph Oelckers
ef77cbd295 - stop using the ATAGs for checking pointer types in asserts.
This is an incredibly costly way to do a debug check as it infests the entire VM design from top to bottom. These tags are basically useless for anything else but validating object pointers being passed to native functions (i.e. mismatches between definition and declaration) and that simply does not justify a feature that costs execution time in non-debug builds and added memory overhead everywhere.
Note that this commit does not remove the tags, it only discontinues their use.
2017-04-10 15:18:31 +02:00
Christoph Oelckers
dd8963142f - fixed: P_RailAttack must send DMG_PLAYERATTACK if the attack originates from a player. 2017-03-14 11:13:52 +01:00
Christoph Oelckers
bd7476fb8d - untangled r_defs.h from actor.h
Both files can now be included independently without causing problems.
This also required moving some inline functions into separate files and splitting off the GC definitions from dobject.h to ensure that r_defs does not need to pull in any part of the object hierarchy.
2017-03-10 02:22:42 +01:00
Christoph Oelckers
ad41b23506 - replaced the homegrown integer types in all p* sources and headers. 2017-03-08 18:55:52 +01:00
Christoph Oelckers
00dc59ebdc - separated the blood translation index from the BloodColor variable to allow more than 255 blood translations and as a prerequisite for allowing to change the blood color. 2017-03-02 10:26:23 +01:00
Christoph Oelckers
2a4a5e7a70 - refactored a few more native meta properties. 2017-02-28 12:47:44 +01:00
Christoph Oelckers
e84a2899f9 - this needs one more check. 2017-02-27 10:52:29 +01:00
Christoph Oelckers
073e63ed04 - Added a check for all z-movement for floor huggers so that it doesn't skip all the height checks if +NODROPOFF is also given. 2017-02-27 10:50:21 +01:00
Christoph Oelckers
f918a9d9a7 - added a BOUNCE_NotOnShootables flag that hopefully helps addressing the biggest glitch in the bouncing code. 2017-02-26 22:31:43 +01:00
Christoph Oelckers
0cc46a2aaf - added a FORCEINFIGHTING flag. 2017-02-26 19:05:20 +01:00
alexey.lysiuk
c150f9d737 Fixed incorrect pointers for Actor.Used()
https://mantis.zdoom.org/view.php?id=340
2017-02-26 11:39:27 +02:00
Christoph Oelckers
26144340b8 - fixed: Hexen's poison cloud needs to call P_DamageMobj, even with a damage value of 0. Added a new flag to handle this case because normally this is not desirable. 2017-02-19 23:20:09 +01:00
Christoph Oelckers
8d7a64bd17 - added a virtual 'used' method that gets called when the player presses use on an actor. This method will only be called if the actor does not have the USESPECIAL flag - that one will be handled as before. 2017-02-15 00:43:30 +01:00
Christoph Oelckers
1a63450fe2 - fixed a few issues with actor bouncing logic. 2017-02-13 22:00:27 +01:00
Major Cooke
46ee2c5ec6 - Fixed HITTARGET, HITMASTER, HITTRACER, crash and xdeath states being broken on bouncing actors that die/explode. 2017-01-27 18:03:09 +01:00
Christoph Oelckers
1eb2c75328 - explode bouncing objects directly inside P_BounceActor if the bounce count expired. The calling code is too messed up to handle this cleanly. 2017-01-27 16:15:17 +01:00
Christoph Oelckers
19df603f92 - fixed: P_RailAttack did not make adjustments for the shooter's floorclip. 2017-01-21 10:55:57 +01:00
Christoph Oelckers
267600826f - sxriptified key and puzzleitem base classes. 2017-01-15 10:37:54 +01:00
Christoph Oelckers
1400f401e7 - fixed use of multiple sector actions in the same sector.
The entire setup was quite broken with each item using its own activation result and the ones of the subsequent items in the list as the return value.
This rendered the STANDSTILL check in the main function totally unpredictable because the value it depended on could come from any item in the list.
Changed it so that the main dispatcher function is part of sector_t and does the stepping through the list iteratively instead of letting each item recursively call its successor and let this function decide for each item alone whether it should be removed.
The broken setup also had the effect that any MusicChanger would trigger all following SecActEnter specials right on msp start.
2017-01-13 01:34:43 +01:00
Christoph Oelckers
ea163f3898 - exported FCheckPosition to the VM and completed the parameter lists for Actor.CheckPosition and Actor.TryMove. 2017-01-12 00:26:16 +01:00
Christoph Oelckers
5ef9429ae4 - added the ability to attach a constructor or destructor to an internally defined struct.
There are a few which require explicit native construction or destruction that need to be exported to the VM, e.g. FCheckPosition.
The VM cannot handle this directly, it needs two special functions to be attached to handle such elements.
2017-01-11 23:46:03 +01:00
Christoph Oelckers
cd7986b1b1 - refactored global sides array to be more VM friendly.
- moved FLevelLocals to its own header to resolve some circular include conflicts.
2017-01-08 18:46:17 +01:00
Christoph Oelckers
71d1138376 - refactored the global lines array into a more VM friendly form, moved it to FLevelLocals and exported it to ZScript.
- disabled the Build map loader after finding out that it has been completely broken and nonfunctional for a long time. Since this has no real value it will probably removed entirely in an upcoming commit.
2017-01-08 14:39:16 +01:00
Christoph Oelckers
ed25cf61c5 - moved the msecnode code to its own file.
Note that this originates from Boom so it needs to keep the Doom license.
2017-01-06 12:54:01 +01:00
Christoph Oelckers
b11c8fef57 - renamed a few variables for clarity. 2017-01-06 11:56:17 +01:00
Christoph Oelckers
9948189193 - scriptified PowerProtection and PowerDamage.
- made ModifyDamage calls iterative instead of recursive. With going through the VM they'd be too costly otherwise.
- small optimization: Detect empty VM functions right when entering the VM and shortcut them. This is to reduce the overhead of virtual placeholders, which in a few cases (e.g. CanCollideWith and ModifyDamage) can be called quite frequently.
2017-01-01 23:11:48 +01:00
Christoph Oelckers
a105a08bd6 - restored the original implementation of DONTOVERLAP, because Heretic depends on it being somewhat broken.
A side effect of the incorrect implementation is that Gargoyles hitting other Gargoyles won't call P_DamageMobj.
2016-12-30 20:00:24 +01:00
Christoph Oelckers
721b2fb21d - fixed: Instant floor movers should disable z-interpolation for all affected actors. 2016-12-27 21:16:42 +01:00
Christoph Oelckers
4bf19fb665 - don't let monsters block teleports of non-solid inventory items. Doom's code never considered such a possibility and would consider the move blocking, despite the item being non-solid. 2016-12-27 15:34:44 +01:00
Christoph Oelckers
e9574276a5 - added CanCollideWith calls to a few more places where they are needed. 2016-12-26 22:33:07 +01:00