internal void InitResearchRestrictions() { // 1.194 MySectorWeatherComponent wc; // WeatherType wt; if (bNewResearch) { MyVisualScriptLogicProvider.ResearchListClear(); MyVisualScriptLogicProvider.ResearchListWhitelist(false); // set it to be 'black list' } // TODO: Figure out how to disable game-based progression tree... // A: you can't. combo of editting researchgroups.sbc and MOD API // MyVisualScriptLogicProvider.BlockFunctionalityChanged += FunctionalityChanged; NeedsResearch(refinery, TechGroup.Permabanned); NeedsResearch(blastFurnace, TechGroup.Permabanned); NeedsResearch(blastFurnace, TechGroup.Permabanned); NeedsResearch(jumpDrive, TechGroup.Permabanned); NeedsResearch(projectorLarge, TechGroup.Permabanned); NeedsResearch(projectorSmall, TechGroup.Permabanned); NeedsResearch(largeMissileTurret, TechGroup.Rockets); NeedsResearch(smallMissileTurret, TechGroup.Rockets); NeedsResearch(rocketLauncher, TechGroup.Rockets); NeedsResearch(largeRocketLauncher, TechGroup.Rockets); NeedsResearch(smallReloadableRocketLauncher, TechGroup.Rockets); NeedsResearch(ionThrusterSmallShipSmall, TechGroup.Permabanned); NeedsResearch(ionThrusterSmallShipLarge, TechGroup.Permabanned); NeedsResearch(ionThrusterLargeShipSmall, TechGroup.Permabanned); NeedsResearch(ionThrusterLargeShipLarge, TechGroup.Permabanned); NeedsResearch(hydroThrusterSmallShipSmall, TechGroup.Permabanned); NeedsResearch(hydroThrusterSmallShipLarge, TechGroup.Permabanned); NeedsResearch(hydroThrusterLargeShipSmall, TechGroup.Permabanned); NeedsResearch(hydroThrusterLargeShipLarge, TechGroup.Permabanned); NeedsResearch(atmoThrusterSmallShipSmall, TechGroup.AtmosphericEngines); NeedsResearch(atmoThrusterSmallShipLarge, TechGroup.AtmosphericEngines); NeedsResearch(atmoThrusterLargeShipSmall, TechGroup.AtmosphericEngines); NeedsResearch(atmoThrusterLargeShipLarge, TechGroup.AtmosphericEngines); NeedsResearch(oxygenFarm, TechGroup.OxygenFarm); NeedsResearch(oxygenGeneratorLarge, TechGroup.OxygenGenerators); NeedsResearch(oxygenGeneratorSmall, TechGroup.OxygenGenerators); NeedsResearch(oxygenTankLarge, TechGroup.GasStorage); NeedsResearch(oxygenTankSmall, TechGroup.GasStorage); NeedsResearch(hydrogenTankLarge, TechGroup.GasStorage); NeedsResearch(hydrogenTankSmall, TechGroup.GasStorage); //SE 1.194 V33 NeedsResearch(LargeHydrogenTankSmall, TechGroup.GasStorage); NeedsResearch(SmallHydrogenTankSmall, TechGroup.GasStorage); NeedsResearch(EngineLarge, TechGroup.GasStorage); NeedsResearch(EngineSmall, TechGroup.GasStorage); NeedsResearch(WindTurbineLarge, TechGroup.AtmosphericEngines); NeedsResearch(SmallGatlingTurret, TechGroup.BasicWeapons); NeedsResearch(SmallRocketLauncherReload, TechGroup.BasicWeapons); NeedsResearch(InteriorTurret, TechGroup.BasicWeapons); NeedsResearch(LargeGatlingTurret, TechGroup.BasicWeapons); // NeedsResearch(largeMissileTurret, TechGroup.BasicWeapons); // NeedsResearch(smallMissileTurret, TechGroup.BasicWeapons); NeedsResearch(SkLarge, TechGroup.Permabanned); NeedsResearch(SkSmall, TechGroup.Permabanned); NeedsResearch(BasicAssembler, TechGroup.Permabanned); var gameVersion = MyAPIGateway.Session.Version; // V26. For SE 1.192 if ((gameVersion.Major == 1 && gameVersion.Minor >= 192) || gameVersion.Major > 1) { NeedsResearch(SafeZoneBlock, TechGroup.Permabanned); NeedsResearch(StoreBlock, TechGroup.Permabanned); NeedsResearch(ContractBlock, TechGroup.Permabanned); // V27 SE 1.192 Economy DLC NeedsResearch(VendingMachine, TechGroup.Permabanned); NeedsResearch(AtmBlock, TechGroup.Permabanned); } // For SE 1.193 if ((gameVersion.Major == 1 && gameVersion.Minor >= 193) || gameVersion.Major > 1) { NeedsResearch(FoodDispenser, TechGroup.Permabanned); } }
public override bool Initialize(out MyUpdateOrder order) { order = MyUpdateOrder.NoUpdate; if (NetworkHandlerSystem.IsClient) { if (MyAPIGateway.Session.Player == null) { return(false); } } /* Handle Server side */ if (NetworkHandlerSystem.IsServer) { /* LOAD World Settings */ try { using (var sw = MyAPIGateway.Utilities.ReadFileInWorldStorage(Settings.configFile, typeof(Core))) settings.Load(MyAPIGateway.Utilities.SerializeFromXML <SettingsFile>(sw.ReadToEnd())); } catch (Exception e) { if (e.HResult == -2147024894) // Unable to find the specified file. { settings = settings.CreateDefaults(); } else { MyLog.Default.WriteLine($"Possible Old Settings: {e.Message}"); MyLog.Default.WriteLine($"Possible Old SettingsStack: {e.StackTrace}"); MyLog.Default.Flush(); SettingsFile possibleOldSettings = new SettingsFile(); try { using (var sw = MyAPIGateway.Utilities.ReadFileInWorldStorage(Settings.configFile, typeof(Core))) possibleOldSettings = (SettingsFile)MyAPIGateway.Utilities.SerializeFromXML <Settings>(sw.ReadToEnd()); using (var sw = MyAPIGateway.Utilities.WriteFileInWorldStorage("config.xml.old", typeof(Core))) sw.Write(MyAPIGateway.Utilities.SerializeToXML(possibleOldSettings)); /* Create Defaults then Load and Save Old Settings file */ settings = settings.CreateDefaults(); settings.Load(possibleOldSettings); MyLog.Default.WriteLine("Successfully Loaded Old World Settings:"); } catch (Exception e1) { MyLog.Default.WriteLine($"ERROR Get World Settings: {e1.Message}"); MyLog.Default.WriteLine($"ERROR Get World SettingsStack: {e1.StackTrace}"); MyLog.Default.Flush(); settings = settings.CreateDefaults(); } } } /* Save after loading to add new default settings just incase we added more */ settings.SaveSettings(true); try { var cfg = MyAPIGateway.Utilities.ConfigDedicated; cfg.Load(); ulong steamId; foreach (string id in cfg.Administrators) { if (ulong.TryParse(id, out steamId)) { unlockAllPlayers.Add(steamId, true); MyLog.Default.WriteLine($"Admin Found {steamId}"); } } if (unlockAllPlayers.Count() == 0) { MyLog.Default.WriteLine($"No Admins"); } } catch (Exception e) { MyLog.Default.WriteLine($"Failed to load Server cfg file: {e.Message}"); MyLog.Default.Flush(); } if (settings.AlwaysUnlocked == null) { settings.AlwaysUnlocked = new HashSet <SerializableDefinitionId>(); } MyAPIGateway.Session.DamageSystem.RegisterDestroyHandler(0, DestroyHandler); MyVisualScriptLogicProvider.PlayerResearchClearAll(); PrepareCache(); } /* Setup Client and Server wide communication*/ try { PlayerInit = nhs.Create <long>(null, PlayerJoined, EventOptions.OnlyToServer); SendUnlockNotification = nhs.Create <MyDefinitionId, string, string>(LearnedById, null, EventOptions.OnlyToTarget); } catch (Exception e) { MyLog.Default.WriteLine($"Network Notifications ERROR: {e.StackTrace}"); MyLog.Default.Flush(); } if (NetworkHandlerSystem.IsClient) { try { MyVisualScriptLogicProvider.ResearchListWhitelist(true); MyVisualScriptLogicProvider.PlayerResearchClear(); MyLog.Default.WriteLine($"Check ControlledEntity"); if (MyAPIGateway.Session.Player.Controller.ControlledEntity != null && MyAPIGateway.Session.Player.Controller.ControlledEntity.Entity is IMyCharacter) { MyLog.Default.WriteLine($"InvokeOnGameThread Start"); MyLog.Default.Flush(); MyAPIGateway.Utilities.InvokeOnGameThread(() => { try { MyLog.Default.WriteLine($"Start InitPlayer"); MyLog.Default.Flush(); PlayerInit(MyAPIGateway.Session.Player.PlayerID); } catch (Exception e) { MyLog.Default.WriteLine($"PlayerInit: {e.Message}"); MyLog.Default.Flush(); } }); } else { MyLog.Default.WriteLine($"ControlledEntityChanged"); MyLog.Default.Flush(); MyAPIGateway.Session.Player.Controller.ControlledEntityChanged += Controller_ControlledEntityChanged; } } catch (Exception e) { MyLog.Default.WriteLine($"NetworkHandlerSystem INIT: {e.Message}"); MyLog.Default.Flush(); } } GetAllBlocks(); MyLog.Default.WriteLine($"SUCCESSFUL INIT!"); MyLog.Default.Flush(); return(true); }
internal void InitResearchRestrictions() { // 1.194 MySectorWeatherComponent wc; // WeatherType wt; if (bNewResearch) { MyVisualScriptLogicProvider.ResearchListClear(); MyVisualScriptLogicProvider.ResearchListWhitelist(false); // set it to be 'black list' } // TODO: Figure out how to disable game-based progression tree... // A: you can't. combo of editting researchgroups.sbc and MOD API // MyVisualScriptLogicProvider.BlockFunctionalityChanged += FunctionalityChanged; NeedsResearch(refinery, TechGroup.Permabanned); NeedsResearch(blastFurnace, TechGroup.Permabanned); NeedsResearch(blastFurnace, TechGroup.Permabanned); NeedsResearch(jumpDrive, TechGroup.Permabanned); NeedsResearch(projectorLarge, TechGroup.Permabanned); NeedsResearch(projectorSmall, TechGroup.Permabanned); NeedsResearch(largeMissileTurret, TechGroup.Rockets); NeedsResearch(smallMissileTurret, TechGroup.Rockets); NeedsResearch(rocketLauncher, TechGroup.Rockets); NeedsResearch(largeRocketLauncher, TechGroup.Rockets); NeedsResearch(smallReloadableRocketLauncher, TechGroup.Rockets); NeedsResearch(ionThrusterSmallShipSmall, TechGroup.Permabanned); NeedsResearch(ionThrusterSmallShipLarge, TechGroup.Permabanned); NeedsResearch(ionThrusterLargeShipSmall, TechGroup.Permabanned); NeedsResearch(ionThrusterLargeShipLarge, TechGroup.Permabanned); NeedsResearch(hydroThrusterSmallShipSmall, TechGroup.Permabanned); NeedsResearch(hydroThrusterSmallShipLarge, TechGroup.Permabanned); NeedsResearch(hydroThrusterLargeShipSmall, TechGroup.Permabanned); NeedsResearch(hydroThrusterLargeShipLarge, TechGroup.Permabanned); NeedsResearch(atmoThrusterSmallShipSmall, TechGroup.AtmosphericEngines); NeedsResearch(atmoThrusterSmallShipLarge, TechGroup.AtmosphericEngines); NeedsResearch(atmoThrusterLargeShipSmall, TechGroup.AtmosphericEngines); NeedsResearch(atmoThrusterLargeShipLarge, TechGroup.AtmosphericEngines); NeedsResearch(oxygenFarm, TechGroup.OxygenFarm); NeedsResearch(oxygenGeneratorLarge, TechGroup.OxygenGenerators); NeedsResearch(oxygenGeneratorSmall, TechGroup.OxygenGenerators); NeedsResearch(oxygenTankLarge, TechGroup.GasStorage); NeedsResearch(oxygenTankSmall, TechGroup.GasStorage); NeedsResearch(hydrogenTankLarge, TechGroup.GasStorage); NeedsResearch(hydrogenTankSmall, TechGroup.GasStorage); //SE 1.194 V33 NeedsResearch(LargeHydrogenTankSmall, TechGroup.GasStorage); NeedsResearch(SmallHydrogenTankSmall, TechGroup.GasStorage); NeedsResearch(EngineLarge, TechGroup.GasStorage); NeedsResearch(EngineSmall, TechGroup.GasStorage); NeedsResearch(WindTurbineLarge, TechGroup.AtmosphericEngines); NeedsResearch(SmallGatlingTurret, TechGroup.BasicWeapons); NeedsResearch(SmallRocketLauncherReload, TechGroup.BasicWeapons); NeedsResearch(InteriorTurret, TechGroup.BasicWeapons); NeedsResearch(LargeGatlingTurret, TechGroup.BasicWeapons); // NeedsResearch(largeMissileTurret, TechGroup.BasicWeapons); // NeedsResearch(smallMissileTurret, TechGroup.BasicWeapons); NeedsResearch(SkLarge, TechGroup.Permabanned); NeedsResearch(SkSmall, TechGroup.Permabanned); NeedsResearch(BasicAssembler, TechGroup.Permabanned); var gameVersion = MyAPIGateway.Session.Version; if ((gameVersion.Major == 1 && gameVersion.Minor >= 195) || gameVersion.Major > 1) { // V1.195 DLC NeedsResearch(SmallBlockSmallAtmosphericThrustSciFi, TechGroup.AtmosphericEngines); NeedsResearch(SmallBlockLargeAtmosphericThrustSciFi, TechGroup.AtmosphericEngines); NeedsResearch(LargeBlockSmallAtmosphericThrustSciFi, TechGroup.AtmosphericEngines); NeedsResearch(LargeBlockLargeAtmosphericThrustSciFi, TechGroup.AtmosphericEngines); NeedsResearch(SmallBlockSmallThrustSciFi, TechGroup.Permabanned); NeedsResearch(SmallBlockLargeThrustSciFi, TechGroup.Permabanned); NeedsResearch(LargeBlockSmallThrustSciFi, TechGroup.Permabanned); NeedsResearch(LargeBlockLargeThrustSciFi, TechGroup.Permabanned); } // V26. For SE 1.192 if ((gameVersion.Major == 1 && gameVersion.Minor >= 192) || gameVersion.Major > 1) { NeedsResearch(SafeZoneBlock, TechGroup.Permabanned); NeedsResearch(StoreBlock, TechGroup.Permabanned); NeedsResearch(ContractBlock, TechGroup.Permabanned); // V27 SE 1.192 Economy DLC NeedsResearch(VendingMachine, TechGroup.Permabanned); NeedsResearch(AtmBlock, TechGroup.Permabanned); } // For SE 1.193 if ((gameVersion.Major == 1 && gameVersion.Minor >= 193) || gameVersion.Major > 1) { NeedsResearch(FoodDispenser, TechGroup.Permabanned); } // For SE 1.199 if ((gameVersion.Major == 1 && gameVersion.Minor >= 199) || gameVersion.Major > 1) { NeedsResearch(IndustrialRefinery, TechGroup.Permabanned); // NeedsResearch(IndustrialAssembler, TechGroup.Permabanned); NeedsResearch(IndustrialLGLargeHTruster, TechGroup.Permabanned); NeedsResearch(IndustrialLGSmallHTruster, TechGroup.Permabanned); NeedsResearch(IndustrialSGLargeHTruster, TechGroup.Permabanned); NeedsResearch(IndustrialSGSmallHTruster, TechGroup.Permabanned); NeedsResearch(LargeHydrogenTankIndustrial, TechGroup.GasStorage); } if ((gameVersion.Major == 1 && gameVersion.Minor >= 200) || gameVersion.Major > 1) { NeedsResearch(LargeBlockLargeCalibreGun, TechGroup.BasicWeapons); NeedsResearch(SmallBlockAutocannon, TechGroup.BasicWeapons); NeedsResearch(SmallGatlingGunWarfare2, TechGroup.BasicWeapons); // encourage engineering NeedsResearch(LargeTurretControlBlock, TechGroup.BasicWeapons); NeedsResearch(SmallTurretControlBlock, TechGroup.BasicWeapons); NeedsResearch(SmallMissileLauncherWarfare2, TechGroup.Rockets); NeedsResearch(LargeRailgun, TechGroup.Rockets); NeedsResearch(SmallRailgun, TechGroup.Rockets); NeedsResearch(SmallMissileLauncherWarfare2, TechGroup.Rockets); // new turrets are banned because they might change the balance too much NeedsResearch(LargeBlockMediumCalibreTurret, TechGroup.Permabanned); NeedsResearch(AutoCannonTurret, TechGroup.Permabanned); NeedsResearch(SmallBlockMediumCalibreTurret, TechGroup.Permabanned); NeedsResearch(SmallBlockSmallModularThruster, TechGroup.Permabanned); NeedsResearch(SmallBlockLargeModularThruster, TechGroup.Permabanned); NeedsResearch(LargeBlockSmallModularThruster, TechGroup.Permabanned); NeedsResearch(LargeBlockLargeModularThruster, TechGroup.Permabanned); } }