Пример #1
0
def New_Game():
    get_name()
    ECS_Storage.init()
    CM.new_Component('Poison')
    config.DungeonLevelIds = {}
    config.CurrentDungeonLevel = 0
    config.PlayerId = EM.new_Id()
    config.PlayerAttack = EM.new_Id()
    config.fov_recompute = True
    config.game_msg = []
    config.game_state = 'playing'
    config.xptolevel = 66.6
    CM.new_Component('ToLevel')
    CM.add_Component(config.PlayerId, 'Tile', Tile('Player', '@', False,
                                                   True, Color.sky))
    CM.add_Component(config.PlayerId, 'Coord',
                     Coord(config.playscreen_width / 2,
                           config.playscreen_height / 2))
    deatheffects = [player_death]
    CM.add_Component(config.PlayerId, 'Death',
                     Death('You have died. What a pity.' +
                           ' Did you even manage to get any loot?',
                           '%', effects=deatheffects))
    CM.add_Component(config.PlayerId, 'Creature', Creature(10, 0, 10,
                                                           10, 7, 0,
                                                           special={}))
    CM.add_Component(config.PlayerId, 'Level', Level())
    CM.add_Component(config.PlayerAttack, 'Attack', Attack(1, 4))
    next_level()
    Message('Welcome young adventurer! You have just entered my dungeon and' +
            ' through my deal with the adventurers guild you may explore my' +
            ' first 12 levels! Though of course everything will still try to' +
            ' kill you but atleast once finish there is an easy passage out!',
            Color.red)
Пример #2
0
def create_stairs(dungeonlevelid):
    stairs = EM.new_Id()
    CM.add_Component(stairs, 'Tile', Tile('Stairs Down', '>', True,
                                          True, Color.map_tile_visible))
    CM.add_Component(stairs, 'Coord', Coord(config.playscreen_width / 2,
                                            config.playscreen_height / 2))
    CM.add_Component(stairs, 'ToLevel', ToLevel(2))
    CM.add_Component(stairs, 'Seen', Seen(seen=True))
    dungeonlevelid = config.DungeonLevelIds[config.CurrentDungeonLevel]
    firstlevel = CM.get_Component('DungeonLevel', dungeonlevelid)
    firstlevel.FeatureIds.append(stairs)
