public static PLCPU CreateCPU(int Subtype, int level) { PLCPU InCPU; if (Subtype >= Instance.VanillaCPUMaxType) { InCPU = new PLCPU(ECPUClass.E_MAX, level); int subtypeformodded = Subtype - Instance.VanillaCPUMaxType; if (subtypeformodded <= Instance.CPUTypes.Count && subtypeformodded > -1) { CPUMod CPUType = Instance.CPUTypes[Subtype - Instance.VanillaCPUMaxType]; InCPU.SubType = Subtype; InCPU.Name = CPUType.Name; InCPU.Desc = CPUType.Description; InCPU.m_IconTexture = CPUType.IconTexture; InCPU.m_MarketPrice = CPUType.MarketPrice; InCPU.m_MaxPowerUsage_Watts = CPUType.MaxPowerUsage_Watts; InCPU.CargoVisualPrefabID = CPUType.CargoVisualID; InCPU.CanBeDroppedOnShipDeath = CPUType.CanBeDroppedOnShipDeath; InCPU.Experimental = CPUType.Experimental; InCPU.Unstable = CPUType.Unstable; InCPU.Contraband = CPUType.Contraband; InCPU.Speed = CPUType.Speed; InCPU.m_Defense = CPUType.Defense; InCPU.m_MaxCompUpgradeLevelBoost = CPUType.MaxCompUpgradeLevelBoost; InCPU.m_MaxPawnItemUpgradeLevelBoost = CPUType.MaxItemUpgradeLevelBoost; InCPU.Price_LevelMultiplierExponent = CPUType.Price_LevelMultiplierExponent; } } else { InCPU = new PLCPU((ECPUClass)Subtype, level); } return(InCPU); }
static void Postfix(PLCPU __instance, ref string __result) { int subtypeformodded = __instance.SubType - CPUPluginManager.Instance.VanillaCPUMaxType; if (subtypeformodded > -1 && subtypeformodded < CPUPluginManager.Instance.CPUTypes.Count) { __result = CPUPluginManager.Instance.CPUTypes[subtypeformodded].GetStatLineLeft(__instance); } }
static void Postfix(PLCPU __instance) { int subtypeformodded = __instance.SubType - CPUPluginManager.Instance.VanillaCPUMaxType; if (subtypeformodded > -1 && subtypeformodded < CPUPluginManager.Instance.CPUTypes.Count) { CPUPluginManager.Instance.CPUTypes[subtypeformodded].Tick(__instance); } }
static void Postfix(PLWarpDriveProgram inProgram, PLCPU __instance) { int subtypeformodded = __instance.SubType - CPUPluginManager.Instance.VanillaCPUMaxType; if (subtypeformodded > -1 && subtypeformodded < CPUPluginManager.Instance.CPUTypes.Count && inProgram != null) { CPUPluginManager.Instance.CPUTypes[subtypeformodded].WhenProgramIsRun(inProgram); } }
public override void FinalLateAddStats(PLShipComponent InComp) { PLCPU InCPU = InComp as PLCPU; InCPU.ShipStats.EMDetection *= 1f + .1f * InCPU.LevelMultiplier(0.2f, 1f); InCPU.ShipStats.ShieldsChargeRate *= 1f + .1f * InCPU.LevelMultiplier(0.2f, 1f); InCPU.ShipStats.ShieldsChargeRateMax *= 1f + .1f * InCPU.LevelMultiplier(0.2f, 1f); InCPU.ShipStats.TurretChargeFactor *= 1f + .1f * InCPU.LevelMultiplier(0.2f, 1f); }
static void Postfix(PLCPU __instance) { int subtypeformodded = __instance.SubType - CPUModManager.Instance.VanillaCPUMaxType; if (subtypeformodded > -1 && subtypeformodded < CPUModManager.Instance.CPUTypes.Count) { CPUModManager.Instance.CPUTypes[subtypeformodded].FinalLateAddStats(__instance); } }
public static PLCPU CreateCPU(int Subtype, int level) { PLCPU InCPU; if (Subtype >= Instance.VanillaCPUMaxType) { InCPU = new PLCPU(ECPUClass.E_MAX, level); int subtypeformodded = Subtype - Instance.VanillaCPUMaxType; if (Global.DebugLogging) { Logger.Info($"Subtype for modded is {subtypeformodded}"); } if (subtypeformodded <= Instance.CPUTypes.Count && subtypeformodded > -1) { if (Global.DebugLogging) { Logger.Info("Creating CPU from list info"); } CPUPlugin CPUType = Instance.CPUTypes[Subtype - Instance.VanillaCPUMaxType]; InCPU.SubType = Subtype; InCPU.Name = CPUType.Name; InCPU.Desc = CPUType.Description; InCPU.GetType().GetField("m_IconTexture", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InCPU, CPUType.IconTexture); InCPU.GetType().GetField("m_MarketPrice", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InCPU, (ObscuredInt)CPUType.MarketPrice); InCPU.GetType().GetField("m_MaxPowerUsage_Watts", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InCPU, (CPUType.MaxPowerUsage_Watts)); InCPU.CargoVisualPrefabID = CPUType.CargoVisualID; InCPU.CanBeDroppedOnShipDeath = CPUType.CanBeDroppedOnShipDeath; InCPU.Experimental = CPUType.Experimental; InCPU.Unstable = CPUType.Unstable; InCPU.Contraband = CPUType.Contraband; InCPU.Speed = CPUType.Speed; InCPU.GetType().GetField("m_Defense", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InCPU, CPUType.Defense); InCPU.GetType().GetField("m_MaxCompUpgradeLevelBoost", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InCPU, CPUType.MaxCompUpgradeLevelBoost); InCPU.GetType().GetField("m_MaxPawnItemUpgradeLevelBoost", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InCPU, CPUType.MaxItemUpgradeLevelBoost); InCPU.GetType().GetField("Price_LevelMultiplierExponent", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InCPU, (ObscuredFloat)CPUType.Price_LevelMultiplierExponent); } } else { InCPU = new PLCPU((ECPUClass)Subtype, level); } return(InCPU); }
public override void Tick(PLShipComponent InComp) { PLCPU InCPU = InComp as PLCPU; Mathf.Clamp01(InCPU.ShipStats.Ship.ReactorCoolantLevelPercent += .001f); }
public override string GetStatLineRight(PLShipComponent InComp) { PLCPU InCPU = InComp as PLCPU; return("+" + (10f * InCPU.LevelMultiplier(2f, 1f)).ToString("0.0") + "%"); }
public override void AddStats(PLShipComponent InComp) { PLCPU InCPU = InComp as PLCPU; InCPU.ShipStats.TurretDamageFactor *= 1000f * InCPU.LevelMultiplier(1f, 1f) * InCPU.GetPowerPercentInput(); }