static void Postfix(PLNuclearDevice __instance, ref string __result) { int subtypeformodded = __instance.SubType - NuclearDeviceModManager.Instance.VanillaNuclearDeviceMaxType; if (subtypeformodded > -1 && subtypeformodded < NuclearDeviceModManager.Instance.NuclearDeviceTypes.Count && __instance.ShipStats != null) { __result = NuclearDeviceModManager.Instance.NuclearDeviceTypes[subtypeformodded].GetStatLineRight(__instance); } }
public override string GetStatLineRight(PLShipComponent InComp) { PLNuclearDevice me = InComp as PLNuclearDevice; return(string.Concat(new string[] { (me.MaxDamage * me.LevelMultiplier(0.15f, 1f)).ToString("0"), "\n", (me.Range * me.LevelMultiplier(0.2f, 1f)).ToString("0"), "\n", me.FuelBurnRate.ToString("0.0"), "\n", (me.TurnRate * 100f * me.LevelMultiplier(0.2f, 1f)).ToString("0") })); }
public static PLNuclearDevice CreateNuclearDevice(int Subtype, int level) { PLNuclearDevice InNuclearDevice; if (Subtype >= Instance.VanillaNuclearDeviceMaxType) { InNuclearDevice = new PLNuclearDevice(ENuclearDeviceType.MAX, level); int subtypeformodded = Subtype - Instance.VanillaNuclearDeviceMaxType; if (Global.DebugLogging) { Logger.Info($"Subtype for modded is {subtypeformodded}"); } if (subtypeformodded <= Instance.NuclearDeviceTypes.Count && subtypeformodded > -1) { if (Global.DebugLogging) { Logger.Info("Creating NuclearDevice from list info"); } NuclearDevicePlugin NuclearDeviceType = Instance.NuclearDeviceTypes[Subtype - Instance.VanillaNuclearDeviceMaxType]; InNuclearDevice.SubType = Subtype; InNuclearDevice.Name = NuclearDeviceType.Name; InNuclearDevice.Desc = NuclearDeviceType.Description; InNuclearDevice.GetType().GetField("m_IconTexture", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InNuclearDevice, NuclearDeviceType.IconTexture); InNuclearDevice.GetType().GetField("m_MaxDamage", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InNuclearDevice, NuclearDeviceType.MaxDamage); InNuclearDevice.GetType().GetField("m_Range", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InNuclearDevice, NuclearDeviceType.Range); InNuclearDevice.GetType().GetField("m_FuelBurnRate", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InNuclearDevice, NuclearDeviceType.FuelBurnRate); InNuclearDevice.GetType().GetField("m_TurnRate", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InNuclearDevice, NuclearDeviceType.TurnRate); InNuclearDevice.GetType().GetField("m_IntimidationBonus", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InNuclearDevice, NuclearDeviceType.IntimidationBonus); InNuclearDevice.GetType().GetField("m_TurnRate", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InNuclearDevice, NuclearDeviceType.TurnRate); InNuclearDevice.GetType().GetField("m_Health", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InNuclearDevice, NuclearDeviceType.Health); InNuclearDevice.GetType().GetField("m_MarketPrice", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InNuclearDevice, (ObscuredInt)NuclearDeviceType.MarketPrice); InNuclearDevice.CargoVisualPrefabID = NuclearDeviceType.CargoVisualID; InNuclearDevice.CanBeDroppedOnShipDeath = NuclearDeviceType.CanBeDroppedOnShipDeath; InNuclearDevice.Experimental = NuclearDeviceType.Experimental; InNuclearDevice.Unstable = NuclearDeviceType.Unstable; InNuclearDevice.Contraband = NuclearDeviceType.Contraband; InNuclearDevice.GetType().GetField("Price_LevelMultiplierExponent", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InNuclearDevice, (ObscuredFloat)NuclearDeviceType.Price_LevelMultiplierExponent); } } else { InNuclearDevice = new PLNuclearDevice((ENuclearDeviceType)Subtype, level); } return(InNuclearDevice); }
public static PLNuclearDevice CreateNuclearDevice(int Subtype, int level) { PLNuclearDevice InNuclearDevice; if (Subtype >= Instance.VanillaNuclearDeviceMaxType) { InNuclearDevice = new PLNuclearDevice(ENuclearDeviceType.MAX, level); int subtypeformodded = Subtype - Instance.VanillaNuclearDeviceMaxType; if (subtypeformodded <= Instance.NuclearDeviceTypes.Count && subtypeformodded > -1) { NuclearDeviceMod NuclearDeviceType = Instance.NuclearDeviceTypes[Subtype - Instance.VanillaNuclearDeviceMaxType]; InNuclearDevice.SubType = Subtype; InNuclearDevice.Name = NuclearDeviceType.Name; InNuclearDevice.Desc = NuclearDeviceType.Description; InNuclearDevice.m_IconTexture = NuclearDeviceType.IconTexture; InNuclearDevice.m_MaxDamage = NuclearDeviceType.MaxDamage; InNuclearDevice.m_Range = NuclearDeviceType.Range; InNuclearDevice.m_FuelBurnRate = NuclearDeviceType.FuelBurnRate; InNuclearDevice.m_TurnRate = NuclearDeviceType.TurnRate; InNuclearDevice.m_IntimidationBonus = NuclearDeviceType.IntimidationBonus; InNuclearDevice.m_TurnRate = NuclearDeviceType.TurnRate; InNuclearDevice.m_Health = NuclearDeviceType.Health; InNuclearDevice.m_MarketPrice = NuclearDeviceType.MarketPrice; InNuclearDevice.CargoVisualPrefabID = NuclearDeviceType.CargoVisualID; InNuclearDevice.CanBeDroppedOnShipDeath = NuclearDeviceType.CanBeDroppedOnShipDeath; InNuclearDevice.Experimental = NuclearDeviceType.Experimental; InNuclearDevice.Unstable = NuclearDeviceType.Unstable; InNuclearDevice.Contraband = NuclearDeviceType.Contraband; InNuclearDevice.Price_LevelMultiplierExponent = NuclearDeviceType.Price_LevelMultiplierExponent; } } else { InNuclearDevice = new PLNuclearDevice((ENuclearDeviceType)Subtype, level); } return(InNuclearDevice); }