diff --git a/src/info.c b/src/info.c index 193fc3046..dca797a0e 100644 --- a/src/info.c +++ b/src/info.c @@ -22960,7 +22960,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = sfx_None, // deathsound 8*FRACUNIT, // speed 20*FRACUNIT, // radius - 64*FRACUNIT, // height + 128*FRACUNIT, // height 0, // display offset 0, // mass 0, // damage diff --git a/src/objects/mushroom-hill-pole.c b/src/objects/mushroom-hill-pole.c index 9fd7a0c8d..d5b9fba28 100644 --- a/src/objects/mushroom-hill-pole.c +++ b/src/objects/mushroom-hill-pole.c @@ -84,18 +84,16 @@ void Obj_MushroomHillPolePlayerThink(player_t *player) void Obj_MushroomHillPoleTouch(mobj_t *pole, mobj_t *toucher) { player_t *player = toucher->player; - fixed_t playerSpeed = FixedHypot(toucher->momx, toucher->momy); angle_t momentumAngle; if ( - playerSpeed < FixedMul(pole->info->speed, pole->scale) // player is moving too slowly - || player->carry != CR_NONE // player is already being carried by something else + player->carry != CR_NONE // player is already being carried by something else + || pole->tracer == toucher // pole just launched this player || ( !P_MobjWasRemoved(pole->target) && pole->target->player && pole->target->player->carry == CR_MUSHROOMHILLPOLE ) // pole is already occupied by a player - || pole->tracer == toucher // pole just launched this player ) { return; @@ -104,7 +102,7 @@ void Obj_MushroomHillPoleTouch(mobj_t *pole, mobj_t *toucher) momentumAngle = K_MomentumAngle(toucher); P_SetTarget(&pole->target, toucher); - pole->movefactor = playerSpeed; // speed at which to spin around the pole + pole->movefactor = max(FixedHypot(toucher->momx, toucher->momy), FixedMul(pole->info->speed, pole->scale)); // speed at which to spin around the pole pole->movedir = R_PointToAngle2(pole->x, pole->y, toucher->x, toucher->y); // angle at which to project the player from the pole pole->angle = toucher->angle + Easing_Linear(MOMENTUM_ANGLE_PROPORTION, 0, (INT32)(momentumAngle - toucher->angle)); // final launch angle pole->extravalue1 = (pole->movedir - momentumAngle < ANGLE_180) ? -1 : 1; // direction to spin around the pole diff --git a/src/p_mobj.c b/src/p_mobj.c index 1e18c0685..1ac671d73 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -11196,6 +11196,8 @@ fixed_t P_GetMobjDefaultScale(mobj_t *mobj) return 2*FRACUNIT; case MT_ANCIENTGEAR: return 3*FRACUNIT/2; + case MT_MHPOLE: + return 4*FRACUNIT; default: break; }