AlferZep

Untitled

Jun 14th, 2024
453
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.39 KB | None | 0 0
  1. #---------------------SKILL USE---------------#
  2. def skill_use(name, index, user, author):
  3.     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)
  4.  
  5.     user_id = str(author.id)
  6.     user_profile = profile.get(user_id, {})
  7.     user_fight = user_profile.get('fight')
  8.     user_stats = stats.get(user_id, {}) if user is author else user_fight.get("stats", {})
  9.     user_name = author.name if user is author else user_fight.get("name")
  10.  
  11.     if user is author:
  12.         if user_fight.get('uid'):
  13.             enemy = user_fight.get('uid')
  14.             enemy_id = str(enemy.id)
  15.             enemy_name = enemy.name
  16.             enemy_stats = stats.get(enemy_id)
  17.         else:
  18.             enemy_stats = user_fight.get("stats", {})
  19.             enemy_name = user_fight.get('name')
  20.     else:
  21.         enemy_name = author.name
  22.         enemy_stats = stats.get(user_id)
  23.  
  24.     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)
  25.  
  26.     user_stats["mpMin"] = user_stats.get("mpMin", 100) - mp_decrease
  27.  
  28.     skill_desc = f"{user_name} used {name}" + (f" and dealt {damage} damage." if damage > 0 else ".")
  29.  
  30.     desc = None
  31.     effect_desc = []
  32.     effect_fail_desc = []
  33.     effect_stats = {}
  34.     effects = user_stats.get('effects', [])
  35.     print(effects)
  36.     hp_increase = None
  37.     damage = 0
  38.     n = 0
  39.     for i in enumerate(skill_type):
  40.         chance = int(random.uniform(0, 100))
  41.         effect_name = skill_type[n]
  42.         if effect_name != "dmg" and not any(effect["name"] == effect_name for effect in effects):
  43.             if tick:
  44.                 if chance <= effect_chance:
  45.                     if effect_name == "stun":
  46.                         desc = "stunned"
  47.                         nodmg = True
  48.                     elif effect_name == "freeze":
  49.                         desc = "freezing"
  50.                         nodmg = True
  51.                     elif effect_name == "burn":
  52.                         desc = "burning"
  53.                     elif effect_name == "bleed":
  54.                         desc = "bleeding"
  55.                     else:
  56.                         desc = f"{name}"
  57.  
  58.                     if desc:
  59.                         effect_desc.append(desc)
  60.  
  61.                     effect_stats['name'] = effect_name
  62.                     effect_stats['tick'] = tick
  63.                     effect_stats['dmg'] = damage if not nodmg else 0
  64.                     effects.append(effect_stats)
  65.                     effect_stats = {}
  66.  
  67.                 else:
  68.                     skill_type.pop(n)
  69.                     n -= 1
  70.                     if effect_name != "dmg":
  71.                         print(effect_name)
  72.                         effect_fail_desc.append(effect_name)
  73.  
  74.             elif effect_name == "+hp":
  75.                 hp_increase = skill.get('+hp')
  76.  
  77.         elif effect_name:
  78.             skill_type.pop(n)
  79.             n -= 1
  80.  
  81.         n += 1
  82.  
  83.     desc = skill_desc
  84.  
  85.     if effect_desc:
  86.         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]}.")
  87.  
  88.     if effect_fail_desc:
  89.         print(effect_fail_desc)
  90.         desc = desc + f"\n{', '.join(effect_fail_desc)} effect did not work."
  91.  
  92.     effect_desc, immobile, new_effects = user_effects(user, author)
  93.  
  94.     user_stats['effects'] = new_effects
  95.  
  96.     if not immobile:
  97.         enemy_stats['hpMin'] = enemy_stats.get("hpMin", 100) - damage
  98.         if hp_increase:
  99.             user_stats["hp"] = user_stats.get("hp", 100) + hp_increase
  100.  
  101.         if user_profile.get('uid'):
  102.             user_profile['fight'] = user_fight
  103.             enemy_stats['effects'] = effects
  104.             stats[enemy_id] = enemy_stats
  105.         else:
  106.             enemy_stats['effects'] = effects
  107.             user_fight["stats"] = enemy_stats if user is author else user_stats
  108.             user_profile['fight'] = user_fight
  109.  
  110.         stats[user_id] = user_stats if user is author else enemy_stats
  111.         if effect_desc:
  112.             desc = desc + f"\n{effect_desc}"
  113.  
  114.         profile[user_id] = user_profile
  115.  
  116.     else:
  117.         desc = effect_desc
  118.  
  119.     modules.save_data()
  120.  
  121.     return desc, effects, new_effects
Advertisement
Add Comment
Please, Sign In to add comment