class Window_EquipLeft < Window_Base
X_SHIFT = 0
def letter_grade_for(value, type)
grade = case type
# 0 - ATK
# 1 - PDEF
# 2 - MDEF
# 3 - DEX
# 4 - INT
# 5 - STR
# 6 - AGI
# 7 - EVA
when 3, 4, 5
case value
when 0..25 then :F
when 26..50 then :E
when 51..100 then :D
when 101..200 then :C
when 201..400 then :B
when 401..750 then :A
else :S
end
when 1, 2
case value
when 0..50 then :F
when 51..100 then :E
when 101..200 then :D
when 201..400 then :C
when 401..600 then :B
when 601..750 then :A
else :S
end
when 0
# you know what to do
when 6
# you know what to do
end
case grade
when :F
self.contents.font.color.set(255, 13, 13)
when :E
self.contents.font.color.set(255, 78, 17)
when :D
self.contents.font.color.set(255, 142, 21)
when :C
self.contents.font.color.set(250, 183, 51)
when :B
self.contents.font.color.set(172, 179, 52)
when :A
self.contents.font.color.set(105, 179, 76)
else
self.contents.font.color.set(53, 214, 237)
end
"(#{grade})"
end
def draw_letter_grade(x, y, value, type)
orig_color = self.contents.font.color
grade = letter_grade_for(value, type)
self.contents.draw_text(x, y, 36, 32, grade, 2)
self.contents.font.color = orig_color
end
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(224, 64, 415, 232)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Draw Parameter
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# type : parameter type (0-6)
#--------------------------------------------------------------------------
def draw_actor_parameter(actor, x, y, type)
case type
when 0
parameter_name = $data_system.words.atk
parameter_value = actor.atk
when 1
parameter_name = $data_system.words.pdef
parameter_value = actor.pdef
when 2
parameter_name = $data_system.words.mdef
parameter_value = actor.mdef
when 3
parameter_name = $data_system.words.dex
parameter_value = actor.dex
when 4
parameter_name = $data_system.words.int
parameter_value = actor.int
when 5
parameter_name = $data_system.words.str
parameter_value = actor.str
when 6
parameter_name = $data_system.words.agi
parameter_value = actor.agi
when 7
parameter_name = "Evasion"
parameter_value = actor.eva
end
self.contents.font.size = 16
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, parameter_name)
self.contents.font.color = normal_color
self.contents.draw_text(x + 80 + X_SHIFT, y, 36, 32, parameter_value.to_s, 2)
draw_letter_grade(x + 100 + X_SHIFT, y, parameter_value, type)
end
#--------------------------------------------------------------------------
# * Draw Actor Face Graphic
#--------------------------------------------------------------------------
def draw_actor_face_graphic(actor, x, y)
#bitmap = RPG::Cache.picture(actor.id.to_s)
bitmap = RPG::Cache.battler(actor.battler_name, 0)
x -= bitmap.width / 2 - 30
self.contents.blt(x, y, bitmap, Rect.new(0, 0, bitmap.width, bitmap.height))
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_actor_face_graphic(@actor, x + 50, y - 40)
self.contents.font.size = 18
draw_actor_level(@actor, 4, -3)
for i in 0..7
draw_actor_parameter(@actor, 4, i * 22 + 19, i)
end
[[@new_atk, @actor.atk], [@new_pdef, @actor.pdef], [@new_mdef, @actor.mdef],
[@new_dex, @actor.dex], [@new_int, @actor.int], [@new_str, @actor.str],
[@new_agi, @actor.agi], [@new_eva, @actor.eva]].each_with_index { |stat, i|
if stat[0] != nil
y = i * 22 + 19
self.contents.font.color = normal_color
self.contents.draw_text(140 + X_SHIFT, y, 40, 32, '->', 1)
if stat[0] > stat[1]
self.contents.font.color = Color.new(128, 255, 128)
elsif (stat[0] < stat[1])
self.contents.font.color = Color.new(255, 128, 128)
end
self.contents.draw_text(160 + X_SHIFT, y, 36, 32, stat[0].to_s, 2)
draw_letter_grade(180 + X_SHIFT, y, stat[0], i)
end
}
end
#--------------------------------------------------------------------------
# * Set parameters after changing equipment
# new_atk : attack power after changing equipment
# new_pdef : physical defense after changing equipment
# new_mdef : magic defense after changing equipment
#--------------------------------------------------------------------------
def set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex,
new_agi, new_int, new_eva)
if @new_atk != new_atk || @new_pdef != new_pdef || @new_mdef != new_mdef ||
@new_str != new_str || @new_dex != new_dex || @new_agi != new_agi ||
@new_int != new_int || @new_eva != new_eva
@new_atk = new_atk
@new_pdef = new_pdef
@new_mdef = new_mdef
@new_str = new_str
@new_dex = new_dex
@new_agi = new_agi
@new_int = new_int
@new_eva = new_eva
refresh
end
end
end
I'll let you finish configuring the case-statements.