コード例 #1
0
 def get(self):
     """Returns a random encounter meeting the supplied specifications."""
     args = parser.parse_args()
     character_level_dict = Counter(args["character_levels"])
     monster_sets = args["monster_sets"]
     difficulty = args["difficulty"]
     if not args["difficulty"] is None and args["difficulty"] not in [
             "medium",
             "easy",
             "hard",
     ]:
         raise BadRequest("Invalid difficulty value")
     if not all([
             monster_set in monster_manual.monster_sets
             for monster_set in monster_sets
     ]):
         raise BadRequest("One or more invalid monster sets in request")
     if not all([level <= 20 for level in character_level_dict.keys()]):
         raise BadRequest("Maximum character level is 20")
     source = EncounterSource(character_level_dict=character_level_dict,
                              monster_sets=monster_sets)
     encounter = source.get_encounter(difficulty=difficulty)
     return encounter
コード例 #2
0
class PlacePopulator:
    def __init__(self,
                 terrain=None,
                 all_tags=None,
                 none_tags=None,
                 any_tags=None,
                 level=None,
                 monster_set=None):
        self.mm = MonsterManual(terrain=terrain)
        if monster_set is None:
            sets = self.mm.get_monster_sets(all_tags=all_tags,
                                            none_tags=none_tags,
                                            any_tags=any_tags,
                                            level=level)
            monster_set = random.choice(sets)
        self.monster_set = monster_set
        self.source = EncounterSource(encounter_level=level,
                                      monster_sets=[self.monster_set])

    def apply(self, graph):
        for node, data in graph.nodes(data=True):
            if random.randint(1, 6) >= 5:
                data["signs"] = self.source.get_sign()
                data["encounter"] = self.source.get_encounter()
コード例 #3
0
 def choose_dragon(self):
     dragons = special_events_data['dragon lair']['dragons']
     dragon_source = EncounterSource(encounter_level=self.level,
                                     monster_sets=dragons)
     return dragon_source.get_encounter(difficulty='hard')
コード例 #4
0
def test_encounter_source_summary():
    source = EncounterSource(monster_set="jailers")
    print(source.get_encounter())