Leon 55 Report post Posted January 9, 2007 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: #=================================== # 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
EmilyAnnCoons 7 Report post Posted January 14, 2007 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
Leon 55 Report post Posted January 15, 2007 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
EmilyAnnCoons 7 Report post Posted January 15, 2007 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
Marked 197 Report post Posted January 15, 2007 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
Leon 55 Report post Posted January 15, 2007 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
sloth 0 Report post Posted February 18, 2008 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
Leon 55 Report post Posted February 18, 2008 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