diff --git a/src/info.c b/src/info.c index 50da228e5..404958058 100644 --- a/src/info.c +++ b/src/info.c @@ -13448,7 +13448,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = sfx_None, // attacksound S_NULL, // painstate 12*TICRATE, // painchance (sets how long an unridden rock should last before disappearing - set to 0 to disable) - sfx_None, // painsound + sfx_s3k49, // painsound S_NULL, // meleestate S_NULL, // missilestate S_NULL, // deathstate diff --git a/src/p_enemy.c b/src/p_enemy.c index ea09533df..26d079cb4 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -14534,6 +14534,9 @@ void A_RolloutRock(mobj_t *actor) actor->friction = FRACUNIT; // turns out riding on solids sucks, so let's just make it easier on ourselves + if (actor->eflags & MFE_JUSTHITFLOOR) + S_StartSound(actor, actor->info->painsound); + if (actor->threshold) actor->threshold--; diff --git a/src/p_map.c b/src/p_map.c index 28c5ac955..97bff8156 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -1032,7 +1032,8 @@ static boolean PIT_CheckThing(mobj_t *thing) P_SetPlayerMobjState(tmthing, S_PLAY_WALK); tmthing->player->powers[pw_carry] = CR_ROLLOUT; P_SetTarget(&tmthing->tracer, thing); - P_SetObjectMomZ(thing, tmthing->momz, true); + if (!P_IsObjectOnGround(thing)) + thing->momz += tmthing->momz; return true; } } @@ -1063,6 +1064,7 @@ static boolean PIT_CheckThing(mobj_t *thing) thing->momy = tmthing->momy; tmthing->momx = tempmomx; tmthing->momy = tempmomy; + S_StartSound(thing, thing->info->painsound); } } diff --git a/src/p_user.c b/src/p_user.c index 080d51e53..0140bee4d 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -4429,6 +4429,8 @@ void P_DoJump(player_t *player, boolean soundandstate) player->mo->momz = 9*FRACUNIT; if (P_MobjFlip(player->mo->tracer)*player->mo->tracer->momz > 0) player->mo->momz += player->mo->tracer->momz; + if (!P_IsObjectOnGround(player->mo->tracer)) + P_SetObjectMomZ(player->mo->tracer, -9*FRACUNIT, true); player->powers[pw_carry] = CR_NONE; player->mo->tracer->flags |= MF_PUSHABLE; P_SetTarget(&player->mo->tracer->tracer, NULL);