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); }
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); }
private void DropCountermeasure() { if (_cmTimer >= 3f) { foreach (Defensive d in PlayerShip.MyReference.Defensives) { if (d.Type == DefensiveType.Countermeasure) { CMDispenser cm = (CMDispenser)d; cm.DropCountermeasure(); } } } }
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)); }