From 6ef7221e38fa0f68a53936b0e841a8145ebd6f25 Mon Sep 17 00:00:00 2001 From: spherallic Date: Wed, 9 Mar 2022 00:49:24 +0100 Subject: [PATCH 1/2] A few drop shadow-related additions: - Added A_SetShadowScale - Added A_ShadowScream which combines the above with A_Scream, used for badnik explosions - Gave flickies drop shadows --- src/deh_tables.c | 2 ++ src/info.c | 26 +++++++++++++------------- src/info.h | 4 ++++ src/p_enemy.c | 41 +++++++++++++++++++++++++++++++++++++++++ src/p_mobj.c | 23 ++++++++++++++++++++++- 5 files changed, 82 insertions(+), 14 deletions(-) diff --git a/src/deh_tables.c b/src/deh_tables.c index 4412206f8..8dbe314cc 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -91,6 +91,8 @@ actionpointer_t actionpointers[] = {{A_FaceTracer}, "A_FACETRACER"}, {{A_Scream}, "A_SCREAM"}, {{A_BossDeath}, "A_BOSSDEATH"}, + {{A_SetShadowScale}, "A_SETSHADOWSCALE"}, + {{A_ShadowScream}, "A_SHADOWSCREAM"}, {{A_CustomPower}, "A_CUSTOMPOWER"}, {{A_GiveWeapon}, "A_GIVEWEAPON"}, {{A_RingBox}, "A_RINGBOX"}, diff --git a/src/info.c b/src/info.c index 3f0f5361f..717ada313 100644 --- a/src/info.c +++ b/src/info.c @@ -3936,23 +3936,23 @@ state_t states[NUMSTATES] = {SPR_SPRK, FF_TRANS20|FF_ANIMATE|9, 18, {NULL}, 8, 2, S_NULL}, // S_SPRK3 // Robot Explosion - {SPR_BOM1, 0, 0, {A_FlickySpawn}, 0, 0, S_XPLD1}, // S_XPLD_FLICKY - {SPR_BOM1, 0, 2, {A_Scream}, 0, 0, S_XPLD2}, // S_XPLD1 - {SPR_BOM1, 1, 2, {NULL}, 0, 0, S_XPLD3}, // S_XPLD2 - {SPR_BOM1, 2, 3, {NULL}, 0, 0, S_XPLD4}, // S_XPLD3 - {SPR_BOM1, 3, 3, {NULL}, 0, 0, S_XPLD5}, // S_XPLD4 - {SPR_BOM1, 4, 4, {NULL}, 0, 0, S_XPLD6}, // S_XPLD5 - {SPR_BOM1, 5, 4, {NULL}, 0, 0, S_NULL}, // S_XPLD6 + {SPR_BOM1, 0, 0, {A_FlickySpawn}, 0, 0, S_XPLD1}, // S_XPLD_FLICKY + {SPR_BOM1, 0, 2, {A_ShadowScream}, 0, 0, S_XPLD2}, // S_XPLD1 + {SPR_BOM1, 1, 2, {NULL}, 0, 0, S_XPLD3}, // S_XPLD2 + {SPR_BOM1, 2, 3, {NULL}, 0, 0, S_XPLD4}, // S_XPLD3 + {SPR_BOM1, 3, 3, {NULL}, 0, 0, S_XPLD5}, // S_XPLD4 + {SPR_BOM1, 4, 4, {NULL}, 0, 0, S_XPLD6}, // S_XPLD5 + {SPR_BOM1, 5, 4, {NULL}, 0, 0, S_NULL}, // S_XPLD6 {SPR_BOM1, FF_ANIMATE, 21, {NULL}, 5, 4, S_INVISIBLE}, // S_XPLD_EGGTRAP // Underwater Explosion - {SPR_BOM4, 0, 3, {A_Scream}, 0, 0, S_WPLD2}, // S_WPLD1 - {SPR_BOM4, 1, 3, {NULL}, 0, 0, S_WPLD3}, // S_WPLD2 - {SPR_BOM4, 2, 3, {NULL}, 0, 0, S_WPLD4}, // S_WPLD3 - {SPR_BOM4, 3, 3, {NULL}, 0, 0, S_WPLD5}, // S_WPLD4 - {SPR_BOM4, 4, 3, {NULL}, 0, 0, S_WPLD6}, // S_WPLD5 - {SPR_BOM4, 5, 3, {NULL}, 0, 0, S_NULL}, // S_WPLD6 + {SPR_BOM4, 0, 3, {A_ShadowScream}, 0, 0, S_WPLD2}, // S_WPLD1 + {SPR_BOM4, 1, 3, {NULL}, 0, 0, S_WPLD3}, // S_WPLD2 + {SPR_BOM4, 2, 3, {NULL}, 0, 0, S_WPLD4}, // S_WPLD3 + {SPR_BOM4, 3, 3, {NULL}, 0, 0, S_WPLD5}, // S_WPLD4 + {SPR_BOM4, 4, 3, {NULL}, 0, 0, S_WPLD6}, // S_WPLD5 + {SPR_BOM4, 5, 3, {NULL}, 0, 0, S_NULL}, // S_WPLD6 {SPR_DUST, FF_TRANS40, 4, {NULL}, 0, 0, S_DUST2}, // S_DUST1 {SPR_DUST, 1|FF_TRANS50, 5, {NULL}, 0, 0, S_DUST3}, // S_DUST2 diff --git a/src/info.h b/src/info.h index 9aa26a97a..1b7a201ce 100644 --- a/src/info.h +++ b/src/info.h @@ -44,6 +44,8 @@ enum actionnum A_FACETRACER, A_SCREAM, A_BOSSDEATH, + A_SETSHADOWSCALE, + A_SHADOWSCREAM, A_CUSTOMPOWER, A_GIVEWEAPON, A_RINGBOX, @@ -312,6 +314,8 @@ void A_FaceTarget(); void A_FaceTracer(); void A_Scream(); void A_BossDeath(); +void A_SetShadowScale(); +void A_ShadowScream(); // MARIA!!!!!! void A_CustomPower(); // Use this for a custom power void A_GiveWeapon(); // Gives the player weapon(s) void A_RingBox(); // Obtained Ring Box Tails diff --git a/src/p_enemy.c b/src/p_enemy.c index 26682ee32..a4ba42c48 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -107,6 +107,8 @@ void A_GoldMonitorRestore(mobj_t *actor); void A_GoldMonitorSparkle(mobj_t *actor); void A_Explode(mobj_t *actor); void A_BossDeath(mobj_t *actor); +void A_SetShadowScale(mobj_t *actor); +void A_ShadowScream(mobj_t *actor); void A_CustomPower(mobj_t *actor); void A_GiveWeapon(mobj_t *actor); void A_RingBox(mobj_t *actor); @@ -4169,6 +4171,45 @@ bossjustdie: } } +// Function: A_SetShadowScale +// +// Description: Sets the target's shadowscale. +// +// var1 = new fixed_t shadowscale (default = FRACUNIT) +// var2 = unused +// +void A_SetShadowScale(mobj_t *actor) +{ + INT32 locvar1 = var1; + INT32 locvar2 = var2; + + if (LUA_CallAction(A_SETSHADOWSCALE, actor)) + return; + + actor->shadowscale = locvar1; +} + + +// Function: A_ShadowScream +// +// Description: Sets the target's shadowscale and starts the death sound of the object. +// +// var1 = new fixed_t shadowscale (default = FRACUNIT) +// var2 = unused +// +void A_ShadowScream(mobj_t *actor) +{ + INT32 locvar1 = var1; + INT32 locvar2 = var2; + + if (LUA_CallAction(A_SHADOWSCREAM, actor)) + return; + + A_SetShadowScale(actor); + A_Scream(actor); +} + + // Function: A_CustomPower // // Description: Provides a custom powerup. Target (must be a player) is awarded the powerup. Reactiontime of the object is used as an index to the powers array. diff --git a/src/p_mobj.c b/src/p_mobj.c index 17be0300a..301b7564d 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -10456,6 +10456,27 @@ static fixed_t P_DefaultMobjShadowScale (mobj_t *thing) return 2*FRACUNIT/3; + case MT_FLICKY_01: + case MT_FLICKY_02: + case MT_FLICKY_03: + case MT_FLICKY_04: + case MT_FLICKY_05: + case MT_FLICKY_06: + case MT_FLICKY_07: + case MT_FLICKY_08: + case MT_FLICKY_09: + case MT_FLICKY_10: + case MT_FLICKY_11: + case MT_FLICKY_12: + case MT_FLICKY_13: + case MT_FLICKY_14: + case MT_FLICKY_15: + case MT_FLICKY_16: + case MT_SECRETFLICKY_01: + case MT_SECRETFLICKY_02: + + return FRACUNIT; + default: if (thing->flags & (MF_ENEMY|MF_BOSS)) @@ -10477,7 +10498,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type) if (type == MT_NULL) { -#if 0 +#if 0 #ifdef PARANOIA I_Error("Tried to spawn MT_NULL\n"); #endif From c782e817007dddc868f2104aa84b751f9ef89294 Mon Sep 17 00:00:00 2001 From: spherallic Date: Sat, 12 Mar 2022 17:44:37 +0100 Subject: [PATCH 2/2] Give MT_METALSONIC_RACE a drop shadow & removed unused vars. --- src/p_enemy.c | 4 ---- src/p_mobj.c | 1 + 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/p_enemy.c b/src/p_enemy.c index a4ba42c48..87aa5ff2f 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -4181,7 +4181,6 @@ bossjustdie: void A_SetShadowScale(mobj_t *actor) { INT32 locvar1 = var1; - INT32 locvar2 = var2; if (LUA_CallAction(A_SETSHADOWSCALE, actor)) return; @@ -4199,9 +4198,6 @@ void A_SetShadowScale(mobj_t *actor) // void A_ShadowScream(mobj_t *actor) { - INT32 locvar1 = var1; - INT32 locvar2 = var2; - if (LUA_CallAction(A_SHADOWSCREAM, actor)) return; diff --git a/src/p_mobj.c b/src/p_mobj.c index 301b7564d..ad329a582 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -10412,6 +10412,7 @@ static fixed_t P_DefaultMobjShadowScale (mobj_t *thing) switch (thing->type) { case MT_PLAYER: + case MT_METALSONIC_RACE: case MT_ROLLOUTROCK: case MT_EGGMOBILE4_MACE: