コード例 #1
0
    def custom_init( self, nart ):
        team1 = teams.Team(name="Player Team")
        myscene = gears.GearHeadScene(35,35,"Radio Tower Area",player_team=team1,scale=gears.scale.MechaScale)
        myscenegen = pbge.randmaps.SceneGenerator(myscene, game.content.gharchitecture.MechaScaleDeadzone())
        self.register_scene( nart, myscene, myscenegen, ident="LOCALE" )
        myscene.exploration_music = 'Lines.ogg'
        myscene.combat_music = 'Late.ogg'

        mygoal = self.register_element("_goalroom",pbge.randmaps.rooms.FuzzyRoom(10,10,parent=myscene,anchor=pbge.randmaps.anchors.middle))

        team1 = teams.Team(name="Player Team")
        team2 = teams.Team(name="Civilian Team")
        intscene = gears.GearHeadScene(10,10,"Radio Tower Interior",player_team=team1,civilian_team=team2,scale= gears.scale.HumanScale)
        intscenegen = pbge.randmaps.SceneGenerator(intscene, game.content.gharchitecture.DefaultBuilding())
        self.register_scene( nart, intscene, intscenegen, ident="GOALSCENE" )

        introom = self.register_element('_introom', pbge.randmaps.rooms.OpenRoom(7, 7, anchor=pbge.randmaps.anchors.middle, decorate=pbge.randmaps.decor.OmniDec(win=game.content.ghterrain.Window)), dident="GOALSCENE")
        self.move_element(self.elements["PERSON"],introom)
        intscene.local_teams[self.elements["PERSON"]] = team2
        self.register_element('WAYPOINT', game.content.ghwaypoints.RetroComputer(), dident="_introom")

        world_scene = self.elements["WORLD"]

        wm_con = game.content.plotutility.WMCommTowerConnection(self, world_scene, myscene)
        if random.randint(1,3) != 1:
            wm_con.room1.tags = (dd_main.ON_THE_ROAD,)
        int_con = game.content.plotutility.IntCommTowerConnection(self, myscene, intscene, room1=mygoal, room2=introom)

        tplot = self.add_sub_plot(nart, "DZD_MECHA_ENCOUNTER", spstate=PlotState().based_on(self,{"ROOM":mygoal}), necessary=False)
        return True
コード例 #2
0
    def custom_init(self, nart):
        team1 = teams.Team(name="Player Team")
        team2 = teams.Team(name="Civilian Team", allies=(team1, ))
        myscene = gears.GearHeadScene(50,
                                      50,
                                      "DZ Village",
                                      player_team=team1,
                                      civilian_team=team2,
                                      scale=gears.scale.HumanScale,
                                      attributes=(gears.personality.DeadZone,
                                                  gears.tags.Village))
        myscene.exploration_music = 'Doctor_Turtle_-_04_-_Lets_Just_Get_Through_Christmas.ogg'

        npc = gears.selector.random_character(50,
                                              local_tags=myscene.attributes)
        npc.place(myscene, team=team2)

        myscenegen = pbge.randmaps.SceneGenerator(
            myscene, game.content.gharchitecture.HumanScaleDeadzone())

        self.register_scene(nart, myscene, myscenegen, ident="LOCALE")

        #myscene.contents.append(ghterrain.ScrapIronBuilding(waypoints={"DOOR":ghwaypoints.ScrapIronDoor(),"OTHER":ghwaypoints.RetroComputer()}))

        wm_con = game.content.plotutility.WMDZTownConnection(
            self, self.elements["WORLD"], myscene)
        wm_con.room1.tags = (ON_THE_ROAD, )

        return True
コード例 #3
0
    def custom_init(self, nart):
        team1 = teams.Team(name="Player Team")
        intscene = gears.GearHeadScene(
            65,
            65,
            self.elements[DG_NAME],
            player_team=team1,
            attributes=self.elements[DG_SCENE_TAGS],
            combat_music=self.elements[DG_COMBAT_MUSIC],
            exploration_music=self.elements[DG_EXPLO_MUSIC],
            scale=gears.scale.HumanScale)
        intscenegen = pbge.randmaps.SceneGenerator(
            intscene,
            self.elements[DG_ARCHITECTURE],
            decorate=self.elements[DG_DECOR])
        self.register_scene(nart,
                            intscene,
                            intscenegen,
                            ident="LOCALE",
                            dident=DG_PARENT_SCENE,
                            temporary=self.elements.get(DG_TEMPORARY, False))

        self.last_update = 0

        for t in range(random.randint(3, 5)):
            self.add_sub_plot(
                nart,
                "MONSTER_ENCOUNTER",
                elements={"TYPE_TAGS": self.elements[DG_MONSTER_TAGS]})

        return True
