Example #1
0
    def custom_init(self, nart):
        npc_name, garage_name = self.generate_npc_and_building_name()

        # Add the interior scene.
        team1 = teams.Team(name="Player Team")
        team2 = self.register_element("CIVILIAN_TEAM",
                                      teams.Team(name="Civilian Team"))
        intscene = gears.GearHeadScene(
            50,
            50,
            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,
            exploration_music="AlexBeroza_-_Kalte_Ohren.ogg")
        intscenegen = pbge.randmaps.PackedBuildingGenerator(
            intscene,
            gharchitecture.FactoryBuilding(),
            decorate=gharchitecture.FactoryDecor())
        self.register_scene(nart,
                            intscene,
                            intscenegen,
                            ident="LOCALE",
                            dident="METROSCENE")
        foyer = self.register_element('FOYER',
                                      pbge.randmaps.rooms.ClosedRoom(
                                          10,
                                          10,
                                          anchor=pbge.randmaps.anchors.south,
                                      ),
                                      dident="LOCALE")
        foyer.contents.append(team2)

        npc = self.register_element(
            "SHOPKEEPER",
            gears.selector.random_character(
                self.rank,
                name=npc_name,
                local_tags=self.elements["METROSCENE"].attributes,
                job=gears.jobs.ALL_JOBS["Mechanic"]))
        npc.place(intscene, team=team2)

        for item in self.additional_waypoints:
            foyer.contents.append(item())

        self.shop = services.Shop(
            npc=npc,
            shop_faction=self.elements["METROSCENE"].faction,
            ware_types=services.MECHA_PARTS_STORE,
            rank=self.rank)

        # Add some details and complications.
        if random.randint(1, 8) != 4:
            self.add_sub_plot(nart, "MEKWORK_PROBLEM", necessary=False)
        if random.randint(1, 6) != 4:
            self.add_sub_plot(nart, "MEKWORK_FEATURE", necessary=False)
        if random.randint(1, 4) != 4:
            self.add_sub_plot(nart, "MEKWORK_MISC", necessary=False)

        return True
Example #2
0
    def custom_init(self, nart):
        # Create a room for the engineer.
        myroom = self.register_element('_introom',
                                       pbge.randmaps.rooms.ClosedRoom(),
                                       dident="LOCALE")

        npc = self.register_element(
            "ENGINEER",
            gears.selector.random_character(
                local_tags=self.elements["METROSCENE"].attributes,
                job=gears.jobs.ALL_JOBS["Factory Worker"]),
            dident="_introom")

        # Create the dungeon level.
        sp = self.add_sub_plot(
            nart,
            "DUNGEON_GENERIC",
            elements={
                dungeonmaker.DG_NAME:
                "{} Basement".format(self.elements["LOCALE"]),
                dungeonmaker.DG_PARENT_SCENE:
                self.elements["LOCALE"],
                dungeonmaker.DG_MONSTER_TAGS: ("ROBOT", ),
                dungeonmaker.DG_ARCHITECTURE:
                gharchitecture.FactoryBuilding(),
                dungeonmaker.DG_DECOR:
                gharchitecture.RundownFactoryDecor(),
                dungeonmaker.DG_SCENE_TAGS:
                (gears.tags.SCENE_DUNGEON, gears.tags.SCENE_SEMIPUBLIC),
                dungeonmaker.DG_EXPLO_MUSIC:
                "Komiku_-_01_-_Ancient_Heavy_Tech_Donjon.ogg",
                dungeonmaker.DG_COMBAT_MUSIC:
                "Komiku_-_03_-_Battle_Theme.ogg",
            })
        self.elements["DUNGEON"] = sp.elements["LOCALE"]

        # Connect the dungeon level.
        plotutility.StairsDownToStairsUpConnector(
            self,
            self.elements["LOCALE"],
            sp.elements["LOCALE"],
            room1=myroom,
        )

        # Add the generator room and broken generator
        goalroom = self.register_element('_goalroom',
                                         pbge.randmaps.rooms.ClosedRoom(),
                                         dident="DUNGEON")
        generator = self.register_element(
            "_generator",
            ghwaypoints.OldTerminal(
                name="Generator Control",
                desc="You stand before the power generator control terminal.",
                plot_locked=True),
            dident="_goalroom")

        self.got_intro = False
        self.fixed_generator = False
        self.reward = gears.base.Engine(
            size=800 + self.rank * 10,
            desig="MP-{} Advanced".format(800 + self.rank * 10),
            material=gears.materials.Advanced)

        return True