smctVars.events = {
  ["CHAT_MSG_SYSTEM"] = {
    doSearch = true,
    func = nil,
    groups = {
      {
        name = "Rolls (/roll)",
        description = "Roll messages (only those done using the /roll command).",
        group = "ROLL",
        strings = {
          [1] = smctConvStr2(RANDOM_ROLL_RESULT),
        },
      },
      {
        name = "Money looting",
        description = "Messages related to looting money.",
        group = "MONEY_LOOTING",
        strings = {
          [1] = smctConvStr(ERR_AUTOLOOT_MONEY_S),
          [2] = smctConvStr(LOOT_MONEY_SPLIT),
          [3] = smctConvStr(LOOT_MONEY),
        },
      },
      {
        name = "Duel countdown",
        description = "Countdown messages for when a duel is about to start.",
        group = "DUEL_COUNTDOWN",
        strings = {
          [1] = smctConvStr(DUEL_COUNTDOWN),
        },
      },
      {
        name = "Duels",
        description = "Messages related to duel outcomes.",
        group = "DUEL",
        strings = {
          [1] = string.gsub(DUEL_WINNER_KNOCKOUT, "%%%d$s", "[%%S]+"),
          [2] = string.gsub(DUEL_WINNER_RETREAT, "%%%d$s", "[%%S]+"),
        },
      },
      {
        name = "Hearthstone",
        description = "Message for when you set a new home for your hearthstone.",
        group = "HEARTHSTONE",
        strings = {
          [1] = smctConvStr(ERR_DEATHBIND_SUCCESS_S),
        },
      },
      {
        name = "Drunk (others)",
        description = "Messages related to other people being drunk.",
        group = "DRUNK_OTHER",
        strings = {
          [1] = smctConvStr(DRUNK_MESSAGE_OTHER1),
          [2] = smctConvStr(DRUNK_MESSAGE_OTHER2),
          [3] = smctConvStr(DRUNK_MESSAGE_OTHER3),
          [4] = smctConvStr(DRUNK_MESSAGE_OTHER4),
        },
      },
      {
        name = "Drunk (you)",
        description = "Messages related to you being drunk.",
        group = "DRUNK_SELF",
        strings = {
          [1] = smctConvStr(DRUNK_MESSAGE_SELF1),
          [2] = smctConvStr(DRUNK_MESSAGE_SELF2),
          [3] = smctConvStr(DRUNK_MESSAGE_SELF3),
          [4] = smctConvStr(DRUNK_MESSAGE_SELF4),
        },
      },
      {
        name = "Online/offline",
        description = "Messages related to friends or guildies going online or offline.",
        group = "CONNECTIONS",
        strings = {
          [1] = smctConvStr2(ERR_FRIEND_ONLINE_SS),
          [2] = smctConvStr(ERR_FRIEND_OFFLINE_S),
        },
      },
      {
        name = "Rest state changes",
        description = "Messages related to when your rest state changes (like \"You feel normal\").",
        group = "REST_STATE",
        strings = {
          [1] = smctConvStr(ERR_EXHAUSTION_NORMAL),
          [2] = smctConvStr(ERR_EXHAUSTION_RESTED),
        },
      },
      {
        name = "Raid information",
        description = "Messages related raid instances (reset time, ID and such).",
        group = "RAID_INFO",
        strings = {
          [1] = smctConvStr(INSTANCE_SAVED),
          [2] = smctConvStr(NO_RAID_INSTANCES_SAVED),
          [3] = string.gsub(smctConvStr2(RAID_INSTANCE_INFO_FMT), "%%lx", "[%%S]+"),
          [4] = smctConvStr(RAID_INSTANCE_INFO_HDR),
          [5] = smctConvStr(RAID_INSTANCE_WARNING_HOURS),
          [6] = smctConvStr(RAID_INSTANCE_WARNING_HOURS_P1),
          [7] = smctConvStr(RAID_INSTANCE_WARNING_MIN),
          [8] = smctConvStr(RAID_INSTANCE_WARNING_MIN_P1),
          [9] = smctConvStr(RAID_INSTANCE_WARNING_MIN_SOON),
          [10] = smctConvStr(RAID_INSTANCE_WARNING_MIN_SOON_P1),
          [11] = smctConvStr(RAID_INSTANCE_WELCOME),
        },
      },
      {
        name = "Raid",
        description = "Messages related to raid control.",
        group = "RAID",
        strings = {
          [1] = smctConvStr(ERR_RAID_MEMBER_ADDED_S),
          [2] = smctConvStr(ERR_RAID_MEMBER_REMOVED_S),
          [3] = smctConvStr(ERR_RAID_GROUP_FULL),
          [4] = smctConvStr(ERR_RAID_GROUP_ONLY),
          [5] = smctConvStr(ERR_RAID_YOU_JOINED),
          [6] = smctConvStr(ERR_RAID_YOU_LEFT),
        },
      },
      {
        name = "Group",
        description = "Messages related to group control.",
        group = "GROUP",
        strings = {
          [1] = smctConvStr(ERR_INVITED_TO_GROUP_S),
          [2] = smctConvStr(ERR_INVITE_PLAYER_S),
          [3] = smctConvStr(ERR_GROUP_JOIN_BATTLEGROUND_S),
          [4] = smctConvStr(ERR_JOINED_GROUP_S),
          [5] = smctConvStr(ERR_LEFT_GROUP_S),
          [6] = smctConvStr(ERR_NEW_LEADER_S),
          [7] = smctConvStr(ERR_NEW_LOOT_MASTER_S),
          [8] = smctConvStr(ERR_ALREADY_IN_GROUP_S),
          [9] = smctConvStr(ERR_INVITE_SELF),
          [10] = smctConvStr(ERR_GROUP_DISBANDED),
          [11] = smctConvStr(ERR_GROUP_FULL),
          [12] = smctConvStr(ERR_GROUP_JOIN_BATTLEGROUND_FAIL),
          [13] = smctConvStr(ERR_GROUP_JOIN_BATTLEGROUND_TOO_MANY),
          [14] = smctConvStr(ERR_LEFT_GROUP_YOU),
          [15] = smctConvStr(ERR_NEW_LEADER_YOU),
          [16] = smctConvStr(ERR_UNINVITE_YOU),
          [17] = smctConvStr(ERR_PLAYER_DIED_S),
        },
      },
      {
        name = "Trade",
        description = "Messages related to trading.",
        group = "TRADE",
        strings = {
          [1] = smctConvStr(ERR_INITIATE_TRADE_S),
          [2] = smctConvStr(ERR_TRADE_BLOCKED_S),
          [3] = smctConvStr(ERR_TRADE_REQUEST_S),
          [4] = smctConvStr(ERR_ALREADY_TRADING),
        },
      },
      {
        name = "Away From Keyboard",
        description = "Messages related to AFK mode.",
        group = "AFK",
        strings = {
          [1] = smctConvStr(MARKED_AFK_MESSAGE),
          [2] = smctConvStr(CLEARED_AFK),
          [3] = smctConvStr(MARKED_AFK),
        },
      },
      {
        name = "Do Not Disturb",
        description = "Messages related to DND mode.",
        group = "DND",
        strings = {
          [1] = smctConvStr(MARKED_DND),
          [2] = smctConvStr(CLEARED_DND),
        },
      },
      {
        name = "Auction",
        description = "Messages related to the auction house.",
        group = "AUTCION",
        strings = {
          [1] = smctConvStr(ERR_AUCTION_EXPIRED_S),
          [2] = smctConvStr(ERR_AUCTION_OUTBID_S),
          [3] = smctConvStr(ERR_AUCTION_REMOVED_S),
          [4] = smctConvStr(ERR_AUCTION_SOLD_S),
          [5] = smctConvStr(ERR_AUCTION_WON_S),
          [6] = smctConvStr(ERR_AUCTION_BID_PLACED),
          [7] = smctConvStr(ERR_AUCTION_REMOVED),
          [8] = smctConvStr(ERR_AUCTION_STARTED),
        },
      },
      {
        name = "Area discovering",
        description = "Messages related to discovering new areas.",
        group = "DISCOVER",
        strings = {
          [1] = smctConvStr(ERR_ZONE_EXPLORED),
          [2] = smctConvStr(ERR_ZONE_EXPLORED_XP),
        },
      },
      {
        name = "Loot rules",
        description = "Messages related to setting the loot rules for a group/raid.",
        group = "LOOT_RULES",
        strings = {
          [1] = smctConvStr(ERR_SET_LOOT_FREEFORALL),
          [2] = smctConvStr(ERR_SET_LOOT_GROUP),
          [3] = smctConvStr(ERR_SET_LOOT_MASTER),
          [4] = smctConvStr(ERR_SET_LOOT_NBG),
          [5] = smctConvStr(ERR_SET_LOOT_ROUNDROBIN),
          [6] = smctConvStr(ERR_SET_LOOT_THRESHOLD_S),
          [7] = smctConvStr(ERR_NEW_LOOT_MASTER_S),
        },
      },
      {
        name = "Server",
        description = "Messages from the server (like \"[SERVER] Restart in 10 minutes.\").",
        group = "SERVER",
        strings = {
          [1] = "^%[SERVER%] [%S]+[%s*%S+]*",
        },
      },
      {
        name = "Quest",
        description = "Messages related to quests (like sharing and such).",
        group = "QUESTS",
        strings = {
          [1] = smctConvStr(ERR_QUEST_ACCEPTED_S),
          [2] = smctConvStr(ERR_QUEST_COMPLETE_S),
          [3] = smctConvStr(ERR_QUEST_FAILED_BAG_FULL_S),
          [4] = smctConvStr(ERR_QUEST_FAILED_MAX_COUNT_S),
          [5] = smctConvStr(ERR_QUEST_PUSH_ACCEPTED_S),
          [6] = smctConvStr(ERR_QUEST_PUSH_ALREADY_DONE_S),
          [7] = smctConvStr(ERR_QUEST_PUSH_BUSY_S),
          [8] = smctConvStr(ERR_QUEST_PUSH_DECLINED_S),
          [9] = smctConvStr(ERR_QUEST_PUSH_INVALID_S),
          [10] = smctConvStr(ERR_QUEST_PUSH_LOG_FULL_S),
          [11] = smctConvStr(ERR_QUEST_PUSH_ONQUEST_S),
          [12] = smctConvStr(ERR_QUEST_PUSH_SUCCESS_S),
          [13] = smctConvStr(ERR_QUEST_PUSH_TOO_FAR_S),
          [14] = smctConvStr(ERR_QUEST_REWARD_ITEM_S),
          [15] = smctConvStr(ERR_QUEST_REWARD_MONEY_S),
          [16] = smctConvStr(ERR_QUEST_REWARD_EXP_I),
          [17] = smctConvStr(ERR_QUEST_ALREADY_ON),
          [18] = smctConvStr(ERR_QUEST_FAILED_LOW_LEVEL),
          [19] = smctConvStr(ERR_QUEST_FAILED_MISSING_ITEMS),
          [20] = smctConvStr(ERR_QUEST_FAILED_NOT_ENOUGH_MONEY),
          [21] = smctConvStr(ERR_QUEST_FAILED_WRONG_RACE),
          [22] = smctConvStr(ERR_QUEST_NEED_PREREQS),
          [23] = smctConvStr(ERR_QUEST_ONLY_ONE_TIMED),
        },
      },
      {
        name = "Learning",
        description = "Messages related to learning new spells, abilities and recipes.",
        group = "LEARNING",
        strings = {
          [1] = smctConvStr(ERR_LEARN_ABILITY_S),
          [2] = smctConvStr(ERR_LEARN_RECIPE_S),
          [3] = smctConvStr(ERR_LEARN_SPELL_S),
        },
      },
      {
        name = "Who",
        description = "Messages related to using the /who command.",
        group = "WHO",
        strings = {
          [1] = smctConvStr(WHO_LIST_FORMAT),
          [2] = smctConvStr(WHO_LIST_GUILD_FORMAT),
          [3] = smctConvStr(WHO_NUM_RESULTS),
          [4] = smctConvStr(WHO_NUM_RESULTS_P1),
        },
      },
      {
        name = "Ignore",
        description = "Messages regarding the ignore function.",
        group = "IGNORE",
        strings = {
          [1] = smctConvStr(CHAT_IGNORED),
          [2] = smctConvStr(ERR_IGNORE_ADDED_S),
          [3] = smctConvStr(ERR_IGNORE_ALREADY_S),
          [4] = smctConvStr(ERR_IGNORE_FULL),
          [5] = smctConvStr(ERR_IGNORE_NOT_FOUND),
          [6] = smctConvStr(ERR_IGNORE_REMOVED_S),
          [7] = smctConvStr(ERR_IGNORE_SELF),
          [8] = smctConvStr(ERR_IGNORING_YOU_S),
        },
      },
      {
        name = "Friends",
        description = "Messages related to the friends list.",
        group = "FRIENDS",
        strings = {
          [1] = smctConvStr(ERR_FRIEND_ADDED_S),
          [2] = smctConvStr(ERR_FRIEND_ALREADY_S),
          [3] = smctConvStr(ERR_FRIEND_REMOVED_S),
          [4] = smctConvStr(ERR_FRIEND_DB_ERROR),
          [5] = smctConvStr(ERR_FRIEND_ERROR),
          [6] = smctConvStr(ERR_FRIEND_LIST_FULL),
          [7] = smctConvStr(ERR_FRIEND_NOT_FOUND),
          [8] = smctConvStr(ERR_FRIEND_SELF),
          [9] = smctConvStr(ERR_FRIEND_WRONG_FACTION),
        },
      },
      {
        name = "Guild",
        description = "Messages related to guild control.",
        group = "GUILD_CONTROL",
        strings = {
          [1] = smctConvStr(ERR_INVITED_TO_GUILD_SS),
          [2] = smctConvStr(ERR_INVITE_PLAYER_S),
          [3] = smctConvStr(ERR_GUILD_DECLINE_S),
          [4] = smctConvStr(ERR_GUILD_DEMOTE_SSS),
          [5] = smctConvStr(ERR_GUILD_DISBAND_S),
          [6] = smctConvStr(ERR_GUILD_FOUNDER_S),
          [7] = smctConvStr(ERR_GUILD_INVITE_S),
          [8] = smctConvStr(ERR_GUILD_JOIN_S),
          [9] = smctConvStr(ERR_GUILD_LEADER_CHANGED_SS),
          [10] = smctConvStr(ERR_GUILD_LEADER_IS_S),
          [11] = smctConvStr(ERR_GUILD_LEADER_S),
          [12] = smctConvStr(ERR_GUILD_LEAVE_S),
          [13] = smctConvStr(ERR_GUILD_NAME_EXISTS_S),
          [14] = smctConvStr(ERR_GUILD_PLAYER_NOT_FOUND_S),
          [15] = smctConvStr(ERR_GUILD_PLAYER_NOT_IN_GUILD_S),
          [16] = smctConvStr(ERR_GUILD_PROMOTE_SSS),
          [17] = smctConvStr(ERR_GUILD_QUIT_S),
          [18] = smctConvStr(ERR_GUILD_RANK_TOO_HIGH_S),
          [19] = smctConvStr(ERR_GUILD_RANK_TOO_LOW_S),
          [20] = smctConvStr(ERR_GUILD_REMOVE_SS),
          [21] = smctConvStr(ERR_GUILD_PLAYER_NOT_FOUND_S),
          [22] = smctConvStr(ERR_ALREADY_INVITED_TO_GUILD_S),
          [23] = smctConvStr(ERR_ALREADY_IN_GUILD_S),
          [24] = smctConvStr(ERR_INVITED_TO_GUILD),
          [25] = smctConvStr(ERR_GUILDEMBLEM_NOGUILD),
          [26] = smctConvStr(ERR_GUILD_ACCEPT),
          [27] = smctConvStr(ERR_GUILD_DISBANDED),
          [28] = smctConvStr(ERR_GUILD_DISBAND_SELF),
          [29] = smctConvStr(ERR_GUILD_INTERNAL),
          [30] = smctConvStr(ERR_GUILD_LEADER_LEAVE),
          [31] = smctConvStr(ERR_GUILD_LEADER_SELF),
          [32] = smctConvStr(ERR_GUILD_LEAVE_RESULT),
          [33] = smctConvStr(ERR_GUILD_NOT_ALLIED),
          [34] = smctConvStr(ERR_GUILD_PERMISSIONS),
          [35] = smctConvStr(ERR_GUILD_PLAYER_NOT_IN_GUILD),
          [36] = smctConvStr(ERR_GUILD_RANKS_LOCKED),
          [37] = smctConvStr(ERR_GUILD_RANK_IN_USE),
          [38] = smctConvStr(ERR_GUILD_REMOVE_SELF),
          [39] = smctConvStr(ERR_ALREADY_IN_GUILD),
        },
      },
      {
        name = "Meeting stone",
        description = "Messages related to the meeting stone.",
        group = "MEETING_STONE",
        strings = {
          [1] = smctConvStr(ERR_MEETING_STONE_GROUP_FULL),
          [2] = smctConvStr(ERR_MEETING_STONE_INVALID_LEVEL),
          [3] = smctConvStr(ERR_MEETING_STONE_IN_PROGRESS),
          [4] = smctConvStr(ERR_MEETING_STONE_IN_QUEUE_S),
          [5] = smctConvStr(ERR_MEETING_STONE_LEFT_QUEUE_S),
          [6] = smctConvStr(ERR_MEETING_STONE_MEMBER_ADDED_S),
          [7] = smctConvStr(ERR_MEETING_STONE_MEMBER_STILL_IN_QUEUE),
          [8] = smctConvStr(ERR_MEETING_STONE_MUST_BE_LEADER),
          [9] = smctConvStr(ERR_MEETING_STONE_NOT_LEADER),
          [10] = smctConvStr(ERR_MEETING_STONE_NO_RAID_GROUP),
          [11] = smctConvStr(ERR_MEETING_STONE_OTHER_MEMBER_LEFT),
          [12] = smctConvStr(ERR_MEETING_STONE_PARTY_KICKED_FROM_QUEUE),
          [13] = smctConvStr(ERR_MEETING_STONE_SUCCESS),
        },
      },
    },
  },
  ["CHAT_MSG_CHANNEL_LIST"] = {
    doSearch = false,
    func = nil,
    groups = {
      {
        name = "Channel list",
        description = "Messages related to channel listings.",
        group = "CHAT_MSG_CHANNEL_LIST",
      },
    },
  },
  ["CHAT_MSG_CHANNEL_NOTICE"] = {
    doSearch = true,
    func = smctChannelNotice,
    groups = {
      {
        name = "Channel notices",
        description = "Messages related to channel join/leave/change.",
        group = "CHAT_MSG_CHANNEL_NOTICE",
        strings = {
          [1] = "YOU_CHANGED",
          [2] = "YOU_JOINED",
          [3] = "YOU_LEFT",
          [4] = "SUSPENDED",
        },
      },
    },
  },
  ["CHAT_MSG_BG_SYSTEM_ALLIANCE"] = {
    doSearch = false,
    func = smctBGMessageRerouter,
    groups = {
      {
        name = "BG: Alliance",
        description = "Alliance messages inside battlegrounds.",
        group = "CHAT_MSG_BG_SYSTEM_ALLIANCE",
      },
    },
  },
  ["CHAT_MSG_BG_SYSTEM_HORDE"] = {
    doSearch = false,
    func = smctBGMessageRerouter,
    groups = {
      {
        name = "BG: Horde",
        description = "Horde messages inside battlegrounds.",
        group = "CHAT_MSG_BG_SYSTEM_HORDE",
      },
    },
  },
  ["CHAT_MSG_BG_SYSTEM_NEUTRAL"] = {
    doSearch = false,
    func = smctBGMessageRerouter,
    groups = {
      {
        name = "BG: Neutral",
        description = "Neutral messages inside battelgrounds (like \"Battle starting in...\").",
        group = "CHAT_MSG_BG_SYSTEM_NEUTRAL",
      },
    },
  },
  ["CHARACTER_POINTS_CHANGED"] = {
    doSearch = false,
    func = smctCharacterPointsChanged,
    groups = {
      {
        name = "Character progress",
        description = "Messages related to when you level or otherwise do progress with your character.",
        group = "CHARACTER_PROGRESS",
      },
    },
  },
  ["TIME_PLAYED_MSG"] = {
    doSearch = false,
    func = smctTimePlayed,
    groups = {
      {
        name = "Time played",
        description = "Message for showing your time played.",
        group = "TIME_PLAYED",
      },
    },
  },
  ["PLAYER_LEVEL_UP"] = {
    doSearch = false,
    func = smctPlayerLevelUp,
    groups = {
      {
        name = "Character progress",
        description = "Messages related to when you level or otherwise do progress with your character.",
        group = "CHARACTER_PROGRESS",
      },
    },
  },
  ["CHAT_MSG_LOOT"] = {
    doSearch = true,
    func = nil,
    groups = {
      {
        name = "Rolls (roll system)",
        description = "Roll messages related to the in-game roll system.",
        group = "CHAT_MSG_LOOT",
        strings = {
          [1] = smctConvStr2(LOOT_ROLL_ROLLED),
          [2] = smctConvStr2(LOOT_ROLL_ROLLED_GREED),
          [3] = smctConvStr2(LOOT_ROLL_ROLLED_GREED_SELF),
          [4] = smctConvStr2(LOOT_ROLL_ROLLED_NEED),
          [5] = smctConvStr2(LOOT_ROLL_ROLLED_NEED_SELF),
          [6] = smctConvStr2(LOOT_ROLL_ROLLED_SELF),
        },
      },
      {
        name = "Rolls (roll system (type))",
        description = "Roll messages related to what type of roll people choose.",
        group = "CHAT_MSG_LOOT_SMCT1",
        strings = {
          [1] = smctConvStr2(LOOT_ROLL_ALL_PASSED),
          [2] = smctConvStr2(LOOT_ROLL_GREED),
          [3] = smctConvStr2(LOOT_ROLL_GREED_SELF),
          [4] = smctConvStr2(LOOT_ROLL_NEED),
          [5] = smctConvStr2(LOOT_ROLL_NEED_SELF),
          [6] = smctConvStr2(LOOT_ROLL_PASSED),
          [7] = smctConvStr2(LOOT_ROLL_PASSED_SELF),
        },
      },
    },
  },
};
