示例#1
0
        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;
        }