From b20b71b895a528de2ac9f4ec07b7b8fa6e30b833 Mon Sep 17 00:00:00 2001 From: Radicalicious <77638573+Radicalicious@users.noreply.github.com> Date: Tue, 17 Dec 2024 19:18:31 -0600 Subject: [PATCH] Fix Knuckles --- src/hardware/hw_light.c | 4 ++- src/info.c | 69 +++++++++++++++++++++-------------------- src/info.h | 19 +++++++----- src/p_mobj.c | 8 ++--- 4 files changed, 53 insertions(+), 47 deletions(-) diff --git a/src/hardware/hw_light.c b/src/hardware/hw_light.c index a390092d1..2fefe3ed2 100644 --- a/src/hardware/hw_light.c +++ b/src/hardware/hw_light.c @@ -575,7 +575,6 @@ light_t *t_lspr[NUMSPRITES] = &lspr[BLUEBALL_L], // SPR_SBFL, &lspr[BLUEBALL_L], // SPR_SBSK, &lspr[NOLIGHT], // SPR_BATT, - &lspr[NOLIGHT], // SPR_OLDK, // Debris &lspr[RINGSPARK_L], // SPR_SPRK @@ -615,6 +614,9 @@ light_t *t_lspr[NUMSPRITES] = &lspr[NOLIGHT], // SPR_GWLG &lspr[NOLIGHT], // SPR_GWLR + // LJ Knuckles + &lspr[NOLIGHT], // SPR_OLDK, + // Free slots &lspr[NOLIGHT], &lspr[NOLIGHT], diff --git a/src/info.c b/src/info.c index 2361de627..842d8bceb 100644 --- a/src/info.c +++ b/src/info.c @@ -486,7 +486,6 @@ char sprnames[NUMSPRITES + 1][MAXSPRITENAME + 1] = "SBFL", "SBSK", "HBAT", - "OLDK", // Debris "SPRK", // Sparkle @@ -525,6 +524,9 @@ char sprnames[NUMSPRITES + 1][MAXSPRITENAME + 1] = // Gravity Well Objects "GWLG", "GWLR", + + // LJ Knuckles + "OLDK", }; char spr2names[NUMPLAYERSPRITES][MAXSPRITENAME + 1] = @@ -3937,11 +3939,6 @@ state_t states[NUMSTATES] = {SPR_HBAT, 3, 1, {NULL}, 0, 0, S_HANGSTER_RETURN1, 0}, // S_HANGSTER_RETURN2 {SPR_HBAT, 0, 15, {NULL}, 0, 0, S_HANGSTER_LOOK, 0}, // S_HANGSTER_RETURN3 - {SPR_OLDK, FF_ANIMATE, -1, {NULL}, 1, 16, S_NULL, 0}, // S_OLDK_STND - {SPR_OLDK, 2, 0, {A_ForceWin}, 0, 0, S_OLDK_DIE1, 0}, // S_OLDK_DIE0 - {SPR_OLDK, 2, 0, {A_Scream}, 0, 0, S_OLDK_DIE2, 0}, // S_OLDK_DIE1 - {SPR_OLDK, 2, -1, {A_ZThrust}, 14, 1|(1<<16), S_NULL, 0}, // S_OLDK_DIE2 - {SPR_NULL, 0, 35, {NULL}, 0, 0, S_CRUMBLE2, 0}, // S_CRUMBLE1 {SPR_NULL, 0, 105, {A_Scream}, 0, 0, S_NULL, 0}, // S_CRUMBLE2 @@ -4001,6 +3998,11 @@ state_t states[NUMSTATES] = {SPR_BRIY, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL, 0}, // S_YELLOWBRICKDEBRIS {SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL, 0}, // S_NAMECHECK + + {SPR_OLDK, FF_ANIMATE, -1, {NULL}, 1, 16, S_NULL, 0}, // S_OLDK_STND + {SPR_OLDK, 2, 0, {A_ForceWin}, 0, 0, S_OLDK_DIE1, 0}, // S_OLDK_DIE0 + {SPR_OLDK, 2, 0, {A_Scream}, 0, 0, S_OLDK_DIE2, 0}, // S_OLDK_DIE1 + {SPR_OLDK, 2, -1, {A_ZThrust}, 14, 1|(1<<16), S_NULL, 0}, // S_OLDK_DIE2 }; mobjinfo_t mobjinfo[NUMMOBJTYPES] = @@ -20502,34 +20504,6 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL // raisestate }, - // MT_OLDK - { - 666, // doomednum - S_OLDK_STND, // spawnstate - 2, // spawnhealth - S_NULL, // seestate - sfx_None, // seesound - 32, // reactiontime - sfx_None, // attacksound - S_OLDK_DIE0, // painstate - 128, // painchance - sfx_s3k35, // painsound - S_NULL, // meleestate - S_NULL, // missilestate - S_OLDK_DIE0, // deathstate - S_NULL, // xdeathstate - sfx_s3k35, // deathsound - 2*FRACUNIT, // speed - 32*FRACUNIT, // radius - 64*FRACUNIT, // height - 0, // display offset - 1000, // mass - 0, // damage - sfx_None, // activesound - MF_SPECIAL|MF_SHOOTABLE|MF_NOGRAVITY|MF_BOSS, // flags - S_NULL // raisestate - }, - { // MT_TELEPORTMAN 751, // doomednum S_INVISIBLE, // spawnstate @@ -21638,6 +21612,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = MF_NOBLOCKMAP|MF_NOSECTOR|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags S_NULL // raisestate }, + + { // MT_OLDK + 666, // doomednum + S_OLDK_STND, // spawnstate + 1, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 32, // reactiontime + sfx_None, // attacksound + S_OLDK_DIE0, // painstate + 128, // painchance + sfx_s3k35, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_OLDK_DIE0, // deathstate + S_NULL, // xdeathstate + sfx_s3k35, // deathsound + 2*FRACUNIT, // speed + 32*FRACUNIT, // radius + 64*FRACUNIT, // height + 0, // display offset + 1000, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_SHOOTABLE|MF_NOGRAVITY|MF_BOSS, // flags + S_NULL // raisestate + }, }; skincolor_t skincolors[MAXSKINCOLORS] = { diff --git a/src/info.h b/src/info.h index 37babf44b..db846fc1c 100644 --- a/src/info.h +++ b/src/info.h @@ -1037,7 +1037,6 @@ typedef enum sprite SPR_SBFL, SPR_SBSK, SPR_HBAT, - SPR_OLDK, // Debris SPR_SPRK, // Sparkle @@ -1077,6 +1076,9 @@ typedef enum sprite SPR_GWLG, SPR_GWLR, + // LJ Knuckles + SPR_OLDK, + SPR_FIRSTFREESLOT, SPR_LASTFREESLOT = SPR_FIRSTFREESLOT + NUMSPRITEFREESLOTS - 1, NUMSPRITES @@ -4309,11 +4311,6 @@ typedef enum state S_HANGSTER_RETURN2, S_HANGSTER_RETURN3, - S_OLDK_STND, - S_OLDK_DIE0, - S_OLDK_DIE1, - S_OLDK_DIE2, - S_CRUMBLE1, S_CRUMBLE2, @@ -4374,6 +4371,12 @@ typedef enum state S_NAMECHECK, + // LJ Knuckles + S_OLDK_STND, + S_OLDK_DIE0, + S_OLDK_DIE1, + S_OLDK_DIE2, + S_FIRSTFREESLOT, S_LASTFREESLOT = S_FIRSTFREESLOT + NUMSTATEFREESLOTS - 1, NUMSTATES @@ -5122,8 +5125,6 @@ typedef enum mobj_type MT_SPINBOBERT_FIRE2, MT_HANGSTER, - MT_OLDK, - // Utility Objects MT_TELEPORTMAN, MT_ALTVIEWMAN, @@ -5174,6 +5175,8 @@ typedef enum mobj_type MT_NAMECHECK, MT_RAY, // General purpose mobj + MT_OLDK, + MT_FIRSTFREESLOT, MT_LASTFREESLOT = MT_FIRSTFREESLOT + NUMMOBJFREESLOTS - 1, NUMMOBJTYPES diff --git a/src/p_mobj.c b/src/p_mobj.c index b02c4be49..aa17ddaac 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -8061,6 +8061,10 @@ static boolean P_MobjBossThink(mobj_t *mobj) case MT_METALSONIC_BATTLE: P_Boss9Thinker(mobj); break; + case MT_OLDK: + if (mobj->health <= 0) + mobj->momz -= (2*FRACUNIT)/3; + break; default: // Generic SOC-made boss if (mobj->flags2 & MF2_SKULLFLY) P_SpawnGhostMobj(mobj); @@ -9529,10 +9533,6 @@ static boolean P_MobjRegularThink(mobj_t *mobj) if (!P_HangsterThink(mobj)) return false; break; - case MT_OLDK: - if (mobj->health <= 0) - mobj->momz -= ((2*FRACUNIT)/3); - break; case MT_LHRT: mobj->momx = FixedMul(mobj->momx, mobj->extravalue2); mobj->momy = FixedMul(mobj->momy, mobj->extravalue2);