Advertisement
roninator2

Yanfly Weapon Attack Replace addon

Nov 19th, 2024
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 15.04 KB | None | 0 0
  1. # ╔═══════════════════════════════════════════════╦════════════════════╗
  2. # ║ Title: Weapon Attack Replace addon            ║  Version: 1.01     ║
  3. # ║ Author: Roninator2                            ║                    ║
  4. # ╠═══════════════════════════════════════════════╬════════════════════╣
  5. # ║ Function:                                     ║   Date Created     ║
  6. # ║                                               ╠════════════════════╣
  7. # ║ Add on function to Yanfly's script            ║    18 Jan 2022     ║
  8. # ╚═══════════════════════════════════════════════╩════════════════════╝
  9. # ╔════════════════════════════════════════════════════════════════════╗
  10. # ║ Requires: Yanfly - Weapon Attack Replace                           ║
  11. # ╚════════════════════════════════════════════════════════════════════╝
  12. # ╔════════════════════════════════════════════════════════════════════╗
  13. # ║ Brief Description:                                                 ║
  14. # ║      Give more options to Yanfly Weapon Attack Replace script      ║
  15. # ╚════════════════════════════════════════════════════════════════════╝
  16. # ╔════════════════════════════════════════════════════════════════════╗
  17. # ║ Instructions: Put below Yanfly's script                            ║
  18. # ║                                                                    ║
  19. # ║ Adds options to select a random skill in either                    ║
  20. # ║ A range or from the list created in the note tags                  ║
  21. # ║                                                                    ║
  22. # ║ Also has the option to change the skill tp/mp cost                 ║
  23. # ║ But will not change it if the skill tp/mp cost is lower            ║
  24. # ║ Does not have an affect on selecting skills                        ║
  25. # ║ If the actor does not have enough TP/MP to start with              ║
  26. # ║ then the skill will not be selected.                               ║
  27. # ║                                                                    ║
  28. # ║ Skill Range:                                                       ║
  29. # ║   <skill range: 5, 9>                                              ║
  30. # ║    first skill, to last skill                                      ║
  31. # ║   a random one will be picked (5, 6, 7, 8, 9)                      ║
  32. # ║                                                                    ║
  33. # ║ Skill List:                                                        ║
  34. # ║   <skill list: 4, 8, 12, 22>                                       ║
  35. # ║   Randomly select one of the skills in the list                    ║
  36. # ║                                                                    ║
  37. # ║ Skill TP Cost:                                                     ║
  38. # ║   <skill tp: 5>                                                    ║
  39. # ║   will set the new skill used 5 tp cost                            ║
  40. # ║   if the actor does not have enough tp or the skill tp             ║
  41. # ║   cost is lower, this will not have any effect                     ║
  42. # ║                                                                    ║
  43. # ║ Skill MP Cost:                                                     ║
  44. # ║   <skill mp: 5>                                                    ║
  45. # ║   will set the new skill used 5 mp cost                            ║
  46. # ║   if the actor does not have enough mp or the skill mp             ║
  47. # ║   cost is lower, this will not have any effect                     ║
  48. # ╚════════════════════════════════════════════════════════════════════╝
  49. # ╔════════════════════════════════════════════════════════════════════╗
  50. # ║ Updates:                                                           ║
  51. # ║ 1.00 - 18 Jan 2022 - Initial publish                               ║
  52. # ╚════════════════════════════════════════════════════════════════════╝
  53. # ╔════════════════════════════════════════════════════════════════════╗
  54. # ║ Credits and Thanks:                                                ║
  55. # ║   Roninator2                                                       ║
  56. # ║                                                                    ║
  57. # ╚════════════════════════════════════════════════════════════════════╝
  58. # ╔════════════════════════════════════════════════════════════════════╗
  59. # ║ Terms of use:                                                      ║
  60. # ║  Follow the original Authors terms of use where applicable         ║
  61. # ║    - When not made by me (Roninator2)                              ║
  62. # ║  Free for all uses in RPG Maker except nudity                      ║
  63. # ║  Anyone using this script in their project before these terms      ║
  64. # ║  were changed are allowed to use this script even if it conflicts  ║
  65. # ║  with these new terms. New terms effective 03 Apr 2024             ║
  66. # ║  No part of this code can be used with AI programs or tools        ║
  67. # ║  Credit must be given                                              ║
  68. # ╚════════════════════════════════════════════════════════════════════╝
  69.  
  70. module YEA
  71.   module REGEXP
  72.   module BASEITEM
  73.    
  74.     SKILL_RANGE = /<(?:SKILL_RANGE|skill range):[ ](\d+),[ ](\d+)>/i
  75.     SKILL_LIST = /<(?:SKILL_LIST|skill list):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
  76.     SKILL_TP = /<(?:SKILL_TP|skill tp):[ ](\d+)>/i
  77.     SKILL_MP = /<(?:SKILL_MP|skill mp):[ ](\d+)>/i
  78.    
  79.   end # BASEITEM
  80.   module WEAPON
  81.    
  82.     SKILL_RANGE = /<(?:SKILL_RANGE|skill range):[ ](\d+),[ ](\d+)>/i
  83.     SKILL_LIST = /<(?:SKILL_LIST|skill list):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
  84.     SKILL_TP = /<(?:SKILL_TP|skill tp):[ ](\d+)>/i
  85.     SKILL_MP = /<(?:SKILL_MP|skill mp):[ ](\d+)>/i
  86.    
  87.   end # WEAPON
  88.   end # REGEXP
  89. end # YEA
  90. class RPG::BaseItem
  91.  
  92.   #--------------------------------------------------------------------------
  93.   # public instance variables
  94.   #--------------------------------------------------------------------------
  95.   attr_accessor :skill_range_start
  96.   attr_accessor :skill_range_end
  97.   attr_accessor :skill_list_pick
  98.   attr_accessor :skill_tp_r2
  99.   attr_accessor :skill_mp_r2
  100.  
  101.   #--------------------------------------------------------------------------
  102.   # common cache: load_notetags_war
  103.   #--------------------------------------------------------------------------
  104.   alias r2_load_war_92347fhb  load_notetags_war
  105.   def load_notetags_war
  106.     #---
  107.     self.note.split(/[\r\n]+/).each { |line|
  108.       case line
  109.       #---
  110.       when YEA::REGEXP::BASEITEM::SKILL_RANGE
  111.         @skill_range_start = $1.to_i
  112.         @skill_range_end = $2.to_i
  113.       when YEA::REGEXP::BASEITEM::SKILL_LIST
  114.         list = $1
  115.         change = list.split(",")
  116.         @skill_list_pick = change.map(&:to_i)
  117.       when YEA::REGEXP::BASEITEM::SKILL_TP
  118.         @skill_tp_r2 = $1.to_i
  119.       when YEA::REGEXP::BASEITEM::SKILL_MP
  120.         @skill_mp_r2 = $1.to_i
  121.       #---
  122.       end
  123.     } # self.note.split
  124.     #---
  125.     r2_load_war_92347fhb
  126.   end
  127.  
  128. end # RPG::BaseItem
  129. class RPG::Weapon < RPG::EquipItem
  130.  
  131.   #--------------------------------------------------------------------------
  132.   # public instance variables
  133.   #--------------------------------------------------------------------------
  134.   attr_accessor :skill_range_start
  135.   attr_accessor :skill_range_end
  136.   attr_accessor :skill_list_pick
  137.   attr_accessor :skill_tp_r2
  138.   attr_accessor :skill_mp_r2
  139.  
  140.   #--------------------------------------------------------------------------
  141.   # common cache: load_notetags_war
  142.   #--------------------------------------------------------------------------
  143.   alias r2_load_notetags_war_9237u4bv   load_notetags_war
  144.   def load_notetags_war
  145.     #---
  146.     self.note.split(/[\r\n]+/).each { |line|
  147.       case line
  148.       #---
  149.       when YEA::REGEXP::BASEITEM::SKILL_RANGE
  150.         @skill_range_start = $1.to_i
  151.         @skill_range_end = $2.to_i
  152.       when YEA::REGEXP::BASEITEM::SKILL_LIST
  153.         list = $1
  154.         change = list.split(",")
  155.         @skill_list_pick = change.map(&:to_i)
  156.       when YEA::REGEXP::BASEITEM::SKILL_TP
  157.         @skill_tp_r2 = $1.to_i
  158.       when YEA::REGEXP::BASEITEM::SKILL_MP
  159.         @skill_mp_r2 = $1.to_i
  160.       #---
  161.       end
  162.     } # self.note.split
  163.     r2_load_notetags_war_9237u4bv
  164.     #---
  165.   end
  166.  
  167. end # RPG::Weapon
  168. class Game_BattlerBase
  169.  
  170.   #--------------------------------------------------------------------------
  171.   # new method: set_skill_tp_replace
  172.   #--------------------------------------------------------------------------
  173.   def set_skill_tp_replace
  174.     tp = skill_tp_replace if actor?
  175.     return tp
  176.   end
  177.  
  178.   #--------------------------------------------------------------------------
  179.   # new method: set_skill_mp_replace
  180.   #--------------------------------------------------------------------------
  181.   def set_skill_mp_replace
  182.     mp = skill_mp_replace if actor?
  183.     return mp
  184.   end
  185.  
  186.   #--------------------------------------------------------------------------
  187.   # overwrite method: attack_skill_id
  188.   #--------------------------------------------------------------------------
  189.   def attack_skill_id
  190.     skill = weapon_attack_skill_id if actor?
  191.     range = weapon_range_attack_id if actor?
  192.     sklist = weapon_list_skill_id if actor?
  193.     attack = sklist.nil? ? (range.nil? ? (skill.nil? ? nil : skill) : range) : sklist
  194.     if actor?
  195.       skl = attack if !attack.nil? && (attack > 0)
  196.       player = $game_actors[actor.id]
  197.       skltp = $data_skills[attack]
  198.       return skl if player.tp > skltp.tp_cost
  199.     end
  200.     return YEA::WEAPON_ATTACK_REPLACE::DEFAULT_ATTACK_SKILL_ID
  201.   end
  202.  
  203. end # Game_BattlerBase
  204. class Game_Actor < Game_Battler
  205.   attr_accessor :skill_range_r2
  206.   attr_accessor :skill_list_r2
  207.  
  208.   #--------------------------------------------------------------------------
  209.   # new method: skill_tp_replace
  210.   #--------------------------------------------------------------------------
  211.   def skill_tp_replace
  212.     for weapon in weapons
  213.       next if weapon.nil?
  214.       tp = weapon.skill_tp_r2
  215.       return tp if !tp.nil?
  216.       return nil
  217.     end
  218.   end
  219.  
  220.   #--------------------------------------------------------------------------
  221.   # new method: skill_mp_replace
  222.   #--------------------------------------------------------------------------
  223.   def skill_mp_replace
  224.     for weapon in weapons
  225.       next if weapon.nil?
  226.       mp = weapon.skill_mp_r2
  227.       return mp if !mp.nil?
  228.       return nil
  229.     end
  230.   end
  231.  
  232.   #--------------------------------------------------------------------------
  233.   # new method: weapon_list_skill_id
  234.   #--------------------------------------------------------------------------
  235.   def weapon_list_skill_id
  236.     @skill_list_r2 = false
  237.     for weapon in weapons
  238.       next if weapon.nil?
  239.       sklist = weapon.skill_list_pick
  240.       @skill_list_r2 = true if !sklist.nil?
  241.       return nil if sklist.nil?
  242.       num = sklist.size - 1
  243.       pick = rand(num)
  244.       skill = sklist[pick]
  245.       return skill unless skill.nil?
  246.       return nil
  247.     end
  248.   end
  249.  
  250.   #--------------------------------------------------------------------------
  251.   # new method: weapon_range_attack_id
  252.   #--------------------------------------------------------------------------
  253.   def weapon_range_attack_id
  254.     @skill_range_r2 = false
  255.     for weapon in weapons
  256.       next if weapon.nil?
  257.       skstart = weapon.skill_range_start
  258.       skend = weapon.skill_range_end
  259.       skrange = skend.to_i - skstart.to_i
  260.       sksel = rand(skrange) + skstart.to_i
  261.       @skill_range_r2 = true if !sksel.nil?
  262.       return sksel unless sksel.nil?
  263.       return nil
  264.     end
  265.   end
  266.  
  267. end # Game_Actor
  268.  
  269. class Scene_Battle < Scene_Base
  270.  
  271.   #--------------------------------------------------------------------------
  272.   # overwrite method: command_attack
  273.   #--------------------------------------------------------------------------
  274.   def command_attack
  275.     @skill = $data_skills[BattleManager.actor.attack_skill_id]
  276.     tp = BattleManager.actor.set_skill_tp_replace
  277.     mp = BattleManager.actor.set_skill_mp_replace
  278.     @skill.tp_cost = tp if !tp.nil? && (BattleManager.actor.tp > tp) &&
  279.     (@skill.tp_cost > tp) && (BattleManager.actor.skill_range_r2 == true ||
  280.     BattleManager.actor.skill_list_r2 == true)
  281.     @skill.mp_cost = mp if !mp.nil? && (BattleManager.actor.mp > mp) &&
  282.     (@skill.mp_cost > mp) && (BattleManager.actor.skill_range_r2 == true ||
  283.     BattleManager.actor.skill_list_r2 == true)
  284.     BattleManager.actor.input.set_skill(@skill.id)
  285.     if $imported["YEA-BattleEngine"]
  286.       status_redraw_target(BattleManager.actor)
  287.       $game_temp.battle_aid = @skill
  288.       if @skill.for_opponent?
  289.         select_enemy_selection
  290.       elsif @skill.for_friend?
  291.         select_actor_selection
  292.       else
  293.         next_command
  294.         $game_temp.battle_aid = nil
  295.       end
  296.     else
  297.       if !@skill.need_selection?
  298.         next_command
  299.       elsif @skill.for_opponent?
  300.         select_enemy_selection
  301.       else
  302.         select_actor_selection
  303.       end
  304.     end
  305.   end
  306. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement