Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Z
- DAMAGE = "min + rand(max-min) / spd + 0.4*atkstat - 0.2*defstat"
- SKILL = "min + rand(max-min) / spd + 0.4*spistat"
- NO_WEAPON_STATS = [5, 10, 2]
- end
- class Game_Battler
- def make_attack_damage_value(attacker)
- atkstat = attacker.atk
- defstat = self.def
- min, max, spd = (attacker.actor? ? attacker.weapons[0].stats : nil.stats)
- damage = eval(Z::DAMAGE)
- damage = 0 if damage < 0 # if negative, make 0
- damage *= elements_max_rate(attacker.element_set) # elemental adjustment
- damage /= 100
- if damage == 0 # if damage is 0,
- damage = rand(2) # half of the time, 1 dmg
- elsif damage > 0 # a positive number?
- @critical = (rand(100) < attacker.cri) # critical hit?
- @critical = false if prevent_critical # criticals prevented?
- damage *= 1.4 if @critical # critical adjustment
- end
- damage = apply_variance(damage, 20) # variance
- damage = apply_guard(damage) # guard adjustment
- @hp_damage = damage.to_i # damage HP
- end
- def make_obj_damage_value(user, obj)
- spistat = user.spi
- noteobj = obj
- if obj.physical_attack
- noteobj = nil.stats
- noteobj = user.weapons[0] unless user.weapons[0].nil if user.actor?
- end
- min, max, spd = noteobj.stats
- damage = eval(Z::SKILL)
- damage *= obj.atk_f if obj.physical_attack
- damage *= elements_max_rate(obj.element_set)
- damage /= 100
- damage = apply_variance(damage, obj.variance) # variance
- damage = apply_guard(damage) # guard adjustment
- if obj.damage_to_mp
- @mp_damage = damage # damage MP
- else
- @hp_damage = damage # damage HP
- end
- end
- end
- class NilClass
- def stats
- return Z::NO_WEAPON_STATS
- end
- end
- class RPG::Weapon
- def stats
- self.note.scan(/<stats:[ ](.*) (.*) (.*)>/i){|min, max, spd|
- return [min.to_i, max.to_i, spd.to_f]}
- return nil.stats
- end
- end
- class RPG::Skill
- def stats
- self.note.scan(/<stats:[ ](.*) (.*) (.*)>/i){|min, max, spd|
- return [min.to_i, max.to_i, spd.to_f]}
- return nil.stats
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement