Rivage brise 1460 : les modeles de creatures etaient des souches

Signale en jeu : « exemple lui n est pas attaquable », capture d un
.npc info montrant Felguard Legionnaire (109591) en Level: 1.

Nos creature_template de l epoque Legion sont des SOUCHES : sur les 152
entrees exclusives a cette carte, 141 etaient au niveau 1. La faction,
corrigee au tour precedent, n etait que la partie visible du trou.

Divergences relevees face au dump de reference :
  minlevel   150/152      unit_flags2  147/152
  maxlevel   145/152      unit_flags   136/152
  unit_class  62/152      speed_run     55/152
  AIName      32/152      speed_walk    12/152

151 entrees corrigees. Il ne reste que 6 souches : les entrees partagees
avec d autres cartes, volontairement ecartees comme pour les factions --
ce sont des declencheurs invisibles.

EXCLUS VOLONTAIREMENT du correctif, malgre leurs divergences :
  AIName      -- transposer pourrait defaire un comportement pose
                 sciemment chez nous.
  flags_extra -- porte des drapeaux que le coeur calcule lui-meme, dont
                 CREATURE_FLAG_EXTRA_DUNGEON_BOSS pose au chargement
                 depuis instance_encounters.

Verification prealable ecrite : un comparateur colonne par colonne
(chantiers/rivage_brise/outils/comparer_templates.py) a mesure les
divergences avant toute modification, plutot que de transposer en bloc.
La faction n y figurait plus, confirmant que le correctif precedent avait
bien pris et que l outil dit vrai.