コード例 #4
0
    def custom_init( self, nart ):
        """An empty map that will add subplots for the mission's objectives."""
        team1 = teams.Team(name="Player Team")
        myscene = gears.GearHeadScene(
            40,40,"Combat Zone",player_team=team1,scale=gears.scale.MechaScale,
            exploration_music='A wintertale.ogg', combat_music='Chronos.ogg',
        )
        myscenegen = pbge.randmaps.SceneGenerator(myscene, game.content.gharchitecture.MechaScaleSemiDeadzone())
        self.register_scene( nart, myscene, myscenegen, ident="LOCALE", temporary=True)

        player_a,enemy_a = random.choice(pbge.randmaps.anchors.OPPOSING_PAIRS)

        self.register_element("_EROOM",pbge.randmaps.rooms.OpenRoom(5,5,anchor=player_a),dident="LOCALE")
        myent = self.register_element( "ENTRANCE", game.content.ghwaypoints.Waypoint(anchor=pbge.randmaps.anchors.middle), dident="_EROOM")

        enemy_room = self.register_element("ENEMY_ROOM",game.content.ghrooms.MSRuinsRoom(15,15,anchor=enemy_a),dident="LOCALE")
        team2 = self.register_element("_eteam",teams.Team(enemies=(myscene.player_team,)),dident="ENEMY_ROOM")
        myunit = gears.selector.RandomMechaUnit(level=10,strength=50,fac=self.elements.get("ENEMY_FACTION", None),env=myscene.environment)
        team2.contents += myunit.mecha_list
        enemy_room.contents.append(ghwaypoints.SmokingWreckage())
        enemy_room.contents.append(ghwaypoints.SmokingWreckage())
        enemy_room.contents.append(ghterrain.DZDConcreteBuilding)

        self.mission_entrance = (myscene,myent)
        self.started_the_intro = False

        self.tiles_moved = 0
        self.move_tutorial_done = False
        self.threat_tutorial_done = False
        self.combat_tutorial_done = False

        return True
コード例 #5
0
    def custom_init( self, nart ):
        team1 = teams.Team(name="Player Team")
        myscene = gears.GearHeadScene(50,50,"Combat Zone",player_team=team1,scale=gears.scale.MechaScale)
        myscenegen = pbge.randmaps.SceneGenerator(myscene, game.content.gharchitecture.MechaScaleDeadzone())
        self.register_scene( nart, myscene, myscenegen, ident="LOCALE", temporary=True, dident=self.elements["MISSION_RETURN"][0])

        player_a,enemy_a = random.choice(pbge.randmaps.anchors.OPPOSING_PAIRS)

        if not self.elements.get("FACTION"):
            self.register_element("FACTION",gears.factions.Circle())

        self.register_element("_EROOM",pbge.randmaps.rooms.OpenRoom(5,5,anchor=player_a),dident="LOCALE")
        destination,entrance = self.elements["MISSION_RETURN"]
        myent = self.register_element( "ENTRANCE", game.content.ghwaypoints.Exit(dest_scene=destination,dest_entrance=entrance,anchor=pbge.randmaps.anchors.middle), dident="_EROOM")

        enemy_room = self.register_element("ENEMY_ROOM",pbge.randmaps.rooms.FuzzyRoom(10,10,anchor=enemy_a),dident="LOCALE")
        team2 = self.register_element("_eteam",teams.Team(enemies=(myscene.player_team,)),dident="ENEMY_ROOM")
        myunit = gears.selector.RandomMechaUnit(level=self.rank,strength=150,fac=self.elements["FACTION"],env=myscene.environment)
        team2.contents += myunit.mecha_list
        enemy_room.contents.append(ghwaypoints.SmokingWreckage())
        enemy_room.contents.append(ghwaypoints.SmokingWreckage())

        for t in range(random.randint(1,3)):
            self.add_sub_plot(nart,"MECHA_ENCOUNTER",necessary=False)

        self.mission_entrance = (myscene,myent)
        self.witness_ready = True

        return True
