From 69e4a1c59f508f156c7b66a19a81aed3b07667bc Mon Sep 17 00:00:00 2001 From: Sally Coolatta Date: Thu, 22 Oct 2020 22:15:07 -0400 Subject: [PATCH] Blue sphere jiggle physics --- src/dehacked.c | 39 ++++++++++++++++++++++++++++++++--- src/info.c | 55 ++++++++++++++++++++++++++++++++++++++------------ src/info.h | 37 +++++++++++++++++++++++++++++++-- 3 files changed, 113 insertions(+), 18 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index c57b8f5bf..fb6772499 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -6173,10 +6173,43 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit "S_FASTRING11", "S_FASTRING12", - // Blue Sphere for special stages + // Blue Sphere "S_BLUESPHERE", - "S_BLUESPHEREBONUS", - "S_BLUESPHERESPARK", + "S_BLUESPHERE_SPAWN", + + "S_BLUESPHERE_BOUNCE1", + "S_BLUESPHERE_BOUNCE2", + + "S_BLUESPHERE_BOUNCE3", + "S_BLUESPHERE_BOUNCE4", + + "S_BLUESPHERE_BOUNCE5", + "S_BLUESPHERE_BOUNCE6", + "S_BLUESPHERE_BOUNCE7", + "S_BLUESPHERE_BOUNCE8", + + "S_BLUESPHERE_BOUNCE9", + "S_BLUESPHERE_BOUNCE10", + "S_BLUESPHERE_BOUNCE11", + "S_BLUESPHERE_BOUNCE12", + + "S_BLUESPHERE_BOUNCE13", + "S_BLUESPHERE_BOUNCE14", + "S_BLUESPHERE_BOUNCE15", + "S_BLUESPHERE_BOUNCE16", + "S_BLUESPHERE_BOUNCE17", + "S_BLUESPHERE_BOUNCE18", + "S_BLUESPHERE_BOUNCE19", + "S_BLUESPHERE_BOUNCE20", + + "S_BLUESPHERE_BOUNCE21", + "S_BLUESPHERE_BOUNCE22", + "S_BLUESPHERE_BOUNCE23", + "S_BLUESPHERE_BOUNCE24", + "S_BLUESPHERE_BOUNCE25", + "S_BLUESPHERE_BOUNCE26", + "S_BLUESPHERE_BOUNCE27", + "S_BLUESPHERE_BOUNCE28", // Bomb Sphere "S_BOMBSPHERE1", diff --git a/src/info.c b/src/info.c index 16bd03331..812aa2a18 100644 --- a/src/info.c +++ b/src/info.c @@ -1801,14 +1801,43 @@ state_t states[NUMSTATES] = {SPR_RING, 20, 1, {NULL}, 0, 0, S_FASTRING12}, // S_FASTRING11 {SPR_RING, 22, 1, {NULL}, 0, 0, S_FASTRING1}, // S_FASTRING12 - // Blue Sphere for special stages - {SPR_BSPH, FF_SEMIBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_BLUESPHERE - {SPR_BSPH, FF_FULLBRIGHT -#ifdef MANIASPHERES - |FF_ANIMATE|FF_RANDOMANIM -#endif - , -1, {NULL}, 1, 4, S_NULL}, // S_BLUESPHEREBONUS - {SPR_BSPH, 0, 20, {NULL}, 0, 0, S_NULL}, // S_BLUESPHERESPARK + // Blue Sphere + {SPR_BSPH, FF_SEMIBRIGHT|2, TICRATE, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE1}, // S_BLUESPHERE + {SPR_BSPH, FF_SEMIBRIGHT|2, TICRATE, {A_SetRandomTics}, 1, TICRATE, S_BLUESPHERE_BOUNCE1}, // S_BLUESPHERE_SPAWN + + {SPR_BSPH, FF_SEMIBRIGHT, 1, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE2}, // S_BLUESPHERE_BOUNCE1 + {SPR_BSPH, FF_SEMIBRIGHT|4, 1, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE3}, // S_BLUESPHERE_BOUNCE2 + + {SPR_BSPH, FF_SEMIBRIGHT, 1, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE4}, // S_BLUESPHERE_BOUNCE3 + {SPR_BSPH, FF_SEMIBRIGHT|4, 1, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE5}, // S_BLUESPHERE_BOUNCE4 + + {SPR_BSPH, FF_SEMIBRIGHT, 1, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE6}, // S_BLUESPHERE_BOUNCE5 + {SPR_BSPH, FF_SEMIBRIGHT|2, 1, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE7}, // S_BLUESPHERE_BOUNCE6 + {SPR_BSPH, FF_SEMIBRIGHT|4, 1, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE8}, // S_BLUESPHERE_BOUNCE7 + {SPR_BSPH, FF_SEMIBRIGHT|2, 1, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE9}, // S_BLUESPHERE_BOUNCE8 + + {SPR_BSPH, FF_SEMIBRIGHT, 1, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE10}, // S_BLUESPHERE_BOUNCE9 + {SPR_BSPH, FF_SEMIBRIGHT|2, 1, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE11}, // S_BLUESPHERE_BOUNCE10 + {SPR_BSPH, FF_SEMIBRIGHT|4, 1, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE12}, // S_BLUESPHERE_BOUNCE11 + {SPR_BSPH, FF_SEMIBRIGHT|2, 1, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE13}, // S_BLUESPHERE_BOUNCE12 + + {SPR_BSPH, FF_SEMIBRIGHT, 2, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE14}, // S_BLUESPHERE_BOUNCE13 + {SPR_BSPH, FF_SEMIBRIGHT|1, 2, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE15}, // S_BLUESPHERE_BOUNCE14 + {SPR_BSPH, FF_SEMIBRIGHT|2, 2, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE16}, // S_BLUESPHERE_BOUNCE15 + {SPR_BSPH, FF_SEMIBRIGHT|3, 2, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE17}, // S_BLUESPHERE_BOUNCE16 + {SPR_BSPH, FF_SEMIBRIGHT|4, 2, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE18}, // S_BLUESPHERE_BOUNCE17 + {SPR_BSPH, FF_SEMIBRIGHT|3, 4, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE19}, // S_BLUESPHERE_BOUNCE18 + {SPR_BSPH, FF_SEMIBRIGHT|2, 4, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE20}, // S_BLUESPHERE_BOUNCE19 + {SPR_BSPH, FF_SEMIBRIGHT|1, 4, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE21}, // S_BLUESPHERE_BOUNCE20 + + {SPR_BSPH, FF_SEMIBRIGHT, 6, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE22}, // S_BLUESPHERE_BOUNCE21 + {SPR_BSPH, FF_SEMIBRIGHT|1, 6, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE23}, // S_BLUESPHERE_BOUNCE22 + {SPR_BSPH, FF_SEMIBRIGHT|2, 6, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE24}, // S_BLUESPHERE_BOUNCE23 + {SPR_BSPH, FF_SEMIBRIGHT|3, 9, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE25}, // S_BLUESPHERE_BOUNCE24 + {SPR_BSPH, FF_SEMIBRIGHT|4, 9, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE26}, // S_BLUESPHERE_BOUNCE25 + {SPR_BSPH, FF_SEMIBRIGHT|3, 9, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE27}, // S_BLUESPHERE_BOUNCE26 + {SPR_BSPH, FF_SEMIBRIGHT|2, 9, {NULL}, 0, 0, S_BLUESPHERE_BOUNCE28}, // S_BLUESPHERE_BOUNCE27 + {SPR_BSPH, FF_SEMIBRIGHT|1, 9, {NULL}, 0, 0, S_BLUESPHERE}, // S_BLUESPHERE_BOUNCE28 // Bomb Sphere {SPR_BSPH, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_BOMBSPHERE2}, // S_BOMBSPHERE1 @@ -7927,7 +7956,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = { // MT_BLUESPHERE -1, // doomednum - S_BLUESPHERE, // spawnstate + S_BLUESPHERE_SPAWN, // spawnstate 1000, // spawnhealth S_NULL, // seestate sfx_None, // seesound @@ -7948,13 +7977,13 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 100, // mass 0, // damage sfx_None, // activesound - MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_DONTENCOREMAP, // flags - S_BLUESPHEREBONUS // raisestate + MF_RUNSPAWNFUNC|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_DONTENCOREMAP, // flags + S_NULL // raisestate }, { // MT_FLINGBLUESPHERE -1, // doomednum - S_BLUESPHERE, // spawnstate + S_BLUESPHERE_SPAWN, // spawnstate 1000, // spawnhealth S_NULL, // seestate sfx_None, // seesound @@ -7976,7 +8005,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 0, // damage sfx_None, // activesound MF_SLIDEME|MF_SPECIAL, // flags - S_BLUESPHEREBONUS // raisestate + S_NULL // raisestate }, { // MT_BOMBSPHERE diff --git a/src/info.h b/src/info.h index cc8876f32..b56f436b2 100644 --- a/src/info.h +++ b/src/info.h @@ -2018,8 +2018,41 @@ typedef enum state // Blue Sphere for special stages S_BLUESPHERE, - S_BLUESPHEREBONUS, - S_BLUESPHERESPARK, + S_BLUESPHERE_SPAWN, + + S_BLUESPHERE_BOUNCE1, + S_BLUESPHERE_BOUNCE2, + + S_BLUESPHERE_BOUNCE3, + S_BLUESPHERE_BOUNCE4, + + S_BLUESPHERE_BOUNCE5, + S_BLUESPHERE_BOUNCE6, + S_BLUESPHERE_BOUNCE7, + S_BLUESPHERE_BOUNCE8, + + S_BLUESPHERE_BOUNCE9, + S_BLUESPHERE_BOUNCE10, + S_BLUESPHERE_BOUNCE11, + S_BLUESPHERE_BOUNCE12, + + S_BLUESPHERE_BOUNCE13, + S_BLUESPHERE_BOUNCE14, + S_BLUESPHERE_BOUNCE15, + S_BLUESPHERE_BOUNCE16, + S_BLUESPHERE_BOUNCE17, + S_BLUESPHERE_BOUNCE18, + S_BLUESPHERE_BOUNCE19, + S_BLUESPHERE_BOUNCE20, + + S_BLUESPHERE_BOUNCE21, + S_BLUESPHERE_BOUNCE22, + S_BLUESPHERE_BOUNCE23, + S_BLUESPHERE_BOUNCE24, + S_BLUESPHERE_BOUNCE25, + S_BLUESPHERE_BOUNCE26, + S_BLUESPHERE_BOUNCE27, + S_BLUESPHERE_BOUNCE28, // Bomb Sphere S_BOMBSPHERE1,