From b42d083b992361e99c8b2fd03e36716ebcf1506a Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Tue, 24 Jul 2018 22:47:09 -0400 Subject: [PATCH] Finishing touches on Ballhog - Ballhog has explosion + sound on death - Ballhog shrinks to nothing if it didn't hit anything - Replaced a Mario sound on Orbinaut - Fixed Jawz's sound effect - Fixed Mines not being removed on death pits --- src/d_netcmd.c | 2 +- src/dehacked.c | 18 ++++++++++++++ src/info.c | 67 +++++++++++++++++++++++++++++++++++++++++--------- src/info.h | 18 ++++++++++++++ src/k_kart.c | 4 +++ src/p_enemy.c | 18 +++++++++++++- src/p_map.c | 2 +- src/p_mobj.c | 23 +++++++++++------ src/sounds.c | 7 +++--- src/sounds.h | 7 +++--- 10 files changed, 138 insertions(+), 28 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index fd729d3e..e959f406 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -5259,4 +5259,4 @@ static void KartComeback_OnChange(void) comeback = (boolean)cv_kartcomeback.value; } } -} \ No newline at end of file +} diff --git a/src/dehacked.c b/src/dehacked.c index 9cc06dfd..921cc2db 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -1827,6 +1827,7 @@ static actionpointer_t actionpointers[] = {{A_JawzChase}, "A_JAWZCHASE"}, // SRB2kart {{A_JawzExplode}, "A_JAWZEXPLODE"}, // SRB2kart {{A_MineExplode}, "A_MINEEXPLODE"}, // SRB2kart + {{A_BallhogExplode}, "A_BALLHOGEXPLODE"}, // SRB2kart {{A_OrbitNights}, "A_ORBITNIGHTS"}, {{A_GhostMe}, "A_GHOSTME"}, {{A_SetObjectState}, "A_SETOBJECTSTATE"}, @@ -6415,6 +6416,22 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit "S_BALLHOG7", "S_BALLHOG8", "S_BALLHOG_DEAD", + "S_BALLHOGBOOM1", + "S_BALLHOGBOOM2", + "S_BALLHOGBOOM3", + "S_BALLHOGBOOM4", + "S_BALLHOGBOOM5", + "S_BALLHOGBOOM6", + "S_BALLHOGBOOM7", + "S_BALLHOGBOOM8", + "S_BALLHOGBOOM9", + "S_BALLHOGBOOM10", + "S_BALLHOGBOOM11", + "S_BALLHOGBOOM12", + "S_BALLHOGBOOM13", + "S_BALLHOGBOOM14", + "S_BALLHOGBOOM15", + "S_BALLHOGBOOM16", // Self-Propelled Bomb - just an explosion for now... "S_BLUELIGHTNING1", @@ -7173,6 +7190,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s "MT_BOOMPARTICLE", "MT_BALLHOG", // Ballhog + "MT_BALLHOGBOOM", "MT_BLUELIGHTNING", // Grow/shrink stuff "MT_BLUEEXPLOSION", diff --git a/src/info.c b/src/info.c index 939efd44..8cfea02c 100644 --- a/src/info.c +++ b/src/info.c @@ -2725,15 +2725,31 @@ state_t states[NUMSTATES] = {SPR_KRBM, FF_FULLBRIGHT|8, 5, {NULL}, 0, 0, S_SLOWBOOM10}, // S_SLOWBOOM9 {SPR_KRBM, FF_FULLBRIGHT|9, 5, {NULL}, 0, 0, S_NULL}, // S_SLOWBOOM10 - {SPR_BHOG, 0, 3, {A_PlaySound}, sfx_s1bd, 1, S_BALLHOG2}, // S_BALLHOG1 - {SPR_BHOG, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_BALLHOG3}, // S_BALLHOG2 - {SPR_BHOG, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_BALLHOG4}, // S_BALLHOG3 - {SPR_BHOG, FF_FULLBRIGHT|3, 3, {NULL}, 0, 0, S_BALLHOG5}, // S_BALLHOG4 - {SPR_BHOG, FF_FULLBRIGHT|4, 3, {NULL}, 0, 0, S_BALLHOG6}, // S_BALLHOG5 - {SPR_BHOG, 5, 2, {NULL}, 0, 0, S_BALLHOG7}, // S_BALLHOG6 - {SPR_BHOG, 6, 1, {NULL}, 0, 0, S_BALLHOG8}, // S_BALLHOG7 - {SPR_BHOG, 7, 1, {NULL}, 0, 0, S_BALLHOG1}, // S_BALLHOG8 - {SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL}, // S_BALLHOG_DEAD + {SPR_BHOG, 0, 3, {A_PlaySound}, sfx_s1bd, 1, S_BALLHOG2}, // S_BALLHOG1 + {SPR_BHOG, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_BALLHOG3}, // S_BALLHOG2 + {SPR_BHOG, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_BALLHOG4}, // S_BALLHOG3 + {SPR_BHOG, FF_FULLBRIGHT|3, 3, {NULL}, 0, 0, S_BALLHOG5}, // S_BALLHOG4 + {SPR_BHOG, FF_FULLBRIGHT|4, 3, {NULL}, 0, 0, S_BALLHOG6}, // S_BALLHOG5 + {SPR_BHOG, 5, 2, {NULL}, 0, 0, S_BALLHOG7}, // S_BALLHOG6 + {SPR_BHOG, 6, 1, {NULL}, 0, 0, S_BALLHOG8}, // S_BALLHOG7 + {SPR_BHOG, 7, 1, {NULL}, 0, 0, S_BALLHOG1}, // S_BALLHOG8 + {SPR_NULL, 0, 1, {A_BallhogExplode}, 0, 0, S_NULL}, // S_BALLHOG_DEAD + {SPR_BHOG, FF_FULLBRIGHT|8, 1, {NULL}, 0, 0, S_BALLHOGBOOM2}, // S_BALLHOGBOOM1 + {SPR_BHOG, FF_FULLBRIGHT|9, 1, {NULL}, 0, 0, S_BALLHOGBOOM3}, // S_BALLHOGBOOM2 + {SPR_BHOG, FF_FULLBRIGHT|10, 1, {NULL}, 0, 0, S_BALLHOGBOOM4}, // S_BALLHOGBOOM3 + {SPR_BHOG, FF_FULLBRIGHT|11, 1, {NULL}, 0, 0, S_BALLHOGBOOM5}, // S_BALLHOGBOOM4 + {SPR_BHOG, FF_FULLBRIGHT|12, 1, {NULL}, 0, 0, S_BALLHOGBOOM6}, // S_BALLHOGBOOM5 + {SPR_BHOG, FF_FULLBRIGHT|13, 1, {NULL}, 0, 0, S_BALLHOGBOOM7}, // S_BALLHOGBOOM6 + {SPR_BHOG, FF_FULLBRIGHT|14, 1, {NULL}, 0, 0, S_BALLHOGBOOM8}, // S_BALLHOGBOOM7 + {SPR_BHOG, FF_FULLBRIGHT|15, 1, {NULL}, 0, 0, S_BALLHOGBOOM9}, // S_BALLHOGBOOM8 + {SPR_BHOG, FF_FULLBRIGHT|16, 1, {NULL}, 0, 0, S_BALLHOGBOOM10}, // S_BALLHOGBOOM9 + {SPR_BHOG, FF_FULLBRIGHT|17, 1, {NULL}, 0, 0, S_BALLHOGBOOM11}, // S_BALLHOGBOOM10 + {SPR_BHOG, FF_FULLBRIGHT|18, 1, {NULL}, 0, 0, S_BALLHOGBOOM12}, // S_BALLHOGBOOM11 + {SPR_BHOG, FF_FULLBRIGHT|19, 1, {NULL}, 0, 0, S_BALLHOGBOOM13}, // S_BALLHOGBOOM12 + {SPR_BHOG, FF_FULLBRIGHT|20, 1, {NULL}, 0, 0, S_BALLHOGBOOM14}, // S_BALLHOGBOOM13 + {SPR_BHOG, FF_FULLBRIGHT|21, 1, {NULL}, 0, 0, S_BALLHOGBOOM15}, // S_BALLHOGBOOM14 + {SPR_BHOG, FF_FULLBRIGHT|22, 1, {NULL}, 0, 0, S_BALLHOGBOOM16}, // S_BALLHOGBOOM15 + {SPR_BHOG, FF_FULLBRIGHT|23, 1, {NULL}, 0, 0, S_NULL}, // S_BALLHOGBOOM16 {SPR_BLIG, 0, 2, {NULL}, 0, 0, S_BLUELIGHTNING2}, // S_BLUELIGHTNING1 {SPR_BLIG, 1, 2, {NULL}, 0, 0, S_BLUELIGHTNING3}, // S_BLUELIGHTNING2 @@ -14603,13 +14619,13 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL, // seestate sfx_tossed, // seesound 8, // reactiontime - sfx_mario1, // attacksound + sfx_s3k49, // attacksound S_NULL, // painstate 0, // painchance sfx_None, // painsound S_NULL, // meleestate S_NULL, // missilestate - S_ORBINAUT_DEAD, // deathstate + S_ORBINAUT_DEAD,// deathstate S_NULL, // xdeathstate sfx_shbrk, // deathsound 64*FRACUNIT, // speed @@ -14935,7 +14951,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL, // missilestate S_BALLHOG_DEAD, // deathstate S_NULL, // xdeathstate - sfx_mario1, // deathsound + sfx_hogbom, // deathsound 0, // speed 16*FRACUNIT, // radius 32*FRACUNIT, // height @@ -14947,6 +14963,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL // raisestate }, + { // MT_BALLHOGBOOM + -1, // doomednum + S_BALLHOGBOOM1, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 32*FRACUNIT, // height + 0, // display offset + 100, // mass + 1, // damage + sfx_None, // activesound + MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOCLIPTHING, // flags + S_NULL // raisestate + }, + { // MT_BLUELIGHTNING -1, // doomednum S_BLUELIGHTNING1, // spawnstate diff --git a/src/info.h b/src/info.h index 53552f4c..d24ba3a3 100644 --- a/src/info.h +++ b/src/info.h @@ -167,6 +167,7 @@ void A_ItemPop(); // SRB2kart void A_JawzChase(); // SRB2kart void A_JawzExplode(); // SRB2kart void A_MineExplode(); // SRB2kart +void A_BallhogExplode(); // SRB2kart void A_OrbitNights(); void A_GhostMe(); void A_SetObjectState(); @@ -3254,6 +3255,22 @@ typedef enum state S_BALLHOG7, S_BALLHOG8, S_BALLHOG_DEAD, + S_BALLHOGBOOM1, + S_BALLHOGBOOM2, + S_BALLHOGBOOM3, + S_BALLHOGBOOM4, + S_BALLHOGBOOM5, + S_BALLHOGBOOM6, + S_BALLHOGBOOM7, + S_BALLHOGBOOM8, + S_BALLHOGBOOM9, + S_BALLHOGBOOM10, + S_BALLHOGBOOM11, + S_BALLHOGBOOM12, + S_BALLHOGBOOM13, + S_BALLHOGBOOM14, + S_BALLHOGBOOM15, + S_BALLHOGBOOM16, // Self-Propelled Bomb - just an explosion for now... S_BLUELIGHTNING1, @@ -4029,6 +4046,7 @@ typedef enum mobj_type MT_BOOMPARTICLE, MT_BALLHOG, // Ballhog + MT_BALLHOGBOOM, MT_BLUELIGHTNING, // Grow/shrink stuff MT_BLUEEXPLOSION, diff --git a/src/k_kart.c b/src/k_kart.c index 8d64af57..464c4869 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -2046,6 +2046,10 @@ static mobj_t *K_SpawnKartMissile(mobj_t *source, mobjtype_t type, angle_t angle else th->color = SKINCOLOR_CLOUDY; } + else if (type == MT_JAWZ || type == MT_JAWZ_DUD) + { + S_StartSound(th, th->info->activesound); + } x = x + P_ReturnThrustX(source, an, source->radius + th->radius); y = y + P_ReturnThrustY(source, an, source->radius + th->radius); diff --git a/src/p_enemy.c b/src/p_enemy.c index 0c5f9d17..a9333777 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -191,6 +191,7 @@ void A_ItemPop(mobj_t *actor); // SRB2kart void A_JawzChase(mobj_t *actor); // SRB2kart void A_JawzExplode(mobj_t *actor); // SRB2kart void A_MineExplode(mobj_t *actor); // SRB2kart +void A_BallhogExplode(mobj_t *actor); // SRB2kart void A_OrbitNights(mobj_t *actor); void A_GhostMe(mobj_t *actor); void A_SetObjectState(mobj_t *actor); @@ -8092,7 +8093,7 @@ void A_ToggleFlameJet(mobj_t* actor) } } -//{ SRB2kart - A_ItemPop, A_JawzChase, A_JawzExplode, and A_MineExplode +//{ SRB2kart - A_ItemPop, A_JawzChase, A_JawzExplode, A_MineExplode, and A_BallhogExplode void A_ItemPop(mobj_t *actor) { mobj_t *remains; @@ -8361,6 +8362,21 @@ void A_MineExplode(mobj_t *actor) return; } + +void A_BallhogExplode(mobj_t *actor) +{ + mobj_t *mo2; +#ifdef HAVE_BLUA + if (LUA_CallAction("A_BallhogExplode", actor)) + return; +#endif + + mo2 = P_SpawnMobj(actor->x, actor->y, actor->z, MT_BALLHOGBOOM); + P_SetScale(mo2, actor->scale*2); + mo2->destscale = mo2->scale; + S_StartSound(mo2, actor->info->deathsound); + return; +} //} // Function: A_OrbitNights diff --git a/src/p_map.c b/src/p_map.c index d4ee7c90..e50fbb2c 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -881,7 +881,7 @@ static boolean PIT_CheckThing(mobj_t *thing) return true; if (tmthing->type == MT_BALLHOG && thing->type == MT_BALLHOG) - return true; // Fireballs don't collide with eachother + return true; // Ballhogs don't collide with eachother if (thing->player && thing->player->powers[pw_flashing]) return true; diff --git a/src/p_mobj.c b/src/p_mobj.c index 9e13db6d..d7ecbcae 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1723,14 +1723,22 @@ void P_XYMovement(mobj_t *mo) if (CheckForBustableBlocks && mo->flags & MF_PUSHABLE) P_PushableCheckBustables(mo); - //{ SRB2kart - Fireball + //{ SRB2kart - Ballhogs if (mo->type == MT_BALLHOG) { - mo->health--; - if (mo->health == 0) + if (mo->health) { - S_StartSound(mo, mo->info->deathsound); - P_SetMobjState(mo, mo->info->deathstate); + mo->health--; + if (mo->health == 0) + mo->destscale = 1; + } + else + { + if (mo->scale < mapheaderinfo[gamemap-1]->mobj_scale/16) + { + P_RemoveMobj(mo); + return; + } } } //} @@ -2336,6 +2344,7 @@ static boolean P_ZMovement(mobj_t *mo) case MT_JAWZ: case MT_JAWZ_DUD: case MT_BALLHOG: + case MT_SSMINE: // Remove stuff from death pits. if (P_CheckDeathPitCollide(mo)) { @@ -8005,7 +8014,7 @@ void P_MobjThinker(mobj_t *mobj) if (mobj->threshold > 0) mobj->threshold--; - if (leveltime % 7 == 0) + if (leveltime % TICRATE == 0) S_StartSound(mobj, mobj->info->activesound); if (gamespeed == 0) @@ -8079,7 +8088,7 @@ void P_MobjThinker(mobj_t *mobj) if (mobj->threshold > 0) mobj->threshold--; - if (leveltime % 7 == 0) + if (leveltime % TICRATE == 0) S_StartSound(mobj, mobj->info->activesound); break; diff --git a/src/sounds.c b/src/sounds.c index 69fc8433..ffe0e479 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -147,9 +147,6 @@ sfxinfo_t S_sfx[NUMSFX] = {"drown", false, 192, 0, -1, NULL, 0, -1, -1, LUMPERROR}, {"fizzle", false, 127, 8, -1, NULL, 0, -1, -1, LUMPERROR}, {"gbeep", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Grenade beep - {"yeeeah", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, - {"noooo1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, - {"noooo2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, {"ghit" , false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, {"gloop", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR}, {"gspray", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, @@ -809,6 +806,10 @@ sfxinfo_t S_sfx[NUMSFX] = {"boing", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, {"smkinv", false, 140, 8, -1, NULL, 0, -1, -1, LUMPERROR}, {"screec", false, 52, 0, -1, NULL, 0, -1, -1, LUMPERROR}, + {"yeeeah", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, + {"noooo1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, + {"noooo2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, + {"hogbom", false, 110, 8, -1, NULL, 0, -1, -1, LUMPERROR}, // SRB2kart - Skin sounds {"kwin", false, 64, 0, -1, NULL, 0, SKSWIN, -1, LUMPERROR}, diff --git a/src/sounds.h b/src/sounds.h index 106e77df..0f8d5a3b 100644 --- a/src/sounds.h +++ b/src/sounds.h @@ -219,9 +219,6 @@ typedef enum sfx_drown, sfx_fizzle, sfx_gbeep, - sfx_yeeeah, - sfx_noooo1, - sfx_noooo2, sfx_ghit, sfx_gloop, sfx_gspray, @@ -881,6 +878,10 @@ typedef enum sfx_boing, sfx_smkinv, sfx_screec, + sfx_yeeeah, + sfx_noooo1, + sfx_noooo2, + sfx_hogbom, sfx_kwin, sfx_klose,