コード例 #6
0
    def custom_init(self, nart):
        team1 = teams.Team(name="Player Team")
        team2 = teams.Team(name="Civilian Team", allies=(team1,))
        town_fac = self.register_element( "METRO_FACTION",
            gears.factions.Circle(nart.camp,parent_faction=gears.factions.DeadzoneFederation,name="the {} Council".format(self.elements["DZ_TOWN_NAME"]))
        )
        myscene = gears.GearHeadScene(50, 50, self.elements["DZ_TOWN_NAME"], player_team=team1, civilian_team=team2,
                                      scale=gears.scale.HumanScale, is_metro=True,
                                      faction=town_fac,
                                      attributes=(
                                      gears.personality.DeadZone, gears.tags.City, gears.tags.SCENE_PUBLIC))
        myscene.exploration_music = 'Good Night.ogg'

        for t in range(random.randint(1,3)):
            npc = gears.selector.random_character(50, local_tags=myscene.attributes)
            npc.place(myscene, team=team2)

        myscenegen = pbge.randmaps.CityGridGenerator(myscene, gharchitecture.HumanScaleGreenzone(),
                                                     road_terrain=ghterrain.Flagstone)

        self.register_scene(nart, myscene, myscenegen, ident="LOCALE")
        self.register_element("METRO", myscene.metrodat)

        myroom2 = self.register_element("_ROOM2", pbge.randmaps.rooms.Room(3, 3, anchor=pbge.randmaps.anchors.east),
                                        dident="LOCALE")
        towngate = self.register_element("ENTRANCE", DZDRoadMapExit(roadmap=self.elements["DZ_ROADMAP"],
                                                                    node=self.elements["DZ_NODE"],name="The Highway",
                                                                    desc="The highway stretches far beyond the horizon, all the way back to the green zone.",
                                                                    anchor=pbge.randmaps.anchors.east,
                                                                    plot_locked=True), dident="_ROOM2")
        # Gonna register the entrance under another name for the subplots.
        self.register_element("MISSION_GATE", towngate)
        self.register_element("METROSCENE", myscene)

        mystory = self.register_element("BACKSTORY",backstory.Backstory(commands=("DZTOWN_FOUNDING",),elements={"LOCALE":self.elements["LOCALE"]}))

        team3 = teams.Team(name="Sheriff Team", allies=(team1,team2))
        myroom2.contents.append(team3)

        self.first_quest_done = False

        # Gonna store this town in the campdata, so it can be accessed elsewhere.
        nart.camp.campdata["DISTANT_TOWN"] = myscene
        nart.camp.campdata["DISTANT_TEAM"] = team3

        # Add the services.
        tplot = self.add_sub_plot(nart, "DZRS_ORDER")
        tplot = self.add_sub_plot(nart, "DZRS_GARAGE")
        tplot = self.add_sub_plot(nart, "DZRS_HOSPITAL")
        tplot = self.add_sub_plot(nart, "TAVERN")

        # Record the tavern scene
        self.elements["TAVERN"] = tplot.elements["LOCALE"]

        # Add the local tarot.
        #threat_card = nart.add_tarot_card(self, (game.content.ghplots.dd_tarot.MT_THREAT,), )
        #game.content.mechtarot.Constellation(nart, self, threat_card, threat_card.get_negations()[0], steps=3)

        return True
コード例 #7
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
コード例 #8
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
コード例 #9
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
コード例 #10
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
コード例 #11
0
    def custom_init(self, nart):
        # Add the interior scene.
        team1 = teams.Team(name="Player Team")
        team2 = teams.Team(name="Guild Team")
        intscene = gears.GearHeadScene(
            35,
            35,
            self.elements.get("GUILD_NAME", self._generate_guild_name()),
            player_team=team1,
            civilian_team=team2,
            faction=self.elements.get("FACTION"),
            attributes=self.elements.get("INTERIOR_TAGS",
                                         (gears.tags.SCENE_SEMIPUBLIC, )) +
            (gears.tags.SCENE_BUILDING, gears.tags.Criminal),
            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(
                                          10,
                                          10,
                                          anchor=pbge.randmaps.anchors.south),
                                      dident="INTERIOR")
        foyer.contents.append(team2)

        exit = self.register_element("EXIT",
                                     ghwaypoints.Exit(
                                         name="Exit",
                                         dest_wp=self.elements["ENTRANCE"],
                                         anchor=pbge.randmaps.anchors.south),
                                     dident="_introom")

        # Add some ne'er do wells
        for t in range(random.randint(2, 4)):
            npc = gears.selector.random_character(
                self.rank,
                combatant=True,
                local_tags=intscene.attributes,
                needed_tags=(gears.tags.Criminal, ))
            npc.place(intscene, team=team2)

        self.add_sub_plot(nart, "TGUILD_SERVICE")

        return True
