public

Rpg Maker Developers Group

Simple enough for a child, powerful enough for a developer

2 Followers

Crash with Hime Untargetable State whenever I use an item! Please Help!

BMM Archive · July 15, 2026

Preserved forum archive. This topic stores the original first post and locally mirrored RPG Maker Web attachments when available. It is posted by the BMMPlay archive account, not by the original creator.

Original Source

  • Original title: Crash with Hime Untargetable State whenever I use an item! Please Help!
  • Original author: MoltresRider
  • Original date: April 29, 2023
  • Source thread: https://forums.rpgmakerweb.com/threads/crash-with-hime-untargetable-state-whenever-i-use-an-item-please-help.157055/
  • Source forum path: Game Development Engines > Ruby Game System (RGSS) Scripts > RGSSx Script Support

Summary

4 · Hime-Works/Requests Another issue to report. I couldn't say if its this specific script, or something the script touches in another of the many scripts I am using, but I do know that removing this script from the list... github.com But I am STILL crashing with error whenever I use an item

Archived First Post

I know that this has been posted before but my issue is different.

I already applied the fix outlined here: https://forums.rpgmakerweb.com/inde...th-himes-untargetable-state-script-ace.68964/

and here:
But I am STILL crashing with error whenever I use an item
Protected download

This is the script that I am using
Code:
=begin
#===============================================================================
 Title: Untargetable State
 Author: Hime
 Date: Sep 25, 2015
--------------------------------------------------------------------------------
 ** Change log
 Sep 25, 2015
   - when selecting actors, the correct actor index needs to be provided
 Oct 17, 2013
   - compatiblity patch with yanfly's Ace Battle Engine
 Jun 7, 2013
   - bug fix: game crashes when there are no valid targets
 May 29, 2013
   - fixed bug where enemies that are hidden appear in the target window
 May 25, 2013
   - added support for untargetable actors
   - Initial release
--------------------------------------------------------------------------------   
 ** Terms of Use
 * Free to use in non-commercial projects
 * Contact me for commercial use
 * No real support. The script is provided as-is
 * Will do bug fixes, but no compatibility patches
 * Features may be requested but no guarantees, especially if it is non-trivial
 * Credits to Hime Works in your project
 * Preserve this header
--------------------------------------------------------------------------------
 ** Description
 
 This script allows you to create a state that prevents you from targeting
 a battler. When the state is applied, the battler cannot be targeted or
 affected by any skills or items.
 
--------------------------------------------------------------------------------
 ** Installation
 
 Place this script below Materials and above Main
 
--------------------------------------------------------------------------------
 ** Usage
 
 In the configuration below, enter the ID's of all states that should have the
 untargetable property
 
--------------------------------------------------------------------------------
 ** Compatibility
 
 This script overwrites the following
 
   Window_BattleEnemy
     item_max
     enemy
     draw_item
 
#===============================================================================
=end
$imported = {} if $imported.nil?
$imported["TH_UntargetableState"] = true
#===============================================================================
# ** Configuration
#===============================================================================
module TH
  module Untargetable_State
    
    # List of state ID's that will have untargetable effect
    States = [20]
  end
end
#===============================================================================
# ** Rest of script
#===============================================================================
class Game_Action
 
  alias :th_untargetable_state_make_targets :make_targets
  def make_targets
    th_untargetable_state_make_targets.select {|target| target && target.can_target? }
  end
end

class Game_Battler < Game_BattlerBase
  def can_target?
    return false if untargetable_state?
        return false unless exist?
    return true
  end
 
  #-----------------------------------------------------------------------------
  # Check if untargetable state is applied
  #-----------------------------------------------------------------------------
  def untargetable_state?
    !(@states & TH::Untargetable_State::States).empty?
  end
end

class Game_Enemy < Game_Battler
 
  #-----------------------------------------------------------------------------
  # Lots of hardcoded conditions based on default scripts
  #-----------------------------------------------------------------------------
  alias :th_untargetable_state_can_target? :can_target?
  def can_target?
    return false if dead?
    th_untargetable_state_can_target?
  end
end

class Game_Unit
 
  #-----------------------------------------------------------------------------
  # New. Return an array of battlers that can be targeted
  #-----------------------------------------------------------------------------
  def targetable_members
    members.select {|member| member.can_target? }
  end
