marrub
/
Lithia
Archived
1
0
Fork 0
This repository has been archived on 2023-06-17. You can view files and clone it, but cannot push or open issues/pull-requests.
Lithia/source/Main/u_homingrpg.c

59 lines
1.4 KiB
C

// Copyright © 2016-2017 Graham Sanderson, all rights reserved.
#include "lith_upgrades_common.h"
#include "lith_world.h"
#define UData UData_HomingRPG(upgr)
// Static Functions ----------------------------------------------------------|
//
// CheckTarget
//
script static int CheckTarget(struct player *p)
{
if(ACS_SetActivator(0, AAPTR_PLAYER_GETTARGET))
return Lith_UniqueID(0);
else
return 0;
}
// Extern Functions ----------------------------------------------------------|
//
// Lith_HomingMissile
//
script acs void Lith_HomingMissile()
{
struct player *p = Lith_GetPlayer(0, AAPTR_TARGET);
ACS_SetPointer(AAPTR_TRACER, p->tid, AAPTR_TRACER);
}
//
// Update
//
script void Upgr_HomingRPG_Update(struct player *p, upgrade_t *upgr)
{
if(p->weapontype == weapon_launcher)
{
if(p->buttons & BT_ALTATTACK)
{
int id;
if((id = CheckTarget(p)) && id != UData.id)
{
ACS_LocalAmbientSound("weapons/rocket/mark", 127);
ACS_SetPointer(AAPTR_TRACER, 0, AAPTR_PLAYER_GETTARGET);
UData.id = id;
}
}
if(ACS_SetActivator(0, AAPTR_TRACER) && ACS_GetActorProperty(0, APROP_Health) > 0)
ACS_SpawnForced("Lith_TargetMarker",
ACS_GetActorX(0),
ACS_GetActorY(0),
ACS_GetActorZ(0) + (ACS_GetActorPropertyFixed(0, APROP_Height) / 2k));
}
}
// EOF