mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-01-17 23:21:22 +00:00
Have Minus spawn debris upon landing, as suggested
This commit is contained in:
parent
9a7979d841
commit
4e9e5a072f
2 changed files with 21 additions and 8 deletions
|
@ -1075,10 +1075,10 @@ state_t states[NUMSTATES] =
|
|||
{SPR_MNUD, 3|FF_ANIMATE, 5, {NULL}, 1, 2, S_MINUS_BURST5}, // S_MINUS_BURST4
|
||||
{SPR_MNUD, 4|FF_ANIMATE, 5, {NULL}, 1, 2, S_MINUSDIRT2}, // S_MINUS_BURST5
|
||||
{SPR_MNUS, 3, 1, {A_MinusPopup}, 0, 0, S_MINUS_AERIAL1}, // S_MINUS_POPUP
|
||||
{SPR_MNUS, 0, 1, {A_MinusCheck}, 0, 0, S_MINUS_AERIAL2}, // S_MINUS_AERIAL1
|
||||
{SPR_MNUS, 1, 1, {A_MinusCheck}, 0, 0, S_MINUS_AERIAL3}, // S_MINUS_AERIAL2
|
||||
{SPR_MNUS, 2, 1, {A_MinusCheck}, 0, 0, S_MINUS_AERIAL4}, // S_MINUS_AERIAL3
|
||||
{SPR_MNUS, 3, 1, {A_MinusCheck}, 0, 0, S_MINUS_AERIAL1}, // S_MINUS_AERIAL4
|
||||
{SPR_MNUS, 0, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL2}, // S_MINUS_AERIAL1
|
||||
{SPR_MNUS, 1, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL3}, // S_MINUS_AERIAL2
|
||||
{SPR_MNUS, 2, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL4}, // S_MINUS_AERIAL3
|
||||
{SPR_MNUS, 3, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL1}, // S_MINUS_AERIAL4
|
||||
|
||||
{SPR_MNUD, FF_ANIMATE, 6, {NULL}, 1, 5, S_MINUSDIRT2}, // S_MINUSDIRT1
|
||||
{SPR_MNUD, 5, 8, {NULL}, 3, 5, S_MINUSDIRT3}, // S_MINUSDIRT2
|
||||
|
|
|
@ -5664,10 +5664,10 @@ void A_MinusPopup(mobj_t *actor)
|
|||
S_StartSound(actor, sfx_s3k82);
|
||||
for (i = 1; i <= num; i++)
|
||||
{
|
||||
mobj_t *rock = P_SpawnMobj(actor->x, actor->y, actor->z + actor->height/4, MT_ROCKCRUMBLE1);
|
||||
mobj_t *rock = P_SpawnMobjFromMobj(actor, 0, 0, actor->height/4, MT_ROCKCRUMBLE1);
|
||||
P_Thrust(rock, ani*i, FRACUNIT);
|
||||
rock->momz = 3*FRACUNIT;
|
||||
P_SetScale(rock, FRACUNIT/3);
|
||||
P_SetObjectMomZ(rock, 3*FRACUNIT, false);
|
||||
P_SetScale(rock, rock->scale/3);
|
||||
}
|
||||
P_RadiusAttack(actor, actor, 2*actor->radius, 0);
|
||||
if (actor->tracer)
|
||||
|
@ -5681,11 +5681,12 @@ void A_MinusPopup(mobj_t *actor)
|
|||
// Description: If the minus hits the floor, dig back into the ground.
|
||||
//
|
||||
// var1 = State to switch to (if 0, use seestate).
|
||||
// var2 = unused
|
||||
// var2 = If not 0, spawn debris when hitting the floor.
|
||||
//
|
||||
void A_MinusCheck(mobj_t *actor)
|
||||
{
|
||||
INT32 locvar1 = var1;
|
||||
INT32 locvar2 = var2;
|
||||
|
||||
#ifdef HAVE_BLUA
|
||||
if (LUA_CallAction("A_MinusCheck", actor))
|
||||
|
@ -5696,6 +5697,18 @@ void A_MinusCheck(mobj_t *actor)
|
|||
{
|
||||
P_SetMobjState(actor, locvar1 ? (statenum_t)locvar1 : actor->info->seestate);
|
||||
actor->flags = actor->info->flags;
|
||||
if (locvar2)
|
||||
{
|
||||
INT32 i, num = 6;
|
||||
angle_t ani = FixedAngle(FRACUNIT*360/num);
|
||||
for (i = 1; i <= num; i++)
|
||||
{
|
||||
mobj_t *rock = P_SpawnMobjFromMobj(actor, 0, 0, actor->height/4, MT_ROCKCRUMBLE1);
|
||||
P_Thrust(rock, ani*i, FRACUNIT);
|
||||
P_SetObjectMomZ(rock, 3*FRACUNIT, false);
|
||||
P_SetScale(rock, rock->scale/3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue