Files
2025-04-15 22:27:20 -04:00

45 lines
1.3 KiB
SourcePawn

public void AntiAir_ProjectileTick(int iProjectile, int iTower) {
if (IsValidEntity(iProjectile)) {
float fLocation[3];
GetEntPropVector(iProjectile, Prop_Data, "m_vecOrigin", fLocation);
char sEntityName[50];
GetEntPropString(iProjectile, Prop_Data, "m_iName", sEntityName, sizeof(sEntityName));
if (fLocation[2] >= g_fAirWaveSpawn[2] && fLocation[2] <= g_fAirWaveSpawn[2] + 95.0) {
float fAngles[3];
GetEntPropVector(iProjectile, Prop_Data, "m_angRotation", fAngles);
float fVelocity[3];
GetEntPropVector(iProjectile, Prop_Data, "m_vecAbsVelocity", fVelocity);
float fNewVelocity[3];
fNewVelocity[0] = fVelocity[0];
fNewVelocity[1] = fVelocity[1];
fNewVelocity[2] = -fVelocity[2];
float fBounceVec[3];
SubtractVectors(fNewVelocity, NULL_VECTOR, fBounceVec);
fBounceVec[2] = 0.0;
float fNewAngles[3];
GetVectorAngles(fBounceVec, fNewAngles);
TeleportEntity(iProjectile, NULL_VECTOR, fNewAngles, fBounceVec);
} else {
DataPack hPack = new DataPack();
hPack.WriteCell(iProjectile);
hPack.WriteCell(iTower);
RequestFrame(AntiAir_ProjectileTick2, hPack);
}
}
}
public void AntiAir_ProjectileTick2(DataPack iData) {
iData.Reset();
AntiAir_ProjectileTick(iData.ReadCell(), iData.ReadCell());
delete iData;
}