Ejemplo n.º 1
0
 private void ThinkTrack()
 {
     if (this.m_Target == null)
     {
         this.m_Drone.SetShipTarget(0, Vector3.Zero, true, 0);
         this.m_State = DroneTrapState.SEEK;
     }
     else if (this.m_Drone.ListenTurretFiring == Turret.FiringEnum.Firing)
     {
         this.m_State = DroneTrapState.DRAG;
     }
     else
     {
         bool flag = (double)(this.m_Drone.Position - this.m_Target.Position).LengthSquared > (double)this.m_AttackRange * (double)this.m_AttackRange;
         if (this.m_WeaponsDisabled != flag)
         {
             foreach (IGameObject state in this.m_Drone.WeaponBanks.ToList <WeaponBank>())
             {
                 state.PostSetProp("DisableAllTurrets", flag);
             }
             this.m_WeaponsDisabled = flag;
         }
         Vector3 targetPos = this.m_Target.Position + Vector3.Normalize(this.m_DefaultTestPlanetPos - this.m_Target.Position) * (this.m_AttackRange * 0.75f);
         Vector3 look      = Vector3.Normalize(this.m_Target.Position - this.m_Drone.Position);
         if ((double)(this.m_Drone.Maneuvering.Destination - targetPos).LengthSquared <= 2500.0)
         {
             return;
         }
         this.m_Drone.Maneuvering.PostAddGoal(targetPos, look);
     }
 }
Ejemplo n.º 2
0
 private void ThinkSeek()
 {
     if (this.m_Target != null)
     {
         this.m_State = DroneTrapState.TRACK;
     }
     else
     {
         Vector3 targetPos = this.m_TrapPlanet != null ? this.m_TrapPlanet.Parameters.Position : this.m_DefaultTestPlanetPos;
         if ((double)(this.m_Drone.Maneuvering.Destination - targetPos).LengthSquared <= 100.0)
         {
             return;
         }
         this.m_Drone.Maneuvering.PostAddGoal(targetPos, -Vector3.UnitZ);
     }
 }
Ejemplo n.º 3
0
 public override void Initialize()
 {
     this.m_Target             = (Ship)null;
     this.m_TrapPlanet         = (StellarBody)null;
     this.m_RequiresHelp       = false;
     this.m_State              = DroneTrapState.SEEK;
     this.m_RequestHelpDelay   = 200;
     this.m_PrevDistFromPlanet = 0.0f;
     this.m_AttackRange        = 0.0f;
     foreach (WeaponBank state in this.m_Drone.WeaponBanks.ToList <WeaponBank>())
     {
         state.PostSetProp("RequestFireStateChange", true);
         state.PostSetProp("DisableAllTurrets", true);
         this.m_AttackRange     = Math.Max(state.Weapon.RangeTable.Effective.Range, this.m_AttackRange);
         this.m_WeaponsDisabled = true;
     }
     this.m_AttackRange = Math.Min(this.m_AttackRange, 1000f);
 }
Ejemplo n.º 4
0
 private void ThinkDrag()
 {
     if (this.m_Target == null || this.m_Drone.ListenTurretFiring != Turret.FiringEnum.Firing)
     {
         this.SetTarget((IGameObject)null);
         this.m_State = DroneTrapState.SEEK;
         foreach (IGameObject state in this.m_Drone.WeaponBanks.ToList <WeaponBank>())
         {
             state.PostSetProp("DisableAllTurrets", true);
         }
         this.m_WeaponsDisabled = true;
     }
     else
     {
         Vector3 defaultTestPlanetPos = this.m_DefaultTestPlanetPos;
         Vector3 look      = defaultTestPlanetPos - this.m_Target.Position;
         double  num1      = (double)look.Normalize();
         Vector3 targetPos = defaultTestPlanetPos;
         if ((double)(this.m_Drone.Maneuvering.Destination - targetPos).LengthSquared > 2500.0)
         {
             this.m_Drone.Maneuvering.PostAddGoal(targetPos, look);
         }
         if ((double)(this.m_Target.Position - targetPos).LengthSquared > (double)this.m_PrevDistFromPlanet)
         {
             --this.m_RequestHelpDelay;
         }
         else
         {
             this.m_RequestHelpDelay = 200;
         }
         this.m_RequiresHelp = this.m_RequestHelpDelay <= 0;
         float num2 = (float)((this.m_TrapPlanet != null ? (double)this.m_TrapPlanet.Parameters.Radius : 500.0) + (double)this.m_Target.ShipSphere.radius * 0.5);
         if ((double)(this.m_Target.Position - defaultTestPlanetPos).LengthSquared >= (double)num2 * (double)num2)
         {
             return;
         }
         this.m_Target.KillShip(true);
     }
 }