public static void GenerateRaid(FactionType raidType) { RaidInstance = ServerManager.Instance.Act6Raids.FirstOrDefault(s => s.Id == (raidType == FactionType.Angel ? 23 : 24)); if (RaidInstance == null) { Logger.Log.Info(Language.Instance.GetMessageFromKey("CANT_CREATE_RAIDS")); return; } EntryMap = ServerManager.GetMapInstance( ServerManager.GetBaseMapInstanceIdByMapId(RaidInstance.MapId)); if (EntryMap == null) { Logger.Log.Info(Language.Instance.GetMessageFromKey("MAP_MISSING")); return; } EntryMap.CreatePortal(new Portal { Type = (byte)PortalType.Raid, SourceMapId = RaidInstance.MapId, SourceX = RaidInstance.PositionX, SourceY = RaidInstance.PositionY }, 3600, true); }
public async void GenerateRaid(byte type, byte faction) { ScriptedInstance raid = ServerManager.Instance.Act4Raids.FirstOrDefault(r => r.Id == type); MapInstance lobby = ServerManager.Instance.Act4Maps.FirstOrDefault(m => m.Map.MapId == 134); if (raid == null || lobby == null) { Logger.Log.Error(raid == null ? $"Act4 raids is missing - type : {type}" : "There is no map in Act4Maps with MapId == 134"); return; } ServerManager.Instance.Act4RaidStart = DateTime.Now; lobby.CreatePortal(new Portal() { SourceMapId = 134, SourceX = 139, SourceY = 100, Type = (short)(9 + faction) }, 3600, true); foreach (MapInstance map in ServerManager.Instance.Act4Maps) { map.Sessions.Where(s => s?.Character?.Faction == (FactionType)faction).ToList().ForEach(s => s.SendPacket(UserInterfaceHelper.Instance.GenerateMsg(string.Format(Language.Instance.GetMessageFromKey("ACT4_RAID_OPEN"), ((Act4RaidType)type).ToString()), 0))); } lock (ServerManager.Instance.FamilyList) { foreach (Family family in ServerManager.Instance.FamilyList.Where(f => f != null)) { family.Act4Raid = ServerManager.Instance.Act4Raids.FirstOrDefault(r => r.Id == type)?.GetClone(); family.Act4Raid?.LoadScript(MapInstanceType.RaidInstance); if (family.Act4Raid?.FirstMap == null) { continue; } family.Act4Raid.FirstMap.InstanceBag.Lock = true; } } await Task.Delay(60 * 60 * 1000); foreach (Family family in ServerManager.Instance.FamilyList.Where(f => f?.Act4Raid != null)) { family.Act4Raid.MapInstanceDictionary?.Values.ToList().ForEach(m => m?.Dispose()); family.Act4Raid = null; } }
public static void GenerateRaid(MapInstanceType raidtype, byte faction) { MapInstance bitoren = ServerManager.GetMapInstance(ServerManager.GetBaseMapInstanceIdByMapId(134)); bitoren.CreatePortal(new Portal { SourceMapId = 134, SourceX = 140, SourceY = 100, DestinationMapId = 153, DestinationX = 0, DestinationY = 0, Type = -1 }); MapInstance map = ServerManager.GetMapInstanceByMapId(153); map.MapInstanceType = MapInstanceType.Ac4Raid; map.IsPVP = true; map.SummonMonster(new MonsterToSummon(2305, new MapCell { X = 88, Y = 82 }, -1, true, isBoss: true, faction: faction)); }
public static void GenerateRaid(MapInstanceType raidType, byte faction) { Guardians = new List <MapMonster>(); MapInstance bitoren = ServerManager.GetMapInstance(ServerManager.GetBaseMapInstanceIdByMapId(134)); bitoren.CreatePortal(new Portal { SourceMapId = 134, SourceX = 140, SourceY = 100, DestinationMapId = 0, DestinationX = 1, DestinationY = 1, Type = (short)(9 + faction) }); #region Guardian Spawning Guardians.Add(new MapMonster { MonsterVNum = (short)(678 + faction), MapX = 147, MapY = 88, MapId = 134, Position = 2, IsMoving = false, MapMonsterId = bitoren.GetNextMonsterId(), ShouldRespawn = false, IsHostile = true }); Guardians.Add(new MapMonster { MonsterVNum = (short)(678 + faction), MapX = 149, MapY = 94, MapId = 134, Position = 2, IsMoving = false, MapMonsterId = bitoren.GetNextMonsterId(), ShouldRespawn = false, IsHostile = true }); Guardians.Add(new MapMonster { MonsterVNum = (short)(678 + faction), MapX = 147, MapY = 101, MapId = 134, Position = 2, IsMoving = false, MapMonsterId = bitoren.GetNextMonsterId(), ShouldRespawn = false, IsHostile = true }); Guardians.Add(new MapMonster { MonsterVNum = (short)(678 + faction), MapX = 139, MapY = 105, MapId = 134, Position = 2, IsMoving = false, MapMonsterId = bitoren.GetNextMonsterId(), ShouldRespawn = false, IsHostile = true }); Guardians.Add(new MapMonster { MonsterVNum = (short)(678 + faction), MapX = 132, MapY = 101, MapId = 134, Position = 2, IsMoving = false, MapMonsterId = bitoren.GetNextMonsterId(), ShouldRespawn = false, IsHostile = true }); Guardians.Add(new MapMonster { MonsterVNum = (short)(678 + faction), MapX = 129, MapY = 94, MapId = 134, Position = 2, IsMoving = false, MapMonsterId = bitoren.GetNextMonsterId(), ShouldRespawn = false, IsHostile = true }); Guardians.Add(new MapMonster { MonsterVNum = (short)(678 + faction), MapX = 132, MapY = 88, MapId = 134, Position = 2, IsMoving = false, MapMonsterId = bitoren.GetNextMonsterId(), ShouldRespawn = false, IsHostile = true }); #endregion foreach (MapMonster monster in Guardians) { monster.Initialize(bitoren); bitoren.AddMonster(monster); bitoren.Broadcast(monster.GenerateIn()); } Act4RaidThread raidThread = new Act4RaidThread(); Observable.Timer(TimeSpan.FromMinutes(0)).Subscribe(x => raidThread.Run(raidType, faction)); }
public void GenerateRaid(byte type, byte faction) { Act4Guardians = new List <MapMonster>(); ScriptedInstance raid = ServerManager.Instance.Act4Raids.FirstOrDefault(r => r.Id == type); MapInstance lobby = ServerManager.Instance.Act4Maps.FirstOrDefault(m => m.Map.MapId == 134); if (raid == null || lobby == null) { Logger.Log.Error(raid == null ? $"Act4 raids is missing - type : {type}" : "There is no map in Act4Maps with MapId == 134"); return; } ServerManager.Instance.Act4RaidStart = DateTime.Now; lobby.CreatePortal(new Portal { SourceMapId = 134, SourceX = 139, SourceY = 100, Type = (short)(9 + faction) }, 3600, true); #region Guardian Spawning Act4Guardians.Add(new MapMonster { MonsterVNum = (short)(678 + faction), MapX = 147, MapY = 88, MapId = 134, Position = 2, IsMoving = false, MapMonsterId = lobby.GetNextId(), ShouldRespawn = false, IsHostile = true }); Act4Guardians.Add(new MapMonster { MonsterVNum = (short)(678 + faction), MapX = 149, MapY = 94, MapId = 134, Position = 2, IsMoving = false, MapMonsterId = lobby.GetNextId(), ShouldRespawn = false, IsHostile = true }); Act4Guardians.Add(new MapMonster { MonsterVNum = (short)(678 + faction), MapX = 147, MapY = 101, MapId = 134, Position = 2, IsMoving = false, MapMonsterId = lobby.GetNextId(), ShouldRespawn = false, IsHostile = true }); Act4Guardians.Add(new MapMonster { MonsterVNum = (short)(678 + faction), MapX = 139, MapY = 105, MapId = 134, Position = 2, IsMoving = false, MapMonsterId = lobby.GetNextId(), ShouldRespawn = false, IsHostile = true }); Act4Guardians.Add(new MapMonster { MonsterVNum = (short)(678 + faction), MapX = 132, MapY = 101, MapId = 134, Position = 2, IsMoving = false, MapMonsterId = lobby.GetNextId(), ShouldRespawn = false, IsHostile = true }); Act4Guardians.Add(new MapMonster { MonsterVNum = (short)(678 + faction), MapX = 129, MapY = 94, MapId = 134, Position = 2, IsMoving = false, MapMonsterId = lobby.GetNextId(), ShouldRespawn = false, IsHostile = true }); Act4Guardians.Add(new MapMonster { MonsterVNum = (short)(678 + faction), MapX = 132, MapY = 88, MapId = 134, Position = 2, IsMoving = false, MapMonsterId = lobby.GetNextId(), ShouldRespawn = false, IsHostile = true }); foreach (MapMonster monster in Act4Guardians) { if (monster == null) { continue; } monster.Initialize(); lobby.AddMonster(monster); lobby.Broadcast(monster.GenerateIn()); } Observable.Timer(TimeSpan.FromMinutes(60)).Subscribe(s => { foreach (MapMonster monster in Act4Guardians) { lobby.RemoveMonster(monster); lobby.Broadcast(monster.GenerateOut()); } Act4Guardians.Clear(); }); #endregion foreach (MapInstance map in ServerManager.Instance.Act4Maps) { map.Sessions.Where(s => s?.Character?.Faction == (FactionType)faction).ToList().ForEach(s => s.SendPacket(UserInterfaceHelper.Instance.GenerateMsg(string.Format(Language.Instance.GetMessageFromKey("ACT4_RAID_OPEN"), ((Act4RaidType)type).ToString()), 0))); } lock (ServerManager.Instance.FamilyList) { foreach (Family family in ServerManager.Instance.FamilyList.GetAllItems()) { if (family == null) { continue; } family.Act4Raid = ServerManager.Instance.Act4Raids.FirstOrDefault(r => r.Id == type)?.GetClone(); family.Act4Raid?.LoadScript(MapInstanceType.RaidInstance); if (family.Act4Raid?.FirstMap == null) { continue; } family.Act4Raid.FirstMap.InstanceBag.Lock = true; } } Observable.Timer(TimeSpan.FromSeconds(3600)).Subscribe(s => { foreach (Family family in ServerManager.Instance.FamilyList.GetAllItems()) { if (family == null) { continue; } family.Act4Raid?.MapInstanceDictionary?.Values.ToList().ForEach(m => m?.Dispose()); family.Act4Raid = null; } }); }