#============================================================================== # ■ RGSS3 色相変遷エネミー Ver1.00 by 星潟 #------------------------------------------------------------------------------ # 敵グラフィックの色相を変遷させます。 # これにより虹色に輝く敵等の演出が可能となりますが # キャッシュが激増する為、画像キャッシュ削除等と併用する必要があると思います。 # (VXAceの仕様上、色相違いの物は全て別データとしてキャッシュ上に残ります) #============================================================================== # 敵のメモ欄に記述します。 #============================================================================== # <色相変遷:5,30,2> # # 2フレーム毎に色相を+5します。 # 元の色相+30の値となった後は、元の値になるまで色相値が5ずつ減少します。 #------------------------------------------------------------------------------ # <色相変遷:-1,359,1> # # 2フレーム毎に色相を+1します。 # 元の色相+359の値となった後は、そのまま元の値に戻ります。 #============================================================================== module EnemyMultiHue #色相変遷値設定用キーワードを指定。 Word = "色相変遷" end class Sprite_Battler < Sprite_Base #-------------------------------------------------------------------------- # 転送元ビットマップの更新 #-------------------------------------------------------------------------- alias update_bitmap_multi_hue update_bitmap def update_bitmap @battler.star_update_hue if @battler_visible && self.opacity == 255 update_bitmap_multi_hue end end class Game_BattlerBase #-------------------------------------------------------------------------- # 色相変遷 #-------------------------------------------------------------------------- def star_update_hue end end class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_multi_hue initialize def initialize(index, enemy_id) initialize_multi_hue(index, enemy_id) multi_hue_reset end #-------------------------------------------------------------------------- # 色相変遷リセット #-------------------------------------------------------------------------- def multi_hue_reset @hue_change_rev = 1 @hue_change_data = 0 @hue_change_count = 0 end #-------------------------------------------------------------------------- # 色相変遷 #-------------------------------------------------------------------------- def star_update_hue a = enemy.hue_change return unless alive? if a[0] != 0 @hue_change_count += 1 return unless a[2] < @hue_change_count if a[0] > 0 rev = @hue_change_rev @hue_change_data = [[@hue_change_data + a[0] * rev,0].max,a[1]].min else if @hue_change_data == a[1] @hue_change_data = 0 else @hue_change_data = [[@hue_change_data + a[0].abs,0].max,a[1]].min end end @battler_hue = enemy.battler_hue + @hue_change_data case @hue_change_data when 0 @hue_change_rev = 1 when a[1] @hue_change_rev = -1 end @hue_change_count = 0 end end #-------------------------------------------------------------------------- # 変身 #-------------------------------------------------------------------------- alias transform_multi_hue transform def transform(enemy_id) transform_multi_hue(enemy_id) multi_hue_reset end end class RPG::Enemy < RPG::BaseItem #-------------------------------------------------------------------------- # 色相変遷値 #-------------------------------------------------------------------------- def hue_change @hue_change ||= /<#{EnemyMultiHue::Word}[::](\S+),(\d+),(\d+)>/ =~ note ? [$1.to_i,$2.to_i,$3.to_i] : [0,0,0] @hue_change end end