コード例 #12
0
    def custom_init(self, nart):
        # Create the outer grounds with the bandits and their leader.
        mybandits = game.content.plotutility.RandomBanditCircle()
        team1 = teams.Team(name="Player Team")
        myscene = gears.GearHeadScene(35,35,"Bandit Base Area",player_team=team1,scale=gears.scale.MechaScale)
        myscenegen = pbge.randmaps.SceneGenerator(myscene, game.content.gharchitecture.MechaScaleDeadzone())
        self.register_scene( nart, myscene, myscenegen, ident="LOCALE" )

        # Add the connection to the world map.
        mycon = game.content.plotutility.WMConcreteBuildingConnection(self, self.elements["WORLD"], myscene, door2_id="_exit")
        if random.randint(1,10) == 1:
            mycon.room1.tags = (dd_main.ON_THE_ROAD,)

        # Add the goal room and the bandits guarding it.
        mygoal = self.register_element("_goalroom",pbge.randmaps.rooms.FuzzyRoom(10,10,parent=myscene))
        team2 = self.register_element("_eteam",teams.Team(enemies=(myscene.player_team,),faction=mybandits),dident="_goalroom")
        my_unit = gears.selector.RandomMechaUnit(self.rank,100,mybandits,myscene.environment,add_commander=True)
        team2.contents += my_unit.mecha_list
        self.register_element("_commander",my_unit.commander)
        self.intro_ready = True

        # Add the interior scene.
        team1 = teams.Team(name="Player Team")
        team2 = teams.Team(name="Civilian Team")
        dimdiff = max(random.randint(0,4),random.randint(0,4))
        if random.randint(1,2) == 1:
            dimdiff = -dimdiff
        intscene = gears.GearHeadScene(35,35,"Bandit Base",player_team=team1,civilian_team=team2,scale= gears.scale.HumanScale)
        intscenegen = pbge.randmaps.SceneGenerator(intscene, game.content.gharchitecture.DefaultBuilding())
        self.register_scene( nart, intscene, intscenegen, ident="_interior" )
        introom = self.register_element('_introom', pbge.randmaps.rooms.ClosedRoom(10 + dimdiff, 10 - dimdiff, anchor=pbge.randmaps.anchors.south, decorate=pbge.randmaps.decor.OmniDec(win=game.content.ghterrain.Window)), dident="_interior")

        mycon2 = game.content.plotutility.IntConcreteBuildingConnection(self, myscene, intscene, room1=mygoal, room2=introom)

        introom2 = self.register_element('OFFICE', pbge.randmaps.rooms.ClosedRoom(random.randint(7,10), random.randint(7,10), decorate=pbge.randmaps.decor.OmniDec(win=game.content.ghterrain.Window)), dident="_interior")

        return True
