1 #using scripts\codescripts\struct;
3 #using scripts\shared\clientfield_shared;
4 #using scripts\shared\gameskill_shared;
5 #using scripts\shared\math_shared;
6 #using scripts\shared\statemachine_shared;
7 #using scripts\shared\system_shared;
8 #using scripts\shared\util_shared;
9 #using scripts\shared\turret_shared;
10 #using scripts\shared\flag_shared;
11 #using scripts\shared\damagefeedback_shared;
12 #using scripts\shared\laststand_shared;
13 #using scripts\shared\gameobjects_shared;
15 #insert scripts\shared\shared.gsh;
16 #insert scripts\shared\statemachine.gsh;
17 #insert scripts\shared\version.gsh;
18 #insert scripts\shared\archetype_shared\archetype_shared.gsh;
20 #using scripts\shared\ai\systems\blackboard;
21 #using scripts\shared\ai\blackboard_vehicle;
22 #insert scripts\shared\ai\utility.gsh;
24 #using scripts\shared\vehicle_shared;
25 #using scripts\shared\vehicle_ai_shared;
26 #using scripts\shared\vehicle_death_shared;
28 #using scripts\mp\killstreaks\_killstreaks;
29 #using scripts\mp\killstreaks\_killstreak_bundles;
31 #define MECHTANK_BUNDLE "mechtank"
37 #using_animtree( "generic" );
46 self useanimtree( #animtree );
48 self.targetOffset = ( 0, 0, 60 );
50 self EnableAimAssist();
53 self.fovcosinebusy = 0;
54 self.maxsightdistsqrd =
SQR( 10000 );
55 self.allow_movement =
true;
57 assert( isdefined(
self.scriptbundlesettings ) );
65 self.heatlh =
self.maxhealth;
68 function MechtankCallback_VehicleDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, weapon, vPoint, vDir, sHitLoc, vDamageOrigin, psOffsetTime, damageFromUnderneath, modelIndex, partName, vSurfaceNormal )
70 if ( isdefined( eAttacker ) && ( eAttacker ==
self || isplayer( eAttacker ) && eAttacker.usingvehicle && eAttacker.viewlockedentity ===
self ) )
75 if ( sMeansOfDeath ===
"MOD_MELEE" || sMeansOfDeath ===
"MOD_MELEE_WEAPON_BUTT" || sMeansOfDeath ===
"MOD_MELEE_ASSASSINATE" || sMeansOfDeath ===
"MOD_ELECTROCUTED" || sMeansOfDeath ===
"MOD_CRUSH" || weapon.isEmp )
80 iDamage =
self killstreaks::OnDamagePerWeapon(
MECHTANK_BUNDLE, eAttacker, iDamage, iDFlags, sMeansOfDeath, weapon,
self.maxhealth, undefined,
self.maxhealth * 0.4, undefined, 0, undefined,
true, 1.0 );
83 driver =
self GetSeatOccupant( 0 );
84 if ( isPlayer( driver ) )