Compare commits

..

16 Commits

Author SHA1 Message Date
Docker Build 4a1f4d02f0 docs(client): add CLIENT-PATCHES.md describing the Fractured client bundle
Documents the four binary artifacts that pair with this server
(patch-enUS-4/5/6.MPQ + patched Wow.exe), where they live (the
Releases page; not in the tree per the repo-tidy policy), and how a
contributor installs them on top of a clean 3.3.5a client. Cross-
referenced from the contrib/fractured-dev-extras README.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 11:34:12 -04:00
Docker Build 4d2a80ddb8 Paragon: server-authoritative CP/rune sync + cascade-spell revoke hardening
mod-paragon Paragon_Essence.cpp:
- Broaden SkillLinesLinkedToSpell: collect every SkillLineAbility row for
  an anchor spell regardless of AcquireMethod, so anchor spells whose
  primary SLA uses AcquireMethod 0 (e.g. Blood Strike) correctly identify
  their skill lines and let the dependent classifier do its job.
- IsSpellSkillLineCascadeDependent / RevokeUnwantedCascadeSpellsForPlayer
  use the broadened helper. HandleCommit calls the post-purchase sweep
  immediately so the spellbook never carries lingering cascade dependents
  (Blood Presence / Forceful Deflection / Death Coil / Death Grip).
- New character_paragon_panel_spell_revoked table tracks which active
  dependents we've revoked per (guid, parent) so OnPlayerLogin can
  re-revoke them after AC's _LoadSkills -> learnSkillRewardedSpells
  silently re-grants them.
- OnPlayerLogin opens the client SILENCE window via SendSilenceOpenForCommit
  with an empty allow list and intentionally omits the matching
  SendSilenceClose: the chat frame buffers CHAT_MSG_SYSTEM during the
  loading screen and only flushes after PLAYER_ENTERING_WORLD, so a paired
  CLOSE would shut the filter before the buffered "you have unlearned X"
  toasts hit it. The addon's 8s fail-open closes the window after the flush.
- New `.paragon hat` chat command for diagnosing Honor Among Thieves
  triggers (talent rank, learned spell, applied aura, proc table entry).

