Example #1
0
 def equip_item(self, item):
     status = self.char.equip_item(item)
     if status[0]:
         messages.message(status[1])
     else:
         messages.error(status[1])
     self.layout()
Example #2
0
 def take_damage(self, damage):
     """
     >>> char = Character(load_yaml('characters', 'bardic_rogue.yaml'))
     >>> start = 30
     >>> char.put('combat/hitpoints', start)
     >>> char.take_damage(1)
     (...)
     >>> end = char.get('combat/hitpoints', 1)
     >>> end < start
     True
     """
     messages.message('%s takes %s damage' % (self.displayname(), damage))
     debug("[DEBUG] character.take_damage: damage - %s, player - %s" % (damage, self.displayname()))
     out = ''
     currenthitpoints = self.get('combat/hitpoints', 1)
     if damage >= currenthitpoints:
         debug("[DEBUG] character.take_damage, damage MORE than hitpoints: %s, %s" % (damage, currenthitpoints))
         self.put('combat/hitpoints', 0)
         self.handle_death()
         return (False, '%s has died !' % self.displayname())
     else:
         debug("[DEBUG] character take damage, LESS than hitpoints: damage=%s, player=%s, hitpoints=%s" % (damage, self.displayname(), currenthitpoints))
         hp = int(currenthitpoints)
         hp -= damage
         self.put('combat/hitpoints', hp)
         out += "<br>%s takes %s damage. %s hitpoints remaining" % (self.displayname(), damage, self.get('combat/hitpoints', 1))
         messages.error('')
         return (True, out)
Example #3
0
def initpygame(settings, caption, settingsfile):
    pygame.init()
    screen = get_screen(settings["res_x"], settings["res_y"], settings["hardware_buffer"], settings["fullscreen"])
    mode = "game"
    if "--editor" in sys.argv:
        mode = "editor"
        debug("Loading game editor")
    global imagecache
    imagecache = ImageCache()
    global frontend
    frontend = Frontend(mode=mode, settingsfile=settingsfile)
    global tilemaps
    tilemaps = Tilemaps()
    global messages
    imagecache.load()
    wallpaper = imagecache["landscape.png"]
    wallpaper = pygame.transform.smoothscale(wallpaper, (settings["res_x"], settings["res_y"]))
    screen.blit(wallpaper, (0, 0))
    pygame.display.set_caption(caption)
    frontend = Frontend(screen, imagecache, eventstack, tilemaps, mode=mode, settingsfile=settingsfile)
    messages = Messages(screen, eventstack)
    messages.error("Welcome to Mirthless")
    if not "--editor" in sys.argv:
        messages.error(
            "Game mode is barely started. The editor is much further along. Try starting the game with --editor"
        )
        messages.message(":)")
    tilemaps.initialize()
    return screen, frontend.screenlayout(), frontend
Example #4
0
 def give_xp(self, xp):
     """
     >>> char = Character(load_yaml('characters', 'bardic_rogue.yaml'))
     >>> level = char.get('combat/level-hitdice', 1)
     >>> nl = char.next_level()
     >>> debug(char.give_xp(nl + 10))
     >>> char.get('combat/level-hitdice', 1) == level + 1
     True
     """
     current_xp = int(self.get('personal/xp', 0))
     new_xp = current_xp + int(xp)
     self.put('personal/xp', str(new_xp))
     messages.message('%s gains %s experience points. XP now: %s' % (self.displayname(), xp, new_xp))
     next_level = self.next_level()
     if new_xp >= next_level and next_level != -1:
         messages.warning(self.level_up())
         messages.error('Check for and apply manual increases to other stats if needed !')
     else:
         messages.message('Next level at %s. %s experience points to go' % (next_level, next_level - new_xp))
     return new_xp
Example #5
0
 def onuse(self, player, target):
     debug("[DEBUG] Item.onuse: player %s, target %s" % (player.displayname(), target.displayname()))
     charges = self.get('/charges', 0)
     if charges == 0:
         return
     if self.itemtype() == 'spell':
         success = player.spell_success()
         messages.message(success[1])
         if not success[0]:
             return
     self.put('/in_use', True)
     #TODO - expect the next line to break in use. Needs to be redone once the 
     #new game class is finished
     self.put('/target', target)
     event(self, "/events/onuse", {'item': self, 'player': player, 'target': target, 'messages': messages})
     try:
         target = messages.characterlist[target.index]
         debug("Item.onround save: %s" % target.savetoslot())
     except:
         return
     messages.error("Item.onuse save: %s" % target.savetoslot())
Example #6
0
 def save(self):
     if self.mapname.text:
         self.gamemap.put('name', self.mapname.text)
     filename = self.gamemap.save_to_file('maps')
     messages.error('Saved to: %s' % os.path.basename(filename))
Example #7
0
 def save(self):
     self.settingsdata['gamedir'] = self.gd.text
     strings = dump_yaml(self.settingsdata)
     open(self.frontend.settingsfile,'w').write(strings)
     messages.error('Settings saved. You should restart the game when convenient.')
     self.delete()
Example #8
0
 def save(self):
     self.update_yaml()
     if self.dirname:
         filename = self.item.save_to_file(self.dirname)
         messages.error('Saved to %s' % os.path.basename(filename))