old_contents: # Startup
  players = [this,this]
  
new_contents: # Startup
  from random import randint
   
  class Character:
    def __init__(self):
      self.name = ""
      self.health = 1
      self.health_max = 1
    def do_damage(self, enemy):
      damage = min(
          max(randint(0, self.health) - randint(0, enemy.health), 0),
          enemy.health)
      enemy.health = enemy.health - damage
      if damage == 0: print "%s evades %s's attack." % (enemy.name, self.name)
      else: print "%s hurts %s!" % (self.name, enemy.name)
      return enemy.health <= 0
   
  class Enemy(Character):
    def __init__(self, player):
      Character.__init__(self)
      self.name = 'a goblin'
      self.health = randint(1, player.health)
   
  class Player(Character):
    def __init__(self):
      Character.__init__(self)
      self.state = 'normal'
      self.health = 10
      self.health_max = 10
    def quit(self):
      print "%s can't find the way back home, and dies of starvation.\nR.I.P." % self.name
      self.health = 0
    def help(self): print Commands.keys()
    def status(self): print "%s's health: %d/%d" % (self.name, self.health, self.health_max)
    def tired(self):
      print "%s feels tired." % self.name
      self.health = max(1, self.health - 1)
    def rest(self):
      if self.state != 'normal': print "%s can't rest now!" % self.name; self.enemy_attacks()
      else:
        print "%s rests." % self.name
        if randint(0, 1):
          self.enemy = Enemy(self)
          print "%s is rudely awakened by %s!" % (self.name, self.enemy.name)
          self.state = 'fight'
          self.enemy_attacks()
        else:
          if self.health < self.health_max:
            self.health = self.health + 1
          else: print "%s slept too much." % self.name; self.health = self.health - 1
    def explore(self):
      if self.state != 'normal':
        print "%s is too busy right now!" % self.name
        self.enemy_attacks()
      else:
        print "%s explores a twisty passage." % self.name
        if randint(0, 1):
          self.enemy = Enemy(self)
          print "%s encounters %s!" % (self.name, self.enemy.name)
          self.state = 'fight'
        else:
          if randint(0, 1): self.tired()
    def flee(self):
      if self.state != 'fight': print "%s runs in circles for a while." % self.name; self.tired()
      else:
        if randint(1, self.health + 5) > randint(1, self.enemy.health):
          print "%s flees from %s." % (self.name, self.enemy.name)
          self.enemy = None
          self.state = 'normal'
        else: print "%s couldn't escape from %s!" % (self.name, self.enemy.name); self.enemy_attacks()
    def attack(self):
      if self.state != 'fight': print "%s swats the air, without notable results." % self.name; self.tired()
      else:
        if self.do_damage(self.enemy):
          print "%s executes %s!" % (self.name, self.enemy.name)
          self.enemy = None
          self.state = 'normal'
          if randint(0, self.health) < 10:
            self.health = self.health + 1
            self.health_max = self.health_max + 1
            print "%s feels stronger!" % self.name
        else: self.enemy_attacks()
    def enemy_attacks(self):
      if self.enemy.do_damage(self): print "%s was slaughtered by %s!!!\nR.I.P." %(self.name, self.enemy.name)
   
  Commands = {
    'quit': Player.quit,
    'help': Player.help,
    'status': Player.status,
    'rest': Player.rest,
    'explore': Player.explore,
    'flee': Player.flee,
    'attack': Player.attack,
    }
   
  p = Player()
  p.name = raw_input("What is your character's name? ")
  print "(type help to get a list of actions)\n"
  print "%s enters a dark cave, searching for adventure." % p.name
   
  while(p.health > 0):
    line = raw_input("> ")
    args = line.split()
    if len(args) > 0:
      commandFound = False
      for c in Commands.keys():
        if args[0] == c[:len(args[0])]:
          Commands[c](p)
          commandFound = True
          break
      if not commandFound:
        print "%s doesn't understand the suggestion." % p.name
   
  
subject: Update scripts.py