59 lines
1.4 KiB
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
|
|
|