Save-Point
Battle Item Count - Printable Version

+- Save-Point (https://www.save-point.org)
+-- Forum: Material Development (https://www.save-point.org/forum-8.html)
+--- Forum: Scripts Database (https://www.save-point.org/forum-39.html)
+---- Forum: RPGMaker XP (RGSS) Engine (https://www.save-point.org/forum-116.html)
+---- Thread: Battle Item Count (/thread-8856.html)



Battle Item Count - kyonides - 11-18-2023

Battle Item Count XP

by Kyonides

Introduction

Thinking Do you need to update the number of potions or elixirs currently available for the next couple of actors during battle?
Confused Or were you in need of canceling your previous actor's action to change the item the actor is going to consume next?
Then this scriptlet is for you! Grinning

XP Script

Code:
# * Battle Item Count XP * #
#  Plug & Play Script
#  Scripter : Kyonides Arkanthes
#  v1.0.4 - 2024-02-03

# The scriptlet updates the number of available items every single time you pick
# one or go back to the prior actor in battle.

# Warning: Overwritten Method Window_Item#draw_item

class Game_Party
  def clear_battle_items
    @actors.each {|m| m.current_action.clear }
  end

  def actors_battle_items
    @actors.map {|m| m.current_action.item_id }
  end

  def battle_item_number(item_id)
    return item_number(item_id) unless $game_temp.in_battle
    battle_items = actors_battle_items.select {|bit_id| item_id == bit_id }
    item_number(item_id) - battle_items.size
  end
end

class Window_Item
  alias :kyon_btl_itm_cnt_win_itm_ref :refresh
  def refresh
    @battle_items = {}
    @battle_items.default = 99
    kyon_btl_itm_cnt_win_itm_ref
  end

  def find_number(item_id)
    case item
    when RPG::Item
      $game_party.battle_item_number(item_id)
    when RPG::Weapon
      $game_party.weapon_number(item_id)
    when RPG::Armor
      $game_party.armor_number(item_id)
    end
  end

  def enable?(item)
    return unless item.is_a?(RPG::Item)
    $game_party.item_can_use?(item.id) and @battle_items[item.id] > 0
  end
 
  def draw_item(index)
    item = @data[index]
    number = find_number(item.id)
    @battle_items[item.id] = number
    enabled = enable?(item)
    self.contents.font.color = enabled ? normal_color : disabled_color
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = enabled ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
    self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
    self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  end

  def battle_item_none?
    @battle_items[self.item.id] == 0
  end
end

class Scene_Battle
  alias :kyon_btl_itm_cnt_scn_btl_ph3_prr_act :phase3_prior_actor
  alias :kyon_btl_itm_cnt_scn_btl_up_ph3_itm_sel :update_phase3_item_select
  def turn_decrease_item_count
    @active_battler.current_action.clear if @active_battler
  end

  def phase3_prior_actor
    turn_decrease_item_count
    kyon_btl_itm_cnt_scn_btl_ph3_prr_act
    turn_decrease_item_count
  end

  def update_phase3_item_select
    if Input.trigger?(Input::C) and @item_window.battle_item_none?
      return $game_system.se_play($data_system.buzzer_se)
    end
    kyon_btl_itm_cnt_scn_btl_up_ph3_itm_sel
  end
end

Terms & Conditions

Free for use in ANY game. Gamer
Due credit is mandatory. Serious
Mention this forum as well! Grinning
That's it! Tongue sticking out


RE: Battle Item Count VX - kyonides - 01-06-2024

Bug Fix Available!

After receiving a weird report concerning the item selection process, I started working on the issue described there and found out that I just needed to move the cancellation of the item counter to another method. Now it works as first intended. Winking


RE: Battle Item Count VX - kyonides - 01-24-2024

Second Bug Fix Available!

I had to revisit my code a second time and I noticed that I might have skipped an actor when clearing the item count. Who could it be? Happy with a sweat Well, it'd be the last actor selected by the player for sure.

Now it should only trigger the buzzer SE when you truly picked the last available item in your party's bag. Winking


RE: Battle Item Count - kyonides - 01-26-2024

VX ACE, You Have Not Been Forgotten!

From now on, all VX ACE users can take advantage of this easy-to-use battle item count script.
Grinning Yes guys, it's fully Cylon automated just like its elder sibling.


RE: Battle Item Count - kyonides - 02-04-2024

Minor Bug Fix Has Arrived!

I had not noticed before how heroes could easily select any given item even after the item counter had hit the 0 limit. Version 1.0.4 gets rid of this exploitable bug for good. Winking

By the way, my fellow RMXP users, the script has been ported to RGSS1 as well! Two Thumbs Up!