public static void MonsterFight(Character character, NpcReplyRecord reply)
        {
            List <MonsterRecord> templates = new List <MonsterRecord>();

            foreach (var monsterId in reply.Value1.FromCSV <ushort>())
            {
                templates.Add(MonsterRecord.GetMonster(monsterId));
            }

            List <MonsterRecord> allyTemplates = new List <MonsterRecord>();

            foreach (var monsterId in reply.Value2.FromCSV <ushort>())
            {
                allyTemplates.Add(MonsterRecord.GetMonster(monsterId));
            }

            FightInstancePvM fight = FightProvider.Instance.CreateFightInstancePvM(templates.ToArray(), character.Map);

            fight.RedTeam.AddFighter(character.CreateFighter(fight.RedTeam));

            var random = new AsyncRandom();

            foreach (var ally in allyTemplates)
            {
                fight.RedTeam.AddFighter(new MonsterFighter(fight.RedTeam, ally, ally.RandomGrade(random), character.CellId));
            }

            foreach (var fighter in fight.Group.CreateFighters(fight.BlueTeam))
            {
                fight.BlueTeam.AddFighter(fighter);
            }

            fight.StartPlacement();
        }
示例#2
0
        public FightInstancePvM CreateFightInstancePvM(MonsterRecord[] templates, MapRecord map)
        {
            FightTeam        blueTeam = new FightTeam((sbyte)TeamEnum.TEAM_DEFENDER, map.BlueCells, AlignmentSideEnum.ALIGNMENT_WITHOUT, TeamTypeEnum.TEAM_TYPE_MONSTER);
            FightTeam        redTeam  = new FightTeam((sbyte)TeamEnum.TEAM_CHALLENGER, map.RedCells, AlignmentSideEnum.ALIGNMENT_WITHOUT, TeamTypeEnum.TEAM_TYPE_PLAYER);
            FightInstancePvM fight    = new FightInstancePvM(map, blueTeam, redTeam, templates);

            Fights.Add(fight);
            return(fight);
        }