public static PLVirus CreateVirus(int Subtype, int level) { PLVirus InVirus; if (Subtype >= Instance.VanillaVirusMaxType) { InVirus = new PLVirus(EVirusType.NONE, level); int subtypeformodded = Subtype - Instance.VanillaVirusMaxType; if (subtypeformodded <= Instance.VirusTypes.Count && subtypeformodded > -1) { VirusMod VirusType = Instance.VirusTypes[Subtype - Instance.VanillaVirusMaxType]; InVirus.SubType = Subtype; InVirus.Name = VirusType.Name; InVirus.Desc = VirusType.Description; InVirus.m_IconTexture = VirusType.IconTexture; InVirus.m_MarketPrice = VirusType.MarketPrice; InVirus.CargoVisualPrefabID = VirusType.CargoVisualID; InVirus.CanBeDroppedOnShipDeath = VirusType.CanBeDroppedOnShipDeath; InVirus.Experimental = VirusType.Experimental; InVirus.Unstable = VirusType.Unstable; InVirus.Contraband = VirusType.Contraband; InVirus.InfectionTimeLimitMs = VirusType.InfectionTimeLimitMs; InVirus.Price_LevelMultiplierExponent = VirusType.Price_LevelMultiplierExponent; } } else { InVirus = new PLVirus((EVirusType)Subtype, level); } return(InVirus); }
static void Postfix(PLVirus __instance) { int subtypeformodded = __instance.SubType - VirusPluginManager.Instance.VanillaVirusMaxType; if (subtypeformodded > -1 && subtypeformodded < VirusPluginManager.Instance.VirusTypes.Count) { VirusPluginManager.Instance.VirusTypes[subtypeformodded].FinalLateAddStats(__instance); } }
public static PLVirus CreateVirus(int Subtype, int level) { PLVirus InVirus; if (Subtype >= Instance.VanillaVirusMaxType) { InVirus = new PLVirus(EVirusType.NONE, level); int subtypeformodded = Subtype - Instance.VanillaVirusMaxType; if (Global.DebugLogging) { Logger.Info($"Subtype for modded is {subtypeformodded}"); } if (subtypeformodded <= Instance.VirusTypes.Count && subtypeformodded > -1) { if (Global.DebugLogging) { Logger.Info("Creating Virus from list info"); } VirusPlugin VirusType = Instance.VirusTypes[Subtype - Instance.VanillaVirusMaxType]; InVirus.SubType = Subtype; InVirus.Name = VirusType.Name; InVirus.Desc = VirusType.Description; InVirus.GetType().GetField("m_IconTexture", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InVirus, VirusType.IconTexture); InVirus.GetType().GetField("m_MarketPrice", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InVirus, (ObscuredInt)VirusType.MarketPrice); InVirus.CargoVisualPrefabID = VirusType.CargoVisualID; InVirus.CanBeDroppedOnShipDeath = VirusType.CanBeDroppedOnShipDeath; InVirus.Experimental = VirusType.Experimental; InVirus.Unstable = VirusType.Unstable; InVirus.Contraband = VirusType.Contraband; InVirus.GetType().GetField("Price_LevelMultiplierExponent", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InVirus, (ObscuredFloat)VirusType.Price_LevelMultiplierExponent); } } else { InVirus = new PLVirus((EVirusType)Subtype, level); } return(InVirus); }
private static IEnumerator LateAddToSendQueueReplacement(int shipID, int sendQueueID, int virusType, int serverTime) { PLShipInfoBase ship = null; while (ship == null) { ship = PLEncounterManager.Instance.GetShipFromID(shipID); if (ship == null) { yield return(new WaitForSeconds(0.05f)); } } if (!ship.VirusSendQueue.ForwardDictionary.ContainsKey(sendQueueID)) { PLVirus plvirus = Virus.VirusModManager.CreateVirus(virusType, 0); plvirus.NetID = -1; plvirus.InitialTime = serverTime; ship.VirusSendQueue.Add(sendQueueID, plvirus); plvirus.Sender = ship; Debug.Log("adding virus from send queue: id-" + sendQueueID.ToString() + " name-" + plvirus.Name); } yield break; }