コード例 #13
0
    def custom_init( self, nart ):
        """An empty map that will add subplots for the mission's objectives."""
        team1 = teams.Team(name="Player Team")
        team2 = teams.Team(name="Civilian Team")

        self.elements["DZ_TOWN_NAME"] = self.generate_town_name()

        myscene = gears.GearHeadScene(
            15,15,"{} Mecha Hangar".format(self.elements["DZ_TOWN_NAME"]),player_team=team1,
            scale=gears.scale.HumanScale,civilian_team=team2,attributes=(gears.personality.DeadZone,),is_metro=True,
            exploration_music='A wintertale.ogg', combat_music='Chronos.ogg'
        )
        myscenegen = pbge.randmaps.SceneGenerator(myscene, gharchitecture.IndustrialBuilding(floor_terrain=ghterrain.GrateFloor))
        self.register_scene( nart, myscene, myscenegen, ident="LOCALE", temporary=True)

        # Start a new adventure for this plot and its children- the intro will be disposed of when it's finished.
        self.adv = pbge.plots.Adventure(world=myscene)

        myroom = self.register_element("_EROOM",pbge.randmaps.rooms.ClosedRoom(10,7),dident="LOCALE")
        myent = self.register_element( "ENTRANCE", game.content.ghwaypoints.Waypoint(anchor=pbge.randmaps.anchors.middle), dident="_EROOM")
        mychute = self.register_element("CHUTE",ghwaypoints.BoardingChute(plot_locked=True),dident="_EROOM")
        myroom.contents.append(ghwaypoints.ClosedBoardingChute())
        myroom.contents.append(ghwaypoints.VentFan())

        npc = self.register_element("SHERIFF",
                            gears.selector.random_character(45, local_tags=self.elements["LOCALE"].attributes,
                                                            job=gears.jobs.ALL_JOBS["Sheriff"]))
        npc.place(myscene, team=team2)

        self.register_element("MISSION_RETURN", myent)

        # Request the intro mission and debriefing.
        self.add_sub_plot(nart, self.MISSION_LABEL, ident="MISSION", elements=self.MISSION_ELEMENTS)
        self.add_sub_plot(nart,"DZD_MISSION_DEBRIEFING", ident="DEBRIEFING", elements=self.DEBRIEFING_ELEMENTS)

        # Attempt to load the test mission.
        mytest = self.add_sub_plot(nart,"DZRE_TEST",spstate=pbge.plots.PlotState(rank=1,elements={"METRO":myscene.metrodat,"MISSION_GATE":mychute,"FACTION":game.content.plotutility.RandomBanditCircle(nart.camp),"DZREPR_MISSION_WINS":0}).based_on(self),necessary=False)

        if mytest:
            print("Loaded DZRE test!")
            mytest.mission_active = True

        self.started_the_intro = False
        self._tutorial_on = False

        return True
コード例 #14
0
    def custom_init( self, nart ):
        # Create a building within the town.
        building = self.register_element("_EXTERIOR", game.content.ghterrain.ScrapIronBuilding(waypoints={"DOOR": game.content.ghwaypoints.ScrapIronDoor()}), dident="TOWN")

        # Add the interior scene.
        team1 = teams.Team(name="Player Team")
        team2 = teams.Team(name="Civilian Team")
        intscene = gears.GearHeadScene(35,35,"Cheesery",player_team=team1,civilian_team=team2,scale= gears.scale.HumanScale)
        intscenegen = pbge.randmaps.SceneGenerator(intscene, game.content.gharchitecture.MakeScrapIronBuilding())
        self.register_scene( nart, intscene, intscenegen, ident="LOCALE" )
        foyer = self.register_element('_introom', pbge.randmaps.rooms.ClosedRoom(anchor=pbge.randmaps.anchors.south, decorate=game.content.gharchitecture.CheeseShopDecor()), dident="LOCALE")

        mycon2 = game.content.plotutility.TownBuildingConnection(self, self.elements["TOWN"], intscene, room1=building, room2=foyer, door1=building.waypoints["DOOR"], move_door1=False)

        # Generate a criminal enterprise of some kind.
        #cplot = self.add_sub_plot(nart, "DZD_CriminalEnterprise")

        return True
コード例 #15
0
    def custom_init(self, nart):
        """An empty map that will add subplots for the mission's objectives."""
        team1 = teams.Team(name="Player Team")
        myscene = gears.GearHeadScene(
            50,
            50,
            "Combat Zone",
            player_team=team1,
            scale=gears.scale.MechaScale,
            combat_music="Komiku_-_03_-_Battle_Theme.ogg",
            exploration_music="Chronos.ogg")
        myscenegen = self.elements["SCENEGEN"](myscene,
                                               self.elements["ARCHITECTURE"])
        self.register_scene(nart,
                            myscene,
                            myscenegen,
                            ident="LOCALE",
                            temporary=True,
                            dident="METROSCENE")
        self.adv.world = myscene

        myanchor = self.elements.get("ENTRANCE_ANCHOR", None) or random.choice(
            pbge.randmaps.anchors.EDGES)
        self.register_element("ENTRANCE_ROOM",
                              pbge.randmaps.rooms.OpenRoom(7,
                                                           7,
                                                           anchor=myanchor),
                              dident="LOCALE")
        myent = self.register_element("_ENTRANCE",
                                      game.content.ghwaypoints.Exit(
                                          anchor=pbge.randmaps.anchors.middle,
                                          plot_locked=True),
                                      dident="ENTRANCE_ROOM")

        for ob in self.elements["OBJECTIVES"]:
            self.add_sub_plot(nart, ob)

        self.mission_entrance = (myscene, myent)
        self.started_mission = False
        self.gave_mission_reminder = False
        self.gave_ending_message = False
        self.exited_mission = False

        return True
