Если еще нужно решение по 3-му вопросу (про щиты), можно так(возможно кривое решение).
Из приложенного проекта скопировать:
1) С раздела Game_Battler:
а) attr_reader :shield_list (строка 49)
б) @shield_list = [] (строка 57)
в) метод(функцию) def add_shield(type); def remove_shield(type);
def is_shield_exist(shield_id) (с 79 по 111 строку)
г) Из def make_damage_value(user, item) (строка 412) скопировать с 421-й по 429-ую
д) SACRIFICE_SHIELD_COST = 20.0 (строка 12; указывает сколько маны отнимать
от максимума)
е) MANA_SHIELD_STATE_ID = 26 (строка 13: Номер состояния, включаемого щитом маны)
ж) MANA_SACRIFICE_SHIELD_STATE_ID = 27 (строка 14:
Номер состояния щита снижающего урон)
2) С раздела Scene_ItemBase:
а) $item_targets = item_target_actors (строка 127)
3) С Scene_Battle
а) $item_targets = targets (строка 592)
Ну и, пример активирующих навык предметов можно найти в базе (F9) и там же Common event-ы к ним
Проект с которого копировать