Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. """
  2. A basic skills system
  3. A lambda or function can be used to calculate the bonus based on stats."""
  4. import mud, auxiliary, mudsys, char, storage, polc
  5.  
  6. #skill types
  7. type_combat = 1
  8. type_crafting = 2
  9. type_body = 3
  10.  
  11. skills = {}
  12.  
  13. class SkillNode:
  14. def __init__(self, name, bonus, type):
  15. self.name = name
  16. self.bonus = bonus
  17. self.type = type
  18.  
  19. def calculateBonus(self, ch, value):
  20. return (self.bonus(ch, value))
  21.  
  22. class SkillEntry:
  23. def __init__(self, value, bonus):
  24. self.value = value;
  25. self.bonus = bonus
  26.  
  27. class auxSkills:
  28. def __init__(self, sset = None):
  29. self.skills = {}
  30.  
  31. if (sset is not None):
  32. for (skillset in sset.readList("skills").sets()):
  33. self.skills[skillset.readString("name")] = SkillEntry(skillset.readInt("value"), 0)
  34.  
  35. def store(self):
  36. sset = storage.StorageSet()
  37. slist = storage.StorageList()
  38. for (k, v in self.skills):
  39. entry = storage.StorageSet()
  40. entry.storeString(k)
  41. entry.storeInt(v.value)
  42. slist.add(entry)
  43. sset.storeList(slist, "skills")
  44.  
  45. def copy(self):
  46. return self.copyTo(auxSkills())
  47. def copyTo(self, src):
  48. for (k, v in self.skills):
  49. src.skills[k] = SkillEntry(v.value, v.bonus)
  50. return src
  51.  
  52. def LearnSkill(self, ch, name):
  53. if (skills.has_key(name)):
  54. self.skills[name] = SkillEntry(5, skills[name].CalculateBonus(ch, 5))
  55. return True
  56. else:
  57. return False
  58.  
  59. def RemoveSkill(self, name):
  60. if (self.skills.has_key(name)):
  61. del self.skills[name]
  62. return True
  63. else:
  64. return False
  65.  
  66. def GetLevel(self, name):
  67. if (self.skills.has_key(name)):
  68. return (self.skills[name].value
  69. else:
  70. return 0
  71.  
  72. def GetBonus(self, ch, name):
  73. if (self.skills.has_key(name)):
  74. self.skills[name].bonus = skills[name].CalculateBonus(ch, self.skills[name].value)
  75. return self.skills[name].value
  76.  
  77. auxiliary.install("aux_stats", auxSkills, "char")
  78. mudsys.add_char_method("skills", property(lambda me: me.aux("aux_skills")))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement