# 設定項目:シェイプシフトから戻った時のグラフィック # true : 最後にシェイプシフトを使用した時の姿 # false : アクターのグラフィック RETURN_GRAPH = true class RPG::UsableItem def shape_shift note =~ /<シェイプシフト\s*(\d+)*>/ ? ($1 ? $1.to_i : 0) : nil end end class RPG::State def undo_by_remove note =~ /<シェイプシフト>/ ? true : false end end class Game_Battler def backup_graphic_for_shape_shift if actor? if RETURN_GRAPH @pre_graph_data = [character_name,character_index,face_name,face_index] else @pre_graph_data = [actor.character_name, actor.character_index, actor.face_name, actor.face_index] end else @pre_graph_data = [battler_name, battler_hue] end end def return_graphic_for_shape_shift if actor? set_graphic(@pre_graph_data[0], @pre_graph_data[1], @pre_graph_data[2], @pre_graph_data[3]) $game_player.refresh else @battler_name = @pre_graph_data[0]; @battler_hue = @pre_graph_data[1] end end #-------------------------------------------------------------------------- # ● ステートの解除 #-------------------------------------------------------------------------- alias fai_remove_state_n03 remove_state def remove_state(state_id) fai_remove_state_n03(state_id) return_graphic_for_shape_shift if $data_states[state_id].undo_by_remove end #-------------------------------------------------------------------------- # ● スキル/アイテムの使用者側への効果 #-------------------------------------------------------------------------- alias fai_item_user_effect_n03 item_user_effect def item_user_effect(user, item) fai_item_user_effect_n03(user, item) if item.shape_shift character_name = actor? ? self.character_name : @battler_name character_index = actor? ? self.character_index : 0 character_hue = actor? ? 0 : @battler_hue user.backup_graphic_for_shape_shift if user.actor? face_name = user.face_name; face_index = user.face_index user.set_graphic(character_name, character_index, face_name, face_index) $game_player.refresh else user.graphics_change(character_name) user.instance_variable_set(:@battler_hue, character_hue) end user.add_state(item.shape_shift) end end end