Jump to content
New account registrations are disabed. This website is now an archive. Read more here.
Sign in to follow this  
Leon

Good/Evil bar.

Recommended Posts

This is a Leon original, a good/evil script. You can use it to your advantage in many ways.

 

Using $game_party.actors[x].alignment += y (x being the actor's position in the party: 0 being 1st, 1 being 2nd, etc) you can add y to the actor's alignment number (100 being good.) and use - instead of + to subtract from the alignment number (-100 being full evil)

 

Using a conditional branch, and the command:

$game_party.actors[x].alignment > x

you can set x to 0 (or higher) for the actor to be that much good and have the event execute, or do the opposite for evil (using a negative number)

 

It may seem complex, but it is quite a nice addition ot the game. Please, give me credit for this script. Further, here are screenshots of the bars:

 

 

Evilss.jpg

 

Goodss.jpg

 

 

 

#===================================
#  Leon's Good and Evil script
#----------------------------------------------------------------------
#  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.
#	Use: $game_party.actors[0].alignment  to update it immediately, if needed, in call_script
#			 x and y being the position of the bar, and actor being the syntax for the actor's information.
#
#  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 = "Neutral"
leon_alignment_bars_ga_setup(actor_id)
 end

 def alignment
if @alignment > 0
  if @alignment > 100
	@alignment = 100
  end
  @alignment_name = "Good"
  return @alignment
end
if @alignment < 0
  if @alignment < -100
	@alignment = -100
  end
  @alignment_name = "Evil"
  return @alignment
end
@alignment_name = "Neutral"
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 = "Good"
elsif actor.alignment < 0
  draw_backward_bar(x + 100, y, -1 * actor.alignment, 100, 100, 6)
  actor.alignment_name = "Evil"
elsif actor.alignment == 0
  draw_bar(x + 100, y, actor.alignment, 100, 100, 6)
  actor.alignment_name = "Neutral"
end
draw_bar(x + 97, y - 2, 2, 2, 2, 10, Color.new(255, 255, 255, 255), Color.new(255, 255, 255,255))
self.contents.font.color = normal_color
self.contents.draw_text(x + 5, y - 13, 120, 32, "E")
self.contents.draw_text(x + 190, y - 13, 120, 32, "G")
 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(320, 112, 120, 32, "Alignment")
draw_alignment_bar(@actor, 320, 147)
self.contents.font.color = normal_color
self.contents.draw_text(420, 112, 120, 32, @actor.alignment_name)
 end
end

Share this post


Link to post
Share on other sites

Rep script, nice. -claps- looks good...If I knew a use for it, i'd use it ^^ But my game currently does not have a use for it right now...plus I'd have to go edit my menu script, cause I don't use the DMS...I use a CMS.

Share this post


Link to post
Share on other sites

What makes this right here so great is with 1 command, you can put the bar anywhere you want in any window. Further, it's use is hidden to most, hence why i am preparing a demo showing how to use it.

Share this post


Link to post
Share on other sites

Cool...I, sadly, still have no use for it, but if I ever got one, I'd use it and credit you and all that stuff ^^

Share this post


Link to post
Share on other sites
What makes this right here so great is with 1 command, you can put the bar anywhere you want in any window. Further, it's use is hidden to most, hence why i am preparing a demo showing how to use it.

Very user-friendly, right Leon. This is a really useful script, I think I will use it in my up-coming game, that i am yet to start. But I will soon.

Share this post


Link to post
Share on other sites

I, too, plan on using this in an upcoming game, along with a couple other recent scripts i've written. I just have to stick with my current project. I've put 5 months of work into it, I'm not letting it go that easy.

Share this post


Link to post
Share on other sites

it's interesting but.... shouldn't it be more flexible, as in "changing, depending on how you play the character" ?

 

for example, give certain answers to NPCs or kill certain monsters / leave certain monsters alone or so..?

Share this post


Link to post
Share on other sites

You can do that yourself using the commands. It would be near-impossible to script it how you ask and let everyone use it in the same fashion. Personal preferences tend to differ.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...