Commit Graph

6686 Commits

Author SHA1 Message Date
Christoph Oelckers 0a1e22aa7a - fixed: FPathTraverse::init kills the intercepts array so PortalRelocate needs to store the line before calling that function. 2016-03-08 18:45:52 +01:00
Christoph Oelckers 42521ffd6f - fixed some mixed up variables in a few blockmap iterators. 2016-03-08 18:34:58 +01:00
Christoph Oelckers 7c47e6ddb2 - how about updating the reference first before adding this stuff... Overlooked those two because my Eternity repo was not fully up to date. 2016-03-08 16:05:53 +01:00
Christoph Oelckers 6787dfeafb - updated xlat/eternity.txt 2016-03-08 16:01:26 +01:00
alexey.lysiuk 209b495e10 Fixed potential crash in DeHackEd loading
The patch content was destructed and then accessed when loading DeHackEd file of old/unsupported version
Do not print the whole patch content to console but only a filename
2016-03-08 16:28:11 +02:00
Christoph Oelckers 899389e6a4 - link actors into blockmap through linked line portals.
Links through sector portals are not done because nearly all the checks can be performed without doing this so if it works without there's no need to add more processing time.
Will have to see if there's cases left where such a link is needed and if so, whether there's better options to do it.

For line portals such links are necessary to have proper collision detection with actors that are currently transitioning the portal.
2016-03-08 14:41:37 +01:00
Christoph Oelckers 9d877f75e3 - second part of last commit. This file was accidentally unselected. 2016-03-08 14:35:36 +01:00
Christoph Oelckers 1815b076ee - don't show the IWAD picker upon restart. This doesn't work with fullscreen mode. Instead just pick the first IWAD from the list until a better solution can be implemented.
- handle a 'restart' CCMD a bit more controlled. Instead of throwing an exception in the CCMD handler it now just flags D_DoomLoop to return.

If the exception is thrown within the CCMD this can easily happen deep inside the renderer when it calls NetUpdate. But since the software renderer with its use of global variables is not equipped to be yanked out of lile this it could leave broken data behind that caused glitches or even crashes on subsequently played maps.
2016-03-08 13:07:21 +01:00
Christoph Oelckers e11a0986ce - encountered a strange crash that after changing a map, InSubsector was not NULL and pointing to invalid data. So let's better NULL this variable explicitly each time a render loop is started. 2016-03-08 12:27:01 +01:00
Christoph Oelckers 4ebdcb7b6d - fixed: The result condition of a hitscan subtrace was never checked. 2016-03-08 11:55:40 +01:00
Christoph Oelckers f852ead99a - fixed: The initial check for ceiling and floor portals must be done when the trace's start position and its sector has been calculated. SightCheck::init is too early for that. 2016-03-08 10:44:03 +01:00
Christoph Oelckers f35d966799 - don't allow any ceiling portal that has a lower position than a floor portal in the same sector. The will inevitably lead to problematic situations. 2016-03-08 10:09:02 +01:00
Christoph Oelckers 50d2145ba0 - fixed typo in portal init code. 2016-03-08 09:41:54 +01:00
Christoph Oelckers 2cd74118f6 - fixed sight checking through portals.
Notes:
 * It is actually not enough to disable the early-out condition for the current block if there's a portal. It must be disabled for the entire rest of the trace because otherwise the collected lines never get processed.
 * The block bounds check cannot be done globally with portals in the game. The actual trace can easily end up outside the blockmap bounds if portal offsets are factored into the distance between the two actors.
2016-03-08 01:26:13 +01:00
Christoph Oelckers bd29f0994f - restored accidentally deleted line. 2016-03-07 23:41:16 +01:00
Christoph Oelckers cc2885c2de - fixed int/fixed_t mixup with P_RadiusAttack's 'bombdistance' parameter. (Why is this thing even an int...?) 2016-03-07 22:05:19 +01:00
Christoph Oelckers 3c25b2c066 - some redesign of P_CheckSight to handle portals.
Portal stuff not tested yet.
2016-03-07 21:59:32 +01:00
Randy Heit f82c217047 Fixed: In multiplayer, players could spawn at voodoo doll starts
- This could happen in co-op games that did not have enough player starts
  for all the players spawning. Voodoo doll starts were not excluded from
  the set of possible starts as they should have been.
2016-03-07 10:58:16 -06:00
Randy Heit e277fbe81d Fixed some incorrectness with some Hexen crushing specials
- The following Hexen specials all stop 8 units above the floor:
  * Ceiling_CrushRaiseAndStay
  * Ceiling_CrushAndRaise
  * Ceiling_LowerAndCrush
  We only and Ceiling_LowerAndCrush correct. Clearly, I should have paid
  more attention when the Hexen source was released for the parts that I
  had already reverse engineered.
2016-03-07 10:24:30 -06:00
Randy Heit 8b9a0da5ef That was hard to read 2016-03-07 09:58:52 -06:00
MajorCooke af50a79e55 - Fixed: ScaleY was not defaulting to ScaleX when specified as 0, which is how the behavior originally was in 2.8. This behavior can now be toggled with a new boolean, 'usezero'. 2016-03-07 09:02:34 -06:00
Christoph Oelckers fe4bc31d59 - fixed some bad offset calculations. 2016-03-07 11:36:51 +01:00
Edoardo Prezioso a65b0d7d4c - Fixed misaligned pointer access error in zipdir.
It happens if zipdir is compiled with GCC/Clang UBSan and is run on an already existing zdoom.pk3.
2016-03-06 23:24:31 -05:00
Randy Heit 72edd7d455 Fixed: GetVarAddrType() bounds check was inverted 2016-03-06 22:17:30 -06:00
Christoph Oelckers 13a7507c4d - should have saved that... 2016-03-07 01:48:13 +01:00
Christoph Oelckers 8f71906fc3 - added portal support to P_RadiusAttack.
This currently only works for linked portals. For other types some major refactoring may be necessary because it not only requires multiple passes of P_RadiusAttack but also an alteration of how sight checks work.
2016-03-07 01:02:48 +01:00
Christoph Oelckers 7d7112f427 - added portal support to A_ThrustImpale, P_PushUp and P_PushDown. 2016-03-07 00:17:52 +01:00
Christoph Oelckers 5175d56129 - made adjustments to P_LineAttack and P_RailAttack to deal with altered angles by passing through a non-parallel portal.
- fixed: P_FindFloorCeiling set the floorsector for a new ceilingheight.

Note: P_DrawRailTrail still needs to be changed, at the moment rail trails through portals will not work correctly.
2016-03-06 21:58:36 +01:00
Christoph Oelckers 90553bb61c - deal with portals in P_AimCamera.
This will most likely need some more testing and refining but at least it should work through line portals now.
2016-03-06 13:10:42 +01:00
Christoph Oelckers a0b2915b8f - added a heightsec change when aborting the main trace due to having found a target in a subtrace.
- be a bit smarter about what to copy from a subtrace. There's 3 distinct pieces of information here: The hit itself, the CrossedWater setting for Boom-transfers and the CrossedWater setting for 3D floors.

Note: Ideally this should return all water hits it can detect, not just the first one.
2016-03-06 02:07:04 +01:00
Christoph Oelckers 74592334e4 - fixed return conditions of Trace() so that it always returns something valid. Due to the portal related changes the default initialization for TRACE_HitNone must be inside TraceTraverse. 2016-03-06 01:41:52 +01:00
Christoph Oelckers ae4cc9669b - added line portal support to Trace(). 2016-03-06 01:04:19 +01:00
Christoph Oelckers 983e8bc6a5 - explicitly check NAME_Null in P_FindTerrain so that it cannot get rendered inoperable by mods which hijack this name. This name must be reserved so that there is some means to disable a sector's terrain. 2016-03-05 22:39:53 +01:00
Christoph Oelckers 97577dc2d7 - added sector portal support to Trace()
Note that at the moment only the function itself has been changed, the calling parts still need to be redone.
2016-03-05 21:44:31 +01:00
Christoph Oelckers c455c60480 - fixed: calculating open.range requires signed math.
- fixed: FMultiBlockLinesIterator initialized continueup twice but forgot continuedown.
- fixed: One of the debug messages in P_AimLineAttack was missing an if (aimdebug).
2016-03-05 01:23:27 +01:00
Christoph Oelckers b9c72e372b - fixed bad loop handling in FWeaponSlots::SetFromGameInfo(). 2016-03-04 16:25:23 +01:00
Christoph Oelckers d1f17e0b46 - fixed: The checks in P_IsThingSpecial was broken. 2016-03-04 16:23:40 +01:00
Christoph Oelckers e290bc6fd0 - fixed: In Hexen, ThrustThing can not be triggered from the backside of a line.
This gets only activated when the HEXENHACK flag is set. For ZDoom maps there is a specific line flag to handle this condition explicitly.
2016-03-04 15:24:13 +01:00
Christoph Oelckers caf2ca0df7 - fixed: CallStateChain must never allow a jumping function to set the chain's overall result to successful. 2016-03-04 15:11:20 +01:00
Christoph Oelckers b427f27e3b - fixed: line portal rotations were not set for all types. 2016-03-04 14:09:26 +01:00
alexey.lysiuk 9b23b41021 Added detection for broken WAD files
Do not try to allocate nonsensical amount of memory and bail out when broken WAD is detected
See http://forum.drdteam.org/viewtopic.php?t=6844
2016-03-04 11:32:15 +01:00
Christoph Oelckers 93323b64f8 - explicitly force SSE2 for Visual Studio 64 bit projects so that the advanced instruction sets don't get activated by accident. 2016-03-04 10:16:23 +01:00
Randy Heit e4a74f4bbe Fix memory leak from ZCC_OpInfo operator prototypes 2016-03-03 20:26:41 -06:00
Christoph Oelckers 5c1ec2c0bf - added some more British English text variants. 2016-03-04 01:46:37 +01:00
Randy Heit 964ff46063 Add new state options to parser and actually enable them
- Added new state options that DECORATE got to the lemon parser.
- Enable token generation for state options. They were previously not
  generated, so the grammar treated them as function calls instead.
2016-03-03 18:33:07 -06:00
Randy Heit 078d37e073 Pretty sure this was a typo 2016-03-03 18:33:07 -06:00
Christoph Oelckers 0c37a90e32 - moved the initial 3D floor check from Trace to TraceTraverse, because that's where it will be needed for handling portals. 2016-03-04 01:13:17 +01:00
Christoph Oelckers 9f805daa73 - added missing handling of ALF_PORTALRESTRICT flag. 2016-03-04 01:13:16 +01:00
Christoph Oelckers 81b634a798 - preparation for making Trace portal aware: Added a new flag Trace_PortalRestrict, so that I could disable portals without static offset for P_LinePickActor and A_CheckLOF, because both depend on the target info being retainable which requires a static offset. 2016-03-04 01:13:16 +01:00
Randy Heit 3c2ed52442 Fix 21:9 base width and height values 2016-03-03 18:00:06 -06:00