Ejemplo n.º 1
0
    public ShipBase SpawnPlayerShip(Loadout loadout, string factionID, MacroAIParty party)
    {
        ShipBase ship = GameManager.Inst.PlayerControl.PlayerShip;

        BuildShip(ship, loadout, factionID, party);

        Autopilot pilot = GameManager.Inst.PlayerControl.PlayerAutopilot;

        pilot.AvoidanceDetector            = ship.MyReference.AvoidanceDetector;
        pilot.AvoidanceDetector.ParentShip = ship;


        //load weapons
        foreach (WeaponJoint joint in ship.MyReference.WeaponJoints)
        {
            joint.ParentShip = ship;
            foreach (KeyValuePair <string, InvItemData> jointSetup in loadout.WeaponJoints)
            {
                if (jointSetup.Key == joint.JointID && jointSetup.Value != null)
                {
                    joint.LoadWeapon(jointSetup.Value);
                }
            }
        }

        for (int i = 0; i < loadout.Defensives.Count; i++)
        {
            if (loadout.Defensives[i] != null && loadout.Defensives[i].Item.GetStringAttribute("Defensive Type") == "Countermeasure")
            {
                CMDispenser dispenser = new CMDispenser();
                dispenser.ParentShip = ship;
                dispenser.AmmoID     = loadout.Defensives[i].RelatedItemID;
                dispenser.Type       = DefensiveType.Countermeasure;
                ship.MyReference.Defensives.Add(dispenser);
            }
        }

        //load ammo bay
        ship.Storage.AmmoBayItems = new Dictionary <string, InvItemData>();
        foreach (InvItemData item in loadout.AmmoBayItems)
        {
            ship.Storage.AmmoBayItems.Add(item.Item.ID, item);
        }

        ship.Storage.CargoBayItems = new List <InvItemData>();
        foreach (InvItemData item in loadout.CargoBayItems)
        {
            ship.Storage.CargoBayItems.Add(item);
        }
        //In$8177BB
        //load power management setting
        ship.CurrentPowerMgmtButton = loadout.CurrentPowerMgmtButton;


        return(ship);
    }
Ejemplo n.º 2
0
    public ShipBase SpawnAIShip(Loadout loadout, string factionID, MacroAIParty party)
    {
        ShipBase ship = (GameObject.Instantiate(Resources.Load("AIShip")) as GameObject).GetComponent <ShipBase>();

        BuildShip(ship, loadout, factionID, party);



        //load weapons
        foreach (WeaponJoint joint in ship.MyReference.WeaponJoints)
        {
            joint.ParentShip = ship;
            foreach (KeyValuePair <string, InvItemData> jointSetup in loadout.WeaponJoints)
            {
                if (jointSetup.Key == joint.JointID)
                {
                    joint.LoadWeapon(jointSetup.Value);
                }
            }
        }

        for (int i = 0; i < loadout.Defensives.Count; i++)
        {
            if (loadout.Defensives[i] != null && loadout.Defensives[i].Item.GetStringAttribute("Defensive Type") == "Countermeasure")
            {
                CMDispenser dispenser = new CMDispenser();
                dispenser.ParentShip = ship;
                dispenser.AmmoID     = loadout.Defensives[i].RelatedItemID;
                dispenser.Type       = DefensiveType.Countermeasure;
                ship.MyReference.Defensives.Add(dispenser);
            }
        }

        //load ammo bay
        ship.Storage.AmmoBayItems = new Dictionary <string, InvItemData>();
        foreach (InvItemData item in loadout.AmmoBayItems)
        {
            ship.Storage.AmmoBayItems.Add(item.Item.ID, item);
        }
        ship.Storage.CargoBayItems = new List <InvItemData>();
        foreach (InvItemData item in loadout.CargoBayItems)
        {
            ship.Storage.CargoBayItems.Add(item);
        }

        AI ai = ship.GetComponent <AI>();

        ai.Initialize(party, _allFactions[factionID]);

        return(ship);
    }
Ejemplo n.º 3
0
 private void DropCountermeasure()
 {
     if (_cmTimer >= 3f)
     {
         foreach (Defensive d in PlayerShip.MyReference.Defensives)
         {
             if (d.Type == DefensiveType.Countermeasure)
             {
                 CMDispenser cm = (CMDispenser)d;
                 cm.DropCountermeasure();
             }
         }
     }
 }
Ejemplo n.º 4
0
    public override BTResult Process()
    {
        //check if missile is present and is close
        GameObject closeMissile = null;

        foreach (GameObject missile in MyAI.MyShip.IncomingMissiles)
        {
            if (missile != null)
            {
                if (Vector3.Distance(MyAI.MyShip.transform.position, missile.transform.position) < 30)
                {
                    closeMissile = missile;
                }
            }
        }


        GameObject currentCM = MyAI.MyShip.CurrentCountermeasure;

        if (currentCM == null && closeMissile != null && closeMissile.GetComponent <Missile>().Stage == MissileStage.Chasing)
        {
            foreach (Defensive d in MyAI.MyShip.MyReference.Defensives)
            {
                if (d.Type == DefensiveType.Countermeasure)
                {
                    CMDispenser dispenser = (CMDispenser)d;
                    dispenser.DropCountermeasure();
                    return(Exit(BTResult.Success));
                }
            }
        }
        else
        {
            return(Exit(BTResult.Fail));
        }

        return(Exit(BTResult.Success));
    }