Advertisement
roninator2

Selchar Equip Repair Addon - Currency

Dec 5th, 2024
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 29.30 KB | None | 0 0
  1. # ╔═════════════════════════════════════╦════════════════════╗
  2. # ║ Title: Currency Repair              ║  Version: 1.03     ║
  3. # ║ Author: Roninator2                  ║                    ║
  4. # ╠═════════════════════════════════════╬════════════════════╣
  5. # ║ Function:                           ║   Date Created     ║
  6. # ║   Allow repair with alternate       ╠════════════════════╣
  7. # ║   currencies                        ║    26 Dec 2020     ║
  8. # ╠═════════════════════════════════════╬════════════════════╣
  9. # ║ 1.01 Corrected buying icon/error    ║    27 Dec 2020     ║
  10. # ║ and fixed enabled method            ║                    ║
  11. # ╠═════════════════════════════════════╬════════════════════╣
  12. # ║ 1.02 Added icons for each item      ║    27 Dec 2020     ║
  13. # ║ If true will show currency icon     ║                    ║
  14. # ║ instead of equipemnt icon           ║                    ║
  15. # ╠═════════════════════════════════════╬════════════════════╣
  16. # ║ 1.03 Recreated shop number window   ║    27 Dec 2020     ║
  17. # ║ due to conflict with yanfly shop    ║                    ║
  18. # ║ options script. aka - new window    ║                    ║
  19. # ╚═════════════════════════════════════╩════════════════════╝
  20. # ╔══════════════════════════════════════════════════════════╗
  21. # ║ Script addon to allow for damaging of items or           ║
  22. # ║ partial repair of items or specifying                    ║
  23. # ║ what currency to use for a specific item                 ║
  24. # ║                                                          ║
  25. # ║ Use note tag <repair currency: X> # X = Currency ID      ║
  26. # ║ to specify what currency to use from Calestian           ║
  27. # ║ Multiple Currencies script. Default is 0 (Gold)          ║
  28. # ║                                                          ║
  29. # ║ Turn switches on to enable Damage and Partial Repair     ║
  30. # ╚══════════════════════════════════════════════════════════╝
  31. # ╔═════════════════════════════════════╗
  32. # ║ Terms of use:                       ║
  33. # ║ Follow the Original Authors terms   ║
  34. # ╚═════════════════════════════════════╝
  35. # update
  36. #==============================================================================
  37. # ■ Module for currency repair
  38. #==============================================================================
  39. module TH_Instance
  40.   module Scene_Repair
  41.     Partial = "Partial"
  42.     Damage = "Damage"
  43.     Damage_Item = "Each damage point will recover "
  44.     Allow_Partial = 5 # switch to allow partial repair
  45.     Allow_Damage = 6 # switch to allow damage of items
  46.     Draw_Currency_Icon = true # draw currency instead of item icon on each item
  47.   end
  48. end
  49.  
  50. #==============================================================================
  51. # ■ Window_RepairCommand
  52. #==============================================================================
  53. class Window_RepairCommand < Window_HorzCommand
  54.   #============================================================================
  55.   # Set max column
  56.   #============================================================================
  57.   def col_max
  58.     col = 2
  59.     col += 1 if $game_switches[TH_Instance::Scene_Repair::Allow_Partial]
  60.     col += 1 if $game_switches[TH_Instance::Scene_Repair::Allow_Damage]
  61.     return col
  62.   end
  63.   #============================================================================
  64.   # Make command list
  65.   #============================================================================
  66.   def make_command_list
  67.     add_command(TH_Instance::Scene_Repair::Vocab,    :repair)
  68.     if $game_switches[TH_Instance::Scene_Repair::Allow_Partial]
  69.       add_command(TH_Instance::Scene_Repair::Partial,    :partial)
  70.     end
  71.     if $game_switches[TH_Instance::Scene_Repair::Allow_Damage]
  72.       add_command(TH_Instance::Scene_Repair::Damage,    :damage)
  73.     end
  74.     add_command(Vocab::ShopCancel, :cancel)
  75.   end
  76. end
  77.  
  78. #==============================================================================
  79. # ■ Scene_RepairEquip
  80. #==============================================================================
  81. class Scene_RepairEquip < Scene_ItemBase
  82.   def start
  83.     super
  84.     create_help_window
  85.     create_gold_window
  86.     create_command_window
  87.     create_item_window
  88.     create_cost_window
  89.   end
  90.   #============================================================================
  91.   # Create command window
  92.   #============================================================================
  93.   def create_command_window
  94.     @command_window = Window_RepairCommand.new(@gold_window.x)
  95.     @command_window.viewport = @viewport
  96.     @command_window.y = @help_window.height
  97.     @command_window.set_handler(:repair, method(:command_repair))
  98.     @command_window.set_handler(:partial, method(:command_partial))
  99.     @command_window.set_handler(:damage, method(:command_damage))
  100.     @command_window.set_handler(:cancel, method(:return_scene))
  101.   end
  102.   #============================================================================
  103.   # Create item windoww
  104.   #============================================================================
  105.   def create_item_window
  106.     wy = @help_window.height + @command_window.height
  107.     wh = Graphics.height - wy
  108.     ww = Graphics.width - @gold_window.width
  109.     @item_window = Window_EquipRepair.new(0, wy, ww, wh)
  110.     @item_window.viewport = @viewport
  111.     @item_window.help_window = @help_window
  112.     @item_window.set_handler(:ok,     method(:on_item_ok))
  113.     @item_window.set_handler(:cancel, method(:on_item_cancel))
  114.     @item_window.category = :item
  115.   end
  116.   #============================================================================
  117.   # Create gold window. Configured for 544 x 416 window
  118.   #============================================================================
  119.   def create_gold_window
  120.     if Clstn_Currencies::CURRCNT >= 10
  121.       @gold_window = Window_Currencies_Repair.new
  122.       @gold_window.x = Graphics.width - @gold_window.width
  123.       @gold_window.y = 0
  124.       @help_window.width = Graphics.width - @gold_window.width
  125.     else
  126.       @gold_window = Window_Currencies_Repair.new
  127.       @gold_window.x = Graphics.width - @gold_window.width
  128.       @gold_window.y = @help_window.height
  129.     end
  130.   end
  131.   #============================================================================
  132.   # Create cost (number) window
  133.   #============================================================================
  134.   def create_cost_window
  135.     wy = @command_window.y
  136.     wh = 160
  137.     @cost_window = Window_CurrencyNumber.new(50, wy, wh)
  138.     @cost_window.viewport = @viewport
  139.     @cost_window.hide
  140.     @cost_window.set_handler(:ok,     method(:on_number_ok))
  141.     @cost_window.set_handler(:cancel, method(:on_number_cancel))
  142.   end
  143.   #============================================================================
  144.   # Process item ok
  145.   #============================================================================
  146.   def on_item_ok
  147.     case @command_window.current_symbol
  148.     when :repair
  149.       cost = (item.max_durability - item.durability) * item.repair_point
  150.       if item.repair_currency == 0
  151.         if cost <= $game_party.gold
  152.           $game_party.lose_gold(item.repair_price)
  153.           item.repair
  154.           @gold_window.refresh
  155.           on_item_sound
  156.           activate_item_window
  157.           @item_window.refresh
  158.         else
  159.           Sound.play_cancel
  160.         end
  161.       else
  162.         if cost <= $game_party.currency[item.repair_currency]
  163.           $game_party.lose_gold(item.repair_price, item.repair_currency)
  164.           item.repair
  165.           @gold_window.refresh
  166.           on_item_sound
  167.           activate_item_window
  168.           @item_window.refresh
  169.         else
  170.           Sound.play_cancel
  171.         end
  172.       end
  173.     when :partial
  174.       if item.repair_currency == 0
  175.         @cost_window.set(item, item.max_durability - item.durability, item.repair_point, $game_party.gold)
  176.       else
  177.         @cost_window.set(item, item.max_durability - item.durability, item.repair_point, $game_party.currency[item.repair_currency])
  178.       end
  179.       @cost_window.show.activate
  180.     when :damage
  181.       if item.repair_currency == 0
  182.         @cost_window.set(item, item.durability, item.repair_point, $game_party.gold)
  183.       else
  184.         @cost_window.set(item, item.durability, item.repair_point, $game_party.currency[item.repair_currency])
  185.       end
  186.       @cost_window.show.activate
  187.     end
  188.   end
  189.   #============================================================================
  190.   # Process number ok
  191.   #============================================================================
  192.   def on_number_ok
  193.     case @command_window.current_symbol
  194.     when :partial
  195.       cost = @cost_window.number * item.repair_point
  196.       if item.repair_currency == 0
  197.         if cost <= $game_party.gold
  198.           item.partial_repair(@cost_window.number)
  199.           $game_party.lose_gold(cost)
  200.           on_item_sound
  201.           activate_item_window
  202.           @item_window.refresh
  203.           end_number_input
  204.         else
  205.           Sound.play_cancel
  206.           @cost_window.activate
  207.         end
  208.       else
  209.         if cost <= $game_party.currency[item.repair_currency]
  210.           item.partial_repair(@cost_window.number)
  211.           $game_party.lose_gold(cost, item.repair_currency)
  212.           on_item_sound
  213.           activate_item_window
  214.           @item_window.refresh
  215.           end_number_input
  216.         else
  217.           Sound.play_cancel
  218.           @cost_window.activate
  219.         end
  220.       end
  221.     when :damage
  222.       previous = item.repair_price
  223.       item.damage_durability(@cost_window.number)
  224.       current = item.repair_price
  225.       $game_party.gain_gold((current - previous)/2, item.repair_currency)
  226.       on_item_sound
  227.       activate_item_window
  228.       @item_window.refresh
  229.       end_number_input
  230.     end
  231.     @gold_window.refresh
  232.   end
  233.   #============================================================================
  234.   # Process number cancel
  235.   #============================================================================
  236.   def on_number_cancel
  237.     Sound.play_cancel
  238.     end_number_input
  239.     @item_window.refresh
  240.   end
  241.   #============================================================================
  242.   # Process end number input
  243.   #============================================================================
  244.   def end_number_input
  245.     @cost_window.hide
  246.     @gold_window.refresh
  247.     on_item_sound
  248.     activate_item_window
  249.     @item_window.refresh
  250.   end
  251.   #============================================================================
  252.   # Process item cancel
  253.   #============================================================================
  254.   def on_item_cancel
  255.     @item_window.unselect
  256.     @item_window.deactivate
  257.     @command_window.activate
  258.     @help_window.set_text('')
  259.     @item_window.equip_damage = false
  260.     @item_window.partial_repair = false
  261.     @cost_window.damage_price = false
  262.     @item_window.refresh
  263.   end
  264.   #============================================================================
  265.   # Command for Partial repair
  266.   #============================================================================
  267.   def command_partial
  268.     @item_window.partial_repair = true
  269.     @command_window.deactivate
  270.     @item_window.activate
  271.     @item_window.refresh
  272.     @item_window.select(0)
  273.   end
  274.   #============================================================================
  275.   # Command for Damage item
  276.   #============================================================================
  277.   def command_damage
  278.     @item_window.equip_damage = true
  279.     @cost_window.damage_price = true
  280.     @command_window.deactivate
  281.     @item_window.activate
  282.     @item_window.refresh
  283.     @item_window.select(0)
  284.   end
  285. end
  286.  
  287. #==============================================================================
  288. # ■ Window_Help - adjusted for currencies window
  289. #==============================================================================
  290. class Window_Help < Window_Base
  291.   #============================================================================
  292.   # * Initialize. Adjust for Scene_Repair
  293.   #============================================================================
  294.   def initialize(line_number = 2)
  295.     if SceneManager.scene_is?(Scene_RepairEquip)
  296.       if Clstn_Currencies::CURRCNT >= 10
  297.         super(0, 0, 544 - 160, fitting_height(line_number))
  298.       else
  299.         super(0, 0, Graphics.width, fitting_height(line_number))
  300.       end
  301.     else
  302.       super(0, 0, Graphics.width, fitting_height(line_number))
  303.     end
  304.   end
  305. end
  306. #==============================================================================
  307. # ■ Window_ShopNumber
  308. #==============================================================================
  309. class Window_CurrencyNumber < Window_Selectable
  310.   attr_accessor :damage_price
  311.   attr_reader   :number                   # quantity entered
  312.   #--------------------------------------------------------------------------
  313.   # * Object Initialization
  314.   #--------------------------------------------------------------------------
  315.   def initialize(x, y, height)
  316.     super(x, y, window_width, height)
  317.     @item = nil
  318.     @max = 1
  319.     @price = 0
  320.     @number = 1
  321.     @currency_unit = Vocab::currency_unit
  322.   end
  323.   #--------------------------------------------------------------------------
  324.   # * Get Window Width
  325.   #--------------------------------------------------------------------------
  326.   def window_width
  327.     return 304
  328.   end
  329.   #--------------------------------------------------------------------------
  330.   # * Set Item, Max Quantity, Price, and Currency Unit
  331.   #--------------------------------------------------------------------------
  332.   def set(item, max, price, currency_unit = nil)
  333.     @item = item
  334.     @max = max
  335.     @price = price
  336.     @currency_unit = currency_unit if currency_unit
  337.     @number = 1
  338.     refresh
  339.   end
  340.   #--------------------------------------------------------------------------
  341.   # * Set Currency Unit
  342.   #--------------------------------------------------------------------------
  343.   def currency_unit=(currency_unit)
  344.     @currency_unit = currency_unit
  345.     refresh
  346.   end
  347.   #--------------------------------------------------------------------------
  348.   # * Refresh
  349.   #--------------------------------------------------------------------------
  350.   def refresh
  351.     contents.clear
  352.     draw_item_name(@item, 0, item_y)
  353.     draw_number
  354.     draw_total_price
  355.   end
  356.   #--------------------------------------------------------------------------
  357.   # * Draw Quantity
  358.   #--------------------------------------------------------------------------
  359.   def draw_number
  360.     change_color(normal_color)
  361.     draw_text(cursor_x - 28, item_y, 22, line_height, "×")
  362.     draw_text(cursor_x, item_y, cursor_width - 4, line_height, @number, 2)
  363.   end
  364.   #--------------------------------------------------------------------------
  365.   # * Y Coordinate of Item Name Display Line
  366.   #--------------------------------------------------------------------------
  367.   def item_y
  368.     contents_height / 2 - line_height * 3 / 2
  369.   end
  370.   #--------------------------------------------------------------------------
  371.   # * Y Coordinate of Price Display Line
  372.   #--------------------------------------------------------------------------
  373.   def price_y
  374.     contents_height / 2 + line_height / 2
  375.   end
  376.   #--------------------------------------------------------------------------
  377.   # * Get Cursor Width
  378.   #--------------------------------------------------------------------------
  379.   def cursor_width
  380.     figures * 10 + 12
  381.   end
  382.   #--------------------------------------------------------------------------
  383.   # * Get X Coordinate of Cursor
  384.   #--------------------------------------------------------------------------
  385.   def cursor_x
  386.     contents_width - cursor_width - 4
  387.   end
  388.   #--------------------------------------------------------------------------
  389.   # * Get Maximum Number of Digits for Quantity Display
  390.   #--------------------------------------------------------------------------
  391.   def figures
  392.     return 2
  393.   end
  394.   #--------------------------------------------------------------------------
  395.   # * Frame Update
  396.   #--------------------------------------------------------------------------
  397.   def update
  398.     super
  399.     if active
  400.       last_number = @number
  401.       update_number
  402.       if @number != last_number
  403.         Sound.play_cursor
  404.         refresh
  405.       end
  406.     end
  407.   end
  408.   #--------------------------------------------------------------------------
  409.   # * Update Quantity
  410.   #--------------------------------------------------------------------------
  411.   def update_number
  412.     change_number(1)   if Input.repeat?(:RIGHT)
  413.     change_number(-1)  if Input.repeat?(:LEFT)
  414.     change_number(10)  if Input.repeat?(:UP)
  415.     change_number(-10) if Input.repeat?(:DOWN)
  416.   end
  417.   #--------------------------------------------------------------------------
  418.   # * Change Quantity
  419.   #--------------------------------------------------------------------------
  420.   def change_number(amount)
  421.     @number = [[@number + amount, @max].min, 1].max
  422.   end
  423.   #--------------------------------------------------------------------------
  424.   # * Update Cursor
  425.   #--------------------------------------------------------------------------
  426.   def update_cursor
  427.     cursor_rect.set(cursor_x, item_y, cursor_width, line_height)
  428.   end
  429.   #============================================================================
  430.   # Draw the total cost for repair
  431.   #============================================================================
  432.   def draw_total_price
  433.     width = contents_width - 8
  434.     if SceneManager.scene_is?(Scene_RepairEquip)
  435.       icon_index = Clstn_Currencies::Currencies[@item.repair_currency][0]
  436.     else
  437.       icon_index = Clstn_Currencies::Currencies[$game_temp.currency_index][0]
  438.     end
  439.     icon = draw_icon(icon_index, 260, 70)
  440.     if SceneManager.scene_is?(Scene_RepairEquip)
  441.       if @damage_price
  442.         cost_cut = @item.repair_point / 2
  443.         draw_currency_value(cost_cut * @number, nil, -15, price_y, width)
  444.       else
  445.         draw_currency_value(@item.repair_point * @number, nil, -15, price_y, width)
  446.       end
  447.     else
  448.       draw_currency_value(@price * @number, @currency_unit, 4, price_y, width)
  449.     end
  450.   end
  451.   def damage_price
  452.     @damage_price
  453.   end
  454. end
  455.  
  456. #==============================================================================
  457. # ■ Window_EquipRepair
  458. #==============================================================================
  459. class Window_EquipRepair < Window_ItemList
  460.   attr_accessor :equip_damage
  461.   attr_accessor :partial_repair
  462.   #============================================================================
  463.   # Is the item enabled?
  464.   #============================================================================
  465.   def enable?(item)
  466.     return true if item.is_a?(RPG::EquipItem) && item.can_repair? &&
  467.     $game_party.gold >=  item.repair_price if item.repair_currency == 0
  468.     return true if item.is_a?(RPG::EquipItem) && item.can_repair? &&
  469.     $game_party.currency[item.repair_currency] >=  item.repair_price if item.repair_currency >= 1
  470.     return true if @equip_damage
  471.     return true if @partial_repair && item.can_repair? &&
  472.     $game_party.gold >= item.repair_point if item.repair_currency == 0
  473.     return true if @partial_repair && item.can_repair? &&
  474.     $game_party.currency[item.repair_currency] >= item.repair_point if item.repair_currency >= 1
  475.     return false
  476.   end
  477.   #============================================================================
  478.   # Command for Damage item
  479.   #============================================================================
  480.   def equip_damage
  481.     @equip_damage
  482.   end
  483.   #============================================================================
  484.   # Command for Partial repair of item
  485.   #============================================================================
  486.   def partial_repair
  487.     @partial_repair
  488.   end
  489.   #============================================================================
  490.   # * Draw Item Name
  491.   #============================================================================
  492.   def draw_item_name(item, x, y, enabled = true, width = 172)
  493.     return unless item
  494.     if SceneManager.scene_is?(Scene_RepairEquip)
  495.       icon_index = Clstn_Currencies::Currencies[item.repair_currency][0]
  496.     else
  497.       icon_index = Clstn_Currencies::Currencies[$game_temp.currency_index][0]
  498.     end
  499.     if TH_Instance::Scene_Repair::Draw_Currency_Icon
  500.       draw_icon(icon_index, x, y, enabled)
  501.     else
  502.       draw_icon(item.icon_index, x, y, enabled)
  503.     end
  504.     change_color(normal_color, enabled)
  505.     draw_text(x + 24, y, width, line_height, item.name)
  506.   end
  507.   #============================================================================
  508.   # Update help for items selected
  509.   #============================================================================
  510.    def update_help
  511.     unless item
  512.       @help_window.set_text(TH_Instance::Scene_Repair::No_Selected_Item)
  513.     else
  514.       base_cost = item.base_cost
  515.       if item.repair_price.zero?
  516.         if equip_damage
  517.           base_cost = base_cost / 2
  518.           @help_window.set_text(TH_Instance::Scene_Repair::Damage_Item + base_cost.to_s + " for each point")
  519.         else
  520.           @help_window.set_text(TH_Instance::Scene_Repair::Can_Not_Repair)
  521.         end
  522.       else
  523.         if partial_repair          
  524.           @help_window.set_text(TH_Instance::Scene_Repair::Selected_Item + base_cost.to_s + " for each point")
  525.         elsif equip_damage
  526.           base_cost = base_cost / 2
  527.           @help_window.set_text(TH_Instance::Scene_Repair::Damage_Item + base_cost.to_s + " for each point")
  528.         else
  529.           if SceneManager.scene_is?(Scene_RepairEquip)
  530.             icon_index = Clstn_Currencies::Currencies[item.repair_currency][0]
  531.           else
  532.             icon_index = Clstn_Currencies::Currencies[$game_temp.currency_index][0]
  533.           end
  534.           @help_window.set_text(TH_Instance::Scene_Repair::Selected_Item + item.repair_price.to_s)
  535.         end
  536.       end
  537.     end
  538.   end
  539.   #============================================================================
  540.   # Include
  541.   #============================================================================
  542.   def include?(item)
  543.     !item.is_a?(RPG::Item) && !item.nil? && item.use_durability
  544.   end
  545. end
  546.  
  547. #==============================================================================
  548. # ■ Window_Currencies_Repair
  549. #==============================================================================
  550. class Window_Currencies_Repair < Window_Selectable
  551.  
  552.   #============================================================================
  553.   # * Initialize
  554.   #============================================================================
  555.   def initialize
  556.       ww = 160
  557.       wh = Graphics.height
  558.       wx = Graphics.width - ww
  559.     if Clstn_Currencies::CURRCNT >= 10
  560.       wy = 0
  561.       super(wx, wy, ww, wh)
  562.     else
  563.       wy = 72
  564.       wh = Graphics.height - 72
  565.       super(wx, wy, ww, wh)
  566.     end
  567.     refresh
  568.   end
  569.   #============================================================================
  570.   # * Method: value
  571.   #============================================================================
  572.   def value(currency_index = $game_temp.currency_index)
  573.     if currency_index == 0
  574.       $game_party.gold
  575.     else
  576.       $game_party.currency[currency_index]
  577.     end
  578.   end
  579.   #============================================================================
  580.   # * Method: refresh
  581.   #============================================================================
  582.   def refresh
  583.     contents.clear
  584.     change_color(text_color(6))
  585.     draw_text(30, -4, 100, 30,"Currencies")
  586.     draw_horz_line(0, 6)
  587.     draw_horz_line(3, 6)
  588.     i = 0
  589.     Clstn_Currencies::Currencies.each_value { |hash|
  590.       icon_index = hash[0]
  591.       draw_horz_line(37 + (32 * i), 0)
  592.       currency_unit = draw_icon(icon_index, 110, 32 + (32 * i))
  593.       draw_currency_value(value(i), currency_unit, -19, 33 + (32 * i), contents.width - 8)
  594.       i += 1
  595.     }
  596.   end
  597.   #============================================================================
  598.   # * Method: draw_horz_line
  599.   #============================================================================
  600.   def draw_horz_line(dy, color)
  601.     color = text_color(color)
  602.     line_y = dy + line_height - 4
  603.     contents.fill_rect(4, line_y, contents_width - 8, 3, Font.default_out_color)
  604.     contents.fill_rect(5, line_y + 1, contents_width - 10, 1, color)
  605.   end
  606. end
  607. #==============================================================================
  608. # ■ Weapon specify settings
  609. #==============================================================================
  610. class RPG::Weapon
  611.   #============================================================================
  612.   # Partial Repair. for repairing equipment a small amount
  613.   #============================================================================
  614.   def partial_repair(amount = 0)
  615.     @durability += amount
  616.     @durability = max_durability if @durability > max_durability
  617.     refresh_name
  618.     refresh_price
  619.   end
  620.   #============================================================================
  621.   # Damage_Durability
  622.   #============================================================================
  623.   def damage_durability(amount = 0)
  624.     @durability -= amount
  625.     @durability = 0 if @durability < 0
  626.     refresh_name
  627.     refresh_price
  628.   end
  629.   #============================================================================
  630.   # Repair point - finds cost of repairing one point
  631.   #============================================================================
  632.   def repair_point
  633.     adjust = max_durability - @durability
  634.     return @price / 100 if adjust == 0
  635.     return ((@non_durability_price - @price) / adjust).to_i
  636.   end
  637.   #============================================================================
  638.   # Base Cost of repair
  639.   #============================================================================
  640.   def base_cost
  641.     return @non_durability_price / @max_durability
  642.   end
  643.   #============================================================================
  644.   # Repair Currency. Determine Calestians currency or use gold
  645.   #============================================================================
  646.   def repair_currency
  647.     @note =~ /<repair[-_ ]?currency:\s*(.*)\s*>/i ? @repair_currency = $1.to_i : @repair_currency = 0
  648.     @repair_currency
  649.   end
  650. end
  651. #==============================================================================
  652. # ■ Armor specify settings
  653. #==============================================================================
  654. class RPG::Armor
  655.   #============================================================================
  656.   # Partial Repair. for repairing equipment a small amount
  657.   #============================================================================
  658.   def partial_repair(amount = 0)
  659.     @durability += amount
  660.     @durability = max_durability if @durability > max_durability
  661.     refresh_name
  662.     refresh_price
  663.   end
  664.   #============================================================================
  665.   # Damage_Durability
  666.   #============================================================================
  667.   def damage_durability(amount = 0)
  668.     @durability -= amount
  669.     @durability = 0 if @durability < 0
  670.     refresh_name
  671.     refresh_price
  672.   end
  673.   #============================================================================
  674.   # Repair point - finds cost of repairing one point
  675.   #============================================================================
  676.   def repair_point
  677.     adjust = max_durability - @durability
  678.     return @price / 100 if adjust == 0
  679.     return ((@non_durability_price - @price) / adjust).to_i
  680.   end
  681.   #============================================================================
  682.   # Base Cost of repair
  683.   #============================================================================
  684.   def base_cost
  685.     return @non_durability_price / @max_durability
  686.   end
  687.   #============================================================================
  688.   # Repair Currency. Determine Calestians currency or use gold
  689.   #============================================================================
  690.   def repair_currency
  691.     @note =~ /<repair[-_ ]?currency:\s*(.*)\s*>/i ? @repair_currency = $1.to_i : @repair_currency = 0
  692.     @repair_currency
  693.   end
  694. end
  695.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement