Advertisement
Kovitikus

skillsets list skills

Aug 28th, 2020
2,077
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 22.54 KB | None | 0 0
  1.  
  2. def skill_level(rank, difficulty):
  3.     '''
  4.    RANK += RANK BONUS PER RANK
  5.    --------------------------
  6.    1 to 10 += 3
  7.    11 to 30 += 2
  8.    31 to 50 += 1
  9.    51 to 100 += 0.5
  10.    101 to 150 += 0.25
  11.    151 to 200 += 0.125
  12.    201 to 500 += 0.0625
  13.    501 to 1,000 += 0.025
  14.    1,001 to infinity += 0.01
  15.    '''
  16.     rb = 0
  17.  
  18.     #Formula
  19.     if rank:
  20.         r = rank if rank < 10 else 10
  21.         rb += (3 * r)
  22.         if rank >= 11:
  23.             r = rank - 10 if rank < 30 else 10
  24.             rb += (2 * r)
  25.             if rank >= 31:
  26.                 r = rank - 30 if rank < 50 else 20
  27.                 rb += (1 * r)
  28.                 if rank >= 51:
  29.                     r = rank - 50 if rank < 100 else 50
  30.                     rb += (0.5 * r)
  31.                     if rank >= 101:
  32.                         r = rank - 100 if rank < 150 else 50
  33.                         rb += (0.25 * r)
  34.                         if rank >= 151:
  35.                             r = rank - 150 if rank < 200 else 50
  36.                             rb += (0.125 * r)
  37.                             if rank >= 201:
  38.                                 r = rank - 200 if rank < 500 else 300
  39.                                 rb += (0.0625 * r)
  40.                                 if rank >= 501:
  41.                                     r = rank - 500 if rank < 1000 else 500
  42.                                     rb += (0.025 * r)
  43.                                     if rank >= 1001:
  44.                                         r = rank - 1000
  45.                                         rb += (0.01 * r)
  46.         '''
  47.        15% RB loss per difficulty.
  48.        At rank 100:
  49.        Easy(100%) 115 RB
  50.        Average(85%) 97.75 RB
  51.        Difficult(70%) 80.5 RB
  52.        Impossible(55%) 63.25 RB
  53.        '''
  54.         if difficulty == 'easy':
  55.             rb *= 1
  56.         elif difficulty == 'average':
  57.             rb *= 0.85
  58.         elif difficulty == 'difficult':
  59.             rb *= 0.7
  60.         elif difficulty == 'impossible':
  61.             rb *= 0.55
  62.         return rb # Return if any rank.
  63.     return None # Return if no rank.
  64.  
  65. def best_weap_def(char, skillset):
  66.     weap_dic = char.db.def_skills.get('weapon')
  67.     weap_high_def = weap_dic.get('high')
  68.     weap_mid_def = weap_dic.get('mid')
  69.     weap_low_def = weap_dic.get('low')
  70.     weap_high_rb = 0.0
  71.     weap_mid_rb = 0.0
  72.     weap_low_rb = 0.0
  73.     best_weap_high_skill = None
  74.     best_weap_mid_skill = None
  75.     best_weap_low_skill = None
  76.  
  77.     if weap_high_def.get(skillset):
  78.         weap_high_dic = weap_high_def.get(skillset)
  79.         print(weap_high_dic)
  80.         for k, v in weap_high_dic.items():
  81.             if v > weap_high_rb:
  82.                 best_weap_high_skill = k
  83.                 weap_high_rb = v
  84.         weap_high_dic['best_weap_high_skill'] = best_weap_high_skill
  85.  
  86.     if weap_mid_def.get(skillset):
  87.         weap_mid_dic = weap_mid_def.get(skillset)
  88.         for k, v in weap_mid_dic.items():
  89.             if v > weap_mid_rb:
  90.                 best_weap_mid_skill = k
  91.                 weap_mid_rb = v
  92.         weap_mid_dic['best_weap_mid_skill'] = best_weap_mid_skill
  93.  
  94.     if weap_low_def.get(skillset):
  95.         weap_low_dic = weap_low_def.get(skillset)
  96.         for k, v in weap_low_dic.items():
  97.             if v > weap_low_rb:
  98.                 best_weap_low_skill = k
  99.                 weap_low_rb = v
  100.         weap_low_dic['best_weap_low_skill'] = best_weap_low_skill
  101.  
  102.     return weap_high_rb, weap_mid_rb, weap_low_rb
  103.  
  104. def best_dodge_def(char, skillset):
  105.     dodge_dic = char.db.def_skills.get('dodge')
  106.     dodge_high_def = dodge_dic.get('high')
  107.     dodge_mid_def = dodge_dic.get('mid')
  108.     dodge_low_def = dodge_dic.get('low')
  109.     dodge_high_rb = 0.0
  110.     dodge_mid_rb = 0.0
  111.     dodge_low_rb = 0.0
  112.     best_dodge_high_skill = None
  113.     best_dodge_mid_skill = None
  114.     best_dodge_low_skill = None
  115.  
  116.     if dodge_high_def.get('cm'):
  117.         dodge_high_dic = dodge_high_def.get('cms')
  118.         for k, v in dodge_high_dic.items():
  119.             if v > dodge_high_rb:
  120.                 best_dodge_high_skill = k
  121.                 dodge_high_rb = v
  122.         dodge_high_dic['best_dodge_high_skill'] = best_dodge_high_skill
  123.  
  124.     if dodge_mid_def.get('cm'):
  125.         dodge_mid_dic = dodge_mid_def.get('cms')
  126.         for k, v in dodge_mid_dic.items():
  127.             if v > dodge_mid_rb:
  128.                 best_dodge_mid_skill = k
  129.                 dodge_mid_rb = v
  130.         dodge_mid_dic['best_dodge_mid_skill'] = best_dodge_mid_skill
  131.  
  132.     if dodge_low_def.get('cm'):
  133.         dodge_low_dic = dodge_low_def.get('cms')
  134.         for k, v in dodge_low_dic.items():
  135.             if v > dodge_low_rb:
  136.                 best_dodge_low_skill = k
  137.                 dodge_low_rb = v
  138.         dodge_low_dic['best_dodge_low_skill'] = best_dodge_low_skill
  139.  
  140.     return dodge_high_rb, dodge_mid_rb, dodge_low_rb
  141.  
  142. def best_shield_def(char, skillset):
  143.     shield_dic = char.db.def_skills.get('shield')
  144.     shield_high_def = shield_dic.get('high')
  145.     shield_mid_def = shield_dic.get('mid')
  146.     shield_low_def = shield_dic.get('low')
  147.     shield_high_rb = 0.0
  148.     shield_mid_rb = 0.0
  149.     shield_low_rb = 0.0
  150.     best_shield_high_skill = None
  151.     best_shield_mid_skill = None
  152.     best_shield_low_skill = None
  153.  
  154.     if shield_high_def.get('shield'):
  155.         shield_high_dic = shield_high_def.get('shield')
  156.         for k, v in shield_high_dic.items():
  157.             if v > shield_high_rb:
  158.                 best_shield_high_skill = k
  159.                 shield_high_rb = v
  160.         shield_high_dic['best_shield_high_skill'] = best_shield_high_skill
  161.  
  162.     if shield_mid_def.get('shield'):
  163.         shield_mid_dic = shield_mid_def.get('shield')
  164.         for k, v in shield_mid_dic.items():
  165.             if v > shield_mid_rb:
  166.                 best_shield_mid_skill = k
  167.                 shield_mid_rb = v
  168.         shield_mid_dic['best_shield_mid_skill'] = best_shield_mid_skill
  169.  
  170.     if shield_low_def.get('shield'):
  171.         shield_low_dic = shield_low_def.get('shield')
  172.         for k, v in shield_low_dic.items():
  173.             if v > shield_low_rb:
  174.                 best_shield_low_skill = k
  175.                 shield_low_rb = v
  176.         shield_low_dic['best_shield_low_skill'] = best_shield_low_skill
  177.  
  178.     return shield_high_rb, shield_mid_rb, shield_low_rb
  179.  
  180. def defense_layer_calc(char):
  181.         """
  182.        Defensive rank bonus includes up to 3 layers of defense.
  183.        The highest RB defensive manuever of each high, mid, and low will gain 100% of it's RB.
  184.        The second highest RB will supply 50% and the third will only be worth 33%.
  185.        Each layer can only consist of a single defensive manuever from each of the following categories:
  186.            Weapon Blocks, Combat Manuever Dodges, and Shield Blocks.
  187.            Weapons that require 2 hands can only ever gain 2 defensive layers. Shields are the only way to gain all 3 layers.
  188.  
  189.        For Example:
  190.        Staves Mid Block with 100 Rank Bonus * 1 = 100
  191.        CM Mid Dodge with 80 Rank Bonus * 0.5 = 40
  192.        Total Mid Defensive Rank Bonus = 140
  193.  
  194.        Swords Mid Block with 100 Rank Bonus * 0.33 = 33
  195.        CM Mid Dodge with 150 Rank Bonus * 0.5 = 75
  196.        Shield Mid Block with 200 Rank Bonus * 1 = 200
  197.        Total Mid Defensive Rank Bonus = 308
  198.  
  199.        Floats are used to determine the highest RB priority, but only rounded down integers are used to determine the total RB.
  200.  
  201.        TODO: Add a round down for the final RB.
  202.  
  203.        High, Mid, and Low always refer to the area
  204.        of the body that the attack targets and not the numerical value.
  205.        """
  206.  
  207.         # weap_high_rb, weap_mid_rb, weap_low_rb = best_weap_def(char, skillset)
  208.         # dodge_high_rb, dodge_mid_rb, dodge_low_rb = best_dodge_def(char, skillset)
  209.         # shield_high_rb, shield_mid_rb, shield_low_rb = best_shield_def(char, skillset)
  210.  
  211.         # Initialize rankbonus values.
  212.         weap_high_rb, weap_mid_rb, weap_low_rb = 0, 0, 0
  213.         shield_high_rb, shield_mid_rb, shield_low_rb = 0, 0 ,0
  214.         dodge_high_rb, dodge_mid_rb, dodge_low_rb = 0, 0, 0
  215.  
  216.         # Decide how many layers, based on if wielding.
  217.         wielding = char.attributes.get('wielding')
  218.         l_wield = wielding.get('left')
  219.         r_wield = wielding.get('right')
  220.         b_wield = wielding.get('both')
  221.  
  222.  
  223.         if b_wield:
  224.             if b_wield.attributes.get('skillset'):
  225.                 b_weapon_skillset = char.b_wield.attributes.get('skillset') # Grab weapon skillset dictionary from char.
  226.                 dic_defense = b_weapon_skillset.get('defense') # Grab defensive skills dictioanry.
  227.                 skills = dic_defense.keys() # Create a list of the defensive skill names.
  228.    
  229.                 for i in skills:
  230.                     if skillsets[b_weapon_skillset][i]['default_aim'] == 'high':
  231.                         weap_high_rb += dic_defense.get(i)
  232.                     elif skillsets[b_weapon_skillset][i]['default_aim'] == 'mid':
  233.                         weap_mid_rb += dic_defense.get(i)
  234.                     elif skillsets[b_weapon_skillset][i]['default_aim'] == 'low':
  235.                         weap_low_rb += dic_defense.get(i)
  236.  
  237.  
  238.         if r_wield:
  239.             if r_wield.attributes.get('skillset'):
  240.                 r_weapon_skillset = r_wield.attributes.get('skillset')
  241.                 dic_defense = r_weapon_skillset.get('defense') # Grab defensive skills dictioanry.
  242.                 skills = dic_defense.keys() # Create a list of the defensive skill names.
  243.    
  244.                 for i in skills:
  245.                     if skillsets[r_weapon_skillset][i]['default_aim'] == 'high':
  246.                         weap_high_rb += dic_defense.get(i)
  247.                     elif skillsets[r_weapon_skillset][i]['default_aim'] == 'mid':
  248.                         weap_mid_rb += dic_defense.get(i)
  249.                     elif skillsets[r_weapon_skillset][i]['default_aim'] == 'low':
  250.                         weap_low_rb += dic_defense.get(i)
  251.  
  252.         if l_wield.is_typeclass('typeclasses.objects.Shields'):
  253.             if l_wield.attributes.get('skillset'):
  254.                 shield_skillset = l_wield.attributes.get('skillset')
  255.                 dic_defense = shield_skillset.get('defense') # Grab defensive skills dictioanry.
  256.                 skills = dic_defense.keys() # Create a list of the defensive skill names.
  257.    
  258.                 for i in skills:
  259.                     if skillsets[shield_skillset][i]['default_aim'] == 'high':
  260.                         weap_high_rb += dic_defense.get(i)
  261.                     elif skillsets[shield_skillset][i]['default_aim'] == 'mid':
  262.                         weap_mid_rb += dic_defense.get(i)
  263.                     elif skillsets[shield_skillset][i]['default_aim'] == 'low':
  264.                         weap_low_rb += dic_defense.get(i)
  265.         elif l_wield:
  266.             if l_wield.attributes.get('skillset'):
  267.                 l_weapon_skillset = l_wield.attributes.get('skillset')
  268.                 dic_defense = l_weapon_skillset.get('defense') # Grab defensive skills dictioanry.
  269.                 skills = dic_defense.keys() # Create a list of the defensive skill names.
  270.    
  271.                 for i in skills:
  272.                     if skillsets[l_weapon_skillset][i]['default_aim'] == 'high':
  273.                         weap_high_rb += dic_defense.get(i)
  274.                     elif skillsets[l_weapon_skillset][i]['default_aim'] == 'mid':
  275.                         weap_mid_rb += dic_defense.get(i)
  276.                     elif skillsets[l_weapon_skillset][i]['default_aim'] == 'low':
  277.                         weap_low_rb += dic_defense.get(i)
  278.  
  279.        
  280.        
  281.        
  282.  
  283.         # High Layer
  284.         h_rb = [weap_high_rb, dodge_high_rb, shield_high_rb]
  285.         h_rb.sort(reverse=True)
  286.         h_layer1 = h_rb[0] * 1
  287.         h_layer2 = h_rb[1] * 0.5
  288.         h_layer3 = h_rb[2] * 0.33
  289.         high_def_rb = (h_layer1 + h_layer2 + h_layer3)
  290.  
  291.         # Mid Layer
  292.         m_rb = [weap_mid_rb, dodge_mid_rb, shield_mid_rb]
  293.         m_rb.sort(reverse=True)
  294.         m_layer1 = m_rb[0] * 1
  295.         m_layer2 = m_rb[1] * 0.5
  296.         m_layer3 = m_rb[2] * 0.33
  297.         mid_def_rb = (m_layer1 + m_layer2 + m_layer3)
  298.  
  299.         # Low Layer
  300.         l_rb = [weap_low_rb, dodge_low_rb, shield_low_rb]
  301.         l_rb.sort(reverse=True)
  302.         l_layer1 = l_rb[0] * 1
  303.         l_layer2 = l_rb[1] * 0.5
  304.         l_layer3 = l_rb[2] * 0.33
  305.         low_def_rb = (l_layer1 + l_layer2 + l_layer3)
  306.  
  307.         # Assign the values to the character.
  308.         def_rb = char.db.def_rb
  309.         def_rb['high'] = high_def_rb
  310.         def_rb['mid'] = mid_def_rb
  311.         def_rb['low'] = low_def_rb
  312.  
  313. def rb_stance(self, o_rb, d_rb, stance):
  314.     '''
  315.    o_rb = Offensive Rank Bonus
  316.    d_rb = Defensive Rank Bonus
  317.  
  318.    Berserk - Attack 100% | Defense: 0%
  319.    Aggressive - Attack 75% | Defense: 25%
  320.    Normal - Attack 50% | Defense: 50%
  321.    Wary - Attack 25% | Defense: 75%
  322.    Defensive - Attack 0% | Defense: 100%
  323.    '''
  324.     if stance == 'berserk':
  325.         o_rb = o_rb * 1
  326.         d_rb = d_rb * 0
  327.         return o_rb, d_rb
  328.     if stance == 'aggressive':
  329.         o_rb = o_rb * 0.75
  330.         d_rb = d_rb * 0.25
  331.         return o_rb, d_rb
  332.     if stance == 'normal':
  333.         o_rb = o_rb * 0.5
  334.         d_rb = d_rb * 0.5
  335.         return o_rb, d_rb
  336.     if stance == 'wary':
  337.         o_rb = o_rb * 0.25
  338.         d_rb = d_rb * 0.75
  339.         return o_rb, d_rb
  340.     if stance == 'defensive':
  341.         o_rb = o_rb * 0
  342.         d_rb = d_rb * 1
  343.         return o_rb, d_rb
  344.  
  345. easy_rb = []
  346. average_rb = []
  347. difficult_rb = []
  348. impossible_rb = []
  349.  
  350. for i in range(1, 1_001):
  351.     rb = skill_level(i, 'easy')
  352.     easy_rb.append(rb)
  353.  
  354.     rb = skill_level(i, 'average')
  355.     average_rb.append(rb)
  356.  
  357.     rb = skill_level(i, 'difficult')
  358.     difficult_rb.append(rb)
  359.  
  360.     rb = skill_level(i, 'impossible')
  361.     impossible_rb.append(rb)
  362.  
  363. # Skillsets are ordered alphabetically.
  364. # All skills shall be consistent and orderly.
  365. # Skill Order: Offensive, Defensive, Utility.
  366. # Each set of skills shall then be further listed in order of difficulty, then alphabetically.
  367. skillsets = {'staves':
  368.                 {'end jab':
  369.                     {'damage_type': 'bruise', 'difficulty': 'easy', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
  370.                 'parting jab':
  371.                     {'damage_type': 'bruise', 'difficulty': 'easy', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
  372.                 'parting swat':
  373.                     {'damage_type': 'bruise', 'difficulty': 'easy', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
  374.                 'simple strike':
  375.                     {'damage_type': 'bruise', 'difficulty': 'easy', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
  376.                 'swat':
  377.                     {'damage_type': 'bruise', 'difficulty': 'easy', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
  378.                 'parting smash':
  379.                      {'damage_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
  380.                 'pivot smash':
  381.                     {'damage_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
  382.                 'side strike':
  383.                     {'damage_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
  384.                 'snapstrike':
  385.                     {'damage_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
  386.                 'stepping spin':
  387.                     {'damage_type': 'bruise', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
  388.                 'longarm strike':
  389.                     {'damage_type': 'bruise', 'difficulty': 'difficult', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
  390.                 'pivoting longarm':
  391.                     {'damage_type': 'bruise', 'difficulty': 'difficult', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
  392.                 'spinstrike':
  393.                     {'damage_type': 'bruise', 'difficulty': 'difficult', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
  394.                 'sweep strike':
  395.                     {'damage_type': 'bruise', 'difficulty': 'difficult', 'hands': 2, 'attack_range': 'either', 'default_aim': ['low', 'high']},
  396.                 'tbash':
  397.                     {'damage_type': 'bruise', 'difficulty': 'difficult', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
  398.                 'mid block':
  399.                     {'damage_type': 'defense', 'difficulty': 'easy', 'hands': 2, 'attack_range': 'either', 'default_aim': 'mid'},
  400.                 'low block':
  401.                     {'damage_type': 'defense', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'low'},
  402.                 'overhead block':
  403.                     {'damage_type': 'defense', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'high'},
  404.                 'defensive sweep':
  405.                     {'damage_type': 'utility', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'low'},
  406.                 'feint':
  407.                     {'damage_type': 'utility', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'low'},
  408.                 'leg sweep':
  409.                     {'damage_type': 'utility', 'difficulty': 'average', 'hands': 2, 'attack_range': 'either', 'default_aim': 'low'}
  410.                 },
  411.             'holy':
  412.                 {'heal':
  413.                     {'damage_type': 'heal', 'difficulty': 'average', 'hands': 0, 'attack_range': 'either', 'default_aim': 'mid'}
  414.                 }
  415.             }
  416.  
  417. # Create lists of the skillsets and their skills.
  418. VIABLE_SKILLSETS = []
  419. VIABLE_SKILLS = []
  420. temp_skill_list = []
  421. for k, v in skillsets.items():
  422.     VIABLE_SKILLSETS.append(k)
  423.     temp_skill_list.append(v)
  424. for i in temp_skill_list:
  425.     for k, v in i.items():
  426.         VIABLE_SKILLS.append(k)
  427.    
  428.  
  429. def learn_skill(char, skillset, skill):
  430.     '''
  431.    Skill Difficulty = Skill Point Cost per Rank
  432.    ---------------------------------------------
  433.  
  434.    Easy = 5
  435.    Average = 7
  436.    Difficult = 9
  437.    Impossible = 11
  438.  
  439.    Example Skillset Saved Attribute
  440.    ---------------------------------
  441.    staves = {'total_sp': 125, 'total_ranks': 500, 'offense': {'leg_sweep': {'rank': 100, 'rb': 115}, 'end_jab': {'rank':100, rb: }, 'defense': {'high_block': etc, etc}}
  442.    '''
  443.     # Return the data of the skill.
  444.     difficulty = skillsets[skillset][skill]['difficulty']
  445.     damage_type = skillsets[skillset][skill]['damage_type']
  446.    
  447.     # Set the per rank SP cost and rank bonus dictionary of the skill.
  448.     sp_cost = 0
  449.     if difficulty == 'easy':
  450.         rb = easy_rb
  451.         sp_cost = 5
  452.     elif difficulty == 'average':
  453.         rb = average_rb
  454.         sp_cost = 7
  455.     elif difficulty == 'difficult':
  456.         rb = difficult_rb
  457.         sp_cost = 9
  458.     elif difficulty == 'impossible':
  459.         rb = impossible_rb
  460.         sp_cost = 11
  461.    
  462.     # Check if the skillset is not already learned and if not, create it.
  463.     if not char.attributes.has(skillset):
  464.         char.attributes.add(skillset, {'total_sp': sp_cost, 'total_ranks': 0, 'offense': {}, 'defense': {}})
  465.  
  466.     dic_skillset = char.attributes.get(skillset)
  467.     total_sp = dic_skillset['total_sp']
  468.     if not total_sp >= sp_cost:
  469.         char.msg('You do not have enough skill points to learn this skill.')
  470.         return
  471.    
  472.     # Place skill in either attack or defense dictionary, based on damage type.
  473.     if damage_type == 'defense':
  474.         #place skill in defense category
  475.         dic_type = dic_skillset.get('defense')
  476.     else:
  477.         #place skill in attack category
  478.         dic_type = dic_skillset.get('offense')
  479.  
  480.     # Check if the skill already exists. Create it otherwise.
  481.     if not dic_type.get(skill):
  482.         dic_type[skill] = {'rank': 0, 'rb': 0}
  483.     rank = dic_type[skill]['rank']
  484.     rank += 1
  485.     dic_type[skill]['rank'] = rank
  486.     dic_skillset['total_sp'] -= sp_cost
  487.     rb = rb[rank - 1]
  488.     dic_type[skill]['rb'] = rb
  489.     dic_skillset['total_ranks'] += 1
  490.     char.msg(f"You have spent {sp_cost} SP to learn rank {rank} of {skillset} {skill}, earning the rank bonus of {dic_type[skill]['rb']}.")
  491.  
  492.  
  493.  
  494.     # # Setup the defensive skill attributes for High, Mid, Low defensive layering calculations.
  495.     # d_skill = skillsets[skillset][skill]
  496.     # def_a = d_skill.get('default_aim')
  497.     # damage_type = d_skill['damage_type']
  498.     # if not char.attributes.has('def_skills'):
  499.     #         char.attributes.add('def_skills', {'weapon': {'high': {}, 'mid': {}, 'low': {}}, 'dodge': {'high': {}, 'mid': {}, 'low': {}}, 'shield': {'high': {}, 'mid': {}, 'low': {}}})
  500.     # def_skills = char.attributes.get('def_skills')
  501.  
  502.     # for d_a in def_a:
  503.     #     if damage_type == 'weapon_block':
  504.     #         if not skillset in def_skills:
  505.     #             def_skills['weapon'][d_a] = {skillset: None}
  506.     #             if not skill in def_skills:
  507.     #                 def_skills['weapon'][d_a][skillset] = {skill: None}
  508.     #         def_skills['weapon'][d_a][skillset][skill] = rb
  509.    
  510.     #     elif damage_type == 'dodge':
  511.     #         if not skillset in def_skills:
  512.     #             def_skills['weapon'][d_a] = {skillset: None}
  513.     #             if not skill in def_skills:
  514.     #                 def_skills['weapon'][d_a][skillset] = {skill: None}
  515.     #         def_skills['weapon'][d_a][skillset][skill] = rb
  516.  
  517.     #     elif damage_type == 'shield_block':
  518.     #         if not skillset in def_skills:
  519.     #             def_skills['weapon'][d_a] = {skillset: None}
  520.     #             if not skill in def_skills:
  521.     #                 def_skills['weapon'][d_a][skillset] = {skill: None}
  522.     #         def_skills['weapon'][d_a][skillset][skill] = rb
  523.  
  524.     # defense_layer_calc(char, skillset)
  525.  
  526.  
  527. def generate_skill_list(char):
  528.     """
  529.    Desired Outcome
  530.  
  531.    =====[Skills]=====================================
  532.  
  533.    {skillset_name}
  534.    -------------------------------
  535.    Offense:
  536.    {skill_name}            Rank: {rank}        Rank Bonus: {rank_bonus}
  537.  
  538.    Defense:
  539.  
  540.    ==================================================
  541.    """
  542.     skillset_dic_list = []
  543.  
  544.     header = "=====[Skills]=====================================\n"
  545.     footer = "=================================================="
  546.  
  547.  
  548.     for i in VIABLE_SKILLSETS: # Parse all available skillsets and check them against character attributes.
  549.         if char.attributes.get(i):
  550.             skillset_dic_list.append(char.attributes.get(i)) # Append skillset dictionary to list if attribute exists.
  551.  
  552.  
  553.     f"{skill_name}            Rank: {rank}        Rank Bonus: {rank_bonus}"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement