#============================================================================== # ** Custom Resolution - Tilemap Tone Changer # Version : 1.12 # Author : LiTTleDRAgo #============================================================================== # # Introduction : # # This script is made for F0's Custom Resolution, it can change the # tilemap's tone along with the selected character. # # How to Use : # # Script : # change_tilemap_tone(TONE,*CHARACTER) # change tilemap tone # change_character_tone(TONE,*CHARACTER) # change character tone without # changing the tilemap # # TONE = [R,G,B,A] or Tone.new(R,G,B,A) # # CHARACTER = $game_map.events.values # all events # = $game_map.events.keys # all events # = $game_player # player # = -1 # player # = 0 # this event # = [2,3,4,6] # events with selected id # = [-1,2,3,4,6] # player & events with selected id # = [0,2,3,4,6] # this event & events with selected id # = (1..99) # events in range # = [(1..8),20,25,(30..42)] # events in range # # * will not change the character tone if left out # # # Example : # # Script : tone = Tone.new(20,20,20,160) # char = $game_map.events.values # change_tilemap_tone(tone,char) # #=============================================================================== ($imported ||= {})[:drg_tilemap_tone_changer] = 1.12 core = "This script needs Drago - Core Engine ver 1.43 or above" reso = "This script needs F0's Custom Resolution" rmxp = "This script only for RMXP" $imported[:drg_core_engine] || raise(core) $resolution || raise(reso) LiTTleDRAgo::XP || raise(rmxp) #============================================================================== # ** Spriteset_Map #------------------------------------------------------------------------------ # This class brings together map screen sprites, tilemaps, etc. # It's used within the Scene_Map class. #============================================================================== class Spriteset_Map #--------------------------------------------------------------------------- # * Public Instance Variables #--------------------------------------------------------------------------- attr_reader :viewport1, :viewport2, :viewport3 #--------------------------------------------------------------------------- # * New method: viewport_sprite #--------------------------------------------------------------------------- def viewport_sprite(*v) v.collect! {|s| s.is_a?(Symbol) ? instance_variable_get(:"@#{s}") : s } v.reject! {|s| s.not.is_a?(Viewport)} all = instance_variables.map {|s| instance_variable_get("#{s}")}.flatten all.select {|s| s.respond_to?(:viewport) && v.include?(s.viewport)} end end #============================================================================== # ** Interpreter #------------------------------------------------------------------------------ # This interpreter runs event commands. This class is used within the # Game_System class and the Game_Event class. #============================================================================== class Interpreter #--------------------------------------------------------------------------- # * New method: change_tilemap_tone #--------------------------------------------------------------------------- def change_tilemap_tone(tone, *char) sprite = $game_map.spriteset.viewport_sprite(:viewport1) sprite.reject! {|s| s.is_a?(Sprite_Character)} sprite.each do |s| if tone.is_a?(Array) && (3..4) === tone.size s.tone = Tone.new(*tone) elsif tone.is_a?(Tone) s.tone = tone end end change_character_tone(tone, *char) unless char.empty? end #--------------------------------------------------------------------------- # * New method: change_character_tone #--------------------------------------------------------------------------- def change_character_tone(tone, *char) char = char.collect {|c| c.is_a?(Range) ? c.to_a : c}.flatten char = char.collect {|c| c.is_a?(Range) ? c.to_a : c}.flatten char.collect! {|c| c.is_a?(Game_Character) ? c : get_character(c)} sprite = $game_map.spriteset.viewport_sprite(:viewport1) sprite.reject! {|s| s.not.is_a?(Sprite_Character) } sprite.reject! {|s| char.not.include?(s.character)} if tone.is_a?(Array) && (3..4) === tone.size sprite.tone(:tone=, Tone.new(*tone)) elsif tone.is_a?(Tone) sprite.send(:tone=, tone) end end end