Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #---------------------SKILL USE---------------#
- def skill_use(name, index, user, author):
- skill = ability.get(name, ability.get('none')).get(index) if user is author else mobs.get('skills').get(user, mobs.get('skills').get('other')).get(index)
- user_id = str(author.id)
- user_profile = profile.get(user_id, {})
- user_fight = user_profile.get('fight')
- user_stats = stats.get(user_id, {}) if user is author else user_fight.get("stats", {})
- user_name = author.name if user is author else user_fight.get("name")
- if user is author:
- if user_fight.get('uid'):
- enemy = user_fight.get('uid')
- enemy_id = str(enemy.id)
- enemy_name = enemy.name
- enemy_stats = stats.get(enemy_id)
- else:
- enemy_stats = user_fight.get("stats", {})
- enemy_name = user_fight.get('name')
- else:
- enemy_name = author.name
- enemy_stats = stats.get(user_id)
- name, skill_type, tick, damage, mp_decrease, aoe, acc, effect_chance = skill.get('name'), skill.get('type'), skill.get('tick', None), skill.get('dmg', 0), skill.get('-mp', 0), skill.get('aoe', 1), skill.get('acc', 100), skill.get('chance', 100)
- user_stats["mpMin"] = user_stats.get("mpMin", 100) - mp_decrease
- skill_desc = f"{user_name} used {name}" + (f" and dealt {damage} damage." if damage > 0 else ".")
- desc = None
- effect_desc = []
- effect_fail_desc = []
- effect_stats = {}
- effects = user_stats.get('effects', [])
- print(effects)
- hp_increase = None
- damage = 0
- n = 0
- for i in enumerate(skill_type):
- chance = int(random.uniform(0, 100))
- effect_name = skill_type[n]
- if effect_name != "dmg" and not any(effect["name"] == effect_name for effect in effects):
- if tick:
- if chance <= effect_chance:
- if effect_name == "stun":
- desc = "stunned"
- nodmg = True
- elif effect_name == "freeze":
- desc = "freezing"
- nodmg = True
- elif effect_name == "burn":
- desc = "burning"
- elif effect_name == "bleed":
- desc = "bleeding"
- else:
- desc = f"{name}"
- if desc:
- effect_desc.append(desc)
- effect_stats['name'] = effect_name
- effect_stats['tick'] = tick
- effect_stats['dmg'] = damage if not nodmg else 0
- effects.append(effect_stats)
- effect_stats = {}
- else:
- skill_type.pop(n)
- n -= 1
- if effect_name != "dmg":
- print(effect_name)
- effect_fail_desc.append(effect_name)
- elif effect_name == "+hp":
- hp_increase = skill.get('+hp')
- elif effect_name:
- skill_type.pop(n)
- n -= 1
- n += 1
- desc = skill_desc
- if effect_desc:
- desc = desc + f"\n{enemy_name} is " + (f"{', '.join(effect_desc[:-1])} and {effect_desc[-1]}." if len(effect_desc) >= 2 else f"{effect_desc[-1]}.")
- if effect_fail_desc:
- print(effect_fail_desc)
- desc = desc + f"\n{', '.join(effect_fail_desc)} effect did not work."
- effect_desc, immobile, new_effects = user_effects(user, author)
- user_stats['effects'] = new_effects
- if not immobile:
- enemy_stats['hpMin'] = enemy_stats.get("hpMin", 100) - damage
- if hp_increase:
- user_stats["hp"] = user_stats.get("hp", 100) + hp_increase
- if user_profile.get('uid'):
- user_profile['fight'] = user_fight
- enemy_stats['effects'] = effects
- stats[enemy_id] = enemy_stats
- else:
- enemy_stats['effects'] = effects
- user_fight["stats"] = enemy_stats if user is author else user_stats
- user_profile['fight'] = user_fight
- stats[user_id] = user_stats if user is author else enemy_stats
- if effect_desc:
- desc = desc + f"\n{effect_desc}"
- profile[user_id] = user_profile
- else:
- desc = effect_desc
- modules.save_data()
- return desc, effects, new_effects
Advertisement
Add Comment
Please, Sign In to add comment