Exemplo n.º 1
0
 static bool Prefix()
 {
     for (int i = 0; i < GameManager.Instance.World.Entities.list.Count; i++)
     {
         EntityAlive entity = GameManager.Instance.World.Entities.list[i] as EntityAlive;
         if (entity is EntityZombie || entity is EntityEnemyAnimal)
         {
             Debug.Log("Cleaning up entities");
             entity.IsDespawned = true;
             entity.MarkToUnload();
         }
     }
     return(true);
 }
    public new static void SpawnQuestEntity(int spawnedEntityID, int entityIDQuestHolder, EntityPlayer player)
    {
        if (GameManager.Instance.World.Entities.dict.ContainsKey(entityIDQuestHolder))
        {
            EntityAlive questEntity = GameManager.Instance.World.Entities.dict[entityIDQuestHolder] as EntityAlive;
            if (questEntity == null)
            {
                return;
            }

            Vector3 transformPos = questEntity.position;
            Vector3 rotation     = new Vector3(0f, questEntity.transform.eulerAngles.y + 180f, 0f);
            Entity  entity       = EntityFactory.CreateEntity(spawnedEntityID, transformPos, rotation);
            entity.SetSpawnerSource(EnumSpawnerSource.StaticSpawner);
            GameManager.Instance.World.SpawnEntityInWorld(entity);
            questEntity.MarkToUnload();
        }
    }
Exemplo n.º 3
0
    static bool Prefix()
    {
        ulong worldtime = GameManager.Instance.World.GetWorldTime();
        float dawntime  = SkyManager.GetDawnTime();

        if (GameUtils.WorldTimeToHours(worldtime) == dawntime && GameUtils.WorldTimeToMinutes(worldtime) < 1)
        {
            for (int i = 0; i < GameManager.Instance.World.Entities.list.Count; i++)
            {
                EntityAlive entityalive = GameManager.Instance.World.Entities.list[i] as EntityAlive;
                Entity      entity      = GameManager.Instance.World.Entities.list[i] as Entity;
                if (entity.GetSpawnerSource() == EnumSpawnerSource.Biome && entityalive.GetMaxHealth() == entityalive.Health && (entityalive is EntityZombie || entityalive is EntityEnemyAnimal))
                {
                    entityalive.IsDespawned = true;
                    entityalive.MarkToUnload();
                }
            }
            Debug.Log("Cleaned up entities");
        }
        return(true);
    }
Exemplo n.º 4
0
        static bool Prefix()
        {
            ulong worldtime = GameManager.Instance.World.GetWorldTime();

            if (worldtime % 500 == 0)
            {
                enemyCountEnum = EnumUtils.Parse <EnumGameStats>("EnemyCount");
                int enemycount = GameStats.GetInt(enemyCountEnum);
                int entities = 0, npc = 0;
                if (enemycount * 1.1 >= maxzombies)
                {
                    Debug.LogWarning("EnemyCount: " + enemycount);
                    Debug.LogWarning("Maxspawn: " + maxzombies);
                    Debug.LogWarning("Attempting to clear biome entities...");
                    for (int i = 0; i < GameManager.Instance.World.Entities.list.Count; i++)
                    {
                        EntityAlive entityalive = GameManager.Instance.World.Entities.list[i] as EntityAlive;
                        if (entityalive.GetSpawnerSource() == EnumSpawnerSource.Biome && (entityalive is EntityZombie || entityalive is EntityEnemyAnimal))
                        {
                            entityalive.MarkToUnload();
                            entities++;
                        }
                    }
                    if ((enemycount - entities) * 1.1 >= maxzombies)
                    {
                        Debug.LogWarning("Entity amount still too high.\n Attempting to clear all hostile entities but sleepers...");
                        for (int i = 0; i < GameManager.Instance.World.Entities.list.Count; i++)
                        {
                            EntityAlive entityalive = GameManager.Instance.World.Entities.list[i] as EntityAlive;
                            if ((entityalive is EntityZombie || entityalive is EntityEnemyAnimal) && !entityalive.IsSleeping)
                            {
                                entityalive.MarkToUnload();
                                entities++;
                            }
                        }
                    }
                    if ((enemycount - entities) * 1.1 >= maxzombies)
                    {
                        Debug.LogError("Severe entity amounts.\n Attempting to clear all entities...");
                        for (int i = 0; i < GameManager.Instance.World.Entities.list.Count; i++)
                        {
                            EntityAlive entityalive = GameManager.Instance.World.Entities.list[i] as EntityAlive;
                            if (!(entityalive is EntityNPC))
                            {
                                entityalive.MarkToUnload();
                                entities++;
                            }
                        }
                    }
                    if ((enemycount - entities) * 1.1 >= maxzombies)
                    {
                        Debug.LogError("Severe entity amounts.\n Attempting to clear all NPC entities...");
                        for (int i = 0; i < GameManager.Instance.World.Entities.list.Count; i++)
                        {
                            EntityAlive entityalive = GameManager.Instance.World.Entities.list[i] as EntityAlive;
                            if (entityalive is EntityNPC)
                            {
                                entityalive.MarkToUnload();
                                entities++;
                                npc++;
                            }
                        }
                    }
                    if (entities != 0)
                    {
                        Debug.Log("Unloaded " + entities + " entities");
                    }
                    if (npc != 0)
                    {
                        Debug.LogWarning("Unloaded " + npc + " NPCs");
                    }
                }
            }
            return(true);
        }