Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #==============================================================================
- # DSI Advanced Tone System
- # -- Last Updated: 2017.06.15
- # -- Author: dsiver144
- # -- Level: Normal
- # -- Requires: n/a
- #==============================================================================
- $imported = {} if $imported.nil?
- $imported["DSI-AdvancedTone"] = true
- #==============================================================================
- # Script Call:
- # untone(id,frames) -> Untone an event/player. This mean event/player sprite
- # tone won't be changed by map tone. (Using Tint Command)
- # free_tone(id,tone,frames) -> Change sprite tone of an-untoned-event or player
- # retone(id,frames) -> Reset to default. This mean event/player sprite tone
- # will be changed by map tone. (Using Tint Command)
- # id = 0 : this event
- # id = -1: player
- #==============================================================================
- class Game_Interpreter
- #--------------------------------------------------------------------------
- # * Free Tone Character Sprite
- #--------------------------------------------------------------------------
- def free_tone(id,tone,frames=60)
- new_id = id == 0 ? @event_id : id
- object = new_id != -1 ? $game_map.events[new_id] : $game_player
- return if object.mapToneStatus == true
- basic_tone = Tone.new(*tone)
- object.start_tone_change(basic_tone, frames)
- end
- #--------------------------------------------------------------------------
- # * Tint Screen
- #--------------------------------------------------------------------------
- def untone(id,frames=60)
- new_id = id == 0 ? @event_id : id
- object = new_id != -1 ? $game_map.events[new_id] : $game_player
- object.mapToneStatus = false
- basic_tone = Tone.new(0,0,0,0)
- object.start_tone_change(basic_tone, frames)
- end
- #--------------------------------------------------------------------------
- # * Tint Screen
- #--------------------------------------------------------------------------
- def retone(id,frames=60)
- new_id = id == 0 ? @event_id : id
- object = new_id != -1 ? $game_map.events[new_id] : $game_player
- object.mapToneStatus = true
- basic_tone = screen.tone
- object.start_tone_change(basic_tone, frames)
- end
- #--------------------------------------------------------------------------
- # * Tint Screen
- #--------------------------------------------------------------------------
- def tone_player(tone_param, frames=60, wait=false)
- return unless $game_player.untone_status
- if tone_param
- new_tone = Tone.new(*tone_param)
- else
- new_tone = Tone.new(0,0,0,0)
- end
- $game_player.start_tone_change2(new_tone, frames)
- wait(frames) if wait
- end
- #--------------------------------------------------------------------------
- # * overwrite method: command_223
- #--------------------------------------------------------------------------
- def command_223
- $game_player.start_tone_change(@params[0], @params[1]) if $game_player.mapToneStatus
- $game_map.events.values.each do |event|
- event.start_tone_change(@params[0], @params[1]) if event.mapToneStatus
- end
- screen.start_tone_change(@params[0], @params[1])
- wait(@params[1]) if @params[2]
- end
- end # Game_Interpreter
- class Spriteset_Map
- attr_accessor :viewport1_5
- alias_method(:init_event_tone_system, :initialize)
- #--------------------------------------------------------------------------
- # * Object Initialization
- #--------------------------------------------------------------------------
- def initialize
- set_default_event_tone
- init_event_tone_system # Call original method
- end
- #--------------------------------------------------------------------------
- # * new method: set_default_event_tone
- #--------------------------------------------------------------------------
- def set_default_event_tone
- $game_player.mapToneStatus = true
- $game_map.events.values.each do |event|
- next if event.nil?
- next if event.list.nil?
- event.mapToneStatus = true
- event.list.each do |command|
- next if command.code != 108
- if command.parameters[0] =~ /<untone[ _]event>/i
- event.mapToneStatus = false
- next
- end
- end
- end
- end
- #--------------------------------------------------------------------------
- # * overwrite_method: create_characters
- #--------------------------------------------------------------------------
- alias_method(:dsi_tone_system_create_characters, :create_characters)
- def create_characters
- @viewport1_5 = Viewport.new
- @viewport1_5.z = @viewport1.z + 1
- dsi_tone_system_create_characters # Call original method
- @character_sprites.each do |sprite|
- sprite.viewport = @viewport1_5
- end
- end
- #--------------------------------------------------------------------------
- # * alias method: dispose_viewports
- #--------------------------------------------------------------------------
- alias_method(:dsi_tone_system_dispose_viewports, :dispose_viewports)
- def dispose_viewports
- dsi_tone_system_dispose_viewports
- @viewport1_5.dispose
- end
- end # Spriteset_Map
- class Game_CharacterBase
- attr_accessor :sprite_tone
- attr_accessor :free_tone
- attr_accessor :mapToneStatus
- alias_method(:dsi_untone_sprite_update, :update)
- #--------------------------------------------------------------------------
- # * new method: isMapToned?
- #--------------------------------------------------------------------------
- def isMapToned?
- @mapToneStatus
- end
- #--------------------------------------------------------------------------
- # * Update
- #--------------------------------------------------------------------------
- def update
- dsi_untone_sprite_update
- update_tone
- end
- #--------------------------------------------------------------------------
- # * Start Changing Color Tone
- #--------------------------------------------------------------------------
- def start_tone_change(tone, duration)
- @tone_target = tone.clone
- @tone_duration = duration
- @sprite_tone ||= Tone.new(0,0,0,0)
- @sprite_tone = @tone_target.clone if @tone_duration == 0
- end
- #--------------------------------------------------------------------------
- # * Update Tone
- #--------------------------------------------------------------------------
- def update_tone
- if @sprite_tone && @tone_duration && @tone_duration > 0
- d = @tone_duration
- @sprite_tone.red = (@sprite_tone.red * (d - 1) + @tone_target.red) / d
- @sprite_tone.green = (@sprite_tone.green * (d - 1) + @tone_target.green) / d
- @sprite_tone.blue = (@sprite_tone.blue * (d - 1) + @tone_target.blue) / d
- @sprite_tone.gray = (@sprite_tone.gray * (d - 1) + @tone_target.gray) / d
- @tone_duration -= 1
- end
- end
- end # Game_CharacterBase
- class Sprite_Character < Sprite_Base
- alias_method(:dsi_tone_system_sprite_character_update_other, :update_other)
- #--------------------------------------------------------------------------
- # * Update Other
- #--------------------------------------------------------------------------
- def update_other
- self.tone = @character.sprite_tone if @character.sprite_tone
- dsi_tone_system_sprite_character_update_other
- end
- end # Sprite_Character
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement