Ich hab deinen Code so in Scene_Map reingepresst und die zwei Stellen korrigiert. Damit funktioniert es.
Code:
class Window_DebugStates < Window_SkillList
  def col_max
    return 1
  end
  def enable?(item)
    return true
  end
  def include?(item)
    return true
  end
  def make_item_list
    @data = $data_states
  end
  def draw_item(index)
    state = @data[index]
    if state
      rect = item_rect(index)
      rect.width -= 4
      draw_item_name(state, rect.x, rect.y, enable?(state))
      infl = inflicted?(state) ? "[ON]" : "[OFF]"
      draw_text(item_rect_for_text(index), infl, 2)
    end
  end
  def inflicted?(state)
    return @actor.state?(state.id)
  end
end

class Scene_Map < Scene_Base
  
  alias start_debugstates start
  def start
    start_debugstates
    @actor = $game_party.members.first
    command_edit_states
  end
  
  def command_edit_states
    @states_window = Window_DebugStates.new(100, 120, 250, 250)
    @states_window.actor = @actor
    @states_window.set_handler(:ok,     method(:on_state_ok))
    @states_window.set_handler(:cancel, method(:on_state_cancel))
    @states_window.activate
    @states_window.refresh
    @states_window.select(1)
    @states_window.actor =  @actor
  end
  
  def on_state_cancel
    
  end
  
  def on_state_ok
    state_id = @states_window.index
    if @actor.state?(state_id)
      @actor.remove_state(state_id)
      @actor.result.removed_states.clear
    else
      @actor.add_state(state_id)
    end
    #@states_window.select(@states_window.index)
    @states_window.refresh
    @states_window.activate
  end
  
end
Eine Zeile hab ich noch eingefügt:
Code:
@actor.result.removed_states.clear
muss nach @actor.remove_state aufgerufen werden, da ein Zustand der beseitigt wurde in der selben "Kampfrunde" nicht noch einmal gesetzt werden darf.

Kannst du mal deinen kompletten Code zeigen?