Advertisement
Zetu

d

Jun 27th, 2011
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 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. if obj.physical_attack
  39. damage *= obj.atk_f
  40. damage /= 100
  41. end
  42. damage *= elements_max_rate(obj.element_set)
  43. damage /= 100
  44. damage = apply_variance(damage, obj.variance) # variance
  45. damage = apply_guard(damage) # guard adjustment
  46. damage = damage.to_i
  47. if obj.damage_to_mp
  48. @mp_damage = damage # damage MP
  49. else
  50. @hp_damage = damage # damage HP
  51. end
  52. end
  53.  
  54. end
  55.  
  56. class NilClass
  57.  
  58. def stats
  59. return Z::NO_WEAPON_STATS
  60. end
  61.  
  62. end
  63.  
  64. class RPG::Weapon
  65.  
  66. def stats
  67. self.note.scan(/<stats:[ ](.*) (.*) (.*)>/i){|min, max, spd|
  68. return [min.to_i, max.to_i, spd.to_f]}
  69. return nil.stats
  70. end
  71.  
  72. end
  73.  
  74. class RPG::Skill
  75.  
  76. def stats
  77. self.note.scan(/<stats:[ ](.*) (.*) (.*)>/i){|min, max, spd|
  78. return [min.to_i, max.to_i, spd.to_f]}
  79. return nil.stats
  80. end
  81.  
  82. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement