diff --git a/bg/all.go b/bg/all.go index fef0b45..cb65fda 100644 --- a/bg/all.go +++ b/bg/all.go @@ -8,6 +8,11 @@ import ( "strings" ) +type BG interface { + Write(w io.Writer) error + WriteJson(w io.Writer) error +} + func min(x, y int) int { if x < y { return x diff --git a/bg/bcs.go b/bg/bcs.go new file mode 100644 index 0000000..1bed74e --- /dev/null +++ b/bg/bcs.go @@ -0,0 +1,701 @@ +package bg + +import ( + "bufio" + "encoding/json" + "io" + "unicode" +) + +type BCS struct { + inner string +} + +type bscTokenTypes uint32 + +const ( + /** End of File. */ + EOF bscTokenTypes = 0 + /** RegularExpression Id. */ + SINGLE_LINE_COMMENT bscTokenTypes = 6 + /** RegularExpression Id. */ + MULTI_LINE_COMMENT bscTokenTypes = 8 + /** RegularExpression Id. */ + IF bscTokenTypes = 10 + /** RegularExpression Id. */ + THEN bscTokenTypes = 11 + /** RegularExpression Id. */ + RESPONSE bscTokenTypes = 12 + /** RegularExpression Id. */ + END bscTokenTypes = 13 + /** RegularExpression Id. */ + NUMBER_LITERAL bscTokenTypes = 14 + /** RegularExpression Id. */ + DEC_LITERAL bscTokenTypes = 15 + /** RegularExpression Id. */ + HEX_LITERAL bscTokenTypes = 16 + /** RegularExpression Id. */ + BIN_LITERAL bscTokenTypes = 17 + /** RegularExpression Id. */ + STRING_LITERAL bscTokenTypes = 18 + /** RegularExpression Id. */ + STRING_QUOTE bscTokenTypes = 19 + /** RegularExpression Id. */ + STRING_PERCENT bscTokenTypes = 20 + /** RegularExpression Id. */ + STRING_POUND bscTokenTypes = 21 + /** RegularExpression Id. */ + STRING_TILDE bscTokenTypes = 22 + /** RegularExpression Id. */ + STRING_MULTI_TILDE bscTokenTypes = 23 + /** RegularExpression Id. */ + IDENTIFIER bscTokenTypes = 24 + /** RegularExpression Id. */ + IDENTIFIER_ESCAPED bscTokenTypes = 25 + /** RegularExpression Id. */ + LETTER bscTokenTypes = 26 + /** RegularExpression Id. */ + SPECIAL_LETTER bscTokenTypes = 27 + /** RegularExpression Id. */ + DIGIT bscTokenTypes = 28 + /** RegularExpression Id. */ + LPAREN bscTokenTypes = 29 + /** RegularExpression Id. */ + RPAREN bscTokenTypes = 30 + /** RegularExpression Id. */ + LBRACKET bscTokenTypes = 31 + /** RegularExpression Id. */ + RBRACKET bscTokenTypes = 32 + /** RegularExpression Id. */ + COMMA bscTokenTypes = 33 + /** RegularExpression Id. */ + DOT bscTokenTypes = 34 + /** RegularExpression Id. */ + BANG bscTokenTypes = 35 + /** RegularExpression Id. */ + OR bscTokenTypes = 36 + /** RegularExpression Id. */ + MINUS bscTokenTypes = 37 + /** RegularExpression Id. */ + PLUS bscTokenTypes = 38 + /** RegularExpression Id. */ + POUND bscTokenTypes = 39 +) + +var bcsTypeName = map[bscTokenTypes]string{ + EOF: "", + 1: "\" \"", + 2: "\"\\t\"", + 3: "\"\\n\"", + 4: "\"\\r\"", + 5: "\"\\f\"", + SINGLE_LINE_COMMENT: "", + 7: "\"/*\"", + MULTI_LINE_COMMENT: "\"*/\"", + 9: "", + IF: "\"IF\"", + THEN: "\"THEN\"", + RESPONSE: "\"RESPONSE\"", + END: "\"END\"", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"(\"", + "\")\"", + "\"[\"", + "\"]\"", + "\",\"", + "\".\"", + "\"!\"", + "\"|\"", + "\"-\"", + "\"+\"", + "\"#\"", +} + +/* + + fn_spec_re = re.compile ('([A-Za-z0-9_]+)\s*\((.*)\)') + + self.c = None + self.token = None + self.ids_codes = {} + + + def read_token (self, stream): + def getc (): + if self.c is None: + return stream.get_char () + else: + c = self.c + self.c = None + return c + + def nextc (): + if self.c is None: + self.c = stream.get_char () + return self.c + else: + return self.c + + # Skip over spaces and newlines + c = getc () + while c.isspace (): + if c == "\n": + c = getc () + + if c == '': + return None + + elif c == '[': + #res = c + res = '' + while True: + c = getc () + if c == ']': + break + res = res + c + res2 = res.split (',') + if len (res2) != 2: + res2 = res.split ('.') + if len (res2) != 4: + raise ValueError ("[] len") + res = [ int (n) for n in res2 ] + return res + + elif c == '"': + res = c + while True: + c = getc () + res = res + c + if c == '"': + break + return res + + elif c.isdigit () or (c == '-' and nextc ().isdigit ()): + if c == '-': + signum = -1 + c = getc () + else: + signum = 1 + + res = c + while nextc ().isdigit (): + res = res + getc () + res = signum * int (res) + return res + + elif c.isupper (): + res = c + while nextc ().isalpha (): + res = res + getc () + return res + + else: + raise ValueError ("Unknown token: %s (at line %d)" %(c, self.lineno)) + + + def get_token (self, stream): + if self.token is None: + tok = self.read_token (stream) + //p='.' + else: + tok = self.token + self.token = None + //p='x' + + //print '>>' + p+':'+repr(tok) + '<<' + return tok + + def next_token (self, stream): + if self.token is None: + self.token = self.read_token (stream) + return self.token + else: + return self.token + + def expect_token (self, stream, tok): + rtok = self.get_token (stream) + if rtok != tok: + raise ValueError ("Expected %s, got %s (at line %d)" %(tok, str (rtok), self.lineno)) + return rtok + + + def read (self, stream): + // -> SC + // -> + // -> SC + + obj = [] + + obj.append (self.expect_token (stream, 'SC')) + while self.next_token (stream) == 'CR': + obj.append (self.read_condition_response_block (stream)) + self.expect_token (stream, 'SC') + + self.script = obj + return self + + + def read_condition_response_block (self, stream): + // -> CR + // -> + // -> CR + + obj = [] + + obj.append (self.expect_token (stream, 'CR')) + while self.next_token (stream) == 'CO': + obj.append (self.read_condition (stream)) + obj.append (self.read_response_set (stream)) + self.expect_token (stream, 'CR') + + return obj + + + def read_condition (self, stream): + // -> CO + // -> + // -> CO + + obj = [] + + obj.append (self.expect_token (stream, 'CO')) + while self.next_token (stream) == 'TR': + obj.append (self.read_trigger (stream)) + self.expect_token (stream, 'CO') + + return obj + + def read_trigger (self, stream): + # pst: id, 4*I, point, 2*S, O + # FIXME: not correct, one of the ints is flags field + obj = [] + + obj.append (self.expect_token (stream, 'TR')) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + + if self.type == 'pst': + obj.append (self.get_token (stream)) + + obj.append (self.read_object (stream)) + self.expect_token (stream, 'TR') + + self.add_ids_code('TRIGGER', obj[1]) + #print core.id_to_symbol ('TRIGGER', obj[1]) + return obj + + def read_response_set (self, stream): + // -> RS + // -> + // -> RS + + obj = [] + obj.append (self.expect_token (stream, 'RS')) + while self.next_token (stream) == 'RE': + obj.append (self.read_response (stream)) + self.expect_token (stream, 'RS') + + return obj + + def read_response (self, stream): + // -> RE int + // -> + // -> RE + // FIXME: this is different from what is described in IESDP, where + // each response has only one action, but e.g. look at PST's 0202FD1.BCS + + obj = [] + obj.append (self.expect_token (stream, 'RE')) + obj.append (self.get_token (stream)) + while self.next_token (stream) == 'AC': + obj.append (self.read_action (stream)) + self.expect_token (stream, 'RE') + + return obj + + def read_action (self, stream): + #pst: id, 3*O, 5*I, 2*S + obj = [] + obj.append (self.expect_token (stream, 'AC')) + obj.append (self.get_token (stream)) + obj.append (self.read_object (stream)) + obj.append (self.read_object (stream)) + obj.append (self.read_object (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + self.expect_token (stream, 'AC') + self.add_ids_code('ACTION', obj[1]) + return obj + + + def read_object (self, stream): + obj = [] + # PST: id, 13*I, rect, S + obj.append (self.expect_token (stream, 'OB')) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + // print obj + // if self.next_token (stream) == 'OB': + // print "short object" + // self.get_token (stream) + // return obj + + if self.type == 'pst': + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + obj.append (self.get_token (stream)) + + self.expect_token (stream, 'OB') + + // print core.id_to_symbol ('OBJECT', obj[10]) + return obj + + def printme (self): + odef = { + 'pst_tr': { + 'id': (0,), + 'I': (1, 3), + 'not': (2,), + 'P': (5,), + 'S': (6,7), + 'O': (8,), + }, + 'bg2_tr': { // FIXME: not tested, bogus + 'id': (0,), + 'I': (1, 3), + 'not': (2,), + 'S': (5,6), + 'O': (7,), + }, + 'pst_ac': { + 'id': (0,), + 'O': (2,3,1), + 'I': (4, 7, 8), + 'P': (5,), # actually, it consists of list of two integers + 'S': (9, 10), + }, + } + + // FIXME: globalsetglobal, globalorglobal, ... + split_string_fns = ('global', + 'globalgt', + 'globallt', + 'globalband', + 'globalbor', + 'globalmin', + 'globalmax', + 'globalshl', + 'globalshr', + 'globalxor', + 'bitcheck', + 'bitcheckexact', + + 'globalset', + 'setglobal', + 'incrementglobal', + 'bitset', + 'bitclear') + + def resolve_object (obj): + res = [] + if self.type == 'pst': + if obj[1] != 0: + res.append (core.id_to_symbol ('EA', obj[1])) + if obj[2] != 0: + res.append (core.id_to_symbol ('FACTION', obj[2])) + if obj[3] != 0: + res.append (core.id_to_symbol ('TEAM', obj[3])) + if obj[4] != 0: + res.append (core.id_to_symbol ('GENERAL', obj[4])) + if obj[5] != 0: + res.append (core.id_to_symbol ('RACE', obj[5])) + if obj[6] != 0: + res.append (core.id_to_symbol ('CLASS', obj[6])) + if obj[7] != 0: + res.append (core.id_to_symbol ('SPECIFIC', obj[7])) + if obj[8] != 0: + res.append (core.id_to_symbol ('GENDER', obj[8])) + if obj[9] != 0: + res.append (core.id_to_symbol ('ALIGNMEN', obj[9])) + else: + if obj[1] != 0: + res.append (core.id_to_symbol ('EA', obj[1])) + if obj[2] != 0: + res.append (core.id_to_symbol ('GENERAL', obj[2])) + if obj[3] != 0: + res.append (core.id_to_symbol ('RACE', obj[3])) + if obj[4] != 0: + res.append (core.id_to_symbol ('CLASS', obj[4])) + if obj[5] != 0: + res.append (core.id_to_symbol ('SPECIFIC', obj[5])) + if obj[6] != 0: + res.append (core.id_to_symbol ('GENDER', obj[6])) + if obj[7] != 0: + res.append (core.id_to_symbol ('ALIGNMEN', obj[7])) + + if res: + res = '[' + '.'.join (res) + ']' + else: + res = None + + res2 = None + if self.type == 'pst': + if obj[10] != 0: + res2 = core.id_to_symbol ('OBJECT', obj[10]) + if obj[11] != 0: + res2 = core.id_to_symbol ('OBJECT', obj[11]) + '(' + res2 +')' + if obj[12] != 0: + res2 = core.id_to_symbol ('OBJECT', obj[12]) + '(' + res2 +')' + if obj[13] != 0: + res2 = core.id_to_symbol ('OBJECT', obj[13]) + '(' + res2 +')' + if obj[14] != 0: + res2 = core.id_to_symbol ('OBJECT', obj[14]) + '(' + res2 +')' + else: + if obj[8] != 0: + res2 = core.id_to_symbol ('OBJECT', obj[8]) + if obj[9] != 0: + res2 = core.id_to_symbol ('OBJECT', obj[9]) + '(' + res2 +')' + if obj[10] != 0: + res2 = core.id_to_symbol ('OBJECT', obj[10]) + '(' + res2 +')' + if obj[11] != 0: + res2 = core.id_to_symbol ('OBJECT', obj[11]) + '(' + res2 +')' + if obj[12] != 0: + res2 = core.id_to_symbol ('OBJECT', obj[12]) + '(' + res2 +')' + + # FIXME: what about area?? [-1.-1.-1.-1] (15) + res3 = None + if self.type == 'pst': + if obj[16] != '""': + res3 = obj[16] + else: + if obj[13] != '""': + res3 = obj[13] + + if (res and res2) or (res and res3) or (res2 and res3): + raise ValueError ("Error: More values for object: " + repr (res) + '//' + repr (res2) + '//' + repr (res3)) + + if res: + return res + elif res2: + return res2 + elif res3: + return res3 + else: + return "'OBJ" + + + def resolve_args (fn_spec, obj_type, obj): + mo = self.fn_spec_re.match (fn_spec) + fn_name = mo.groups ()[0] + args = mo.groups ()[1].split (",") + arg_indices = {} + res_args = [] + + split_string_arg = fn_name.lower () in split_string_fns + + for arg in args: + // print 'arg', fn_spec, arg + if arg == '': + break + type, name = arg.split (':') + name, file = name.split ('*') + + if arg_indices.has_key (type): + arg_indices[type] = index = arg_indices[type] + 1 + else: + arg_indices[type] = index = 0 + + // print 'ot:', obj_type, 'type;', type, 'index:', index + if not split_string_arg or type != 'S' or index == 0: + aindex = odef[self.type + '_' + obj_type][type][index] + 1 + else: + aindex = odef[self.type + '_' + obj_type][type][index-1] + 1 + + + if type == 'I': + v = str (obj[aindex]) + // print 'Lookup', file, tr[index + 1] + if file: + v = core.id_to_symbol (file, obj[aindex]) + res_args.append (v) + + elif type == 'P': + res_args.append ('[%d.%d]' %(obj[aindex][0], obj[aindex][1])) + + elif type == 'S': + if split_string_arg: + if index == 0: + res_args.append ('"' + obj[aindex][7:]) + res_args.append (obj[aindex][0:7] + '"') + elif index == 1: + pass + else: + res_args.append (obj[aindex]) + else: + res_args.append (obj[aindex]) + + elif type == 'O': + res_args.append (resolve_object (obj[aindex])) + + return fn_name, res_args + + + + + for cr in self.script[1:]: + co = cr[1] + rs = cr[2] + print('IF') + for tr in co[1:]: + fn_spec = core.id_to_symbol ('TRIGGER', tr[1]) + neg = ('!', '')[not tr[3]] # FIXME: hack, use odef[] + + print fn_spec, tr + fn_name, res_args = resolve_args (fn_spec, 'tr', tr) + print(' ' + neg + fn_name + '(' + ','.join (res_args) + ')') + // print ' TR', tr_name + '#0x%04x' %tr[1] + print('THEN') + for re in rs[1:]: + print(' RESPONSE #%d' %re[1]) + for ac in re[2:]: + // print 'AC', ac[1] + fn_spec = core.id_to_symbol ('ACTION', ac[1]) + fn_name, res_args = resolve_args (fn_spec, 'ac', ac) + // print 'res_args:', res_args + print(' ' + fn_name + '(' + ','.join ([ str (a) for a in res_args]) + ')') + print('END\n') + + + def add_ids_code (self, ids, id): + ids = ids.upper () + if not self.ids_codes.has_key (ids): + self.ids_codes[ids] = {} + if not self.ids_codes[ids].has_key (id): + self.ids_codes[ids][id] = 1 + else: + self.ids_codes[ids][id] += 1 + + def uses_ids_code (self, ids, code): + try: + return self.ids_codes[ids.upper ()][code] + except: + return False +*/ + +/* +res = ” +while True: + + c = getc () + if c == ']': + break + res = res + c + +res2 = res.split (',') +if len (res2) != 2: + + res2 = res.split ('.') + if len (res2) != 4: + raise ValueError ("[] len") + +return [ int (n) for n in res2 ] +*/ +func parseBrackets(reader *bufio.Reader) (*[]string, error) { + out := []string{} + for { + r, _, err := reader.ReadRune() + if err != nil { + return nil, err + } + if r == ']' { + break + } + out = append(out, string(r)) + } + return &out, nil +} + +func OpenBcs(reader io.ReadSeeker) (*BCS, error) { + bcs := BCS{""} + br := bufio.NewReader(reader) + for { + r, _, err := br.ReadRune() + if err != nil { + break + } + if unicode.IsControl(r) || unicode.IsSpace(r) { + bcs.inner += string(r) + } + // elif c == '[': + // #res = c + // res = '' + // while True: + // c = getc() + // if c == ']': + // break + // res = res + c + // res2 = res.split (',') + // if len (res2) != 2: + // res2 = res.split ('.') + // if len (res2) != 4: + // raise ValueError ("[] len") + // res = [ int (n) for n in res2 ] + // return res + if r == '[' { + buff, err := parseBrackets(br) + if err != nil { + return nil, err + } + for _, part := range *buff { + bcs.inner += part + } + + } + } + return &bcs, nil +} + +func (bcs *BCS) WriteJson(w io.Writer) error { + bytes, err := json.MarshalIndent(bcs, "", "\t") + if err != nil { + return err + } + + _, err = w.Write(bytes) + return err +} diff --git a/bg/bcs_test.go b/bg/bcs_test.go new file mode 100644 index 0000000..4de3986 --- /dev/null +++ b/bg/bcs_test.go @@ -0,0 +1,43 @@ +package bg + +import ( + "fmt" + "io/fs" + "os" + "path/filepath" + "testing" +) + +const BCS_FOLDER = "bcs" + +var ( + bcsFixtures = filepath.Join(filepath.Dir(b), "../fixtures", BCS_FOLDER) +) + +func TestBcs(t *testing.T) { + err := filepath.WalkDir(bcsFixtures, + func(path string, d fs.DirEntry, err error) error { + if d.IsDir() { + return nil + } + if err != nil { + return err + } + println(d.Name()) + file, err := os.Open(path) + if err != nil { + return err + } + bcs, err := OpenBcs(file) + if err != nil { + return err + } + if bcs == nil { + return fmt.Errorf("Effects nil failed") + } + return nil + }) + if err != nil { + t.Fatalf("Failed to parse effects files, %+v", err) + } +} diff --git a/bg/tis.go b/bg/tis.go index 898cd12..1f6a906 100644 --- a/bg/tis.go +++ b/bg/tis.go @@ -283,8 +283,7 @@ func (tis *Tis) Write(w io.Writer) error { } func NewTis() *Tis { - tis := Tis{version: 1} - return &tis + return &Tis{version: 1} } func OpenTis(r io.ReadSeeker, name string, root string) (*Tis, error) { diff --git a/fixtures/bcs/ACHIEVEM.BAF b/fixtures/bcs/ACHIEVEM.BAF new file mode 100644 index 0000000..7040947 --- /dev/null +++ b/fixtures/bcs/ACHIEVEM.BAF @@ -0,0 +1,816 @@ +IF + Global("ACH_FRIEND_OF_DARKNESS","GLOBAL",0) + Global("BodhiJob","GLOBAL",5) + GlobalGT("AsylumPlot","GLOBAL",0) +THEN + RESPONSE #100 + SetGlobal("ACH_FRIEND_OF_DARKNESS","GLOBAL",1) +END + +IF + Global("ACH_SHADOW_ALLY","GLOBAL",0) + Global("AranJob","GLOBAL",3) + GlobalGT("AsylumPlot","GLOBAL",0) +THEN + RESPONSE #100 + SetGlobal("ACH_SHADOW_ALLY","GLOBAL",1) +END + +IF + Global("ACH_GRANDMASTER","GLOBAL",0) + OR(20) + Proficiency(Player1,PROFICIENCYBASTARDSWORD,5) + Proficiency(Player1,PROFICIENCYSHORTSWORD,5) + Proficiency(Player1,PROFICIENCYAXE,5) + Proficiency(Player1,PROFICIENCYTWOHANDEDSWORD,5) + Proficiency(Player1,PROFICIENCYKATANA,5) + Proficiency(Player1,PROFICIENCYSCIMITARWAKISASHININJATO,5) + Proficiency(Player1,PROFICIENCYDAGGER,5) + Proficiency(Player1,PROFICIENCYWARHAMMER,5) + Proficiency(Player1,PROFICIENCYSPEAR,5) + Proficiency(Player1,PROFICIENCYHALBERD,5) + Proficiency(Player1,PROFICIENCYFLAILMORNINGSTAR,5) + Proficiency(Player1,PROFICIENCYMACE,5) + Proficiency(Player1,PROFICIENCYQUARTERSTAFF,5) + Proficiency(Player1,PROFICIENCYCROSSBOW,5) + Proficiency(Player1,PROFICIENCYLONGBOW,5) + Proficiency(Player1,PROFICIENCYSHORTBOW,5) + Proficiency(Player1,PROFICIENCYDART,5) + Proficiency(Player1,PROFICIENCYSLING,5) + Proficiency(Player1,PROFICIENCYLONGSWORD,5) + Proficiency(Player1,PROFICIENCYCLUB,5) +THEN + RESPONSE #100 + SetGlobal("ACH_GRANDMASTER","GLOBAL",1) +END + +IF + !StoryModeOn() + Delay(10) + Global("ACH_GODLIKE","GLOBAL",0) + OR(6) + CheckStatGT(Player1,24,STR) + CheckStatGT(Player1,24,INT) + CheckStatGT(Player1,24,WIS) + CheckStatGT(Player1,24,DEX) + CheckStatGT(Player1,24,CON) + CheckStatGT(Player1,24,CHR) +THEN + RESPONSE #100 + SetGlobal("ACH_GODLIKE","GLOBAL",1) +END + +IF + Global("ACH_UNTOUCHABLE","GLOBAL",0) + CheckStatLT(Player1,-14,ARMORCLASS) +THEN + RESPONSE #100 + SetGlobal("ACH_UNTOUCHABLE","GLOBAL",1) +END + +IF + Global("ACH_HOMECOMING","GLOBAL",0) + Global("JanLissaPlot","GLOBAL",21) +THEN + RESPONSE #100 + SetGlobal("ACH_HOMECOMING","GLOBAL",1) +END + +IF + Global("ACH_FAMILY_MATTERS","GLOBAL",0) + OR(2) + Global("LadyMaria","GLOBAL",4) + Global("LadyMaria","GLOBAL",5) +THEN + RESPONSE #100 + SetGlobal("ACH_FAMILY_MATTERS","GLOBAL",1) +END + +IF + Global("ACH_THE_BOOK","GLOBAL",0) + Global("KorganNoKillShag","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_THE_BOOK","GLOBAL",1) +END + +IF + Global("ACH_SISTERS","GLOBAL",0) + Global("palacured","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_SISTERS","GLOBAL",1) +END + +IF + Global("ACH_ABSOLUTE_POWER","GLOBAL",0) + Global("KishNaliaThankedPC","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_ABSOLUTE_POWER","GLOBAL",1) +END + +IF + Global("ACH_THE_FIRST_CHALLENGE","GLOBAL",0) + Global("BeginChallenge1","GLOBAL",12) + Delay(10) +THEN + RESPONSE #100 + SetGlobal("ACH_THE_FIRST_CHALLENGE","GLOBAL",1) +END + +IF + Global("ACH_THE_SECOND_CHALLENGE","GLOBAL",0) + Global("BeginChallenge2","GLOBAL",3) + Delay(10) +THEN + RESPONSE #100 + SetGlobal("ACH_THE_SECOND_CHALLENGE","GLOBAL",1) +END + +IF + Global("ACH_THE_THIRD_CHALLENGE","GLOBAL",0) + Global("BeginChallenge3","GLOBAL",3) + Delay(10) +THEN + RESPONSE #100 + SetGlobal("ACH_THE_THIRD_CHALLENGE","GLOBAL",1) +END + +IF + Global("ACH_THE_FORTH_CHALLENGE","GLOBAL",0) + Global("BeginChallenge4","GLOBAL",6) + Delay(10) +THEN + RESPONSE #100 + SetGlobal("ACH_THE_FORTH_CHALLENGE","GLOBAL",1) +END + +IF + Global("ACH_THE_FIFTH_CHALLENGE","GLOBAL",0) + Global("BeginChallenge5","GLOBAL",4) + Delay(10) +THEN + RESPONSE #100 + SetGlobal("ACH_THE_FIFTH_CHALLENGE","GLOBAL",1) +END + +IF + Global("ACH_ILL_KEEP","GLOBAL",0) + Global("PCKeepOwner","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_ILL_KEEP","GLOBAL",1) +END + +IF + Global("ACH_SPHERICAL_STRONGHOLD","GLOBAL",0) + Global("PCSphere","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_SPHERICAL_STRONGHOLD","GLOBAL",1) +END + +IF + Global("ACH_GUILD_TIMES","GLOBAL",0) + Global("PlayerThiefGuild","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_GUILD_TIMES","GLOBAL",1) +END + +IF + Global("ACH_DIVINE_DOMAIN","GLOBAL",0) + OR(3) + Global("JoinLathander","GLOBAL",1) + Global("JoinTalos","GLOBAL",1) + Global("JoinHelm","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_DIVINE_DOMAIN","GLOBAL",1) +END + +IF + Global("ACH_ORDERLY_SURROUNDINGS","GLOBAL",0) + Global("PaladinOrder","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_ORDERLY_SURROUNDINGS","GLOBAL",1) +END + +IF + Global("ACH_CABIN_IN","GLOBAL",0) + Global("RangerProtector","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_CABIN_IN","GLOBAL",1) +END + +IF + Global("ACH_HOME_GROVE","GLOBAL",0) + Global("DruidStronghold","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_HOME_GROVE","GLOBAL",1) +END + +IF + Global("ACH_THE_PLAYS","GLOBAL",0) + Global("Playhouse","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_THE_PLAYS","GLOBAL",1) +END + +IF + Global("ACH_WELCOME_BROTHER","GLOBAL",0) + GlobalGT("SarevokAlive","GLOBAL",0) + InParty("Sarevok") // Sarevok +THEN + RESPONSE #100 + SetGlobal("ACH_WELCOME_BROTHER","GLOBAL",1) +END + +IF + Global("ACH_A_SISTERS","GLOBAL",0) + Global("ImoenGiveSoul","GLOBAL",2) +THEN + RESPONSE #100 + SetGlobal("ACH_A_SISTERS","GLOBAL",1) +END + +IF + Global("ACH_CLOSE_THE_EYE","GLOBAL",0) + Global("BeholderPlot","GLOBAL",2) +THEN + RESPONSE #100 + SetGlobal("ACH_CLOSE_THE_EYE","GLOBAL",1) +END + +IF + Global("ACH_TRADE_MUST_FLOW","GLOBAL",0) + Global("geniesgone","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_TRADE_MUST_FLOW","GLOBAL",1) +END + +IF + Global("ACH_FANG_AND_CLAW","GLOBAL",0) + OR(2) + Global("unlock2009","GLOBAL",1) + Global("loganjob1","GLOBAL",2) +THEN + RESPONSE #100 + SetGlobal("ACH_FANG_AND_CLAW","GLOBAL",1) +END + +IF + Global("ACH_LIGHT_IN_DARKNESS","GLOBAL",0) + Global("VillageSaved","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_LIGHT_IN_DARKNESS","GLOBAL",1) +END + +IF + Global("ACH_HERO","GLOBAL",0) + Reputation(Player1,20) +THEN + RESPONSE #100 + SetGlobal("ACH_HERO","GLOBAL",1) +END + +IF + Global("ACH_VILLAIN","GLOBAL",0) + Reputation(Player1,1) +THEN + RESPONSE #100 + SetGlobal("ACH_VILLAIN","GLOBAL",1) +END + +IF + Global("ACH_JUGGERNAUT","GLOBAL",0) + CheckStatGT(Player1,149,MAXHITPOINTS) +THEN + RESPONSE #100 + SetGlobal("ACH_JUGGERNAUT","GLOBAL",1) +END + +IF + Global("ACH_NO_CHILD_LEFT_BEHIND","GLOBAL",0) + Global("Kidnap","GLOBAL",4) +THEN + RESPONSE #100 + SetGlobal("ACH_NO_CHILD_LEFT_BEHIND","GLOBAL",1) +END + +IF + Global("ACH_OATHBREAKER","GLOBAL",0) + OR(2) + FallenRanger(Player1) + FallenPaladin(Player1) +THEN + RESPONSE #100 + SetGlobal("ACH_OATHBREAKER","GLOBAL",1) +END + +IF + Global("ACH_LOREMASTER","GLOBAL",0) + CheckStatGT(Player1,99,LORE) +THEN + RESPONSE #100 + SetGlobal("ACH_LOREMASTER","GLOBAL",1) +END + +IF + Global("ACH_MURDER","GLOBAL",0) + NumKilledByPartyGT(999) +THEN + RESPONSE #100 + SetGlobal("ACH_MURDER","GLOBAL",1) +END + +IF + Global("ACH_WORST_DAY","GLOBAL",0) + StateCheck(Player1,STATE_POISONED) + CheckSpellState(Player1,DISEASED) + CheckStatGT(Player1,5,FATIGUE) +THEN + RESPONSE #100 + SetGlobal("ACH_WORST_DAY","GLOBAL",1) +END + +IF + Global("ACH_BEST_DAY","GLOBAL",0) + StateCheck(Player1,STATE_BLESS) + StateCheck(Player1,STATE_CHANT) + StateCheck(Player1,STATE_LUCK) +THEN + RESPONSE #100 + SetGlobal("ACH_BEST_DAY","GLOBAL",1) +END + +IF + Global("ACH_ANCIENT_POWER","GLOBAL",0) + PartyHasItemIdentified("WA2ROBE") // Robe of Vecna +THEN + RESPONSE #100 + SetGlobal("ACH_ANCIENT_POWER","GLOBAL",1) +END + +IF + Global("ACH_LEGENDARY_RELIC","GLOBAL",0) + PartyHasItemIdentified("HAMM09") // Crom Faeyr +5 +THEN + RESPONSE #100 + SetGlobal("ACH_LEGENDARY_RELIC","GLOBAL",1) +END + +IF + Global("ACH_THE_HOLY","GLOBAL",0) + OR(2) + PartyHasItemIdentified("SW2H10") // Carsomyr +5 + PartyHasItemIdentified("SW2H19") // Carsomyr +6 +THEN + RESPONSE #100 + SetGlobal("ACH_THE_HOLY","GLOBAL",1) +END + +IF + Global("ACH_FURY_OF","GLOBAL",0) + PartyHasItemIdentified("SW1H51") // Celestial Fury +3 +THEN + RESPONSE #100 + SetGlobal("ACH_FURY_OF","GLOBAL",1) +END + +IF + Global("ACH_IN_BALDURANS","GLOBAL",0) + HasItemEquipedReal("WA2S1H",Player1) // Sword of Balduran + HasItemEquiped("WA2SHIEL",Player1) // Shield of Balduran + HasItemEquiped("HELM07",Player1) // Helm of Balduran + HasItemEquiped("WA2PLAT",Player1) // Plate of Balduran +THEN + RESPONSE #100 + SetGlobal("ACH_IN_BALDURANS","GLOBAL",1) +END + +IF + Global("ACH_FLYING","GLOBAL",0) + AreaCheck("AR2900") // The Abyss + GlobalGT("DefeatedJon","GLOBAL",1) + Global("BD_ACH_PARTY","GLOBAL",1) + !NumInPartyGT(1) +THEN + RESPONSE #100 + SetGlobal("ACH_FLYING","GLOBAL",1) +END + +IF + Global("ACH_FRIEND_OF","GLOBAL",0) + Global("bd_ach_difficulty","global",1) + AreaCheck("AR2900") // The Abyss + GlobalGT("DefeatedJon","GLOBAL",1) + StoryModeOn() +THEN + RESPONSE #100 + SetGlobal("ACH_FRIEND_OF","GLOBAL",1) +END + +IF + Global("ACH_PLANEHOPPER","GLOBAL",0) + Global("bd_rescued_haer","global",1) +THEN + RESPONSE #100 + SetGlobal("ACH_PLANEHOPPER","GLOBAL",1) +END + +IF + Global("ACH_GREEN_DRAGON_SAVIOUR","GLOBAL",0) + Global("use_reversal_scroll","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_GREEN_DRAGON_SAVIOUR","GLOBAL",1) +END + +IF + Global("ACH_SILVER_DRAGON_SLAYER","GLOBAL",0) + Dead("udsilver") // Adalon +THEN + RESPONSE #100 + SetGlobal("ACH_SILVER_DRAGON_SLAYER","GLOBAL",1) +END + +IF + Global("ACH_BLACK_DRAGON_SLAYER","GLOBAL",0) + Dead("dragblac") // Nizidramanii'yt +THEN + RESPONSE #100 + SetGlobal("ACH_BLACK_DRAGON_SLAYER","GLOBAL",1) +END + +IF + Global("ACH_SHADOW_DRAGON_SLAYER","GLOBAL",0) + Dead("shadra01") // Thaxll'ssillyia +THEN + RESPONSE #100 + SetGlobal("ACH_SHADOW_DRAGON_SLAYER","GLOBAL",1) +END + +IF + Global("ACH_RED_DRAGON_SLAYER","GLOBAL",0) + Dead("firkra02") // Firkraag +THEN + RESPONSE #100 + SetGlobal("ACH_RED_DRAGON_SLAYER","GLOBAL",1) +END + +IF + Global("ACH_TIME_TO_SLAY","GLOBAL",0) + OR(2) + Global("AsylumPlot","GLOBAL",43) + Global("bd_SlayerAchieved","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_TIME_TO_SLAY","GLOBAL",1) +END + +IF + Global("ACH_PEACE_AT_LAST","GLOBAL",0) + Global("yoshimos_heart","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_PEACE_AT_LAST","GLOBAL",1) +END + +IF + Global("ACH_FRIENDS_LIKE_THESE","GLOBAL",0) + Global("yoshimo_killed_spellhold","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_FRIENDS_LIKE_THESE","GLOBAL",1) +END + +IF + Global("ACH_RESTORED","GLOBAL",0) + Global("JaheiraCursed","GLOBAL",10) + Global("j_noweak","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_RESTORED","GLOBAL",1) +END + +IF + Global("ACH_FELLING_THE_GIANT","GLOBAL",0) + Dead("Yaga01") // Yaga-Shura +THEN + RESPONSE #100 + SetGlobal("ACH_FELLING_THE_GIANT","GLOBAL",1) +END + +IF + Global("ACH_DRAGONS_DEMISE","GLOBAL",0) + Dead("Abazigal") // Abazigal +THEN + RESPONSE #100 + SetGlobal("ACH_DRAGONS_DEMISE","GLOBAL",1) +END + +IF + Global("ACH_THE_SEVEN_STATUES","GLOBAL",0) + Dead("Sendai") // Sendai + AreaCheck("AR6108") // Sendai's Lair -- Sendai +THEN + RESPONSE #100 + SetGlobal("ACH_THE_SEVEN_STATUES","GLOBAL",1) +END + +IF + Global("ACH_SOLAR_SUPREMACY","GLOBAL",0) + Dead("balth") // Balthazar +THEN + RESPONSE #100 + SetGlobal("ACH_SOLAR_SUPREMACY","GLOBAL",1) +END + +IF + Global("ACH_HELLS_POCKET","GLOBAL",0) + GlobalGT("TalkedToSolar","GLOBAL",0) +THEN + RESPONSE #100 + SetGlobal("ACH_HELLS_POCKET","GLOBAL",1) +END + +IF + Global("ACH_SIEZE_THE_THRONE","GLOBAL",0) + Global("bd_ach_melissan","global",1) + Global("PlayerChoseEssence","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_SIEZE_THE_THRONE","GLOBAL",1) +END + +IF + Global("ACH_HEAVY_IS_THE_HEAD","GLOBAL",0) + Global("bd_ach_melissan","global",1) + Global("PlayerChoseEssence","GLOBAL",0) +THEN + RESPONSE #100 + SetGlobal("ACH_HEAVY_IS_THE_HEAD","GLOBAL",1) +END + +IF + Global("ACH_A_DARING_ESCAPE","GLOBAL",0) + Global("bd_ach_daring_escape","global",1) +THEN + RESPONSE #100 + SetGlobal("ACH_A_DARING_ESCAPE","GLOBAL",1) +END + +IF + Global("ACH_PICKING_SIDES","GLOBAL",0) + Global("chapter","global",15) +THEN + RESPONSE #100 + SetGlobal("ACH_PICKING_SIDES","GLOBAL",1) +END + +IF + Global("ACH_ACROSS_THE_SEA","GLOBAL",0) + Global("chapter","global",16) +THEN + RESPONSE #100 + SetGlobal("ACH_ACROSS_THE_SEA","GLOBAL",1) +END + +IF + Global("ACH_RETURN_TO_THE_SURFACE","GLOBAL",0) + Global("chapter","global",18) +THEN + RESPONSE #100 + SetGlobal("ACH_RETURN_TO_THE_SURFACE","GLOBAL",1) +END + +IF + Global("ACH_SACRIFICES_MUST","GLOBAL",0) + GlobalGT("DefeatedJon","GLOBAL",1) + StateCheck(Player2,STATE_REALLY_DEAD) + StateCheck(Player3,STATE_REALLY_DEAD) + StateCheck(Player4,STATE_REALLY_DEAD) + StateCheck(Player5,STATE_REALLY_DEAD) + StateCheck(Player6,STATE_REALLY_DEAD) +THEN + RESPONSE #100 + SetGlobal("ACH_SACRIFICES_MUST","GLOBAL",1) +END + +IF + Global("ACH_LEAVE_NO","GLOBAL",0) + GlobalGT("DefeatedJon","GLOBAL",1) + NumInPartyAlive(6) +THEN + RESPONSE #100 + SetGlobal("ACH_LEAVE_NO","GLOBAL",1) +END + +IF + Global("ACH_WAND_COLLECTOR","GLOBAL",0) + AreaCheck("AR0603") // Irenicus's Dungeon 2nd Floor + PartyHasItem("WAND03") // Wand of Magic Missiles + PartyHasItem("WAND06") // Wand of Frost + PartyHasItem("WAND05") // Wand of Fire + PartyHasItem("WAND10") // Wand of Monster Summoning + PartyHasItem("WAND07") // Wand of Lightning + PartyHasItem("WAND13") // Wand of Cloudkill +THEN + RESPONSE #100 + SetGlobal("ACH_WAND_COLLECTOR","GLOBAL",1) +END + +IF + Global("ACH_THE_GREAT","GLOBAL",0) + AreaCheck("AR0503") // Tanner's Hideout Dock + !Exists("TanWiz1") // Vellin Dahn +THEN + RESPONSE #100 + SetGlobal("ACH_THE_GREAT","GLOBAL",1) +END + +IF + Global("ACH_FREEDOM","GLOBAL",0) + Global("TalkedToVithal","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_FREEDOM","GLOBAL",1) +END + +IF + Global("ACH_A_BATTLE","GLOBAL",0) + Dead("hldemi") // Kangaxx the Demilich +THEN + RESPONSE #100 + SetGlobal("ACH_A_BATTLE","GLOBAL",1) +END + +IF + Global("ACH_DOUBLE_CROSS","GLOBAL",0) + Dead("ardulace") // Matron Mother Ardulace + Global("udDrowPlot","GLOBAL",36) + Global("udDemonHasDoneTheKill","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_DOUBLE_CROSS","GLOBAL",1) +END + +IF + Global("ACH_TRIPLE_CROSS","GLOBAL",0) + Dead("phaere") // Phaere + Global("udDrowPlot","GLOBAL",44) + Global("udDemonHasDoneTheKill","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_TRIPLE_CROSS","GLOBAL",1) +END + +IF + Global("ACH_DONT_MIND","GLOBAL",0) + AreaCheck("AR0711") // Illithid Hideout in the Sewers (The Hidden Plot) +THEN + RESPONSE #100 + SetGlobal("ACH_DONT_MIND","GLOBAL",1) +END + +IF + Global("ACH_I_DUB","GLOBAL",0) + Global("AnomenIsKnight","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_I_DUB","GLOBAL",1) +END + +IF + Global("ACH_REUNITED","GLOBAL",0) + Global("CerndBaby","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_REUNITED","GLOBAL",1) +END + +IF + Global("ACH_BEST_FRIENDS","GLOBAL",0) + Global("WellynPeace","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_BEST_FRIENDS","GLOBAL",1) +END + +IF + Global("ACH_HEART_OF","GLOBAL",0) + Global("LavokOutside","GLOBAL",1) + Dead("lavok02") // Lavok +THEN + RESPONSE #100 + SetGlobal("ACH_HEART_OF","GLOBAL",1) +END + +IF + Global("ACH_NEW_OWNERSHIP","GLOBAL",0) + Global("HendakReleased","AR0406",4) // Copper Coronet +THEN + RESPONSE #100 + SetGlobal("ACH_NEW_OWNERSHIP","GLOBAL",1) +END + +IF + Global("ACH_URGE_TO_KILL","GLOBAL",0) + Dead("neeber") // Neeber +THEN + RESPONSE #100 + SetGlobal("ACH_URGE_TO_KILL","GLOBAL",1) +END + +IF + Global("ACH_LORD_OF","GLOBAL",0) + Global("bd_ach_difficulty","global",2) + AreaCheck("AR2900") // The Abyss + GlobalGT("DefeatedJon","GLOBAL",1) + NightmareModeOn() +THEN + RESPONSE #100 + SetGlobal("ACH_LORD_OF","GLOBAL",1) +END + +IF + Global("ACH_TOOK_A_CHANCE","GLOBAL",0) + Global("boat_out_of_spellhold","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_TOOK_A_CHANCE","GLOBAL",1) +END + +IF + Global("ACH_INMATES_RUNNING_THE_ASYLUM","GLOBAL",0) + Global("chapter","global",17) +THEN + RESPONSE #100 + SetGlobal("ACH_INMATES_RUNNING_THE_ASYLUM","GLOBAL",1) +END + +IF + Global("ACH_STAKED","GLOBAL",0) + Global("chapter","global",19) +THEN + RESPONSE #100 + SetGlobal("ACH_STAKED","GLOBAL",1) +END + +IF + Global("ACH_TO_HELL_AND_BACK","GLOBAL",0) + Global("soa_complete","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_TO_HELL_AND_BACK","GLOBAL",1) +END + +IF + Global("ACH_UNKNOWN_RISKS","GLOBAL",0) + Global("portal_out_of_spellhold","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("ACH_UNKNOWN_RISKS","GLOBAL",1) +END + +IF + Global("ACH_EPIC_MAGE","GLOBAL",0) + ClassLevelGT(Player1,WIZARD,29) +THEN + RESPONSE #100 + SetGlobal("ACH_EPIC_MAGE","GLOBAL",1) +END + +IF + Global("ACH_EPIC_PRIEST","GLOBAL",0) + ClassLevelGT(Player1,PRIEST,29) +THEN + RESPONSE #100 + SetGlobal("ACH_EPIC_PRIEST","GLOBAL",1) +END + +IF + Global("ACH_EPIC_WARRIOR","GLOBAL",0) + ClassLevelGT(Player1,WARRIOR,29) +THEN + RESPONSE #100 + SetGlobal("ACH_EPIC_WARRIOR","GLOBAL",1) +END + +IF + Global("ACH_EPIC_ROGUE","GLOBAL",0) + !Class(Player1,MONK) + ClassLevelGT(Player1,ROGUE,29) +THEN + RESPONSE #100 + SetGlobal("ACH_EPIC_ROGUE","GLOBAL",1) +END + diff --git a/fixtures/bcs/ACHIEVEM.BCS b/fixtures/bcs/ACHIEVEM.BCS new file mode 100644 index 0000000..f2a1c34 --- /dev/null +++ b/fixtures/bcs/ACHIEVEM.BCS @@ -0,0 +1,2538 @@ +SC +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_FRIEND_OF_DARKNESS" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 5 0 0 0 "GLOBALBodhiJob" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16436 0 0 0 0 "GLOBALAsylumPlot" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_FRIEND_OF_DARKNESS" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_SHADOW_ALLY" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 3 0 0 0 "GLOBALAranJob" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16436 0 0 0 0 "GLOBALAsylumPlot" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_SHADOW_ALLY" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_GRANDMASTER" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16521 20 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16650 89 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 91 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 92 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 93 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 94 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 95 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 96 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 97 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 98 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 99 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 100 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 101 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 102 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 103 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 104 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 105 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 106 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 107 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 90 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16650 115 0 5 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_GRANDMASTER" "" AC +RE +RS +CR +CR +CO +TR +16634 0 1 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16423 10 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 0 0 0 0 "GLOBALACH_GODLIKE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16521 6 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16453 24 0 36 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16453 24 0 38 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16453 24 0 39 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16453 24 0 40 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16453 24 0 41 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16453 24 0 42 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_GODLIKE" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_UNTOUCHABLE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16454 -14 0 2 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_UNTOUCHABLE" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_HOMECOMING" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 21 0 0 0 "GLOBALJanLissaPlot" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_HOMECOMING" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_FAMILY_MATTERS" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16521 2 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 4 0 0 0 "GLOBALLadyMaria" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 5 0 0 0 "GLOBALLadyMaria" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_FAMILY_MATTERS" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_THE_BOOK" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALKorganNoKillShag" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_THE_BOOK" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_SISTERS" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALpalacured" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_SISTERS" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_ABSOLUTE_POWER" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALKishNaliaThankedPC" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_ABSOLUTE_POWER" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_THE_FIRST_CHALLENGE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 12 0 0 0 "GLOBALBeginChallenge1" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16423 10 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_THE_FIRST_CHALLENGE" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_THE_SECOND_CHALLENGE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 3 0 0 0 "GLOBALBeginChallenge2" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16423 10 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_THE_SECOND_CHALLENGE" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_THE_THIRD_CHALLENGE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 3 0 0 0 "GLOBALBeginChallenge3" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16423 10 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_THE_THIRD_CHALLENGE" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_THE_FORTH_CHALLENGE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 6 0 0 0 "GLOBALBeginChallenge4" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16423 10 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_THE_FORTH_CHALLENGE" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_THE_FIFTH_CHALLENGE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 4 0 0 0 "GLOBALBeginChallenge5" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16423 10 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_THE_FIFTH_CHALLENGE" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_ILL_KEEP" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALPCKeepOwner" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_ILL_KEEP" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_SPHERICAL_STRONGHOLD" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALPCSphere" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_SPHERICAL_STRONGHOLD" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_GUILD_TIMES" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALPlayerThiefGuild" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_GUILD_TIMES" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_DIVINE_DOMAIN" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16521 3 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALJoinLathander" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALJoinTalos" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALJoinHelm" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_DIVINE_DOMAIN" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_ORDERLY_SURROUNDINGS" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALPaladinOrder" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_ORDERLY_SURROUNDINGS" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_CABIN_IN" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALRangerProtector" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_CABIN_IN" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_HOME_GROVE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALDruidStronghold" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_HOME_GROVE" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_THE_PLAYS" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALPlayhouse" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_THE_PLAYS" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_WELCOME_BROTHER" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16436 0 0 0 0 "GLOBALSarevokAlive" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16451 0 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 "Sarevok"OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_WELCOME_BROTHER" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_A_SISTERS" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 2 0 0 0 "GLOBALImoenGiveSoul" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_A_SISTERS" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_CLOSE_THE_EYE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 2 0 0 0 "GLOBALBeholderPlot" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_CLOSE_THE_EYE" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_TRADE_MUST_FLOW" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALgeniesgone" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_TRADE_MUST_FLOW" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_FANG_AND_CLAW" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16521 2 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALunlock2009" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 2 0 0 0 "GLOBALloganjob1" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_FANG_AND_CLAW" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_LIGHT_IN_DARKNESS" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALVillageSaved" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_LIGHT_IN_DARKNESS" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_HERO" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16409 20 0 0 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_HERO" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_VILLAIN" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16409 1 0 0 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_VILLAIN" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_JUGGERNAUT" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16453 149 0 1 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_JUGGERNAUT" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_NO_CHILD_LEFT_BEHIND" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 4 0 0 0 "GLOBALKidnap" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_NO_CHILD_LEFT_BEHIND" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_OATHBREAKER" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16521 2 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16575 0 0 0 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16576 0 0 0 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_OATHBREAKER" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_LOREMASTER" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16453 99 0 25 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_LOREMASTER" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_MURDER" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16628 999 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_MURDER" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_WORST_DAY" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16439 16384 0 0 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16610 250 0 0 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16453 5 0 30 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_WORST_DAY" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_BEST_DAY" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16439 8388608 0 0 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16439 16777216 0 0 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16439 67108864 0 0 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_BEST_DAY" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_ANCIENT_POWER" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16553 0 0 0 0 "WA2ROBE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_ANCIENT_POWER" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_LEGENDARY_RELIC" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16553 0 0 0 0 "HAMM09" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_LEGENDARY_RELIC" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_THE_HOLY" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16521 2 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16553 0 0 0 0 "SW2H10" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16553 0 0 0 0 "SW2H19" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_THE_HOLY" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_FURY_OF" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16553 0 0 0 0 "SW1H51" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_FURY_OF" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_IN_BALDURANS" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16578 0 0 0 0 "WA2S1H" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16511 0 0 0 0 "WA2SHIEL" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16511 0 0 0 0 "HELM07" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16511 0 0 0 0 "WA2PLAT" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_IN_BALDURANS" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_FLYING" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16510 0 0 0 0 "AR2900" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16436 1 0 0 0 "GLOBALDefeatedJon" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALBD_ACH_PARTY" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16491 1 1 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_FLYING" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_FRIEND_OF" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "globalbd_ach_difficulty" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16510 0 0 0 0 "AR2900" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16436 1 0 0 0 "GLOBALDefeatedJon" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16634 0 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_FRIEND_OF" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_PLANEHOPPER" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "globalbd_rescued_haer" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_PLANEHOPPER" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_GREEN_DRAGON_SAVIOUR" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALuse_reversal_scroll" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_GREEN_DRAGON_SAVIOUR" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_SILVER_DRAGON_SLAYER" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16465 0 0 0 0 "udsilver" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_SILVER_DRAGON_SLAYER" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_BLACK_DRAGON_SLAYER" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16465 0 0 0 0 "dragblac" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_BLACK_DRAGON_SLAYER" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_SHADOW_DRAGON_SLAYER" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16465 0 0 0 0 "shadra01" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_SHADOW_DRAGON_SLAYER" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_RED_DRAGON_SLAYER" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16465 0 0 0 0 "firkra02" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_RED_DRAGON_SLAYER" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_TIME_TO_SLAY" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16521 2 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 43 0 0 0 "GLOBALAsylumPlot" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALbd_SlayerAchieved" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_TIME_TO_SLAY" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_PEACE_AT_LAST" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALyoshimos_heart" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_PEACE_AT_LAST" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_FRIENDS_LIKE_THESE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALyoshimo_killed_spellhold" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_FRIENDS_LIKE_THESE" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_RESTORED" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 10 0 0 0 "GLOBALJaheiraCursed" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALj_noweak" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_RESTORED" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_FELLING_THE_GIANT" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16465 0 0 0 0 "Yaga01" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_FELLING_THE_GIANT" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_DRAGONS_DEMISE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16465 0 0 0 0 "Abazigal" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_DRAGONS_DEMISE" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_THE_SEVEN_STATUES" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16465 0 0 0 0 "Sendai" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16510 0 0 0 0 "AR6108" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_THE_SEVEN_STATUES" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_SOLAR_SUPREMACY" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16465 0 0 0 0 "balth" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_SOLAR_SUPREMACY" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_HELLS_POCKET" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16436 0 0 0 0 "GLOBALTalkedToSolar" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_HELLS_POCKET" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_SIEZE_THE_THRONE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "globalbd_ach_melissan" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALPlayerChoseEssence" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_SIEZE_THE_THRONE" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_HEAVY_IS_THE_HEAD" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "globalbd_ach_melissan" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 0 0 0 0 "GLOBALPlayerChoseEssence" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_HEAVY_IS_THE_HEAD" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_A_DARING_ESCAPE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "globalbd_ach_daring_escape" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_A_DARING_ESCAPE" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_PICKING_SIDES" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 15 0 0 0 "globalchapter" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_PICKING_SIDES" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_ACROSS_THE_SEA" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 16 0 0 0 "globalchapter" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_ACROSS_THE_SEA" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_RETURN_TO_THE_SURFACE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 18 0 0 0 "globalchapter" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_RETURN_TO_THE_SURFACE" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_SACRIFICES_MUST" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16436 1 0 0 0 "GLOBALDefeatedJon" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16439 4032 0 0 0 "" "" OB +0 0 0 0 0 0 0 22 0 0 0 0 ""OB +TR +TR +16439 4032 0 0 0 "" "" OB +0 0 0 0 0 0 0 23 0 0 0 0 ""OB +TR +TR +16439 4032 0 0 0 "" "" OB +0 0 0 0 0 0 0 24 0 0 0 0 ""OB +TR +TR +16439 4032 0 0 0 "" "" OB +0 0 0 0 0 0 0 25 0 0 0 0 ""OB +TR +TR +16439 4032 0 0 0 "" "" OB +0 0 0 0 0 0 0 26 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_SACRIFICES_MUST" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_LEAVE_NO" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16436 1 0 0 0 "GLOBALDefeatedJon" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16568 6 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_LEAVE_NO" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_WAND_COLLECTOR" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16510 0 0 0 0 "AR0603" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16450 0 0 0 0 "WAND03" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16450 0 0 0 0 "WAND06" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16450 0 0 0 0 "WAND05" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16450 0 0 0 0 "WAND10" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16450 0 0 0 0 "WAND07" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16450 0 0 0 0 "WAND13" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_WAND_COLLECTOR" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_THE_GREAT" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16510 0 0 0 0 "AR0503" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16397 0 1 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 "TanWiz1"OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_THE_GREAT" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_FREEDOM" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALTalkedToVithal" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_FREEDOM" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_A_BATTLE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16465 0 0 0 0 "hldemi" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_A_BATTLE" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_DOUBLE_CROSS" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16465 0 0 0 0 "ardulace" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 36 0 0 0 "GLOBALudDrowPlot" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALudDemonHasDoneTheKill" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_DOUBLE_CROSS" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_TRIPLE_CROSS" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16465 0 0 0 0 "phaere" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 44 0 0 0 "GLOBALudDrowPlot" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALudDemonHasDoneTheKill" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_TRIPLE_CROSS" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_DONT_MIND" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16510 0 0 0 0 "AR0711" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_DONT_MIND" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_I_DUB" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALAnomenIsKnight" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_I_DUB" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_REUNITED" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALCerndBaby" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_REUNITED" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_BEST_FRIENDS" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALWellynPeace" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_BEST_FRIENDS" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_HEART_OF" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALLavokOutside" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16465 0 0 0 0 "lavok02" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_HEART_OF" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_NEW_OWNERSHIP" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 4 0 0 0 "AR0406HendakReleased" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_NEW_OWNERSHIP" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_URGE_TO_KILL" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16465 0 0 0 0 "neeber" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_URGE_TO_KILL" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_LORD_OF" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 2 0 0 0 "globalbd_ach_difficulty" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16510 0 0 0 0 "AR2900" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16436 1 0 0 0 "GLOBALDefeatedJon" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16617 0 0 0 0 "" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_LORD_OF" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_TOOK_A_CHANCE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALboat_out_of_spellhold" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_TOOK_A_CHANCE" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_INMATES_RUNNING_THE_ASYLUM" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 17 0 0 0 "globalchapter" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_INMATES_RUNNING_THE_ASYLUM" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_STAKED" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 19 0 0 0 "globalchapter" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_STAKED" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_TO_HELL_AND_BACK" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALsoa_complete" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_TO_HELL_AND_BACK" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_UNKNOWN_RISKS" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16399 1 0 0 0 "GLOBALportal_out_of_spellhold" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_UNKNOWN_RISKS" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_EPIC_MAGE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16638 1 0 29 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_EPIC_MAGE" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_EPIC_PRIEST" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16638 3 0 29 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_EPIC_PRIEST" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_EPIC_WARRIOR" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16638 2 0 29 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_EPIC_WARRIOR" "" AC +RE +RS +CR +CR +CO +TR +16399 0 0 0 0 "GLOBALACH_EPIC_ROGUE" "" OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +TR +TR +16396 20 1 0 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +TR +16638 4 0 29 0 "" "" OB +0 0 0 0 0 0 0 21 0 0 0 0 ""OB +TR +CO +RS +RE +100AC +30OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +OB +0 0 0 0 0 0 0 0 0 0 0 0 ""OB +1 0 0 0 0"GLOBALACH_EPIC_ROGUE" "" AC +RE +RS +CR +SC