コード例 #1
0
ファイル: actionscenes.py プロジェクト: gmx0/gearhead-caramel
    def custom_init(self, nart):
        team1 = teams.Team(name="Player Team")
        myscene = gears.GearHeadScene(50,
                                      50,
                                      plotutility.random_deadzone_spot_name(),
                                      player_team=team1,
                                      scale=gears.scale.MechaScale)
        myscenegen = pbge.randmaps.SceneGenerator(
            myscene, game.content.gharchitecture.MechaScaleDeadzone())
        self.register_scene(nart,
                            myscene,
                            myscenegen,
                            ident="LOCALE",
                            dident="METROSCENE")

        if not self.elements.get("ENEMY_FACTION"):
            self.register_element("ENEMY_FACTION",
                                  plotutility.RandomBanditCircle(nart.camp))

        self.register_element("_EROOM",
                              pbge.randmaps.rooms.OpenRoom(
                                  6,
                                  6,
                                  anchor=random.choice(
                                      pbge.randmaps.anchors.EDGES)),
                              dident="LOCALE")
        destination, entrance = self.elements[
            "MISSION_GATE"].scene, self.elements["MISSION_GATE"]
        myent = self.register_element("ENTRANCE",
                                      game.content.ghwaypoints.Exit(
                                          dest_scene=destination,
                                          dest_entrance=entrance,
                                          anchor=pbge.randmaps.anchors.middle),
                                      dident="_EROOM")

        castle_room = self.register_element(
            "CASTLE_ROOM",
            pbge.randmaps.rooms.FuzzyRoom(10,
                                          10,
                                          anchor=pbge.randmaps.anchors.middle),
            dident="LOCALE")
        team2 = self.register_element(
            "_eteam",
            teams.Team(enemies=(myscene.player_team, )),
            dident="CASTLE_ROOM")
        #myunit = gears.selector.RandomMechaUnit(level=self.rank,strength=150,fac=self.elements["ENEMY_FACTION"],env=myscene.environment)
        #team2.contents += myunit.mecha_list

        self.mission_entrance = (myscene, myent)
        self.next_update = 0
        self.encounters_on = True

        return True
コード例 #2
0
    def custom_init(self, nart):
        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="Lines.ogg",
            combat_music="Late.ogg",
            exit_scene_wp=return_to)
        myscenegen = pbge.randmaps.SceneGenerator(
            outside_scene,
            game.content.gharchitecture.MechaScaleSemiDeadzone())
        self.register_scene(nart,
                            outside_scene,
                            myscenegen,
                            ident="LOCALE",
                            dident="METROSCENE",
                            temporary=True)

        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.register_element("ENTRANCE_ROOM",
                              pbge.randmaps.rooms.OpenRoom(
                                  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")

        inside_scene = self.elements["GOAL_SCENE"]
        inside_room = self.elements.get("GOAL_ROOM")
        if not inside_room:
            introom = self.register_element(
                'GOAL_ROOM',
                pbge.randmaps.rooms.ClosedRoom(
                    random.randint(6, 10),
                    random.randint(6, 10),
                    anchor=pbge.randmaps.anchors.south,
                ),
                dident="GOAL_SCENE")
        int_con = game.content.plotutility.IntConcreteBuildingConnection(
            self, outside_scene, inside_scene, room1=mygoal, room2=inside_room)

        self.add_sub_plot(nart,
                          "MECHA_ENCOUNTER",
                          spstate=PlotState().based_on(
                              self, {
                                  "ROOM": mygoal,
                                  "FACTION": self.elements.get("ENEMY_FACTION")
                              }),
                          necessary=False)

        self.location_unlocked = False
        self.add_sub_plot(nart,
                          "REVEAL_LOCATION",
                          spstate=PlotState(elements={
                              "INTERESTING_POINT":
                              "There's a mysterious bunker out there."
                          }, ).based_on(self),
                          ident="LOCATE")
        return True
コード例 #3
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