mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-02-22 11:51:10 +00:00
- Revamped Jawz targetting for Battle Mode
- Cleaned up some redundant code - Halved the speed of backwards thrown missiles (previously PROJSPEED/2, now is PROJSPEED/4)
This commit is contained in:
parent
92bb1e7131
commit
0d3d1af317
2 changed files with 48 additions and 32 deletions
12
src/k_kart.c
12
src/k_kart.c
|
@ -2446,11 +2446,11 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map
|
|||
if (dir == -1)
|
||||
{
|
||||
// Shoot backward
|
||||
mo = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 - 0x06000000, 0, PROJSPEED/2);
|
||||
K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 - 0x03000000, 0, PROJSPEED/2);
|
||||
K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180, 0, PROJSPEED/2);
|
||||
K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 + 0x03000000, 0, PROJSPEED/2);
|
||||
K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 + 0x06000000, 0, PROJSPEED/2);
|
||||
mo = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 - 0x06000000, 0, PROJSPEED/4);
|
||||
K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 - 0x03000000, 0, PROJSPEED/4);
|
||||
K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180, 0, PROJSPEED/4);
|
||||
K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 + 0x03000000, 0, PROJSPEED/4);
|
||||
K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 + 0x06000000, 0, PROJSPEED/4);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2467,7 +2467,7 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map
|
|||
if (dir == -1)
|
||||
{
|
||||
// Shoot backward
|
||||
mo = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180, 0, PROJSPEED/2);
|
||||
mo = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180, 0, PROJSPEED/4);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -8164,9 +8164,9 @@ void A_ItemPop(mobj_t *actor)
|
|||
|
||||
void A_JawzChase(mobj_t *actor)
|
||||
{
|
||||
|
||||
INT32 c = 0;
|
||||
INT32 stop;
|
||||
INT32 bestang = -1, bestdist = -1;
|
||||
SINT8 wtarg = -1;
|
||||
player_t *player;
|
||||
#ifdef HAVE_BLUA
|
||||
if (LUA_CallAction("A_JawzChase", actor))
|
||||
|
@ -8199,12 +8199,15 @@ void A_JawzChase(mobj_t *actor)
|
|||
{
|
||||
for (; ; actor->lastlook = (actor->lastlook + 1) & PLAYERSMASK)
|
||||
{
|
||||
if (actor->lastlook == stop)
|
||||
{
|
||||
actor->lastlook = -1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!playeringame[actor->lastlook])
|
||||
continue;
|
||||
|
||||
if (c++ == 2)
|
||||
return;
|
||||
|
||||
player = &players[actor->lastlook];
|
||||
|
||||
if (!player->mo)
|
||||
|
@ -8229,41 +8232,54 @@ void A_JawzChase(mobj_t *actor)
|
|||
if (G_RaceGametype()) // Only in races, in match and CTF you should go after any nearby players
|
||||
{
|
||||
// USER TARGET
|
||||
if (actor->target->player->kartstuff[k_position] != (player->kartstuff[k_position] + 1)) // Jawz only go after the person directly ahead of you -Sryder
|
||||
continue;
|
||||
if (actor->target->player->kartstuff[k_position] == (player->kartstuff[k_position] + 1)) // Jawz only go after the person directly ahead of you -Sryder
|
||||
{
|
||||
wtarg = player-players;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (G_BattleGametype())
|
||||
{
|
||||
angle_t initang;
|
||||
INT32 thisang;
|
||||
INT32 thisdist;
|
||||
|
||||
if (player->kartstuff[k_bumper] <= 0)
|
||||
continue;
|
||||
|
||||
if (P_AproxDistance(P_AproxDistance(player->mo->x-actor->x,
|
||||
player->mo->y-actor->y), player->mo->z-actor->z) > RING_DIST)
|
||||
initang = actor->angle - R_PointToAngle2(actor->x, actor->y, player->mo->x, player->mo->y);
|
||||
if (initang > ANGLE_180)
|
||||
initang = InvAngle(initang);
|
||||
thisang = AngleFixed(initang)>>FRACBITS;
|
||||
thisdist = P_AproxDistance(P_AproxDistance(player->mo->x - actor->x,
|
||||
player->mo->y - actor->y), player->mo->z - actor->z)>>FRACBITS;
|
||||
|
||||
if (thisdist > RING_DIST>>FRACBITS)
|
||||
continue;
|
||||
|
||||
if ((bestang < 0 || bestdist < 0)
|
||||
|| (thisang < bestang)
|
||||
|| (thisang == bestang && thisdist < bestdist))
|
||||
{
|
||||
wtarg = player-players;
|
||||
bestang = thisang;
|
||||
bestdist = thisdist;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((G_RaceGametype()) || (G_BattleGametype() // If in match etc. only home in when you get close enough, in race etc. home in all the time
|
||||
&& P_AproxDistance(P_AproxDistance(player->mo->x-actor->x,
|
||||
player->mo->y-actor->y), player->mo->z-actor->z) < RING_DIST
|
||||
&& player->kartstuff[k_bumper] > 0))
|
||||
P_SetTarget(&actor->tracer, player->mo);
|
||||
return;
|
||||
|
||||
// Moved to bottom so it doesn't not check the last player
|
||||
// done looking
|
||||
if (actor->lastlook == stop)
|
||||
{
|
||||
if (G_RaceGametype())
|
||||
actor->lastlook = -2;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
if (wtarg > 0
|
||||
&& (G_RaceGametype() // Instantly go after in Race
|
||||
|| (G_BattleGametype() && bestdist < RING_DIST>>FRACBITS))) // Wait until you're in distance in Battle
|
||||
{
|
||||
CONS_Printf("ang: %d, dist: %d, wtarg: %d\n", bestang, bestdist, wtarg);
|
||||
P_SetTarget(&actor->tracer, players[wtarg].mo);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void A_JawzExplode(mobj_t *actor)
|
||||
|
|
Loading…
Reference in a new issue