From 9436993a3e8b3ae624feb4d865cb3ec9a9386dfe Mon Sep 17 00:00:00 2001 From: lachwright Date: Tue, 29 Oct 2019 15:32:03 +0800 Subject: [PATCH 1/5] Implement new states for Buggle, the new Aquabuzz --- src/dehacked.c | 6 +++--- src/info.c | 10 +++++----- src/info.h | 6 +++--- src/p_inter.c | 2 +- src/p_mobj.c | 7 ++++++- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index 34ee1f170..534cabb0b 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -7253,8 +7253,8 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit "S_BUMBLEBORE_STUCK2", "S_BUMBLEBORE_DIE", - "S_BBUZZFLY1", - "S_BBUZZFLY2", + "S_BUGGLEIDLE", + "S_BUGGLEFLY", "S_SMASHSPIKE_FLOAT", "S_SMASHSPIKE_EASE1", @@ -8093,7 +8093,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s "MT_HIVEELEMENTAL", "MT_BUMBLEBORE", - "MT_BUBBLEBUZZ", + "MT_BUGGLE", "MT_SMASHINGSPIKEBALL", "MT_CACOLANTERN", diff --git a/src/info.c b/src/info.c index cfaad552d..daa2029a6 100644 --- a/src/info.c +++ b/src/info.c @@ -3863,8 +3863,8 @@ state_t states[NUMSTATES] = {SPR_BUMB, 5, 120, {NULL}, 0, 0, S_BUMBLEBORE_DIE}, // S_BUMBLEBORE_STUCK2 {SPR_BUMB, 5, 0, {A_CryingToMomma}, 0, 0, S_XPLD1}, // S_BUMBLEBORE_DIE - {SPR_BBUZ, 0, 2, {NULL}, 0, 0, S_BBUZZFLY2}, // S_BBUZZFLY1 - {SPR_BBUZ, 1, 2, {NULL}, 0, 0, S_BBUZZFLY1}, // S_BBUZZFLY2 + {SPR_BBUZ, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BUGGLEIDLE + {SPR_BBUZ, FF_ANIMATE, -1, {NULL}, 1, 2, S_NULL}, // S_BUGGLEFLY {SPR_FMCE, 0, 20, {NULL}, 0, 0, S_SMASHSPIKE_EASE1}, // S_SMASHSPIKE_FLOAT {SPR_FMCE, 0, 4, {A_ZThrust}, 4, (1<<16)|1, S_SMASHSPIKE_EASE2}, // S_SMASHSPIKE_EASE1 @@ -20128,11 +20128,11 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL // raisestate }, - { // MT_BUBBLEBUZZ + { // MT_BUGGLE 124, // doomednum - S_BBUZZFLY1, // spawnstate + S_BUGGLEIDLE, // spawnstate 1, // spawnhealth - S_BBUZZFLY1, // seestate + S_BUGGLEFLY, // seestate sfx_None, // seesound 2, // reactiontime sfx_None, // attacksound diff --git a/src/info.h b/src/info.h index e7f41f585..20b471811 100644 --- a/src/info.h +++ b/src/info.h @@ -3927,8 +3927,8 @@ typedef enum state S_BUMBLEBORE_STUCK2, S_BUMBLEBORE_DIE, - S_BBUZZFLY1, - S_BBUZZFLY2, + S_BUGGLEIDLE, + S_BUGGLEFLY, S_SMASHSPIKE_FLOAT, S_SMASHSPIKE_EASE1, @@ -4789,7 +4789,7 @@ typedef enum mobj_type MT_HIVEELEMENTAL, MT_BUMBLEBORE, - MT_BUBBLEBUZZ, + MT_BUGGLE, MT_SMASHINGSPIKEBALL, MT_CACOLANTERN, diff --git a/src/p_inter.c b/src/p_inter.c index 9017f795d..64a7d2ff8 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -2615,7 +2615,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget target->fuse = target->info->damage; break; - case MT_BUBBLEBUZZ: + case MT_BUGGLE: if (inflictor && inflictor->player // did a player kill you? Spawn relative to the player so they're bound to get it && P_AproxDistance(inflictor->x - target->x, inflictor->y - target->y) <= inflictor->radius + target->radius + FixedMul(8*FRACUNIT, inflictor->scale) // close enough? && inflictor->z <= target->z + target->height + FixedMul(8*FRACUNIT, inflictor->scale) diff --git a/src/p_mobj.c b/src/p_mobj.c index 5735dc27b..93a77bcda 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -8406,7 +8406,7 @@ void P_MobjThinker(mobj_t *mobj) } } break; - case MT_BUBBLEBUZZ: + case MT_BUGGLE: mobj->eflags |= MFE_UNDERWATER; //P_MobjCheckWater(mobj); // solely for MFE_UNDERWATER for A_FlickySpawn { if (mobj->tracer && mobj->tracer->player && mobj->tracer->health > 0 @@ -8420,6 +8420,9 @@ void P_MobjThinker(mobj_t *mobj) if (leveltime % mobj->info->painchance == 0) S_StartSound(mobj, mobj->info->activesound); + + if ((statenum_t)(mobj->state-states) != mobj->info->seestate) + P_SetMobjState(mobj, mobj->info->seestate); } else { @@ -8428,6 +8431,8 @@ void P_MobjThinker(mobj_t *mobj) mobj->momx >>= 1; mobj->momy >>= 1; mobj->momz >>= 1; + if ((statenum_t)(mobj->state-states) != mobj->info->spawnstate) + P_SetMobjState(mobj, mobj->info->spawnstate); } } break; From 7c08cd69fa2390597b4561aa36857f457afa38ac Mon Sep 17 00:00:00 2001 From: lachwright Date: Thu, 31 Oct 2019 00:32:19 +0800 Subject: [PATCH 2/5] WIP new states for Glaregoyle --- src/dehacked.c | 58 +++++++++++++++++++++++----------------------- src/info.c | 62 +++++++++++++++++++++++++------------------------- src/info.h | 58 +++++++++++++++++++++++----------------------- src/p_mobj.c | 8 +++---- 4 files changed, 93 insertions(+), 93 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index 534cabb0b..a5dc1c4c1 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -5662,7 +5662,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit "S_ARROW", "S_ARROWBONK", - // Trapgoyle Demon fire + // Glaregoyle Demon fire "S_DEMONFIRE", // GFZ flowers @@ -6030,29 +6030,29 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit "S_WALLVINE_LONG", "S_WALLVINE_SHORT", - // Trapgoyles - "S_TRAPGOYLE", - "S_TRAPGOYLE_CHECK", - "S_TRAPGOYLE_FIRE1", - "S_TRAPGOYLE_FIRE2", - "S_TRAPGOYLE_FIRE3", - "S_TRAPGOYLEUP", - "S_TRAPGOYLEUP_CHECK", - "S_TRAPGOYLEUP_FIRE1", - "S_TRAPGOYLEUP_FIRE2", - "S_TRAPGOYLEUP_FIRE3", - "S_TRAPGOYLEDOWN", - "S_TRAPGOYLEDOWN_CHECK", - "S_TRAPGOYLEDOWN_FIRE1", - "S_TRAPGOYLEDOWN_FIRE2", - "S_TRAPGOYLEDOWN_FIRE3", - "S_TRAPGOYLELONG", - "S_TRAPGOYLELONG_CHECK", - "S_TRAPGOYLELONG_FIRE1", - "S_TRAPGOYLELONG_FIRE2", - "S_TRAPGOYLELONG_FIRE3", - "S_TRAPGOYLELONG_FIRE4", - "S_TRAPGOYLELONG_FIRE5", + // Glaregoyles + "S_GLAREGOYLE", + "S_GLAREGOYLE_CHECK", + "S_GLAREGOYLE_FIRE1", + "S_GLAREGOYLE_FIRE2", + "S_GLAREGOYLE_FIRE3", + "S_GLAREGOYLEUP", + "S_GLAREGOYLEUP_CHECK", + "S_GLAREGOYLEUP_FIRE1", + "S_GLAREGOYLEUP_FIRE2", + "S_GLAREGOYLEUP_FIRE3", + "S_GLAREGOYLEDOWN", + "S_GLAREGOYLEDOWN_CHECK", + "S_GLAREGOYLEDOWN_FIRE1", + "S_GLAREGOYLEDOWN_FIRE2", + "S_GLAREGOYLEDOWN_FIRE3", + "S_GLAREGOYLELONG", + "S_GLAREGOYLELONG_CHECK", + "S_GLAREGOYLELONG_FIRE1", + "S_GLAREGOYLELONG_FIRE2", + "S_GLAREGOYLELONG_FIRE3", + "S_GLAREGOYLELONG_FIRE4", + "S_GLAREGOYLELONG_FIRE5", // ATZ's Red Crystal/Target "S_TARGET_IDLE", @@ -7650,7 +7650,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s "MT_CANNONBALL", // Cannonball "MT_CANNONBALLDECOR", // Decorative/still cannonball "MT_ARROW", // Arrow - "MT_DEMONFIRE", // Trapgoyle fire + "MT_DEMONFIRE", // Glaregoyle fire // Greenflower Scenery "MT_GFZFLOWER1", @@ -7813,10 +7813,10 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s // Egg Rock Scenery // Azure Temple Scenery - "MT_TRAPGOYLE", - "MT_TRAPGOYLEUP", - "MT_TRAPGOYLEDOWN", - "MT_TRAPGOYLELONG", + "MT_GLAREGOYLE", + "MT_GLAREGOYLEUP", + "MT_GLAREGOYLEDOWN", + "MT_GLAREGOYLELONG", "MT_TARGET", "MT_GREENFLAME", diff --git a/src/info.c b/src/info.c index daa2029a6..9659c9712 100644 --- a/src/info.c +++ b/src/info.c @@ -2579,32 +2579,32 @@ state_t states[NUMSTATES] = {SPR_WVIN, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_WALLVINE_LONG {SPR_WVIN, 1|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_WALLVINE_SHORT - // Trapgoyles - {SPR_BGAR, 0, 67, {NULL}, 0, 0, S_TRAPGOYLE_CHECK}, // S_TRAPGOYLE - {SPR_BGAR, 0, 3, {NULL}, 0, 0, S_TRAPGOYLE_FIRE1}, // S_TRAPGOYLE_CHECK - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_TRAPGOYLE_FIRE2}, // S_TRAPGOYLE_FIRE1 - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_TRAPGOYLE_FIRE3}, // S_TRAPGOYLE_FIRE2 - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_TRAPGOYLE}, // S_TRAPGOYLE_FIRE3 + // Glaregoyles + {SPR_BGAR, FF_ANIMATE|1, 52, {NULL}, 1, 0, S_GLAREGOYLE_WARNING}, // S_GLAREGOYLE + {SPR_BGAR, 2, 6, {NULL}, 1, 2, S_GLAREGOYLE_FIRE}, // S_GLAREGOYLE_WARNING + {SPR_BGAR, 1, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLE_LOOP}, // S_GLAREGOYLE_FIRE + {SPR_BGAR, 1, 0, {A_Repeat}, 3, S_GLAREGOYLE_FIRE, S_GLAREGOYLE_COOLDOWN}, // S_GLAREGOYLE_LOOP + {SPR_BGAR, FF_ANIMATE|1, 12, {NULL}, 1, 6, S_GLAREGOYLE}, // S_GLAREGOYLE_COOLDOWN - {SPR_BGAR, 0, 67, {NULL}, 0, 0, S_TRAPGOYLEUP_CHECK}, // S_TRAPGOYLEUP - {SPR_BGAR, 0, 3, {NULL}, 0, 0, S_TRAPGOYLEUP_FIRE1}, // S_TRAPGOYLEUP_CHECK - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+45, S_TRAPGOYLEUP_FIRE2}, // S_TRAPGOYLEUP_FIRE1 - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+45, S_TRAPGOYLEUP_FIRE3}, // S_TRAPGOYLEUP_FIRE2 - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+45, S_TRAPGOYLEUP}, // S_TRAPGOYLEUP_FIRE3 + {SPR_BGAR, 0, 67, {NULL}, 0, 0, S_GLAREGOYLEUP_CHECK}, // S_GLAREGOYLEUP + {SPR_BGAR, 0, 3, {NULL}, 0, 0, S_GLAREGOYLEUP_FIRE1}, // S_GLAREGOYLEUP_CHECK + {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+45, S_GLAREGOYLEUP_FIRE2}, // S_GLAREGOYLEUP_FIRE1 + {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+45, S_GLAREGOYLEUP_FIRE3}, // S_GLAREGOYLEUP_FIRE2 + {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+45, S_GLAREGOYLEUP}, // S_GLAREGOYLEUP_FIRE3 - {SPR_BGAR, 0, 67, {NULL}, 0, 0, S_TRAPGOYLEDOWN_CHECK}, // S_TRAPGOYLEDOWN - {SPR_BGAR, 0, 3, {NULL}, 0, 0, S_TRAPGOYLEDOWN_FIRE1}, // S_TRAPGOYLEDOWN_CHECK - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+315, S_TRAPGOYLEDOWN_FIRE2}, // S_TRAPGOYLEDOWN_FIRE1 - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+315, S_TRAPGOYLEDOWN_FIRE3}, // S_TRAPGOYLEDOWN_FIRE2 - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+315, S_TRAPGOYLEDOWN}, // S_TRAPGOYLEDOWN_FIRE3 + {SPR_BGAR, 0, 67, {NULL}, 0, 0, S_GLAREGOYLEDOWN_CHECK}, // S_GLAREGOYLEDOWN + {SPR_BGAR, 0, 3, {NULL}, 0, 0, S_GLAREGOYLEDOWN_FIRE1}, // S_GLAREGOYLEDOWN_CHECK + {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+315, S_GLAREGOYLEDOWN_FIRE2}, // S_GLAREGOYLEDOWN_FIRE1 + {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+315, S_GLAREGOYLEDOWN_FIRE3}, // S_GLAREGOYLEDOWN_FIRE2 + {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+315, S_GLAREGOYLEDOWN}, // S_GLAREGOYLEDOWN_FIRE3 - {SPR_BGAR, 0, 135, {NULL}, 0, 0, S_TRAPGOYLELONG_CHECK}, // S_TRAPGOYLELONG - {SPR_BGAR, 0, 3, {NULL}, 0, 0, S_TRAPGOYLELONG_FIRE1}, // S_TRAPGOYLELONG_CHECK - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_TRAPGOYLELONG_FIRE2}, // S_TRAPGOYLELONG_FIRE1 - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_TRAPGOYLELONG_FIRE3}, // S_TRAPGOYLELONG_FIRE2 - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_TRAPGOYLELONG_FIRE4}, // S_TRAPGOYLELONG_FIRE3 - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_TRAPGOYLELONG_FIRE5}, // S_TRAPGOYLELONG_FIRE4 - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_TRAPGOYLELONG}, // S_TRAPGOYLELONG_FIRE5 + {SPR_BGAR, 0, 135, {NULL}, 0, 0, S_GLAREGOYLELONG_CHECK}, // S_GLAREGOYLELONG + {SPR_BGAR, 0, 3, {NULL}, 0, 0, S_GLAREGOYLELONG_FIRE1}, // S_GLAREGOYLELONG_CHECK + {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLELONG_FIRE2}, // S_GLAREGOYLELONG_FIRE1 + {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLELONG_FIRE3}, // S_GLAREGOYLELONG_FIRE2 + {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLELONG_FIRE4}, // S_GLAREGOYLELONG_FIRE3 + {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLELONG_FIRE5}, // S_GLAREGOYLELONG_FIRE4 + {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLELONG}, // S_GLAREGOYLELONG_FIRE5 // Target/Red Crystal {SPR_RCRY, 0, -1, {NULL}, 0, 0, S_TARGET_IDLE}, // S_TARGET_IDLE @@ -13581,9 +13581,9 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL // raisestate }, - { // MT_TRAPGOYLE + { // MT_GLAREGOYLE 1500, // doomednum - S_TRAPGOYLE, // spawnstate + S_GLAREGOYLE, // spawnstate 1000, // spawnhealth S_NULL, // seestate sfx_None, // seesound @@ -13608,9 +13608,9 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL // raisestate }, - { // MT_TRAPGOYLEUP + { // MT_GLAREGOYLEUP 1501, // doomednum - S_TRAPGOYLEUP, // spawnstate + S_GLAREGOYLEUP, // spawnstate 1000, // spawnhealth S_NULL, // seestate sfx_None, // seesound @@ -13635,9 +13635,9 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL // raisestate }, - { // MT_TRAPGOYLEDOWN + { // MT_GLAREGOYLEDOWN 1502, // doomednum - S_TRAPGOYLEDOWN,// spawnstate + S_GLAREGOYLEDOWN,// spawnstate 1000, // spawnhealth S_NULL, // seestate sfx_None, // seesound @@ -13662,9 +13662,9 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL // raisestate }, - { // MT_TRAPGOYLELONG + { // MT_GLAREGOYLELONG 1503, // doomednum - S_TRAPGOYLELONG,// spawnstate + S_GLAREGOYLELONG,// spawnstate 1000, // spawnhealth S_NULL, // seestate sfx_None, // seesound diff --git a/src/info.h b/src/info.h index 20b471811..092b92241 100644 --- a/src/info.h +++ b/src/info.h @@ -2335,7 +2335,7 @@ typedef enum state S_ARROW, S_ARROWBONK, - // Trapgoyle Demon fire + // Glaregoyle Demon fire S_DEMONFIRE, // GFZ flowers @@ -2703,29 +2703,29 @@ typedef enum state S_WALLVINE_LONG, S_WALLVINE_SHORT, - // Trapgoyles - S_TRAPGOYLE, - S_TRAPGOYLE_CHECK, - S_TRAPGOYLE_FIRE1, - S_TRAPGOYLE_FIRE2, - S_TRAPGOYLE_FIRE3, - S_TRAPGOYLEUP, - S_TRAPGOYLEUP_CHECK, - S_TRAPGOYLEUP_FIRE1, - S_TRAPGOYLEUP_FIRE2, - S_TRAPGOYLEUP_FIRE3, - S_TRAPGOYLEDOWN, - S_TRAPGOYLEDOWN_CHECK, - S_TRAPGOYLEDOWN_FIRE1, - S_TRAPGOYLEDOWN_FIRE2, - S_TRAPGOYLEDOWN_FIRE3, - S_TRAPGOYLELONG, - S_TRAPGOYLELONG_CHECK, - S_TRAPGOYLELONG_FIRE1, - S_TRAPGOYLELONG_FIRE2, - S_TRAPGOYLELONG_FIRE3, - S_TRAPGOYLELONG_FIRE4, - S_TRAPGOYLELONG_FIRE5, + // Glaregoyles + S_GLAREGOYLE, + S_GLAREGOYLE_WARNING, + S_GLAREGOYLE_FIRE, + S_GLAREGOYLE_LOOP, + S_GLAREGOYLE_COOLDOWN, + S_GLAREGOYLEUP, + S_GLAREGOYLEUP_CHECK, + S_GLAREGOYLEUP_FIRE1, + S_GLAREGOYLEUP_FIRE2, + S_GLAREGOYLEUP_FIRE3, + S_GLAREGOYLEDOWN, + S_GLAREGOYLEDOWN_CHECK, + S_GLAREGOYLEDOWN_FIRE1, + S_GLAREGOYLEDOWN_FIRE2, + S_GLAREGOYLEDOWN_FIRE3, + S_GLAREGOYLELONG, + S_GLAREGOYLELONG_CHECK, + S_GLAREGOYLELONG_FIRE1, + S_GLAREGOYLELONG_FIRE2, + S_GLAREGOYLELONG_FIRE3, + S_GLAREGOYLELONG_FIRE4, + S_GLAREGOYLELONG_FIRE5, // ATZ's Red Crystal/Target S_TARGET_IDLE, @@ -4346,7 +4346,7 @@ typedef enum mobj_type MT_CANNONBALL, // Cannonball MT_CANNONBALLDECOR, // Decorative/still cannonball MT_ARROW, // Arrow - MT_DEMONFIRE, // Trapgoyle fire + MT_DEMONFIRE, // Glaregoyle fire // Greenflower Scenery MT_GFZFLOWER1, @@ -4509,10 +4509,10 @@ typedef enum mobj_type // Egg Rock Scenery // Azure Temple Scenery - MT_TRAPGOYLE, - MT_TRAPGOYLEUP, - MT_TRAPGOYLEDOWN, - MT_TRAPGOYLELONG, + MT_GLAREGOYLE, + MT_GLAREGOYLEUP, + MT_GLAREGOYLEDOWN, + MT_GLAREGOYLELONG, MT_TARGET, // AKA Red Crystal MT_GREENFLAME, diff --git a/src/p_mobj.c b/src/p_mobj.c index 93a77bcda..73141deae 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -12441,10 +12441,10 @@ ML_EFFECT5 : Don't stop thinking when too far away if (mthing->extrainfo) mobj->extravalue1 = mthing->extrainfo; break; - case MT_TRAPGOYLE: - case MT_TRAPGOYLEUP: - case MT_TRAPGOYLEDOWN: - case MT_TRAPGOYLELONG: + case MT_GLAREGOYLE: + case MT_GLAREGOYLEUP: + case MT_GLAREGOYLEDOWN: + case MT_GLAREGOYLELONG: if (mthing->angle >= 360) mobj->tics += 7*(mthing->angle / 360) + 1; // starting delay break; From 95a3546988a6e391c4aff3473699963c0d55798d Mon Sep 17 00:00:00 2001 From: lachwright Date: Thu, 31 Oct 2019 19:18:44 +0800 Subject: [PATCH 3/5] Finish Glaregoyle states --- src/dehacked.c | 43 +++++++++++++++++++++++++------------------ src/info.c | 46 ++++++++++++++++++++++++++-------------------- src/info.h | 36 +++++++++++++++++++++--------------- 3 files changed, 72 insertions(+), 53 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index a5dc1c4c1..4b4922aaf 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -6030,29 +6030,36 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit "S_WALLVINE_LONG", "S_WALLVINE_SHORT", + // Glaregoyles // Glaregoyles "S_GLAREGOYLE", - "S_GLAREGOYLE_CHECK", - "S_GLAREGOYLE_FIRE1", - "S_GLAREGOYLE_FIRE2", - "S_GLAREGOYLE_FIRE3", + "S_GLAREGOYLE_CHARGE", + "S_GLAREGOYLE_BLINK", + "S_GLAREGOYLE_HOLD", + "S_GLAREGOYLE_FIRE", + "S_GLAREGOYLE_LOOP", + "S_GLAREGOYLE_COOLDOWN", "S_GLAREGOYLEUP", - "S_GLAREGOYLEUP_CHECK", - "S_GLAREGOYLEUP_FIRE1", - "S_GLAREGOYLEUP_FIRE2", - "S_GLAREGOYLEUP_FIRE3", + "S_GLAREGOYLEUP_CHARGE", + "S_GLAREGOYLEUP_BLINK", + "S_GLAREGOYLEUP_HOLD", + "S_GLAREGOYLEUP_FIRE", + "S_GLAREGOYLEUP_LOOP", + "S_GLAREGOYLEUP_COOLDOWN", "S_GLAREGOYLEDOWN", - "S_GLAREGOYLEDOWN_CHECK", - "S_GLAREGOYLEDOWN_FIRE1", - "S_GLAREGOYLEDOWN_FIRE2", - "S_GLAREGOYLEDOWN_FIRE3", + "S_GLAREGOYLEDOWN_CHARGE", + "S_GLAREGOYLEDOWN_BLINK", + "S_GLAREGOYLEDOWN_HOLD", + "S_GLAREGOYLEDOWN_FIRE", + "S_GLAREGOYLEDOWN_LOOP", + "S_GLAREGOYLEDOWN_COOLDOWN", "S_GLAREGOYLELONG", - "S_GLAREGOYLELONG_CHECK", - "S_GLAREGOYLELONG_FIRE1", - "S_GLAREGOYLELONG_FIRE2", - "S_GLAREGOYLELONG_FIRE3", - "S_GLAREGOYLELONG_FIRE4", - "S_GLAREGOYLELONG_FIRE5", + "S_GLAREGOYLELONG_CHARGE", + "S_GLAREGOYLELONG_BLINK", + "S_GLAREGOYLELONG_HOLD", + "S_GLAREGOYLELONG_FIRE", + "S_GLAREGOYLELONG_LOOP", + "S_GLAREGOYLELONG_COOLDOWN", // ATZ's Red Crystal/Target "S_TARGET_IDLE", diff --git a/src/info.c b/src/info.c index 9659c9712..2b1dc6135 100644 --- a/src/info.c +++ b/src/info.c @@ -2580,31 +2580,37 @@ state_t states[NUMSTATES] = {SPR_WVIN, 1|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_WALLVINE_SHORT // Glaregoyles - {SPR_BGAR, FF_ANIMATE|1, 52, {NULL}, 1, 0, S_GLAREGOYLE_WARNING}, // S_GLAREGOYLE - {SPR_BGAR, 2, 6, {NULL}, 1, 2, S_GLAREGOYLE_FIRE}, // S_GLAREGOYLE_WARNING + {SPR_BGAR, 0, 22, {NULL}, 0, 0, S_GLAREGOYLE_CHARGE}, // S_GLAREGOYLE + {SPR_BGAR, 2, 6, {NULL}, 0, 0, S_GLAREGOYLE_BLINK}, // S_GLAREGOYLE_CHARGE + {SPR_BGAR, FF_ANIMATE|1, 18, {NULL}, 1, 3, S_GLAREGOYLE_HOLD}, // S_GLAREGOYLE_BLINK + {SPR_BGAR, 1, 9, {NULL}, 0, 0, S_GLAREGOYLE_FIRE}, // S_GLAREGOYLE_HOLD {SPR_BGAR, 1, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLE_LOOP}, // S_GLAREGOYLE_FIRE {SPR_BGAR, 1, 0, {A_Repeat}, 3, S_GLAREGOYLE_FIRE, S_GLAREGOYLE_COOLDOWN}, // S_GLAREGOYLE_LOOP - {SPR_BGAR, FF_ANIMATE|1, 12, {NULL}, 1, 6, S_GLAREGOYLE}, // S_GLAREGOYLE_COOLDOWN + {SPR_BGAR, FF_ANIMATE|1, 15, {NULL}, 1, 9, S_GLAREGOYLE}, // S_GLAREGOYLE_COOLDOWN - {SPR_BGAR, 0, 67, {NULL}, 0, 0, S_GLAREGOYLEUP_CHECK}, // S_GLAREGOYLEUP - {SPR_BGAR, 0, 3, {NULL}, 0, 0, S_GLAREGOYLEUP_FIRE1}, // S_GLAREGOYLEUP_CHECK - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+45, S_GLAREGOYLEUP_FIRE2}, // S_GLAREGOYLEUP_FIRE1 - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+45, S_GLAREGOYLEUP_FIRE3}, // S_GLAREGOYLEUP_FIRE2 - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+45, S_GLAREGOYLEUP}, // S_GLAREGOYLEUP_FIRE3 + {SPR_BGAR, 0, 22, {NULL}, 0, 0, S_GLAREGOYLEUP_CHARGE}, // S_GLAREGOYLEUP + {SPR_BGAR, 2, 6, {NULL}, 0, 0, S_GLAREGOYLEUP_BLINK}, // S_GLAREGOYLEUP_CHARGE + {SPR_BGAR, FF_ANIMATE|1, 18, {NULL}, 1, 3, S_GLAREGOYLEUP_HOLD}, // S_GLAREGOYLEUP_BLINK + {SPR_BGAR, 1, 9, {NULL}, 0, 0, S_GLAREGOYLEUP_FIRE}, // S_GLAREGOYLEUP_HOLD + {SPR_BGAR, 1, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+45, S_GLAREGOYLEUP_LOOP}, // S_GLAREGOYLEUP_FIRE + {SPR_BGAR, 1, 0, {A_Repeat}, 3, S_GLAREGOYLEUP_FIRE, S_GLAREGOYLEUP_COOLDOWN}, // S_GLAREGOYLEUP_LOOP + {SPR_BGAR, FF_ANIMATE|1, 15, {NULL}, 1, 9, S_GLAREGOYLEUP}, // S_GLAREGOYLEUP_COOLDOWN - {SPR_BGAR, 0, 67, {NULL}, 0, 0, S_GLAREGOYLEDOWN_CHECK}, // S_GLAREGOYLEDOWN - {SPR_BGAR, 0, 3, {NULL}, 0, 0, S_GLAREGOYLEDOWN_FIRE1}, // S_GLAREGOYLEDOWN_CHECK - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+315, S_GLAREGOYLEDOWN_FIRE2}, // S_GLAREGOYLEDOWN_FIRE1 - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+315, S_GLAREGOYLEDOWN_FIRE3}, // S_GLAREGOYLEDOWN_FIRE2 - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+315, S_GLAREGOYLEDOWN}, // S_GLAREGOYLEDOWN_FIRE3 + {SPR_BGAR, 0, 22, {NULL}, 0, 0, S_GLAREGOYLEDOWN_CHARGE}, // S_GLAREGOYLEDOWN + {SPR_BGAR, 2, 6, {NULL}, 0, 0, S_GLAREGOYLEDOWN_BLINK}, // S_GLAREGOYLEDOWN_CHARGE + {SPR_BGAR, FF_ANIMATE|1, 18, {NULL}, 1, 3, S_GLAREGOYLEDOWN_HOLD}, // S_GLAREGOYLEDOWN_BLINK + {SPR_BGAR, 1, 9, {NULL}, 0, 0, S_GLAREGOYLEDOWN_FIRE}, // S_GLAREGOYLEDOWN_HOLD + {SPR_BGAR, 1, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+315, S_GLAREGOYLEDOWN_LOOP}, // S_GLAREGOYLEDOWN_FIRE + {SPR_BGAR, 1, 0, {A_Repeat}, 3, S_GLAREGOYLEDOWN_FIRE, S_GLAREGOYLEDOWN_COOLDOWN}, // S_GLAREGOYLEDOWN_LOOP + {SPR_BGAR, FF_ANIMATE|1, 15, {NULL}, 1, 9, S_GLAREGOYLEDOWN}, // S_GLAREGOYLEDOWN_COOLDOWN - {SPR_BGAR, 0, 135, {NULL}, 0, 0, S_GLAREGOYLELONG_CHECK}, // S_GLAREGOYLELONG - {SPR_BGAR, 0, 3, {NULL}, 0, 0, S_GLAREGOYLELONG_FIRE1}, // S_GLAREGOYLELONG_CHECK - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLELONG_FIRE2}, // S_GLAREGOYLELONG_FIRE1 - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLELONG_FIRE3}, // S_GLAREGOYLELONG_FIRE2 - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLELONG_FIRE4}, // S_GLAREGOYLELONG_FIRE3 - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLELONG_FIRE5}, // S_GLAREGOYLELONG_FIRE4 - {SPR_BGAR, 0, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLELONG}, // S_GLAREGOYLELONG_FIRE5 + {SPR_BGAR, 0, 90, {NULL}, 0, 0, S_GLAREGOYLELONG_CHARGE}, // S_GLAREGOYLELONG + {SPR_BGAR, 2, 6, {NULL}, 0, 0, S_GLAREGOYLELONG_BLINK}, // S_GLAREGOYLELONG_CHARGE + {SPR_BGAR, FF_ANIMATE|1, 18, {NULL}, 1, 3, S_GLAREGOYLELONG_HOLD}, // S_GLAREGOYLELONG_BLINK + {SPR_BGAR, 1, 9, {NULL}, 0, 0, S_GLAREGOYLELONG_FIRE}, // S_GLAREGOYLELONG_HOLD + {SPR_BGAR, 1, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLELONG_LOOP}, // S_GLAREGOYLELONG_FIRE + {SPR_BGAR, 1, 0, {A_Repeat}, 5, S_GLAREGOYLELONG_FIRE, S_GLAREGOYLELONG_COOLDOWN}, // S_GLAREGOYLELONG_LOOP + {SPR_BGAR, FF_ANIMATE|1, 15, {NULL}, 1, 9, S_GLAREGOYLELONG}, // S_GLAREGOYLELONG_COOLDOWN // Target/Red Crystal {SPR_RCRY, 0, -1, {NULL}, 0, 0, S_TARGET_IDLE}, // S_TARGET_IDLE diff --git a/src/info.h b/src/info.h index 092b92241..612ce0b36 100644 --- a/src/info.h +++ b/src/info.h @@ -2705,27 +2705,33 @@ typedef enum state // Glaregoyles S_GLAREGOYLE, - S_GLAREGOYLE_WARNING, + S_GLAREGOYLE_CHARGE, + S_GLAREGOYLE_BLINK, + S_GLAREGOYLE_HOLD, S_GLAREGOYLE_FIRE, S_GLAREGOYLE_LOOP, S_GLAREGOYLE_COOLDOWN, S_GLAREGOYLEUP, - S_GLAREGOYLEUP_CHECK, - S_GLAREGOYLEUP_FIRE1, - S_GLAREGOYLEUP_FIRE2, - S_GLAREGOYLEUP_FIRE3, + S_GLAREGOYLEUP_CHARGE, + S_GLAREGOYLEUP_BLINK, + S_GLAREGOYLEUP_HOLD, + S_GLAREGOYLEUP_FIRE, + S_GLAREGOYLEUP_LOOP, + S_GLAREGOYLEUP_COOLDOWN, S_GLAREGOYLEDOWN, - S_GLAREGOYLEDOWN_CHECK, - S_GLAREGOYLEDOWN_FIRE1, - S_GLAREGOYLEDOWN_FIRE2, - S_GLAREGOYLEDOWN_FIRE3, + S_GLAREGOYLEDOWN_CHARGE, + S_GLAREGOYLEDOWN_BLINK, + S_GLAREGOYLEDOWN_HOLD, + S_GLAREGOYLEDOWN_FIRE, + S_GLAREGOYLEDOWN_LOOP, + S_GLAREGOYLEDOWN_COOLDOWN, S_GLAREGOYLELONG, - S_GLAREGOYLELONG_CHECK, - S_GLAREGOYLELONG_FIRE1, - S_GLAREGOYLELONG_FIRE2, - S_GLAREGOYLELONG_FIRE3, - S_GLAREGOYLELONG_FIRE4, - S_GLAREGOYLELONG_FIRE5, + S_GLAREGOYLELONG_CHARGE, + S_GLAREGOYLELONG_BLINK, + S_GLAREGOYLELONG_HOLD, + S_GLAREGOYLELONG_FIRE, + S_GLAREGOYLELONG_LOOP, + S_GLAREGOYLELONG_COOLDOWN, // ATZ's Red Crystal/Target S_TARGET_IDLE, From f3e9dd0cadae20301e60bb79208452970c41f2a5 Mon Sep 17 00:00:00 2001 From: lachwright Date: Thu, 31 Oct 2019 19:38:28 +0800 Subject: [PATCH 4/5] Add static ATZ Gargoyles --- src/dehacked.c | 5 ++++- src/info.c | 30 ++++++++++++++++++++++++++++++ src/info.h | 4 ++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/dehacked.c b/src/dehacked.c index 4b4922aaf..e1862ef85 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -6030,7 +6030,6 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit "S_WALLVINE_LONG", "S_WALLVINE_SHORT", - // Glaregoyles // Glaregoyles "S_GLAREGOYLE", "S_GLAREGOYLE_CHARGE", @@ -6071,6 +6070,9 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit // ATZ's green flame "S_GREENFLAME", + // ATZ Blue Gargoyle + "S_BLUEGARGOYLE", + // Stalagmites "S_STG0", "S_STG1", @@ -7826,6 +7828,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s "MT_GLAREGOYLELONG", "MT_TARGET", "MT_GREENFLAME", + "MT_BLUEGARGOYLE", // Stalagmites "MT_STALAGMITE0", diff --git a/src/info.c b/src/info.c index 2b1dc6135..fa4b556a6 100644 --- a/src/info.c +++ b/src/info.c @@ -2622,6 +2622,9 @@ state_t states[NUMSTATES] = // Green flame {SPR_CFLM, FF_FULLBRIGHT|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 3, S_GREENFLAME}, // S_GREENFLAME + // ATZ Blue Gargoyle + {SPR_BGAR, 3, -1, {NULL}, 0, 0, S_NULL}, // S_BLUEGARGOYLE + // Stalagmites {SPR_STLG, 0, -1, {NULL}, 0, 0, S_NULL}, // S_STG0 {SPR_STLG, 1, -1, {NULL}, 0, 0, S_NULL}, // S_STG1 @@ -13749,6 +13752,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL // raisestate }, + { // MT_BLUEGARGOYLE + 1506, // doomednum + S_BLUEGARGOYLE, // 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 + 21*FRACUNIT, // speed + 16*FRACUNIT, // radius + 40*FRACUNIT, // height + 0, // display offset + 100, // mass + 1, // damage + sfx_statu2, // activesound + MF_SLIDEME|MF_SOLID|MF_PUSHABLE, // flags + S_NULL // raisestate + }, + { // MT_STALAGMITE0 1900, // doomednum S_STG0, // spawnstate diff --git a/src/info.h b/src/info.h index 612ce0b36..8d407deb8 100644 --- a/src/info.h +++ b/src/info.h @@ -2743,6 +2743,9 @@ typedef enum state // ATZ's green flame S_GREENFLAME, + // ATZ Blue Gargoyle + S_BLUEGARGOYLE, + // Stalagmites S_STG0, S_STG1, @@ -4521,6 +4524,7 @@ typedef enum mobj_type MT_GLAREGOYLELONG, MT_TARGET, // AKA Red Crystal MT_GREENFLAME, + MT_BLUEGARGOYLE, // Stalagmites MT_STALAGMITE0, From cc499515da97dc0027c6769e7fb25fe731f95c1e Mon Sep 17 00:00:00 2001 From: toaster Date: Tue, 12 Nov 2019 15:57:23 -0500 Subject: [PATCH 5/5] Update ZB config for Glaregoyle and Buggle object names, and Glaregoyle sprite name. --- extras/conf/SRB2-22.cfg | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/extras/conf/SRB2-22.cfg b/extras/conf/SRB2-22.cfg index de5b2ea6c..92b072b4d 100644 --- a/extras/conf/SRB2-22.cfg +++ b/extras/conf/SRB2-22.cfg @@ -3542,7 +3542,7 @@ thingtypes } 124 { - title = "AquaBuzz"; + title = "Buggle"; sprite = "BBUZA1"; width = 20; height = 24; @@ -5673,8 +5673,8 @@ thingtypes { arrow = 1; blocking = 2; - title = "Trapgoyle"; - sprite = "GARGA1"; + title = "Glaregoyle"; + sprite = "BGARA1"; width = 16; height = 40; flags4text = "[4] Slides when pushed"; @@ -5684,8 +5684,8 @@ thingtypes { arrow = 1; blocking = 2; - title = "Trapgoyle (Up)"; - sprite = "GARGA1"; + title = "Glaregoyle (Up)"; + sprite = "BGARA1"; width = 16; height = 40; flags4text = "[4] Slides when pushed"; @@ -5695,8 +5695,8 @@ thingtypes { arrow = 1; blocking = 2; - title = "Trapgoyle (Down)"; - sprite = "GARGA1"; + title = "Glaregoyle (Down)"; + sprite = "BGARA1"; width = 16; height = 40; flags4text = "[4] Slides when pushed"; @@ -5706,8 +5706,8 @@ thingtypes { arrow = 1; blocking = 2; - title = "Trapgoyle (Long)"; - sprite = "GARGA1"; + title = "Glaregoyle (Long)"; + sprite = "BGARA1"; width = 16; height = 40; flags4text = "[4] Slides when pushed";