end

#-------------------------------------------------------------------------------
# Updated to only draw enemies that can be selected.
# Basically replaces everything
#-------------------------------------------------------------------------------
class Window_BattleEnemy < Window_Selectable
  def item_max
    $game_troop.targetable_members.size
  end
 
  def enemy
    $game_troop.targetable_members[@index]
  end
 
  def draw_item(index)
    change_color(normal_color)
    name = $game_troop.targetable_members[index].name
    draw_text(item_rect_for_text(index), name)
  end
 
  alias :th_untargetable_state_current_item_enabled? :current_item_enabled?
  def current_item_enabled?
    return false if $game_troop.targetable_members[@index].nil?
    th_untargetable_state_current_item_enabled?
  end
end

#-------------------------------------------------------------------------------
# Updated to only draw actors that can be selected.
# Basically replaces everything
#-------------------------------------------------------------------------------
class Window_BattleActor < Window_BattleStatus
 
  def actor_index
    $game_party.targetable_members[@index].ID
  end
 
  def item_max
    $game_party.targetable_members.size
  end
 
  def draw_item(index)
    actor = $game_party.targetable_members[index]
    draw_basic_area(basic_area_rect(index), actor)
    draw_gauge_area(gauge_area_rect(index), actor)
  end
 
  alias :th_untargetable_state_current_item_enabled? :current_item_enabled?
  def current_item_enabled?
    return false if $game_party.targetable_members[index].nil?
    th_untargetable_state_current_item_enabled?
  end
end


class Scene_Battle < Scene_Base
 
  # Overwrite. Need the proper index of the selected actor.
  def on_actor_ok
    BattleManager.actor.input.target_index = @actor_window.actor_index
    @actor_window.hide
    @skill_window.hide
    @item_window.hide
    next_command
  end
end

if $imported["YEA-BattleEngine"]
  class Window_BattleActor < Window_BattleStatus
    def draw_item(index)
      return if index.nil?
      clear_item(index)
      actor = $game_party.targetable_members[index] ### changed this
      rect = item_rect(index)
      return if actor.nil?
      draw_actor_face(actor, rect.x+2, rect.y+2, actor.alive?)
      draw_actor_name(actor, rect.x, rect.y, rect.width-8)
      draw_actor_action(actor, rect.x, rect.y)
      draw_actor_icons(actor, rect.x, line_height*1, rect.width)
      gx = YEA::BATTLE::BATTLESTATUS_HPGAUGE_Y_PLUS
      contents.font.size = YEA::BATTLE::BATTLESTATUS_TEXT_FONT_SIZE
      draw_actor_hp(actor, rect.x+2, line_height*2+gx, rect.width-4)
      if draw_tp?(actor) && draw_mp?(actor)
        dw = rect.width/2-2
        dw += 1 if $imported["YEA-CoreEngine"] && YEA::CORE::GAUGE_OUTLINE
        draw_actor_tp(actor, rect.x+2, line_height*3, dw)
        dw = rect.width - rect.width/2 - 2
        draw_actor_mp(actor, rect.x+rect.width/2, line_height*3, dw)
      elsif draw_tp?(actor) && !draw_mp?(actor)
        draw_actor_tp(actor, rect.x+2, line_height*3, rect.width-4)
      else
        draw_actor_mp(actor, rect.x+2, line_height*3, rect.width-4)
      end
    end
  end
end

The error seems to be coming from the same line that the other thread said was the fix

Does anybody know what the problem could be and how to fix it?

Downloads / Referenced Files

Log in to download

Log in, then follow the RPG Maker Developers Group to see these download links.

Log in to download

License / Terms Note

** Terms of Use * Free to use in non-commercial projects * Contact me for commercial use * No real support. The script is provided as-is

Referenced Images / Attachments

Capture.JPG
Capture.JPG
Creator Claims / Removal

If you are the original creator and want this listing reassigned, edited, or removed, join BMMPlay and contact the moderators with proof that matches the original RPG Maker Web profile, linked GitHub, itch.io page, or another public creator identity.

#039#14#rpg-maker-archive#rgss-support

Replies (0)

No replies yet.

0 replies 1 view

Log in to reply.

User Avatar