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 already applied the fix outlined here: https://forums.rpgmakerweb.com/inde...th-himes-untargetable-state-script-ace.68964/
and here:
Untargetable State Issue (Resolved) · Issue #14 · Hime-Works/Requests
But I am STILL crashing with error whenever I use an item
Protected download
This is the script that I am using
=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, then follow the RPG Maker Developers Group to see these download links.
Log in to downloadLicense / 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
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.
Replies (0)
No replies yet.
Topic Summary
Loading summary...
