mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-02-26 15:31:03 +00:00
Fancy rotating sparkles
This commit is contained in:
parent
c8124a6c94
commit
3b617337ee
4 changed files with 76 additions and 35 deletions
48
src/info.c
48
src/info.c
|
|
@ -4159,31 +4159,31 @@ state_t states[NUMSTATES] =
|
|||
|
||||
{SPR_AIDU, FF_ANIMATE|FF_PAPERSPRITE, 5*2, {NULL}, 5, 2, S_NULL}, // S_KARTAIZDRIFTSTRAT
|
||||
|
||||
{SPR_KINV, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_KARTINVULN2}, // S_KARTINVULN1
|
||||
{SPR_KINV, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_KARTINVULN3}, // S_KARTINVULN2
|
||||
{SPR_KINV, FF_FULLBRIGHT|2, 1, {NULL}, 0, 0, S_KARTINVULN4}, // S_KARTINVULN3
|
||||
{SPR_KINV, FF_FULLBRIGHT|3, 1, {NULL}, 0, 0, S_KARTINVULN5}, // S_KARTINVULN4
|
||||
{SPR_KINV, FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_KARTINVULN6}, // S_KARTINVULN5
|
||||
{SPR_KINV, FF_FULLBRIGHT|5, 1, {NULL}, 0, 0, S_KARTINVULN7}, // S_KARTINVULN6
|
||||
{SPR_KINV, FF_FULLBRIGHT|6, 1, {NULL}, 0, 0, S_KARTINVULN8}, // S_KARTINVULN7
|
||||
{SPR_KINV, FF_FULLBRIGHT|7, 1, {NULL}, 0, 0, S_KARTINVULN9}, // S_KARTINVULN8
|
||||
{SPR_KINV, FF_FULLBRIGHT|8, 1, {NULL}, 0, 0, S_KARTINVULN10}, // S_KARTINVULN9
|
||||
{SPR_KINV, FF_FULLBRIGHT|9, 1, {NULL}, 0, 0, S_KARTINVULN11}, // S_KARTINVULN10
|
||||
{SPR_KINV, FF_FULLBRIGHT|10, 1, {NULL}, 0, 0, S_KARTINVULN12}, // S_KARTINVULN11
|
||||
{SPR_KINV, FF_FULLBRIGHT|11, 1, {NULL}, 0, 0, S_NULL}, // S_KARTINVULN12
|
||||
{SPR_KINV, FF_FULLBRIGHT, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN2}, // S_KARTINVULN1
|
||||
{SPR_KINV, FF_FULLBRIGHT|1, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN3}, // S_KARTINVULN2
|
||||
{SPR_KINV, FF_FULLBRIGHT|2, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN4}, // S_KARTINVULN3
|
||||
{SPR_KINV, FF_FULLBRIGHT|3, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN5}, // S_KARTINVULN4
|
||||
{SPR_KINV, FF_FULLBRIGHT|4, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN6}, // S_KARTINVULN5
|
||||
{SPR_KINV, FF_FULLBRIGHT|5, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN7}, // S_KARTINVULN6
|
||||
{SPR_KINV, FF_FULLBRIGHT|6, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN8}, // S_KARTINVULN7
|
||||
{SPR_KINV, FF_FULLBRIGHT|7, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN9}, // S_KARTINVULN8
|
||||
{SPR_KINV, FF_FULLBRIGHT|8, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN10}, // S_KARTINVULN9
|
||||
{SPR_KINV, FF_FULLBRIGHT|9, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN11}, // S_KARTINVULN10
|
||||
{SPR_KINV, FF_FULLBRIGHT|10, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN12}, // S_KARTINVULN11
|
||||
{SPR_KINV, FF_FULLBRIGHT|11, 1, {A_InvincSparkleRotate}, 0, 0, S_NULL}, // S_KARTINVULN12
|
||||
|
||||
{SPR_KINB, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_KARTINVULNB2}, // S_KARTINVULNB1
|
||||
{SPR_KINB, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_KARTINVULNB3}, // S_KARTINVULNB2
|
||||
{SPR_KINB, FF_FULLBRIGHT|2, 1, {NULL}, 0, 0, S_KARTINVULNB4}, // S_KARTINVULNB3
|
||||
{SPR_KINB, FF_FULLBRIGHT|3, 1, {NULL}, 0, 0, S_KARTINVULNB5}, // S_KARTINVULNB4
|
||||
{SPR_KINB, FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_KARTINVULNB6}, // S_KARTINVULNB5
|
||||
{SPR_KINB, FF_FULLBRIGHT|5, 1, {NULL}, 0, 0, S_KARTINVULNB7}, // S_KARTINVULNB6
|
||||
{SPR_KINB, FF_FULLBRIGHT|6, 1, {NULL}, 0, 0, S_KARTINVULNB8}, // S_KARTINVULNB7
|
||||
{SPR_KINB, FF_FULLBRIGHT|7, 1, {NULL}, 0, 0, S_KARTINVULNB9}, // S_KARTINVULNB8
|
||||
{SPR_KINB, FF_FULLBRIGHT|8, 1, {NULL}, 0, 0, S_KARTINVULNB10}, // S_KARTINVULNB9
|
||||
{SPR_KINB, FF_FULLBRIGHT|9, 1, {NULL}, 0, 0, S_KARTINVULNB11}, // S_KARTINVULNB10
|
||||
{SPR_KINB, FF_FULLBRIGHT|10, 1, {NULL}, 0, 0, S_KARTINVULNB12}, // S_KARTINVULNB11
|
||||
{SPR_KINB, FF_FULLBRIGHT|11, 1, {NULL}, 0, 0, S_NULL}, // S_KARTINVULNB12
|
||||
{SPR_KINB, FF_FULLBRIGHT, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB2}, // S_KARTINVULNB1
|
||||
{SPR_KINB, FF_FULLBRIGHT|1, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB3}, // S_KARTINVULNB2
|
||||
{SPR_KINB, FF_FULLBRIGHT|2, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB4}, // S_KARTINVULNB3
|
||||
{SPR_KINB, FF_FULLBRIGHT|3, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB5}, // S_KARTINVULNB4
|
||||
{SPR_KINB, FF_FULLBRIGHT|4, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB6}, // S_KARTINVULNB5
|
||||
{SPR_KINB, FF_FULLBRIGHT|5, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB7}, // S_KARTINVULNB6
|
||||
{SPR_KINB, FF_FULLBRIGHT|6, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB8}, // S_KARTINVULNB7
|
||||
{SPR_KINB, FF_FULLBRIGHT|7, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB9}, // S_KARTINVULNB8
|
||||
{SPR_KINB, FF_FULLBRIGHT|8, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB10}, // S_KARTINVULNB9
|
||||
{SPR_KINB, FF_FULLBRIGHT|9, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB11}, // S_KARTINVULNB10
|
||||
{SPR_KINB, FF_FULLBRIGHT|10, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB12}, // S_KARTINVULNB11
|
||||
{SPR_KINB, FF_FULLBRIGHT|11, 1, {A_InvincSparkleRotate}, 0, 0, S_NULL}, // S_KARTINVULNB12
|
||||
|
||||
{SPR_KINF, FF_FULLBRIGHT|FF_TRANS90, 1, {NULL}, 0, 0, S_INVULNFLASH2}, // S_INVULNFLASH1
|
||||
{SPR_NULL, FF_FULLBRIGHT|FF_TRANS90, 1, {NULL}, 0, 0, S_INVULNFLASH3}, // S_INVULNFLASH2
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@ void A_MayonakaArrow(); //SRB2kart: midnight channel arrow sign
|
|||
void A_ReaperThinker(); //SRB2kart: mementos reaper
|
||||
void A_MementosTPParticles(); //SRB2kart: mementos teleporter particles. Man that's a lot of actions for my shite.
|
||||
void A_FlameShieldPaper();
|
||||
void A_InvincSparkleRotate(); // SRB2kart: invinc sparkle rotation
|
||||
void A_OrbitNights();
|
||||
void A_GhostMe();
|
||||
void A_SetObjectState();
|
||||
|
|
|
|||
28
src/k_kart.c
28
src/k_kart.c
|
|
@ -2494,7 +2494,7 @@ static void K_GetKartBoostPower(player_t *player)
|
|||
if (player->kartstuff[k_draftpower] > 0) // Drafting
|
||||
{
|
||||
// 30% - 44%, each point of speed adds 1.75%
|
||||
fixed_t draftspeed = ((3*FRACUNIT)/10) + ((player->kartspeed-1) * ((7*FRACUNIT)/400));
|
||||
fixed_t draftspeed = ((3*FRACUNIT)/10) + ((player->kartspeed-1) * ((7*FRACUNIT)/400));
|
||||
speedboost += FixedMul(draftspeed, player->kartstuff[k_draftpower]); // (Drafting suffers no boost stack penalty.)
|
||||
numboosts++;
|
||||
}
|
||||
|
|
@ -3764,13 +3764,14 @@ void K_SpawnBoostTrail(player_t *player)
|
|||
|
||||
void K_SpawnSparkleTrail(mobj_t *mo)
|
||||
{
|
||||
const INT32 rad = (mo->radius*3)>>FRACBITS;
|
||||
const INT32 rad = (mo->radius*3)/FRACUNIT;
|
||||
mobj_t *sparkle;
|
||||
angle_t newangle;
|
||||
//angle_t newangle;
|
||||
INT32 i;
|
||||
UINT8 frame;
|
||||
//UINT8 frame;
|
||||
UINT8 invanimnum;
|
||||
UINT8 index = 1;
|
||||
fixed_t newx, newy, newz;
|
||||
|
||||
I_Assert(mo != NULL);
|
||||
I_Assert(!P_MobjWasRemoved(mo));
|
||||
|
|
@ -3780,18 +3781,23 @@ void K_SpawnSparkleTrail(mobj_t *mo)
|
|||
if (leveltime & 2)
|
||||
index = 2;
|
||||
|
||||
CONS_Printf("%d\n", index);
|
||||
CONS_Printf("%d\n", invanimnum);
|
||||
//CONS_Printf("%d\n", index);
|
||||
//CONS_Printf("%d\n", invanimnum);
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
newangle = (mo->angle + ANGLE_157h) + FixedAngle(((360 / 8) * i) << FRACBITS) + ANGLE_90;
|
||||
fixed_t newx = mo->x + (mo->momx*4)/5 + (P_RandomRange(-rad, rad)<<FRACBITS);
|
||||
fixed_t newy = mo->y + mo->momy + (P_RandomRange(-rad, rad*2)<<FRACBITS);
|
||||
fixed_t newz = mo->z + (mo->momz*4)/5 + (P_RandomRange(0, mo->height>>FRACBITS)<<FRACBITS);
|
||||
//newangle = (mo->angle + ANGLE_157h) + FixedAngle(((360 / 8) * i) << FRACBITS) + ANGLE_90;
|
||||
newx = mo->x + (P_RandomRange(-rad, rad)*FRACUNIT);
|
||||
newy = mo->y + (P_RandomRange(-rad, rad)*FRACUNIT);
|
||||
newz = mo->z + (P_RandomRange(0, mo->height>>FRACBITS)*FRACUNIT);
|
||||
|
||||
sparkle = P_SpawnMobj(newx, newy, newz, MT_SPARKLETRAIL);
|
||||
sparkle->angle = newangle;
|
||||
sparkle->angle = R_PointToAngle2(mo->x, mo->y, sparkle->x, sparkle->y);
|
||||
sparkle->movefactor = R_PointToDist2(mo->x, mo->y, sparkle->x, sparkle->y); // Save the distance we spawned away from the player.
|
||||
CONS_Printf("movefactor: %d\n", sparkle->movefactor/FRACUNIT);
|
||||
sparkle->extravalue1 = (sparkle->z - mo->z); // Keep track of our Z position relative to the player's, I suppose.
|
||||
sparkle->extravalue2 = P_RandomRange(0, 1) ? 1 : -1; // Rotation direction?
|
||||
sparkle->cvmem = P_RandomRange(-25, 25)*mo->scale; // Vertical "angle"
|
||||
K_FlipFromObject(sparkle, mo);
|
||||
|
||||
//if (i == 0)
|
||||
|
|
|
|||
|
|
@ -211,6 +211,7 @@ void A_MayonakaArrow(mobj_t *actor); //SRB2kart
|
|||
void A_ReaperThinker(mobj_t *actor); //SRB2kart
|
||||
void A_MementosTPParticles(mobj_t *actor); //SRB2kart
|
||||
void A_FlameShieldPaper(mobj_t *actor); // SRB2kart
|
||||
void A_InvincSparkleRotate(mobj_t *actor); // SRB2kart
|
||||
void A_OrbitNights(mobj_t *actor);
|
||||
void A_GhostMe(mobj_t *actor);
|
||||
void A_SetObjectState(mobj_t *actor);
|
||||
|
|
@ -9810,6 +9811,39 @@ void A_FlameShieldPaper(mobj_t *actor)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// Rotation thinker for invinc sparkles.
|
||||
|
||||
// actor->movefactor: fixed_t distance away from the target (not updated with the target's scale since our actor will barely last 12 frames lmao)
|
||||
// actor->angle: angle_t to rotate from. Updates itself each call of this action.
|
||||
// actor->extravalue1: z diff between the actor and its target when spawned. Used to know the Z position to teleport to each frame.
|
||||
// actor->extravalue2: -1 or 1 to tell if we should rotate clockwise or counterclockwise respectively.
|
||||
|
||||
void A_InvincSparkleRotate(mobj_t *actor)
|
||||
{
|
||||
|
||||
fixed_t sx, sy, sz; // Teleport dests.
|
||||
|
||||
if (LUA_CallAction("A_InvincSparkleRotate", actor))
|
||||
return;
|
||||
|
||||
if (!actor->target || P_MobjWasRemoved(actor->target))
|
||||
return;
|
||||
|
||||
CONS_Printf("%d\n", actor->movefactor/FRACUNIT);
|
||||
sx = actor->target->x + FixedMul((actor->movefactor), FINECOSINE((actor->angle)>>ANGLETOFINESHIFT));
|
||||
sy = actor->target->y + FixedMul((actor->movefactor), FINESINE((actor->angle)>>ANGLETOFINESHIFT));
|
||||
sz = actor->target->z + (actor->extravalue1) + FixedMul((actor->cvmem), FINECOSINE((leveltime*ANG1*10 + actor->angle)>>ANGLETOFINESHIFT));
|
||||
P_TeleportMove(actor, sx, sy, sz);
|
||||
|
||||
actor->momx = actor->target->momx;
|
||||
actor->momy = actor->target->momy;
|
||||
actor->momz = actor->target->momz; // Give momentum for eventual interp builds idk.
|
||||
|
||||
actor->angle += ANG1*10*(actor->extravalue2); // Arbitrary value, change this if you want, I suppose.
|
||||
}
|
||||
|
||||
|
||||
//}
|
||||
|
||||
// Function: A_OrbitNights
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue