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()
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)
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
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
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())
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))
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()
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))