class RuneRb::Player::Skills
Constants
- MAX_EXP
- SKILLS
Attributes
exps[R]
player[R]
skills[R]
Public Class Methods
new(player)
click to toggle source
# File app/model/player/skills.rb, line 32 def initialize(player) @player = player @skills ||= {} @exps ||= {} SKILLS.each {|skill| @skills[skill] = 1 @exps[skill] = 0 } # Start with 10 hitpoints @skills[:hitpoints] = 10 @exps[:hitpoints] = 1184 end
Public Instance Methods
add_exp(skill, exp)
click to toggle source
# File app/model/player/skills.rb, line 148 def add_exp(skill, exp) old = @skills[skill] @exps[skill] += exp @exps[skill] = MAX_EXP if @exps[skill] > MAX_EXP new = level_for_exp skill diff = new - old if diff > 0 @skills[skill] += diff player.flags.flag :appearance end player.io.send_skill skill end
combat_level()
click to toggle source
# File app/model/player/skills.rb, line 47 def combat_level attack = level_for_exp :attack defence = level_for_exp :defence strength = level_for_exp :strength hitpoints = level_for_exp :hitpoints prayer = level_for_exp :prayer range = level_for_exp :range magic = level_for_exp :magic combat = ((defence + hitpoints + (prayer / 2).floor) * 0.2535).to_i + 1 melee = (attack + strength) * 0.325 ranger = (range * 1.5).to_i.floor * 0.325 mage = (magic * 1.5).to_i.floor * 0.325 combat += melee if melee >= ranger && melee >= mage combat += ranger if ranger >= melee && ranger >= mage combat += mage if mage >= melee && mage >= ranger combat <= 126 ? combat : 126 end
decrease_level(skill)
click to toggle source
# File app/model/player/skills.rb, line 128 def decrease_level(skill) @skills[skill] = @skills[skill] - 1 player.io.send_skill skill end
detract_level(skill, amount)
click to toggle source
# File app/model/player/skills.rb, line 133 def detract_level(skill, amount) amount = 0 if @skills[skill] == 0 amount = @skills[skill] if amount > @skills[skill] @skills[skill] = @skills[skill] - amount player.io.send_skill skill end
exp_for_level(skill)
click to toggle source
# File app/model/player/skills.rb, line 93 def exp_for_level(skill) level = @skills[skill] points = 0 output = 0 lvl = 1 (1..level).each { points = points + (lvl + 300.0 * (2.0 ** (lvl / 7.0))).floor return output if lvl >= level output = (points / 4).floor lvl += 1 } 0 end
increase_level(skill)
click to toggle source
# File app/model/player/skills.rb, line 123 def increase_level(skill) @skills[skill] = @skills[skill] + 1 player.io.send_skill skill end
level_for_exp(skill)
click to toggle source
# File app/model/player/skills.rb, line 76 def level_for_exp(skill) exp = @exps[skill] points = 0 lvl = 1 (1..99).each { points = points + (lvl + 300.0 * (2.0 ** (lvl / 7.0))).floor output = (points / 4).floor return lvl if output > exp lvl += 1 } 99 end
normalize_level(skill)
click to toggle source
# File app/model/player/skills.rb, line 141 def normalize_level(skill) normal = level_for_exp skill @skills[skill] += normal <=> @skills[skill] player.io.send_skill skill end
set_level(skill, level)
click to toggle source
# File app/model/player/skills.rb, line 118 def set_level(skill, level) @skills[skill] = level player.io.send_skill skill end
set_skill(skill, level, exp, send=true)
click to toggle source
# File app/model/player/skills.rb, line 112 def set_skill(skill, level, exp, send=true) @skills[skill] = level @exps[skill] = exp player.io.send_skill(skill) if send end
total_level()
click to toggle source
# File app/model/player/skills.rb, line 68 def total_level total = 0 @skills.each {|skill| total = total + level_for_exp(skill) } total end