From 794725727a2d98d205e31e2b325f87d795c3e44b Mon Sep 17 00:00:00 2001 From: SeventhSentinel Date: Mon, 25 Jun 2018 18:17:03 -0400 Subject: [PATCH] Ballhog stuff --- src/dehacked.c | 10 ---------- src/info.c | 33 ++++++++++++++++----------------- src/info.h | 21 +++++++++++---------- src/k_kart.c | 37 +++++++++++++++++++++++++------------ 4 files changed, 52 insertions(+), 49 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index 50ac71e37..d6d8b4134 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -6348,16 +6348,6 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit "S_JAWZ_DEAD2", //} - "S_FIRETRAIL1", - "S_FIRETRAIL2", - "S_FIRETRAIL3", - "S_FIRETRAIL4", - "S_FIRETRAIL5", - "S_FIRETRAIL6", - "S_FIRETRAIL7", - "S_FIRETRAIL8", - "S_FIRETRAIL9", - // Special Stage Mine "S_SSMINE1", "S_SSMINE2", diff --git a/src/info.c b/src/info.c index f6f3a0131..bf02e0c47 100644 --- a/src/info.c +++ b/src/info.c @@ -56,10 +56,10 @@ char sprnames[NUMSPRITES + 1][5] = "SRBJ","SRBK","SRBL","SRBM","SRBN","SRBO", //SRB2kart Sprites "SPRG","BSPR","RNDM","RPOP","KFRE","KINV","KINF","DRIF","DUST","FITM", - "BANA","GSHE","JAWZ","SSMN","KRBM","BLIG","LIGH","SINK","SITR","KBLN", - "DEZL","POKE","AUDI","DECO","DOOD","SNES","GBAS","SPRS","BUZB","CHOM", - "SACO","CRAB","SHAD","BUMP","FLEN","CLAS","PSHW","ARRO","ITEM","ITMI", - "ITMN","PBOM" + "BANA","GSHE","JAWZ","SSMN","KRBM","BHOG","BLIG","LIGH","SINK","SITR", + "KBLN","DEZL","POKE","AUDI","DECO","DOOD","SNES","GBAS","SPRS","BUZB", + "CHOM","SACO","CRAB","SHAD","BUMP","FLEN","CLAS","PSHW","ARRO","ITEM", + "ITMI","ITMN","PBOM" }; // Doesn't work with g++, needs actionf_p1 (don't modify this comment) @@ -2680,16 +2680,6 @@ state_t states[NUMSTATES] = {SPR_JAWZ, 5, 175, {NULL}, 0, 0, S_JAWZ_DEAD2}, // S_JAWZ_DEAD1 {SPR_NULL, 0, 1, {A_JawzExplode}, 0, 0, S_NULL}, // S_JAWZ_DEAD2 - {SPR_FBLL, 13, 3, {NULL}, 0, 0, S_FIRETRAIL2}, // S_FIRETRAIL1 - {SPR_FBLL, 14, 3, {NULL}, 0, 0, S_FIRETRAIL3}, // S_FIRETRAIL2 - {SPR_FBLL, 15, 3, {NULL}, 0, 0, S_FIRETRAIL4}, // S_FIRETRAIL3 - {SPR_FBLL, 16, 3, {NULL}, 0, 0, S_FIRETRAIL5}, // S_FIRETRAIL4 - {SPR_FBLL, 17, 3, {NULL}, 0, 0, S_FIRETRAIL6}, // S_FIRETRAIL5 - {SPR_FBLL, 18, 3, {NULL}, 0, 0, S_FIRETRAIL7}, // S_FIRETRAIL6 - {SPR_FBLL, 19, 3, {NULL}, 0, 0, S_FIRETRAIL8}, // S_FIRETRAIL7 - {SPR_FBLL, 20, 3, {NULL}, 0, 0, S_FIRETRAIL9}, // S_FIRETRAIL8 - {SPR_FBLL, 21, 3, {NULL}, 0, 0, S_NULL}, // S_FIRETRAIL9 - {SPR_SSMN, 0, 30, {NULL}, 0, 0, S_SSMINE2}, // S_SSMINE1 {SPR_SSMN, 3, 3, {NULL}, 0, 0, S_SSMINE3}, // S_SSMINE2 {SPR_SSMN, 2, 3, {NULL}, 0, 0, S_SSMINE4}, // S_SSMINE3 @@ -2737,6 +2727,15 @@ 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, {NULL}, 0, 0, S_BALLHOG2}, // S_BALLHOG1 + {SPR_BHOG, 1, 1, {NULL}, 0, 0, S_BALLHOG3}, // S_BALLHOG2 + {SPR_BHOG, 2, 2, {NULL}, 0, 0, S_BALLHOG4}, // S_BALLHOG3 + {SPR_BHOG, 3, 3, {NULL}, 0, 0, S_BALLHOG5}, // S_BALLHOG4 + {SPR_BHOG, 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_BLIG, 0, 2, {NULL}, 0, 0, S_BLUELIGHTNING2}, // S_BLUELIGHTNING1 {SPR_BLIG, 1, 2, {NULL}, 0, 0, S_BLUELIGHTNING3}, // S_BLUELIGHTNING2 {SPR_BLIG, 2, 2, {NULL}, 0, 0, S_BLUELIGHTNING4}, // S_BLUELIGHTNING3 @@ -2757,7 +2756,7 @@ state_t states[NUMSTATES] = {SPR_KBLN, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_BATTLEBALLOON2}, // S_BATTLEBALLOON2 {SPR_KBLN, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_BATTLEBALLOON3}, // S_BATTLEBALLOON3 - {SPR_DEZL, 0|FF_FULLBRIGHT, 8, {NULL}, 0, 0, S_NULL}, // S_DEZLASER + {SPR_DEZL, FF_FULLBRIGHT|FF_PAPERSPRITE, 8, {NULL}, 0, 0, S_NULL}, // S_DEZLASER {SPR_POKE, 0, 2, {A_MoveAbsolute}, 0, 2, S_POKEY2}, // S_POKEY1 {SPR_POKE, 1, 2, {A_MoveAbsolute}, 0, 2, S_POKEY3}, // S_POKEY2 @@ -14881,7 +14880,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = { // MT_BALLHOG -1, // doomednum - S_FIREBALL1, // spawnstate + S_BALLHOG1, // spawnstate 140, // spawnhealth S_NULL, // seestate sfx_None, // seesound @@ -14892,7 +14891,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = sfx_None, // painsound S_NULL, // meleestate S_NULL, // missilestate - S_FIREBALLEXP1, // deathstate + S_NULL, // deathstate S_NULL, // xdeathstate sfx_mario1, // deathsound 0, // speed diff --git a/src/info.h b/src/info.h index 1db9cc94a..858828548 100644 --- a/src/info.h +++ b/src/info.h @@ -594,6 +594,7 @@ typedef enum sprite SPR_JAWZ, // Jawz SPR_SSMN, // SS Mine SPR_KRBM, // SS Mine BOOM + SPR_BHOG, // Ballhog SPR_BLIG, // Self-Propelled Bomb SPR_LIGH, // Grow/shrink beams (Metallic Maddness) SPR_SINK, // Kitchen Sink @@ -3190,16 +3191,6 @@ typedef enum state S_JAWZ_DEAD2, //} - S_FIRETRAIL1, - S_FIRETRAIL2, - S_FIRETRAIL3, - S_FIRETRAIL4, - S_FIRETRAIL5, - S_FIRETRAIL6, - S_FIRETRAIL7, - S_FIRETRAIL8, - S_FIRETRAIL9, - // Special Stage Mine S_SSMINE1, S_SSMINE2, @@ -3249,6 +3240,16 @@ typedef enum state S_SLOWBOOM9, S_SLOWBOOM10, + // Ballhog + S_BALLHOG1, + S_BALLHOG2, + S_BALLHOG3, + S_BALLHOG4, + S_BALLHOG5, + S_BALLHOG6, + S_BALLHOG7, + S_BALLHOG8, + // Self-Propelled Bomb - just an explosion for now... S_BLUELIGHTNING1, S_BLUELIGHTNING2, diff --git a/src/k_kart.c b/src/k_kart.c index 964777792..aac362417 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1116,22 +1116,32 @@ void K_RespawnChecker(player_t *player) player->powers[pw_nocontrol] = 2; if (leveltime % 8 == 0) { - mobj_t *mo; - fixed_t newz; - + INT32 i; S_StartSound(player->mo, sfx_s3kcas); - if (player->mo->eflags & MFE_VERTICALFLIP) - newz = player->mo->z + player->mo->height; - else - newz = player->mo->z; - mo = P_SpawnMobj(player->mo->x, player->mo->y, newz, MT_DEZLASER); - if (mo) + for (i = 0; i < 8; i++) { + mobj_t *mo; + angle_t newangle; + fixed_t newx, newy, newz; + + newangle = FixedAngle(((360/8)*i)*FRACUNIT); + newx = player->mo->x + P_ReturnThrustX(player->mo, newangle, 31*FRACUNIT); + newy = player->mo->y + P_ReturnThrustY(player->mo, newangle, 31*FRACUNIT); if (player->mo->eflags & MFE_VERTICALFLIP) - mo->eflags |= MFE_VERTICALFLIP; - P_SetTarget(&mo->target, player->mo); - mo->momz = (8*FRACUNIT)*P_MobjFlip(player->mo); + newz = player->mo->z + player->mo->height; + else + newz = player->mo->z; + + mo = P_SpawnMobj(newx, newy, newz, MT_DEZLASER); + if (mo) + { + if (player->mo->eflags & MFE_VERTICALFLIP) + mo->eflags |= MFE_VERTICALFLIP; + P_SetTarget(&mo->target, player->mo); + mo->angle = newangle+ANGLE_90; + mo->momz = (8*FRACUNIT)*P_MobjFlip(player->mo); + } } } } @@ -1231,6 +1241,9 @@ static void K_PlayOvertakeSound(mobj_t *source) if (source->player && source->player->kartstuff[k_voices]) // Prevents taunt sounds from playing every time the button is pressed return; + if (!G_RaceGametype()) // Only in race + return; + // 4 seconds from before race begins, 10 seconds afterwards if (leveltime < starttime+(10*TICRATE)) return;