From 0d7cd34882ace8dd254986b75993fd39139c60cd Mon Sep 17 00:00:00 2001 From: Monster Iestyn Date: Fri, 3 May 2019 20:52:56 +0100 Subject: [PATCH] Hardcoded A_Boss5MakeItRain --- src/dehacked.c | 1 + src/info.h | 1 + src/p_enemy.c | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/src/dehacked.c b/src/dehacked.c index e824b0652..946e6f117 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -2233,6 +2233,7 @@ static actionpointer_t actionpointers[] = {{A_Boss5CheckOnGround}, "A_BOSS5CHECKONGROUND"}, {{A_Boss5CheckFalling}, "A_BOSS5CHECKFALLING"}, {{A_Boss5PinchShot}, "A_BOSS5PINCHSHOT"}, + {{A_Boss5MakeItRain}, "A_BOSS5MAKEITRAIN"}, {{A_LookForBetter}, "A_LOOKFORBETTER"}, {{NULL}, "NONE"}, diff --git a/src/info.h b/src/info.h index cb98e6962..948ecef97 100644 --- a/src/info.h +++ b/src/info.h @@ -247,6 +247,7 @@ void A_Boss5Calm(); void A_Boss5CheckOnGround(); void A_Boss5CheckFalling(); void A_Boss5PinchShot(); +void A_Boss5MakeItRain(); void A_LookForBetter(); // ratio of states to sprites to mobj types is roughly 6 : 1 : 1 diff --git a/src/p_enemy.c b/src/p_enemy.c index 469730483..10662ba88 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -274,6 +274,7 @@ void A_Boss5Calm(mobj_t *actor); void A_Boss5CheckOnGround(mobj_t *actor); void A_Boss5CheckFalling(mobj_t *actor); void A_Boss5PinchShot(mobj_t *actor); +void A_Boss5MakeItRain(mobj_t *actor); void A_LookForBetter(mobj_t *actor); //for p_enemy.c @@ -12141,6 +12142,42 @@ void A_Boss5PinchShot(mobj_t *actor) missile->momz = P_MobjFlip(actor)*missile->info->speed/2; } +// Function: A_Boss5MakeItRain +// +// Description: Pinch crisis. +// +// var1 = object # to shoot +// var2 = height offset (from default of +48 FU) +// +void A_Boss5MakeItRain(mobj_t *actor) +{ + INT32 locvar1 = var1; + INT32 locvar2 = var2; + INT32 offset = (48 + locvar2)<<16; // upper 16 bits, not fixed_t! + INT32 i; +#ifdef HAVE_BLUA + if (LUA_CallAction("A_Boss5MakeItRain", actor)) + return; +#endif + + actor->flags2 |= MF2_STRONGBOX; + + var1 = locvar1; + var2 = offset + 90; + A_TrapShot(actor); + + for (i = 0; i < 8; i++) + { + actor->angle += ANGLE_45; + + var1 = locvar1; + var2 = offset + (i & 1) ? 55 : 70; + A_TrapShot(actor); + } + + actor->extravalue2 = 0; +} + // Function: A_LookForBetter // // Description: A_Look, except it finds a better target in multiplayer, and doesn't lose the target in singleplayer.