var rconParser;
var eventParser;

var plugin = {
    author: 'RaidMax',
    version: 0.1,
    name: 'Black Ops 3 Parser',
    isParser: true,

    onEventAsync: function (gameEvent, server) {
    },

    onLoadAsync: function (manager) {
        rconParser = manager.GenerateDynamicRConParser(this.name);
        eventParser = manager.GenerateDynamicEventParser(this.name);

        rconParser.Configuration.Status.Pattern                 = '^ *([0-9]+) +-?([0-9]+) +((?:[A-Z]+|[0-9]+)) +((?:[a-z]|[0-9]){8,32}|(?:[a-z]|[0-9]){8,32}|bot[0-9]+|(?:[0-9]+)) *(.{0,32}) +(\\d+\\.\\d+\\.\\d+.\\d+\\:-*\\d{1,5}|0+.0+:-*\\d{1,5}|loopback|unknown)(?:\\([0-9]+\\)) +(-*[0-9]+) *$'
        rconParser.Configuration.StatusHeader.Pattern           = 'num +score +ping +xuid +name +address +qport';
        rconParser.Configuration.CommandPrefixes.Kick           = 'clientkick {0}';
        rconParser.Configuration.CommandPrefixes.Ban            = 'clientkick {0}';
        rconParser.Configuration.CommandPrefixes.TempBan        = 'tempbanclient {0}';
        rconParser.Configuration.CommandPrefixes.RConCommand    = '\xff\xff\xff\xff\x00{0} {1}';
        rconParser.Configuration.CommandPrefixes.RConGetDvar    = '\xff\xff\xff\xff\x00{0} {1}';
        rconParser.Configuration.CommandPrefixes.RConSetDvar    = '\xff\xff\xff\xff\x00{0} set {1}';
        rconParser.Configuration.CommandPrefixes.RConResponse   = '\xff\xff\xff\xff\x01';
        rconParser.Configuration.CommandPrefixes.RConGetInfo    = undefined; // disables this, because it's useless on T7

        rconParser.Configuration.Status.AddMapping(105, 6); // ip address
        rconParser.Version = '[local] ship win64 CODBUILD8-764 (3421987) Mon Dec 16 10:44:20 2019 10d27bef';
        rconParser.GameName = 8; // BO3
        rconParser.CanGenerateLogPath = false;

        eventParser.Version = '[local] ship win64 CODBUILD8-764 (3421987) Mon Dec 16 10:44:20 2019 10d27bef';
        eventParser.GameName = 8; // BO3
        eventParser.Configuration.GameDirectory = 'usermaps';
        eventParser.Configuration.Say.Pattern = '^(chat|chatteam);(?:[0-9]+);([0-9]+);([0-9]+);(.+);(.*)$';

    },

    onUnloadAsync: function () {
    },

    onTickAsync: function (server) {
    }
};