예제 #1
0
        public static void DeleteEntries(MegaSpawner megaSpawner)
        {
            for (int i = 0; i < megaSpawner.OverrideSpawnedEntries.Count; i++)
            {
                object o = megaSpawner.OverrideSpawnedEntries[i];

                MC.DeleteObject(o);

                if (megaSpawner.OverrideRespawnEntryList.Count == megaSpawner.OverrideSpawnedEntries.Count)
                {
                    megaSpawner.OverrideRespawnEntryList[i] = "";
                }
            }

            megaSpawner.OverrideSpawnedEntries.Clear();
            megaSpawner.OverrideLastMovedList.Clear();
        }
예제 #2
0
        public static void AddToRespawnEntries(MegaSpawner megaSpawner, object o)
        {
            bool success = false;

            for (int i = 0; i < megaSpawner.OverrideRespawnEntryList.Count; i++)
            {
                int randomDespawnTime = Utility.Random(megaSpawner.OverrideMinDespawn, megaSpawner.OverrideMaxDespawn - megaSpawner.OverrideMinDespawn);

                if (megaSpawner.OverrideRespawnEntryList[i] is string)
                {
                    object respawnEntry = o;

                    if (o is Item)
                    {
                        respawnEntry = (Item)o;
                    }
                    else if (o is Mobile)
                    {
                        respawnEntry = (Mobile)o;
                    }

                    if ((string)megaSpawner.OverrideRespawnEntryList[i] == "" && ((int)megaSpawner.OverrideRespawnTimeList[i] <= MegaSpawner.tickOffset || megaSpawner.OverrideGroupSpawn))
                    {
                        success = true;

                        megaSpawner.OverrideRespawnEntryList[i] = respawnEntry;
                        megaSpawner.OverrideDespawnTimeList[i]  = randomDespawnTime;

                        break;
                    }
                }
            }

            if (!success)
            {
                MC.DeleteObject(o);
            }
        }
예제 #3
0
        public static void TickDespawn(MegaSpawner megaSpawner, int delay)
        {
            for (int i = 0; i < megaSpawner.OverrideDespawnTimeList.Count; i++)
            {
                if (megaSpawner.OverrideRespawnEntryList[i] is Item || megaSpawner.OverrideRespawnEntryList[i] is Mobile)
                {
                    int despawnTime = (int)megaSpawner.OverrideDespawnTimeList[i];

                    if (megaSpawner.OverrideDespawnGroup)
                    {
                        despawnTime = (int)megaSpawner.OverrideDespawnTimeList[0];
                    }

                    if (despawnTime > 0)
                    {
                        megaSpawner.OverrideDespawnTimeList[i] = (int)megaSpawner.OverrideDespawnTimeList[i] - delay;
                    }
                    else
                    {
                        object o = megaSpawner.OverrideRespawnEntryList[i];

                        if (o is BaseCreature)
                        {
                            BaseCreature bc = (BaseCreature)o;

                            if (bc.FocusMob != null)
                            {
                                return;
                            }
                        }

                        MC.DeleteObject(o);
                    }
                }
            }
        }