From d1a8e0baa0dce9ba848ff22a345a1aa995e0eb7f Mon Sep 17 00:00:00 2001 From: mazmazz Date: Sat, 11 Aug 2018 00:51:33 -0400 Subject: [PATCH] Scale player to Drone's scale on Nightserize, and reset scale on De-Nightserize * Also correct player's position to Z center of Drone hitbox on Nightserize --- src/p_inter.c | 2 +- src/p_user.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/p_inter.c b/src/p_inter.c index f10d680dd..99b43dbfd 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -793,8 +793,8 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) P_SwitchSpheresBonusMode(false); if (!(netgame || multiplayer) && !(player->powers[pw_carry] == CR_NIGHTSMODE)) P_SetTarget(&special->tracer, toucher); - P_NightserizePlayer(player, special->health); // Transform! P_SetTarget(&player->drone, special); // Mark the player as 'center into the drone' + P_NightserizePlayer(player, special->health); // Transform! if (!spec) { if (toucher->tracer) // Move the ideya over to the drone! diff --git a/src/p_user.c b/src/p_user.c index 18e8e29ca..22ac51df1 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -623,6 +623,10 @@ static void P_DeNightserizePlayer(player_t *player) break; } + if (player->mo->scale != player->oldscale) + player->mo->destscale = player->oldscale; + player->oldscale = 0; + // Restore from drowning music P_RestoreMusic(player); } @@ -640,7 +644,10 @@ void P_NightserizePlayer(player_t *player, INT32 nighttime) return; if (player->powers[pw_carry] != CR_NIGHTSMODE) + { player->mo->height = P_GetPlayerHeight(player); // Just to make sure jumping into the drone doesn't result in a squashed hitbox. + player->oldscale = player->mo->scale; + } player->pflags &= ~(PF_USEDOWN|PF_JUMPDOWN|PF_ATTACKDOWN|PF_STARTDASH|PF_GLIDING|PF_JUMPED|PF_NOJUMPDAMAGE|PF_THOKKED|PF_SHIELDABILITY|PF_SPINNING|PF_DRILLING); player->homing = 0; @@ -765,6 +772,9 @@ void P_NightserizePlayer(player_t *player, INT32 nighttime) player->texttimer = (UINT8)(110 - timeinmap); } + if (player->drone && player->drone->scale != player->mo->scale) + player->mo->destscale = player->drone->scale; + player->powers[pw_carry] = CR_NIGHTSMODE; } @@ -6105,7 +6115,7 @@ static void P_MoveNiGHTSToDrone(player_t *player) if (!player->drone) return; player->mo->momx = player->mo->momy = player->mo->momz = 0; - P_TeleportMove(player->mo, player->drone->x, player->drone->y, player->drone->z); + P_TeleportMove(player->mo, player->drone->x, player->drone->y, player->drone->z + player->drone->height/2 - player->mo->height/2); P_SetTarget(&player->drone, NULL); }