diff --git a/chantiers/rivage_brise/outils/factions_1460.py b/chantiers/rivage_brise/outils/factions_1460.py new file mode 100644 index 0000000..1a48315 --- /dev/null +++ b/chantiers/rivage_brise/outils/factions_1460.py @@ -0,0 +1,103 @@ +# -*- coding: utf-8 -*- +"""Compare la faction de reference et la notre pour les creatures +placees sur la carte 1460. N'ecrit rien : rapport seul.""" +import io, re, subprocess + +DUMP = '/home/ubuntu/tmp/abs/LegionCore_world_2020_04_25.sql' + + +def decoupe_tuples(bloc): + res, cur, prof, chaine, echap = [], [], 0, False, False + for c in bloc: + if chaine: + cur.append(c) + if echap: echap = False + elif c == '\\': echap = True + elif c == "'": chaine = False + continue + if c == "'": + chaine = True; cur.append(c) + elif c == '(': + prof += 1 + cur = [] if prof == 1 else cur + [c] + elif c == ')': + prof -= 1 + if prof == 0: res.append(''.join(cur)) + else: cur.append(c) + elif prof > 0: + cur.append(c) + return res + + +def champs(t): + vals, cur, chaine, echap = [], [], False, False + for c in t: + if chaine: + cur.append(c) + if echap: echap = False + elif c == '\\': echap = True + elif c == "'": chaine = False + continue + if c == "'": + chaine = True; cur.append(c) + elif c == ',': + vals.append(''.join(cur).strip()); cur = [] + else: + cur.append(c) + vals.append(''.join(cur).strip()) + return vals + + +# entrees reellement placees chez nous sur la carte 1460, avec notre faction +sortie = subprocess.check_output( + ['sudo', 'mysql', 'dc_world', '-N', '-e', + "SELECT DISTINCT c.id, ct.faction, ct.name FROM creature c " + "JOIN creature_template ct ON ct.entry=c.id WHERE c.map=1460;"]) +notre = {} +for ligne in sortie.decode('utf-8', 'replace').splitlines(): + p = ligne.split('\t') + if len(p) >= 3: + notre[int(p[0])] = (int(p[1]), p[2]) +print('entrees placees sur la carte 1460 : %d' % len(notre)) + +# faction cote reference +motif = re.compile(r"insert\s+into\s+`creature_template`\(([^)]*)\)\s+values\s*", re.I) +ref = {} +with io.open(DUMP, encoding='utf-8', errors='replace') as f: + l = f.readline() + while l: + m = motif.match(l.lstrip()) + if m: + cols = [c.strip().strip('`') for c in m.group(1).split(',')] + b = [l[l.lower().find('values') + 6:]] + while not b[-1].rstrip().endswith(';'): + s = f.readline() + if not s: break + b.append(s) + if 'entry' in cols and 'faction' in cols: + ie, ifa = cols.index('entry'), cols.index('faction') + for t in decoupe_tuples(''.join(b)): + v = champs(t) + if len(v) == len(cols): + try: + e = int(v[ie]) + except ValueError: + continue + if e in notre: + ref[e] = int(v[ifa]) + l = f.readline() + +print('trouvees dans la reference : %d' % len(ref)) +divergentes = {e: (notre[e][0], ref[e], notre[e][1]) for e in ref if ref[e] != notre[e][0]} +print('FACTIONS DIVERGENTES : %d' % len(divergentes)) +print() +from collections import Counter +c = Counter((n, r) for n, r, _ in divergentes.values()) +print(' notre -> reference nombre') +for (n, r), k in c.most_common(12): + print(' %5d -> %-8d %d' % (n, r, k)) +print() +print(' exemples :') +for e in list(divergentes)[:12]: + n, r, nom = divergentes[e] + print(' %-8d %-30s %d -> %d' % (e, nom[:30], n, r)) diff --git a/chantiers/rivage_brise/outils/generer_factions.py b/chantiers/rivage_brise/outils/generer_factions.py new file mode 100644 index 0000000..f428668 --- /dev/null +++ b/chantiers/rivage_brise/outils/generer_factions.py @@ -0,0 +1,141 @@ +# -*- coding: utf-8 -*- +"""Genere les corrections de faction pour les creatures de la carte 1460. + +PRUDENCE : creature_template.faction agit PARTOUT, pas seulement sur la +carte visee. On exclut donc toute entree qui possede un spawn sur une +autre carte -- en pratique des declencheurs invisibles, pour lesquels la +faction 35 est correcte et ne doit surtout pas etre touchee. +""" +import io, re, subprocess + +DUMP = '/home/ubuntu/tmp/abs/LegionCore_world_2020_04_25.sql' +SORTIE = '/home/ubuntu/DestinyCore/sql/sylvania/rivage_factions_1460.sql' + + +def decoupe_tuples(bloc): + res, cur, prof, chaine, echap = [], [], 0, False, False + for c in bloc: + if chaine: + cur.append(c) + if echap: echap = False + elif c == '\\': echap = True + elif c == "'": chaine = False + continue + if c == "'": + chaine = True; cur.append(c) + elif c == '(': + prof += 1 + cur = [] if prof == 1 else cur + [c] + elif c == ')': + prof -= 1 + if prof == 0: res.append(''.join(cur)) + else: cur.append(c) + elif prof > 0: + cur.append(c) + return res + + +def champs(t): + vals, cur, chaine, echap = [], [], False, False + for c in t: + if chaine: + cur.append(c) + if echap: echap = False + elif c == '\\': echap = True + elif c == "'": chaine = False + continue + if c == "'": + chaine = True; cur.append(c) + elif c == ',': + vals.append(''.join(cur).strip()); cur = [] + else: + cur.append(c) + vals.append(''.join(cur).strip()) + return vals + + +def sql(q): + return subprocess.check_output(['sudo', 'mysql', 'dc_world', '-N', '-e', q]).decode('utf-8', 'replace') + + +# entrees exclusivement presentes sur la carte 1460 +lignes = sql("SELECT c.id, ct.faction, ct.name FROM creature c " + "JOIN creature_template ct ON ct.entry=c.id WHERE c.map=1460 " + "AND c.id NOT IN (SELECT DISTINCT id FROM creature WHERE map<>1460) " + "GROUP BY c.id, ct.faction, ct.name;") +notre = {} +for l in lignes.splitlines(): + p = l.split('\t') + if len(p) >= 3: + notre[int(p[0])] = (int(p[1]), p[2]) + +exclues = sql("SELECT COUNT(DISTINCT id) FROM creature WHERE map=1460 " + "AND id IN (SELECT DISTINCT id FROM creature WHERE map<>1460);").strip() +print('entrees exclusives a la carte 1460 : %d (exclues car partagees : %s)' % (len(notre), exclues)) + +motif = re.compile(r"insert\s+into\s+`creature_template`\(([^)]*)\)\s+values\s*", re.I) +ref = {} +with io.open(DUMP, encoding='utf-8', errors='replace') as f: + l = f.readline() + while l: + m = motif.match(l.lstrip()) + if m: + cols = [c.strip().strip('`') for c in m.group(1).split(',')] + b = [l[l.lower().find('values') + 6:]] + while not b[-1].rstrip().endswith(';'): + s = f.readline() + if not s: break + b.append(s) + if 'entry' in cols and 'faction' in cols: + ie, ifa = cols.index('entry'), cols.index('faction') + for t in decoupe_tuples(''.join(b)): + v = champs(t) + if len(v) == len(cols): + try: + e = int(v[ie]) + except ValueError: + continue + if e in notre: + ref[e] = int(v[ifa]) + l = f.readline() + +corr = {e: (notre[e][0], ref[e], notre[e][1]) for e in ref if ref[e] != notre[e][0]} +print('a corriger : %d' % len(corr)) + +L = [] +L.append("-- =====================================================================") +L.append("-- Rivage brise (carte 1460) -- CORRECTION DES FACTIONS") +L.append("--") +L.append("-- Signale en jeu, capture a l'appui : « ce sont bien des ennemis mais") +L.append("-- flagues en allie » -- les demons portaient une plaque de nom verte.") +L.append("--") +L.append("-- Notre creature_template porte la faction 35 (amicale envers tous)") +L.append("-- comme valeur par defaut pour ces PNJ de Legion : sur les 156 entrees") +L.append("-- placees, 135 divergeaient de la reference. Ce trou est ANTERIEUR a") +L.append("-- l'import des placements, qui ne touche pas creature_template.") +L.append("--") +L.append("-- Valeurs reprises de creature_template du dump de reference") +L.append("-- (dufernst/LegionCore-7.3.5, meme lignee uwow).") +L.append("--") +L.append("-- PRUDENCE : creature_template.faction agit PARTOUT. Les entrees") +L.append("-- possedant un spawn hors de la carte 1460 sont donc EXCLUES -- ce") +L.append("-- sont des declencheurs invisibles (General Purpose Bunny) pour") +L.append("-- lesquels la faction 35 est correcte et ne doit pas etre touchee.") +L.append("--") +L.append("-- Portee : %d entrees corrigees, exclusives a la carte 1460." % len(corr)) +L.append("-- =====================================================================") +L.append("") + +from collections import Counter +c = Counter((n, r) for n, r, _ in corr.values()) +for (n, r), k in c.most_common(): + L.append("-- %5d -> %-6d (%d creatures)" % (n, r, k)) +L.append("") + +for e in sorted(corr): + n, r, nom = corr[e] + L.append("UPDATE `creature_template` SET `faction`=%d WHERE `entry`=%d; -- %s (etait %d)" + % (r, e, nom.replace('--', '-').strip("'")[:40], n)) + +io.open(SORTIE, 'w', encoding='utf-8').write('\n'.join(L) + '\n') +print('ecrit : %s' % SORTIE) diff --git a/chantiers/rivage_brise/retour_factions_1460.sql b/chantiers/rivage_brise/retour_factions_1460.sql new file mode 100644 index 0000000..9409615 --- /dev/null +++ b/chantiers/rivage_brise/retour_factions_1460.sql @@ -0,0 +1,152 @@ +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=90686; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=97525; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=112920; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=100959; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=97527; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=112977; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=102702; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=97510; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=113054; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=113055; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=110617; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=102706; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=113058; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=90506; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=97528; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=94191; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=113056; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=110616; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=113057; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=102696; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=113053; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=94190; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=112976; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=109494; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=91967; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=94189; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=91970; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=101667; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=102701; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=113059; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=90525; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=109341; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105176; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105169; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105168; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105171; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105170; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111079; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=90688; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111154; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111089; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=91902; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105166; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105163; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111165; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111153; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111152; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111149; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111148; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=92558; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105192; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105188; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105190; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105185; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105187; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105186; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105181; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105180; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105182; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105179; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=90677; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105203; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=90515; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=90516; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=101103; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111167; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111156; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111088; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111087; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105197; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105189; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111173; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111175; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111174; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105183; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105175; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105174; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105165; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105164; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111157; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111155; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111085; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111171; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105206; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105196; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105167; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105205; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105200; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105199; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=111074; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=92074; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=113129; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105217; +UPDATE `creature_template` SET `faction`=16 WHERE `entry`=90544; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=110941; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=105172; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=94223; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=97502; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=102698; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=92564; +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=91949; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=92122; +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=97503; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=92121; +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=94209; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=100621; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=110615; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=97526; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=113290; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=108990; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=112921; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=97521; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=93704; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=101084; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=101086; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=110614; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=102704; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=102703; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=102705; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=109591; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=113037; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=113036; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=109604; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=109592; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=113291; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=113038; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=90711; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=90712; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=90708; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=91588; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=109587; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=112879; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=91353; +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=97486; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=92586; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=92061; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=109586; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=101056; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=90714; +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=93219; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=90710; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=97496; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=101057; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=90717; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=93719; +UPDATE `creature_template` SET `faction`=16 WHERE `entry`=90705; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=94276; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=91951; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=101632; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=90716; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=90713; +UPDATE `creature_template` SET `faction`=35 WHERE `entry`=90709; diff --git a/sql/sylvania/rivage_factions_1460.sql b/sql/sylvania/rivage_factions_1460.sql new file mode 100644 index 0000000..772d141 --- /dev/null +++ b/sql/sylvania/rivage_factions_1460.sql @@ -0,0 +1,168 @@ +-- ===================================================================== +-- Rivage brise (carte 1460) -- CORRECTION DES FACTIONS +-- +-- Signale en jeu, capture a l'appui : « ce sont bien des ennemis mais +-- flagues en allie » -- les demons portaient une plaque de nom verte. +-- +-- Notre creature_template porte la faction 35 (amicale envers tous) +-- comme valeur par defaut pour ces PNJ de Legion : sur les 156 entrees +-- placees, 135 divergeaient de la reference. Ce trou est ANTERIEUR a +-- l'import des placements, qui ne touche pas creature_template. +-- +-- Valeurs reprises de creature_template du dump de reference +-- (dufernst/LegionCore-7.3.5, meme lignee uwow). +-- +-- PRUDENCE : creature_template.faction agit PARTOUT. Les entrees +-- possedant un spawn hors de la carte 1460 sont donc EXCLUES -- ce +-- sont des declencheurs invisibles (General Purpose Bunny) pour +-- lesquels la faction 35 est correcte et ne doit pas etre touchee. +-- +-- Portee : 135 entrees corrigees, exclusives a la carte 1460. +-- ===================================================================== + +-- 35 -> 2780 (80 creatures) +-- 35 -> 1768 (20 creatures) +-- 35 -> 2879 (15 creatures) +-- 35 -> 2876 (13 creatures) +-- 35 -> 1819 (2 creatures) +-- 16 -> 2878 (1 creatures) +-- 16 -> 2780 (1 creatures) +-- 35 -> 14 (1 creatures) +-- 35 -> 2028 (1 creatures) +-- 35 -> 2877 (1 creatures) + +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=90506; -- Felfire Imp (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=90515; -- Infernal Siegebreaker (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=90516; -- Mo'arg Painbringer (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=90525; -- Eredar Chaos Guard (etait 35) +UPDATE `creature_template` SET `faction`=2878 WHERE `entry`=90544; -- Krosus (etait 16) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=90677; -- Wrathguard Dreadblade (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=90686; -- Felstalker Dreadhound (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=90688; -- Tichondrius the Darkener (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=90705; -- Dread Commander Arganoth (etait 16) +UPDATE `creature_template` SET `faction`=2876 WHERE `entry`=90708; -- Vol'jin (etait 35) +UPDATE `creature_template` SET `faction`=2876 WHERE `entry`=90709; -- Lady Sylvanas Windrunner (etait 35) +UPDATE `creature_template` SET `faction`=2876 WHERE `entry`=90710; -- Baine Bloodhoof (etait 35) +UPDATE `creature_template` SET `faction`=2876 WHERE `entry`=90711; -- Thrall (etait 35) +UPDATE `creature_template` SET `faction`=2876 WHERE `entry`=90712; -- Earthen Ring Shaman (etait 35) +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=90713; -- King Varian Wrynn (etait 35) +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=90714; -- Lady Jaina Proudmoore (etait 35) +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=90716; -- Gelbin Mekkatorque (etait 35) +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=90717; -- Genn Greymane (etait 35) +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=91353; -- Kirin Tor Battle-Mage (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=91588; -- Fel Lord Kurduz (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=91902; -- Brutallus (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=91967; -- Infernal Siegebreaker (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=91970; -- Felguard Invader (etait 35) +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=92121; -- Argent Dawnbringer (etait 35) +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=92122; -- Gnomeregan Tinkerer (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=92558; -- Arkethrax (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=92564; -- Mo'arg Painbringer (etait 35) +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=92586; -- Ironforge Cannoneer (etait 35) +UPDATE `creature_template` SET `faction`=2876 WHERE `entry`=93704; -- Darkspear Headhunter (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=93719; -- Fel Commander Azgalor (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=94189; -- Living Felblaze (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=94190; -- Burning Sentry (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=94191; -- Burning Terrorhound (etait 35) +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=94223; -- Argent Dawnbringer (etait 35) +UPDATE `creature_template` SET `faction`=14 WHERE `entry`=94276; -- Gul'dan (etait 35) +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=97496; -- Kirin Tor Battle-Mage (etait 35) +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=97502; -- Argent Dawnbringer (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=97510; -- Soulbound Destructor (etait 35) +UPDATE `creature_template` SET `faction`=2876 WHERE `entry`=97521; -- Earthen Ring Shaman (etait 35) +UPDATE `creature_template` SET `faction`=2876 WHERE `entry`=97525; -- Thunder Bluff Brave (etait 35) +UPDATE `creature_template` SET `faction`=2876 WHERE `entry`=97526; -- Deathguard Elite (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=100621; -- Mother Virila (etait 35) +UPDATE `creature_template` SET `faction`=2028 WHERE `entry`=100959; -- Unattended Cannon (etait 35) +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=101056; -- Gilnean Royal Guard (etait 35) +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=101057; -- Gilnean Royal Guard (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=101632; -- Mo'arg Painbringer (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=101667; -- Shielded Anchor (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=102696; -- Felslag Imp (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=102698; -- Anostronoth (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=102701; -- Mo'arg Painbringer (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=102702; -- Wrathguard Dreadblade (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=102703; -- Fel Lord Dukaz (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=102704; -- Fel Lord Zarnoz (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=102705; -- Fel Lord Rakaz (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=102706; -- Grinning Shadowstalker (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=105163; -- Destromath (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=105164; -- Felgard Legionnaire (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=105165; -- Felgard Legionnaire (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=105166; -- Gorgonnash (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=105167; -- Imp Mother Fecunda (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=105168; -- Anetheron (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=105169; -- Mephistroth (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=105170; -- Balnazzar (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=105171; -- Mal'ganis (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=105172; -- Winged Nightmare (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=105174; -- Smashspite the Hateful (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=105175; -- Blerg (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=105176; -- Sathrovarr the Corruptor (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=105179; -- Lord Jaraxxus (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=105180; -- Grand Warlock Alythess (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=105181; -- Lady Sacrolash (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=105182; -- Gravax the Desecrator (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=105183; -- Lord Kra'vos (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=105185; -- Overseer Lykill (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=105186; -- Oublion (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=105187; -- Azoran (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=105188; -- Cordana Felsong (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=105189; -- Doomlord Kazrok (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=105190; -- Varedis Felsoul (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=105192; -- Caria Felsoul (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=105196; -- Brogozog (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=105197; -- Felwing (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=105199; -- Felstalker Dreadhound (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=105200; -- Felguard Invader (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=105203; -- Felguard Invader (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=105205; -- Mo'arg Spinebreaker (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=105206; -- Wrathguard Dreadblade (etait 35) +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=105217; -- Argent Dawnbringer (etait 35) +UPDATE `creature_template` SET `faction`=1819 WHERE `entry`=108990; -- Stormwind Gryphon (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=109586; -- Fel Lord Rakkan (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=109587; -- Fel Lord Zardak (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=109591; -- Felguard Legionnaire (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=109592; -- Felguard Legionnaire (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=109604; -- Felguard Legionnaire (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=110614; -- Malificus (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=110615; -- Argent Dawnbringer (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=110616; -- Dark Worshipper (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=110617; -- Shadowsworn Harbinger (etait 35) +UPDATE `creature_template` SET `faction`=2879 WHERE `entry`=110941; -- Dessicated Crusader (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111074; -- Grinning Shadowstalker (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111079; -- Dantalionax (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111085; -- Geth'xun (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111087; -- Hakkar the Houndmaster (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111088; -- Lord Perdition (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111089; -- Malinoth (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111148; -- Lady Ran'zara (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111149; -- Talixae Flamewreath (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111152; -- Grand Summoner Abraxeton (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111153; -- Aargoss (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111154; -- Malgalor (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111155; -- Makaan the Malevolent (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111156; -- Fel Lord Dakuur (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111157; -- Pilik (etait 35) +UPDATE `creature_template` SET `faction`=1768 WHERE `entry`=111165; -- Lady Keletress (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111167; -- Lochaber (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111171; -- Carnivore (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111173; -- Soulchaser (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111174; -- Vaultwarden Umbra (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=111175; -- The Overseer (etait 35) +UPDATE `creature_template` SET `faction`=2876 WHERE `entry`=112920; -- Dark Ranger (etait 35) +UPDATE `creature_template` SET `faction`=2876 WHERE `entry`=112921; -- Bilgewater Blastmaster (etait 35) +UPDATE `creature_template` SET `faction`=2876 WHERE `entry`=112976; -- Argent Lightbringer (etait 35) +UPDATE `creature_template` SET `faction`=2876 WHERE `entry`=112977; -- Argent Lightbringer (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=113036; -- Fel Lord Razzar (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=113037; -- Fel Lord Darakk (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=113038; -- Fel Lord Kurrz (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=113053; -- Mother Sepestra (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=113054; -- Diathorus the Seeker (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=113055; -- Lord Banehollow (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=113056; -- Solenor the Slayer (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=113057; -- Fel Lord Durkan (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=113058; -- Fel Lord Volak (etait 35) +UPDATE `creature_template` SET `faction`=2780 WHERE `entry`=113059; -- Fel Lord Garzan (etait 35) +UPDATE `creature_template` SET `faction`=2877 WHERE `entry`=113129; -- Fel Lava (etait 35) +UPDATE `creature_template` SET `faction`=1819 WHERE `entry`=113290; -- Riding Bat (etait 35)