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(); } }
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); }
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); }