Scan skill should show states - Tumen - 04-30-2017
Greetings, happy that I've refound this Forum :)
I have a problem/request on a little scriptie that us troubling me.
Its regarding a Scan skill script from Atoas acbs. It analyses the HP/SP, lvl, STR,AGI,DEX,INT, elemental weakness when used on an enemy. Only problem I have is that the script doesnt analyses the states weakness of the enemy like if its weak or immune against poison, blind. Whats gives me bigger headache is that the negative states in my game are not in a direct order. It would be very good wise if I could actually chose which states should be displayed and which not. Also since I've many states It would be useful if its would be possible to display many states. It would'nt disturb me at all if the scan window would fully cover the screen.
So, my question is actually if its possible to edit the script like explained above. :))
Code: #==============================================================================
# Skill Scan
# By Atoa
#==============================================================================
# With this you can create an 'scan' skill
# wich allows you to check enemy status.
#==============================================================================
module Atoa
# ID of the scan skills
Scan_Skills_ID = [109]
# Enemies that can't be scanned
No_Scan_Enemies = []
# Scan text font size
Scan_Window_Font_Size = 18
# Scan_Window_Settings = [Position X, Position Y, Width, Height, Opacity, Trasparent Edge]
Scan_Window_Settings = [0 , 0, 352, 320, 160, false]
# Image filename for window background, must be on the Windowskin folder
Scan_Window_Bg = ''
# Position of the backgroun image
# Party_Command_Window_Bg_Postion = [Position X, Position Y]
Scan_Window_Bg_Postion = [0 , 0]
# Information shown in the window
Scan_Infos = ['name', 'level', 'class', 'hp', 'sp', 'status', 'exp', 'element']
# Add the name of the info you wish to show
# 'name' = Shows target name
# 'level' = Shows target level, for enemies check 'Scan_Enemy_Level'
# 'class' = Shows target class, for enemies check 'Scan_Enemy_Class'
# 'hp' = Shows target HP
# 'sp' = Shows target SP
# 'status = Shows target Status
# 'exp' = Shows Exp given by target
# 'elements' = Shows target elemental resistance
# Postion of target name in the window
Scan_Name_Postion = [0,0]
# Postion of target hp in the window
Scan_Hp_Postion = [0,52]
# Postion of target sp in the window
Scan_Sp_Postion = [0,76]
# Postion of target exp in the window
Scan_Exp_Postion = [184,0]
# Postion of target status in the window
Scan_Status_Postion = [0,104]
# Status shown
Scan_Status_Shown = ['atk','pdef','mdef','str','dex','int','agi']
# Add here the name of the status you wish to show:
# 'atk','pdef','mdef','str','dex','int','agi'
# Distance between the status name and the value
Scan_Status_Distance = 96
# Postion of target level in the window
Scan_Level_Postion = [128,0]
# Enemies level, this have no influence in the enemy power, it's just
# the value shown in the scan window
# Scan_Enemy_Level = {Enemy_ID => Level}
Scan_Enemy_Level = {1 => 1}
# Postion of target class in the window
Scan_Class_Postion = [0,24]
# Enemies class, this have no influence in the enemy power, it's just
# the value shown in the scan window
# Scan_Enemy_Class = {Enemy_ID => Class}
Scan_Enemy_Class = {1 => 'Undead'}
# Postion of target elemental resistance in the window
Scan_Element_Position = [196,64]
# Max number of elements shown in a column, max value = 8
Scan_Max_Elements_Shown = 8
# Exhibition of elemental resistance
Scan_Element_Resists_Exhibition = 0
# 0 = custom exhibition
# 1 = exhibition by numbers, value shows target resistance
# 2 = exhibition by numbers, value damage multiplication
# Elemental resist text if 'Element_Resists_Exhibition = 0'
Scan_Element_Resist = ['Weakest','Weak','Normal','Resist','Imune','Absorb']
# Configuration of the elemental resist text color
# red blue green
Scan_Weakest_Color = Color.new(255, 0, 0)
Scan_Weak_Color = Color.new(255, 128, 64)
Scan_Neutral_Color = Color.new(255, 255, 255)
Scan_Resist_Color = Color.new( 0, 128, 255)
Scan_Imune_Color = Color.new( 0, 255, 255)
Scan_Absorb_Color = Color.new( 0, 255, 0)
end
#==============================================================================
# ** Atoa Module
#==============================================================================
$atoa_script = {} if $atoa_script.nil?
$atoa_script['Atoa Scan'] = true
#==============================================================================
# ** Game_Battler
#------------------------------------------------------------------------------
# This class deals with battlers. It's used as a superclass for the Game_Actor
# and Game_Enemy classes.
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :target_scan
attr_accessor :scan_count
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
alias initialize_scan initialize
def initialize
initialize_scan
@target_scan = []
@scan_count = 0
end
end
#==============================================================================
# ** Game_Enemy
#------------------------------------------------------------------------------
# This class handles enemies. It's used within the Game_Troop class
# ($game_troop).
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :level
attr_accessor :class_name
#--------------------------------------------------------------------------
# * Get level
#--------------------------------------------------------------------------
def level
return Scan_Enemy_Level[@enemy_id] if Scan_Enemy_Level.include?(@enemy_id)
return 1
end
#--------------------------------------------------------------------------
# Definir nome da Classe
#--------------------------------------------------------------------------
def class_name
return Scan_Enemy_Class[@enemy_id] if Scan_Enemy_Class.include?(@enemy_id)
return ''
end
end
#==============================================================================
# ** Window_Scan
#------------------------------------------------------------------------------
# This window shows enemy information
#==============================================================================
class Window_Scan < Window_Base
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :battler
#--------------------------------------------------------------------------
# * Object Initialization
# battler : battler
#--------------------------------------------------------------------------
def initialize(battler)
x,y = Scan_Window_Settings[0], Scan_Window_Settings[1]
w,h = Scan_Window_Settings[2], Scan_Window_Settings[3]
super(x,y,w,h)
self.contents = Bitmap.new(width - 32, height - 32)
self.z = 4950
if Scan_Window_Bg != nil
@background_image = Sprite.new
@background_image.bitmap = RPG::Cache.windowskin(Scan_Window_Bg)
@background_image.x = self.x + Scan_Window_Bg_Postion[0]
@background_image.y = self.y + Scan_Window_Bg_Postion[1]
@background_image.z = self.z - 1
@background_image.visible = self.visible
end
self.back_opacity = Scan_Window_Settings[4]
self.opacity = Scan_Window_Settings[4] if Scan_Window_Settings[5]
@battler = battler
refresh
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
super
@background_image.dispose if @background_image != nil
end
#--------------------------------------------------------------------------
# * Window visibility
# n : opacity
#--------------------------------------------------------------------------
def visible=(n)
super
@background_image.visible = n if @background_image != nil
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.size = Scan_Window_Font_Size
fake = (No_Scan_Enemies.include?(@battler.id) and not @battler.actor?)
if Scan_Infos.include?('name')
draw_actor_name(@battler, Scan_Name_Postion[0], Scan_Name_Postion[1])
end
if Scan_Infos.include?('class')
draw_actor_class(@battler, Scan_Class_Postion[0], Scan_Class_Postion[1])
end
if Scan_Infos.include?('element')
draw_element_resist(@battler, Scan_Element_Position[0], Scan_Element_Position[1])
end
if Scan_Infos.include?('level')
draw_actor_level(@battler, Scan_Level_Postion[0], Scan_Level_Postion[1], fake)
end
if Scan_Infos.include?('hp')
draw_actor_hp(@battler, Scan_Hp_Postion[0], Scan_Hp_Postion[1], 160, fake)
end
if Scan_Infos.include?('sp')
draw_actor_sp(@battler, Scan_Sp_Postion[0], Scan_Sp_Postion[1], 160, fake)
end
if Scan_Infos.include?('status')
for i in 0...Scan_Status_Shown.size
draw_actor_parameter(@battler, Scan_Status_Postion[0],
Scan_Status_Postion[1] + i * (Scan_Window_Font_Size + 2), Scan_Status_Shown[i],
Scan_Status_Distance, fake)
end
end
if Scan_Infos.include?('exp') and not @battler.actor?
x, y = Scan_Exp_Postion[0], Scan_Exp_Postion[1]
self.contents.draw_text(x, y, 72, 32, 'Exp:')
exp = fake ? '?????' : @battler.exp.to_s
self.contents.draw_text(x, y, 128, 32, exp, 2)
end
end
#--------------------------------------------------------------------------
# * Draw Name
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_name(actor, x, y)
self.contents.font.size = Scan_Window_Font_Size
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 120, 32, actor.name)
end
#--------------------------------------------------------------------------
# * Draw Class
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_class(actor, x, y)
self.contents.font.size = Scan_Window_Font_Size
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 236, 32, actor.class_name)
end
#--------------------------------------------------------------------------
# * Draw Level
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_level(actor, x, y, fake = false)
self.contents.font.size = Scan_Window_Font_Size
self.contents.font.color = system_color
name='Nv'
size = contents.text_size(name).width
self.contents.draw_text(x, y, size + 4, 32, name)
self.contents.font.color = normal_color
level = fake ? '??' : actor.level.to_s
self.contents.draw_text(x + size, y, 24, 32, level, 2)
end
#--------------------------------------------------------------------------
# * Draw Parameter
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# type : parameter type
# w : width
# fake : hide parameter
#--------------------------------------------------------------------------
def draw_actor_parameter(actor, x, y, type, w = 132, fake = false)
case type
when 'atk'
parameter_name=%24data_system%2Ewords%2Eatk
parameter_value = actor.atk
when 'pdef'
parameter_name=%24data_system%2Ewords%2Epdef
parameter_value = actor.pdef
when 'mdef'
parameter_name=%24data_system%2Ewords%2Emdef
parameter_value = actor.mdef
when 'str'
parameter_name=%24data_system%2Ewords%2Estr
parameter_value = actor.str
when 'dex'
parameter_name=%24data_system%2Ewords%2Edex
parameter_value = actor.dex
when 'agi'
parameter_name=%24data_system%2Ewords%2Eagi
parameter_value = actor.agi
when 'int'
parameter_name=%24data_system%2Ewords%2Eint
parameter_value = actor.int
when 'eva'
parameter_name=Stat_Eva
parameter_value = actor.eva
when 'hit'
parameter_name=Stat_Hit
parameter_value = actor.hit
when 'crt'
parameter_name=Stat_Crt
parameter_value = actor.crt
when 'dmg'
parameter_name=Stat_Dmg
parameter_value = actor.dmg
when 'rcrt'
parameter_name=Stat_Res_Crt
parameter_value = actor.rcrt
when 'rdmg'
parameter_name=Stat_Res_Dmg
parameter_value = actor.rdmg
end
self.contents.font.size = Scan_Window_Font_Size
self.contents.font.color = system_color
self.contents.draw_text(x, y, w + 32, 32, parameter_name)
self.contents.font.color = normal_color
status = fake ? '???' : parameter_value.to_s
self.contents.draw_text(x + w, y, 64, 32, status, 2)
end
#--------------------------------------------------------------------------
# * Draw HP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
# fake : hide parameter
#--------------------------------------------------------------------------
def draw_actor_hp(actor, x, y, width = 144, fake = false)
self.contents.font.size = Scan_Window_Font_Size
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
self.contents.font.color = actor.hp == 0 ? knockout_color :
actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
hp_x = x + width - 108
hp = fake ? '????' : actor.hp.to_s
self.contents.draw_text(hp_x, y, 48, 32, hp, 2)
self.contents.font.color = normal_color
self.contents.draw_text(hp_x + 48, y, 12, 32, '/', 1)
self.contents.font.bold = true
maxhp = fake ? '????' : actor.maxhp.to_s
self.contents.draw_text(hp_x + 60, y, 48, 32, maxhp)
self.contents.font.bold = false
end
#--------------------------------------------------------------------------
# * Draw SP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
# fake : hide parameter
#--------------------------------------------------------------------------
def draw_actor_sp(actor, x, y, width = 144, fake = false)
self.contents.font.size = Scan_Window_Font_Size
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
self.contents.font.color = actor.sp == 0 ? knockout_color :
actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
sp_x = x + width - 108
sp = fake ? '????' : actor.sp.to_s
self.contents.draw_text(sp_x, y, 48, 32, sp, 2)
self.contents.font.color = normal_color
self.contents.draw_text(sp_x + 48, y, 12, 32, '/', 1)
self.contents.font.bold = true
maxsp = fake ? '????' : actor.maxsp.to_s
self.contents.draw_text(sp_x + 60, y, 48, 32, maxsp)
self.contents.font.bold = false
end
#--------------------------------------------------------------------------
# * Draw elemental resistance
# battler : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_element_resist(battler, x, y)
self.contents.font.size = Scan_Window_Font_Size
max_elment = [Scan_Max_Elements_Shown, 8].min
y = y + (200 - (max_elment * 25)) / 2
if battler.actor? and not $atoa_script['Atoa New Resistances']
elements = $data_classes[battler.class_id].element_ranks
elsif battler.actor? and $atoa_script['Atoa New Resistances']
elements = battler.elemental_resist
else
elements = $data_enemies[battler.id].element_ranks
end
base = value = 0
case Scan_Element_Resists_Exhibition
when 0
table = [0] + Scan_Element_Resist
when 1
table = [0] + ['-100%','-50%','0%','50%','100%','200%']
else
table = [0] + ['200%','150%','100%','50%','0%','-100%']
end
for i in 0...$data_system.elements.size
begin
bitmap = RPG::Cache.icon($data_system.elements[i] + '_elm')
self.contents.blt(x + (base * 112), y + (value * 25), bitmap, Rect.new(0, 0, 24, 24))
result = table[elements[i]]
case elements[i]
when 1
self.contents.font.color = Scan_Weakest_Color
when 2
self.contents.font.color = Scan_Weak_Color
when 3
self.contents.font.color = Scan_Neutral_Color
when 4
self.contents.font.color = Scan_Resist_Color
when 5
self.contents.font.color = Scan_Imune_Color
when 6
self.contents.font.color = Scan_Absorb_Color
end
case Scan_Element_Resists_Exhibition
when 0
self.contents.draw_text(x + 28 + (base * 112), y - 4 + (value * 25), 180, 32,
result.to_s, 0)
else
self.contents.draw_text(x + (base * 112), y - 4 + (value * 25), 72, 32,
result.to_s, 2)
end
value += 1
base += 1 if value == max_elment
value = value % max_elment
rescue
end
end
end
end
#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
# This class performs battle screen processing.
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# * Update battler phase 4 (part 1)
# battler : active battler
#--------------------------------------------------------------------------
alias step4_part1_scan step4_part1
def step4_part1(battler)
if battler.now_action.is_a?(RPG::Skill) and
Scan_Skills_ID.include?(now_id(battler))
for target in battler.target_battlers
battler.target_scan << target unless battler.target_scan.include?(target)
end
end
step4_part1_scan(battler)
end
#--------------------------------------------------------------------------
# * Check no damage
# battler : battler
# target : target
#--------------------------------------------------------------------------
alias no_damage_scan no_damage
def no_damage(battler, target)
return true if battler.target_scan.include?(target)
return no_damage_scan(battler, target)
end
#--------------------------------------------------------------------------
# * Update Graphics
#--------------------------------------------------------------------------
alias update_graphics_scan update_graphics
def update_graphics
update_graphics_scan
update_scan
end
#--------------------------------------------------------------------------
# * Update scan window
#--------------------------------------------------------------------------
def update_scan
for battler in $game_party.actors + $game_troop.enemies
if battler.target_scan.size > 0 and battler.dead? and @scan_window != nil
if battler.target_scan.include?(@scan_window.battle)
@scan_window.dispose
@scan_window = nil
end
battler.target_scan.clear
end
end
end
#--------------------------------------------------------------------------
# * Update battler phase 4 (part 3)
# battler : active battler
#--------------------------------------------------------------------------
alias step4_part3_scan step4_part3
def step4_part3(battler)
if battler.now_action.is_a?(RPG::Skill) and
Scan_Skills_ID.include?(now_id(battler))
if @scan_window.nil?
@help_window.visible = false
@scan_window = Window_Scan.new(battler.target_scan.shift)
battler.scan_count = 0
elsif
battler.scan_count += 1
end
if (Input.trigger?(Input::C) and battler.scan_count > 30) or
($atoa_script['Atoa ATB'] and battler.scan_count > 2990)
if @scan_window != nil
@scan_window.dispose
@scan_window = nil
end
end
return unless battler.target_scan.empty? and @scan_window.nil?
end
step4_part3_scan(battler)
end
#--------------------------------------------------------------------------
# * Dispose windows
#--------------------------------------------------------------------------
alias windows_dispose_scan windows_dispose if $atoa_script['Atoa ATB'] or $atoa_script['Atoa CTB']
def windows_dispose
windows_dispose_scan
if @scan_window != nil
@scan_window.dispose
@scan_window = nil
end
end
end
Post edited by adding the Code BBCode around the script presented
-- DerVV
RE: Scan skill should show states - DerVVulfman - 04-30-2017
Heyoo! Refound the forum? If you had another username, let us know. Heck, post an Intro thread while you're at it.
Aww... if I keep making fixes and patches to his system, everyone's going to think I'm Vic. Well... Here ya go. Not only do you have the ability to limit the states to just those you want to show (using an array), but this patch lets you do so with the Elements. I mean, no one wants 'Knockout' in their states display and you may be hiding 'Light' and 'Darkness' from the list too.
Just post this below Atoa's Scan script in your project and these should override the older methods while adding the new options. Remember that you are going to need matching 'state' icons in the manner of state-name_sta just as you have state-name_elm for element icons. Without the required icon, the state will not show at all (or the element for that matter).
Code: #==============================================================================
# Skill Scan Expansion
# By DerVVulfman (April 30, 2017)
# Based on Atoa/Victor Sant's system
#==============================================================================
# With this you can add 'state' resistances to your scan window.
#==============================================================================
# Thanks goes to Victor Sant (Atoa) for the original system, and to Tumen
# for the request of the additional 'state' expansion.
#==============================================================================
module Atoa
# INITIAL SETTINGS
# ================
# Re-defined to expand the scan window and to add the 'state' request
# into the information-display array: Scan_Infos
# Scan_Window_Settings
# [Position X, Position Y, Width, Height, Opacity, Trasparent Edge]
# --------------------
#
Scan_Window_Settings = [0 , 0, 452, 320, 160, false]
# Information shown in the window
# -------------------------------
#
Scan_Infos = ['name', 'level', 'class', 'hp', 'sp', 'status', 'exp', 'element', 'state' ]
# Add the name of the info you wish to show
# 'name' = Shows target name
# 'level' = Shows target level, for enemies check 'Scan_Enemy_Level'
# 'class' = Shows target class, for enemies check 'Scan_Enemy_Class'
# 'hp' = Shows target HP
# 'sp' = Shows target SP
# 'status = Shows target Status
# 'exp' = Shows Exp given by target
# 'element' = Shows target elemental resistance
# 'states' = Shows target state resistance
# DATA LIMIT SETTINGS
# ===================
# Arrays that apply to both elements and states, you can now limit
# the information to only the elements and resistances you wish to
# show, rather from the first element/state on through. If not in
# the array, the element or state will not be shown. (Nil ignores)
# Elements Permitted
# List of elements shown in a scan (or nil)
# --------------------
#
Scan_Element_Permitted = nil
# States Permitted
# List of states shown in a scan (or nil)
# --------------------
#
Scan_State_Permitted = [2,3,4,5,6]
# STATE SCAN SYSTEM
# =================
# Configurable data for position and display of an enemy's weakness
# or resistances to certain states
# Postion of target elemental resistance in the window
#
Scan_State_Position = [306,64]
# Max number of states shown in a column, max value = 8
# * Note: Scan_State_Permitted is also a limiting factor
#
Scan_Max_State_Shown = 8
# Exhibition of state resistance
#
Scan_State_Resists_Exhibition = 0
# 0 = custom exhibition
# 1 = exhibition by numbers, value shows target resistance
# 2 = exhibition by numbers, value damage multiplication
# State resist text if 'Scan_State_Resists_Exhibition = 0'
#
Scan_State_Resist = ['Weakest','Weak','Normal','Resist','Imune','Absorb']
end
#==============================================================================
# ** Window_Scan
#------------------------------------------------------------------------------
# This window shows enemy information
#==============================================================================
class Window_Scan < Window_Base
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.size = Scan_Window_Font_Size
fake = (No_Scan_Enemies.include?(@battler.id) and not @battler.actor?)
if Scan_Infos.include?('name')
draw_actor_name(@battler, Scan_Name_Postion[0], Scan_Name_Postion[1])
end
if Scan_Infos.include?('class')
draw_actor_class(@battler, Scan_Class_Postion[0], Scan_Class_Postion[1])
end
if Scan_Infos.include?('element')
draw_element_resist(@battler, Scan_Element_Position[0], Scan_Element_Position[1])
end
if Scan_Infos.include?('state')
draw_state_resist(@battler, Scan_State_Position[0], Scan_State_Position[1])
end
if Scan_Infos.include?('level')
draw_actor_level(@battler, Scan_Level_Postion[0], Scan_Level_Postion[1], fake)
end
if Scan_Infos.include?('hp')
draw_actor_hp(@battler, Scan_Hp_Postion[0], Scan_Hp_Postion[1], 160, fake)
end
if Scan_Infos.include?('sp')
draw_actor_sp(@battler, Scan_Sp_Postion[0], Scan_Sp_Postion[1], 160, fake)
end
if Scan_Infos.include?('status')
for i in 0...Scan_Status_Shown.size
draw_actor_parameter(@battler, Scan_Status_Postion[0],
Scan_Status_Postion[1] + i * (Scan_Window_Font_Size + 2), Scan_Status_Shown[i],
Scan_Status_Distance, fake)
end
end
if Scan_Infos.include?('exp') and not @battler.actor?
x, y = Scan_Exp_Postion[0], Scan_Exp_Postion[1]
self.contents.draw_text(x, y, 72, 32, 'Exp:')
exp = fake ? '?????' : @battler.exp.to_s
self.contents.draw_text(x, y, 128, 32, exp, 2)
end
end
#--------------------------------------------------------------------------
# * Draw elemental resistance
# battler : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_element_resist(battler, x, y)
self.contents.font.size = Scan_Window_Font_Size
max_elment = [Scan_Max_Elements_Shown, 8].min
y = y + (200 - (max_elment * 25)) / 2
if battler.actor? and not $atoa_script['Atoa New Resistances']
elements = $data_classes[battler.class_id].element_ranks
elsif battler.actor? and $atoa_script['Atoa New Resistances']
elements = battler.elemental_resist
else
elements = $data_enemies[battler.id].element_ranks
end
base = value = 0
case Scan_Element_Resists_Exhibition
when 0
table = [0] + Scan_Element_Resist
when 1
table = [0] + ['-100%','-50%','0%','50%','100%','200%']
else
table = [0] + ['200%','150%','100%','50%','0%','-100%']
end
for i in 0...$data_system.elements.size
if Scan_Element_Permitted != nil
next unless Scan_Element_Permitted.include?(i)
end
begin
bitmap = RPG::Cache.icon($data_system.elements[i] + '_elm')
self.contents.blt(x + (base * 112), y + (value * 25), bitmap, Rect.new(0, 0, 24, 24))
result = table[elements[i]]
case elements[i]
when 1
self.contents.font.color = Scan_Weakest_Color
when 2
self.contents.font.color = Scan_Weak_Color
when 3
self.contents.font.color = Scan_Neutral_Color
when 4
self.contents.font.color = Scan_Resist_Color
when 5
self.contents.font.color = Scan_Imune_Color
when 6
self.contents.font.color = Scan_Absorb_Color
end
case Scan_Element_Resists_Exhibition
when 0
self.contents.draw_text(x + 28 + (base * 112), y - 4 + (value * 25), 180, 32,
result.to_s, 0)
else
self.contents.draw_text(x + (base * 112), y - 4 + (value * 25), 72, 32,
result.to_s, 2)
end
value += 1
base += 1 if value == max_elment
value = value % max_elment
rescue
end
end
end
#--------------------------------------------------------------------------
# * Draw state resistance
# battler : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_state_resist(battler, x, y)
self.contents.font.size = Scan_Window_Font_Size
max_elment = [Scan_Max_State_Shown, 8].min
y = y + (200 - (max_elment * 25)) / 2
if battler.actor? and not $atoa_script['Atoa New Resistances']
elements = $data_classes[battler.class_id].state_ranks
elsif battler.actor? and $atoa_script['Atoa New Resistances']
elements = battler.state_resist
else
elements = $data_enemies[battler.id].state_ranks
end
base = value = 0
case Scan_State_Resists_Exhibition
when 0
table = [0] + Scan_State_Resist
when 1
table = [0] + ['-100%','-50%','0%','50%','100%','200%']
else
table = [0] + ['200%','150%','100%','50%','0%','-100%']
end
for i in 1..$data_states.size-1
if Scan_State_Permitted != nil
next unless Scan_State_Permitted.include?(i)
end
begin
bitmap = RPG::Cache.icon($data_states[i].name + '_sta')
self.contents.blt(x + (base * 112), y + (value * 25), bitmap, Rect.new(0, 0, 24, 24))
result = table[elements[i]]
case elements[i]
when 1
self.contents.font.color = Scan_Weakest_Color
when 2
self.contents.font.color = Scan_Weak_Color
when 3
self.contents.font.color = Scan_Neutral_Color
when 4
self.contents.font.color = Scan_Resist_Color
when 5
self.contents.font.color = Scan_Imune_Color
when 6
self.contents.font.color = Scan_Absorb_Color
end
case Scan_State_Resists_Exhibition
when 0
self.contents.draw_text(x + 28 + (base * 112), y - 4 + (value * 25), 180, 32,
result.to_s, 0)
else
self.contents.draw_text(x + (base * 112), y - 4 + (value * 25), 72, 32,
result.to_s, 2)
end
value += 1
base += 1 if value == max_elment
value = value % max_elment
rescue
end
end
end
end
*** I'll probably add this to the Forum Scripts Listings in a few days.
RE: Scan skill should show states - Tumen - 05-01-2017
Wow, that was quite fast. Thank you so much.
To be honest, I wasnt a member if I remember correctly, I only keep visited this forum.
Anyway regarding the script:
Its like I wanted. In order to modify this a bit (I need many states displayed) I changed the scan windows settings from
Scan_Window_Settings = [0 , 0, 452, 320, 160, false]
to
Scan_Window_Settings = [0 , 0, 680, 332, 160, false]
And the max element/states number on line 154 & 217
max_elment = [Scan_Max_Elements_Shown, 8].min
max_elment = [Scan_Max_State_Shown, 8].min
to
max_elment = [Scan_Max_Elements_Shown, 10].min
max_elment = [Scan_Max_State_Shown, 10].min
I hope this is right because I wanted to display 10 states per row
Thanks.
RE: Scan skill should show states - DerVVulfman - 05-01-2017
No no no... You go into the 'CONFIGURABLE' section, the Atoa module, and change the line:
Code: Scan_Max_State_Shown = 8
to your number of states.
Never change the actual hardcode if ever possible.
RE: Scan skill should show states - Tumen - 05-01-2017
If I dont change the hardcore script the max states displayed in a colum stays 8 even if I change the window height to maxiumum (480) and Scan_Max_State_Shown to like 12 or more.
RE: Scan skill should show states - DerVVulfman - 05-02-2017
Hrm... (glances at code).... Eep. Modeling it so much on Atoa's system, I didn't note that the min/max system cuts off at 8 as a maximum. Ooooooookay.... Edit there too. And likewise for the matching statement within 'draw_element_resist'
Hey, make an intro post while you're at it.
|