Advertisement
roninator2

Falco ABS - Equip from item menu

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