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
This commit is contained in:
TehRealSalt 2018-07-24 22:47:09 -04:00
parent 5a9e10c663
commit b42d083b99
10 changed files with 138 additions and 28 deletions

View file

@ -5259,4 +5259,4 @@ static void KartComeback_OnChange(void)
comeback = (boolean)cv_kartcomeback.value;
}
}
}
}

View file

@ -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",

View file

@ -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

View file

@ -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,

View file

@ -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);

View file

@ -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

View file

@ -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;

View file

@ -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;

View file

@ -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},

View file

@ -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,