Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Experience = {}
- --experience = 5(level before)^2
- Experience.getExperienceFromLevel = function(level)
- return (5 * (level - 1)) ^ 2
- end
- Experience.getLevelFromExperience = function(experience)
- --x = 5y^2, solve for y
- --sqrt(x) = 5y
- --sqrt(x)/5 = y
- --add one because x is level BEFORE
- return math.floor(math.sqrt(experience) / 5) + 1
- end
- local ReplicatedStorage = game:GetService("ReplicatedStorage")
- local into = require(ReplicatedStorage.Boilerplate.into)
- Experience.getLevelRewards = function(levelRewards, level)
- local allRewards = {}
- allRewards[level] = levelRewards[tostring(level)]
- for cond,rewards in pairs(levelRewards) do --TODO: can we break this once we get to a non-"/"?
- local x = {}
- if into(cond:match("/(%d+)"), x) then
- if level % tostring(x.value) == 0 then
- allRewards[tonumber(x.value)] = rewards
- end
- end
- end
- local finish = {}
- --this could be optimized
- for levelCondition,rewards in pairs(allRewards) do
- for rewardType,rewardCount in pairs(rewards) do
- local count = rewardType:match("_NONMULT$") and rewardCount or (level / levelCondition) * rewardCount
- if rewardType:match("_NONMULT$") then
- rewardType = rewardType:sub(1, -9)
- end
- finish[rewardType] = (finish[rewardType] or 0) + count
- end
- end
- return finish
- end
- return Experience
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement