mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-01-31 05:20:51 +00:00
Spark radius now follows players
This commit is contained in:
parent
09287df890
commit
73c66e3bc4
3 changed files with 26 additions and 14 deletions
26
src/info.c
26
src/info.c
|
@ -3019,19 +3019,19 @@ state_t states[NUMSTATES] =
|
||||||
|
|
||||||
// Oh no it's annoying lightning states.......
|
// Oh no it's annoying lightning states.......
|
||||||
// Lightning Sparks (it's the ones we'll use for the radius)
|
// Lightning Sparks (it's the ones we'll use for the radius)
|
||||||
{SPR_KSPK, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_KSPARK2}, // S_KSPARK1
|
{SPR_KSPK, FF_FULLBRIGHT, 2, {A_LightningFollowPlayer}, 0, 0, S_KSPARK2}, // S_KSPARK1
|
||||||
{SPR_NULL, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_KSPARK3}, // S_KSPARK2
|
{SPR_NULL, FF_FULLBRIGHT, 1, {A_LightningFollowPlayer}, 0, 0, S_KSPARK3}, // S_KSPARK2
|
||||||
{SPR_KSPK, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_KSPARK4}, // S_KSPARK3
|
{SPR_KSPK, FF_FULLBRIGHT|1, 2, {A_LightningFollowPlayer}, 0, 0, S_KSPARK4}, // S_KSPARK3
|
||||||
{SPR_NULL, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_KSPARK5}, // S_KSPARK4
|
{SPR_NULL, FF_FULLBRIGHT, 1, {A_LightningFollowPlayer}, 0, 0, S_KSPARK5}, // S_KSPARK4
|
||||||
{SPR_KSPK, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_KSPARK6}, // S_KSPARK5
|
{SPR_KSPK, FF_FULLBRIGHT|2, 2, {A_LightningFollowPlayer}, 0, 0, S_KSPARK6}, // S_KSPARK5
|
||||||
{SPR_NULL, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_KSPARK7}, // S_KSPARK6
|
{SPR_NULL, FF_FULLBRIGHT, 1, {A_LightningFollowPlayer}, 0, 0, S_KSPARK7}, // S_KSPARK6
|
||||||
{SPR_KSPK, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_KSPARK8}, // S_KSPARK7
|
{SPR_KSPK, FF_FULLBRIGHT|3, 2, {A_LightningFollowPlayer}, 0, 0, S_KSPARK8}, // S_KSPARK7
|
||||||
{SPR_NULL, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_KSPARK9}, // S_KSPARK8
|
{SPR_NULL, FF_FULLBRIGHT, 1, {A_LightningFollowPlayer}, 0, 0, S_KSPARK9}, // S_KSPARK8
|
||||||
{SPR_KSPK, FF_TRANS40|FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_KSPARK10}, // S_KSPARK9
|
{SPR_KSPK, FF_TRANS40|FF_FULLBRIGHT|4, 2, {A_LightningFollowPlayer}, 0, 0, S_KSPARK10}, // S_KSPARK9
|
||||||
{SPR_NULL, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_KSPARK11}, // S_KSPARK10
|
{SPR_NULL, FF_FULLBRIGHT, 1, {A_LightningFollowPlayer}, 0, 0, S_KSPARK11}, // S_KSPARK10
|
||||||
{SPR_KSPK, FF_TRANS50|FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_KSPARK12}, // S_KSPARK11
|
{SPR_KSPK, FF_TRANS50|FF_FULLBRIGHT|5, 2, {A_LightningFollowPlayer}, 0, 0, S_KSPARK12}, // S_KSPARK11
|
||||||
{SPR_NULL, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_KSPARK13}, // S_KSPARK12
|
{SPR_NULL, FF_FULLBRIGHT, 1, {A_LightningFollowPlayer}, 0, 0, S_KSPARK13}, // S_KSPARK12
|
||||||
{SPR_KSPK, FF_TRANS60|FF_FULLBRIGHT|6, 2, {NULL}, 0, 0, S_NULL}, // S_KSPARK13
|
{SPR_KSPK, FF_TRANS60|FF_FULLBRIGHT|6, 2, {A_LightningFollowPlayer}, 0, 0, S_NULL}, // S_KSPARK13
|
||||||
|
|
||||||
// The straight bolt...
|
// The straight bolt...
|
||||||
{SPR_LZI1, FF_FULLBRIGHT, 2, {A_LightningFollowPlayer}, 0, 0, S_LZIO12}, // S_LZIO11
|
{SPR_LZI1, FF_FULLBRIGHT, 2, {A_LightningFollowPlayer}, 0, 0, S_LZIO12}, // S_LZIO11
|
||||||
|
|
|
@ -2749,7 +2749,10 @@ static void K_DoThunderShield(player_t *player)
|
||||||
sx = player->mo->x + FixedMul((player->mo->scale*THUNDERRADIUS), FINECOSINE((an*i)>>ANGLETOFINESHIFT));
|
sx = player->mo->x + FixedMul((player->mo->scale*THUNDERRADIUS), FINECOSINE((an*i)>>ANGLETOFINESHIFT));
|
||||||
sy = player->mo->y + FixedMul((player->mo->scale*THUNDERRADIUS), FINESINE((an*i)>>ANGLETOFINESHIFT));
|
sy = player->mo->y + FixedMul((player->mo->scale*THUNDERRADIUS), FINESINE((an*i)>>ANGLETOFINESHIFT));
|
||||||
mo = P_SpawnMobj(sx, sy, player->mo->z, MT_THOK);
|
mo = P_SpawnMobj(sx, sy, player->mo->z, MT_THOK);
|
||||||
|
mo-> angle = an*i;
|
||||||
|
mo->extravalue1 = THUNDERRADIUS; // Used to know whether we should teleport by radius or something.
|
||||||
mo->scale = player->mo->scale*3;
|
mo->scale = player->mo->scale*3;
|
||||||
|
P_SetTarget(&mo->target, player->mo);
|
||||||
P_SetMobjState(mo, S_KSPARK1);
|
P_SetMobjState(mo, S_KSPARK1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8323,9 +8323,18 @@ void A_LightningFollowPlayer(mobj_t *actor)
|
||||||
if (LUA_CallAction("A_LightningFollowPlayer", actor))
|
if (LUA_CallAction("A_LightningFollowPlayer", actor))
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
fixed_t sx, sy;
|
||||||
if (actor->target)
|
if (actor->target)
|
||||||
{
|
{
|
||||||
P_TeleportMove(actor, actor->target->x, actor->target->y, actor->target->z);
|
if (actor->extravalue1) // Make the radius also follow the player somewhat accuratly
|
||||||
|
{
|
||||||
|
sx = actor->target->x + FixedMul((actor->target->scale*actor->extravalue1), FINECOSINE((actor->angle)>>ANGLETOFINESHIFT));
|
||||||
|
sy = actor->target->y + FixedMul((actor->target->scale*actor->extravalue1), FINESINE((actor->angle)>>ANGLETOFINESHIFT));
|
||||||
|
P_TeleportMove(actor, sx, sy, actor->target->z);
|
||||||
|
}
|
||||||
|
else // else just teleport to player directly
|
||||||
|
P_TeleportMove(actor, actor->target->x, actor->target->y, actor->target->z);
|
||||||
|
|
||||||
actor->momx = actor->target->momx;
|
actor->momx = actor->target->momx;
|
||||||
actor->momy = actor->target->momy;
|
actor->momy = actor->target->momy;
|
||||||
actor->momz = actor->target->momz; // Give momentum since we don't teleport to our player literally every frame.
|
actor->momz = actor->target->momz; // Give momentum since we don't teleport to our player literally every frame.
|
||||||
|
|
Loading…
Reference in a new issue