Advertisement
Kovitikus

Untitled

Aug 8th, 2019
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.30 KB | None | 0 0
  1. '''
  2. Skillset is 'staves' and skill is 'swat'
  3. Traceback (most recent call last):
  4.  File "d:\muddev\evennia\evennia\commands\cmdhandler.py", line 591, in _run_command
  5.    ret = cmd.func()
  6.  File ".\commands\command.py", line 65, in func
  7.    skillsets.learn_skill(self.caller, self.skillset, self.skill)
  8.  File "D:\muddev\hecate\world\skillsets.py", line 192, in learn_skill
  9.    if not staves[skill]:
  10.  File "d:\muddev\evennia\evennia\utils\dbserialize.py", line 214, in __getitem__
  11.    return self._data.__getitem__(key)
  12. KeyError: 'swat'
  13.  
  14. An untrapped error occurred.
  15. (Traceback was logged 19-08-08 16:53:16-04).
  16. '''
  17.  
  18. # Skillsets
  19. skillsets = {'staves':
  20.             {'leg_sweep': {'damge_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'low'},
  21.             'feint': {'damge_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'low'},
  22.             'end_jab': {'damge_type': 'bruise', 'difficulty': 'easy', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
  23.             'swat': {'damge_type': 'bruise', 'difficulty': 'easy', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
  24.             'simple_strike': {'damge_type': 'bruise', 'difficulty': 'easy', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
  25.             'side_strike': {'damge_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
  26.             'pivot_smash': {'damge_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
  27.             'longarm_strike': {'damge_type': 'bruise', 'difficulty': 'difficult', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
  28.             'simple_block': {'difficulty': 'easy', 'hands': 2, 'attack_range': 'either', 'default_aim': ('mid', 'low')},
  29.             'cross_block': {'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': ('mid', 'low')},
  30.             'overhead_block': {'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
  31.             'parting_jab': {'damge_type': 'bruise', 'difficulty': 'easy', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
  32.             'parting_swat': {'damge_type': 'bruise', 'difficulty': 'easy', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
  33.             'parting_smash': {'damge_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
  34.             'defensive_sweep': {'damge_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'low'},
  35.             'stepping_spin': {'damge_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
  36.             'snapstrike': {'damge_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
  37.             'sweep_strike': {'damge_type': 'bruise', 'difficulty': 'difficult', 'hands': 2, 'attack_range': 'either', 'default_aim': ('low', 'high')},
  38.             'spinstrike': {'damge_type': 'bruise', 'difficulty': 'difficult', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
  39.             'tbash': {'damge_type': 'bruise', 'difficulty': 'difficult', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
  40.             'whirling_block': {'difficulty': 'difficult', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
  41.             'pivoting_longarm': {'damge_type': 'bruise', 'difficulty': 'difficult', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'}}}
  42.  
  43. def learn_skill(char, skillset, skill):
  44.     '''
  45.    Skill Difficulty = Skill Point Cost per Rank
  46.    ---------------------------------------------
  47.  
  48.    Easy = 5
  49.    Average = 7
  50.    Difficult = 9
  51.    Impossible = 11
  52.  
  53.    Example Skillset Saved Attribute
  54.    ---------------------------------
  55.    staves = {'total_sp': 125, 'total_ranks': 500, 'leg_sweep': {'rank': 100, 'rb': 115}, 'feint': {'rank': 100', 'rb': 115}, 'end_jab': {'rank':100, rb: }}
  56.  
  57.    '''
  58.     # Return the data of the skill.
  59.     gsp = char.attributes.get('gsp')
  60.  
  61.     difficulty = skillsets[skillset][skill]['difficulty']
  62.    
  63.     # Set the per rank SP cost of the skill.
  64.     sp_cost = 0
  65.     if difficulty == 'easy':
  66.         rb = easy_rb
  67.         sp_cost = 5
  68.     elif difficulty == 'average':
  69.         rb = average_rb
  70.         sp_cost = 7
  71.     elif difficulty == 'difficult':
  72.         rb = difficult_rb
  73.         sp_cost = 9
  74.     elif difficulty == 'impossible':
  75.         rb = impossible_rb
  76.         sp_cost = 11
  77.    
  78.     # Check if the skillset is not already learned and if not, create it.
  79.     if not char.attributes.get(skillset):
  80.         #Check for general skill points required to learn.
  81.         if not gsp >= sp_cost:
  82.             char.msg('You do not have enough general skill points to learn this skillset.')
  83.             return
  84.         if skillset == 'staves':
  85.             char.db.staves = {'total_sp': sp_cost, 'total_ranks': 0}
  86.         char.db.gsp -= sp_cost
  87.        
  88.     staves = char.db.staves
  89.     # Check for stave skills.
  90.     if skillset == 'staves':
  91.         if not staves['total_sp'] >= sp_cost:
  92.             char.msg('You do not have enough skill points to learn this skill.')
  93.             return
  94.         if not staves[skill]:
  95.             staves[skill] = {'rank': 0, 'rb': 0}
  96.         staves[skill]['rank'] += 1
  97.         staves['total_sp'] -= sp_cost
  98.         rank = staves[skill]['rank']
  99.         staves[skill]['rb'] = rb[rank-1]
  100.         char.msg(f'Created {skillset} and added {skill} of rank {staves[skill][rank]} with rank bonus of {staves[skill]["rb"]}.')
  101.  
  102.  
  103. '''
  104. I even tried changing this last section where the error is happening to the following, but the same error occurs.
  105. '''
  106. staves = char.attributes.get('staves')
  107. # Check for stave skills.
  108. if skillset == 'staves':
  109.     if not staves['total_sp'] >= sp_cost:
  110.         char.msg('You do not have enough skill points to learn this skill.')
  111.         return
  112.     if not staves['swat']:
  113.         staves['swat'] = {'rank': 0, 'rb': 0}
  114.     staves['swat']['rank'] += 1
  115.     staves['total_sp'] -= sp_cost
  116.     rank = staves['swat']['rank']
  117.     staves['swat']['rb'] = rb[rank-1]
  118.     char.msg(f"Created {skillset} and added {skill} of rank {staves['swat']['rank']} with rank bonus of {staves['swat']['rb']}.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement