mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Ironman: splat top/bottom WIP
This commit is contained in:
parent
b9517d3a89
commit
02bf3bc695
5 changed files with 40 additions and 8 deletions
|
|
@ -3283,6 +3283,7 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
|||
|
||||
"S_MAGICIANBOX",
|
||||
"S_MAGICIANBOXTOP",
|
||||
"S_MAGICIANBOXBOTTOM",
|
||||
|
||||
// Signpost sparkles
|
||||
"S_SIGNSPARK1",
|
||||
|
|
|
|||
|
|
@ -543,6 +543,8 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"INVI", // Invincibility speedlines
|
||||
"ICAP", // Item capsules
|
||||
"MGBX", // Heavy Magician transform box
|
||||
"MGBT", // Heavy Magician transform box top
|
||||
"MGBB", // Heavy Magician transform box bottom
|
||||
|
||||
"WIPD", // Wipeout dust trail
|
||||
"DRIF", // Drift Sparks
|
||||
|
|
@ -3890,7 +3892,8 @@ state_t states[NUMSTATES] =
|
|||
//{SPR_ICAP, FF_FLOORSPRITE|5, -1, {NULL}, 0, 0, S_NULL}, // S_ITEMCAPSULE_INSIDE
|
||||
|
||||
{SPR_MGBX, FF_PAPERSPRITE|0, -1, {NULL}, 0, 0, S_NULL}, // S_MAGICIANBOX
|
||||
{SPR_MGBX, FF_PAPERSPRITE|0, -1, {NULL}, 0, 0, S_NULL}, // S_MAGICIANBOX_TOP
|
||||
{SPR_MGBT, FF_FLOORSPRITE|0, -1, {NULL}, 0, 0, S_NULL}, // S_MAGICIANBOX_TOP
|
||||
{SPR_MGBB, FF_FLOORSPRITE|0, -1, {NULL}, 0, 0, S_NULL}, // S_MAGICIANBOX_BOTTOM
|
||||
|
||||
{SPR_SGNS, FF_ADD|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_SIGNSPARK2}, // S_SIGNSPARK1
|
||||
{SPR_SGNS, FF_ADD|FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_SIGNSPARK3}, // S_SIGNSPARK2
|
||||
|
|
|
|||
|
|
@ -1089,6 +1089,8 @@ typedef enum sprite
|
|||
SPR_INVI, // Invincibility speedlines
|
||||
SPR_ICAP, // Item capsules
|
||||
SPR_MGBX, // Heavy Magician transform box
|
||||
SPR_MGBT, // Heavy Magician transform box top
|
||||
SPR_MGBB, // Heavy Magician transform box bottom
|
||||
|
||||
SPR_WIPD, // Wipeout dust trail
|
||||
SPR_DRIF, // Drift Sparks
|
||||
|
|
@ -4295,6 +4297,7 @@ typedef enum state
|
|||
|
||||
S_MAGICIANBOX,
|
||||
S_MAGICIANBOX_TOP,
|
||||
S_MAGICIANBOX_BOTTOM,
|
||||
|
||||
// Signpost sparkles
|
||||
S_SIGNSPARK1,
|
||||
|
|
|
|||
30
src/p_mobj.c
30
src/p_mobj.c
|
|
@ -7612,6 +7612,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
|||
case MT_MAGICIANBOX:
|
||||
{
|
||||
fixed_t destx, desty, fakeangle;
|
||||
fixed_t zoff = 0;
|
||||
INT32 j;
|
||||
|
||||
// EV1: rotation rate
|
||||
|
|
@ -7635,15 +7636,20 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
|||
}
|
||||
else if (mobj->extravalue2 == TICRATE/3 && mobj->target)
|
||||
{
|
||||
|
||||
mobj->target->renderflags &= ~RF_DONTDRAW;
|
||||
|
||||
mobj->momx = mobj->target->momx;
|
||||
mobj->momy = mobj->target->momy;
|
||||
mobj->momz = mobj->target->momz;
|
||||
|
||||
P_Thrust(mobj, mobj->angle + ANGLE_90, 32*mapobjectscale);
|
||||
if (mobj->state == &states[S_MAGICIANBOX]) // sides
|
||||
P_Thrust(mobj, mobj->angle + ANGLE_90, 32*mapobjectscale);
|
||||
|
||||
mobj->flags &= ~MF_NOGRAVITY;
|
||||
mobj->momz += 10*mapobjectscale;
|
||||
if (mobj->state == &states[S_MAGICIANBOX_BOTTOM])
|
||||
mobj->momz *= -1;
|
||||
|
||||
if (!mobj->cusval) // Some stuff should only occur once per box
|
||||
return true;
|
||||
|
|
@ -7702,19 +7708,31 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
|||
destx = mobj->target->x;
|
||||
desty = mobj->target->y;
|
||||
|
||||
fakeangle = (FixedInt(AngleFixed(mobj->angle)) + 90)%360; // What
|
||||
if (mobj->state == &states[S_MAGICIANBOX]) // sides
|
||||
{
|
||||
CONS_Printf("side\n");
|
||||
fakeangle = (FixedInt(AngleFixed(mobj->angle)) + 90)%360; // What
|
||||
|
||||
destx += FixedMul(mobj->radius*2, FINECOSINE(FixedAngle(fakeangle*FRACUNIT) >> ANGLETOFINESHIFT));
|
||||
desty += FixedMul(mobj->radius*2, FINESINE(FixedAngle(fakeangle*FRACUNIT) >> ANGLETOFINESHIFT));
|
||||
destx += FixedMul(mobj->radius*2, FINECOSINE(FixedAngle(fakeangle*FRACUNIT) >> ANGLETOFINESHIFT));
|
||||
desty += FixedMul(mobj->radius*2, FINESINE(FixedAngle(fakeangle*FRACUNIT) >> ANGLETOFINESHIFT));
|
||||
}
|
||||
else if (mobj->state == &states[S_MAGICIANBOX_TOP]) // top
|
||||
{
|
||||
CONS_Printf("top\n");
|
||||
zoff = mobj->radius*4;
|
||||
}
|
||||
else {
|
||||
CONS_Printf("bottom\n");
|
||||
}
|
||||
|
||||
if (mobj->flags2 & MF2_AMBUSH)
|
||||
{
|
||||
P_SetOrigin(mobj, destx, desty, mobj->target->z);
|
||||
P_SetOrigin(mobj, destx, desty, mobj->target->z + zoff);
|
||||
mobj->flags2 &= ~MF2_AMBUSH;
|
||||
}
|
||||
else
|
||||
{
|
||||
P_MoveOrigin(mobj, destx, desty, mobj->target->z);
|
||||
P_MoveOrigin(mobj, destx, desty, mobj->target->z + zoff);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -367,7 +367,7 @@ void SetRandomFakePlayerSkin(player_t* player, boolean fast)
|
|||
fixed_t baseangle = P_RandomRange(PR_DECORATION, 0, 359);
|
||||
INT32 j, k;
|
||||
|
||||
for (k = 0; k < 4; k++)
|
||||
for (k = 0; k < 6; k++)
|
||||
{
|
||||
mobj_t *box = P_SpawnMobjFromMobj(parent, 0, 0, 0, MT_MAGICIANBOX);
|
||||
box->target = parent;
|
||||
|
|
@ -387,6 +387,13 @@ void SetRandomFakePlayerSkin(player_t* player, boolean fast)
|
|||
box->cusval = 1; // Should play sounds when disappearing
|
||||
else
|
||||
box->cusval = 0;
|
||||
|
||||
if (k > 3)
|
||||
{
|
||||
P_SetMobjState(box, (k == 4) ? S_MAGICIANBOX_TOP : S_MAGICIANBOX_BOTTOM);
|
||||
box->renderflags |= RF_NOSPLATBILLBOARD;
|
||||
box->angle = FixedAngle(baseangle*FRACUNIT);
|
||||
}
|
||||
}
|
||||
|
||||
for (j = 0; j < 16; j++)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue