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);
            }
        }
Example #5
0
        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);
        }
Example #8
0
        public override void Tick(PLShipComponent InComp)
        {
            PLCPU InCPU = InComp as PLCPU;

            Mathf.Clamp01(InCPU.ShipStats.Ship.ReactorCoolantLevelPercent += .001f);
        }
Example #9
0
        public override string GetStatLineRight(PLShipComponent InComp)
        {
            PLCPU InCPU = InComp as PLCPU;

            return("+" + (10f * InCPU.LevelMultiplier(2f, 1f)).ToString("0.0") + "%");
        }
Example #10
0
        public override void AddStats(PLShipComponent InComp)
        {
            PLCPU InCPU = InComp as PLCPU;

            InCPU.ShipStats.TurretDamageFactor *= 1000f * InCPU.LevelMultiplier(1f, 1f) * InCPU.GetPowerPercentInput();
        }