Advertisement
roninator2

Falco Pearl ABS Equip from Menu

Dec 6th, 2024
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 10.01 KB | None | 0 0
  1. # ╔═════════════════════════════════════╦════════════════════╗
  2. # ║ Title: Equip From Menu - Falco ABS  ║  Version: 1.06     ║
  3. # ║ Author: Roninator2                  ║                    ║
  4. # ╠═════════════════════════════════════╬════════════════════╣
  5. # ║ Function:                           ║   Date Created     ║
  6. # ║    For Falco ABS Game               ╠════════════════════╣
  7. # ║ Equip items from Item menu          ║    04 Mar 2022     ║
  8. # ╚═════════════════════════════════════╩════════════════════╝
  9. # ╔══════════════════════════════════════════════════════════╗
  10. # ║ Requires:                                                ║
  11. # ║   Theoallen Limited Inventory                            ║
  12. # ╚══════════════════════════════════════════════════════════╝
  13. # ╔══════════════════════════════════════════════════════════╗
  14. # ║ Updates:                                                 ║
  15. # ║   Fixed system equipping weapons before selecting actor  ║
  16. # ╚══════════════════════════════════════════════════════════╝
  17. # ╔═════════════════════════════════════╗
  18. # ║ Terms of use:                       ║
  19. # ║ Free for all uses in RPG Maker      ║
  20. # ╚═════════════════════════════════════╝
  21.  
  22. module Theo
  23.   module LimInv
  24.     EquipVocab      = "Equip item"    # Use item
  25.     SkillVocab      = "Equip Skill"
  26.     UseSKVocab      = "Use Skill"
  27.   end
  28. end
  29.  
  30. class Window_ItemUseCommand < Window_Command
  31.   def make_command_list
  32.     add_command(EquipVocab, :equip)
  33.     add_command(UseVocab, :use) if $game_party.usable?(@item)
  34.     add_command(DiscardVocab, :discard, discardable?(@item))
  35.     add_command(CancelVocab, :cancel)
  36.   end
  37. end
  38.  
  39. class Scene_Item < Scene_ItemBase
  40.   attr_reader :actor
  41.   def create_usecommand_window
  42.     @use_command = Window_ItemUseCommand.new
  43.     @use_command.to_center
  44.     @use_command.set_handler(:equip, method(:equip_command_ok))
  45.     @use_command.set_handler(:use, method(:use_command_ok))
  46.     @use_command.set_handler(:discard, method(:on_discard_ok))
  47.     @use_command.set_handler(:cancel, method(:on_usecmd_cancel))
  48.     @use_command.viewport = @viewport
  49.   end
  50.  
  51.   def create_slot_confirm
  52.     return if @slot_confirm
  53.     @slot_confirm = Window_SlotConfirm.new(Graphics.width / 2 - 60 / 2,
  54.      Graphics.height / 2 - 85 / 2, :item)
  55.     if @sel_item.class == RPG::Item
  56.       @slot_confirm.set_handler(:slot1,     method(:open_slots))
  57.       @slot_confirm.set_handler(:slot2,     method(:open_slots))
  58.       @slot_confirm.set_handler(:cancel,    method(:equip_cancel))
  59.     else
  60.       @slot_confirm.set_handler(:slot1,     method(:open_slots))
  61.       @slot_confirm.set_handler(:slot2,     method(:open_slots))
  62.       @slot_confirm.set_handler(:slot3,     method(:open_slots))
  63.       @slot_confirm.set_handler(:slot4,     method(:open_slots))
  64.       @slot_confirm.set_handler(:cancel,    method(:equip_cancel))
  65.     end
  66.   end
  67.  
  68.   def open_slots
  69.     if @sel_item.class == RPG::Item
  70.       case @slot_confirm.current_symbol
  71.       when :slot1 then @actor.assigned_item  = @sel_item
  72.       when :slot2 then @actor.assigned_item2 = @sel_item
  73.       when :cancel then @sel_item = nil
  74.       end
  75.     else
  76.       case @slot_confirm.current_symbol
  77.       when :slot1 then @actor.assigned_skill  = @sel_item
  78.       when :slot2 then @actor.assigned_skill2 = @sel_item
  79.       when :slot3 then @actor.assigned_skill3 = @sel_item
  80.       when :slot4 then @actor.assigned_skill4 = @sel_item
  81.       when :cancel then @sel_item = nil
  82.       end
  83.     end
  84.     Sound.play_equip
  85.     @item_window.activate
  86.     @slot_confirm.deactivate
  87.     @slot_confirm.close
  88.   end
  89.  
  90.   def equip_command_ok
  91.     @use_command.close
  92.     @actor_window.select_equip_item(item)
  93.     show_sub_window(@actor_window)
  94.     @actor_window.select(0)
  95.   end
  96.  
  97.   def sub_select_ok
  98.     id = @actor_window.index
  99.     @actor = $game_party.members[id]
  100.     if @sel_item.etype_id < 2
  101.       perform_item_ok(@sel_item, @actor)
  102.     else
  103.       hide_sub_window(@actor_window)
  104.       Sound.play_buzzer
  105.       @use_command.activate
  106.     end
  107.   end
  108.  
  109.   def equip_item
  110.     id = @actor_window.index
  111.     @actor = $game_party.members[id]
  112.     hide_sub_window(@actor_window)
  113.     create_slot_confirm
  114.     @slot_confirm.open
  115.     @slot_confirm.z = 1000
  116.     @item_window.deactivate
  117.     @slot_confirm.activate
  118.   end
  119.  
  120.   def sel_itm
  121.     return @sel_item
  122.   end
  123.  
  124.   alias r2_liminv_item_ok on_item_ok
  125.   def on_item_ok
  126.     @sel_item = @item_window.item
  127.     r2_liminv_item_ok
  128.   end
  129.  
  130.   def perform_item_ok(item, actor)
  131.     return if item.nil?
  132.     case item
  133.     when RPG::Weapon
  134.       actor.change_equip_by_id(0, item.id)
  135.     when RPG::Armor
  136.       actor.change_equip_by_id(1, item.id)
  137.     end
  138.   end
  139.  
  140.   def on_actor_ok
  141.     if @actor.equippable?(item)
  142.       sub_select_ok
  143.       equip_tool
  144.     elsif item.is_a?(RPG::Item) && !item.key_item? && @use_command.index == 1
  145.       use_item
  146.     elsif item.is_a?(RPG::Item)
  147.       equip_item
  148.     else
  149.       Sound.play_buzzer
  150.     end
  151.   end
  152.  
  153.   def equip_tool
  154.     user.equippable?(item)
  155.     Sound.play_equip
  156.     check_common_event
  157.     check_gameover
  158.     hide_sub_window(@actor_window)
  159.   end
  160.  
  161.   def equip_cancel
  162.     @item_window.activate
  163.     @slot_confirm.deactivate
  164.     @slot_confirm.dispose
  165.     @slot_confirm = nil
  166.   end
  167. end
  168.  
  169. class Window_MenuActor < Window_MenuStatus
  170.   def select_equip_item(item)
  171.     select($game_party.menu_actor.index)
  172.   end
  173. end
  174.  
  175. class Window_Selectable < Window_Base
  176.   def process_ok
  177.     if current_item_enabled?
  178.       Sound.play_ok
  179.       Input.update
  180.       deactivate
  181.       call_ok_handler
  182.     else
  183.       if SceneManager.scene_is?(Scene_Item)
  184.         if SceneManager.scene.actor.equippable?(SceneManager.scene.sel_itm)
  185.           return
  186.         else
  187.           Sound.play_buzzer
  188.         end
  189.       else
  190.         Sound.play_buzzer
  191.       end
  192.     end
  193.   end
  194. end
  195.  
  196. class Window_SlotConfirm < Window_Command
  197.   def window_height() return @kind == :item ? 100 : 140   end
  198.   def make_command_list
  199.     case @kind
  200.     when :item
  201.       add_command('Slot ' + Key::Item[1],    :slot1)
  202.       add_command('Slot ' + Key::Item2[1],   :slot2)
  203.       add_command('Cancel',   :cancel)
  204.     when :skill
  205.       add_command('Slot ' + Key::Skill[1],   :slot1)
  206.       add_command('Slot ' + Key::Skill2[1],  :slot2)
  207.       add_command('Slot ' + Key::Skill3[1],  :slot3)
  208.       add_command('Slot ' + Key::Skill4[1],  :slot4)
  209.       add_command('Cancel',   :cancel)
  210.     end
  211.   end
  212. end
  213.  
  214. class Window_SkillList < Window_Selectable
  215.   def enable?(item)
  216.     @actor
  217.   end
  218. end
  219.  
  220. class Window_EquipUseCommand < Window_Command
  221.   include Theo::LimInv
  222.  
  223.   def initialize
  224.     super(Graphics.width / 2 - window_width / 2, Graphics.height / 2 - 48)
  225.     self.openness = 0
  226.   end
  227.  
  228.   def window_width
  229.     160
  230.   end
  231.  
  232.   def set_skill(skill)
  233.     @skill = skill
  234.   end
  235.  
  236.   def make_command_list
  237.     add_command(SkillVocab, :equip)
  238.     add_command(UseSKVocab, :use)
  239.     add_command(CancelVocab, :cancel)
  240.   end
  241.  
  242.   def to_center
  243.     self.x = Graphics.width/2 - width/2
  244.     self.y = Graphics.height/2 - height/2
  245.   end
  246.  
  247. end
  248.  
  249. class Scene_Skill < Scene_ItemBase
  250.   alias r2_skill_equip_falco_start  start
  251.   def start
  252.     r2_skill_equip_falco_start
  253.     create_equip_window
  254.   end
  255.  
  256.   def command_equip
  257.     @use_command.close
  258.     create_slot_confirm
  259.     @slot_confirm.z = 1000
  260.     @item_window.deactivate
  261.     @slot_confirm.activate
  262.   end
  263.  
  264.   alias r2_equip_skill_ok on_item_ok
  265.   def on_item_ok
  266.     if item.nil?
  267.       @item_window.activate
  268.       return
  269.     end
  270.     @use_command.open
  271.     @use_command.activate
  272.     @use_command.select(0)
  273.   end
  274.  
  275.   def use_command_ok
  276.     if @actor.usable?(item)
  277.       r2_equip_skill_ok
  278.       @use_command.close
  279.     else
  280.       Sound.play_buzzer
  281.       @use_command.activate
  282.       return
  283.     end
  284.   end
  285.  
  286.   def on_usecmd_cancel
  287.     @item_window.activate
  288.     @use_command.close
  289.     @use_command.deactivate
  290.   end
  291.  
  292.   def create_equip_window
  293.     @use_command = Window_EquipUseCommand.new
  294.     @use_command.to_center
  295.     @use_command.set_handler(:equip,    method(:command_equip))
  296.     @use_command.set_handler(:use, method(:use_command_ok))
  297.     @use_command.set_handler(:cancel, method(:on_usecmd_cancel))
  298.     @use_command.viewport = @viewport
  299.   end
  300.  
  301.   def create_slot_confirm
  302.     @slot_confirm = Window_SlotConfirm.new(Graphics.width / 2 - 60 / 2,
  303.     Graphics.height / 2 - 85 / 2, :skill)
  304.     @slot_confirm.set_handler(:slot1,     method(:open_slots))
  305.     @slot_confirm.set_handler(:slot2,     method(:open_slots))
  306.     @slot_confirm.set_handler(:slot3,     method(:open_slots))
  307.     @slot_confirm.set_handler(:slot4,     method(:open_slots))
  308.   end
  309.  
  310.   def open_slots
  311.     case @slot_confirm.current_symbol
  312.     when :slot1 then @actor.assigned_skill  = item
  313.     when :slot2 then @actor.assigned_skill2 = item
  314.     when :slot3 then @actor.assigned_skill3 = item
  315.     when :slot4 then @actor.assigned_skill4 = item
  316.     end
  317.     Sound.play_equip
  318.     @item_window.activate
  319.     @slot_confirm.deactivate
  320.     @slot_confirm.dispose
  321.     @slot_confirm = nil
  322.   end
  323.  
  324. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement