boiii-scripts/shared/vehicles/_counteruav.gsc
2023-04-13 17:30:38 +02:00

76 lines
10 KiB
Plaintext

#using scripts\codescripts\struct;
#using scripts\shared\math_shared;
#using scripts\shared\statemachine_shared;
#using scripts\shared\system_shared;
#using scripts\shared\array_shared;
#using scripts\shared\util_shared;
#using scripts\shared\vehicle_shared;
#using scripts\shared\vehicle_ai_shared;
#using scripts\shared\vehicle_death_shared;
#using scripts\shared\clientfield_shared;
#using_animtree( "generic" );
#namespace counteruav;
function autoexec __init__sytem__() { system::register("counteruav",&__init__,undefined,undefined); }
function __init__()
{
vehicle::add_main_callback( "counteruav", &counteruav_initialize );
}
function counteruav_initialize()
{
self UseAnimTree( #animtree );
Target_Set( self, ( 0, 0, 0 ) );
self.health = self.healthdefault;
self vehicle::friendly_fire_shield();
//self EnableAimAssist();
//self SetNearGoalNotifyDist( 40 );
self SetVehicleAvoidance( true ); // this is ORCA avoidance
self SetHoverParams( 50.0, 100.0, 100.0 );
self.vehAirCraftCollisionEnabled = true;
assert( isdefined( self.scriptbundlesettings ) );
self.settings = struct::get_script_bundle( "vehiclecustomsettings", self.scriptbundlesettings );
self.goalRadius = 999999;
self.goalHeight = 999999;
self SetGoal( self.origin, false, self.goalRadius, self.goalHeight );
self.overrideVehicleDamage = &drone_callback_damage;
// self thread vehicle_ai::nudge_collision(); // do we need this?
//disable some cybercom abilities
if( IsDefined( level.vehicle_initializer_cb ) )
{
[[level.vehicle_initializer_cb]]( self );
}
}
function drone_callback_damage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, weapon, vPoint, vDir, sHitLoc, vDamageOrigin, psOffsetTime, damageFromUnderneath, modelIndex, partName, vSurfaceNormal )
{
iDamage = vehicle_ai::shared_callback_damage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, weapon, vPoint, vDir, sHitLoc, vDamageOrigin, psOffsetTime, damageFromUnderneath, modelIndex, partName, vSurfaceNormal );
return iDamage;
}