Advertisement
roninator2

States do elemental damage

Nov 17th, 2024
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 10.95 KB | None | 0 0
  1. # ╔═══════════════════════════════════════════════╦════════════════════╗
  2. # ║ Title: States do elemental damage             ║  Version: 1.03     ║
  3. # ║ Author: Roninator2                            ║                    ║
  4. # ╠═══════════════════════════════════════════════╬════════════════════╣
  5. # ║ Function:                                     ║   Date Created     ║
  6. # ║                                               ╠════════════════════╣
  7. # ║   Script Function                             ║    11 Sep 2023     ║
  8. # ╚═══════════════════════════════════════════════╩════════════════════╝
  9. # ╔════════════════════════════════════════════════════════════════════╗
  10. # ║ Requires: nil                                                      ║
  11. # ║                                                                    ║
  12. # ╚════════════════════════════════════════════════════════════════════╝
  13. # ╔════════════════════════════════════════════════════════════════════╗
  14. # ║ Brief Description:                                                 ║
  15. # ║        Add elemental damage over time                              ║
  16. # ╚════════════════════════════════════════════════════════════════════╝
  17. # ╔════════════════════════════════════════════════════════════════════╗
  18. # ║ Instructions:                                                      ║
  19. # ║ Use <element damage: id, dam, pcnt> on state that will             ║
  20. # ║ perform damage to the battler in battle.                           ║
  21. # ║ The dam is the amount of damage that will be applied.              ║
  22. # ║ The pcnt is use percentage? 1 / 0                                  ║
  23. # ║ 1 equals true                                                      ║
  24. # ║   will use dam as a percentage value for calculation               ║
  25. # ║ 0 equals false                                                     ║
  26. # ║   will use dam as direct damage value                              ║
  27. # ║                                                                    ║
  28. # ║ Example:                                                           ║
  29. # ║ <element damage: 3, 15, 1> or <element_damage:3 15 1>              ║
  30. # ║     element 3 (fire), 15 damage in percentage                      ║
  31. # ║             mhp * 15%                                              ║
  32. # ║ <element damage: 3, 75, 0> or <element-damage: 3 75 0>             ║
  33. # ║     element 3 (fire), 75 damage in flat value                      ║
  34. # ╚════════════════════════════════════════════════════════════════════╝
  35. # ╔════════════════════════════════════════════════════════════════════╗
  36. # ║ Updates:                                                           ║
  37. # ║ 1.00 - 11 Sep 2023 - Script finished                               ║
  38. # ║ 1.01 - 11 Sep 2023 - Made Changes                                  ║
  39. # ║ 1.02 - 15 Sep 2023 - Added support for enemies                     ║
  40. # ║ 1.03 - 24 Mar 2024 - Updated terms                                 ║
  41. # ║                                                                    ║
  42. # ╚════════════════════════════════════════════════════════════════════╝
  43. # ╔════════════════════════════════════════════════════════════════════╗
  44. # ║ Credits and Thanks:                                                ║
  45. # ║   Roninator2                                                       ║
  46. # ║                                                                    ║
  47. # ╚════════════════════════════════════════════════════════════════════╝
  48. # ╔════════════════════════════════════════════════════════════════════╗
  49. # ║ Terms of use:                                                      ║
  50. # ║  Follow the original Authors terms of use where applicable         ║
  51. # ║    - When not made by me (Roninator2)                              ║
  52. # ║  Free for all uses in RPG Maker except nudity                      ║
  53. # ║  Anyone using this script in their project before these terms      ║
  54. # ║  were changed are allowed to use this script even if it conflicts  ║
  55. # ║  with these new terms. New terms effective 03 Apr 2024             ║
  56. # ║  No part of this code can be used with AI programs or tools        ║
  57. # ║  Credit must be given                                              ║
  58. # ╚════════════════════════════════════════════════════════════════════╝
  59.  
  60. # ╔════════════════════════════════════════════════════════════════════╗
  61. # ║                      End of editable region                        ║
  62. # ╚════════════════════════════════════════════════════════════════════╝
  63.  
  64. module R2_Element_Battle_Damage
  65.   Element_Rgx = /<element[ -_]damage: *(\d+),* *(\d+),* *(\d+)>/i
  66.   Combine = false      # combine multipler or add them.
  67.       # false will process each function separately
  68.       # true will get total value before calculating
  69.   Check_Enemy = true   # checks for Database enemy features
  70.   Check_Actor = true   # checks for Database actor features
  71.   Check_Class = true   # checks for Class features
  72.   Check_Equip = true   # checks for Actor Equipment features
  73. end
  74. module DataManager
  75.   class <<self
  76.     alias :load_database_original_r2_state_element_damage :load_database
  77.   end
  78.   def self.load_database
  79.     load_database_original_r2_state_element_damage
  80.     load_r2_state_element_damage
  81.   end
  82.   def self.load_r2_state_element_damage
  83.     for obj in $data_states
  84.       next if obj.nil?
  85.       obj.load_r2_state_element_damage
  86.     end
  87.   end
  88. end
  89.  
  90. class RPG::State
  91.   attr_accessor :damele
  92.   attr_accessor :dameleamt
  93.   attr_accessor :damelepcnt
  94.  
  95.   def load_r2_state_element_damage
  96.     @damele = 0
  97.     @dameleamt = 0
  98.     @damelepcnt = false
  99.     self.note.split(/[\r\n]+/).each { |line|
  100.       case line
  101.       when R2_Element_Battle_Damage::Element_Rgx
  102.         @damele = $1.to_i
  103.         @dameleamt = $2.to_i
  104.         @damelepcnt = true if $3.to_i == 1
  105.       end
  106.     }
  107.   end
  108. end
  109.  
  110. class Game_Battler < Game_BattlerBase
  111.   alias r2_regenerate_hp_and_element_damage   regenerate_hp
  112.   def regenerate_hp
  113.     r2_regenerate_hp_and_element_damage
  114.     adjust_element_state if $game_party.in_battle
  115.   end
  116.   def adjust_element_state
  117.     states.each do |st|
  118.       if st.damele != (0 || nil)
  119.         damage = st.dameleamt
  120.         damage = (mhp * (st.dameleamt.to_f / 100)).to_i if st.damelepcnt == true
  121.         damage = element_feature_resist(damage, st.damele)
  122.         @result.hp_damage = [damage, max_slip_damage].min
  123.         perform_map_damage_effect if $game_party.in_battle && damage > 0
  124.         self.hp -= @result.hp_damage
  125.       end
  126.     end
  127.   end
  128.   def element_feature_resist(damage, ele)
  129.     tmul = 0
  130.     mul = 1
  131.     dam = damage
  132.     mod = 0
  133.     if self.is_a?(Game_Enemy)
  134.       if R2_Element_Battle_Damage::Check_Enemy
  135.         $data_enemies[self.enemy_id].features.each do |ft|
  136.           next if ft.nil?
  137.           next if ft.code != 11
  138.           next if ft.data_id != ele
  139.           mod = ft.value - 1
  140.           mul += mod
  141.         end
  142.         if R2_Element_Battle_Damage::Combine == true
  143.           tmul += mod
  144.         else
  145.           dam = dam * mul
  146.         end
  147.       end
  148.     else
  149.       if R2_Element_Battle_Damage::Check_Actor
  150.         $data_actors[self.id].features.each do |ft|
  151.           next if ft.nil?
  152.           next if ft.code != 11
  153.           next if ft.data_id != ele
  154.           mod = ft.value - 1
  155.           mul += mod
  156.         end
  157.         if R2_Element_Battle_Damage::Combine == true
  158.           tmul += mod
  159.         else
  160.           dam = dam * mul
  161.         end
  162.       end
  163.       mul = 1
  164.       mod = 0
  165.       if R2_Element_Battle_Damage::Check_Class
  166.         $data_classes[self.class_id].features.each do |ft|
  167.           next if ft.nil?
  168.           next if ft.code != 11
  169.           next if ft.data_id != ele
  170.           mod = ft.value - 1
  171.           mul += mod
  172.         end
  173.         if R2_Element_Battle_Damage::Combine == true
  174.           tmul += mod
  175.         else
  176.           dam = dam * mul
  177.         end
  178.       end
  179.       mul = 1
  180.       mod = 0
  181.       if R2_Element_Battle_Damage::Check_Equip
  182.         self.equips.each do |eq|
  183.           next if eq.nil?
  184.           eq.features.each do |ft|
  185.             next if ft.class.nil?
  186.             next if ft.code != 11
  187.             next if ft.data_id != ele
  188.             mod = ft.value - 1
  189.             mul += mod
  190.           end
  191.         end
  192.         if R2_Element_Battle_Damage::Combine == true
  193.           tmul += mod
  194.         else
  195.           dam = dam * mul
  196.         end
  197.       end
  198.     end
  199.     if R2_Element_Battle_Damage::Combine == true
  200.       tmul = 0 if tmul < 0
  201.       dam = dam * tmul
  202.     end
  203.     return dam.to_i
  204.   end
  205. end
  206.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement