public void GenerateTraderParty(string factionID) { MacroAIParty party = new MacroAIParty(); party.FactionID = factionID; party.SpawnedShips = new List <ShipBase>(); Faction faction = GameManager.Inst.NPCManager.AllFactions[party.FactionID]; List <string> keyList = new List <string>(GameManager.Inst.WorldManager.AllSystems.Keys); //StarSystemData currentSystem = GameManager.Inst.WorldManager.AllSystems["washington_system"]; //StarSystemData currentSystem = GameManager.Inst.WorldManager.AllSystems[keyList[UnityEngine.Random.Range(0, keyList.Count)]]; StationData currentStation = GameManager.Inst.WorldManager.GetRandomFriendlyDockableStation(party.FactionID, null); StarSystemData currentSystem = GameManager.Inst.WorldManager.AllSystems[currentStation.SystemID]; party.CurrentSystemID = currentSystem.ID; //StationData currentStation = currentSystem.GetStationByID("planet_colombia_landing"); //StationData currentStation = currentSystem.Stations[UnityEngine.Random.Range(0, currentSystem.Stations.Count)]; party.DockedStationID = currentStation.ID; Transform origin = GameObject.Find("Origin").transform; party.Location = new RelLoc(origin.position, currentStation.Location.RealPos, origin); party.PartyNumber = GameManager.Inst.NPCManager.LastUsedPartyNumber + 1; GameManager.Inst.NPCManager.LastUsedPartyNumber = party.PartyNumber; //pick 1 freighter loadout for the leader if (faction.FreightersPool.Count > 0) { party.LeaderLoadout = new Loadout(faction.FreightersPool[UnityEngine.Random.Range(0, faction.FreightersPool.Count)]); } else { party.LeaderLoadout = new Loadout(faction.FightersPool[UnityEngine.Random.Range(0, faction.FightersPool.Count)]); } //pick 1-4 fighter loadouts for followers party.FollowerLoadouts = new List <Loadout>(); int numberOfFollowers = UnityEngine.Random.Range(1, 5); for (int i = 0; i < numberOfFollowers; i++) { party.FollowerLoadouts.Add(new Loadout(faction.FightersPool[UnityEngine.Random.Range(0, faction.FightersPool.Count)])); } MacroAITask task = GameManager.Inst.NPCManager.MacroAI.AssignMacroAITask(MacroAITaskType.None, party); party.IsInTradelane = false; //party.DestinationCoord = GameManager.Inst.WorldManager.AllNavNodes["cambridge_station"].Location; party.MoveSpeed = 10f; party.NextTwoNodes = new List <NavNode>(); party.PrevNode = null; //CreateTempNode(party.Location, "tempstart", GameManager.Inst.WorldManager.AllSystems[party.CurrentSystemID]); GameManager.Inst.NPCManager.MacroAI.LoadPartyTreeset(party); GameManager.Inst.NPCManager.AllParties.Add(party); }
public MacroAIParty GeneratePlayerParty() { MacroAIParty party = new MacroAIParty(); party.FactionID = "player"; party.SpawnedShips = new List <ShipBase>(); party.SpawnedShips.Add(GameManager.Inst.PlayerControl.PlayerShip); party.IsPlayerParty = true; StarSystemData currentSystem = GameManager.Inst.WorldManager.AllSystems[GameManager.Inst.WorldManager.CurrentSystem.ID]; party.CurrentSystemID = currentSystem.ID; StationData currentStation = null; party.DockedStationID = ""; Transform origin = GameObject.Find("Origin").transform; party.Location = new RelLoc(origin.position, GameManager.Inst.PlayerControl.PlayerShip.transform.position, origin); party.PartyNumber = 0; party.SpawnedShipsLeader = GameManager.Inst.PlayerControl.PlayerShip; party.ShouldEnableAI = true; //generate loadout party.LeaderLoadout = GameManager.Inst.PlayerProgress.ActiveLoadout; party.FollowerLoadouts = new List <Loadout>(); /* * for(int i=0; i<4; i++) * { * Loadout loadout = new Loadout("LightFighter", ShipType.Fighter); * party.FollowerLoadouts.Add(loadout); * loadout.WeaponJoints = new Dictionary<string, string>() * { * { "GimballLeft", "Gun1" }, * { "GimballRight", "Gun1" }, * }; * }*/ MacroAITask task = null; party.IsInTradelane = false; //party.DestinationCoord = GameManager.Inst.WorldManager.AllNavNodes["cambridge_station"].Location; party.MoveSpeed = 10f; party.NextTwoNodes = new List <NavNode>(); party.PrevNode = null; //CreateTempNode(party.Location, "tempstart", GameManager.Inst.WorldManager.AllSystems[party.CurrentSystemID]); LoadPartyTreeset(party); GenerateFormationForParty(party); GameManager.Inst.NPCManager.AllParties.Add(party); return(party); }
// Update is called once per frame void Update() { if (!Enabled) { return; } //list all parties and their system AllParties = new List <string>(); foreach (MacroAIParty party in GameManager.Inst.NPCManager.AllParties) { string entry = party.PartyNumber + " " + party.CurrentSystemID; AllParties.Add(entry); } if (TargetNPC != null) { NPCRunningNodesHist = new List <string>(TargetNPC.MyAI.RunningNodeHist.DeepPeek(6)); if (TargetNPC.MyAI.MyParty != null) { PartyRunningNodesHist = new List <string>(TargetNPC.MyAI.MyParty.RunningNodeHist.DeepPeek(6)); } if (TargetNPC.MyAI.MyParty != null && TargetNPC.MyAI.MyParty.CurrentTask != null) { MacroAITask task = TargetNPC.MyAI.MyParty.CurrentTask; TaskInfo = getTaskInfo(task); } } else if (TargetPartyNumber > 0) { foreach (MacroAIParty party in GameManager.Inst.NPCManager.AllParties) { if (party.PartyNumber == TargetPartyNumber) { PartyRunningNodesHist = new List <string>(party.RunningNodeHist.DeepPeek(6)); if (party.CurrentTask != null) { TaskInfo = getTaskInfo(party.CurrentTask); } } } } }
private void AutopilotGoTo() { if (SelectedObject != null) { Vector3 gotoDest = Vector3.zero; if (SelectedObjectType == SelectedObjectType.Planet) { Planet planet = (Planet)SelectedObject; Vector3 distance = planet.transform.position - PlayerShip.transform.position; gotoDest = planet.transform.position - distance.normalized * (40f + planet.OriginalScale.x / 2f); } else if (SelectedObjectType == SelectedObjectType.Station) { StationBase station = (StationBase)SelectedObject; Vector3 distance = station.transform.position - PlayerShip.transform.position; gotoDest = PlayerShip.transform.position + distance.normalized * (distance.magnitude - 20f); } if (gotoDest != Vector3.zero) { MacroAITask task = new MacroAITask(); task.TaskType = MacroAITaskType.Travel; task.TravelDestSystemID = GameManager.Inst.WorldManager.CurrentSystem.ID; task.TravelDestNodeID = ""; task.IsDestAStation = false; Transform origin = GameObject.Find("Origin").transform; task.TravelDestCoord = new RelLoc(origin.position, gotoDest, origin); IsAutopilot = true; PlayerParty.WaitTimer = 0; PlayerParty.CurrentTask = task; PlayerParty.HasReachedDestNode = false; PlayerParty.DestNode = GameManager.Inst.NPCManager.MacroAI.GetClosestNodeToLocation(task.TravelDestCoord.RealPos, GameManager.Inst.WorldManager.AllSystems[task.TravelDestSystemID]); Debug.Log("Autopilot dest node " + PlayerParty.DestNode.ID); PlayerAutopilot.Activate(); _isMouseFlight = false; InputEventHandler.Instance.InputState = InputState.Autopilot; } } }
private string getTaskInfo(MacroAITask task) { string taskInfo = task.TaskType.ToString(); if (task.TaskType == MacroAITaskType.Stay) { taskInfo += " for " + task.StayDuration; } else if (task.TaskType == MacroAITaskType.Travel) { taskInfo += " to " + task.TravelDestSystemID; if (task.IsDestAStation) { taskInfo += "\\" + task.TravelDestNodeID; } else { taskInfo += "\\" + task.TravelDestCoord.RealPos.ToString(); } } return(taskInfo); }
public void LoadWorldData() { GameManager.Inst.NPCManager.LastUsedPartyNumber = CurrentSave.LastUsedPartyNumber; //loading all NPC and player parties Debug.Log("Loading AI Parties, there are " + CurrentSave.AllNonPlayerParties.Count); foreach (MacroAIPartySaveData partyData in CurrentSave.AllNonPlayerParties) { Debug.Log("Loading Party " + partyData.PartyNumber); MacroAIParty party = new MacroAIParty(); party.FactionID = partyData.FactionID; party.SpawnedShips = new List <ShipBase>(); //List<string> keyList = new List<string>(GameManager.Inst.WorldManager.AllSystems.Keys); StarSystemData currentSystem = GameManager.Inst.WorldManager.AllSystems[partyData.CurrentSystemID]; party.CurrentSystemID = currentSystem.ID; party.DockedStationID = partyData.DockedStationID; if (GameManager.Inst.WorldManager.CurrentSystem != null && currentSystem.ID == GameManager.Inst.WorldManager.CurrentSystem.ID) { party.Location = new RelLoc(currentSystem.OriginPosition, partyData.Location.ConvertToVector3(), GameObject.Find("Origin").transform, 1); } else { party.Location = new RelLoc(currentSystem.OriginPosition, partyData.Location.ConvertToVector3(), null, 1); } party.PartyNumber = partyData.PartyNumber; //generate loadout party.LeaderLoadout = LoadLoadoutFromSave(partyData.LeaderLoadout); party.FollowerLoadouts = new List <Loadout>(); foreach (LoadoutSaveData loadoutData in partyData.FollowerLoadouts) { Loadout loadout = LoadLoadoutFromSave(loadoutData); party.FollowerLoadouts.Add(loadout); } if (partyData.CurrentTask != null) { MacroAITask task = new MacroAITask(); task.IsDestAStation = partyData.CurrentTask.IsDestAStation; task.StayDuration = partyData.CurrentTask.StayDuration; task.TaskType = partyData.CurrentTask.TaskType; if (partyData.CurrentTask.TravelDestCoord != null) { if (currentSystem.ID == GameManager.Inst.WorldManager.CurrentSystem.ID) { task.TravelDestCoord = new RelLoc(currentSystem.OriginPosition, partyData.CurrentTask.TravelDestCoord.ConvertToVector3(), GameObject.Find("Origin").transform, 1); } else { task.TravelDestCoord = new RelLoc(currentSystem.OriginPosition, partyData.CurrentTask.TravelDestCoord.ConvertToVector3(), null, 1); } } task.TravelDestNodeID = partyData.CurrentTask.TravelDestNodeID; task.TravelDestSystemID = partyData.CurrentTask.TravelDestSystemID; Debug.Log("Loading task type " + task.TaskType.ToString() + " " + task.TravelDestNodeID); party.CurrentTask = task; if (party.CurrentTask.TaskType == MacroAITaskType.Travel) { if (party.CurrentTask.IsDestAStation) { party.DestNode = GameManager.Inst.WorldManager.AllNavNodes[party.CurrentTask.TravelDestNodeID]; } else { //party.DestNode = CreateTempNode(party.CurrentTask.TravelDestCoord, "tempdest", GameManager.Inst.WorldManager.AllSystems[party.CurrentTask.TravelDestSystemID]); party.DestNode = GameManager.Inst.NPCManager.MacroAI.GetClosestNodeToLocation(party.CurrentTask.TravelDestCoord.RealPos, GameManager.Inst.WorldManager.AllSystems[party.CurrentTask.TravelDestSystemID]); } } } party.IsInTradelane = partyData.IsInTradelane; party.MoveSpeed = partyData.MoveSpeed; party.NextTwoNodes = new List <NavNode>(); foreach (string nodeID in partyData.NextTwoNodesIDs) { Debug.Log("Next node " + nodeID); party.NextTwoNodes.Add(GameManager.Inst.WorldManager.AllNavNodes[nodeID]); } if (partyData.PrevNodeID != "") { party.PrevNode = GameManager.Inst.WorldManager.AllNavNodes[partyData.PrevNodeID]; } party.TreeSet = new Dictionary <string, BehaviorTree>(); foreach (string treeSetName in partyData.TreeSetNames) { party.TreeSet.Add(treeSetName, GameManager.Inst.DBManager.XMLParserBT.LoadBehaviorTree(treeSetName, null, party)); } GameManager.Inst.NPCManager.AllParties.Add(party); } //load station data GameManager.Inst.WorldManager.DockableStationDatas = new Dictionary <string, DockableStationData>(); foreach (DockableStationSaveData saveData in CurrentSave.DockableStationDatas) { DockableStationData stationData = new DockableStationData(); stationData.DemandResources = saveData.DemandResources; stationData.DockedParties = new List <MacroAIParty>(); foreach (int partyNumber in saveData.DockedPartiesNumbers) { stationData.DockedParties.Add(GameManager.Inst.NPCManager.GetPartyByNumber(partyNumber)); } stationData.FuelPrice = saveData.FuelPrice; stationData.LifeSupportPrice = saveData.LifeSupportPrice; stationData.ShipsForSale = saveData.ShipsForSale; stationData.StationID = saveData.StationID; stationData.FactionID = saveData.FactionID; stationData.TraderSaleItems = saveData.TraderSaleItems; stationData.UndesiredItemPriceMultiplier = saveData.UndesiredItemPriceMultiplier; stationData.DemandNormalizeSpeed = saveData.DemandNormalizeSpeed; if (saveData.HomeStationSaveData != null) { stationData.HomeStationData = new HomeStationData(); stationData.HomeStationData.HangarSize = saveData.HomeStationSaveData.HangarSize; stationData.HomeStationData.VaultSize = saveData.HomeStationSaveData.VaultSize; stationData.HomeStationData.ItemsInVault = saveData.HomeStationSaveData.ItemsInVault; stationData.HomeStationData.ShipsInHangar = new List <Loadout>(); foreach (LoadoutSaveData loadoutSaveData in saveData.HomeStationSaveData.ShipsInHangar) { stationData.HomeStationData.ShipsInHangar.Add(LoadLoadoutFromSave(loadoutSaveData)); } } GameManager.Inst.WorldManager.DockableStationDatas.Add(stationData.StationID, stationData); } //load time GameManager.Inst.WorldManager.CurrentTime = CurrentSave.CurrentTime; }
public MacroAITask AssignMacroAITask(MacroAITaskType prevTaskType, MacroAIParty party) { MacroAITask task = new MacroAITask(); if (prevTaskType == MacroAITaskType.None) { if (UnityEngine.Random.value > 0.0f) { prevTaskType = MacroAITaskType.Stay; } else { prevTaskType = MacroAITaskType.Travel; } } party.PrevNode = null; if (party.NextTwoNodes != null) { party.NextTwoNodes.Clear(); } if (prevTaskType == MacroAITaskType.Travel) { if (!string.IsNullOrEmpty(party.DockedStationID) && UnityEngine.Random.value < 0.75f) { task.TaskType = MacroAITaskType.Trade; task.StayDuration = UnityEngine.Random.Range(10f, 30f); party.WaitTimer = 0; party.RunningNodeHist.UniquePush("Trading for " + task.StayDuration); Debug.LogError("Party " + party.PartyNumber + " Task has been assigned to party: Trade, current station" + party.DockedStationID); TradeCommodity(party, GameManager.Inst.WorldManager.DockableStationDatas[party.DockedStationID]); } else { task.TaskType = MacroAITaskType.Stay; task.StayDuration = UnityEngine.Random.Range(15f, 35f); party.WaitTimer = 0; party.RunningNodeHist.UniquePush("Stay for " + task.StayDuration); Debug.LogError("Party " + party.PartyNumber + " Task has been assigned to party: " + task.TaskType + " for " + task.StayDuration); } } else if (prevTaskType == MacroAITaskType.Stay || prevTaskType == MacroAITaskType.Trade) { task.TaskType = MacroAITaskType.Travel; List <string> keyList = new List <string>(GameManager.Inst.WorldManager.AllSystems.Keys); if (Time.time < 0) { Debug.LogError("new task for initial test"); StarSystemData destSystem = GameManager.Inst.WorldManager.AllSystems[keyList[UnityEngine.Random.Range(0, keyList.Count)]]; //StarSystemData destSystem = GameManager.Inst.WorldManager.AllSystems["washington_system"]; //StarSystemData destSystem = GameManager.Inst.WorldManager.AllSystems["new_england_system"]; task.TravelDestSystemID = destSystem.ID; task.TravelDestNodeID = destSystem.Stations[UnityEngine.Random.Range(0, destSystem.Stations.Count)].ID; //task.TravelDestNodeID = "annandale_station";//"planet_colombia_landing";//"bethesda_station"; task.IsDestAStation = true; //task.TravelDestCoord = new RelLoc(destSystem.OriginPosition, new Vector3(-28.3f, 5f, 418.8f), null); } else { Debug.LogError("new task to random station in random system"); StarSystemData destSystem = GameManager.Inst.WorldManager.AllSystems[keyList[UnityEngine.Random.Range(0, keyList.Count)]]; //StarSystemData destSystem = GameManager.Inst.WorldManager.AllSystems["washington_system"]; task.TravelDestSystemID = destSystem.ID; task.TravelDestNodeID = destSystem.Stations[UnityEngine.Random.Range(0, destSystem.Stations.Count)].ID; //task.TravelDestNodeID = "planet_colombia_landing"; task.IsDestAStation = true; } party.WaitTimer = 0; Debug.LogError("Party " + party.PartyNumber + " Task has been assigned to party: " + task.TaskType + " to " + (task.IsDestAStation ? task.TravelDestNodeID : task.TravelDestCoord.ToString())); } party.CurrentTask = task; party.HasReachedDestNode = false; if (party.CurrentTask.TaskType == MacroAITaskType.Travel) { if (party.CurrentTask.IsDestAStation) { party.DestNode = GameManager.Inst.WorldManager.AllNavNodes[party.CurrentTask.TravelDestNodeID]; } else { //party.DestNode = CreateTempNode(party.CurrentTask.TravelDestCoord, "tempdest", GameManager.Inst.WorldManager.AllSystems[party.CurrentTask.TravelDestSystemID]); party.DestNode = GetClosestNodeToLocation(party.CurrentTask.TravelDestCoord.RealPos, GameManager.Inst.WorldManager.AllSystems[party.CurrentTask.TravelDestSystemID]); } } return(task); }
public void GenerateTestParty(string factionID) { MacroAIParty party = new MacroAIParty(); party.FactionID = factionID; party.SpawnedShips = new List <ShipBase>(); List <string> keyList = new List <string>(GameManager.Inst.WorldManager.AllSystems.Keys); //StarSystemData currentSystem = GameManager.Inst.WorldManager.AllSystems["washington_system"]; StarSystemData currentSystem = GameManager.Inst.WorldManager.AllSystems[keyList[UnityEngine.Random.Range(0, keyList.Count)]]; party.CurrentSystemID = currentSystem.ID; //StationData currentStation = currentSystem.GetStationByID("planet_colombia_landing"); StationData currentStation = currentSystem.Stations[UnityEngine.Random.Range(0, currentSystem.Stations.Count)]; party.DockedStationID = "planet_colombia_landing"; Transform origin = GameObject.Find("Origin").transform; party.Location = new RelLoc(origin.position, currentStation.Location.RealPos, origin); party.PartyNumber = GameManager.Inst.NPCManager.LastUsedPartyNumber + 1; GameManager.Inst.NPCManager.LastUsedPartyNumber = party.PartyNumber; Item item1 = new Item(GameManager.Inst.ItemManager.GetItemStats("wc_VikoWeaponCapacitorMK1")); InvItemData itemData1 = new InvItemData(); itemData1.Item = item1; itemData1.Quantity = 1; Item item2 = new Item(GameManager.Inst.ItemManager.GetItemStats("scn_RadianTekShortRangeScanner")); InvItemData itemData2 = new InvItemData(); itemData2.Item = item2; itemData2.Quantity = 1; Item item3 = new Item(GameManager.Inst.ItemManager.GetItemStats("thr_StrelskyThrusterMK1")); InvItemData itemData3 = new InvItemData(); itemData3.Item = item3; itemData3.Quantity = 1; Item item4 = new Item(GameManager.Inst.ItemManager.GetItemStats("shd_NCPTransporterShieldMK1")); InvItemData itemData4 = new InvItemData(); itemData4.Item = item4; itemData4.Quantity = 1; Item item5 = new Item(GameManager.Inst.ItemManager.GetItemStats("dfs_CMDispenser")); InvItemData itemData5 = new InvItemData(); itemData5.Item = item5; itemData5.Quantity = 1; itemData5.RelatedItemID = "ammo_LongDurationCM"; Item item10 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_SDCStomperAutocannon")); InvItemData itemData10 = new InvItemData(); itemData10.Item = item10; itemData10.Quantity = 1; itemData10.RelatedItemID = "ammo_20mmTitaniumSlugs"; Item item11 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_StrelskyScreamerMissileLauncher")); InvItemData itemData11 = new InvItemData(); itemData11.Item = item11; itemData11.Quantity = 1; itemData11.RelatedItemID = "ammo_StrelskySeekerMissile"; Item item12 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_AlFasadIonFluxTurretMK1")); InvItemData itemData12 = new InvItemData(); itemData12.Item = item12; itemData12.Quantity = 1; Item item13 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_CGGAnnihilatorTurretMK2")); InvItemData itemData13 = new InvItemData(); itemData13.Item = item13; itemData13.Quantity = 1; Item item14 = new Item(GameManager.Inst.ItemManager.GetItemStats("shd_KeslerFighterShieldMK1")); InvItemData itemData14 = new InvItemData(); itemData14.Item = item14; itemData14.Quantity = 1; Item item15 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_AlFasadStingerPulseCannon")); InvItemData itemData15 = new InvItemData(); itemData15.Item = item15; itemData15.Quantity = 1; Item item20 = new Item(GameManager.Inst.ItemManager.GetItemStats("ammo_LongDurationCM")); InvItemData itemData20 = new InvItemData(); itemData20.Item = item20; itemData20.Quantity = UnityEngine.Random.Range(1, 3); Item item21 = new Item(GameManager.Inst.ItemManager.GetItemStats("ammo_20mmTitaniumSlugs")); InvItemData itemData21 = new InvItemData(); itemData21.Item = item21; itemData21.Quantity = 500; Item item101 = new Item(GameManager.Inst.ItemManager.GetItemStats("wc_VikoWeaponCapacitorMK1")); InvItemData itemData101 = new InvItemData(); itemData101.Item = item101; itemData101.Quantity = 1; Item item102 = new Item(GameManager.Inst.ItemManager.GetItemStats("scn_RadianTekShortRangeScanner")); InvItemData itemData102 = new InvItemData(); itemData102.Item = item102; itemData102.Quantity = 1; Item item103 = new Item(GameManager.Inst.ItemManager.GetItemStats("thr_StrelskyThrusterMK1")); InvItemData itemData103 = new InvItemData(); itemData103.Item = item103; itemData103.Quantity = 1; Item item104 = new Item(GameManager.Inst.ItemManager.GetItemStats("shd_NCPTransporterShieldMK1")); InvItemData itemData104 = new InvItemData(); itemData104.Item = item104; itemData104.Quantity = 1; Item item105 = new Item(GameManager.Inst.ItemManager.GetItemStats("dfs_CMDispenser")); InvItemData itemData105 = new InvItemData(); itemData105.Item = item105; itemData105.Quantity = 1; itemData105.RelatedItemID = "ammo_LongDurationCM"; Item item110 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_SDCStomperAutocannon")); InvItemData itemData110 = new InvItemData(); itemData110.Item = item110; itemData110.Quantity = 1; itemData110.RelatedItemID = "ammo_20mmTitaniumSlugs"; Item item111 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_StrelskyScreamerMissileLauncher")); InvItemData itemData111 = new InvItemData(); itemData111.Item = item111; itemData111.Quantity = 1; itemData111.RelatedItemID = "ammo_StrelskySeekerMissile"; Item item112 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_AlFasadIonFluxTurretMK1")); InvItemData itemData112 = new InvItemData(); itemData112.Item = item112; itemData112.Quantity = 1; Item item113 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_CGGAnnihilatorTurretMK2")); InvItemData itemData113 = new InvItemData(); itemData113.Item = item113; itemData113.Quantity = 1; Item item114 = new Item(GameManager.Inst.ItemManager.GetItemStats("shd_KeslerFighterShieldMK1")); InvItemData itemData114 = new InvItemData(); itemData114.Item = item114; itemData114.Quantity = 1; Item item115 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_AlFasadStingerPulseCannon")); InvItemData itemData115 = new InvItemData(); itemData115.Item = item115; itemData115.Quantity = 1; Item item120 = new Item(GameManager.Inst.ItemManager.GetItemStats("ammo_LongDurationCM")); InvItemData itemData120 = new InvItemData(); itemData120.Item = item120; itemData120.Quantity = UnityEngine.Random.Range(1, 3); Item item121 = new Item(GameManager.Inst.ItemManager.GetItemStats("ammo_20mmTitaniumSlugs")); InvItemData itemData121 = new InvItemData(); itemData121.Item = item121; itemData121.Quantity = 500; //generate loadout party.LeaderLoadout = new Loadout("Trimaran", ShipType.Transport); party.LeaderLoadout.HullAmount = GameManager.Inst.ItemManager.GetShipStats(party.LeaderLoadout.ShipID).Hull; party.LeaderLoadout.FuelAmount = GameManager.Inst.ItemManager.GetShipStats(party.LeaderLoadout.ShipID).MaxFuel; party.LeaderLoadout.LifeSupportAmount = GameManager.Inst.ItemManager.GetShipStats(party.LeaderLoadout.ShipID).LifeSupport; party.LeaderLoadout.Defensives = new List <InvItemData>(); party.LeaderLoadout.ShipMods = new InvItemData[GameManager.Inst.ItemManager.GetShipStats(party.LeaderLoadout.ShipID).ModSlots]; party.LeaderLoadout.WeaponCapacitor = itemData1; party.LeaderLoadout.Shield = itemData4; party.LeaderLoadout.Defensives.Add(itemData5); party.LeaderLoadout.Thruster = itemData3; party.LeaderLoadout.Scanner = itemData2; party.LeaderLoadout.AmmoBayItems.Add(itemData20); party.LeaderLoadout.AmmoBayItems.Add(itemData21); party.LeaderLoadout.WeaponJoints = new Dictionary <string, InvItemData>() { { "GimballLeft", itemData10 }, { "GimballRight", itemData10 }, { "TurretLeft", itemData12 }, { "TurretRight", itemData12 }, { "TurretTop", itemData13 }, }; party.FollowerLoadouts = new List <Loadout>(); for (int i = 0; i < UnityEngine.Random.Range(1, 5); i++) { Loadout loadout = new Loadout("Spitfire", ShipType.Fighter); party.FollowerLoadouts.Add(loadout); loadout.WeaponJoints = new Dictionary <string, InvItemData>() { { "GimballLeft", itemData115 }, { "GimballRight", itemData115 }, { "GimballFront", itemData111 }, }; loadout.HullAmount = GameManager.Inst.ItemManager.GetShipStats(loadout.ShipID).Hull; loadout.FuelAmount = GameManager.Inst.ItemManager.GetShipStats(loadout.ShipID).MaxFuel; loadout.LifeSupportAmount = GameManager.Inst.ItemManager.GetShipStats(loadout.ShipID).LifeSupport; loadout.Defensives = new List <InvItemData>(); loadout.WeaponCapacitor = itemData1; if (UnityEngine.Random.value > 0.6f) { loadout.Defensives.Add(itemData5); } loadout.Shield = itemData114; loadout.Thruster = itemData103; loadout.Scanner = itemData102; loadout.AmmoBayItems.Add(itemData120); loadout.AmmoBayItems.Add(itemData121); loadout.ShipMods = new InvItemData[GameManager.Inst.ItemManager.GetShipStats(loadout.ShipID).ModSlots]; } MacroAITask task = AssignMacroAITask(MacroAITaskType.None, party); party.IsInTradelane = false; //party.DestinationCoord = GameManager.Inst.WorldManager.AllNavNodes["cambridge_station"].Location; party.MoveSpeed = 10f; party.NextTwoNodes = new List <NavNode>(); party.PrevNode = null; //CreateTempNode(party.Location, "tempstart", GameManager.Inst.WorldManager.AllSystems[party.CurrentSystemID]); LoadPartyTreeset(party); GameManager.Inst.NPCManager.AllParties.Add(party); }