peonso

Staged skill system tfs 1.1

Jun 16th, 2015
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 7.72 KB | None | 0 0
  1. local config = {
  2.         -- base vocationId
  3.     [0] = {
  4.                 -- skillId
  5.                 [SKILL_FIST] = {
  6.                         -- [{skillLevel}] = skillRate
  7.                         [{0, 14}] = 12,
  8.                         [{15, 21}] = 8
  9.                 },
  10.                 [SKILL_CLUB] = {
  11.                         [{0, 14}] = 12,
  12.                         [{15, 21}] = 8
  13.                 },
  14.                 [SKILL_SWORD] = {
  15.                         [{0, 14}] = 12,
  16.                         [{15, 21}] = 8
  17.                 },
  18.                 [SKILL_AXE] = {
  19.                         [{0, 14}] = 12,
  20.                         [{15, 21}] = 8
  21.                 },
  22.                 [SKILL_DISTANCE] = {
  23.                         [{0, 14}] = 12,
  24.                         [{15, 21}] = 8
  25.                 },
  26.                 [SKILL_SHIELD] = {
  27.                         [{0, 19}] = 12,
  28.                         [{20, 26}] = 8
  29.                 },
  30.                 [SKILL_FISHING] = {
  31.                         [{0, 19}] = 12,
  32.                         [{20, 29}] = 8
  33.                 },
  34.         },
  35.         [1] = {
  36.                 -- skillId
  37.                 [SKILL_FIST] = {
  38.                         -- [{skillLevel}] = skillRate
  39.                         [{0, 14}] = 12,
  40.                         [{15, 21}] = 8
  41.                 },
  42.                 [SKILL_CLUB] = {
  43.                         [{0, 14}] = 12,
  44.                         [{15, 21}] = 8
  45.                 },
  46.                 [SKILL_SWORD] = {
  47.                         [{0, 14}] = 12,
  48.                         [{15, 21}] = 8
  49.                 },
  50.                 [SKILL_AXE] = {
  51.                         [{0, 14}] = 12,
  52.                         [{15, 21}] = 8
  53.                 },
  54.                 [SKILL_DISTANCE] = {
  55.                         [{0, 14}] = 12,
  56.                         [{15, 21}] = 8
  57.                 },
  58.                 [SKILL_SHIELD] = {
  59.                         [{0, 19}] = 12,
  60.                         [{20, 26}] = 8
  61.                 },
  62.                 [SKILL_FISHING] = {
  63.                         [{0, 19}] = 12,
  64.                         [{20, 29}] = 8
  65.                 },
  66.                 [SKILL_MAGLEVEL] = {
  67.                         [{0, 40}] = 5,
  68.                         [{41, 55}] = 4,
  69.             [{56, 65}] = 3,
  70.             [{66, 68}] = 1,
  71.             [{68, 90}] = 0.1
  72.                 }
  73.         },
  74.         [2] = {
  75.                 -- skillId
  76.                 [SKILL_FIST] = {
  77.                         -- [{skillLevel}] = skillRate
  78.                         [{0, 14}] = 12,
  79.                         [{15, 21}] = 8
  80.                 },
  81.                 [SKILL_CLUB] = {
  82.                         [{0, 14}] = 12,
  83.                         [{15, 21}] = 8
  84.                 },
  85.                 [SKILL_SWORD] = {
  86.                         [{0, 14}] = 12,
  87.                         [{15, 21}] = 8
  88.                 },
  89.                 [SKILL_AXE] = {
  90.                         [{0, 14}] = 12,
  91.                         [{15, 21}] = 8
  92.                 },
  93.                 [SKILL_DISTANCE] = {
  94.                         [{0, 14}] = 12,
  95.                         [{15, 21}] = 8
  96.                 },
  97.                 [SKILL_SHIELD] = {
  98.                         [{0, 19}] = 12,
  99.                         [{20, 26}] = 8
  100.                 },
  101.                 [SKILL_FISHING] = {
  102.                         [{0, 19}] = 12,
  103.                         [{20, 29}] = 8
  104.                 },
  105.                 [SKILL_MAGLEVEL] = {
  106.                         [{0, 40}] = 5,
  107.                         [{41, 55}] = 4,
  108.             [{56, 65}] = 3,
  109.             [{66, 68}] = 1,
  110.             [{68, 90}] = 0.1
  111.                 }
  112.         },
  113.         [3] = {
  114.                 -- skillId
  115.                 [SKILL_FIST] = {
  116.                         -- [{skillLevel}] = skillRate
  117.                         [{0, 30}] = 12,
  118.                         [{31, 40}] = 8
  119.                 },
  120.                 [SKILL_CLUB] = {
  121.                         [{0, 30}] = 12,
  122.                         [{31, 40}] = 8
  123.                 },
  124.                 [SKILL_SWORD] = {
  125.                         [{0, 30}] = 12,
  126.                         [{31, 40}] = 8
  127.                 },
  128.                 [SKILL_AXE] = {
  129.                         [{0, 30}] = 12,
  130.                         [{31, 40}] = 8
  131.                 },
  132.                 [SKILL_DISTANCE] = {
  133.                         [{0, 59}] = 12,
  134.                         [{60, 79}] = 8,
  135.             [{80, 89}] = 5,
  136.             [{90, 94}] = 2,
  137.             [{95, 100}] = 0.1
  138.                 },
  139.                 [SKILL_SHIELD] = {
  140.                         [{0, 59}] = 12,
  141.                         [{60, 79}] = 8,
  142.             [{80, 89}] = 5,
  143.             [{90, 94}] = 2,
  144.             [{95, 100}] = 0.1
  145.                 },
  146.                 [SKILL_FISHING] = {
  147.                         [{0, 19}] = 12,
  148.                         [{20, 29}] = 8
  149.                 },
  150.                 [SKILL_MAGLEVEL] = {
  151.                         [{0, 14}] = 5,
  152.                         [{15, 17}] = 4,
  153.             [{18, 19}] = 3,
  154.             [{20, 21}] = 1,
  155.             [{22, 90}] = 0.1
  156.                 }
  157.         },
  158.         [4] = {
  159.                 -- skillId
  160.                 [SKILL_FIST] = {
  161.                         -- [{skillLevel}] = skillRate
  162.                         [{0, 59}] = 12,
  163.                         [{60, 79}] = 8,
  164.             [{80, 89}] = 5,
  165.             [{90, 94}] = 2,
  166.             [{95, 100}] = 0.1
  167.                 },
  168.                 [SKILL_CLUB] = {
  169.                         [{0, 59}] = 12,
  170.                         [{60, 79}] = 8,
  171.             [{80, 89}] = 5,
  172.             [{90, 94}] = 2,
  173.             [{95, 100}] = 0.1
  174.                 },
  175.                 [SKILL_SWORD] = {
  176.                         [{0, 59}] = 12,
  177.                         [{60, 79}] = 8,
  178.             [{80, 89}] = 5,
  179.             [{90, 94}] = 2,
  180.             [{95, 100}] = 0.1
  181.                 },
  182.                 [SKILL_AXE] = {
  183.                         [{0, 59}] = 12,
  184.                         [{60, 79}] = 8,
  185.             [{80, 89}] = 5,
  186.             [{90, 94}] = 2,
  187.             [{95, 100}] = 0.1
  188.                 },
  189.                 [SKILL_DISTANCE] = {
  190.                         [{0, 30}] = 12,
  191.                         [{31, 40}] = 8
  192.                 },
  193.                 [SKILL_SHIELD] = {
  194.                         [{0, 59}] = 12,
  195.                         [{60, 79}] = 8,
  196.             [{80, 89}] = 5,
  197.             [{90, 94}] = 2,
  198.             [{95, 100}] = 0.1
  199.                 },
  200.                 [SKILL_FISHING] = {
  201.                         [{0, 19}] = 12,
  202.                         [{20, 29}] = 8
  203.                 },
  204.                 [SKILL_MAGLEVEL] = {
  205.                         [{0, 4}] = 5,
  206.                         [{5, 5}] = 4,
  207.             [{6, 6}] = 3,
  208.             [{7, 7}] = 1,
  209.             [{8, 90}] = 0.1
  210.                 }
  211.         }
  212. }
  213.  
  214. function Vocation.getBase(self)
  215.         local demotion = self:getDemotion()
  216.         while demotion do
  217.                 local tmp = demotion:getDemotion()
  218.                 if not tmp then
  219.                         return demotion
  220.                 end
  221.                 demotion = tmp
  222.         end
  223.         return self
  224. end
  225.  
  226. local function getSkillRate(player, skillId)
  227.         local targetVocation = config[player:getVocation():getBase():getId()]
  228.         if targetVocation then
  229.                 local targetSkillStage = targetVocation[skillId]
  230.                 if targetSkillStage then
  231.                         local skillLevel = player:getSkillLevel(skillId)
  232.                         for level, rate in pairs(targetSkillStage) do
  233.                                 if skillLevel >= level[1] and skillLevel <= level[2] then
  234.                                         return rate
  235.                                 end
  236.                         end
  237.                 end
  238.         end
  239.  
  240.         return skillId == SKILL_MAGLEVEL and configManager.getNumber(configKeys.RATE_MAGIC) or configManager.getNumber(configKeys.RATE_SKILL)
  241. end
  242.  
  243. function Player:onGainSkillTries(skill, tries)
  244.         if not APPLY_SKILL_MULTIPLIER then
  245.                 return tries
  246.         end
  247.  
  248.         return tries * getSkillRate(self, skill)
  249. end
Advertisement
Add Comment
Please, Sign In to add comment