diff --git a/source/games/duke/src/player_d.cpp b/source/games/duke/src/player_d.cpp index 0fcaefc30..3351d4df4 100644 --- a/source/games/duke/src/player_d.cpp +++ b/source/games/duke/src/player_d.cpp @@ -3171,4 +3171,22 @@ void processweapon_d(int s, int ss, int p) processweapon(s, ss, p); } +void processmove_d(int snum, int sb_snum, int psect, int fz, int cz, int shrunk, int truefdist) +{ + int psectlotag = sector[psect].lotag; + auto p = &ps[snum]; + if (psectlotag == 2) + { + underwater(snum, sb_snum, psect, fz, cz); + } + + else if (p->jetpack_on) + { + operateJetpack(snum, sb_snum, psectlotag, fz, cz, shrunk); + } + else if (psectlotag != 2) + { + movement(snum, sb_snum, psect, fz, cz, shrunk, truefdist); + } +} END_DUKE_NS diff --git a/source/games/duke/src/player_r.cpp b/source/games/duke/src/player_r.cpp index 20ff75b98..48462d9ae 100644 --- a/source/games/duke/src/player_r.cpp +++ b/source/games/duke/src/player_r.cpp @@ -1557,7 +1557,7 @@ void checkweapons_r(struct player_struct* p) // //--------------------------------------------------------------------------- -static void onMotorcycle(int snum, int &sb_snum) +/*static*/ void onMotorcycle(int snum, int &sb_snum) { auto p = &ps[snum]; auto pi = p->i; @@ -1846,7 +1846,7 @@ static void onMotorcycle(int snum, int &sb_snum) // //--------------------------------------------------------------------------- -static void onBoat(int snum, int sb_snum) +/*static*/ void onBoat(int snum, int& sb_snum) { auto p = &ps[snum]; auto pi = p->i; @@ -4268,4 +4268,19 @@ void processweapon_r(int s, int ss, int p) processweapon(s, ss, p); } +void processmove_r(int snum, int sb_snum, int psect, int fz, int cz, int shrunk, int truefdist) +{ + int psectlotag = sector[psect].lotag; + auto p = &ps[snum]; + if (psectlotag == 2) + { + underwater(snum, sb_snum, psect, fz, cz); + } + + else if (psectlotag != 2) + { + movement(snum, sb_snum, psect, fz, cz, shrunk, truefdist); + } +} + END_DUKE_NS diff --git a/source/games/duke/src/zz_player.cpp b/source/games/duke/src/zz_player.cpp index d341b6a32..befb15f2e 100644 --- a/source/games/duke/src/zz_player.cpp +++ b/source/games/duke/src/zz_player.cpp @@ -1907,6 +1907,8 @@ static int P_CheckLockedMovement(int const playerNum) if (pPlayer->newowner != -1) return IL_NOANGLE|IL_NOHORIZ; + if (pPlayer->curr_weapon > 11) return 0; + if (pPlayer->dead_flag || pPlayer->fist_incs || pPlayer->transporter_hold > 2 || pPlayer->hard_landing || pPlayer->access_incs > 0 || pPlayer->knee_incs > 0 || (PWEAPON(playerNum, pPlayer->curr_weapon, WorksLike) == TRIPBOMB_WEAPON && pPlayer->kickback_pic > 1 @@ -2971,6 +2973,8 @@ void P_FragPlayer(int playerNum) void processweapon_d(int s, int ss, int p); void processweapon_r(int s, int ss, int p); +void processmove_d(int snum, int sb_snum, int psect, int fz, int cz, int shrunk, int truefdist); +void processmove_r(int snum, int sb_snum, int psect, int fz, int cz, int shrunk, int truefdist); static void P_ProcessWeapon(int playerNum) { @@ -3091,117 +3095,6 @@ void P_UpdatePosWhenViewingCam(DukePlayer_t *pPlayer) pPlayer->rotscrnang = 0; } -static void P_DoWater(int const playerNum, int const playerBits, int const floorZ, int const ceilZ) -{ - DukePlayer_t *const pPlayer = g_player[playerNum].ps; - - // under water - pPlayer->pycount += 32; - pPlayer->pycount &= 2047; - pPlayer->jumping_counter = 0; - pPlayer->pyoff = sintable[pPlayer->pycount] >> 7; - - if (!A_CheckSoundPlaying(pPlayer->i, DUKE_UNDERWATER)) - A_PlaySound(DUKE_UNDERWATER, pPlayer->i); - - if (TEST_SYNC_KEY(playerBits, SK_JUMP) && (!RRRA || !pPlayer->OnMotorcycle)) - { - pPlayer->vel.z = max(min(-348, pPlayer->vel.z - 348), -(256 * 6)); - } - else if ((TEST_SYNC_KEY(playerBits, SK_CROUCH) && (!RRRA || !pPlayer->OnMotorcycle)) - || (RRRA && pPlayer->OnMotorcycle)) - { - pPlayer->vel.z = min(max(348, pPlayer->vel.z + 348), (256 * 6)); - } - else - { - // normal view - if (pPlayer->vel.z < 0) - pPlayer->vel.z = min(0, pPlayer->vel.z + 256); - - if (pPlayer->vel.z > 0) - pPlayer->vel.z = max(0, pPlayer->vel.z - 256); - } - - if (pPlayer->vel.z > 2048) - pPlayer->vel.z >>= 1; - - pPlayer->pos.z += pPlayer->vel.z; - - if (pPlayer->pos.z > (floorZ-(15<<8))) - pPlayer->pos.z += ((floorZ-(15<<8))-pPlayer->pos.z)>>1; - - if (pPlayer->pos.z < ceilZ+ZOFFSET6) - { - pPlayer->pos.z = ceilZ+ZOFFSET6; - pPlayer->vel.z = 0; - } - - if (pPlayer->scuba_on && (krand2()&255) < 8) - { - int const spriteNum = fi.spawn(pPlayer->i, TILE_WATERBUBBLE); - int const q16ang = fix16_to_int(pPlayer->q16ang); - - sprite[spriteNum].x += sintable[(q16ang + 512 + 64 - (g_globalRandom & 128)+(RR ? 128 : 0)) & 2047] >> 6; - sprite[spriteNum].y += sintable[(q16ang + 64 - (g_globalRandom & 128)+(RR ? 128 : 0)) & 2047] >> 6; - sprite[spriteNum].xrepeat = 3; - sprite[spriteNum].yrepeat = 2; - sprite[spriteNum].z = pPlayer->pos.z + ZOFFSET3; - if (RR) - sprite[spriteNum].cstat = 514; - } -} -static void P_DoJetpack(int const playerNum, int const playerBits, int const playerShrunk, int const sectorLotag, int const floorZ) -{ - DukePlayer_t *const pPlayer = g_player[playerNum].ps; - - pPlayer->on_ground = 0; - pPlayer->jumping_counter = 0; - pPlayer->hard_landing = 0; - pPlayer->falling_counter = 0; - pPlayer->pycount += 32; - pPlayer->pycount &= 2047; - pPlayer->pyoff = sintable[pPlayer->pycount] >> 7; - - if (pPlayer->jetpack_on < 11) - { - pPlayer->jetpack_on++; - pPlayer->pos.z -= (pPlayer->jetpack_on<<7); //Goin up - } - else if (pPlayer->jetpack_on == 11 && !A_CheckSoundPlaying(pPlayer->i, DUKE_JETPACK_IDLE)) - A_PlaySound(DUKE_JETPACK_IDLE, pPlayer->i); - - int const zAdjust = playerShrunk ? 512 : 2048; - - if (TEST_SYNC_KEY(playerBits, SK_JUMP)) // jumping, flying up - { - if (VM_OnEvent(EVENT_SOARUP, pPlayer->i, playerNum) == 0) - { - pPlayer->pos.z -= zAdjust; - pPlayer->crack_time = 777; - } - } - - if (TEST_SYNC_KEY(playerBits, SK_CROUCH)) // crouching, flying down - { - if (VM_OnEvent(EVENT_SOARDOWN, pPlayer->i, playerNum) == 0) - { - pPlayer->pos.z += zAdjust; - pPlayer->crack_time = 777; - } - } - - int const Zdiff = (playerShrunk == 0 && (sectorLotag == 0 || sectorLotag == ST_2_UNDERWATER)) ? 32 : 16; - - if (sectorLotag != ST_2_UNDERWATER && pPlayer->scuba_on == 1) - pPlayer->scuba_on = 0; - - if (pPlayer->pos.z > (floorZ - (Zdiff << 8))) - pPlayer->pos.z += ((floorZ - (Zdiff << 8)) - pPlayer->pos.z) >> 1; - - if (pPlayer->pos.z < (actor[pPlayer->i].ceilingz + (18 << 8))) - pPlayer->pos.z = actor[pPlayer->i].ceilingz + (18 << 8); -} static void P_Dead(int const playerNum, int const sectorLotag, int const floorZ, int const ceilZ) { @@ -3254,6 +3147,9 @@ static void P_HandlePal(DukePlayer_t *const pPlayer) pPlayer->pals.f--; } +void onMotorcycle(int snum, int& sb_snum); +void onBoat(int snum, int& sb_snum); + void P_ProcessInput(int playerNum) { auto &thisPlayer = g_player[playerNum]; @@ -3269,7 +3165,7 @@ void P_ProcessInput(int playerNum) ++pPlayer->player_par; - uint32_t playerBits = thisPlayer.input->bits; + int playerBits = thisPlayer.input->bits; if (RR) { @@ -3286,537 +3182,11 @@ void P_ProcessInput(int playerNum) { if (pPlayer->OnMotorcycle && pSprite->extra > 0) { - int var64, var68, var6c, var74, var7c; - int16_t var84; - if (pPlayer->MotoSpeed < 0) - pPlayer->MotoSpeed = 0; - if (TEST_SYNC_KEY(playerBits, SK_CROUCH)) - { - var64 = 1; - playerBits &= ~(1<on_ground) - { - if (pPlayer->MotoSpeed == 0 && var64) - { - if (!A_CheckSoundPlaying(pPlayer->i, 187)) - A_PlaySound(187,pPlayer->i); - } - else if (pPlayer->MotoSpeed == 0 && !A_CheckSoundPlaying(pPlayer->i, 214)) - { - if (A_CheckSoundPlaying(pPlayer->i, 187)) - S_StopEnvSound(187, pPlayer->i); - A_PlaySound(214,pPlayer->i); - } - else if (pPlayer->MotoSpeed >= 50 && !A_CheckSoundPlaying(pPlayer->i, 188)) - { - A_PlaySound(188,pPlayer->i); - } - else if (!A_CheckSoundPlaying(pPlayer->i, 188) && !A_CheckSoundPlaying(pPlayer->i, 214)) - { - A_PlaySound(188,pPlayer->i); - } - } - } - else - { - var68 = 0; - if (A_CheckSoundPlaying(pPlayer->i, 214)) - { - S_StopEnvSound(214, pPlayer->i); - if (!A_CheckSoundPlaying(pPlayer->i, 189)) - A_PlaySound(189,pPlayer->i); - } - if (A_CheckSoundPlaying(pPlayer->i, 188)) - { - S_StopEnvSound(188, pPlayer->i); - if (!A_CheckSoundPlaying(pPlayer->i, 189)) - A_PlaySound(189, pPlayer->i); - } - if (!A_CheckSoundPlaying(pPlayer->i, 189) && !A_CheckSoundPlaying(pPlayer->i, 187)) - A_PlaySound(187,pPlayer->i); - } - if (TEST_SYNC_KEY(playerBits, SK_AIM_UP)) - { - var6c = 1; - playerBits &= ~(1<drink_amt > 88 && pPlayer->moto_drink == 0) - { - var84 = krand2() & 63; - if (var84 == 1) - pPlayer->moto_drink = -10; - else if (var84 == 2) - pPlayer->moto_drink = 10; - } - else if (pPlayer->drink_amt > 99 && pPlayer->moto_drink == 0) - { - var84 = krand2() & 31; - if (var84 == 1) - pPlayer->moto_drink = -20; - else if (var84 == 2) - pPlayer->moto_drink = 20; - } - if (pPlayer->on_ground == 1) - { - if (var64 && pPlayer->MotoSpeed > 0) - { - if (pPlayer->moto_on_oil) - pPlayer->MotoSpeed -= 2; - else - pPlayer->MotoSpeed -= 4; - if (pPlayer->MotoSpeed < 0) - pPlayer->MotoSpeed = 0; - pPlayer->VBumpTarget = -30; - pPlayer->moto_do_bump = 1; - } - else if (var68 && !var64) - { - if (pPlayer->MotoSpeed < 40) - { - pPlayer->VBumpTarget = 70; - pPlayer->moto_bump_fast = 1; - } - pPlayer->MotoSpeed += 2; - if (pPlayer->MotoSpeed > 120) - pPlayer->MotoSpeed = 120; - if (!pPlayer->NotOnWater) - if (pPlayer->MotoSpeed > 80) - pPlayer->MotoSpeed = 80; - } - else if (pPlayer->MotoSpeed > 0) - pPlayer->MotoSpeed--; - if (pPlayer->moto_do_bump && (!var64 || pPlayer->MotoSpeed == 0)) - { - pPlayer->VBumpTarget = 0; - pPlayer->moto_do_bump = 0; - } - if (var6c && pPlayer->MotoSpeed <= 0 && !var64) - { - int var88; - pPlayer->MotoSpeed = -15; - var88 = var7c; - var7c = var74; - var74 = var88; - } - } - if (pPlayer->MotoSpeed != 0 && pPlayer->on_ground == 1) - { - if (!pPlayer->VBumpNow) - if ((krand2() & 3) == 2) - pPlayer->VBumpTarget = (pPlayer->MotoSpeed >> 4) * ((krand2() & 7) - 4); - if (var74 || pPlayer->moto_drink < 0) - { - if (pPlayer->moto_drink < 0) - pPlayer->moto_drink++; - } - else if (var7c || pPlayer->moto_drink > 0) - { - if (pPlayer->moto_drink > 0) - pPlayer->moto_drink--; - } - } - if (pPlayer->TurbCount) - { - if (pPlayer->TurbCount <= 1) - { - pPlayer->q16horiz = F16(100); - pPlayer->TurbCount = 0; - pPlayer->VBumpTarget = 0; - pPlayer->VBumpNow = 0; - } - else - { - pPlayer->q16horiz = F16(100+((krand2()&15)-7)); - pPlayer->TurbCount--; - pPlayer->moto_drink = (krand2()&3)-2; - } - } - else if (pPlayer->VBumpTarget > pPlayer->VBumpNow) - { - if (pPlayer->moto_bump_fast) - pPlayer->VBumpNow += 6; - else - pPlayer->VBumpNow++; - if (pPlayer->VBumpTarget < pPlayer->VBumpNow) - pPlayer->VBumpNow = pPlayer->VBumpTarget; - pPlayer->q16horiz = F16(100+pPlayer->VBumpNow/3); - } - else if (pPlayer->VBumpTarget < pPlayer->VBumpNow) - { - if (pPlayer->moto_bump_fast) - pPlayer->VBumpNow -= 6; - else - pPlayer->VBumpNow--; - if (pPlayer->VBumpTarget > pPlayer->VBumpNow) - pPlayer->VBumpNow = pPlayer->VBumpTarget; - pPlayer->q16horiz = F16(100+pPlayer->VBumpNow/3); - } - else - { - pPlayer->VBumpTarget = 0; - pPlayer->moto_bump_fast = 0; - } - if (pPlayer->MotoSpeed >= 20 && pPlayer->on_ground == 1 && (var74 || var7c)) - { - short var8c, var90, var94, var98; - var8c = pPlayer->MotoSpeed; - var90 = fix16_to_int(pPlayer->q16ang); - if (var74) - var94 = -10; - else - var94 = 10; - if (var94 < 0) - var98 = 350; - else - var98 = -350; - if (pPlayer->moto_on_mud || pPlayer->moto_on_oil || !pPlayer->NotOnWater) - { - if (pPlayer->moto_on_oil) - var8c <<= 3; - else - var8c <<= 2; - if (pPlayer->moto_do_bump) - { - pPlayer->vel.x += (var8c>>5)*(sintable[(var94*-51+var90+512)&2047]<<4); - pPlayer->vel.y += (var8c>>5)*(sintable[(var94*-51+var90)&2047]<<4); - pPlayer->q16ang = F16((var90-(var98>>2))&2047); - } - else - { - pPlayer->vel.x += (var8c>>7)*(sintable[(var94*-51+var90+512)&2047]<<4); - pPlayer->vel.y += (var8c>>7)*(sintable[(var94*-51+var90)&2047]<<4); - pPlayer->q16ang = F16((var90-(var98>>6))&2047); - } - pPlayer->moto_on_mud = 0; - pPlayer->moto_on_oil = 0; - } - else - { - if (pPlayer->moto_do_bump) - { - pPlayer->vel.x += (var8c >> 5)*(sintable[(var94*-51 + var90 + 512) & 2047] << 4); - pPlayer->vel.y += (var8c>>5)*(sintable[(var94*-51+var90)&2047]<<4); - pPlayer->q16ang = F16((var90-(var98>>4))&2047); - if (!A_CheckSoundPlaying(pPlayer->i, 220)) - A_PlaySound(220,pPlayer->i); - } - else - { - pPlayer->vel.x += (var8c >> 7)*(sintable[(var94*-51 + var90 + 512) & 2047] << 4); - pPlayer->vel.y += (var8c>>7)*(sintable[(var94*-51+var90)&2047]<<4); - pPlayer->q16ang = F16((var90-(var98>>7))&2047); - } - } - } - else if (pPlayer->MotoSpeed >= 20 && pPlayer->on_ground == 1 && (pPlayer->moto_on_mud || pPlayer->moto_on_oil)) - { - short var9c, vara0, vara4 = 0; - var9c = pPlayer->MotoSpeed; - vara0 = fix16_to_int(pPlayer->q16ang); - var84 = krand2()&1; - if (var84 == 0) - vara4 = -10; - else if (var84 == 1) - vara4 = 10; - if (pPlayer->moto_on_oil) - var9c *= 10; - else - var9c *= 5; - pPlayer->vel.x += (var9c>>7)*(sintable[(vara4*-51+vara0+512)&2047]<<4); - pPlayer->vel.y += (var9c>>7)*(sintable[(vara4*-51+vara0)&2047]<<4); - } - pPlayer->moto_on_mud = 0; - pPlayer->moto_on_oil = 0; + onMotorcycle(playerNum, playerBits); } else if (pPlayer->OnBoat && pSprite->extra > 0) { - int vara8, varac, varb0, varb4, varbc, varc4; - int16_t varcc; - if (pPlayer->NotOnWater) - { - if (pPlayer->MotoSpeed > 0) - { - if (!A_CheckSoundPlaying(pPlayer->i, 88)) - A_PlaySound(88,pPlayer->i); - } - else - { - if (!A_CheckSoundPlaying(pPlayer->i, 87)) - A_PlaySound(87,pPlayer->i); - } - } - if (pPlayer->MotoSpeed < 0) - pPlayer->MotoSpeed = 0; - if (TEST_SYNC_KEY(playerBits, SK_CROUCH) && TEST_SYNC_KEY(playerBits, SK_JUMP)) - { - vara8 = 1; - varac = 0; - playerBits &= ~(1<MotoSpeed == 0 && !A_CheckSoundPlaying(pPlayer->i, 89)) - { - if (A_CheckSoundPlaying(pPlayer->i, 87)) - S_StopEnvSound(pPlayer->i, 87); - A_PlaySound(89,pPlayer->i); - } - else if (pPlayer->MotoSpeed >= 50 && !A_CheckSoundPlaying(pPlayer->i, 88)) - A_PlaySound(88,pPlayer->i); - else if (!A_CheckSoundPlaying(pPlayer->i, 88) && !A_CheckSoundPlaying(pPlayer->i, 89)) - A_PlaySound(88,pPlayer->i); - } - else - { - varac = 0; - if (A_CheckSoundPlaying(pPlayer->i, 89)) - { - S_StopEnvSound(pPlayer->i, 89); - if (!A_CheckSoundPlaying(pPlayer->i, 90)) - A_PlaySound(90,pPlayer->i); - } - if (A_CheckSoundPlaying(pPlayer->i, 88)) - { - S_StopEnvSound(pPlayer->i, 88); - if (!A_CheckSoundPlaying(pPlayer->i, 90)) - A_PlaySound(90,pPlayer->i); - } - if (!A_CheckSoundPlaying(pPlayer->i, 90) && !A_CheckSoundPlaying(pPlayer->i, 87)) - A_PlaySound(87,pPlayer->i); - } - if (TEST_SYNC_KEY(playerBits, SK_CROUCH)) - { - varb0 = 1; - playerBits &= ~(1<i, 91) && pPlayer->MotoSpeed > 30 && !pPlayer->NotOnWater) - A_PlaySound(91,pPlayer->i); - } - else - { - varbc = 0; - } - if (TEST_SYNC_KEY(playerBits, SK_LOOK_LEFT)) - { - varc4 = 1; - playerBits &= ~(1<< SK_LOOK_LEFT); - if (!A_CheckSoundPlaying(pPlayer->i, 91) && pPlayer->MotoSpeed > 30 && !pPlayer->NotOnWater) - A_PlaySound(91,pPlayer->i); - } - else - { - varc4 = 0; - } - if (!pPlayer->NotOnWater) - { - if (pPlayer->drink_amt > 88 && pPlayer->moto_drink == 0) - { - varcc = krand2() & 63; - if (varcc == 1) - pPlayer->moto_drink = -10; - else if (varcc == 2) - pPlayer->moto_drink = 10; - } - else if (pPlayer->drink_amt > 99 && pPlayer->moto_drink == 0) - { - varcc = krand2() & 31; - if (varcc == 1) - pPlayer->moto_drink = -20; - else if (varcc == 2) - pPlayer->moto_drink = 20; - } - } - if (pPlayer->on_ground == 1) - { - if (vara8) - { - if (pPlayer->MotoSpeed <= 25) - { - pPlayer->MotoSpeed++; - if (!A_CheckSoundPlaying(pPlayer->i, 182)) - A_PlaySound(182, pPlayer->i); - } - else - { - pPlayer->MotoSpeed -= 2; - if (pPlayer->MotoSpeed < 0) - pPlayer->MotoSpeed = 0; - pPlayer->VBumpTarget = 30; - pPlayer->moto_do_bump = 1; - } - } - else if (varb0 && pPlayer->MotoSpeed > 0) - { - pPlayer->MotoSpeed -= 2; - if (pPlayer->MotoSpeed < 0) - pPlayer->MotoSpeed = 0; - pPlayer->VBumpTarget = 30; - pPlayer->moto_do_bump = 1; - } - else if (varac) - { - if (pPlayer->MotoSpeed < 40) - if (!pPlayer->NotOnWater) - { - pPlayer->VBumpTarget = -30; - pPlayer->moto_bump_fast = 1; - } - pPlayer->MotoSpeed++; - if (pPlayer->MotoSpeed > 120) - pPlayer->MotoSpeed = 120; - } - else if (pPlayer->MotoSpeed > 0) - pPlayer->MotoSpeed--; - if (pPlayer->moto_do_bump && (!varb0 || pPlayer->MotoSpeed == 0)) - { - pPlayer->VBumpTarget = 0; - pPlayer->moto_do_bump = 0; - } - if (varb4 && pPlayer->MotoSpeed == 0 && !varb0) - { - int vard0; - if (!pPlayer->NotOnWater) - pPlayer->MotoSpeed = -25; - else - pPlayer->MotoSpeed = -20; - vard0 = varc4; - varc4 = varbc; - varbc = vard0; - } - } - if (pPlayer->MotoSpeed != 0 && pPlayer->on_ground == 1) - { - if (!pPlayer->VBumpNow) - if ((krand2() & 15) == 14) - pPlayer->VBumpTarget = (pPlayer->MotoSpeed>>4)*((krand2()&3)-2); - if (varbc || pPlayer->moto_drink < 0) - { - if (pPlayer->moto_drink < 0) - pPlayer->moto_drink++; - } - else if (varc4 || pPlayer->moto_drink > 0) - { - if (pPlayer->moto_drink > 0) - pPlayer->moto_drink--; - } - } - if (pPlayer->TurbCount) - { - if (pPlayer->TurbCount <= 1) - { - pPlayer->q16horiz = F16(100); - pPlayer->TurbCount = 0; - pPlayer->VBumpTarget = 0; - pPlayer->VBumpNow = 0; - } - else - { - pPlayer->q16horiz = F16(100+((krand2()&15)-7)); - pPlayer->TurbCount--; - pPlayer->moto_drink = (krand2()&3)-2; - } - } - else if (pPlayer->VBumpTarget > pPlayer->VBumpNow) - { - if (pPlayer->moto_bump_fast) - pPlayer->VBumpNow += 6; - else - pPlayer->VBumpNow++; - if (pPlayer->VBumpTarget < pPlayer->VBumpNow) - pPlayer->VBumpNow = pPlayer->VBumpTarget; - pPlayer->q16horiz = F16(100+pPlayer->VBumpNow/3); - } - else if (pPlayer->VBumpTarget < pPlayer->VBumpNow) - { - if (pPlayer->moto_bump_fast) - pPlayer->VBumpNow -= 6; - else - pPlayer->VBumpNow--; - if (pPlayer->VBumpTarget > pPlayer->VBumpNow) - pPlayer->VBumpNow = pPlayer->VBumpTarget; - pPlayer->q16horiz = F16(100+pPlayer->VBumpNow/3); - } - else - { - pPlayer->VBumpTarget = 0; - pPlayer->moto_bump_fast = 0; - } - if (pPlayer->MotoSpeed > 0 && pPlayer->on_ground == 1 && (varbc || varc4)) - { - short vard4, vard8, vardc, vare0; - vard4 = pPlayer->MotoSpeed; - vard8 = fix16_to_int(pPlayer->q16ang); - if (varbc) - vardc = -10; - else - vardc = 10; - if (vardc < 0) - vare0 = 350; - else - vare0 = -350; - vard4 <<= 2; - if (pPlayer->moto_do_bump) - { - pPlayer->vel.x += (vard4>>6)*(sintable[(vardc*-51+vard8+512)&2047]<<4); - pPlayer->vel.y += (vard4>>6)*(sintable[(vardc*-51+vard8)&2047]<<4); - pPlayer->q16ang = F16((vard8-(vare0>>5))&2047); - } - else - { - pPlayer->vel.x += (vard4>>7)*(sintable[(vardc*-51+vard8+512)&2047]<<4); - pPlayer->vel.y += (vard4>>7)*(sintable[(vardc*-51+vard8)&2047]<<4); - pPlayer->q16ang = F16((vard8-(vare0>>6))&2047); - } - } - if (pPlayer->NotOnWater) - if (pPlayer->MotoSpeed > 50) - pPlayer->MotoSpeed -= (pPlayer->MotoSpeed>>1); + onBoat(playerNum, playerBits); } } @@ -4193,289 +3563,8 @@ check_enemy_sprite: } } - if (sectorLotag == ST_2_UNDERWATER) - P_DoWater(playerNum, playerBits, floorZ, ceilZ); - else if (!RR && pPlayer->jetpack_on) - P_DoJetpack(playerNum, playerBits, playerShrunk, sectorLotag, floorZ); - else - { - pPlayer->airleft = 15 * GAMETICSPERSEC; // 13 seconds - pPlayer->scuba_on = 0; - - if (sectorLotag == ST_1_ABOVE_WATER && pPlayer->spritebridge == 0) - { - floorZOffset = 12; - - if (playerShrunk == 0) - { - floorZOffset = 34; - pPlayer->pycount += 32; - pPlayer->pycount &= 2047; - pPlayer->pyoff = sintable[pPlayer->pycount] >> 6; - } - - if (playerShrunk == 0 && trueFloorDist <= PHEIGHT) - { - if (pPlayer->on_ground == 1) - { - if (pPlayer->dummyplayersprite < 0) - pPlayer->dummyplayersprite = fi.spawn(pPlayer->i,TILE_PLAYERONWATER); - - pPlayer->footprintcount = 6; - //sprite[pPlayer->dummyplayersprite].cstat |= 32768; - //sprite[pPlayer->dummyplayersprite].pal = sprite[pPlayer->i].pal; - pPlayer->footprintpal = 0; - pPlayer->footprintshade = 0; - if (sector[pPlayer->cursectnum].floorpicnum == TILE_FLOORSLIME) - { - pPlayer->footprintpal = 8; - pPlayer->footprintshade = 0; - } - else if (RRRA && (sector[pPlayer->cursectnum].floorpicnum == TILE_RRTILE7756 || sector[pPlayer->cursectnum].floorpicnum == TILE_RRTILE7888)) - { - pPlayer->footprintpal = 0; - pPlayer->footprintshade = 40; - } - } - } - } - else if ((!RRRA || pPlayer->OnMotorcycle) && pPlayer->footprintcount > 0 && pPlayer->on_ground) - { - if (pPlayer->cursectnum >= 0 && (sector[pPlayer->cursectnum].floorstat & 2) != 2) - { - int spriteNum = -1; - - for (spriteNum = headspritesect[pPlayer->cursectnum]; spriteNum >= 0; spriteNum = nextspritesect[spriteNum]) - { - if (sprite[spriteNum].picnum == TILE_FOOTPRINTS || sprite[spriteNum].picnum == TILE_FOOTPRINTS2 || - sprite[spriteNum].picnum == TILE_FOOTPRINTS3 || sprite[spriteNum].picnum == TILE_FOOTPRINTS4) - { - if (klabs(sprite[spriteNum].x - pPlayer->pos.x) < 384 && - klabs(sprite[spriteNum].y - pPlayer->pos.y) < 384) - break; - } - } - - if (spriteNum < 0) - { - pPlayer->footprintcount--; - if (pPlayer->cursectnum >= 0 && sector[pPlayer->cursectnum].lotag == 0 && - sector[pPlayer->cursectnum].hitag == 0) -#ifdef YAX_ENABLE - if (yax_getbunch(pPlayer->cursectnum, YAX_FLOOR) < 0 || (sector[pPlayer->cursectnum].floorstat & 512)) -#endif - { - switch (krand2() & 3) - { - case 0: spriteNum = fi.spawn(pPlayer->i, TILE_FOOTPRINTS); break; - case 1: spriteNum = fi.spawn(pPlayer->i, TILE_FOOTPRINTS2); break; - case 2: spriteNum = fi.spawn(pPlayer->i, TILE_FOOTPRINTS3); break; - default: spriteNum = fi.spawn(pPlayer->i, TILE_FOOTPRINTS4); break; - } - sprite[spriteNum].pal = pPlayer->footprintpal; - sprite[spriteNum].shade = pPlayer->footprintshade; - } - } - } - } - - if (pPlayer->pos.z < (floorZ-(floorZOffset<<8))) //falling - { - // not jumping or crouching - - if ((!TEST_SYNC_KEY(playerBits, SK_JUMP) && !TEST_SYNC_KEY(playerBits, SK_CROUCH)) && pPlayer->on_ground && - (sector[pPlayer->cursectnum].floorstat & 2) && pPlayer->pos.z >= (floorZ - (floorZOffset << 8) - ZOFFSET2)) - pPlayer->pos.z = floorZ - (floorZOffset << 8); - else - { - if (RRRA && (pPlayer->OnMotorcycle || pPlayer->OnBoat) && floorZ - (floorZOffset << 9) > pPlayer->pos.z) - { - if (pPlayer->MotoOnGround) - { - pPlayer->VBumpTarget = 80; - pPlayer->moto_bump_fast = 1; - pPlayer->vel.z -= g_spriteGravity*(pPlayer->MotoSpeed>>4); - pPlayer->MotoOnGround = 0; - if (A_CheckSoundPlaying(pPlayer->i, 188)) - S_StopEnvSound(188, pPlayer->i); - A_PlaySound(189, pPlayer->i); - } - else - { - pPlayer->vel.z += g_spriteGravity-80+(120-pPlayer->MotoSpeed); - if (!A_CheckSoundPlaying(pPlayer->i, 189) && !A_CheckSoundPlaying(pPlayer->i, 190)) - A_PlaySound(190, pPlayer->i); - } - } - else - pPlayer->vel.z += (g_spriteGravity + 80); // (TICSPERFRAME<<6); - - if (pPlayer->vel.z >= (4096 + 2048)) - pPlayer->vel.z = (4096 + 2048); - - if (pPlayer->vel.z > 2400 && pPlayer->falling_counter < 255) - { - pPlayer->falling_counter++; - if (pPlayer->falling_counter >= 38 && !A_CheckSoundPlaying(pPlayer->i, -1, CHAN_VOICE)) - { - A_PlaySound(DUKE_SCREAM, pPlayer->i, CHAN_VOICE); - } - } - - if ((pPlayer->pos.z + pPlayer->vel.z) >= (floorZ - (floorZOffset << 8)) && pPlayer->cursectnum >= 0) // hit the ground - { - if (sector[pPlayer->cursectnum].lotag != ST_1_ABOVE_WATER) - { - if (RRRA) - pPlayer->MotoOnGround = 1; - if (pPlayer->falling_counter > 62 || (RRRA && pPlayer->falling_counter > 2 && sector[pPlayer->cursectnum].lotag == 802)) - quickkill(pPlayer); - else if (pPlayer->falling_counter > 9) - { - // Falling damage. - pSprite->extra -= pPlayer->falling_counter - (krand2() & 3); - - if (pSprite->extra <= 0) - A_PlaySound(SQUISHED, pPlayer->i); - else - { - A_PlaySound(DUKE_LAND, pPlayer->i); - A_PlaySound(DUKE_LAND_HURT, pPlayer->i); - } - - P_PalFrom(pPlayer, 32, 16, 0, 0); - } - else if (pPlayer->vel.z > 2048) - { - if (RRRA && pPlayer->OnMotorcycle) - { - if (A_CheckSoundPlaying(pPlayer->i, 190)) - S_StopEnvSound(pPlayer->i, 190); - A_PlaySound(191, pPlayer->i); - pPlayer->TurbCount = 12; - } - else - A_PlaySound(DUKE_LAND, pPlayer->i); - } - else if (RRRA && pPlayer->vel.z > 1024 && pPlayer->OnMotorcycle) - { - A_PlaySound(DUKE_LAND, pPlayer->i); - pPlayer->TurbCount = 12; - } - } - pPlayer->on_ground = 1; - } - else - pPlayer->on_ground = 0; - } - } - else - { - pPlayer->falling_counter = 0; - - S_StopEnvSound(-1, pPlayer->i, CHAN_VOICE); - - if ((sectorLotag != ST_1_ABOVE_WATER && sectorLotag != ST_2_UNDERWATER) && - (pPlayer->on_ground == 0 && pPlayer->vel.z > (6144 >> 1))) - pPlayer->hard_landing = pPlayer->vel.z>>10; - - pPlayer->on_ground = 1; - - if (floorZOffset==40) - { - //Smooth on the ground - int Zdiff = ((floorZ - (floorZOffset << 8)) - pPlayer->pos.z) >> 1; - - if (klabs(Zdiff) < 256) - Zdiff = 0; - - pPlayer->pos.z += ((klabs(Zdiff) >= 256) ? (((floorZ - (floorZOffset << 8)) - pPlayer->pos.z) >> 1) : 0); - pPlayer->vel.z -= 768; - - if (pPlayer->vel.z < 0) - pPlayer->vel.z = 0; - } - else if (pPlayer->jumping_counter == 0) - { - pPlayer->pos.z += ((floorZ - (floorZOffset << 7)) - pPlayer->pos.z) >> 1; // Smooth on the water - - if (pPlayer->on_warping_sector == 0 && pPlayer->pos.z > floorZ - ZOFFSET2) - { - pPlayer->pos.z = floorZ - ZOFFSET2; - pPlayer->vel.z >>= 1; - } - } - - pPlayer->on_warping_sector = 0; - - if (TEST_SYNC_KEY(playerBits, SK_CROUCH) && (!RRRA || !pPlayer->OnMotorcycle)) - { - // crouching - if (VM_OnEvent(EVENT_CROUCH,pPlayer->i,playerNum) == 0) - { - pPlayer->pos.z += (2048+768); - pPlayer->crack_time = 777; - } - } - - // jumping - if (!TEST_SYNC_KEY(playerBits, SK_JUMP) && (!RRRA || !pPlayer->OnMotorcycle) && pPlayer->jumping_toggle == 1) - pPlayer->jumping_toggle = 0; - else if (TEST_SYNC_KEY(playerBits, SK_JUMP) && (!RRRA || !pPlayer->OnMotorcycle) && pPlayer->jumping_toggle == 0) - { - if (pPlayer->jumping_counter == 0) - if ((floorZ-ceilZ) > (56<<8)) - { - if (VM_OnEvent(EVENT_JUMP,pPlayer->i,playerNum) == 0) - { - pPlayer->jumping_counter = 1; - pPlayer->jumping_toggle = 1; - } - } - } - - if (!RR && pPlayer->jumping_counter && !TEST_SYNC_KEY(playerBits, SK_JUMP)) - pPlayer->jumping_toggle = 0; - } - - if (pPlayer->jumping_counter) - { - if (!TEST_SYNC_KEY(playerBits, SK_JUMP) && (!RRRA || !pPlayer->OnMotorcycle) && pPlayer->jumping_toggle == 1) - pPlayer->jumping_toggle = 0; - - if (pPlayer->jumping_counter < (RR ? 768 : (1024+256))) - { - if (sectorLotag == ST_1_ABOVE_WATER && pPlayer->jumping_counter > 768) - { - pPlayer->jumping_counter = 0; - pPlayer->vel.z = -512; - } - else - { - pPlayer->vel.z -= (sintable[(2048-128+pPlayer->jumping_counter)&2047])/12; - pPlayer->jumping_counter += 180; - pPlayer->on_ground = 0; - } - } - else - { - pPlayer->jumping_counter = 0; - pPlayer->vel.z = 0; - } - } - - pPlayer->pos.z += pPlayer->vel.z; - - if (pPlayer->pos.z < (ceilZ+ZOFFSET6)) - { - pPlayer->jumping_counter = 0; - if (pPlayer->vel.z < 0) - pPlayer->vel.x = pPlayer->vel.y = 0; - pPlayer->vel.z = 128; - pPlayer->pos.z = ceilZ+ZOFFSET6; - } - } - + if (isRR()) processmove_r(playerNum, playerBits, pPlayer->cursectnum, floorZ, ceilZ, playerShrunk, trueFloorZ); + else processmove_d(playerNum, playerBits, pPlayer->cursectnum, floorZ, ceilZ, playerShrunk, trueFloorZ); if (P_CheckLockedMovement(playerNum) & IL_NOMOVE) { velocityModifier = 0;