コード例 #16
0
ファイル: utility.py プロジェクト: xordspar0/gearhead-caramel
    def custom_init( self, nart ):
        # Add the interior scene.
        team1 = teams.Team(name="Player Team")
        team2 = teams.Team(name="Civilian Team")
        intscene = gears.GearHeadScene(35, 35, "{} Base".format(self.elements["FACTION"]), player_team=team1,
                                       civilian_team=team2, scale=gears.scale.HumanScale, faction=self.elements["FACTION"])
        intscenegen = pbge.randmaps.SceneGenerator(intscene, gharchitecture.DefaultBuilding())
        self.register_scene(nart, intscene, intscenegen, ident="INTERIOR")

        foyer = self.register_element('_introom', pbge.randmaps.rooms.ClosedRoom(anchor=pbge.randmaps.anchors.south,),
                                    dident="INTERIOR")
        foyer.contents.append(team2)
        # Add the NPCs.
        team2.contents.append(gears.selector.random_character(self.rank+10,job=self.elements["FACTION"].choose_job(gears.tags.Commander),combatant=True,faction=self.elements["FACTION"]))
        team2.contents.append(gears.selector.random_character(self.rank+5,job=self.elements["FACTION"].choose_job(gears.tags.Support),combatant=True,faction=self.elements["FACTION"]))
        team2.contents.append(gears.selector.random_character(self.rank,faction=self.elements["FACTION"],
                                                                  job=self.elements["FACTION"].choose_job(
                                                                      gears.tags.Trooper), combatant=True))

        return True
コード例 #17
0
    def custom_init(self, nart):
        """Create map, fill with city + services."""
        team1 = teams.Team(name="Player Team")
        myscene = gears.GearHeadScene(30,
                                      30,
                                      "Deadzone Highway",
                                      player_team=team1,
                                      scale=gears.scale.WorldScale)
        myscene.exploration_music = 'Doctor_Turtle_-_04_-_Lets_Just_Get_Through_Christmas.ogg'

        anc_a, anc_b = random.choice(pbge.randmaps.anchors.OPPOSING_CARDINALS)

        myscenegen = DeadzoneHighwaySceneGen(
            myscene, game.content.gharchitecture.WorldScaleDeadzone())

        self.register_scene(nart, myscene, myscenegen, ident="LOCALE")

        myroom = self.register_element("_ROOM",
                                       pbge.randmaps.rooms.FuzzyRoom(
                                           5,
                                           5,
                                           tags=(ON_THE_ROAD),
                                           anchor=anc_a),
                                       dident="LOCALE")
        mydest = self.register_element("_ROOM2",
                                       pbge.randmaps.rooms.FuzzyRoom(
                                           3,
                                           3,
                                           tags=(ON_THE_ROAD, ),
                                           anchor=anc_b),
                                       dident="LOCALE")
        myent = self.register_element("ENTRANCE",
                                      game.content.ghwaypoints.Waypoint(
                                          anchor=pbge.randmaps.anchors.middle),
                                      dident="_ROOM")
        myexit = self.register_element(
            "EXIT",
            game.content.ghwaypoints.Exit(name="Exit Scenario",
                                          anchor=pbge.randmaps.anchors.middle),
            dident="_ROOM2")
        return True
コード例 #18
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
コード例 #19
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
コード例 #20
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
コード例 #21
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
コード例 #22
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
コード例 #23
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
コード例 #24
0
    def custom_init(self, nart):
        myroom = self.register_element('_introom',
                                       pbge.randmaps.rooms.ClosedRoom(),
                                       dident="LOCALE")
        bteam = self.register_element(
            "_bteam",
            teams.Team("Bouncer Team",
                       allies=(self.elements["LOCALE"].civilian_team, )),
            dident="_introom")
        bouncer = self.register_element(
            "BOUNCER",
            gears.selector.random_character(
                self.rank,
                local_tags=self.elements["METROSCENE"].attributes,
                job=gears.jobs.ALL_JOBS["Security Guard"]),
            lock=True,
            dident="_bteam")

        # Create the VIP's office.
        team1 = teams.Team(name="Player Team")
        team2 = teams.Team(name="Civilian Team")
        intscene = gears.GearHeadScene(
            35,
            35,
            "{}'s Office".format(self.elements["NPC"]),
            player_team=team1,
            civilian_team=team2,
            attributes=(gears.tags.SCENE_BUILDING, ),
            scale=gears.scale.HumanScale)

        intscenegen = pbge.randmaps.SceneGenerator(
            intscene, gharchitecture.CommercialBuilding())
        self.register_scene(nart,
                            intscene,
                            intscenegen,
                            ident="INTERIOR",
                            dident="LOCALE")
        office = self.register_element(
            '_office',
            pbge.randmaps.rooms.ClosedRoom(
                width=20,
                height=12,
                anchor=pbge.randmaps.anchors.south,
                decorate=gharchitecture.OfficeDecor()),
            dident="INTERIOR")
        office.contents.append(team2)
        team2.contents.append(self.elements["NPC"])

        office_exit = ghwaypoints.Exit(name="Exit",
                                       anchor=pbge.randmaps.anchors.south)
        office.contents.append(office_exit)

        elevator = self.register_element("_elevator",
                                         ghwaypoints.GlassDoor(
                                             name="Elevator",
                                             plot_locked=True,
                                             dest_wp=office_exit),
                                         dident="_introom")
        office_exit.dest_wp = elevator

        self.lockpick_pc = None
        self.bribe_cost = gears.selector.calc_mission_reward(self.rank, 300)

        return True
