Example #1
0
        protected virtual async void ServerSpawnObjects(
            ILogicObject worldEvent,
            List <IWorldObject> spawnedObjects)
        {
            Logger.Important("Starting mobs spawn for " + worldEvent);

            var spawnScriptConfig = this.SpawnScriptConfig;
            var spawnScript       = (ProtoZoneSpawnScript)spawnScriptConfig.ZoneScript;

            foreach (var zone in serverSpawnZones.Value)
            {
                await spawnScript.ServerInvoke(spawnScriptConfig, trigger : null, zone);

                var mobsTracker = SpawnedMobsTrackingManagersStore.Get(spawnScript, zone);
                spawnedObjects.AddRange(mobsTracker.EnumerateAll());
            }

            Logger.Important($"Finished mobs spawn for {worldEvent}: {spawnedObjects.Count} mobs spawned");
        }
Example #2
0
        private void ServerRemote_DeleteZoneMobs(IProtoZone zone)
        {
            Logger.Important("Destroying all spawned mobs at zone: " + zone.ShortId);

            var serverZone   = zone.ServerZoneInstance;
            var worldService = Server.World;

            foreach (var zoneAttachedScript in zone.AttachedScripts.Where(s => s.ZoneScript is ProtoZoneSpawnScript))
            {
                var tracker = SpawnedMobsTrackingManagersStore.Get(
                    (ProtoZoneSpawnScript)zoneAttachedScript.ZoneScript,
                    serverZone);

                foreach (var character in tracker.EnumerateAll().ToList())
                {
                    worldService.DestroyObject(character);
                }

                tracker.Clear();
            }
        }