Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- =begin
- #===============================================================================
- Title: Character Flash
- Author: Tsukihime
- Date: Sep 13, 2013
- --------------------------------------------------------------------------------
- ** Change log
- Sep 13, 2013
- - Initial release
- --------------------------------------------------------------------------------
- ** Terms of Use
- * Free to use in commercial/non-commercial projects
- * No real support. The script is provided as-is
- * Will do bug fixes, but no compatibility patches
- * Features may be requested but no guarantees, especially if it is non-trivial
- * Credits to Tsukihime in your project
- * Preserve this header
- --------------------------------------------------------------------------------
- ** Description
- This script allows you to have characters on your map start flashing.
- You can choose how long the flash should be and the color of the flash.
- --------------------------------------------------------------------------------
- ** Installation
- Place this script below Materials and above Main.
- --------------------------------------------------------------------------------
- ** Usage
- To make a character flash, make the script call
- character_flash(id, duration)
- character_flash(id, duration, loopCount)
- character_flash(id, duration, loopCount, color)
- Where ID is
- -1 for the player
- 0 for the current event
- 1 or higher is the specified event ID
- The duration is the number of frames that you want it to flash.
- LoopCount is a number that specifies how many times it should loop.
- By default, it only loops once (1), but you can have it loop infinitely by
- passing in 0.
- If the flash is supposed to loop, you will need to manually turn off the
- flashing by making the script call
- end_character_flash(id)
- The color of the flash is a Color object.
- If the color is not specified, it defaults to the color that is specified
- in the configuration.
- --------------------------------------------------------------------------------
- ** Example
- To have event 3 flash red (RGB value 255,0,0), for 60 frames, make the
- script call
- color = Color.new(255, 0, 0)
- character_flash(3, 60, 0, color)
- #===============================================================================
- =end
- $imported = {} if $imported.nil?
- $imported["TH_CharacterFlash"] = true
- #===============================================================================
- # ** Configuration
- #===============================================================================
- module TH
- module Character_Flash
- # The default flash color if you don't specify one. Takes an RGBA value.
- Default_Color = Color.new(255, 255, 255, 255)
- end
- end
- #===============================================================================
- # ** Rest of Script
- #===============================================================================
- class Game_Interpreter
- def character_flash(id, duration, loop=1, color=TH::Character_Flash::Default_Color)
- get_character(id).begin_flash(duration, loop, color)
- end
- def end_character_flash(id)
- get_character(id).clear_flash_settings
- end
- end
- class Game_CharacterBase
- attr_reader :flash_on
- attr_reader :flash_duration
- attr_reader :flash_color
- attr_reader :flash_loop
- alias :th_character_flash_init_public_members :init_public_members
- def init_public_members
- th_character_flash_init_public_members
- clear_flash_settings
- end
- def clear_flash_settings
- @flash_loop = 1
- @flash_on = false
- @flash_duration = 0
- @flash_color = TH::Character_Flash::Default_Color
- end
- def begin_flash(duration, loop, color)
- @flash_on = true
- @flash_loop = loop
- @flash_duration = duration
- @flash_color = color
- end
- def end_flash
- if @flash_loop == 0
- @flash_on = false
- else
- clear_flash_settings
- end
- end
- alias :th_character_flash_update :update
- def update
- update_flash
- th_character_flash_update
- end
- def update_flash
- if @flash_loop == 0 && !@flash_on
- @flash_on = true
- end
- end
- end
- class Sprite_Character < Sprite_Base
- @@flash_color = Color.new(255, 255, 255)
- alias :th_character_flash_initialize :initialize
- def initialize(viewport, character = nil)
- @flash_duration = 0
- @flashing = false
- th_character_flash_initialize(viewport, character)
- end
- alias :th_character_flash_update :update
- def update
- th_character_flash_update
- update_flashing
- end
- def update_flashing
- if !@flashing
- if @character.flash_on
- @flashing = true
- color = @character.flash_color || @@flash_color
- flash(color, @character.flash_duration)
- @character.end_flash
- end
- else
- @flash_duration += 1
- if @flash_duration >= @character.flash_duration
- @flash_duration = 0
- @flashing = false
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement