From 3abcf552b0cae9af2ae058c6f6639df9649f98bb Mon Sep 17 00:00:00 2001 From: toaster Date: Mon, 22 Oct 2018 22:36:04 +0100 Subject: [PATCH] D2 Balloon Panic, plus minor, minor touchup to Rusty Rig lamp's light positioning. (Sorry, Drt.) --- src/dehacked.c | 9 +++++++++ src/info.c | 35 ++++++++++++++++++++++++++++++++++- src/info.h | 11 +++++++++++ src/p_enemy.c | 2 ++ src/p_inter.c | 5 ++++- src/p_mobj.c | 7 ++++++- 6 files changed, 66 insertions(+), 3 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index 96a1d1cff..2c2d02321 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -6785,6 +6785,12 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit "S_RUSTYLAMP_ORANGE", "S_RUSTYCHAIN", + // D2 Balloon Panic + "S_BALLOON", + "S_BALLOONPOP1", + "S_BALLOONPOP2", + "S_BALLOONPOP3", + #ifdef SEENAMES "S_NAMECHECK", #endif @@ -7451,6 +7457,9 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s "MT_RUSTYLAMP_ORANGE", "MT_RUSTYCHAIN", + // D2 Balloon Panic + "MT_BALLOON", + #ifdef SEENAMES "MT_NAMECHECK", #endif diff --git a/src/info.c b/src/info.c index 9c44edbbe..fb80e5a17 100644 --- a/src/info.c +++ b/src/info.c @@ -61,7 +61,7 @@ char sprnames[NUMSPRITES + 1][5] = "DEZL","POKE","AUDI","DECO","DOOD","SNES","GBAS","SPRS","BUZB","CHOM", "SACO","CRAB","SHAD","BRNG","BUMP","FLEN","CLAS","PSHW","ISTA","ISTB", "ARRO","ITEM","ITMO","ITMI","ITMN","WANT","PBOM","RETI","AIDU","KSPK", - "LZI1","LZI2","KLIT","MARB","FUFO","RUST","VIEW" + "LZI1","LZI2","KLIT","MARB","FUFO","RUST","BLON","VIEW" }; // Doesn't work with g++, needs actionf_p1 (don't modify this comment) @@ -3080,6 +3080,12 @@ state_t states[NUMSTATES] = {SPR_RUST, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_RUSTYLAMP_ORANGE {SPR_RUST, 1, -1, {NULL}, 0, 0, S_NULL}, // S_RUSTYCHAIN + // D2 Balloon Panic + {SPR_BLON, FF_ANIMATE, -1, {NULL}, 2, 5, S_BALLOON}, // S_BALLOON + {SPR_BLON, FF_ANIMATE|3, 2, {NULL}, 1, 1, S_BALLOONPOP2}, // S_BALLOONPOP1 + {SPR_NULL, 0, 15*TICRATE, {NULL}, 0, 0, S_BALLOONPOP3}, // S_BALLOONPOP2 + {SPR_NULL, 0, 0, {A_SpawnFreshCopy}, 0, 0, S_NULL}, // S_BALLOONPOP3 + #ifdef SEENAMES {SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL}, // S_NAMECHECK #endif @@ -17414,6 +17420,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL // raisestate }, + { // MT_BALLOON + 462, // doomednum + S_BALLOON, // 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_BALLOONPOP1, // deathstate + S_NULL, // xdeathstate + sfx_s3k77, // deathsound + 0, // speed + 32*FRACUNIT, // radius + 64*FRACUNIT, // height + 0, // display offset + 0, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_NOGRAVITY|MF_SCENERY, // flags + S_NULL // raisestate + }, + // ============================================================================================================================// #ifdef SEENAMES diff --git a/src/info.h b/src/info.h index ac9a24e92..c4807c9cd 100644 --- a/src/info.h +++ b/src/info.h @@ -659,6 +659,8 @@ typedef enum sprite SPR_RUST, // Rusty Rig sprites + SPR_BLON, // D2 Balloon Panic + SPR_VIEW, // First person view sprites; this is a sprite so that it can be replaced by a specialized MD2 draw! SPR_FIRSTFREESLOT, @@ -3633,6 +3635,12 @@ typedef enum state S_RUSTYLAMP_ORANGE, S_RUSTYCHAIN, + // D2 Balloon Panic + S_BALLOON, + S_BALLOONPOP1, + S_BALLOONPOP2, + S_BALLOONPOP3, + #ifdef SEENAMES S_NAMECHECK, #endif @@ -4316,6 +4324,9 @@ typedef enum mobj_type MT_RUSTYLAMP_ORANGE, MT_RUSTYCHAIN, + // D2 Balloon Panic + MT_BALLOON, + #ifdef SEENAMES MT_NAMECHECK, #endif diff --git a/src/p_enemy.c b/src/p_enemy.c index 9e6ce3863..a21d4d30d 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -10583,4 +10583,6 @@ void A_SpawnFreshCopy(mobj_t *actor) if (newObject->info->seesound) S_StartSound(newObject, newObject->info->seesound); + + newObject->color = actor->color; // SRB2Kart } diff --git a/src/p_inter.c b/src/p_inter.c index 96733f27f..ece7b3a0b 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -577,7 +577,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) special->target->player->kartstuff[k_eggmanblame] = -1; } return; - case MT_CDUFO: // SRB2kart + case MT_CDUFO: // SRB2kart if (special->fuse || !P_CanPickupItem(player, 1) || (G_BattleGametype() && player->kartstuff[k_bumper] <= 0)) return; @@ -591,6 +591,9 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) //P_SetTarget(&special->target, toucher); special->fuse = 2*TICRATE; break; + case MT_BALLOON: // SRB2kart + P_SetObjectMomZ(toucher, 20<x, mobj->y, mobj->z + (29*mobj->scale), MT_MARBLELIGHT); break; case MT_RUSTYLAMP_ORANGE: - P_SpawnMobj(mobj->x, mobj->y, mobj->z + (68*mobj->scale), MT_MARBLELIGHT); + P_SpawnMobj(mobj->x, mobj->y, mobj->z + (69*mobj->scale), MT_MARBLELIGHT); break; default: break; @@ -11044,6 +11044,11 @@ ML_NOCLIMB : Direction not controllable case MT_TRAPGOYLELONG: if (mthing->angle >= 360) mobj->tics += 7*(mthing->angle / 360) + 1; // starting delay + break; + case MT_BALLOON: // SRB2Kart + if (mthing->angle < MAXSKINCOLORS && mthing->angle > 0) + mobj->color = mthing->angle; + break; default: break; }