Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
    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
Ejemplo n.º 8
0
    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
Ejemplo n.º 9
0
    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
Ejemplo n.º 10
0
    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
Ejemplo n.º 11
0
    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
Ejemplo n.º 12
0
    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
Ejemplo n.º 13
0
    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
Ejemplo n.º 14
0
    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
Ejemplo n.º 15
0
    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