Ejemplo n.º 1
0
        public override void FightEnd(FightTeam winners, FightTeam loosers)
        {
            if (State == FightState.STARTING)
                Map.Send(FormatFlagDestroy());

            StringBuilder builder = new StringBuilder("GE");

            builder.Append(EndTime).Append('|');
            builder.Append(ID).Append('|');
            builder.Append(Type == FightType.AGRESSION ? 1 : 0);

            foreach (Fighter fighter in GetFighters())
            {
                builder.Append('|').Append(fighter.Team == winners ? 2 : 0).Append(';');
                builder.Append(fighter.ID).Append(';');
                builder.Append(fighter.Name).Append(';');
                builder.Append(fighter.Level).Append(';');
                builder.Append(fighter.Dead ? 1 : 0).Append(';');

                if (Utilities.Config.GetBoolElement("EnableExpInPvPFight") && (fighter.Team == winners))
                {
                    var exp = (int)(GetFighters().ToList().FindAll(x => x.Team != fighter.Team).Count * Utilities.Formulas.ExpPvp(fighter.Character.Level, fighter.Team.GetFighters().Sum
                        (x => x.Level), GetFighters().ToList().FindAll(x => x.Team != fighter.Team).Sum(x => x.Level)));

                    fighter.Character.AddExp(exp);

                    builder.Append(Entities.Requests.LevelsRequests.ReturnLevel(fighter.Character.Level).Character).Append(";").Append(fighter.Character.Exp).Append(";");
                    builder.Append((fighter.Character.Level != Entities.Requests.LevelsRequests.MaxLevel() ? Entities.Requests.LevelsRequests.ReturnLevel(fighter.Character.Level + 1).Character.ToString() : "-1")).Append(";");
                    builder.Append(exp).Append(";;;;");
                }
                else
                    builder.Append(";;;;;;;");
            }

            Send(builder.ToString());

            State = FightState.FINISHED;

            foreach (Fighter fighter in GetFighters().OfType<CharacterFighter>())
            {
                if (fighter.Fight == this)
                {
                    fighter.Buffs.Debuff();

                    fighter.Character.State.InFight = false;
                    fighter.Character.Fight = null;
                    fighter.Character.Fighter = null;
                }
            }

            KickSpectator(true);

            Map.RemoveFight(this);
            Map.Send(Map.FormatFightCount());
        }
Ejemplo n.º 2
0
        public Fight(FightType type, Map map)
        {
            myID = map.NextFightID();
            myType = type;
            myState = FightState.STARTING;

            myMap = map;
            myTimer = new Timer(new TimerCallback(TimerLoop), null, 1000, 1000);

            Dictionary<int, int[]> places = GeneratePlaces();

            myTeam1 = new FightTeam(0, places[0]);
            myTeam2 = new FightTeam(1, places[1]);
        }
Ejemplo n.º 3
0
        private void KickNoParty(FightTeam team)
        {
            if (myState != FightState.STARTING)
                return;

            foreach (Fighter fighter in team.GetFighters())
                if (!team.CanJoin(fighter.Character)) PlayerLeave(fighter);
        }
Ejemplo n.º 4
0
 public FightTeam GetEnnemyTeam(FightTeam team)
 {
     return (team == myTeam1 ? myTeam2 : myTeam1);
 }
Ejemplo n.º 5
0
 public string FormatFlagOption(ToggleType type, FightTeam team)
 {
     return new StringBuilder("Go").Append(team.IsToggle(type) ? '+' : '-').Append(type == ToggleType.LOCK ? 'A' : (char)type).Append(team.ID).ToString();
 }
Ejemplo n.º 6
0
 public abstract void FightEnd(FightTeam winners, FightTeam loosers);
Ejemplo n.º 7
0
 public bool CanJoin(Character player, FightTeam team)
 {
     return myState == FightState.STARTING && team.CanJoin(player);
 }