def field_camp( self ): """The party is going camping. Yahoo!""" self.alert( "You camp down to take a short rest..." ) awareness = min( self.camp.party_stat( stats.AWARENESS, stats.INTELLIGENCE ) + 55 - self.camp.scene.rank * 5 + self.safe_camp_bonus, 95 ) if random.randint(1,100) <= awareness: self.camp.rest( 0.5 ) self.alert( "...and wake up perfectly refreshed." ) self.safe_camp_bonus = 0 elif random.randint(1,3)==2 and self.camp.gold > random.randint( 1500,10000 ): lose = max( self.camp.gold // 2, 1 ) self.camp.gold -= lose self.camp.rest( 0.5 ) self.alert( "...but when you wake up, {0}gp is missing!".format( lose ) ) self.safe_camp_bonus = 0 else: pc = self.camp.first_living_pc() aoe = list() for x in range( pc.pos[0]-3, pc.pos[0]+4 ): for y in range( pc.pos[1]-3, pc.pos[1]+4 ): if self.scene.on_the_map(x,y) and not self.scene.map[x][y].blocks_walking() and not self.scene.get_character_at_spot((x,y)): aoe.append( (x,y) ) team = teams.Team(default_reaction=-999,rank=(self.scene.rank + self.camp.party_rank() )//2, strength=random.randint(40,65), habitat=self.scene.get_encounter_request()) mons = team.build_encounter( self.scene ) for m in mons: if aoe: p = random.choice( aoe ) aoe.remove( p ) m.place( self.scene, p ) else: break self.alert( "...and get woken up by monsters!" ) self.safe_camp_bonus += 25 self.camp.activate_monster( mons[0] )
def custom_init(self, nart): scene = self.elements.get("LOCALE") mygen = nart.get_map_generator(scene) room = mygen.DEFAULT_ROOM() myteam = teams.Team(default_reaction=-999, rank=self.rank + 1, strength=200, habitat={context.MTY_BEAST: True}, hodgepodge=True) room.contents.append(myteam) myhabitat = scene.get_encounter_request() myhabitat[context.MTY_HUMANOID] = True myhabitat[(context.MTY_LEADER, context.MTY_FIGHTER)] = True scene.fac.alter_monster_request(myhabitat) btype = monsters.choose_monster_type(self.rank - 3, self.rank + 1, myhabitat) if btype: boss = monsters.generate_boss(btype, self.rank + 1, team=myteam) myitem = items.generate_special_item(self.rank) if myitem: boss.contents.append(myitem) myspear = items.generate_special_item(self.rank + 1, item_type=items.POLEARM) if myspear: boss.contents.append(myspear) myteam.boss = boss self.register_element("_ROOM", room, dident="LOCALE") self.register_element("BOSS", boss, "_ROOM") return btype
def custom_init(self, nart): scene = self.elements.get("LOCALE") mygen = nart.get_map_generator(scene) room = mygen.DEFAULT_ROOM() myhabitat = scene.get_encounter_request() myhabitat[context.MTY_HUMANOID] = context.PRESENT myhabitat[context.MTY_FIGHTER] = context.MAYBE room.contents.append( teams.Team(default_reaction=-999, rank=self.rank + 1, strength=100, habitat=myhabitat, fac=self.elements.get("ANTAGONIST"))) room.contents.append(maps.WALL_WEAPON_RACK) room.contents.append(maps.WALL_WEAPON_RACK) for t in range(random.randint(2, 4)): mychest = waypoints.MediumChest() mychest.stock(self.rank) weapon = None weapon = items.choose_item(random.choice(items.WEAPON_TYPES), self.rank) if weapon: items.make_item_magic(weapon, self.rank + 1) weapon.identified = False mychest.contents.append(weapon) room.contents.append(mychest) self.register_element("_ROOM", room, dident="LOCALE") return True
def custom_init( self, nart ): """Create the final dungeon, boss encounter, and resolution.""" btype = monsters.choose_monster_type(self.rank+1,self.rank+4,{(context.MTY_HUMANOID,context.MTY_LEADER):True,context.MTY_LEADER:context.MAYBE}) boss = monsters.generate_boss( btype, self.rank+4 ) interior = maps.Scene( 65,65, sprites={maps.SPRITE_WALL: "terrain_wall_darkbrick.png", maps.SPRITE_FLOOR: "terrain_floor_dungeon.png", }, biome=context.HAB_BUILDING, setting=self.setting, desctags=(context.MAP_DUNGEON,context.MTY_HUMANOID) ) igen = randmaps.SubtleMonkeyTunnelScene( interior ) interior.name = "{0}'s Base".format( boss ) self.register_scene( nart, interior, igen, ident="_LAIR" ) self.add_sub_plot( nart, "CONNECT", PlotState( elements={"PREV":self.elements["FINAL_DUNGEON"],"NEXT":interior} ).based_on( self ) ) team = teams.Team(default_reaction=-999, rank=self.rank, strength=200, habitat=interior.get_encounter_request(), respawn=False, boss=boss ) int_goalroom = randmaps.rooms.SharpRoom( tags=(context.GOAL,), parent=interior ) int_goalroom.contents.append( team ) boss.team = team self.register_element( "_LAIR_ROOM", int_goalroom ) self.register_element( "ENEMY", boss, "_LAIR_ROOM" ) self.add_sub_plot( nart, "DUNGEON_ARMORY", PlotState( elements={"LOCALE":interior} ).based_on( self ) ) self.add_resolution( nart, "RESOLVE_FIGHT", ident="next" ) self.enemy_defeated = False #self.add_sub_plot( nart, "CONNECT", PlotState( elements={"PREV":self.elements["LOCALE"],"NEXT":interior} ).based_on( self ) ) return True
def update_scene( self ): """If appropriate, move models back to their home zone and restock monsters.""" if self.scene.last_updated < self.camp.day: for m in self.scene.contents: if isinstance( m, characters.Character ) and m not in self.camp.party: # Regenerate any damage suffered since last time. m.hp_damage = 0 m.mp_damage = 0 if m.team and m.team.home and not m.team.home.collidepoint( m.pos ): # This monster is lost. Send it back home. m.pos = self.scene.find_entry_point_in_rect( m.team.home ) # Check the monster zones. Restock random monsters. party_rank = self.camp.party_rank() restock_chance = 50 if party_rank > self.scene.rank: restock_chance = max( 10, ( restock_chance * 2 ) // ( 2 + party_rank - self.scene.rank ) ) for mz in self.scene.monster_zones: if self.scene.monster_zone_is_empty( mz ) and random.randint(1,100) <= restock_chance: NewTeam = teams.Team( default_reaction=characters.SAFELY_ENEMY, home=mz, rank=max( self.scene.rank, ( self.scene.rank + party_rank ) // 2 ), strength=100, habitat=self.scene.get_encounter_request() ) mlist = NewTeam.build_encounter(self.scene) poslist = self.scene.find_free_points_in_rect( mz ) for m in mlist: if poslist: pos = random.choice( poslist ) m.place( self.scene, pos ) poslist.remove( pos ) else: break self.scene.last_updated = self.camp.day
def custom_init(self, nart): scene = self.elements.get("LOCALE") mygen = nart.get_map_generator(scene) room = mygen.DEFAULT_ROOM() room.DECORATE = randmaps.decor.CarnageDec() myteam = self.register_element( "TEAM", teams.Team(default_reaction=-999, rank=self.rank, strength=0, habitat={ context.GEN_UNDEAD: True, context.DES_EARTH: True })) room.contents.append(myteam) self.register_element("_ROOM", room, dident="LOCALE") mychest = self.register_element("CHEST", waypoints.LargeChest(plot_locked=True), dident="_ROOM") mychest.stock(self.rank) for t in range(random.randint(1, 3)): myitem = items.generate_special_item(self.rank + 1) if myitem: mychest.contents.append(myitem) self.trap_ready = False return True
def custom_init( self, nart ): """Install the dungeon.""" # Create the intermediary level. interior = maps.Scene( 65,65, sprites={maps.SPRITE_WALL: "terrain_wall_darkbrick.png", maps.SPRITE_GROUND: "terrain_ground_under.png", maps.SPRITE_FLOOR: "terrain_floor_tile.png" }, fac=self.elements["ANTAGONIST"], biome=context.HAB_TUNNELS, setting=self.setting, desctags=(context.MAP_DUNGEON,) ) igen = randmaps.SubtleMonkeyTunnelScene( interior ) self.register_scene( nart, interior, igen, ident="LOCALE" ) # Create the goal room. team = teams.Team(default_reaction=-999, rank=self.rank, strength=50, habitat=interior.get_encounter_request(), fac=self.elements["ANTAGONIST"], respawn=False ) int_goalroom = randmaps.rooms.SharpRoom( tags=(context.GOAL,), parent=interior ) int_goalroom.contents.append( team ) # Create the guardian. boss = self.register_element( "_BOSS", monsters.generate_npc(team=team,upgrade=True,rank=self.rank+3) ) self.enemy_defeated = False interior.name = "{}'s Chamber".format( boss ) int_goalroom.contents.append( boss ) for t in range( random.randint(2,4) ): self.add_sub_plot( nart, "ENCOUNTER" ) # Connect to previous level. self.add_sub_plot( nart, "CONNECT", PlotState( elements={"PREV":self.elements["LAST_DUNGEON"],"NEXT":interior} ).based_on( self ) ) # Add a BARDIC_FRESHSTART to install the dungeon somewhere else. sp = self.add_sub_plot( nart, "BARDIC_FRESHSTART" ) self.register_element( "DESTINATION", sp.elements.get( "LOCALE" ) ) return True
def custom_init(self, nart): # Create the lever and spirit room. scene = self.elements.get("LOCALE") mygen = nart.get_map_generator(scene) # Spirit jar room puzzle_room = randmaps.rooms.SharpRoom(tags=(context.ENTRANCE, )) team = teams.Team(default_reaction=-999, respawn=False) if random.randint(1, 3) == 1: puzzle_room.contents.append( teams.Team(default_reaction=-999, rank=self.rank, strength=100, habitat=scene.get_encounter_request(), fac=scene.fac)) self.register_element("_PUZZLE_ROOM", puzzle_room, dident="LOCALE") self.register_element("_SOURCE", waypoints.SpiritJar( plot_locked=True, anchor=randmaps.anchors.middle), dident="_PUZZLE_ROOM") self.spirit_contained = True myhabitat = { (context.MTY_ELEMENTAL, context.MTY_UNDEAD, context.MTY_CELESTIAL, context.MTY_DEMON): True, tuple(self.elements["TARGET"].desctags): True } btype = monsters.choose_monster_type(self.rank, self.rank + 2, myhabitat) if btype: boss = self.register_element( "_MONSTER", monsters.generate_boss(btype, self.rank + 2, team=team)) if random.randint(1, 2) == 1: myitem = self.register_element( "_ITEM", items.generate_special_item(self.rank + random.randint(1, 2))) else: myitem = self.register_element( "_ITEM", items.generate_scroll(self.rank + random.randint(1, 2))) return btype and myitem
def custom_init(self, nart): scene = self.elements.get("LOCALE") mygen = nart.get_map_generator(scene) # Bridge room bridge_room = randmaps.rooms.BottleneckRoom() bridge_room.special_c["door"] = self.register_element( "_DOOR", waypoints.LockableDoor(plot_locked=True)) mygen.special_c["bridge"] = bridge_room self.register_element("_BRIDGE_ROOM", bridge_room, dident="LOCALE") # Key room key_room = mygen.DEFAULT_ROOM(tags=(context.ENTRANCE, )) myteam = self.register_element( "TEAM", teams.Team(default_reaction=-999, rank=self.rank, strength=150, habitat=scene.get_encounter_request())) key_room.contents.append(myteam) self.register_element("_KEY_ROOM", key_room, dident="LOCALE") self._ready = True npc = self.register_element("NPC", monsters.generate_npc(team=myteam, fac=scene.fac, rank=self.rank, upgrade=True), dident="_KEY_ROOM") myteam.boss = npc # Post-bridge encounter room = mygen.DEFAULT_ROOM() mygen.special_c["after_bridge"] = room myhabitat = scene.get_encounter_request() myhabitat[context.MTY_HUMANOID] = context.PRESENT myhabitat[context.MTY_FIGHTER] = context.MAYBE room.contents.append( teams.Team(default_reaction=-999, rank=self.rank, strength=150, habitat=myhabitat)) self.register_element("_ROOM", room, dident="LOCALE") return True
def simulate(inning_to_start_at_second=None, n=1): """ Simulate a game provided an inning to start runners on 2nd base and the number of simulations desired""" outcomes = [] for _ in range(1, n + 1): cubs = teams.Team('Cubs') marlins = teams.Team('Marlins') g = games.Game(home_team=cubs, away_team=marlins, late_inning_base_change=inning_to_start_at_second) g.play_game() outcomes.append({ 'inning': g.inning, 'top_flag': not g.bottom_of_inning, 'home_team_runs': g.home_team.runs, 'away_team_runs': g.away_team.runs, 'total_runs': g.home_team.runs + g.away_team.runs }) return outcomes
def custom_init(self, nart): """Create map, fill with city + services.""" biome = self.elements.setdefault("BIOME", randmaps.architect.make_wilderness()) archi = self.register_element("ARCHITECTURE", randmaps.architect.Village(biome.biome)) culture = self.elements.setdefault("CULTURE", teams.PolisFaction()) myscene, mymapgen = randmaps.architect.design_scene( 90, 90, randmaps.EdgeOfCivilization, biome, secondary=archi, setting=self.setting) myscene.desctags.append(context.DES_CIVILIZED) self.register_scene(nart, myscene, mymapgen, ident="LOCALE") castle = self.register_element( "CITY", randmaps.rooms.CastleRoom(width=35, height=35, tags=(context.CIVILIZED, context.ROOM_PUBLIC), parent=myscene)) myroom = randmaps.rooms.FuzzyRoom(tags=(context.ENTRANCE, ), parent=castle) myteam = teams.Team(strength=0, default_reaction=characters.SAFELY_FRIENDLY) castle.contents.append(myteam) myent = waypoints.Well() myroom.contents.append(myent) myroom.contents.append(monsters.generate_npc(team=myteam, fac=culture)) myroom.contents.append(monsters.generate_npc(team=myteam, fac=culture)) self.register_element("ENTRANCE", myent) self.chapter.world.add_entrance(myscene, myscene.name, worlds.W_CITY, myent, True) self.add_sub_plot(nart, "CITY_GENERALSTORE") self.add_sub_plot(nart, "CITY_LIBRARY") self.add_sub_plot(nart, "CITY_INN") self.add_sub_plot(nart, "CITY_TEMPLE") self.add_sub_plot(nart, "CITY_EXTRASHOP") for t in range(random.randint(1, 4)): self.add_sub_plot(nart, "ENCOUNTER") self.add_sub_plot(nart, "SPECIAL_FEATURE") self.add_sub_plot(nart, "TEST_FEATURE", necessary=False) self.add_sub_plot( nart, "CITY_STORY", PlotState(rank=self.random_rank_in_chapter()).based_on(self)) return True
def custom_init(self, nart): scene = self.elements.get("LOCALE") mygen = nart.get_map_generator(scene) room = mygen.DEFAULT_ROOM() myhabitat = scene.get_encounter_request() myhabitat[context.MTY_HUMANOID] = context.MAYBE room.contents.append( teams.Team(default_reaction=-999, rank=self.rank, strength=100, habitat=scene.get_encounter_request(), fac=scene.fac)) self.register_element("_ROOM", room, dident="LOCALE") return True
def custom_init(self, nart): scene = self.elements.get("LOCALE") mygen = nart.get_map_generator(scene) # Bridge room bridge_room = randmaps.rooms.BottleneckRoom() self._bridge_door = waypoints.PuzzleDoor() bridge_room.special_c["door"] = self._bridge_door mygen.special_c["bridge"] = bridge_room self.register_element("_BRIDGE_ROOM", bridge_room, dident="LOCALE") # Lever room lever_room = randmaps.rooms.SharpRoom(tags=(context.ENTRANCE, )) lever_room.contents.append( teams.Team(default_reaction=-999, rank=self.rank, strength=150, habitat=scene.get_encounter_request())) self.register_element("_LEVER_ROOM", lever_room, dident="LOCALE") lever = waypoints.PuzzleSwitch() self.register_element("_LEVER", lever, dident="_LEVER_ROOM") # Post-bridge encounter room = mygen.DEFAULT_ROOM() mygen.special_c["after_bridge"] = room myhabitat = scene.get_encounter_request() myhabitat[context.MTY_HUMANOID] = context.PRESENT myhabitat[context.MTY_FIGHTER] = context.MAYBE room.contents.append( teams.Team(default_reaction=-999, rank=self.rank, strength=150, habitat=myhabitat)) self.register_element("_ROOM", room, dident="LOCALE") return True
def custom_init(self, nart): scene = self.elements.get("LOCALE") mygen = nart.get_map_generator(scene) room = mygen.DEFAULT_ROOM() room.contents.append( teams.Team(default_reaction=-999, rank=self.rank, strength=125, habitat=scene.get_encounter_request(), fac=scene.fac)) mychest = waypoints.MediumChest() mychest.stock(self.rank) room.contents.append(mychest) self.register_element("_ROOM", room, dident="LOCALE") return True
def custom_init(self, nart): # Add an encounter, monsters must be MTY_BEAST, favoring GEN_NATURE. scene = self.elements.get("LOCALE") mygen = nart.get_map_generator(scene) room = mygen.DEFAULT_ROOM() myhabitat = scene.get_encounter_request() myhabitat[context.MTY_BEAST] = context.PRESENT myhabitat[context.GEN_NATURE] = context.MAYBE room.contents.append( teams.Team(default_reaction=-999, rank=self.rank, strength=random.randint(90, 120), habitat=myhabitat)) self.register_element("_ROOM", room, dident="LOCALE") return True
def custom_init(self, nart): scene = self.elements.get("LOCALE") room = randmaps.rooms.FuzzyRoom() myteam = teams.Team(default_reaction=-999, rank=self.rank, strength=0, habitat=None) room.contents.append(myteam) monster = monsters.ignan.Azer(myteam) room.contents.append(monster) room.contents.append(waypoints.HealingFountain()) mychest = waypoints.MediumChest() mychest.stock(20) room.contents.append(mychest) self.register_element("_ROOM", room, dident="LOCALE") return True
def custom_init(self, nart): # Add a group of humanoids, hostile reaction score. scene = self.elements.get("LOCALE") mygen = nart.get_map_generator(scene) room = mygen.DEFAULT_ROOM() myteam = self.register_element( "TEAM", teams.Team(default_reaction=-50, strength=0)) room.contents.append(myteam) self.register_element("_ROOM", room, dident="LOCALE") p1 = self.register_element("NPC1", monsters.generate_npc(team=myteam, job=random.choice( self.FIGHTERS), upgrade=True, rank=self.rank, fac=scene.fac), dident="_ROOM") p2 = self.register_element("NPC2", monsters.generate_npc(team=myteam, job=random.choice( self.THIEVES), upgrade=True, rank=self.rank, fac=scene.fac), dident="_ROOM") p3 = self.register_element("NPC3", monsters.generate_npc(team=myteam, job=random.choice( self.PRIESTS), upgrade=True, rank=self.rank, fac=scene.fac), dident="_ROOM") p4 = self.register_element("NPC4", monsters.generate_npc(team=myteam, job=random.choice( self.MAGES), upgrade=True, rank=self.rank, fac=scene.fac), dident="_ROOM") self.add_sub_plot( nart, "RESOURCE_NPCCONVO", PlotState(elements={ "NPC": random.choice((p1, p2, p3, p4)) }).based_on(self)) return True
def custom_init(self, nart): scene = self.elements.get("LOCALE") room = randmaps.rooms.SharpRoom(random.randint(9, 15), random.randint(9, 15)) room.DECORATE = randmaps.decor.BedroomDec() room.contents.append( teams.Team(default_reaction=0, rank=self.rank, strength=120, habitat=scene.get_encounter_request(), fac=scene.fac)) for t in range(random.randint(1, 3)): mychest = waypoints.SmallChest() mychest.stock(self.rank) room.contents.append(mychest) self.register_element("_ROOM", room, dident="LOCALE") return True
def custom_init(self, nart): """Create the climax level.""" interior = maps.Scene(65, 65, sprites={ maps.SPRITE_WALL: "terrain_wall_darkbrick.png", maps.SPRITE_GROUND: "terrain_ground_under.png", maps.SPRITE_FLOOR: "terrain_floor_gravel.png" }, biome=context.HAB_TUNNELS, setting=self.setting, desctags=(context.MAP_DUNGEON, context.MAP_GODOWN)) igen = randmaps.SubtleMonkeyTunnelScene(interior) self.register_scene(nart, interior, igen, ident="LOCALE") # Create the guardiarn. btype = monsters.choose_monster_type( self.rank, self.rank + 2, { (context.DES_EARTH, context.MTY_FIGHTER, context.MTY_CONSTRUCT): True, context.DES_EARTH: context.MAYBE }) boss = monsters.generate_boss(btype, self.rank + 3) interior.name = "{0}'s Lair".format(boss) # Create the goal room. team = teams.Team(default_reaction=-999, rank=self.rank, strength=200, habitat=interior.get_encounter_request(), respawn=False, boss=boss) int_goalroom = randmaps.rooms.SharpRoom(tags=(context.GOAL, ), parent=interior) int_goalroom.contents.append(team) int_goalroom.contents.append(boss) boss.team = team # Alter the plot state to reflect this climax. self.register_element("SP_GOAL", context.SP_GOAL_SUMMON_DARKGOD) self.register_element("SP_MOT", context.SP_MOT_DESTROY_THE_WORLD) return True
def main(): pygame.init() scr = pygame.display.set_mode( (400, 300) ) t = teams.Team( 'test.team' ) p = character.Character( 'simon.chr' ) t.addUnit( p ) a = Level( scr, 'test.level', [t] ) a.mapx = 0 a.mapy = 0 # Map should error-check this! # ...no, that'll happen as part of the character movement. p.xCord = 3 p.yCord = 3 a.mainloop()
def custom_init(self, nart): scene = self.elements.get("LOCALE") room = randmaps.rooms.SharpRoom() room.DECORATE = randmaps.decor.LibraryDec(win=None) room.contents.append(waypoints.Bookshelf()) # Create a chest, and stock it with magical goodies. mychest = waypoints.LargeChest() mychest.stock(self.rank, item_types=(items.SCROLL, items.POTION)) room.contents.append(mychest) for t in range(random.randint(5, 8)): myitem = items.generate_scroll(self.rank + 1) if myitem: myitem.identified = True mychest.contents.append(myitem) # Create a team for our undead spellcaster. myhabitat = {context.GEN_UNDEAD: True} myteam = self.register_element( "TEAM", teams.Team(default_reaction=-25, rank=self.rank, strength=0, habitat=myhabitat)) room.contents.append(myteam) mh2 = myhabitat.copy() mh2[(context.MTY_MAGE, context.MTY_PRIEST)] = True btype = monsters.choose_monster_type(self.rank - 1, self.rank + 4, mh2) if btype: boss = monsters.generate_boss(btype, self.rank + 4, team=myteam) myitem = items.generate_special_item(self.rank + 2, items.WAND) if myitem: boss.contents.append(myitem) self.register_element("_ROOM", room, dident="LOCALE") self.register_element("BOSS", boss, "_ROOM") # Record the one thing this boss cares about. self.boss_goal = random.choice(self.GOALS) self.boss_shop = self.register_element( "SHOPSERVICE", services.Shop(services.MAGIC_STORE, rank=self.rank + 5, allow_misc=False, num_items=25, turnover=5, npc=boss)) self.shop_open = False return btype
def custom_init(self, nart): # Add an encounter, monsters must be faction members. scene = self.elements.get("LOCALE") mygen = nart.get_map_generator(scene) room = mygen.DEFAULT_ROOM() room.contents.append( teams.Team(default_reaction=-999, rank=self.rank, strength=175, habitat=scene.get_encounter_request(), fac=self.elements.get("ANTAGONIST"))) mychest = waypoints.Cart() mychest.HOARD_AMOUNT = random.randint(400, 600) mychest.stock(self.rank) room.contents.append(mychest) room.contents.append(maps.CAULDRON) self.register_element("_ROOM", room, dident="LOCALE") return True
def custom_init(self, nart): scene = self.elements.get("LOCALE") mygen = nart.get_map_generator(scene) room = mygen.DEFAULT_ROOM(tags=(context.GOAL, )) room.contents.append( teams.Team(default_reaction=-999, rank=self.rank + 1, strength=175, habitat=scene.get_encounter_request(), fac=scene.fac)) for t in range(random.randint(2, 3)): mychest = random.choice( (waypoints.SmallChest, waypoints.MediumChest, waypoints.LargeChest))() mychest.stock(self.rank) room.contents.append(mychest) self.register_element("_ROOM", room, dident="LOCALE") return True
def custom_init(self, nart): """Create the encounter.""" scene = self.elements.get("LOCALE") mygen = nart.get_map_generator(scene) room = mygen.DEFAULT_ROOM() myhabitat = scene.get_encounter_request() myhabitat[context.GEN_GIANT] = context.PRESENT room.contents.append( teams.Team(default_reaction=0, rank=self.rank, strength=100, habitat=myhabitat, respawn=False)) self.register_element("_ROOM", room, dident="LOCALE") signpost = waypoints.Signpost() self.register_element("_SIGN", signpost, dident="_ROOM") signpost.plot_locked = True signpost.mini_map_label = "Signpost" return True
def custom_init(self, nart): scene = self.elements.get("LOCALE") mygen = nart.get_map_generator(scene) # Bridge room bridge_room = randmaps.rooms.FuzzyRoom() mygen.special_c["bridge"] = bridge_room self.register_element("_BRIDGE_ROOM", bridge_room, dident="LOCALE") myhabitat = scene.get_encounter_request() myhabitat[context.MTY_HUMANOID] = context.PRESENT myhabitat[context.MTY_FIGHTER] = context.MAYBE team = self.register_element( "TEAM", teams.Team(default_reaction=-999, rank=self.rank, strength=200, habitat=myhabitat, respawn=False)) myhabitat[(context.MTY_HUMANOID, context.MTY_LEADER)] = True myhabitat[context.MTY_LEADER] = context.MAYBE btype = monsters.choose_monster_type(self.rank, self.rank + 2, myhabitat) if btype: boss = monsters.generate_boss(btype, self.rank + 2) boss.team = team team.boss = boss # Give the boss a magic weapon. weapon = items.choose_item(random.choice(items.WEAPON_TYPES), self.rank) if weapon: items.make_item_magic(weapon, self.rank) weapon.identified = True boss.contents.append(weapon) bridge_room.contents.append(team) bridge_room.contents.append(boss) self._ready = True return btype
def custom_init(self, nart): scene = self.elements.get("LOCALE") mygen = nart.get_map_generator(scene) room = randmaps.rooms.CastleRoom(width=21, height=21, tags=(context.GOAL, )) myhabitat = scene.get_encounter_request() myhabitat[context.MTY_HUMANOID] = True myhabitat[(context.MTY_FIGHTER, context.MTY_THIEF)] = context.MAYBE myteam = teams.Team(default_reaction=-999, rank=self.rank, strength=150, habitat=myhabitat, fac=scene.fac) room.contents.append(myteam) room2 = randmaps.rooms.FuzzyRoom(parent=room) for t in range(random.randint(3, 5)): mychest = random.choice( (waypoints.SmallChest, waypoints.MediumChest, waypoints.LargeChest, waypoints.Cart))() mychest.stock(self.rank) room2.contents.append(mychest) room3 = randmaps.rooms.FuzzyRoom(parent=room) mychest = waypoints.Cart() mychest.stock(self.rank) room3.contents.append(mychest) room3.contents.append(maps.CAULDRON) self.register_element("_ROOM", room, dident="LOCALE") boss = self.register_element( "NPC1", monsters.generate_npc(team=myteam, upgrade=True, fac=scene.fac, rank=self.rank + random.randint(0, 1)), dident="_ROOM") for t in range(2): myitem = items.generate_special_item(self.rank) if myitem: boss.contents.append(myitem) return True
def custom_init(self, nart): scene = self.elements.get("LOCALE") mygen = nart.get_map_generator(scene) room = mygen.DEFAULT_ROOM() myhabitat = scene.get_encounter_request() myhabitat[context.MTY_HUMANOID] = True myteam = teams.Team(default_reaction=-999, rank=self.rank, strength=150, habitat=myhabitat) room.contents.append(myteam) mh2 = myhabitat.copy() mh2[(context.MTY_LEADER, context.MTY_BOSS)] = True btype = monsters.choose_monster_type(self.rank - 2, self.rank + 2, mh2) if btype: boss = monsters.generate_boss(btype, self.rank + 3, team=myteam) myteam.boss = boss myitem = items.generate_special_item(self.rank + 1) if myitem: boss.contents.append(myitem) self.register_element("_ROOM", room, dident="LOCALE") self.register_element("BOSS", boss, "_ROOM") return btype
def custom_init(self, nart): # Create the lever and water control room. scene = self.elements.get("LOCALE") mygen = nart.get_map_generator(scene) # Lever room lever_room = randmaps.rooms.SharpRoom(tags=(context.ENTRANCE, )) lever_room.contents.append( teams.Team(default_reaction=-999, rank=self.rank, strength=150, habitat=scene.get_encounter_request())) self.register_element("_LEVER_ROOM", lever_room, dident="LOCALE") lever = waypoints.PuzzleSwitch() self.register_element("_LEVER", lever, dident="_LEVER_ROOM") lever_room.contents.append( waypoints.Signpost( desc= "**WATER MAIN CONTROL** \n Use only in case of emergency. Unauthorized use punishable by fines or death.", anchor=randmaps.anchors.middle)) return True
def getTeams(): teamsWeb = tree.xpath('//table[@id="active_franchises"]//a/text()') statsWeb = tree.xpath( '//table[@id="active_franchises"]//tr[@class!="partial_table"]/td/text()' ) row = 1 for team in teamsWeb: name = team code = teamCodes[name] players = getPlayers(code) origin = statsWeb[row] games = statsWeb[row + 3] win = statsWeb[row + 4] loss = statsWeb[row + 5] tie = statsWeb[row + 6] overtime = statsWeb[row + 7] points = statsWeb[row + 8] pp = statsWeb[row + 9] plyoff = statsWeb[row + 10] div = statsWeb[row + 11] conf = statsWeb[row + 12] league = statsWeb[row + 13] stan = statsWeb[row + 14] addition = teams.Team(name, code, players, origin, games, win, loss, tie, overtime, points, pp, plyoff, div, conf, league, stan) print( "*************************************** " + name + " ***************************************************************" ) print(addition) row += 16
def trigger(self, explo, pos): """Handle trap effect, return True if trap disabled.""" # This trap is triggered. The party must make a DISARM_TRAPS roll or # suffer the consequences. if self.already_triggered_once: explo.alert("This time you avoid the alarm.") return True else: disarm = max( explo.camp.party_stat(stats.DISARM_TRAPS, stats.DISARM_TRAPS.default_bonus) - self.DIFFICULTY, 5) if random.randint(1, 100) <= disarm: explo.alert( "There was an {0}, but you managed to disarm it.".format( self)) return True else: explo.alert("You have set off an alarm!") self.already_triggered_once = True aoe = self.get_area(explo, pos) req = explo.scene.get_encounter_request() req[context.MTY_HUMANOID] = context.MAYBE req[context.MTY_FIGHTER] = context.MAYBE team = teams.Team(default_reaction=-999, rank=self.MIN_RANK - 1, strength=75, habitat=req) mons = team.build_encounter(explo.scene) for m in mons: if aoe: p = random.choice(aoe) aoe.remove(p) else: break m.place(explo.scene, p) return self.ONE_SHOT