From 59c64e1ec700b983c55e3f92f10b86d5be9031ea Mon Sep 17 00:00:00 2001 From: toaster Date: Sun, 5 Aug 2018 16:38:46 +0100 Subject: [PATCH] * Change/add a handful of sounds. * Make Orbinaut Shields animate at 3 tics per frame, not 1. * Make dead items flash in and out of visibility. * Related to above, fix a few circumstances where returning was not properly handled after removing a mobj in mobjthinker. --- src/info.c | 14 +++++++------- src/k_kart.c | 13 +++++++++++-- src/p_mobj.c | 16 +++++++++++++++- 3 files changed, 33 insertions(+), 10 deletions(-) diff --git a/src/info.c b/src/info.c index 8c6560fc..0fa1e1dd 100644 --- a/src/info.c +++ b/src/info.c @@ -2646,12 +2646,12 @@ state_t states[NUMSTATES] = {SPR_ORBN, 4, 1, {NULL}, 0, 0, S_ORBINAUT6}, // S_ORBINAUT5 {SPR_ORBN, 5, 1, {NULL}, 0, 0, S_ORBINAUT1}, // S_ORBINAUT6 {SPR_ORBN, 0, 175, {NULL}, 0, 0, S_NULL}, // S_ORBINAUT_DEAD - {SPR_ORBN, 6, 1, {NULL}, 0, 0, S_ORBINAUT_SHIELD2}, // S_ORBINAUT_SHIELD1 - {SPR_ORBN, 7, 1, {NULL}, 0, 0, S_ORBINAUT_SHIELD3}, // S_ORBINAUT_SHIELD2 - {SPR_ORBN, 8, 1, {NULL}, 0, 0, S_ORBINAUT_SHIELD4}, // S_ORBINAUT_SHIELD3 - {SPR_ORBN, 9, 1, {NULL}, 0, 0, S_ORBINAUT_SHIELD5}, // S_ORBINAUT_SHIELD4 - {SPR_ORBN, 10, 1, {NULL}, 0, 0, S_ORBINAUT_SHIELD6}, // S_ORBINAUT_SHIELD5 - {SPR_ORBN, 11, 1, {NULL}, 0, 0, S_ORBINAUT_SHIELD1}, // S_ORBINAUT_SHIELD6 + {SPR_ORBN, 6, 3, {NULL}, 0, 0, S_ORBINAUT_SHIELD2}, // S_ORBINAUT_SHIELD1 + {SPR_ORBN, 7, 3, {NULL}, 0, 0, S_ORBINAUT_SHIELD3}, // S_ORBINAUT_SHIELD2 + {SPR_ORBN, 8, 3, {NULL}, 0, 0, S_ORBINAUT_SHIELD4}, // S_ORBINAUT_SHIELD3 + {SPR_ORBN, 9, 3, {NULL}, 0, 0, S_ORBINAUT_SHIELD5}, // S_ORBINAUT_SHIELD4 + {SPR_ORBN, 10, 3, {NULL}, 0, 0, S_ORBINAUT_SHIELD6}, // S_ORBINAUT_SHIELD5 + {SPR_ORBN, 11, 3, {NULL}, 0, 0, S_ORBINAUT_SHIELD1}, // S_ORBINAUT_SHIELD6 {SPR_ORBN, 6, 175, {NULL}, 0, 0, S_NULL}, // S_ORBINAUT_SHIELDDEAD {SPR_JAWZ, 0, 1, {A_JawzChase}, 0, 0, S_JAWZ2}, // S_JAWZ1 @@ -14816,7 +14816,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 0, // display offset 100, // mass 1, // damage - sfx_bomb, // activesound + sfx_s3k5c, // activesound MF_BOUNCE|MF_SHOOTABLE, // flags S_NULL // raisestate }, diff --git a/src/k_kart.c b/src/k_kart.c index 080e7a11..7442d85f 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3647,6 +3647,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) //K_PlayTauntSound(player->mo); player->kartstuff[k_itemheld] = 1; player->pflags |= PF_ATTACKDOWN; + S_StartSound(player->mo, sfx_s254); for (moloop = 0; moloop < player->kartstuff[k_itemamount]; moloop++) { @@ -3677,6 +3678,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) player->kartstuff[k_itemamount]--; player->kartstuff[k_eggmanheld] = 1; player->pflags |= PF_ATTACKDOWN; + S_StartSound(player->mo, sfx_s254); mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_FAKESHIELD); mo->threshold = 10; mo->movecount = 1; @@ -3782,6 +3784,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) mobj_t *mo; player->kartstuff[k_itemheld] = 1; player->pflags |= PF_ATTACKDOWN; + S_StartSound(player->mo, sfx_s254); mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_SSMINE_SHIELD); mo->threshold = 10; mo->movecount = 1; @@ -3892,7 +3895,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) { player->kartstuff[k_itemamount]--; player->pflags |= PF_ATTACKDOWN; - K_DoHyudoroSteal(player); + K_DoHyudoroSteal(player); // yes. yes they do. } break; case KITEM_POGOSPRING: @@ -4089,8 +4092,14 @@ void K_MoveKartPlayer(player_t *player, boolean onground) // Determine the outcome of your charge. if (leveltime > starttime && player->kartstuff[k_boostcharge]) { + // Not even trying? + if (player->kartstuff[k_boostcharge] < 35) + { + if (player->kartstuff[k_boostcharge] > 17) + S_StartSound(player->mo, sfx_cdfm00); // chosen instead of a conventional skid because it's more engine-like + } // Get an instant boost! - if (player->kartstuff[k_boostcharge] >= 35 && player->kartstuff[k_boostcharge] <= 50) + else if (player->kartstuff[k_boostcharge] <= 50) { player->kartstuff[k_sneakertimer] = -((21*(player->kartstuff[k_boostcharge]*player->kartstuff[k_boostcharge]))/425)+131; // max time is 70, min time is 7; yay parabooolas if (!player->kartstuff[k_floorboost] || player->kartstuff[k_floorboost] == 3) diff --git a/src/p_mobj.c b/src/p_mobj.c index c2c08f33..016734bd 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -7462,12 +7462,23 @@ void P_MobjThinker(mobj_t *mobj) case MT_BANANA: case MT_FAKEITEM: if (mobj->z <= mobj->floorz) + { P_RemoveMobj(mobj); + return; + } + // fallthru + case MT_ORBINAUT_SHIELD: + case MT_BANANA_SHIELD: + case MT_FAKESHIELD: + mobj->flags2 ^= MF2_DONTDRAW; break; case MT_JAWZ: case MT_JAWZ_DUD: if (mobj->z <= mobj->floorz) P_SetMobjState(mobj, mobj->info->xdeathstate); + // fallthru + case MT_JAWZ_SHIELD: + mobj->flags2 ^= MF2_DONTDRAW; break; case MT_SSMINE: case MT_BLUEEXPLOSION: @@ -7477,11 +7488,14 @@ void P_MobjThinker(mobj_t *mobj) mobj->health = -100; } else + { P_RemoveMobj(mobj); + return; + } break; case MT_MINEEXPLOSIONSOUND: P_RemoveMobj(mobj); - break; + return; //} default: break;