Advertisement
Zetu

EZddd

Jun 27th, 2011
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.36 KB | None | 0 0
  1. module Z
  2. DAMAGE = "min + rand(max-min) / spd + 0.4*atkstat - 0.2*defstat"
  3. SKILL = "min + rand(max-min) / spd + 0.4*spistat"
  4. NO_WEAPON_STATS = [5, 10, 2]
  5. end
  6.  
  7. class Game_Battler
  8.  
  9. def make_attack_damage_value(attacker)
  10. atkstat = attacker.atk
  11. defstat = self.def
  12. min, max, spd = (attacker.actor? ? attacker.weapons[0].stats : nil.stats)
  13. damage = eval(Z::DAMAGE)
  14. damage = 0 if damage < 0 # if negative, make 0
  15. damage *= elements_max_rate(attacker.element_set) # elemental adjustment
  16. damage /= 100
  17. if damage == 0 # if damage is 0,
  18. damage = rand(2) # half of the time, 1 dmg
  19. elsif damage > 0 # a positive number?
  20. @critical = (rand(100) < attacker.cri) # critical hit?
  21. @critical = false if prevent_critical # criticals prevented?
  22. damage *= 1.4 if @critical # critical adjustment
  23. end
  24. damage = apply_variance(damage, 20) # variance
  25. damage = apply_guard(damage) # guard adjustment
  26. @hp_damage = damage.to_i # damage HP
  27. end
  28.  
  29. def make_obj_damage_value(user, obj)
  30. spistat = user.spi
  31. noteobj = obj
  32. if obj.physical_attack
  33. noteobj = nil.stats
  34. noteobj = user.weapons[0] unless user.weapons[0].nil if user.actor?
  35. end
  36. min, max, spd = noteobj.stats
  37. damage = eval(Z::SKILL)
  38. damage *= obj.atk_f if obj.physical_attack
  39. damage *= elements_max_rate(obj.element_set)
  40. damage /= 100
  41. damage = apply_variance(damage, obj.variance) # variance
  42. damage = apply_guard(damage) # guard adjustment
  43. if obj.damage_to_mp
  44. @mp_damage = damage # damage MP
  45. else
  46. @hp_damage = damage # damage HP
  47. end
  48. end
  49.  
  50. end
  51.  
  52. class NilClass
  53.  
  54. def stats
  55. return Z::NO_WEAPON_STATS
  56. end
  57.  
  58. end
  59.  
  60. class RPG::Weapon
  61.  
  62. def stats
  63. self.note.scan(/<stats:[ ](.*) (.*) (.*)>/i){|min, max, spd|
  64. return [min.to_i, max.to_i, spd.to_f]}
  65. return nil.stats
  66. end
  67.  
  68. end
  69.  
  70. class RPG::Skill
  71.  
  72. def stats
  73. self.note.scan(/<stats:[ ](.*) (.*) (.*)>/i){|min, max, spd|
  74. return [min.to_i, max.to_i, spd.to_f]}
  75. return nil.stats
  76. end
  77.  
  78. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement