#============================================================================== # ** Soulpour - Reputation System Orpheus # Author: Soulpour777 # Web URL: infinitytears.wordpress.com # Credits: Animeflow for the Wallpaper #------------------------------------------------------------------------------ # Description: # This script allows you to create a reputation system with a graphical user # interface. #------------------------------------------------------------------------------ # Installation: #------------------------------------------------------------------------------ # Put the script below Materials above Main. # Make sure that the needed graphics are installed under Systems folder. # For more information, you can download or use the demo. #------------------------------------------------------------------------------ # Usage: # Combining with eventing, you can add or subtract your reputation. #------------------------------------------------------------------------------ # Script Call: # To call this script, use this script call: # SceneManager.call(Soul_Orpheus_Reputation) #============================================================================== module Soulpour module Reputation REPUTATION_VARIABLE = 1 #=> Variable that holds the Reputation REPUTATION_MAX = 100 #=> Maximum Amount of Reputation (min.f / max) REPUTATION_GOOD = "good_notif" #=> Good Reputation Graphic REPUTATION_NEUTRAL = "neutral_notif" #=> Neutral Reputation Graphic REPUTATION_BAD = "bad_notif" #=> Bad Reputation Graphic REPUTATION_WALLPAPER = "reputation_wallpaper" #=> Reputation Wallpaper REPUTATION_BANNER = "reputation_banner" #=> Reputation Banner Graphic REPUTATION_PARTICLE = "reputation_particle" #=> Reputation Particle Graphic GAUGE_HEIGHT = 24 #=> Height Value of the Gauge WINDOW_OPACITY = 0 #=> Window Opacity GRAPHICS_HEIGHT = 250 #-------------------------------------------------------------------------- # * Change Width #-------------------------------------------------------------------------- def self.graphics_width_form return Graphics.width end #-------------------------------------------------------------------------- # * Change Height #-------------------------------------------------------------------------- def self.graphics_height_form return Soulpour::Reputation::GRAPHICS_HEIGHT end end end #============================================================================== # ** Window_Reputation #------------------------------------------------------------------------------ # This class performs window reputation processing. #============================================================================== class Window_Reputation < Window_Base #-------------------------------------------------------------------------- # * Reputation Gauge Color #-------------------------------------------------------------------------- def reputation_gauge_1; text_color(16); end; def reputation_gauge_2; text_color(9); end; #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, 0, window_width, window_height) refresh self.opacity = Soulpour::Reputation::WINDOW_OPACITY self.z = 100 end #-------------------------------------------------------------------------- # * Get Window Width #-------------------------------------------------------------------------- def window_width Soulpour::Reputation.graphics_width_form end #-------------------------------------------------------------------------- # * Window Height #-------------------------------------------------------------------------- def window_height Soulpour::Reputation.graphics_height_form end #-------------------------------------------------------------------------- # * Draw Reputation Gauge # rate : Rate (full at 1.0) # color1 : Left side gradation # color2 : Right side gradation #-------------------------------------------------------------------------- def draw_reputation_gauge(x, y, width, rate, color1, color2) fill_w = (width * rate).to_i gauge_y = y + line_height - 8 contents.fill_rect(x, gauge_y, width, Soulpour::Reputation::GAUGE_HEIGHT, gauge_back_color) contents.gradient_fill_rect(x, gauge_y, fill_w, Soulpour::Reputation::GAUGE_HEIGHT, color1, color2) end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh contents.clear draw_text_ex(x, 40, "Reputation Rate: " + $game_variables[Soulpour::Reputation::REPUTATION_VARIABLE].to_s + " / " + Soulpour::Reputation::REPUTATION_MAX.to_s) draw_reputation_gauge(0, 50, 300, $game_variables[Soulpour::Reputation::REPUTATION_VARIABLE].to_f / Soulpour::Reputation::REPUTATION_MAX, reputation_gauge_1, reputation_gauge_2) end #-------------------------------------------------------------------------- # * Open Window #-------------------------------------------------------------------------- def open refresh super end end #============================================================================== # ** Soul_Orpheus_Reputation #------------------------------------------------------------------------------ # This class performs the Orpheus Reputation Scene processing. #============================================================================== class Soul_Orpheus_Reputation < Scene_Base def start super start_reputation_system_window create_reputation_wallpaper(Soulpour::Reputation::REPUTATION_WALLPAPER) create_reputation_particle(Soulpour::Reputation::REPUTATION_PARTICLE) create_reputation_banner_spr(Soulpour::Reputation::REPUTATION_BANNER) if $game_variables[Soulpour::Reputation::REPUTATION_VARIABLE] == 50 create_notification_banner(Soulpour::Reputation::REPUTATION_NEUTRAL) elsif $game_variables[Soulpour::Reputation::REPUTATION_VARIABLE] > 50 create_notification_banner(Soulpour::Reputation::REPUTATION_GOOD) else create_notification_banner(Soulpour::Reputation::REPUTATION_BAD) end if $game_variables[Soulpour::Reputation::REPUTATION_VARIABLE] < 0 $game_variables[Soulpour::Reputation::REPUTATION_VARIABLE] = 0 end end #-------------------------------------------------------------------------- # * start_reputation_system_window : new method #-------------------------------------------------------------------------- def start_reputation_system_window @reputation_system_window = Window_Reputation.new end #-------------------------------------------------------------------------- # * create_reputation_wallpaper : new method #-------------------------------------------------------------------------- def create_reputation_wallpaper(wallpaper_name) @reputation_wallpaper = Sprite.new @reputation_wallpaper.bitmap = Cache.system(wallpaper_name) end #-------------------------------------------------------------------------- # * update_reputation_particle : new method #-------------------------------------------------------------------------- def update_reputation_particle @reputation_particle.oy -= -1 end #-------------------------------------------------------------------------- # * dispose_reputation_particle : new method #-------------------------------------------------------------------------- def dispose_reputation_particle @reputation_particle.bitmap.dispose @reputation_particle.dispose end #-------------------------------------------------------------------------- # * dispose_reputation_wallpaper : new method #-------------------------------------------------------------------------- def dispose_reputation_wallpaper @reputation_wallpaper.bitmap.dispose @reputation_wallpaper.dispose end #-------------------------------------------------------------------------- # * Update #-------------------------------------------------------------------------- def update update_basic if Input.press?(:B) Sound.play_cancel return_scene end update_reputation_particle end #-------------------------------------------------------------------------- # * Termination Processing #-------------------------------------------------------------------------- def terminate Graphics.freeze dispose_all_windows dispose_main_viewport dispose_reputation_wallpaper dispose_reputation_particle dispose_notification_banner dispose_reputation_banner_spr end #-------------------------------------------------------------------------- # * create_reputation_banner_spr : new method #-------------------------------------------------------------------------- def create_reputation_banner_spr(sprite_name) @reputation_banner_spr = Sprite.new @reputation_banner_spr.bitmap = Cache.system(sprite_name) @reputation_banner_spr.x = 30 @reputation_banner_spr.y = 0 @reputation_banner_spr.z = 110 end #-------------------------------------------------------------------------- # * dispose_reputation_banner_spr : new method #-------------------------------------------------------------------------- def dispose_reputation_banner_spr @reputation_banner_spr.bitmap.dispose @reputation_banner_spr.dispose end #-------------------------------------------------------------------------- # * create_reputation_particle : new method #-------------------------------------------------------------------------- def create_reputation_particle(particle_name) @reputation_particle = Plane.new @reputation_particle.bitmap = Cache.system(particle_name) @reputation_particle.z = 110 end #-------------------------------------------------------------------------- # * create_notification_banner : new method #-------------------------------------------------------------------------- def create_notification_banner(var) @notif_banner = Plane.new @notif_banner.bitmap = Cache.system(var) @notif_banner.z = 110 end #-------------------------------------------------------------------------- # * dispose_notification_banner : new method #-------------------------------------------------------------------------- def dispose_notification_banner @notif_banner.bitmap.dispose @notif_banner.dispose end end $soulpour_reputation_rgss3 = true