Leon's Good and Evil Script
Descrizione
Inserisce nello status di ogni personaggio una barra che mostra l'allineamento dell'eroe.Anche questo un vecchio script per XP che ho riadattato per il VX.RICHIEDE LA TOTAL CONVERSION.


Autore
Leon adattato da Rinnegatamante


Istruzioni per l'uso
Inserire sotto la Total Conversion.Per aumentare e diminuire punti leggere l'inizio dello script.

Spoiler

#===================================
# Leon's Good and Evil script adattato da Rinnegatamante
#----------------------------------------------------------------------
# Features:
# Gives an actor the "good", "Neutral" or "evil" alignment, based
# upon their actions.
#
# Instructions:
# Place above main, and below other scripts.
# Use: draw_alignment_bar(actor, x, y) in a script to draw the alignment bar.
# x and y being the position of the bar, and actor being the syntax for the actor's information.
#
# To use:
# To add or subtract from their alignment, use: $game_actors[actor_id].alignment += x
# To see if the actor's alignment is good, evil or neutral, use:
# * Conditional Branch, tab 4, Script.
# * For good, use $game_actors[actor_id] > 0
# * For evil, use $game_actors[actor_id] < 0
# * For neutral, use $game_actors[actor_id] == 0
#
# Extra Information:
# This script edits the original Window_Status script to add the good/evil.
#===================================

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Game_Actor
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Game_Actor < Game_Battler

attr_accessor :alignment
attr_accessor :alignment_name

alias leon_alignment_bars_ga_setup setup

def setup(actor_id)
@alignment = 0
@alignment_name = "Neutrale"
leon_alignment_bars_ga_setup(actor_id)
end

def alignment
if @alignment > 0
if @alignment > 100
@alignment = 100
end
@alignment_name = "Buono"
return @alignment
end
if @alignment < 0
if @alignment < -100
@alignment = -100
end
@alignment_name = "Cattivo"
return @alignment
end
@alignment_name = "Neutrale"
return @alignment
end


end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Window_Base
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Window_Base
def draw_bar(x, y, min, max, width = 152, height = 6,
bar_color = Color.new(0, 75, 0, 255), end_color = Color.new(0, 255, 0, 255))
for i in 0..height
self.contents.fill_rect(x + i, y + height - i, width + 1, 1, Color.new(50, 50, 50, 255))
end
for i in 1..(height - 1)
r = 100 * (height - i) / height + 0 * i / height
g = 100 * (height - i) / height + 0 * i / height
b = 100 * (height - i) / height + 0 * i / height
a = 255 * (height - i) / height + 255 * i / height
self.contents.fill_rect(x + i, y + height - i, width, 1, Color.new(r, b, g, a))
end
for i in 1..( (min.to_f / max.to_f) * width - 1)
for j in 1..(height - 1)
r = bar_color.red * (width - i) / width + end_color.red * i / width
g = bar_color.green * (width - i) / width + end_color.green * i / width
b = bar_color.blue * (width - i) / width + end_color.blue * i / width
a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
self.contents.fill_rect(x + i + j, y + height - j, 1, 1, Color.new(r, g, b, a))
end
end
end

def draw_backward_bar(x, y, min, max, width = 152, height = 6,
bar_color = Color.new(75, 0, 0, 255), end_color = Color.new(255, 0, 0, 255))
for i in 0..height
self.contents.fill_rect(x + i, y + height - i, width + 1, 1, Color.new(50, 50, 50, 255))
end
for i in 1..(height - 1)
r = 100 * (height - i) / height + 0 * i / height
g = 100 * (height - i) / height + 0 * i / height
b = 100 * (height - i) / height + 0 * i / height
a = 255 * (height - i) / height + 255 * i / height
self.contents.fill_rect(x + i, y + height - i, width, 1, Color.new(r, b, g, a))
end
for i in 1..( (min.to_f / max.to_f) * width - 1)
for j in 1..(height - 1)
r = bar_color.red * (width - i) / width + end_color.red * i / width
g = bar_color.green * (width - i) / width + end_color.green * i / width
b = bar_color.blue * (width - i) / width + end_color.blue * i / width
a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
self.contents.fill_rect(x - i + j, y + height - j, 1, 1, Color.new(r, g, b, a))
end
end
end

def draw_alignment_bar(actor, x, y)
#x = 320 y = 147
draw_bar(x, y, 0, 200, 200, 6)
if actor.alignment > 0
draw_bar(x + 100, y, actor.alignment, 100, 100, 6)
actor.alignment_name = "Buono"
elsif actor.alignment < 0
draw_backward_bar(x + 100, y, -1 * actor.alignment, 100, 100, 6)
actor.alignment_name = "Cattivo"
elsif actor.alignment == 0
draw_bar(x + 100, y, actor.alignment, 100, 100, 6)
actor.alignment_name = "Neutrale"
end
draw_bar(x + 97, y - 2, 2, 2, 2, 10, Color.new(255, 255, 255, 255), Color.new(255, 255, 255,255))
end

end


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Window_Status
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Window_Status < Window_Base

alias leon_alignment_bars_ws_refresh refresh

def refresh
leon_alignment_bars_ws_refresh
if @actor.alignment > 100
@actor.alignment = 100
elsif @actor.alignment < -100
@actor.alignment = -100
end
self.contents.font.color = system_color
self.contents.draw_text(290, 122, 120, 32, "Carattere")
draw_alignment_bar(@actor, 280, 157)
self.contents.font.color = normal_color
self.contents.draw_text(380, 122, 120, 32, @actor.alignment_name)
end
end