mod-paragon Paragon_SC.cpp:
- OnPlayerUpdate pushes server-authoritative combo points to the client
  via PARAA "R CP <n>" whenever the count changes. The client-side
  ComboFrame Paragon simulator listens for this and updates the target
  frame, fixing HAT-generated CP not displaying (HAT's trigger casts
  with a null target, which the combat-log inference path can't see).
- OnPlayerUpdate also pushes "R RUNES <cd0..cd5>" (ms remaining per
  rune slot) on rune mask changes, so the client RuneFrame simulator
  stays in lock-step with Spell::TakeRunePower instead of drifting
  through combat-log latency.

mod-paragon SQL:
- New updates/2026_05_09_00.sql migration creates
  character_paragon_panel_spell_revoked for AC's auto-DBUpdater so a
  fresh checkout can stand up an existing characters DB without
  manual intervention. Matching CREATE TABLE IF NOT EXISTS in
  base/character_paragon_panel_learned.sql for fresh installs.

mod-paragon conf:
- New Paragon.Diag.PanelLearn flag traces every PanelLearnSpellChain
  commit (chain ids, before/after spell-map sizes, side-spell
  classification) for diagnosing "spell reappears on relog" bugs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 11:22:57 -04:00
Docker Build 81df32963f chore(repo): move fork docs and logs under contrib/fractured-dev-extras
Stock AzerothCore does not ship CLAUDE.md, BUILD-NATIVE.md, or local build
logs at repo root. Park them under contrib/fractured-dev-extras/ so the
repo root stays close to upstream and dev clutter is contained.

- mv CLAUDE.md, BUILD-NATIVE.md -> contrib/fractured-dev-extras/
- mv build-worldserver.log + _build_paragon_*.log there (untracked / ignored)
- add contrib/fractured-dev-extras/README.txt explaining the layout
- gitignore: contrib/fractured-dev-extras/*.log

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 10:39:28 -04:00
Dawnforger 2b98ddeadd chore(scripts): add world-db-from-base.sh for clean acore_world from base
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 00:59:49 -05:00
Dawnforger 4c999bee3f fix(db_world): add creature_summon_groups.Comment before 2023_08_13_00
Column was added in old/8.x SQL but not in the archive chain; idempotent
ALTER matches 2023_01_31_01 so INSERT using Comment succeeds on archive-only
installs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 00:49:08 -05:00
Dawnforger ba1cca9521 fix(db_world): clamp VerifiedBuild for MEDIUMINT (spell_target_position)
MariaDB rejects 34149345 for VerifiedBuild when the column is MEDIUMINT
(signed max 8388607), as in old 8.x schema migrations. Replace corrupt
value with 0 in archive and base dumps.

Add data/sql/tools/clamp_verifiedbuild_mediumint.py to re-scan archive,
updates, and base INSERT/UPDATE blocks that list VerifiedBuild.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 00:45:38 -05:00
Dawnforger b797877558 fix(db_world): ensure attributeMask exists before 2023_07_17_01 update
The column was introduced in old/9.x SQL but not in the archive chain;
fresh archive-only installs lacked the column. Add idempotent ALTER via
INFORMATION_SCHEMA before updating spell_enchant_proc_data.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 00:38:29 -05:00
Dawnforger 326644bbac fix(db_world): add dist/angle to creature_formations INSERTs (strict MariaDB)
Archive updates omitted NOT NULL dist/angle under strict SQL mode. Patch all
affected archive files, pending updates, and old 9.x copies. Use 0,0 for
stacked/default formations.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 00:36:16 -05:00
Dawnforger 36fdf9af82 fix(db_world): include dist and angle in creature_formations INSERT
MariaDB strict mode rejects INSERTs that omit NOT NULL columns without
defaults. Align second INSERT in 2023_05_09_01.sql with the first block.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 00:29:42 -05:00
Dawnforger 579574acb3 chore(conf): Fractured defaults — auth 47497, realmlist hsrwow.net:8085
- authserver.conf.dist: RealmServerPort 47497; document hsrwow.net client realmlist
- base realmlist: Fractured WoW / hsrwow.net; clarify world port vs auth port
- BUILD-NATIVE.md: Fractured network defaults section
2026-05-09 00:07:31 -05:00
Dawnforger 63ab74b4fb fix(db): MariaDB version parse for 10.x-MariaDB- without 5.5.5- prefix
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-08 21:50:14 -05:00
Docker Build df7e943a74 Paragon: move module SQL to AC's data/sql/db-* layout for auto-update
AzerothCore's DBUpdater scans modules/<mod>/data/sql/db-{world,characters,auth}/
(see src/server/database/Updater/UpdateFetcher.cpp). The previous
modules/mod-paragon/sql/{world,characters}/base/ layout was non-standard
and skipped by the updater, so a fresh deploy never had Paragon tables
created automatically.

Move all five SQL files into the standard layout. Files are idempotent
(CREATE TABLE IF NOT EXISTS plus a DELETE+INSERT for the cost table)
and now apply on every dbimport / worldserver start, recorded by hash
in <db>.updates so re-runs are skipped.

Update BUILD-NATIVE.md to drop the manual mysql import section, and
document the SQL layout in the mod-paragon README.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-08 22:03:42 -04:00
Docker Build 203356aca8 Paragon: AE/TE currency, Character Advancement commit/reset, panel SQL
- mod-paragon: Paragon_Essence addon channel (PARAA), commit queue, resets,
  spell chain learn with passive child tracking, silence-window hints for
  cascade learns, trainer exemptions for pet/portal trainers
- SQL: character_paragon_panel_* tables, paragon_spell_ae_cost world data
- Core: Player Paragon class talent learn hook; Trainer skip for Paragon
  where appropriate
- Ignore local build-worldserver.log

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-08 21:43:01 -04:00
Dawnforger e2bed00b5c fix(common): OpenSSLCrypto provider API only for OpenSSL 3+ 2026-05-08 20:36:25 -05:00
Dawnforger fdc5849a69 fix(common): ARC4 OpenSSL 1.1 vs 3 API (EVP_CIPHER_fetch) 2026-05-08 20:28:46 -05:00
Dawnforger 2f8c374569 fix(db): MariaDB 10.6+ server and connector compatibility
- Parse real MariaDB version after MySQL 5.5.5 compatibility prefix for
  DatabaseIncompatibleVersion checks.
- Relax client checks when building against MariaDB C connector
  (MARIADB_VERSION_ID); keep Oracle MySQL 8.0+ rules otherwise.
- Use mysql_stmt_bind_param on MariaDB; mysql_stmt_bind_named_param only for
  MySQL 8.3+ without MariaDB headers.
- SSL: MYSQL_OPT_SSL_ENFORCE on MariaDB connector, MYSQL_OPT_SSL_MODE elsewhere.
- Track custom_script_loader.cpp so static script link succeeds; CMake
  find_package(MySQL) requires COMPONENTS lib on CMake 3.16.
2026-05-08 20:11:43 -05:00
51 changed files with 4022 additions and 1272 deletions
+7
View File
@@ -23,6 +23,7 @@
/data/sql/custom/*
/src/server/scripts/Custom/*
!/src/server/scripts/Custom/README.md
!/src/server/scripts/Custom/custom_script_loader.cpp
/*.override.yml
/*.override.yaml
@@ -119,3 +120,9 @@ local.properties
!/modules/mod-ale/**
# Team Docker: ALE needs Lua at configure time (see mod-ale docs)
!docker-compose.override.yml
# Local build artifacts (do not commit)
build-worldserver.log
# Local logs parked under contrib/fractured-dev-extras (see README there)
contrib/fractured-dev-extras/*.log
+1 -1
View File
@@ -106,7 +106,7 @@ include(ConfigInstall)
CU_RUN_HOOK("AFTER_LOAD_CMAKE_MODULES")
find_package(PCHSupport)
find_package(MySQL REQUIRED)
find_package(MySQL REQUIRED COMPONENTS lib)
if(UNIX AND WITH_PERFTOOLS)
find_package(Gperftools)
@@ -15,6 +15,22 @@ prerequisites; everything here is just the deltas you need on top of it.
---
## Fractured client + network defaults
Production Fractured uses a non-default **auth** port so the client realmlist can be:
```text
set realmlist hsrwow.net:47497
```
(Patched 3.3.5 clients that support `host:port`; otherwise use port forwarding to **3724**.)
- **`authserver.conf``RealmServerPort`** must be **`47497`** (matches `authserver.conf.dist` in this repo).
- **`realmlist` table → `port`** is the **world** port (default **8085**, same as `WorldServerPort` in `worldserver.conf.dist`), **not** 47497.
- **`realmlist``address`** defaults to **`hsrwow.net`** in base SQL; change if your public hostname differs.
---
## What you get when you build this fork
- Worldserver with `CLASS_PARAGON` and Paragon-aware DK rune / sticky
@@ -172,22 +188,19 @@ The standard AzerothCore three-database layout (`acore_auth`,
Easiest path: run the worldserver once with empty databases and let
`AC_FORCE_CREATE_DB=1` populate them, **or** use `dbimport` from the
install dir. Then layer the Fractured-specific SQL on top:
install dir.
```bash
cd <repo>/modules/mod-paragon/sql
The Fractured-specific SQL (mod-paragon) lives under
`modules/mod-paragon/data/sql/db-{world,characters}/base/` — that's the
**AzerothCore-standard module layout**, which means AC's built-in
DBUpdater picks it up automatically on every `worldserver` /
`dbimport` start. New SQL files are applied; previously-applied ones
are skipped via the hash recorded in `acore_world.updates` /
`acore_characters.updates`. No manual `mysql < ...` steps required for
deploys.
# world DB
mysql -u acore -p acore_world < world/base/paragon_gametables.sql
mysql -u acore -p acore_world < world/base/paragon_spell_ae_cost.sql
mysql -u acore -p acore_world < world/base/player_class_stats_paragon_basemana.sql
# characters DB
mysql -u acore -p acore_characters < characters/base/character_paragon_currency.sql
```
Re-run any module-specific SQL whenever you pull updates that touch
`modules/*/sql/`.
Modify-and-redeploy works the same way: change the file, push, pull on
the VPS, and the next `dbimport` run sees the new hash and re-applies.
---
@@ -0,0 +1,85 @@
# Fractured Client Patches
Binary client artifacts that pair with this server. They live on the
[Releases page](https://github.com/Dawnforger/Fractured/releases),
**not** in the tree, so the repo stays lean and binaries can be
re-downloaded without bloating `git clone`.
This file is the table of contents and install guide.
---
## What ships in a release
| Artifact | Size | Purpose |
|---|---|---|
| `patch-enUS-4.MPQ` | ~5 MB | DBC + GlueXML bake. Adds `CLASS_PARAGON` (id 12), the character-create slot, glue strings, talent-tab DBC entries, and the Paragon resource bar definitions. Required for character creation as Paragon to even show up. |
| `patch-enUS-5.MPQ` | ~40 KB | FrameXML overrides. Replaces stock `PlayerFrame.lua` / `RuneFrame.lua` / `ComboFrame.lua` / `UnitFrame.lua` with Paragon-aware versions: rune simulator, combo-point simulator, server-authoritative resource sync over the `PARAA` addon channel, action-button usability + click guards. |
| `patch-enUS-6.MPQ` | ~160 KB | The `ParagonAdvancement` addon. Replaces the talent pane (`N` key) for Paragon characters with the Character Advancement panel: per-class spell tabs, talent grid, Overview/Search tabs, AE/TE currency, commit / reset / preview, login-time toast suppression. |
| `Wow.exe` | ~7.5 MB | 3.3.5a (build 12340) client byte-patched to skip the MPQ signature check so custom `patch-enUS-N.MPQ` files load. Diff against stock is a few bytes; everything else is unchanged. |
Server and client work as a pair: the addon talks to `mod-paragon` on the
worldserver via `WHISPER` addon-channel messages with the `PARAA` prefix
(currency push, spell/talent snapshot, commit, combo points, rune
cooldowns, learn-toast silence window). Mismatched versions usually
manifest as the panel rendering blank or AE/TE reading 0/0.
---
## Install
You need a 3.3.5a (build 12340) WoW client. ChromieCraft's free 3.3.5a
download is the canonical clean source if you don't already have one.
1. Download every artifact from the latest release matching this server
build:
`https://github.com/Dawnforger/Fractured/releases/latest`
2. Replace `Wow.exe` at the root of your client install with the patched
one from the release. Keep a backup of the original if you want.
3. Drop `patch-enUS-4.MPQ`, `patch-enUS-5.MPQ`, `patch-enUS-6.MPQ` into
`Data/enUS/`. (For other locales, rename the suffix accordingly —
contents are locale-independent, only the filename ordering matters
to the loader.)
4. Edit `Data/enUS/realmlist.wtf` to point at your server, e.g.
`set realmlist your.host.tld`.
5. Launch `Wow.exe`. The login screen should reach the realm list. Make
a Paragon character (the new class entry on the create screen) and
press `N` in-world to open the Character Advancement panel.
If the panel opens empty / AE+TE read 0/0 / `N` opens the stock talent
pane: your client is loading an older `patch-enUS-6.MPQ`, or the
worldserver image is older than commit `4d2a80d` (the
`character_paragon_panel_spell_revoked` migration). Pull both ends to
the same release tag and rebuild the worldserver image.
---
## Building the patches yourself
The MPQs are reproducible from the dev tree (not in this repo —
`Classless Dev/Paragon Patch UI/` and
`Classless Dev/Paragon Advancement/` on the maintainer's workstation)
via two PowerShell scripts in `tools/`:
```
tools\build_paragon_ui_patch.ps1 -Deploy # -> patch-enUS-5.MPQ
tools\build_paragon_advancement_patch.ps1 -Deploy # -> patch-enUS-6.MPQ
```
`patch-enUS-4.MPQ` is the DBC + GlueXML bake; the bake scripts live with
the rest of the dev tooling and are not part of this repo by design
(see the repo-tidy policy in `README.txt` next to this file).
The patched `Wow.exe` is a one-time hex-edit of the stock 3.3.5a
client. The diff is publicly documented in the WoW emulation community
under names like "MPQ signature patch" / "no-CD-signature patch".
---
## Versioning
Releases are tagged to match the state of `main` they were built from.
The release notes call out which server commit shipped alongside each
artifact set, so a contributor running `git checkout <tag>` on this
repo can pull the matching client bundle and have a guaranteed-aligned
end-to-end build.
+16
View File
@@ -0,0 +1,16 @@
Fractured / Paragon — non-runtime repo extras
==============================================
This folder holds material that is not required to configure, build, or run
AzerothCore. Upstream AzerothCore does not ship these paths.
Contents:
- BUILD-NATIVE.md — fork-specific native build notes (moved from repo root).
- CLAUDE.md — optional AI assistant context (moved from repo root).
- CLIENT-PATCHES.md — what ships in a Fractured client release (MPQs +
patched Wow.exe), where to download them (Releases page), and how
to install them. Binaries themselves are NOT in the tree.
- *.log — local build logs (moved from repo root when present).
Operational files (docker-compose.override.yml, env/dist, modules/mod-paragon,
etc.) stay at their normal locations.
+10 -10
View File
@@ -58,16 +58,16 @@ INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`,
(90991, 90993, 4, 270, 515);
DELETE FROM `creature_formations` WHERE `memberGUID` IN (91247,91248,91249,90985,90986,90987,90988,90989,90990);
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `groupAI`) VALUES
(91247, 91247, 3),
(91247, 91248, 3),
(91247, 91249, 3),
(90985, 90985, 3),
(90985, 90986, 3),
(90985, 90987, 3),
(90988, 90988, 3),
(90988, 90989, 3),
(90988, 90990, 3);
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
(91247, 91247, 0, 0, 3),
(91247, 91248, 0, 0, 3),
(91247, 91249, 0, 0, 3),
(90985, 90985, 0, 0, 3),
(90985, 90986, 0, 0, 3),
(90985, 90987, 0, 0, 3),
(90988, 90988, 0, 0, 3),
(90988, 90989, 0, 0, 3),
(90988, 90990, 0, 0, 3);
UPDATE `creature` SET `id1` = 15384 WHERE `guid` = 91250 AND `id1` = 19871;
+7 -7
View File
@@ -22,13 +22,13 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_
(17653, 0, 3, 0, 4, 0, 100, 512, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 9, 17653, 0, 100, 1, 0, 0, 0, 0, 'Shadowmoon Channeler - On Aggro - Set In Combat With Zone');
DELETE FROM `creature_formations` WHERE `memberGUID` IN (@CGUID+0,@CGUID+1,@CGUID+2,@CGUID+3,@CGUID+4,@CGUID+5);
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `groupAI`) VALUES
(@CGUID+0, @CGUID+5, 24),
(@CGUID+1, @CGUID+5, 24),
(@CGUID+2, @CGUID+5, 24),
(@CGUID+3, @CGUID+5, 24),
(@CGUID+4, @CGUID+5, 24),
(@CGUID+5, @CGUID+5, 24);
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `dist`, `angle`, `groupAI`) VALUES
(@CGUID+0, @CGUID+5, 0, 0, 24),
(@CGUID+1, @CGUID+5, 0, 0, 24),
(@CGUID+2, @CGUID+5, 0, 0, 24),
(@CGUID+3, @CGUID+5, 0, 0, 24),
(@CGUID+4, @CGUID+5, 0, 0, 24),
(@CGUID+5, @CGUID+5, 0, 0, 24);
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` IN (-138519,-138519,-138520,-138521,-138522,-138523));
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+4 -4
View File
@@ -18,7 +18,7 @@ INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry
(13, 1, 30952, 0, 0, 31, 0, 3, 17687, 0, 0, 0, 0, '', 'Shoot Flame Arrow (30952) only hit Flame Arrow (17687)');
DELETE FROM `creature_formations` WHERE `memberGUID` IN (151094,151095,151096,151097);
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `groupAI`) VALUES
(151095,151095,3),
(151096,151095,3),
(151097,151095,3);
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `dist`, `angle`, `groupAI`) VALUES
(151095, 151095, 0, 0, 3),
(151096, 151095, 0, 0, 3),
(151097, 151095, 0, 0, 3);
+6 -6
View File
@@ -1,9 +1,9 @@
-- DB update 2023_07_10_00 -> 2023_07_10_01
--
DELETE FROM `creature_formations` WHERE `memberGUID` IN (90978, 90979, 90980, 90981, 90982);
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `groupAI`) VALUES
(90978, 90978, 3),
(90979, 90978, 3),
(90980, 90978, 3),
(90981, 90978, 3),
(90982, 90978, 3);
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `dist`, `angle`, `groupAI`) VALUES
(90978, 90978, 0, 0, 3),
(90979, 90978, 0, 0, 3),
(90980, 90978, 0, 0, 3),
(90981, 90978, 0, 0, 3),
(90982, 90978, 0, 0, 3);
@@ -1,3 +1,19 @@
-- DB update 2023_07_17_00 -> 2023_07_17_01
--
SET @attrmask_exists := (
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'spell_enchant_proc_data'
AND COLUMN_NAME = 'attributeMask'
);
SET @sql := IF(
@attrmask_exists > 0,
'SELECT 1',
'ALTER TABLE `spell_enchant_proc_data` ADD COLUMN `attributeMask` INT UNSIGNED NOT NULL DEFAULT 0 AFTER `procEx`'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
UPDATE `spell_enchant_proc_data` SET `attributeMask` = 0x2 WHERE `entry` = 2675;
+1 -1
View File
@@ -3,7 +3,7 @@ UPDATE `creature_template` SET `scriptname` = '' WHERE `entry` = 27326;
DELETE FROM `spell_target_position` WHERE `ID` = 48324 AND `EffectIndex` = 0;
INSERT INTO `spell_target_position` (`ID`, `EffectIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `VerifiedBuild`) VALUES
(48324, 0, 571, 3454.11, -2802.37, 202.14, 0, 34149345);
(48324, 0, 571, 3454.11, -2802.37, 202.14, 0, 0);
DELETE FROM `spell_script_names` WHERE `spell_id` IN (48382, 47533);
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
@@ -1,5 +1,21 @@
-- DB update 2023_08_12_02 -> 2023_08_13_00
--
SET @csg_comment_exists := (
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'creature_summon_groups'
AND COLUMN_NAME = 'Comment'
);
SET @sql := IF(
@csg_comment_exists > 0,
'SELECT 1',
'ALTER TABLE `creature_summon_groups` ADD COLUMN `Comment` varchar(255) NOT NULL DEFAULT '''' AFTER `summonTime`'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
DELETE FROM `event_scripts` WHERE `id` = 14376;
UPDATE `gameobject_template` SET `AIName` = 'SmartGameObjectAI' WHERE `entry` = 185220;
+126 -126
View File
@@ -1362,132 +1362,132 @@ UPDATE `creature_template_addon` SET `bytes2` = 1 WHERE (`entry` IN (21224, 2122
UPDATE `creature_template` SET `speed_walk` = 1.6, `speed_run` = 1.71428 WHERE (`entry` IN (21218, 21301));
DELETE FROM `creature_formations` WHERE `memberGUID` IN (@CGUID+1 ,@CGUID+2 ,@CGUID+3 ,@CGUID+4 ,@CGUID+5 ,@CGUID+6 ,@CGUID+7 ,@CGUID+8 ,@CGUID+9 ,@CGUID+10 ,@CGUID+11 ,@CGUID+12 ,@CGUID+13 ,@CGUID+14 ,@CGUID+15 ,@CGUID+22 ,@CGUID+23 ,@CGUID+24 ,@CGUID+25 ,@CGUID+26 ,@CGUID+27 ,@CGUID+28 ,@CGUID+29 ,@CGUID+30 ,@CGUID+31 ,@CGUID+32 ,@CGUID+33 ,@CGUID+34 ,@CGUID+35 ,@CGUID+36 ,@CGUID+37 ,@CGUID+38 ,@CGUID+39 ,@CGUID+40 ,@CGUID+41 ,@CGUID+42 ,@CGUID+43 ,@CGUID+44 ,@CGUID+45 ,@CGUID+46 ,@CGUID+47 ,@CGUID+48 ,@CGUID+49 ,@CGUID+50 ,@CGUID+51 ,@CGUID+52 ,@CGUID+53 ,@CGUID+54 ,@CGUID+55 ,@CGUID+56 ,@CGUID+57 ,@CGUID+58 ,@CGUID+59 ,@CGUID+60 ,@CGUID+61 ,@CGUID+62 ,@CGUID+63 ,@CGUID+64 ,@CGUID+65 ,@CGUID+66 ,@CGUID+67 ,@CGUID+68 ,@CGUID+69 ,@CGUID+70 ,@CGUID+71 ,@CGUID+72 ,@CGUID+73 ,@CGUID+74 ,@CGUID+75 ,@CGUID+76 ,@CGUID+77 ,@CGUID+78 ,@CGUID+79 ,@CGUID+80 ,@CGUID+81 ,@CGUID+82 ,@CGUID+83 ,@CGUID+84 ,@CGUID+85 ,@CGUID+86 ,@CGUID+87 ,@CGUID+88 ,@CGUID+89 ,@CGUID+90 ,@CGUID+91 ,@CGUID+92 ,@CGUID+93 ,@CGUID+94 ,@CGUID+95 ,@CGUID+96 ,@CGUID+97 ,@CGUID+98 ,@CGUID+99 ,@CGUID+102,@CGUID+103,@CGUID+104,@CGUID+105,@CGUID+106,@CGUID+107,@CGUID+108,@CGUID+109,@CGUID+115,@CGUID+116,@CGUID+117,@CGUID+118,@CGUID+119,@CGUID+120,@CGUID+121,@CGUID+122,@CGUID+123,@CGUID+124,@CGUID+125,@CGUID+126,@CGUID+127,@CGUID+128,@CGUID+129,@CGUID+130,@CGUID+131,@CGUID+132,@CGUID+133,@CGUID+134,@CGUID+135,@CGUID+136,@CGUID+137,@CGUID+138);
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `groupAI`) VALUES
(@CGUID+1 , @CGUID+1 , 3),
(@CGUID+2 , @CGUID+1 , 3),
(@CGUID+3 , @CGUID+1 , 3),
(@CGUID+4 , @CGUID+1 , 3),
(@CGUID+5 , @CGUID+1 , 3),
(@CGUID+6 , @CGUID+6 , 3),
(@CGUID+7 , @CGUID+6 , 3),
(@CGUID+8 , @CGUID+6 , 3),
(@CGUID+9 , @CGUID+6 , 3),
(@CGUID+10 , @CGUID+6 , 3),
(@CGUID+11 , @CGUID+11 , 3),
(@CGUID+12 , @CGUID+11 , 3),
(@CGUID+13 , @CGUID+11 , 3),
(@CGUID+14 , @CGUID+11 , 3),
(@CGUID+15 , @CGUID+11 , 3),
(@CGUID+22 , @CGUID+22 , 3),
(@CGUID+23 , @CGUID+22 , 3),
(@CGUID+24 , @CGUID+22 , 3),
(@CGUID+25 , @CGUID+22 , 3),
(@CGUID+26 , @CGUID+22 , 3),
(@CGUID+27 , @CGUID+22 , 3),
(@CGUID+28 , @CGUID+22 , 3),
(@CGUID+29 , @CGUID+22 , 3),
(@CGUID+30 , @CGUID+22 , 3),
(@CGUID+31 , @CGUID+31 , 3),
(@CGUID+32 , @CGUID+31 , 3),
(@CGUID+33 , @CGUID+31 , 3),
(@CGUID+34 , @CGUID+31 , 3),
(@CGUID+35 , @CGUID+31 , 3),
(@CGUID+36 , @CGUID+31 , 3),
(@CGUID+37 , @CGUID+31 , 3),
(@CGUID+38 , @CGUID+31 , 3),
(@CGUID+39 , @CGUID+31 , 3),
(@CGUID+40 , @CGUID+40 , 3),
(@CGUID+41 , @CGUID+40 , 3),
(@CGUID+42 , @CGUID+40 , 3),
(@CGUID+43 , @CGUID+40 , 3),
(@CGUID+44 , @CGUID+40 , 3),
(@CGUID+45 , @CGUID+40 , 3),
(@CGUID+46 , @CGUID+40 , 3),
(@CGUID+47 , @CGUID+40 , 3),
(@CGUID+48 , @CGUID+40 , 3),
(@CGUID+49 , @CGUID+49 , 3),
(@CGUID+50 , @CGUID+49 , 3),
(@CGUID+51 , @CGUID+49 , 3),
(@CGUID+52 , @CGUID+49 , 3),
(@CGUID+53 , @CGUID+49 , 3),
(@CGUID+54 , @CGUID+49 , 3),
(@CGUID+55 , @CGUID+49 , 3),
(@CGUID+56 , @CGUID+49 , 3),
(@CGUID+57 , @CGUID+49 , 3),
(@CGUID+58 , @CGUID+58 , 3),
(@CGUID+59 , @CGUID+58 , 3),
(@CGUID+60 , @CGUID+58 , 3),
(@CGUID+61 , @CGUID+58 , 3),
(@CGUID+62 , @CGUID+58 , 3),
(@CGUID+63 , @CGUID+58 , 3),
(@CGUID+64 , @CGUID+58 , 3),
(@CGUID+65 , @CGUID+58 , 3),
(@CGUID+66 , @CGUID+58 , 3),
(@CGUID+67 , @CGUID+67 , 3),
(@CGUID+68 , @CGUID+67 , 3),
(@CGUID+69 , @CGUID+67 , 3),
(@CGUID+70 , @CGUID+67 , 3),
(@CGUID+71 , @CGUID+67 , 3),
(@CGUID+72 , @CGUID+67 , 3),
(@CGUID+73 , @CGUID+67 , 3),
(@CGUID+74 , @CGUID+67 , 3),
(@CGUID+75 , @CGUID+67 , 3),
(@CGUID+76 , @CGUID+76 , 3),
(@CGUID+77 , @CGUID+76 , 3),
(@CGUID+78 , @CGUID+76 , 3),
(@CGUID+79 , @CGUID+76 , 3),
(@CGUID+80 , @CGUID+76 , 3),
(@CGUID+81 , @CGUID+76 , 3),
(@CGUID+82 , @CGUID+82 , 3),
(@CGUID+83 , @CGUID+82 , 3),
(@CGUID+84 , @CGUID+82 , 3),
(@CGUID+85 , @CGUID+82 , 3),
(@CGUID+86 , @CGUID+82 , 3),
(@CGUID+87 , @CGUID+82 , 3),
(@CGUID+88 , @CGUID+88 , 3),
(@CGUID+89 , @CGUID+88 , 3),
(@CGUID+90 , @CGUID+88 , 3),
(@CGUID+91 , @CGUID+88 , 3),
(@CGUID+92 , @CGUID+88 , 3),
(@CGUID+93 , @CGUID+88 , 3),
(@CGUID+94 , @CGUID+94 , 3),
(@CGUID+95 , @CGUID+94 , 3),
(@CGUID+96 , @CGUID+94 , 3),
(@CGUID+97 , @CGUID+94 , 3),
(@CGUID+98 , @CGUID+94 , 3),
(@CGUID+99 , @CGUID+94 , 3),
(@CGUID+102, @CGUID+102, 3),
(@CGUID+103, @CGUID+102, 3),
(@CGUID+104, @CGUID+102, 3),
(@CGUID+105, @CGUID+102, 3),
(@CGUID+106, @CGUID+106, 3),
(@CGUID+107, @CGUID+106, 3),
(@CGUID+108, @CGUID+106, 3),
(@CGUID+109, @CGUID+106, 3),
(@CGUID+115, @CGUID+115, 3),
(@CGUID+116, @CGUID+115, 3),
(@CGUID+117, @CGUID+115, 3),
(@CGUID+118, @CGUID+118, 3),
(@CGUID+119, @CGUID+118, 3),
(@CGUID+120, @CGUID+118, 3),
(@CGUID+121, @CGUID+118, 3),
(@CGUID+122, @CGUID+122, 3),
(@CGUID+123, @CGUID+122, 3),
(@CGUID+124, @CGUID+122, 3),
(@CGUID+125, @CGUID+122, 3),
(@CGUID+126, @CGUID+122, 3),
(@CGUID+127, @CGUID+127, 3),
(@CGUID+128, @CGUID+127, 3),
(@CGUID+129, @CGUID+127, 3),
(@CGUID+130, @CGUID+127, 3),
(@CGUID+131, @CGUID+127, 3),
(@CGUID+132, @CGUID+127, 3),
(@CGUID+133, @CGUID+133, 3),
(@CGUID+134, @CGUID+133, 3),
(@CGUID+135, @CGUID+133, 3),
(@CGUID+136, @CGUID+133, 3),
(@CGUID+137, @CGUID+133, 3),
(@CGUID+138, @CGUID+133, 3);
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `dist`, `angle`, `groupAI`) VALUES
(@CGUID+1, @CGUID+1, 0, 0, 3),
(@CGUID+2, @CGUID+1, 0, 0, 3),
(@CGUID+3, @CGUID+1, 0, 0, 3),
(@CGUID+4, @CGUID+1, 0, 0, 3),
(@CGUID+5, @CGUID+1, 0, 0, 3),
(@CGUID+6, @CGUID+6, 0, 0, 3),
(@CGUID+7, @CGUID+6, 0, 0, 3),
(@CGUID+8, @CGUID+6, 0, 0, 3),
(@CGUID+9, @CGUID+6, 0, 0, 3),
(@CGUID+10, @CGUID+6, 0, 0, 3),
(@CGUID+11, @CGUID+11, 0, 0, 3),
(@CGUID+12, @CGUID+11, 0, 0, 3),
(@CGUID+13, @CGUID+11, 0, 0, 3),
(@CGUID+14, @CGUID+11, 0, 0, 3),
(@CGUID+15, @CGUID+11, 0, 0, 3),
(@CGUID+22, @CGUID+22, 0, 0, 3),
(@CGUID+23, @CGUID+22, 0, 0, 3),
(@CGUID+24, @CGUID+22, 0, 0, 3),
(@CGUID+25, @CGUID+22, 0, 0, 3),
(@CGUID+26, @CGUID+22, 0, 0, 3),
(@CGUID+27, @CGUID+22, 0, 0, 3),
(@CGUID+28, @CGUID+22, 0, 0, 3),
(@CGUID+29, @CGUID+22, 0, 0, 3),
(@CGUID+30, @CGUID+22, 0, 0, 3),
(@CGUID+31, @CGUID+31, 0, 0, 3),
(@CGUID+32, @CGUID+31, 0, 0, 3),
(@CGUID+33, @CGUID+31, 0, 0, 3),
(@CGUID+34, @CGUID+31, 0, 0, 3),
(@CGUID+35, @CGUID+31, 0, 0, 3),
(@CGUID+36, @CGUID+31, 0, 0, 3),
(@CGUID+37, @CGUID+31, 0, 0, 3),
(@CGUID+38, @CGUID+31, 0, 0, 3),
(@CGUID+39, @CGUID+31, 0, 0, 3),
(@CGUID+40, @CGUID+40, 0, 0, 3),
(@CGUID+41, @CGUID+40, 0, 0, 3),
(@CGUID+42, @CGUID+40, 0, 0, 3),
(@CGUID+43, @CGUID+40, 0, 0, 3),
(@CGUID+44, @CGUID+40, 0, 0, 3),
(@CGUID+45, @CGUID+40, 0, 0, 3),
(@CGUID+46, @CGUID+40, 0, 0, 3),
(@CGUID+47, @CGUID+40, 0, 0, 3),
(@CGUID+48, @CGUID+40, 0, 0, 3),
(@CGUID+49, @CGUID+49, 0, 0, 3),
(@CGUID+50, @CGUID+49, 0, 0, 3),
(@CGUID+51, @CGUID+49, 0, 0, 3),
(@CGUID+52, @CGUID+49, 0, 0, 3),
(@CGUID+53, @CGUID+49, 0, 0, 3),
(@CGUID+54, @CGUID+49, 0, 0, 3),
(@CGUID+55, @CGUID+49, 0, 0, 3),
(@CGUID+56, @CGUID+49, 0, 0, 3),
(@CGUID+57, @CGUID+49, 0, 0, 3),
(@CGUID+58, @CGUID+58, 0, 0, 3),
(@CGUID+59, @CGUID+58, 0, 0, 3),
(@CGUID+60, @CGUID+58, 0, 0, 3),
(@CGUID+61, @CGUID+58, 0, 0, 3),
(@CGUID+62, @CGUID+58, 0, 0, 3),
(@CGUID+63, @CGUID+58, 0, 0, 3),
(@CGUID+64, @CGUID+58, 0, 0, 3),
(@CGUID+65, @CGUID+58, 0, 0, 3),
(@CGUID+66, @CGUID+58, 0, 0, 3),
(@CGUID+67, @CGUID+67, 0, 0, 3),
(@CGUID+68, @CGUID+67, 0, 0, 3),
(@CGUID+69, @CGUID+67, 0, 0, 3),
(@CGUID+70, @CGUID+67, 0, 0, 3),
(@CGUID+71, @CGUID+67, 0, 0, 3),
(@CGUID+72, @CGUID+67, 0, 0, 3),
(@CGUID+73, @CGUID+67, 0, 0, 3),
(@CGUID+74, @CGUID+67, 0, 0, 3),
(@CGUID+75, @CGUID+67, 0, 0, 3),
(@CGUID+76, @CGUID+76, 0, 0, 3),
(@CGUID+77, @CGUID+76, 0, 0, 3),
(@CGUID+78, @CGUID+76, 0, 0, 3),
(@CGUID+79, @CGUID+76, 0, 0, 3),
(@CGUID+80, @CGUID+76, 0, 0, 3),
(@CGUID+81, @CGUID+76, 0, 0, 3),
(@CGUID+82, @CGUID+82, 0, 0, 3),
(@CGUID+83, @CGUID+82, 0, 0, 3),
(@CGUID+84, @CGUID+82, 0, 0, 3),
(@CGUID+85, @CGUID+82, 0, 0, 3),
(@CGUID+86, @CGUID+82, 0, 0, 3),
(@CGUID+87, @CGUID+82, 0, 0, 3),
(@CGUID+88, @CGUID+88, 0, 0, 3),
(@CGUID+89, @CGUID+88, 0, 0, 3),
(@CGUID+90, @CGUID+88, 0, 0, 3),
(@CGUID+91, @CGUID+88, 0, 0, 3),
(@CGUID+92, @CGUID+88, 0, 0, 3),
(@CGUID+93, @CGUID+88, 0, 0, 3),
(@CGUID+94, @CGUID+94, 0, 0, 3),
(@CGUID+95, @CGUID+94, 0, 0, 3),
(@CGUID+96, @CGUID+94, 0, 0, 3),
(@CGUID+97, @CGUID+94, 0, 0, 3),
(@CGUID+98, @CGUID+94, 0, 0, 3),
(@CGUID+99, @CGUID+94, 0, 0, 3),
(@CGUID+102, @CGUID+102, 0, 0, 3),
(@CGUID+103, @CGUID+102, 0, 0, 3),
(@CGUID+104, @CGUID+102, 0, 0, 3),
(@CGUID+105, @CGUID+102, 0, 0, 3),
(@CGUID+106, @CGUID+106, 0, 0, 3),
(@CGUID+107, @CGUID+106, 0, 0, 3),
(@CGUID+108, @CGUID+106, 0, 0, 3),
(@CGUID+109, @CGUID+106, 0, 0, 3),
(@CGUID+115, @CGUID+115, 0, 0, 3),
(@CGUID+116, @CGUID+115, 0, 0, 3),
(@CGUID+117, @CGUID+115, 0, 0, 3),
(@CGUID+118, @CGUID+118, 0, 0, 3),
(@CGUID+119, @CGUID+118, 0, 0, 3),
(@CGUID+120, @CGUID+118, 0, 0, 3),
(@CGUID+121, @CGUID+118, 0, 0, 3),
(@CGUID+122, @CGUID+122, 0, 0, 3),
(@CGUID+123, @CGUID+122, 0, 0, 3),
(@CGUID+124, @CGUID+122, 0, 0, 3),
(@CGUID+125, @CGUID+122, 0, 0, 3),
(@CGUID+126, @CGUID+122, 0, 0, 3),
(@CGUID+127, @CGUID+127, 0, 0, 3),
(@CGUID+128, @CGUID+127, 0, 0, 3),
(@CGUID+129, @CGUID+127, 0, 0, 3),
(@CGUID+130, @CGUID+127, 0, 0, 3),
(@CGUID+131, @CGUID+127, 0, 0, 3),
(@CGUID+132, @CGUID+127, 0, 0, 3),
(@CGUID+133, @CGUID+133, 0, 0, 3),
(@CGUID+134, @CGUID+133, 0, 0, 3),
(@CGUID+135, @CGUID+133, 0, 0, 3),
(@CGUID+136, @CGUID+133, 0, 0, 3),
(@CGUID+137, @CGUID+133, 0, 0, 3),
(@CGUID+138, @CGUID+133, 0, 0, 3);
UPDATE `smart_scripts` SET `action_param2`=0 WHERE `entryorguid`=21230 AND `source_type`=0 AND `id`=1 AND `link`=0;
UPDATE `smart_scripts` SET `action_param2`=0 WHERE `entryorguid`=21230 AND `source_type`=0 AND `id`=5 AND `link`=0;
+5 -5
View File
@@ -183,11 +183,11 @@ INSERT INTO `linked_respawn`(`guid`, `linkedGuid`, `linkType`) VALUES
-- Leotheras formation
DELETE FROM `creature_formations` WHERE `leaderGUID` = @LEOTHERAS;
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `groupAI`) VALUES
(@LEOTHERAS, @LEOTHERAS, 24),
(@LEOTHERAS, @LEOTHERAS+1, 24),
(@LEOTHERAS, @LEOTHERAS+2, 24),
(@LEOTHERAS, @LEOTHERAS+3, 24);
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
(@LEOTHERAS, @LEOTHERAS, 0, 0, 24),
(@LEOTHERAS, @LEOTHERAS+1, 0, 0, 24),
(@LEOTHERAS, @LEOTHERAS+2, 0, 0, 24),
(@LEOTHERAS, @LEOTHERAS+3, 0, 0, 24);
SET @KARATHRESS := 153154;
DELETE FROM `linked_respawn` WHERE `linkedGuid` = @KARATHRESS;
+144 -144
View File
@@ -869,176 +869,176 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_
-- Static Formations
DELETE FROM `creature_formations` WHERE `memberGUID` IN (@CGUID+03,@CGUID+04,@CGUID+05,@CGUID+06,@CGUID+07,@CGUID+08,@CGUID+09,@CGUID+10,@CGUID+11,@CGUID+12,@CGUID+13,@CGUID+14,@CGUID+15,@CGUID+16,@CGUID+17,@CGUID+18,@CGUID+19,@CGUID+20,@CGUID+52,@CGUID+53,@CGUID+54,@CGUID+55,@CGUID+59,@CGUID+60,@CGUID+61,@CGUID+62,@CGUID+63,@CGUID+64,@CGUID+65,@CGUID+66,@CGUID+67,@CGUID+68,@CGUID+69,@CGUID+70,@CGUID+74,@CGUID+75,@CGUID+76,@CGUID+77,@CGUID+78,@CGUID+79,@CGUID+80,@CGUID+81,@CGUID+82,@CGUID+83,@CGUID+84,@CGUID+85,@CGUID+86,@CGUID+87,@CGUID+88,@CGUID+89,@CGUID+90,@CGUID+91,@CGUID+93,@CGUID+94,@CGUID+98,@CGUID+99,@CGUID+100,@CGUID+101,@CGUID+102,@CGUID+103,@CGUID+104,@CGUID+105,@CGUID+106,@CGUID+107,@CGUID+108,@CGUID+109,@CGUID+110,@CGUID+111,@CGUID+112,@CGUID+113,@CGUID+114,@CGUID+115,@CGUID+116,@CGUID+117,@CGUID+118,@CGUID+119,@CGUID+120,@CGUID+121,@CGUID+125,@CGUID+126,@CGUID+127,@CGUID+128,@CGUID+129,@CGUID+130,@CGUID+131,@CGUID+132,@CGUID+133,@CGUID+134,@CGUID+135,@CGUID+136,@CGUID+143,@CGUID+144,@CGUID+145,@CGUID+146,@CGUID+147,@CGUID+148,@CGUID+149,@CGUID+150,@CGUID+151,@CGUID+152,@CGUID+153,@CGUID+154,@CGUID+155,@CGUID+156,@CGUID+157,@CGUID+158,@CGUID+159,@CGUID+160,@CGUID+161,@CGUID+162,@CGUID+163,@CGUID+164,@CGUID+165,@CGUID+166,@CGUID+167,@CGUID+168,@CGUID+169,@CGUID+170,@CGUID+171,@CGUID+172,@CGUID+173,@CGUID+174,@CGUID+175,@CGUID+176,@CGUID+177,@CGUID+178,@CGUID+180,@CGUID+181,@CGUID+182,@CGUID+183,@CGUID+184,@CGUID+185,@CGUID+186,@CGUID+187,@CGUID+188,@CGUID+189,@CGUID+190,@CGUID+191,@CGUID+218,@CGUID+219,@CGUID+220,@CGUID+221,@CGUID+222) AND `groupAI` IN (3, 24);
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `groupAI`) VALUES
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `dist`, `angle`, `groupAI`) VALUES
-- Entrance Group 1
(@CGUID+3, @CGUID+3, 3),
(@CGUID+4, @CGUID+3, 3),
(@CGUID+5, @CGUID+3, 3),
(@CGUID+6, @CGUID+3, 3),
(@CGUID+7, @CGUID+3, 3),
(@CGUID+8, @CGUID+3, 3),
(@CGUID+3, @CGUID+3, 0, 0, 3),
(@CGUID+4, @CGUID+3, 0, 0, 3),
(@CGUID+5, @CGUID+3, 0, 0, 3),
(@CGUID+6, @CGUID+3, 0, 0, 3),
(@CGUID+7, @CGUID+3, 0, 0, 3),
(@CGUID+8, @CGUID+3, 0, 0, 3),
-- Entrance Group 2
(@CGUID+9 , @CGUID+9, 3),
(@CGUID+10, @CGUID+9, 3),
(@CGUID+11, @CGUID+9, 3),
(@CGUID+12, @CGUID+9, 3),
(@CGUID+13, @CGUID+9, 3),
(@CGUID+14, @CGUID+9, 3),
(@CGUID+9, @CGUID+9, 0, 0, 3),
(@CGUID+10, @CGUID+9, 0, 0, 3),
(@CGUID+11, @CGUID+9, 0, 0, 3),
(@CGUID+12, @CGUID+9, 0, 0, 3),
(@CGUID+13, @CGUID+9, 0, 0, 3),
(@CGUID+14, @CGUID+9, 0, 0, 3),
-- Entrance Group 3
(@CGUID+15, @CGUID+15, 3),
(@CGUID+16, @CGUID+15, 3),
(@CGUID+17, @CGUID+15, 3),
(@CGUID+18, @CGUID+15, 3),
(@CGUID+19, @CGUID+15, 3),
(@CGUID+20, @CGUID+15, 3),
(@CGUID+15, @CGUID+15, 0, 0, 3),
(@CGUID+16, @CGUID+15, 0, 0, 3),
(@CGUID+17, @CGUID+15, 0, 0, 3),
(@CGUID+18, @CGUID+15, 0, 0, 3),
(@CGUID+19, @CGUID+15, 0, 0, 3),
(@CGUID+20, @CGUID+15, 0, 0, 3),
-- Sentinel Group 1
(@CGUID+52, @CGUID+52, 3),
(@CGUID+53, @CGUID+52, 3),
(@CGUID+52, @CGUID+52, 0, 0, 3),
(@CGUID+53, @CGUID+52, 0, 0, 3),
-- Sentinel Group 2
(@CGUID+54, @CGUID+54, 3),
(@CGUID+55, @CGUID+54, 3),
(@CGUID+54, @CGUID+54, 0, 0, 3),
(@CGUID+55, @CGUID+54, 0, 0, 3),
-- Inquisitor Adds 1
(@CGUID+59, @CGUID+59, 3),
(@CGUID+60, @CGUID+59, 3),
(@CGUID+61, @CGUID+59, 3),
(@CGUID+62, @CGUID+59, 3),
(@CGUID+63, @CGUID+59, 3),
(@CGUID+64, @CGUID+59, 3),
(@CGUID+59, @CGUID+59, 0, 0, 3),
(@CGUID+60, @CGUID+59, 0, 0, 3),
(@CGUID+61, @CGUID+59, 0, 0, 3),
(@CGUID+62, @CGUID+59, 0, 0, 3),
(@CGUID+63, @CGUID+59, 0, 0, 3),
(@CGUID+64, @CGUID+59, 0, 0, 3),
-- Inquisitor Adds 2
(@CGUID+65, @CGUID+65, 3),
(@CGUID+66, @CGUID+65, 3),
(@CGUID+67, @CGUID+65, 3),
(@CGUID+68, @CGUID+65, 3),
(@CGUID+69, @CGUID+65, 3),
(@CGUID+70, @CGUID+65, 3),
(@CGUID+65, @CGUID+65, 0, 0, 3),
(@CGUID+66, @CGUID+65, 0, 0, 3),
(@CGUID+67, @CGUID+65, 0, 0, 3),
(@CGUID+68, @CGUID+65, 0, 0, 3),
(@CGUID+69, @CGUID+65, 0, 0, 3),
(@CGUID+70, @CGUID+65, 0, 0, 3),
-- Void Reaver Trash Group 1
(@CGUID+74, @CGUID+74, 3),
(@CGUID+75, @CGUID+74, 3),
(@CGUID+76, @CGUID+74, 3),
(@CGUID+77, @CGUID+74, 3),
(@CGUID+78, @CGUID+74, 3),
(@CGUID+74, @CGUID+74, 0, 0, 3),
(@CGUID+75, @CGUID+74, 0, 0, 3),
(@CGUID+76, @CGUID+74, 0, 0, 3),
(@CGUID+77, @CGUID+74, 0, 0, 3),
(@CGUID+78, @CGUID+74, 0, 0, 3),
-- Void Reaver Trash Group 2
(@CGUID+79, @CGUID+79, 3),
(@CGUID+80, @CGUID+79, 3),
(@CGUID+81, @CGUID+79, 3),
(@CGUID+82, @CGUID+79, 3),
(@CGUID+83, @CGUID+79, 3),
(@CGUID+79, @CGUID+79, 0, 0, 3),
(@CGUID+80, @CGUID+79, 0, 0, 3),
(@CGUID+81, @CGUID+79, 0, 0, 3),
(@CGUID+82, @CGUID+79, 0, 0, 3),
(@CGUID+83, @CGUID+79, 0, 0, 3),
-- Void Reaver Trash Group 3
(@CGUID+84, @CGUID+84, 3),
(@CGUID+85, @CGUID+84, 3),
(@CGUID+86, @CGUID+84, 3),
(@CGUID+87, @CGUID+84, 3),
(@CGUID+84, @CGUID+84, 0, 0, 3),
(@CGUID+85, @CGUID+84, 0, 0, 3),
(@CGUID+86, @CGUID+84, 0, 0, 3),
(@CGUID+87, @CGUID+84, 0, 0, 3),
-- Void Reaver Trash Group 4
(@CGUID+88, @CGUID+88, 3),
(@CGUID+89, @CGUID+88, 3),
(@CGUID+90, @CGUID+88, 3),
(@CGUID+91, @CGUID+88, 3),
(@CGUID+88, @CGUID+88, 0, 0, 3),
(@CGUID+89, @CGUID+88, 0, 0, 3),
(@CGUID+90, @CGUID+88, 0, 0, 3),
(@CGUID+91, @CGUID+88, 0, 0, 3),
-- Solarium Sentinel Group 1
(@CGUID+93, @CGUID+93, 3),
(@CGUID+94, @CGUID+93, 3),
(@CGUID+93, @CGUID+93, 0, 0, 3),
(@CGUID+94, @CGUID+93, 0, 0, 3),
-- Solarium Large Group 1
(@CGUID+98 , @CGUID+98, 3),
(@CGUID+99 , @CGUID+98, 3),
(@CGUID+100, @CGUID+98, 3),
(@CGUID+101, @CGUID+98, 3),
(@CGUID+102, @CGUID+98, 3),
(@CGUID+103, @CGUID+98, 3),
(@CGUID+104, @CGUID+98, 3),
(@CGUID+105, @CGUID+98, 3),
(@CGUID+106, @CGUID+98, 3),
(@CGUID+107, @CGUID+98, 3),
(@CGUID+108, @CGUID+98, 3),
(@CGUID+109, @CGUID+98, 3),
(@CGUID+98, @CGUID+98, 0, 0, 3),
(@CGUID+99, @CGUID+98, 0, 0, 3),
(@CGUID+100, @CGUID+98, 0, 0, 3),
(@CGUID+101, @CGUID+98, 0, 0, 3),
(@CGUID+102, @CGUID+98, 0, 0, 3),
(@CGUID+103, @CGUID+98, 0, 0, 3),
(@CGUID+104, @CGUID+98, 0, 0, 3),
(@CGUID+105, @CGUID+98, 0, 0, 3),
(@CGUID+106, @CGUID+98, 0, 0, 3),
(@CGUID+107, @CGUID+98, 0, 0, 3),
(@CGUID+108, @CGUID+98, 0, 0, 3),
(@CGUID+109, @CGUID+98, 0, 0, 3),
-- Solarium Large Group 2
(@CGUID+110, @CGUID+110, 3),
(@CGUID+111, @CGUID+110, 3),
(@CGUID+112, @CGUID+110, 3),
(@CGUID+113, @CGUID+110, 3),
(@CGUID+114, @CGUID+110, 3),
(@CGUID+115, @CGUID+110, 3),
(@CGUID+116, @CGUID+110, 3),
(@CGUID+117, @CGUID+110, 3),
(@CGUID+118, @CGUID+110, 3),
(@CGUID+119, @CGUID+110, 3),
(@CGUID+120, @CGUID+110, 3),
(@CGUID+121, @CGUID+110, 3),
(@CGUID+110, @CGUID+110, 0, 0, 3),
(@CGUID+111, @CGUID+110, 0, 0, 3),
(@CGUID+112, @CGUID+110, 0, 0, 3),
(@CGUID+113, @CGUID+110, 0, 0, 3),
(@CGUID+114, @CGUID+110, 0, 0, 3),
(@CGUID+115, @CGUID+110, 0, 0, 3),
(@CGUID+116, @CGUID+110, 0, 0, 3),
(@CGUID+117, @CGUID+110, 0, 0, 3),
(@CGUID+118, @CGUID+110, 0, 0, 3),
(@CGUID+119, @CGUID+110, 0, 0, 3),
(@CGUID+120, @CGUID+110, 0, 0, 3),
(@CGUID+121, @CGUID+110, 0, 0, 3),
-- Inquisitor Adds 3
(@CGUID+125, @CGUID+125, 3),
(@CGUID+126, @CGUID+125, 3),
(@CGUID+127, @CGUID+125, 3),
(@CGUID+128, @CGUID+125, 3),
(@CGUID+129, @CGUID+125, 3),
(@CGUID+130, @CGUID+125, 3),
(@CGUID+125, @CGUID+125, 0, 0, 3),
(@CGUID+126, @CGUID+125, 0, 0, 3),
(@CGUID+127, @CGUID+125, 0, 0, 3),
(@CGUID+128, @CGUID+125, 0, 0, 3),
(@CGUID+129, @CGUID+125, 0, 0, 3),
(@CGUID+130, @CGUID+125, 0, 0, 3),
-- Inquisitor Adds 4
(@CGUID+131, @CGUID+131, 3),
(@CGUID+132, @CGUID+131, 3),
(@CGUID+133, @CGUID+131, 3),
(@CGUID+134, @CGUID+131, 3),
(@CGUID+135, @CGUID+131, 3),
(@CGUID+136, @CGUID+131, 3),
(@CGUID+131, @CGUID+131, 0, 0, 3),
(@CGUID+132, @CGUID+131, 0, 0, 3),
(@CGUID+133, @CGUID+131, 0, 0, 3),
(@CGUID+134, @CGUID+131, 0, 0, 3),
(@CGUID+135, @CGUID+131, 0, 0, 3),
(@CGUID+136, @CGUID+131, 0, 0, 3),
-- Solarian Adds 1
(@CGUID+143, @CGUID+143, 3),
(@CGUID+144, @CGUID+143, 3),
(@CGUID+145, @CGUID+143, 3),
(@CGUID+146, @CGUID+143, 3),
(@CGUID+147, @CGUID+143, 3),
(@CGUID+148, @CGUID+143, 3),
(@CGUID+143, @CGUID+143, 0, 0, 3),
(@CGUID+144, @CGUID+143, 0, 0, 3),
(@CGUID+145, @CGUID+143, 0, 0, 3),
(@CGUID+146, @CGUID+143, 0, 0, 3),
(@CGUID+147, @CGUID+143, 0, 0, 3),
(@CGUID+148, @CGUID+143, 0, 0, 3),
-- Solarian Adds 2
(@CGUID+149, @CGUID+149, 3),
(@CGUID+150, @CGUID+149, 3),
(@CGUID+151, @CGUID+149, 3),
(@CGUID+152, @CGUID+149, 3),
(@CGUID+153, @CGUID+149, 3),
(@CGUID+154, @CGUID+149, 3),
(@CGUID+149, @CGUID+149, 0, 0, 3),
(@CGUID+150, @CGUID+149, 0, 0, 3),
(@CGUID+151, @CGUID+149, 0, 0, 3),
(@CGUID+152, @CGUID+149, 0, 0, 3),
(@CGUID+153, @CGUID+149, 0, 0, 3),
(@CGUID+154, @CGUID+149, 0, 0, 3),
-- Solarian Adds 3
(@CGUID+155, @CGUID+155, 3),
(@CGUID+156, @CGUID+155, 3),
(@CGUID+157, @CGUID+155, 3),
(@CGUID+158, @CGUID+155, 3),
(@CGUID+159, @CGUID+155, 3),
(@CGUID+160, @CGUID+155, 3),
(@CGUID+155, @CGUID+155, 0, 0, 3),
(@CGUID+156, @CGUID+155, 0, 0, 3),
(@CGUID+157, @CGUID+155, 0, 0, 3),
(@CGUID+158, @CGUID+155, 0, 0, 3),
(@CGUID+159, @CGUID+155, 0, 0, 3),
(@CGUID+160, @CGUID+155, 0, 0, 3),
-- Solarian Adds 4
(@CGUID+161, @CGUID+161, 3),
(@CGUID+162, @CGUID+161, 3),
(@CGUID+163, @CGUID+161, 3),
(@CGUID+164, @CGUID+161, 3),
(@CGUID+165, @CGUID+161, 3),
(@CGUID+166, @CGUID+161, 3),
(@CGUID+161, @CGUID+161, 0, 0, 3),
(@CGUID+162, @CGUID+161, 0, 0, 3),
(@CGUID+163, @CGUID+161, 0, 0, 3),
(@CGUID+164, @CGUID+161, 0, 0, 3),
(@CGUID+165, @CGUID+161, 0, 0, 3),
(@CGUID+166, @CGUID+161, 0, 0, 3),
-- Solarian Adds 5
(@CGUID+167, @CGUID+167, 3),
(@CGUID+168, @CGUID+167, 3),
(@CGUID+169, @CGUID+167, 3),
(@CGUID+170, @CGUID+167, 3),
(@CGUID+171, @CGUID+167, 3),
(@CGUID+172, @CGUID+167, 3),
(@CGUID+167, @CGUID+167, 0, 0, 3),
(@CGUID+168, @CGUID+167, 0, 0, 3),
(@CGUID+169, @CGUID+167, 0, 0, 3),
(@CGUID+170, @CGUID+167, 0, 0, 3),
(@CGUID+171, @CGUID+167, 0, 0, 3),
(@CGUID+172, @CGUID+167, 0, 0, 3),
-- Solarian Adds 6
(@CGUID+173, @CGUID+173, 3),
(@CGUID+174, @CGUID+173, 3),
(@CGUID+175, @CGUID+173, 3),
(@CGUID+176, @CGUID+173, 3),
(@CGUID+177, @CGUID+173, 3),
(@CGUID+178, @CGUID+173, 3),
(@CGUID+173, @CGUID+173, 0, 0, 3),
(@CGUID+174, @CGUID+173, 0, 0, 3),
(@CGUID+175, @CGUID+173, 0, 0, 3),
(@CGUID+176, @CGUID+173, 0, 0, 3),
(@CGUID+177, @CGUID+173, 0, 0, 3),
(@CGUID+178, @CGUID+173, 0, 0, 3),
-- Kael Trash 1
(@CGUID+180, @CGUID+180, 3),
(@CGUID+181, @CGUID+180, 3),
(@CGUID+182, @CGUID+180, 3),
(@CGUID+183, @CGUID+180, 3),
(@CGUID+180, @CGUID+180, 0, 0, 3),
(@CGUID+181, @CGUID+180, 0, 0, 3),
(@CGUID+182, @CGUID+180, 0, 0, 3),
(@CGUID+183, @CGUID+180, 0, 0, 3),
-- Kael Trash 2
(@CGUID+184, @CGUID+184, 3),
(@CGUID+185, @CGUID+184, 3),
(@CGUID+186, @CGUID+184, 3),
(@CGUID+187, @CGUID+184, 3),
(@CGUID+184, @CGUID+184, 0, 0, 3),
(@CGUID+185, @CGUID+184, 0, 0, 3),
(@CGUID+186, @CGUID+184, 0, 0, 3),
(@CGUID+187, @CGUID+184, 0, 0, 3),
-- Kael Trash 3
(@CGUID+188, @CGUID+188, 3),
(@CGUID+189, @CGUID+188, 3),
(@CGUID+190, @CGUID+188, 3),
(@CGUID+191, @CGUID+188, 3),
(@CGUID+188, @CGUID+188, 0, 0, 3),
(@CGUID+189, @CGUID+188, 0, 0, 3),
(@CGUID+190, @CGUID+188, 0, 0, 3),
(@CGUID+191, @CGUID+188, 0, 0, 3),
-- Kael & Advisors
(@CGUID+218, @CGUID+218, 24),
(@CGUID+219, @CGUID+218, 24),
(@CGUID+220, @CGUID+218, 24),
(@CGUID+221, @CGUID+218, 24),
(@CGUID+222, @CGUID+218, 24);
(@CGUID+218, @CGUID+218, 0, 0, 24),
(@CGUID+219, @CGUID+218, 0, 0, 24),
(@CGUID+220, @CGUID+218, 0, 0, 24),
(@CGUID+221, @CGUID+218, 0, 0, 24),
(@CGUID+222, @CGUID+218, 0, 0, 24);
-- Update SheatheState en masse
UPDATE `creature_template_addon` SET `bytes2` = 1 WHERE `entry` IN (18805,19514,19516,19622,20031,20032,20033,20034,20035,20036,20037,20038,20039,20040,20041,20042,20043,20044,20045,20046,20047,20048,20049,20050,20052,20060,20062,20063,20064,22515,22517);
+405 -405
View File
@@ -3770,411 +3770,411 @@ INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`
-- 0x203CA44680168B80007C2000008127DD .go xyz 409.20535 785.9281 14.643406
DELETE FROM `creature_formations` WHERE `memberGUID` IN (@CGUID+1,@CGUID+2,@CGUID+3,@CGUID+4,@CGUID+5,@CGUID+6,@CGUID+7,@CGUID+8,@CGUID+9,@CGUID+10,@CGUID+11,@CGUID+12,@CGUID+23,@CGUID+24,@CGUID+25,@CGUID+26,@CGUID+27,@CGUID+28,@CGUID+29,@CGUID+30,@CGUID+31,@CGUID+32,@CGUID+33,@CGUID+34,@CGUID+35,@CGUID+36,@CGUID+37,@CGUID+38,@CGUID+39,@CGUID+40,@CGUID+41,@CGUID+42,@CGUID+43,@CGUID+44,@CGUID+45,@CGUID+46,@CGUID+47,@CGUID+48,@CGUID+49,@CGUID+50,@CGUID+51,@CGUID+52,@CGUID+53,@CGUID+54,@CGUID+62,@CGUID+63,@CGUID+64,@CGUID+65,@CGUID+66,@CGUID+67,@CGUID+68,@CGUID+69,@CGUID+70,@CGUID+71,@CGUID+74,@CGUID+75,@CGUID+76,@CGUID+77,@CGUID+78,@CGUID+79,@CGUID+82,@CGUID+83,@CGUID+84,@CGUID+85,@CGUID+86,@CGUID+87,@CGUID+88,@CGUID+89,@CGUID+90,@CGUID+91,@CGUID+92,@CGUID+93,@CGUID+94,@CGUID+95,@CGUID+96,@CGUID+97,@CGUID+98,@CGUID+99,@CGUID+146,@CGUID+147,@CGUID+148,@CGUID+149,@CGUID+150,@CGUID+151,@CGUID+152,@CGUID+153,@CGUID+154,@CGUID+155,@CGUID+156,@CGUID+157,@CGUID+158,@CGUID+159,@CGUID+160,@CGUID+161,@CGUID+162,@CGUID+163,@CGUID+164,@CGUID+165,@CGUID+166,@CGUID+167,@CGUID+168,@CGUID+169,@CGUID+170,@CGUID+171,@CGUID+172,@CGUID+173,@CGUID+174,@CGUID+175,@CGUID+188,@CGUID+189,@CGUID+190,@CGUID+191,@CGUID+192,@CGUID+193,@CGUID+194,@CGUID+195,@CGUID+196,@CGUID+197,@CGUID+198,@CGUID+199,@CGUID+200,@CGUID+201,@CGUID+202,@CGUID+203,@CGUID+204,@CGUID+205,@CGUID+206,@CGUID+207,@CGUID+208,@CGUID+209,@CGUID+210,@CGUID+211,@CGUID+212,@CGUID+213,@CGUID+222,@CGUID+223,@CGUID+224,@CGUID+225,@CGUID+226,@CGUID+227,@CGUID+228,@CGUID+229,@CGUID+253,@CGUID+254,@CGUID+255,@CGUID+256,@CGUID+266,@CGUID+267,@CGUID+268,@CGUID+269,@CGUID+270,@CGUID+271,@CGUID+272,@CGUID+273,@CGUID+274,@CGUID+275,@CGUID+276,@CGUID+277,@CGUID+278,@CGUID+279,@CGUID+280,@CGUID+281,@CGUID+282,@CGUID+283,@CGUID+284,@CGUID+287,@CGUID+289,@CGUID+290,@CGUID+291,@CGUID+292,@CGUID+293,@CGUID+294,@CGUID+295,@CGUID+296,@CGUID+297,@CGUID+298,@CGUID+299,@CGUID+300,@CGUID+301,@CGUID+302,@CGUID+303,@CGUID+304,@CGUID+305,@CGUID+318,@CGUID+319,@CGUID+320,@CGUID+321,@CGUID+322,@CGUID+323,@CGUID+324,@CGUID+325,@CGUID+326,@CGUID+327,@CGUID+328,@CGUID+329,@CGUID+330,@CGUID+331,@CGUID+365,@CGUID+366,@CGUID+367,@CGUID+368,@CGUID+369,@CGUID+370,@CGUID+371,@CGUID+372,@CGUID+373,@CGUID+374,@CGUID+375,@CGUID+376,@CGUID+377,@CGUID+378,@CGUID+379,@CGUID+380,@CGUID+383,@CGUID+384,@CGUID+385,@CGUID+386,@CGUID+387,@CGUID+388,@CGUID+389,@CGUID+390,@CGUID+391,@CGUID+392,@CGUID+393,@CGUID+396,@CGUID+397,@CGUID+398,@CGUID+399,@CGUID+400,@CGUID+401,@CGUID+402,@CGUID+403,@CGUID+404,@CGUID+405,@CGUID+406,@CGUID+418,@CGUID+419,@CGUID+420,@CGUID+421,@CGUID+422,@CGUID+423,@CGUID+540,@CGUID+541,@CGUID+542,@CGUID+543,@CGUID+544,@CGUID+545,@CGUID+546,@CGUID+547,@CGUID+548,@CGUID+549,@CGUID+550,@CGUID+551,@CGUID+552,@CGUID+553,@CGUID+554,@CGUID+555,@CGUID+556,@CGUID+557,@CGUID+558,@CGUID+559,@CGUID+560,@CGUID+561,@CGUID+562,@CGUID+563,@CGUID+564,@CGUID+565,@CGUID+566,@CGUID+567,@CGUID+568,@CGUID+569,@CGUID+570,@CGUID+571,@CGUID+572,@CGUID+573,@CGUID+574,@CGUID+575,@CGUID+576,@CGUID+577,@CGUID+578,@CGUID+579,@CGUID+580,@CGUID+581,@CGUID+582,@CGUID+583,@CGUID+584,@CGUID+585,@CGUID+586,@CGUID+587,@CGUID+588,@CGUID+589,@CGUID+592,@CGUID+593,@CGUID+594,@CGUID+595,@CGUID+596,@CGUID+597,@CGUID+598,@CGUID+599,@CGUID+600,@CGUID+601,@CGUID+602,@CGUID+603,@CGUID+605,@CGUID+606,@CGUID+607,@CGUID+608,@CGUID+609,@CGUID+610,@CGUID+611,@CGUID+612,@CGUID+613,@CGUID+614,@CGUID+615,@CGUID+616,@CGUID+617,@CGUID+618,@CGUID+619,@CGUID+620,@CGUID+621,@CGUID+622,@CGUID+623,@CGUID+624,@CGUID+625,@CGUID+626,@CGUID+627,@CGUID+628,@CGUID+629,@CGUID+630,@CGUID+631,@CGUID+632,@CGUID+633,@CGUID+634,@CGUID+635,@CGUID+636,@CGUID+637,@CGUID+638,@CGUID+639,@CGUID+640,@CGUID+641,@CGUID+642,@CGUID+643,@CGUID+644,@CGUID+645,@CGUID+646,@CGUID+647,@CGUID+648,@CGUID+649,@CGUID+650,@CGUID+651,@CGUID+652,@CGUID+653,@CGUID+654,@CGUID+655,@CGUID+656,@CGUID+657,@CGUID+658,@CGUID+659,@CGUID+660,@CGUID+661,@CGUID+662,@CGUID+663,@CGUID+664,@CGUID+665,@CGUID+666,@CGUID+667,@CGUID+668,@CGUID+669,@CGUID+670,@CGUID+671,@CGUID+672,@CGUID+673,@CGUID+674,@CGUID+675,@CGUID+676,@CGUID+677,@CGUID+691,@CGUID+692,@CGUID+693,@CGUID+694,@CGUID+695,@CGUID+696,@CGUID+697,@CGUID+698,@CGUID+699,@CGUID+700,@CGUID+701,@CGUID+702,@CGUID+703,@CGUID+704,@CGUID+705,@CGUID+706,@CGUID+707,@CGUID+708,@CGUID+709,@CGUID+710,@CGUID+711,@CGUID+712,@CGUID+713,@CGUID+714,@CGUID+716,@CGUID+717,@CGUID+718,@CGUID+719) AND `groupAI` IN (3, 27);
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `groupAI`) VALUES
(@CGUID+1 , @CGUID+1 , 3),
(@CGUID+2 , @CGUID+1 , 3),
(@CGUID+3 , @CGUID+1 , 3),
(@CGUID+4 , @CGUID+4 , 3),
(@CGUID+5 , @CGUID+4 , 3),
(@CGUID+6 , @CGUID+4 , 3),
(@CGUID+7 , @CGUID+7 , 3),
(@CGUID+8 , @CGUID+7 , 3),
(@CGUID+9 , @CGUID+7 , 3),
(@CGUID+10 , @CGUID+10 , 3),
(@CGUID+11 , @CGUID+10 , 3),
(@CGUID+12 , @CGUID+10 , 3),
(@CGUID+23 , @CGUID+23 , 3),
(@CGUID+24 , @CGUID+23 , 3),
(@CGUID+25 , @CGUID+23 , 3),
(@CGUID+26 , @CGUID+23 , 3),
(@CGUID+27 , @CGUID+23 , 3),
(@CGUID+28 , @CGUID+23 , 3),
(@CGUID+29 , @CGUID+23 , 3),
(@CGUID+30 , @CGUID+23 , 3),
(@CGUID+31 , @CGUID+23 , 3),
(@CGUID+32 , @CGUID+23 , 3),
(@CGUID+33 , @CGUID+33 , 3),
(@CGUID+34 , @CGUID+33 , 3),
(@CGUID+35 , @CGUID+33 , 3),
(@CGUID+36 , @CGUID+33 , 3),
(@CGUID+37 , @CGUID+33 , 3),
(@CGUID+38 , @CGUID+33 , 3),
(@CGUID+39 , @CGUID+33 , 3),
(@CGUID+40 , @CGUID+33 , 3),
(@CGUID+41 , @CGUID+33 , 3),
(@CGUID+42 , @CGUID+33 , 3),
(@CGUID+43 , @CGUID+43 , 3),
(@CGUID+44 , @CGUID+43 , 3),
(@CGUID+45 , @CGUID+43 , 3),
(@CGUID+46 , @CGUID+43 , 3),
(@CGUID+47 , @CGUID+43 , 3),
(@CGUID+48 , @CGUID+43 , 3),
(@CGUID+49 , @CGUID+49 , 3),
(@CGUID+50 , @CGUID+49 , 3),
(@CGUID+51 , @CGUID+49 , 3),
(@CGUID+52 , @CGUID+49 , 3),
(@CGUID+53 , @CGUID+49 , 3),
(@CGUID+54 , @CGUID+49 , 3),
(@CGUID+62 , @CGUID+62 , 27),
(@CGUID+63 , @CGUID+62 , 27),
(@CGUID+64 , @CGUID+62 , 27),
(@CGUID+65 , @CGUID+65 , 3),
(@CGUID+66 , @CGUID+65 , 3),
(@CGUID+67 , @CGUID+65 , 3),
(@CGUID+68 , @CGUID+65 , 3),
(@CGUID+69 , @CGUID+65 , 3),
(@CGUID+70 , @CGUID+65 , 3),
(@CGUID+71 , @CGUID+65 , 3),
(@CGUID+74 , @CGUID+74 , 3),
(@CGUID+75 , @CGUID+74 , 3),
(@CGUID+76 , @CGUID+74 , 3),
(@CGUID+77 , @CGUID+74 , 3),
(@CGUID+78 , @CGUID+74 , 3),
(@CGUID+79 , @CGUID+74 , 3),
(@CGUID+82 , @CGUID+82 , 3),
(@CGUID+83 , @CGUID+82 , 3),
(@CGUID+84 , @CGUID+82 , 3),
(@CGUID+85 , @CGUID+82 , 3),
(@CGUID+86 , @CGUID+82 , 3),
(@CGUID+87 , @CGUID+87 , 3),
(@CGUID+88 , @CGUID+87 , 3),
(@CGUID+89 , @CGUID+87 , 3),
(@CGUID+90 , @CGUID+87 , 3),
(@CGUID+91 , @CGUID+87 , 3),
(@CGUID+92 , @CGUID+87 , 3),
(@CGUID+93 , @CGUID+87 , 3),
(@CGUID+94 , @CGUID+94 , 3),
(@CGUID+95 , @CGUID+94 , 3),
(@CGUID+96 , @CGUID+94 , 3),
(@CGUID+97 , @CGUID+94 , 3),
(@CGUID+98 , @CGUID+94 , 3),
(@CGUID+99 , @CGUID+94 , 3),
(@CGUID+146, @CGUID+146, 3),
(@CGUID+147, @CGUID+146, 3),
(@CGUID+148, @CGUID+146, 3),
(@CGUID+149, @CGUID+146, 3),
(@CGUID+150, @CGUID+146, 3),
(@CGUID+151, @CGUID+146, 3),
(@CGUID+152, @CGUID+152, 3),
(@CGUID+153, @CGUID+152, 3),
(@CGUID+154, @CGUID+152, 3),
(@CGUID+155, @CGUID+152, 3),
(@CGUID+156, @CGUID+152, 3),
(@CGUID+157, @CGUID+152, 3),
(@CGUID+158, @CGUID+158, 3),
(@CGUID+159, @CGUID+158, 3),
(@CGUID+160, @CGUID+158, 3),
(@CGUID+161, @CGUID+158, 3),
(@CGUID+162, @CGUID+158, 3),
(@CGUID+163, @CGUID+158, 3),
(@CGUID+164, @CGUID+164, 3),
(@CGUID+165, @CGUID+164, 3),
(@CGUID+166, @CGUID+164, 3),
(@CGUID+167, @CGUID+164, 3),
(@CGUID+168, @CGUID+164, 3),
(@CGUID+169, @CGUID+164, 3),
(@CGUID+170, @CGUID+170, 3),
(@CGUID+171, @CGUID+170, 3),
(@CGUID+172, @CGUID+170, 3),
(@CGUID+173, @CGUID+170, 3),
(@CGUID+174, @CGUID+170, 3),
(@CGUID+175, @CGUID+170, 3),
(@CGUID+188, @CGUID+188, 3),
(@CGUID+189, @CGUID+188, 3),
(@CGUID+190, @CGUID+190, 3),
(@CGUID+191, @CGUID+190, 3),
(@CGUID+192, @CGUID+192, 3),
(@CGUID+193, @CGUID+192, 3),
(@CGUID+194, @CGUID+194, 3),
(@CGUID+195, @CGUID+194, 3),
(@CGUID+196, @CGUID+196, 3),
(@CGUID+197, @CGUID+196, 3),
(@CGUID+198, @CGUID+198, 3),
(@CGUID+199, @CGUID+198, 3),
(@CGUID+200, @CGUID+198, 3),
(@CGUID+201, @CGUID+198, 3),
(@CGUID+202, @CGUID+198, 3),
(@CGUID+203, @CGUID+198, 3),
(@CGUID+204, @CGUID+198, 3),
(@CGUID+205, @CGUID+198, 3),
(@CGUID+206, @CGUID+206, 3),
(@CGUID+207, @CGUID+206, 3),
(@CGUID+208, @CGUID+206, 3),
(@CGUID+209, @CGUID+206, 3),
(@CGUID+210, @CGUID+206, 3),
(@CGUID+211, @CGUID+206, 3),
(@CGUID+212, @CGUID+206, 3),
(@CGUID+213, @CGUID+206, 3),
(@CGUID+222, @CGUID+222, 3),
(@CGUID+223, @CGUID+222, 3),
(@CGUID+224, @CGUID+222, 3),
(@CGUID+225, @CGUID+222, 3),
(@CGUID+226, @CGUID+226, 3),
(@CGUID+227, @CGUID+226, 3),
(@CGUID+228, @CGUID+226, 3),
(@CGUID+229, @CGUID+226, 3),
(@CGUID+253, @CGUID+253, 3),
(@CGUID+254, @CGUID+253, 3),
(@CGUID+255, @CGUID+253, 3),
(@CGUID+256, @CGUID+253, 3),
(@CGUID+266, @CGUID+266, 3),
(@CGUID+267, @CGUID+266, 3),
(@CGUID+268, @CGUID+266, 3),
(@CGUID+269, @CGUID+266, 3),
(@CGUID+270, @CGUID+266, 3),
(@CGUID+271, @CGUID+266, 3),
(@CGUID+272, @CGUID+266, 3),
(@CGUID+273, @CGUID+273, 3),
(@CGUID+274, @CGUID+273, 3),
(@CGUID+275, @CGUID+273, 3),
(@CGUID+276, @CGUID+273, 3),
(@CGUID+277, @CGUID+273, 3),
(@CGUID+278, @CGUID+273, 3),
(@CGUID+279, @CGUID+273, 3),
(@CGUID+280, @CGUID+280, 3),
(@CGUID+281, @CGUID+280, 3),
(@CGUID+282, @CGUID+280, 3),
(@CGUID+283, @CGUID+280, 3),
(@CGUID+284, @CGUID+280, 3),
(@CGUID+287, @CGUID+287, 3),
(@CGUID+289, @CGUID+287, 3),
(@CGUID+290, @CGUID+287, 3),
(@CGUID+291, @CGUID+287, 3),
(@CGUID+292, @CGUID+287, 3),
(@CGUID+293, @CGUID+287, 3),
(@CGUID+294, @CGUID+287, 3),
(@CGUID+295, @CGUID+287, 3),
(@CGUID+296, @CGUID+287, 3),
(@CGUID+297, @CGUID+297, 3),
(@CGUID+298, @CGUID+297, 3),
(@CGUID+299, @CGUID+297, 3),
(@CGUID+300, @CGUID+297, 3),
(@CGUID+301, @CGUID+297, 3),
(@CGUID+302, @CGUID+302, 3),
(@CGUID+303, @CGUID+302, 3),
(@CGUID+304, @CGUID+302, 3),
(@CGUID+305, @CGUID+302, 3),
(@CGUID+318, @CGUID+318, 3),
(@CGUID+319, @CGUID+318, 3),
(@CGUID+320, @CGUID+318, 3),
(@CGUID+321, @CGUID+318, 3),
(@CGUID+322, @CGUID+318, 3),
(@CGUID+323, @CGUID+323, 3),
(@CGUID+324, @CGUID+323, 3),
(@CGUID+325, @CGUID+323, 3),
(@CGUID+326, @CGUID+323, 3),
(@CGUID+327, @CGUID+323, 3),
(@CGUID+328, @CGUID+328, 3),
(@CGUID+329, @CGUID+328, 3),
(@CGUID+330, @CGUID+330, 3),
(@CGUID+331, @CGUID+330, 3),
(@CGUID+365, @CGUID+365, 3),
(@CGUID+366, @CGUID+365, 3),
(@CGUID+367, @CGUID+365, 3),
(@CGUID+368, @CGUID+365, 3),
(@CGUID+369, @CGUID+365, 3),
(@CGUID+370, @CGUID+365, 3),
(@CGUID+371, @CGUID+365, 3),
(@CGUID+372, @CGUID+365, 3),
(@CGUID+373, @CGUID+373, 3),
(@CGUID+374, @CGUID+373, 3),
(@CGUID+375, @CGUID+373, 3),
(@CGUID+376, @CGUID+373, 3),
(@CGUID+377, @CGUID+373, 3),
(@CGUID+378, @CGUID+373, 3),
(@CGUID+379, @CGUID+373, 3),
(@CGUID+380, @CGUID+373, 3),
(@CGUID+383, @CGUID+383, 3),
(@CGUID+384, @CGUID+383, 3),
(@CGUID+385, @CGUID+383, 3),
(@CGUID+386, @CGUID+383, 3),
(@CGUID+387, @CGUID+383, 3),
(@CGUID+388, @CGUID+383, 3),
(@CGUID+389, @CGUID+383, 3),
(@CGUID+390, @CGUID+383, 3),
(@CGUID+391, @CGUID+383, 3),
(@CGUID+392, @CGUID+383, 3),
(@CGUID+393, @CGUID+383, 3),
(@CGUID+396, @CGUID+396, 3),
(@CGUID+397, @CGUID+396, 3),
(@CGUID+398, @CGUID+396, 3),
(@CGUID+399, @CGUID+396, 3),
(@CGUID+400, @CGUID+396, 3),
(@CGUID+401, @CGUID+396, 3),
(@CGUID+402, @CGUID+396, 3),
(@CGUID+403, @CGUID+396, 3),
(@CGUID+404, @CGUID+396, 3),
(@CGUID+405, @CGUID+396, 3),
(@CGUID+406, @CGUID+396, 3),
(@CGUID+418, @CGUID+418, 3),
(@CGUID+419, @CGUID+418, 3),
(@CGUID+420, @CGUID+418, 3),
(@CGUID+421, @CGUID+418, 3),
(@CGUID+422, @CGUID+418, 3),
(@CGUID+423, @CGUID+418, 3),
(@CGUID+540, @CGUID+540, 3),
(@CGUID+541, @CGUID+540, 3),
(@CGUID+542, @CGUID+540, 3),
(@CGUID+543, @CGUID+540, 3),
(@CGUID+544, @CGUID+540, 3),
(@CGUID+545, @CGUID+540, 3),
(@CGUID+546, @CGUID+540, 3),
(@CGUID+547, @CGUID+540, 3),
(@CGUID+548, @CGUID+540, 3),
(@CGUID+549, @CGUID+540, 3),
(@CGUID+550, @CGUID+550, 3),
(@CGUID+551, @CGUID+550, 3),
(@CGUID+552, @CGUID+550, 3),
(@CGUID+553, @CGUID+550, 3),
(@CGUID+554, @CGUID+550, 3),
(@CGUID+555, @CGUID+550, 3),
(@CGUID+556, @CGUID+550, 3),
(@CGUID+557, @CGUID+550, 3),
(@CGUID+558, @CGUID+550, 3),
(@CGUID+559, @CGUID+550, 3),
(@CGUID+560, @CGUID+560, 3),
(@CGUID+561, @CGUID+560, 3),
(@CGUID+562, @CGUID+560, 3),
(@CGUID+563, @CGUID+560, 3),
(@CGUID+564, @CGUID+560, 3),
(@CGUID+565, @CGUID+560, 3),
(@CGUID+566, @CGUID+560, 3),
(@CGUID+567, @CGUID+560, 3),
(@CGUID+568, @CGUID+560, 3),
(@CGUID+569, @CGUID+560, 3),
(@CGUID+570, @CGUID+570, 3),
(@CGUID+571, @CGUID+570, 3),
(@CGUID+572, @CGUID+570, 3),
(@CGUID+573, @CGUID+570, 3),
(@CGUID+574, @CGUID+570, 3),
(@CGUID+575, @CGUID+570, 3),
(@CGUID+576, @CGUID+570, 3),
(@CGUID+577, @CGUID+570, 3),
(@CGUID+578, @CGUID+570, 3),
(@CGUID+579, @CGUID+570, 3),
(@CGUID+580, @CGUID+580, 3),
(@CGUID+581, @CGUID+580, 3),
(@CGUID+582, @CGUID+580, 3),
(@CGUID+583, @CGUID+580, 3),
(@CGUID+584, @CGUID+580, 3),
(@CGUID+585, @CGUID+580, 3),
(@CGUID+586, @CGUID+580, 3),
(@CGUID+587, @CGUID+580, 3),
(@CGUID+588, @CGUID+580, 3),
(@CGUID+589, @CGUID+580, 3),
(@CGUID+592, @CGUID+592, 3),
(@CGUID+593, @CGUID+592, 3),
(@CGUID+594, @CGUID+592, 3),
(@CGUID+595, @CGUID+592, 3),
(@CGUID+596, @CGUID+592, 3),
(@CGUID+597, @CGUID+592, 3),
(@CGUID+598, @CGUID+592, 3),
(@CGUID+599, @CGUID+592, 3),
(@CGUID+600, @CGUID+592, 3),
(@CGUID+601, @CGUID+592, 3),
(@CGUID+602, @CGUID+602, 3),
(@CGUID+603, @CGUID+602, 3),
(@CGUID+605, @CGUID+605, 3),
(@CGUID+606, @CGUID+605, 3),
(@CGUID+607, @CGUID+605, 3),
(@CGUID+608, @CGUID+605, 3),
(@CGUID+609, @CGUID+605, 3),
(@CGUID+610, @CGUID+605, 3),
(@CGUID+611, @CGUID+605, 3),
(@CGUID+612, @CGUID+605, 3),
(@CGUID+613, @CGUID+605, 3),
(@CGUID+614, @CGUID+605, 3),
(@CGUID+615, @CGUID+615, 3),
(@CGUID+616, @CGUID+615, 3),
(@CGUID+617, @CGUID+615, 3),
(@CGUID+618, @CGUID+615, 3),
(@CGUID+619, @CGUID+615, 3),
(@CGUID+620, @CGUID+615, 3),
(@CGUID+621, @CGUID+615, 3),
(@CGUID+622, @CGUID+615, 3),
(@CGUID+623, @CGUID+615, 3),
(@CGUID+624, @CGUID+615, 3),
(@CGUID+625, @CGUID+625, 3),
(@CGUID+626, @CGUID+625, 3),
(@CGUID+627, @CGUID+625, 3),
(@CGUID+628, @CGUID+628, 3),
(@CGUID+629, @CGUID+628, 3),
(@CGUID+630, @CGUID+628, 3),
(@CGUID+631, @CGUID+631, 3),
(@CGUID+632, @CGUID+631, 3),
(@CGUID+633, @CGUID+631, 3),
(@CGUID+634, @CGUID+631, 3),
(@CGUID+635, @CGUID+635, 3),
(@CGUID+636, @CGUID+635, 3),
(@CGUID+637, @CGUID+635, 3),
(@CGUID+638, @CGUID+638, 3),
(@CGUID+639, @CGUID+638, 3),
(@CGUID+640, @CGUID+638, 3),
(@CGUID+641, @CGUID+638, 3),
(@CGUID+642, @CGUID+638, 3),
(@CGUID+643, @CGUID+638, 3),
(@CGUID+644, @CGUID+644, 3),
(@CGUID+645, @CGUID+644, 3),
(@CGUID+646, @CGUID+644, 3),
(@CGUID+647, @CGUID+644, 3),
(@CGUID+648, @CGUID+648, 3),
(@CGUID+649, @CGUID+648, 3),
(@CGUID+650, @CGUID+648, 3),
(@CGUID+651, @CGUID+648, 3),
(@CGUID+652, @CGUID+648, 3),
(@CGUID+653, @CGUID+648, 3),
(@CGUID+654, @CGUID+654, 3),
(@CGUID+655, @CGUID+654, 3),
(@CGUID+656, @CGUID+654, 3),
(@CGUID+657, @CGUID+654, 3),
(@CGUID+658, @CGUID+658, 3),
(@CGUID+659, @CGUID+658, 3),
(@CGUID+660, @CGUID+658, 3),
(@CGUID+661, @CGUID+658, 3),
(@CGUID+662, @CGUID+658, 3),
(@CGUID+663, @CGUID+658, 3),
(@CGUID+664, @CGUID+658, 3),
(@CGUID+665, @CGUID+658, 3),
(@CGUID+666, @CGUID+658, 3),
(@CGUID+667, @CGUID+658, 3),
(@CGUID+668, @CGUID+668, 3),
(@CGUID+669, @CGUID+668, 3),
(@CGUID+670, @CGUID+668, 3),
(@CGUID+671, @CGUID+668, 3),
(@CGUID+672, @CGUID+668, 3),
(@CGUID+673, @CGUID+673, 3),
(@CGUID+674, @CGUID+673, 3),
(@CGUID+675, @CGUID+673, 3),
(@CGUID+676, @CGUID+673, 3),
(@CGUID+677, @CGUID+673, 3),
(@CGUID+691, @CGUID+691, 3),
(@CGUID+692, @CGUID+691, 3),
(@CGUID+693, @CGUID+691, 3),
(@CGUID+694, @CGUID+691, 3),
(@CGUID+695, @CGUID+691, 3),
(@CGUID+696, @CGUID+691, 3),
(@CGUID+697, @CGUID+697, 3),
(@CGUID+698, @CGUID+697, 3),
(@CGUID+699, @CGUID+697, 3),
(@CGUID+700, @CGUID+697, 3),
(@CGUID+701, @CGUID+697, 3),
(@CGUID+702, @CGUID+697, 3),
(@CGUID+703, @CGUID+703, 3),
(@CGUID+704, @CGUID+703, 3),
(@CGUID+705, @CGUID+703, 3),
(@CGUID+706, @CGUID+703, 3),
(@CGUID+707, @CGUID+703, 3),
(@CGUID+708, @CGUID+703, 3),
(@CGUID+709, @CGUID+709, 3),
(@CGUID+710, @CGUID+709, 3),
(@CGUID+711, @CGUID+709, 3),
(@CGUID+712, @CGUID+709, 3),
(@CGUID+713, @CGUID+709, 3),
(@CGUID+714, @CGUID+709, 3),
(@CGUID+716, @CGUID+716, 3),
(@CGUID+717, @CGUID+716, 3),
(@CGUID+718, @CGUID+716, 3),
(@CGUID+719, @CGUID+716, 3);
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `dist`, `angle`, `groupAI`) VALUES
(@CGUID+1, @CGUID+1, 0, 0, 3),
(@CGUID+2, @CGUID+1, 0, 0, 3),
(@CGUID+3, @CGUID+1, 0, 0, 3),
(@CGUID+4, @CGUID+4, 0, 0, 3),
(@CGUID+5, @CGUID+4, 0, 0, 3),
(@CGUID+6, @CGUID+4, 0, 0, 3),
(@CGUID+7, @CGUID+7, 0, 0, 3),
(@CGUID+8, @CGUID+7, 0, 0, 3),
(@CGUID+9, @CGUID+7, 0, 0, 3),
(@CGUID+10, @CGUID+10, 0, 0, 3),
(@CGUID+11, @CGUID+10, 0, 0, 3),
(@CGUID+12, @CGUID+10, 0, 0, 3),
(@CGUID+23, @CGUID+23, 0, 0, 3),
(@CGUID+24, @CGUID+23, 0, 0, 3),
(@CGUID+25, @CGUID+23, 0, 0, 3),
(@CGUID+26, @CGUID+23, 0, 0, 3),
(@CGUID+27, @CGUID+23, 0, 0, 3),
(@CGUID+28, @CGUID+23, 0, 0, 3),
(@CGUID+29, @CGUID+23, 0, 0, 3),
(@CGUID+30, @CGUID+23, 0, 0, 3),
(@CGUID+31, @CGUID+23, 0, 0, 3),
(@CGUID+32, @CGUID+23, 0, 0, 3),
(@CGUID+33, @CGUID+33, 0, 0, 3),
(@CGUID+34, @CGUID+33, 0, 0, 3),
(@CGUID+35, @CGUID+33, 0, 0, 3),
(@CGUID+36, @CGUID+33, 0, 0, 3),
(@CGUID+37, @CGUID+33, 0, 0, 3),
(@CGUID+38, @CGUID+33, 0, 0, 3),
(@CGUID+39, @CGUID+33, 0, 0, 3),
(@CGUID+40, @CGUID+33, 0, 0, 3),
(@CGUID+41, @CGUID+33, 0, 0, 3),
(@CGUID+42, @CGUID+33, 0, 0, 3),
(@CGUID+43, @CGUID+43, 0, 0, 3),
(@CGUID+44, @CGUID+43, 0, 0, 3),
(@CGUID+45, @CGUID+43, 0, 0, 3),
(@CGUID+46, @CGUID+43, 0, 0, 3),
(@CGUID+47, @CGUID+43, 0, 0, 3),
(@CGUID+48, @CGUID+43, 0, 0, 3),
(@CGUID+49, @CGUID+49, 0, 0, 3),
(@CGUID+50, @CGUID+49, 0, 0, 3),
(@CGUID+51, @CGUID+49, 0, 0, 3),
(@CGUID+52, @CGUID+49, 0, 0, 3),
(@CGUID+53, @CGUID+49, 0, 0, 3),
(@CGUID+54, @CGUID+49, 0, 0, 3),
(@CGUID+62, @CGUID+62, 0, 0, 27),
(@CGUID+63, @CGUID+62, 0, 0, 27),
(@CGUID+64, @CGUID+62, 0, 0, 27),
(@CGUID+65, @CGUID+65, 0, 0, 3),
(@CGUID+66, @CGUID+65, 0, 0, 3),
(@CGUID+67, @CGUID+65, 0, 0, 3),
(@CGUID+68, @CGUID+65, 0, 0, 3),
(@CGUID+69, @CGUID+65, 0, 0, 3),
(@CGUID+70, @CGUID+65, 0, 0, 3),
(@CGUID+71, @CGUID+65, 0, 0, 3),
(@CGUID+74, @CGUID+74, 0, 0, 3),
(@CGUID+75, @CGUID+74, 0, 0, 3),
(@CGUID+76, @CGUID+74, 0, 0, 3),
(@CGUID+77, @CGUID+74, 0, 0, 3),
(@CGUID+78, @CGUID+74, 0, 0, 3),
(@CGUID+79, @CGUID+74, 0, 0, 3),
(@CGUID+82, @CGUID+82, 0, 0, 3),
(@CGUID+83, @CGUID+82, 0, 0, 3),
(@CGUID+84, @CGUID+82, 0, 0, 3),
(@CGUID+85, @CGUID+82, 0, 0, 3),
(@CGUID+86, @CGUID+82, 0, 0, 3),
(@CGUID+87, @CGUID+87, 0, 0, 3),
(@CGUID+88, @CGUID+87, 0, 0, 3),
(@CGUID+89, @CGUID+87, 0, 0, 3),
(@CGUID+90, @CGUID+87, 0, 0, 3),
(@CGUID+91, @CGUID+87, 0, 0, 3),
(@CGUID+92, @CGUID+87, 0, 0, 3),
(@CGUID+93, @CGUID+87, 0, 0, 3),
(@CGUID+94, @CGUID+94, 0, 0, 3),
(@CGUID+95, @CGUID+94, 0, 0, 3),
(@CGUID+96, @CGUID+94, 0, 0, 3),
(@CGUID+97, @CGUID+94, 0, 0, 3),
(@CGUID+98, @CGUID+94, 0, 0, 3),
(@CGUID+99, @CGUID+94, 0, 0, 3),
(@CGUID+146, @CGUID+146, 0, 0, 3),
(@CGUID+147, @CGUID+146, 0, 0, 3),
(@CGUID+148, @CGUID+146, 0, 0, 3),
(@CGUID+149, @CGUID+146, 0, 0, 3),
(@CGUID+150, @CGUID+146, 0, 0, 3),
(@CGUID+151, @CGUID+146, 0, 0, 3),
(@CGUID+152, @CGUID+152, 0, 0, 3),
(@CGUID+153, @CGUID+152, 0, 0, 3),
(@CGUID+154, @CGUID+152, 0, 0, 3),
(@CGUID+155, @CGUID+152, 0, 0, 3),
(@CGUID+156, @CGUID+152, 0, 0, 3),
(@CGUID+157, @CGUID+152, 0, 0, 3),
(@CGUID+158, @CGUID+158, 0, 0, 3),
(@CGUID+159, @CGUID+158, 0, 0, 3),
(@CGUID+160, @CGUID+158, 0, 0, 3),
(@CGUID+161, @CGUID+158, 0, 0, 3),
(@CGUID+162, @CGUID+158, 0, 0, 3),
(@CGUID+163, @CGUID+158, 0, 0, 3),
(@CGUID+164, @CGUID+164, 0, 0, 3),
(@CGUID+165, @CGUID+164, 0, 0, 3),
(@CGUID+166, @CGUID+164, 0, 0, 3),
(@CGUID+167, @CGUID+164, 0, 0, 3),
(@CGUID+168, @CGUID+164, 0, 0, 3),
(@CGUID+169, @CGUID+164, 0, 0, 3),
(@CGUID+170, @CGUID+170, 0, 0, 3),
(@CGUID+171, @CGUID+170, 0, 0, 3),
(@CGUID+172, @CGUID+170, 0, 0, 3),
(@CGUID+173, @CGUID+170, 0, 0, 3),
(@CGUID+174, @CGUID+170, 0, 0, 3),
(@CGUID+175, @CGUID+170, 0, 0, 3),
(@CGUID+188, @CGUID+188, 0, 0, 3),
(@CGUID+189, @CGUID+188, 0, 0, 3),
(@CGUID+190, @CGUID+190, 0, 0, 3),
(@CGUID+191, @CGUID+190, 0, 0, 3),
(@CGUID+192, @CGUID+192, 0, 0, 3),
(@CGUID+193, @CGUID+192, 0, 0, 3),
(@CGUID+194, @CGUID+194, 0, 0, 3),
(@CGUID+195, @CGUID+194, 0, 0, 3),
(@CGUID+196, @CGUID+196, 0, 0, 3),
(@CGUID+197, @CGUID+196, 0, 0, 3),
(@CGUID+198, @CGUID+198, 0, 0, 3),
(@CGUID+199, @CGUID+198, 0, 0, 3),
(@CGUID+200, @CGUID+198, 0, 0, 3),
(@CGUID+201, @CGUID+198, 0, 0, 3),
(@CGUID+202, @CGUID+198, 0, 0, 3),
(@CGUID+203, @CGUID+198, 0, 0, 3),
(@CGUID+204, @CGUID+198, 0, 0, 3),
(@CGUID+205, @CGUID+198, 0, 0, 3),
(@CGUID+206, @CGUID+206, 0, 0, 3),
(@CGUID+207, @CGUID+206, 0, 0, 3),
(@CGUID+208, @CGUID+206, 0, 0, 3),
(@CGUID+209, @CGUID+206, 0, 0, 3),
(@CGUID+210, @CGUID+206, 0, 0, 3),
(@CGUID+211, @CGUID+206, 0, 0, 3),
(@CGUID+212, @CGUID+206, 0, 0, 3),
(@CGUID+213, @CGUID+206, 0, 0, 3),
(@CGUID+222, @CGUID+222, 0, 0, 3),
(@CGUID+223, @CGUID+222, 0, 0, 3),
(@CGUID+224, @CGUID+222, 0, 0, 3),
(@CGUID+225, @CGUID+222, 0, 0, 3),
(@CGUID+226, @CGUID+226, 0, 0, 3),
(@CGUID+227, @CGUID+226, 0, 0, 3),
(@CGUID+228, @CGUID+226, 0, 0, 3),
(@CGUID+229, @CGUID+226, 0, 0, 3),
(@CGUID+253, @CGUID+253, 0, 0, 3),
(@CGUID+254, @CGUID+253, 0, 0, 3),
(@CGUID+255, @CGUID+253, 0, 0, 3),
(@CGUID+256, @CGUID+253, 0, 0, 3),
(@CGUID+266, @CGUID+266, 0, 0, 3),
(@CGUID+267, @CGUID+266, 0, 0, 3),
(@CGUID+268, @CGUID+266, 0, 0, 3),
(@CGUID+269, @CGUID+266, 0, 0, 3),
(@CGUID+270, @CGUID+266, 0, 0, 3),
(@CGUID+271, @CGUID+266, 0, 0, 3),
(@CGUID+272, @CGUID+266, 0, 0, 3),
(@CGUID+273, @CGUID+273, 0, 0, 3),
(@CGUID+274, @CGUID+273, 0, 0, 3),
(@CGUID+275, @CGUID+273, 0, 0, 3),
(@CGUID+276, @CGUID+273, 0, 0, 3),
(@CGUID+277, @CGUID+273, 0, 0, 3),
(@CGUID+278, @CGUID+273, 0, 0, 3),
(@CGUID+279, @CGUID+273, 0, 0, 3),
(@CGUID+280, @CGUID+280, 0, 0, 3),
(@CGUID+281, @CGUID+280, 0, 0, 3),
(@CGUID+282, @CGUID+280, 0, 0, 3),
(@CGUID+283, @CGUID+280, 0, 0, 3),
(@CGUID+284, @CGUID+280, 0, 0, 3),
(@CGUID+287, @CGUID+287, 0, 0, 3),
(@CGUID+289, @CGUID+287, 0, 0, 3),
(@CGUID+290, @CGUID+287, 0, 0, 3),
(@CGUID+291, @CGUID+287, 0, 0, 3),
(@CGUID+292, @CGUID+287, 0, 0, 3),
(@CGUID+293, @CGUID+287, 0, 0, 3),
(@CGUID+294, @CGUID+287, 0, 0, 3),
(@CGUID+295, @CGUID+287, 0, 0, 3),
(@CGUID+296, @CGUID+287, 0, 0, 3),
(@CGUID+297, @CGUID+297, 0, 0, 3),
(@CGUID+298, @CGUID+297, 0, 0, 3),
(@CGUID+299, @CGUID+297, 0, 0, 3),
(@CGUID+300, @CGUID+297, 0, 0, 3),
(@CGUID+301, @CGUID+297, 0, 0, 3),
(@CGUID+302, @CGUID+302, 0, 0, 3),
(@CGUID+303, @CGUID+302, 0, 0, 3),
(@CGUID+304, @CGUID+302, 0, 0, 3),
(@CGUID+305, @CGUID+302, 0, 0, 3),
(@CGUID+318, @CGUID+318, 0, 0, 3),
(@CGUID+319, @CGUID+318, 0, 0, 3),
(@CGUID+320, @CGUID+318, 0, 0, 3),
(@CGUID+321, @CGUID+318, 0, 0, 3),
(@CGUID+322, @CGUID+318, 0, 0, 3),
(@CGUID+323, @CGUID+323, 0, 0, 3),
(@CGUID+324, @CGUID+323, 0, 0, 3),
(@CGUID+325, @CGUID+323, 0, 0, 3),
(@CGUID+326, @CGUID+323, 0, 0, 3),
(@CGUID+327, @CGUID+323, 0, 0, 3),
(@CGUID+328, @CGUID+328, 0, 0, 3),
(@CGUID+329, @CGUID+328, 0, 0, 3),
(@CGUID+330, @CGUID+330, 0, 0, 3),
(@CGUID+331, @CGUID+330, 0, 0, 3),
(@CGUID+365, @CGUID+365, 0, 0, 3),
(@CGUID+366, @CGUID+365, 0, 0, 3),
(@CGUID+367, @CGUID+365, 0, 0, 3),
(@CGUID+368, @CGUID+365, 0, 0, 3),
(@CGUID+369, @CGUID+365, 0, 0, 3),
(@CGUID+370, @CGUID+365, 0, 0, 3),
(@CGUID+371, @CGUID+365, 0, 0, 3),
(@CGUID+372, @CGUID+365, 0, 0, 3),
(@CGUID+373, @CGUID+373, 0, 0, 3),
(@CGUID+374, @CGUID+373, 0, 0, 3),
(@CGUID+375, @CGUID+373, 0, 0, 3),
(@CGUID+376, @CGUID+373, 0, 0, 3),
(@CGUID+377, @CGUID+373, 0, 0, 3),
(@CGUID+378, @CGUID+373, 0, 0, 3),
(@CGUID+379, @CGUID+373, 0, 0, 3),
(@CGUID+380, @CGUID+373, 0, 0, 3),
(@CGUID+383, @CGUID+383, 0, 0, 3),
(@CGUID+384, @CGUID+383, 0, 0, 3),
(@CGUID+385, @CGUID+383, 0, 0, 3),
(@CGUID+386, @CGUID+383, 0, 0, 3),
(@CGUID+387, @CGUID+383, 0, 0, 3),
(@CGUID+388, @CGUID+383, 0, 0, 3),
(@CGUID+389, @CGUID+383, 0, 0, 3),
(@CGUID+390, @CGUID+383, 0, 0, 3),
(@CGUID+391, @CGUID+383, 0, 0, 3),
(@CGUID+392, @CGUID+383, 0, 0, 3),
(@CGUID+393, @CGUID+383, 0, 0, 3),
(@CGUID+396, @CGUID+396, 0, 0, 3),
(@CGUID+397, @CGUID+396, 0, 0, 3),
(@CGUID+398, @CGUID+396, 0, 0, 3),
(@CGUID+399, @CGUID+396, 0, 0, 3),
(@CGUID+400, @CGUID+396, 0, 0, 3),
(@CGUID+401, @CGUID+396, 0, 0, 3),
(@CGUID+402, @CGUID+396, 0, 0, 3),
(@CGUID+403, @CGUID+396, 0, 0, 3),
(@CGUID+404, @CGUID+396, 0, 0, 3),
(@CGUID+405, @CGUID+396, 0, 0, 3),
(@CGUID+406, @CGUID+396, 0, 0, 3),
(@CGUID+418, @CGUID+418, 0, 0, 3),
(@CGUID+419, @CGUID+418, 0, 0, 3),
(@CGUID+420, @CGUID+418, 0, 0, 3),
(@CGUID+421, @CGUID+418, 0, 0, 3),
(@CGUID+422, @CGUID+418, 0, 0, 3),
(@CGUID+423, @CGUID+418, 0, 0, 3),
(@CGUID+540, @CGUID+540, 0, 0, 3),
(@CGUID+541, @CGUID+540, 0, 0, 3),
(@CGUID+542, @CGUID+540, 0, 0, 3),
(@CGUID+543, @CGUID+540, 0, 0, 3),
(@CGUID+544, @CGUID+540, 0, 0, 3),
(@CGUID+545, @CGUID+540, 0, 0, 3),
(@CGUID+546, @CGUID+540, 0, 0, 3),
(@CGUID+547, @CGUID+540, 0, 0, 3),
(@CGUID+548, @CGUID+540, 0, 0, 3),
(@CGUID+549, @CGUID+540, 0, 0, 3),
(@CGUID+550, @CGUID+550, 0, 0, 3),
(@CGUID+551, @CGUID+550, 0, 0, 3),
(@CGUID+552, @CGUID+550, 0, 0, 3),
(@CGUID+553, @CGUID+550, 0, 0, 3),
(@CGUID+554, @CGUID+550, 0, 0, 3),
(@CGUID+555, @CGUID+550, 0, 0, 3),
(@CGUID+556, @CGUID+550, 0, 0, 3),
(@CGUID+557, @CGUID+550, 0, 0, 3),
(@CGUID+558, @CGUID+550, 0, 0, 3),
(@CGUID+559, @CGUID+550, 0, 0, 3),
(@CGUID+560, @CGUID+560, 0, 0, 3),
(@CGUID+561, @CGUID+560, 0, 0, 3),
(@CGUID+562, @CGUID+560, 0, 0, 3),
(@CGUID+563, @CGUID+560, 0, 0, 3),
(@CGUID+564, @CGUID+560, 0, 0, 3),
(@CGUID+565, @CGUID+560, 0, 0, 3),
(@CGUID+566, @CGUID+560, 0, 0, 3),
(@CGUID+567, @CGUID+560, 0, 0, 3),
(@CGUID+568, @CGUID+560, 0, 0, 3),
(@CGUID+569, @CGUID+560, 0, 0, 3),
(@CGUID+570, @CGUID+570, 0, 0, 3),
(@CGUID+571, @CGUID+570, 0, 0, 3),
(@CGUID+572, @CGUID+570, 0, 0, 3),
(@CGUID+573, @CGUID+570, 0, 0, 3),
(@CGUID+574, @CGUID+570, 0, 0, 3),
(@CGUID+575, @CGUID+570, 0, 0, 3),
(@CGUID+576, @CGUID+570, 0, 0, 3),
(@CGUID+577, @CGUID+570, 0, 0, 3),
(@CGUID+578, @CGUID+570, 0, 0, 3),
(@CGUID+579, @CGUID+570, 0, 0, 3),
(@CGUID+580, @CGUID+580, 0, 0, 3),
(@CGUID+581, @CGUID+580, 0, 0, 3),
(@CGUID+582, @CGUID+580, 0, 0, 3),
(@CGUID+583, @CGUID+580, 0, 0, 3),
(@CGUID+584, @CGUID+580, 0, 0, 3),
(@CGUID+585, @CGUID+580, 0, 0, 3),
(@CGUID+586, @CGUID+580, 0, 0, 3),
(@CGUID+587, @CGUID+580, 0, 0, 3),
(@CGUID+588, @CGUID+580, 0, 0, 3),
(@CGUID+589, @CGUID+580, 0, 0, 3),
(@CGUID+592, @CGUID+592, 0, 0, 3),
(@CGUID+593, @CGUID+592, 0, 0, 3),
(@CGUID+594, @CGUID+592, 0, 0, 3),
(@CGUID+595, @CGUID+592, 0, 0, 3),
(@CGUID+596, @CGUID+592, 0, 0, 3),
(@CGUID+597, @CGUID+592, 0, 0, 3),
(@CGUID+598, @CGUID+592, 0, 0, 3),
(@CGUID+599, @CGUID+592, 0, 0, 3),
(@CGUID+600, @CGUID+592, 0, 0, 3),
(@CGUID+601, @CGUID+592, 0, 0, 3),
(@CGUID+602, @CGUID+602, 0, 0, 3),
(@CGUID+603, @CGUID+602, 0, 0, 3),
(@CGUID+605, @CGUID+605, 0, 0, 3),
(@CGUID+606, @CGUID+605, 0, 0, 3),
(@CGUID+607, @CGUID+605, 0, 0, 3),
(@CGUID+608, @CGUID+605, 0, 0, 3),
(@CGUID+609, @CGUID+605, 0, 0, 3),
(@CGUID+610, @CGUID+605, 0, 0, 3),
(@CGUID+611, @CGUID+605, 0, 0, 3),
(@CGUID+612, @CGUID+605, 0, 0, 3),
(@CGUID+613, @CGUID+605, 0, 0, 3),
(@CGUID+614, @CGUID+605, 0, 0, 3),
(@CGUID+615, @CGUID+615, 0, 0, 3),
(@CGUID+616, @CGUID+615, 0, 0, 3),
(@CGUID+617, @CGUID+615, 0, 0, 3),
(@CGUID+618, @CGUID+615, 0, 0, 3),
(@CGUID+619, @CGUID+615, 0, 0, 3),
(@CGUID+620, @CGUID+615, 0, 0, 3),
(@CGUID+621, @CGUID+615, 0, 0, 3),
(@CGUID+622, @CGUID+615, 0, 0, 3),
(@CGUID+623, @CGUID+615, 0, 0, 3),
(@CGUID+624, @CGUID+615, 0, 0, 3),
(@CGUID+625, @CGUID+625, 0, 0, 3),
(@CGUID+626, @CGUID+625, 0, 0, 3),
(@CGUID+627, @CGUID+625, 0, 0, 3),
(@CGUID+628, @CGUID+628, 0, 0, 3),
(@CGUID+629, @CGUID+628, 0, 0, 3),
(@CGUID+630, @CGUID+628, 0, 0, 3),
(@CGUID+631, @CGUID+631, 0, 0, 3),
(@CGUID+632, @CGUID+631, 0, 0, 3),
(@CGUID+633, @CGUID+631, 0, 0, 3),
(@CGUID+634, @CGUID+631, 0, 0, 3),
(@CGUID+635, @CGUID+635, 0, 0, 3),
(@CGUID+636, @CGUID+635, 0, 0, 3),
(@CGUID+637, @CGUID+635, 0, 0, 3),
(@CGUID+638, @CGUID+638, 0, 0, 3),
(@CGUID+639, @CGUID+638, 0, 0, 3),
(@CGUID+640, @CGUID+638, 0, 0, 3),
(@CGUID+641, @CGUID+638, 0, 0, 3),
(@CGUID+642, @CGUID+638, 0, 0, 3),
(@CGUID+643, @CGUID+638, 0, 0, 3),
(@CGUID+644, @CGUID+644, 0, 0, 3),
(@CGUID+645, @CGUID+644, 0, 0, 3),
(@CGUID+646, @CGUID+644, 0, 0, 3),
(@CGUID+647, @CGUID+644, 0, 0, 3),
(@CGUID+648, @CGUID+648, 0, 0, 3),
(@CGUID+649, @CGUID+648, 0, 0, 3),
(@CGUID+650, @CGUID+648, 0, 0, 3),
(@CGUID+651, @CGUID+648, 0, 0, 3),
(@CGUID+652, @CGUID+648, 0, 0, 3),
(@CGUID+653, @CGUID+648, 0, 0, 3),
(@CGUID+654, @CGUID+654, 0, 0, 3),
(@CGUID+655, @CGUID+654, 0, 0, 3),
(@CGUID+656, @CGUID+654, 0, 0, 3),
(@CGUID+657, @CGUID+654, 0, 0, 3),
(@CGUID+658, @CGUID+658, 0, 0, 3),
(@CGUID+659, @CGUID+658, 0, 0, 3),
(@CGUID+660, @CGUID+658, 0, 0, 3),
(@CGUID+661, @CGUID+658, 0, 0, 3),
(@CGUID+662, @CGUID+658, 0, 0, 3),
(@CGUID+663, @CGUID+658, 0, 0, 3),
(@CGUID+664, @CGUID+658, 0, 0, 3),
(@CGUID+665, @CGUID+658, 0, 0, 3),
(@CGUID+666, @CGUID+658, 0, 0, 3),
(@CGUID+667, @CGUID+658, 0, 0, 3),
(@CGUID+668, @CGUID+668, 0, 0, 3),
(@CGUID+669, @CGUID+668, 0, 0, 3),
(@CGUID+670, @CGUID+668, 0, 0, 3),
(@CGUID+671, @CGUID+668, 0, 0, 3),
(@CGUID+672, @CGUID+668, 0, 0, 3),
(@CGUID+673, @CGUID+673, 0, 0, 3),
(@CGUID+674, @CGUID+673, 0, 0, 3),
(@CGUID+675, @CGUID+673, 0, 0, 3),
(@CGUID+676, @CGUID+673, 0, 0, 3),
(@CGUID+677, @CGUID+673, 0, 0, 3),
(@CGUID+691, @CGUID+691, 0, 0, 3),
(@CGUID+692, @CGUID+691, 0, 0, 3),
(@CGUID+693, @CGUID+691, 0, 0, 3),
(@CGUID+694, @CGUID+691, 0, 0, 3),
(@CGUID+695, @CGUID+691, 0, 0, 3),
(@CGUID+696, @CGUID+691, 0, 0, 3),
(@CGUID+697, @CGUID+697, 0, 0, 3),
(@CGUID+698, @CGUID+697, 0, 0, 3),
(@CGUID+699, @CGUID+697, 0, 0, 3),
(@CGUID+700, @CGUID+697, 0, 0, 3),
(@CGUID+701, @CGUID+697, 0, 0, 3),
(@CGUID+702, @CGUID+697, 0, 0, 3),
(@CGUID+703, @CGUID+703, 0, 0, 3),
(@CGUID+704, @CGUID+703, 0, 0, 3),
(@CGUID+705, @CGUID+703, 0, 0, 3),
(@CGUID+706, @CGUID+703, 0, 0, 3),
(@CGUID+707, @CGUID+703, 0, 0, 3),
(@CGUID+708, @CGUID+703, 0, 0, 3),
(@CGUID+709, @CGUID+709, 0, 0, 3),
(@CGUID+710, @CGUID+709, 0, 0, 3),
(@CGUID+711, @CGUID+709, 0, 0, 3),
(@CGUID+712, @CGUID+709, 0, 0, 3),
(@CGUID+713, @CGUID+709, 0, 0, 3),
(@CGUID+714, @CGUID+709, 0, 0, 3),
(@CGUID+716, @CGUID+716, 0, 0, 3),
(@CGUID+717, @CGUID+716, 0, 0, 3),
(@CGUID+718, @CGUID+716, 0, 0, 3),
(@CGUID+719, @CGUID+716, 0, 0, 3);
DELETE FROM `creature_addon` WHERE `guid` IN (12726,12727,12728,12729,12730,12731,12732,12733,12734,12735,12736,12760,12776,12778,12779,12780,12781,12782,12784,12785,12786,12787,12788,12789,12790,12791,12792,12793,12794,12795,12796,12797,12798,12799,12800,12801,12802,12803,12804,12805,12806,12807,12808,12809,12810,12843,12866,12869,12870,12871,12872,12873,12874,12875,12876,12877,12878,12879,12880,12881,12882,12883,12884,12886,12888,12889,12892,12894,13230,13235,40446,40526,40527,42920,46817,52411,52418,52420,52423,52424,52427,52428,52429,52430,52431,52432,52433,52440,52441,52442,52443,52444,52445,52446,52447,52448,52449,52450,52451,52452,52453,52454,52455,52456,52457,52458,52459,52460,52461,52462,52463,52464,52465,52739,52740,52743,52768,52769,52772,52773,52846,52847,52848,52850,52854,52855,52857,53054,53055,53056,53057,53058,53059,53210,53229,53586,53710,53711,53816,84716);
DELETE FROM `waypoint_data` WHERE `id` IN (128660,128690,128840,128860,128880,128890,404460,405260,429200,468170,524110,524180,524200,524230,524240,524270,527390,527400,527430,527680,527690,527720,527730,528460,528470,528480,528500,528540,528550,528570,530540,530550,530560,530570,530580,530590,538160);
+8 -8
View File
@@ -18,14 +18,14 @@ INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Lan
UPDATE `creature` SET `spawntimesecs` = 300 WHERE `id1` = 23191 AND `map` = 564;
DELETE FROM `creature_formations` WHERE `leaderGUID` = 148236;
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `groupAI`) VALUES
(148236, 148236, 24),
(148237, 148236, 24),
(148238, 148236, 24),
(148239, 148236, 24),
(148240, 148236, 24),
(148241, 148236, 24),
(148242, 148236, 24);
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `dist`, `angle`, `groupAI`) VALUES
(148236, 148236, 0, 0, 24),
(148237, 148236, 0, 0, 24),
(148238, 148236, 0, 0, 24),
(148239, 148236, 0, 0, 24),
(148240, 148236, 0, 0, 24),
(148241, 148236, 0, 0, 24),
(148242, 148236, 0, 0, 24);
-- Delete leftover gobs
DELETE FROM `gameobject` WHERE `guid` IN (20523,20558,20559,20561,20563,20567) AND `map` = 564;
+37 -37
View File
@@ -1,42 +1,42 @@
-- DB update 2024_07_09_06 -> 2024_07_09_07
--
DELETE FROM `creature_formations` WHERE `memberGUID` IN (158167,158168,158169,158170,158171,158172,158173,158174,158175,158176,158177,158178,158155,158156,158157,158158,158159,158160,158161,158162,158163,158164,158165,158166,158143,158144,158145,158146,158147,158148,158149,158150,158151,158152,158153,158154);
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `groupAI`) VALUES
(158167, 158167, 3),
(158167, 158168, 3),
(158167, 158169, 3),
(158167, 158170, 3),
(158167, 158171, 3),
(158167, 158172, 3),
(158167, 158173, 3),
(158167, 158174, 3),
(158167, 158175, 3),
(158167, 158176, 3),
(158167, 158177, 3),
(158167, 158178, 3),
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
(158167, 158167, 0, 0, 3),
(158167, 158168, 0, 0, 3),
(158167, 158169, 0, 0, 3),
(158167, 158170, 0, 0, 3),
(158167, 158171, 0, 0, 3),
(158167, 158172, 0, 0, 3),
(158167, 158173, 0, 0, 3),
(158167, 158174, 0, 0, 3),
(158167, 158175, 0, 0, 3),
(158167, 158176, 0, 0, 3),
(158167, 158177, 0, 0, 3),
(158167, 158178, 0, 0, 3),
(158155, 158155, 3),
(158155, 158156, 3),
(158155, 158157, 3),
(158155, 158158, 3),
(158155, 158159, 3),
(158155, 158160, 3),
(158155, 158161, 3),
(158155, 158162, 3),
(158155, 158163, 3),
(158155, 158164, 3),
(158155, 158165, 3),
(158155, 158166, 3),
(158155, 158155, 0, 0, 3),
(158155, 158156, 0, 0, 3),
(158155, 158157, 0, 0, 3),
(158155, 158158, 0, 0, 3),
(158155, 158159, 0, 0, 3),
(158155, 158160, 0, 0, 3),
(158155, 158161, 0, 0, 3),
(158155, 158162, 0, 0, 3),
(158155, 158163, 0, 0, 3),
(158155, 158164, 0, 0, 3),
(158155, 158165, 0, 0, 3),
(158155, 158166, 0, 0, 3),
(158143, 158143, 3),
(158143, 158144, 3),
(158143, 158145, 3),
(158143, 158146, 3),
(158143, 158147, 3),
(158143, 158148, 3),
(158143, 158149, 3),
(158143, 158150, 3),
(158143, 158151, 3),
(158143, 158152, 3),
(158143, 158153, 3),
(158143, 158154, 3);
(158143, 158143, 0, 0, 3),
(158143, 158144, 0, 0, 3),
(158143, 158145, 0, 0, 3),
(158143, 158146, 0, 0, 3),
(158143, 158147, 0, 0, 3),
(158143, 158148, 0, 0, 3),
(158143, 158149, 0, 0, 3),
(158143, 158150, 0, 0, 3),
(158143, 158151, 0, 0, 3),
(158143, 158152, 0, 0, 3),
(158143, 158153, 0, 0, 3),
(158143, 158154, 0, 0, 3);
+5 -1
View File
@@ -42,11 +42,15 @@ CREATE TABLE `realmlist` (
--
-- Dumping data for table `realmlist`
--
-- Fractured defaults: `address` / `port` are the WORLD server (must match
-- WorldServerPort in worldserver.conf). Client auth uses RealmServerPort from
-- authserver.conf (Fractured dist: 47497), e.g. set realmlist hsrwow.net:47497
-- Adjust `localAddress` if your LAN/internal routing differs.
LOCK TABLES `realmlist` WRITE;
/*!40000 ALTER TABLE `realmlist` DISABLE KEYS */;
INSERT INTO `realmlist` VALUES
(1,'AzerothCore','127.0.0.1','127.0.0.1','255.255.255.0',8085,0,0,1,0,0,12340);
(1,'Fractured WoW','hsrwow.net','127.0.0.1','255.255.255.0',8085,0,0,1,0,0,12340);
/*!40000 ALTER TABLE `realmlist` ENABLE KEYS */;
UNLOCK TABLES;
@@ -546,7 +546,7 @@ INSERT INTO `spell_target_position` VALUES
(48274,0,575,302.36,-352.01,90.54,2.2,0),
(48275,0,575,291.39,-352.01,90.54,0.91,0),
(48276,0,575,296.651,-346.293,108.547,1.58,0),
(48324,0,571,3454.11,-2802.37,202.14,0,34149345),
(48324,0,571,3454.11,-2802.37,202.14,0,0),
(48622,0,571,4274.53,-3055.55,319.463,2.535,0),
(48760,0,571,3876.16,6984.44,106.32,6.279,0),
(48960,0,571,4313.37,-2958.17,318.463,1.98,0),
+94 -94
View File
@@ -665,97 +665,97 @@ INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`,
-- Static Linking
DELETE FROM `creature_formations` WHERE `groupAI` IN (3, 27) AND `leaderGUID` IN (@CGUID+22,@CGUID+23,@CGUID+26,@CGUID+28,@CGUID+30,@CGUID+31,@CGUID+36,@CGUID+37,@CGUID+41,@CGUID+42,@CGUID+43,@CGUID+44,@CGUID+61,@CGUID+63,@CGUID+72,@CGUID+80,@CGUID+86,@CGUID+102,@CGUID+103,@CGUID+110,@CGUID+117,@CGUID+120,@CGUID+139,@CGUID+140) AND `memberGUID` IN (@CGUID+21,@CGUID+22,@CGUID+23,@CGUID+24,@CGUID+25,@CGUID+26,@CGUID+27,@CGUID+28,@CGUID+29,@CGUID+30,@CGUID+31,@CGUID+32,@CGUID+33,@CGUID+34,@CGUID+36,@CGUID+37,@CGUID+38,@CGUID+40,@CGUID+41,@CGUID+42,@CGUID+43,@CGUID+44,@CGUID+61,@CGUID+62,@CGUID+63,@CGUID+64,@CGUID+65,@CGUID+66,@CGUID+67,@CGUID+70,@CGUID+71,@CGUID+72,@CGUID+73,@CGUID+74,@CGUID+75,@CGUID+76,@CGUID+77,@CGUID+78,@CGUID+79,@CGUID+80,@CGUID+82,@CGUID+83,@CGUID+84,@CGUID+86,@CGUID+87,@CGUID+89,@CGUID+90,@CGUID+91,@CGUID+92,@CGUID+93,@CGUID+94,@CGUID+95,@CGUID+96,@CGUID+98,@CGUID+99,@CGUID+100,@CGUID+101,@CGUID+102,@CGUID+103,@CGUID+106,@CGUID+110,@CGUID+111,@CGUID+112,@CGUID+113,@CGUID+114,@CGUID+115,@CGUID+116,@CGUID+117,@CGUID+118,@CGUID+119,@CGUID+120,@CGUID+122,@CGUID+124,@CGUID+125,@CGUID+126,@CGUID+127,@CGUID+128,@CGUID+139,@CGUID+140,@CGUID+141,@CGUID+142,@CGUID+143,@CGUID+144,@CGUID+145,@CGUID+146,@CGUID+147,@CGUID+148,@CGUID+149,@CGUID+150,@CGUID+151,@CGUID+152,@CGUID+153,@CGUID+154);
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `groupAI`) VALUES
(@CGUID+103, @CGUID+103, 3),
(@CGUID+103, @CGUID+21, 3),
(@CGUID+103, @CGUID+25, 3),
(@CGUID+30, @CGUID+30, 3),
(@CGUID+30, @CGUID+95, 3),
(@CGUID+30, @CGUID+114, 3),
(@CGUID+30, @CGUID+83, 3),
(@CGUID+110, @CGUID+110, 3),
(@CGUID+110, @CGUID+77, 3),
(@CGUID+110, @CGUID+79, 3),
(@CGUID+22, @CGUID+22, 3),
(@CGUID+22, @CGUID+84, 3),
(@CGUID+22, @CGUID+99, 3),
(@CGUID+26, @CGUID+26, 3),
(@CGUID+26, @CGUID+96, 3),
(@CGUID+26, @CGUID+112, 3),
(@CGUID+26, @CGUID+27, 3),
(@CGUID+28, @CGUID+28, 3),
(@CGUID+28, @CGUID+29, 3),
(@CGUID+28, @CGUID+100, 3),
(@CGUID+28, @CGUID+111, 3),
(@CGUID+23, @CGUID+23, 3),
(@CGUID+23, @CGUID+78, 3),
(@CGUID+23, @CGUID+101, 3),
(@CGUID+23, @CGUID+24, 3),
(@CGUID+86, @CGUID+86, 3),
(@CGUID+86, @CGUID+87, 3),
(@CGUID+86, @CGUID+115, 3),
(@CGUID+86, @CGUID+106, 3),
(@CGUID+80, @CGUID+80, 3),
(@CGUID+80, @CGUID+98, 3),
(@CGUID+80, @CGUID+82, 3),
(@CGUID+80, @CGUID+113, 3),
(@CGUID+44, @CGUID+44, 27),
(@CGUID+44, @CGUID+124, 27),
(@CGUID+44, @CGUID+125, 27),
(@CGUID+61, @CGUID+61, 3),
(@CGUID+61, @CGUID+62, 3),
(@CGUID+102, @CGUID+102, 3),
(@CGUID+102, @CGUID+33, 3),
(@CGUID+102, @CGUID+34, 3),
(@CGUID+37, @CGUID+37, 3),
(@CGUID+37, @CGUID+91, 3),
(@CGUID+37, @CGUID+67, 3),
(@CGUID+37, @CGUID+66, 3),
(@CGUID+36, @CGUID+36, 3),
(@CGUID+36, @CGUID+90, 3),
(@CGUID+36, @CGUID+89, 3),
(@CGUID+36, @CGUID+64, 3),
(@CGUID+31, @CGUID+31, 3),
(@CGUID+31, @CGUID+32, 3),
(@CGUID+31, @CGUID+38, 3),
(@CGUID+31, @CGUID+70, 3),
(@CGUID+63, @CGUID+63, 3),
(@CGUID+63, @CGUID+65, 3),
(@CGUID+120, @CGUID+120, 3),
(@CGUID+120, @CGUID+122, 3),
(@CGUID+139, @CGUID+139, 3),
(@CGUID+139, @CGUID+146, 3),
(@CGUID+139, @CGUID+143, 3),
(@CGUID+139, @CGUID+145, 3),
(@CGUID+139, @CGUID+147, 3),
(@CGUID+139, @CGUID+149, 3),
(@CGUID+139, @CGUID+154, 3),
(@CGUID+139, @CGUID+144, 3),
(@CGUID+140, @CGUID+140, 3),
(@CGUID+140, @CGUID+152, 3),
(@CGUID+140, @CGUID+142, 3),
(@CGUID+140, @CGUID+150, 3),
(@CGUID+140, @CGUID+153, 3),
(@CGUID+140, @CGUID+151, 3),
(@CGUID+140, @CGUID+141, 3),
(@CGUID+140, @CGUID+148, 3),
(@CGUID+43, @CGUID+43, 3),
(@CGUID+43, @CGUID+127, 3),
(@CGUID+43, @CGUID+126, 3),
(@CGUID+43, @CGUID+128, 3),
(@CGUID+72, @CGUID+72, 3),
(@CGUID+72, @CGUID+116, 3),
(@CGUID+72, @CGUID+71, 3),
(@CGUID+72, @CGUID+40, 3),
(@CGUID+117, @CGUID+117, 3),
(@CGUID+117, @CGUID+74, 3),
(@CGUID+117, @CGUID+73, 3),
(@CGUID+117, @CGUID+92, 3),
(@CGUID+41, @CGUID+41, 3),
(@CGUID+41, @CGUID+75, 3),
(@CGUID+41, @CGUID+118, 3),
(@CGUID+41, @CGUID+93, 3),
(@CGUID+42, @CGUID+42, 3),
(@CGUID+42, @CGUID+76, 3),
(@CGUID+42, @CGUID+94, 3),
(@CGUID+42, @CGUID+119, 3);
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
(@CGUID+103, @CGUID+103, 0, 0, 3),
(@CGUID+103, @CGUID+21, 0, 0, 3),
(@CGUID+103, @CGUID+25, 0, 0, 3),
(@CGUID+30, @CGUID+30, 0, 0, 3),
(@CGUID+30, @CGUID+95, 0, 0, 3),
(@CGUID+30, @CGUID+114, 0, 0, 3),
(@CGUID+30, @CGUID+83, 0, 0, 3),
(@CGUID+110, @CGUID+110, 0, 0, 3),
(@CGUID+110, @CGUID+77, 0, 0, 3),
(@CGUID+110, @CGUID+79, 0, 0, 3),
(@CGUID+22, @CGUID+22, 0, 0, 3),
(@CGUID+22, @CGUID+84, 0, 0, 3),
(@CGUID+22, @CGUID+99, 0, 0, 3),
(@CGUID+26, @CGUID+26, 0, 0, 3),
(@CGUID+26, @CGUID+96, 0, 0, 3),
(@CGUID+26, @CGUID+112, 0, 0, 3),
(@CGUID+26, @CGUID+27, 0, 0, 3),
(@CGUID+28, @CGUID+28, 0, 0, 3),
(@CGUID+28, @CGUID+29, 0, 0, 3),
(@CGUID+28, @CGUID+100, 0, 0, 3),
(@CGUID+28, @CGUID+111, 0, 0, 3),
(@CGUID+23, @CGUID+23, 0, 0, 3),
(@CGUID+23, @CGUID+78, 0, 0, 3),
(@CGUID+23, @CGUID+101, 0, 0, 3),
(@CGUID+23, @CGUID+24, 0, 0, 3),
(@CGUID+86, @CGUID+86, 0, 0, 3),
(@CGUID+86, @CGUID+87, 0, 0, 3),
(@CGUID+86, @CGUID+115, 0, 0, 3),
(@CGUID+86, @CGUID+106, 0, 0, 3),
(@CGUID+80, @CGUID+80, 0, 0, 3),
(@CGUID+80, @CGUID+98, 0, 0, 3),
(@CGUID+80, @CGUID+82, 0, 0, 3),
(@CGUID+80, @CGUID+113, 0, 0, 3),
(@CGUID+44, @CGUID+44, 0, 0, 27),
(@CGUID+44, @CGUID+124, 0, 0, 27),
(@CGUID+44, @CGUID+125, 0, 0, 27),
(@CGUID+61, @CGUID+61, 0, 0, 3),
(@CGUID+61, @CGUID+62, 0, 0, 3),
(@CGUID+102, @CGUID+102, 0, 0, 3),
(@CGUID+102, @CGUID+33, 0, 0, 3),
(@CGUID+102, @CGUID+34, 0, 0, 3),
(@CGUID+37, @CGUID+37, 0, 0, 3),
(@CGUID+37, @CGUID+91, 0, 0, 3),
(@CGUID+37, @CGUID+67, 0, 0, 3),
(@CGUID+37, @CGUID+66, 0, 0, 3),
(@CGUID+36, @CGUID+36, 0, 0, 3),
(@CGUID+36, @CGUID+90, 0, 0, 3),
(@CGUID+36, @CGUID+89, 0, 0, 3),
(@CGUID+36, @CGUID+64, 0, 0, 3),
(@CGUID+31, @CGUID+31, 0, 0, 3),
(@CGUID+31, @CGUID+32, 0, 0, 3),
(@CGUID+31, @CGUID+38, 0, 0, 3),
(@CGUID+31, @CGUID+70, 0, 0, 3),
(@CGUID+63, @CGUID+63, 0, 0, 3),
(@CGUID+63, @CGUID+65, 0, 0, 3),
(@CGUID+120, @CGUID+120, 0, 0, 3),
(@CGUID+120, @CGUID+122, 0, 0, 3),
(@CGUID+139, @CGUID+139, 0, 0, 3),
(@CGUID+139, @CGUID+146, 0, 0, 3),
(@CGUID+139, @CGUID+143, 0, 0, 3),
(@CGUID+139, @CGUID+145, 0, 0, 3),
(@CGUID+139, @CGUID+147, 0, 0, 3),
(@CGUID+139, @CGUID+149, 0, 0, 3),
(@CGUID+139, @CGUID+154, 0, 0, 3),
(@CGUID+139, @CGUID+144, 0, 0, 3),
(@CGUID+140, @CGUID+140, 0, 0, 3),
(@CGUID+140, @CGUID+152, 0, 0, 3),
(@CGUID+140, @CGUID+142, 0, 0, 3),
(@CGUID+140, @CGUID+150, 0, 0, 3),
(@CGUID+140, @CGUID+153, 0, 0, 3),
(@CGUID+140, @CGUID+151, 0, 0, 3),
(@CGUID+140, @CGUID+141, 0, 0, 3),
(@CGUID+140, @CGUID+148, 0, 0, 3),
(@CGUID+43, @CGUID+43, 0, 0, 3),
(@CGUID+43, @CGUID+127, 0, 0, 3),
(@CGUID+43, @CGUID+126, 0, 0, 3),
(@CGUID+43, @CGUID+128, 0, 0, 3),
(@CGUID+72, @CGUID+72, 0, 0, 3),
(@CGUID+72, @CGUID+116, 0, 0, 3),
(@CGUID+72, @CGUID+71, 0, 0, 3),
(@CGUID+72, @CGUID+40, 0, 0, 3),
(@CGUID+117, @CGUID+117, 0, 0, 3),
(@CGUID+117, @CGUID+74, 0, 0, 3),
(@CGUID+117, @CGUID+73, 0, 0, 3),
(@CGUID+117, @CGUID+92, 0, 0, 3),
(@CGUID+41, @CGUID+41, 0, 0, 3),
(@CGUID+41, @CGUID+75, 0, 0, 3),
(@CGUID+41, @CGUID+118, 0, 0, 3),
(@CGUID+41, @CGUID+93, 0, 0, 3),
(@CGUID+42, @CGUID+42, 0, 0, 3),
(@CGUID+42, @CGUID+76, 0, 0, 3),
(@CGUID+42, @CGUID+94, 0, 0, 3),
(@CGUID+42, @CGUID+119, 0, 0, 3);
+156 -156
View File
@@ -1239,162 +1239,162 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_
*/
DELETE FROM `creature_formations` WHERE `groupAI` = 3 AND `leaderGUID` IN (@CGUID+28,@CGUID+29,@CGUID+34,@CGUID+36,@CGUID+39,@CGUID+43,@CGUID+44,@CGUID+45,@CGUID+50,@CGUID+52,@CGUID+53,@CGUID+58,@CGUID+66,@CGUID+68,@CGUID+80,@CGUID+81,@CGUID+89,@CGUID+91,@CGUID+113,@CGUID+116,@CGUID+121,@CGUID+122,@CGUID+125,@CGUID+126,@CGUID+136,@CGUID+141,@CGUID+159,@CGUID+164,@CGUID+183,@CGUID+186,@CGUID+206,@CGUID+211,@CGUID+213,@CGUID+217,@CGUID+221,@CGUID+26) AND `memberGUID` IN (@CGUID+50,@CGUID+70,@CGUID+71,@CGUID+52,@CGUID+73,@CGUID+89,@CGUID+99,@CGUID+97,@CGUID+96,@CGUID+95,@CGUID+93,@CGUID+68,@CGUID+69,@CGUID+66,@CGUID+47,@CGUID+46,@CGUID+43,@CGUID+64,@CGUID+45,@CGUID+65,@CGUID+39,@CGUID+88,@CGUID+94,@CGUID+60,@CGUID+58,@CGUID+37,@CGUID+38,@CGUID+116,@CGUID+114,@CGUID+117,@CGUID+231,@CGUID+121,@CGUID+119,@CGUID+120,@CGUID+233,@CGUID+113,@CGUID+118,@CGUID+115,@CGUID+230,@CGUID+122,@CGUID+124,@CGUID+123,@CGUID+234,@CGUID+125,@CGUID+127,@CGUID+128,@CGUID+235,@CGUID+126,@CGUID+129,@CGUID+130,@CGUID+232,@CGUID+44,@CGUID+79,@CGUID+63,@CGUID+31,@CGUID+80,@CGUID+41,@CGUID+62,@CGUID+42,@CGUID+32,@CGUID+81,@CGUID+49,@CGUID+33,@CGUID+48,@CGUID+67,@CGUID+34,@CGUID+82,@CGUID+72,@CGUID+51,@CGUID+102,@CGUID+92,@CGUID+53,@CGUID+35,@CGUID+91,@CGUID+101,@CGUID+40,@CGUID+78,@CGUID+61,@CGUID+30,@CGUID+29,@CGUID+57,@CGUID+186,@CGUID+188,@CGUID+187,@CGUID+185,@CGUID+36,@CGUID+55,@CGUID+56,@CGUID+28,@CGUID+54,@CGUID+183,@CGUID+181,@CGUID+182,@CGUID+180,@CGUID+159,@CGUID+158,@CGUID+161,@CGUID+165,@CGUID+166,@CGUID+177,@CGUID+172,@CGUID+176,@CGUID+168,@CGUID+160,@CGUID+164,@CGUID+163,@CGUID+162,@CGUID+167,@CGUID+169,@CGUID+175,@CGUID+173,@CGUID+170,@CGUID+171,@CGUID+174,@CGUID+136,@CGUID+149,@CGUID+145,@CGUID+152,@CGUID+155,@CGUID+153,@CGUID+144,@CGUID+140,@CGUID+137,@CGUID+147,@CGUID+141,@CGUID+150,@CGUID+154,@CGUID+151,@CGUID+146,@CGUID+142,@CGUID+148,@CGUID+143,@CGUID+138,@CGUID+139,@CGUID+211,@CGUID+212,@CGUID+213,@CGUID+214,@CGUID+215,@CGUID+216,@CGUID+217,@CGUID+218,@CGUID+219,@CGUID+220,@CGUID+221,@CGUID+222,@CGUID+223,@CGUID+224,@CGUID+206,@CGUID+207,@CGUID+208,@CGUID+26,@CGUID+191,@CGUID+195,@CGUID+85);
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `groupAI`) VALUES
(@CGUID+50, @CGUID+50, 3),
(@CGUID+50, @CGUID+70, 3),
(@CGUID+50, @CGUID+71, 3),
(@CGUID+52, @CGUID+52, 3),
(@CGUID+52, @CGUID+73, 3),
(@CGUID+89, @CGUID+89, 3),
(@CGUID+89, @CGUID+99, 3),
(@CGUID+89, @CGUID+97, 3),
(@CGUID+89, @CGUID+96, 3),
(@CGUID+89, @CGUID+95, 3),
(@CGUID+89, @CGUID+93, 3),
(@CGUID+68, @CGUID+68, 3),
(@CGUID+68, @CGUID+69, 3),
(@CGUID+66, @CGUID+66, 3),
(@CGUID+66, @CGUID+47, 3),
(@CGUID+66, @CGUID+46, 3),
(@CGUID+43, @CGUID+43, 3),
(@CGUID+43, @CGUID+64, 3),
(@CGUID+45, @CGUID+45, 3),
(@CGUID+45, @CGUID+65, 3),
(@CGUID+39, @CGUID+39, 3),
(@CGUID+39, @CGUID+88, 3),
(@CGUID+39, @CGUID+94, 3),
(@CGUID+39, @CGUID+60, 3),
(@CGUID+58, @CGUID+58, 3),
(@CGUID+58, @CGUID+37, 3),
(@CGUID+58, @CGUID+38, 3),
(@CGUID+116, @CGUID+116, 3),
(@CGUID+116, @CGUID+114, 3),
(@CGUID+116, @CGUID+117, 3),
(@CGUID+116, @CGUID+231, 3),
(@CGUID+121, @CGUID+121, 3),
(@CGUID+121, @CGUID+119, 3),
(@CGUID+121, @CGUID+120, 3),
(@CGUID+121, @CGUID+233, 3),
(@CGUID+113, @CGUID+113, 3),
(@CGUID+113, @CGUID+118, 3),
(@CGUID+113, @CGUID+115, 3),
(@CGUID+113, @CGUID+230, 3),
(@CGUID+122, @CGUID+122, 3),
(@CGUID+122, @CGUID+124, 3),
(@CGUID+122, @CGUID+123, 3),
(@CGUID+122, @CGUID+234, 3),
(@CGUID+125, @CGUID+125, 3),
(@CGUID+125, @CGUID+127, 3),
(@CGUID+125, @CGUID+128, 3),
(@CGUID+125, @CGUID+235, 3),
(@CGUID+126, @CGUID+126, 3),
(@CGUID+126, @CGUID+129, 3),
(@CGUID+126, @CGUID+130, 3),
(@CGUID+126, @CGUID+232, 3),
(@CGUID+44, @CGUID+44, 3),
(@CGUID+44, @CGUID+79, 3),
(@CGUID+44, @CGUID+63, 3),
(@CGUID+44, @CGUID+31, 3),
(@CGUID+80, @CGUID+80, 3),
(@CGUID+80, @CGUID+41, 3),
(@CGUID+80, @CGUID+62, 3),
(@CGUID+80, @CGUID+42, 3),
(@CGUID+80, @CGUID+32, 3),
(@CGUID+81, @CGUID+81, 3),
(@CGUID+81, @CGUID+49, 3),
(@CGUID+81, @CGUID+33, 3),
(@CGUID+81, @CGUID+48, 3),
(@CGUID+81, @CGUID+67, 3),
(@CGUID+34, @CGUID+34, 3),
(@CGUID+34, @CGUID+82, 3),
(@CGUID+34, @CGUID+72, 3),
(@CGUID+34, @CGUID+51, 3),
(@CGUID+34, @CGUID+102, 3),
(@CGUID+34, @CGUID+92, 3),
(@CGUID+53, @CGUID+53, 3),
(@CGUID+53, @CGUID+35, 3),
(@CGUID+91, @CGUID+91, 3),
(@CGUID+91, @CGUID+101, 3),
(@CGUID+91, @CGUID+40, 3),
(@CGUID+91, @CGUID+78, 3),
(@CGUID+91, @CGUID+61, 3),
(@CGUID+91, @CGUID+30, 3),
(@CGUID+29, @CGUID+29, 3),
(@CGUID+29, @CGUID+57, 3),
(@CGUID+186, @CGUID+186, 3),
(@CGUID+186, @CGUID+188, 3),
(@CGUID+186, @CGUID+187, 3),
(@CGUID+186, @CGUID+185, 3),
(@CGUID+36, @CGUID+36, 3),
(@CGUID+36, @CGUID+55, 3),
(@CGUID+36, @CGUID+56, 3),
(@CGUID+28, @CGUID+28, 3),
(@CGUID+28, @CGUID+54, 3),
(@CGUID+183, @CGUID+183, 3),
(@CGUID+183, @CGUID+181, 3),
(@CGUID+183, @CGUID+182, 3),
(@CGUID+183, @CGUID+180, 3),
(@CGUID+159, @CGUID+159, 3),
(@CGUID+159, @CGUID+158, 3),
(@CGUID+159, @CGUID+161, 3),
(@CGUID+159, @CGUID+165, 3),
(@CGUID+159, @CGUID+166, 3),
(@CGUID+159, @CGUID+177, 3),
(@CGUID+159, @CGUID+172, 3),
(@CGUID+159, @CGUID+176, 3),
(@CGUID+159, @CGUID+168, 3),
(@CGUID+159, @CGUID+160, 3),
(@CGUID+164, @CGUID+164, 3),
(@CGUID+164, @CGUID+163, 3),
(@CGUID+164, @CGUID+162, 3),
(@CGUID+164, @CGUID+167, 3),
(@CGUID+164, @CGUID+169, 3),
(@CGUID+164, @CGUID+175, 3),
(@CGUID+164, @CGUID+173, 3),
(@CGUID+164, @CGUID+170, 3),
(@CGUID+164, @CGUID+171, 3),
(@CGUID+164, @CGUID+174, 3),
(@CGUID+136, @CGUID+136, 3),
(@CGUID+136, @CGUID+149, 3),
(@CGUID+136, @CGUID+145, 3),
(@CGUID+136, @CGUID+152, 3),
(@CGUID+136, @CGUID+155, 3),
(@CGUID+136, @CGUID+153, 3),
(@CGUID+136, @CGUID+144, 3),
(@CGUID+136, @CGUID+140, 3),
(@CGUID+136, @CGUID+137, 3),
(@CGUID+136, @CGUID+147, 3),
(@CGUID+141, @CGUID+141, 3),
(@CGUID+141, @CGUID+150, 3),
(@CGUID+141, @CGUID+154, 3),
(@CGUID+141, @CGUID+151, 3),
(@CGUID+141, @CGUID+146, 3),
(@CGUID+141, @CGUID+142, 3),
(@CGUID+141, @CGUID+148, 3),
(@CGUID+141, @CGUID+143, 3),
(@CGUID+141, @CGUID+138, 3),
(@CGUID+141, @CGUID+139, 3),
(@CGUID+211, @CGUID+211, 3),
(@CGUID+211, @CGUID+212, 3),
(@CGUID+213, @CGUID+213, 3),
(@CGUID+213, @CGUID+214, 3),
(@CGUID+213, @CGUID+215, 3),
(@CGUID+213, @CGUID+216, 3),
(@CGUID+217, @CGUID+217, 3),
(@CGUID+217, @CGUID+218, 3),
(@CGUID+217, @CGUID+219, 3),
(@CGUID+217, @CGUID+220, 3),
(@CGUID+221, @CGUID+221, 3),
(@CGUID+221, @CGUID+222, 3),
(@CGUID+221, @CGUID+223, 3),
(@CGUID+221, @CGUID+224, 3),
(@CGUID+206, @CGUID+206, 3),
(@CGUID+206, @CGUID+207, 3),
(@CGUID+206, @CGUID+208, 3),
(@CGUID+26, @CGUID+26, 3),
(@CGUID+26, @CGUID+191, 3),
(@CGUID+26, @CGUID+195, 3),
(@CGUID+26, @CGUID+85, 3);
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
(@CGUID+50, @CGUID+50, 0, 0, 3),
(@CGUID+50, @CGUID+70, 0, 0, 3),
(@CGUID+50, @CGUID+71, 0, 0, 3),
(@CGUID+52, @CGUID+52, 0, 0, 3),
(@CGUID+52, @CGUID+73, 0, 0, 3),
(@CGUID+89, @CGUID+89, 0, 0, 3),
(@CGUID+89, @CGUID+99, 0, 0, 3),
(@CGUID+89, @CGUID+97, 0, 0, 3),
(@CGUID+89, @CGUID+96, 0, 0, 3),
(@CGUID+89, @CGUID+95, 0, 0, 3),
(@CGUID+89, @CGUID+93, 0, 0, 3),
(@CGUID+68, @CGUID+68, 0, 0, 3),
(@CGUID+68, @CGUID+69, 0, 0, 3),
(@CGUID+66, @CGUID+66, 0, 0, 3),
(@CGUID+66, @CGUID+47, 0, 0, 3),
(@CGUID+66, @CGUID+46, 0, 0, 3),
(@CGUID+43, @CGUID+43, 0, 0, 3),
(@CGUID+43, @CGUID+64, 0, 0, 3),
(@CGUID+45, @CGUID+45, 0, 0, 3),
(@CGUID+45, @CGUID+65, 0, 0, 3),
(@CGUID+39, @CGUID+39, 0, 0, 3),
(@CGUID+39, @CGUID+88, 0, 0, 3),
(@CGUID+39, @CGUID+94, 0, 0, 3),
(@CGUID+39, @CGUID+60, 0, 0, 3),
(@CGUID+58, @CGUID+58, 0, 0, 3),
(@CGUID+58, @CGUID+37, 0, 0, 3),
(@CGUID+58, @CGUID+38, 0, 0, 3),
(@CGUID+116, @CGUID+116, 0, 0, 3),
(@CGUID+116, @CGUID+114, 0, 0, 3),
(@CGUID+116, @CGUID+117, 0, 0, 3),
(@CGUID+116, @CGUID+231, 0, 0, 3),
(@CGUID+121, @CGUID+121, 0, 0, 3),
(@CGUID+121, @CGUID+119, 0, 0, 3),
(@CGUID+121, @CGUID+120, 0, 0, 3),
(@CGUID+121, @CGUID+233, 0, 0, 3),
(@CGUID+113, @CGUID+113, 0, 0, 3),
(@CGUID+113, @CGUID+118, 0, 0, 3),
(@CGUID+113, @CGUID+115, 0, 0, 3),
(@CGUID+113, @CGUID+230, 0, 0, 3),
(@CGUID+122, @CGUID+122, 0, 0, 3),
(@CGUID+122, @CGUID+124, 0, 0, 3),
(@CGUID+122, @CGUID+123, 0, 0, 3),
(@CGUID+122, @CGUID+234, 0, 0, 3),
(@CGUID+125, @CGUID+125, 0, 0, 3),
(@CGUID+125, @CGUID+127, 0, 0, 3),
(@CGUID+125, @CGUID+128, 0, 0, 3),
(@CGUID+125, @CGUID+235, 0, 0, 3),
(@CGUID+126, @CGUID+126, 0, 0, 3),
(@CGUID+126, @CGUID+129, 0, 0, 3),
(@CGUID+126, @CGUID+130, 0, 0, 3),
(@CGUID+126, @CGUID+232, 0, 0, 3),
(@CGUID+44, @CGUID+44, 0, 0, 3),
(@CGUID+44, @CGUID+79, 0, 0, 3),
(@CGUID+44, @CGUID+63, 0, 0, 3),
(@CGUID+44, @CGUID+31, 0, 0, 3),
(@CGUID+80, @CGUID+80, 0, 0, 3),
(@CGUID+80, @CGUID+41, 0, 0, 3),
(@CGUID+80, @CGUID+62, 0, 0, 3),
(@CGUID+80, @CGUID+42, 0, 0, 3),
(@CGUID+80, @CGUID+32, 0, 0, 3),
(@CGUID+81, @CGUID+81, 0, 0, 3),
(@CGUID+81, @CGUID+49, 0, 0, 3),
(@CGUID+81, @CGUID+33, 0, 0, 3),
(@CGUID+81, @CGUID+48, 0, 0, 3),
(@CGUID+81, @CGUID+67, 0, 0, 3),
(@CGUID+34, @CGUID+34, 0, 0, 3),
(@CGUID+34, @CGUID+82, 0, 0, 3),
(@CGUID+34, @CGUID+72, 0, 0, 3),
(@CGUID+34, @CGUID+51, 0, 0, 3),
(@CGUID+34, @CGUID+102, 0, 0, 3),
(@CGUID+34, @CGUID+92, 0, 0, 3),
(@CGUID+53, @CGUID+53, 0, 0, 3),
(@CGUID+53, @CGUID+35, 0, 0, 3),
(@CGUID+91, @CGUID+91, 0, 0, 3),
(@CGUID+91, @CGUID+101, 0, 0, 3),
(@CGUID+91, @CGUID+40, 0, 0, 3),
(@CGUID+91, @CGUID+78, 0, 0, 3),
(@CGUID+91, @CGUID+61, 0, 0, 3),
(@CGUID+91, @CGUID+30, 0, 0, 3),
(@CGUID+29, @CGUID+29, 0, 0, 3),
(@CGUID+29, @CGUID+57, 0, 0, 3),
(@CGUID+186, @CGUID+186, 0, 0, 3),
(@CGUID+186, @CGUID+188, 0, 0, 3),
(@CGUID+186, @CGUID+187, 0, 0, 3),
(@CGUID+186, @CGUID+185, 0, 0, 3),
(@CGUID+36, @CGUID+36, 0, 0, 3),
(@CGUID+36, @CGUID+55, 0, 0, 3),
(@CGUID+36, @CGUID+56, 0, 0, 3),
(@CGUID+28, @CGUID+28, 0, 0, 3),
(@CGUID+28, @CGUID+54, 0, 0, 3),
(@CGUID+183, @CGUID+183, 0, 0, 3),
(@CGUID+183, @CGUID+181, 0, 0, 3),
(@CGUID+183, @CGUID+182, 0, 0, 3),
(@CGUID+183, @CGUID+180, 0, 0, 3),
(@CGUID+159, @CGUID+159, 0, 0, 3),
(@CGUID+159, @CGUID+158, 0, 0, 3),
(@CGUID+159, @CGUID+161, 0, 0, 3),
(@CGUID+159, @CGUID+165, 0, 0, 3),
(@CGUID+159, @CGUID+166, 0, 0, 3),
(@CGUID+159, @CGUID+177, 0, 0, 3),
(@CGUID+159, @CGUID+172, 0, 0, 3),
(@CGUID+159, @CGUID+176, 0, 0, 3),
(@CGUID+159, @CGUID+168, 0, 0, 3),
(@CGUID+159, @CGUID+160, 0, 0, 3),
(@CGUID+164, @CGUID+164, 0, 0, 3),
(@CGUID+164, @CGUID+163, 0, 0, 3),
(@CGUID+164, @CGUID+162, 0, 0, 3),
(@CGUID+164, @CGUID+167, 0, 0, 3),
(@CGUID+164, @CGUID+169, 0, 0, 3),
(@CGUID+164, @CGUID+175, 0, 0, 3),
(@CGUID+164, @CGUID+173, 0, 0, 3),
(@CGUID+164, @CGUID+170, 0, 0, 3),
(@CGUID+164, @CGUID+171, 0, 0, 3),
(@CGUID+164, @CGUID+174, 0, 0, 3),
(@CGUID+136, @CGUID+136, 0, 0, 3),
(@CGUID+136, @CGUID+149, 0, 0, 3),
(@CGUID+136, @CGUID+145, 0, 0, 3),
(@CGUID+136, @CGUID+152, 0, 0, 3),
(@CGUID+136, @CGUID+155, 0, 0, 3),
(@CGUID+136, @CGUID+153, 0, 0, 3),
(@CGUID+136, @CGUID+144, 0, 0, 3),
(@CGUID+136, @CGUID+140, 0, 0, 3),
(@CGUID+136, @CGUID+137, 0, 0, 3),
(@CGUID+136, @CGUID+147, 0, 0, 3),
(@CGUID+141, @CGUID+141, 0, 0, 3),
(@CGUID+141, @CGUID+150, 0, 0, 3),
(@CGUID+141, @CGUID+154, 0, 0, 3),
(@CGUID+141, @CGUID+151, 0, 0, 3),
(@CGUID+141, @CGUID+146, 0, 0, 3),
(@CGUID+141, @CGUID+142, 0, 0, 3),
(@CGUID+141, @CGUID+148, 0, 0, 3),
(@CGUID+141, @CGUID+143, 0, 0, 3),
(@CGUID+141, @CGUID+138, 0, 0, 3),
(@CGUID+141, @CGUID+139, 0, 0, 3),
(@CGUID+211, @CGUID+211, 0, 0, 3),
(@CGUID+211, @CGUID+212, 0, 0, 3),
(@CGUID+213, @CGUID+213, 0, 0, 3),
(@CGUID+213, @CGUID+214, 0, 0, 3),
(@CGUID+213, @CGUID+215, 0, 0, 3),
(@CGUID+213, @CGUID+216, 0, 0, 3),
(@CGUID+217, @CGUID+217, 0, 0, 3),
(@CGUID+217, @CGUID+218, 0, 0, 3),
(@CGUID+217, @CGUID+219, 0, 0, 3),
(@CGUID+217, @CGUID+220, 0, 0, 3),
(@CGUID+221, @CGUID+221, 0, 0, 3),
(@CGUID+221, @CGUID+222, 0, 0, 3),
(@CGUID+221, @CGUID+223, 0, 0, 3),
(@CGUID+221, @CGUID+224, 0, 0, 3),
(@CGUID+206, @CGUID+206, 0, 0, 3),
(@CGUID+206, @CGUID+207, 0, 0, 3),
(@CGUID+206, @CGUID+208, 0, 0, 3),
(@CGUID+26, @CGUID+26, 0, 0, 3),
(@CGUID+26, @CGUID+191, 0, 0, 3),
(@CGUID+26, @CGUID+195, 0, 0, 3),
(@CGUID+26, @CGUID+85, 0, 0, 3);
-- Linked Respawn for the respawning creatures in Murmur's Room
DELETE FROM `linked_respawn` WHERE `guid` IN (@CGUID+225, @CGUID+226, @CGUID+227, @CGUID+228, @CGUID+229) AND `linkType`=0;
+87 -87
View File
@@ -1395,90 +1395,90 @@ INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`,
(@CGUID+180, @CGUID+182, 3, 270, 515);
DELETE FROM `creature_formations` WHERE `memberGUID` IN (@CGUID+006,@CGUID+007,@CGUID+010,@CGUID+011,@CGUID+012,@CGUID+013,@CGUID+014,@CGUID+015,@CGUID+016,@CGUID+017,@CGUID+018,@CGUID+008,@CGUID+009,@CGUID+019,@CGUID+023,@CGUID+021,@CGUID+022,@CGUID+020,@CGUID+024,@CGUID+027,@CGUID+025,@CGUID+028,@CGUID+026,@CGUID+029,@CGUID+032,@CGUID+030,@CGUID+033,@CGUID+031,@CGUID+034,@CGUID+035,@CGUID+036,@CGUID+037,@CGUID+038,@CGUID+039,@CGUID+040,@CGUID+041,@CGUID+094,@CGUID+095,@CGUID+096,@CGUID+097,@CGUID+121,@CGUID+122,@CGUID+123,@CGUID+124,@CGUID+131,@CGUID+134,@CGUID+132,@CGUID+135,@CGUID+133,@CGUID+136,@CGUID+137,@CGUID+138,@CGUID+139,@CGUID+140,@CGUID+141,@CGUID+142,@CGUID+175,@CGUID+176,@CGUID+177,@CGUID+178,@CGUID+183,@CGUID+184,@CGUID+192,@CGUID+193,@CGUID+046,@CGUID+047,@CGUID+048,@CGUID+148,@CGUID+149,@CGUID+150,@CGUID+151,@CGUID+152,@CGUID+143,@CGUID+144,@CGUID+145,@CGUID+147,@CGUID+146,@CGUID+153,@CGUID+155,@CGUID+157,@CGUID+154,@CGUID+156,@CGUID+158,@CGUID+159,@CGUID+160,@CGUID+161,@CGUID+162);
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `groupAI`) VALUES
(@CGUID+006,@CGUID+006,3),
(@CGUID+007,@CGUID+006,3),
(@CGUID+011,@CGUID+011,3),
(@CGUID+012,@CGUID+011,3),
(@CGUID+013,@CGUID+013,3),
(@CGUID+014,@CGUID+013,3),
(@CGUID+015,@CGUID+015,3),
(@CGUID+016,@CGUID+015,3),
(@CGUID+017,@CGUID+017,3),
(@CGUID+018,@CGUID+017,3),
(@CGUID+008,@CGUID+008,3),
(@CGUID+009,@CGUID+008,3),
(@CGUID+019,@CGUID+019,3),
(@CGUID+023,@CGUID+019,3),
(@CGUID+021,@CGUID+019,3),
(@CGUID+022,@CGUID+019,3),
(@CGUID+020,@CGUID+019,3),
(@CGUID+024,@CGUID+024,3),
(@CGUID+027,@CGUID+024,3),
(@CGUID+025,@CGUID+024,3),
(@CGUID+028,@CGUID+024,3),
(@CGUID+026,@CGUID+024,3),
(@CGUID+029,@CGUID+029,3),
(@CGUID+032,@CGUID+029,3),
(@CGUID+030,@CGUID+029,3),
(@CGUID+033,@CGUID+029,3),
(@CGUID+031,@CGUID+029,3),
(@CGUID+034,@CGUID+029,3),
(@CGUID+035,@CGUID+035,3),
(@CGUID+036,@CGUID+035,3),
(@CGUID+037,@CGUID+035,3),
(@CGUID+038,@CGUID+035,3),
(@CGUID+039,@CGUID+035,3),
(@CGUID+040,@CGUID+035,3),
(@CGUID+041,@CGUID+035,3),
(@CGUID+094,@CGUID+094,3),
(@CGUID+095,@CGUID+094,3),
(@CGUID+096,@CGUID+094,3),
(@CGUID+097,@CGUID+094,3),
(@CGUID+121,@CGUID+121,3),
(@CGUID+122,@CGUID+121,3),
(@CGUID+123,@CGUID+121,3),
(@CGUID+124,@CGUID+121,3),
(@CGUID+131,@CGUID+131,3),
(@CGUID+134,@CGUID+131,3),
(@CGUID+132,@CGUID+131,3),
(@CGUID+135,@CGUID+131,3),
(@CGUID+133,@CGUID+131,3),
(@CGUID+136,@CGUID+131,3),
(@CGUID+137,@CGUID+137,3),
(@CGUID+138,@CGUID+137,3),
(@CGUID+139,@CGUID+137,3),
(@CGUID+140,@CGUID+137,3),
(@CGUID+141,@CGUID+137,3),
(@CGUID+142,@CGUID+137,3),
(@CGUID+175,@CGUID+175,3),
(@CGUID+176,@CGUID+175,3),
(@CGUID+177,@CGUID+177,3),
(@CGUID+178,@CGUID+177,3),
(@CGUID+183,@CGUID+183,3),
(@CGUID+184,@CGUID+183,3),
(@CGUID+192,@CGUID+192,3),
(@CGUID+193,@CGUID+192,3),
(@CGUID+046,@CGUID+046,3),
(@CGUID+047,@CGUID+046,3),
(@CGUID+048,@CGUID+046,3),
(@CGUID+148,@CGUID+148,3),
(@CGUID+149,@CGUID+148,3),
(@CGUID+150,@CGUID+148,3),
(@CGUID+151,@CGUID+148,3),
(@CGUID+152,@CGUID+148,3),
(@CGUID+143,@CGUID+143,3),
(@CGUID+144,@CGUID+143,3),
(@CGUID+145,@CGUID+143,3),
(@CGUID+147,@CGUID+143,3),
(@CGUID+146,@CGUID+143,3),
(@CGUID+153,@CGUID+153,3),
(@CGUID+155,@CGUID+153,3),
(@CGUID+157,@CGUID+153,3),
(@CGUID+154,@CGUID+153,3),
(@CGUID+156,@CGUID+153,3),
(@CGUID+158,@CGUID+158,3),
(@CGUID+159,@CGUID+158,3),
(@CGUID+160,@CGUID+158,3),
(@CGUID+161,@CGUID+158,3),
(@CGUID+162,@CGUID+158,3);
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `dist`, `angle`, `groupAI`) VALUES
(@CGUID+006, @CGUID+006, 0, 0, 3),
(@CGUID+007, @CGUID+006, 0, 0, 3),
(@CGUID+011, @CGUID+011, 0, 0, 3),
(@CGUID+012, @CGUID+011, 0, 0, 3),
(@CGUID+013, @CGUID+013, 0, 0, 3),
(@CGUID+014, @CGUID+013, 0, 0, 3),
(@CGUID+015, @CGUID+015, 0, 0, 3),
(@CGUID+016, @CGUID+015, 0, 0, 3),
(@CGUID+017, @CGUID+017, 0, 0, 3),
(@CGUID+018, @CGUID+017, 0, 0, 3),
(@CGUID+008, @CGUID+008, 0, 0, 3),
(@CGUID+009, @CGUID+008, 0, 0, 3),
(@CGUID+019, @CGUID+019, 0, 0, 3),
(@CGUID+023, @CGUID+019, 0, 0, 3),
(@CGUID+021, @CGUID+019, 0, 0, 3),
(@CGUID+022, @CGUID+019, 0, 0, 3),
(@CGUID+020, @CGUID+019, 0, 0, 3),
(@CGUID+024, @CGUID+024, 0, 0, 3),
(@CGUID+027, @CGUID+024, 0, 0, 3),
(@CGUID+025, @CGUID+024, 0, 0, 3),
(@CGUID+028, @CGUID+024, 0, 0, 3),
(@CGUID+026, @CGUID+024, 0, 0, 3),
(@CGUID+029, @CGUID+029, 0, 0, 3),
(@CGUID+032, @CGUID+029, 0, 0, 3),
(@CGUID+030, @CGUID+029, 0, 0, 3),
(@CGUID+033, @CGUID+029, 0, 0, 3),
(@CGUID+031, @CGUID+029, 0, 0, 3),
(@CGUID+034, @CGUID+029, 0, 0, 3),
(@CGUID+035, @CGUID+035, 0, 0, 3),
(@CGUID+036, @CGUID+035, 0, 0, 3),
(@CGUID+037, @CGUID+035, 0, 0, 3),
(@CGUID+038, @CGUID+035, 0, 0, 3),
(@CGUID+039, @CGUID+035, 0, 0, 3),
(@CGUID+040, @CGUID+035, 0, 0, 3),
(@CGUID+041, @CGUID+035, 0, 0, 3),
(@CGUID+094, @CGUID+094, 0, 0, 3),
(@CGUID+095, @CGUID+094, 0, 0, 3),
(@CGUID+096, @CGUID+094, 0, 0, 3),
(@CGUID+097, @CGUID+094, 0, 0, 3),
(@CGUID+121, @CGUID+121, 0, 0, 3),
(@CGUID+122, @CGUID+121, 0, 0, 3),
(@CGUID+123, @CGUID+121, 0, 0, 3),
(@CGUID+124, @CGUID+121, 0, 0, 3),
(@CGUID+131, @CGUID+131, 0, 0, 3),
(@CGUID+134, @CGUID+131, 0, 0, 3),
(@CGUID+132, @CGUID+131, 0, 0, 3),
(@CGUID+135, @CGUID+131, 0, 0, 3),
(@CGUID+133, @CGUID+131, 0, 0, 3),
(@CGUID+136, @CGUID+131, 0, 0, 3),
(@CGUID+137, @CGUID+137, 0, 0, 3),
(@CGUID+138, @CGUID+137, 0, 0, 3),
(@CGUID+139, @CGUID+137, 0, 0, 3),
(@CGUID+140, @CGUID+137, 0, 0, 3),
(@CGUID+141, @CGUID+137, 0, 0, 3),
(@CGUID+142, @CGUID+137, 0, 0, 3),
(@CGUID+175, @CGUID+175, 0, 0, 3),
(@CGUID+176, @CGUID+175, 0, 0, 3),
(@CGUID+177, @CGUID+177, 0, 0, 3),
(@CGUID+178, @CGUID+177, 0, 0, 3),
(@CGUID+183, @CGUID+183, 0, 0, 3),
(@CGUID+184, @CGUID+183, 0, 0, 3),
(@CGUID+192, @CGUID+192, 0, 0, 3),
(@CGUID+193, @CGUID+192, 0, 0, 3),
(@CGUID+046, @CGUID+046, 0, 0, 3),
(@CGUID+047, @CGUID+046, 0, 0, 3),
(@CGUID+048, @CGUID+046, 0, 0, 3),
(@CGUID+148, @CGUID+148, 0, 0, 3),
(@CGUID+149, @CGUID+148, 0, 0, 3),
(@CGUID+150, @CGUID+148, 0, 0, 3),
(@CGUID+151, @CGUID+148, 0, 0, 3),
(@CGUID+152, @CGUID+148, 0, 0, 3),
(@CGUID+143, @CGUID+143, 0, 0, 3),
(@CGUID+144, @CGUID+143, 0, 0, 3),
(@CGUID+145, @CGUID+143, 0, 0, 3),
(@CGUID+147, @CGUID+143, 0, 0, 3),
(@CGUID+146, @CGUID+143, 0, 0, 3),
(@CGUID+153, @CGUID+153, 0, 0, 3),
(@CGUID+155, @CGUID+153, 0, 0, 3),
(@CGUID+157, @CGUID+153, 0, 0, 3),
(@CGUID+154, @CGUID+153, 0, 0, 3),
(@CGUID+156, @CGUID+153, 0, 0, 3),
(@CGUID+158, @CGUID+158, 0, 0, 3),
(@CGUID+159, @CGUID+158, 0, 0, 3),
(@CGUID+160, @CGUID+158, 0, 0, 3),
(@CGUID+161, @CGUID+158, 0, 0, 3),
(@CGUID+162, @CGUID+158, 0, 0, 3);
@@ -0,0 +1,271 @@
#!/usr/bin/env python3
"""
Clamp VerifiedBuild literals to signed MEDIUMINT range for DBs that still use
MEDIUMINT on VerifiedBuild (see data/sql/old/db_world/8.x/2022_10_30_01.sql).
Processes INSERT (explicit column lists) and simple UPDATE ... VerifiedBuild = N.
"""
from __future__ import annotations
import re
import sys
from pathlib import Path
MAX_SIGNED_MEDIUMINT = 8388607
MIN_SIGNED_MEDIUMINT = -8388608
INSERT_RE = re.compile(
r"INSERT\s+INTO\s+`(?P<table>\w+)`\s*\((?P<cols>[^)]+)\)\s*VALUES\s*",
re.IGNORECASE,
)
# Base dumps: full row order ends with VerifiedBuild (6- or 8-column layouts).
INSERT_SPELL_TP_VALUES_RE = re.compile(
r"INSERT\s+INTO\s+`spell_target_position`\s*VALUES\s*",
re.IGNORECASE,
)
STMT_START = (
"INSERT ",
"DELETE ",
"UPDATE ",
"ALTER ",
"DROP ",
"CREATE ",
"SET ",
"REPLACE ",
)
def split_fields(inner: str) -> list[str]:
fields: list[str] = []
cur: list[str] = []
depth = 0
in_str = False
str_ch = ""
esc = False
for ch in inner:
if in_str:
cur.append(ch)
if esc:
esc = False
elif ch == "\\":
esc = True
elif ch == str_ch:
in_str = False
continue
if ch in "'\"":
in_str = True
str_ch = ch
cur.append(ch)
continue
if ch == "(":
depth += 1
elif ch == ")":
depth -= 1
if ch == "," and depth == 0:
fields.append("".join(cur).strip())
cur = []
else:
cur.append(ch)
fields.append("".join(cur).strip())
return fields
def join_fields(fields: list[str]) -> str:
return ", ".join(fields)
def clamp_tuple(tuple_str: str, vb_idx: int) -> str:
t = tuple_str.strip()
if not (t.startswith("(") and t.endswith(")")):
return tuple_str
fields = split_fields(t[1:-1])
if vb_idx >= len(fields):
return tuple_str
raw = fields[vb_idx].strip()
if not re.fullmatch(r"-?\d+", raw):
return tuple_str
n = int(raw)
if MIN_SIGNED_MEDIUMINT <= n <= MAX_SIGNED_MEDIUMINT:
return tuple_str
fields[vb_idx] = "0"
return "(" + join_fields(fields) + ")"
def process_value_segment(segment: str, vb_idx: int) -> tuple[str, int]:
out: list[str] = []
changes = 0
i, n = 0, len(segment)
while i < n:
if segment[i] == "(":
depth = 1
j = i + 1
while j < n and depth > 0:
if segment[j] == "(":
depth += 1
elif segment[j] == ")":
depth -= 1
j += 1
tup = segment[i:j]
new_tup = clamp_tuple(tup, vb_idx)
if new_tup != tup:
changes += 1
out.append(new_tup)
i = j
continue
out.append(segment[i])
i += 1
return "".join(out), changes
def clamp_update_verifiedbuild(line: str) -> tuple[str, int]:
changes = 0
def repl(m: re.Match[str]) -> str:
nonlocal changes
num = m.group(1)
n = int(num)
if MIN_SIGNED_MEDIUMINT <= n <= MAX_SIGNED_MEDIUMINT:
return m.group(0)
changes += 1
return f"`VerifiedBuild` = 0"
new_line = re.sub(
r"`VerifiedBuild`\s*=\s*([0-9]+)",
repl,
line,
flags=re.IGNORECASE,
)
return new_line, changes
def first_tuple_vb_index(segment: str) -> int | None:
i, n = 0, len(segment)
while i < n:
if segment[i] == "(":
depth = 1
j = i + 1
while j < n and depth > 0:
if segment[j] == "(":
depth += 1
elif segment[j] == ")":
depth -= 1
j += 1
tup = segment[i:j]
fields = split_fields(tup[1:-1])
if fields:
return len(fields) - 1
return None
i += 1
return None
def process_sql_text(text: str) -> tuple[str, int]:
lines = text.splitlines(keepends=True)
out: list[str] = []
mode: str | None = None
vb_idx = 0
total_changes = 0
for line in lines:
nl, ch = clamp_update_verifiedbuild(line)
total_changes += ch
line = nl
stripped = line.lstrip()
if mode == "insert_values":
if stripped and not stripped.startswith("(") and not stripped.startswith("--"):
if any(stripped.startswith(p) for p in STMT_START):
mode = None
if mode == "spell_tp_values":
if stripped and not stripped.startswith("(") and not stripped.startswith("--"):
if any(stripped.startswith(p) for p in STMT_START):
mode = None
if mode is None:
m = INSERT_RE.search(line)
if m and "`VerifiedBuild`" in m.group("cols"):
cols = [c.strip().strip("`") for c in m.group("cols").split(",")]
vb_idx = cols.index("VerifiedBuild")
mode = "insert_values"
prefix = line[: m.end()]
suffix = line[m.end() :]
if suffix.strip():
new_suf, ch2 = process_value_segment(suffix, vb_idx)
total_changes += ch2
line = prefix + new_suf
if ");" in line or line.rstrip().endswith(");"):
mode = None
out.append(line)
continue
m2 = INSERT_SPELL_TP_VALUES_RE.search(line)
if m2:
mode = "spell_tp_values"
vb_idx = -1
prefix = line[: m2.end()]
suffix = line[m2.end() :]
if suffix.strip():
vb_idx = first_tuple_vb_index(suffix)
if vb_idx is None:
vb_idx = 7
new_suf, ch2 = process_value_segment(suffix, vb_idx)
total_changes += ch2
line = prefix + new_suf
if ");" in line or line.rstrip().endswith(");"):
mode = None
out.append(line)
continue
out.append(line)
continue
if mode == "spell_tp_values":
if vb_idx < 0:
vb_idx = first_tuple_vb_index(line)
if vb_idx is None:
vb_idx = 7
new_line, ch3 = process_value_segment(line, vb_idx)
total_changes += ch3
out.append(new_line)
if ");" in line or line.rstrip().endswith(");"):
mode = None
continue
# insert_values continuation
new_line, ch3 = process_value_segment(line, vb_idx)
total_changes += ch3
out.append(new_line)
if ");" in line or line.rstrip().endswith(");"):
mode = None
return "".join(out), total_changes
def main() -> int:
sql_root = Path(__file__).resolve().parents[1]
roots = [
sql_root / "archive" / "db_world",
sql_root / "updates" / "db_world",
sql_root / "base" / "db_world",
]
file_count = 0
change_lines = 0
for root in roots:
if not root.exists():
continue
for path in sorted(root.glob("*.sql")):
text = path.read_text(encoding="utf-8", errors="strict")
new_text, ch = process_sql_text(text)
if ch:
path.write_text(new_text, encoding="utf-8")
change_lines += ch
file_count += 1
print(f"{path.relative_to(sql_root)}: {ch} change(s)")
print(f"Done. {file_count} file(s) written, {change_lines} change(s).")
return 0
if __name__ == "__main__":
sys.exit(main())
+10 -10
View File
@@ -31,15 +31,15 @@ INSERT INTO `creature` (`guid`, `id1`, `map`, `zoneId`, `areaId`, `spawnMask`, `
UPDATE `creature_template` SET `flags_extra` = `flags_extra`|33554432 WHERE `entry` IN (28732, 28733, 28734, 28731, 28730, 28729, 28684, 31612, 31616, 31615, 31617, 31608, 31605, 31606);
DELETE FROM `creature_formations` WHERE `leaderGUID` IN (12758, 12759, 12760);
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `groupAI`) VALUES
(12758, 12758, 11),
(12758, 12762, 11),
(12758, 12761, 11),
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
(12758, 12758, 0, 0, 11),
(12758, 12762, 0, 0, 11),
(12758, 12761, 0, 0, 11),
(12759, 12759, 11),
(12759, 12763, 11),
(12759, 12764, 11),
(12759, 12759, 0, 0, 11),
(12759, 12763, 0, 0, 11),
(12759, 12764, 0, 0, 11),
(12760, 12760, 11),
(12760, 12765, 11),
(12760, 12766, 11);
(12760, 12760, 0, 0, 11),
(12760, 12765, 0, 0, 11),
(12760, 12766, 0, 0, 11);
+34 -34
View File
@@ -19,37 +19,37 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_
(16505, 0, 3, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 0, 39, 15, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Naxxramas Follower - On Aggro - Call For Help');
DELETE FROM `creature_formations` WHERE `memberGUID` IN (127800, 127987, 127988, 127989, 127990, 127991, 127992, 127993, 127994, 127995, 127996, 127997, 127998, 127999, 128000, 128001, 128019, 128020, 128021, 128022, 128023, 128024, 128025, 128026, 128027, 128028, 128029, 128030, 128031, 128032, 128033, 128034, 128035);
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `groupAI`) VALUES
(127800, 127800, 1),
(127800, 127987, 1),
(127800, 127988, 1),
(127800, 127989, 1),
(127800, 127990, 1),
(127800, 127991, 1),
(127800, 127992, 1),
(127800, 127993, 1),
(127800, 127994, 1),
(127800, 127995, 1),
(127800, 127996, 1),
(127800, 127997, 1),
(127800, 127998, 1),
(127800, 127999, 1),
(127800, 128000, 1),
(127800, 128001, 1),
(127800, 128019, 1),
(127800, 128020, 1),
(127800, 128021, 1),
(127800, 128022, 1),
(127800, 128023, 1),
(127800, 128024, 1),
(127800, 128025, 1),
(127800, 128026, 1),
(127800, 128027, 1),
(127800, 128028, 1),
(127800, 128029, 1),
(127800, 128030, 1),
(127800, 128031, 1),
(127800, 128032, 1),
(127800, 128033, 1),
(127800, 128034, 1),
(127800, 128035, 1);
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
(127800, 127800, 0, 0, 1),
(127800, 127987, 0, 0, 1),
(127800, 127988, 0, 0, 1),
(127800, 127989, 0, 0, 1),
(127800, 127990, 0, 0, 1),
(127800, 127991, 0, 0, 1),
(127800, 127992, 0, 0, 1),
(127800, 127993, 0, 0, 1),
(127800, 127994, 0, 0, 1),
(127800, 127995, 0, 0, 1),
(127800, 127996, 0, 0, 1),
(127800, 127997, 0, 0, 1),
(127800, 127998, 0, 0, 1),
(127800, 127999, 0, 0, 1),
(127800, 128000, 0, 0, 1),
(127800, 128001, 0, 0, 1),
(127800, 128019, 0, 0, 1),
(127800, 128020, 0, 0, 1),
(127800, 128021, 0, 0, 1),
(127800, 128022, 0, 0, 1),
(127800, 128023, 0, 0, 1),
(127800, 128024, 0, 0, 1),
(127800, 128025, 0, 0, 1),
(127800, 128026, 0, 0, 1),
(127800, 128027, 0, 0, 1),
(127800, 128028, 0, 0, 1),
(127800, 128029, 0, 0, 1),
(127800, 128030, 0, 0, 1),
(127800, 128031, 0, 0, 1),
(127800, 128032, 0, 0, 1),
(127800, 128033, 0, 0, 1),
(127800, 128034, 0, 0, 1),
(127800, 128035, 0, 0, 1);
+10 -10
View File
@@ -1,16 +1,16 @@
-- DB update 2026_01_04_00 -> 2026_01_04_01
--
DELETE FROM `creature_formations` WHERE `leaderGUID` IN (12758, 12759, 12760);
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `groupAI`) VALUES
(12758, 12758, 7),
(12758, 12762, 7),
(12758, 12761, 7),
(12759, 12759, 7),
(12759, 12763, 7),
(12759, 12764, 7),
(12760, 12760, 7),
(12760, 12765, 7),
(12760, 12766, 7);
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
(12758, 12758, 0, 0, 7),
(12758, 12762, 0, 0, 7),
(12758, 12761, 0, 0, 7),
(12759, 12759, 0, 0, 7),
(12759, 12763, 0, 0, 7),
(12759, 12764, 0, 0, 7),
(12760, 12760, 0, 0, 7),
(12760, 12765, 0, 0, 7),
(12760, 12766, 0, 0, 7);
DELETE FROM `linked_respawn` WHERE `linkedGuid` = 127214 AND `linkType` = 0;
INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES
+35 -35
View File
@@ -2,41 +2,41 @@
-- Hellfire Peninsula - Pools of Aggonar ooze aggro linking
DELETE FROM `creature_formations` WHERE `leaderGUID` BETWEEN 58465 and 58497;
DELETE FROM `creature_formations` WHERE `leaderGUID` = 58786;
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `groupAI`) VALUES
(58465, 58465, 3), (58465, 58498, 3), (58465, 58499, 3),
(58466, 58466, 3), (58466, 58500, 3), (58466, 58504, 3),
(58467, 58467, 3), (58467, 58501, 3), (58467, 58503, 3),
(58468, 58468, 3), (58468, 58561, 3), (58468, 58562, 3),
(58469, 58469, 3), (58469, 58507, 3), (58469, 58508, 3),
(58470, 58470, 3), (58470, 58509, 3), (58470, 58510, 3),
(58471, 58471, 3), (58471, 58502, 3), (58471, 58787, 3),
(58786, 58786, 3), (58786, 58513, 3), (58786, 58514, 3),
(58472, 58472, 3), (58472, 58511, 3), (58472, 58512, 3),
(58473, 58473, 3), (58473, 58515, 3), (58473, 58516, 3),
(58474, 58474, 3), (58474, 58517, 3), (58474, 58518, 3),
(58475, 58475, 3), (58475, 58519, 3), (58475, 58520, 3),
(58476, 58476, 3), (58476, 58521, 3), (58476, 58522, 3),
(58477, 58477, 3), (58477, 58523, 3), (58477, 58524, 3),
(58478, 58478, 3), (58478, 58525, 3), (58478, 58526, 3),
(58479, 58479, 3), (58479, 58527, 3), (58479, 58528, 3),
(58480, 58480, 3), (58480, 58529, 3), (58480, 58530, 3),
(58481, 58481, 3), (58481, 58531, 3), (58481, 58532, 3),
(58482, 58482, 3), (58482, 58535, 3), (58482, 58536, 3),
(58483, 58483, 3), (58483, 58533, 3), (58483, 58534, 3),
(58484, 58484, 3), (58484, 58537, 3), (58484, 58538, 3),
(58485, 58485, 3), (58485, 58539, 3), (58485, 58540, 3),
(58486, 58486, 3), (58486, 58541, 3), (58486, 58542, 3),
(58487, 58487, 3), (58487, 58543, 3), (58487, 58544, 3),
(58488, 58488, 3), (58488, 58545, 3), (58488, 58546, 3),
(58489, 58489, 3), (58489, 58552, 3), (58489, 58553, 3),
(58490, 58490, 3), (58490, 58554, 3), (58490, 58547, 3),
(58491, 58491, 3), (58491, 58549, 3), (58491, 58548, 3),
(58492, 58492, 3), (58492, 58550, 3), (58492, 58551, 3),
(58493, 58493, 3), (58493, 58555, 3), (58493, 58556, 3),
(58494, 58494, 3), (58494, 58557, 3), (58494, 58558, 3),
(58495, 58495, 3), (58495, 58559, 3), (58495, 58560, 3),
(58496, 58496, 3), (58496, 58505, 3), (58496, 58506, 3),
(58497, 58497, 3), (58497, 58563, 3), (58497, 58564, 3);
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
(58465, 58465, 0, 0, 3), (58465, 58498, 0, 0, 3), (58465, 58499, 0, 0, 3),
(58466, 58466, 0, 0, 3), (58466, 58500, 0, 0, 3), (58466, 58504, 0, 0, 3),
(58467, 58467, 0, 0, 3), (58467, 58501, 0, 0, 3), (58467, 58503, 0, 0, 3),
(58468, 58468, 0, 0, 3), (58468, 58561, 0, 0, 3), (58468, 58562, 0, 0, 3),
(58469, 58469, 0, 0, 3), (58469, 58507, 0, 0, 3), (58469, 58508, 0, 0, 3),
(58470, 58470, 0, 0, 3), (58470, 58509, 0, 0, 3), (58470, 58510, 0, 0, 3),
(58471, 58471, 0, 0, 3), (58471, 58502, 0, 0, 3), (58471, 58787, 0, 0, 3),
(58786, 58786, 0, 0, 3), (58786, 58513, 0, 0, 3), (58786, 58514, 0, 0, 3),
(58472, 58472, 0, 0, 3), (58472, 58511, 0, 0, 3), (58472, 58512, 0, 0, 3),
(58473, 58473, 0, 0, 3), (58473, 58515, 0, 0, 3), (58473, 58516, 0, 0, 3),
(58474, 58474, 0, 0, 3), (58474, 58517, 0, 0, 3), (58474, 58518, 0, 0, 3),
(58475, 58475, 0, 0, 3), (58475, 58519, 0, 0, 3), (58475, 58520, 0, 0, 3),
(58476, 58476, 0, 0, 3), (58476, 58521, 0, 0, 3), (58476, 58522, 0, 0, 3),
(58477, 58477, 0, 0, 3), (58477, 58523, 0, 0, 3), (58477, 58524, 0, 0, 3),
(58478, 58478, 0, 0, 3), (58478, 58525, 0, 0, 3), (58478, 58526, 0, 0, 3),
(58479, 58479, 0, 0, 3), (58479, 58527, 0, 0, 3), (58479, 58528, 0, 0, 3),
(58480, 58480, 0, 0, 3), (58480, 58529, 0, 0, 3), (58480, 58530, 0, 0, 3),
(58481, 58481, 0, 0, 3), (58481, 58531, 0, 0, 3), (58481, 58532, 0, 0, 3),
(58482, 58482, 0, 0, 3), (58482, 58535, 0, 0, 3), (58482, 58536, 0, 0, 3),
(58483, 58483, 0, 0, 3), (58483, 58533, 0, 0, 3), (58483, 58534, 0, 0, 3),
(58484, 58484, 0, 0, 3), (58484, 58537, 0, 0, 3), (58484, 58538, 0, 0, 3),
(58485, 58485, 0, 0, 3), (58485, 58539, 0, 0, 3), (58485, 58540, 0, 0, 3),
(58486, 58486, 0, 0, 3), (58486, 58541, 0, 0, 3), (58486, 58542, 0, 0, 3),
(58487, 58487, 0, 0, 3), (58487, 58543, 0, 0, 3), (58487, 58544, 0, 0, 3),
(58488, 58488, 0, 0, 3), (58488, 58545, 0, 0, 3), (58488, 58546, 0, 0, 3),
(58489, 58489, 0, 0, 3), (58489, 58552, 0, 0, 3), (58489, 58553, 0, 0, 3),
(58490, 58490, 0, 0, 3), (58490, 58554, 0, 0, 3), (58490, 58547, 0, 0, 3),
(58491, 58491, 0, 0, 3), (58491, 58549, 0, 0, 3), (58491, 58548, 0, 0, 3),
(58492, 58492, 0, 0, 3), (58492, 58550, 0, 0, 3), (58492, 58551, 0, 0, 3),
(58493, 58493, 0, 0, 3), (58493, 58555, 0, 0, 3), (58493, 58556, 0, 0, 3),
(58494, 58494, 0, 0, 3), (58494, 58557, 0, 0, 3), (58494, 58558, 0, 0, 3),
(58495, 58495, 0, 0, 3), (58495, 58559, 0, 0, 3), (58495, 58560, 0, 0, 3),
(58496, 58496, 0, 0, 3), (58496, 58505, 0, 0, 3), (58496, 58506, 0, 0, 3),
(58497, 58497, 0, 0, 3), (58497, 58563, 0, 0, 3), (58497, 58564, 0, 0, 3);
-- Reposition oozes to be closer to group members
UPDATE `creature` SET `position_x`=381.658, `position_y`=3482.38, `position_z`=61.609, `orientation`=5.43889 WHERE `guid` = 58496 AND `id1` = 16901;
+21 -21
View File
@@ -392,27 +392,27 @@ INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES
(@GUID+28, (@GUID+28)*10);
DELETE FROM `creature_formations` WHERE `leaderGUID` IN (@GUID+32,@GUID+38,@GUID+41,@GUID+47,@GUID+16,@GUID+4,@GUID+9,@GUID+12,@GUID+2,@GUID+26);
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `groupAI`) VALUES
(@GUID+32, @GUID+32, 3),
(@GUID+32, @GUID+33, 3),
(@GUID+2, @GUID+2 , 3),
(@GUID+2, @GUID+3 , 3),
(@GUID+26, @GUID+26, 3),
(@GUID+26, @GUID+27, 3),
(@GUID+38, @GUID+38, 3),
(@GUID+38, @GUID+39, 3),
(@GUID+41, @GUID+41, 3),
(@GUID+41, @GUID+42, 3),
(@GUID+47, @GUID+47, 3),
(@GUID+47, @GUID+48, 3),
(@GUID+16, @GUID+16, 3),
(@GUID+16, @GUID+17, 3),
(@GUID+4, @GUID+4 , 3),
(@GUID+4, @GUID+5 , 3),
(@GUID+9, @GUID+9 , 3),
(@GUID+9, @GUID+10, 3),
(@GUID+12, @GUID+12, 3),
(@GUID+12, @GUID+13, 3);
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
(@GUID+32, @GUID+32, 0, 0, 3),
(@GUID+32, @GUID+33, 0, 0, 3),
(@GUID+2, @GUID+2, 0, 0, 3),
(@GUID+2, @GUID+3, 0, 0, 3),
(@GUID+26, @GUID+26, 0, 0, 3),
(@GUID+26, @GUID+27, 0, 0, 3),
(@GUID+38, @GUID+38, 0, 0, 3),
(@GUID+38, @GUID+39, 0, 0, 3),
(@GUID+41, @GUID+41, 0, 0, 3),
(@GUID+41, @GUID+42, 0, 0, 3),
(@GUID+47, @GUID+47, 0, 0, 3),
(@GUID+47, @GUID+48, 0, 0, 3),
(@GUID+16, @GUID+16, 0, 0, 3),
(@GUID+16, @GUID+17, 0, 0, 3),
(@GUID+4, @GUID+4, 0, 0, 3),
(@GUID+4, @GUID+5, 0, 0, 3),
(@GUID+9, @GUID+9, 0, 0, 3),
(@GUID+9, @GUID+10, 0, 0, 3),
(@GUID+12, @GUID+12, 0, 0, 3),
(@GUID+12, @GUID+13, 0, 0, 3);
DELETE FROM `creature_addon` WHERE `guid` IN (@GUID+32,@GUID+33,@GUID+2 ,@GUID+3 ,@GUID+26,@GUID+27,@GUID+38,@GUID+39,@GUID+41,@GUID+42,@GUID+47,@GUID+48,@GUID+16,@GUID+17,@GUID+4 ,@GUID+5 ,@GUID+9 ,@GUID+10,@GUID+12,@GUID+13);
INSERT INTO `creature_addon` (`guid`, `bytes1`) VALUES
+11
View File
@@ -30,3 +30,14 @@ Auto-detected by `modules/CMakeLists.txt` (`GetModuleSourceList` globs
every subdirectory). No additional CMake plumbing is needed; rebuild
the worldserver image and the loader symbol `Addmod_paragonScripts`
gets linked into the static `modules` target.
## SQL layout
SQL files live under `data/sql/db-world/base/` and
`data/sql/db-characters/base/` — the standard AzerothCore module path
that the built-in DBUpdater scans (see
`src/server/database/Updater/UpdateFetcher.cpp`). Files placed there
are applied automatically by `worldserver` / `dbimport` on startup and
recorded by hash in the `updates` table of the target database, so
re-runs are idempotent. Any new SQL added under those directories will
be picked up on the next container/server start without manual import.
+16 -1
View File
@@ -23,12 +23,27 @@ Paragon.Currency.GrantLevelMin = 10
Paragon.Currency.AE.PerLevel = 1
Paragon.Currency.TE.PerLevel = 1
# Flat TE cost per successful talent rank learn (hook runs once per LearnTalent).
# Applies to passive / aura-only talents (addToSpellBook == 0).
Paragon.Currency.TE.TalentLearnCost = 1
# AE cost per rank for addToSpellBook talents (Starfall, Bladestorm, …).
# Those talents also charge TE.TalentLearnCost per rank — each rank costs
# both essences at the configured amounts.
Paragon.Currency.AE.TalentLearnCost = 1
# Default AE cost when spell is not listed in world.paragon_spell_ae_cost.
Paragon.Currency.AE.DefaultSpellCost = 2
# (Phase 3a: every learnable spell baked into the Character Advancement panel
# has an explicit row of value 1 in that table, so this default only kicks in
# for spells learned via .paragon learn that aren't in the panel's bake.)
Paragon.Currency.AE.DefaultSpellCost = 1
# Diagnostics ----------------------------------------------------------------
# When enabled, dumps every Paragon's rune cooldown state to the server log
# every 5 seconds (channel "module"). Use with `.paragon runes` for in-game
# verification. Leave at 0 in production — it's noisy.
Paragon.Diag.RuneTrace = 0
# When enabled, traces every PanelLearnSpellChain commit: chain ids, before/
# after spell-map sizes for each rank learn, and the classification of every
# auto-granted side spell (chain rank / passive dep / active dep revoked).
# Use to diagnose "spell X reappears in spellbook on relog" style bugs.
# Leave at 0 in production.
Paragon.Diag.PanelLearn = 0
@@ -0,0 +1,51 @@
-- Spells and talents learned only through Character Advancement (Lock In / .paragon learn).
-- Apply to the character database (same as `characters`, `character_spell`, etc.).
CREATE TABLE IF NOT EXISTS `character_paragon_panel_spells` (
`guid` INT UNSIGNED NOT NULL COMMENT 'characters.guid',
`spell_id` INT UNSIGNED NOT NULL,
PRIMARY KEY (`guid`, `spell_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='mod-paragon: spells purchased via Character Advancement';
CREATE TABLE IF NOT EXISTS `character_paragon_panel_talents` (
`guid` INT UNSIGNED NOT NULL COMMENT 'characters.guid',
`talent_id` SMALLINT UNSIGNED NOT NULL,
`rank` TINYINT UNSIGNED NOT NULL,
PRIMARY KEY (`guid`, `talent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='mod-paragon: talent ranks purchased via Character Advancement';
-- Passive "dependent" spells that AzerothCore's `addSpell` machinery
-- (via spell_learn_spell + SPELL_EFFECT_LEARN_SPELL) auto-grants when a
-- panel-purchased spell is learned. We keep them learned (some are
-- required for the parent ability to function -- e.g. Frost Fever for
-- Icy Touch, Blood Plague for Plague Strike) but record them here so
-- Reset Abilities / Reset Everything can unlearn them alongside the
-- parent. Only passive auto-learns are tracked here; active dependents
-- (Death Coil, Death Grip, ...) are revoked at learn time and never
-- reach this table.
CREATE TABLE IF NOT EXISTS `character_paragon_panel_spell_children` (
`guid` INT UNSIGNED NOT NULL COMMENT 'characters.guid',
`parent_spell_id` INT UNSIGNED NOT NULL COMMENT 'character_paragon_panel_spells.spell_id',
`child_spell_id` INT UNSIGNED NOT NULL COMMENT 'auto-learned passive spell id',
PRIMARY KEY (`guid`, `parent_spell_id`, `child_spell_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='mod-paragon: passive auto-learn dependents to unlearn on reset';
-- Active "dependent" spells that AzerothCore's `addSpell` /
-- `learnSkillRewardedSpells` machinery auto-grants alongside a
-- panel-purchased spell but that the player did NOT buy (e.g. Blood
-- Presence, Death Coil, Death Grip from purchasing Plague Strike).
-- We revoke them at panel-commit time, but AC's skill cascade re-runs
-- on every login (`Player::_LoadSkills` -> `learnSkillRewardedSpells`)
-- and silently re-grants them. We persist the revoke decisions here
-- and re-revoke at `OnPlayerLogin` so the spellbook stays in sync with
-- what the player actually purchased through Character Advancement.
CREATE TABLE IF NOT EXISTS `character_paragon_panel_spell_revoked` (
`guid` INT UNSIGNED NOT NULL COMMENT 'characters.guid',
`parent_spell_id` INT UNSIGNED NOT NULL COMMENT 'character_paragon_panel_spells.spell_id',
`revoked_spell_id` INT UNSIGNED NOT NULL COMMENT 'active spell id auto-granted by skill cascade and revoked',
PRIMARY KEY (`guid`, `parent_spell_id`, `revoked_spell_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='mod-paragon: active auto-learn dependents to keep revoked across logins';
@@ -0,0 +1,20 @@
-- mod-paragon: tracking table for active spell dependents the panel
-- revoked at commit time. AzerothCore's `Player::_LoadSkills` ->
-- `learnSkillRewardedSpells` re-grants skill-rewarded actives (Blood
-- Presence, Death Coil, Death Grip, ...) on every login. Persisting
-- the revoke decisions here lets `OnPlayerLogin` re-revoke them after
-- the cascade has run, so the spellbook stays in sync with what was
-- actually purchased through Character Advancement.
--
-- This file lives under `updates/` so AC's DBUpdater applies it
-- incrementally on existing databases (the matching `CREATE TABLE
-- IF NOT EXISTS` block in base/character_paragon_panel_learned.sql
-- handles fresh installs).
CREATE TABLE IF NOT EXISTS `character_paragon_panel_spell_revoked` (
`guid` INT UNSIGNED NOT NULL COMMENT 'characters.guid',
`parent_spell_id` INT UNSIGNED NOT NULL COMMENT 'character_paragon_panel_spells.spell_id',
`revoked_spell_id` INT UNSIGNED NOT NULL COMMENT 'active spell id auto-granted by skill cascade and revoked',
PRIMARY KEY (`guid`, `parent_spell_id`, `revoked_spell_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='mod-paragon: active auto-learn dependents to keep revoked across logins';
@@ -0,0 +1,446 @@
-- Per-spell AE costs for Paragon spell purchases (.paragon learn / panel Lock In).
-- Auto-generated by tools/_gen_paragon_spell_ae_cost_sql.py.
-- Apply to the *world* database (AzerothCore's SQL updater handles this on worldserver start).
-- The flat 1-AE cost is a Phase 3 placeholder; tune individual rows here as the
-- economy gets balanced (e.g., 5 AE for top-rank baseline like Cyclone).
CREATE TABLE IF NOT EXISTS `paragon_spell_ae_cost` (
`spell_id` INT UNSIGNED NOT NULL,
`ae_cost` SMALLINT UNSIGNED NOT NULL DEFAULT '1',
PRIMARY KEY (`spell_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='mod-paragon: AE cost per spell';
-- Bulk-load: replace the entire table with the current bake. Manual edits
-- to specific rows will be lost when this script regenerates the file --
-- track per-spell tuning in a separate INSERT ... ON DUPLICATE KEY UPDATE
-- file (e.g. paragon_spell_ae_cost_overrides.sql) if needed.
DELETE FROM `paragon_spell_ae_cost`;
INSERT INTO `paragon_spell_ae_cost` (`spell_id`, `ae_cost`) VALUES
(10, 1),
(17, 1),
(53, 1),
(72, 1),
(75, 1),
(78, 1),
(99, 1),
(100, 1),
(116, 1),
(118, 1),
(120, 1),
(122, 1),
(130, 1),
(131, 1),
(132, 1),
(133, 1),
(136, 1),
(139, 1),
(168, 1),
(172, 1),
(324, 1),
(331, 1),
(339, 1),
(348, 1),
(370, 1),
(403, 1),
(408, 1),
(421, 1),
(453, 1),
(465, 1),
(467, 1),
(469, 1),
(475, 1),
(498, 1),
(527, 1),
(528, 1),
(543, 1),
(546, 1),
(552, 1),
(556, 1),
(585, 1),
(586, 1),
(587, 1),
(588, 1),
(589, 1),
(596, 1),
(603, 1),
(604, 1),
(605, 1),
(633, 1),
(635, 1),
(642, 1),
(676, 1),
(686, 1),
(687, 1),
(689, 1),
(693, 1),
(694, 1),
(698, 1),
(702, 1),
(703, 1),
(706, 1),
(710, 1),
(740, 1),
(755, 1),
(759, 1),
(770, 1),
(772, 1),
(774, 1),
(779, 1),
(781, 1),
(845, 1),
(853, 1),
(871, 1),
(879, 1),
(883, 1),
(921, 1),
(976, 1),
(980, 1),
(982, 1),
(1002, 1),
(1008, 1),
(1022, 1),
(1038, 1),
(1044, 1),
(1064, 1),
(1079, 1),
(1082, 1),
(1098, 1),
(1120, 1),
(1126, 1),
(1130, 1),
(1152, 1),
(1160, 1),
(1161, 1),
(1243, 1),
(1449, 1),
(1454, 1),
(1459, 1),
(1462, 1),
(1463, 1),
(1464, 1),
(1490, 1),
(1494, 1),
(1495, 1),
(1499, 1),
(1510, 1),
(1513, 1),
(1515, 1),
(1535, 1),
(1543, 1),
(1680, 1),
(1706, 1),
(1714, 1),
(1715, 1),
(1719, 1),
(1725, 1),
(1752, 1),
(1766, 1),
(1776, 1),
(1784, 1),
(1822, 1),
(1833, 1),
(1842, 1),
(1850, 1),
(1856, 1),
(1943, 1),
(1949, 1),
(1953, 1),
(1966, 1),
(1978, 1),
(2006, 1),
(2008, 1),
(2050, 1),
(2054, 1),
(2060, 1),
(2061, 1),
(2062, 1),
(2094, 1),
(2096, 1),
(2098, 1),
(2120, 1),
(2136, 1),
(2139, 1),
(2362, 1),
(2457, 1),
(2458, 1),
(2484, 1),
(2565, 1),
(2637, 1),
(2641, 1),
(2643, 1),
(2645, 1),
(2687, 1),
(2782, 1),
(2812, 1),
(2825, 1),
(2893, 1),
(2908, 1),
(2912, 1),
(2944, 1),
(2948, 1),
(2973, 1),
(2974, 1),
(2983, 1),
(3034, 1),
(3043, 1),
(3044, 1),
(3045, 1),
(3411, 1),
(3561, 1),
(3562, 1),
(3563, 1),
(3565, 1),
(3566, 1),
(3567, 1),
(3738, 1),
(4987, 1),
(5116, 1),
(5118, 1),
(5138, 1),
(5143, 1),
(5171, 1),
(5176, 1),
(5185, 1),
(5209, 1),
(5211, 1),
(5215, 1),
(5217, 1),
(5221, 1),
(5225, 1),
(5229, 1),
(5246, 1),
(5277, 1),
(5308, 1),
(5384, 1),
(5484, 1),
(5500, 1),
(5502, 1),
(5504, 1);
INSERT INTO `paragon_spell_ae_cost` (`spell_id`, `ae_cost`) VALUES
(5675, 1),
(5676, 1),
(5697, 1),
(5730, 1),
(5740, 1),
(5782, 1),
(5938, 1),
(6117, 1),
(6143, 1),
(6196, 1),
(6197, 1),
(6201, 1),
(6229, 1),
(6343, 1),
(6346, 1),
(6353, 1),
(6366, 1),
(6495, 1),
(6552, 1),
(6572, 1),
(6673, 1),
(6770, 1),
(6785, 1),
(6789, 1),
(6940, 1),
(7294, 1),
(7302, 1),
(7384, 1),
(8004, 1),
(8017, 1),
(8024, 1),
(8033, 1),
(8042, 1),
(8050, 1),
(8056, 1),
(8075, 1),
(8092, 1),
(8122, 1),
(8129, 1),
(8143, 1),
(8170, 1),
(8177, 1),
(8181, 1),
(8184, 1),
(8190, 1),
(8227, 1),
(8232, 1),
(8512, 1),
(8647, 1),
(8676, 1),
(8921, 1),
(8936, 1),
(8998, 1),
(9005, 1),
(9484, 1),
(10059, 1),
(10326, 1),
(10595, 1),
(11416, 1),
(11417, 1),
(11418, 1),
(11419, 1),
(11420, 1),
(13159, 1),
(13161, 1),
(13163, 1),
(13165, 1),
(13795, 1),
(13809, 1),
(13813, 1),
(14752, 1),
(14914, 1),
(15237, 1),
(16689, 1),
(16857, 1),
(16914, 1),
(18499, 1),
(19740, 1),
(19742, 1),
(19746, 1),
(19750, 1),
(19752, 1),
(19801, 1),
(19876, 1),
(19878, 1),
(19879, 1),
(19880, 1),
(19882, 1),
(19883, 1),
(19884, 1),
(19885, 1),
(19888, 1),
(19891, 1),
(20043, 1),
(20154, 1),
(20164, 1),
(20165, 1),
(20166, 1),
(20217, 1),
(20230, 1),
(20252, 1),
(20484, 1),
(20736, 1),
(21084, 1),
(21562, 1),
(21849, 1),
(22568, 1),
(22570, 1),
(22812, 1),
(22842, 1),
(23028, 1),
(23920, 1),
(23922, 1),
(24275, 1),
(25780, 1),
(25782, 1),
(25894, 1),
(25898, 1),
(25899, 1),
(26573, 1),
(26679, 1),
(27243, 1),
(27681, 1),
(27683, 1),
(28176, 1),
(29166, 1),
(29722, 1),
(29858, 1),
(29893, 1),
(30451, 1),
(30455, 1),
(30482, 1),
(31224, 1),
(31789, 1),
(31801, 1),
(31884, 1),
(32182, 1),
(32223, 1),
(32266, 1),
(32267, 1),
(32271, 1),
(32272, 1),
(32375, 1),
(32379, 1),
(32546, 1),
(32645, 1),
(33076, 1),
(33690, 1),
(33691, 1),
(33745, 1),
(33763, 1),
(33786, 1),
(34026, 1),
(34074, 1),
(34428, 1),
(34433, 1),
(34477, 1),
(34600, 1),
(35715, 1),
(35717, 1),
(36936, 1),
(42650, 1),
(42955, 1),
(43265, 1),
(43987, 1),
(44614, 1),
(45438, 1),
(45462, 1),
(45477, 1),
(45524, 1),
(45529, 1),
(45902, 1),
(46584, 1),
(47476, 1),
(47528, 1),
(47541, 1),
(47568, 1),
(47897, 1),
(48018, 1),
(48020, 1),
(48045, 1),
(48263, 1),
(48265, 1),
(48266, 1),
(48707, 1),
(48721, 1),
(48743, 1),
(48792, 1),
(49020, 1),
(49358, 1),
(49359, 1),
(49360, 1),
(49361, 1),
(49576, 1),
(49998, 1),
(50464, 1),
(50842, 1),
(51722, 1),
(51723, 1),
(52610, 1);
INSERT INTO `paragon_spell_ae_cost` (`spell_id`, `ae_cost`) VALUES
(53140, 1),
(53142, 1),
(53407, 1),
(53408, 1),
(53600, 1),
(53601, 1),
(53736, 1),
(54428, 1),
(55342, 1),
(55694, 1),
(56641, 1),
(57755, 1),
(57934, 1),
(57994, 1),
(60192, 1),
(61846, 1),
(62078, 1),
(62124, 1),
(62757, 1),
(64382, 1),
(64843, 1);
@@ -1,11 +0,0 @@
-- Optional per-spell AE costs for Paragon spell purchases (.paragon learn).
-- Apply to the *world* database.
CREATE TABLE IF NOT EXISTS `paragon_spell_ae_cost` (
`spell_id` INT UNSIGNED NOT NULL,
`ae_cost` SMALLINT UNSIGNED NOT NULL DEFAULT '2',
PRIMARY KEY (`spell_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='mod-paragon: AE cost per spell';
-- Example (uncomment to use):
-- INSERT INTO `paragon_spell_ae_cost` (`spell_id`, `ae_cost`) VALUES (55050, 2);
File diff suppressed because it is too large Load Diff
+51 -4
View File
@@ -5,15 +5,20 @@
* so Paragon can reuse other classes' mechanics in narrowly scoped contexts.
*/
#include "Chat.h"
#include "Config.h"
#include "GameTime.h"
#include "Log.h"
#include "ObjectGuid.h"
#include "Player.h"
#include "ScriptMgr.h"
#include "SharedDefines.h"
#include "UnitDefines.h"
#include "Config.h"
#include "Log.h"
#include "GameTime.h"
#include "ObjectGuid.h"
#include "WorldPacket.h"
#include "WorldSession.h"
#include <fmt/format.h>
#include <string>
#include <unordered_map>
class Paragon_PlayerScript : public PlayerScript
@@ -184,6 +189,45 @@ public:
{
player->ResyncRunes(MAX_RUNES);
st.lastReadyMask = readyMask;
// Authoritative rune CD pump (PARAA "R RUNES cd0 cd1 ... cd5",
// ms remaining per slot, 0 = ready). The 3.3.5 client engine
// class-gates SMSG_RESYNC_RUNES / SMSG_SPELL_GO RUNE_LIST to DK,
// so the Paragon RuneFrame sim drives the visual entirely off
// COMBAT_LOG_EVENT_UNFILTERED:SPELL_CAST_SUCCESS. The combat log
// arrives ~100200ms after the server already started the
// cooldown, so the client's local timer trails the server. When
// the user spams a rune spell, the server's slot refreshes
// first, accepts the next cast, but the client UI still shows
// CD remaining → "leak-through" past a greyed icon. Pushing the
// actual remaining ms on every mask transition keeps the
// visual locked to server state.
std::string body = "R RUNES";
for (uint8 i = 0; i < MAX_RUNES; ++i)
body += " " + std::to_string(player->GetRuneCooldown(i));
std::string const payload = std::string(kParagonAddonPrefix) + "\t" + body;
WorldPacket runePkt;
ChatHandler::BuildChatPacket(runePkt, CHAT_MSG_WHISPER, LANG_ADDON, player, player, payload);
player->SendDirectMessage(&runePkt);
}
// Combo point pump: the 3.3.5 client engine class-gates SMSG_UPDATE_COMBO_POINTS
// to rogue / druid, so the Paragon UI sim never sees CP changes from
// Honor Among Thieves / Mutilate / etc. via either the engine state or
// the client-side combat-log inference (HAT's 51699 trigger fires with a
// null target and doesn't always emit SPELL_CAST_SUCCESS in the log).
// Push the count over PARAA whenever it changes; the addon's combo
// simulator listens for "R CP <n>" and overwrites paragonCP, so the
// ComboFrame on the target frame paints reliably.
int8 const cp = player->GetComboPoints();
if (cp != st.lastCp)
{
std::string const payload = std::string(kParagonAddonPrefix) + "\t"
+ fmt::format("R CP {}", int32(cp));
WorldPacket data;
ChatHandler::BuildChatPacket(data, CHAT_MSG_WHISPER, LANG_ADDON, player, player, payload);
player->SendDirectMessage(&data);
st.lastCp = cp;
}
if (!sConfigMgr->GetOption<bool>("Paragon.Diag.RuneTrace", false))
@@ -214,8 +258,11 @@ private:
struct ParagonRuneSyncState
{
uint8 lastReadyMask{0xFFu}; // sentinel: no prior snapshot
int8 lastCp{-1}; // sentinel: no prior snapshot
};
static constexpr char const* kParagonAddonPrefix = "PARAA";
static std::unordered_map<ObjectGuid, ParagonRuneSyncState> runeSyncByGuid;
};
+66
View File
@@ -0,0 +1,66 @@
#!/usr/bin/env bash
# Rebuild acore_world from data/sql/base/db_world only (AzerothCore "shortcut"):
# the shipped base `updates` table already records archived migrations as applied,
# so worldserver only needs to run pending files under data/sql/updates/db_world
# (and your custom/pending paths if used).
#
# Usage:
# export MYSQL_PWD='...'
# ./scripts/world-db-from-base.sh -h 10.0.13.252 -u acore -D acore_world
#
# Requires: mysql client. Optional: pass --force to skip confirmation.
set -euo pipefail
usage() {
echo "Usage: $0 -h HOST -u USER -D DATABASE [--port PORT] [--force]" >&2
echo " Or set: MYSQL_HOST MYSQL_USER MYSQL_DATABASE [MYSQL_PWD in env]" >&2
exit 1
}
HOST="${MYSQL_HOST:-}"
USER="${MYSQL_USER:-}"
DBNAME="${MYSQL_DATABASE:-}"
PORT="${MYSQL_PORT:-3306}"
FORCE=0
while [[ $# -gt 0 ]]; do
case "$1" in
-h) HOST="$2"; shift 2 ;;
-u) USER="$2"; shift 2 ;;
-D) DBNAME="$2"; shift 2 ;;
--port) PORT="$2"; shift 2 ;;
--force) FORCE=1; shift ;;
*) usage ;;
esac
done
: "${HOST:?set -h or MYSQL_HOST}"
: "${USER:?set -u or MYSQL_USER}"
: "${DBNAME:?set -D or MYSQL_DATABASE}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
BASE_DIR="$REPO_ROOT/data/sql/base/db_world"
if [[ ! -d "$BASE_DIR" ]]; then
echo "Base directory not found: $BASE_DIR" >&2
exit 1
fi
if [[ "$FORCE" -ne 1 ]]; then
read -r -p "DESTROY database '$DBNAME' on $HOST and rebuild from base? [yes/no]: " ans
[[ "$ans" == "yes" ]] || { echo "Aborted."; exit 1; }
fi
MYSQL=(mysql -h "$HOST" -P "$PORT" -u "$USER" --protocol=tcp)
"${MYSQL[@]}" -e "DROP DATABASE IF EXISTS \`$DBNAME\`; CREATE DATABASE \`$DBNAME\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mapfile -t SQL_FILES < <(find "$BASE_DIR" -maxdepth 1 -name '*.sql' -printf '%f\n' | sort)
for f in "${SQL_FILES[@]}"; do
echo ">> $f"
"${MYSQL[@]}" "$DBNAME" <"$BASE_DIR/$f"
done
echo ">> Done. Start worldserver once; it should report World DB up-to-date or only apply updates/db_world."
+8
View File
@@ -17,10 +17,16 @@
#include "ARC4.h"
#include "Errors.h"
#include <openssl/opensslv.h>
Acore::Crypto::ARC4::ARC4() : _ctx(EVP_CIPHER_CTX_new())
{
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
_cipher = EVP_CIPHER_fetch(nullptr, "RC4", nullptr);
#else
_cipher = const_cast<EVP_CIPHER*>(EVP_rc4());
#endif
ASSERT(_cipher);
EVP_CIPHER_CTX_init(_ctx);
int result = EVP_EncryptInit_ex(_ctx, _cipher, nullptr, nullptr, nullptr);
@@ -30,7 +36,9 @@ Acore::Crypto::ARC4::ARC4() : _ctx(EVP_CIPHER_CTX_new())
Acore::Crypto::ARC4::~ARC4()
{
EVP_CIPHER_CTX_free(_ctx);
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
EVP_CIPHER_free(_cipher);
#endif
}
void Acore::Crypto::ARC4::Init(uint8 const* seed, std::size_t len)
+10
View File
@@ -17,6 +17,9 @@
#include "OpenSSLCrypto.h"
#include <openssl/crypto.h> // NOTE: this import is NEEDED (even though some IDEs report it as unused)
#include <openssl/opensslv.h>
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
#include <openssl/provider.h>
OSSL_PROVIDER* LegacyProvider;
@@ -53,3 +56,10 @@ void OpenSSLCrypto::threadsCleanup()
OSSL_PROVIDER_unload(DefaultProvider);
OSSL_PROVIDER_set_default_search_path(nullptr, nullptr);
}
#else
void OpenSSLCrypto::threadsSetup() {}
void OpenSSLCrypto::threadsCleanup() {}
#endif
@@ -52,10 +52,13 @@ MaxPingTime = 30
#
# RealmServerPort
# Description: TCP port to reach the auth server.
# Default: 3724
# Description: TCP port the auth server listens on (login handshake).
# Fractured production: match your client realmlist host:port, e.g.
# set realmlist hsrwow.net:47497
# requires RealmServerPort = 47497 and firewall/NAT to this process.
# Default: 3724 (stock WoW); Fractured dist default: 47497
RealmServerPort = 3724
RealmServerPort = 47497
#
#
@@ -31,6 +31,7 @@
#include "SQLOperation.h"
#include "Transaction.h"
#include "WorldDatabase.h"
#include <array>
#include <limits>
#include <mysqld_error.h>
#include <sstream>
@@ -59,10 +60,18 @@ DatabaseWorkerPool<T>::DatabaseWorkerPool() :
{
WPFatal(mysql_thread_safe(), "Used MySQL library isn't thread-safe.");
bool isSupportClientDB = mysql_get_client_version() >= MIN_MYSQL_CLIENT_VERSION;
bool isSameClientDB = mysql_get_client_version() == MYSQL_VERSION_ID;
bool isSupportClientDB;
bool isSameClientDB;
#ifdef MARIADB_VERSION_ID
isSupportClientDB = (MARIADB_VERSION_ID >= MIN_MARIADB_CLIENT_VERSION_ID);
// MariaDB packages often differ between build host and runtime; strict id match is too brittle.
isSameClientDB = true;
#else
isSupportClientDB = mysql_get_client_version() >= MIN_MYSQL_CLIENT_VERSION;
isSameClientDB = mysql_get_client_version() == MYSQL_VERSION_ID;
#endif
WPFatal(isSupportClientDB, "AzerothCore does not support MySQL versions below 8.0\n\nFound version: {} / {}. Server compiled with: {}.\nSearch the wiki for ACE00043 in Common Errors (https://www.azerothcore.org/wiki/common-errors#ace00043).",
WPFatal(isSupportClientDB, "AzerothCore does not support this database client library.\n\nFound version: {} / {}. Server compiled with: {}.\nSearch the wiki for ACE00043 in Common Errors (https://www.azerothcore.org/wiki/common-errors#ace00043).",
mysql_get_client_info(), mysql_get_client_version(), MYSQL_VERSION_ID);
WPFatal(isSameClientDB, "Used MySQL library version ({} id {}) does not match the version id used to compile AzerothCore (id {}).\nSearch the wiki for ACE00046 in Common Errors (https://www.azerothcore.org/wiki/common-errors#ace00046).",
mysql_get_client_info(), mysql_get_client_version(), MYSQL_VERSION_ID);
@@ -386,32 +395,65 @@ void DatabaseWorkerPool<T>::KeepAlive()
*/
bool DatabaseIncompatibleVersion(std::string const mysqlVersion)
{
// anon func to turn a version string into an array of uint8
// "1.2.3" => [1, 2, 3]
auto parse = [](std::string const& input)
auto parseTriplet = [](std::string const& input) -> std::array<unsigned, 3>
{
std::vector<uint8> result;
std::istringstream parser(input);
result.push_back(parser.get());
for (int i = 1; i < 3; i++)
std::array<unsigned, 3> v = { 0, 0, 0 };
size_t idx = 0;
std::string num;
for (char ch : input)
{
// Skip period
parser.get();
// Append int from parser to output
result.push_back(parser.get());
if (ch >= '0' && ch <= '9')
num.push_back(ch);
else if (ch == '.')
{
if (!num.empty() && idx < 3)
{
v[idx++] = static_cast<unsigned>(std::stoul(num));
num.clear();
}
}
else
break;
}
return result;
if (!num.empty() && idx < 3)
v[idx] = static_cast<unsigned>(std::stoul(num));
return v;
};
// default to values for MySQL
uint8 offset = 0;
auto compareVersion = [](std::array<unsigned, 3> const& a, std::array<unsigned, 3> const& b) -> int
{
if (a[0] != b[0])
return (a[0] < b[0]) ? -1 : 1;
if (a[1] != b[1])
return (a[1] < b[1]) ? -1 : 1;
if (a[2] != b[2])
return (a[2] < b[2]) ? -1 : 1;
return 0;
};
std::string ver = mysqlVersion;
std::string minVersion = MIN_MYSQL_SERVER_VERSION;
auto parsedMySQLVersion = parse(mysqlVersion.substr(offset));
auto parsedMinVersion = parse(minVersion);
// MariaDB: version string may be:
// - "5.5.5-10.6.11-MariaDB-1:10.6.11+maria~..." (MySQL wire compat prefix)
// - "10.6.11-MariaDB-1:10.6.11+maria~..." (no 5.5.5- prefix)
// parseTriplet() on the full second form stops at the first '-', yielding 10.6.11.
// Never take "firstDash..secondDash" — that becomes "MariaDB" and compares as 0.0.0.
if (ver.find("MariaDB") != std::string::npos)
{
minVersion = MIN_MARIADB_SERVER_VERSION;
if (ver.compare(0, 6, "5.5.5-") == 0)
{
size_t const afterPrefix = 6;
size_t const nextDash = ver.find('-', afterPrefix);
if (nextDash != std::string::npos)
ver = ver.substr(afterPrefix, nextDash - afterPrefix);
else
ver = ver.substr(afterPrefix);
}
}
return std::lexicographical_compare(parsedMySQLVersion.begin(), parsedMySQLVersion.end(),
parsedMinVersion.begin(), parsedMinVersion.end());
return compareVersion(parseTriplet(ver), parseTriplet(minVersion)) < 0;
}
template <class T>
@@ -442,7 +484,7 @@ uint32 DatabaseWorkerPool<T>::OpenConnections(InternalIndex type, uint8 numConne
}
else if (DatabaseIncompatibleVersion(connection->GetServerInfo()))
{
LOG_ERROR("sql.driver", "AzerothCore does not support MySQL versions below 8.0\n\nFound server version: {}. Server compiled with: {}.",
LOG_ERROR("sql.driver", "Database server version is too old.\n\nFound server version: {}. Client library compile id: {}.",
connection->GetServerInfo(), MYSQL_VERSION_ID);
return 1;
}
@@ -32,12 +32,24 @@
*/
#define MIN_MYSQL_CLIENT_VERSION 80000u
/**
* @def MIN_MARIADB_CLIENT_VERSION_ID
* Minimum MariaDB connector MARIADB_VERSION_ID (10.4.0 => 100400)
*/
#define MIN_MARIADB_CLIENT_VERSION_ID 100400u
/**
* @def MIN_MYSQL_SERVER_VERSION
* The minimum MySQL Server Version
*/
#define MIN_MYSQL_SERVER_VERSION "8.0.0"
/**
* @def MIN_MARIADB_SERVER_VERSION
* Minimum MariaDB server (version triplet after the 5.5.5- compatibility prefix)
*/
#define MIN_MARIADB_SERVER_VERSION "10.4.0"
template <typename T>
class ProducerConsumerQueue;
@@ -129,13 +129,17 @@ uint32 MySQLConnection::Open()
if (m_connectionInfo.ssl != "")
{
#ifdef MARIADB_VERSION_ID
my_bool const ssl_enforce = (m_connectionInfo.ssl == "ssl") ? 1 : 0;
if (ssl_enforce)
mysql_options(mysqlInit, MYSQL_OPT_SSL_ENFORCE, &ssl_enforce);
#else
mysql_ssl_mode opt_use_ssl = SSL_MODE_DISABLED;
if (m_connectionInfo.ssl == "ssl")
{
opt_use_ssl = SSL_MODE_REQUIRED;
}
mysql_options(mysqlInit, MYSQL_OPT_SSL_MODE, (char const*)&opt_use_ssl);
#endif
}
m_Mysql = reinterpret_cast<MySQLHandle*>(mysql_real_connect(mysqlInit, m_connectionInfo.host.c_str(), m_connectionInfo.user.c_str(),
@@ -216,7 +220,7 @@ bool MySQLConnection::Execute(PreparedStatementBase* stmt)
uint32 _s = getMSTime();
#if MYSQL_VERSION_ID >= 80300
#if MYSQL_VERSION_ID >= 80300 && !defined(MARIADB_VERSION_ID)
if (mysql_stmt_bind_named_param(msql_STMT, msql_BIND, m_mStmt->GetParameterCount(), nullptr))
#else
if (mysql_stmt_bind_param(msql_STMT, msql_BIND))
@@ -268,7 +272,7 @@ bool MySQLConnection::_Query(PreparedStatementBase* stmt, MySQLPreparedStatement
uint32 _s = getMSTime();
#if MYSQL_VERSION_ID >= 80300
#if MYSQL_VERSION_ID >= 80300 && !defined(MARIADB_VERSION_ID)
if (mysql_stmt_bind_named_param(msql_STMT, msql_BIND, m_mStmt->GetParameterCount(), nullptr))
#else
if (mysql_stmt_bind_param(msql_STMT, msql_BIND))
@@ -208,6 +208,46 @@ namespace Trainer
bool Trainer::IsTrainerValidForPlayer(Player const* player) const
{
// Paragon (class 12) learns class abilities exclusively through the
// Character Advancement panel (mod-paragon). Generic class trainers
// refuse interaction. Pet trainers, mount/profession trainers, and
// specialized portal/teleport trainers (mage portal NPCs) stay valid:
// - Pet trainers: pet-skill purchases for hunter pets aren't covered
// by the panel and should remain trainer-driven.
// - Portal/teleport trainers: identified at runtime as a Class-type
// trainer whose spells are ALL TELEPORT_UNITS or TRANS_DOOR
// effects. The big general mage trainer fails this check (it
// teaches Fireball, Frostbolt, etc.) and is correctly blocked.
if (player && player->getClass() == CLASS_PARAGON
&& GetTrainerType() == Type::Class
&& !_spells.empty())
{
bool onlyPortalsAndTeleports = true;
for (Spell const& s : _spells)
{
SpellInfo const* info = sSpellMgr->GetSpellInfo(s.SpellId);
if (!info)
continue;
bool isPortalOrTeleport = false;
for (SpellEffectInfo const& eff : info->GetEffects())
{
if (eff.Effect == SPELL_EFFECT_TELEPORT_UNITS
|| eff.Effect == SPELL_EFFECT_TRANS_DOOR)
{
isPortalOrTeleport = true;
break;
}
}
if (!isPortalOrTeleport)
{
onlyPortalsAndTeleports = false;
break;
}
}
if (!onlyPortalsAndTeleports)
return false;
}
if (!GetTrainerRequirement())
return true;
+4 -1
View File
@@ -14052,7 +14052,10 @@ void Player::LearnTalent(uint32 talentId, uint32 talentRank, bool command /*= fa
return;
// xinef: prevent learn talent for different class (cheating)
if ((getClassMask() & talentTabInfo->ClassMask) == 0)
// mod-paragon: Paragon (class 12) can spec into any class's talent tree
// via the Character Advancement panel; bypass the class-mask check.
if (getClass() != CLASS_PARAGON
&& (getClassMask() & talentTabInfo->ClassMask) == 0)
return;
// xinef: find current talent rank
@@ -0,0 +1,26 @@
/*
* This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// This is where scripts' loading functions should be declared:
// void MyExampleScript()
// The name of this function should match:
// void Add${NameOfDirectory}Scripts()
void AddCustomScripts()
{
// MyExampleScript()
}