コード例 #1
0
        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);
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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;
                }
            });
        }