Подскажите, как исправить этот скрипт? Он попросту не работает и вызывает ошибку при запуске.
По идее он должен выполнять такие задачи:

1) проверять "примечания" в состоянии на наличие вот такого текста:
<IR Buffs timer> 5, 47, 12 #все цифры тут для примера.
5 - это время в секундах, 47 это накладываемое новое состояние, 12 это вызываемое общее событие (если наложение состояния или вызов общего события не нужны, вместо них пишется "ntg".

2) скрипт должен по прошествии указанного в состоянии времени накладывать на того же героя ещё одно состояние, вызывать общее событие или что-то одно из этого.
если такое состояние уже есть на герое - ничего не накладывается.
если состояние-родитель закончилось раньше времени в таймере, или состояние сняли другим способом, новых состояний не накладывается и общее событие не вызывается.

смысл:
состояние-родитель как бы считает время, как долго оно находится на герое, и когда указанное количество времени прошло, либо накладывает ещё один другой статус, либо вызывает общее событие или и то и другое сразу.

Спойлер скрипт:
Код:
# Iron Raven's Buffs Timer Module
module IR_BUFFS_TIMER
  def self.check_notes(note)
    # Читаем примечание
    if note =~ /<\s*IR\s+Buffs\s+timer\s*>(\s*\d+\s*,\s*(ntg|\d+)\s*,\s*(ntg|\d+)\s*)/
      values = $1.strip.split(",").map(&:strip)
      timer_value = values[0].to_i
      new_buff_id = values[1] == "ntg" ? nil : values[1].to_i
      common_event_id = values[2] == "ntg" ? nil : values[2].to_i
      return [timer_value, new_buff_id, common_event_id]
    end
    return nil
  end

  def self.check_statuses
    members = $game_party.members
    members.each do |actor|
      actor.states.each do |state|
        note_data = check_notes(state.note)
        next if note_data.nil?
        timer_value, new_buff_id, common_event_id = note_data
        duration = actor.state_duration(state.id)
        next unless duration > timer_value
        handle_buff_timer(actor, state.id, new_buff_id, common_event_id)
      end
    end
  end

  def self.handle_buff_timer(actor, buff_id, new_buff_id, common_event_id)
    if common_event_id
      $game_temp.reserve_common_event(common_event_id)
    end
    if new_buff_id && !actor.states.include?(new_buff_id)
      actor.add_state(new_buff_id)
    end
    actor.set_state_timer(buff_id, 0)
  end
end

# Параллельный процесс для проверки статусов
class Scene_Map
  alias ir_map_update update
  def update
    ir_map_update
    IR_BUFFS_TIMER.check_statuses
  end
end