Пример #3
0
def make_lion(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Lion', 'l', False, True,
                          color=Color.yellow))
    CM.add_Component(newmonsterid, 'Death',
                     Death('Dead on the floor a lion lays.',
                           '~', effects=[death_cleanup]))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(30, 2, 10, 15, 6, 81))
    CM.add_Component(newmonsterid, 'Action', Lion_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #4
0
def make_hawk(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Hawk', 'h', False, True,
                          color=Color.darker_orange))
    CM.add_Component(newmonsterid, 'Death',
                     Death('The dead hawk flutters to the ground dead.',
                           '~', effects=[death_cleanup]))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(10, 0, 10, 25, 10, 73))
    CM.add_Component(newmonsterid, 'Action', Hawk_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #5
0
def make_kangaroo(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Kangaroo', 'k', False, True,
                          color=Color.dark_sepia))
    CM.add_Component(newmonsterid, 'Death',
                     Death('This kangaroo won\'t be hopping anymore.',
                           '~', effects=[death_cleanup]))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(10, 0, 10, 25, 10, 73))
    CM.add_Component(newmonsterid, 'Action', Kangaroo_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #6
0
def make_frog(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Frog', 'f', False, True,
                          color=Color.lighter_green))
    CM.add_Component(newmonsterid, 'Death',
                     Death('Squished frog, how droll.',
                           '~', effects=[death_cleanup]))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(10, 0, 5, 20, 5, 61))
    CM.add_Component(newmonsterid, 'Action', Frog_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #7
0
def make_dog(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Dog', 'd', False, True,
                          color=Color.darker_yellow))
    CM.add_Component(newmonsterid, 'Death',
                     Death('The little doggie wimpers as it falls over.',
                           '~', effects=[death_cleanup]))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(12, 1, 14, 8, 5, 26, special={'Dodge': 10}))
    CM.add_Component(newmonsterid, 'Action', Dog_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #8
0
def make_imp(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Imp', 'i', False, True,
                          color=Color.red))
    CM.add_Component(newmonsterid, 'Death',
                     Death('The dead imp quickly fades from reality.',
                           '.', effects=[death_cleanup]))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(20, 0, 10, 18, 4, 79))
    CM.add_Component(newmonsterid, 'Action', Imp_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #9
0
def make_bat(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Bat', 'b', False, True,
                          color=Color.dark_gray))
    CM.add_Component(newmonsterid, 'Death',
                     Death('The small bat lets out one final pitiful squeak.',
                           '~', effects=[death_cleanup]))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(3, 0, 8, 10, 5, 15))
    CM.add_Component(newmonsterid, 'Action', Bat_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #10
0
def make_hobgoblin(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Hobgoblin', 'G', False, True,
                          color=Color.dark_green))
    deatheffects = [death_cleanup, hobs_choice]
    CM.add_Component(newmonsterid, 'Death',
                     Death('Hobgoblins die like goblins, just darker.',
                           '~', effects=deatheffects))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(30, 3, 12, 10, 8, 272))
    CM.add_Component(newmonsterid, 'Action', Goblin_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #11
0
def make_elephant(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Elephant', 'e', False, True,
                          color=Color.gray))
    CM.add_Component(newmonsterid, 'Death',
                     Death('Before like an angry mountain this elephant ' +
                           'is now just a boulder.',
                           '~', effects=[death_cleanup]))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(30, 1, 10, 5, 7, 42))
    CM.add_Component(newmonsterid, 'Action', Elephant_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #12
0
def make_poison_frog(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Poison Frog', 'F', False, True,
                          color=Color.red))
    deatheffects = [death_cleanup, poison_choice]
    CM.add_Component(newmonsterid, 'Death',
                     Death('Congradulations! You didn\'t even need a blender.',
                           '~', effects=deatheffects))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(20, 0, 10, 21, 5, 244))
    CM.add_Component(newmonsterid, 'Action', Frog_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #13
0
def make_goblin(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Goblin', 'g', False, True,
                          color=Color.green))
    CM.add_Component(newmonsterid, 'Death',
                     Death('A dead goblin, now this is ' +
                           'generic adventuring fair!',
                           '~', effects=[death_cleanup]))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(20, 2, 10, 10, 8, 68))
    CM.add_Component(newmonsterid, 'Action', Goblin_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #14
0
def make_jellyfish(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Jellyfish', 'j', False, True,
                          color=Color.white))
    CM.add_Component(newmonsterid, 'Death',
                     Death('The jellyfish splats onto the floor. Wonder ' +
                           'how it was floating in the first place.',
                           '~', effects=[death_cleanup]))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(10, 10, 10, 10, 4, 84))
    CM.add_Component(newmonsterid, 'Action', Jellyfish_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #15
0
def make_ant(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Ant', 'a', False, True,
                          color=Color.darker_red))
    CM.add_Component(newmonsterid, 'Death',
                     Death('The ants shell now smashed gives way ' +
                           'as it breaths it\'s final breath',
                           '~', effects=[death_cleanup]))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(1, 5, 10, 5, 5, 8))
    CM.add_Component(newmonsterid, 'Action', Ant_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #16
0
def make_clear_jellyfish(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Clear Jellyfish', 'J', False, True,
                          color=Color.map_tile_visible))
    deatheffects = [death_cleanup, clear_choice]
    CM.add_Component(newmonsterid, 'Death',
                     Death('The Clear Jellyfishs falls but upward.' +
                           'How weird...',
                           '~', effects=deatheffects))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(10, 10, 10, 15, 4, 336))
    CM.add_Component(newmonsterid, 'Action', Jellyfish_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #17
0
def make_rabid_dog(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Rabid Dog', 'D', False, True,
                          color=Color.dark_yellow))
    deatheffects = [death_cleanup, rabid_choice]
    CM.add_Component(newmonsterid, 'Death',
                     Death('The Rabid Dog foams at the mouth then slumps ' +
                           'over. It might be a dog eat dog world but ' +
                           'don\'t eat it.', '~', effects=deatheffects))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(16, 2, 14, 6, 5, 104))
    CM.add_Component(newmonsterid, 'Action', Dog_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #18
0
def make_electric_kangaroo(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Electric Kangaroo', 'K', False, True,
                          color=Color.cyan))
    deatheffects = [death_cleanup, electric_choice]
    CM.add_Component(newmonsterid, 'Death',
                     Death('The Electric Kangaroos eye dim as it ' +
                           'falls to the ground.',
                           '~', effects=deatheffects))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(12, 0, 10, 30, 10, 293))
    CM.add_Component(newmonsterid, 'Action', Kangaroo_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #19
0
def make_dire_lion(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Dire Lion', 'L', False, True,
                          color=Color.dark_yellow))
    deatheffects = [death_cleanup, dire_choice]
    CM.add_Component(newmonsterid, 'Death',
                     Death('The Dire Lions no longer able to support ' +
                           'itself slumps to the ground.',
                           '~', effects=deatheffects))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(30, 6, 12, 20, 6, 324))
    CM.add_Component(newmonsterid, 'Action', Lion_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #20
0
def make_savage_hawk(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Savage Hawk', 'H', False, True,
                          color=Color.dark_crimson))
    deatheffects = [death_cleanup, savage_choice]
    CM.add_Component(newmonsterid, 'Death',
                     Death('The Savage Hawks eye dim as it ' +
                           'falls to the ground.',
                           '~', effects=deatheffects))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(12, 0, 10, 30, 10, 293))
    CM.add_Component(newmonsterid, 'Action', Hawk_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #21
0
def make_pink_elephant(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Pink Elephant', 'E', False, True,
                          color=Color.pink))
    deatheffects = [death_cleanup, pink_choice]
    CM.add_Component(newmonsterid, 'Death',
                     Death('The Pink Elephant disapeers. Now you just ' +
                           'have to ask, was it there to begin with?',
                           '~', effects=deatheffects))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(60, 2, 10, 5, 7, 168))
    CM.add_Component(newmonsterid, 'Action', Elephant_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #22
0
def make_vampire_bat(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Vampire Bat', 'B', False, True,
                          color=Color.gray))
    deatheffects = [death_cleanup, vampires_choice]
    CM.add_Component(newmonsterid, 'Death',
                     Death('The Vampire Bat falls to the floor.' +
                           ' The once dread creature is no more.',
                           '~', effects=deatheffects))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(6, 0, 10, 11, 5, 60))
    CM.add_Component(newmonsterid, 'Action', Bat_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #23
0
def make_queen_ant(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Queen Ant', 'A', False, True,
                          color=Color.silver))
    deatheffects = [death_cleanup, queens_choice]
    CM.add_Component(newmonsterid, 'Death',
                     Death('The Ant Queen shudders and slumps over now dead.' +
                           ' The once majestic creature now pitiful.',
                           '~', effects=deatheffects))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(5, 10, 10, 5, 4, 32))
    CM.add_Component(newmonsterid, 'Action', Ant_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #24
0
def make_blue_imp(coord, dungeonlevel):
    newmonsterid = EM.new_Id()
    CM.add_Component(newmonsterid, 'Coord', coord)
    CM.add_Component(newmonsterid, 'Tile',
                     Tile('Blue Imp', 'I', False, True,
                          color=Color.blue))
    deatheffects = [death_cleanup, blue_choice]
    CM.add_Component(newmonsterid, 'Death',
                     Death('The Blue Imp\'s body bursts into a ' +
                           'flame and burns away to nothing.',
                           '.', effects=deatheffects))
    CM.add_Component(newmonsterid, 'Creature',
                     Creature(25, 1, 10, 20, 4, 316))
    CM.add_Component(newmonsterid, 'Action', Imp_AI(newmonsterid))
    dungeonlevel.MonsterIds.append(newmonsterid)
Пример #25
0
def next_level():
    if config.CurrentDungeonLevel > 0:
        dungeonlevelid = config.DungeonLevelIds[config.CurrentDungeonLevel]
        dungeonlevel = CM.get_Component('DungeonLevel', dungeonlevelid)
        levelmap = CM.get_Component('Map', dungeonlevel.MapId)
        for key in dungeonlevel.MonsterIds:
            CM.cleanup(key)
        for lst in levelmap.TileIds:
            for key in lst:
                CM.cleanup(key)
    config.fov_recompute = True
    config.playscreen.clear
    config.CurrentDungeonLevel += 1
    if config.CurrentDungeonLevel < 12:
        newlevelid = EM.new_Id()
        config.DungeonLevelIds[config.CurrentDungeonLevel] = newlevelid
        mapid = config.mapgen.create(newlevelid)
        newlevel = DungeonLevel(config.CurrentDungeonLevel, mapid)
        CM.add_Component(newlevelid, 'DungeonLevel', newlevel)
        Place_Monsters_On_Level(newlevelid)
    else:
        End_Game(finished=True)
Пример #26
0
 def create(self, seed, maxdepth=3):
     random.seed(seed)
     self.maxdepth = maxdepth
     self.usedtiles = []
     self.rooms = []
     centerroom = _room(4, 5, 5, (int(self.width / 2),
                                  int(self.height / 2)))
     self.rooms.append(centerroom)
     self._set_used_tiles(centerroom)
     ring = [centerroom]
     if self.debug:
         coords = {}
         for value in centerroom.Tiles:
             coords[value] = True
         with open('PNGoutput/' + format(self.currentpng, '04d') +
                   '.png', 'wb') as f:
             w = png.Writer(self.width, self.height, alpha=True)
             templist = []
             for y in range(self.height):
                 innerlist = []
                 for x in range(self.width):
                     innerlist.append(0)
                     innerlist.append(0)
                     innerlist.append(0)
                     innerlist.append(255)
                 templist.append(innerlist)
             w.write(f, templist)
         self.currentpng = self.currentpng + 1
         with open('PNGoutput/' + format(self.currentpng, '04d') +
                   '.png', 'wb') as f:
             w = png.Writer(self.width, self.height, alpha=True)
             templist = []
             for y in range(self.height):
                 innerlist = []
                 for x in range(self.width):
                     if (x, y) in coords:
                         innerlist.append(self.ccR)
                         innerlist.append(self.ccG)
                         innerlist.append(self.ccB)
                         innerlist.append(255)
                     else:
                         innerlist.append(0)
                         innerlist.append(0)
                         innerlist.append(0)
                         innerlist.append(0)
                 templist.append(innerlist)
             w.write(f, templist)
         self.color_change()
         self.currentpng = self.currentpng + 1
     self._process_ring(ring, 0)
     newmap = Map(self.width, self.height, seed)
     tilearray = [[False for y in range(self.height)]
                  for x in range(self.width)]
     for room in self.rooms:
         for tile in room.Tiles:
             tilearray[tile[0]][tile[1]] = Tile('Stone Floor', '.',
                                                True, True)
     for y in range(self.height):
         for x in range(self.width):
             if not tilearray[x][y]:
                 tilearray[x][y] = Tile('Stone Wall', '#', False, False)
             newtileid = EntityManager.new_Id()
             ComponentManager.add_Component(newtileid, 'Tile',
                                            tilearray[x][y])
             tilearray[x][y] = newtileid
     newmap.TileIds = tilearray
     newmapid = EntityManager.new_Id()
     ComponentManager.add_Component(newmapid, 'Map', newmap)
     return newmapid