mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-02-23 04:11:11 +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)
|
if (dir == -1)
|
||||||
{
|
{
|
||||||
// Shoot backward
|
// Shoot backward
|
||||||
mo = 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/2);
|
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/2);
|
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/2);
|
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/2);
|
K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 + 0x06000000, 0, PROJSPEED/4);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -2467,7 +2467,7 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map
|
||||||
if (dir == -1)
|
if (dir == -1)
|
||||||
{
|
{
|
||||||
// Shoot backward
|
// 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
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -8164,9 +8164,9 @@ void A_ItemPop(mobj_t *actor)
|
||||||
|
|
||||||
void A_JawzChase(mobj_t *actor)
|
void A_JawzChase(mobj_t *actor)
|
||||||
{
|
{
|
||||||
|
|
||||||
INT32 c = 0;
|
|
||||||
INT32 stop;
|
INT32 stop;
|
||||||
|
INT32 bestang = -1, bestdist = -1;
|
||||||
|
SINT8 wtarg = -1;
|
||||||
player_t *player;
|
player_t *player;
|
||||||
#ifdef HAVE_BLUA
|
#ifdef HAVE_BLUA
|
||||||
if (LUA_CallAction("A_JawzChase", actor))
|
if (LUA_CallAction("A_JawzChase", actor))
|
||||||
|
@ -8199,12 +8199,15 @@ void A_JawzChase(mobj_t *actor)
|
||||||
{
|
{
|
||||||
for (; ; actor->lastlook = (actor->lastlook + 1) & PLAYERSMASK)
|
for (; ; actor->lastlook = (actor->lastlook + 1) & PLAYERSMASK)
|
||||||
{
|
{
|
||||||
|
if (actor->lastlook == stop)
|
||||||
|
{
|
||||||
|
actor->lastlook = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (!playeringame[actor->lastlook])
|
if (!playeringame[actor->lastlook])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (c++ == 2)
|
|
||||||
return;
|
|
||||||
|
|
||||||
player = &players[actor->lastlook];
|
player = &players[actor->lastlook];
|
||||||
|
|
||||||
if (!player->mo)
|
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
|
if (G_RaceGametype()) // Only in races, in match and CTF you should go after any nearby players
|
||||||
{
|
{
|
||||||
// USER TARGET
|
// 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
|
if (actor->target->player->kartstuff[k_position] == (player->kartstuff[k_position] + 1)) // Jawz only go after the person directly ahead of you -Sryder
|
||||||
continue;
|
{
|
||||||
|
wtarg = player-players;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (G_BattleGametype())
|
if (G_BattleGametype())
|
||||||
{
|
{
|
||||||
|
angle_t initang;
|
||||||
|
INT32 thisang;
|
||||||
|
INT32 thisdist;
|
||||||
|
|
||||||
if (player->kartstuff[k_bumper] <= 0)
|
if (player->kartstuff[k_bumper] <= 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (P_AproxDistance(P_AproxDistance(player->mo->x-actor->x,
|
initang = actor->angle - R_PointToAngle2(actor->x, actor->y, player->mo->x, player->mo->y);
|
||||||
player->mo->y-actor->y), player->mo->z-actor->z) > RING_DIST)
|
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;
|
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)
|
void A_JawzExplode(mobj_t *actor)
|
||||||
|
|
Loading…
Reference in a new issue