public void ProcessPlayerWatchList() { PlayerList.Clear(); MyAPIGateway.Players.GetPlayers(PlayerList); foreach (var player in PlayerList) { if (player.IsBot == true || player.Character == null) { continue; } if (playerWatchList.ContainsKey(player) == true) { //Regular Timers if (Settings.General.EnableSpaceCargoShips == true) { playerWatchList[player].SpaceCargoShipTimer -= Settings.General.PlayerWatcherTimerTrigger; } if (Settings.General.EnablePlanetaryCargoShips == true) { playerWatchList[player].AtmoCargoShipTimer -= Settings.General.PlayerWatcherTimerTrigger; } if (Settings.General.EnableRandomEncounters == true) { //CoolDown Timers if (playerWatchList[player].RandomEncounterCoolDownTimer > 0) { playerWatchList[player].RandomEncounterCoolDownTimer -= Settings.General.PlayerWatcherTimerTrigger; } else { playerWatchList[player].RandomEncounterCheckTimer -= Settings.General.PlayerWatcherTimerTrigger; } if (playerWatchList[player].RandomEncounterDistanceCoordCheck == Vector3D.Zero) { playerWatchList[player].RandomEncounterDistanceCoordCheck = player.GetPosition(); } } if (Settings.General.EnablePlanetaryInstallations == true) { if (playerWatchList[player].PlanetaryInstallationCooldownTimer > 0) { playerWatchList[player].PlanetaryInstallationCooldownTimer -= Settings.General.PlayerWatcherTimerTrigger; } else { playerWatchList[player].PlanetaryInstallationCheckTimer -= Settings.General.PlayerWatcherTimerTrigger; } } if (Settings.General.EnableBossEncounters == true) { if (BossEncounterSpawner.IsPlayerInBossEncounter(player.IdentityId) == false) { if (playerWatchList[player].BossEncounterCooldownTimer > 0) { playerWatchList[player].BossEncounterCooldownTimer -= Settings.General.PlayerWatcherTimerTrigger; } else { playerWatchList[player].BossEncounterCheckTimer -= Settings.General.PlayerWatcherTimerTrigger; } } } //Apply Increment to Timers and Engage Spawners When Appropriate if (playerWatchList[player].SpaceCargoShipTimer <= 0 && NPCWatcher.PendingNPCs.Count == 0) { playerWatchList[player].SpaceCargoShipTimer = rnd.Next(Settings.SpaceCargoShips.MinSpawnTime, Settings.SpaceCargoShips.MaxSpawnTime); Logger.SkipNextMessage = true; Logger.AddMsg("Attempting Space/Lunar Cargo Ship Spawn Near Player: " + player.DisplayName); Logger.SkipNextMessage = true; var spawnResult = SpaceCargoShipSpawner.AttemptSpawn(player.GetPosition()); Logger.AddMsg(spawnResult); } if (playerWatchList[player].AtmoCargoShipTimer <= 0 && NPCWatcher.PendingNPCs.Count == 0) { playerWatchList[player].AtmoCargoShipTimer = rnd.Next(Settings.PlanetaryCargoShips.MinSpawnTime, Settings.PlanetaryCargoShips.MaxSpawnTime); Logger.SkipNextMessage = true; Logger.AddMsg("Attempting Planetary Cargo Ship Spawn Near Player: " + player.DisplayName); Logger.SkipNextMessage = true; var spawnResult = PlanetaryCargoShipSpawner.AttemptSpawn(player.GetPosition()); Logger.AddMsg(spawnResult); } if (playerWatchList[player].RandomEncounterCheckTimer <= 0 && playerWatchList[player].RandomEncounterCoolDownTimer <= 0 && NPCWatcher.PendingNPCs.Count == 0) { playerWatchList[player].RandomEncounterCheckTimer = Settings.RandomEncounters.SpawnTimerTrigger; if (Vector3D.Distance(player.GetPosition(), playerWatchList[player].RandomEncounterDistanceCoordCheck) >= Settings.RandomEncounters.PlayerTravelDistance) { playerWatchList[player].RandomEncounterDistanceCoordCheck = player.GetPosition(); Logger.SkipNextMessage = true; Logger.AddMsg("Attempting Random Encounter Spawn Near Player: " + player.DisplayName); Logger.SkipNextMessage = true; var spawnResult = RandomEncounterSpawner.AttemptSpawn(player.GetPosition()); Logger.AddMsg(spawnResult); if (spawnResult.StartsWith("Spawning Group - ") == true) { playerWatchList[player].RandomEncounterCoolDownTimer = Settings.RandomEncounters.PlayerSpawnCooldown; } } } if (playerWatchList[player].PlanetaryInstallationCheckTimer <= 0 && playerWatchList[player].PlanetaryInstallationCooldownTimer <= 0 && NPCWatcher.PendingNPCs.Count == 0) { playerWatchList[player].PlanetaryInstallationCheckTimer = Settings.PlanetaryInstallations.SpawnTimerTrigger; Logger.SkipNextMessage = true; Logger.AddMsg("Attempting Planetary Installation Spawn Near Player: " + player.DisplayName); Logger.SkipNextMessage = true; var spawnResult = PlanetaryInstallationSpawner.AttemptSpawn(player.GetPosition(), player); Logger.AddMsg(spawnResult); if (spawnResult.StartsWith("Spawning Group - ") == true) { playerWatchList[player].PlanetaryInstallationCooldownTimer = Settings.PlanetaryInstallations.PlayerSpawnCooldown; } } if (playerWatchList[player].BossEncounterCheckTimer <= 0 && NPCWatcher.PendingNPCs.Count == 0) { playerWatchList[player].BossEncounterCheckTimer = Settings.BossEncounters.SpawnTimerTrigger; Logger.SkipNextMessage = true; Logger.AddMsg("Attempting Boss Encounter Spawn Near Player: " + player.DisplayName); Logger.SkipNextMessage = true; var spawnResult = BossEncounterSpawner.AttemptSpawn(player.GetPosition()); Logger.AddMsg(spawnResult); if (spawnResult.StartsWith("Boss Encounter GPS Created") == true) { playerWatchList[player].BossEncounterCooldownTimer = Settings.BossEncounters.PlayerSpawnCooldown; } } } else { var newPlayerWatcher = new PlayerWatcher(); playerWatchList.Add(player, newPlayerWatcher); } } }
//SpawnBossEncounter public static bool SpawnBossEncounter(Vector3D coords, List <string> spawnGroups) { var result = BossEncounterSpawner.AttemptSpawn(coords, spawnGroups); return(result.StartsWith("Boss Encounter GPS Created with Spawngroup")); }
public static string EligibleSpawnGroupsAtPosition(Vector3D coords) { var sb = new StringBuilder(); var validFactions = new Dictionary <string, List <string> >(); //Spawn Data Near Player var selectedSpawnGroup = new ImprovedSpawnGroup(); SpawnResources.RefreshEntityLists(); SpawnResources.LastThreatRefresh = SpawnResources.GameStartTime; var threatLevel = SpawnResources.GetThreatLevel(selectedSpawnGroup, coords); var pcuLevel = SpawnResources.GetPCULevel(selectedSpawnGroup, coords); sb.Append("::: Spawn Data Near Player :::").AppendLine(); sb.Append(" - Threat Score: ").Append(threatLevel.ToString()).AppendLine(); sb.Append(" - PCU Score: ").Append(pcuLevel.ToString()).AppendLine(); sb.AppendLine(); //Environment Data Near Player var environment = new EnvironmentEvaluation(coords); sb.Append("::: Environment Data Near Player :::").AppendLine(); sb.Append(" - Distance From World Center: ").Append(environment.DistanceFromWorldCenter.ToString()).AppendLine(); sb.Append(" - Direction From World Center: ").Append(environment.DirectionFromWorldCenter.ToString()).AppendLine(); sb.Append(" - Is On Planet: ").Append(environment.IsOnPlanet.ToString()).AppendLine(); sb.Append(" - Planet Name: ").Append(environment.IsOnPlanet ? environment.NearestPlanetName : "N/A").AppendLine(); sb.Append(" - Planet Diameter: ").Append(environment.IsOnPlanet ? environment.PlanetDiameter.ToString() : "N/A").AppendLine(); sb.Append(" - Oxygen At Position: ").Append(environment.IsOnPlanet ? environment.OxygenAtPosition.ToString() : "N/A").AppendLine(); sb.Append(" - Atmosphere At Position: ").Append(environment.IsOnPlanet ? environment.AtmosphereAtPosition.ToString() : "N/A").AppendLine(); sb.Append(" - Gravity At Position: ").Append(environment.IsOnPlanet ? environment.GravityAtPosition.ToString() : "N/A").AppendLine(); sb.Append(" - Altitude At Position: ").Append(environment.IsOnPlanet ? environment.AltitudeAtPosition.ToString() : "N/A").AppendLine(); sb.Append(" - Is Night At Position: ").Append(environment.IsOnPlanet ? environment.IsNight.ToString() : "N/A").AppendLine(); sb.Append(" - Weather At Position: ").Append(environment.IsOnPlanet && !string.IsNullOrWhiteSpace(environment.WeatherAtPosition) ? environment.WeatherAtPosition.ToString() : "N/A").AppendLine(); sb.Append(" - Common Terrain At Position: ").Append(environment.IsOnPlanet ? environment.CommonTerrainAtPosition.ToString() : "N/A").AppendLine(); sb.AppendLine(); //Space Cargo Ship sb.Append("::: Space / Lunar Cargo Ship Eligible Spawns :::").AppendLine(); var spaceCargoList = SpaceCargoShipSpawner.GetSpaceCargoShips(coords, null, out validFactions); foreach (var sgroup in spaceCargoList.Distinct().ToList()) { sb.Append(" - ").Append(sgroup.SpawnGroupName).AppendLine(); } sb.AppendLine(); //Random Encounter sb.Append("::: Random Encounter Eligible Spawns :::").AppendLine().AppendLine(); var randEncounterList = RandomEncounterSpawner.GetRandomEncounters(coords, null, out validFactions); foreach (var sgroup in randEncounterList.Distinct().ToList()) { sb.Append(" - ").Append(sgroup.SpawnGroupName).AppendLine(); } sb.AppendLine(); //Planetary Cargo Ship sb.Append("::: Planetary Cargo Ship Eligible Spawns :::").AppendLine().AppendLine(); var planetCargoList = PlanetaryCargoShipSpawner.GetPlanetaryCargoShips(coords, null, out validFactions); foreach (var sgroup in planetCargoList.Distinct().ToList()) { sb.Append(" - ").Append(sgroup.SpawnGroupName).AppendLine(); } sb.AppendLine(); //Planetary Installation sb.Append("::: Planetary Installation Eligible Spawns :::").AppendLine().AppendLine(); var smallList = new List <ImprovedSpawnGroup>(); var mediumList = new List <ImprovedSpawnGroup>(); var largeList = new List <ImprovedSpawnGroup>(); var planetStationList = PlanetaryInstallationSpawner.GetPlanetaryInstallations(coords, null, out smallList, out mediumList, out largeList, out validFactions); foreach (var sgroup in planetStationList.Distinct().ToList()) { sb.Append(" - ").Append(sgroup.SpawnGroupName).AppendLine(); } sb.AppendLine(); //Boss Encounter sb.Append("::: Boss Encounter Eligible Spawns :::").AppendLine().AppendLine(); var spawnCoords = Vector3D.Zero; if (BossEncounterSpawner.GetInitialSpawnCoords(coords, out spawnCoords) == true) { var bossList = BossEncounterSpawner.GetBossEncounters(coords, spawnCoords, null); foreach (var sgroup in bossList.Distinct().ToList()) { sb.Append(" - ").Append(sgroup.SpawnGroupName).AppendLine(); } } return(sb.ToString()); }
public static string EligibleSpawnGroupsAtPosition(Vector3D coords) { var sb = new StringBuilder(); var validFactions = new Dictionary <string, List <string> >(); //Space Cargo Ship sb.Append("::: Space / Lunar Cargo Ship Eligible Spawns :::").AppendLine(); var spaceCargoList = SpaceCargoShipSpawner.GetSpaceCargoShips(coords, out validFactions); foreach (var sgroup in spaceCargoList.Distinct().ToList()) { sb.Append(" - ").Append(sgroup.SpawnGroupName).AppendLine(); } sb.AppendLine(); //Random Encounter sb.Append("::: Random Encounter Eligible Spawns :::").AppendLine().AppendLine(); var randEncounterList = RandomEncounterSpawner.GetRandomEncounters(coords, out validFactions); foreach (var sgroup in randEncounterList.Distinct().ToList()) { sb.Append(" - ").Append(sgroup.SpawnGroupName).AppendLine(); } sb.AppendLine(); //Planetary Cargo Ship sb.Append("::: Planetary Cargo Ship Eligible Spawns :::").AppendLine().AppendLine(); var planetCargoList = PlanetaryCargoShipSpawner.GetPlanetaryCargoShips(coords, out validFactions); foreach (var sgroup in planetCargoList.Distinct().ToList()) { sb.Append(" - ").Append(sgroup.SpawnGroupName).AppendLine(); } sb.AppendLine(); //Planetary Installation sb.Append("::: Planetary Installation Eligible Spawns :::").AppendLine().AppendLine(); var smallList = new List <ImprovedSpawnGroup>(); var mediumList = new List <ImprovedSpawnGroup>(); var largeList = new List <ImprovedSpawnGroup>(); var planetStationList = PlanetaryInstallationSpawner.GetPlanetaryInstallations(coords, out smallList, out mediumList, out largeList, out validFactions); foreach (var sgroup in planetStationList.Distinct().ToList()) { sb.Append(" - ").Append(sgroup.SpawnGroupName).AppendLine(); } sb.AppendLine(); //Boss Encounter sb.Append("::: Boss Encounter Eligible Spawns :::").AppendLine().AppendLine(); var spawnCoords = Vector3D.Zero; if (BossEncounterSpawner.GetInitialSpawnCoords(coords, out spawnCoords) == true) { var bossList = BossEncounterSpawner.GetBossEncounters(coords, spawnCoords); foreach (var sgroup in bossList.Distinct().ToList()) { sb.Append(" - ").Append(sgroup.SpawnGroupName).AppendLine(); } } return(sb.ToString()); }
public static void ServerChatProcessing(SyncData receivedData) { if (receivedData.ChatMessage.StartsWith("/MES.SSCS") == true) { receivedData.ChatMessage = receivedData.ChatMessage.Replace("/MES.SSCS", "/MES.Spawn.SpaceCargoShip"); } if (receivedData.ChatMessage.StartsWith("/MES.SRE") == true) { receivedData.ChatMessage = receivedData.ChatMessage.Replace("/MES.SRE", "/MES.Spawn.RandomEncounter"); } if (receivedData.ChatMessage.StartsWith("/MES.SPCS") == true) { receivedData.ChatMessage = receivedData.ChatMessage.Replace("/MES.SPCS", "/MES.Spawn.PlanetaryCargoShip"); } if (receivedData.ChatMessage.StartsWith("/MES.SPI") == true) { receivedData.ChatMessage = receivedData.ChatMessage.Replace("/MES.SPI", "/MES.Spawn.PlanetaryInstallation"); } if (receivedData.ChatMessage.StartsWith("/MES.SBE") == true) { receivedData.ChatMessage = receivedData.ChatMessage.Replace("/MES.SBE", "/MES.Spawn.BossEncounter"); } //Debug Commands if (receivedData.ChatMessage.StartsWith("/MES.") == true) { //Enable Debug Mode if (receivedData.ChatMessage.StartsWith("/MES.EnableDebugMode.") == true) { var msgSplit = receivedData.ChatMessage.Split('.'); if (msgSplit.Length != 3) { MyVisualScriptLogicProvider.ShowNotification("Invalid Command Received", 5000, "White", receivedData.PlayerId); return; } bool mode = false; if (bool.TryParse(msgSplit[2], out mode) == false) { MyVisualScriptLogicProvider.ShowNotification("Invalid Command Received", 5000, "White", receivedData.PlayerId); return; } Logger.LoggerDebugMode = mode; MyVisualScriptLogicProvider.ShowNotification("Debug Mode Enabled: " + mode.ToString(), 5000, "White", receivedData.PlayerId); return; } //Debug: InitStoreBlocks if (receivedData.ChatMessage.StartsWith("/MES.Debug.InitStoreBlocks") == true) { Debug.InitStoreBlocks(); } if (receivedData.ChatMessage.StartsWith("/MES.Debug.Reputation.") == true) { Debug.ReputationCheck(receivedData); } if (receivedData.ChatMessage.StartsWith("/MES.Debug.MoreEcMad") == true) { var player = SpawnResources.GetPlayerById(receivedData.PlayerId); if (player != null) { foreach (var faction in MyAPIGateway.Session.Factions.Factions.Keys) { var npcFaction = MyAPIGateway.Session.Factions.Factions[faction]; MyAPIGateway.Session.Factions.SetReputationBetweenPlayerAndFaction(player.IdentityId, npcFaction.FactionId, -501); } } } if (receivedData.ChatMessage.StartsWith("/MES.Debug.MoreEcHostile") == true) { var player = SpawnResources.GetPlayerById(receivedData.PlayerId); if (player != null) { foreach (var faction in MyAPIGateway.Session.Factions.Factions.Keys) { var npcFaction = MyAPIGateway.Session.Factions.Factions[faction]; MyAPIGateway.Session.Factions.SetReputationBetweenPlayerAndFaction(player.IdentityId, npcFaction.FactionId, -1500); } } } if (receivedData.ChatMessage.StartsWith("/MES.Debug.MoreEcNeutral") == true) { var player = SpawnResources.GetPlayerById(receivedData.PlayerId); if (player != null) { foreach (var faction in MyAPIGateway.Session.Factions.Factions.Keys) { var npcFaction = MyAPIGateway.Session.Factions.Factions[faction]; MyAPIGateway.Session.Factions.SetReputationBetweenPlayerAndFaction(player.IdentityId, npcFaction.FactionId, 0); } } } //Debug.CheckNight if (receivedData.ChatMessage.StartsWith("/MES.Debug.CheckNight") == true) { MyVisualScriptLogicProvider.ShowNotification("Is Night: " + SpawnResources.IsNight(MyAPIGateway.Session.LocalHumanPlayer.GetPosition()).ToString(), 5000, "White", receivedData.PlayerId); MyVisualScriptLogicProvider.ShowNotification("Time: " + MyAPIGateway.Session.GameDateTime.ToString(), 5000, "White", receivedData.PlayerId); var gameTime = MyAPIGateway.Session.GameDateTime - new DateTime(2081, 1, 1, 0, 0, 0, DateTimeKind.Utc); MyVisualScriptLogicProvider.ShowNotification("Seconds: " + gameTime.TotalSeconds.ToString(), 5000, "White", receivedData.PlayerId); } //Debug.CheckRemovalStatus if (receivedData.ChatMessage.StartsWith("/MES.Debug.CheckRemovalStatus") == true) { MyVisualScriptLogicProvider.ShowNotification("Number Of Pending Deletions: " + NPCWatcher.DeleteGridList.Count.ToString(), 5000, "White", receivedData.PlayerId); MyVisualScriptLogicProvider.ShowNotification("Deletion Process Status: " + NPCWatcher.DeleteGrids.ToString(), 5000, "White", receivedData.PlayerId); } //Debug.Debug.CreateKPL if (receivedData.ChatMessage.StartsWith("/MES.Debug.CreateKPL") == true) { KnownPlayerLocationManager.AddKnownPlayerLocation(MyAPIGateway.Session.LocalHumanPlayer.GetPosition(), "SPRT", 200, 1, -1); } //Joke: ComeAtMeBro if (receivedData.ChatMessage.StartsWith("/MES.ComeAtMeBro") == true) { var playerList = new List <IMyPlayer>(); MyAPIGateway.Players.GetPlayers(playerList); IMyPlayer thisPlayer = null; foreach (var player in playerList) { if (player.IdentityId == receivedData.PlayerId) { thisPlayer = player; break; } } if (thisPlayer == null) { return; } int bros = 0; foreach (var cubeGrid in NPCWatcher.ActiveNPCs.Keys.ToList()) { if (cubeGrid == null || MyAPIGateway.Entities.Exist(cubeGrid) == false) { continue; } if (cubeGrid.Physics == null) { continue; } if (NPCWatcher.ActiveNPCs[cubeGrid].SpawnType == "SpaceCargoShip") { cubeGrid.Physics.LinearVelocity = Vector3D.Normalize(thisPlayer.GetPosition() - cubeGrid.GetPosition()) * 100; bros++; } } MyVisualScriptLogicProvider.ShowNotification(bros.ToString() + " Bros Coming At You!", 5000, "Red", thisPlayer.IdentityId); } //RemoveAllNPCs if (receivedData.ChatMessage.StartsWith("/MES.RemoveAllNPCs") == true) { foreach (var cubeGrid in NPCWatcher.ActiveNPCs.Keys.ToList()) { if (cubeGrid == null || MyAPIGateway.Entities.Exist(cubeGrid) == false) { continue; } if (cubeGrid.Physics == null) { continue; } if (NPCWatcher.ActiveNPCs[cubeGrid].CleanupIgnore == false) { NPCWatcher.ActiveNPCs[cubeGrid].FlagForDespawn = true; } } MyVisualScriptLogicProvider.ShowNotification("All Eligible NPC Grids Processed For Removal", 5000, "White", receivedData.PlayerId); } //Settings if (receivedData.ChatMessage.StartsWith("/MES.Settings.") == true) { var result = SettingsEditor.EditSettings(receivedData.ChatMessage); MyVisualScriptLogicProvider.ShowNotification(result, 5000, "White", receivedData.PlayerId); return; } //TryRandomSpawn if (receivedData.ChatMessage.StartsWith("/MES.Spawn.") == true) { var playerList = new List <IMyPlayer>(); MyAPIGateway.Players.GetPlayers(playerList); IMyPlayer thisPlayer = null; foreach (var player in playerList) { if (player.IdentityId == receivedData.PlayerId) { thisPlayer = player; break; } } if (thisPlayer == null) { MyVisualScriptLogicProvider.ShowNotification("Could Not Spawn Encounter: Player Not In Watch List", 5000, "White", receivedData.PlayerId); return; } bool success = false; if (receivedData.ChatMessage.Contains("SpaceCargoShip") == true || receivedData.ChatMessage.Contains("AllSpawns") == true) { if (MES_SessionCore.playerWatchList.ContainsKey(thisPlayer) == true) { SpawnGroupManager.AdminSpawnGroup = SpecificSpawnGroupRequest(receivedData.ChatMessage, "SpaceCargoShip"); MES_SessionCore.PlayerWatcherTimer = 0; MES_SessionCore.playerWatchList[thisPlayer].SpaceCargoShipTimer = 0; MyVisualScriptLogicProvider.ShowNotification("Attempting Random Spawn: Space Cargo Ship", 5000, "White", receivedData.PlayerId); success = true; } } if (receivedData.ChatMessage.Contains("PlanetaryCargoShip") == true) { if (MES_SessionCore.playerWatchList.ContainsKey(thisPlayer) == true) { SpawnGroupManager.AdminSpawnGroup = SpecificSpawnGroupRequest(receivedData.ChatMessage, "PlanetaryCargoShip"); MES_SessionCore.playerWatchList[thisPlayer].AtmoCargoShipTimer = 0; MES_SessionCore.PlayerWatcherTimer = 0; MyVisualScriptLogicProvider.ShowNotification("Attempting Random Spawn: Planetary Cargo Ship", 5000, "White", receivedData.PlayerId); success = true; } } if (receivedData.ChatMessage.Contains("RandomEncounter") == true) { if (MES_SessionCore.playerWatchList.ContainsKey(thisPlayer) == true) { SpawnGroupManager.AdminSpawnGroup = SpecificSpawnGroupRequest(receivedData.ChatMessage, "RandomEncounter"); MES_SessionCore.PlayerWatcherTimer = 0; MES_SessionCore.playerWatchList[thisPlayer].RandomEncounterCheckTimer = 0; MES_SessionCore.playerWatchList[thisPlayer].RandomEncounterCoolDownTimer = 0; var fakeDistance = Settings.RandomEncounters.PlayerTravelDistance + 1000; MES_SessionCore.playerWatchList[thisPlayer].RandomEncounterDistanceCoordCheck = fakeDistance * Vector3D.Up + thisPlayer.GetPosition(); MyVisualScriptLogicProvider.ShowNotification("Attempting Random Spawn: Random Encounter", 5000, "White", receivedData.PlayerId); success = true; } } if (receivedData.ChatMessage.Contains("PlanetaryInstallation") == true) { if (MES_SessionCore.playerWatchList.ContainsKey(thisPlayer) == true) { SpawnGroupManager.AdminSpawnGroup = SpecificSpawnGroupRequest(receivedData.ChatMessage, "PlanetaryInstallation"); MES_SessionCore.PlayerWatcherTimer = 0; MES_SessionCore.playerWatchList[thisPlayer].PlanetaryInstallationCheckTimer = 0; MES_SessionCore.playerWatchList[thisPlayer].PlanetaryInstallationCooldownTimer = 0; var fakeDistance = Settings.PlanetaryInstallations.PlayerDistanceSpawnTrigger + 1000; var randomDir = SpawnResources.GetRandomCompassDirection(thisPlayer.GetPosition(), SpawnResources.GetNearestPlanet(thisPlayer.GetPosition())); MES_SessionCore.playerWatchList[thisPlayer].InstallationDistanceCoordCheck = fakeDistance * randomDir + thisPlayer.GetPosition(); MyVisualScriptLogicProvider.ShowNotification("Attempting Random Spawn: Planetary Installation", 5000, "White", receivedData.PlayerId); success = true; } } if (receivedData.ChatMessage.Contains("BossEncounter") == true) { if (BossEncounterSpawner.IsPlayerInBossEncounter(thisPlayer.IdentityId) == true) { MyVisualScriptLogicProvider.ShowNotification("Boss Encounter Already Active", 5000, "White", receivedData.PlayerId); } if (MES_SessionCore.playerWatchList.ContainsKey(thisPlayer) == true) { SpawnGroupManager.AdminSpawnGroup = SpecificSpawnGroupRequest(receivedData.ChatMessage, "BossEncounter"); MES_SessionCore.PlayerWatcherTimer = 0; MES_SessionCore.playerWatchList[thisPlayer].BossEncounterCooldownTimer = 0; MES_SessionCore.playerWatchList[thisPlayer].BossEncounterCheckTimer = 0; MyVisualScriptLogicProvider.ShowNotification("Attempting Random Spawn: Boss Encounter", 5000, "White", receivedData.PlayerId); success = true; } } if (success == false) { MyVisualScriptLogicProvider.ShowNotification("Could Not Spawn Encounter: Player Not In Watch List", 5000, "White", receivedData.PlayerId); } return; } //WaveSpawner if (receivedData.ChatMessage.StartsWith("/MES.WaveSpawner.") == true) { bool success = false; if (receivedData.ChatMessage.Contains("SpaceCargoShip") == true && Settings.SpaceCargoShips.EnableWaveSpawner == true) { MyVisualScriptLogicProvider.ShowNotification("Wave Spawner (Space Cargo Ship) Activated.", 5000, "White", receivedData.PlayerId); MES_SessionCore.SpaceCargoShipWaveSpawner.CurrentWaveTimer = Settings.SpaceCargoShips.MaxWaveSpawnTime; success = true; } if (success == false) { MyVisualScriptLogicProvider.ShowNotification("Wave Spawner Could Not Be Triggered. Please Enable In Configuration.", 5000, "White", receivedData.PlayerId); } } //Enable Territory if (receivedData.ChatMessage.StartsWith("/MES.EnableTerritory.") == true) { var messageReplace = receivedData.ChatMessage.Replace("/MES.EnableTerritory.", ""); if (messageReplace == "") { MyVisualScriptLogicProvider.ShowNotification("Invalid Command Received: No Territory Name Provided", 5000, "White", receivedData.PlayerId); return; } MyAPIGateway.Utilities.SetVariable <bool>("MES-Territory-" + messageReplace, true); TerritoryManager.TerritoryRefresh(); MyVisualScriptLogicProvider.ShowNotification("Territory Enabled: " + messageReplace, 5000, "White", receivedData.PlayerId); return; } //Disable Territory if (receivedData.ChatMessage.StartsWith("/MES.DisableTerritory.") == true) { var messageReplace = receivedData.ChatMessage.Replace("/MES.DisableTerritory.", ""); if (messageReplace == "") { MyVisualScriptLogicProvider.ShowNotification("Invalid Command Received: No Territory Name Provided", 5000, "White", receivedData.PlayerId); return; } MyAPIGateway.Utilities.SetVariable <bool>("MES-Territory-" + messageReplace, false); TerritoryManager.TerritoryRefresh(); MyVisualScriptLogicProvider.ShowNotification("Territory Disabled: " + messageReplace, 5000, "White", receivedData.PlayerId); return; } //Get SpawnGroups if (receivedData.ChatMessage.StartsWith("/MES.GetSpawnGroups") == true) { var syncData = receivedData; syncData.Instruction = "MESClipboard"; syncData.ClipboardContents = Logger.SpawnGroupResults(); var sendData = MyAPIGateway.Utilities.SerializeToBinary <SyncData>(syncData); bool sendStatus = MyAPIGateway.Multiplayer.SendMessageTo(8877, sendData, receivedData.SteamUserId); MyVisualScriptLogicProvider.ShowNotification("Spawn Group Data To Clipboard. Success: " + sendStatus.ToString(), 5000, "White", receivedData.PlayerId); return; } //Get Active NPCs if (receivedData.ChatMessage.StartsWith("/MES.GetActiveNPCs") == true) { var syncData = receivedData; syncData.Instruction = "MESClipboard"; syncData.ClipboardContents = Logger.GetActiveNPCs(); var sendData = MyAPIGateway.Utilities.SerializeToBinary <SyncData>(syncData); bool sendStatus = MyAPIGateway.Multiplayer.SendMessageTo(8877, sendData, receivedData.SteamUserId); MyVisualScriptLogicProvider.ShowNotification("Active NPC Data To Clipboard. Success: " + sendStatus.ToString(), 5000, "White", receivedData.PlayerId); return; } //Get Block Definition Info if (receivedData.ChatMessage.StartsWith("/MES.GetBlockDefinitions") == true) { var syncData = receivedData; syncData.Instruction = "MESClipboard"; syncData.ClipboardContents = Logger.GetBlockDefinitionInfo(); var sendData = MyAPIGateway.Utilities.SerializeToBinary <SyncData>(syncData); bool sendStatus = MyAPIGateway.Multiplayer.SendMessageTo(8877, sendData, receivedData.SteamUserId); MyVisualScriptLogicProvider.ShowNotification("Block Data To Clipboard. Success: " + sendStatus.ToString(), 5000, "White", receivedData.PlayerId); return; } //Get Block Definition Info if (receivedData.ChatMessage.StartsWith("/MES.GetColorsFromGrid") == true) { var syncData = receivedData; syncData.Instruction = "MESClipboard"; syncData.ClipboardContents = Logger.GetColorListFromGrid(SpawnResources.GetPlayerById(syncData.PlayerId)); var sendData = MyAPIGateway.Utilities.SerializeToBinary <SyncData>(syncData); bool sendStatus = MyAPIGateway.Multiplayer.SendMessageTo(8877, sendData, receivedData.SteamUserId); return; } //Get Player Watch Lists if (receivedData.ChatMessage.StartsWith("/MES.GetPlayerWatchList") == true) { var syncData = receivedData; syncData.Instruction = "MESClipboard"; syncData.ClipboardContents = Logger.GetPlayerWatcherData(); var sendData = MyAPIGateway.Utilities.SerializeToBinary <SyncData>(syncData); bool sendStatus = MyAPIGateway.Multiplayer.SendMessageTo(8877, sendData, receivedData.SteamUserId); MyVisualScriptLogicProvider.ShowNotification("Player Watch Data To Clipboard. Success: " + sendStatus.ToString(), 5000, "White", receivedData.PlayerId); return; } //Get Local Threat Score if (receivedData.ChatMessage.StartsWith("/MES.GetThreatScore") == true || receivedData.ChatMessage.StartsWith("/MES.GTS") == true) { var messageReplace = receivedData.ChatMessage.Replace("/MES.GetThreatScore.", ""); ImprovedSpawnGroup selectedSpawnGroup = null; if (messageReplace == "") { MyVisualScriptLogicProvider.ShowNotification("Default Threat Check Range Of 5000 Used. Spawngroup Not Provided or Detected.", 5000, "White", receivedData.PlayerId); //return; selectedSpawnGroup = new ImprovedSpawnGroup(); } var playerList = new List <IMyPlayer>(); MyAPIGateway.Players.GetPlayers(playerList); IMyPlayer thisPlayer = null; foreach (var player in playerList) { if (player.IdentityId == receivedData.PlayerId) { thisPlayer = player; break; } } if (thisPlayer == null) { MyVisualScriptLogicProvider.ShowNotification("Command Failed: Apparently you don't exist?", 5000, "White", receivedData.PlayerId); return; } if (selectedSpawnGroup == null) { foreach (var spawnGroup in SpawnGroupManager.SpawnGroups) { if (spawnGroup.SpawnGroup.Id.SubtypeName == messageReplace) { selectedSpawnGroup = spawnGroup; break; } } } if (selectedSpawnGroup == null) { MyVisualScriptLogicProvider.ShowNotification("Default Threat Check Range Of 5000 Used. Spawngroup Not Provided or Detected.", 5000, "White", receivedData.PlayerId); //return; selectedSpawnGroup = new ImprovedSpawnGroup(); } SpawnResources.RefreshEntityLists(); SpawnResources.LastThreatRefresh = SpawnResources.GameStartTime; var threatLevel = SpawnResources.GetThreatLevel(selectedSpawnGroup, thisPlayer.GetPosition()); MyVisualScriptLogicProvider.ShowNotification("Threat Level Score Near You: " + threatLevel.ToString(), 5000, "White", receivedData.PlayerId); return; } //Reset Active Territories if (receivedData.ChatMessage.StartsWith("/MES.ResetActiveTerritories") == true) { TerritoryManager.TerritoryRefresh(true); var syncData = receivedData; syncData.Instruction = "MESResetActiveTerritories"; var sendData = MyAPIGateway.Utilities.SerializeToBinary <SyncData>(syncData); bool sendStatus = MyAPIGateway.Multiplayer.SendMessageTo(8877, sendData, receivedData.SteamUserId); MyVisualScriptLogicProvider.ShowNotification("Active Territories Reset To Default Values.", 5000, "White", receivedData.PlayerId); return; } //Get Spawned Unique Encounters if (receivedData.ChatMessage.StartsWith("/MES.GetSpawnedUniqueEncounters") == true) { var syncData = receivedData; syncData.Instruction = "MESClipboard"; syncData.ClipboardContents = Logger.GetSpawnedUniqueEncounters(); var sendData = MyAPIGateway.Utilities.SerializeToBinary <SyncData>(syncData); bool sendStatus = MyAPIGateway.Multiplayer.SendMessageTo(8877, sendData, receivedData.SteamUserId); MyVisualScriptLogicProvider.ShowNotification("Spawned Unique Encounters List Sent To Clipboard. Success: " + sendStatus.ToString(), 5000, "White", receivedData.PlayerId); return; } //Get Spawn Group Eligibility At Position if (receivedData.ChatMessage.StartsWith("/MES.GetEligibleSpawnsAtPosition") == true || receivedData.ChatMessage.StartsWith("/MES.GESAP") == true) { var syncData = receivedData; syncData.Instruction = "MESClipboard"; syncData.ClipboardContents = Logger.EligibleSpawnGroupsAtPosition(receivedData.PlayerPosition); var sendData = MyAPIGateway.Utilities.SerializeToBinary <SyncData>(syncData); bool sendStatus = MyAPIGateway.Multiplayer.SendMessageTo(8877, sendData, receivedData.SteamUserId); MyVisualScriptLogicProvider.ShowNotification("List of Eligible Spawn Groups At Position Sent To Clipboard. Success: " + sendStatus.ToString(), 5000, "White", receivedData.PlayerId); return; } //Get Planet Direction At Position if (receivedData.ChatMessage.StartsWith("/MES.GetDirectionFromPlanetCore") == true) { var syncData = receivedData; syncData.Instruction = "MESClipboard"; var planet = SpawnResources.GetNearestPlanet(receivedData.PlayerPosition); if (planet != null) { var planetEntity = planet as IMyEntity; var dir = Vector3D.Normalize(receivedData.PlayerPosition - planetEntity.GetPosition()); var sb = new StringBuilder(); sb.Append("Direction Vector For ").Append(planet.Generator.Id.SubtypeName).Append(" At Position ").Append(planetEntity.GetPosition().ToString()).AppendLine(); sb.Append("X: ").Append(dir.X.ToString()).AppendLine(); sb.Append("Y: ").Append(dir.Y.ToString()).AppendLine(); sb.Append("Z: ").Append(dir.Z.ToString()).AppendLine(); syncData.ClipboardContents = sb.ToString(); } else { syncData.ClipboardContents = "No Planets In Game World."; } var sendData = MyAPIGateway.Utilities.SerializeToBinary <SyncData>(syncData); bool sendStatus = MyAPIGateway.Multiplayer.SendMessageTo(8877, sendData, receivedData.SteamUserId); MyVisualScriptLogicProvider.ShowNotification("Direction From Planet Core Values Sent To Clipboard. Success: " + sendStatus.ToString(), 5000, "White", receivedData.PlayerId); return; } } //Settings Commands }