Retour arriere joint, reconstruit depuis les valeurs d avant correction.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
SylvaniaCore deploy
2026-08-28 16:06:07 +02:00
parent 6c3804dde9
commit 6219d00c06
4 changed files with 587 additions and 0 deletions
@@ -0,0 +1,111 @@
# -*- coding: utf-8 -*-
"""Compare NOS creature_template avec ceux de la reference, pour les
entrees exclusives a la carte 1460. Rapport seul, n'ecrit rien."""
import io, re, subprocess
from collections import Counter
DUMP = '/home/ubuntu/tmp/abs/LegionCore_world_2020_04_25.sql'
# colonnes qui pesent sur la jouabilite, et presentes dans les deux schemas
CANDIDATES = ['minlevel','maxlevel','faction','npcflag','speed_walk','speed_run','scale','rank',
'BaseAttackTime','RangeAttackTime','unit_class','unit_flags','unit_flags2',
'dynamicflags','family','type','type_flags','HealthModifier','ManaModifier',
'ArmorModifier','DamageModifier','ExperienceModifier','RegenHealth',
'mechanic_immune_mask','flags_extra','MovementType','AIName','lootid']
def dec(b):
r, c, p, s, e = [], [], 0, False, False
for ch in b:
if s:
c.append(ch)
if e: e = False
elif ch == '\\': e = True
elif ch == "'": s = False
continue
if ch == "'": s = True; c.append(ch)
elif ch == '(':
p += 1; c = [] if p == 1 else c + [ch]
elif ch == ')':
p -= 1
if p == 0: r.append(''.join(c))
else: c.append(ch)
elif p > 0: c.append(ch)
return r
def ch_(t):
v, c, s, e = [], [], False, False
for x in t:
if s:
c.append(x)
if e: e = False
elif x == '\\': e = True
elif x == "'": s = False
continue
if x == "'": s = True; c.append(x)
elif x == ',': v.append(''.join(c).strip()); c = []
else: c.append(x)
v.append(''.join(c).strip()); return v
nos_cols = subprocess.check_output(
['sudo', 'mysql', 'dc_world', '-N', '-e', 'SHOW COLUMNS FROM creature_template;']
).decode('utf-8', 'replace')
nos_cols = [l.split('\t')[0] for l in nos_cols.splitlines() if l.strip()]
communes = [c for c in CANDIDATES if c in nos_cols]
print('colonnes comparees : %d' % len(communes))
q = ("SELECT ct.entry," + ','.join('ct.`%s`' % c for c in communes) +
" FROM creature_template ct WHERE ct.entry IN (SELECT DISTINCT c.id FROM creature c "
"WHERE c.map=1460 AND c.id NOT IN (SELECT DISTINCT id FROM creature WHERE map<>1460));")
brut = subprocess.check_output(['sudo', 'mysql', 'dc_world', '-N', '-e', q]).decode('utf-8', 'replace')
notre = {}
for l in brut.splitlines():
p = l.split('\t')
if len(p) == len(communes) + 1:
notre[int(p[0])] = dict(zip(communes, p[1:]))
print('entrees exclusives a la carte 1460 : %d' % len(notre))
mot = 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 = mot.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)
ie = cols.index('entry')
for t in dec(''.join(b)):
v = ch_(t)
if len(v) != len(cols): continue
try: e = int(v[ie])
except ValueError: continue
if e in notre:
ref[e] = {c: v[cols.index(c)] for c in communes if c in cols}
l = f.readline()
print('retrouvees dans la reference : %d' % len(ref))
print()
print(' colonne divergentes / comparees')
divergences = Counter()
for e in ref:
for c in communes:
if c not in ref[e]: continue
a = notre[e][c].strip()
b = ref[e][c].strip().strip("'")
try:
egal = abs(float(a) - float(b)) < 1e-6
except ValueError:
egal = (a == b)
if not egal:
divergences[c] += 1
for c in communes:
if divergences[c]:
print(' %-22s %4d / %d' % (c, divergences[c], len(ref)))
@@ -0,0 +1,144 @@
# -*- coding: utf-8 -*-
"""Transpose les colonnes de jouabilite des creature_template de la
carte 1460 depuis la reference. Produit le SQL et son retour arriere."""
import io, re, subprocess
DUMP = '/home/ubuntu/tmp/abs/LegionCore_world_2020_04_25.sql'
SORTIE = '/home/ubuntu/DestinyCore/sql/sylvania/rivage_templates_1460.sql'
RETOUR = '/home/ubuntu/DestinyCore/chantiers/rivage_brise/retour_templates_1460.sql'
# EXCLUS volontairement :
# AIName -- pourrait defaire un comportement pose sciemment chez nous
# flags_extra -- porte des drapeaux que le coeur calcule lui-meme
# (CREATURE_FLAG_EXTRA_DUNGEON_BOSS est pose au chargement)
COLONNES = ['minlevel','maxlevel','unit_class','unit_flags','unit_flags2','npcflag',
'speed_walk','speed_run','mechanic_immune_mask','RegenHealth']
def dec(b):
r, c, p, s, e = [], [], 0, False, False
for ch in b:
if s:
c.append(ch)
if e: e = False
elif ch == '\\': e = True
elif ch == "'": s = False
continue
if ch == "'": s = True; c.append(ch)
elif ch == '(':
p += 1; c = [] if p == 1 else c + [ch]
elif ch == ')':
p -= 1
if p == 0: r.append(''.join(c))
else: c.append(ch)
elif p > 0: c.append(ch)
return r
def ch_(t):
v, c, s, e = [], [], False, False
for x in t:
if s:
c.append(x)
if e: e = False
elif x == '\\': e = True
elif x == "'": s = False
continue
if x == "'": s = True; c.append(x)
elif x == ',': v.append(''.join(c).strip()); c = []
else: c.append(x)
v.append(''.join(c).strip()); return v
q = ("SELECT ct.entry,ct.name," + ','.join('ct.`%s`' % c for c in COLONNES) +
" FROM creature_template ct WHERE ct.entry IN (SELECT DISTINCT c.id FROM creature c "
"WHERE c.map=1460 AND c.id NOT IN (SELECT DISTINCT id FROM creature WHERE map<>1460));")
brut = subprocess.check_output(['sudo', 'mysql', 'dc_world', '-N', '-e', q]).decode('utf-8', 'replace')
notre = {}
for l in brut.splitlines():
p = l.split('\t')
if len(p) == len(COLONNES) + 2:
notre[int(p[0])] = (p[1], dict(zip(COLONNES, p[2:])))
print('entrees exclusives a la carte 1460 : %d' % len(notre))
mot = 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 = mot.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)
ie = cols.index('entry')
for t in dec(''.join(b)):
v = ch_(t)
if len(v) != len(cols): continue
try: e = int(v[ie])
except ValueError: continue
if e in notre:
ref[e] = {c: v[cols.index(c)].strip("'") for c in COLONNES if c in cols}
l = f.readline()
maj, rb, touchees = [], [], 0
for e in sorted(ref):
nom, nos = notre[e]
diff = {}
for c in COLONNES:
if c not in ref[e]: continue
a, b = nos[c].strip(), ref[e][c].strip()
try:
egal = abs(float(a) - float(b)) < 1e-6
except ValueError:
egal = (a == b)
if not egal:
diff[c] = b
if not diff:
continue
touchees += 1
maj.append("UPDATE `creature_template` SET %s WHERE `entry`=%d; -- %s"
% (', '.join('`%s`=%s' % (c, v) for c, v in sorted(diff.items())), e, nom[:38]))
rb.append("UPDATE `creature_template` SET %s WHERE `entry`=%d;"
% (', '.join('`%s`=%s' % (c, nos[c]) for c in sorted(diff)), e))
print('entrees a corriger : %d' % touchees)
L = ["-- =====================================================================",
"-- Rivage brise (carte 1460) -- MODELES DE CREATURES incomplets",
"--",
"-- Signale en jeu : « exemple lui n'est pas attaquable », capture d'un",
"-- .npc info montrant Felguard Legionnaire (109591) en Level: 1.",
"--",
"-- Nos creature_template de l'epoque Legion sont des SOUCHES : sur les",
"-- 152 entrees exclusives a cette carte, 141 sont au niveau 1. La",
"-- faction, corrigee au tour precedent, n'etait que la partie visible.",
"--",
"-- Divergences relevees face au dump de reference :",
"-- minlevel 150/152 unit_flags2 147/152",
"-- maxlevel 145/152 unit_flags 136/152",
"-- unit_class 62/152 speed_run 55/152",
"--",
"-- EXCLUS VOLONTAIREMENT du correctif :",
"-- AIName -- 32 divergences, mais transposer pourrait defaire un",
"-- comportement pose sciemment chez nous.",
"-- flags_extra -- porte des drapeaux que le coeur calcule lui-meme,",
"-- dont CREATURE_FLAG_EXTRA_DUNGEON_BOSS, pose au",
"-- chargement depuis instance_encounters.",
"--",
"-- PORTEE : %d entrees, toutes exclusives a la carte 1460. Les entrees" % touchees,
"-- possedant un spawn ailleurs sont ecartees -- ce sont des declencheurs",
"-- invisibles pour lesquels les valeurs actuelles sont correctes.",
"--",
"-- Retour arriere : chantiers/rivage_brise/retour_templates_1460.sql",
"-- =====================================================================",
""]
io.open(SORTIE, 'w', encoding='utf-8').write('\n'.join(L + maj) + '\n')
io.open(RETOUR, 'w', encoding='utf-8').write(
'-- Retour arriere des modeles de la carte 1460, valeurs d avant correction.\n'
+ '\n'.join(rb) + '\n')
print('ecrit : %s' % SORTIE)
print('retour : %s' % RETOUR)
@@ -0,0 +1,152 @@
-- Retour arriere des modeles de la carte 1460, valeurs d avant correction.
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_class`=1, `unit_flags2`=0 WHERE `entry`=90506;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `speed_walk`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=90515;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=90516;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags2`=0 WHERE `entry`=90525;
UPDATE `creature_template` SET `maxlevel`=102, `mechanic_immune_mask`=0, `minlevel`=102, `speed_run`=1.14286, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=90544;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags2`=0 WHERE `entry`=90677;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=90686;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=90688;
UPDATE `creature_template` SET `maxlevel`=100, `mechanic_immune_mask`=0, `minlevel`=100, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=90705;
UPDATE `creature_template` SET `maxlevel`=103, `minlevel`=103, `speed_run`=1.14286, `speed_walk`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=90708;
UPDATE `creature_template` SET `maxlevel`=103, `minlevel`=103, `speed_run`=1.14286, `speed_walk`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=90709;
UPDATE `creature_template` SET `maxlevel`=103, `minlevel`=103, `speed_run`=1.14286, `speed_walk`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=90710;
UPDATE `creature_template` SET `maxlevel`=103, `minlevel`=103, `speed_run`=1.14286, `speed_walk`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=90711;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `speed_walk`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=90712;
UPDATE `creature_template` SET `maxlevel`=103, `minlevel`=103, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=90713;
UPDATE `creature_template` SET `maxlevel`=103, `minlevel`=103, `speed_run`=1.14286, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=90714;
UPDATE `creature_template` SET `maxlevel`=103, `minlevel`=103, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=90716;
UPDATE `creature_template` SET `maxlevel`=103, `minlevel`=103, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=90717;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=91353;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=91588;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=91902;
UPDATE `creature_template` SET `minlevel`=98, `npcflag`=17179869184, `unit_flags`=33536 WHERE `entry`=91949;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=91951;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `speed_walk`=1, `unit_flags2`=0 WHERE `entry`=91967;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=91970;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=92061;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=92074;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=92121;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=92122;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=92558;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=92564;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=92586;
UPDATE `creature_template` SET `minlevel`=98, `npcflag`=17179869184, `speed_run`=1.57143, `unit_flags`=33536 WHERE `entry`=93219;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `speed_walk`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=93704;
UPDATE `creature_template` SET `maxlevel`=1, `mechanic_immune_mask`=0, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=93719;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=94189;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=94190;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=94191;
UPDATE `creature_template` SET `minlevel`=98, `npcflag`=17179869184, `unit_flags`=33536, `unit_flags2`=2099200 WHERE `entry`=94209;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=94223;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=94276;
UPDATE `creature_template` SET `minlevel`=98, `npcflag`=17179869184, `speed_run`=1.57143, `unit_flags`=33536 WHERE `entry`=97486;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=97496;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=97502;
UPDATE `creature_template` SET `minlevel`=98, `npcflag`=17179869184, `unit_flags`=33536, `unit_flags2`=2099200 WHERE `entry`=97503;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags2`=0 WHERE `entry`=97510;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=97521;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `speed_walk`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=97525;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=97526;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=97527;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=97528;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_class`=1, `unit_flags2`=0 WHERE `entry`=100621;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `npcflag`=0, `speed_run`=1.14286, `unit_flags2`=0 WHERE `entry`=100959;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `speed_walk`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=101056;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `speed_walk`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=101057;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags2`=0 WHERE `entry`=101084;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags2`=0 WHERE `entry`=101086;
UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=101103;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=101632;
UPDATE `creature_template` SET `RegenHealth`=1, `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0 WHERE `entry`=101667;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_class`=1, `unit_flags2`=0 WHERE `entry`=102696;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=102698;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=102701;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags2`=0 WHERE `entry`=102702;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=102703;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=102704;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=102705;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=102706;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105163;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105164;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105165;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105166;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105167;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105168;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105169;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105170;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105171;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105172;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105174;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105175;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105176;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105179;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105180;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105181;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105182;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105183;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105185;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105186;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105187;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105188;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105189;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105190;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105192;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105196;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105197;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105199;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105200;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105203;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105205;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=105206;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags2`=0 WHERE `entry`=105217;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=108990;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=109341;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=109586;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=109587;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=109591;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=109592;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=109604;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=110614;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=110615;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags2`=0 WHERE `entry`=110616;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags2`=0 WHERE `entry`=110617;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags2`=0 WHERE `entry`=110941;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111074;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111079;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111085;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111087;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111088;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111089;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111148;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111149;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111152;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111153;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111154;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111155;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111156;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111157;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111165;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111167;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111171;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111173;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111174;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=111175;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=112879;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `speed_walk`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=112920;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=112921;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=112976;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=112977;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=113036;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=113037;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=113038;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=113053;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=113054;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=113055;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_class`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=113056;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=113057;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=113058;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `speed_run`=1.14286, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=113059;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=113129;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=113290;
UPDATE `creature_template` SET `maxlevel`=1, `minlevel`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=113291;