コード例 #25
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
コード例 #26
0
    def custom_init(self, nart):
        town_name = self._generate_town_name()
        town_fac = self.register_element(
            "METRO_FACTION",
            gears.factions.Circle(
                nart.camp,
                parent_faction=gears.factions.DeadzoneFederation,
                name="the {} Council".format(town_name)))
        team1 = teams.Team(name="Player Team")
        team2 = teams.Team(name="Civilian Team",
                           allies=(team1, ),
                           faction=town_fac)

        myscene = gears.GearHeadScene(50,
                                      50,
                                      town_name,
                                      player_team=team1,
                                      civilian_team=team2,
                                      scale=gears.scale.HumanScale,
                                      is_metro=True,
                                      faction=town_fac,
                                      attributes=(gears.personality.DeadZone,
                                                  gears.tags.City,
                                                  gears.tags.SCENE_PUBLIC))
        myscene.exploration_music = 'Komiku_-_06_-_Friendss_theme.ogg'

        npc = gears.selector.random_character(50,
                                              local_tags=myscene.attributes)
        npc.place(myscene, team=team2)

        npc2 = gears.selector.random_character(
            50,
            local_tags=myscene.attributes,
            job=gears.jobs.choose_random_job(
                (gears.tags.Laborer, ), self.elements["LOCALE"].attributes))
        npc2.place(myscene, team=team2)

        defender = self.register_element(
            "DEFENDER",
            gears.selector.random_character(
                self.rank,
                local_tags=self.elements["LOCALE"].attributes,
                job=gears.jobs.choose_random_job(
                    (gears.tags.Police, ), self.elements["LOCALE"].attributes),
                faction=town_fac))
        defender.place(myscene, team=team2)

        myscenegen = pbge.randmaps.CityGridGenerator(
            myscene,
            gharchitecture.HumanScaleGreenzone(),
            road_terrain=ghterrain.Flagstone)

        self.register_scene(nart, myscene, myscenegen, ident="LOCALE")

        mystory = self.register_element(
            "BACKSTORY",
            backstory.Backstory(commands=("DZTOWN_FOUNDING", ),
                                elements={"LOCALE": self.elements["LOCALE"]}))

        self.register_element("METRO", myscene.metrodat)
        self.register_element("METROSCENE", myscene)
        self.register_element("DZ_NODE_FRAME", RoadNode.FRAME_TOWN)

        myroom2 = self.register_element("_ROOM2",
                                        pbge.randmaps.rooms.Room(
                                            3,
                                            3,
                                            anchor=pbge.randmaps.anchors.east),
                                        dident="LOCALE")
        towngate = self.register_element(
            "ENTRANCE",
            DZDRoadMapExit(
                roadmap=self.elements["DZ_ROADMAP"],
                node=self.elements["DZ_NODE"],
                name="The Highway",
                desc=
                "The highway stretches far beyond the horizon, all the way back to the green zone.",
                anchor=pbge.randmaps.anchors.east,
                plot_locked=True),
            dident="_ROOM2")
        # Gonna register the entrance under another name for the subplots.
        self.register_element("MISSION_GATE", towngate)

        # Add the order. This subplot will add a leader, guards, police, and backstory to the town.
        tplot = self.add_sub_plot(nart, "DZRS_ORDER")

        # Add the services.
        tplot = self.add_sub_plot(nart, "DZRS_GARAGE")
        tplot = self.add_sub_plot(nart, "DZRS_HOSPITAL")
        #tplot = self.add_sub_plot(nart, "DZDHB_EliteEquipment")
        #tplot = self.add_sub_plot(nart, "DZDHB_BlueFortress")
        #tplot = self.add_sub_plot(nart, "DZDHB_BronzeHorseInn")
        #tplot = self.add_sub_plot(nart, "DZDHB_LongRoadLogistics")
        tplot = self.add_sub_plot(nart, "QOL_REPORTER")

        self.add_sub_plot(nart, "RANDOM_LANCEMATE")

        # Add the local tarot.
        threat_card = nart.add_tarot_card(self, (tarot_cards.MT_THREAT, ))
        mechtarot.Constellation(nart, self, threat_card,
                                threat_card.get_negations()[0])

        return True
