def custom_init(self, nart): mydungeon = dungeonmaker.DungeonMaker(nart, self, self.elements["METROSCENE"], "Test Dungeon", gharchitecture.StoneBuilding(), 10, monster_tags=("ANIMAL", "CITY", "VERMIN")) self.elements["LOCALE"] = mydungeon.entry_level print(mydungeon.entry_level) myanchor = random.choice(pbge.randmaps.anchors.EDGES) foyer = self.register_element('_introom', pbge.randmaps.rooms.ClosedRoom( anchor=myanchor, ), dident="LOCALE") mycon2 = plotutility.TownBuildingConnection( nart, self, self.elements["METROSCENE"], mydungeon.entry_level, room2=foyer, door1=ghwaypoints.UndergroundEntrance(name="The Ruins"), door2=ghwaypoints.StoneStairsUp( anchor=pbge.randmaps.anchors.middle)) return True
def custom_init(self, nart): # Add the interior scene. team1 = teams.Team(name="Player Team") team2 = teams.Team(name="Civilian Team", faction=self.elements["METRO_FACTION"]) intscene = gears.GearHeadScene( 35, 35, "Fallout Shelter", player_team=team1, civilian_team=team2, attributes=(gears.tags.SCENE_PUBLIC, gears.tags.SCENE_BUILDING, gears.tags.SCENE_GOVERNMENT, gears.tags.SCENE_RUINS), scale=gears.scale.HumanScale) intscenegen = pbge.randmaps.SceneGenerator( intscene, gharchitecture.DefaultBuilding()) self.register_scene(nart, intscene, intscenegen, ident="INTERIOR", dident="LOCALE") foyer = self.register_element( '_introom', pbge.randmaps.rooms.ClosedRoom( anchor=pbge.randmaps.anchors.south, ), dident="INTERIOR") mycon2 = plotutility.TownBuildingConnection( self, self.elements["LOCALE"], intscene, room2=foyer, door1=ghwaypoints.UndergroundEntrance(name="Fallout Shelter")) npc = self.register_element( "LEADER", gears.selector.random_character( self.rank, local_tags=self.elements["LOCALE"].attributes, job=gears.jobs.ALL_JOBS["Mayor"], faction=self.elements["METRO_FACTION"])) npc.place(intscene, team=team2) self.town_origin_ready = True bodyguard = self.register_element( "BODYGUARD", gears.selector.random_character( self.rank, local_tags=self.elements["LOCALE"].attributes, job=gears.jobs.choose_random_job( (gears.tags.Adventurer, ), self.elements["LOCALE"].attributes), faction=self.elements["METRO_FACTION"])) bodyguard.place(intscene, team=team2) return True
def custom_init(self, nart): # Create a building within the town. garage_name = "Magnus Mecha Works" building = self.register_element("_EXTERIOR", ghterrain.IndustrialBuilding( waypoints={"DOOR": ghwaypoints.ScrapIronDoor(name=garage_name)}, door_sign=(ghterrain.FixitShopSignEast, ghterrain.FixitShopSignSouth), tags=[pbge.randmaps.CITY_GRID_ROAD_OVERLAP]), dident="METROSCENE") self.rank = 55 tplot = self.add_sub_plot(nart, "MECHA_WORKSHOP", elements={"BUILDING_NAME": garage_name}) self.elements["LOCALE"] = tplot.elements["LOCALE"] mycon2 = plotutility.TownBuildingConnection(nart, self, self.elements["METROSCENE"], tplot.elements["LOCALE"], room2=tplot.elements["FOYER"], room1=building, door1=building.waypoints["DOOR"], move_door1=False) npc = self.register_element("SHOPKEEPER", gears.selector.random_character( name="Ran Magnus", rank=75, local_tags=(gears.personality.GreenZone,), job=gears.jobs.ALL_JOBS["Mecha Designer"], birth_year=106, combatant=False, faction=gears.factions.ProDuelistAssociation, personality=[personality.Passionate, personality.Sociable, personality.Fellowship], mnpcid="RAN_MAGNUS", gender=gears.genderobj.Gender.get_default_female(), portrait='card_f_ranmagnus.png', colors=(gears.color.GriffinGreen, gears.color.DarkSkin, gears.color.Fuschia, gears.color.PlasmaBlue, gears.color.CardinalRed), )) npc.place(tplot.elements["LOCALE"], team=tplot.elements["CIVILIAN_TEAM"]) self.shop = services.Shop(npc=npc, shop_faction=gears.factions.ProDuelistAssociation, ware_types=services.MEXTRA_STORE, rank=55) self.got_reward = False self.magnus_info = ( OneShotInfoBlast("Osmund", "We used to be lancemates back in the old days. You couldn't ask for a better partner. Then his knees gave out and I discovered that I like building mecha better than I like blasting them."), OneShotInfoBlast("mecha", "Kind of a lifelong obsession for me. One of several, to be honest. But, it's the one that gets me paid. I've been designing mecha for thirty years now. Around ten years back I started this company and now I build mecha, too."), OneShotInfoBlast("design", "It's important that a mecha know what its job is. There is no such thing as a perfect mecha, just fitness for a particular role. Install that which is useful, uninstall that which is not, and create that which is essentially your own."), OneShotInfoBlast("factory", "This is my first factory in Eurasia. We're trying to ramp up production; the possibility of a war with Luna has doubled the demand for our meks. It's way too cold in {} but the local food is delicious so that kind of evens out.".format(self.elements["METROSCENE"]), subject_text="the factory"), ) return True
def custom_init(self, nart): # Create the shopkeeper npc1 = self.register_element("SHOPKEEPER", gears.selector.random_character( self.rank, job=gears.jobs.ALL_JOBS["Bartender"])) self.shopname = self._generate_shop_name() # Create a building within the dungeon. building = self.register_element( "_EXTERIOR", ghterrain.BrickBuilding( waypoints={"DOOR": ghwaypoints.WoodenDoor(name=self.shopname)}, door_sign=(ghterrain.CafeSign1East, ghterrain.CafeSign1South) ), dident="LOCALE") # Add the interior scene. team1 = teams.Team(name="Player Team") team2 = teams.Team(name="Civilian Team") intscene = gears.GearHeadScene( 35, 35, self.shopname, player_team=team1, civilian_team=team2, attributes=(gears.tags.SCENE_SEMIPUBLIC, gears.tags.SCENE_BUILDING, gears.tags.SCENE_CULTURE), scale=gears.scale.HumanScale) intscenegen = pbge.randmaps.PackedBuildingGenerator( intscene, gharchitecture.DefaultBuilding(floor_terrain=ghterrain.HardwoodFloor) ) self.register_scene(nart, intscene, intscenegen, ident="INTERIOR", dident="LOCALE") foyer = self.register_element('FOYER', pbge.randmaps.rooms.ClosedRoom(width=random.randint(20, 25), height=random.randint(11, 15), anchor=pbge.randmaps.anchors.south), dident="INTERIOR") mybar = ghrooms.BarArea(random.randint(5, 10), random.randint(2, 3), anchor=pbge.randmaps.anchors.north) foyer.contents.append(mybar) barteam = self.register_element("BAR_TEAM", teams.Team(name="Bar Team", allies=[team2])) mybar.contents.append(barteam) npc1.place(intscene, team=barteam) myfloor = pbge.randmaps.rooms.Room(foyer.width - 2, foyer.height - mybar.height - 2, anchor=pbge.randmaps.anchors.south, decorate=gharchitecture.RestaurantDecor()) foyer.contents.append(myfloor) mycon2 = plotutility.TownBuildingConnection( nart, self, self.elements["LOCALE"], intscene, room1=building, room2=foyer, door1=building.waypoints["DOOR"], move_door1=False) self.got_explanation = False self.coffee_price = self.rank * 10 return True
def custom_init(self, nart): # Create a building within the town. myname = "{} Clinic".format(self.elements["LOCALE"]) building = self.register_element( "_EXTERIOR", ghterrain.BrickBuilding( waypoints={"DOOR": ghwaypoints.WoodenDoor(name=myname)}, tags=[pbge.randmaps.CITY_GRID_ROAD_OVERLAP]), dident="LOCALE") # Add the interior scene. team1 = teams.Team(name="Player Team") team2 = teams.Team(name="Civilian Team") intscene = gears.GearHeadScene(35, 35, myname, player_team=team1, civilian_team=team2, attributes=(gears.tags.SCENE_PUBLIC, gears.tags.SCENE_HOSPITAL), scale=gears.scale.HumanScale) intscenegen = pbge.randmaps.SceneGenerator( intscene, gharchitecture.HospitalBuilding()) self.register_scene(nart, intscene, intscenegen, ident="INTERIOR", dident="LOCALE") foyer = self.register_element( '_introom', pbge.randmaps.rooms.ClosedRoom( anchor=pbge.randmaps.anchors.south, ), dident="INTERIOR") mycon2 = plotutility.TownBuildingConnection( self, self.elements["LOCALE"], intscene, room1=building, room2=foyer, door1=building.waypoints["DOOR"], move_door1=False) npc = self.register_element( "DOCTOR", gears.selector.random_character( 50, local_tags=self.elements["LOCALE"].attributes, job=gears.jobs.ALL_JOBS["Doctor"])) npc.place(intscene, team=team2) return True
def custom_init(self, nart): # Create the shopkeeper npc1 = self.register_element("SHOPKEEPER", gears.selector.random_character( self.rank, local_tags=self.elements["LOCALE"].attributes, job=gears.jobs.ALL_JOBS["Smuggler"])) self.shopname = self._generate_shop_name() # Create a building within the town. building = self.register_element("_EXTERIOR", get_building( self, ghterrain.BrickBuilding, waypoints={"DOOR": ghwaypoints.ScrapIronDoor(name=self.shopname)}, door_sign=(ghterrain.CrossedSwordsTerrainEast, ghterrain.CrossedSwordsTerrainSouth), tags=[pbge.randmaps.CITY_GRID_ROAD_OVERLAP]), dident="LOCALE") # Add the interior scene. team1 = teams.Team(name="Player Team") team2 = teams.Team(name="Civilian Team") intscene = gears.GearHeadScene( 35, 35, self.shopname, player_team=team1, civilian_team=team2, faction=self.elements.get("SHOP_FACTION"), attributes=self.elements.get("INTERIOR_TAGS", (gears.tags.SCENE_PUBLIC,)) + (gears.tags.SCENE_BUILDING, gears.tags.SCENE_SHOP), scale=gears.scale.HumanScale) intscenegen = pbge.randmaps.SceneGenerator(intscene, gharchitecture.CommercialBuilding()) self.register_scene(nart, intscene, intscenegen, ident="INTERIOR", dident="LOCALE") foyer = self.register_element('_introom', pbge.randmaps.rooms.ClosedRoom(anchor=pbge.randmaps.anchors.south, decorate=gharchitecture.CheeseShopDecor()), dident="INTERIOR") mycon2 = plotutility.TownBuildingConnection( nart, self, self.elements["METROSCENE"], intscene, room1=building, room2=foyer, door1=building.waypoints["DOOR"], move_door1=False) npc1.place(intscene, team=team2) self.shop = services.Shop(npc=npc1, ware_types=services.BLACK_MARKET, rank=self.rank+25, shop_faction=self.elements.get("SHOP_FACTION")) return True
def custom_init(self, nart): self.zombots_active = True self.got_shutdown = False self.safe_shutdown = False self.set_collector = False # Create the entry mission: PC must defeat the zombots guarding the defiled factory team1 = teams.Team(name="Player Team") return_to = (self.elements["METROSCENE"], self.elements["MISSION_GATE"]) outside_scene = gears.GearHeadScene( 35, 35, plotutility.random_deadzone_spot_name(), player_team=team1, scale=gears.scale.MechaScale, exploration_music="Komiku_-_01_-_Ancient_Heavy_Tech_Donjon.ogg", combat_music="Komiku_-_03_-_Battle_Theme.ogg", exit_scene_wp=return_to ) myscenegen = pbge.randmaps.SceneGenerator(outside_scene, game.content.gharchitecture.MechaScaleDeadzone()) self.register_scene(nart, outside_scene, myscenegen, ident="LOCALE", dident="METROSCENE") mygoal = self.register_element( "_goalroom", pbge.randmaps.rooms.FuzzyRoom(random.randint(8, 15), random.randint(8, 15), parent=outside_scene, anchor=pbge.randmaps.anchors.middle) ) self.add_sub_plot(nart, "MONSTER_ENCOUNTER", elements={"ROOM": mygoal, "TYPE_TAGS": ("ROBOT", "ZOMBOT")}, ident="OUTENCOUNTER") room1 = self.register_element( "ENTRANCE_ROOM", pbge.randmaps.rooms.FuzzyRoom( 5, 5, anchor=random.choice(pbge.randmaps.anchors.EDGES)), dident="LOCALE" ) myent = self.register_element( "ENTRANCE", game.content.ghwaypoints.Exit(anchor=pbge.randmaps.anchors.middle, dest_scene=self.elements["METROSCENE"], dest_entrance=self.elements["MISSION_GATE"]), dident="ENTRANCE_ROOM" ) # Local NPC can tell about the entry mission. self.add_sub_plot(nart, "REVEAL_LOCATION", ident="LOCATE", elements={ "INTERESTING_POINT": "The zombie mecha seem to be attracted to the ancient ruined tower there."}) self.location_unlocked = False # Add the defiled factory dungeon mydungeon = dungeonmaker.DungeonMaker( nart, self, self.elements["METROSCENE"], "Defiled Factory", gharchitecture.ScrapIronWorkshop(), self.rank, monster_tags=("ROBOT", "ZOMBOT", "FACTORY"), explo_music="Komiku_-_01_-_Ancient_Heavy_Tech_Donjon.ogg", combat_music="Komiku_-_03_-_Battle_Theme.ogg", connector=plotutility.StairsUpToStairsDownConnector, scene_tags=(gears.tags.SCENE_DUNGEON, gears.tags.SCENE_RUINS, gears.tags.SCENE_FACTORY), decor=gharchitecture.DefiledFactoryDecor() ) d_entrance = pbge.randmaps.rooms.ClosedRoom(7, 7, anchor=pbge.randmaps.anchors.south) mydungeon.entry_level.contents.append(d_entrance) mycon2 = plotutility.TownBuildingConnection( self, outside_scene, mydungeon.entry_level, room1=mygoal, room2=d_entrance, door1=ghwaypoints.DZDDefiledFactory(name="Defiled Factory", anchor=pbge.randmaps.anchors.middle), door2=ghwaypoints.Exit(anchor=pbge.randmaps.anchors.south) ) # Add the lore rooms levels = random.sample(mydungeon.levels, 3) while len(levels) < 3: levels.append(random.choice(mydungeon.levels)) lr1 = self.register_element( "LORE_ROOM_1", pbge.randmaps.rooms.ClosedRoom(7, 7, ), ) levels[0].contents.append(lr1) self.add_sub_plot( nart, "MONSTER_ENCOUNTER", spstate=PlotState(rank=self.rank + 6).based_on(self), elements={"ROOM": lr1, "LOCALE": levels[0], "TYPE_TAGS": ("CREEPY", "ZOMBOT")} ) lorecompy1 = self.register_element("LORE1", ghwaypoints.RetroComputer(plot_locked=True, name="Computer", desc="You stand before the primary research terminal."), dident="LORE_ROOM_1") lr2 = self.register_element( "LORE_ROOM_2", pbge.randmaps.rooms.ClosedRoom(7, 7, ), ) levels[1].contents.append(lr2) self.add_sub_plot( nart, "MONSTER_ENCOUNTER", spstate=PlotState(rank=self.rank + 6).based_on(self), elements={"ROOM": lr2, "LOCALE": levels[1], "TYPE_TAGS": ("CREEPY", "ZOMBOT")} ) lorecompy2 = self.register_element("LORE2", ghwaypoints.RetroComputer(plot_locked=True, name="Computer", desc="You stand before the research overview terminal."), dident="LORE_ROOM_2") lr3 = self.register_element( "LORE_ROOM_3", pbge.randmaps.rooms.ClosedRoom(7, 7, ), ) levels[2].contents.append(lr3) self.add_sub_plot( nart, "MONSTER_ENCOUNTER", spstate=PlotState(rank=self.rank + 6).based_on(self), elements={"ROOM": lr3, "LOCALE": levels[2], "TYPE_TAGS": ("ROBOT",)} ) lorecompy3 = self.register_element("LORE3", ghwaypoints.RetroComputer(plot_locked=True, name="Computer", desc="You stand before the incubation chamber control terminal."), dident="LORE_ROOM_3") biotank_alpha = self.register_element("BIO_A", ghwaypoints.Biotank(plot_locked=True, name="Biotank",), dident="LORE_ROOM_3") biotank_beta = self.register_element("BIO_B", ghwaypoints.EmptyBiotank(plot_locked=True, name="Biotank",), dident="LORE_ROOM_3") self.alpha_full = True self.beta_full = False # Add the goal room final_room = self.register_element( "FINAL_ROOM", pbge.randmaps.rooms.ClosedRoom(9, 9, ), ) mydungeon.goal_level.contents.append(final_room) self.add_sub_plot( nart, "MONSTER_ENCOUNTER", spstate=PlotState(rank=self.rank + 12).based_on(self), elements={"ROOM": final_room, "LOCALE": mydungeon.goal_level, "TYPE_TAGS": ("CREEPY", "ZOMBOT")} ) mycompy = self.register_element("COMPY", ghwaypoints.OldMainframe(plot_locked=True, name="Factory Control", anchor=pbge.randmaps.anchors.middle, desc="You stand before the factory control mainframe."), dident="FINAL_ROOM") #print(self.elements["METROSCENE"]) return True
def custom_init(self, nart): # Create a building within the town. npc_name, garage_name = self.generate_npc_and_building_name() building = self.register_element( "_EXTERIOR", self.GarageBuilding( waypoints={"DOOR": self.GarageDoor(name=garage_name)}, door_sign=self.door_sign, tags=[pbge.randmaps.CITY_GRID_ROAD_OVERLAP]), dident="LOCALE") # Add the interior scene. team1 = teams.Team(name="Player Team") team2 = teams.Team(name="Civilian Team") intscene = gears.GearHeadScene( 35, 35, garage_name, player_team=team1, civilian_team=team2, attributes=(gears.tags.SCENE_PUBLIC, gears.tags.SCENE_BUILDING, gears.tags.SCENE_GARAGE, gears.tags.SCENE_SHOP), scale=gears.scale.HumanScale) intscenegen = pbge.randmaps.SceneGenerator(intscene, self.GarageArchitecture()) self.register_scene(nart, intscene, intscenegen, ident="INTERIOR", dident="LOCALE") foyer = self.register_element( '_introom', pbge.randmaps.rooms.ClosedRoom( anchor=pbge.randmaps.anchors.south, ), dident="INTERIOR") for item in self.additional_waypoints: foyer.contents.append(item()) mycon2 = plotutility.TownBuildingConnection( self, self.elements["LOCALE"], intscene, room1=building, room2=foyer, door1=building.waypoints["DOOR"], move_door1=False) job = random.choice(self.SHOPKEEPER_JOBS) npc = self.register_element( "SHOPKEEPER", gears.selector.random_character( self.rank, name=npc_name, local_tags=self.elements["LOCALE"].attributes, job=gears.jobs.ALL_JOBS[job])) npc.place(intscene, team=team2) self.shop = services.Shop(npc=npc, shop_faction=self.shop_faction, ware_types=self.shop_ware_types, rank=self.shop_rank) return True
def custom_init(self, nart): # Create a building within the town. building = self.register_element( "_EXTERIOR", ghterrain.BrickBuilding( waypoints={ "DOOR": ghwaypoints.ScrapIronDoor(name="Town Hall") }, tags=[pbge.randmaps.CITY_GRID_ROAD_OVERLAP]), dident="LOCALE") # Add the interior scene. team1 = teams.Team(name="Player Team") team2 = teams.Team(name="Civilian Team", faction=self.elements["METRO_FACTION"]) intscene = gears.GearHeadScene( 35, 35, "Town Hall", player_team=team1, civilian_team=team2, attributes=(gears.tags.SCENE_PUBLIC, gears.tags.SCENE_BUILDING, gears.tags.SCENE_GOVERNMENT), scale=gears.scale.HumanScale) intscenegen = pbge.randmaps.SceneGenerator( intscene, gharchitecture.DefaultBuilding( floor_terrain=ghterrain.WhiteTileFloor)) self.register_scene(nart, intscene, intscenegen, ident="INTERIOR", dident="LOCALE") foyer = self.register_element( '_introom', pbge.randmaps.rooms.ClosedRoom( anchor=pbge.randmaps.anchors.south, ), dident="INTERIOR") mycon2 = plotutility.TownBuildingConnection( self, self.elements["LOCALE"], intscene, room1=building, room2=foyer, door1=building.waypoints["DOOR"], move_door1=False) npc = self.register_element( "LEADER", gears.selector.random_character( self.rank, local_tags=self.elements["LOCALE"].attributes, job=gears.jobs.ALL_JOBS["Technocrat"], faction=self.elements["METRO_FACTION"])) npc.place(intscene, team=team2) self.town_origin_ready = True bodyguard = self.register_element( "BODYGUARD", gears.selector.random_character( self.rank, local_tags=self.elements["LOCALE"].attributes, job=gears.jobs.choose_random_job( (gears.tags.Adventurer, ), self.elements["LOCALE"].attributes), faction=self.elements["METRO_FACTION"])) bodyguard.place(intscene, team=team2) return True
def custom_init(self, nart): hallfaction = self.elements.get( "HALL_FACTION") or self.elements["LOCALE"].faction self.elements["HALL_FACTION"] = hallfaction deffaction = self.elements.get( "DEFENSE_FACTION") or self._get_defense_faction(nart, hallfaction) self.elements["DEFENSE_FACTION"] = deffaction # Create the leader npc1 = self.register_element( "LEADER", gears.selector.random_character( self.rank, local_tags=self.elements["LOCALE"].attributes, faction=hallfaction, job=self._get_leader_job(hallfaction))) npc1.name = self.elements.get("LEADER_NAME", "") or npc1.name if not self.elements.get("NOT_METRO_LEADER"): self.elements["METRO"].city_leader = npc1 self._hallname = self.elements.get("HALL_NAME", "") or self._generate_hall_name() # Create a building within the town. building = self.register_element( "_EXTERIOR", get_building( self, ghterrain.BrickBuilding, waypoints={"DOOR": ghwaypoints.GlassDoor(name=self._hallname)}, door_sign=(ghterrain.GoldTownHallSignEast, ghterrain.GoldTownHallSignSouth), tags=[ pbge.randmaps.CITY_GRID_ROAD_OVERLAP, pbge.randmaps.IS_CITY_ROOM, pbge.randmaps.IS_CONNECTED_ROOM ]), dident="LOCALE") # Add the interior scene. team1 = teams.Team(name="Player Team") team2 = teams.Team(name="Civilian Team") intscene = gears.GearHeadScene( 35, 35, self._hallname, player_team=team1, civilian_team=team2, faction=self.elements.get("HALL_FACTION"), attributes=self.elements.get("INTERIOR_TAGS", (gears.tags.SCENE_PUBLIC, )) + (gears.tags.SCENE_BUILDING, gears.tags.SCENE_GOVERNMENT), scale=gears.scale.HumanScale) intscenegen = pbge.randmaps.PackedBuildingGenerator( intscene, gharchitecture.DefaultBuilding(wall_terrain=ghterrain.DefaultWall)) self.register_scene(nart, intscene, intscenegen, ident="INTERIOR", dident="LOCALE") foyer = self.register_element( 'FOYER', pbge.randmaps.rooms.ClosedRoom(anchor=pbge.randmaps.anchors.south), dident="INTERIOR") team3 = self.register_element("FOYER_TEAM", teams.Team("Foyer Team", allies=(team2, )), dident="FOYER") mycon2 = plotutility.TownBuildingConnection( nart, self, self.elements["LOCALE"], intscene, room1=building, room2=foyer, door1=building.waypoints["DOOR"], move_door1=False) npc1.place(intscene, team=team2) self.add_sub_plot(nart, "TOWNHALL_DEFENDER") return True
def custom_init(self, nart): npc_name, building_name = self.generate_npc_and_building_name() # Create a building within the town. building = self.register_element( "_EXTERIOR", ghterrain.ResidentialBuilding( waypoints={"DOOR": ghwaypoints.GlassDoor(name=building_name)}, tags=[pbge.randmaps.CITY_GRID_ROAD_OVERLAP]), dident="METROSCENE") # Add the interior scene. team1 = teams.Team(name="Player Team") team2 = self.register_element("FOYER_TEAM", teams.Team(name="Civilian Team")) intscene = gears.GearHeadScene(50, 35, building_name, player_team=team1, civilian_team=team2, attributes=(gears.tags.SCENE_PUBLIC, gears.tags.SCENE_BUILDING, gears.tags.SCENE_MEETING), scale=gears.scale.HumanScale) intscenegen = pbge.randmaps.PackedBuildingGenerator( intscene, gharchitecture.ResidentialBuilding()) self.register_scene(nart, intscene, intscenegen, ident="LOCALE", dident="METROSCENE") foyer = self.register_element('_introom', pbge.randmaps.rooms.ClosedRoom( width=random.randint(20, 25), height=random.randint(11, 15), anchor=pbge.randmaps.anchors.south, ), dident="LOCALE") foyer.contents.append(team2) mybar = ghrooms.BarArea(random.randint(5, 10), random.randint(2, 3), anchor=pbge.randmaps.anchors.north) foyer.contents.append(mybar) barteam = self.register_element( "BAR_TEAM", teams.Team(name="Bar Team", allies=[team2])) mybar.contents.append(barteam) npc = self.register_element( "BARTENDER", gears.selector.random_character( self.rank, name=npc_name, local_tags=self.elements["METROSCENE"].attributes, job=gears.jobs.ALL_JOBS["Bartender"])) npc.place(intscene, team=barteam) mycon = plotutility.TownBuildingConnection( self, self.elements["METROSCENE"], intscene, room1=building, room2=foyer, door1=building.waypoints["DOOR"], move_door1=False) return True
def custom_init(self, nart): # Create the shopkeeper npc1 = self.register_element( "SHOPKEEPER", gears.selector.random_character( self.rank, local_tags=self.elements["LOCALE"].attributes, job=gears.jobs.ALL_JOBS["Bartender"])) npc1.name = self.elements.get("NPC_NAME", "") or npc1.name self.shopname = self.elements.get("SHOP_NAME", "") or self._generate_shop_name() # Create a building within the town. building = self.register_element( "_EXTERIOR", get_building( self, ghterrain.ResidentialBuilding, waypoints={"DOOR": ghwaypoints.GlassDoor(name=self.shopname)}, door_sign=(ghterrain.TavernSign1East, ghterrain.TavernSign1South), tags=[ pbge.randmaps.CITY_GRID_ROAD_OVERLAP, pbge.randmaps.IS_CITY_ROOM, pbge.randmaps.IS_CONNECTED_ROOM ]), dident="LOCALE") # Add the interior scene. team1 = teams.Team(name="Player Team") team2 = teams.Team(name="Civilian Team") intscene = gears.GearHeadScene( 35, 35, self.shopname, player_team=team1, civilian_team=team2, faction=self.elements.get("SHOP_FACTION"), attributes=self.elements.get("INTERIOR_TAGS", (gears.tags.SCENE_PUBLIC, )) + (gears.tags.SCENE_BUILDING, gears.tags.SCENE_MEETING, gears.tags.SCENE_CULTURE), scale=gears.scale.HumanScale) intscenegen = pbge.randmaps.PackedBuildingGenerator( intscene, gharchitecture.ResidentialBuilding()) self.register_scene(nart, intscene, intscenegen, ident="INTERIOR", dident="LOCALE") foyer = self.register_element('FOYER', pbge.randmaps.rooms.ClosedRoom( width=random.randint(20, 25), height=random.randint(11, 15), anchor=pbge.randmaps.anchors.south), dident="INTERIOR") mybar = ghrooms.BarArea(random.randint(5, 10), random.randint(2, 3), anchor=pbge.randmaps.anchors.north) foyer.contents.append(mybar) barteam = self.register_element( "BAR_TEAM", teams.Team(name="Bar Team", allies=[team2])) mybar.contents.append(barteam) npc1.place(intscene, team=barteam) mycon2 = plotutility.TownBuildingConnection( nart, self, self.elements["LOCALE"], intscene, room1=building, room2=foyer, door1=building.waypoints["DOOR"], move_door1=False) myfloor = pbge.randmaps.rooms.Room( foyer.width - 2, foyer.height - mybar.height - 2, anchor=pbge.randmaps.anchors.south, decorate=gharchitecture.RestaurantDecor()) foyer.contents.append(myfloor) self.add_sub_plot(nart, "TAVERN_BONUS", necessary=False) return True
def custom_init(self, nart): # Create the shopkeeper myjob = gears.jobs.choose_random_job( (gears.tags.Medic, ), self.elements["LOCALE"].attributes) npc1 = self.register_element( "SHOPKEEPER", gears.selector.random_character( self.rank, local_tags=self.elements["LOCALE"].attributes, job=myjob)) npc1.name = self.elements.get("NPC_NAME", "") or npc1.name self.shopname = self.elements.get("SHOP_NAME", "") or self._generate_shop_name() # Create a building within the town. building = self.register_element( "_EXTERIOR", get_building( self, ghterrain.BrickBuilding, waypoints={"DOOR": ghwaypoints.GlassDoor(name=self.shopname)}, door_sign=(ghterrain.HospitalSignEast, ghterrain.HospitalSignSouth), tags=[ pbge.randmaps.CITY_GRID_ROAD_OVERLAP, pbge.randmaps.IS_CITY_ROOM, pbge.randmaps.IS_CONNECTED_ROOM ]), dident="LOCALE") # Add the interior scene. team1 = teams.Team(name="Player Team") team2 = teams.Team(name="Civilian Team") intscene = gears.GearHeadScene( 35, 35, self.shopname, player_team=team1, civilian_team=team2, faction=self.elements.get("SHOP_FACTION"), attributes=self.elements.get("INTERIOR_TAGS", (gears.tags.SCENE_PUBLIC, )) + (gears.tags.SCENE_BUILDING, gears.tags.SCENE_HOSPITAL), scale=gears.scale.HumanScale) intscenegen = pbge.randmaps.PackedBuildingGenerator( intscene, gharchitecture.HospitalBuilding()) self.register_scene(nart, intscene, intscenegen, ident="INTERIOR", dident="LOCALE") foyer = self.register_element( 'FOYER', pbge.randmaps.rooms.ClosedRoom( anchor=pbge.randmaps.anchors.south, ), dident="INTERIOR") mycon2 = plotutility.TownBuildingConnection( nart, self, self.elements["LOCALE"], intscene, room1=building, room2=foyer, door1=building.waypoints["DOOR"], move_door1=False) npc1.place(intscene, team=team2) self.shop = services.Shop( npc=npc1, ware_types=services.PHARMACY, rank=self.rank + random.randint(0, 15), shop_faction=self.elements.get("SHOP_FACTION")) room2 = self.register_element('_room2', pbge.randmaps.rooms.ClosedRoom(), dident="INTERIOR") room2.contents.append(ghwaypoints.RecoveryBed()) room2.contents.append(ghwaypoints.RecoveryBed()) if random.randint(1, 10) == 5: cybershop = services.Shop(npc=None, rank=self.rank + random.randint(1, 25), ware_types=services.CYBERWARE_STORE) room2.contents.append(ghwaypoints.CyberdocTerminal(shop=cybershop)) if random.randint(1, 3) == 2: self.add_sub_plot(nart, "HOSPITAL_BONUS") return True
def custom_init(self, nart): # Create the shopkeeper npc1 = self.register_element( "SHOPKEEPER", gears.selector.random_character( self.rank, local_tags=self.elements["LOCALE"].attributes, job=gears.jobs.ALL_JOBS["Mechanic"])) npc1.name = self.elements.get("NPC_NAME", "") or npc1.name self.shopname = self.elements.get("SHOP_NAME", "") or self._generate_shop_name() # Create a building within the town. building = self.register_element( "_EXTERIOR", get_building( self, ghterrain.IndustrialBuilding, waypoints={"DOOR": ghwaypoints.GlassDoor(name=self.shopname)}, door_sign=self._generate_shop_sign(), tags=[ pbge.randmaps.CITY_GRID_ROAD_OVERLAP, pbge.randmaps.IS_CITY_ROOM, pbge.randmaps.IS_CONNECTED_ROOM ]), dident="LOCALE") # Add the interior scene. team1 = teams.Team(name="Player Team") team2 = teams.Team(name="Civilian Team") intscene = gears.GearHeadScene( 35, 35, self.shopname, player_team=team1, civilian_team=team2, faction=self.elements.get("SHOP_FACTION"), attributes=self.elements.get("INTERIOR_TAGS", (gears.tags.SCENE_PUBLIC, )) + (gears.tags.SCENE_BUILDING, gears.tags.SCENE_GARAGE), scale=gears.scale.HumanScale) intscenegen = pbge.randmaps.SceneGenerator( intscene, gharchitecture.IndustrialBuilding()) self.register_scene(nart, intscene, intscenegen, ident="INTERIOR", dident="LOCALE") foyer = self.register_element( 'FOYER', pbge.randmaps.rooms.ClosedRoom( anchor=pbge.randmaps.anchors.south, decorate=gharchitecture.FactoryDecor()), dident="INTERIOR") mycon2 = plotutility.TownBuildingConnection( nart, self, self.elements["LOCALE"], intscene, room1=building, room2=foyer, door1=building.waypoints["DOOR"], move_door1=False) npc1.place(intscene, team=team2) self.shop = services.Shop( npc=npc1, ware_types=services.MECHA_STORE, rank=self.rank + random.randint(0, 15), shop_faction=self.elements.get("SHOP_FACTION")) foyer.contents.append(ghwaypoints.MechEngTerminal()) return True
def custom_init(self, nart): # Create a building within the town. npc_name, garage_name = self.generate_npc_and_building_name() building = self.register_element( "_EXTERIOR", ghterrain.ScrapIronBuilding( waypoints={ "DOOR": ghwaypoints.ScrapIronDoor(name=garage_name) }, tags=[pbge.randmaps.CITY_GRID_ROAD_OVERLAP]), dident="LOCALE") # Add the interior scene. team1 = teams.Team(name="Player Team") team2 = teams.Team(name="Civilian Team") intscene = gears.GearHeadScene(35, 35, garage_name, player_team=team1, civilian_team=team2, attributes=(gears.tags.SCENE_PUBLIC, gears.tags.SCENE_GARAGE), scale=gears.scale.HumanScale) intscenegen = pbge.randmaps.SceneGenerator( intscene, gharchitecture.ScrapIronWorkshop()) self.register_scene(nart, intscene, intscenegen, ident="INTERIOR", dident="LOCALE") foyer = self.register_element( '_introom', pbge.randmaps.rooms.ClosedRoom( anchor=pbge.randmaps.anchors.south, ), dident="INTERIOR") foyer.contents.append(ghwaypoints.MechEngTerminal()) foyer.contents.append(ghwaypoints.MechaPoster()) mycon2 = plotutility.TownBuildingConnection( self, self.elements["LOCALE"], intscene, room1=building, room2=foyer, door1=building.waypoints["DOOR"], move_door1=False) npc = self.register_element( "SHOPKEEPER", gears.selector.random_character( self.rank, name=npc_name, local_tags=self.elements["LOCALE"].attributes, job=gears.jobs.ALL_JOBS["Mechanic"])) npc.place(intscene, team=team2) self.shop = services.Shop( npc=npc, shop_faction=gears.factions.TerranDefenseForce, ware_types=services.BARE_ESSENTIALS_STORE, rank=self.rank // 4) return True