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? @pre_graph_data = [character_name, character_index, face_name, face_index] 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]) 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) else user.graphics_change(character_name) user.instance_variable_set(:@battler_hue, character_hue) end user.add_state(item.shape_shift) end end end