Advertisement
Guest User

Untitled

a guest
Feb 27th, 2018
1,780
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. local Experience = {}
  2.  
  3. --experience = 5(level before)^2
  4. Experience.getExperienceFromLevel = function(level)
  5. return (5 * (level - 1)) ^ 2
  6. end
  7.  
  8. Experience.getLevelFromExperience = function(experience)
  9. --x = 5y^2, solve for y
  10. --sqrt(x) = 5y
  11. --sqrt(x)/5 = y
  12. --add one because x is level BEFORE
  13.  
  14. return math.floor(math.sqrt(experience) / 5) + 1
  15. end
  16.  
  17. local ReplicatedStorage = game:GetService("ReplicatedStorage")
  18. local into = require(ReplicatedStorage.Boilerplate.into)
  19.  
  20. Experience.getLevelRewards = function(levelRewards, level)
  21. local allRewards = {}
  22.  
  23. allRewards[level] = levelRewards[tostring(level)]
  24.  
  25. for cond,rewards in pairs(levelRewards) do --TODO: can we break this once we get to a non-"/"?
  26. local x = {}
  27.  
  28. if into(cond:match("/(%d+)"), x) then
  29. if level % tostring(x.value) == 0 then
  30. allRewards[tonumber(x.value)] = rewards
  31. end
  32. end
  33. end
  34.  
  35. local finish = {}
  36.  
  37. --this could be optimized
  38. for levelCondition,rewards in pairs(allRewards) do
  39. for rewardType,rewardCount in pairs(rewards) do
  40. local count = rewardType:match("_NONMULT$") and rewardCount or (level / levelCondition) * rewardCount
  41.  
  42. if rewardType:match("_NONMULT$") then
  43. rewardType = rewardType:sub(1, -9)
  44. end
  45.  
  46. finish[rewardType] = (finish[rewardType] or 0) + count
  47. end
  48. end
  49.  
  50. return finish
  51. end
  52.  
  53. return Experience
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement