Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''
- Skillset is 'staves' and skill is 'swat'
- Traceback (most recent call last):
- File "d:\muddev\evennia\evennia\commands\cmdhandler.py", line 591, in _run_command
- ret = cmd.func()
- File ".\commands\command.py", line 65, in func
- skillsets.learn_skill(self.caller, self.skillset, self.skill)
- File "D:\muddev\hecate\world\skillsets.py", line 192, in learn_skill
- if not staves[skill]:
- File "d:\muddev\evennia\evennia\utils\dbserialize.py", line 214, in __getitem__
- return self._data.__getitem__(key)
- KeyError: 'swat'
- An untrapped error occurred.
- (Traceback was logged 19-08-08 16:53:16-04).
- '''
- # Skillsets
- skillsets = {'staves':
- {'leg_sweep': {'damge_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'low'},
- 'feint': {'damge_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'low'},
- 'end_jab': {'damge_type': 'bruise', 'difficulty': 'easy', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
- 'swat': {'damge_type': 'bruise', 'difficulty': 'easy', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
- 'simple_strike': {'damge_type': 'bruise', 'difficulty': 'easy', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
- 'side_strike': {'damge_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
- 'pivot_smash': {'damge_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
- 'longarm_strike': {'damge_type': 'bruise', 'difficulty': 'difficult', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
- 'simple_block': {'difficulty': 'easy', 'hands': 2, 'attack_range': 'either', 'default_aim': ('mid', 'low')},
- 'cross_block': {'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': ('mid', 'low')},
- 'overhead_block': {'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
- 'parting_jab': {'damge_type': 'bruise', 'difficulty': 'easy', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
- 'parting_swat': {'damge_type': 'bruise', 'difficulty': 'easy', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
- 'parting_smash': {'damge_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
- 'defensive_sweep': {'damge_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'low'},
- 'stepping_spin': {'damge_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
- 'snapstrike': {'damge_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
- 'sweep_strike': {'damge_type': 'bruise', 'difficulty': 'difficult', 'hands': 2, 'attack_range': 'either', 'default_aim': ('low', 'high')},
- 'spinstrike': {'damge_type': 'bruise', 'difficulty': 'difficult', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
- 'tbash': {'damge_type': 'bruise', 'difficulty': 'difficult', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
- 'whirling_block': {'difficulty': 'difficult', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
- 'pivoting_longarm': {'damge_type': 'bruise', 'difficulty': 'difficult', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'}}}
- def learn_skill(char, skillset, skill):
- '''
- Skill Difficulty = Skill Point Cost per Rank
- ---------------------------------------------
- Easy = 5
- Average = 7
- Difficult = 9
- Impossible = 11
- Example Skillset Saved Attribute
- ---------------------------------
- staves = {'total_sp': 125, 'total_ranks': 500, 'leg_sweep': {'rank': 100, 'rb': 115}, 'feint': {'rank': 100', 'rb': 115}, 'end_jab': {'rank':100, rb: }}
- '''
- # Return the data of the skill.
- gsp = char.attributes.get('gsp')
- difficulty = skillsets[skillset][skill]['difficulty']
- # Set the per rank SP cost of the skill.
- sp_cost = 0
- if difficulty == 'easy':
- rb = easy_rb
- sp_cost = 5
- elif difficulty == 'average':
- rb = average_rb
- sp_cost = 7
- elif difficulty == 'difficult':
- rb = difficult_rb
- sp_cost = 9
- elif difficulty == 'impossible':
- rb = impossible_rb
- sp_cost = 11
- # Check if the skillset is not already learned and if not, create it.
- if not char.attributes.get(skillset):
- #Check for general skill points required to learn.
- if not gsp >= sp_cost:
- char.msg('You do not have enough general skill points to learn this skillset.')
- return
- if skillset == 'staves':
- char.db.staves = {'total_sp': sp_cost, 'total_ranks': 0}
- char.db.gsp -= sp_cost
- staves = char.db.staves
- # Check for stave skills.
- if skillset == 'staves':
- if not staves['total_sp'] >= sp_cost:
- char.msg('You do not have enough skill points to learn this skill.')
- return
- if not staves[skill]:
- staves[skill] = {'rank': 0, 'rb': 0}
- staves[skill]['rank'] += 1
- staves['total_sp'] -= sp_cost
- rank = staves[skill]['rank']
- staves[skill]['rb'] = rb[rank-1]
- char.msg(f'Created {skillset} and added {skill} of rank {staves[skill][rank]} with rank bonus of {staves[skill]["rb"]}.')
- '''
- I even tried changing this last section where the error is happening to the following, but the same error occurs.
- '''
- staves = char.attributes.get('staves')
- # Check for stave skills.
- if skillset == 'staves':
- if not staves['total_sp'] >= sp_cost:
- char.msg('You do not have enough skill points to learn this skill.')
- return
- if not staves['swat']:
- staves['swat'] = {'rank': 0, 'rb': 0}
- staves['swat']['rank'] += 1
- staves['total_sp'] -= sp_cost
- rank = staves['swat']['rank']
- staves['swat']['rb'] = rb[rank-1]
- 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