Build 10651
GIT-
Fix null pointer dereferences in case of showing inventory bar right before player kill
SVN handles and Git names are merged into one person.
Fix null pointer dereferences in case of showing inventory bar right before player kill
Increase mmulti.cpp's MAXPAKSIZE (size of pakbuf in bytes) to 2048.
This appeared to fix a long-standing issue, where a relatively high ping between two players (say, about 750ms) could start increasing over time due to accumulated messages not being sent sufficiently fast.
Fixed player movement prediction, now actually based on predicted angle
Fix switch to double Uzi for multiplayer games upon pick-up of second Uzi
Fix multiplayer sync errors with the weapon auto-switching toggle
This also permanently enables weapon auto-switching for PedanticMode. The idea here is that outside of pedantic mode, within multiplayer games, a new bit or more of the inspected player's Flags2 field will be set for the weapon. Afterwards, only for player no. myconnectindex, the function getinput will set loc->bits as if a matching key was pressed for selecting the weapon. loc->bits should be properly synced. Note that each player's structure, including Flags2, is reset within InitNewGame, but not from InitLevel as far as I may tell.
Fix playback volumes of "Duke-Tag!" announcement sounds
The modified code has an unconditional call to S_PlaySound from S_PlaySound3D with no check of the flag SF_GLOBAL. This is also done with a higher priority than Duke Talk sounds now, which should similarly match DOS v1.5.
Fix typo in PR light offset for EXPLOSION2.
Also fixes attempts to read data for sprite no. -1 in case of no parent sprite.
Revert 22d85479a52ea9fd066daf283b3941b934858808.
There are maps which depend on projectiles getting reflected by walls with the picnum of MIRROR.
app_main macOS fix (the #endif used to be followed by OSD_SetLogFile)
Fix a typo in P_DisplayWeapon from port of SHOTGUN_WEAPON case for WW2GI
Process empty skill name definitions as if they were " ".
Fixes assertion failure with Suburbs TC.
Fix buffer overflows with parsing out of range strings in CON files
Fix potential crashes in menu if no ALSA MIDI device is found
Revert "sw/src/game.cpp: Use initsingleplayers instead of initmultiplayers"
This reverts commit 4274a6160ce2f64676b79364cf83f185814811f6, i.e., SVN r8667.
Fix a possible jitter upon changing the player's action
(e.g., beginning to jump, or landing on ground); Reproduced with the input being tied to framerate while SO interpolation is toggled on. This involves the following modifications: - PF2_INPUT_CAN_TURN and PF2_INPUT_CAN_AIM are now additionally set from various DoPlayerBegin* functions, allowing the player to continue turning/aiming as usual (right before the next call to domovethings), even in specific instances of player action changes. - If PF2_INPUT_CAN_TURN/PF2_INPUT_CAN_AIM was set before and after calling pp->DoPlayerAction from domovethings altogether, ensure that the player's oq16ang/oq16horiz is updated by making an appropriate call to DoPlayerTurn/DoPlayerHorizon. This is done in case a call to DoPlayerTurn/DoPlayerHorizon is missed. This change is not applied for a dead player, though.
This should hopefully be a better way of fixing the lack of
interpolation of player turning/aiming/movement, while being carried by a sector object, without SO interpolation. This is a continuation of 73a0aa394e906a65633d61f3c749c9b9b7e66aaa and bf31bc2987a3eccd31d343622327bd4ee0f9c5a1, aiming to fix a jitter in case the player is continuously getting pushed by a wall (e.g., on the boat in level 5). Basically, this moves the relevant assignments from track.cpp:MovePlayer and MovePoints to player.cpp:DoPlayerMove. Unless a call to one of these functions has been missed, pushwall and clipmove can be called from player.cpp in the following instances, which should be covered: - Via DoPlayerMove, which is the function getting the fix now. - Via DoPlayerSlide, which is called in the beginning of DoPlayerMove. - Via DoPlayerCurrent when called from DoPlayerCrawl/DoPlayerWade, followed by DoPlayerMove. - Via DoPlayerCurrent when called from DoPlayerDive, followed by DoPlayerMove if the player doesn't stop diving.
Typo fix in mmulti.cpp:netinit warning message related to IPV6
sw/src/copysect.cpp: Temporarily disable interpolation of sector object
if any of its sectors is impacted by CopySectorWalls. Fixes a possible flicker with the drill at the end of level 2.
While not exactly a favorite of mine, this fixes the floorz updates
of the secret rotating pillar in level 1 with SO interpolation. The drill in level 2 is also covered. So far, SetVatorActive seems to be the only place where interpolation of ceiling/floorz may be set, outside of the SO interpolation code.
Call FunctionKeys from getinput only if the latter is called
from faketimerhandler. This should fix the timing of playing an RTS file's sound and sending the corresponding message.
Fix aiming in coop view
sw/src/network.cpp: Fix waitforeverybody in Master/Slave
modes. This uses SVN r1135 and r1143 as a reference.
sw/src/network.cpp: Fix sending of messages in Master/Slave.
Thanks Dynamo for spotting the bug.
Migrate the player's RevolveAng field to Q16.16 format.
This fixes truncations of q16ang in MovePlayer. One known fixed issue is a minor micro-shaking effect, reproduced while standing on a non-moving SO (e.g., the bus in level 1). The latter is also related to the use of camq16ang. Based in idea on patch from mjr4077au.
Use pragma pack in sw/src/network.h instead of the locally defined
PACKED macro. This is more consistent with the current Duke3D codebase, and further fixes build with older versions of MinGW GCC, in which attribute packed is broken without specifying -mno-ms-bitfields.
Fix usage of possibly wrong address in sw/src/player.cpp:DoPlayerHorizon
Interpolation fixes for SW:
draw.cpp: Fix the lack of interpolation while walking on a sector object, like the bus roof or the floor of the train in Seppuku Station. track.cpp: Make sure the player's location and angle aren't mistakenly interpolated while standing on a moving sector object as a consequence.
Revert SVN commit 8677; It wasn't sufficient in case
one of the players toggled mouse aiming in the middle of a game, and it worked even worse in Master/Slave mode. Additionally, tying input to frame rate made the problem disappear.
We can revert the change of siang to q16 now
Revert commented out horiz->q16horiz renames in DSPRINTF strings
Fix typo in DoPlayerTeleportToSprite, following the migration to q16 angles
Fix multiplayer desync after the change to q16 angle and horiz.
Note that this includes non-portable unaligned accesses, but this already applies to surrounding code. Just add comments for now.