예제 #1
0
        public void Stop()
        {
            if (!this.IsRunning)
            {
                return;
            }
            this._notificationsAboutStart = 3;
            this.IsStarted = false;
            WCell.RealmServer.Global.World.Broadcast(string.Format(
                                                         "War in {0} has ended. Light scores {1} vs {2} dark scores.", (object)this.Town,
                                                         (object)this.LightScores, (object)this.DarkScores));
            this.IsRunning = false;
            this.SetNextWarParametrs();
            lock (this.JoinLock)
            {
                foreach (Character character in this.LightScores > this.DarkScores
                    ? this.LightTeam.Values
                    : this.DarkTeam.Values)
                {
                    if (this.MvpCharacter == null)
                    {
                        this.MvpCharacter = character;
                    }
                    else if ((int)this.MvpCharacter.BattlegroundActPoints < (int)character.BattlegroundActPoints)
                    {
                        this.MvpCharacter = character;
                    }
                }

                Asda2BattlegroundHandler.SendWiningFactionInfoResponse(this.Town, this.WiningFactionId,
                                                                       this.MvpCharacter == null ? "[No character]" : this.MvpCharacter.Name);
                if (this.MvpCharacter != null)
                {
                    ServerApp <WCell.RealmServer.RealmServer> .IOQueue.AddMessage((Action)(() =>
                    {
                        BattlegroundResultRecord battlegroundResultRecord = new BattlegroundResultRecord(this.Town,
                                                                                                         this.MvpCharacter.Name, this.MvpCharacter.EntityId.Low, this.LightScores, this.DarkScores);
                        battlegroundResultRecord.CreateLater();
                        this.CurrentWarResultRecordGuid = battlegroundResultRecord.Guid;
                        Asda2BattlegroundMgr.ProcessBattlegroundResultRecord(battlegroundResultRecord);
                    }));
                }
                foreach (Character character in this.LightTeam.Values)
                {
                    this.ProcessEndWar(character);
                }
                foreach (Character character in this.DarkTeam.Values)
                {
                    this.ProcessEndWar(character);
                }
                foreach (Asda2WarPoint point in this.Points)
                {
                    point.Status       = Asda2WarPointStatus.NotOwned;
                    point.OwnedFaction = (short)-1;
                    Asda2BattlegroundHandler.SendUpdatePointInfoResponse((IRealmClient)null, point);
                }

                WCell.RealmServer.Global.World.TaskQueue.CallDelayed(60000, new Action(this.KickAll));
            }
        }
예제 #2
0
 public static void InitBattlegrounds()
 {
     Asda2BattlegroundMgr.AllBattleGrounds.Add(Asda2BattlegroundTown.Alpia, new List <Asda2Battleground>());
     Asda2BattlegroundMgr.AllBattleGrounds.Add(Asda2BattlegroundTown.Silaris, new List <Asda2Battleground>());
     Asda2BattlegroundMgr.AllBattleGrounds.Add(Asda2BattlegroundTown.Flamio, new List <Asda2Battleground>());
     Asda2BattlegroundMgr.AllBattleGrounds.Add(Asda2BattlegroundTown.Aquaton, new List <Asda2Battleground>());
     Asda2BattlegroundMgr.AddBattleGround(Asda2BattlegroundTown.Alpia);
     Asda2BattlegroundMgr.AddBattleGround(Asda2BattlegroundTown.Silaris);
     Asda2BattlegroundMgr.AddBattleGround(Asda2BattlegroundTown.Flamio);
     Asda2BattlegroundMgr.AddBattleGround(Asda2BattlegroundTown.Aquaton);
     foreach (BattlegroundResultRecord battlegroundResultRecord in ActiveRecordBase <BattlegroundResultRecord>
              .FindAll())
     {
         Asda2BattlegroundMgr.ProcessBattlegroundResultRecord(battlegroundResultRecord);
     }
 }
예제 #3
0
        public void Stop()
        {
            if (!IsRunning)
            {
                return;
            }
            _notificationsAboutStart = 3;
            IsStarted = false;
            World.Broadcast(string.Format("ÇáÍÑÈ Ýí {0} ÇäÊåÊ.. äÞÇØ ÇáäæÑ {1} ÖÏ {2} äÞÇØ ÇáÙáÇã", Town, LightScores,
                                          DarkScores));
            IsRunning = false;
            SetNextWarParametrs();
            //Notify players war ended.
            lock (JoinLock)
            {
                //find mvp
                foreach (var character in LightScores > DarkScores ? LightTeam.Values : DarkTeam.Values)
                {
                    if (MvpCharacter == null)
                    {
                        MvpCharacter = character;
                        continue;
                    }
                    if (MvpCharacter.BattlegroundActPoints < character.BattlegroundActPoints)
                    {
                        MvpCharacter = character;
                    }
                }
                Asda2BattlegroundHandler.SendWiningFactionInfoResponse(Town, WiningFactionId,
                                                                       MvpCharacter == null ? "[áÇ ÃÍÏ]" : MvpCharacter.Name);

                if (MvpCharacter != null)
                {
                    //create db records about war

                    RealmServer.IOQueue.AddMessage(() =>
                    {
                        var warResRec = new BattlegroundResultRecord(Town, MvpCharacter.Name, MvpCharacter.EntityId.Low,
                                                                     LightScores, DarkScores);
                        warResRec.CreateLater();
                        CurrentWarResultRecordGuid = warResRec.Guid;
                        Asda2BattlegroundMgr.ProcessBattlegroundResultRecord(warResRec);
                    });
                }
                foreach (var character in LightTeam.Values)
                {
                    ProcessEndWar(character);
                    if (WiningFactionId == 0)
                    {
                        Asda2TitleChecker.OnWinWar(character);
                    }
                    else
                    {
                        Asda2TitleChecker.OnLoseWar(character);
                    }
                }
                foreach (var character in DarkTeam.Values)
                {
                    ProcessEndWar(character);
                    if (WiningFactionId == 1)
                    {
                        Asda2TitleChecker.OnWinWar(character);
                    }
                    else
                    {
                        Asda2TitleChecker.OnLoseWar(character);
                    }
                }
                foreach (var asda2WarPoint in Points)
                {
                    asda2WarPoint.Status       = Asda2WarPointStatus.NotOwned;
                    asda2WarPoint.OwnedFaction = -1;

                    Asda2BattlegroundHandler.SendUpdatePointInfoResponse(null, asda2WarPoint);
                }
                World.TaskQueue.CallDelayed(60000, KickAll);
            }
        }