Skip to content

Commit e886931

Browse files
Merge AzerothCore 3.3.5 to ElunaAzerothcore [skip ci]
2 parents 1a6c04e + 008a619 commit e886931

39 files changed

Lines changed: 1051 additions & 187 deletions

File tree

CLAUDE.md

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
# CLAUDE.md
2+
3+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4+
5+
## Project Overview
6+
7+
AzerothCore is an open-source MMORPG server emulator for World of Warcraft patch 3.3.5a (Wrath of the Lich King). It's a C++ project built with CMake, using MySQL for data storage. Licensed under GNU GPL v2.
8+
9+
## Build Commands
10+
11+
### Configure and build (out-of-source build required)
12+
13+
```bash
14+
# Create build directory and configure
15+
mkdir -p build && cd build
16+
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/azeroth-server -DCMAKE_BUILD_TYPE=RelWithDebInfo \
17+
-DSCRIPTS=static -DMODULES=static
18+
19+
# Build (use appropriate core count)
20+
make -j$(nproc)
21+
make install
22+
```
23+
24+
### Key CMake options
25+
26+
- `SCRIPTS`: none, static, dynamic, minimal-static, minimal-dynamic (default: static)
27+
- `MODULES`: none, static, dynamic (default: static)
28+
- `APPS_BUILD`: none, all, auth-only, world-only (default: all)
29+
- `TOOLS_BUILD`: none, all, db-only, maps-only (default: none)
30+
- `BUILD_TESTING`: Enable unit tests (default: OFF)
31+
- `USE_COREPCH` / `USE_SCRIPTPCH`: Precompiled headers (default: ON)
32+
33+
### Unit tests
34+
35+
```bash
36+
# Configure with testing enabled
37+
cmake .. -DBUILD_TESTING=ON
38+
make -j$(nproc)
39+
40+
# Run tests
41+
./src/test/unit_tests
42+
# or
43+
ctest
44+
```
45+
46+
Tests use Google Test and live in `src/test/`. The test binary links against the `game` library.
47+
48+
## Architecture
49+
50+
### Two server executables
51+
- **authserver** (`src/server/apps/authserver/`): Handles authentication and realm selection (port 3724)
52+
- **worldserver** (`src/server/apps/worldserver/`): Main game server handling all gameplay (port 8085)
53+
54+
### Source layout (`src/`)
55+
56+
- **`src/common/`** - Shared libraries: networking (Asio), cryptography, configuration, logging, threading, collision detection, utilities
57+
- **`src/server/game/`** - Core game logic (~52 subsystems), the heart of the worldserver
58+
- **`src/server/scripts/`** - Content scripts (bosses, spells, commands, instances)
59+
- **`src/server/database/`** - Database abstraction layer and schema updater
60+
- **`src/server/shared/`** - Code shared between auth and world servers (packets, network, realm definitions)
61+
- **`src/test/`** - Unit tests (Google Test)
62+
63+
### Key game subsystems (`src/server/game/`)
64+
65+
- **Entities/** - Core game objects: `Player`, `Creature`, `Unit`, `Item`, `GameObject`
66+
- **Spells/** - Spell mechanics, aura system, spell effects
67+
- **Maps/** - Map management, grid system, instancing
68+
- **Handlers/** - Client packet handlers (one file per system: `MovementHandler.cpp`, `SpellHandler.cpp`, etc.). These are methods on `WorldSession`
69+
- **AI/** - Creature AI framework
70+
- **Scripting/** - Script system with typed base classes (`ScriptObject` subclasses: `CreatureScript`, `SpellScript`, `InstanceMapScript`, `GameObjectScript`, `CommandScript`, etc.)
71+
- **Server/** - `WorldSession` (per-player connection), `World` (global state), opcode definitions
72+
73+
### Scripting system
74+
75+
Scripts follow a registration pattern:
76+
1. Define a class inheriting from `SpellScript`, `CreatureScript`, etc.
77+
2. Implement an `AddSC_*()` function that calls `RegisterSpellScript(ClassName)` (or similar)
78+
3. The `AddSC_*()` is declared and called from the regional `*_script_loader.cpp`
79+
4. Script loaders per region: `spells_script_loader.cpp`, `eastern_kingdoms_script_loader.cpp`, `northrend_script_loader.cpp`, etc.
80+
5. Spell script files are organized by class: `spell_dk.cpp`, `spell_mage.cpp`, `spell_generic.cpp`, etc.
81+
82+
### Three databases
83+
- **acore_auth** - Accounts, realm list, bans (`data/sql/base/db_auth/`)
84+
- **acore_characters** - Character data, inventories, progress (`data/sql/base/db_characters/`)
85+
- **acore_world** - Game content: creatures, items, quests, spells, loot (`data/sql/base/db_world/`)
86+
87+
SQL updates go in `data/sql/updates/` with separate subdirectories per database.
88+
89+
### Module system
90+
91+
External modules are loaded from the `modules/` directory. Each module is a subdirectory with its own `CMakeLists.txt`. Disable specific modules with `-DDISABLED_AC_MODULES="mod1;mod2"`. Module skeleton: https://github.com/azerothcore/skeleton-module/
92+
93+
### Dependencies
94+
95+
Bundled in `deps/`: boost, MySQL client, OpenSSL, zlib, recastnavigation (pathfinding), g3dlite (geometry), fmt, argon2, jemalloc, and others.
96+
97+
## Commit Message Format
98+
99+
Uses Conventional Commits:
100+
```
101+
Type(Scope/Subscope): Short description (max 50 chars)
102+
```
103+
104+
- **Types**: feat, fix, refactor, style, docs, test, chore
105+
- **Scopes**: Core (C++ changes), DB (SQL changes)
106+
- **Examples**: `fix(Core/Spells): Fix damage calculation for Fireball`, `fix(DB/SAI): Missing spell to NPC Hogger`
107+
108+
## Code Style
109+
110+
- 4-space indentation for C++ (no tabs)
111+
- 2-space indentation for JSON, YAML, shell scripts
112+
- UTF-8 encoding, LF line endings
113+
- Max 80 character line length
114+
- CI enforces code style checks and compiles with `-Werror`
115+
116+
## PR Requirements
117+
118+
- AI tool usage must be disclosed in PRs
119+
- In-game testing expected
120+
- Changes to generic code require regression testing of related systems
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
-- DB update 2026_02_04_03 -> 2026_02_06_00
2+
--
3+
UPDATE `creature_template` SET `gossip_menu_id` = 8760 WHERE (`entry` = 18752);
4+
UPDATE `creature_template` SET `gossip_menu_id` = 8760 WHERE (`entry` = 18753);
5+
UPDATE `creature_template` SET `gossip_menu_id` = 7816 WHERE (`entry` = 18771);
6+
UPDATE `creature_template` SET `gossip_menu_id` = 10365 WHERE (`entry` = 33676);
7+
UPDATE `creature_template` SET `gossip_menu_id` = 9879 WHERE (`entry` = 33679);
8+
UPDATE `creature_template` SET `gossip_menu_id` = 8646 WHERE (`entry` = 33680);
9+
UPDATE `creature_template` SET `gossip_menu_id` = 10351 WHERE (`entry` = 33682);
10+
11+
DELETE FROM `gossip_menu_option` WHERE `MenuID` = 8760;
12+
INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES
13+
(8760, 0, 3, 'Train me.', 3266, 5, 16, 0, 0, 0, 0, '', 0, 0),
14+
(8760, 1, 1, 'Let me browse your goods.', 8097, 3, 128, 0, 0, 0, 0, '', 0, 0);
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
-- DB update 2026_02_06_00 -> 2026_02_06_01
2+
-- Recalculate quaternion rotation from orientation for unverified gameobjects
3+
UPDATE `gameobject` SET `rotation2` = SIN(`orientation` / 2), `rotation3` = COS(`orientation` / 2) WHERE `rotation0` = 0 AND `rotation1` = 0 AND (`VerifiedBuild` IS NULL OR `VerifiedBuild` = 0);
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
-- DB update 2026_02_06_01 -> 2026_02_06_02
2+
-- Add transport parent_rotation values (from TrinityCore/UDB)
3+
DELETE FROM `gameobject_addon` WHERE `guid` IN (14139,16760,16761,16871,20505,24055,24074,24075,25138,34057,35693,35694,55230,56744,56937,56954,56961,57132,57133,57140,57141,57799,57992,57993,57994,57995,57996,58299,58304,58305,58306,58310,58782,58824,58935,59160,59328,59336,59343,59350,59386,59762,59763,59764,59765,59766,59779,59780,59781,59782,59783,60421,60463,61053,65435,65436,65438,65439,65520,66717,67873,67874,67875,67876);
4+
INSERT INTO `gameobject_addon` (`guid`,`parent_rotation0`,`parent_rotation1`,`parent_rotation2`,`parent_rotation3`,`invisibilityType`,`invisibilityValue`) VALUES
5+
(14139,0,0,1,-0.0000000437114,0,0),
6+
(16760,0,0,-0.378575,0.92557,0,0),
7+
(16761,0,0,-0.378575,0.92557,0,0),
8+
(16871,0,0,0.694658,0.71934,0,0),
9+
(20505,0,0,-0.694658,0.71934,0,0),
10+
(24055,0,0,-0.526214,0.850352,0,0),
11+
(24074,0,0,-0.526214,0.850352,0,0),
12+
(24075,0,0,-0.526214,0.850352,0,0),
13+
(25138,0,0,0.45399,0.891007,0,0),
14+
(34057,0,0,0.000000325841,1,0,0),
15+
(35693,0,0,0.989651,0.143493,0,0),
16+
(35694,0,0,0.989651,0.143493,0,0),
17+
(55230,0,0,0.999048,0.0436193,0,0),
18+
(56744,0,0,0.951057,0.309017,0,0),
19+
(56937,0,0,0.951057,0.309017,0,0),
20+
(56954,0,0,0.951057,0.309017,0,0),
21+
(56961,0,0,0.999048,0.0436193,0,0),
22+
(57132,-0.00276125,-0.00551835,-0.370553,0.928791,0,0),
23+
(57133,0.00544418,-0.00290476,0.918772,0.394739,0,0),
24+
(57140,-0.00276125,-0.00551835,-0.370553,0.928791,0,0),
25+
(57141,0.00544418,-0.00290476,0.918772,0.394739,0,0),
26+
(57799,0,0,0.999048,0.0436193,0,0),
27+
(57992,0,0,-0.370557,0.92881,0,0),
28+
(57993,0,0,-0.760406,0.649448,0,0),
29+
(57994,0,0,0.915312,0.402747,0,0),
30+
(57995,0,0,-0.748956,0.66262,0,0),
31+
(57996,0,0,0.995805,0.0915015,0,0),
32+
(58299,0,0,0.999048,0.0436193,0,0),
33+
(58304,0,0,-0.263031,0.964787,0,0),
34+
(58305,0,0,0.522499,0.85264,0,0),
35+
(58306,0,0,0.996917,-0.0784592,0,0),
36+
(58310,0,0,0.333807,0.942641,0,0),
37+
(58782,0,0,0.333807,0.942641,0,0),
38+
(58824,0,0,0.333807,0.942641,0,0),
39+
(58935,0,0,0.932008,-0.362438,0,0),
40+
(59160,0,0,0.99999,0.00436324,0,0),
41+
(59328,0,0,0.99999,-0.00436333,0,0),
42+
(59336,0,0,0.99999,-0.00436333,0,0),
43+
(59343,0,0,0.99999,-0.00436333,0,0),
44+
(59350,0,0,0.99999,-0.00436333,0,0),
45+
(59386,0,0,0.99999,-0.00436333,0,0),
46+
(59762,0,0,-0.370557,0.92881,0,0),
47+
(59763,0,0,-0.760406,0.649448,0,0),
48+
(59764,0,0,0.915312,0.402747,0,0),
49+
(59765,0,0,-0.748956,0.66262,0,0),
50+
(59766,0,0,0.995805,0.0915015,0,0),
51+
(59779,0,0,-0.370557,0.92881,0,0),
52+
(59780,0,0,-0.760406,0.649448,0,0),
53+
(59781,0,0,0.915312,0.402747,0,0),
54+
(59782,0,0,-0.748956,0.66262,0,0),
55+
(59783,0,0,0.995805,0.0915015,0,0),
56+
(60421,0,0,0.99999,0.00436324,0,0),
57+
(60463,0,0,0.999048,0.0436193,0,0),
58+
(61053,0,0,0.999048,0.0436193,0,0),
59+
(65435,0,0,0.915312,0.402747,0,0),
60+
(65436,0,0,0.99999,0.00436324,0,0),
61+
(65438,0,0,0.915312,0.402747,0,0),
62+
(65439,0,0,0.915312,0.402747,0,0),
63+
(65520,0,0,0.99999,0.00436324,0,0),
64+
(66717,0,0,0.999657,0.0261769,0,0),
65+
(67873,-0.00276125,-0.00551835,-0.370553,0.928791,0,0),
66+
(67874,0.00544418,-0.00290476,0.918772,0.394739,0,0),
67+
(67875,-0.00276125,-0.00551835,-0.370553,0.928791,0,0),
68+
(67876,0.00544418,-0.00290476,0.918772,0.394739,0,0);
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
-- DB update 2026_02_06_02 -> 2026_02_06_03
2+
-- Vyragosa
3+
UPDATE `creature_template` SET `speed_run` = 1.142857, `unit_flags` = `unit_flags`|64|32768 WHERE (`entry` = 32630);
4+
UPDATE `creature_model_info` SET `CombatReach` = 15 WHERE `DisplayID` = 28110;
5+
-- Time-Lost Proto Drake
6+
UPDATE `creature_template` SET `speed_walk` = 1.44444, `speed_run` = 1.5873, `unit_flags` = `unit_flags`|64|32768 WHERE (`entry` = 32491);
7+
UPDATE `creature_model_info` SET `BoundingRadius` = 0.300000011920928955, `CombatReach` = 5 WHERE `DisplayID` = 26711;
8+
9+
DELETE FROM `script_waypoint` WHERE `entry` = 32491;
10+
11+
SET @GUID := 39203;
12+
13+
DELETE FROM `waypoint_data` WHERE `id` IN ((@GUID)*10, (@GUID+1)*10, (@GUID+2)*10, (@GUID+3)*10);
14+
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`) VALUES
15+
-- This is the one in which Time-Lost was found
16+
((@GUID)*10, 1 , 6748.211, -1664.3069, 919.3118 , NULL, 0, 1),
17+
((@GUID)*10, 2 , 6913.308, -1725.2614, 954.7917 , NULL, 0, 1),
18+
((@GUID)*10, 3 , 7167.578, -1501.6945, 962.5693 , NULL, 0, 1),
19+
((@GUID)*10, 4 , 7440.402, -1295.8611, 997.2911 , NULL, 0, 1),
20+
((@GUID)*10, 5 , 7210.9585, -1046.8922, 1006.1796, NULL, 0, 1),
21+
((@GUID)*10, 6 , 6998.4653, -1076.8466, 1024.8191, NULL, 0, 1),
22+
((@GUID)*10, 7 , 6874.249, -1097.3822, 927.736 , NULL, 0, 1),
23+
((@GUID)*10, 8 , 6614.7915, -875.7547, 812.7645 , NULL, 0, 1),
24+
((@GUID)*10, 9 , 6563.2754, -811.7673, 749.87573 , NULL, 0, 1),
25+
((@GUID)*10, 10, 6299.502, -797.57697, 529.12573 , NULL, 0, 1),
26+
((@GUID)*10, 11, 6194.549, -1013.1437, 501.54242 , NULL, 0, 1),
27+
((@GUID)*10, 12, 6319.2544, -1251.6613, 468.6258 , NULL, 0, 1),
28+
((@GUID)*10, 13, 6309.161, -1537.8574, 615.0423 , NULL, 0, 1),
29+
30+
((@GUID+1)*10, 1 , 6455.723, -562.87396, 814.643 , NULL, 0, 1),
31+
((@GUID+1)*10, 2 , 6552.79, -672.2307, 835.29645 , NULL, 0, 1),
32+
((@GUID+1)*10, 3 , 6649.857, -781.58746, 855.9499 , NULL, 0, 1),
33+
((@GUID+1)*10, 4 , 6952.5728, -758.1678, 807.22784 , NULL, 0, 1),
34+
((@GUID+1)*10, 5 , 7057.876, -690.5854, 807.22784 , NULL, 0, 1),
35+
((@GUID+1)*10, 6 , 7070.7056, -460.4938, 821.33875 , NULL, 0, 1),
36+
((@GUID+1)*10, 7 , 7083.6943, -252.1965, 817.78326 , NULL, 0, 1),
37+
((@GUID+1)*10, 8 , 6910.3896, -164.06386, 821.42194, NULL, 0, 1),
38+
((@GUID+1)*10, 9 , 6754.1, -16.06277, 805.08875 , NULL, 0, 1),
39+
((@GUID+1)*10, 10, 6525.3613, -70.11849, 808.1164 , NULL, 0, 1),
40+
((@GUID+1)*10, 11, 6400.468, -192.77023, 704.8667 , NULL, 0, 1),
41+
((@GUID+1)*10, 12, 6312.018, -498.71994, 704.8667 , NULL, 0, 1),
42+
((@GUID+1)*10, 13, 6481.932, -689.96844, 770.06104 , NULL, 0, 1),
43+
((@GUID+1)*10, 14, 6649.857, -781.58746, 855.9499 , NULL, 0, 1),
44+
((@GUID+1)*10, 15, 6952.5728, -758.1678, 807.22784 , NULL, 0, 1),
45+
46+
((@GUID+2)*10, 1 , 6481.932, -689.96844, 770.06104 , NULL, 0, 1),
47+
((@GUID+2)*10, 2 , 6649.857, -781.58746, 855.9499 , NULL, 0, 1),
48+
((@GUID+2)*10, 3 , 6952.5728, -758.1678, 807.22784 , NULL, 0, 1),
49+
((@GUID+2)*10, 4 , 7057.876, -690.5854, 807.22784 , NULL, 0, 1),
50+
((@GUID+2)*10, 5 , 7070.7056, -460.4938, 821.33875 , NULL, 0, 1),
51+
((@GUID+2)*10, 6 , 7083.6943, -252.1965, 817.78326 , NULL, 0, 1),
52+
((@GUID+2)*10, 7 , 6910.3896, -164.06386, 821.42194, NULL, 0, 1),
53+
((@GUID+2)*10, 8 , 6754.1, -16.06277, 805.08875 , NULL, 0, 1),
54+
((@GUID+2)*10, 9 , 6525.3613, -70.11849, 808.1164 , NULL, 0, 1),
55+
((@GUID+2)*10, 10, 6400.468, -192.77023, 704.8667 , NULL, 0, 1),
56+
((@GUID+2)*10, 11, 6312.018, -498.71994, 704.8667 , NULL, 0, 1),
57+
58+
((@GUID+3)*10, 1 , 6954.7627, -472.37695, 997.65027, NULL, 0, 1),
59+
((@GUID+3)*10, 2 , 6903.07, -363.67593, 992.3348 , NULL, 0, 1),
60+
((@GUID+3)*10, 3 , 7002.2744, -270.31137, 908.9182 , NULL, 0, 1),
61+
((@GUID+3)*10, 4 , 7150.6274, -142.2627, 859.1961 , NULL, 0, 1),
62+
((@GUID+3)*10, 5 , 7316.008, -35.80534, 859.1961 , NULL, 0, 1),
63+
((@GUID+3)*10, 6 , 7542.2666, -97.61708, 878.5572 , NULL, 0, 1),
64+
((@GUID+3)*10, 7 , 7667.518, -102.67128, 899.2793 , NULL, 0, 1),
65+
((@GUID+3)*10, 8 , 7794.171, -209.65338, 925.02905 , NULL, 0, 1),
66+
((@GUID+3)*10, 9 , 7899.086, -401.56662, 928.9456 , NULL, 0, 1),
67+
((@GUID+3)*10, 10, 7997.539, -546.96466, 949.58435 , NULL, 0, 1),
68+
((@GUID+3)*10, 11, 8143.803, -636.999, 999.3811 , NULL, 0, 1),
69+
((@GUID+3)*10, 12, 8245.65, -775.7319, 999.3811 , NULL, 0, 1),
70+
((@GUID+3)*10, 13, 8238.106, -987.4192, 983.9922 , NULL, 0, 1),
71+
((@GUID+3)*10, 14, 7946.1025, -1003.7714, 1088.5669, NULL, 0, 1),
72+
((@GUID+3)*10, 15, 7586.955, -1071.2095, 1054.2891 , NULL, 0, 1),
73+
((@GUID+3)*10, 16, 7313.6016, -857.4793, 987.2056 , NULL, 0, 1),
74+
((@GUID+3)*10, 17, 7143.3037, -697.4054, 969.9835 , NULL, 0, 1);
75+
76+
DELETE FROM `creature` WHERE (`id1` = 32491) AND `guid` = 1975840;
77+
DELETE FROM `creature` WHERE `id1` IN (32491, 32630) AND `guid` BETWEEN @GUID AND @GUID+7;
78+
INSERT INTO `creature` (`guid`, `id1`, `map`, `zoneId`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `MovementType`, `VerifiedBuild`, `CreateObject`, `Comment`) VALUES
79+
(@GUID+0, 32491, 571, 67, 511, 6748.211, -1664.3069, 919.3118, 0, 2700, 2, 58558, 1, NULL),
80+
(@GUID+1, 32491, 571, 67, 511, 6455.723, -562.87396, 814.643, 0, 2700, 2, 58558, 1, NULL),
81+
(@GUID+2, 32491, 571, 67, 511, 6481.932, -689.96844, 770.06104, 0, 2700, 2, 58558, 1, NULL),
82+
(@GUID+3, 32491, 571, 67, 511, 6954.7627, -472.37695, 997.65027, 0, 2700, 2, 58558, 1, NULL),
83+
84+
(@GUID+4, 32630, 571, 67, 511, 6748.211, -1664.3069, 919.3118, 0, 2700, 2, 58558, 1, NULL),
85+
(@GUID+5, 32630, 571, 67, 511, 6455.723, -562.87396, 814.643, 0, 2700, 2, 58558, 1, NULL),
86+
(@GUID+6, 32630, 571, 67, 511, 6481.932, -689.96844, 770.06104, 0, 2700, 2, 58558, 1, NULL),
87+
(@GUID+7, 32630, 571, 67, 511, 6954.7627, -472.37695, 997.65027, 0, 2700, 2, 58558, 1, NULL);
88+
89+
DELETE FROM `pool_template` WHERE `entry` = 32491;
90+
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES
91+
(32491, 1, 'Time-Lost Proto Drake / Vyragosa');
92+
93+
DELETE FROM `pool_template` WHERE `entry` BETWEEN 32492 AND 32495;
94+
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES
95+
(32492, 1, 'Time-Lost Proto Drake / Vyragosa - Path 1'),
96+
(32493, 1, 'Time-Lost Proto Drake / Vyragosa - Path 2'),
97+
(32494, 1, 'Time-Lost Proto Drake / Vyragosa - Path 3'),
98+
(32495, 1, 'Time-Lost Proto Drake / Vyragosa - Path 4');
99+
100+
DELETE FROM `pool_pool` WHERE `mother_pool` = 32491;
101+
INSERT INTO `pool_pool` (`pool_id`, `mother_pool`, `chance`, `description`) VALUES
102+
(32492, 32491, 0, 'Time-Lost Proto Drake / Vyragosa - Path 1'),
103+
(32493, 32491, 0, 'Time-Lost Proto Drake / Vyragosa - Path 2'),
104+
(32494, 32491, 0, 'Time-Lost Proto Drake / Vyragosa - Path 3'),
105+
(32495, 32491, 0, 'Time-Lost Proto Drake / Vyragosa - Path 4');
106+
107+
DELETE FROM `pool_creature` WHERE `pool_entry` BETWEEN 32491 AND 32495;
108+
INSERT INTO `pool_creature` (`guid`, `pool_entry`, `chance`, `description`) VALUES
109+
-- Seen Time-Lost 1 in 12 sniffs
110+
(@GUID, 32492, 10, 'Time-Lost Proto Drake - Path 1'),
111+
(@GUID+4, 32492, 0, 'Vyragosa - Path 1'),
112+
113+
(@GUID+1, 32493, 10, 'Time-Lost Proto Drake - Path 2'),
114+
(@GUID+5, 32493, 0, 'Vyragosa - Path 2'),
115+
116+
(@GUID+2, 32494, 10, 'Time-Lost Proto Drake - Path 3'),
117+
(@GUID+6, 32494, 0, 'Vyragosa - Path 3'),
118+
119+
(@GUID+3, 32495, 10, 'Time-Lost Proto Drake - Path 4'),
120+
(@GUID+7, 32495, 0, 'Vyragosa - Path 4');
121+
122+
DELETE FROM `creature_addon` WHERE `guid` BETWEEN @GUID+0 AND @GUID+7;
123+
INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
124+
(@GUID+0, (@GUID+0)*10, 0, 0, 0, 0, 0, ''),
125+
(@GUID+1, (@GUID+1)*10, 0, 0, 0, 0, 0, ''),
126+
(@GUID+2, (@GUID+2)*10, 0, 0, 0, 0, 0, ''),
127+
(@GUID+3, (@GUID+3)*10, 0, 0, 0, 0, 0, ''),
128+
129+
(@GUID+4, (@GUID+0)*10, 0, 0, 0, 0, 0, ''),
130+
(@GUID+5, (@GUID+1)*10, 0, 0, 0, 0, 0, ''),
131+
(@GUID+6, (@GUID+2)*10, 0, 0, 0, 0, 0, ''),
132+
(@GUID+7, (@GUID+3)*10, 0, 0, 0, 0, 0, '');

0 commit comments

Comments
 (0)