コード例 #27
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
コード例 #28
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
コード例 #29
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
コード例 #30
0
    def custom_init( self, nart ):
        town_name = self._generate_town_name()
        town_fac = self.register_element( "METRO_FACTION",
            gears.factions.Circle(nart.camp,parent_faction=gears.factions.DeadzoneFederation,name="the {} Council".format(town_name))
        )
        team1 = teams.Team(name="Player Team")
        team2 = teams.Team(name="Civilian Team", allies=(team1,), faction=town_fac)

        myscene = gears.GearHeadScene(50, 50, town_name, player_team=team1, civilian_team=team2,
                                      scale=gears.scale.MechaScale, is_metro=True,
                                      faction=town_fac,
                                      attributes=(
                                      gears.personality.DeadZone, gears.tags.City))
        myscene.exploration_music = 'A wintertale.ogg'
        myscene.combat_music = 'Komiku_-_09_-_Run__That_boss_was_a_bearing_wall_.ogg'

        myscene.contents.append(ghrooms.MSRuinsRoom(5,5))
        myscene.contents.append(ghrooms.WreckageRoom(5,5))

        my_egg = self.register_element("ANGELEGG",
            ghwaypoints.AngelEgg(name="?Angel Egg?", plot_locked=True, desc="You stand before a strange crystal egg. Cloudy shapes move on the inside.")
        )
        myroom = pbge.randmaps.rooms.FuzzyRoom(5,5)
        myscene.contents.append(myroom)
        myroom.contents.append(my_egg)

        myscenegen = pbge.randmaps.SceneGenerator(myscene, gharchitecture.MechaScaleSemiDeadzoneRuins())

        self.register_scene(nart, myscene, myscenegen, ident="LOCALE")
        self.register_element("METRO", myscene.metrodat)

        # Connect this town to the previous town.
        mymap = self.elements["DZ_ROADMAP"]
        connect_to = self.elements["DZ_NODE"]
        self.final_node = dd_main.RoadNode(None, None, visible=False, frame=dd_main.RoadNode.FRAME_DANGER)
        mymap.add_node(self.final_node,random.randint(1,2),random.randint(3,6))
        self.final_edge = dd_main.RoadEdge(discoverable=False,style=1)
        mymap.connect_nodes(connect_to, self.final_node, self.final_edge)
        self.final_edge.eplot = self

        myroom2 = self.register_element("_ROOM2", pbge.randmaps.rooms.Room(3, 3, anchor=pbge.randmaps.anchors.east),
                                        dident="LOCALE")
        towngate = self.register_element("ENTRANCE", DZDRoadMapExit(roadmap=self.elements["DZ_ROADMAP"],
                                                                    node=self.final_node,name="The Highway",
                                                                    desc="You stand before the road leading back to {METROSCENE}.".format(**self.elements),
                                                                    anchor=pbge.randmaps.anchors.east,
                                                                    plot_locked=True), dident="_ROOM2")

        self.final_node.destination = myscene
        self.final_node.entrance = towngate

        # Gonna register the entrance under another name for the subplots.
        self.register_element("MISSION_GATE", towngate)

        # Add an encounter to the map.
        #self.add_sub_plot(nart, "DZDC_DoomVil_ENCOUNTER")

        self.memo = Memo("{LOCALE} sent a distress call moments before the communication signal was lost. You should go there and find out what happened.".format(**self.elements),
                         location=self.elements["METROSCENE"])

        self.did_intro = False
        self.found_egg = False
        self.did_fight = False

        return True