Compare commits
34 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 34cc87a5f9 | |||
| f986fdcddd | |||
| a212717c37 | |||
| 49cb354133 | |||
| 7298d89c9a | |||
| 3a2ae82593 | |||
| 16717acdd3 | |||
| d96123e661 | |||
| 8a0da95ed2 | |||
| 8363b1b6c8 | |||
| 2874119c6d | |||
| 56fa2fc7f7 | |||
| 5deb9e3255 | |||
| ecd8eacb1f | |||
| 1811c0ec35 | |||
| fae3ff5028 | |||
| 20a24b7935 | |||
| 526022e2bc | |||
| 4a1f4d02f0 | |||
| 4d2a80ddb8 | |||
| 81df32963f | |||
| 2b98ddeadd | |||
| 4c999bee3f | |||
| ba1cca9521 | |||
| b797877558 | |||
| 326644bbac | |||
| 36fdf9af82 | |||
| 579574acb3 | |||
| 63ab74b4fb | |||
| df7e943a74 | |||
| 203356aca8 | |||
| e2bed00b5c | |||
| fdc5849a69 | |||
| 2f8c374569 |
@@ -23,6 +23,7 @@
|
|||||||
/data/sql/custom/*
|
/data/sql/custom/*
|
||||||
/src/server/scripts/Custom/*
|
/src/server/scripts/Custom/*
|
||||||
!/src/server/scripts/Custom/README.md
|
!/src/server/scripts/Custom/README.md
|
||||||
|
!/src/server/scripts/Custom/custom_script_loader.cpp
|
||||||
|
|
||||||
/*.override.yml
|
/*.override.yml
|
||||||
/*.override.yaml
|
/*.override.yaml
|
||||||
@@ -119,3 +120,9 @@ local.properties
|
|||||||
!/modules/mod-ale/**
|
!/modules/mod-ale/**
|
||||||
# Team Docker: ALE needs Lua at configure time (see mod-ale docs)
|
# Team Docker: ALE needs Lua at configure time (see mod-ale docs)
|
||||||
!docker-compose.override.yml
|
!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
@@ -106,7 +106,7 @@ include(ConfigInstall)
|
|||||||
CU_RUN_HOOK("AFTER_LOAD_CMAKE_MODULES")
|
CU_RUN_HOOK("AFTER_LOAD_CMAKE_MODULES")
|
||||||
|
|
||||||
find_package(PCHSupport)
|
find_package(PCHSupport)
|
||||||
find_package(MySQL REQUIRED)
|
find_package(MySQL REQUIRED COMPONENTS lib)
|
||||||
|
|
||||||
if(UNIX AND WITH_PERFTOOLS)
|
if(UNIX AND WITH_PERFTOOLS)
|
||||||
find_package(Gperftools)
|
find_package(Gperftools)
|
||||||
|
|||||||
@@ -15,6 +15,58 @@ prerequisites; everything here is just the deltas you need on top of it.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Fractured client + network defaults
|
||||||
|
|
||||||
|
Stock-friendly defaults for fresh local installs. A `git clone` ->
|
||||||
|
`docker compose up` (or native install) lets a single developer log in
|
||||||
|
from the same machine without any post-install config tweaks.
|
||||||
|
|
||||||
|
- **`authserver.conf` -> `RealmServerPort`** = **3724** (stock WoW). A
|
||||||
|
patched `Wow.exe` with `set realmlist 127.0.0.1` (no port) reaches
|
||||||
|
the auth handshake.
|
||||||
|
- **`realmlist` table -> `port`** is the **world** port (default
|
||||||
|
**8085**, matches `WorldServerPort` in `worldserver.conf.dist`).
|
||||||
|
Auth tells the client to handshake to this port for the world hand-off.
|
||||||
|
- **`realmlist` table -> `address`** defaults to **`127.0.0.1`** in the
|
||||||
|
base SQL. The auth server hands this address to clients after login,
|
||||||
|
so 127.0.0.1 means "talk to the world server on the same machine
|
||||||
|
auth is running on" -- correct for solo dev. **Override on production
|
||||||
|
deploys**, see *Production deployment overrides* below.
|
||||||
|
|
||||||
|
### Production deployment overrides
|
||||||
|
|
||||||
|
Production Fractured runs on a remote VPS at `hsrwow.net` with auth
|
||||||
|
bound to a non-stock port (47497 -- 3724 was unavailable on that host).
|
||||||
|
Apply the overrides **once per fresh dbimport** on the production box.
|
||||||
|
|
||||||
|
```sql
|
||||||
|
-- Run against acore_auth on the production database after first dbimport:
|
||||||
|
UPDATE realmlist
|
||||||
|
SET address = 'hsrwow.net',
|
||||||
|
port = 8085 -- world port; leave at 8085 unless changed
|
||||||
|
WHERE id = 1;
|
||||||
|
```
|
||||||
|
|
||||||
|
Edit the production `authserver.conf` (NOT `authserver.conf.dist`)
|
||||||
|
to bind the auth listener to the production port:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
RealmServerPort = 47497
|
||||||
|
```
|
||||||
|
|
||||||
|
Restart the auth server. Production clients connect with:
|
||||||
|
|
||||||
|
```text
|
||||||
|
set realmlist hsrwow.net:47497
|
||||||
|
```
|
||||||
|
|
||||||
|
The Fractured-patched 3.3.5 client supports the `host:port` syntax;
|
||||||
|
stock 3.3.5 clients do not, so any contributor distributing the
|
||||||
|
client bundle for production must include the patched `Wow.exe` from
|
||||||
|
the GitHub release.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## What you get when you build this fork
|
## What you get when you build this fork
|
||||||
|
|
||||||
- Worldserver with `CLASS_PARAGON` and Paragon-aware DK rune / sticky
|
- Worldserver with `CLASS_PARAGON` and Paragon-aware DK rune / sticky
|
||||||
@@ -172,22 +224,19 @@ The standard AzerothCore three-database layout (`acore_auth`,
|
|||||||
|
|
||||||
Easiest path: run the worldserver once with empty databases and let
|
Easiest path: run the worldserver once with empty databases and let
|
||||||
`AC_FORCE_CREATE_DB=1` populate them, **or** use `dbimport` from the
|
`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
|
The Fractured-specific SQL (mod-paragon) lives under
|
||||||
cd <repo>/modules/mod-paragon/sql
|
`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
|
Modify-and-redeploy works the same way: change the file, push, pull on
|
||||||
mysql -u acore -p acore_world < world/base/paragon_gametables.sql
|
the VPS, and the next `dbimport` run sees the new hash and re-applies.
|
||||||
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/`.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -0,0 +1,250 @@
|
|||||||
|
# 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` | ~50 KB | FrameXML overrides. Replaces stock `PlayerFrame.lua` / `RuneFrame.lua` / `ComboFrame.lua` / `UnitFrame.lua` / `SpellBookFrame.lua` + `SpellBookFrame.xml` with Paragon-aware versions: rune simulator, combo-point simulator, server-authoritative resource sync over the `PARAA` addon channel, action-button usability + click guards, an expanded spellbook (higher `MAX_SPELLS`, 24 skill-line tabs instead of stock 8) so all-class spells render, and a tooltip post-processor that appends ", Paragon" to the "Classes:" line on class-restricted gear / glyphs (the server bypasses `AllowableClass` for class 12, but the engine paints the line red and omits Paragon — the Lua hook recolors it green and adds the name so the player can tell it's wearable). |
|
||||||
|
| `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.
|
||||||
|
|
||||||
|
If the **client** shows the Paragon class on the create screen but the
|
||||||
|
server replies **Character Creation Failed** (sometimes shown as
|
||||||
|
"Error creating character") when you pick it -- **or** the character
|
||||||
|
is created but spawns with no weapon / armor proficiencies (auto-attack
|
||||||
|
greys out, can't equip anything beyond a fist), or with the proficiency
|
||||||
|
**skills** but no **passive spells** like Block, Parry, Dual Wield --
|
||||||
|
the worldserver is missing one of four pieces of class-12 data. All
|
||||||
|
ship as SQL migrations under
|
||||||
|
`modules/mod-paragon/data/sql/db-world/updates/` and are auto-applied
|
||||||
|
by AzerothCore's DBUpdater on every `ac-db-import` run, but the SQL
|
||||||
|
files are baked into the dbimport Docker image at build time -- so a
|
||||||
|
stale image won't pick up new migrations. Fix:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git pull origin main
|
||||||
|
docker compose build ac-db-import ac-worldserver
|
||||||
|
docker compose up -d ac-db-import
|
||||||
|
docker compose restart ac-worldserver
|
||||||
|
```
|
||||||
|
|
||||||
|
Existing class-12 characters created before these migrations will
|
||||||
|
keep their broken state -- the cascade only fires inside
|
||||||
|
`Player::Create` and `Player::LearnDefaultSkill` at character spawn.
|
||||||
|
Delete the old Paragon and re-roll after the rebuild.
|
||||||
|
|
||||||
|
The four migrations:
|
||||||
|
|
||||||
|
- `2026_05_09_00.sql` -- DBC overlay rows for `chrclasses_dbc` and
|
||||||
|
`skillraceclassinfo_dbc`. Without this the server can't even
|
||||||
|
resolve class 12 in `sChrClassesStore`. See **Server-side Paragon
|
||||||
|
DBC overlay** below.
|
||||||
|
- `2026_05_10_00.sql` -- `playercreateinfo`, `playercreateinfo_action`,
|
||||||
|
and `player_class_stats` rows for class 12. Without this
|
||||||
|
`Player::Create` rejects every (race, class=12) pair as an
|
||||||
|
"invalid race/class pair" and the worldserver prints
|
||||||
|
`class-N Level-L does not have stats data!` integrity warnings on
|
||||||
|
load.
|
||||||
|
- `2026_05_10_01.sql` -- 20 `playercreateinfo_skills` rows
|
||||||
|
(`classMask = 2048` = class 12) granting every weapon /
|
||||||
|
armor proficiency at level 1. Without this a Paragon spawns with
|
||||||
|
only the universal `classMask = 0` skills (Defense, Unarmed,
|
||||||
|
Cloth, languages, Mounts) -- no Swords, no Mail, no Shield, etc.
|
||||||
|
- `2026_05_10_02.sql` -- 3,314 `skilllineability_dbc` rows opening
|
||||||
|
the class-12 bit on every SkillLineAbility row our patched
|
||||||
|
`SkillLineAbility.dbc` modified. AC reads these rows in
|
||||||
|
`Player::LearnDefaultSkill` to drive the `skill -> passive spell`
|
||||||
|
cascade. Without it the proficiency *skills* from `_01.sql` exist
|
||||||
|
but the *passive spells* (Block, Parry, Dual Wield, Defense,
|
||||||
|
weapon Shoot, racial Mace/Sword Specialization, etc.) never auto-
|
||||||
|
learn, so the spellbook past the racials looks empty.
|
||||||
|
|
||||||
|
After the rebuild + restart, `ac-worldserver` should log
|
||||||
|
`>> Loaded 72 Player Create Definitions` (was 62 pre-Paragon),
|
||||||
|
`>> Loaded 1391 Player Create Skills` (was 1371),
|
||||||
|
`>> Loaded 10219 SkillLineAbility MultiMap Data` (unchanged total --
|
||||||
|
the SQL overlay replaces existing rows by ID, doesn't add new ones),
|
||||||
|
and character creation succeeds for any DK-eligible race with a full
|
||||||
|
weapon / armor kit and the matching passive spells.
|
||||||
|
|
||||||
|
If the client **logs in** successfully but **disconnects immediately**
|
||||||
|
when entering the realm: the auth server is handing your client the
|
||||||
|
wrong world-server address. On a fresh local install the seed defaults
|
||||||
|
to `127.0.0.1` (commit landing this paragraph). If your DB was
|
||||||
|
imported from an older Fractured checkout, the seed may still point at
|
||||||
|
`hsrwow.net`, which sends the client to our production world server
|
||||||
|
instead of yours. Fix:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Docker:
|
||||||
|
docker exec ac-database mysql -uroot -ppassword \
|
||||||
|
-e "UPDATE acore_auth.realmlist SET address='127.0.0.1' WHERE id=1;"
|
||||||
|
docker compose restart ac-authserver
|
||||||
|
```
|
||||||
|
|
||||||
|
Substitute your public hostname/IP for `127.0.0.1` if remote players
|
||||||
|
will be connecting. See `BUILD-NATIVE.md` -> *Production deployment
|
||||||
|
overrides* for the full list of values to set on a production box.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Server-side Paragon DBC overlay (automatic)
|
||||||
|
|
||||||
|
The Fractured **client** learns about Paragon from `patch-enUS-4.MPQ`
|
||||||
|
(DBC + GlueXML). The **worldserver** never reads your MPQs — it reads
|
||||||
|
plain `.dbc` files under its `DataDir` (`.../data/dbc/` by default).
|
||||||
|
|
||||||
|
Stock Docker installs populate `data/dbc/` from a vanilla 3.3.5a
|
||||||
|
extract (`ac-client-data-init` in `docker-compose.yml`). That tree has
|
||||||
|
no `ChrClasses` row for id **12** and no class-12 bit on
|
||||||
|
`SkillRaceClassInfo` rows, which would normally trigger:
|
||||||
|
|
||||||
|
`Class (12) not found in DBC while creating new char ... wrong DBC files or cheater?`
|
||||||
|
|
||||||
|
…and reject the create with `CHAR_CREATE_FAILED`.
|
||||||
|
|
||||||
|
To remove that gap, the repo ships
|
||||||
|
`modules/mod-paragon/data/sql/db-world/updates/2026_05_09_00.sql`,
|
||||||
|
which `INSERT`s the Paragon class-12 deltas into:
|
||||||
|
|
||||||
|
- `chrclasses_dbc` — 1 row defining class 12 ("Paragon", power=Mana,
|
||||||
|
family=Warrior, expansion=2).
|
||||||
|
- `skillraceclassinfo_dbc` — 235 rows replacing stock entries with the
|
||||||
|
patched ClassMask (class-12 bit OR'd in) so every baseline skill is
|
||||||
|
available to Paragon characters.
|
||||||
|
|
||||||
|
`AzerothCore`'s DBC loader (`DBCStores.cpp::LoadDBC` -> `LoadFromDB`)
|
||||||
|
merges these rows on top of whatever `data/dbc/` contains at every
|
||||||
|
worldserver boot. The DBUpdater in `ac-db-import` (Docker) or the
|
||||||
|
worldserver itself (native) applies the migration automatically — so
|
||||||
|
the **only** steps a fresh contributor needs are `git clone` and
|
||||||
|
`docker compose up -d`.
|
||||||
|
|
||||||
|
### Regenerating the migration
|
||||||
|
|
||||||
|
The SQL is auto-generated from the patched DBCs that already live
|
||||||
|
inside `patch-enUS-4.MPQ`. The bake script lives outside this repo
|
||||||
|
(per the repo-tidy policy) at:
|
||||||
|
|
||||||
|
`fractured-tooling/from-workspace-root/_gen_paragon_dbc_overlay_sql.py`
|
||||||
|
|
||||||
|
Re-run it whenever you change the Paragon DBC bake — for example,
|
||||||
|
adding a new race to the Paragon class mask. It diffs the patched
|
||||||
|
DBCs against a stock 3.3.5a DBC extract and emits a fresh
|
||||||
|
`2026_05_09_00.sql` (or successor migration with a new timestamp if
|
||||||
|
deltas change). Workflow:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
# Extract the patched DBCs once:
|
||||||
|
.\tools\mpq\mpqcli.exe extract `
|
||||||
|
"ChromieCraft_3.3.5a\Data\enUS\patch-enUS-4.MPQ" `
|
||||||
|
-o "$env:TEMP\paragon-dbc-extract"
|
||||||
|
|
||||||
|
# Regenerate the SQL migration:
|
||||||
|
python fractured-tooling\from-workspace-root\_gen_paragon_dbc_overlay_sql.py
|
||||||
|
```
|
||||||
|
|
||||||
|
If the regenerated SQL has new content, commit it as a **new** dated
|
||||||
|
migration filename (e.g. `2026_06_01_00.sql`) — never edit a file that
|
||||||
|
has already been applied to live databases, AC's DBUpdater will detect
|
||||||
|
the hash change and re-run the SQL, which can be fine but is best
|
||||||
|
reserved for emergencies.
|
||||||
|
|
||||||
|
### Manual DBC overlay (rare, fallback)
|
||||||
|
|
||||||
|
If you ever need the patched DBCs *on disk* — e.g. for a tool that
|
||||||
|
reads `data/dbc/` directly outside the worldserver, or to verify a
|
||||||
|
client-vs-server DBC mismatch — extract `patch-enUS-4.MPQ` and copy
|
||||||
|
its `DBFilesClient/*.dbc` into `data/dbc/`:
|
||||||
|
|
||||||
|
**Docker:**
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
docker run --rm `
|
||||||
|
-v ac-client-data:/data `
|
||||||
|
-v ${PWD}\paragon-dbc-extract:/patch:ro `
|
||||||
|
alpine sh -c "cp -f /patch/*.dbc /data/dbc/"
|
||||||
|
docker compose restart ac-worldserver
|
||||||
|
```
|
||||||
|
|
||||||
|
**Native:** copy into `<CMAKE_INSTALL_PREFIX>/data/dbc/` and restart.
|
||||||
|
|
||||||
|
This is **not required** for normal operation — the SQL migration
|
||||||
|
covers everything `mod-paragon` needs at runtime. Use the manual
|
||||||
|
overlay only when you're consciously bypassing the SQL merge layer.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 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.
|
||||||
@@ -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.
|
||||||
@@ -58,16 +58,16 @@ INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`,
|
|||||||
(90991, 90993, 4, 270, 515);
|
(90991, 90993, 4, 270, 515);
|
||||||
|
|
||||||
DELETE FROM `creature_formations` WHERE `memberGUID` IN (91247,91248,91249,90985,90986,90987,90988,90989,90990);
|
DELETE FROM `creature_formations` WHERE `memberGUID` IN (91247,91248,91249,90985,90986,90987,90988,90989,90990);
|
||||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `groupAI`) VALUES
|
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
|
||||||
(91247, 91247, 3),
|
(91247, 91247, 0, 0, 3),
|
||||||
(91247, 91248, 3),
|
(91247, 91248, 0, 0, 3),
|
||||||
(91247, 91249, 3),
|
(91247, 91249, 0, 0, 3),
|
||||||
(90985, 90985, 3),
|
(90985, 90985, 0, 0, 3),
|
||||||
(90985, 90986, 3),
|
(90985, 90986, 0, 0, 3),
|
||||||
(90985, 90987, 3),
|
(90985, 90987, 0, 0, 3),
|
||||||
(90988, 90988, 3),
|
(90988, 90988, 0, 0, 3),
|
||||||
(90988, 90989, 3),
|
(90988, 90989, 0, 0, 3),
|
||||||
(90988, 90990, 3);
|
(90988, 90990, 0, 0, 3);
|
||||||
|
|
||||||
UPDATE `creature` SET `id1` = 15384 WHERE `guid` = 91250 AND `id1` = 19871;
|
UPDATE `creature` SET `id1` = 15384 WHERE `guid` = 91250 AND `id1` = 19871;
|
||||||
|
|
||||||
|
|||||||
@@ -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');
|
(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);
|
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
|
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `dist`, `angle`, `groupAI`) VALUES
|
||||||
(@CGUID+0, @CGUID+5, 24),
|
(@CGUID+0, @CGUID+5, 0, 0, 24),
|
||||||
(@CGUID+1, @CGUID+5, 24),
|
(@CGUID+1, @CGUID+5, 0, 0, 24),
|
||||||
(@CGUID+2, @CGUID+5, 24),
|
(@CGUID+2, @CGUID+5, 0, 0, 24),
|
||||||
(@CGUID+3, @CGUID+5, 24),
|
(@CGUID+3, @CGUID+5, 0, 0, 24),
|
||||||
(@CGUID+4, @CGUID+5, 24),
|
(@CGUID+4, @CGUID+5, 0, 0, 24),
|
||||||
(@CGUID+5, @CGUID+5, 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));
|
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
|
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
|
||||||
|
|||||||
@@ -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)');
|
(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);
|
DELETE FROM `creature_formations` WHERE `memberGUID` IN (151094,151095,151096,151097);
|
||||||
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `groupAI`) VALUES
|
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `dist`, `angle`, `groupAI`) VALUES
|
||||||
(151095,151095,3),
|
(151095, 151095, 0, 0, 3),
|
||||||
(151096,151095,3),
|
(151096, 151095, 0, 0, 3),
|
||||||
(151097,151095,3);
|
(151097, 151095, 0, 0, 3);
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
-- DB update 2023_07_10_00 -> 2023_07_10_01
|
-- DB update 2023_07_10_00 -> 2023_07_10_01
|
||||||
--
|
--
|
||||||
DELETE FROM `creature_formations` WHERE `memberGUID` IN (90978, 90979, 90980, 90981, 90982);
|
DELETE FROM `creature_formations` WHERE `memberGUID` IN (90978, 90979, 90980, 90981, 90982);
|
||||||
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `groupAI`) VALUES
|
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `dist`, `angle`, `groupAI`) VALUES
|
||||||
(90978, 90978, 3),
|
(90978, 90978, 0, 0, 3),
|
||||||
(90979, 90978, 3),
|
(90979, 90978, 0, 0, 3),
|
||||||
(90980, 90978, 3),
|
(90980, 90978, 0, 0, 3),
|
||||||
(90981, 90978, 3),
|
(90981, 90978, 0, 0, 3),
|
||||||
(90982, 90978, 3);
|
(90982, 90978, 0, 0, 3);
|
||||||
|
|||||||
@@ -1,3 +1,19 @@
|
|||||||
-- DB update 2023_07_17_00 -> 2023_07_17_01
|
-- 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;
|
UPDATE `spell_enchant_proc_data` SET `attributeMask` = 0x2 WHERE `entry` = 2675;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ UPDATE `creature_template` SET `scriptname` = '' WHERE `entry` = 27326;
|
|||||||
|
|
||||||
DELETE FROM `spell_target_position` WHERE `ID` = 48324 AND `EffectIndex` = 0;
|
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
|
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);
|
DELETE FROM `spell_script_names` WHERE `spell_id` IN (48382, 47533);
|
||||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||||
|
|||||||
@@ -1,5 +1,21 @@
|
|||||||
-- DB update 2023_08_12_02 -> 2023_08_13_00
|
-- 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;
|
DELETE FROM `event_scripts` WHERE `id` = 14376;
|
||||||
|
|
||||||
UPDATE `gameobject_template` SET `AIName` = 'SmartGameObjectAI' WHERE `entry` = 185220;
|
UPDATE `gameobject_template` SET `AIName` = 'SmartGameObjectAI' WHERE `entry` = 185220;
|
||||||
|
|||||||
@@ -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));
|
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);
|
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
|
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `dist`, `angle`, `groupAI`) VALUES
|
||||||
(@CGUID+1 , @CGUID+1 , 3),
|
(@CGUID+1, @CGUID+1, 0, 0, 3),
|
||||||
(@CGUID+2 , @CGUID+1 , 3),
|
(@CGUID+2, @CGUID+1, 0, 0, 3),
|
||||||
(@CGUID+3 , @CGUID+1 , 3),
|
(@CGUID+3, @CGUID+1, 0, 0, 3),
|
||||||
(@CGUID+4 , @CGUID+1 , 3),
|
(@CGUID+4, @CGUID+1, 0, 0, 3),
|
||||||
(@CGUID+5 , @CGUID+1 , 3),
|
(@CGUID+5, @CGUID+1, 0, 0, 3),
|
||||||
(@CGUID+6 , @CGUID+6 , 3),
|
(@CGUID+6, @CGUID+6, 0, 0, 3),
|
||||||
(@CGUID+7 , @CGUID+6 , 3),
|
(@CGUID+7, @CGUID+6, 0, 0, 3),
|
||||||
(@CGUID+8 , @CGUID+6 , 3),
|
(@CGUID+8, @CGUID+6, 0, 0, 3),
|
||||||
(@CGUID+9 , @CGUID+6 , 3),
|
(@CGUID+9, @CGUID+6, 0, 0, 3),
|
||||||
(@CGUID+10 , @CGUID+6 , 3),
|
(@CGUID+10, @CGUID+6, 0, 0, 3),
|
||||||
(@CGUID+11 , @CGUID+11 , 3),
|
(@CGUID+11, @CGUID+11, 0, 0, 3),
|
||||||
(@CGUID+12 , @CGUID+11 , 3),
|
(@CGUID+12, @CGUID+11, 0, 0, 3),
|
||||||
(@CGUID+13 , @CGUID+11 , 3),
|
(@CGUID+13, @CGUID+11, 0, 0, 3),
|
||||||
(@CGUID+14 , @CGUID+11 , 3),
|
(@CGUID+14, @CGUID+11, 0, 0, 3),
|
||||||
(@CGUID+15 , @CGUID+11 , 3),
|
(@CGUID+15, @CGUID+11, 0, 0, 3),
|
||||||
(@CGUID+22 , @CGUID+22 , 3),
|
(@CGUID+22, @CGUID+22, 0, 0, 3),
|
||||||
(@CGUID+23 , @CGUID+22 , 3),
|
(@CGUID+23, @CGUID+22, 0, 0, 3),
|
||||||
(@CGUID+24 , @CGUID+22 , 3),
|
(@CGUID+24, @CGUID+22, 0, 0, 3),
|
||||||
(@CGUID+25 , @CGUID+22 , 3),
|
(@CGUID+25, @CGUID+22, 0, 0, 3),
|
||||||
(@CGUID+26 , @CGUID+22 , 3),
|
(@CGUID+26, @CGUID+22, 0, 0, 3),
|
||||||
(@CGUID+27 , @CGUID+22 , 3),
|
(@CGUID+27, @CGUID+22, 0, 0, 3),
|
||||||
(@CGUID+28 , @CGUID+22 , 3),
|
(@CGUID+28, @CGUID+22, 0, 0, 3),
|
||||||
(@CGUID+29 , @CGUID+22 , 3),
|
(@CGUID+29, @CGUID+22, 0, 0, 3),
|
||||||
(@CGUID+30 , @CGUID+22 , 3),
|
(@CGUID+30, @CGUID+22, 0, 0, 3),
|
||||||
(@CGUID+31 , @CGUID+31 , 3),
|
(@CGUID+31, @CGUID+31, 0, 0, 3),
|
||||||
(@CGUID+32 , @CGUID+31 , 3),
|
(@CGUID+32, @CGUID+31, 0, 0, 3),
|
||||||
(@CGUID+33 , @CGUID+31 , 3),
|
(@CGUID+33, @CGUID+31, 0, 0, 3),
|
||||||
(@CGUID+34 , @CGUID+31 , 3),
|
(@CGUID+34, @CGUID+31, 0, 0, 3),
|
||||||
(@CGUID+35 , @CGUID+31 , 3),
|
(@CGUID+35, @CGUID+31, 0, 0, 3),
|
||||||
(@CGUID+36 , @CGUID+31 , 3),
|
(@CGUID+36, @CGUID+31, 0, 0, 3),
|
||||||
(@CGUID+37 , @CGUID+31 , 3),
|
(@CGUID+37, @CGUID+31, 0, 0, 3),
|
||||||
(@CGUID+38 , @CGUID+31 , 3),
|
(@CGUID+38, @CGUID+31, 0, 0, 3),
|
||||||
(@CGUID+39 , @CGUID+31 , 3),
|
(@CGUID+39, @CGUID+31, 0, 0, 3),
|
||||||
(@CGUID+40 , @CGUID+40 , 3),
|
(@CGUID+40, @CGUID+40, 0, 0, 3),
|
||||||
(@CGUID+41 , @CGUID+40 , 3),
|
(@CGUID+41, @CGUID+40, 0, 0, 3),
|
||||||
(@CGUID+42 , @CGUID+40 , 3),
|
(@CGUID+42, @CGUID+40, 0, 0, 3),
|
||||||
(@CGUID+43 , @CGUID+40 , 3),
|
(@CGUID+43, @CGUID+40, 0, 0, 3),
|
||||||
(@CGUID+44 , @CGUID+40 , 3),
|
(@CGUID+44, @CGUID+40, 0, 0, 3),
|
||||||
(@CGUID+45 , @CGUID+40 , 3),
|
(@CGUID+45, @CGUID+40, 0, 0, 3),
|
||||||
(@CGUID+46 , @CGUID+40 , 3),
|
(@CGUID+46, @CGUID+40, 0, 0, 3),
|
||||||
(@CGUID+47 , @CGUID+40 , 3),
|
(@CGUID+47, @CGUID+40, 0, 0, 3),
|
||||||
(@CGUID+48 , @CGUID+40 , 3),
|
(@CGUID+48, @CGUID+40, 0, 0, 3),
|
||||||
(@CGUID+49 , @CGUID+49 , 3),
|
(@CGUID+49, @CGUID+49, 0, 0, 3),
|
||||||
(@CGUID+50 , @CGUID+49 , 3),
|
(@CGUID+50, @CGUID+49, 0, 0, 3),
|
||||||
(@CGUID+51 , @CGUID+49 , 3),
|
(@CGUID+51, @CGUID+49, 0, 0, 3),
|
||||||
(@CGUID+52 , @CGUID+49 , 3),
|
(@CGUID+52, @CGUID+49, 0, 0, 3),
|
||||||
(@CGUID+53 , @CGUID+49 , 3),
|
(@CGUID+53, @CGUID+49, 0, 0, 3),
|
||||||
(@CGUID+54 , @CGUID+49 , 3),
|
(@CGUID+54, @CGUID+49, 0, 0, 3),
|
||||||
(@CGUID+55 , @CGUID+49 , 3),
|
(@CGUID+55, @CGUID+49, 0, 0, 3),
|
||||||
(@CGUID+56 , @CGUID+49 , 3),
|
(@CGUID+56, @CGUID+49, 0, 0, 3),
|
||||||
(@CGUID+57 , @CGUID+49 , 3),
|
(@CGUID+57, @CGUID+49, 0, 0, 3),
|
||||||
(@CGUID+58 , @CGUID+58 , 3),
|
(@CGUID+58, @CGUID+58, 0, 0, 3),
|
||||||
(@CGUID+59 , @CGUID+58 , 3),
|
(@CGUID+59, @CGUID+58, 0, 0, 3),
|
||||||
(@CGUID+60 , @CGUID+58 , 3),
|
(@CGUID+60, @CGUID+58, 0, 0, 3),
|
||||||
(@CGUID+61 , @CGUID+58 , 3),
|
(@CGUID+61, @CGUID+58, 0, 0, 3),
|
||||||
(@CGUID+62 , @CGUID+58 , 3),
|
(@CGUID+62, @CGUID+58, 0, 0, 3),
|
||||||
(@CGUID+63 , @CGUID+58 , 3),
|
(@CGUID+63, @CGUID+58, 0, 0, 3),
|
||||||
(@CGUID+64 , @CGUID+58 , 3),
|
(@CGUID+64, @CGUID+58, 0, 0, 3),
|
||||||
(@CGUID+65 , @CGUID+58 , 3),
|
(@CGUID+65, @CGUID+58, 0, 0, 3),
|
||||||
(@CGUID+66 , @CGUID+58 , 3),
|
(@CGUID+66, @CGUID+58, 0, 0, 3),
|
||||||
(@CGUID+67 , @CGUID+67 , 3),
|
(@CGUID+67, @CGUID+67, 0, 0, 3),
|
||||||
(@CGUID+68 , @CGUID+67 , 3),
|
(@CGUID+68, @CGUID+67, 0, 0, 3),
|
||||||
(@CGUID+69 , @CGUID+67 , 3),
|
(@CGUID+69, @CGUID+67, 0, 0, 3),
|
||||||
(@CGUID+70 , @CGUID+67 , 3),
|
(@CGUID+70, @CGUID+67, 0, 0, 3),
|
||||||
(@CGUID+71 , @CGUID+67 , 3),
|
(@CGUID+71, @CGUID+67, 0, 0, 3),
|
||||||
(@CGUID+72 , @CGUID+67 , 3),
|
(@CGUID+72, @CGUID+67, 0, 0, 3),
|
||||||
(@CGUID+73 , @CGUID+67 , 3),
|
(@CGUID+73, @CGUID+67, 0, 0, 3),
|
||||||
(@CGUID+74 , @CGUID+67 , 3),
|
(@CGUID+74, @CGUID+67, 0, 0, 3),
|
||||||
(@CGUID+75 , @CGUID+67 , 3),
|
(@CGUID+75, @CGUID+67, 0, 0, 3),
|
||||||
(@CGUID+76 , @CGUID+76 , 3),
|
(@CGUID+76, @CGUID+76, 0, 0, 3),
|
||||||
(@CGUID+77 , @CGUID+76 , 3),
|
(@CGUID+77, @CGUID+76, 0, 0, 3),
|
||||||
(@CGUID+78 , @CGUID+76 , 3),
|
(@CGUID+78, @CGUID+76, 0, 0, 3),
|
||||||
(@CGUID+79 , @CGUID+76 , 3),
|
(@CGUID+79, @CGUID+76, 0, 0, 3),
|
||||||
(@CGUID+80 , @CGUID+76 , 3),
|
(@CGUID+80, @CGUID+76, 0, 0, 3),
|
||||||
(@CGUID+81 , @CGUID+76 , 3),
|
(@CGUID+81, @CGUID+76, 0, 0, 3),
|
||||||
(@CGUID+82 , @CGUID+82 , 3),
|
(@CGUID+82, @CGUID+82, 0, 0, 3),
|
||||||
(@CGUID+83 , @CGUID+82 , 3),
|
(@CGUID+83, @CGUID+82, 0, 0, 3),
|
||||||
(@CGUID+84 , @CGUID+82 , 3),
|
(@CGUID+84, @CGUID+82, 0, 0, 3),
|
||||||
(@CGUID+85 , @CGUID+82 , 3),
|
(@CGUID+85, @CGUID+82, 0, 0, 3),
|
||||||
(@CGUID+86 , @CGUID+82 , 3),
|
(@CGUID+86, @CGUID+82, 0, 0, 3),
|
||||||
(@CGUID+87 , @CGUID+82 , 3),
|
(@CGUID+87, @CGUID+82, 0, 0, 3),
|
||||||
(@CGUID+88 , @CGUID+88 , 3),
|
(@CGUID+88, @CGUID+88, 0, 0, 3),
|
||||||
(@CGUID+89 , @CGUID+88 , 3),
|
(@CGUID+89, @CGUID+88, 0, 0, 3),
|
||||||
(@CGUID+90 , @CGUID+88 , 3),
|
(@CGUID+90, @CGUID+88, 0, 0, 3),
|
||||||
(@CGUID+91 , @CGUID+88 , 3),
|
(@CGUID+91, @CGUID+88, 0, 0, 3),
|
||||||
(@CGUID+92 , @CGUID+88 , 3),
|
(@CGUID+92, @CGUID+88, 0, 0, 3),
|
||||||
(@CGUID+93 , @CGUID+88 , 3),
|
(@CGUID+93, @CGUID+88, 0, 0, 3),
|
||||||
(@CGUID+94 , @CGUID+94 , 3),
|
(@CGUID+94, @CGUID+94, 0, 0, 3),
|
||||||
(@CGUID+95 , @CGUID+94 , 3),
|
(@CGUID+95, @CGUID+94, 0, 0, 3),
|
||||||
(@CGUID+96 , @CGUID+94 , 3),
|
(@CGUID+96, @CGUID+94, 0, 0, 3),
|
||||||
(@CGUID+97 , @CGUID+94 , 3),
|
(@CGUID+97, @CGUID+94, 0, 0, 3),
|
||||||
(@CGUID+98 , @CGUID+94 , 3),
|
(@CGUID+98, @CGUID+94, 0, 0, 3),
|
||||||
(@CGUID+99 , @CGUID+94 , 3),
|
(@CGUID+99, @CGUID+94, 0, 0, 3),
|
||||||
(@CGUID+102, @CGUID+102, 3),
|
(@CGUID+102, @CGUID+102, 0, 0, 3),
|
||||||
(@CGUID+103, @CGUID+102, 3),
|
(@CGUID+103, @CGUID+102, 0, 0, 3),
|
||||||
(@CGUID+104, @CGUID+102, 3),
|
(@CGUID+104, @CGUID+102, 0, 0, 3),
|
||||||
(@CGUID+105, @CGUID+102, 3),
|
(@CGUID+105, @CGUID+102, 0, 0, 3),
|
||||||
(@CGUID+106, @CGUID+106, 3),
|
(@CGUID+106, @CGUID+106, 0, 0, 3),
|
||||||
(@CGUID+107, @CGUID+106, 3),
|
(@CGUID+107, @CGUID+106, 0, 0, 3),
|
||||||
(@CGUID+108, @CGUID+106, 3),
|
(@CGUID+108, @CGUID+106, 0, 0, 3),
|
||||||
(@CGUID+109, @CGUID+106, 3),
|
(@CGUID+109, @CGUID+106, 0, 0, 3),
|
||||||
(@CGUID+115, @CGUID+115, 3),
|
(@CGUID+115, @CGUID+115, 0, 0, 3),
|
||||||
(@CGUID+116, @CGUID+115, 3),
|
(@CGUID+116, @CGUID+115, 0, 0, 3),
|
||||||
(@CGUID+117, @CGUID+115, 3),
|
(@CGUID+117, @CGUID+115, 0, 0, 3),
|
||||||
(@CGUID+118, @CGUID+118, 3),
|
(@CGUID+118, @CGUID+118, 0, 0, 3),
|
||||||
(@CGUID+119, @CGUID+118, 3),
|
(@CGUID+119, @CGUID+118, 0, 0, 3),
|
||||||
(@CGUID+120, @CGUID+118, 3),
|
(@CGUID+120, @CGUID+118, 0, 0, 3),
|
||||||
(@CGUID+121, @CGUID+118, 3),
|
(@CGUID+121, @CGUID+118, 0, 0, 3),
|
||||||
(@CGUID+122, @CGUID+122, 3),
|
(@CGUID+122, @CGUID+122, 0, 0, 3),
|
||||||
(@CGUID+123, @CGUID+122, 3),
|
(@CGUID+123, @CGUID+122, 0, 0, 3),
|
||||||
(@CGUID+124, @CGUID+122, 3),
|
(@CGUID+124, @CGUID+122, 0, 0, 3),
|
||||||
(@CGUID+125, @CGUID+122, 3),
|
(@CGUID+125, @CGUID+122, 0, 0, 3),
|
||||||
(@CGUID+126, @CGUID+122, 3),
|
(@CGUID+126, @CGUID+122, 0, 0, 3),
|
||||||
(@CGUID+127, @CGUID+127, 3),
|
(@CGUID+127, @CGUID+127, 0, 0, 3),
|
||||||
(@CGUID+128, @CGUID+127, 3),
|
(@CGUID+128, @CGUID+127, 0, 0, 3),
|
||||||
(@CGUID+129, @CGUID+127, 3),
|
(@CGUID+129, @CGUID+127, 0, 0, 3),
|
||||||
(@CGUID+130, @CGUID+127, 3),
|
(@CGUID+130, @CGUID+127, 0, 0, 3),
|
||||||
(@CGUID+131, @CGUID+127, 3),
|
(@CGUID+131, @CGUID+127, 0, 0, 3),
|
||||||
(@CGUID+132, @CGUID+127, 3),
|
(@CGUID+132, @CGUID+127, 0, 0, 3),
|
||||||
(@CGUID+133, @CGUID+133, 3),
|
(@CGUID+133, @CGUID+133, 0, 0, 3),
|
||||||
(@CGUID+134, @CGUID+133, 3),
|
(@CGUID+134, @CGUID+133, 0, 0, 3),
|
||||||
(@CGUID+135, @CGUID+133, 3),
|
(@CGUID+135, @CGUID+133, 0, 0, 3),
|
||||||
(@CGUID+136, @CGUID+133, 3),
|
(@CGUID+136, @CGUID+133, 0, 0, 3),
|
||||||
(@CGUID+137, @CGUID+133, 3),
|
(@CGUID+137, @CGUID+133, 0, 0, 3),
|
||||||
(@CGUID+138, @CGUID+133, 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`=1 AND `link`=0;
|
||||||
UPDATE `smart_scripts` SET `action_param2`=0 WHERE `entryorguid`=21230 AND `source_type`=0 AND `id`=5 AND `link`=0;
|
UPDATE `smart_scripts` SET `action_param2`=0 WHERE `entryorguid`=21230 AND `source_type`=0 AND `id`=5 AND `link`=0;
|
||||||
|
|||||||
@@ -183,11 +183,11 @@ INSERT INTO `linked_respawn`(`guid`, `linkedGuid`, `linkType`) VALUES
|
|||||||
|
|
||||||
-- Leotheras formation
|
-- Leotheras formation
|
||||||
DELETE FROM `creature_formations` WHERE `leaderGUID` = @LEOTHERAS;
|
DELETE FROM `creature_formations` WHERE `leaderGUID` = @LEOTHERAS;
|
||||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `groupAI`) VALUES
|
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
|
||||||
(@LEOTHERAS, @LEOTHERAS, 24),
|
(@LEOTHERAS, @LEOTHERAS, 0, 0, 24),
|
||||||
(@LEOTHERAS, @LEOTHERAS+1, 24),
|
(@LEOTHERAS, @LEOTHERAS+1, 0, 0, 24),
|
||||||
(@LEOTHERAS, @LEOTHERAS+2, 24),
|
(@LEOTHERAS, @LEOTHERAS+2, 0, 0, 24),
|
||||||
(@LEOTHERAS, @LEOTHERAS+3, 24);
|
(@LEOTHERAS, @LEOTHERAS+3, 0, 0, 24);
|
||||||
|
|
||||||
SET @KARATHRESS := 153154;
|
SET @KARATHRESS := 153154;
|
||||||
DELETE FROM `linked_respawn` WHERE `linkedGuid` = @KARATHRESS;
|
DELETE FROM `linked_respawn` WHERE `linkedGuid` = @KARATHRESS;
|
||||||
|
|||||||
@@ -869,176 +869,176 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_
|
|||||||
|
|
||||||
-- Static Formations
|
-- 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);
|
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
|
-- Entrance Group 1
|
||||||
(@CGUID+3, @CGUID+3, 3),
|
(@CGUID+3, @CGUID+3, 0, 0, 3),
|
||||||
(@CGUID+4, @CGUID+3, 3),
|
(@CGUID+4, @CGUID+3, 0, 0, 3),
|
||||||
(@CGUID+5, @CGUID+3, 3),
|
(@CGUID+5, @CGUID+3, 0, 0, 3),
|
||||||
(@CGUID+6, @CGUID+3, 3),
|
(@CGUID+6, @CGUID+3, 0, 0, 3),
|
||||||
(@CGUID+7, @CGUID+3, 3),
|
(@CGUID+7, @CGUID+3, 0, 0, 3),
|
||||||
(@CGUID+8, @CGUID+3, 3),
|
(@CGUID+8, @CGUID+3, 0, 0, 3),
|
||||||
-- Entrance Group 2
|
-- Entrance Group 2
|
||||||
(@CGUID+9 , @CGUID+9, 3),
|
(@CGUID+9, @CGUID+9, 0, 0, 3),
|
||||||
(@CGUID+10, @CGUID+9, 3),
|
(@CGUID+10, @CGUID+9, 0, 0, 3),
|
||||||
(@CGUID+11, @CGUID+9, 3),
|
(@CGUID+11, @CGUID+9, 0, 0, 3),
|
||||||
(@CGUID+12, @CGUID+9, 3),
|
(@CGUID+12, @CGUID+9, 0, 0, 3),
|
||||||
(@CGUID+13, @CGUID+9, 3),
|
(@CGUID+13, @CGUID+9, 0, 0, 3),
|
||||||
(@CGUID+14, @CGUID+9, 3),
|
(@CGUID+14, @CGUID+9, 0, 0, 3),
|
||||||
-- Entrance Group 3
|
-- Entrance Group 3
|
||||||
(@CGUID+15, @CGUID+15, 3),
|
(@CGUID+15, @CGUID+15, 0, 0, 3),
|
||||||
(@CGUID+16, @CGUID+15, 3),
|
(@CGUID+16, @CGUID+15, 0, 0, 3),
|
||||||
(@CGUID+17, @CGUID+15, 3),
|
(@CGUID+17, @CGUID+15, 0, 0, 3),
|
||||||
(@CGUID+18, @CGUID+15, 3),
|
(@CGUID+18, @CGUID+15, 0, 0, 3),
|
||||||
(@CGUID+19, @CGUID+15, 3),
|
(@CGUID+19, @CGUID+15, 0, 0, 3),
|
||||||
(@CGUID+20, @CGUID+15, 3),
|
(@CGUID+20, @CGUID+15, 0, 0, 3),
|
||||||
-- Sentinel Group 1
|
-- Sentinel Group 1
|
||||||
(@CGUID+52, @CGUID+52, 3),
|
(@CGUID+52, @CGUID+52, 0, 0, 3),
|
||||||
(@CGUID+53, @CGUID+52, 3),
|
(@CGUID+53, @CGUID+52, 0, 0, 3),
|
||||||
-- Sentinel Group 2
|
-- Sentinel Group 2
|
||||||
(@CGUID+54, @CGUID+54, 3),
|
(@CGUID+54, @CGUID+54, 0, 0, 3),
|
||||||
(@CGUID+55, @CGUID+54, 3),
|
(@CGUID+55, @CGUID+54, 0, 0, 3),
|
||||||
-- Inquisitor Adds 1
|
-- Inquisitor Adds 1
|
||||||
(@CGUID+59, @CGUID+59, 3),
|
(@CGUID+59, @CGUID+59, 0, 0, 3),
|
||||||
(@CGUID+60, @CGUID+59, 3),
|
(@CGUID+60, @CGUID+59, 0, 0, 3),
|
||||||
(@CGUID+61, @CGUID+59, 3),
|
(@CGUID+61, @CGUID+59, 0, 0, 3),
|
||||||
(@CGUID+62, @CGUID+59, 3),
|
(@CGUID+62, @CGUID+59, 0, 0, 3),
|
||||||
(@CGUID+63, @CGUID+59, 3),
|
(@CGUID+63, @CGUID+59, 0, 0, 3),
|
||||||
(@CGUID+64, @CGUID+59, 3),
|
(@CGUID+64, @CGUID+59, 0, 0, 3),
|
||||||
-- Inquisitor Adds 2
|
-- Inquisitor Adds 2
|
||||||
(@CGUID+65, @CGUID+65, 3),
|
(@CGUID+65, @CGUID+65, 0, 0, 3),
|
||||||
(@CGUID+66, @CGUID+65, 3),
|
(@CGUID+66, @CGUID+65, 0, 0, 3),
|
||||||
(@CGUID+67, @CGUID+65, 3),
|
(@CGUID+67, @CGUID+65, 0, 0, 3),
|
||||||
(@CGUID+68, @CGUID+65, 3),
|
(@CGUID+68, @CGUID+65, 0, 0, 3),
|
||||||
(@CGUID+69, @CGUID+65, 3),
|
(@CGUID+69, @CGUID+65, 0, 0, 3),
|
||||||
(@CGUID+70, @CGUID+65, 3),
|
(@CGUID+70, @CGUID+65, 0, 0, 3),
|
||||||
-- Void Reaver Trash Group 1
|
-- Void Reaver Trash Group 1
|
||||||
(@CGUID+74, @CGUID+74, 3),
|
(@CGUID+74, @CGUID+74, 0, 0, 3),
|
||||||
(@CGUID+75, @CGUID+74, 3),
|
(@CGUID+75, @CGUID+74, 0, 0, 3),
|
||||||
(@CGUID+76, @CGUID+74, 3),
|
(@CGUID+76, @CGUID+74, 0, 0, 3),
|
||||||
(@CGUID+77, @CGUID+74, 3),
|
(@CGUID+77, @CGUID+74, 0, 0, 3),
|
||||||
(@CGUID+78, @CGUID+74, 3),
|
(@CGUID+78, @CGUID+74, 0, 0, 3),
|
||||||
-- Void Reaver Trash Group 2
|
-- Void Reaver Trash Group 2
|
||||||
(@CGUID+79, @CGUID+79, 3),
|
(@CGUID+79, @CGUID+79, 0, 0, 3),
|
||||||
(@CGUID+80, @CGUID+79, 3),
|
(@CGUID+80, @CGUID+79, 0, 0, 3),
|
||||||
(@CGUID+81, @CGUID+79, 3),
|
(@CGUID+81, @CGUID+79, 0, 0, 3),
|
||||||
(@CGUID+82, @CGUID+79, 3),
|
(@CGUID+82, @CGUID+79, 0, 0, 3),
|
||||||
(@CGUID+83, @CGUID+79, 3),
|
(@CGUID+83, @CGUID+79, 0, 0, 3),
|
||||||
-- Void Reaver Trash Group 3
|
-- Void Reaver Trash Group 3
|
||||||
(@CGUID+84, @CGUID+84, 3),
|
(@CGUID+84, @CGUID+84, 0, 0, 3),
|
||||||
(@CGUID+85, @CGUID+84, 3),
|
(@CGUID+85, @CGUID+84, 0, 0, 3),
|
||||||
(@CGUID+86, @CGUID+84, 3),
|
(@CGUID+86, @CGUID+84, 0, 0, 3),
|
||||||
(@CGUID+87, @CGUID+84, 3),
|
(@CGUID+87, @CGUID+84, 0, 0, 3),
|
||||||
-- Void Reaver Trash Group 4
|
-- Void Reaver Trash Group 4
|
||||||
(@CGUID+88, @CGUID+88, 3),
|
(@CGUID+88, @CGUID+88, 0, 0, 3),
|
||||||
(@CGUID+89, @CGUID+88, 3),
|
(@CGUID+89, @CGUID+88, 0, 0, 3),
|
||||||
(@CGUID+90, @CGUID+88, 3),
|
(@CGUID+90, @CGUID+88, 0, 0, 3),
|
||||||
(@CGUID+91, @CGUID+88, 3),
|
(@CGUID+91, @CGUID+88, 0, 0, 3),
|
||||||
-- Solarium Sentinel Group 1
|
-- Solarium Sentinel Group 1
|
||||||
(@CGUID+93, @CGUID+93, 3),
|
(@CGUID+93, @CGUID+93, 0, 0, 3),
|
||||||
(@CGUID+94, @CGUID+93, 3),
|
(@CGUID+94, @CGUID+93, 0, 0, 3),
|
||||||
-- Solarium Large Group 1
|
-- Solarium Large Group 1
|
||||||
(@CGUID+98 , @CGUID+98, 3),
|
(@CGUID+98, @CGUID+98, 0, 0, 3),
|
||||||
(@CGUID+99 , @CGUID+98, 3),
|
(@CGUID+99, @CGUID+98, 0, 0, 3),
|
||||||
(@CGUID+100, @CGUID+98, 3),
|
(@CGUID+100, @CGUID+98, 0, 0, 3),
|
||||||
(@CGUID+101, @CGUID+98, 3),
|
(@CGUID+101, @CGUID+98, 0, 0, 3),
|
||||||
(@CGUID+102, @CGUID+98, 3),
|
(@CGUID+102, @CGUID+98, 0, 0, 3),
|
||||||
(@CGUID+103, @CGUID+98, 3),
|
(@CGUID+103, @CGUID+98, 0, 0, 3),
|
||||||
(@CGUID+104, @CGUID+98, 3),
|
(@CGUID+104, @CGUID+98, 0, 0, 3),
|
||||||
(@CGUID+105, @CGUID+98, 3),
|
(@CGUID+105, @CGUID+98, 0, 0, 3),
|
||||||
(@CGUID+106, @CGUID+98, 3),
|
(@CGUID+106, @CGUID+98, 0, 0, 3),
|
||||||
(@CGUID+107, @CGUID+98, 3),
|
(@CGUID+107, @CGUID+98, 0, 0, 3),
|
||||||
(@CGUID+108, @CGUID+98, 3),
|
(@CGUID+108, @CGUID+98, 0, 0, 3),
|
||||||
(@CGUID+109, @CGUID+98, 3),
|
(@CGUID+109, @CGUID+98, 0, 0, 3),
|
||||||
-- Solarium Large Group 2
|
-- Solarium Large Group 2
|
||||||
(@CGUID+110, @CGUID+110, 3),
|
(@CGUID+110, @CGUID+110, 0, 0, 3),
|
||||||
(@CGUID+111, @CGUID+110, 3),
|
(@CGUID+111, @CGUID+110, 0, 0, 3),
|
||||||
(@CGUID+112, @CGUID+110, 3),
|
(@CGUID+112, @CGUID+110, 0, 0, 3),
|
||||||
(@CGUID+113, @CGUID+110, 3),
|
(@CGUID+113, @CGUID+110, 0, 0, 3),
|
||||||
(@CGUID+114, @CGUID+110, 3),
|
(@CGUID+114, @CGUID+110, 0, 0, 3),
|
||||||
(@CGUID+115, @CGUID+110, 3),
|
(@CGUID+115, @CGUID+110, 0, 0, 3),
|
||||||
(@CGUID+116, @CGUID+110, 3),
|
(@CGUID+116, @CGUID+110, 0, 0, 3),
|
||||||
(@CGUID+117, @CGUID+110, 3),
|
(@CGUID+117, @CGUID+110, 0, 0, 3),
|
||||||
(@CGUID+118, @CGUID+110, 3),
|
(@CGUID+118, @CGUID+110, 0, 0, 3),
|
||||||
(@CGUID+119, @CGUID+110, 3),
|
(@CGUID+119, @CGUID+110, 0, 0, 3),
|
||||||
(@CGUID+120, @CGUID+110, 3),
|
(@CGUID+120, @CGUID+110, 0, 0, 3),
|
||||||
(@CGUID+121, @CGUID+110, 3),
|
(@CGUID+121, @CGUID+110, 0, 0, 3),
|
||||||
-- Inquisitor Adds 3
|
-- Inquisitor Adds 3
|
||||||
(@CGUID+125, @CGUID+125, 3),
|
(@CGUID+125, @CGUID+125, 0, 0, 3),
|
||||||
(@CGUID+126, @CGUID+125, 3),
|
(@CGUID+126, @CGUID+125, 0, 0, 3),
|
||||||
(@CGUID+127, @CGUID+125, 3),
|
(@CGUID+127, @CGUID+125, 0, 0, 3),
|
||||||
(@CGUID+128, @CGUID+125, 3),
|
(@CGUID+128, @CGUID+125, 0, 0, 3),
|
||||||
(@CGUID+129, @CGUID+125, 3),
|
(@CGUID+129, @CGUID+125, 0, 0, 3),
|
||||||
(@CGUID+130, @CGUID+125, 3),
|
(@CGUID+130, @CGUID+125, 0, 0, 3),
|
||||||
-- Inquisitor Adds 4
|
-- Inquisitor Adds 4
|
||||||
(@CGUID+131, @CGUID+131, 3),
|
(@CGUID+131, @CGUID+131, 0, 0, 3),
|
||||||
(@CGUID+132, @CGUID+131, 3),
|
(@CGUID+132, @CGUID+131, 0, 0, 3),
|
||||||
(@CGUID+133, @CGUID+131, 3),
|
(@CGUID+133, @CGUID+131, 0, 0, 3),
|
||||||
(@CGUID+134, @CGUID+131, 3),
|
(@CGUID+134, @CGUID+131, 0, 0, 3),
|
||||||
(@CGUID+135, @CGUID+131, 3),
|
(@CGUID+135, @CGUID+131, 0, 0, 3),
|
||||||
(@CGUID+136, @CGUID+131, 3),
|
(@CGUID+136, @CGUID+131, 0, 0, 3),
|
||||||
-- Solarian Adds 1
|
-- Solarian Adds 1
|
||||||
(@CGUID+143, @CGUID+143, 3),
|
(@CGUID+143, @CGUID+143, 0, 0, 3),
|
||||||
(@CGUID+144, @CGUID+143, 3),
|
(@CGUID+144, @CGUID+143, 0, 0, 3),
|
||||||
(@CGUID+145, @CGUID+143, 3),
|
(@CGUID+145, @CGUID+143, 0, 0, 3),
|
||||||
(@CGUID+146, @CGUID+143, 3),
|
(@CGUID+146, @CGUID+143, 0, 0, 3),
|
||||||
(@CGUID+147, @CGUID+143, 3),
|
(@CGUID+147, @CGUID+143, 0, 0, 3),
|
||||||
(@CGUID+148, @CGUID+143, 3),
|
(@CGUID+148, @CGUID+143, 0, 0, 3),
|
||||||
-- Solarian Adds 2
|
-- Solarian Adds 2
|
||||||
(@CGUID+149, @CGUID+149, 3),
|
(@CGUID+149, @CGUID+149, 0, 0, 3),
|
||||||
(@CGUID+150, @CGUID+149, 3),
|
(@CGUID+150, @CGUID+149, 0, 0, 3),
|
||||||
(@CGUID+151, @CGUID+149, 3),
|
(@CGUID+151, @CGUID+149, 0, 0, 3),
|
||||||
(@CGUID+152, @CGUID+149, 3),
|
(@CGUID+152, @CGUID+149, 0, 0, 3),
|
||||||
(@CGUID+153, @CGUID+149, 3),
|
(@CGUID+153, @CGUID+149, 0, 0, 3),
|
||||||
(@CGUID+154, @CGUID+149, 3),
|
(@CGUID+154, @CGUID+149, 0, 0, 3),
|
||||||
-- Solarian Adds 3
|
-- Solarian Adds 3
|
||||||
(@CGUID+155, @CGUID+155, 3),
|
(@CGUID+155, @CGUID+155, 0, 0, 3),
|
||||||
(@CGUID+156, @CGUID+155, 3),
|
(@CGUID+156, @CGUID+155, 0, 0, 3),
|
||||||
(@CGUID+157, @CGUID+155, 3),
|
(@CGUID+157, @CGUID+155, 0, 0, 3),
|
||||||
(@CGUID+158, @CGUID+155, 3),
|
(@CGUID+158, @CGUID+155, 0, 0, 3),
|
||||||
(@CGUID+159, @CGUID+155, 3),
|
(@CGUID+159, @CGUID+155, 0, 0, 3),
|
||||||
(@CGUID+160, @CGUID+155, 3),
|
(@CGUID+160, @CGUID+155, 0, 0, 3),
|
||||||
-- Solarian Adds 4
|
-- Solarian Adds 4
|
||||||
(@CGUID+161, @CGUID+161, 3),
|
(@CGUID+161, @CGUID+161, 0, 0, 3),
|
||||||
(@CGUID+162, @CGUID+161, 3),
|
(@CGUID+162, @CGUID+161, 0, 0, 3),
|
||||||
(@CGUID+163, @CGUID+161, 3),
|
(@CGUID+163, @CGUID+161, 0, 0, 3),
|
||||||
(@CGUID+164, @CGUID+161, 3),
|
(@CGUID+164, @CGUID+161, 0, 0, 3),
|
||||||
(@CGUID+165, @CGUID+161, 3),
|
(@CGUID+165, @CGUID+161, 0, 0, 3),
|
||||||
(@CGUID+166, @CGUID+161, 3),
|
(@CGUID+166, @CGUID+161, 0, 0, 3),
|
||||||
-- Solarian Adds 5
|
-- Solarian Adds 5
|
||||||
(@CGUID+167, @CGUID+167, 3),
|
(@CGUID+167, @CGUID+167, 0, 0, 3),
|
||||||
(@CGUID+168, @CGUID+167, 3),
|
(@CGUID+168, @CGUID+167, 0, 0, 3),
|
||||||
(@CGUID+169, @CGUID+167, 3),
|
(@CGUID+169, @CGUID+167, 0, 0, 3),
|
||||||
(@CGUID+170, @CGUID+167, 3),
|
(@CGUID+170, @CGUID+167, 0, 0, 3),
|
||||||
(@CGUID+171, @CGUID+167, 3),
|
(@CGUID+171, @CGUID+167, 0, 0, 3),
|
||||||
(@CGUID+172, @CGUID+167, 3),
|
(@CGUID+172, @CGUID+167, 0, 0, 3),
|
||||||
-- Solarian Adds 6
|
-- Solarian Adds 6
|
||||||
(@CGUID+173, @CGUID+173, 3),
|
(@CGUID+173, @CGUID+173, 0, 0, 3),
|
||||||
(@CGUID+174, @CGUID+173, 3),
|
(@CGUID+174, @CGUID+173, 0, 0, 3),
|
||||||
(@CGUID+175, @CGUID+173, 3),
|
(@CGUID+175, @CGUID+173, 0, 0, 3),
|
||||||
(@CGUID+176, @CGUID+173, 3),
|
(@CGUID+176, @CGUID+173, 0, 0, 3),
|
||||||
(@CGUID+177, @CGUID+173, 3),
|
(@CGUID+177, @CGUID+173, 0, 0, 3),
|
||||||
(@CGUID+178, @CGUID+173, 3),
|
(@CGUID+178, @CGUID+173, 0, 0, 3),
|
||||||
-- Kael Trash 1
|
-- Kael Trash 1
|
||||||
(@CGUID+180, @CGUID+180, 3),
|
(@CGUID+180, @CGUID+180, 0, 0, 3),
|
||||||
(@CGUID+181, @CGUID+180, 3),
|
(@CGUID+181, @CGUID+180, 0, 0, 3),
|
||||||
(@CGUID+182, @CGUID+180, 3),
|
(@CGUID+182, @CGUID+180, 0, 0, 3),
|
||||||
(@CGUID+183, @CGUID+180, 3),
|
(@CGUID+183, @CGUID+180, 0, 0, 3),
|
||||||
-- Kael Trash 2
|
-- Kael Trash 2
|
||||||
(@CGUID+184, @CGUID+184, 3),
|
(@CGUID+184, @CGUID+184, 0, 0, 3),
|
||||||
(@CGUID+185, @CGUID+184, 3),
|
(@CGUID+185, @CGUID+184, 0, 0, 3),
|
||||||
(@CGUID+186, @CGUID+184, 3),
|
(@CGUID+186, @CGUID+184, 0, 0, 3),
|
||||||
(@CGUID+187, @CGUID+184, 3),
|
(@CGUID+187, @CGUID+184, 0, 0, 3),
|
||||||
-- Kael Trash 3
|
-- Kael Trash 3
|
||||||
(@CGUID+188, @CGUID+188, 3),
|
(@CGUID+188, @CGUID+188, 0, 0, 3),
|
||||||
(@CGUID+189, @CGUID+188, 3),
|
(@CGUID+189, @CGUID+188, 0, 0, 3),
|
||||||
(@CGUID+190, @CGUID+188, 3),
|
(@CGUID+190, @CGUID+188, 0, 0, 3),
|
||||||
(@CGUID+191, @CGUID+188, 3),
|
(@CGUID+191, @CGUID+188, 0, 0, 3),
|
||||||
-- Kael & Advisors
|
-- Kael & Advisors
|
||||||
(@CGUID+218, @CGUID+218, 24),
|
(@CGUID+218, @CGUID+218, 0, 0, 24),
|
||||||
(@CGUID+219, @CGUID+218, 24),
|
(@CGUID+219, @CGUID+218, 0, 0, 24),
|
||||||
(@CGUID+220, @CGUID+218, 24),
|
(@CGUID+220, @CGUID+218, 0, 0, 24),
|
||||||
(@CGUID+221, @CGUID+218, 24),
|
(@CGUID+221, @CGUID+218, 0, 0, 24),
|
||||||
(@CGUID+222, @CGUID+218, 24);
|
(@CGUID+222, @CGUID+218, 0, 0, 24);
|
||||||
|
|
||||||
-- Update SheatheState en masse
|
-- 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);
|
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);
|
||||||
|
|||||||
@@ -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
|
-- 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);
|
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
|
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `dist`, `angle`, `groupAI`) VALUES
|
||||||
(@CGUID+1 , @CGUID+1 , 3),
|
(@CGUID+1, @CGUID+1, 0, 0, 3),
|
||||||
(@CGUID+2 , @CGUID+1 , 3),
|
(@CGUID+2, @CGUID+1, 0, 0, 3),
|
||||||
(@CGUID+3 , @CGUID+1 , 3),
|
(@CGUID+3, @CGUID+1, 0, 0, 3),
|
||||||
(@CGUID+4 , @CGUID+4 , 3),
|
(@CGUID+4, @CGUID+4, 0, 0, 3),
|
||||||
(@CGUID+5 , @CGUID+4 , 3),
|
(@CGUID+5, @CGUID+4, 0, 0, 3),
|
||||||
(@CGUID+6 , @CGUID+4 , 3),
|
(@CGUID+6, @CGUID+4, 0, 0, 3),
|
||||||
(@CGUID+7 , @CGUID+7 , 3),
|
(@CGUID+7, @CGUID+7, 0, 0, 3),
|
||||||
(@CGUID+8 , @CGUID+7 , 3),
|
(@CGUID+8, @CGUID+7, 0, 0, 3),
|
||||||
(@CGUID+9 , @CGUID+7 , 3),
|
(@CGUID+9, @CGUID+7, 0, 0, 3),
|
||||||
(@CGUID+10 , @CGUID+10 , 3),
|
(@CGUID+10, @CGUID+10, 0, 0, 3),
|
||||||
(@CGUID+11 , @CGUID+10 , 3),
|
(@CGUID+11, @CGUID+10, 0, 0, 3),
|
||||||
(@CGUID+12 , @CGUID+10 , 3),
|
(@CGUID+12, @CGUID+10, 0, 0, 3),
|
||||||
(@CGUID+23 , @CGUID+23 , 3),
|
(@CGUID+23, @CGUID+23, 0, 0, 3),
|
||||||
(@CGUID+24 , @CGUID+23 , 3),
|
(@CGUID+24, @CGUID+23, 0, 0, 3),
|
||||||
(@CGUID+25 , @CGUID+23 , 3),
|
(@CGUID+25, @CGUID+23, 0, 0, 3),
|
||||||
(@CGUID+26 , @CGUID+23 , 3),
|
(@CGUID+26, @CGUID+23, 0, 0, 3),
|
||||||
(@CGUID+27 , @CGUID+23 , 3),
|
(@CGUID+27, @CGUID+23, 0, 0, 3),
|
||||||
(@CGUID+28 , @CGUID+23 , 3),
|
(@CGUID+28, @CGUID+23, 0, 0, 3),
|
||||||
(@CGUID+29 , @CGUID+23 , 3),
|
(@CGUID+29, @CGUID+23, 0, 0, 3),
|
||||||
(@CGUID+30 , @CGUID+23 , 3),
|
(@CGUID+30, @CGUID+23, 0, 0, 3),
|
||||||
(@CGUID+31 , @CGUID+23 , 3),
|
(@CGUID+31, @CGUID+23, 0, 0, 3),
|
||||||
(@CGUID+32 , @CGUID+23 , 3),
|
(@CGUID+32, @CGUID+23, 0, 0, 3),
|
||||||
(@CGUID+33 , @CGUID+33 , 3),
|
(@CGUID+33, @CGUID+33, 0, 0, 3),
|
||||||
(@CGUID+34 , @CGUID+33 , 3),
|
(@CGUID+34, @CGUID+33, 0, 0, 3),
|
||||||
(@CGUID+35 , @CGUID+33 , 3),
|
(@CGUID+35, @CGUID+33, 0, 0, 3),
|
||||||
(@CGUID+36 , @CGUID+33 , 3),
|
(@CGUID+36, @CGUID+33, 0, 0, 3),
|
||||||
(@CGUID+37 , @CGUID+33 , 3),
|
(@CGUID+37, @CGUID+33, 0, 0, 3),
|
||||||
(@CGUID+38 , @CGUID+33 , 3),
|
(@CGUID+38, @CGUID+33, 0, 0, 3),
|
||||||
(@CGUID+39 , @CGUID+33 , 3),
|
(@CGUID+39, @CGUID+33, 0, 0, 3),
|
||||||
(@CGUID+40 , @CGUID+33 , 3),
|
(@CGUID+40, @CGUID+33, 0, 0, 3),
|
||||||
(@CGUID+41 , @CGUID+33 , 3),
|
(@CGUID+41, @CGUID+33, 0, 0, 3),
|
||||||
(@CGUID+42 , @CGUID+33 , 3),
|
(@CGUID+42, @CGUID+33, 0, 0, 3),
|
||||||
(@CGUID+43 , @CGUID+43 , 3),
|
(@CGUID+43, @CGUID+43, 0, 0, 3),
|
||||||
(@CGUID+44 , @CGUID+43 , 3),
|
(@CGUID+44, @CGUID+43, 0, 0, 3),
|
||||||
(@CGUID+45 , @CGUID+43 , 3),
|
(@CGUID+45, @CGUID+43, 0, 0, 3),
|
||||||
(@CGUID+46 , @CGUID+43 , 3),
|
(@CGUID+46, @CGUID+43, 0, 0, 3),
|
||||||
(@CGUID+47 , @CGUID+43 , 3),
|
(@CGUID+47, @CGUID+43, 0, 0, 3),
|
||||||
(@CGUID+48 , @CGUID+43 , 3),
|
(@CGUID+48, @CGUID+43, 0, 0, 3),
|
||||||
(@CGUID+49 , @CGUID+49 , 3),
|
(@CGUID+49, @CGUID+49, 0, 0, 3),
|
||||||
(@CGUID+50 , @CGUID+49 , 3),
|
(@CGUID+50, @CGUID+49, 0, 0, 3),
|
||||||
(@CGUID+51 , @CGUID+49 , 3),
|
(@CGUID+51, @CGUID+49, 0, 0, 3),
|
||||||
(@CGUID+52 , @CGUID+49 , 3),
|
(@CGUID+52, @CGUID+49, 0, 0, 3),
|
||||||
(@CGUID+53 , @CGUID+49 , 3),
|
(@CGUID+53, @CGUID+49, 0, 0, 3),
|
||||||
(@CGUID+54 , @CGUID+49 , 3),
|
(@CGUID+54, @CGUID+49, 0, 0, 3),
|
||||||
(@CGUID+62 , @CGUID+62 , 27),
|
(@CGUID+62, @CGUID+62, 0, 0, 27),
|
||||||
(@CGUID+63 , @CGUID+62 , 27),
|
(@CGUID+63, @CGUID+62, 0, 0, 27),
|
||||||
(@CGUID+64 , @CGUID+62 , 27),
|
(@CGUID+64, @CGUID+62, 0, 0, 27),
|
||||||
(@CGUID+65 , @CGUID+65 , 3),
|
(@CGUID+65, @CGUID+65, 0, 0, 3),
|
||||||
(@CGUID+66 , @CGUID+65 , 3),
|
(@CGUID+66, @CGUID+65, 0, 0, 3),
|
||||||
(@CGUID+67 , @CGUID+65 , 3),
|
(@CGUID+67, @CGUID+65, 0, 0, 3),
|
||||||
(@CGUID+68 , @CGUID+65 , 3),
|
(@CGUID+68, @CGUID+65, 0, 0, 3),
|
||||||
(@CGUID+69 , @CGUID+65 , 3),
|
(@CGUID+69, @CGUID+65, 0, 0, 3),
|
||||||
(@CGUID+70 , @CGUID+65 , 3),
|
(@CGUID+70, @CGUID+65, 0, 0, 3),
|
||||||
(@CGUID+71 , @CGUID+65 , 3),
|
(@CGUID+71, @CGUID+65, 0, 0, 3),
|
||||||
(@CGUID+74 , @CGUID+74 , 3),
|
(@CGUID+74, @CGUID+74, 0, 0, 3),
|
||||||
(@CGUID+75 , @CGUID+74 , 3),
|
(@CGUID+75, @CGUID+74, 0, 0, 3),
|
||||||
(@CGUID+76 , @CGUID+74 , 3),
|
(@CGUID+76, @CGUID+74, 0, 0, 3),
|
||||||
(@CGUID+77 , @CGUID+74 , 3),
|
(@CGUID+77, @CGUID+74, 0, 0, 3),
|
||||||
(@CGUID+78 , @CGUID+74 , 3),
|
(@CGUID+78, @CGUID+74, 0, 0, 3),
|
||||||
(@CGUID+79 , @CGUID+74 , 3),
|
(@CGUID+79, @CGUID+74, 0, 0, 3),
|
||||||
(@CGUID+82 , @CGUID+82 , 3),
|
(@CGUID+82, @CGUID+82, 0, 0, 3),
|
||||||
(@CGUID+83 , @CGUID+82 , 3),
|
(@CGUID+83, @CGUID+82, 0, 0, 3),
|
||||||
(@CGUID+84 , @CGUID+82 , 3),
|
(@CGUID+84, @CGUID+82, 0, 0, 3),
|
||||||
(@CGUID+85 , @CGUID+82 , 3),
|
(@CGUID+85, @CGUID+82, 0, 0, 3),
|
||||||
(@CGUID+86 , @CGUID+82 , 3),
|
(@CGUID+86, @CGUID+82, 0, 0, 3),
|
||||||
(@CGUID+87 , @CGUID+87 , 3),
|
(@CGUID+87, @CGUID+87, 0, 0, 3),
|
||||||
(@CGUID+88 , @CGUID+87 , 3),
|
(@CGUID+88, @CGUID+87, 0, 0, 3),
|
||||||
(@CGUID+89 , @CGUID+87 , 3),
|
(@CGUID+89, @CGUID+87, 0, 0, 3),
|
||||||
(@CGUID+90 , @CGUID+87 , 3),
|
(@CGUID+90, @CGUID+87, 0, 0, 3),
|
||||||
(@CGUID+91 , @CGUID+87 , 3),
|
(@CGUID+91, @CGUID+87, 0, 0, 3),
|
||||||
(@CGUID+92 , @CGUID+87 , 3),
|
(@CGUID+92, @CGUID+87, 0, 0, 3),
|
||||||
(@CGUID+93 , @CGUID+87 , 3),
|
(@CGUID+93, @CGUID+87, 0, 0, 3),
|
||||||
(@CGUID+94 , @CGUID+94 , 3),
|
(@CGUID+94, @CGUID+94, 0, 0, 3),
|
||||||
(@CGUID+95 , @CGUID+94 , 3),
|
(@CGUID+95, @CGUID+94, 0, 0, 3),
|
||||||
(@CGUID+96 , @CGUID+94 , 3),
|
(@CGUID+96, @CGUID+94, 0, 0, 3),
|
||||||
(@CGUID+97 , @CGUID+94 , 3),
|
(@CGUID+97, @CGUID+94, 0, 0, 3),
|
||||||
(@CGUID+98 , @CGUID+94 , 3),
|
(@CGUID+98, @CGUID+94, 0, 0, 3),
|
||||||
(@CGUID+99 , @CGUID+94 , 3),
|
(@CGUID+99, @CGUID+94, 0, 0, 3),
|
||||||
(@CGUID+146, @CGUID+146, 3),
|
(@CGUID+146, @CGUID+146, 0, 0, 3),
|
||||||
(@CGUID+147, @CGUID+146, 3),
|
(@CGUID+147, @CGUID+146, 0, 0, 3),
|
||||||
(@CGUID+148, @CGUID+146, 3),
|
(@CGUID+148, @CGUID+146, 0, 0, 3),
|
||||||
(@CGUID+149, @CGUID+146, 3),
|
(@CGUID+149, @CGUID+146, 0, 0, 3),
|
||||||
(@CGUID+150, @CGUID+146, 3),
|
(@CGUID+150, @CGUID+146, 0, 0, 3),
|
||||||
(@CGUID+151, @CGUID+146, 3),
|
(@CGUID+151, @CGUID+146, 0, 0, 3),
|
||||||
(@CGUID+152, @CGUID+152, 3),
|
(@CGUID+152, @CGUID+152, 0, 0, 3),
|
||||||
(@CGUID+153, @CGUID+152, 3),
|
(@CGUID+153, @CGUID+152, 0, 0, 3),
|
||||||
(@CGUID+154, @CGUID+152, 3),
|
(@CGUID+154, @CGUID+152, 0, 0, 3),
|
||||||
(@CGUID+155, @CGUID+152, 3),
|
(@CGUID+155, @CGUID+152, 0, 0, 3),
|
||||||
(@CGUID+156, @CGUID+152, 3),
|
(@CGUID+156, @CGUID+152, 0, 0, 3),
|
||||||
(@CGUID+157, @CGUID+152, 3),
|
(@CGUID+157, @CGUID+152, 0, 0, 3),
|
||||||
(@CGUID+158, @CGUID+158, 3),
|
(@CGUID+158, @CGUID+158, 0, 0, 3),
|
||||||
(@CGUID+159, @CGUID+158, 3),
|
(@CGUID+159, @CGUID+158, 0, 0, 3),
|
||||||
(@CGUID+160, @CGUID+158, 3),
|
(@CGUID+160, @CGUID+158, 0, 0, 3),
|
||||||
(@CGUID+161, @CGUID+158, 3),
|
(@CGUID+161, @CGUID+158, 0, 0, 3),
|
||||||
(@CGUID+162, @CGUID+158, 3),
|
(@CGUID+162, @CGUID+158, 0, 0, 3),
|
||||||
(@CGUID+163, @CGUID+158, 3),
|
(@CGUID+163, @CGUID+158, 0, 0, 3),
|
||||||
(@CGUID+164, @CGUID+164, 3),
|
(@CGUID+164, @CGUID+164, 0, 0, 3),
|
||||||
(@CGUID+165, @CGUID+164, 3),
|
(@CGUID+165, @CGUID+164, 0, 0, 3),
|
||||||
(@CGUID+166, @CGUID+164, 3),
|
(@CGUID+166, @CGUID+164, 0, 0, 3),
|
||||||
(@CGUID+167, @CGUID+164, 3),
|
(@CGUID+167, @CGUID+164, 0, 0, 3),
|
||||||
(@CGUID+168, @CGUID+164, 3),
|
(@CGUID+168, @CGUID+164, 0, 0, 3),
|
||||||
(@CGUID+169, @CGUID+164, 3),
|
(@CGUID+169, @CGUID+164, 0, 0, 3),
|
||||||
(@CGUID+170, @CGUID+170, 3),
|
(@CGUID+170, @CGUID+170, 0, 0, 3),
|
||||||
(@CGUID+171, @CGUID+170, 3),
|
(@CGUID+171, @CGUID+170, 0, 0, 3),
|
||||||
(@CGUID+172, @CGUID+170, 3),
|
(@CGUID+172, @CGUID+170, 0, 0, 3),
|
||||||
(@CGUID+173, @CGUID+170, 3),
|
(@CGUID+173, @CGUID+170, 0, 0, 3),
|
||||||
(@CGUID+174, @CGUID+170, 3),
|
(@CGUID+174, @CGUID+170, 0, 0, 3),
|
||||||
(@CGUID+175, @CGUID+170, 3),
|
(@CGUID+175, @CGUID+170, 0, 0, 3),
|
||||||
(@CGUID+188, @CGUID+188, 3),
|
(@CGUID+188, @CGUID+188, 0, 0, 3),
|
||||||
(@CGUID+189, @CGUID+188, 3),
|
(@CGUID+189, @CGUID+188, 0, 0, 3),
|
||||||
(@CGUID+190, @CGUID+190, 3),
|
(@CGUID+190, @CGUID+190, 0, 0, 3),
|
||||||
(@CGUID+191, @CGUID+190, 3),
|
(@CGUID+191, @CGUID+190, 0, 0, 3),
|
||||||
(@CGUID+192, @CGUID+192, 3),
|
(@CGUID+192, @CGUID+192, 0, 0, 3),
|
||||||
(@CGUID+193, @CGUID+192, 3),
|
(@CGUID+193, @CGUID+192, 0, 0, 3),
|
||||||
(@CGUID+194, @CGUID+194, 3),
|
(@CGUID+194, @CGUID+194, 0, 0, 3),
|
||||||
(@CGUID+195, @CGUID+194, 3),
|
(@CGUID+195, @CGUID+194, 0, 0, 3),
|
||||||
(@CGUID+196, @CGUID+196, 3),
|
(@CGUID+196, @CGUID+196, 0, 0, 3),
|
||||||
(@CGUID+197, @CGUID+196, 3),
|
(@CGUID+197, @CGUID+196, 0, 0, 3),
|
||||||
(@CGUID+198, @CGUID+198, 3),
|
(@CGUID+198, @CGUID+198, 0, 0, 3),
|
||||||
(@CGUID+199, @CGUID+198, 3),
|
(@CGUID+199, @CGUID+198, 0, 0, 3),
|
||||||
(@CGUID+200, @CGUID+198, 3),
|
(@CGUID+200, @CGUID+198, 0, 0, 3),
|
||||||
(@CGUID+201, @CGUID+198, 3),
|
(@CGUID+201, @CGUID+198, 0, 0, 3),
|
||||||
(@CGUID+202, @CGUID+198, 3),
|
(@CGUID+202, @CGUID+198, 0, 0, 3),
|
||||||
(@CGUID+203, @CGUID+198, 3),
|
(@CGUID+203, @CGUID+198, 0, 0, 3),
|
||||||
(@CGUID+204, @CGUID+198, 3),
|
(@CGUID+204, @CGUID+198, 0, 0, 3),
|
||||||
(@CGUID+205, @CGUID+198, 3),
|
(@CGUID+205, @CGUID+198, 0, 0, 3),
|
||||||
(@CGUID+206, @CGUID+206, 3),
|
(@CGUID+206, @CGUID+206, 0, 0, 3),
|
||||||
(@CGUID+207, @CGUID+206, 3),
|
(@CGUID+207, @CGUID+206, 0, 0, 3),
|
||||||
(@CGUID+208, @CGUID+206, 3),
|
(@CGUID+208, @CGUID+206, 0, 0, 3),
|
||||||
(@CGUID+209, @CGUID+206, 3),
|
(@CGUID+209, @CGUID+206, 0, 0, 3),
|
||||||
(@CGUID+210, @CGUID+206, 3),
|
(@CGUID+210, @CGUID+206, 0, 0, 3),
|
||||||
(@CGUID+211, @CGUID+206, 3),
|
(@CGUID+211, @CGUID+206, 0, 0, 3),
|
||||||
(@CGUID+212, @CGUID+206, 3),
|
(@CGUID+212, @CGUID+206, 0, 0, 3),
|
||||||
(@CGUID+213, @CGUID+206, 3),
|
(@CGUID+213, @CGUID+206, 0, 0, 3),
|
||||||
(@CGUID+222, @CGUID+222, 3),
|
(@CGUID+222, @CGUID+222, 0, 0, 3),
|
||||||
(@CGUID+223, @CGUID+222, 3),
|
(@CGUID+223, @CGUID+222, 0, 0, 3),
|
||||||
(@CGUID+224, @CGUID+222, 3),
|
(@CGUID+224, @CGUID+222, 0, 0, 3),
|
||||||
(@CGUID+225, @CGUID+222, 3),
|
(@CGUID+225, @CGUID+222, 0, 0, 3),
|
||||||
(@CGUID+226, @CGUID+226, 3),
|
(@CGUID+226, @CGUID+226, 0, 0, 3),
|
||||||
(@CGUID+227, @CGUID+226, 3),
|
(@CGUID+227, @CGUID+226, 0, 0, 3),
|
||||||
(@CGUID+228, @CGUID+226, 3),
|
(@CGUID+228, @CGUID+226, 0, 0, 3),
|
||||||
(@CGUID+229, @CGUID+226, 3),
|
(@CGUID+229, @CGUID+226, 0, 0, 3),
|
||||||
(@CGUID+253, @CGUID+253, 3),
|
(@CGUID+253, @CGUID+253, 0, 0, 3),
|
||||||
(@CGUID+254, @CGUID+253, 3),
|
(@CGUID+254, @CGUID+253, 0, 0, 3),
|
||||||
(@CGUID+255, @CGUID+253, 3),
|
(@CGUID+255, @CGUID+253, 0, 0, 3),
|
||||||
(@CGUID+256, @CGUID+253, 3),
|
(@CGUID+256, @CGUID+253, 0, 0, 3),
|
||||||
(@CGUID+266, @CGUID+266, 3),
|
(@CGUID+266, @CGUID+266, 0, 0, 3),
|
||||||
(@CGUID+267, @CGUID+266, 3),
|
(@CGUID+267, @CGUID+266, 0, 0, 3),
|
||||||
(@CGUID+268, @CGUID+266, 3),
|
(@CGUID+268, @CGUID+266, 0, 0, 3),
|
||||||
(@CGUID+269, @CGUID+266, 3),
|
(@CGUID+269, @CGUID+266, 0, 0, 3),
|
||||||
(@CGUID+270, @CGUID+266, 3),
|
(@CGUID+270, @CGUID+266, 0, 0, 3),
|
||||||
(@CGUID+271, @CGUID+266, 3),
|
(@CGUID+271, @CGUID+266, 0, 0, 3),
|
||||||
(@CGUID+272, @CGUID+266, 3),
|
(@CGUID+272, @CGUID+266, 0, 0, 3),
|
||||||
(@CGUID+273, @CGUID+273, 3),
|
(@CGUID+273, @CGUID+273, 0, 0, 3),
|
||||||
(@CGUID+274, @CGUID+273, 3),
|
(@CGUID+274, @CGUID+273, 0, 0, 3),
|
||||||
(@CGUID+275, @CGUID+273, 3),
|
(@CGUID+275, @CGUID+273, 0, 0, 3),
|
||||||
(@CGUID+276, @CGUID+273, 3),
|
(@CGUID+276, @CGUID+273, 0, 0, 3),
|
||||||
(@CGUID+277, @CGUID+273, 3),
|
(@CGUID+277, @CGUID+273, 0, 0, 3),
|
||||||
(@CGUID+278, @CGUID+273, 3),
|
(@CGUID+278, @CGUID+273, 0, 0, 3),
|
||||||
(@CGUID+279, @CGUID+273, 3),
|
(@CGUID+279, @CGUID+273, 0, 0, 3),
|
||||||
(@CGUID+280, @CGUID+280, 3),
|
(@CGUID+280, @CGUID+280, 0, 0, 3),
|
||||||
(@CGUID+281, @CGUID+280, 3),
|
(@CGUID+281, @CGUID+280, 0, 0, 3),
|
||||||
(@CGUID+282, @CGUID+280, 3),
|
(@CGUID+282, @CGUID+280, 0, 0, 3),
|
||||||
(@CGUID+283, @CGUID+280, 3),
|
(@CGUID+283, @CGUID+280, 0, 0, 3),
|
||||||
(@CGUID+284, @CGUID+280, 3),
|
(@CGUID+284, @CGUID+280, 0, 0, 3),
|
||||||
(@CGUID+287, @CGUID+287, 3),
|
(@CGUID+287, @CGUID+287, 0, 0, 3),
|
||||||
(@CGUID+289, @CGUID+287, 3),
|
(@CGUID+289, @CGUID+287, 0, 0, 3),
|
||||||
(@CGUID+290, @CGUID+287, 3),
|
(@CGUID+290, @CGUID+287, 0, 0, 3),
|
||||||
(@CGUID+291, @CGUID+287, 3),
|
(@CGUID+291, @CGUID+287, 0, 0, 3),
|
||||||
(@CGUID+292, @CGUID+287, 3),
|
(@CGUID+292, @CGUID+287, 0, 0, 3),
|
||||||
(@CGUID+293, @CGUID+287, 3),
|
(@CGUID+293, @CGUID+287, 0, 0, 3),
|
||||||
(@CGUID+294, @CGUID+287, 3),
|
(@CGUID+294, @CGUID+287, 0, 0, 3),
|
||||||
(@CGUID+295, @CGUID+287, 3),
|
(@CGUID+295, @CGUID+287, 0, 0, 3),
|
||||||
(@CGUID+296, @CGUID+287, 3),
|
(@CGUID+296, @CGUID+287, 0, 0, 3),
|
||||||
(@CGUID+297, @CGUID+297, 3),
|
(@CGUID+297, @CGUID+297, 0, 0, 3),
|
||||||
(@CGUID+298, @CGUID+297, 3),
|
(@CGUID+298, @CGUID+297, 0, 0, 3),
|
||||||
(@CGUID+299, @CGUID+297, 3),
|
(@CGUID+299, @CGUID+297, 0, 0, 3),
|
||||||
(@CGUID+300, @CGUID+297, 3),
|
(@CGUID+300, @CGUID+297, 0, 0, 3),
|
||||||
(@CGUID+301, @CGUID+297, 3),
|
(@CGUID+301, @CGUID+297, 0, 0, 3),
|
||||||
(@CGUID+302, @CGUID+302, 3),
|
(@CGUID+302, @CGUID+302, 0, 0, 3),
|
||||||
(@CGUID+303, @CGUID+302, 3),
|
(@CGUID+303, @CGUID+302, 0, 0, 3),
|
||||||
(@CGUID+304, @CGUID+302, 3),
|
(@CGUID+304, @CGUID+302, 0, 0, 3),
|
||||||
(@CGUID+305, @CGUID+302, 3),
|
(@CGUID+305, @CGUID+302, 0, 0, 3),
|
||||||
(@CGUID+318, @CGUID+318, 3),
|
(@CGUID+318, @CGUID+318, 0, 0, 3),
|
||||||
(@CGUID+319, @CGUID+318, 3),
|
(@CGUID+319, @CGUID+318, 0, 0, 3),
|
||||||
(@CGUID+320, @CGUID+318, 3),
|
(@CGUID+320, @CGUID+318, 0, 0, 3),
|
||||||
(@CGUID+321, @CGUID+318, 3),
|
(@CGUID+321, @CGUID+318, 0, 0, 3),
|
||||||
(@CGUID+322, @CGUID+318, 3),
|
(@CGUID+322, @CGUID+318, 0, 0, 3),
|
||||||
(@CGUID+323, @CGUID+323, 3),
|
(@CGUID+323, @CGUID+323, 0, 0, 3),
|
||||||
(@CGUID+324, @CGUID+323, 3),
|
(@CGUID+324, @CGUID+323, 0, 0, 3),
|
||||||
(@CGUID+325, @CGUID+323, 3),
|
(@CGUID+325, @CGUID+323, 0, 0, 3),
|
||||||
(@CGUID+326, @CGUID+323, 3),
|
(@CGUID+326, @CGUID+323, 0, 0, 3),
|
||||||
(@CGUID+327, @CGUID+323, 3),
|
(@CGUID+327, @CGUID+323, 0, 0, 3),
|
||||||
(@CGUID+328, @CGUID+328, 3),
|
(@CGUID+328, @CGUID+328, 0, 0, 3),
|
||||||
(@CGUID+329, @CGUID+328, 3),
|
(@CGUID+329, @CGUID+328, 0, 0, 3),
|
||||||
(@CGUID+330, @CGUID+330, 3),
|
(@CGUID+330, @CGUID+330, 0, 0, 3),
|
||||||
(@CGUID+331, @CGUID+330, 3),
|
(@CGUID+331, @CGUID+330, 0, 0, 3),
|
||||||
(@CGUID+365, @CGUID+365, 3),
|
(@CGUID+365, @CGUID+365, 0, 0, 3),
|
||||||
(@CGUID+366, @CGUID+365, 3),
|
(@CGUID+366, @CGUID+365, 0, 0, 3),
|
||||||
(@CGUID+367, @CGUID+365, 3),
|
(@CGUID+367, @CGUID+365, 0, 0, 3),
|
||||||
(@CGUID+368, @CGUID+365, 3),
|
(@CGUID+368, @CGUID+365, 0, 0, 3),
|
||||||
(@CGUID+369, @CGUID+365, 3),
|
(@CGUID+369, @CGUID+365, 0, 0, 3),
|
||||||
(@CGUID+370, @CGUID+365, 3),
|
(@CGUID+370, @CGUID+365, 0, 0, 3),
|
||||||
(@CGUID+371, @CGUID+365, 3),
|
(@CGUID+371, @CGUID+365, 0, 0, 3),
|
||||||
(@CGUID+372, @CGUID+365, 3),
|
(@CGUID+372, @CGUID+365, 0, 0, 3),
|
||||||
(@CGUID+373, @CGUID+373, 3),
|
(@CGUID+373, @CGUID+373, 0, 0, 3),
|
||||||
(@CGUID+374, @CGUID+373, 3),
|
(@CGUID+374, @CGUID+373, 0, 0, 3),
|
||||||
(@CGUID+375, @CGUID+373, 3),
|
(@CGUID+375, @CGUID+373, 0, 0, 3),
|
||||||
(@CGUID+376, @CGUID+373, 3),
|
(@CGUID+376, @CGUID+373, 0, 0, 3),
|
||||||
(@CGUID+377, @CGUID+373, 3),
|
(@CGUID+377, @CGUID+373, 0, 0, 3),
|
||||||
(@CGUID+378, @CGUID+373, 3),
|
(@CGUID+378, @CGUID+373, 0, 0, 3),
|
||||||
(@CGUID+379, @CGUID+373, 3),
|
(@CGUID+379, @CGUID+373, 0, 0, 3),
|
||||||
(@CGUID+380, @CGUID+373, 3),
|
(@CGUID+380, @CGUID+373, 0, 0, 3),
|
||||||
(@CGUID+383, @CGUID+383, 3),
|
(@CGUID+383, @CGUID+383, 0, 0, 3),
|
||||||
(@CGUID+384, @CGUID+383, 3),
|
(@CGUID+384, @CGUID+383, 0, 0, 3),
|
||||||
(@CGUID+385, @CGUID+383, 3),
|
(@CGUID+385, @CGUID+383, 0, 0, 3),
|
||||||
(@CGUID+386, @CGUID+383, 3),
|
(@CGUID+386, @CGUID+383, 0, 0, 3),
|
||||||
(@CGUID+387, @CGUID+383, 3),
|
(@CGUID+387, @CGUID+383, 0, 0, 3),
|
||||||
(@CGUID+388, @CGUID+383, 3),
|
(@CGUID+388, @CGUID+383, 0, 0, 3),
|
||||||
(@CGUID+389, @CGUID+383, 3),
|
(@CGUID+389, @CGUID+383, 0, 0, 3),
|
||||||
(@CGUID+390, @CGUID+383, 3),
|
(@CGUID+390, @CGUID+383, 0, 0, 3),
|
||||||
(@CGUID+391, @CGUID+383, 3),
|
(@CGUID+391, @CGUID+383, 0, 0, 3),
|
||||||
(@CGUID+392, @CGUID+383, 3),
|
(@CGUID+392, @CGUID+383, 0, 0, 3),
|
||||||
(@CGUID+393, @CGUID+383, 3),
|
(@CGUID+393, @CGUID+383, 0, 0, 3),
|
||||||
(@CGUID+396, @CGUID+396, 3),
|
(@CGUID+396, @CGUID+396, 0, 0, 3),
|
||||||
(@CGUID+397, @CGUID+396, 3),
|
(@CGUID+397, @CGUID+396, 0, 0, 3),
|
||||||
(@CGUID+398, @CGUID+396, 3),
|
(@CGUID+398, @CGUID+396, 0, 0, 3),
|
||||||
(@CGUID+399, @CGUID+396, 3),
|
(@CGUID+399, @CGUID+396, 0, 0, 3),
|
||||||
(@CGUID+400, @CGUID+396, 3),
|
(@CGUID+400, @CGUID+396, 0, 0, 3),
|
||||||
(@CGUID+401, @CGUID+396, 3),
|
(@CGUID+401, @CGUID+396, 0, 0, 3),
|
||||||
(@CGUID+402, @CGUID+396, 3),
|
(@CGUID+402, @CGUID+396, 0, 0, 3),
|
||||||
(@CGUID+403, @CGUID+396, 3),
|
(@CGUID+403, @CGUID+396, 0, 0, 3),
|
||||||
(@CGUID+404, @CGUID+396, 3),
|
(@CGUID+404, @CGUID+396, 0, 0, 3),
|
||||||
(@CGUID+405, @CGUID+396, 3),
|
(@CGUID+405, @CGUID+396, 0, 0, 3),
|
||||||
(@CGUID+406, @CGUID+396, 3),
|
(@CGUID+406, @CGUID+396, 0, 0, 3),
|
||||||
(@CGUID+418, @CGUID+418, 3),
|
(@CGUID+418, @CGUID+418, 0, 0, 3),
|
||||||
(@CGUID+419, @CGUID+418, 3),
|
(@CGUID+419, @CGUID+418, 0, 0, 3),
|
||||||
(@CGUID+420, @CGUID+418, 3),
|
(@CGUID+420, @CGUID+418, 0, 0, 3),
|
||||||
(@CGUID+421, @CGUID+418, 3),
|
(@CGUID+421, @CGUID+418, 0, 0, 3),
|
||||||
(@CGUID+422, @CGUID+418, 3),
|
(@CGUID+422, @CGUID+418, 0, 0, 3),
|
||||||
(@CGUID+423, @CGUID+418, 3),
|
(@CGUID+423, @CGUID+418, 0, 0, 3),
|
||||||
(@CGUID+540, @CGUID+540, 3),
|
(@CGUID+540, @CGUID+540, 0, 0, 3),
|
||||||
(@CGUID+541, @CGUID+540, 3),
|
(@CGUID+541, @CGUID+540, 0, 0, 3),
|
||||||
(@CGUID+542, @CGUID+540, 3),
|
(@CGUID+542, @CGUID+540, 0, 0, 3),
|
||||||
(@CGUID+543, @CGUID+540, 3),
|
(@CGUID+543, @CGUID+540, 0, 0, 3),
|
||||||
(@CGUID+544, @CGUID+540, 3),
|
(@CGUID+544, @CGUID+540, 0, 0, 3),
|
||||||
(@CGUID+545, @CGUID+540, 3),
|
(@CGUID+545, @CGUID+540, 0, 0, 3),
|
||||||
(@CGUID+546, @CGUID+540, 3),
|
(@CGUID+546, @CGUID+540, 0, 0, 3),
|
||||||
(@CGUID+547, @CGUID+540, 3),
|
(@CGUID+547, @CGUID+540, 0, 0, 3),
|
||||||
(@CGUID+548, @CGUID+540, 3),
|
(@CGUID+548, @CGUID+540, 0, 0, 3),
|
||||||
(@CGUID+549, @CGUID+540, 3),
|
(@CGUID+549, @CGUID+540, 0, 0, 3),
|
||||||
(@CGUID+550, @CGUID+550, 3),
|
(@CGUID+550, @CGUID+550, 0, 0, 3),
|
||||||
(@CGUID+551, @CGUID+550, 3),
|
(@CGUID+551, @CGUID+550, 0, 0, 3),
|
||||||
(@CGUID+552, @CGUID+550, 3),
|
(@CGUID+552, @CGUID+550, 0, 0, 3),
|
||||||
(@CGUID+553, @CGUID+550, 3),
|
(@CGUID+553, @CGUID+550, 0, 0, 3),
|
||||||
(@CGUID+554, @CGUID+550, 3),
|
(@CGUID+554, @CGUID+550, 0, 0, 3),
|
||||||
(@CGUID+555, @CGUID+550, 3),
|
(@CGUID+555, @CGUID+550, 0, 0, 3),
|
||||||
(@CGUID+556, @CGUID+550, 3),
|
(@CGUID+556, @CGUID+550, 0, 0, 3),
|
||||||
(@CGUID+557, @CGUID+550, 3),
|
(@CGUID+557, @CGUID+550, 0, 0, 3),
|
||||||
(@CGUID+558, @CGUID+550, 3),
|
(@CGUID+558, @CGUID+550, 0, 0, 3),
|
||||||
(@CGUID+559, @CGUID+550, 3),
|
(@CGUID+559, @CGUID+550, 0, 0, 3),
|
||||||
(@CGUID+560, @CGUID+560, 3),
|
(@CGUID+560, @CGUID+560, 0, 0, 3),
|
||||||
(@CGUID+561, @CGUID+560, 3),
|
(@CGUID+561, @CGUID+560, 0, 0, 3),
|
||||||
(@CGUID+562, @CGUID+560, 3),
|
(@CGUID+562, @CGUID+560, 0, 0, 3),
|
||||||
(@CGUID+563, @CGUID+560, 3),
|
(@CGUID+563, @CGUID+560, 0, 0, 3),
|
||||||
(@CGUID+564, @CGUID+560, 3),
|
(@CGUID+564, @CGUID+560, 0, 0, 3),
|
||||||
(@CGUID+565, @CGUID+560, 3),
|
(@CGUID+565, @CGUID+560, 0, 0, 3),
|
||||||
(@CGUID+566, @CGUID+560, 3),
|
(@CGUID+566, @CGUID+560, 0, 0, 3),
|
||||||
(@CGUID+567, @CGUID+560, 3),
|
(@CGUID+567, @CGUID+560, 0, 0, 3),
|
||||||
(@CGUID+568, @CGUID+560, 3),
|
(@CGUID+568, @CGUID+560, 0, 0, 3),
|
||||||
(@CGUID+569, @CGUID+560, 3),
|
(@CGUID+569, @CGUID+560, 0, 0, 3),
|
||||||
(@CGUID+570, @CGUID+570, 3),
|
(@CGUID+570, @CGUID+570, 0, 0, 3),
|
||||||
(@CGUID+571, @CGUID+570, 3),
|
(@CGUID+571, @CGUID+570, 0, 0, 3),
|
||||||
(@CGUID+572, @CGUID+570, 3),
|
(@CGUID+572, @CGUID+570, 0, 0, 3),
|
||||||
(@CGUID+573, @CGUID+570, 3),
|
(@CGUID+573, @CGUID+570, 0, 0, 3),
|
||||||
(@CGUID+574, @CGUID+570, 3),
|
(@CGUID+574, @CGUID+570, 0, 0, 3),
|
||||||
(@CGUID+575, @CGUID+570, 3),
|
(@CGUID+575, @CGUID+570, 0, 0, 3),
|
||||||
(@CGUID+576, @CGUID+570, 3),
|
(@CGUID+576, @CGUID+570, 0, 0, 3),
|
||||||
(@CGUID+577, @CGUID+570, 3),
|
(@CGUID+577, @CGUID+570, 0, 0, 3),
|
||||||
(@CGUID+578, @CGUID+570, 3),
|
(@CGUID+578, @CGUID+570, 0, 0, 3),
|
||||||
(@CGUID+579, @CGUID+570, 3),
|
(@CGUID+579, @CGUID+570, 0, 0, 3),
|
||||||
(@CGUID+580, @CGUID+580, 3),
|
(@CGUID+580, @CGUID+580, 0, 0, 3),
|
||||||
(@CGUID+581, @CGUID+580, 3),
|
(@CGUID+581, @CGUID+580, 0, 0, 3),
|
||||||
(@CGUID+582, @CGUID+580, 3),
|
(@CGUID+582, @CGUID+580, 0, 0, 3),
|
||||||
(@CGUID+583, @CGUID+580, 3),
|
(@CGUID+583, @CGUID+580, 0, 0, 3),
|
||||||
(@CGUID+584, @CGUID+580, 3),
|
(@CGUID+584, @CGUID+580, 0, 0, 3),
|
||||||
(@CGUID+585, @CGUID+580, 3),
|
(@CGUID+585, @CGUID+580, 0, 0, 3),
|
||||||
(@CGUID+586, @CGUID+580, 3),
|
(@CGUID+586, @CGUID+580, 0, 0, 3),
|
||||||
(@CGUID+587, @CGUID+580, 3),
|
(@CGUID+587, @CGUID+580, 0, 0, 3),
|
||||||
(@CGUID+588, @CGUID+580, 3),
|
(@CGUID+588, @CGUID+580, 0, 0, 3),
|
||||||
(@CGUID+589, @CGUID+580, 3),
|
(@CGUID+589, @CGUID+580, 0, 0, 3),
|
||||||
(@CGUID+592, @CGUID+592, 3),
|
(@CGUID+592, @CGUID+592, 0, 0, 3),
|
||||||
(@CGUID+593, @CGUID+592, 3),
|
(@CGUID+593, @CGUID+592, 0, 0, 3),
|
||||||
(@CGUID+594, @CGUID+592, 3),
|
(@CGUID+594, @CGUID+592, 0, 0, 3),
|
||||||
(@CGUID+595, @CGUID+592, 3),
|
(@CGUID+595, @CGUID+592, 0, 0, 3),
|
||||||
(@CGUID+596, @CGUID+592, 3),
|
(@CGUID+596, @CGUID+592, 0, 0, 3),
|
||||||
(@CGUID+597, @CGUID+592, 3),
|
(@CGUID+597, @CGUID+592, 0, 0, 3),
|
||||||
(@CGUID+598, @CGUID+592, 3),
|
(@CGUID+598, @CGUID+592, 0, 0, 3),
|
||||||
(@CGUID+599, @CGUID+592, 3),
|
(@CGUID+599, @CGUID+592, 0, 0, 3),
|
||||||
(@CGUID+600, @CGUID+592, 3),
|
(@CGUID+600, @CGUID+592, 0, 0, 3),
|
||||||
(@CGUID+601, @CGUID+592, 3),
|
(@CGUID+601, @CGUID+592, 0, 0, 3),
|
||||||
(@CGUID+602, @CGUID+602, 3),
|
(@CGUID+602, @CGUID+602, 0, 0, 3),
|
||||||
(@CGUID+603, @CGUID+602, 3),
|
(@CGUID+603, @CGUID+602, 0, 0, 3),
|
||||||
(@CGUID+605, @CGUID+605, 3),
|
(@CGUID+605, @CGUID+605, 0, 0, 3),
|
||||||
(@CGUID+606, @CGUID+605, 3),
|
(@CGUID+606, @CGUID+605, 0, 0, 3),
|
||||||
(@CGUID+607, @CGUID+605, 3),
|
(@CGUID+607, @CGUID+605, 0, 0, 3),
|
||||||
(@CGUID+608, @CGUID+605, 3),
|
(@CGUID+608, @CGUID+605, 0, 0, 3),
|
||||||
(@CGUID+609, @CGUID+605, 3),
|
(@CGUID+609, @CGUID+605, 0, 0, 3),
|
||||||
(@CGUID+610, @CGUID+605, 3),
|
(@CGUID+610, @CGUID+605, 0, 0, 3),
|
||||||
(@CGUID+611, @CGUID+605, 3),
|
(@CGUID+611, @CGUID+605, 0, 0, 3),
|
||||||
(@CGUID+612, @CGUID+605, 3),
|
(@CGUID+612, @CGUID+605, 0, 0, 3),
|
||||||
(@CGUID+613, @CGUID+605, 3),
|
(@CGUID+613, @CGUID+605, 0, 0, 3),
|
||||||
(@CGUID+614, @CGUID+605, 3),
|
(@CGUID+614, @CGUID+605, 0, 0, 3),
|
||||||
(@CGUID+615, @CGUID+615, 3),
|
(@CGUID+615, @CGUID+615, 0, 0, 3),
|
||||||
(@CGUID+616, @CGUID+615, 3),
|
(@CGUID+616, @CGUID+615, 0, 0, 3),
|
||||||
(@CGUID+617, @CGUID+615, 3),
|
(@CGUID+617, @CGUID+615, 0, 0, 3),
|
||||||
(@CGUID+618, @CGUID+615, 3),
|
(@CGUID+618, @CGUID+615, 0, 0, 3),
|
||||||
(@CGUID+619, @CGUID+615, 3),
|
(@CGUID+619, @CGUID+615, 0, 0, 3),
|
||||||
(@CGUID+620, @CGUID+615, 3),
|
(@CGUID+620, @CGUID+615, 0, 0, 3),
|
||||||
(@CGUID+621, @CGUID+615, 3),
|
(@CGUID+621, @CGUID+615, 0, 0, 3),
|
||||||
(@CGUID+622, @CGUID+615, 3),
|
(@CGUID+622, @CGUID+615, 0, 0, 3),
|
||||||
(@CGUID+623, @CGUID+615, 3),
|
(@CGUID+623, @CGUID+615, 0, 0, 3),
|
||||||
(@CGUID+624, @CGUID+615, 3),
|
(@CGUID+624, @CGUID+615, 0, 0, 3),
|
||||||
(@CGUID+625, @CGUID+625, 3),
|
(@CGUID+625, @CGUID+625, 0, 0, 3),
|
||||||
(@CGUID+626, @CGUID+625, 3),
|
(@CGUID+626, @CGUID+625, 0, 0, 3),
|
||||||
(@CGUID+627, @CGUID+625, 3),
|
(@CGUID+627, @CGUID+625, 0, 0, 3),
|
||||||
(@CGUID+628, @CGUID+628, 3),
|
(@CGUID+628, @CGUID+628, 0, 0, 3),
|
||||||
(@CGUID+629, @CGUID+628, 3),
|
(@CGUID+629, @CGUID+628, 0, 0, 3),
|
||||||
(@CGUID+630, @CGUID+628, 3),
|
(@CGUID+630, @CGUID+628, 0, 0, 3),
|
||||||
(@CGUID+631, @CGUID+631, 3),
|
(@CGUID+631, @CGUID+631, 0, 0, 3),
|
||||||
(@CGUID+632, @CGUID+631, 3),
|
(@CGUID+632, @CGUID+631, 0, 0, 3),
|
||||||
(@CGUID+633, @CGUID+631, 3),
|
(@CGUID+633, @CGUID+631, 0, 0, 3),
|
||||||
(@CGUID+634, @CGUID+631, 3),
|
(@CGUID+634, @CGUID+631, 0, 0, 3),
|
||||||
(@CGUID+635, @CGUID+635, 3),
|
(@CGUID+635, @CGUID+635, 0, 0, 3),
|
||||||
(@CGUID+636, @CGUID+635, 3),
|
(@CGUID+636, @CGUID+635, 0, 0, 3),
|
||||||
(@CGUID+637, @CGUID+635, 3),
|
(@CGUID+637, @CGUID+635, 0, 0, 3),
|
||||||
(@CGUID+638, @CGUID+638, 3),
|
(@CGUID+638, @CGUID+638, 0, 0, 3),
|
||||||
(@CGUID+639, @CGUID+638, 3),
|
(@CGUID+639, @CGUID+638, 0, 0, 3),
|
||||||
(@CGUID+640, @CGUID+638, 3),
|
(@CGUID+640, @CGUID+638, 0, 0, 3),
|
||||||
(@CGUID+641, @CGUID+638, 3),
|
(@CGUID+641, @CGUID+638, 0, 0, 3),
|
||||||
(@CGUID+642, @CGUID+638, 3),
|
(@CGUID+642, @CGUID+638, 0, 0, 3),
|
||||||
(@CGUID+643, @CGUID+638, 3),
|
(@CGUID+643, @CGUID+638, 0, 0, 3),
|
||||||
(@CGUID+644, @CGUID+644, 3),
|
(@CGUID+644, @CGUID+644, 0, 0, 3),
|
||||||
(@CGUID+645, @CGUID+644, 3),
|
(@CGUID+645, @CGUID+644, 0, 0, 3),
|
||||||
(@CGUID+646, @CGUID+644, 3),
|
(@CGUID+646, @CGUID+644, 0, 0, 3),
|
||||||
(@CGUID+647, @CGUID+644, 3),
|
(@CGUID+647, @CGUID+644, 0, 0, 3),
|
||||||
(@CGUID+648, @CGUID+648, 3),
|
(@CGUID+648, @CGUID+648, 0, 0, 3),
|
||||||
(@CGUID+649, @CGUID+648, 3),
|
(@CGUID+649, @CGUID+648, 0, 0, 3),
|
||||||
(@CGUID+650, @CGUID+648, 3),
|
(@CGUID+650, @CGUID+648, 0, 0, 3),
|
||||||
(@CGUID+651, @CGUID+648, 3),
|
(@CGUID+651, @CGUID+648, 0, 0, 3),
|
||||||
(@CGUID+652, @CGUID+648, 3),
|
(@CGUID+652, @CGUID+648, 0, 0, 3),
|
||||||
(@CGUID+653, @CGUID+648, 3),
|
(@CGUID+653, @CGUID+648, 0, 0, 3),
|
||||||
(@CGUID+654, @CGUID+654, 3),
|
(@CGUID+654, @CGUID+654, 0, 0, 3),
|
||||||
(@CGUID+655, @CGUID+654, 3),
|
(@CGUID+655, @CGUID+654, 0, 0, 3),
|
||||||
(@CGUID+656, @CGUID+654, 3),
|
(@CGUID+656, @CGUID+654, 0, 0, 3),
|
||||||
(@CGUID+657, @CGUID+654, 3),
|
(@CGUID+657, @CGUID+654, 0, 0, 3),
|
||||||
(@CGUID+658, @CGUID+658, 3),
|
(@CGUID+658, @CGUID+658, 0, 0, 3),
|
||||||
(@CGUID+659, @CGUID+658, 3),
|
(@CGUID+659, @CGUID+658, 0, 0, 3),
|
||||||
(@CGUID+660, @CGUID+658, 3),
|
(@CGUID+660, @CGUID+658, 0, 0, 3),
|
||||||
(@CGUID+661, @CGUID+658, 3),
|
(@CGUID+661, @CGUID+658, 0, 0, 3),
|
||||||
(@CGUID+662, @CGUID+658, 3),
|
(@CGUID+662, @CGUID+658, 0, 0, 3),
|
||||||
(@CGUID+663, @CGUID+658, 3),
|
(@CGUID+663, @CGUID+658, 0, 0, 3),
|
||||||
(@CGUID+664, @CGUID+658, 3),
|
(@CGUID+664, @CGUID+658, 0, 0, 3),
|
||||||
(@CGUID+665, @CGUID+658, 3),
|
(@CGUID+665, @CGUID+658, 0, 0, 3),
|
||||||
(@CGUID+666, @CGUID+658, 3),
|
(@CGUID+666, @CGUID+658, 0, 0, 3),
|
||||||
(@CGUID+667, @CGUID+658, 3),
|
(@CGUID+667, @CGUID+658, 0, 0, 3),
|
||||||
(@CGUID+668, @CGUID+668, 3),
|
(@CGUID+668, @CGUID+668, 0, 0, 3),
|
||||||
(@CGUID+669, @CGUID+668, 3),
|
(@CGUID+669, @CGUID+668, 0, 0, 3),
|
||||||
(@CGUID+670, @CGUID+668, 3),
|
(@CGUID+670, @CGUID+668, 0, 0, 3),
|
||||||
(@CGUID+671, @CGUID+668, 3),
|
(@CGUID+671, @CGUID+668, 0, 0, 3),
|
||||||
(@CGUID+672, @CGUID+668, 3),
|
(@CGUID+672, @CGUID+668, 0, 0, 3),
|
||||||
(@CGUID+673, @CGUID+673, 3),
|
(@CGUID+673, @CGUID+673, 0, 0, 3),
|
||||||
(@CGUID+674, @CGUID+673, 3),
|
(@CGUID+674, @CGUID+673, 0, 0, 3),
|
||||||
(@CGUID+675, @CGUID+673, 3),
|
(@CGUID+675, @CGUID+673, 0, 0, 3),
|
||||||
(@CGUID+676, @CGUID+673, 3),
|
(@CGUID+676, @CGUID+673, 0, 0, 3),
|
||||||
(@CGUID+677, @CGUID+673, 3),
|
(@CGUID+677, @CGUID+673, 0, 0, 3),
|
||||||
(@CGUID+691, @CGUID+691, 3),
|
(@CGUID+691, @CGUID+691, 0, 0, 3),
|
||||||
(@CGUID+692, @CGUID+691, 3),
|
(@CGUID+692, @CGUID+691, 0, 0, 3),
|
||||||
(@CGUID+693, @CGUID+691, 3),
|
(@CGUID+693, @CGUID+691, 0, 0, 3),
|
||||||
(@CGUID+694, @CGUID+691, 3),
|
(@CGUID+694, @CGUID+691, 0, 0, 3),
|
||||||
(@CGUID+695, @CGUID+691, 3),
|
(@CGUID+695, @CGUID+691, 0, 0, 3),
|
||||||
(@CGUID+696, @CGUID+691, 3),
|
(@CGUID+696, @CGUID+691, 0, 0, 3),
|
||||||
(@CGUID+697, @CGUID+697, 3),
|
(@CGUID+697, @CGUID+697, 0, 0, 3),
|
||||||
(@CGUID+698, @CGUID+697, 3),
|
(@CGUID+698, @CGUID+697, 0, 0, 3),
|
||||||
(@CGUID+699, @CGUID+697, 3),
|
(@CGUID+699, @CGUID+697, 0, 0, 3),
|
||||||
(@CGUID+700, @CGUID+697, 3),
|
(@CGUID+700, @CGUID+697, 0, 0, 3),
|
||||||
(@CGUID+701, @CGUID+697, 3),
|
(@CGUID+701, @CGUID+697, 0, 0, 3),
|
||||||
(@CGUID+702, @CGUID+697, 3),
|
(@CGUID+702, @CGUID+697, 0, 0, 3),
|
||||||
(@CGUID+703, @CGUID+703, 3),
|
(@CGUID+703, @CGUID+703, 0, 0, 3),
|
||||||
(@CGUID+704, @CGUID+703, 3),
|
(@CGUID+704, @CGUID+703, 0, 0, 3),
|
||||||
(@CGUID+705, @CGUID+703, 3),
|
(@CGUID+705, @CGUID+703, 0, 0, 3),
|
||||||
(@CGUID+706, @CGUID+703, 3),
|
(@CGUID+706, @CGUID+703, 0, 0, 3),
|
||||||
(@CGUID+707, @CGUID+703, 3),
|
(@CGUID+707, @CGUID+703, 0, 0, 3),
|
||||||
(@CGUID+708, @CGUID+703, 3),
|
(@CGUID+708, @CGUID+703, 0, 0, 3),
|
||||||
(@CGUID+709, @CGUID+709, 3),
|
(@CGUID+709, @CGUID+709, 0, 0, 3),
|
||||||
(@CGUID+710, @CGUID+709, 3),
|
(@CGUID+710, @CGUID+709, 0, 0, 3),
|
||||||
(@CGUID+711, @CGUID+709, 3),
|
(@CGUID+711, @CGUID+709, 0, 0, 3),
|
||||||
(@CGUID+712, @CGUID+709, 3),
|
(@CGUID+712, @CGUID+709, 0, 0, 3),
|
||||||
(@CGUID+713, @CGUID+709, 3),
|
(@CGUID+713, @CGUID+709, 0, 0, 3),
|
||||||
(@CGUID+714, @CGUID+709, 3),
|
(@CGUID+714, @CGUID+709, 0, 0, 3),
|
||||||
(@CGUID+716, @CGUID+716, 3),
|
(@CGUID+716, @CGUID+716, 0, 0, 3),
|
||||||
(@CGUID+717, @CGUID+716, 3),
|
(@CGUID+717, @CGUID+716, 0, 0, 3),
|
||||||
(@CGUID+718, @CGUID+716, 3),
|
(@CGUID+718, @CGUID+716, 0, 0, 3),
|
||||||
(@CGUID+719, @CGUID+716, 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 `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);
|
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);
|
||||||
|
|||||||
@@ -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;
|
UPDATE `creature` SET `spawntimesecs` = 300 WHERE `id1` = 23191 AND `map` = 564;
|
||||||
|
|
||||||
DELETE FROM `creature_formations` WHERE `leaderGUID` = 148236;
|
DELETE FROM `creature_formations` WHERE `leaderGUID` = 148236;
|
||||||
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `groupAI`) VALUES
|
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `dist`, `angle`, `groupAI`) VALUES
|
||||||
(148236, 148236, 24),
|
(148236, 148236, 0, 0, 24),
|
||||||
(148237, 148236, 24),
|
(148237, 148236, 0, 0, 24),
|
||||||
(148238, 148236, 24),
|
(148238, 148236, 0, 0, 24),
|
||||||
(148239, 148236, 24),
|
(148239, 148236, 0, 0, 24),
|
||||||
(148240, 148236, 24),
|
(148240, 148236, 0, 0, 24),
|
||||||
(148241, 148236, 24),
|
(148241, 148236, 0, 0, 24),
|
||||||
(148242, 148236, 24);
|
(148242, 148236, 0, 0, 24);
|
||||||
|
|
||||||
-- Delete leftover gobs
|
-- Delete leftover gobs
|
||||||
DELETE FROM `gameobject` WHERE `guid` IN (20523,20558,20559,20561,20563,20567) AND `map` = 564;
|
DELETE FROM `gameobject` WHERE `guid` IN (20523,20558,20559,20561,20563,20567) AND `map` = 564;
|
||||||
|
|||||||
@@ -1,42 +1,42 @@
|
|||||||
-- DB update 2024_07_09_06 -> 2024_07_09_07
|
-- 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);
|
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
|
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
|
||||||
(158167, 158167, 3),
|
(158167, 158167, 0, 0, 3),
|
||||||
(158167, 158168, 3),
|
(158167, 158168, 0, 0, 3),
|
||||||
(158167, 158169, 3),
|
(158167, 158169, 0, 0, 3),
|
||||||
(158167, 158170, 3),
|
(158167, 158170, 0, 0, 3),
|
||||||
(158167, 158171, 3),
|
(158167, 158171, 0, 0, 3),
|
||||||
(158167, 158172, 3),
|
(158167, 158172, 0, 0, 3),
|
||||||
(158167, 158173, 3),
|
(158167, 158173, 0, 0, 3),
|
||||||
(158167, 158174, 3),
|
(158167, 158174, 0, 0, 3),
|
||||||
(158167, 158175, 3),
|
(158167, 158175, 0, 0, 3),
|
||||||
(158167, 158176, 3),
|
(158167, 158176, 0, 0, 3),
|
||||||
(158167, 158177, 3),
|
(158167, 158177, 0, 0, 3),
|
||||||
(158167, 158178, 3),
|
(158167, 158178, 0, 0, 3),
|
||||||
|
|
||||||
(158155, 158155, 3),
|
(158155, 158155, 0, 0, 3),
|
||||||
(158155, 158156, 3),
|
(158155, 158156, 0, 0, 3),
|
||||||
(158155, 158157, 3),
|
(158155, 158157, 0, 0, 3),
|
||||||
(158155, 158158, 3),
|
(158155, 158158, 0, 0, 3),
|
||||||
(158155, 158159, 3),
|
(158155, 158159, 0, 0, 3),
|
||||||
(158155, 158160, 3),
|
(158155, 158160, 0, 0, 3),
|
||||||
(158155, 158161, 3),
|
(158155, 158161, 0, 0, 3),
|
||||||
(158155, 158162, 3),
|
(158155, 158162, 0, 0, 3),
|
||||||
(158155, 158163, 3),
|
(158155, 158163, 0, 0, 3),
|
||||||
(158155, 158164, 3),
|
(158155, 158164, 0, 0, 3),
|
||||||
(158155, 158165, 3),
|
(158155, 158165, 0, 0, 3),
|
||||||
(158155, 158166, 3),
|
(158155, 158166, 0, 0, 3),
|
||||||
|
|
||||||
(158143, 158143, 3),
|
(158143, 158143, 0, 0, 3),
|
||||||
(158143, 158144, 3),
|
(158143, 158144, 0, 0, 3),
|
||||||
(158143, 158145, 3),
|
(158143, 158145, 0, 0, 3),
|
||||||
(158143, 158146, 3),
|
(158143, 158146, 0, 0, 3),
|
||||||
(158143, 158147, 3),
|
(158143, 158147, 0, 0, 3),
|
||||||
(158143, 158148, 3),
|
(158143, 158148, 0, 0, 3),
|
||||||
(158143, 158149, 3),
|
(158143, 158149, 0, 0, 3),
|
||||||
(158143, 158150, 3),
|
(158143, 158150, 0, 0, 3),
|
||||||
(158143, 158151, 3),
|
(158143, 158151, 0, 0, 3),
|
||||||
(158143, 158152, 3),
|
(158143, 158152, 0, 0, 3),
|
||||||
(158143, 158153, 3),
|
(158143, 158153, 0, 0, 3),
|
||||||
(158143, 158154, 3);
|
(158143, 158154, 0, 0, 3);
|
||||||
|
|||||||
@@ -42,11 +42,26 @@ CREATE TABLE `realmlist` (
|
|||||||
--
|
--
|
||||||
-- Dumping data for table `realmlist`
|
-- Dumping data for table `realmlist`
|
||||||
--
|
--
|
||||||
|
-- Defaults are tuned for fresh local installs: `address` is what the auth
|
||||||
|
-- server hands clients after login as the WORLD server endpoint. Stock
|
||||||
|
-- 127.0.0.1 means "the same box auth is running on", so a fresh
|
||||||
|
-- `git clone` -> `docker compose up` works without any post-install
|
||||||
|
-- tweaks for a developer hosting on their own machine.
|
||||||
|
--
|
||||||
|
-- Production deployments must override `address` after first dbimport,
|
||||||
|
-- e.g.:
|
||||||
|
-- UPDATE realmlist SET address = 'your.public.host', port = 8085 WHERE id = 1;
|
||||||
|
-- See contrib/fractured-dev-extras/BUILD-NATIVE.md for the full deploy
|
||||||
|
-- checklist (auth/world ports, firewall, public hostnames).
|
||||||
|
--
|
||||||
|
-- `port` is the WORLD server port (must match WorldServerPort in
|
||||||
|
-- worldserver.conf). The auth-server LISTEN port is separately configured
|
||||||
|
-- via RealmServerPort in authserver.conf (stock default 3724).
|
||||||
|
|
||||||
LOCK TABLES `realmlist` WRITE;
|
LOCK TABLES `realmlist` WRITE;
|
||||||
/*!40000 ALTER TABLE `realmlist` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `realmlist` DISABLE KEYS */;
|
||||||
INSERT INTO `realmlist` VALUES
|
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','127.0.0.1','127.0.0.1','255.255.255.0',8085,0,0,1,0,0,12340);
|
||||||
/*!40000 ALTER TABLE `realmlist` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `realmlist` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ CREATE TABLE `world_state` (
|
|||||||
`Id` int unsigned NOT NULL COMMENT 'Internal save ID',
|
`Id` int unsigned NOT NULL COMMENT 'Internal save ID',
|
||||||
`Data` longtext,
|
`Data` longtext,
|
||||||
PRIMARY KEY (`Id`)
|
PRIMARY KEY (`Id`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='WorldState save system';
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='WorldState save system';
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ CREATE TABLE `player_shapeshift_model` (
|
|||||||
`GenderID` tinyint unsigned NOT NULL,
|
`GenderID` tinyint unsigned NOT NULL,
|
||||||
`ModelID` int unsigned NOT NULL,
|
`ModelID` int unsigned NOT NULL,
|
||||||
PRIMARY KEY (`ShapeshiftID`,`RaceID`,`CustomizationID`,`GenderID`)
|
PRIMARY KEY (`ShapeshiftID`,`RaceID`,`CustomizationID`,`GenderID`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci PACK_KEYS=0;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci PACK_KEYS=0;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ CREATE TABLE `player_totem_model` (
|
|||||||
`RaceID` tinyint unsigned NOT NULL,
|
`RaceID` tinyint unsigned NOT NULL,
|
||||||
`ModelID` int unsigned NOT NULL,
|
`ModelID` int unsigned NOT NULL,
|
||||||
PRIMARY KEY (`TotemID`,`RaceID`)
|
PRIMARY KEY (`TotemID`,`RaceID`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci PACK_KEYS=0;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci PACK_KEYS=0;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -546,7 +546,7 @@ INSERT INTO `spell_target_position` VALUES
|
|||||||
(48274,0,575,302.36,-352.01,90.54,2.2,0),
|
(48274,0,575,302.36,-352.01,90.54,2.2,0),
|
||||||
(48275,0,575,291.39,-352.01,90.54,0.91,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),
|
(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),
|
(48622,0,571,4274.53,-3055.55,319.463,2.535,0),
|
||||||
(48760,0,571,3876.16,6984.44,106.32,6.279,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),
|
(48960,0,571,4313.37,-2958.17,318.463,1.98,0),
|
||||||
|
|||||||
@@ -665,97 +665,97 @@ INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`,
|
|||||||
|
|
||||||
-- Static Linking
|
-- 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);
|
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
|
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
|
||||||
(@CGUID+103, @CGUID+103, 3),
|
(@CGUID+103, @CGUID+103, 0, 0, 3),
|
||||||
(@CGUID+103, @CGUID+21, 3),
|
(@CGUID+103, @CGUID+21, 0, 0, 3),
|
||||||
(@CGUID+103, @CGUID+25, 3),
|
(@CGUID+103, @CGUID+25, 0, 0, 3),
|
||||||
(@CGUID+30, @CGUID+30, 3),
|
(@CGUID+30, @CGUID+30, 0, 0, 3),
|
||||||
(@CGUID+30, @CGUID+95, 3),
|
(@CGUID+30, @CGUID+95, 0, 0, 3),
|
||||||
(@CGUID+30, @CGUID+114, 3),
|
(@CGUID+30, @CGUID+114, 0, 0, 3),
|
||||||
(@CGUID+30, @CGUID+83, 3),
|
(@CGUID+30, @CGUID+83, 0, 0, 3),
|
||||||
(@CGUID+110, @CGUID+110, 3),
|
(@CGUID+110, @CGUID+110, 0, 0, 3),
|
||||||
(@CGUID+110, @CGUID+77, 3),
|
(@CGUID+110, @CGUID+77, 0, 0, 3),
|
||||||
(@CGUID+110, @CGUID+79, 3),
|
(@CGUID+110, @CGUID+79, 0, 0, 3),
|
||||||
(@CGUID+22, @CGUID+22, 3),
|
(@CGUID+22, @CGUID+22, 0, 0, 3),
|
||||||
(@CGUID+22, @CGUID+84, 3),
|
(@CGUID+22, @CGUID+84, 0, 0, 3),
|
||||||
(@CGUID+22, @CGUID+99, 3),
|
(@CGUID+22, @CGUID+99, 0, 0, 3),
|
||||||
(@CGUID+26, @CGUID+26, 3),
|
(@CGUID+26, @CGUID+26, 0, 0, 3),
|
||||||
(@CGUID+26, @CGUID+96, 3),
|
(@CGUID+26, @CGUID+96, 0, 0, 3),
|
||||||
(@CGUID+26, @CGUID+112, 3),
|
(@CGUID+26, @CGUID+112, 0, 0, 3),
|
||||||
(@CGUID+26, @CGUID+27, 3),
|
(@CGUID+26, @CGUID+27, 0, 0, 3),
|
||||||
(@CGUID+28, @CGUID+28, 3),
|
(@CGUID+28, @CGUID+28, 0, 0, 3),
|
||||||
(@CGUID+28, @CGUID+29, 3),
|
(@CGUID+28, @CGUID+29, 0, 0, 3),
|
||||||
(@CGUID+28, @CGUID+100, 3),
|
(@CGUID+28, @CGUID+100, 0, 0, 3),
|
||||||
(@CGUID+28, @CGUID+111, 3),
|
(@CGUID+28, @CGUID+111, 0, 0, 3),
|
||||||
(@CGUID+23, @CGUID+23, 3),
|
(@CGUID+23, @CGUID+23, 0, 0, 3),
|
||||||
(@CGUID+23, @CGUID+78, 3),
|
(@CGUID+23, @CGUID+78, 0, 0, 3),
|
||||||
(@CGUID+23, @CGUID+101, 3),
|
(@CGUID+23, @CGUID+101, 0, 0, 3),
|
||||||
(@CGUID+23, @CGUID+24, 3),
|
(@CGUID+23, @CGUID+24, 0, 0, 3),
|
||||||
(@CGUID+86, @CGUID+86, 3),
|
(@CGUID+86, @CGUID+86, 0, 0, 3),
|
||||||
(@CGUID+86, @CGUID+87, 3),
|
(@CGUID+86, @CGUID+87, 0, 0, 3),
|
||||||
(@CGUID+86, @CGUID+115, 3),
|
(@CGUID+86, @CGUID+115, 0, 0, 3),
|
||||||
(@CGUID+86, @CGUID+106, 3),
|
(@CGUID+86, @CGUID+106, 0, 0, 3),
|
||||||
(@CGUID+80, @CGUID+80, 3),
|
(@CGUID+80, @CGUID+80, 0, 0, 3),
|
||||||
(@CGUID+80, @CGUID+98, 3),
|
(@CGUID+80, @CGUID+98, 0, 0, 3),
|
||||||
(@CGUID+80, @CGUID+82, 3),
|
(@CGUID+80, @CGUID+82, 0, 0, 3),
|
||||||
(@CGUID+80, @CGUID+113, 3),
|
(@CGUID+80, @CGUID+113, 0, 0, 3),
|
||||||
(@CGUID+44, @CGUID+44, 27),
|
(@CGUID+44, @CGUID+44, 0, 0, 27),
|
||||||
(@CGUID+44, @CGUID+124, 27),
|
(@CGUID+44, @CGUID+124, 0, 0, 27),
|
||||||
(@CGUID+44, @CGUID+125, 27),
|
(@CGUID+44, @CGUID+125, 0, 0, 27),
|
||||||
(@CGUID+61, @CGUID+61, 3),
|
(@CGUID+61, @CGUID+61, 0, 0, 3),
|
||||||
(@CGUID+61, @CGUID+62, 3),
|
(@CGUID+61, @CGUID+62, 0, 0, 3),
|
||||||
(@CGUID+102, @CGUID+102, 3),
|
(@CGUID+102, @CGUID+102, 0, 0, 3),
|
||||||
(@CGUID+102, @CGUID+33, 3),
|
(@CGUID+102, @CGUID+33, 0, 0, 3),
|
||||||
(@CGUID+102, @CGUID+34, 3),
|
(@CGUID+102, @CGUID+34, 0, 0, 3),
|
||||||
(@CGUID+37, @CGUID+37, 3),
|
(@CGUID+37, @CGUID+37, 0, 0, 3),
|
||||||
(@CGUID+37, @CGUID+91, 3),
|
(@CGUID+37, @CGUID+91, 0, 0, 3),
|
||||||
(@CGUID+37, @CGUID+67, 3),
|
(@CGUID+37, @CGUID+67, 0, 0, 3),
|
||||||
(@CGUID+37, @CGUID+66, 3),
|
(@CGUID+37, @CGUID+66, 0, 0, 3),
|
||||||
(@CGUID+36, @CGUID+36, 3),
|
(@CGUID+36, @CGUID+36, 0, 0, 3),
|
||||||
(@CGUID+36, @CGUID+90, 3),
|
(@CGUID+36, @CGUID+90, 0, 0, 3),
|
||||||
(@CGUID+36, @CGUID+89, 3),
|
(@CGUID+36, @CGUID+89, 0, 0, 3),
|
||||||
(@CGUID+36, @CGUID+64, 3),
|
(@CGUID+36, @CGUID+64, 0, 0, 3),
|
||||||
(@CGUID+31, @CGUID+31, 3),
|
(@CGUID+31, @CGUID+31, 0, 0, 3),
|
||||||
(@CGUID+31, @CGUID+32, 3),
|
(@CGUID+31, @CGUID+32, 0, 0, 3),
|
||||||
(@CGUID+31, @CGUID+38, 3),
|
(@CGUID+31, @CGUID+38, 0, 0, 3),
|
||||||
(@CGUID+31, @CGUID+70, 3),
|
(@CGUID+31, @CGUID+70, 0, 0, 3),
|
||||||
(@CGUID+63, @CGUID+63, 3),
|
(@CGUID+63, @CGUID+63, 0, 0, 3),
|
||||||
(@CGUID+63, @CGUID+65, 3),
|
(@CGUID+63, @CGUID+65, 0, 0, 3),
|
||||||
(@CGUID+120, @CGUID+120, 3),
|
(@CGUID+120, @CGUID+120, 0, 0, 3),
|
||||||
(@CGUID+120, @CGUID+122, 3),
|
(@CGUID+120, @CGUID+122, 0, 0, 3),
|
||||||
(@CGUID+139, @CGUID+139, 3),
|
(@CGUID+139, @CGUID+139, 0, 0, 3),
|
||||||
(@CGUID+139, @CGUID+146, 3),
|
(@CGUID+139, @CGUID+146, 0, 0, 3),
|
||||||
(@CGUID+139, @CGUID+143, 3),
|
(@CGUID+139, @CGUID+143, 0, 0, 3),
|
||||||
(@CGUID+139, @CGUID+145, 3),
|
(@CGUID+139, @CGUID+145, 0, 0, 3),
|
||||||
(@CGUID+139, @CGUID+147, 3),
|
(@CGUID+139, @CGUID+147, 0, 0, 3),
|
||||||
(@CGUID+139, @CGUID+149, 3),
|
(@CGUID+139, @CGUID+149, 0, 0, 3),
|
||||||
(@CGUID+139, @CGUID+154, 3),
|
(@CGUID+139, @CGUID+154, 0, 0, 3),
|
||||||
(@CGUID+139, @CGUID+144, 3),
|
(@CGUID+139, @CGUID+144, 0, 0, 3),
|
||||||
(@CGUID+140, @CGUID+140, 3),
|
(@CGUID+140, @CGUID+140, 0, 0, 3),
|
||||||
(@CGUID+140, @CGUID+152, 3),
|
(@CGUID+140, @CGUID+152, 0, 0, 3),
|
||||||
(@CGUID+140, @CGUID+142, 3),
|
(@CGUID+140, @CGUID+142, 0, 0, 3),
|
||||||
(@CGUID+140, @CGUID+150, 3),
|
(@CGUID+140, @CGUID+150, 0, 0, 3),
|
||||||
(@CGUID+140, @CGUID+153, 3),
|
(@CGUID+140, @CGUID+153, 0, 0, 3),
|
||||||
(@CGUID+140, @CGUID+151, 3),
|
(@CGUID+140, @CGUID+151, 0, 0, 3),
|
||||||
(@CGUID+140, @CGUID+141, 3),
|
(@CGUID+140, @CGUID+141, 0, 0, 3),
|
||||||
(@CGUID+140, @CGUID+148, 3),
|
(@CGUID+140, @CGUID+148, 0, 0, 3),
|
||||||
(@CGUID+43, @CGUID+43, 3),
|
(@CGUID+43, @CGUID+43, 0, 0, 3),
|
||||||
(@CGUID+43, @CGUID+127, 3),
|
(@CGUID+43, @CGUID+127, 0, 0, 3),
|
||||||
(@CGUID+43, @CGUID+126, 3),
|
(@CGUID+43, @CGUID+126, 0, 0, 3),
|
||||||
(@CGUID+43, @CGUID+128, 3),
|
(@CGUID+43, @CGUID+128, 0, 0, 3),
|
||||||
(@CGUID+72, @CGUID+72, 3),
|
(@CGUID+72, @CGUID+72, 0, 0, 3),
|
||||||
(@CGUID+72, @CGUID+116, 3),
|
(@CGUID+72, @CGUID+116, 0, 0, 3),
|
||||||
(@CGUID+72, @CGUID+71, 3),
|
(@CGUID+72, @CGUID+71, 0, 0, 3),
|
||||||
(@CGUID+72, @CGUID+40, 3),
|
(@CGUID+72, @CGUID+40, 0, 0, 3),
|
||||||
(@CGUID+117, @CGUID+117, 3),
|
(@CGUID+117, @CGUID+117, 0, 0, 3),
|
||||||
(@CGUID+117, @CGUID+74, 3),
|
(@CGUID+117, @CGUID+74, 0, 0, 3),
|
||||||
(@CGUID+117, @CGUID+73, 3),
|
(@CGUID+117, @CGUID+73, 0, 0, 3),
|
||||||
(@CGUID+117, @CGUID+92, 3),
|
(@CGUID+117, @CGUID+92, 0, 0, 3),
|
||||||
(@CGUID+41, @CGUID+41, 3),
|
(@CGUID+41, @CGUID+41, 0, 0, 3),
|
||||||
(@CGUID+41, @CGUID+75, 3),
|
(@CGUID+41, @CGUID+75, 0, 0, 3),
|
||||||
(@CGUID+41, @CGUID+118, 3),
|
(@CGUID+41, @CGUID+118, 0, 0, 3),
|
||||||
(@CGUID+41, @CGUID+93, 3),
|
(@CGUID+41, @CGUID+93, 0, 0, 3),
|
||||||
(@CGUID+42, @CGUID+42, 3),
|
(@CGUID+42, @CGUID+42, 0, 0, 3),
|
||||||
(@CGUID+42, @CGUID+76, 3),
|
(@CGUID+42, @CGUID+76, 0, 0, 3),
|
||||||
(@CGUID+42, @CGUID+94, 3),
|
(@CGUID+42, @CGUID+94, 0, 0, 3),
|
||||||
(@CGUID+42, @CGUID+119, 3);
|
(@CGUID+42, @CGUID+119, 0, 0, 3);
|
||||||
|
|||||||
@@ -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);
|
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
|
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
|
||||||
(@CGUID+50, @CGUID+50, 3),
|
(@CGUID+50, @CGUID+50, 0, 0, 3),
|
||||||
(@CGUID+50, @CGUID+70, 3),
|
(@CGUID+50, @CGUID+70, 0, 0, 3),
|
||||||
(@CGUID+50, @CGUID+71, 3),
|
(@CGUID+50, @CGUID+71, 0, 0, 3),
|
||||||
(@CGUID+52, @CGUID+52, 3),
|
(@CGUID+52, @CGUID+52, 0, 0, 3),
|
||||||
(@CGUID+52, @CGUID+73, 3),
|
(@CGUID+52, @CGUID+73, 0, 0, 3),
|
||||||
(@CGUID+89, @CGUID+89, 3),
|
(@CGUID+89, @CGUID+89, 0, 0, 3),
|
||||||
(@CGUID+89, @CGUID+99, 3),
|
(@CGUID+89, @CGUID+99, 0, 0, 3),
|
||||||
(@CGUID+89, @CGUID+97, 3),
|
(@CGUID+89, @CGUID+97, 0, 0, 3),
|
||||||
(@CGUID+89, @CGUID+96, 3),
|
(@CGUID+89, @CGUID+96, 0, 0, 3),
|
||||||
(@CGUID+89, @CGUID+95, 3),
|
(@CGUID+89, @CGUID+95, 0, 0, 3),
|
||||||
(@CGUID+89, @CGUID+93, 3),
|
(@CGUID+89, @CGUID+93, 0, 0, 3),
|
||||||
(@CGUID+68, @CGUID+68, 3),
|
(@CGUID+68, @CGUID+68, 0, 0, 3),
|
||||||
(@CGUID+68, @CGUID+69, 3),
|
(@CGUID+68, @CGUID+69, 0, 0, 3),
|
||||||
(@CGUID+66, @CGUID+66, 3),
|
(@CGUID+66, @CGUID+66, 0, 0, 3),
|
||||||
(@CGUID+66, @CGUID+47, 3),
|
(@CGUID+66, @CGUID+47, 0, 0, 3),
|
||||||
(@CGUID+66, @CGUID+46, 3),
|
(@CGUID+66, @CGUID+46, 0, 0, 3),
|
||||||
(@CGUID+43, @CGUID+43, 3),
|
(@CGUID+43, @CGUID+43, 0, 0, 3),
|
||||||
(@CGUID+43, @CGUID+64, 3),
|
(@CGUID+43, @CGUID+64, 0, 0, 3),
|
||||||
(@CGUID+45, @CGUID+45, 3),
|
(@CGUID+45, @CGUID+45, 0, 0, 3),
|
||||||
(@CGUID+45, @CGUID+65, 3),
|
(@CGUID+45, @CGUID+65, 0, 0, 3),
|
||||||
(@CGUID+39, @CGUID+39, 3),
|
(@CGUID+39, @CGUID+39, 0, 0, 3),
|
||||||
(@CGUID+39, @CGUID+88, 3),
|
(@CGUID+39, @CGUID+88, 0, 0, 3),
|
||||||
(@CGUID+39, @CGUID+94, 3),
|
(@CGUID+39, @CGUID+94, 0, 0, 3),
|
||||||
(@CGUID+39, @CGUID+60, 3),
|
(@CGUID+39, @CGUID+60, 0, 0, 3),
|
||||||
(@CGUID+58, @CGUID+58, 3),
|
(@CGUID+58, @CGUID+58, 0, 0, 3),
|
||||||
(@CGUID+58, @CGUID+37, 3),
|
(@CGUID+58, @CGUID+37, 0, 0, 3),
|
||||||
(@CGUID+58, @CGUID+38, 3),
|
(@CGUID+58, @CGUID+38, 0, 0, 3),
|
||||||
(@CGUID+116, @CGUID+116, 3),
|
(@CGUID+116, @CGUID+116, 0, 0, 3),
|
||||||
(@CGUID+116, @CGUID+114, 3),
|
(@CGUID+116, @CGUID+114, 0, 0, 3),
|
||||||
(@CGUID+116, @CGUID+117, 3),
|
(@CGUID+116, @CGUID+117, 0, 0, 3),
|
||||||
(@CGUID+116, @CGUID+231, 3),
|
(@CGUID+116, @CGUID+231, 0, 0, 3),
|
||||||
(@CGUID+121, @CGUID+121, 3),
|
(@CGUID+121, @CGUID+121, 0, 0, 3),
|
||||||
(@CGUID+121, @CGUID+119, 3),
|
(@CGUID+121, @CGUID+119, 0, 0, 3),
|
||||||
(@CGUID+121, @CGUID+120, 3),
|
(@CGUID+121, @CGUID+120, 0, 0, 3),
|
||||||
(@CGUID+121, @CGUID+233, 3),
|
(@CGUID+121, @CGUID+233, 0, 0, 3),
|
||||||
(@CGUID+113, @CGUID+113, 3),
|
(@CGUID+113, @CGUID+113, 0, 0, 3),
|
||||||
(@CGUID+113, @CGUID+118, 3),
|
(@CGUID+113, @CGUID+118, 0, 0, 3),
|
||||||
(@CGUID+113, @CGUID+115, 3),
|
(@CGUID+113, @CGUID+115, 0, 0, 3),
|
||||||
(@CGUID+113, @CGUID+230, 3),
|
(@CGUID+113, @CGUID+230, 0, 0, 3),
|
||||||
(@CGUID+122, @CGUID+122, 3),
|
(@CGUID+122, @CGUID+122, 0, 0, 3),
|
||||||
(@CGUID+122, @CGUID+124, 3),
|
(@CGUID+122, @CGUID+124, 0, 0, 3),
|
||||||
(@CGUID+122, @CGUID+123, 3),
|
(@CGUID+122, @CGUID+123, 0, 0, 3),
|
||||||
(@CGUID+122, @CGUID+234, 3),
|
(@CGUID+122, @CGUID+234, 0, 0, 3),
|
||||||
(@CGUID+125, @CGUID+125, 3),
|
(@CGUID+125, @CGUID+125, 0, 0, 3),
|
||||||
(@CGUID+125, @CGUID+127, 3),
|
(@CGUID+125, @CGUID+127, 0, 0, 3),
|
||||||
(@CGUID+125, @CGUID+128, 3),
|
(@CGUID+125, @CGUID+128, 0, 0, 3),
|
||||||
(@CGUID+125, @CGUID+235, 3),
|
(@CGUID+125, @CGUID+235, 0, 0, 3),
|
||||||
(@CGUID+126, @CGUID+126, 3),
|
(@CGUID+126, @CGUID+126, 0, 0, 3),
|
||||||
(@CGUID+126, @CGUID+129, 3),
|
(@CGUID+126, @CGUID+129, 0, 0, 3),
|
||||||
(@CGUID+126, @CGUID+130, 3),
|
(@CGUID+126, @CGUID+130, 0, 0, 3),
|
||||||
(@CGUID+126, @CGUID+232, 3),
|
(@CGUID+126, @CGUID+232, 0, 0, 3),
|
||||||
(@CGUID+44, @CGUID+44, 3),
|
(@CGUID+44, @CGUID+44, 0, 0, 3),
|
||||||
(@CGUID+44, @CGUID+79, 3),
|
(@CGUID+44, @CGUID+79, 0, 0, 3),
|
||||||
(@CGUID+44, @CGUID+63, 3),
|
(@CGUID+44, @CGUID+63, 0, 0, 3),
|
||||||
(@CGUID+44, @CGUID+31, 3),
|
(@CGUID+44, @CGUID+31, 0, 0, 3),
|
||||||
(@CGUID+80, @CGUID+80, 3),
|
(@CGUID+80, @CGUID+80, 0, 0, 3),
|
||||||
(@CGUID+80, @CGUID+41, 3),
|
(@CGUID+80, @CGUID+41, 0, 0, 3),
|
||||||
(@CGUID+80, @CGUID+62, 3),
|
(@CGUID+80, @CGUID+62, 0, 0, 3),
|
||||||
(@CGUID+80, @CGUID+42, 3),
|
(@CGUID+80, @CGUID+42, 0, 0, 3),
|
||||||
(@CGUID+80, @CGUID+32, 3),
|
(@CGUID+80, @CGUID+32, 0, 0, 3),
|
||||||
(@CGUID+81, @CGUID+81, 3),
|
(@CGUID+81, @CGUID+81, 0, 0, 3),
|
||||||
(@CGUID+81, @CGUID+49, 3),
|
(@CGUID+81, @CGUID+49, 0, 0, 3),
|
||||||
(@CGUID+81, @CGUID+33, 3),
|
(@CGUID+81, @CGUID+33, 0, 0, 3),
|
||||||
(@CGUID+81, @CGUID+48, 3),
|
(@CGUID+81, @CGUID+48, 0, 0, 3),
|
||||||
(@CGUID+81, @CGUID+67, 3),
|
(@CGUID+81, @CGUID+67, 0, 0, 3),
|
||||||
(@CGUID+34, @CGUID+34, 3),
|
(@CGUID+34, @CGUID+34, 0, 0, 3),
|
||||||
(@CGUID+34, @CGUID+82, 3),
|
(@CGUID+34, @CGUID+82, 0, 0, 3),
|
||||||
(@CGUID+34, @CGUID+72, 3),
|
(@CGUID+34, @CGUID+72, 0, 0, 3),
|
||||||
(@CGUID+34, @CGUID+51, 3),
|
(@CGUID+34, @CGUID+51, 0, 0, 3),
|
||||||
(@CGUID+34, @CGUID+102, 3),
|
(@CGUID+34, @CGUID+102, 0, 0, 3),
|
||||||
(@CGUID+34, @CGUID+92, 3),
|
(@CGUID+34, @CGUID+92, 0, 0, 3),
|
||||||
(@CGUID+53, @CGUID+53, 3),
|
(@CGUID+53, @CGUID+53, 0, 0, 3),
|
||||||
(@CGUID+53, @CGUID+35, 3),
|
(@CGUID+53, @CGUID+35, 0, 0, 3),
|
||||||
(@CGUID+91, @CGUID+91, 3),
|
(@CGUID+91, @CGUID+91, 0, 0, 3),
|
||||||
(@CGUID+91, @CGUID+101, 3),
|
(@CGUID+91, @CGUID+101, 0, 0, 3),
|
||||||
(@CGUID+91, @CGUID+40, 3),
|
(@CGUID+91, @CGUID+40, 0, 0, 3),
|
||||||
(@CGUID+91, @CGUID+78, 3),
|
(@CGUID+91, @CGUID+78, 0, 0, 3),
|
||||||
(@CGUID+91, @CGUID+61, 3),
|
(@CGUID+91, @CGUID+61, 0, 0, 3),
|
||||||
(@CGUID+91, @CGUID+30, 3),
|
(@CGUID+91, @CGUID+30, 0, 0, 3),
|
||||||
(@CGUID+29, @CGUID+29, 3),
|
(@CGUID+29, @CGUID+29, 0, 0, 3),
|
||||||
(@CGUID+29, @CGUID+57, 3),
|
(@CGUID+29, @CGUID+57, 0, 0, 3),
|
||||||
(@CGUID+186, @CGUID+186, 3),
|
(@CGUID+186, @CGUID+186, 0, 0, 3),
|
||||||
(@CGUID+186, @CGUID+188, 3),
|
(@CGUID+186, @CGUID+188, 0, 0, 3),
|
||||||
(@CGUID+186, @CGUID+187, 3),
|
(@CGUID+186, @CGUID+187, 0, 0, 3),
|
||||||
(@CGUID+186, @CGUID+185, 3),
|
(@CGUID+186, @CGUID+185, 0, 0, 3),
|
||||||
(@CGUID+36, @CGUID+36, 3),
|
(@CGUID+36, @CGUID+36, 0, 0, 3),
|
||||||
(@CGUID+36, @CGUID+55, 3),
|
(@CGUID+36, @CGUID+55, 0, 0, 3),
|
||||||
(@CGUID+36, @CGUID+56, 3),
|
(@CGUID+36, @CGUID+56, 0, 0, 3),
|
||||||
(@CGUID+28, @CGUID+28, 3),
|
(@CGUID+28, @CGUID+28, 0, 0, 3),
|
||||||
(@CGUID+28, @CGUID+54, 3),
|
(@CGUID+28, @CGUID+54, 0, 0, 3),
|
||||||
(@CGUID+183, @CGUID+183, 3),
|
(@CGUID+183, @CGUID+183, 0, 0, 3),
|
||||||
(@CGUID+183, @CGUID+181, 3),
|
(@CGUID+183, @CGUID+181, 0, 0, 3),
|
||||||
(@CGUID+183, @CGUID+182, 3),
|
(@CGUID+183, @CGUID+182, 0, 0, 3),
|
||||||
(@CGUID+183, @CGUID+180, 3),
|
(@CGUID+183, @CGUID+180, 0, 0, 3),
|
||||||
(@CGUID+159, @CGUID+159, 3),
|
(@CGUID+159, @CGUID+159, 0, 0, 3),
|
||||||
(@CGUID+159, @CGUID+158, 3),
|
(@CGUID+159, @CGUID+158, 0, 0, 3),
|
||||||
(@CGUID+159, @CGUID+161, 3),
|
(@CGUID+159, @CGUID+161, 0, 0, 3),
|
||||||
(@CGUID+159, @CGUID+165, 3),
|
(@CGUID+159, @CGUID+165, 0, 0, 3),
|
||||||
(@CGUID+159, @CGUID+166, 3),
|
(@CGUID+159, @CGUID+166, 0, 0, 3),
|
||||||
(@CGUID+159, @CGUID+177, 3),
|
(@CGUID+159, @CGUID+177, 0, 0, 3),
|
||||||
(@CGUID+159, @CGUID+172, 3),
|
(@CGUID+159, @CGUID+172, 0, 0, 3),
|
||||||
(@CGUID+159, @CGUID+176, 3),
|
(@CGUID+159, @CGUID+176, 0, 0, 3),
|
||||||
(@CGUID+159, @CGUID+168, 3),
|
(@CGUID+159, @CGUID+168, 0, 0, 3),
|
||||||
(@CGUID+159, @CGUID+160, 3),
|
(@CGUID+159, @CGUID+160, 0, 0, 3),
|
||||||
(@CGUID+164, @CGUID+164, 3),
|
(@CGUID+164, @CGUID+164, 0, 0, 3),
|
||||||
(@CGUID+164, @CGUID+163, 3),
|
(@CGUID+164, @CGUID+163, 0, 0, 3),
|
||||||
(@CGUID+164, @CGUID+162, 3),
|
(@CGUID+164, @CGUID+162, 0, 0, 3),
|
||||||
(@CGUID+164, @CGUID+167, 3),
|
(@CGUID+164, @CGUID+167, 0, 0, 3),
|
||||||
(@CGUID+164, @CGUID+169, 3),
|
(@CGUID+164, @CGUID+169, 0, 0, 3),
|
||||||
(@CGUID+164, @CGUID+175, 3),
|
(@CGUID+164, @CGUID+175, 0, 0, 3),
|
||||||
(@CGUID+164, @CGUID+173, 3),
|
(@CGUID+164, @CGUID+173, 0, 0, 3),
|
||||||
(@CGUID+164, @CGUID+170, 3),
|
(@CGUID+164, @CGUID+170, 0, 0, 3),
|
||||||
(@CGUID+164, @CGUID+171, 3),
|
(@CGUID+164, @CGUID+171, 0, 0, 3),
|
||||||
(@CGUID+164, @CGUID+174, 3),
|
(@CGUID+164, @CGUID+174, 0, 0, 3),
|
||||||
(@CGUID+136, @CGUID+136, 3),
|
(@CGUID+136, @CGUID+136, 0, 0, 3),
|
||||||
(@CGUID+136, @CGUID+149, 3),
|
(@CGUID+136, @CGUID+149, 0, 0, 3),
|
||||||
(@CGUID+136, @CGUID+145, 3),
|
(@CGUID+136, @CGUID+145, 0, 0, 3),
|
||||||
(@CGUID+136, @CGUID+152, 3),
|
(@CGUID+136, @CGUID+152, 0, 0, 3),
|
||||||
(@CGUID+136, @CGUID+155, 3),
|
(@CGUID+136, @CGUID+155, 0, 0, 3),
|
||||||
(@CGUID+136, @CGUID+153, 3),
|
(@CGUID+136, @CGUID+153, 0, 0, 3),
|
||||||
(@CGUID+136, @CGUID+144, 3),
|
(@CGUID+136, @CGUID+144, 0, 0, 3),
|
||||||
(@CGUID+136, @CGUID+140, 3),
|
(@CGUID+136, @CGUID+140, 0, 0, 3),
|
||||||
(@CGUID+136, @CGUID+137, 3),
|
(@CGUID+136, @CGUID+137, 0, 0, 3),
|
||||||
(@CGUID+136, @CGUID+147, 3),
|
(@CGUID+136, @CGUID+147, 0, 0, 3),
|
||||||
(@CGUID+141, @CGUID+141, 3),
|
(@CGUID+141, @CGUID+141, 0, 0, 3),
|
||||||
(@CGUID+141, @CGUID+150, 3),
|
(@CGUID+141, @CGUID+150, 0, 0, 3),
|
||||||
(@CGUID+141, @CGUID+154, 3),
|
(@CGUID+141, @CGUID+154, 0, 0, 3),
|
||||||
(@CGUID+141, @CGUID+151, 3),
|
(@CGUID+141, @CGUID+151, 0, 0, 3),
|
||||||
(@CGUID+141, @CGUID+146, 3),
|
(@CGUID+141, @CGUID+146, 0, 0, 3),
|
||||||
(@CGUID+141, @CGUID+142, 3),
|
(@CGUID+141, @CGUID+142, 0, 0, 3),
|
||||||
(@CGUID+141, @CGUID+148, 3),
|
(@CGUID+141, @CGUID+148, 0, 0, 3),
|
||||||
(@CGUID+141, @CGUID+143, 3),
|
(@CGUID+141, @CGUID+143, 0, 0, 3),
|
||||||
(@CGUID+141, @CGUID+138, 3),
|
(@CGUID+141, @CGUID+138, 0, 0, 3),
|
||||||
(@CGUID+141, @CGUID+139, 3),
|
(@CGUID+141, @CGUID+139, 0, 0, 3),
|
||||||
(@CGUID+211, @CGUID+211, 3),
|
(@CGUID+211, @CGUID+211, 0, 0, 3),
|
||||||
(@CGUID+211, @CGUID+212, 3),
|
(@CGUID+211, @CGUID+212, 0, 0, 3),
|
||||||
(@CGUID+213, @CGUID+213, 3),
|
(@CGUID+213, @CGUID+213, 0, 0, 3),
|
||||||
(@CGUID+213, @CGUID+214, 3),
|
(@CGUID+213, @CGUID+214, 0, 0, 3),
|
||||||
(@CGUID+213, @CGUID+215, 3),
|
(@CGUID+213, @CGUID+215, 0, 0, 3),
|
||||||
(@CGUID+213, @CGUID+216, 3),
|
(@CGUID+213, @CGUID+216, 0, 0, 3),
|
||||||
(@CGUID+217, @CGUID+217, 3),
|
(@CGUID+217, @CGUID+217, 0, 0, 3),
|
||||||
(@CGUID+217, @CGUID+218, 3),
|
(@CGUID+217, @CGUID+218, 0, 0, 3),
|
||||||
(@CGUID+217, @CGUID+219, 3),
|
(@CGUID+217, @CGUID+219, 0, 0, 3),
|
||||||
(@CGUID+217, @CGUID+220, 3),
|
(@CGUID+217, @CGUID+220, 0, 0, 3),
|
||||||
(@CGUID+221, @CGUID+221, 3),
|
(@CGUID+221, @CGUID+221, 0, 0, 3),
|
||||||
(@CGUID+221, @CGUID+222, 3),
|
(@CGUID+221, @CGUID+222, 0, 0, 3),
|
||||||
(@CGUID+221, @CGUID+223, 3),
|
(@CGUID+221, @CGUID+223, 0, 0, 3),
|
||||||
(@CGUID+221, @CGUID+224, 3),
|
(@CGUID+221, @CGUID+224, 0, 0, 3),
|
||||||
(@CGUID+206, @CGUID+206, 3),
|
(@CGUID+206, @CGUID+206, 0, 0, 3),
|
||||||
(@CGUID+206, @CGUID+207, 3),
|
(@CGUID+206, @CGUID+207, 0, 0, 3),
|
||||||
(@CGUID+206, @CGUID+208, 3),
|
(@CGUID+206, @CGUID+208, 0, 0, 3),
|
||||||
(@CGUID+26, @CGUID+26, 3),
|
(@CGUID+26, @CGUID+26, 0, 0, 3),
|
||||||
(@CGUID+26, @CGUID+191, 3),
|
(@CGUID+26, @CGUID+191, 0, 0, 3),
|
||||||
(@CGUID+26, @CGUID+195, 3),
|
(@CGUID+26, @CGUID+195, 0, 0, 3),
|
||||||
(@CGUID+26, @CGUID+85, 3);
|
(@CGUID+26, @CGUID+85, 0, 0, 3);
|
||||||
|
|
||||||
-- Linked Respawn for the respawning creatures in Murmur's Room
|
-- 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;
|
DELETE FROM `linked_respawn` WHERE `guid` IN (@CGUID+225, @CGUID+226, @CGUID+227, @CGUID+228, @CGUID+229) AND `linkType`=0;
|
||||||
|
|||||||
@@ -1395,90 +1395,90 @@ INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`,
|
|||||||
(@CGUID+180, @CGUID+182, 3, 270, 515);
|
(@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);
|
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
|
INSERT INTO `creature_formations` (`memberGUID`, `leaderGUID`, `dist`, `angle`, `groupAI`) VALUES
|
||||||
(@CGUID+006,@CGUID+006,3),
|
(@CGUID+006, @CGUID+006, 0, 0, 3),
|
||||||
(@CGUID+007,@CGUID+006,3),
|
(@CGUID+007, @CGUID+006, 0, 0, 3),
|
||||||
(@CGUID+011,@CGUID+011,3),
|
(@CGUID+011, @CGUID+011, 0, 0, 3),
|
||||||
(@CGUID+012,@CGUID+011,3),
|
(@CGUID+012, @CGUID+011, 0, 0, 3),
|
||||||
(@CGUID+013,@CGUID+013,3),
|
(@CGUID+013, @CGUID+013, 0, 0, 3),
|
||||||
(@CGUID+014,@CGUID+013,3),
|
(@CGUID+014, @CGUID+013, 0, 0, 3),
|
||||||
(@CGUID+015,@CGUID+015,3),
|
(@CGUID+015, @CGUID+015, 0, 0, 3),
|
||||||
(@CGUID+016,@CGUID+015,3),
|
(@CGUID+016, @CGUID+015, 0, 0, 3),
|
||||||
(@CGUID+017,@CGUID+017,3),
|
(@CGUID+017, @CGUID+017, 0, 0, 3),
|
||||||
(@CGUID+018,@CGUID+017,3),
|
(@CGUID+018, @CGUID+017, 0, 0, 3),
|
||||||
(@CGUID+008,@CGUID+008,3),
|
(@CGUID+008, @CGUID+008, 0, 0, 3),
|
||||||
(@CGUID+009,@CGUID+008,3),
|
(@CGUID+009, @CGUID+008, 0, 0, 3),
|
||||||
(@CGUID+019,@CGUID+019,3),
|
(@CGUID+019, @CGUID+019, 0, 0, 3),
|
||||||
(@CGUID+023,@CGUID+019,3),
|
(@CGUID+023, @CGUID+019, 0, 0, 3),
|
||||||
(@CGUID+021,@CGUID+019,3),
|
(@CGUID+021, @CGUID+019, 0, 0, 3),
|
||||||
(@CGUID+022,@CGUID+019,3),
|
(@CGUID+022, @CGUID+019, 0, 0, 3),
|
||||||
(@CGUID+020,@CGUID+019,3),
|
(@CGUID+020, @CGUID+019, 0, 0, 3),
|
||||||
(@CGUID+024,@CGUID+024,3),
|
(@CGUID+024, @CGUID+024, 0, 0, 3),
|
||||||
(@CGUID+027,@CGUID+024,3),
|
(@CGUID+027, @CGUID+024, 0, 0, 3),
|
||||||
(@CGUID+025,@CGUID+024,3),
|
(@CGUID+025, @CGUID+024, 0, 0, 3),
|
||||||
(@CGUID+028,@CGUID+024,3),
|
(@CGUID+028, @CGUID+024, 0, 0, 3),
|
||||||
(@CGUID+026,@CGUID+024,3),
|
(@CGUID+026, @CGUID+024, 0, 0, 3),
|
||||||
(@CGUID+029,@CGUID+029,3),
|
(@CGUID+029, @CGUID+029, 0, 0, 3),
|
||||||
(@CGUID+032,@CGUID+029,3),
|
(@CGUID+032, @CGUID+029, 0, 0, 3),
|
||||||
(@CGUID+030,@CGUID+029,3),
|
(@CGUID+030, @CGUID+029, 0, 0, 3),
|
||||||
(@CGUID+033,@CGUID+029,3),
|
(@CGUID+033, @CGUID+029, 0, 0, 3),
|
||||||
(@CGUID+031,@CGUID+029,3),
|
(@CGUID+031, @CGUID+029, 0, 0, 3),
|
||||||
(@CGUID+034,@CGUID+029,3),
|
(@CGUID+034, @CGUID+029, 0, 0, 3),
|
||||||
(@CGUID+035,@CGUID+035,3),
|
(@CGUID+035, @CGUID+035, 0, 0, 3),
|
||||||
(@CGUID+036,@CGUID+035,3),
|
(@CGUID+036, @CGUID+035, 0, 0, 3),
|
||||||
(@CGUID+037,@CGUID+035,3),
|
(@CGUID+037, @CGUID+035, 0, 0, 3),
|
||||||
(@CGUID+038,@CGUID+035,3),
|
(@CGUID+038, @CGUID+035, 0, 0, 3),
|
||||||
(@CGUID+039,@CGUID+035,3),
|
(@CGUID+039, @CGUID+035, 0, 0, 3),
|
||||||
(@CGUID+040,@CGUID+035,3),
|
(@CGUID+040, @CGUID+035, 0, 0, 3),
|
||||||
(@CGUID+041,@CGUID+035,3),
|
(@CGUID+041, @CGUID+035, 0, 0, 3),
|
||||||
(@CGUID+094,@CGUID+094,3),
|
(@CGUID+094, @CGUID+094, 0, 0, 3),
|
||||||
(@CGUID+095,@CGUID+094,3),
|
(@CGUID+095, @CGUID+094, 0, 0, 3),
|
||||||
(@CGUID+096,@CGUID+094,3),
|
(@CGUID+096, @CGUID+094, 0, 0, 3),
|
||||||
(@CGUID+097,@CGUID+094,3),
|
(@CGUID+097, @CGUID+094, 0, 0, 3),
|
||||||
(@CGUID+121,@CGUID+121,3),
|
(@CGUID+121, @CGUID+121, 0, 0, 3),
|
||||||
(@CGUID+122,@CGUID+121,3),
|
(@CGUID+122, @CGUID+121, 0, 0, 3),
|
||||||
(@CGUID+123,@CGUID+121,3),
|
(@CGUID+123, @CGUID+121, 0, 0, 3),
|
||||||
(@CGUID+124,@CGUID+121,3),
|
(@CGUID+124, @CGUID+121, 0, 0, 3),
|
||||||
(@CGUID+131,@CGUID+131,3),
|
(@CGUID+131, @CGUID+131, 0, 0, 3),
|
||||||
(@CGUID+134,@CGUID+131,3),
|
(@CGUID+134, @CGUID+131, 0, 0, 3),
|
||||||
(@CGUID+132,@CGUID+131,3),
|
(@CGUID+132, @CGUID+131, 0, 0, 3),
|
||||||
(@CGUID+135,@CGUID+131,3),
|
(@CGUID+135, @CGUID+131, 0, 0, 3),
|
||||||
(@CGUID+133,@CGUID+131,3),
|
(@CGUID+133, @CGUID+131, 0, 0, 3),
|
||||||
(@CGUID+136,@CGUID+131,3),
|
(@CGUID+136, @CGUID+131, 0, 0, 3),
|
||||||
(@CGUID+137,@CGUID+137,3),
|
(@CGUID+137, @CGUID+137, 0, 0, 3),
|
||||||
(@CGUID+138,@CGUID+137,3),
|
(@CGUID+138, @CGUID+137, 0, 0, 3),
|
||||||
(@CGUID+139,@CGUID+137,3),
|
(@CGUID+139, @CGUID+137, 0, 0, 3),
|
||||||
(@CGUID+140,@CGUID+137,3),
|
(@CGUID+140, @CGUID+137, 0, 0, 3),
|
||||||
(@CGUID+141,@CGUID+137,3),
|
(@CGUID+141, @CGUID+137, 0, 0, 3),
|
||||||
(@CGUID+142,@CGUID+137,3),
|
(@CGUID+142, @CGUID+137, 0, 0, 3),
|
||||||
(@CGUID+175,@CGUID+175,3),
|
(@CGUID+175, @CGUID+175, 0, 0, 3),
|
||||||
(@CGUID+176,@CGUID+175,3),
|
(@CGUID+176, @CGUID+175, 0, 0, 3),
|
||||||
(@CGUID+177,@CGUID+177,3),
|
(@CGUID+177, @CGUID+177, 0, 0, 3),
|
||||||
(@CGUID+178,@CGUID+177,3),
|
(@CGUID+178, @CGUID+177, 0, 0, 3),
|
||||||
(@CGUID+183,@CGUID+183,3),
|
(@CGUID+183, @CGUID+183, 0, 0, 3),
|
||||||
(@CGUID+184,@CGUID+183,3),
|
(@CGUID+184, @CGUID+183, 0, 0, 3),
|
||||||
(@CGUID+192,@CGUID+192,3),
|
(@CGUID+192, @CGUID+192, 0, 0, 3),
|
||||||
(@CGUID+193,@CGUID+192,3),
|
(@CGUID+193, @CGUID+192, 0, 0, 3),
|
||||||
(@CGUID+046,@CGUID+046,3),
|
(@CGUID+046, @CGUID+046, 0, 0, 3),
|
||||||
(@CGUID+047,@CGUID+046,3),
|
(@CGUID+047, @CGUID+046, 0, 0, 3),
|
||||||
(@CGUID+048,@CGUID+046,3),
|
(@CGUID+048, @CGUID+046, 0, 0, 3),
|
||||||
(@CGUID+148,@CGUID+148,3),
|
(@CGUID+148, @CGUID+148, 0, 0, 3),
|
||||||
(@CGUID+149,@CGUID+148,3),
|
(@CGUID+149, @CGUID+148, 0, 0, 3),
|
||||||
(@CGUID+150,@CGUID+148,3),
|
(@CGUID+150, @CGUID+148, 0, 0, 3),
|
||||||
(@CGUID+151,@CGUID+148,3),
|
(@CGUID+151, @CGUID+148, 0, 0, 3),
|
||||||
(@CGUID+152,@CGUID+148,3),
|
(@CGUID+152, @CGUID+148, 0, 0, 3),
|
||||||
(@CGUID+143,@CGUID+143,3),
|
(@CGUID+143, @CGUID+143, 0, 0, 3),
|
||||||
(@CGUID+144,@CGUID+143,3),
|
(@CGUID+144, @CGUID+143, 0, 0, 3),
|
||||||
(@CGUID+145,@CGUID+143,3),
|
(@CGUID+145, @CGUID+143, 0, 0, 3),
|
||||||
(@CGUID+147,@CGUID+143,3),
|
(@CGUID+147, @CGUID+143, 0, 0, 3),
|
||||||
(@CGUID+146,@CGUID+143,3),
|
(@CGUID+146, @CGUID+143, 0, 0, 3),
|
||||||
(@CGUID+153,@CGUID+153,3),
|
(@CGUID+153, @CGUID+153, 0, 0, 3),
|
||||||
(@CGUID+155,@CGUID+153,3),
|
(@CGUID+155, @CGUID+153, 0, 0, 3),
|
||||||
(@CGUID+157,@CGUID+153,3),
|
(@CGUID+157, @CGUID+153, 0, 0, 3),
|
||||||
(@CGUID+154,@CGUID+153,3),
|
(@CGUID+154, @CGUID+153, 0, 0, 3),
|
||||||
(@CGUID+156,@CGUID+153,3),
|
(@CGUID+156, @CGUID+153, 0, 0, 3),
|
||||||
(@CGUID+158,@CGUID+158,3),
|
(@CGUID+158, @CGUID+158, 0, 0, 3),
|
||||||
(@CGUID+159,@CGUID+158,3),
|
(@CGUID+159, @CGUID+158, 0, 0, 3),
|
||||||
(@CGUID+160,@CGUID+158,3),
|
(@CGUID+160, @CGUID+158, 0, 0, 3),
|
||||||
(@CGUID+161,@CGUID+158,3),
|
(@CGUID+161, @CGUID+158, 0, 0, 3),
|
||||||
(@CGUID+162,@CGUID+158,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())
|
||||||
@@ -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);
|
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);
|
DELETE FROM `creature_formations` WHERE `leaderGUID` IN (12758, 12759, 12760);
|
||||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `groupAI`) VALUES
|
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
|
||||||
(12758, 12758, 11),
|
(12758, 12758, 0, 0, 11),
|
||||||
(12758, 12762, 11),
|
(12758, 12762, 0, 0, 11),
|
||||||
(12758, 12761, 11),
|
(12758, 12761, 0, 0, 11),
|
||||||
|
|
||||||
(12759, 12759, 11),
|
(12759, 12759, 0, 0, 11),
|
||||||
(12759, 12763, 11),
|
(12759, 12763, 0, 0, 11),
|
||||||
(12759, 12764, 11),
|
(12759, 12764, 0, 0, 11),
|
||||||
|
|
||||||
(12760, 12760, 11),
|
(12760, 12760, 0, 0, 11),
|
||||||
(12760, 12765, 11),
|
(12760, 12765, 0, 0, 11),
|
||||||
(12760, 12766, 11);
|
(12760, 12766, 0, 0, 11);
|
||||||
|
|||||||
@@ -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');
|
(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);
|
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
|
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
|
||||||
(127800, 127800, 1),
|
(127800, 127800, 0, 0, 1),
|
||||||
(127800, 127987, 1),
|
(127800, 127987, 0, 0, 1),
|
||||||
(127800, 127988, 1),
|
(127800, 127988, 0, 0, 1),
|
||||||
(127800, 127989, 1),
|
(127800, 127989, 0, 0, 1),
|
||||||
(127800, 127990, 1),
|
(127800, 127990, 0, 0, 1),
|
||||||
(127800, 127991, 1),
|
(127800, 127991, 0, 0, 1),
|
||||||
(127800, 127992, 1),
|
(127800, 127992, 0, 0, 1),
|
||||||
(127800, 127993, 1),
|
(127800, 127993, 0, 0, 1),
|
||||||
(127800, 127994, 1),
|
(127800, 127994, 0, 0, 1),
|
||||||
(127800, 127995, 1),
|
(127800, 127995, 0, 0, 1),
|
||||||
(127800, 127996, 1),
|
(127800, 127996, 0, 0, 1),
|
||||||
(127800, 127997, 1),
|
(127800, 127997, 0, 0, 1),
|
||||||
(127800, 127998, 1),
|
(127800, 127998, 0, 0, 1),
|
||||||
(127800, 127999, 1),
|
(127800, 127999, 0, 0, 1),
|
||||||
(127800, 128000, 1),
|
(127800, 128000, 0, 0, 1),
|
||||||
(127800, 128001, 1),
|
(127800, 128001, 0, 0, 1),
|
||||||
(127800, 128019, 1),
|
(127800, 128019, 0, 0, 1),
|
||||||
(127800, 128020, 1),
|
(127800, 128020, 0, 0, 1),
|
||||||
(127800, 128021, 1),
|
(127800, 128021, 0, 0, 1),
|
||||||
(127800, 128022, 1),
|
(127800, 128022, 0, 0, 1),
|
||||||
(127800, 128023, 1),
|
(127800, 128023, 0, 0, 1),
|
||||||
(127800, 128024, 1),
|
(127800, 128024, 0, 0, 1),
|
||||||
(127800, 128025, 1),
|
(127800, 128025, 0, 0, 1),
|
||||||
(127800, 128026, 1),
|
(127800, 128026, 0, 0, 1),
|
||||||
(127800, 128027, 1),
|
(127800, 128027, 0, 0, 1),
|
||||||
(127800, 128028, 1),
|
(127800, 128028, 0, 0, 1),
|
||||||
(127800, 128029, 1),
|
(127800, 128029, 0, 0, 1),
|
||||||
(127800, 128030, 1),
|
(127800, 128030, 0, 0, 1),
|
||||||
(127800, 128031, 1),
|
(127800, 128031, 0, 0, 1),
|
||||||
(127800, 128032, 1),
|
(127800, 128032, 0, 0, 1),
|
||||||
(127800, 128033, 1),
|
(127800, 128033, 0, 0, 1),
|
||||||
(127800, 128034, 1),
|
(127800, 128034, 0, 0, 1),
|
||||||
(127800, 128035, 1);
|
(127800, 128035, 0, 0, 1);
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
-- DB update 2026_01_04_00 -> 2026_01_04_01
|
-- DB update 2026_01_04_00 -> 2026_01_04_01
|
||||||
--
|
--
|
||||||
DELETE FROM `creature_formations` WHERE `leaderGUID` IN (12758, 12759, 12760);
|
DELETE FROM `creature_formations` WHERE `leaderGUID` IN (12758, 12759, 12760);
|
||||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `groupAI`) VALUES
|
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
|
||||||
(12758, 12758, 7),
|
(12758, 12758, 0, 0, 7),
|
||||||
(12758, 12762, 7),
|
(12758, 12762, 0, 0, 7),
|
||||||
(12758, 12761, 7),
|
(12758, 12761, 0, 0, 7),
|
||||||
(12759, 12759, 7),
|
(12759, 12759, 0, 0, 7),
|
||||||
(12759, 12763, 7),
|
(12759, 12763, 0, 0, 7),
|
||||||
(12759, 12764, 7),
|
(12759, 12764, 0, 0, 7),
|
||||||
(12760, 12760, 7),
|
(12760, 12760, 0, 0, 7),
|
||||||
(12760, 12765, 7),
|
(12760, 12765, 0, 0, 7),
|
||||||
(12760, 12766, 7);
|
(12760, 12766, 0, 0, 7);
|
||||||
|
|
||||||
DELETE FROM `linked_respawn` WHERE `linkedGuid` = 127214 AND `linkType` = 0;
|
DELETE FROM `linked_respawn` WHERE `linkedGuid` = 127214 AND `linkType` = 0;
|
||||||
INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES
|
INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES
|
||||||
|
|||||||
@@ -2,41 +2,41 @@
|
|||||||
-- Hellfire Peninsula - Pools of Aggonar ooze aggro linking
|
-- Hellfire Peninsula - Pools of Aggonar ooze aggro linking
|
||||||
DELETE FROM `creature_formations` WHERE `leaderGUID` BETWEEN 58465 and 58497;
|
DELETE FROM `creature_formations` WHERE `leaderGUID` BETWEEN 58465 and 58497;
|
||||||
DELETE FROM `creature_formations` WHERE `leaderGUID` = 58786;
|
DELETE FROM `creature_formations` WHERE `leaderGUID` = 58786;
|
||||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `groupAI`) VALUES
|
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
|
||||||
(58465, 58465, 3), (58465, 58498, 3), (58465, 58499, 3),
|
(58465, 58465, 0, 0, 3), (58465, 58498, 0, 0, 3), (58465, 58499, 0, 0, 3),
|
||||||
(58466, 58466, 3), (58466, 58500, 3), (58466, 58504, 3),
|
(58466, 58466, 0, 0, 3), (58466, 58500, 0, 0, 3), (58466, 58504, 0, 0, 3),
|
||||||
(58467, 58467, 3), (58467, 58501, 3), (58467, 58503, 3),
|
(58467, 58467, 0, 0, 3), (58467, 58501, 0, 0, 3), (58467, 58503, 0, 0, 3),
|
||||||
(58468, 58468, 3), (58468, 58561, 3), (58468, 58562, 3),
|
(58468, 58468, 0, 0, 3), (58468, 58561, 0, 0, 3), (58468, 58562, 0, 0, 3),
|
||||||
(58469, 58469, 3), (58469, 58507, 3), (58469, 58508, 3),
|
(58469, 58469, 0, 0, 3), (58469, 58507, 0, 0, 3), (58469, 58508, 0, 0, 3),
|
||||||
(58470, 58470, 3), (58470, 58509, 3), (58470, 58510, 3),
|
(58470, 58470, 0, 0, 3), (58470, 58509, 0, 0, 3), (58470, 58510, 0, 0, 3),
|
||||||
(58471, 58471, 3), (58471, 58502, 3), (58471, 58787, 3),
|
(58471, 58471, 0, 0, 3), (58471, 58502, 0, 0, 3), (58471, 58787, 0, 0, 3),
|
||||||
(58786, 58786, 3), (58786, 58513, 3), (58786, 58514, 3),
|
(58786, 58786, 0, 0, 3), (58786, 58513, 0, 0, 3), (58786, 58514, 0, 0, 3),
|
||||||
(58472, 58472, 3), (58472, 58511, 3), (58472, 58512, 3),
|
(58472, 58472, 0, 0, 3), (58472, 58511, 0, 0, 3), (58472, 58512, 0, 0, 3),
|
||||||
(58473, 58473, 3), (58473, 58515, 3), (58473, 58516, 3),
|
(58473, 58473, 0, 0, 3), (58473, 58515, 0, 0, 3), (58473, 58516, 0, 0, 3),
|
||||||
(58474, 58474, 3), (58474, 58517, 3), (58474, 58518, 3),
|
(58474, 58474, 0, 0, 3), (58474, 58517, 0, 0, 3), (58474, 58518, 0, 0, 3),
|
||||||
(58475, 58475, 3), (58475, 58519, 3), (58475, 58520, 3),
|
(58475, 58475, 0, 0, 3), (58475, 58519, 0, 0, 3), (58475, 58520, 0, 0, 3),
|
||||||
(58476, 58476, 3), (58476, 58521, 3), (58476, 58522, 3),
|
(58476, 58476, 0, 0, 3), (58476, 58521, 0, 0, 3), (58476, 58522, 0, 0, 3),
|
||||||
(58477, 58477, 3), (58477, 58523, 3), (58477, 58524, 3),
|
(58477, 58477, 0, 0, 3), (58477, 58523, 0, 0, 3), (58477, 58524, 0, 0, 3),
|
||||||
(58478, 58478, 3), (58478, 58525, 3), (58478, 58526, 3),
|
(58478, 58478, 0, 0, 3), (58478, 58525, 0, 0, 3), (58478, 58526, 0, 0, 3),
|
||||||
(58479, 58479, 3), (58479, 58527, 3), (58479, 58528, 3),
|
(58479, 58479, 0, 0, 3), (58479, 58527, 0, 0, 3), (58479, 58528, 0, 0, 3),
|
||||||
(58480, 58480, 3), (58480, 58529, 3), (58480, 58530, 3),
|
(58480, 58480, 0, 0, 3), (58480, 58529, 0, 0, 3), (58480, 58530, 0, 0, 3),
|
||||||
(58481, 58481, 3), (58481, 58531, 3), (58481, 58532, 3),
|
(58481, 58481, 0, 0, 3), (58481, 58531, 0, 0, 3), (58481, 58532, 0, 0, 3),
|
||||||
(58482, 58482, 3), (58482, 58535, 3), (58482, 58536, 3),
|
(58482, 58482, 0, 0, 3), (58482, 58535, 0, 0, 3), (58482, 58536, 0, 0, 3),
|
||||||
(58483, 58483, 3), (58483, 58533, 3), (58483, 58534, 3),
|
(58483, 58483, 0, 0, 3), (58483, 58533, 0, 0, 3), (58483, 58534, 0, 0, 3),
|
||||||
(58484, 58484, 3), (58484, 58537, 3), (58484, 58538, 3),
|
(58484, 58484, 0, 0, 3), (58484, 58537, 0, 0, 3), (58484, 58538, 0, 0, 3),
|
||||||
(58485, 58485, 3), (58485, 58539, 3), (58485, 58540, 3),
|
(58485, 58485, 0, 0, 3), (58485, 58539, 0, 0, 3), (58485, 58540, 0, 0, 3),
|
||||||
(58486, 58486, 3), (58486, 58541, 3), (58486, 58542, 3),
|
(58486, 58486, 0, 0, 3), (58486, 58541, 0, 0, 3), (58486, 58542, 0, 0, 3),
|
||||||
(58487, 58487, 3), (58487, 58543, 3), (58487, 58544, 3),
|
(58487, 58487, 0, 0, 3), (58487, 58543, 0, 0, 3), (58487, 58544, 0, 0, 3),
|
||||||
(58488, 58488, 3), (58488, 58545, 3), (58488, 58546, 3),
|
(58488, 58488, 0, 0, 3), (58488, 58545, 0, 0, 3), (58488, 58546, 0, 0, 3),
|
||||||
(58489, 58489, 3), (58489, 58552, 3), (58489, 58553, 3),
|
(58489, 58489, 0, 0, 3), (58489, 58552, 0, 0, 3), (58489, 58553, 0, 0, 3),
|
||||||
(58490, 58490, 3), (58490, 58554, 3), (58490, 58547, 3),
|
(58490, 58490, 0, 0, 3), (58490, 58554, 0, 0, 3), (58490, 58547, 0, 0, 3),
|
||||||
(58491, 58491, 3), (58491, 58549, 3), (58491, 58548, 3),
|
(58491, 58491, 0, 0, 3), (58491, 58549, 0, 0, 3), (58491, 58548, 0, 0, 3),
|
||||||
(58492, 58492, 3), (58492, 58550, 3), (58492, 58551, 3),
|
(58492, 58492, 0, 0, 3), (58492, 58550, 0, 0, 3), (58492, 58551, 0, 0, 3),
|
||||||
(58493, 58493, 3), (58493, 58555, 3), (58493, 58556, 3),
|
(58493, 58493, 0, 0, 3), (58493, 58555, 0, 0, 3), (58493, 58556, 0, 0, 3),
|
||||||
(58494, 58494, 3), (58494, 58557, 3), (58494, 58558, 3),
|
(58494, 58494, 0, 0, 3), (58494, 58557, 0, 0, 3), (58494, 58558, 0, 0, 3),
|
||||||
(58495, 58495, 3), (58495, 58559, 3), (58495, 58560, 3),
|
(58495, 58495, 0, 0, 3), (58495, 58559, 0, 0, 3), (58495, 58560, 0, 0, 3),
|
||||||
(58496, 58496, 3), (58496, 58505, 3), (58496, 58506, 3),
|
(58496, 58496, 0, 0, 3), (58496, 58505, 0, 0, 3), (58496, 58506, 0, 0, 3),
|
||||||
(58497, 58497, 3), (58497, 58563, 3), (58497, 58564, 3);
|
(58497, 58497, 0, 0, 3), (58497, 58563, 0, 0, 3), (58497, 58564, 0, 0, 3);
|
||||||
|
|
||||||
-- Reposition oozes to be closer to group members
|
-- 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;
|
UPDATE `creature` SET `position_x`=381.658, `position_y`=3482.38, `position_z`=61.609, `orientation`=5.43889 WHERE `guid` = 58496 AND `id1` = 16901;
|
||||||
|
|||||||
@@ -392,27 +392,27 @@ INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES
|
|||||||
(@GUID+28, (@GUID+28)*10);
|
(@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);
|
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
|
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
|
||||||
(@GUID+32, @GUID+32, 3),
|
(@GUID+32, @GUID+32, 0, 0, 3),
|
||||||
(@GUID+32, @GUID+33, 3),
|
(@GUID+32, @GUID+33, 0, 0, 3),
|
||||||
(@GUID+2, @GUID+2 , 3),
|
(@GUID+2, @GUID+2, 0, 0, 3),
|
||||||
(@GUID+2, @GUID+3 , 3),
|
(@GUID+2, @GUID+3, 0, 0, 3),
|
||||||
(@GUID+26, @GUID+26, 3),
|
(@GUID+26, @GUID+26, 0, 0, 3),
|
||||||
(@GUID+26, @GUID+27, 3),
|
(@GUID+26, @GUID+27, 0, 0, 3),
|
||||||
(@GUID+38, @GUID+38, 3),
|
(@GUID+38, @GUID+38, 0, 0, 3),
|
||||||
(@GUID+38, @GUID+39, 3),
|
(@GUID+38, @GUID+39, 0, 0, 3),
|
||||||
(@GUID+41, @GUID+41, 3),
|
(@GUID+41, @GUID+41, 0, 0, 3),
|
||||||
(@GUID+41, @GUID+42, 3),
|
(@GUID+41, @GUID+42, 0, 0, 3),
|
||||||
(@GUID+47, @GUID+47, 3),
|
(@GUID+47, @GUID+47, 0, 0, 3),
|
||||||
(@GUID+47, @GUID+48, 3),
|
(@GUID+47, @GUID+48, 0, 0, 3),
|
||||||
(@GUID+16, @GUID+16, 3),
|
(@GUID+16, @GUID+16, 0, 0, 3),
|
||||||
(@GUID+16, @GUID+17, 3),
|
(@GUID+16, @GUID+17, 0, 0, 3),
|
||||||
(@GUID+4, @GUID+4 , 3),
|
(@GUID+4, @GUID+4, 0, 0, 3),
|
||||||
(@GUID+4, @GUID+5 , 3),
|
(@GUID+4, @GUID+5, 0, 0, 3),
|
||||||
(@GUID+9, @GUID+9 , 3),
|
(@GUID+9, @GUID+9, 0, 0, 3),
|
||||||
(@GUID+9, @GUID+10, 3),
|
(@GUID+9, @GUID+10, 0, 0, 3),
|
||||||
(@GUID+12, @GUID+12, 3),
|
(@GUID+12, @GUID+12, 0, 0, 3),
|
||||||
(@GUID+12, @GUID+13, 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);
|
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
|
INSERT INTO `creature_addon` (`guid`, `bytes1`) VALUES
|
||||||
|
|||||||
@@ -30,3 +30,14 @@ Auto-detected by `modules/CMakeLists.txt` (`GetModuleSourceList` globs
|
|||||||
every subdirectory). No additional CMake plumbing is needed; rebuild
|
every subdirectory). No additional CMake plumbing is needed; rebuild
|
||||||
the worldserver image and the loader symbol `Addmod_paragonScripts`
|
the worldserver image and the loader symbol `Addmod_paragonScripts`
|
||||||
gets linked into the static `modules` target.
|
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.
|
||||||
|
|||||||
@@ -12,6 +12,11 @@ Paragon.StickyComboPoints = 1
|
|||||||
# in addition to runes/runic power. Required for the patch-enUS-5.MPQ player
|
# in addition to runes/runic power. Required for the patch-enUS-5.MPQ player
|
||||||
# frame to populate Mana/Rage/Energy bars - otherwise the server treats those
|
# frame to populate Mana/Rage/Energy bars - otherwise the server treats those
|
||||||
# powers as inactive and never sends max values, leaving the bars empty.
|
# powers as inactive and never sends max values, leaving the bars empty.
|
||||||
|
# Also required for core rage generation: Unit::DealDamage only calls
|
||||||
|
# RewardRage() when the attacker HasActivePowerType(POWER_RAGE); if this is off,
|
||||||
|
# Paragon white swings never grant rage (users without this line in any loaded
|
||||||
|
# config used to hit the C++ fallback default of false). Default is on; set 0
|
||||||
|
# only if you intentionally want a stripped-down Paragon test build.
|
||||||
Paragon.MultiResource.HasActivePowers = 1
|
Paragon.MultiResource.HasActivePowers = 1
|
||||||
|
|
||||||
# Ability / Talent Essence (AE/TE) — Ascension-inspired currency
|
# Ability / Talent Essence (AE/TE) — Ascension-inspired currency
|
||||||
@@ -23,12 +28,27 @@ Paragon.Currency.GrantLevelMin = 10
|
|||||||
Paragon.Currency.AE.PerLevel = 1
|
Paragon.Currency.AE.PerLevel = 1
|
||||||
Paragon.Currency.TE.PerLevel = 1
|
Paragon.Currency.TE.PerLevel = 1
|
||||||
# Flat TE cost per successful talent rank learn (hook runs once per LearnTalent).
|
# 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
|
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.
|
# 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 ----------------------------------------------------------------
|
# Diagnostics ----------------------------------------------------------------
|
||||||
# When enabled, dumps every Paragon's rune cooldown state to the server log
|
# 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
|
# every 5 seconds (channel "module"). Use with `.paragon runes` for in-game
|
||||||
# verification. Leave at 0 in production — it's noisy.
|
# verification. Leave at 0 in production — it's noisy.
|
||||||
Paragon.Diag.RuneTrace = 0
|
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);
|
||||||
|
|
||||||
@@ -0,0 +1,270 @@
|
|||||||
|
-- mod-paragon: server-side DBC overlay for class 12 (Paragon).
|
||||||
|
-- Auto-generated by fractured-tooling/from-workspace-root/
|
||||||
|
-- _gen_paragon_dbc_overlay_sql.py
|
||||||
|
--
|
||||||
|
-- AzerothCore's DBCStores.cpp::LoadDBC merges every <table>_dbc
|
||||||
|
-- world-DB row on top of the on-disk DBC store at startup
|
||||||
|
-- (storage.LoadFromDB). We use that to ship Paragon's class-12
|
||||||
|
-- DBC deltas in SQL form so a stock data/dbc/ tree (e.g. the
|
||||||
|
-- vanilla `ac-wotlk-client-data` Docker image) still resolves
|
||||||
|
-- class 12 in sChrClassesStore and class-12 entries in
|
||||||
|
-- sSkillRaceClassInfoStore.
|
||||||
|
--
|
||||||
|
-- Without this migration, fresh installs hit:
|
||||||
|
-- CHAR_CREATE_FAILED -- "Class (12) not found in DBC ..."
|
||||||
|
-- the moment a contributor tries to roll a Paragon character.
|
||||||
|
--
|
||||||
|
-- This file is regenerated end-to-end from patch-enUS-4.MPQ;
|
||||||
|
-- do not hand-edit. Update the patched DBC source and rerun
|
||||||
|
-- the bake script.
|
||||||
|
|
||||||
|
-- chrclasses_dbc: classes added or modified by patch-enUS-4.MPQ.
|
||||||
|
-- AzerothCore merges this on top of the on-disk ChrClasses.dbc
|
||||||
|
-- so a stock data/dbc tree still gets class 12 at runtime.
|
||||||
|
DELETE FROM `chrclasses_dbc` WHERE `ID` IN (12);
|
||||||
|
INSERT INTO `chrclasses_dbc` (`ID`,`Field01`,`DisplayPower`,`PetNameToken`,`Name_Lang_enUS`,`Name_Lang_Mask`,`Name_Female_Lang_Mask`,`Name_Male_Lang_Mask`,`Filename`,`SpellClassSet`,`Flags`,`CinematicSequenceID`,`Required_Expansion`) VALUES
|
||||||
|
(12, 0, 0, 0, 'Paragon', 0, 0, 0, 'PARAGON', 4, 50, 0, 2);
|
||||||
|
|
||||||
|
-- skillraceclassinfo_dbc: rows where patch-enUS-4 OR'd the
|
||||||
|
-- class-12 bit (0x800) into ClassMask, opening every
|
||||||
|
-- baseline skill to Paragon. Replaces the stock row by ID so
|
||||||
|
-- AzerothCore picks the patched mask on the SQL merge pass.
|
||||||
|
DELETE FROM `skillraceclassinfo_dbc` WHERE `ID` IN (
|
||||||
|
57,301,107,82,75,140,328,638,872,880,881,885,886,910,117,335,628,629,630,912,126,127,133,134,635,31,39,135,325,636,637,643,644,888,889,914,125,626,884,898,901,58,60,916,59,40,41,68,48,49,44,45,42,43,50,51,131,132,883,913,105,71,70,69,925,54,25,138,139,91,882,85,84,93,88,865,87,441,94,443,92,481,89,442,123,124,624,625,702,908,6,922,33,243,899,241,122,621,622,701,907,970,129,323,631,632,633,634,641,642,142,143,639,640,28,63,282,29,284,65,97,244,940,72,128,878,879,137,144,136,915,55,79,81,76,149,112,111,106,66,26,83,74,73,108,109,110,113,38,35,36,37,61,62,64,24,34,21,906,46,47,52,53,281,104,102,101,27,95,98,96,30,145,146,147,148,151,155,158,159,271,175,178,183,186,270,189,191,193,198,200,265,266,203,204,205,268,269,246,272,330,381,403,445,446,461,501,463,464,521,522,541,544,581,601,741,742,781,841,861,862,866,867,877,934,892,896,897,951,895,900,936,938,939,947
|
||||||
|
);
|
||||||
|
INSERT INTO `skillraceclassinfo_dbc` (`ID`,`SkillID`,`RaceMask`,`ClassMask`,`Flags`,`MinLevel`,`SkillTierID`,`SkillCostIndex`) VALUES
|
||||||
|
(57,6,-1,2176,1040,0,0,0),
|
||||||
|
(301,8,-1,2176,1040,0,0,0),
|
||||||
|
(107,26,-1,2049,1040,0,0,0),
|
||||||
|
(82,38,-1,2056,1040,0,0,0),
|
||||||
|
(75,39,-1,2056,1040,0,0,0),
|
||||||
|
(140,43,1115,2049,128,0,0,0),
|
||||||
|
(328,43,3071,2052,128,0,0,0),
|
||||||
|
(638,43,164,2049,128,0,0,0),
|
||||||
|
(872,43,32767,2056,128,0,0,0),
|
||||||
|
(880,43,1024,2052,128,0,0,0),
|
||||||
|
(881,43,32767,2432,128,0,0,0),
|
||||||
|
(885,43,1029,2050,128,0,0,0),
|
||||||
|
(886,43,512,2050,128,0,0,0),
|
||||||
|
(910,43,262143,2080,128,0,0,0),
|
||||||
|
(117,44,166,2052,128,0,0,0),
|
||||||
|
(335,44,2147483647,2122,128,0,0,0),
|
||||||
|
(628,44,1544,2052,128,0,0,0),
|
||||||
|
(629,44,167,2049,128,0,0,0),
|
||||||
|
(630,44,1112,2049,128,0,0,0),
|
||||||
|
(912,44,262143,2080,128,0,0,0),
|
||||||
|
(126,45,650,2052,128,0,0,0),
|
||||||
|
(127,45,32767,2061,128,0,0,0),
|
||||||
|
(133,46,36,2052,128,0,0,0),
|
||||||
|
(134,46,32767,2057,128,0,0,0),
|
||||||
|
(635,46,1674,2052,128,0,0,0),
|
||||||
|
(31,50,-1,2052,1040,0,0,0),
|
||||||
|
(39,51,-1,2052,1040,0,0,0),
|
||||||
|
(135,54,2147483647,2128,128,0,0,0),
|
||||||
|
(325,54,-1,2056,128,0,0,0),
|
||||||
|
(636,54,1133,2049,128,0,0,0),
|
||||||
|
(637,54,658,2049,128,0,0,0),
|
||||||
|
(643,54,8,3072,128,0,0,0),
|
||||||
|
(644,54,32,3072,128,0,0,0),
|
||||||
|
(888,54,261631,2050,128,0,0,0),
|
||||||
|
(889,54,512,2050,128,0,0,0),
|
||||||
|
(914,54,262143,2080,128,0,0,0),
|
||||||
|
(125,55,262143,2052,128,0,0,0),
|
||||||
|
(626,55,163839,2049,128,0,0,0),
|
||||||
|
(884,55,512,2050,128,0,0,0),
|
||||||
|
(898,55,262143,2080,128,0,0,0),
|
||||||
|
(901,55,261631,2050,128,0,0,0),
|
||||||
|
(58,56,-1,2064,1040,0,0,0),
|
||||||
|
(60,78,-1,2064,1040,0,0,0),
|
||||||
|
(916,95,524287,2080,640,0,0,0),
|
||||||
|
(59,96,2047,3072,1168,0,0,0),
|
||||||
|
(40,98,1101,3583,128,0,0,0),
|
||||||
|
(41,98,674,3551,160,0,21,0),
|
||||||
|
(68,101,4,3583,1170,0,0,0),
|
||||||
|
(48,109,690,3583,128,0,0,0),
|
||||||
|
(49,109,1101,3551,160,0,21,0),
|
||||||
|
(44,111,4,3583,128,0,0,0),
|
||||||
|
(45,111,2043,3551,160,0,21,0),
|
||||||
|
(42,113,8,3583,128,0,0,0),
|
||||||
|
(43,113,2039,3551,160,0,21,0),
|
||||||
|
(50,115,32,3583,128,0,0,0),
|
||||||
|
(51,115,2015,3551,160,0,21,0),
|
||||||
|
(131,118,32767,2056,146,1,0,0),
|
||||||
|
(132,118,32767,2053,146,20,0,0),
|
||||||
|
(883,118,32767,2112,402,0,0,0),
|
||||||
|
(913,118,262143,2080,146,0,0,0),
|
||||||
|
(105,120,2047,2304,1170,0,0,0),
|
||||||
|
(71,124,32,3583,1170,0,0,0),
|
||||||
|
(70,125,2,3583,146,0,0,0),
|
||||||
|
(69,126,8,3583,1170,0,0,0),
|
||||||
|
(925,129,-1,2080,128,0,63,0),
|
||||||
|
(54,130,2047,2176,1168,4,0,0),
|
||||||
|
(25,134,-1,3072,1040,10,0,0),
|
||||||
|
(138,136,32767,3536,128,0,0,0),
|
||||||
|
(139,136,32767,2053,128,0,0,0),
|
||||||
|
(91,137,1535,3551,160,0,21,0),
|
||||||
|
(882,137,512,3583,128,0,0,0),
|
||||||
|
(85,138,2047,3583,128,0,0,0),
|
||||||
|
(84,139,2047,3583,160,0,21,0),
|
||||||
|
(93,140,2047,3583,128,0,0,0),
|
||||||
|
(88,141,2047,3583,160,0,21,0),
|
||||||
|
(865,142,2047,3583,0,0,0,0),
|
||||||
|
(87,148,1,3551,1170,0,181,0),
|
||||||
|
(441,148,222,3583,1170,0,182,0),
|
||||||
|
(94,149,2,3551,1170,0,181,0),
|
||||||
|
(443,149,509,3583,1170,0,182,0),
|
||||||
|
(92,150,8,3551,1170,0,181,0),
|
||||||
|
(481,150,215,3583,1170,0,182,0),
|
||||||
|
(89,152,4,3551,1170,0,181,0),
|
||||||
|
(442,152,219,3583,1170,0,182,0),
|
||||||
|
(123,160,262143,2050,128,0,0,0),
|
||||||
|
(124,160,-1,3072,128,0,0,0),
|
||||||
|
(624,160,32,2049,128,0,0,0),
|
||||||
|
(625,160,262111,2049,128,0,0,0),
|
||||||
|
(702,160,-1,2112,128,0,0,0),
|
||||||
|
(908,160,262143,2080,128,0,0,0),
|
||||||
|
(6,162,2147483647,3551,128,0,0,0),
|
||||||
|
(922,162,262143,2080,128,0,0,0),
|
||||||
|
(33,163,-1,2052,1040,0,0,0),
|
||||||
|
(243,164,2047,3583,160,0,41,0),
|
||||||
|
(899,165,2047,3583,160,0,41,0),
|
||||||
|
(241,171,2047,3583,160,0,41,0),
|
||||||
|
(122,172,163839,2050,128,0,0,0),
|
||||||
|
(621,172,6,2049,128,0,0,0),
|
||||||
|
(622,172,1529,2049,128,0,0,0),
|
||||||
|
(701,172,163839,2112,128,0,0,0),
|
||||||
|
(907,172,524287,2080,128,0,0,0),
|
||||||
|
(970,172,163839,2052,128,0,0,0),
|
||||||
|
(129,173,32767,2312,128,0,0,0),
|
||||||
|
(323,173,32767,2256,128,0,0,0),
|
||||||
|
(631,173,520,2052,128,0,0,0),
|
||||||
|
(632,173,1190,2052,128,0,0,0),
|
||||||
|
(633,173,216,2049,128,0,0,0),
|
||||||
|
(634,173,1063,2049,128,0,0,0),
|
||||||
|
(641,173,32,3072,128,0,0,0),
|
||||||
|
(642,173,8,3072,128,0,0,0),
|
||||||
|
(142,176,-1,2056,128,0,0,0),
|
||||||
|
(143,176,-1,2052,128,0,0,0),
|
||||||
|
(639,176,128,2049,128,0,0,0),
|
||||||
|
(640,176,262015,2049,128,0,0,0),
|
||||||
|
(28,182,2047,3583,160,0,2,0),
|
||||||
|
(63,184,-1,2050,1040,0,0,0),
|
||||||
|
(282,185,2047,3583,128,0,61,0),
|
||||||
|
(29,186,2047,3583,160,0,2,0),
|
||||||
|
(284,197,2047,3583,160,0,62,0),
|
||||||
|
(65,198,2047,2050,1168,0,0,0),
|
||||||
|
(97,199,2047,2112,1168,0,0,0),
|
||||||
|
(244,202,2047,3583,160,0,41,0),
|
||||||
|
(940,205,524287,2176,2048,0,0,0),
|
||||||
|
(72,220,16,3583,1170,0,0,0),
|
||||||
|
(128,226,32767,2057,128,0,0,0),
|
||||||
|
(878,226,1024,2052,128,0,0,0),
|
||||||
|
(879,226,31743,2052,128,0,0,0),
|
||||||
|
(137,227,2047,3077,128,0,0,0),
|
||||||
|
(144,228,-1,2448,128,0,0,0),
|
||||||
|
(136,229,32767,3079,128,20,0,0),
|
||||||
|
(915,229,262143,2080,128,0,0,0),
|
||||||
|
(55,237,-1,2176,1040,0,0,0),
|
||||||
|
(79,238,2047,2056,1168,4,0,0),
|
||||||
|
(81,239,2047,2056,1168,0,0,0),
|
||||||
|
(76,241,2047,2056,128,40,0,0),
|
||||||
|
(149,242,2047,2056,1168,16,0,0),
|
||||||
|
(112,243,2047,2049,1170,0,0,0),
|
||||||
|
(111,244,2047,2049,1168,0,0,0),
|
||||||
|
(106,245,2047,2049,1168,0,0,0),
|
||||||
|
(66,246,2047,2050,1168,0,0,0),
|
||||||
|
(26,247,2047,3072,1168,20,0,0),
|
||||||
|
(83,252,2047,2057,128,0,0,0),
|
||||||
|
(74,253,-1,2056,1040,0,0,0),
|
||||||
|
(73,254,2047,2056,1168,10,0,0),
|
||||||
|
(108,255,2047,2049,1168,0,0,0),
|
||||||
|
(109,256,-1,2049,1040,0,0,0),
|
||||||
|
(110,257,-1,2049,1040,0,0,0),
|
||||||
|
(113,258,2047,2049,1168,10,0,0),
|
||||||
|
(38,260,2047,2052,128,0,0,0),
|
||||||
|
(35,262,2047,2052,128,0,0,0),
|
||||||
|
(36,263,2047,2052,128,0,0,0),
|
||||||
|
(37,264,2047,2052,128,0,0,0),
|
||||||
|
(61,267,-1,2050,1040,0,0,0),
|
||||||
|
(62,268,2047,2050,1170,0,0,0),
|
||||||
|
(64,269,2047,2050,1168,0,0,0),
|
||||||
|
(24,272,2047,3072,1168,10,0,0),
|
||||||
|
(34,273,2047,2052,128,0,0,0),
|
||||||
|
(21,293,2047,2051,128,40,0,0),
|
||||||
|
(906,293,262143,2080,128,0,0,0),
|
||||||
|
(46,313,64,3583,128,0,0,0),
|
||||||
|
(47,313,1983,3551,160,0,21,0),
|
||||||
|
(52,315,128,3583,128,0,0,0),
|
||||||
|
(53,315,1919,3551,160,0,21,0),
|
||||||
|
(281,333,2047,3583,160,0,62,0),
|
||||||
|
(104,353,2047,2304,1170,0,0,0),
|
||||||
|
(102,354,-1,2304,1040,0,0,0),
|
||||||
|
(101,355,-1,2304,1040,0,0,0),
|
||||||
|
(27,356,2047,3583,128,0,23,0),
|
||||||
|
(95,373,-1,2112,1040,0,0,0),
|
||||||
|
(98,374,262143,2112,1040,0,0,0),
|
||||||
|
(96,375,262143,2112,1040,0,0,0),
|
||||||
|
(30,393,2047,3583,160,0,161,0),
|
||||||
|
(145,413,2047,2116,128,40,0,0),
|
||||||
|
(146,413,2047,2083,128,0,0,0),
|
||||||
|
(147,414,2047,3183,128,0,0,0),
|
||||||
|
(148,415,2047,3583,128,0,0,0),
|
||||||
|
(151,416,2047,2049,192,0,0,0),
|
||||||
|
(155,416,2047,2050,192,0,0,1),
|
||||||
|
(158,416,2047,3136,192,0,0,1),
|
||||||
|
(159,416,2047,2060,192,0,0,1),
|
||||||
|
(271,416,2047,2448,192,0,0,2),
|
||||||
|
(175,418,2047,2049,384,0,0,0),
|
||||||
|
(178,418,2047,2050,384,0,0,0),
|
||||||
|
(183,418,2047,3332,384,0,0,1),
|
||||||
|
(186,418,2047,2192,384,0,0,1),
|
||||||
|
(270,418,2047,2120,384,0,0,1),
|
||||||
|
(189,419,2047,2060,640,0,0,2),
|
||||||
|
(191,419,2047,3072,640,0,0,1),
|
||||||
|
(193,419,2047,2192,640,0,0,0),
|
||||||
|
(198,419,2047,2050,640,0,0,1),
|
||||||
|
(200,419,2047,2049,640,0,0,2),
|
||||||
|
(265,419,2047,2304,640,0,0,0),
|
||||||
|
(266,419,2047,2112,640,0,0,1),
|
||||||
|
(203,420,2047,2061,1152,0,0,2),
|
||||||
|
(204,420,2047,3074,1152,0,0,1),
|
||||||
|
(205,420,2047,2320,1152,0,0,0),
|
||||||
|
(268,420,2047,2176,1152,0,0,0),
|
||||||
|
(269,420,2047,2112,1152,0,0,1),
|
||||||
|
(246,433,2047,2115,128,0,0,0),
|
||||||
|
(272,453,2047,2051,128,0,0,0),
|
||||||
|
(330,473,4095,3149,130,0,0,0),
|
||||||
|
(381,493,8,3583,164,0,0,0),
|
||||||
|
(403,515,2047,3551,128,0,0,0),
|
||||||
|
(445,533,128,3583,1170,0,181,0),
|
||||||
|
(446,533,95,3551,1170,0,182,0),
|
||||||
|
(461,553,64,3551,1170,0,181,0),
|
||||||
|
(501,553,4,3583,1170,0,182,0),
|
||||||
|
(463,554,16,3551,1170,0,181,0),
|
||||||
|
(464,554,207,3583,1170,0,182,0),
|
||||||
|
(521,573,-1,3072,1040,0,0,0),
|
||||||
|
(522,574,-1,3072,1040,0,0,0),
|
||||||
|
(541,593,-1,2304,1040,0,0,0),
|
||||||
|
(544,594,-1,2050,1040,0,0,0),
|
||||||
|
(581,613,-1,2064,1040,0,0,0),
|
||||||
|
(601,633,-1,2056,128,0,0,0),
|
||||||
|
(741,673,16,3583,128,0,0,0),
|
||||||
|
(742,673,2031,3551,160,0,21,0),
|
||||||
|
(781,713,255,3583,1170,0,181,0),
|
||||||
|
(841,733,128,3583,1170,0,0,0),
|
||||||
|
(861,753,64,3583,1170,0,0,0),
|
||||||
|
(862,754,1,3583,1170,0,0,0),
|
||||||
|
(866,755,2047,3583,160,0,41,0),
|
||||||
|
(867,756,512,3583,146,0,0,0),
|
||||||
|
(877,760,1024,3583,146,0,0,0),
|
||||||
|
(934,762,524287,2080,144,0,223,0),
|
||||||
|
(892,769,32767,3583,1040,0,0,0),
|
||||||
|
(896,770,-1,2080,1040,0,0,0),
|
||||||
|
(897,771,262143,2080,1040,0,0,0),
|
||||||
|
(951,771,2097151,3583,0,0,0,0),
|
||||||
|
(895,772,-1,2080,1040,0,0,0),
|
||||||
|
(900,773,262143,3583,160,0,41,0),
|
||||||
|
(936,776,262143,2080,128,0,0,0),
|
||||||
|
(938,777,524287,3583,2,0,0,0),
|
||||||
|
(939,778,524287,3583,2,0,0,0),
|
||||||
|
(947,778,2097151,3583,0,0,0,0);
|
||||||
@@ -0,0 +1,179 @@
|
|||||||
|
-- mod-paragon: starter spawn data for class 12 (Paragon).
|
||||||
|
--
|
||||||
|
-- Companion to 2026_05_09_00.sql. The DBC overlay teaches the world
|
||||||
|
-- server that class 12 exists; this migration teaches it WHERE
|
||||||
|
-- characters of that class spawn, what action bar they boot with,
|
||||||
|
-- and what per-level base stats to integrity-check against.
|
||||||
|
--
|
||||||
|
-- Without these rows, character creation fails inside Player::Create:
|
||||||
|
--
|
||||||
|
-- PlayerInfo const* info = sObjectMgr->GetPlayerInfo(race, class);
|
||||||
|
-- if (!info) {
|
||||||
|
-- LOG_ERROR("entities.player",
|
||||||
|
-- "Player::Create: ... invalid race/class pair ({}/{})"
|
||||||
|
-- " - refusing to do so.", ..., race, class);
|
||||||
|
-- return false; // -> client sees "Error creating character"
|
||||||
|
-- }
|
||||||
|
--
|
||||||
|
-- and on world load the player_class_stats integrity check trips:
|
||||||
|
--
|
||||||
|
-- "Class N Level L does not have stats data!"
|
||||||
|
--
|
||||||
|
-- Tables touched:
|
||||||
|
-- - playercreateinfo : (race, class=12) -> map/zone/x/y/z
|
||||||
|
-- Race-specific starting zones (Paragon
|
||||||
|
-- spawns in each race's standard newbie
|
||||||
|
-- area, NOT Acherus, since it is a
|
||||||
|
-- from-level-1 class).
|
||||||
|
-- - playercreateinfo_action : (race, class=12, button) -> action,type
|
||||||
|
-- Default action bar layout per race.
|
||||||
|
-- - player_class_stats : (class=12, level 1..80) -> base stats
|
||||||
|
-- Per-level HP/Mana/STR/AGI/STA/INT/SPI
|
||||||
|
-- used by Player::InitStatsForLevel.
|
||||||
|
--
|
||||||
|
-- Tables intentionally NOT touched here:
|
||||||
|
-- - playercreateinfo_item : Paragon ships no per-class starting
|
||||||
|
-- items; gear comes from the racial
|
||||||
|
-- kit only.
|
||||||
|
-- - playercreateinfo_skills / _cast_spell / _spell_custom :
|
||||||
|
-- These are mask-based. Class-12 baseline
|
||||||
|
-- weapon/defense skills come through
|
||||||
|
-- classMask=0 ("all classes") rows that
|
||||||
|
-- already cover Paragon. The DBC overlay
|
||||||
|
-- in 2026_05_09_00.sql opens
|
||||||
|
-- SkillRaceClassInfo for class 12.
|
||||||
|
|
||||||
|
-- Idempotent: blow away any pre-existing class-12 rows first so this
|
||||||
|
-- migration can be replayed cleanly on a partially-seeded DB (e.g.
|
||||||
|
-- after a contributor manually patched their local DB before this
|
||||||
|
-- migration landed).
|
||||||
|
DELETE FROM `playercreateinfo` WHERE `class` = 12;
|
||||||
|
DELETE FROM `playercreateinfo_action` WHERE `class` = 12;
|
||||||
|
DELETE FROM `player_class_stats` WHERE `Class` = 12;
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------
|
||||||
|
-- playercreateinfo (10 rows: every DK-eligible race, racial start)
|
||||||
|
-- ---------------------------------------------------------------
|
||||||
|
INSERT INTO `playercreateinfo` (`race`, `class`, `map`, `zone`, `position_x`, `position_y`, `position_z`, `orientation`) VALUES
|
||||||
|
( 1, 12, 0, 12, -8949.95, -132.493, 83.5312, 0 ), -- Human -> Northshire, Elwynn Forest
|
||||||
|
( 2, 12, 1, 14, -618.518, -4251.67, 38.718, 0 ), -- Orc -> Valley of Trials, Durotar
|
||||||
|
( 3, 12, 0, 1, -6240.32, 331.033, 382.758, 6.17716 ), -- Dwarf -> Coldridge Valley, Dun Morogh
|
||||||
|
( 4, 12, 1, 141, 10311.3, 832.463, 1326.41, 5.69632 ), -- Night Elf -> Shadowglen, Teldrassil
|
||||||
|
( 5, 12, 0, 85, 1676.71, 1678.31, 121.67, 2.70526 ), -- Undead -> Deathknell, Tirisfal
|
||||||
|
( 6, 12, 1, 215, -2917.58, -257.98, 52.9968, 0 ), -- Tauren -> Camp Narache, Mulgore
|
||||||
|
( 7, 12, 0, 1, -6240.32, 331.033, 382.758, 0 ), -- Gnome -> Coldridge Valley (shared)
|
||||||
|
( 8, 12, 1, 14, -618.518, -4251.67, 38.718, 0 ), -- Troll -> Valley of Trials (shared)
|
||||||
|
(10, 12, 530, 3431, 10349.6, -6357.29, 33.4026, 5.31605 ), -- Blood Elf -> Sunstrider Isle, Eversong
|
||||||
|
(11, 12, 530, 3526, -3961.64,-13931.2, 100.615, 2.08364 ); -- Draenei -> Ammen Vale, Azuremyst Isle
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------
|
||||||
|
-- playercreateinfo_action (46 rows)
|
||||||
|
-- Buttons: 72=Attack(6603), 73=Eat(78), 74=racial, 75=race-extra,
|
||||||
|
-- 82=Skinning(59752, Tauren only), 84=Attack, 96=Attack
|
||||||
|
-- ---------------------------------------------------------------
|
||||||
|
INSERT INTO `playercreateinfo_action` (`race`, `class`, `button`, `action`, `type`) VALUES
|
||||||
|
( 1, 12, 72, 6603, 0), ( 1, 12, 73, 78, 0), ( 1, 12, 82, 59752, 0),
|
||||||
|
( 1, 12, 84, 6603, 0), ( 1, 12, 96, 6603, 0),
|
||||||
|
( 2, 12, 72, 6603, 0), ( 2, 12, 73, 78, 0), ( 2, 12, 74, 20572, 0),
|
||||||
|
( 2, 12, 84, 6603, 0), ( 2, 12, 96, 6603, 0),
|
||||||
|
( 3, 12, 72, 6603, 0), ( 3, 12, 73, 78, 0), ( 3, 12, 74, 20594, 0),
|
||||||
|
( 3, 12, 75, 2481, 0), ( 3, 12, 84, 6603, 0), ( 3, 12, 96, 6603, 0),
|
||||||
|
( 4, 12, 72, 6603, 0), ( 4, 12, 73, 78, 0), ( 4, 12, 74, 58984, 0),
|
||||||
|
( 4, 12, 84, 6603, 0), ( 4, 12, 96, 6603, 0),
|
||||||
|
( 5, 12, 72, 6603, 0), ( 5, 12, 73, 78, 0), ( 5, 12, 74, 20577, 0),
|
||||||
|
( 5, 12, 84, 6603, 0), ( 5, 12, 96, 6603, 0),
|
||||||
|
( 6, 12, 72, 6603, 0), ( 6, 12, 73, 78, 0), ( 6, 12, 74, 20549, 0),
|
||||||
|
( 6, 12, 84, 6603, 0), ( 6, 12, 96, 6603, 0),
|
||||||
|
( 7, 12, 72, 6603, 0), ( 7, 12, 73, 78, 0), ( 7, 12, 84, 6603, 0),
|
||||||
|
( 7, 12, 96, 6603, 0),
|
||||||
|
( 8, 12, 72, 6603, 0), ( 8, 12, 73, 78, 0), ( 8, 12, 74, 2764, 0),
|
||||||
|
( 8, 12, 75, 26297, 0), ( 8, 12, 84, 6603, 0), ( 8, 12, 96, 6603, 0),
|
||||||
|
(11, 12, 72, 6603, 0), (11, 12, 73, 78, 0), (11, 12, 74, 28880, 0),
|
||||||
|
(11, 12, 84, 6603, 0), (11, 12, 96, 6603, 0);
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------
|
||||||
|
-- player_class_stats (80 rows: levels 1..80 per-class base stats)
|
||||||
|
-- Curve mirrors Warrior baseline -> Paladin past 60 (vehicle-style HP
|
||||||
|
-- inflation past 60 to keep Paragon competitive in Wrath content).
|
||||||
|
-- ---------------------------------------------------------------
|
||||||
|
INSERT INTO `player_class_stats` (`Class`, `Level`, `BaseHP`, `BaseMana`, `Strength`, `Agility`, `Stamina`, `Intellect`, `Spirit`) VALUES
|
||||||
|
(12, 1, 20, 60, 23, 20, 22, 20, 20),
|
||||||
|
(12, 2, 29, 66, 24, 21, 23, 20, 20),
|
||||||
|
(12, 3, 38, 73, 25, 21, 24, 20, 21),
|
||||||
|
(12, 4, 47, 81, 26, 22, 25, 20, 21),
|
||||||
|
(12, 5, 56, 90, 28, 23, 26, 20, 21),
|
||||||
|
(12, 6, 65, 100, 29, 24, 27, 21, 21),
|
||||||
|
(12, 7, 74, 111, 30, 24, 28, 21, 22),
|
||||||
|
(12, 8, 83, 123, 31, 25, 29, 21, 22),
|
||||||
|
(12, 9, 92, 136, 32, 26, 30, 21, 22),
|
||||||
|
(12, 10, 97, 150, 33, 26, 31, 21, 23),
|
||||||
|
(12, 11, 103, 165, 35, 27, 33, 21, 23),
|
||||||
|
(12, 12, 109, 182, 36, 28, 34, 21, 23),
|
||||||
|
(12, 13, 118, 200, 37, 29, 35, 21, 24),
|
||||||
|
(12, 14, 128, 219, 39, 30, 36, 22, 24),
|
||||||
|
(12, 15, 139, 239, 40, 30, 37, 22, 24),
|
||||||
|
(12, 16, 151, 260, 41, 31, 38, 22, 25),
|
||||||
|
(12, 17, 154, 282, 42, 32, 40, 22, 25),
|
||||||
|
(12, 18, 168, 305, 44, 33, 41, 22, 25),
|
||||||
|
(12, 19, 183, 329, 45, 34, 42, 22, 26),
|
||||||
|
(12, 20, 199, 354, 47, 35, 43, 22, 26),
|
||||||
|
(12, 21, 206, 380, 48, 35, 45, 23, 26),
|
||||||
|
(12, 22, 224, 392, 49, 36, 46, 23, 27),
|
||||||
|
(12, 23, 243, 420, 51, 37, 47, 23, 27),
|
||||||
|
(12, 24, 253, 449, 52, 38, 49, 23, 28),
|
||||||
|
(12, 25, 274, 479, 54, 39, 50, 23, 28),
|
||||||
|
(12, 26, 296, 509, 55, 40, 51, 23, 28),
|
||||||
|
(12, 27, 309, 524, 57, 41, 53, 23, 29),
|
||||||
|
(12, 28, 333, 554, 58, 42, 54, 24, 29),
|
||||||
|
(12, 29, 348, 584, 60, 43, 56, 24, 30),
|
||||||
|
(12, 30, 374, 614, 62, 44, 57, 24, 30),
|
||||||
|
(12, 31, 401, 629, 63, 45, 58, 24, 30),
|
||||||
|
(12, 32, 419, 659, 65, 46, 60, 24, 31),
|
||||||
|
(12, 33, 448, 689, 66, 47, 61, 24, 31),
|
||||||
|
(12, 34, 468, 704, 68, 48, 63, 25, 32),
|
||||||
|
(12, 35, 499, 734, 70, 49, 64, 25, 32),
|
||||||
|
(12, 36, 521, 749, 72, 50, 66, 25, 33),
|
||||||
|
(12, 37, 545, 779, 73, 51, 68, 25, 33),
|
||||||
|
(12, 38, 581, 809, 75, 52, 69, 25, 33),
|
||||||
|
(12, 39, 609, 824, 77, 53, 71, 26, 34),
|
||||||
|
(12, 40, 649, 854, 79, 54, 72, 26, 34),
|
||||||
|
(12, 41, 681, 869, 80, 56, 74, 26, 35),
|
||||||
|
(12, 42, 715, 899, 82, 57, 76, 26, 35),
|
||||||
|
(12, 43, 761, 914, 84, 58, 77, 26, 36),
|
||||||
|
(12, 44, 799, 944, 86, 59, 79, 26, 36),
|
||||||
|
(12, 45, 839, 959, 88, 60, 81, 27, 37),
|
||||||
|
(12, 46, 881, 989, 90, 61, 83, 27, 37),
|
||||||
|
(12, 47, 935, 1004, 92, 63, 84, 27, 38),
|
||||||
|
(12, 48, 981, 1019, 94, 64, 86, 27, 38),
|
||||||
|
(12, 49, 1029, 1049, 96, 65, 88, 28, 39),
|
||||||
|
(12, 50, 1079, 1064, 98, 66, 90, 28, 39),
|
||||||
|
(12, 51, 1131, 1079, 100, 68, 92, 28, 40),
|
||||||
|
(12, 52, 1185, 1109, 102, 69, 94, 28, 40),
|
||||||
|
(12, 53, 1241, 1124, 104, 70, 96, 28, 41),
|
||||||
|
(12, 54, 1299, 1139, 106, 72, 98, 29, 42),
|
||||||
|
(12, 55, 1359, 1154, 109, 73, 100, 29, 42),
|
||||||
|
(12, 56, 1421, 1169, 111, 74, 102, 29, 43),
|
||||||
|
(12, 57, 1485, 1199, 113, 76, 104, 29, 43),
|
||||||
|
(12, 58, 1551, 1214, 115, 77, 106, 30, 44),
|
||||||
|
(12, 59, 1619, 1229, 118, 79, 108, 30, 44),
|
||||||
|
(12, 60, 1689, 1244, 120, 80, 110, 30, 45),
|
||||||
|
(12, 61, 1902, 1357, 122, 81, 112, 30, 46),
|
||||||
|
(12, 62, 2129, 1469, 125, 83, 114, 30, 46),
|
||||||
|
(12, 63, 2357, 1582, 127, 84, 117, 31, 47),
|
||||||
|
(12, 64, 2612, 1694, 130, 86, 119, 31, 47),
|
||||||
|
(12, 65, 2883, 1807, 132, 88, 121, 31, 48),
|
||||||
|
(12, 66, 3169, 1919, 135, 89, 123, 32, 49),
|
||||||
|
(12, 67, 3455, 2032, 137, 91, 126, 32, 49),
|
||||||
|
(12, 68, 3774, 2145, 140, 92, 128, 32, 50),
|
||||||
|
(12, 69, 4109, 2257, 142, 94, 130, 32, 51),
|
||||||
|
(12, 70, 4444, 2370, 145, 96, 133, 33, 51),
|
||||||
|
(12, 71, 4720, 2482, 148, 97, 135, 33, 52),
|
||||||
|
(12, 72, 5013, 2595, 150, 99, 138, 33, 53),
|
||||||
|
(12, 73, 5325, 2708, 153, 101, 140, 33, 54),
|
||||||
|
(12, 74, 5656, 2820, 156, 102, 143, 34, 54),
|
||||||
|
(12, 75, 6008, 2933, 159, 104, 145, 34, 55),
|
||||||
|
(12, 76, 6381, 3045, 162, 106, 148, 34, 56),
|
||||||
|
(12, 77, 6778, 3158, 165, 108, 151, 35, 57),
|
||||||
|
(12, 78, 7198, 3270, 168, 109, 153, 35, 57),
|
||||||
|
(12, 79, 7646, 3383, 171, 111, 156, 35, 58),
|
||||||
|
(12, 80, 8121, 3496, 174, 113, 159, 36, 59);
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
-- mod-paragon: starter weapon / armor skills for class 12 (Paragon).
|
||||||
|
--
|
||||||
|
-- Companion to 2026_05_10_00.sql. The spawn-data migration teaches
|
||||||
|
-- Player::Create *that* class 12 exists at a given race; this one
|
||||||
|
-- teaches it which weapon and armor skill lines to grant on first
|
||||||
|
-- character login.
|
||||||
|
--
|
||||||
|
-- Without these rows a fresh Paragon character lands in their newbie
|
||||||
|
-- zone with **no** weapon or armor proficiencies (auto-attack greys
|
||||||
|
-- out the moment they equip anything beyond a fist). The classMask=0
|
||||||
|
-- "all classes" rows in playercreateinfo_skills only cover Defense,
|
||||||
|
-- Unarmed, Cloth, the racial / language skills, Mounts and
|
||||||
|
-- Companion Pets -- which is exactly what bare-fisted, naked
|
||||||
|
-- characters look like.
|
||||||
|
--
|
||||||
|
-- Paragon plays every class, so it grants every weapon / armor
|
||||||
|
-- proficiency at level 1. The skillline rows themselves are still
|
||||||
|
-- gated by skillraceclassinfo_dbc (handled in 2026_05_09_00.sql),
|
||||||
|
-- so the client/server agree on what's allowed.
|
||||||
|
--
|
||||||
|
-- Idempotent: deletes any pre-existing classMask=2048 rows first
|
||||||
|
-- (class 12 owns this bitmask on Fractured) so the migration can
|
||||||
|
-- replay cleanly on a partially-seeded DB.
|
||||||
|
|
||||||
|
DELETE FROM `playercreateinfo_skills` WHERE `classMask` = 2048;
|
||||||
|
|
||||||
|
INSERT INTO `playercreateinfo_skills`
|
||||||
|
(`raceMask`, `classMask`, `skill`, `rank`, `comment`) VALUES
|
||||||
|
-- Weapon proficiencies
|
||||||
|
(0, 2048, 43, 0, 'Paragon - Swords'),
|
||||||
|
(0, 2048, 44, 0, 'Paragon - Axes'),
|
||||||
|
(0, 2048, 45, 0, 'Paragon - Bows'),
|
||||||
|
(0, 2048, 46, 0, 'Paragon - Guns'),
|
||||||
|
(0, 2048, 54, 0, 'Paragon - Maces'),
|
||||||
|
(0, 2048, 55, 0, 'Paragon - Two-Handed Swords'),
|
||||||
|
(0, 2048, 118, 0, 'Paragon - Dual Wield'),
|
||||||
|
(0, 2048, 136, 0, 'Paragon - Staves'),
|
||||||
|
(0, 2048, 160, 0, 'Paragon - Two-Handed Maces'),
|
||||||
|
(0, 2048, 172, 0, 'Paragon - Two-Handed Axes'),
|
||||||
|
(0, 2048, 173, 0, 'Paragon - Daggers'),
|
||||||
|
(0, 2048, 176, 0, 'Paragon - Thrown'),
|
||||||
|
(0, 2048, 226, 0, 'Paragon - Crossbows'),
|
||||||
|
(0, 2048, 228, 0, 'Paragon - Wands'),
|
||||||
|
(0, 2048, 229, 0, 'Paragon - Polearms'),
|
||||||
|
(0, 2048, 473, 0, 'Paragon - Fist Weapons'),
|
||||||
|
-- Armor proficiencies (Cloth is in a classMask=0 row already)
|
||||||
|
(0, 2048, 293, 0, 'Paragon - Plate Mail'),
|
||||||
|
(0, 2048, 413, 0, 'Paragon - Mail'),
|
||||||
|
(0, 2048, 414, 0, 'Paragon - Leather'),
|
||||||
|
(0, 2048, 433, 0, 'Paragon - Shield');
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,27 @@
|
|||||||
|
-- mod-paragon: Blood Elf "Arcane Torrent" uses three spell IDs in WotLK
|
||||||
|
-- (28730 mana/casters, 25046 rogue energy, 50613 death knight runic power),
|
||||||
|
-- all on racial skill line 756. Migration 2026_05_10_02 OR'd class 12 into
|
||||||
|
-- every SkillLineAbility delta from patch-enUS-4, so Paragon Blood Elves
|
||||||
|
-- auto-learned all three and the spellbook showed three identical entries.
|
||||||
|
--
|
||||||
|
-- Paragon should learn a single combined Arcane Torrent that refunds mana,
|
||||||
|
-- energy, AND runic power -- whichever pool the character is using at the
|
||||||
|
-- moment. We keep spell 28730 as the in-book entry for class 12 and attach
|
||||||
|
-- the SpellScript spell_paragon_arcane_torrent (modules/mod-paragon/src/
|
||||||
|
-- Paragon_SC.cpp) so casts by a Paragon also EnergizeBySpell energy + RP on
|
||||||
|
-- top of the stock mana effect. Other classes' Blood Elves are unaffected.
|
||||||
|
--
|
||||||
|
-- IDs 13338 / 17510 match stock WotLK SkillLineAbility rows for spells 25046
|
||||||
|
-- / 50613 on skill line 756.
|
||||||
|
|
||||||
|
UPDATE `skilllineability_dbc`
|
||||||
|
SET `ClassMask` = `ClassMask` & ~2048
|
||||||
|
WHERE `ID` IN (13338, 17510);
|
||||||
|
|
||||||
|
-- Bind spell_paragon_arcane_torrent (defined in Paragon_SC.cpp) to spell
|
||||||
|
-- 28730. AC's `spell_script_names` is the standard mapping: script name on
|
||||||
|
-- the right, spell id on the left. Idempotent via DELETE + INSERT.
|
||||||
|
DELETE FROM `spell_script_names`
|
||||||
|
WHERE `spell_id` = 28730 AND `ScriptName` = 'spell_paragon_arcane_torrent';
|
||||||
|
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||||
|
(28730, 'spell_paragon_arcane_torrent');
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
-- mod-paragon: extend ItemTemplate::AllowableClass to include class 12
|
||||||
|
-- (Paragon, bit 1<<11 = 2048) for every class-restricted item.
|
||||||
|
--
|
||||||
|
-- Server-side, Player::CanUseItem (PlayerStorage.cpp) already short-
|
||||||
|
-- circuits the AllowableClass check for class 12. That's enough for any
|
||||||
|
-- code path the server controls (vendor list filter, AH "usable" filter,
|
||||||
|
-- CanRollForItemInLFG, CanBuyItem). It is NOT enough on the 3.3.5 client:
|
||||||
|
-- the WoW.exe binary independently pre-checks AllowableClass against the
|
||||||
|
-- player's class on right-click of a bag item and refuses *locally* with
|
||||||
|
-- the red "You can't use that item." text in UIErrorsFrame, never sending
|
||||||
|
-- CMSG_USE_ITEM at all. Server logs stay silent; only client knows it
|
||||||
|
-- refused.
|
||||||
|
--
|
||||||
|
-- Fix: OR class 12's bit into AllowableClass on every class-restricted
|
||||||
|
-- row so the client engine's pre-check passes for Paragon. Other
|
||||||
|
-- classes' bits are unchanged, so e.g. a warrior-only item is still
|
||||||
|
-- warrior-only for everyone except Paragon. Items with AllowableClass
|
||||||
|
-- == -1 ("all classes") or 0 ("no restriction recorded") already pass
|
||||||
|
-- the client engine's check and are not touched.
|
||||||
|
--
|
||||||
|
-- After applying this migration the *client* still caches item info in
|
||||||
|
-- Cache/<locale>/itemcache.wdb. Players who already inspected the item
|
||||||
|
-- before the change must delete that file (or the whole Cache folder)
|
||||||
|
-- and reconnect to repopulate it from the worldserver, otherwise the
|
||||||
|
-- stale cached AllowableClass keeps the engine pre-check failing.
|
||||||
|
|
||||||
|
UPDATE `item_template`
|
||||||
|
SET `AllowableClass` = `AllowableClass` | 2048
|
||||||
|
WHERE `AllowableClass` > 0
|
||||||
|
AND (`AllowableClass` & 2048) = 0;
|
||||||
@@ -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
@@ -5,15 +5,22 @@
|
|||||||
* so Paragon can reuse other classes' mechanics in narrowly scoped contexts.
|
* 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 "Player.h"
|
||||||
#include "ScriptMgr.h"
|
#include "ScriptMgr.h"
|
||||||
#include "SharedDefines.h"
|
#include "SharedDefines.h"
|
||||||
|
#include "SpellScript.h"
|
||||||
|
#include "SpellScriptLoader.h"
|
||||||
#include "UnitDefines.h"
|
#include "UnitDefines.h"
|
||||||
#include "Config.h"
|
#include "WorldPacket.h"
|
||||||
#include "Log.h"
|
#include "WorldSession.h"
|
||||||
#include "GameTime.h"
|
|
||||||
#include "ObjectGuid.h"
|
|
||||||
|
|
||||||
|
#include <fmt/format.h>
|
||||||
|
#include <string>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
|
||||||
class Paragon_PlayerScript : public PlayerScript
|
class Paragon_PlayerScript : public PlayerScript
|
||||||
@@ -30,7 +37,7 @@ public:
|
|||||||
{
|
{
|
||||||
LOG_INFO("module", "[paragon] Paragon_PlayerScript registered "
|
LOG_INFO("module", "[paragon] Paragon_PlayerScript registered "
|
||||||
"(MultiResource.HasActivePowers={})",
|
"(MultiResource.HasActivePowers={})",
|
||||||
sConfigMgr->GetOption<bool>("Paragon.MultiResource.HasActivePowers", false));
|
sConfigMgr->GetOption<bool>("Paragon.MultiResource.HasActivePowers", true));
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] Optional<bool> OnPlayerIsClass(Player const* player, Classes unitClass, ClassContext context) override
|
[[nodiscard]] Optional<bool> OnPlayerIsClass(Player const* player, Classes unitClass, ClassContext context) override
|
||||||
@@ -70,7 +77,7 @@ public:
|
|||||||
if (power == POWER_RUNIC_POWER || power == POWER_RUNE)
|
if (power == POWER_RUNIC_POWER || power == POWER_RUNE)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (sConfigMgr->GetOption<bool>("Paragon.MultiResource.HasActivePowers", false))
|
if (sConfigMgr->GetOption<bool>("Paragon.MultiResource.HasActivePowers", true))
|
||||||
{
|
{
|
||||||
switch (power)
|
switch (power)
|
||||||
{
|
{
|
||||||
@@ -184,6 +191,45 @@ public:
|
|||||||
{
|
{
|
||||||
player->ResyncRunes(MAX_RUNES);
|
player->ResyncRunes(MAX_RUNES);
|
||||||
st.lastReadyMask = readyMask;
|
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 ~100–200ms 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))
|
if (!sConfigMgr->GetOption<bool>("Paragon.Diag.RuneTrace", false))
|
||||||
@@ -214,14 +260,69 @@ private:
|
|||||||
struct ParagonRuneSyncState
|
struct ParagonRuneSyncState
|
||||||
{
|
{
|
||||||
uint8 lastReadyMask{0xFFu}; // sentinel: no prior snapshot
|
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;
|
static std::unordered_map<ObjectGuid, ParagonRuneSyncState> runeSyncByGuid;
|
||||||
};
|
};
|
||||||
|
|
||||||
std::unordered_map<ObjectGuid, Paragon_PlayerScript::ParagonRuneSyncState> Paragon_PlayerScript::runeSyncByGuid;
|
std::unordered_map<ObjectGuid, Paragon_PlayerScript::ParagonRuneSyncState> Paragon_PlayerScript::runeSyncByGuid;
|
||||||
|
|
||||||
|
// Arcane Torrent (28730) for Paragon: Blood Elf racial skill line 756 has
|
||||||
|
// three Arcane Torrent variants in stock WotLK (28730 mana, 25046 rogue
|
||||||
|
// energy, 50613 DK runic power). For Paragon Blood Elves we keep only 28730
|
||||||
|
// (see migration 2026_05_10_03.sql) and turn it into a "combined" version:
|
||||||
|
// the stock spell already silences nearby enemies and energizes mana via its
|
||||||
|
// own effects; this script adds energy, rage, and runic power energize on
|
||||||
|
// top when the caster is class 12, so a single button refunds whichever
|
||||||
|
// resource pool the player is actually using. Non-Paragon casters are
|
||||||
|
// untouched and keep learning their stock racial variant.
|
||||||
|
class spell_paragon_arcane_torrent : public SpellScript
|
||||||
|
{
|
||||||
|
PrepareSpellScript(spell_paragon_arcane_torrent);
|
||||||
|
|
||||||
|
void HandleAfterCast()
|
||||||
|
{
|
||||||
|
Unit* caster = GetCaster();
|
||||||
|
if (!caster || !caster->IsPlayer())
|
||||||
|
return;
|
||||||
|
|
||||||
|
Player* player = caster->ToPlayer();
|
||||||
|
if (player->getClass() != CLASS_PARAGON)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Stock energize amounts from spell_dbc:
|
||||||
|
// 25046 Arcane Torrent (Energy) -> 15 energy
|
||||||
|
// 50613 Arcane Torrent (Runic Power) -> 15 displayed RP (= 150
|
||||||
|
// internal; AC stores RP scaled 10x, see Player::SetMaxPower
|
||||||
|
// POWER_RUNIC_POWER, 1000).
|
||||||
|
// Rage uses the same 10x internal scaling as runic power (see
|
||||||
|
// Player.cpp:Regenerate where rage decay is `-20` for "2 rage by
|
||||||
|
// tick"), so 15 displayed rage = 150 internal.
|
||||||
|
// ModifyPower no-ops on pools the player has no max for, so this is
|
||||||
|
// safe even before the Paragon picks up energy/rage/RP abilities.
|
||||||
|
constexpr int32 kEnergyGain = 15;
|
||||||
|
constexpr int32 kRageGain = 150;
|
||||||
|
constexpr int32 kRunicPowerGain = 150;
|
||||||
|
|
||||||
|
SpellInfo const* spellInfo = GetSpellInfo();
|
||||||
|
uint32 const spellId = spellInfo ? spellInfo->Id : 28730u;
|
||||||
|
|
||||||
|
caster->EnergizeBySpell(player, spellId, kEnergyGain, POWER_ENERGY);
|
||||||
|
caster->EnergizeBySpell(player, spellId, kRageGain, POWER_RAGE);
|
||||||
|
caster->EnergizeBySpell(player, spellId, kRunicPowerGain, POWER_RUNIC_POWER);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Register() override
|
||||||
|
{
|
||||||
|
AfterCast += SpellCastFn(spell_paragon_arcane_torrent::HandleAfterCast);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
void AddSC_paragon()
|
void AddSC_paragon()
|
||||||
{
|
{
|
||||||
new Paragon_PlayerScript();
|
new Paragon_PlayerScript();
|
||||||
|
RegisterSpellScript(spell_paragon_arcane_torrent);
|
||||||
}
|
}
|
||||||
|
|||||||
Executable
+29
@@ -0,0 +1,29 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Clone Dawnforger/Fractured and omit Docker-only paths. Use when this script is
|
||||||
|
# already on disk (e.g. scp). Otherwise: git clone … && cd Fractured && bash scripts/vps-sparse-checkout-no-docker.sh
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# bash scripts/vps-clone-without-docker.sh /path/to/Fractured git@github.com:Dawnforger/Fractured.git
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
TARGET="${1:?usage: $0 /path/to/Fractured <git-remote-url>}"
|
||||||
|
REMOTE="${2:?usage: $0 /path/to/Fractured <git-remote-url>}"
|
||||||
|
|
||||||
|
if [[ -e "$TARGET" ]]; then
|
||||||
|
echo "error: $TARGET already exists; remove it or pick another path." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$(dirname "$TARGET")"
|
||||||
|
git clone "$REMOTE" "$TARGET"
|
||||||
|
|
||||||
|
cd "$TARGET"
|
||||||
|
if [[ ! -f scripts/vps-sparse-checkout-no-docker.sh ]]; then
|
||||||
|
echo "error: clone missing scripts/vps-sparse-checkout-no-docker.sh — pull latest main." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
bash scripts/vps-sparse-checkout-no-docker.sh
|
||||||
|
|
||||||
|
echo "Done. Next: docs/DEPLOY_LINUX_VPS.md"
|
||||||
Executable
+40
@@ -0,0 +1,40 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Omit Docker-only paths from the working tree (native VPS / production clones).
|
||||||
|
# Repository root is the AzerothCore tree (flat layout).
|
||||||
|
#
|
||||||
|
# Run from repository root (directory that contains acore.sh and apps/).
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# bash scripts/vps-sparse-checkout-no-docker.sh
|
||||||
|
#
|
||||||
|
# Restore full tree: git sparse-checkout disable
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
cd "$ROOT"
|
||||||
|
|
||||||
|
if [[ ! -d .git ]]; then
|
||||||
|
echo "error: run from a git clone (no .git in $ROOT)." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
git sparse-checkout init --no-cone
|
||||||
|
|
||||||
|
cat >.git/info/sparse-checkout <<'EOF'
|
||||||
|
/*
|
||||||
|
!/docker-compose.yml
|
||||||
|
!/docker-compose.override.yml
|
||||||
|
!/apps/docker/
|
||||||
|
!/env/docker-focal-build/
|
||||||
|
!/.devcontainer/
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if git sparse-checkout reapply 2>/dev/null; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
git read-tree -mu HEAD
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Sparse checkout applied (Docker-only paths omitted)."
|
||||||
|
echo "To restore full tree locally: git sparse-checkout disable"
|
||||||
Executable
+66
@@ -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."
|
||||||
@@ -17,10 +17,16 @@
|
|||||||
|
|
||||||
#include "ARC4.h"
|
#include "ARC4.h"
|
||||||
#include "Errors.h"
|
#include "Errors.h"
|
||||||
|
#include <openssl/opensslv.h>
|
||||||
|
|
||||||
Acore::Crypto::ARC4::ARC4() : _ctx(EVP_CIPHER_CTX_new())
|
Acore::Crypto::ARC4::ARC4() : _ctx(EVP_CIPHER_CTX_new())
|
||||||
{
|
{
|
||||||
|
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
|
||||||
_cipher = EVP_CIPHER_fetch(nullptr, "RC4", nullptr);
|
_cipher = EVP_CIPHER_fetch(nullptr, "RC4", nullptr);
|
||||||
|
#else
|
||||||
|
_cipher = const_cast<EVP_CIPHER*>(EVP_rc4());
|
||||||
|
#endif
|
||||||
|
ASSERT(_cipher);
|
||||||
|
|
||||||
EVP_CIPHER_CTX_init(_ctx);
|
EVP_CIPHER_CTX_init(_ctx);
|
||||||
int result = EVP_EncryptInit_ex(_ctx, _cipher, nullptr, nullptr, nullptr);
|
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()
|
Acore::Crypto::ARC4::~ARC4()
|
||||||
{
|
{
|
||||||
EVP_CIPHER_CTX_free(_ctx);
|
EVP_CIPHER_CTX_free(_ctx);
|
||||||
|
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
|
||||||
EVP_CIPHER_free(_cipher);
|
EVP_CIPHER_free(_cipher);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Acore::Crypto::ARC4::Init(uint8 const* seed, std::size_t len)
|
void Acore::Crypto::ARC4::Init(uint8 const* seed, std::size_t len)
|
||||||
|
|||||||
@@ -17,6 +17,9 @@
|
|||||||
|
|
||||||
#include "OpenSSLCrypto.h"
|
#include "OpenSSLCrypto.h"
|
||||||
#include <openssl/crypto.h> // NOTE: this import is NEEDED (even though some IDEs report it as unused)
|
#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>
|
#include <openssl/provider.h>
|
||||||
|
|
||||||
OSSL_PROVIDER* LegacyProvider;
|
OSSL_PROVIDER* LegacyProvider;
|
||||||
@@ -53,3 +56,10 @@ void OpenSSLCrypto::threadsCleanup()
|
|||||||
OSSL_PROVIDER_unload(DefaultProvider);
|
OSSL_PROVIDER_unload(DefaultProvider);
|
||||||
OSSL_PROVIDER_set_default_search_path(nullptr, nullptr);
|
OSSL_PROVIDER_set_default_search_path(nullptr, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
void OpenSSLCrypto::threadsSetup() {}
|
||||||
|
void OpenSSLCrypto::threadsCleanup() {}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -52,7 +52,12 @@ MaxPingTime = 30
|
|||||||
|
|
||||||
#
|
#
|
||||||
# RealmServerPort
|
# RealmServerPort
|
||||||
# Description: TCP port to reach the auth server.
|
# Description: TCP port the auth server listens on (login handshake).
|
||||||
|
# 3724 is the stock WoW default; clients with `set realmlist <host>`
|
||||||
|
# (no port) connect here. Production deployments that cannot bind
|
||||||
|
# 3724 (NAT, conflicting service, etc.) can set this to e.g. 47497
|
||||||
|
# and have clients use `set realmlist <host>:47497` -- the
|
||||||
|
# Fractured-patched Wow.exe supports the host:port syntax.
|
||||||
# Default: 3724
|
# Default: 3724
|
||||||
|
|
||||||
RealmServerPort = 3724
|
RealmServerPort = 3724
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
#include "SQLOperation.h"
|
#include "SQLOperation.h"
|
||||||
#include "Transaction.h"
|
#include "Transaction.h"
|
||||||
#include "WorldDatabase.h"
|
#include "WorldDatabase.h"
|
||||||
|
#include <array>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
#include <mysqld_error.h>
|
#include <mysqld_error.h>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
@@ -59,10 +60,18 @@ DatabaseWorkerPool<T>::DatabaseWorkerPool() :
|
|||||||
{
|
{
|
||||||
WPFatal(mysql_thread_safe(), "Used MySQL library isn't thread-safe.");
|
WPFatal(mysql_thread_safe(), "Used MySQL library isn't thread-safe.");
|
||||||
|
|
||||||
bool isSupportClientDB = mysql_get_client_version() >= MIN_MYSQL_CLIENT_VERSION;
|
bool isSupportClientDB;
|
||||||
bool isSameClientDB = mysql_get_client_version() == MYSQL_VERSION_ID;
|
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);
|
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).",
|
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);
|
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)
|
bool DatabaseIncompatibleVersion(std::string const mysqlVersion)
|
||||||
{
|
{
|
||||||
// anon func to turn a version string into an array of uint8
|
auto parseTriplet = [](std::string const& input) -> std::array<unsigned, 3>
|
||||||
// "1.2.3" => [1, 2, 3]
|
|
||||||
auto parse = [](std::string const& input)
|
|
||||||
{
|
{
|
||||||
std::vector<uint8> result;
|
std::array<unsigned, 3> v = { 0, 0, 0 };
|
||||||
std::istringstream parser(input);
|
size_t idx = 0;
|
||||||
result.push_back(parser.get());
|
std::string num;
|
||||||
for (int i = 1; i < 3; i++)
|
for (char ch : input)
|
||||||
{
|
{
|
||||||
// Skip period
|
if (ch >= '0' && ch <= '9')
|
||||||
parser.get();
|
num.push_back(ch);
|
||||||
// Append int from parser to output
|
else if (ch == '.')
|
||||||
result.push_back(parser.get());
|
{
|
||||||
|
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
|
auto compareVersion = [](std::array<unsigned, 3> const& a, std::array<unsigned, 3> const& b) -> int
|
||||||
uint8 offset = 0;
|
{
|
||||||
|
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;
|
std::string minVersion = MIN_MYSQL_SERVER_VERSION;
|
||||||
|
|
||||||
auto parsedMySQLVersion = parse(mysqlVersion.substr(offset));
|
// MariaDB: version string may be:
|
||||||
auto parsedMinVersion = parse(minVersion);
|
// - "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(),
|
return compareVersion(parseTriplet(ver), parseTriplet(minVersion)) < 0;
|
||||||
parsedMinVersion.begin(), parsedMinVersion.end());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
@@ -442,7 +484,7 @@ uint32 DatabaseWorkerPool<T>::OpenConnections(InternalIndex type, uint8 numConne
|
|||||||
}
|
}
|
||||||
else if (DatabaseIncompatibleVersion(connection->GetServerInfo()))
|
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);
|
connection->GetServerInfo(), MYSQL_VERSION_ID);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,12 +32,24 @@
|
|||||||
*/
|
*/
|
||||||
#define MIN_MYSQL_CLIENT_VERSION 80000u
|
#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
|
* @def MIN_MYSQL_SERVER_VERSION
|
||||||
* The minimum MySQL Server Version
|
* The minimum MySQL Server Version
|
||||||
*/
|
*/
|
||||||
#define MIN_MYSQL_SERVER_VERSION "8.0.0"
|
#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>
|
template <typename T>
|
||||||
class ProducerConsumerQueue;
|
class ProducerConsumerQueue;
|
||||||
|
|
||||||
|
|||||||
@@ -129,13 +129,17 @@ uint32 MySQLConnection::Open()
|
|||||||
|
|
||||||
if (m_connectionInfo.ssl != "")
|
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;
|
mysql_ssl_mode opt_use_ssl = SSL_MODE_DISABLED;
|
||||||
if (m_connectionInfo.ssl == "ssl")
|
if (m_connectionInfo.ssl == "ssl")
|
||||||
{
|
|
||||||
opt_use_ssl = SSL_MODE_REQUIRED;
|
opt_use_ssl = SSL_MODE_REQUIRED;
|
||||||
}
|
|
||||||
|
|
||||||
mysql_options(mysqlInit, MYSQL_OPT_SSL_MODE, (char const*)&opt_use_ssl);
|
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(),
|
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();
|
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))
|
if (mysql_stmt_bind_named_param(msql_STMT, msql_BIND, m_mStmt->GetParameterCount(), nullptr))
|
||||||
#else
|
#else
|
||||||
if (mysql_stmt_bind_param(msql_STMT, msql_BIND))
|
if (mysql_stmt_bind_param(msql_STMT, msql_BIND))
|
||||||
@@ -268,7 +272,7 @@ bool MySQLConnection::_Query(PreparedStatementBase* stmt, MySQLPreparedStatement
|
|||||||
|
|
||||||
uint32 _s = getMSTime();
|
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))
|
if (mysql_stmt_bind_named_param(msql_STMT, msql_BIND, m_mStmt->GetParameterCount(), nullptr))
|
||||||
#else
|
#else
|
||||||
if (mysql_stmt_bind_param(msql_STMT, msql_BIND))
|
if (mysql_stmt_bind_param(msql_STMT, msql_BIND))
|
||||||
|
|||||||
@@ -669,7 +669,12 @@ bool AuctionHouseUsablePlayerInfo::PlayerCanUseItem(ItemTemplate const* proto) c
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((proto->AllowableClass & classMask) == 0 || (proto->AllowableRace & raceMask) == 0)
|
// mod-paragon: class 12 (Paragon) ignores AllowableClass for AH "Usable"
|
||||||
|
// filter. classMask here is the searching player's mask; PARAGON_BIT 0x800
|
||||||
|
// = (1 << (12 - 1)). Race restriction still applies.
|
||||||
|
bool const searcherIsParagon = (classMask & 0x800u) != 0;
|
||||||
|
if ((!searcherIsParagon && (proto->AllowableClass & classMask) == 0)
|
||||||
|
|| (proto->AllowableRace & raceMask) == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (proto->RequiredSkill != 0)
|
if (proto->RequiredSkill != 0)
|
||||||
|
|||||||
@@ -208,6 +208,46 @@ namespace Trainer
|
|||||||
|
|
||||||
bool Trainer::IsTrainerValidForPlayer(Player const* player) const
|
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())
|
if (!GetTrainerRequirement())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|||||||
@@ -10687,7 +10687,12 @@ bool Player::BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uin
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(pProto->AllowableClass & getClassMask()) && pProto->Bonding == BIND_WHEN_PICKED_UP && !IsGameMaster())
|
// mod-paragon: class 12 ignores BoP buy-side AllowableClass gate, so
|
||||||
|
// class-restricted vendor items (e.g. class glyphs) can be purchased.
|
||||||
|
if (getClass() != CLASS_PARAGON
|
||||||
|
&& !(pProto->AllowableClass & getClassMask())
|
||||||
|
&& pProto->Bonding == BIND_WHEN_PICKED_UP
|
||||||
|
&& !IsGameMaster())
|
||||||
{
|
{
|
||||||
SendBuyError(BUY_ERR_CANT_FIND_ITEM, nullptr, item, 0);
|
SendBuyError(BUY_ERR_CANT_FIND_ITEM, nullptr, item, 0);
|
||||||
return false;
|
return false;
|
||||||
@@ -14052,7 +14057,10 @@ void Player::LearnTalent(uint32 talentId, uint32 talentRank, bool command /*= fa
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// xinef: prevent learn talent for different class (cheating)
|
// 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;
|
return;
|
||||||
|
|
||||||
// xinef: find current talent rank
|
// xinef: find current talent rank
|
||||||
@@ -14081,7 +14089,12 @@ void Player::LearnTalent(uint32 talentId, uint32 talentRank, bool command /*= fa
|
|||||||
}
|
}
|
||||||
|
|
||||||
// xinef: check if talent deponds on another talent
|
// xinef: check if talent deponds on another talent
|
||||||
if (talentInfo->DependsOn > 0)
|
// mod-paragon: Character Advancement gates talents by AE/TE essence cost,
|
||||||
|
// not by the column-arrow prereq from Blizzard's spec UI. For class 12
|
||||||
|
// (Paragon) we skip the DependsOn check so e.g. Deep Wounds, Bloody
|
||||||
|
// Vengeance and Expose Weakness can be picked without first speccing into
|
||||||
|
// their unrelated prereq sibling.
|
||||||
|
if (talentInfo->DependsOn > 0 && getClass() != CLASS_PARAGON)
|
||||||
if (TalentEntry const* depTalentInfo = sTalentStore.LookupEntry(talentInfo->DependsOn))
|
if (TalentEntry const* depTalentInfo = sTalentStore.LookupEntry(talentInfo->DependsOn))
|
||||||
{
|
{
|
||||||
bool hasEnoughRank = false;
|
bool hasEnoughRank = false;
|
||||||
|
|||||||
@@ -2364,7 +2364,16 @@ InventoryResult Player::CanUseItem(ItemTemplate const* proto) const
|
|||||||
return EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM;
|
return EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((proto->AllowableClass & getClassMask()) == 0 || (proto->AllowableRace & getRaceMask()) == 0)
|
// mod-paragon: class 12 (Paragon) ignores AllowableClass entirely, so any
|
||||||
|
// class-restricted item (including class glyphs) can be equipped/used.
|
||||||
|
// Race restriction still applies; proficiency/level/skill checks below
|
||||||
|
// still gate it sensibly via the standard skill cascade.
|
||||||
|
if (getClass() != CLASS_PARAGON
|
||||||
|
&& (proto->AllowableClass & getClassMask()) == 0)
|
||||||
|
{
|
||||||
|
return EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM;
|
||||||
|
}
|
||||||
|
if ((proto->AllowableRace & getRaceMask()) == 0)
|
||||||
{
|
{
|
||||||
return EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM;
|
return EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM;
|
||||||
}
|
}
|
||||||
@@ -2430,7 +2439,11 @@ InventoryResult Player::CanRollForItemInLFG(ItemTemplate const* proto, WorldObje
|
|||||||
SKILL_FISHING
|
SKILL_FISHING
|
||||||
}; //Copy from function Item::GetSkill()
|
}; //Copy from function Item::GetSkill()
|
||||||
|
|
||||||
if ((proto->AllowableClass & getClassMask()) == 0 || (proto->AllowableRace & getRaceMask()) == 0)
|
// mod-paragon: class 12 ignores AllowableClass for LFG roll eligibility.
|
||||||
|
if (getClass() != CLASS_PARAGON
|
||||||
|
&& (proto->AllowableClass & getClassMask()) == 0)
|
||||||
|
return EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM;
|
||||||
|
if ((proto->AllowableRace & getRaceMask()) == 0)
|
||||||
return EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM;
|
return EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM;
|
||||||
|
|
||||||
if (proto->RequiredSpell != 0 && !HasSpell(proto->RequiredSpell))
|
if (proto->RequiredSpell != 0 && !HasSpell(proto->RequiredSpell))
|
||||||
|
|||||||
@@ -908,7 +908,12 @@ void WorldSession::SendListInventory(ObjectGuid vendorGuid, uint32 vendorEntry)
|
|||||||
{
|
{
|
||||||
if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(item->item))
|
if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(item->item))
|
||||||
{
|
{
|
||||||
if (!(itemTemplate->AllowableClass & _player->getClassMask()) && itemTemplate->Bonding == BIND_WHEN_PICKED_UP && !_player->IsGameMaster())
|
// mod-paragon: class 12 sees every BoP class-restricted item
|
||||||
|
// in vendor lists (class glyphs, class tier sets, ...).
|
||||||
|
if (_player->getClass() != CLASS_PARAGON
|
||||||
|
&& !(itemTemplate->AllowableClass & _player->getClassMask())
|
||||||
|
&& itemTemplate->Bonding == BIND_WHEN_PICKED_UP
|
||||||
|
&& !_player->IsGameMaster())
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7296,8 +7296,16 @@ SpellCastResult Spell::CheckItems(uint32* param1, uint32* param2)
|
|||||||
{
|
{
|
||||||
// Xinef: this is not true in my opinion, in eg bladestorm will not be canceled after disarm
|
// Xinef: this is not true in my opinion, in eg bladestorm will not be canceled after disarm
|
||||||
//if (!HasTriggeredCastFlag(TRIGGERED_IGNORE_EQUIPPED_ITEM_REQUIREMENT))
|
//if (!HasTriggeredCastFlag(TRIGGERED_IGNORE_EQUIPPED_ITEM_REQUIREMENT))
|
||||||
if (m_caster->IsPlayer() && !m_caster->ToPlayer()->HasItemFitToSpellRequirements(m_spellInfo))
|
if (m_caster->IsPlayer())
|
||||||
return SPELL_FAILED_EQUIPPED_ITEM_CLASS;
|
{
|
||||||
|
// Cast-from-glyph: many glyph on-use spells set EquippedItemClass to ITEM_CLASS_GLYPH.
|
||||||
|
// HasItemFitToSpellRequirements only implements weapon/armor, so it would always fail here
|
||||||
|
// even though the glyph item in the bag is the valid spell source.
|
||||||
|
bool const castFromGlyphScroll = m_CastItem && m_CastItem->GetTemplate() &&
|
||||||
|
m_CastItem->GetTemplate()->Class == ITEM_CLASS_GLYPH;
|
||||||
|
if (!castFromGlyphScroll && !m_caster->ToPlayer()->HasItemFitToSpellRequirements(m_spellInfo))
|
||||||
|
return SPELL_FAILED_EQUIPPED_ITEM_CLASS;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// do not take reagents for these item casts
|
// do not take reagents for these item casts
|
||||||
|
|||||||
@@ -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()
|
||||||
|
}
|
||||||
@@ -215,6 +215,14 @@ Updates.AllowRehash = 1
|
|||||||
# -1 - (Enabled - unlimited)
|
# -1 - (Enabled - unlimited)
|
||||||
|
|
||||||
Updates.CleanDeadRefMaxCount = 3
|
Updates.CleanDeadRefMaxCount = 3
|
||||||
|
|
||||||
|
#
|
||||||
|
# Updates.ExceptionShutdownDelay
|
||||||
|
# Description: Time (in milliseconds) to wait before shutting down after a fatal exception (e.g. failed SQL update).
|
||||||
|
# Default: 10000 - 10 seconds
|
||||||
|
# 0 - Disabled (immediate shutdown)
|
||||||
|
|
||||||
|
Updates.ExceptionShutdownDelay = 10000
|
||||||
###################################################################################################
|
###################################################################################################
|
||||||
|
|
||||||
###################################################################################################
|
###################################################################################################
|
||||||
|
|||||||
Reference in New Issue
Block a user