public InstanceSpawn RezInstanceSpawn() { InstanceSpawn newCreature = new InstanceSpawn(Spawn, InstanceGroupSpawnID, BossID, Instance); Region.AddObject(newCreature, Spawn.ZoneId); Destroy(); return(newCreature); }
private void ReturnToSpawn() { AI.Debugger?.SendClientMessage("[MR]: Retreating to the spawnpoint."); if (_unit.IsInstanceSpawn()) { InstanceSpawn npc = (InstanceSpawn)_unit; npc.BuffInterface.RemoveAllBuffs(); npc.ReceiveHeal(null, npc.MaxHealth); npc.SetPosition((ushort)npc.SpawnPoint.X, (ushort)npc.SpawnPoint.Y, (ushort)npc.SpawnPoint.Z, npc.SpawnHeading, npc.Spawn.ZoneId, true); } else { Creature npc = (Creature)_unit; npc.BuffInterface.RemoveAllBuffs(); npc.ReceiveHeal(null, npc.MaxHealth); npc.SetPosition((ushort)npc.SpawnPoint.X, (ushort)npc.SpawnPoint.Y, (ushort)npc.SpawnPoint.Z, npc.SpawnHeading, npc.Spawn.ZoneId, true); } }
public void RespawnInstanceGroup(uint GroupID, bool rezall = false) { lock (GroupsinCombat) { if (!GroupsinCombat.Contains(GroupID) || rezall) { return; } GroupsinCombat.Remove(GroupID); List <InstanceSpawn> spawns; _Spawns.TryGetValue(GroupID, out spawns); for (int i = 0; i < spawns.Count; i++) { if (spawns[i].IsDead) { InstanceSpawn IS = spawns[i].RezInstanceSpawn(); spawns[i] = (IS); } } _Spawns[GroupID] = spawns; } }
private void LoadSpawns() { List <Instance_Spawn> Obj; InstanceService._InstanceSpawns.TryGetValue(ZoneID, out Obj); List <uint> deadbossids = new List <uint>(); if (Lockout != null) { for (int i = 0; i < Lockout.Bosseskilled.Split(';').Count(); i++) { deadbossids.Add(UInt16.Parse(Lockout.Bosseskilled.Split(';')[i].Split(':')[1])); } } if (Obj == null) { return; } foreach (var obj in Obj) { if (deadbossids.Contains(obj.ConnectedBossID)) { continue; } if (obj.Realm == 0 || obj.Realm == this.Realm) { Creature_spawn spawn = new Creature_spawn(); spawn.Guid = (uint)CreatureService.GenerateCreatureSpawnGUID(); spawn.BuildFromProto(CreatureService.GetCreatureProto((uint)obj.Entry)); if (spawn.Proto == null) { Log.Error("Creature Proto not found", " " + obj.Entry); continue; } spawn.WorldO = (int)obj.WorldO; spawn.WorldY = obj.WorldY; spawn.WorldZ = obj.WorldZ; spawn.WorldX = obj.WorldX; spawn.ZoneId = obj.ZoneID; spawn.Enabled = 1; InstanceSpawn IS = new InstanceSpawn(spawn, obj.SpawnGroupID, obj.ConnectedBossID, this); if (obj.SpawnGroupID > 0) { List <InstanceSpawn> spawns; _Spawns.TryGetValue(obj.SpawnGroupID, out spawns); if (spawns == null) { spawns = new List <InstanceSpawn>(); } spawns.Add(IS); _Spawns[obj.SpawnGroupID] = spawns; } Region.AddObject(IS, obj.ZoneID); } } }