Auf die schnelle würde ich sagen, dass es in etwa so funktionieren sollte (einfach über main einfügen):

Code:
class Game_Actor < Game_Battler
  @lmp  #last mp
  def change_equip(slot_id, item)
    return unless trade_item_with_party(item, equips[slot_id])
    return if item && equip_slots[slot_id] != item.etype_id
    @lmp = mp if(mmp > 0)  #aktuellen mp wert auf @lmp zwischenspeichern
    @equips[slot_id].object = item
    @mp= [@lmp,mmp].min if(@lmp) #mp auf alten Wert oder max_mp setzen
    refresh
  end
end
Nicht wirklich getestet und quick&dirty gemacht.