public static List <string> FindTemplateNames() { EncounterBuilder.build_template_list("", Difficulty.Random, -1, true); List <string> strs = new List <string>(); foreach (EncounterTemplateGroup fTemplateGroup in EncounterBuilder.fTemplateGroups) { strs.Add(fTemplateGroup.Name); } strs.Sort(); return(strs); }
public static List <Pair <EncounterTemplateGroup, EncounterTemplate> > FindTemplates(Encounter enc, int level, bool include_individual) { EncounterBuilder.build_template_list("", Difficulty.Random, level, include_individual); List <Pair <EncounterTemplateGroup, EncounterTemplate> > pairs = new List <Pair <EncounterTemplateGroup, EncounterTemplate> >(); foreach (EncounterTemplateGroup fTemplateGroup in EncounterBuilder.fTemplateGroups) { foreach (EncounterTemplate template in fTemplateGroup.Templates) { EncounterTemplate encounterTemplate = template.Copy(); bool flag = true; foreach (EncounterSlot slot in enc.Slots) { EncounterTemplateSlot encounterTemplateSlot = encounterTemplate.FindSlot(slot, level); if (encounterTemplateSlot == null) { flag = false; break; } else { EncounterTemplateSlot count = encounterTemplateSlot; count.Count = count.Count - slot.CombatData.Count; if (encounterTemplateSlot.Count > 0) { continue; } encounterTemplate.Slots.Remove(encounterTemplateSlot); } } if (!flag) { continue; } bool flag1 = true; foreach (EncounterTemplateSlot slot1 in encounterTemplate.Slots) { bool flag2 = false; int num = level + slot1.LevelAdjustment; EncounterBuilder.build_creature_list(num, num, null, null, true); foreach (EncounterCard fCreature in EncounterBuilder.fCreatures) { if (!slot1.Match(fCreature, level)) { continue; } flag2 = true; break; } if (flag2) { continue; } flag1 = false; break; } if (!flag1) { continue; } pairs.Add(new Pair <EncounterTemplateGroup, EncounterTemplate>(fTemplateGroup, encounterTemplate)); } } return(pairs); }
public static bool Build(AutoBuildData data, Encounter enc, bool include_individual) { int num = Math.Max(data.Level - 4, 1); int level = data.Level + 5; EncounterBuilder.build_creature_list(num, level, data.Categories, data.Keywords, true); if (EncounterBuilder.fCreatures.Count == 0) { return(false); } EncounterBuilder.build_template_list(data.Type, data.Difficulty, data.Level, include_individual); if (EncounterBuilder.fTemplateGroups.Count == 0) { return(false); } EncounterBuilder.build_trap_list(data.Level); EncounterBuilder.build_challenge_list(data.Level); int num1 = 0; while (num1 < 100) { num1++; int num2 = Session.Random.Next() % EncounterBuilder.fTemplateGroups.Count; EncounterTemplateGroup item = EncounterBuilder.fTemplateGroups[num2]; int num3 = Session.Random.Next() % item.Templates.Count; EncounterTemplate encounterTemplate = item.Templates[num3]; bool flag = true; List <EncounterSlot> encounterSlots = new List <EncounterSlot>(); foreach (EncounterTemplateSlot slot in encounterTemplate.Slots) { List <EncounterCard> encounterCards = new List <EncounterCard>(); foreach (EncounterCard fCreature in EncounterBuilder.fCreatures) { if (!slot.Match(fCreature, data.Level)) { continue; } encounterCards.Add(fCreature); } if (encounterCards.Count != 0) { int num4 = Session.Random.Next() % encounterCards.Count; EncounterSlot encounterSlot = new EncounterSlot() { Card = encounterCards[num4] }; for (int i = 0; i != slot.Count; i++) { CombatData combatDatum = new CombatData(); encounterSlot.CombatData.Add(combatDatum); } encounterSlots.Add(encounterSlot); } else { flag = false; break; } } if (!flag) { continue; } enc.Slots = encounterSlots; enc.Traps.Clear(); enc.SkillChallenges.Clear(); switch (Session.Random.Next(12)) { case 4: case 5: { if (!EncounterBuilder.add_trap(enc)) { break; } EncounterBuilder.remove_creature(enc); break; } case 6: { if (!EncounterBuilder.add_challenge(enc)) { break; } EncounterBuilder.remove_creature(enc); break; } case 7: { if (!EncounterBuilder.add_lurker(enc)) { break; } EncounterBuilder.remove_creature(enc); break; } case 8: case 9: { EncounterBuilder.add_trap(enc); Difficulty difficulty = enc.GetDifficulty(data.Level, data.Size); if (difficulty != Difficulty.Hard && difficulty != Difficulty.Extreme) { break; } EncounterBuilder.remove_creature(enc); break; } case 10: { Difficulty difficulty1 = enc.GetDifficulty(data.Level, data.Size); if (difficulty1 == Difficulty.Hard || difficulty1 == Difficulty.Extreme) { EncounterBuilder.remove_creature(enc); } EncounterBuilder.add_challenge(enc); break; } case 11: { EncounterBuilder.add_lurker(enc); Difficulty difficulty2 = enc.GetDifficulty(data.Level, data.Size); if (difficulty2 != Difficulty.Hard && difficulty2 != Difficulty.Extreme) { break; } EncounterBuilder.remove_creature(enc); break; } } while (enc.GetDifficulty(data.Level, data.Size) == Difficulty.Extreme && enc.Count > 1) { EncounterBuilder.remove_creature(enc); } foreach (EncounterSlot slot1 in enc.Slots) { slot1.SetDefaultDisplayNames(); } return(true); } return(false); }