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(); }
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); }