mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-13 01:08:35 +00:00
Compare commits
470 Commits
master
...
f262dc7835
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f262dc7835 | ||
|
|
fc7c7055ba | ||
|
|
3ba00be179 | ||
|
|
8f84271af8 | ||
|
|
7b41eb5c90 | ||
|
|
58c1c49610 | ||
|
|
08323af7a5 | ||
|
|
bc9ca38d78 | ||
|
|
7be3d24c1e | ||
|
|
87d3f3ba3a | ||
|
|
6b5da02e78 | ||
|
|
821f854318 | ||
|
|
7228e76355 | ||
|
|
528e590f10 | ||
|
|
eef1980923 | ||
|
|
1ed9aee631 | ||
|
|
454a4f34f0 | ||
|
|
236c842934 | ||
|
|
3732047b9e | ||
|
|
3d29de2844 | ||
|
|
a2a4a4f7cf | ||
|
|
923cccdc25 | ||
|
|
cd799aa1c6 | ||
|
|
0bb40fddc4 | ||
|
|
e68fa57fd6 | ||
|
|
838628a25d | ||
|
|
7c5b199489 | ||
|
|
b5cdb0e63e | ||
|
|
12909c1958 | ||
|
|
b7c92a52aa | ||
|
|
6bee45a1c8 | ||
|
|
8c2409ff06 | ||
|
|
52a09fbf54 | ||
|
|
c96314a9b3 | ||
|
|
1b0eef2e6c | ||
|
|
c6c90e0034 | ||
|
|
39187083b0 | ||
|
|
2607df754b | ||
|
|
880529a5b4 | ||
|
|
e846fdc8b9 | ||
|
|
6d42ab1797 | ||
|
|
fc1d8e2a64 | ||
|
|
4f9b4d5470 | ||
|
|
f96e7c577b | ||
|
|
be3d55f770 | ||
|
|
fac127718d | ||
|
|
1aac4fbef6 | ||
|
|
dae1f55536 | ||
|
|
ec7bb81473 | ||
|
|
d9c7330434 | ||
|
|
2eda59a0dc | ||
|
|
21e313a7f1 | ||
|
|
96f1fe67d9 | ||
|
|
798589fb5d | ||
|
|
6aef3aae5f | ||
|
|
945fdff66c | ||
|
|
245fe501f1 | ||
|
|
19a834fa55 | ||
|
|
152b1cc455 | ||
|
|
5fbcb45727 | ||
|
|
0145bebb10 | ||
|
|
59c1233d98 | ||
|
|
f67b86df8b | ||
|
|
1125d84fb2 | ||
|
|
1665fefb1a | ||
|
|
9d82a35671 | ||
|
|
861058f657 | ||
|
|
c092fb1581 | ||
|
|
fd567ddcfa | ||
|
|
dc6be0655f | ||
|
|
c0aec97676 | ||
|
|
ced3cf9b22 | ||
|
|
93c0ab5b6b | ||
|
|
9bc46a7b77 | ||
|
|
18a5a2be5c | ||
|
|
fdb71c521e | ||
|
|
830e1fc5c2 | ||
|
|
234268e3bf | ||
|
|
4514980791 | ||
|
|
025aaacf20 | ||
|
|
32b3e6331d | ||
|
|
8ff1d2ccc1 | ||
|
|
55bc26f505 | ||
|
|
21c2c3e0ee | ||
|
|
1620d6d64b | ||
|
|
c167fef89c | ||
|
|
475e5a42c4 | ||
|
|
24fa79040f | ||
|
|
c3fbb2da20 | ||
|
|
1e88fccd3c | ||
|
|
13edac562c | ||
|
|
4ace49c95a | ||
|
|
c6222b9aa3 | ||
|
|
58fd50651d | ||
|
|
ce9343d916 | ||
|
|
c304ccee57 | ||
|
|
97342b05e7 | ||
|
|
95fc3f0932 | ||
|
|
4deb6ec311 | ||
|
|
565019ed27 | ||
|
|
34811a047a | ||
|
|
f332b07140 | ||
|
|
bd0302605a | ||
|
|
990c85c2cd | ||
|
|
7d431dc796 | ||
|
|
d1032678ff | ||
|
|
41415bb3c3 | ||
|
|
de3c2b553e | ||
|
|
e5c67bd47d | ||
|
|
cf035b5e5e | ||
|
|
91edb92f7a | ||
|
|
36987b8a96 | ||
|
|
8e5802da4e | ||
|
|
36ac083814 | ||
|
|
5035e880f4 | ||
|
|
b603c8c1e8 | ||
|
|
2bab8ee807 | ||
|
|
4e8524bd13 | ||
|
|
c76e70a364 | ||
|
|
7347f64938 | ||
|
|
889b509313 | ||
|
|
ba56317506 | ||
|
|
e8679bc13b | ||
|
|
3d3fff1a2e | ||
|
|
9e5f551b58 | ||
|
|
1294d79764 | ||
|
|
4cd23792db | ||
|
|
4183a34608 | ||
|
|
fce06946e1 | ||
|
|
545bb18af4 | ||
|
|
abd9b4ebb8 | ||
|
|
2e37c1ff1d | ||
|
|
418afce6d7 | ||
|
|
0e1fb788c1 | ||
|
|
b4ca46c3af | ||
|
|
6eb5070cbc | ||
|
|
9ebdbd8459 | ||
|
|
66c55bc450 | ||
|
|
9780dbab7e | ||
|
|
910848c51b | ||
|
|
57b7a6a4eb | ||
|
|
ddd7c1fb6c | ||
|
|
c85e9772a8 | ||
|
|
af776520db | ||
|
|
2358b256f2 | ||
|
|
7e8c2d2887 | ||
|
|
9973151927 | ||
|
|
6f5b504e4c | ||
|
|
414805e692 | ||
|
|
f8a28b6883 | ||
|
|
fdb6fedc00 | ||
|
|
a642358a43 | ||
|
|
1bf88ad3a3 | ||
|
|
27b243e7b2 | ||
|
|
33e4bc8390 | ||
|
|
c3be0fa2a8 | ||
|
|
3e2509e20c | ||
|
|
2cde786785 | ||
|
|
0406652bae | ||
|
|
f5e44cd8a6 | ||
|
|
7227e78f54 | ||
|
|
0ba424a853 | ||
|
|
7a1986da61 | ||
|
|
f6a9b1f97d | ||
|
|
bba6c86364 | ||
|
|
84c12b0402 | ||
|
|
e6fa5732dc | ||
|
|
172f54b49a | ||
|
|
f7ad415b3f | ||
|
|
4a48e18d5b | ||
|
|
5276676a11 | ||
|
|
c72188467a | ||
|
|
22132addce | ||
|
|
05c9a96ba9 | ||
|
|
1f54cb14fa | ||
|
|
223ec63ba5 | ||
|
|
2a2e2ec445 | ||
|
|
cc5adebbe4 | ||
|
|
d7a07b2397 | ||
|
|
9a11d9dd5b | ||
|
|
fb4dbdd604 | ||
|
|
20f917c48f | ||
|
|
72725635ba | ||
|
|
7ca3db8bd0 | ||
|
|
72634b2829 | ||
|
|
971b2f8316 | ||
|
|
12ea82a57f | ||
|
|
1e22c4dc94 | ||
|
|
5079750396 | ||
|
|
9bbe90d388 | ||
|
|
0a1570ec52 | ||
|
|
99bc841ff6 | ||
|
|
c010742289 | ||
|
|
10bd872f2d | ||
|
|
ab9fe20600 | ||
|
|
65cb23b56a | ||
|
|
f0be01a5d7 | ||
|
|
d74a6dd960 | ||
|
|
6338010e09 | ||
|
|
97604fab77 | ||
|
|
91870c9ccd | ||
|
|
4387de8b82 | ||
|
|
e0ddd7f610 | ||
|
|
0024602d42 | ||
|
|
b1ee6cfe06 | ||
|
|
af717c592f | ||
|
|
ce59a892c7 | ||
|
|
68219e6f55 | ||
|
|
a42219e17d | ||
|
|
b3f96a2bc1 | ||
|
|
23cf1a3aab | ||
|
|
f0cb94cb3f | ||
|
|
6d5b402c2c | ||
|
|
60b624a3ac | ||
|
|
19cd29ff6d | ||
|
|
c36a7a25a0 | ||
|
|
187db6f688 | ||
|
|
984e03db18 | ||
|
|
01a6bd65bf | ||
|
|
5ef572eaf9 | ||
|
|
8a1635bc6e | ||
|
|
0b0eeb05c9 | ||
|
|
8e5731ff60 | ||
|
|
51219291a3 | ||
|
|
7c856eaf63 | ||
|
|
b4046d48d7 | ||
|
|
ccff9469fc | ||
|
|
cd5826f283 | ||
|
|
5699c97d8c | ||
|
|
9784f932e9 | ||
|
|
1ef5b9a6b4 | ||
|
|
b314b04001 | ||
|
|
9e172c9113 | ||
|
|
b70e64dbcf | ||
|
|
600b0873e7 | ||
|
|
cb795ae5d4 | ||
|
|
213300bf66 | ||
|
|
ccf92f481d | ||
|
|
19f7e753ba | ||
|
|
68c8fad239 | ||
|
|
f68f398e59 | ||
|
|
608ff291cb | ||
|
|
7c91ec9bf9 | ||
|
|
452584a155 | ||
|
|
80a8896dfe | ||
|
|
60cf17d70a | ||
|
|
7915f79d04 | ||
|
|
d879fc9258 | ||
|
|
57e0c7a09f | ||
|
|
a5e27362d8 | ||
|
|
2dd1490c18 | ||
|
|
e7ac00b586 | ||
|
|
28fcb40b88 | ||
|
|
cc4ac0ab57 | ||
|
|
92c6ef23ff | ||
|
|
c6bcda8b9d | ||
|
|
e2019033c1 | ||
|
|
58a7625be7 | ||
|
|
4b1f585fab | ||
|
|
33eb24f543 | ||
|
|
36e18dd5e1 | ||
|
|
6a954d7560 | ||
|
|
b8567b3f66 | ||
|
|
df11f5a0e7 | ||
|
|
db889ed3c9 | ||
|
|
a4e5ff3779 | ||
|
|
058526b612 | ||
|
|
78e21a0539 | ||
|
|
06b2f25a00 | ||
|
|
2ca14cd5eb | ||
|
|
95add2b815 | ||
|
|
2afc3a46d0 | ||
|
|
4d3abb0538 | ||
|
|
95843d5835 | ||
|
|
44046ee5df | ||
|
|
0713446e1e | ||
|
|
55821a893c | ||
|
|
433467b8c0 | ||
|
|
abaf4655e2 | ||
|
|
b417973361 | ||
|
|
e766845cb4 | ||
|
|
69740eb29b | ||
|
|
23306a3d10 | ||
|
|
f05b5e678c | ||
|
|
dc4c50923c | ||
|
|
46f277f2f6 | ||
|
|
a7519279f7 | ||
|
|
05103aeacf | ||
|
|
a1a3263727 | ||
|
|
0e7289304d | ||
|
|
9d3d2c84fe | ||
|
|
f677900061 | ||
|
|
ec45b40cb9 | ||
|
|
72660b1ed8 | ||
|
|
aa1214a6ba | ||
|
|
2e294eae2b | ||
|
|
42e8c3f172 | ||
|
|
25d2c3ebe7 | ||
|
|
d6a099e98c | ||
|
|
1773a505c0 | ||
|
|
e355e79482 | ||
|
|
bb0f212b87 | ||
|
|
780c8ede85 | ||
|
|
e622ba991f | ||
|
|
affbfa1e30 | ||
|
|
d02099db9a | ||
|
|
ae175496dd | ||
|
|
0248ed8778 | ||
|
|
43778acb9a | ||
|
|
ed4e0ffbda | ||
|
|
c9186547dd | ||
|
|
a27f752dcc | ||
|
|
00f9f8e0d0 | ||
|
|
1b3fd82f5c | ||
|
|
4004dcb23b | ||
|
|
6cb1778c6d | ||
|
|
0aca3f7b72 | ||
|
|
2bf872e446 | ||
|
|
939291c9c2 | ||
|
|
4c18f3b3e5 | ||
|
|
38268a187e | ||
|
|
317afd051b | ||
|
|
71e8baf929 | ||
|
|
e9143a2c0b | ||
|
|
0a192af532 | ||
|
|
be7c57507f | ||
|
|
e898462333 | ||
|
|
ca84c22cf2 | ||
|
|
fce7ba32a3 | ||
|
|
328d991305 | ||
|
|
826bac08ec | ||
|
|
d40a859de6 | ||
|
|
62d3317c93 | ||
|
|
6a1589c989 | ||
|
|
8ffdf088d4 | ||
|
|
d5e1ec851a | ||
|
|
4bc9901f16 | ||
|
|
ba4e49f5b2 | ||
|
|
ccee04c908 | ||
|
|
03b3f9d051 | ||
|
|
465d19b7f6 | ||
|
|
f51115a054 | ||
|
|
16eecd908e | ||
|
|
b86914fd37 | ||
|
|
2bb78d1451 | ||
|
|
cd6e0d7e0b | ||
|
|
5a8fe17184 | ||
|
|
2ec6f2d92f | ||
|
|
c1c97ad425 | ||
|
|
fad161a76b | ||
|
|
87f185bb85 | ||
|
|
ec7288bc17 | ||
|
|
cab0d6f027 | ||
|
|
8ec316da13 | ||
|
|
4d068b0e74 | ||
|
|
18ae6a473f | ||
|
|
99dbd3d4c5 | ||
|
|
780b947f51 | ||
|
|
b68c3a733a | ||
|
|
e0b905aef7 | ||
|
|
4b8fb01016 | ||
|
|
ce8592b29b | ||
|
|
46438255bf | ||
|
|
5996f1f1af | ||
|
|
906748cd16 | ||
|
|
80c608df4f | ||
|
|
a300a4be12 | ||
|
|
203f2ec7eb | ||
|
|
8c05b69e4e | ||
|
|
7b5a03ac8f | ||
|
|
4c6c80d880 | ||
|
|
8da3ae8a91 | ||
|
|
e67849a858 | ||
|
|
d38899321c | ||
|
|
6dfc04c2bf | ||
|
|
46fa7b484d | ||
|
|
76f4f741d8 | ||
|
|
8791645166 | ||
|
|
77571adf1f | ||
|
|
aa1705d6c5 | ||
|
|
c9fa699837 | ||
|
|
819532426b | ||
|
|
31f36b25f2 | ||
|
|
ac5bcfae12 | ||
|
|
399b8803b8 | ||
|
|
cd7a22a4de | ||
|
|
2759a5ee1d | ||
|
|
0752208c43 | ||
|
|
3d8f540110 | ||
|
|
774225e669 | ||
|
|
bbd283598d | ||
|
|
32c6babdb7 | ||
|
|
29e14042e7 | ||
|
|
a5f1fc38a8 | ||
|
|
6ad65508af | ||
|
|
2a45fdff1f | ||
|
|
d960ccd4e4 | ||
|
|
55510b18e6 | ||
|
|
0fd3d185b9 | ||
|
|
efd245daf5 | ||
|
|
27300e9fdf | ||
|
|
a44c241430 | ||
|
|
f1043be632 | ||
|
|
0d3a10cc26 | ||
|
|
e8781b0fc1 | ||
|
|
c687d40741 | ||
|
|
65f6fbb496 | ||
|
|
98f0f093e5 | ||
|
|
67e9f2fd35 | ||
|
|
98c22aa96d | ||
|
|
87fc81d0cc | ||
|
|
743479e817 | ||
|
|
7cc44a4ab1 | ||
|
|
3ab6d3cb37 | ||
|
|
4f8564ea5b | ||
|
|
2d7cba14db | ||
|
|
d8a2665867 | ||
|
|
46e9e82118 | ||
|
|
427f0afaaf | ||
|
|
b314b3a711 | ||
|
|
2442fc6ad7 | ||
|
|
650e71728a | ||
|
|
882359297d | ||
|
|
0d42597ba3 | ||
|
|
34b332b51b | ||
|
|
cc94955bb2 | ||
|
|
9a6c789f1a | ||
|
|
26595bd2d9 | ||
|
|
6b57ea8223 | ||
|
|
e05bc38461 | ||
|
|
0053ac67d9 | ||
|
|
c2efd301b5 | ||
|
|
44e4cd8cda | ||
|
|
0e6a5bddbb | ||
|
|
1e3d488784 | ||
|
|
c6df5eae3a | ||
|
|
0326d8576d | ||
|
|
92841a35e1 | ||
|
|
84b794ab38 | ||
|
|
8b0ef0b5a0 | ||
|
|
0efe2a01fe | ||
|
|
f5f3d78ed6 | ||
|
|
534df7c448 | ||
|
|
ec96415fda | ||
|
|
19b2c35180 | ||
|
|
a1985ddbeb | ||
|
|
2cb590a48b | ||
|
|
68d3ec7d77 | ||
|
|
a25c289a5a | ||
|
|
32dc06900c | ||
|
|
1c11bde14f | ||
|
|
f5f6478688 | ||
|
|
7d7e66cbe4 | ||
|
|
fb52816a11 | ||
|
|
246e2cad2e | ||
|
|
36ed431c7f | ||
|
|
5cec9facf8 | ||
|
|
d4062269c8 | ||
|
|
db71f4739c | ||
|
|
ff0e5d5e3b | ||
|
|
60f11b3671 | ||
|
|
e42a572c35 | ||
|
|
921bfbde86 | ||
|
|
b88c5d8b89 | ||
|
|
12d41d1314 | ||
|
|
c2a6eff91d | ||
|
|
7b3b37b1b3 | ||
|
|
d60bb4fc90 | ||
|
|
6006eeeb01 | ||
|
|
2cab3258bb |
2
.github/ISSUE_TEMPLATE/bb_crash_issues.yml
vendored
2
.github/ISSUE_TEMPLATE/bb_crash_issues.yml
vendored
@@ -31,7 +31,7 @@ body:
|
||||
description: |
|
||||
Do you have any logs or screenshots that can be useful?
|
||||
Crash logs in text are preffered over screenshots.
|
||||
DO NOT POST THE FULL CRASH LOG IN THE ISSUE BODY. DO NOT UPLOAD TEXT FILES. USE [GITHUB GIST](https://gist.github.com/), PASTEBIN, OR ANY SIMILAR SERVICE INSTEAD.
|
||||
If you have logs in text form please upload them to [Gist](https://gist.github.com/) or PasteBin and upload the link.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
|
||||
3
.github/README.md
vendored
3
.github/README.md
vendored
@@ -82,7 +82,8 @@ You can check the [authors](https://github.com/azerothcore/azerothcore-wotlk/blo
|
||||
|
||||
## License
|
||||
|
||||
- The AzerothCore source code is released under the [GNU GPL v2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
|
||||
- The new AzerothCore source components are released under the [GNU AGPL v3](https://www.gnu.org/licenses/agpl-3.0.en.html)
|
||||
- The old sources based on MaNGOS/TrinityCore are released under the [GNU GPL v2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
|
||||
|
||||
It's important to note that AzerothCore is not an official Blizzard Entertainment product, and it is not affiliated with or endorsed by World of Warcraft or Blizzard Entertainment. AzerothCore does not in any case sponsor nor support illegal public servers. If you use this project to run an illegal public server and not for testing and learning it is your own personal choice.
|
||||
|
||||
|
||||
2
.github/workflows/codestyle.yml
vendored
2
.github/workflows/codestyle.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
triage:
|
||||
runs-on: ubuntu-latest
|
||||
name: C++
|
||||
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
if: github.repository == 'mod-playerbots/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Setup python
|
||||
|
||||
2
.github/workflows/core-build-nopch.yml
vendored
2
.github/workflows/core-build-nopch.yml
vendored
@@ -37,7 +37,7 @@ jobs:
|
||||
CXX: g++-14
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: ${{ matrix.os }}-${{ matrix.compiler.CC }}-nopch
|
||||
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
if: github.repository == 'mod-playerbots/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ./.github/actions/linux-build
|
||||
|
||||
6
.github/workflows/core-build-pch.yml
vendored
6
.github/workflows/core-build-pch.yml
vendored
@@ -32,8 +32,10 @@ jobs:
|
||||
CC: clang-18
|
||||
CXX: clang++-18
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: ${{ matrix.os }}-${{ matrix.compiler.CC }}-pch
|
||||
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
name: ${{ matrix.os }}-${{ matrix.compiler }}-pch
|
||||
env:
|
||||
COMPILER: ${{ matrix.compiler }}
|
||||
if: github.repository == 'mod-playerbots/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ./.github/actions/linux-build
|
||||
|
||||
100
.github/workflows/core-build-playerbots.yml
vendored
Normal file
100
.github/workflows/core-build-playerbots.yml
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
# This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform.
|
||||
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml
|
||||
name: ubuntu-build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "Playerbot" ]
|
||||
pull_request:
|
||||
branches: [ "Playerbot" ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
# Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable.
|
||||
fail-fast: false
|
||||
matrix:
|
||||
# the result of the matrix will be the combination of all attributes, so we get os*compiler builds
|
||||
include:
|
||||
- os: ubuntu-22.04
|
||||
c_compiler: clang
|
||||
cpp_compiler: clang++
|
||||
build_type: Release
|
||||
- os: ubuntu-22.04
|
||||
c_compiler: gcc
|
||||
cpp_compiler: g++
|
||||
build_type: Release
|
||||
- os: ubuntu-24.04
|
||||
c_compiler: gcc
|
||||
cpp_compiler: g++
|
||||
build_type: Release
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: ${{ matrix.os }}-${{ matrix.cpp_compiler }}
|
||||
|
||||
steps:
|
||||
- name: Checkout AzerothCore
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set reusable strings
|
||||
# Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file.
|
||||
id: strings
|
||||
shell: bash
|
||||
run: |
|
||||
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"
|
||||
|
||||
# - name: Clone Playerbot Module
|
||||
# run: git clone --depth=1 --branch=master https://github.com/mod-playerbots/mod-playerbots.git modules/mod-playerbots
|
||||
|
||||
- name: Checkout Playerbot Module
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: 'mod-playerbots/mod-playerbots'
|
||||
#ref: 'feature/core_update_10_2025' #used on core merge conflicts builds
|
||||
path: 'modules/mod-playerbots'
|
||||
|
||||
- name: Install Requirements
|
||||
run: sudo apt-get update && sudo apt-get install git cmake make gcc g++ clang libmysqlclient-dev libssl-dev libbz2-dev libreadline-dev libncurses-dev mysql-server libboost-all-dev
|
||||
|
||||
# - name: Cache
|
||||
# uses: actions/cache@v3
|
||||
# with:
|
||||
# path: var/ccache
|
||||
# key: ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ matrix.modules }}-modules:${{ github.ref }}:${{ github.sha }}
|
||||
# restore-keys: |
|
||||
# ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ matrix.modules }}-modules:${{ github.ref }}
|
||||
# ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ matrix.modules }}-modules
|
||||
|
||||
# - name: Configure OS
|
||||
# run: source ./acore.sh install-deps
|
||||
# env:
|
||||
# CONTINUOUS_INTEGRATION: true
|
||||
|
||||
# - name: Create conf/config.sh
|
||||
# run: source ./apps/ci/ci-conf-core.sh
|
||||
|
||||
# - name: Process pending sql
|
||||
# run: bash bin/acore-db-pendings
|
||||
|
||||
# - name: Build
|
||||
# run: source ./apps/ci/ci-compile.sh
|
||||
|
||||
- name: Configure CMake
|
||||
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
|
||||
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
|
||||
run: >
|
||||
cmake -B ${{ steps.strings.outputs.build-output-dir }}
|
||||
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
|
||||
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }}
|
||||
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
|
||||
-S ${{ github.workspace }}
|
||||
|
||||
- name: Build
|
||||
# Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
|
||||
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }}
|
||||
|
||||
# - name: Test
|
||||
# working-directory: ${{ steps.strings.outputs.build-output-dir }}
|
||||
# # Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
|
||||
# # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
|
||||
# run: ctest --build-config ${{ matrix.build_type }}
|
||||
99
.github/workflows/core-build.yml
vendored
Normal file
99
.github/workflows/core-build.yml
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
# This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform.
|
||||
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml
|
||||
name: ubuntu-build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "Playerbot" ]
|
||||
pull_request:
|
||||
branches: [ "Playerbot" ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
# Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable.
|
||||
fail-fast: false
|
||||
matrix:
|
||||
# the result of the matrix will be the combination of all attributes, so we get os*compiler builds
|
||||
include:
|
||||
- os: ubuntu-22.04
|
||||
c_compiler: clang
|
||||
cpp_compiler: clang++
|
||||
build_type: Release
|
||||
- os: ubuntu-22.04
|
||||
c_compiler: gcc
|
||||
cpp_compiler: g++
|
||||
build_type: Release
|
||||
- os: ubuntu-24.04
|
||||
c_compiler: gcc
|
||||
cpp_compiler: g++
|
||||
build_type: Release
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: ${{ matrix.os }}-${{ matrix.cpp_compiler }}
|
||||
|
||||
steps:
|
||||
- name: Checkout AzerothCore
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set reusable strings
|
||||
# Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file.
|
||||
id: strings
|
||||
shell: bash
|
||||
run: |
|
||||
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"
|
||||
|
||||
# - name: Clone Playerbot Module
|
||||
# run: git clone --depth=1 --branch=master https://github.com/mod-playerbots/mod-playerbots.git modules/mod-playerbots
|
||||
|
||||
# - name: Checkout Playerbot Module
|
||||
# uses: actions/checkout@v3
|
||||
# with:
|
||||
# repository: 'mod-playerbots/mod-playerbots'
|
||||
# path: 'modules/mod-playerbots'
|
||||
|
||||
- name: Install Requirements
|
||||
run: sudo apt-get update && sudo apt-get install git cmake make gcc g++ clang libmysqlclient-dev libssl-dev libbz2-dev libreadline-dev libncurses-dev mysql-server libboost-all-dev
|
||||
|
||||
# - name: Cache
|
||||
# uses: actions/cache@v3
|
||||
# with:
|
||||
# path: var/ccache
|
||||
# key: ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ matrix.modules }}-modules:${{ github.ref }}:${{ github.sha }}
|
||||
# restore-keys: |
|
||||
# ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ matrix.modules }}-modules:${{ github.ref }}
|
||||
# ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ matrix.modules }}-modules
|
||||
|
||||
# - name: Configure OS
|
||||
# run: source ./acore.sh install-deps
|
||||
# env:
|
||||
# CONTINUOUS_INTEGRATION: true
|
||||
|
||||
# - name: Create conf/config.sh
|
||||
# run: source ./apps/ci/ci-conf-core.sh
|
||||
|
||||
# - name: Process pending sql
|
||||
# run: bash bin/acore-db-pendings
|
||||
|
||||
# - name: Build
|
||||
# run: source ./apps/ci/ci-compile.sh
|
||||
|
||||
- name: Configure CMake
|
||||
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
|
||||
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
|
||||
run: >
|
||||
cmake -B ${{ steps.strings.outputs.build-output-dir }}
|
||||
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
|
||||
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }}
|
||||
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
|
||||
-S ${{ github.workspace }}
|
||||
|
||||
- name: Build
|
||||
# Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
|
||||
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }}
|
||||
|
||||
# - name: Test
|
||||
# working-directory: ${{ steps.strings.outputs.build-output-dir }}
|
||||
# # Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
|
||||
# # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
|
||||
# run: ctest --build-config ${{ matrix.build_type }}
|
||||
2
.github/workflows/core_modules_build.yml
vendored
2
.github/workflows/core_modules_build.yml
vendored
@@ -39,7 +39,7 @@ jobs:
|
||||
CXX: clang++-18
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: ${{ matrix.os }}-${{ matrix.compiler.CC }}-nopch-modules
|
||||
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
if: github.repository == 'mod-playerbots/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
# This script installs a general list of modules to compile with
|
||||
|
||||
4
.github/workflows/docker_build.yml
vendored
4
.github/workflows/docker_build.yml
vendored
@@ -16,13 +16,13 @@ env:
|
||||
COMPOSE_DOCKER_CLI_BUILD: 1
|
||||
DOCKER_BUILDKIT: 1
|
||||
RUNNING_ON_PRIMARY_BRANCH: |
|
||||
${{ (github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master') && 'true' || 'false' }}
|
||||
${{ (github.repository == 'mod-playerbots/azerothcore-wotlk' && github.ref_name == 'master') && 'true' || 'false' }}
|
||||
|
||||
jobs:
|
||||
build-containers:
|
||||
runs-on: "ubuntu-latest"
|
||||
if: |
|
||||
github.repository == 'azerothcore/azerothcore-wotlk'
|
||||
github.repository == 'mod-playerbots/azerothcore-wotlk'
|
||||
&& !github.event.pull_request.draft
|
||||
&& (github.ref_name == 'master' || contains(github.event.pull_request.labels.*.name, 'run-build') || github.event.label.name == 'run-build')
|
||||
steps:
|
||||
|
||||
11
.github/workflows/macos_build.yml
vendored
11
.github/workflows/macos_build.yml
vendored
@@ -1,12 +1,9 @@
|
||||
name: macos-build
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
branches: [ "Playerbot" ]
|
||||
pull_request:
|
||||
types:
|
||||
- labeled
|
||||
- synchronize
|
||||
branches: [ "Playerbot" ]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }})
|
||||
@@ -25,10 +22,6 @@ jobs:
|
||||
- macos-14
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: ${{ matrix.os }}
|
||||
if: |
|
||||
github.repository == 'azerothcore/azerothcore-wotlk'
|
||||
&& !github.event.pull_request.draft
|
||||
&& (github.ref == 'refs/heads/master' || contains(github.event.pull_request.labels.*.name, 'run-build') || github.event.label.name == 'run-build')
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Cache
|
||||
|
||||
8
.github/workflows/tools_build.yml
vendored
8
.github/workflows/tools_build.yml
vendored
@@ -25,9 +25,11 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: ${{ matrix.os }}-${{ matrix.compiler.CC }}
|
||||
if: |
|
||||
github.repository == 'azerothcore/azerothcore-wotlk'
|
||||
&& !github.event.pull_request.draft
|
||||
&& (github.ref == 'refs/heads/master' || contains(github.event.pull_request.labels.*.name, 'run-build') || github.event.label.name == 'run-build')
|
||||
github.repository == 'mod-playerbots/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
&& (
|
||||
contains(github.event.pull_request.labels.*.name, 'run-build')
|
||||
|| github.event.label.name == 'run-build'
|
||||
)
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ./.github/actions/linux-build
|
||||
|
||||
11
.github/workflows/windows_build.yml
vendored
11
.github/workflows/windows_build.yml
vendored
@@ -1,12 +1,9 @@
|
||||
name: windows-build
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
branches: [ "Playerbot" ]
|
||||
pull_request:
|
||||
types:
|
||||
- labeled
|
||||
- synchronize
|
||||
branches: [ "Playerbot" ]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }})
|
||||
@@ -22,10 +19,6 @@ jobs:
|
||||
name: ${{ matrix.os }}
|
||||
env:
|
||||
BOOST_ROOT: C:\local\boost_1_82_0
|
||||
if: |
|
||||
github.repository == 'azerothcore/azerothcore-wotlk'
|
||||
&& !github.event.pull_request.draft
|
||||
&& (github.ref == 'refs/heads/master' || contains(github.event.pull_request.labels.*.name, 'run-build') || github.event.label.name == 'run-build')
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: ccache
|
||||
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -58,6 +58,8 @@ CMakeLists.txt.user
|
||||
#
|
||||
/.settings/
|
||||
/.externalToolBuilders/*
|
||||
/.vs
|
||||
/out
|
||||
# exclude in all levels
|
||||
nbproject/
|
||||
.sync.ffs_db
|
||||
@@ -102,3 +104,5 @@ local.properties
|
||||
# !modules/yourmodule
|
||||
#
|
||||
# ==================
|
||||
.cache
|
||||
compile_commands.json
|
||||
5
AUTHORS
5
AUTHORS
@@ -1,5 +1,10 @@
|
||||
# List of AUTHORS who contributed over time to the AzerothCore project
|
||||
|
||||
## Warning
|
||||
The code of AzerothCore is shipped as it is without any form of warranty,
|
||||
and - except for third party libraries licensed under the AGPL 3,
|
||||
which you can read from the file "LICENSE".
|
||||
|
||||
## Point of current development
|
||||
The project is currently hosted at https://www.azerothcore.org/ and developed under https://github.com/azerothcore
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "azerothcore-wotlk",
|
||||
"version": "14.0.0-dev",
|
||||
"license": "GPL2"
|
||||
"license": "AGPL3"
|
||||
}
|
||||
|
||||
@@ -22,8 +22,7 @@ if [ ! -d "$mysql_include_path" ]; then
|
||||
fi
|
||||
|
||||
time cmake ../../../ \
|
||||
-DTOOLS=1 \
|
||||
-DBUILD_TESTING=1 \
|
||||
-DTOOLS_BUILD=all \
|
||||
-DSCRIPTS=static \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DMYSQL_ADD_INCLUDE_PATH=$mysql_include_path \
|
||||
@@ -33,9 +32,6 @@ time cmake ../../../ \
|
||||
-DOPENSSL_INCLUDE_DIR="$OPENSSL_ROOT_DIR/include" \
|
||||
-DOPENSSL_SSL_LIBRARIES="$OPENSSL_ROOT_DIR/lib/libssl.dylib" \
|
||||
-DOPENSSL_CRYPTO_LIBRARIES="$OPENSSL_ROOT_DIR/lib/libcrypto.dylib" \
|
||||
-DWITH_WARNINGS=1 \
|
||||
-DCMAKE_C_FLAGS="-Werror" \
|
||||
-DCMAKE_CXX_FLAGS="-Werror" \
|
||||
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
|
||||
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
||||
-DUSE_SCRIPTPCH=0 \
|
||||
|
||||
@@ -258,4 +258,4 @@ COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build \
|
||||
/azerothcore/env/dist/bin/vmap4_assembler /azerothcore/env/dist/bin/vmap4_assembler
|
||||
|
||||
COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build \
|
||||
/azerothcore/env/dist/bin/vmap4_extractor /azerothcore/env/dist/bin/vmap4_extractor
|
||||
/azerothcore/env/dist/bin/vmap4_extractor /azerothcore/env/dist/bin/vmap4_extractor
|
||||
2
conf/dist/config.cmake
vendored
2
conf/dist/config.cmake
vendored
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (C) 2016+ AzerothCore <www.azerothcore.org>
|
||||
# Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE
|
||||
# Copyright (C) 2021+ WarheadCore <https://github.com/WarheadCore>
|
||||
#
|
||||
# This file is free software; as a special exception the author gives
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
-- DB update 2025_11_09_05 -> 2025_11_10_00
|
||||
--
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 24539) AND (`source_type` = 0) AND (`id` IN (5));
|
||||
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`, `event_param6`, `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
|
||||
(24539, 0, 5, 0, 2, 1, 100, 513, 0, 50, 0, 0, 0, 0, 80, 2453900, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, '"Silvermoon" Harry - Between 0-50% Health - Run Script (Phase 1) (No Repeat)');
|
||||
@@ -1,4 +0,0 @@
|
||||
-- DB update 2025_11_10_00 -> 2025_11_10_01
|
||||
--
|
||||
UPDATE `quest_template` SET `RewardFactionValue1` = 5 WHERE (`ID` = 11472);
|
||||
UPDATE `quest_template` SET `RewardFactionValue1` = 5, `RewardFactionOverride1` = 0 WHERE (`ID` = 11945);
|
||||
@@ -1,4 +0,0 @@
|
||||
-- DB update 2025_11_10_01 -> 2025_11_10_02
|
||||
--
|
||||
DELETE FROM `game_event_gameobject` WHERE `eventEntry`=1 AND `guid`=5;
|
||||
INSERT INTO `game_event_gameobject` (`eventEntry`, `guid`) VALUES(1, 5);
|
||||
@@ -1,15 +0,0 @@
|
||||
-- DB update 2025_11_10_02 -> 2025_11_10_03
|
||||
--
|
||||
-- Increase grid searches to 60 from 40
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 2572900) AND (`source_type` = 9) AND (`id` IN (2, 5));
|
||||
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`, `event_param6`, `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
|
||||
(2572900, 9, 2, 0, 0, 0, 100, 0, 8000, 8000, 0, 0, 0, 0, 1, 7, 0, 0, 0, 0, 0, 19, 25749, 60, 0, 0, 0, 0, 0, 0, 'Shadowstalker Getry - Actionlist - Say Line 7'),
|
||||
(2572900, 9, 5, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 19, 25749, 60, 0, 0, 0, 0, 0, 0, 'Shadowstalker Getry - Actionlist - Despawn Instant');
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 25618) AND (`source_type` = 0) AND (`id` IN (3, 4));
|
||||
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`, `event_param6`, `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
|
||||
(25618, 0, 3, 4, 6, 0, 100, 512, 0, 0, 0, 0, 0, 0, 15, 11705, 0, 0, 0, 0, 0, 18, 60, 0, 0, 0, 0, 0, 0, 0, 'Varidus the Flenser - On Just Died - Quest Credit \'Foolish Endeavors\''),
|
||||
(25618, 0, 4, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 25729, 60, 0, 0, 0, 0, 0, 0, 'Varidus the Flenser - On Just Died - Set Data 1 1');
|
||||
-- Increase despawn time from 3 to 4 minutes
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 2561800) AND (`source_type` = 9) AND (`id` IN (25));
|
||||
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`, `event_param6`, `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
|
||||
(2561800, 9, 25, 0, 0, 0, 100, 0, 240000, 240000, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 19, 25729, 100, 0, 0, 0, 0, 0, 0, 'Varidus the Flenser - Actionlist - Despawn Instant');
|
||||
@@ -1,4 +0,0 @@
|
||||
-- DB update 2025_11_10_03 -> 2025_11_11_00
|
||||
--
|
||||
DELETE FROM `areatrigger_scripts` WHERE `entry`=5338;
|
||||
INSERT INTO `areatrigger_scripts` (`entry`, `ScriptName`) VALUES(5338, 'at_last_rites');
|
||||
@@ -1,10 +0,0 @@
|
||||
-- DB update 2025_11_11_00 -> 2025_11_11_01
|
||||
--
|
||||
-- Update comments, remove action On Init AI set combat distance to 100
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 32767) AND (`source_type` = 0) AND (`id` IN (0, 1, 2, 3, 4, 5));
|
||||
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`, `event_param6`, `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
|
||||
(32767, 0, 0, 0, 1, 0, 100, 0, 5000, 10000, 3000, 6000, 0, 0, 49, 0, 0, 0, 0, 0, 0, 19, 31406, 80, 0, 0, 0, 0, 0, 0, 'Frostbrood Sentry - Out of Combat - Start Attacking'),
|
||||
(32767, 0, 1, 0, 1, 0, 100, 0, 5000, 10000, 3000, 6000, 0, 0, 49, 0, 0, 0, 0, 0, 0, 19, 32512, 80, 0, 0, 0, 0, 0, 0, 'Frostbrood Sentry - Out of Combat - Start Attacking'),
|
||||
(32767, 0, 2, 0, 1, 0, 100, 0, 5000, 10000, 3000, 6000, 0, 0, 49, 0, 0, 0, 0, 0, 0, 19, 31838, 80, 0, 0, 0, 0, 0, 0, 'Frostbrood Sentry - Out of Combat - Start Attacking'),
|
||||
(32767, 0, 3, 0, 1, 0, 100, 0, 5000, 10000, 3000, 6000, 0, 0, 49, 0, 0, 0, 0, 0, 0, 19, 32513, 80, 0, 0, 0, 0, 0, 0, 'Frostbrood Sentry - Out of Combat - Start Attacking'),
|
||||
(32767, 0, 4, 0, 9, 0, 100, 0, 0, 0, 2000, 3000, 0, 40, 11, 60542, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Frostbrood Sentry - Within 0-40 Range - Cast \'Bitter Blast\'');
|
||||
@@ -1,45 +0,0 @@
|
||||
-- DB update 2025_11_11_01 -> 2025_11_11_02
|
||||
-- Update gameobject 'Wild Mustard' with sniffed values
|
||||
-- updated spawns
|
||||
DELETE FROM `gameobject` WHERE (`id` IN (192827)) AND (`guid` IN (100121, 100244, 100245, 100246, 100247, 100248, 100249, 100411, 100412, 57471, 57472, 57473, 57475, 57476, 57477, 57478, 57479, 57480, 57481, 57482, 57483));
|
||||
INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`, `Comment`) VALUES
|
||||
(100121, 192827, 571, 0, 0, 1, 1, 5985.08349609375, 664.72296142578125, 642.370849609375, 4.799657344818115234, 0, 0, -0.67558956146240234, 0.737277925014495849, 120, 255, 1, "", 45942, NULL),
|
||||
(100244, 192827, 571, 0, 0, 1, 1, 5934.06103515625, 660.3663330078125, 642.92462158203125, 5.6897735595703125, 0, 0, -0.29237174987792968, 0.956304728984832763, 120, 255, 1, "", 46158, NULL),
|
||||
(100245, 192827, 571, 0, 0, 1, 1, 5846.48681640625, 490.76507568359375, 657.25555419921875, 5.515241622924804687, 0, 0, -0.37460613250732421, 0.927184045314788818, 120, 255, 1, "", 46158, NULL),
|
||||
(100246, 192827, 571, 0, 0, 1, 1, 5831.59619140625, 763.8204345703125, 640.30194091796875, 1.762782454490661621, 0, 0, 0.771624565124511718, 0.636078238487243652, 120, 255, 1, "", 46248, NULL),
|
||||
(100247, 192827, 571, 0, 0, 1, 1, 5767.6494140625, 770.37530517578125, 640.4595947265625, 4.537858963012695312, 0, 0, -0.76604366302490234, 0.642788589000701904, 120, 255, 1, "", 46248, NULL),
|
||||
(100248, 192827, 571, 0, 0, 1, 1, 5675.63232421875, 737.062744140625, 641.646484375, 6.265733242034912109, 0, 0, -0.00872611999511718, 0.999961912631988525, 120, 255, 1, "", 46158, NULL),
|
||||
(100249, 192827, 571, 0, 0, 1, 1, 5666.18994140625, 708.8232421875, 641.72613525390625, 4.136432647705078125, 0, 0, -0.87881660461425781, 0.477159708738327026, 120, 255, 1, "", 46248, NULL),
|
||||
(100411, 192827, 571, 0, 0, 1, 1, 5781.63525390625, 755.59454345703125, 640.60955810546875, 2.478367090225219726, 0, 0, 0.94551849365234375, 0.325568377971649169, 120, 255, 1, "", 45327, NULL),
|
||||
(100412, 192827, 571, 0, 0, 1, 1, 5852.45068359375, 453.083984375, 657.54180908203125, 4.956737518310546875, 0, 0, -0.61566066741943359, 0.788011372089385986, 120, 255, 1, "", 46158, NULL),
|
||||
(57471, 192827, 571, 0, 0, 1, 1, 5647.09130859375, 735.65777587890625, 641.70587158203125, 0.349065244197845458, 0, 0, 0.173647880554199218, 0.984807789325714111, 120, 255, 1, "", 46368, NULL),
|
||||
(57472, 192827, 571, 0, 0, 1, 1, 5638.42333984375, 752.54632568359375, 641.62371826171875, 4.188792228698730468, 0, 0, -0.86602497100830078, 0.50000077486038208, 120, 255, 1, "", 46158, NULL),
|
||||
(57473, 192827, 571, 0, 0, 1, 1, 5752.2802734375, 780.19390869140625, 640.46044921875, 4.852017402648925781, 0, 0, -0.65605831146240234, 0.754710197448730468, 120, 255, 1, "", 46248, NULL),
|
||||
(57475, 192827, 571, 0, 0, 1, 1, 5989.67138671875, 648.40582275390625, 642.70916748046875, 5.235987663269042968, 0, 0, -0.5, 0.866025388240814208, 120, 255, 1, "", 46158, NULL),
|
||||
(57476, 192827, 571, 0, 0, 1, 1, 5756.24072265625, 758.174072265625, 642.0474853515625, 1.884953022003173828, 0, 0, 0.809016227722167968, 0.587786316871643066, 120, 255, 1, "", 46248, NULL),
|
||||
(57477, 192827, 571, 0, 0, 1, 1, 5865.57666015625, 774.6185302734375, 640.53057861328125, 3.194002151489257812, 0, 0, -0.99965667724609375, 0.026201646775007247, 120, 255, 1, "", 45327, NULL),
|
||||
(57478, 192827, 571, 0, 0, 1, 1, 5824.08251953125, 493.727813720703125, 656.93402099609375, 4.729844093322753906, 0, 0, -0.70090866088867187, 0.713251054286956787, 120, 255, 1, "", 46158, NULL),
|
||||
(57479, 192827, 571, 0, 0, 1, 1, 5797.42138671875, 480.68121337890625, 657.57318115234375, 0.453785061836242675, 0, 0, 0.224950790405273437, 0.974370121955871582, 120, 255, 1, "", 46158, NULL),
|
||||
(57480, 192827, 571, 0, 0, 1, 1, 5826.56494140625, 738.85418701171875, 640.9478759765625, 4.363324165344238281, 0, 0, -0.81915187835693359, 0.573576688766479492, 120, 255, 1, "", 46158, NULL),
|
||||
(57481, 192827, 571, 0, 0, 1, 1, 5950.203125, 696.5841064453125, 641.10589599609375, 5.166176319122314453, 0, 0, -0.52991867065429687, 0.84804844856262207, 120, 255, 1, "", 45327, NULL),
|
||||
(57482, 192827, 571, 0, 0, 1, 1, 5810.0791015625, 620.439208984375, 647.71026611328125, 0.034906249493360519, 0, 0, 0.017452239990234375, 0.999847710132598876, 120, 255, 1, "", 45327, NULL),
|
||||
(57483, 192827, 571, 0, 0, 1, 1, 5804.63623046875, 661.78125, 647.7073974609375, 4.014260292053222656, 0, 0, -0.90630722045898437, 0.422619491815567016, 120, 255, 1, "", 45327, NULL);
|
||||
|
||||
-- new spawns
|
||||
DELETE FROM `gameobject` WHERE (`id` IN (192827)) AND (`guid` BETWEEN 1747 AND 1761);
|
||||
INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`, `Comment`) VALUES
|
||||
(1747, 192827, 571, 0, 0, 1, 1, 5629.560546875, 725.41082763671875, 641.70721435546875, 2.356194972991943359, 0, 0, 0.923879623413085937, 0.382683247327804565, 120, 255, 1, "", 46158, NULL),
|
||||
(1748, 192827, 571, 0, 0, 1, 1, 5657.634765625, 742.97552490234375, 641.5999755859375, 4.9218292236328125, 0, 0, -0.62932014465332031, 0.77714616060256958, 120, 255, 1, "", 46158, NULL),
|
||||
(1749, 192827, 571, 0, 0, 1, 1, 5731.98681640625, 780.482666015625, 641.66925048828125, 3.926995515823364257, 0, 0, -0.92387866973876953, 0.38268551230430603, 120, 255, 1, "", 46158, NULL),
|
||||
(1750, 192827, 571, 0, 0, 1, 1, 5742.24658203125, 770.8905029296875, 641.83380126953125, 5.567600727081298828, 0, 0, -0.35020732879638671, 0.936672210693359375, 120, 255, 1, "", 46158, NULL),
|
||||
(1751, 192827, 571, 0, 0, 1, 1, 5778.017578125, 463.560821533203125, 657.8570556640625, 4.677483558654785156, 0, 0, -0.71933937072753906, 0.694658815860748291, 120, 255, 1, "", 46158, NULL),
|
||||
(1752, 192827, 571, 0, 0, 1, 1, 5784.9462890625, 631.62530517578125, 647.66748046875, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 120, 255, 1, "", 46158, NULL),
|
||||
(1753, 192827, 571, 0, 0, 1, 1, 5787.90966796875, 646.6329345703125, 647.23504638671875, 4.59021615982055664, 0, 0, -0.74895572662353515, 0.662620067596435546, 120, 255, 1, "", 46158, NULL),
|
||||
(1754, 192827, 571, 0, 0, 1, 1, 5803.4375, 745.01226806640625, 640.465087890625, 6.248279094696044921, 0, 0, -0.01745223999023437, 0.999847710132598876, 120, 255, 1, "", 45327, NULL),
|
||||
(1755, 192827, 571, 0, 0, 1, 1, 5822.33203125, 652.23858642578125, 647.3056640625, 4.537858963012695312, 0, 0, -0.76604366302490234, 0.642788589000701904, 120, 255, 1, "", 45327, NULL),
|
||||
(1756, 192827, 571, 0, 0, 1, 1, 5823.8359375, 637.7987060546875, 647.76348876953125, 3.001946926116943359, 0, 0, 0.997563362121582031, 0.069766148924827575, 120, 255, 1, "", 45327, NULL),
|
||||
(1757, 192827, 571, 0, 0, 1, 1, 5842.37451171875, 750.66656494140625, 640.692626953125, 1.727874636650085449, 0, 0, 0.760405540466308593, 0.649448513984680175, 120, 255, 1, "", 46158, NULL),
|
||||
(1758, 192827, 571, 0, 0, 1, 1, 5845.6962890625, 463.094573974609375, 657.62591552734375, 1.623155713081359863, 0, 0, 0.725374221801757812, 0.688354730606079101, 120, 255, 1, "", 46158, NULL),
|
||||
(1759, 192827, 571, 0, 0, 1, 1, 5847.68603515625, 772.54559326171875, 640.36090087890625, 1.256635904312133789, 0, 0, 0.587784767150878906, 0.809017360210418701, 120, 255, 1, "", 46158, NULL),
|
||||
(1760, 192827, 571, 0, 0, 1, 1, 5934.53369140625, 682.52099609375, 642.21148681640625, 3.682650327682495117, 0, 0, -0.96362972259521484, 0.26724100112915039, 120, 255, 1, "", 45327, NULL),
|
||||
(1761, 192827, 571, 0, 0, 1, 1, 5972.26416015625, 648.7425537109375, 642.43182373046875, 1.919861555099487304, 0, 0, 0.819151878356933593, 0.573576688766479492, 120, 255, 1, "", 46158, NULL);
|
||||
@@ -1,21 +0,0 @@
|
||||
-- DB update 2025_11_11_02 -> 2025_11_11_03
|
||||
--
|
||||
SET @ARGENT_CRUSADE := 1106;
|
||||
SET @KIRIN_TOR := 1090;
|
||||
SET @KNIGHTS_OF_THE_EBON_BLADE := 1098;
|
||||
SET @WYRMREST_ACCORD := 1091;
|
||||
SET @ALLIANCE_VANGUARD := 1037;
|
||||
SET @HORDE_EXPEDITION := 1052;
|
||||
SET @SONS_OF_HODIR := 1119;
|
||||
|
||||
UPDATE `quest_template` SET `RewardFactionOverride1`=2200000 WHERE `ID` IN (12915, 12956);
|
||||
UPDATE `quest_template` SET `RewardFactionOverride1`=0 WHERE `ID` IN (12924, 12975, 12976, 12977, 12981, 12985, 12987, 12994, 13001, 13003, 13010, 13011, 13046, 13108, 13420, 13421, 13559);
|
||||
UPDATE `quest_template` SET `RewardFactionID1` = 0, `RewardFactionValue1` = 0, `RewardFactionOverride1` = 0 WHERE `ID` IN (12966, 12967);
|
||||
|
||||
UPDATE `reputation_reward_rate` SET `quest_rate`=1.3,`quest_daily_rate`=1.3,`quest_weekly_rate`=1.3,`quest_monthly_rate`=1.3,`quest_repeatable_rate`=1.3 WHERE `faction` IN (@ARGENT_CRUSADE, @KNIGHTS_OF_THE_EBON_BLADE, @KIRIN_TOR, @WYRMREST_ACCORD);
|
||||
|
||||
DELETE FROM `reputation_reward_rate` WHERE `faction` IN (@SONS_OF_HODIR, @ALLIANCE_VANGUARD, @HORDE_EXPEDITION);
|
||||
INSERT INTO `reputation_reward_rate` (`faction`, `quest_rate`, `quest_daily_rate`, `quest_weekly_rate`, `quest_monthly_rate`, `quest_repeatable_rate`, `creature_rate`, `spell_rate`) VALUES
|
||||
(@SONS_OF_HODIR, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3),
|
||||
(@ALLIANCE_VANGUARD, 1.0, 1.0, 1.0, 1.0, 1.0, 1.3, 1.3),
|
||||
(@HORDE_EXPEDITION, 1.0, 1.0, 1.0, 1.0, 1.0, 1.3, 1.3);
|
||||
@@ -1,4 +0,0 @@
|
||||
-- DB update 2025_11_11_03 -> 2025_11_12_00
|
||||
--
|
||||
-- remove `DISABLE_MOVE`
|
||||
UPDATE `creature_template` SET `unit_flags` = `unit_flags` & ~4 WHERE (`entry` = 28998);
|
||||
@@ -1,10 +0,0 @@
|
||||
-- DB update 2025_11_12_00 -> 2025_11_12_01
|
||||
--
|
||||
-- Unliving Chocker
|
||||
UPDATE `conditions` SET `ConditionTypeOrReference` = 8, `NegativeCondition` = 1, `Comment` = 'must not have completed quest \'Cleansing Drak\'Tharon\'' WHERE (`SourceTypeOrReferenceId` = 1) AND (`SourceGroup` = 28519) AND (`SourceEntry` = 38660) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 14) AND (`ConditionTarget` = 0) AND (`ConditionValue1` = 12238) AND (`ConditionValue2` = 0) AND (`ConditionValue3` = 0);
|
||||
-- Writhing Choker
|
||||
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 1) AND (`SourceGroup` = 28519) AND (`SourceEntry` = 38673) AND (`SourceId` = 0) AND (`ElseGroup` = 0);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(1, 28519, 38673, 0, 0, 8, 0, 12238, 0, 0, 0, 0, 0, '', 'must have completed quest \'Cleansing Drak\'Tharon\''),
|
||||
(1, 28519, 38673, 0, 0, 2, 0, 38660, 1, 1, 1, 0, 0, '', 'must not have item \'Unliving Chocker\''),
|
||||
(1, 28519, 38673, 0, 0, 8, 0, 12631, 0, 0, 1, 0, 0, '', 'must not have completed quest \'An Invitation, of Sorts...\'');
|
||||
@@ -1,64 +0,0 @@
|
||||
-- DB update 2025_11_12_01 -> 2025_11_12_02
|
||||
--
|
||||
SET @PLANE := 28710;
|
||||
SET @PILOT := 28646;
|
||||
UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='', `speed_walk`=10, `speed_run`=1 WHERE `entry`=@PLANE;
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 28710);
|
||||
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`, `event_param6`, `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
|
||||
(28710, 0, 1, 0, 60, 0, 100, 513, 1000, 1000, 0, 0, 0, 0, 53, 1, 28710, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vic\'s Flying Machine - On Update - Start Waypoint Path 28710 (No Repeat)'),
|
||||
(28710, 0, 2, 0, 40, 0, 100, 512, 5, 28710, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, 28646, 0, 0, 0, 0, 0, 0, 0, 'Vic\'s Flying Machine - On Point 5 of Path 28710 Reached - Say Line 0'),
|
||||
(28710, 0, 3, 0, 40, 0, 100, 512, 11, 28710, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 19, 28646, 0, 0, 0, 0, 0, 0, 0, 'Vic\'s Flying Machine - On Point 11 of Path 28710 Reached - Say Line 1'),
|
||||
(28710, 0, 4, 0, 40, 0, 100, 512, 12, 28710, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 19, 28646, 0, 0, 0, 0, 0, 0, 0, 'Vic\'s Flying Machine - On Point 12 of Path 28710 Reached - Say Line 2'),
|
||||
(28710, 0, 5, 0, 40, 0, 100, 512, 14, 28710, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 19, 28646, 0, 0, 0, 0, 0, 0, 0, 'Vic\'s Flying Machine - On Point 14 of Path 28710 Reached - Say Line 3'),
|
||||
(28710, 0, 6, 0, 40, 0, 100, 512, 15, 28710, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 19, 28646, 0, 0, 0, 0, 0, 0, 0, 'Vic\'s Flying Machine - On Point 15 of Path 28710 Reached - Say Line 4'),
|
||||
(28710, 0, 7, 0, 40, 0, 100, 512, 17, 28710, 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 19, 28646, 0, 0, 0, 0, 0, 0, 0, 'Vic\'s Flying Machine - On Point 17 of Path 28710 Reached - Say Line 5'),
|
||||
(28710, 0, 8, 0, 40, 0, 100, 512, 21, 28710, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 19, 28646, 0, 0, 0, 0, 0, 0, 0, 'Vic\'s Flying Machine - On Point 21 of Path 28710 Reached - Say Line 6'),
|
||||
(28710, 0, 9, 10, 40, 0, 100, 512, 25, 28710, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vic\'s Flying Machine - On Point 25 of Path 28710 Reached - Say Line 0'),
|
||||
(28710, 0, 10, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 11, 52255, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vic\'s Flying Machine - On Point 25 of Path 28710 Reached - Cast \'Engine on Fire\''),
|
||||
(28710, 0, 11, 0, 28, 0, 100, 512, 0, 0, 0, 0, 0, 0, 134, 44795, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Vic\'s Flying Machine - On Passenger Removed - Invoker Cast \'Parachute\''),
|
||||
(28710, 0, 12, 13, 8, 0, 100, 512, 52226, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Vic\'s Flying Machine - On Spellhit \'Land Flying Machine\' - Set Event Phase 2'),
|
||||
(28710, 0, 13, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 11, 50630, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vic\'s Flying Machine - On Spellhit \'Land Flying Machine\' - Cast \'Eject All Passengers\''),
|
||||
(28710, 0, 14, 0, 40, 0, 100, 512, 26, 28710, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vic\'s Flying Machine - On Point 26 of Path 28710 Reached - Set Run On'),
|
||||
(28710, 0, 15, 0, 28, 2, 100, 512, 0, 0, 0, 0, 0, 0, 134, 53328, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Vic\'s Flying Machine - On Passenger Removed - Invoker Cast \'Land Flying Machine Credit\' (Phase 2)'),
|
||||
(28710, 0, 16, 0, 11, 0, 100, 512, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vic\'s Flying Machine - On Respawn - Set Event Phase 1'),
|
||||
(28710, 0, 17, 0, 28, 1, 100, 512, 0, 0, 0, 0, 0, 0, 6, 12671, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Vic\'s Flying Machine - On Passenger Removed - Fail Quest \'Reconnaissance Flight\' (Phase 1)');
|
||||
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PLANE;
|
||||
DELETE FROM `waypoints` WHERE `entry`=@PLANE;
|
||||
INSERT INTO `waypoints` (`entry`,`pointid`,`position_x`,`position_y`,`position_z`,`point_comment`) VALUES
|
||||
(@PLANE,1,5494.87,4747.031,-187.8783, 'Vic''s Flying Machine'),
|
||||
(@PLANE,2,5485.906,4740.681,-184.5172, 'Vic''s Flying Machine'),
|
||||
(@PLANE,3,5472.882,4732.441,-172.1562, 'Vic''s Flying Machine'),
|
||||
(@PLANE,4,5460.913,4712.542,-157.8784, 'Vic''s Flying Machine'),
|
||||
(@PLANE,5,5452.147,4673.518,-137.8906, 'Vic''s Flying Machine'),
|
||||
(@PLANE,6,5449.777,4630.711,-126.6684, 'Vic''s Flying Machine'),
|
||||
(@PLANE,7,5507.432,4506.089,-126.6684, 'Vic''s Flying Machine'),
|
||||
(@PLANE,8,5586.811,4465.319,-126.6684, 'Vic''s Flying Machine'),
|
||||
(@PLANE,9,5676.111,4437.874,-126.6684, 'Vic''s Flying Machine'),
|
||||
(@PLANE,10,5756.449,4391.051,-91.25155, 'Vic''s Flying Machine'),
|
||||
(@PLANE,11,5817.163,4269.269,-91.25155, 'Vic''s Flying Machine'),
|
||||
(@PLANE,12,5856.145,4202.824,-68.29334, 'Vic''s Flying Machine'),
|
||||
(@PLANE,13,5921.523,4105.534,-68.29334, 'Vic''s Flying Machine'),
|
||||
(@PLANE,14,5995.021,4029.883,-13.97897, 'Vic''s Flying Machine'),
|
||||
(@PLANE,15,6118.298,3883.733,94.11866, 'Vic''s Flying Machine'),
|
||||
(@PLANE,16,6132.932,3750.75,176.5123, 'Vic''s Flying Machine'),
|
||||
(@PLANE,17,6165.863,3748.196,198.9567, 'Vic''s Flying Machine'),
|
||||
(@PLANE,18,6208.277,3782.189,196.8455, 'Vic''s Flying Machine'),
|
||||
(@PLANE,19,6227.615,3836.871,191.6234, 'Vic''s Flying Machine'),
|
||||
(@PLANE,20,6218.483,3885.17,191.6234, 'Vic''s Flying Machine'),
|
||||
(@PLANE,21,6197.045,3890.053,191.6234, 'Vic''s Flying Machine'),
|
||||
(@PLANE,22,6168.752,3864.161,191.6234, 'Vic''s Flying Machine'),
|
||||
(@PLANE,23,6204.037,3807.239,191.6234, 'Vic''s Flying Machine'),
|
||||
(@PLANE,24,6232.975,3820.852,191.6234, 'Vic''s Flying Machine'),
|
||||
(@PLANE,25,6219.879,3854.341,166.6234, 'Vic''s Flying Machine'),
|
||||
(@PLANE,26,6210.428,3855.185,154.4848, 'Vic''s Flying Machine');
|
||||
|
||||
UPDATE `creature_template_movement` SET `Swim`=1,`Ground`=1,`Flight`=2 WHERE `CreatureId`=@PLANE;
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` =14 AND `SourceGroup`=9750;
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(14, 9750, 13376, 0, 0, 8, 0, 12671, 0, 0, 0, 0, 0, '', 'Pilot Vic Show different gossip if player has rewarded quest 12671 '),
|
||||
(14, 9750, 13375, 0, 0, 8, 0, 12671, 0, 0, 1, 0, 0, '', 'Pilot Vic Show different gossip if player is not rewarded quest 12671');
|
||||
|
||||
DELETE FROM `vehicle_template_accessory` WHERE `entry` IN (@PLANE);
|
||||
INSERT INTO `vehicle_template_accessory` (`entry`,`accessory_entry`, `seat_id`, `minion`, `description`) VALUES
|
||||
(@PLANE, @PILOT, 0, 1, 'Vics Flying Machine');
|
||||
@@ -1,3 +0,0 @@
|
||||
-- DB update 2025_11_12_02 -> 2025_11_12_03
|
||||
--
|
||||
UPDATE `quest_offer_reward` SET `RewardText` = 'Aw yes, these will do nicely.$b$bJust plop them down anywhere. You can have some of my leftover stew from last night.' WHERE (`ID` = 11564);
|
||||
@@ -1,36 +0,0 @@
|
||||
-- DB update 2025_11_12_03 -> 2025_11_12_04
|
||||
--
|
||||
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 22) AND (`SourceGroup` = 1) AND (`SourceEntry` = 5440) AND (`SourceId` = 2) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 1) AND (`ConditionTarget` = 0) AND (`ConditionValue1` = 47219) AND (`ConditionValue2` = 0) AND (`ConditionValue3` = 0);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(22, 1, 5440, 2, 0, 1, 0, 47219, 0, 0, 0, 0, 0, '', 'Areatrigger 5440 require Cleared for Teleport (47219) ');
|
||||
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 26619;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 26619);
|
||||
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`, `event_param6`, `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
|
||||
(26619, 0, 0, 1, 62, 0, 100, 0, 9415, 0, 0, 0, 0, 0, 11, 47219, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Fizzcrank Paratrooper - On Gossip Option 0 Selected - Cast \'Cleared for Teleport\''),
|
||||
(26619, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Fizzcrank Paratrooper - On Gossip Option 0 Selected - Close Gossip'),
|
||||
(26619, 0, 2, 0, 64, 0, 100, 0, 0, 0, 0, 0, 0, 0, 98, 9429, 12687, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Fizzcrank Paratrooper - On Gossip Hello - Send Gossip'),
|
||||
(26619, 0, 3, 4, 62, 0, 100, 0, 9429, 1, 0, 0, 0, 0, 11, 47326, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Fizzcrank Paratrooper - On Gossip Option 1 Selected - Cast \'Create Item - Fizzcrank Practice Parachute\''),
|
||||
(26619, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Fizzcrank Paratrooper - On Gossip Option 1 Selected - Close Gossip');
|
||||
|
||||
DELETE FROM `areatrigger_scripts` WHERE `entry` = 5440;
|
||||
INSERT INTO `areatrigger_scripts` (`entry`, `ScriptName`) VALUES (5440, 'SmartTrigger');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 5440) AND (`source_type` = 2) AND (`id` IN (0));
|
||||
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`, `event_param6`, `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
|
||||
(5440, 2, 0, 0, 46, 0, 100, 0, 5440, 0, 0, 0, 0, 0, 62, 571, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 4240.04, 5259.05, 72.3396, 2.274780035018921, 'Areatrigger - On Trigger - Teleport');
|
||||
|
||||
DELETE FROM `gossip_menu` WHERE `MenuID` = 9429;
|
||||
INSERT INTO `gossip_menu` (`MenuID`, `TextID`) VALUES
|
||||
(9429, 12687);
|
||||
|
||||
DELETE FROM `gossip_menu_option` WHERE (`OptionID`=1 AND `MenuID`=9429);
|
||||
INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES
|
||||
(9429, 1, 0, 'I\'ll show you! Give me that practice parachute!', 25923, 1, 1, 0, 0, 0, 0, NULL, 0, 64270);
|
||||
|
||||
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 22) AND (`SourceGroup` = 3) AND (`SourceEntry` = 26619) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 30) AND (`ConditionTarget` = 0) AND (`ConditionValue1` = 188420) AND (`ConditionValue2` = 20) AND (`ConditionValue3` = 0);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(22, 3, 26619, 0, 0, 30, 0, 188420, 20, 0, 0, 0, 0, '', 'Requires Fizzcrank Parachute spell focus');
|
||||
|
||||
UPDATE `gameobject` SET `position_x` = 4227.6616, `position_y` = 5270.674, `position_z` = 71.928215 WHERE `guid` = 99767 AND `id` = 188420;
|
||||
@@ -1,5 +0,0 @@
|
||||
-- DB update 2025_11_12_04 -> 2025_11_12_05
|
||||
--
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 27292) AND (`source_type` = 0) AND (`id` IN (0, 1));
|
||||
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`, `event_param6`, `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
|
||||
(27292, 0, 1, 2, 62, 0, 100, 512, 0, 0, 0, 0, 0, 0, 11, 48606, 3, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Flamebringer - On Gossip Option 0 Selected - Cast \'Flamebringer Summon Cue\'');
|
||||
@@ -1,11 +0,0 @@
|
||||
-- DB update 2025_11_12_05 -> 2025_11_12_06
|
||||
|
||||
-- Update AI
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 27254;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 27254);
|
||||
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`, `event_param6`, `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
|
||||
(27254, 0, 0, 0, 25, 0, 100, 0, 0, 0, 0, 0, 0, 0, 90, 9, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Emerald Lasher - On Reset - Set Flag Standstate Submerged'),
|
||||
(27254, 0, 1, 2, 4, 0, 100, 0, 0, 0, 0, 0, 0, 0, 91, 9, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Emerald Lasher - On Aggro - Remove FlagStandstate Submerged'),
|
||||
(27254, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 37752, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Emerald Lasher - On Aggro - Cast \'Stand\''),
|
||||
(27254, 0, 3, 0, 0, 0, 100, 0, 4000, 7000, 9000, 13000, 0, 0, 11, 51901, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Emerald Lasher - In Combat - Cast \'Dream Lash\'');
|
||||
@@ -1,8 +0,0 @@
|
||||
-- DB update 2025_11_12_06 -> 2025_11_13_00
|
||||
|
||||
-- Update SmartAI
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 27358;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 27358);
|
||||
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`, `event_param6`, `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
|
||||
(27358, 0, 0, 0, 0, 0, 100, 0, 0, 0, 7000, 10000, 0, 0, 11, 51431, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Burning Depths Necromancer - In Combat - Cast \'Power Release\'');
|
||||
@@ -1,5 +0,0 @@
|
||||
-- DB update 2025_11_13_00 -> 2025_11_13_01
|
||||
|
||||
-- Delete SmartAI
|
||||
UPDATE `creature_template` SET `AIName` = '' WHERE `entry` = 30066;
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 30066) AND (`source_type` = 0);
|
||||
@@ -1,5 +0,0 @@
|
||||
-- DB update 2025_11_13_01 -> 2025_11_13_02
|
||||
--
|
||||
DELETE FROM `creature_template_movement` WHERE `CreatureId` = 27821;
|
||||
INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Flight`) VALUES
|
||||
(27821, 1, 1);
|
||||
@@ -1,5 +0,0 @@
|
||||
-- DB update 2025_11_13_02 -> 2025_11_13_03
|
||||
--
|
||||
DELETE FROM `spell_custom_attr` WHERE `spell_id` = 53094;
|
||||
INSERT INTO `spell_custom_attr` (`spell_id`, `attributes`) VALUES
|
||||
(53094, 0x00400000);
|
||||
@@ -1,53 +0,0 @@
|
||||
-- DB update 2025_11_13_03 -> 2025_11_13_04
|
||||
|
||||
-- Set Sniffed Unit_flag (Vrykul Harpoon Gun)
|
||||
UPDATE `creature_template` SET `unit_flags` = `unit_flags` &~ 4 WHERE (`entry` = 27992);
|
||||
UPDATE `creature_template` SET `unit_flags` = `unit_flags` |33554432 WHERE (`entry` = 27992);
|
||||
|
||||
-- Set Sniffed Movement Flags (Vrykul Harpoon Gun & Dragonflayer Defender)
|
||||
DELETE FROM `creature_template_movement` WHERE (`CreatureId` IN (24533, 27992));
|
||||
INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`, `InteractionPauseTimer`) VALUES
|
||||
(24533, 0, 0, 1, 0, 0, 0, 0),
|
||||
(27992, 0, 0, 0, 1, 0, 0, 0);
|
||||
|
||||
-- Update SmartAI (Vrykul Harpoon Gun)
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 27992;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 27992);
|
||||
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`, `event_param6`, `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
|
||||
(27992, 0, 0, 0, 27, 0, 100, 0, 0, 0, 0, 0, 0, 0, 19, 33554432, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vrykul Harpoon Gun - On Passenger Boarded - Remove Flags Not Selectable'),
|
||||
(27992, 0, 1, 0, 28, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 33554432, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vrykul Harpoon Gun - On Passenger Removed - Set Flags Not Selectable'),
|
||||
(27992, 0, 2, 3, 38, 0, 100, 512, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vrykul Harpoon Gun - On Data Set 1 1 - Say Line 0'),
|
||||
(27992, 0, 3, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 80, 2799200, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vrykul Harpoon Gun - On Data Set 1 1 - Run Script'),
|
||||
(27992, 0, 4, 5, 38, 0, 100, 512, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vrykul Harpoon Gun - On Data Set 1 2 - Say Line 1'),
|
||||
(27992, 0, 5, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 80, 2799201, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vrykul Harpoon Gun - On Data Set 1 2 - Run Script'),
|
||||
(27992, 0, 6, 7, 38, 0, 100, 512, 1, 3, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vrykul Harpoon Gun - On Data Set 1 3 - Say Line 2'),
|
||||
(27992, 0, 7, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 80, 2799202, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vrykul Harpoon Gun - On Data Set 1 3 - Run Script'),
|
||||
(27992, 0, 8, 0, 31, 0, 100, 512, 43997, 0, 0, 0, 0, 0, 11, 43998, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vrykul Harpoon Gun - On Target Spellhit \'Fiery Lance\' - Cast \'Fiery Lance\'');
|
||||
|
||||
-- Update Action Lists (sniffed Spawn Points)
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 9) AND (`entryorguid` IN (2799200, 2799201, 2799202));
|
||||
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`, `event_param6`, `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
|
||||
(2799200, 9, 0, 0, 0, 0, 100, 512, 3000, 3000, 0, 0, 0, 0, 12, 24533, 4, 60000, 0, 1, 0, 8, 0, 0, 0, 0, 1055.92, -5139.29, 177.646, 4.2569, 'Vrykul Harpoon Gun - Actionlist - Summon Creature \'Dragonflayer Defender\''),
|
||||
(2799200, 9, 1, 0, 0, 0, 100, 512, 0, 0, 0, 0, 0, 0, 12, 24533, 4, 60000, 0, 1, 0, 8, 0, 0, 0, 0, 1011.96, -5124.65, 185.217, 4.2505, 'Vrykul Harpoon Gun - Actionlist - Summon Creature \'Dragonflayer Defender\''),
|
||||
(2799200, 9, 2, 0, 0, 0, 100, 512, 0, 0, 0, 0, 0, 0, 12, 24533, 4, 60000, 0, 1, 0, 8, 0, 0, 0, 0, 1073.53, -5130.63, 209.704, 4.0369, 'Vrykul Harpoon Gun - Actionlist - Summon Creature \'Dragonflayer Defender\''),
|
||||
(2799200, 9, 3, 0, 0, 0, 100, 512, 0, 0, 0, 0, 0, 0, 12, 24533, 4, 60000, 0, 1, 0, 8, 0, 0, 0, 0, 1127.55, -5177.06, 212.394, 4.1176, 'Vrykul Harpoon Gun - Actionlist - Summon Creature \'Dragonflayer Defender\''),
|
||||
(2799201, 9, 0, 0, 0, 0, 100, 512, 3000, 3000, 0, 0, 0, 0, 12, 24533, 4, 60000, 0, 1, 0, 8, 0, 0, 0, 0, 1091.66, -5150.43, 121.44, 4.0841, 'Vrykul Harpoon Gun - Actionlist - Summon Creature \'Dragonflayer Defender\''),
|
||||
(2799201, 9, 1, 0, 0, 0, 100, 512, 0, 0, 0, 0, 0, 0, 12, 24533, 4, 60000, 0, 1, 0, 8, 0, 0, 0, 0, 1024.17, -5117.84, 141.756, 4.1904, 'Vrykul Harpoon Gun - Actionlist - Summon Creature \'Dragonflayer Defender\''),
|
||||
(2799201, 9, 2, 0, 0, 0, 100, 512, 0, 0, 0, 0, 0, 0, 12, 24533, 4, 60000, 0, 1, 0, 8, 0, 0, 0, 0, 964.811, -5123.2, 111.064, 3.997, 'Vrykul Harpoon Gun - Actionlist - Summon Creature \'Dragonflayer Defender\''),
|
||||
(2799202, 9, 0, 0, 0, 0, 100, 512, 3000, 3000, 0, 0, 0, 0, 12, 24533, 4, 60000, 0, 1, 0, 8, 0, 0, 0, 0, 1132.96, -5170, 261.992, 3.9751, 'Vrykul Harpoon Gun - Actionlist - Summon Creature \'Dragonflayer Defender\''),
|
||||
(2799202, 9, 1, 0, 0, 0, 100, 512, 0, 0, 0, 0, 0, 0, 12, 24533, 4, 60000, 0, 1, 0, 8, 0, 0, 0, 0, 1115.01, -5161.58, 207.852, 4.3169, 'Vrykul Harpoon Gun - Actionlist - Summon Creature \'Dragonflayer Defender\''),
|
||||
(2799202, 9, 2, 0, 0, 0, 100, 512, 0, 0, 0, 0, 0, 0, 12, 24533, 4, 60000, 0, 1, 0, 8, 0, 0, 0, 0, 1168.37, -5220.4, 243.869, 3.7683, 'Vrykul Harpoon Gun - Actionlist - Summon Creature \'Dragonflayer Defender\'');
|
||||
|
||||
-- Set SmartAI (Dragonflayer Defender)
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 24533;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 24533);
|
||||
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`, `event_param6`, `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
|
||||
(24533, 0, 0, 0, 0, 0, 100, 0, 500, 1000, 2000, 2000, 0, 0, 11, 44188, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonflayer Defender - In Combat - Cast \'Harpoon Toss\''),
|
||||
(24533, 0, 1, 0, 8, 0, 100, 0, 43997, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonflayer Defender - On Spellhit \'Fiery Lance\' - Kill Self'),
|
||||
(24533, 0, 2, 3, 54, 0, 100, 0, 0, 0, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonflayer Defender - On Just Summoned - Disable Evade'),
|
||||
(24533, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 69, 25, 0, 1, 0, 1, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonflayer Defender - On Just Summoned - Move To Owner Or Summoner'),
|
||||
(24533, 0, 4, 5, 34, 0, 100, 0, 0, 25, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonflayer Defender - On Reached Point 25 - Set Home Position'),
|
||||
(24533, 0, 5, 6, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonflayer Defender - On Reached Point 25 - Enable Evade'),
|
||||
(24533, 0, 6, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonflayer Defender - On Reached Point 25 - Start Attacking');
|
||||
@@ -1,4 +0,0 @@
|
||||
-- DB update 2025_11_13_04 -> 2025_11_13_05
|
||||
-- Makes sure the Shaman player gets the required ritual toch item and that requires the quest to drop
|
||||
UPDATE `item_loot_template` SET `Chance` = 0, `QuestRequired` = 1, `GroupId` = 1 WHERE `Entry` = 24336 AND `Item` = 23682;
|
||||
UPDATE `item_loot_template` SET `Chance` = 0, `GroupId` = 2 WHERE `Entry` = 24336 AND `Item` = 24335;
|
||||
@@ -1,9 +0,0 @@
|
||||
-- DB update 2025_11_13_05 -> 2025_11_14_00
|
||||
--
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` = 50380;
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(50380, 'spell_bloodspore_haze');
|
||||
|
||||
DELETE FROM `spell_custom_attr` WHERE `spell_id` = 50380;
|
||||
INSERT INTO `spell_custom_attr` (`spell_id`, `attributes`) VALUES
|
||||
(50380, 0x00400000);
|
||||
@@ -1,6 +0,0 @@
|
||||
-- DB update 2025_11_14_00 -> 2025_11_14_01
|
||||
--
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 29445) AND (`source_type` = 0) AND (`id` IN (0, 1));
|
||||
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`, `event_param6`, `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
|
||||
(29445, 0, 0, 0, 62, 0, 100, 0, 9926, 0, 0, 0, 0, 0, 134, 56940, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Thorim - On Gossip Option 0 Selected - Invoker Cast \'Thorim Story Kill Credit\''),
|
||||
(29445, 0, 1, 0, 19, 0, 100, 0, 12924, 0, 0, 0, 0, 0, 134, 56518, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Thorim - On Quest \'Forging an Alliance\' Taken - Invoker Cast \'Clearquests\'');
|
||||
@@ -1,5 +0,0 @@
|
||||
-- DB update 2025_11_14_01 -> 2025_11_14_02
|
||||
--
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 2943400) AND (`source_type` = 9) AND (`id` IN (2));
|
||||
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`, `event_param6`, `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
|
||||
(2943400, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 26, 12832, 0, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Goblin Miner - On Script - Quest Credit \'Bitter Departure\' (Stored Target)');
|
||||
@@ -1,5 +0,0 @@
|
||||
-- DB update 2025_11_14_02 -> 2025_11_14_03
|
||||
--
|
||||
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 17) AND (`SourceGroup` = 0) AND (`SourceEntry` = 55046) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 1) AND (`ConditionTarget` = 1) AND (`ConditionValue1` = 54894) AND (`ConditionValue2` = 0) AND (`ConditionValue3` = 0);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(17, 0, 55046, 0, 0, 1, 1, 54894, 0, 0, 0, 0, 0, '', 'Ice Shard require Icy Imprisionment');
|
||||
@@ -1,5 +0,0 @@
|
||||
-- DB update 2025_11_14_03 -> 2025_11_15_00
|
||||
--
|
||||
DELETE FROM `creature_loot_template` WHERE (`Entry` = 31231) AND (`Item` IN (42108));
|
||||
INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(31231, 42108, 0, 33, 1, 1, 0, 1, 1, 'Lost Shandaral Spirit - Scourge Curio');
|
||||
@@ -1,3 +0,0 @@
|
||||
-- DB update 2025_11_15_00 -> 2025_11_15_01
|
||||
-- fix spell focus location for quest 'Will of the Titans'
|
||||
UPDATE `gameobject` SET `position_x` = 5110.11, `position_y` = 5471.22, `position_z` = -91.84 WHERE `id` = 190781 AND `guid` = 99745;
|
||||
@@ -1,6 +0,0 @@
|
||||
-- DB update 2025_11_15_01 -> 2025_11_15_02
|
||||
--
|
||||
DELETE FROM `creature_template_spell` WHERE (`CreatureID` = 35415);
|
||||
INSERT INTO `creature_template_spell` (`CreatureID`, `Index`, `Spell`, `VerifiedBuild`) VALUES
|
||||
(35415, 0, 68068, 0),
|
||||
(35415, 1, 67442, 0);
|
||||
@@ -1,3 +0,0 @@
|
||||
-- DB update 2025_11_15_02 -> 2025_11_15_03
|
||||
--
|
||||
UPDATE `creature_template` SET `npcflag` = `npcflag` |65536 WHERE `entry` = 29944;
|
||||
@@ -1,3 +0,0 @@
|
||||
-- DB update 2025_11_15_03 -> 2025_11_15_04
|
||||
--
|
||||
UPDATE `creature_template` SET `unit_flags` = `unit_flags` &~ 256 WHERE `entry` = 24787;
|
||||
@@ -1,6 +0,0 @@
|
||||
-- DB update 2025_11_15_04 -> 2025_11_15_05
|
||||
--
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 26841) AND (`source_type` = 0) AND (`id` IN (0, 1));
|
||||
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`, `event_param6`, `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
|
||||
(26841, 0, 0, 0, 0, 0, 100, 0, 0, 0, 5000, 7000, 0, 0, 11, 47425, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Reanimated Frost Wyrm - In Combat - Cast \'Frost Breath\''),
|
||||
(26841, 0, 1, 0, 8, 0, 100, 0, 49587, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Reanimated Frost Wyrm - On Spellhit \'Seeds of Nature`s Wrath\' - Start Attacking');
|
||||
@@ -1,9 +0,0 @@
|
||||
-- DB update 2025_11_15_05 -> 2025_11_15_06
|
||||
--
|
||||
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceEntry` = 49765);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(13, 7, 49765, 0, 0, 31, 0, 3, 27713, 0, 0, 0, 0, '', 'Fordragon Resolve target 7th Legion Elite'),
|
||||
(13, 7, 49765, 0, 1, 31, 0, 3, 26780, 0, 0, 0, 0, '', 'Fordragon Resolve target 7th Legion Cleric'),
|
||||
(13, 7, 49765, 0, 2, 31, 0, 3, 27587, 0, 0, 0, 0, '', 'Fordragon Resolve target Legion Commander Yorik'),
|
||||
(13, 7, 49765, 0, 3, 31, 0, 3, 27858, 0, 0, 0, 0, '', 'Fordragon Resolve target Highlord Bolvar Fordragon'),
|
||||
(13, 7, 49765, 0, 4, 32, 0, 16, 0, 0, 0, 0, 0, '', 'Fordragon Resolve target players');
|
||||
@@ -1,5 +0,0 @@
|
||||
-- DB update 2025_11_15_06 -> 2025_11_15_07
|
||||
--
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 2583500) AND (`source_type` = 9) AND (`id` IN (19));
|
||||
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`, `event_param6`, `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
|
||||
(2583500, 9, 19, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 5000, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nesingwary Trapper - Actionlist - Despawn In 5000 ms');
|
||||
@@ -1,69 +0,0 @@
|
||||
-- DB update 2025_11_15_07 -> 2025_11_15_08
|
||||
|
||||
-- Set Creature Template Addon (Amberpine Woodsman)
|
||||
DELETE FROM `creature_template_addon` WHERE (`entry` = 27293);
|
||||
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(27293, 0, 0, 0, 1, 0, 0, '');
|
||||
|
||||
-- Update Spawn Points (Amberpine Woodsman)
|
||||
UPDATE `creature` SET `position_x` = 3499.0676, `position_y` = -2838.0798, `position_z` = 202.27922, `orientation` = 2.89724, `Comment` = 'Has Guid SAI' WHERE (`id1` = 27293) AND (`guid` = 110578);
|
||||
UPDATE `creature` SET `position_x` = 3497.1128, `position_y` = -2836.0088, `position_z` = 202.26859, `orientation` = 4.55530 WHERE (`id1` = 27293) AND (`guid` = 110579);
|
||||
UPDATE `creature` SET `position_x` = 3474.6736, `position_y` = -2776.7188, `position_z` = 201.02751, `orientation` = 2.56563, `Comment` = 'Has Guid SAI' WHERE (`id1` = 27293) AND (`guid` = 110580);
|
||||
UPDATE `creature` SET `position_x` = 3475.1519, `position_y` = -2774.3525, `position_z` = 200.75826, `orientation` = 3.59537 WHERE (`id1` = 27293) AND (`guid` = 110581);
|
||||
UPDATE `creature` SET `position_x` = 3374.5999, `position_y` = -2805.997, `position_z` = 199.0484, `orientation` = 1.34390, `Comment` = 'Has Guid SAI' WHERE (`id1` = 27293) AND (`guid` = 110582);
|
||||
UPDATE `creature` SET `position_x` = 3375.972, `position_y` = -2803.756, `position_z` = 199.01216, `orientation` = 3.99680 WHERE (`id1` = 27293) AND (`guid` = 110583);
|
||||
UPDATE `creature` SET `position_x` = 3460.5964, `position_y` = -2902.6494, `position_z` = 201.07785, `orientation` = 5.89921, `Comment` = 'Has Guid SAI' WHERE (`id1` = 27293) AND (`guid` = 110602);
|
||||
UPDATE `creature` SET `position_x` = 3460.07, `position_y` = -2904.9836, `position_z` = 201.10063, `orientation` = 0.52359 WHERE (`id1` = 27293) AND (`guid` = 110603);
|
||||
UPDATE `creature` SET `position_x` = 3390.5305, `position_y` = -2862.014, `position_z` = 199.62068, `orientation` = 3.24631 WHERE (`id1` = 27293) AND (`guid` = 110604);
|
||||
UPDATE `creature` SET `position_x` = 3390.0286, `position_y` = -2864.7012, `position_z` = 200.0756, `orientation` = 2.56563, `Comment` = 'Has Guid SAI' WHERE (`id1` = 27293) AND (`guid` = 110605);
|
||||
|
||||
-- Set Creature Addon (Amberpine Woodsman)
|
||||
DELETE FROM `creature_addon` WHERE (`guid` IN (110578, 110579, 110580, 110581, 110582, 110583, 110602, 110603, 110604, 110605));
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(110578, 0, 0, 8, 0, 0, 0, NULL),
|
||||
(110579, 0, 0, 0, 0, 133, 0, NULL),
|
||||
(110580, 0, 0, 8, 0, 0, 0, NULL),
|
||||
(110581, 0, 0, 0, 0, 133, 0, NULL),
|
||||
(110582, 0, 0, 8, 0, 0, 0, NULL),
|
||||
(110583, 0, 0, 0, 0, 133, 0, NULL),
|
||||
(110602, 0, 0, 8, 0, 0, 0, NULL),
|
||||
(110603, 0, 0, 0, 0, 133, 0, NULL),
|
||||
(110604, 0, 0, 0, 0, 133, 0, NULL),
|
||||
(110605, 0, 0, 8, 0, 0, 0, NULL);
|
||||
|
||||
-- Remove Script Name and set SmartAI (Amberpine Woodsman)
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE (`entry` = 27293);
|
||||
|
||||
-- Set Guid SmartAI
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0) AND (`entryorguid` IN (-110578, -110580, -110582, -110602, -110605));
|
||||
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`, `event_param6`, `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
|
||||
(-110578, 0, 0, 0, 1, 0, 100, 0, 1000, 3000, 500, 3000, 0, 0, 5, 36, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Amberpine Woodsman - Out of Combat - Play Emote 36'),
|
||||
(-110580, 0, 0, 0, 1, 0, 100, 0, 1000, 3000, 500, 3000, 0, 0, 5, 36, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Amberpine Woodsman - Out of Combat - Play Emote 36'),
|
||||
(-110582, 0, 0, 0, 1, 0, 100, 0, 1000, 3000, 500, 3000, 0, 0, 5, 36, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Amberpine Woodsman - Out of Combat - Play Emote 36'),
|
||||
(-110602, 0, 0, 0, 1, 0, 100, 0, 1000, 3000, 500, 3000, 0, 0, 5, 36, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Amberpine Woodsman - Out of Combat - Play Emote 36'),
|
||||
(-110605, 0, 0, 0, 1, 0, 100, 0, 1000, 3000, 500, 3000, 0, 0, 5, 36, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Amberpine Woodsman - Out of Combat - Play Emote 36');
|
||||
|
||||
-- Remove Script Name and set SmartAI (Tallhorn Stag)
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE (`entry` = 26363);
|
||||
|
||||
-- Set Comments (Tallhorn Stag)
|
||||
UPDATE `creature` SET `Comment` = 'Has Personal SAI' WHERE (`id1` = 26363) AND (`guid` IN (119621, 119622, 119642, 119643, 119656));
|
||||
|
||||
-- Set Guid Sai (Tallhorn Stag)
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0) AND (`entryorguid` IN (-119621, -119622, -119642, -119643, -119656));
|
||||
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`, `event_param6`, `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
|
||||
(-119621, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 537166592, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tallhorn Stag - On Respawn - Set Flags Immune To Players & Immune To NPC\'s & Stunned & Prevent Emotes From Chat Text'),
|
||||
(-119621, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tallhorn Stag - On Respawn - Set Flags Feign Death'),
|
||||
(-119621, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 29266, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tallhorn Stag - On Respawn - Cast \'Permanent Feign Death\''),
|
||||
(-119622, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 537166592, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tallhorn Stag - On Respawn - Set Flags Immune To Players & Immune To NPC\'s & Stunned & Prevent Emotes From Chat Text'),
|
||||
(-119622, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tallhorn Stag - On Respawn - Set Flags Feign Death'),
|
||||
(-119622, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 29266, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tallhorn Stag - On Respawn - Cast \'Permanent Feign Death\''),
|
||||
(-119642, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 537166592, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tallhorn Stag - On Respawn - Set Flags Immune To Players & Immune To NPC\'s & Stunned & Prevent Emotes From Chat Text'),
|
||||
(-119642, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tallhorn Stag - On Respawn - Set Flags Feign Death'),
|
||||
(-119642, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 29266, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tallhorn Stag - On Respawn - Cast \'Permanent Feign Death\''),
|
||||
(-119643, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 537166592, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tallhorn Stag - On Respawn - Set Flags Immune To Players & Immune To NPC\'s & Stunned & Prevent Emotes From Chat Text'),
|
||||
(-119643, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tallhorn Stag - On Respawn - Set Flags Feign Death'),
|
||||
(-119643, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 29266, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tallhorn Stag - On Respawn - Cast \'Permanent Feign Death\''),
|
||||
(-119656, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 537166592, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tallhorn Stag - On Respawn - Set Flags Immune To Players & Immune To NPC\'s & Stunned & Prevent Emotes From Chat Text'),
|
||||
(-119656, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tallhorn Stag - On Respawn - Set Flags Feign Death'),
|
||||
(-119656, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 29266, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tallhorn Stag - On Respawn - Cast \'Permanent Feign Death\'');
|
||||
@@ -1,3 +0,0 @@
|
||||
-- DB update 2025_11_15_08 -> 2025_11_15_09
|
||||
|
||||
UPDATE `creature_template` SET `flags_extra` = `flags_extra` |128 WHERE (`entry` = 25739);
|
||||
@@ -1,9 +0,0 @@
|
||||
-- DB update 2025_11_15_09 -> 2025_11_15_10
|
||||
--
|
||||
DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 54076;
|
||||
INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES
|
||||
(54076, 49511, 0, 'Taxi validate - Gryphon to Star Rest');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 26878) AND (`source_type` = 0) AND (`id` IN (3));
|
||||
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`, `event_param6`, `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
|
||||
(26878, 0, 3, 0, 19, 0, 100, 0, 12440, 0, 0, 0, 0, 0, 11, 54076, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Rodney Wells - On Quest \'To Stars\' Rest!\' Taken - Cast \'Taxi to Stars` Rest Validate\'');
|
||||
@@ -1,14 +0,0 @@
|
||||
-- DB update 2025_11_15_10 -> 2025_11_15_11
|
||||
|
||||
-- Add Immune To PC, Immune To Npc, Stunned, Prevent Emotes, Feign Death and remove All Dynamic Flags (Sniffed)
|
||||
UPDATE `creature_template` SET `unit_flags` = `unit_flags` |256|512|262144|536870912, `unit_flags2` = `unit_flags2` |1, `dynamicflags` = 0 WHERE (`entry` = 26514);
|
||||
|
||||
-- Add Aura (Sniffed)
|
||||
DELETE FROM `creature_template_addon` WHERE (`entry` = 26514);
|
||||
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(26514, 0, 0, 0, 0, 0, 0, '29266');
|
||||
|
||||
-- Add Disable Gravity and Rooted (Sniffed)
|
||||
DELETE FROM `creature_template_movement` WHERE (`CreatureId` = 26514);
|
||||
INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`, `InteractionPauseTimer`) VALUES
|
||||
(26514, 0, 0, 1, 1, 0, 0, 0);
|
||||
@@ -1,3 +0,0 @@
|
||||
-- DB update 2025_11_15_11 -> 2025_11_15_12
|
||||
--
|
||||
UPDATE `creature_loot_template` SET `Chance` = 100 WHERE `item` = 43159 AND `entry` = 30746;
|
||||
@@ -1,5 +0,0 @@
|
||||
-- DB update 2025_11_15_12 -> 2025_11_15_13
|
||||
--
|
||||
DELETE FROM `spell_proc_event` WHERE `entry`= 45278;
|
||||
INSERT INTO `spell_proc_event` (`entry`, `procFlags`) VALUES
|
||||
(45278, 0x00004400|0x00010000);
|
||||
@@ -1,3 +0,0 @@
|
||||
-- DB update 2025_11_15_13 -> 2025_11_15_14
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` = 27598 AND `source_type` = 0;
|
||||
UPDATE `creature_template` SET `AIName` = '' WHERE `entry` = 27598;
|
||||
@@ -1,31 +0,0 @@
|
||||
-- DB update 2025_11_15_14 -> 2025_11_15_15
|
||||
--
|
||||
SET @MAXSTANDING := 7;
|
||||
SET @REPSUMMONS := 1;
|
||||
SET @REPREGULAR := 4;
|
||||
SET @REPHULK := 10;
|
||||
SET @REPBOSS := 50;
|
||||
DELETE FROM `creature_onkill_reputation` WHERE `creature_id` IN (26553, 26554, 26550, 26555, 26668, 26669, 26670, 26672, 26685, 26683, 26684,
|
||||
26686, 26687, 26692, 26690, 26691, 26693, 28368, 26696, 26694, 26861);
|
||||
INSERT INTO `creature_onkill_reputation` (`creature_id`, `RewOnKillRepFaction1`, `RewOnKillRepFaction2`, `MaxStanding1`, `RewOnKillRepValue1`, `MaxStanding2`, `RewOnKillRepValue2`, `TeamDependent`) VALUES
|
||||
(26550, 1037, 1052, @MAXSTANDING, @REPREGULAR, @MAXSTANDING, @REPREGULAR, 1), -- Dragonflayer Deathseeker
|
||||
(26553, 1037, 1052, @MAXSTANDING, @REPREGULAR, @MAXSTANDING, @REPREGULAR, 1), -- Dragonflayer Fanatic
|
||||
(26554, 1037, 1052, @MAXSTANDING, @REPREGULAR, @MAXSTANDING, @REPREGULAR, 1), -- Dragonflayer Seer
|
||||
(26555, 1037, 1052, @MAXSTANDING, @REPHULK, @MAXSTANDING, @REPHULK, 1), -- Scourge Hulk
|
||||
(26668, 1037, 1052, @MAXSTANDING, @REPBOSS, @MAXSTANDING, @REPBOSS, 1), -- Svala
|
||||
(26669, 1037, 1052, @MAXSTANDING, @REPREGULAR, @MAXSTANDING, @REPREGULAR, 1), -- Ymirjar Savage
|
||||
(26670, 1037, 1052, @MAXSTANDING, @REPREGULAR, @MAXSTANDING, @REPREGULAR, 1), -- Ymirjar Flesh Hunter
|
||||
(26672, 1037, 1052, @MAXSTANDING, @REPREGULAR, @MAXSTANDING, @REPREGULAR, 1), -- Bloodthirsty Tundra Wolf
|
||||
(26685, 1037, 1052, @MAXSTANDING, @REPREGULAR, @MAXSTANDING, @REPREGULAR, 1), -- Massive Jormungar
|
||||
(26683, 1037, 1052, @MAXSTANDING, @REPREGULAR, @MAXSTANDING, @REPREGULAR, 1), -- Frenzied Worgen
|
||||
(26684, 1037, 1052, @MAXSTANDING, @REPREGULAR, @MAXSTANDING, @REPREGULAR, 1), -- Ravenous Furbog
|
||||
(26686, 1037, 1052, @MAXSTANDING, @REPREGULAR, @MAXSTANDING, @REPREGULAR, 1), -- Ferocious Rhino
|
||||
(26687, 1037, 1052, @MAXSTANDING, @REPBOSS, @MAXSTANDING, @REPBOSS, 1), -- Gortok
|
||||
(26692, 1037, 1052, @MAXSTANDING, @REPSUMMONS, @MAXSTANDING, @REPSUMMONS, 1), -- Ymirjar Harpooner (Skadi)
|
||||
(26690, 1037, 1052, @MAXSTANDING, @REPSUMMONS, @MAXSTANDING, @REPSUMMONS, 1), -- Ymirjar Warrior (Skadi)
|
||||
(26691, 1037, 1052, @MAXSTANDING, @REPSUMMONS, @MAXSTANDING, @REPSUMMONS, 1), -- Ymirjar Shaman (Skadi)
|
||||
(26693, 1037, 1052, @MAXSTANDING, @REPBOSS, @MAXSTANDING, @REPBOSS, 1), -- Skadi
|
||||
(28368, 1037, 1052, @MAXSTANDING, @REPREGULAR, @MAXSTANDING, @REPREGULAR, 1), -- Ymirjar Necromancer
|
||||
(26696, 1037, 1052, @MAXSTANDING, @REPREGULAR, @MAXSTANDING, @REPREGULAR, 1), -- Ymirjar Berserker
|
||||
(26694, 1037, 1052, @MAXSTANDING, @REPREGULAR, @MAXSTANDING, @REPREGULAR, 1), -- Ymirjar Dark Shaman
|
||||
(26861, 1037, 1052, @MAXSTANDING, @REPBOSS, @MAXSTANDING, @REPBOSS, 1); -- Ymiron
|
||||
@@ -1,10 +0,0 @@
|
||||
-- DB update 2025_11_15_15 -> 2025_11_16_00
|
||||
--
|
||||
SET @REPTRASH := 1;
|
||||
SET @REPREGULAR := 5;
|
||||
SET @REPHULK := 10;
|
||||
SET @REPBOSS := 50;
|
||||
UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = @REPTRASH, `RewOnKillRepValue2` = @REPTRASH WHERE `creature_id` IN (27636, 27638);
|
||||
UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = @REPREGULAR, `RewOnKillRepValue2` = @REPREGULAR WHERE `creature_id` IN (26550, 26553, 26554, 26669, 26670, 26672, 26685, 26683, 26684, 26686, 28368, 26696, 26694); -- UP
|
||||
UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = @REPREGULAR, `RewOnKillRepValue2` = @REPREGULAR WHERE `creature_id` IN (27635, 27633, 27641, 27639, 27640, 27653, 27651, 27650, 27648, 27647, 27649, 27645, 27644, 27642); -- Oculus
|
||||
UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = @REPBOSS, `RewOnKillRepValue2` = @REPBOSS WHERE `creature_id` IN (27654, 27447, 27655, 27656);
|
||||
@@ -1,3 +0,0 @@
|
||||
-- DB update 2025_11_16_00 -> 2025_11_16_01
|
||||
--
|
||||
UPDATE `quest_template_addon` SET `PrevQuestID` = 12611 WHERE (`ID` = 12805);
|
||||
@@ -1,3 +0,0 @@
|
||||
-- DB update 2025_11_16_01 -> 2025_11_16_02
|
||||
--
|
||||
UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE (`ID` = 12827);
|
||||
@@ -1,19 +0,0 @@
|
||||
-- DB update 2025_11_16_02 -> 2025_11_17_00
|
||||
--
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 24825) AND (`source_type` = 0) AND (`id` IN (2, 3, 4, 5, 6, 7));
|
||||
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`, `event_param6`, `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
|
||||
(24825, 0, 2, 0, 72, 0, 100, 512, 1, 0, 0, 0, 0, 0, 53, 2, 24826, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Action 1 Done - Start Waypoint Path 24826'),
|
||||
(24825, 0, 3, 0, 72, 0, 100, 512, 2, 0, 0, 0, 0, 0, 53, 2, 24827, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Action 2 Done - Start Waypoint Path 24827'),
|
||||
(24825, 0, 4, 0, 72, 0, 100, 512, 3, 0, 0, 0, 0, 0, 53, 2, 24828, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Action 3 Done - Start Waypoint Path 24828'),
|
||||
(24825, 0, 5, 0, 72, 0, 100, 512, 4, 0, 0, 0, 0, 0, 53, 2, 24831, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Action 4 Done - Start Waypoint Path 24831'),
|
||||
(24825, 0, 6, 0, 72, 0, 100, 512, 5, 0, 0, 0, 0, 0, 53, 2, 24829, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Action 5 Done - Start Waypoint Path 24829'),
|
||||
(24825, 0, 7, 0, 72, 0, 100, 512, 6, 0, 0, 0, 0, 0, 53, 2, 24832, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Action 6 Done - Start Waypoint Path 24832');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` IN (24826, 24827, 24828, 24829, 24831, 24832));
|
||||
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`, `event_param6`, `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
|
||||
(24826, 0, 0, 0, 8, 0, 100, 0, 44608, 0, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'On Spellhit \'Rocket Jump\' - Do Action 1'),
|
||||
(24827, 0, 0, 0, 8, 0, 100, 0, 44608, 0, 0, 0, 0, 0, 223, 2, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'On Spellhit \'Rocket Jump\' - Do Action 2'),
|
||||
(24828, 0, 0, 0, 8, 0, 100, 0, 44608, 0, 0, 0, 0, 0, 223, 3, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'On Spellhit \'Rocket Jump\' - Do Action 3'),
|
||||
(24831, 0, 0, 0, 8, 0, 100, 0, 44608, 0, 0, 0, 0, 0, 223, 4, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'On Spellhit \'Rocket Jump\' - Do Action 4'),
|
||||
(24829, 0, 0, 0, 8, 0, 100, 0, 44608, 0, 0, 0, 0, 0, 223, 5, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'On Spellhit \'Rocket Jump\' - Do Action 5'),
|
||||
(24832, 0, 0, 0, 8, 0, 100, 0, 44608, 0, 0, 0, 0, 0, 223, 6, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'On Spellhit \'Rocket Jump\' - Do Action 6');
|
||||
@@ -1,5 +0,0 @@
|
||||
-- DB update 2025_11_17_00 -> 2025_11_17_01
|
||||
--
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 27292) AND (`source_type` = 0) AND (`id` IN (1));
|
||||
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`, `event_param6`, `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
|
||||
(27292, 0, 1, 2, 62, 0, 100, 512, 9512, 0, 0, 0, 0, 0, 11, 48606, 3, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Flamebringer - On Gossip Option 0 Selected - Cast \'Flamebringer Summon Cue\'');
|
||||
@@ -1,22 +0,0 @@
|
||||
-- DB update 2025_11_17_01 -> 2025_11_17_02
|
||||
|
||||
-- Set Spelldifficulty
|
||||
DELETE FROM `spelldifficulty_dbc` WHERE (`ID` IN (52534, 52535));
|
||||
INSERT INTO `spelldifficulty_dbc` (`ID`,`DifficultySpellID_1`,`DifficultySpellID_2`,`DifficultySpellID_3`,`DifficultySpellID_4`) VALUES
|
||||
(52534, 52534, 59357, 0, 0),
|
||||
(52535, 52535, 59358, 0, 0);
|
||||
|
||||
-- Update SmartAIs (call for help and comments).
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE (`entry` IN (28732, 28733, 28734));
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0) AND (`entryorguid` IN (28732, 28733, 28734));
|
||||
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`, `event_param6`, `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
|
||||
(28732, 0, 0, 0, 0, 0, 100, 0, 2000, 5000, 6000, 8000, 0, 0, 11, 52532, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Anub\'ar Warrior - In Combat - Cast \'Strike\''),
|
||||
(28732, 0, 1, 0, 0, 0, 100, 0, 2000, 10000, 15000, 15000, 0, 0, 11, 49806, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Anub\'ar Warrior - In Combat - Cast \'Cleave\''),
|
||||
(28732, 0, 2, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 0, 39, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Anub\'ar Warrior - On Aggro - Call For Help'),
|
||||
(28733, 0, 0, 0, 0, 0, 100, 0, 0, 0, 2000, 2500, 0, 0, 11, 52534, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Anub\'ar Shadowcaster - In Combat - Cast \'Shadow Bolt\''),
|
||||
(28733, 0, 1, 0, 0, 0, 100, 0, 6000, 12000, 12000, 20000, 0, 0, 11, 52535, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Anub\'ar Shadowcaster - In Combat - Cast \'Shadow Nova\''),
|
||||
(28733, 0, 2, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 0, 39, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Anub\'ar Shadowcaster - On Aggro - Call For Help'),
|
||||
(28734, 0, 0, 0, 67, 0, 100, 0, 7000, 7000, 7000, 7000, 0, 5, 11, 52540, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Anub\'ar Skirmisher - On Behind Target - Cast \'Backstab\''),
|
||||
(28734, 0, 1, 0, 0, 0, 100, 0, 5000, 10000, 15000, 15000, 0, 0, 11, 52536, 0, 0, 0, 0, 0, 5, 40, 0, 0, 0, 0, 0, 0, 0, 'Anub\'ar Skirmisher - In Combat - Cast \'Fixate Trigger\''),
|
||||
(28734, 0, 2, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 0, 39, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Anub\'ar Skirmisher - On Aggro - Call For Help');
|
||||
@@ -1,8 +0,0 @@
|
||||
-- DB update 2025_11_17_02 -> 2025_11_17_03
|
||||
--
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 26814) AND (`source_type` = 0) AND (`id` IN (2, 4, 21, 32));
|
||||
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`, `event_param6`, `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
|
||||
(26814, 0, 2, 32, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 71, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Harrison Jones - On Respawn - Change Equipment'),
|
||||
(26814, 0, 4, 21, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Harrison Jones - On Quest \'Dun-da-Dun-tah!\' Taken - Store Targetlist'),
|
||||
(26814, 0, 21, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 83, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Harrison Jones - On Quest \'Dun-da-Dun-tah!\' Taken - Remove Npc Flags Questgiver'),
|
||||
(26814, 0, 32, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 82, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Harrison Jones - On Respawn - Add Npc Flags Questgiver');
|
||||
2
deps/boost/CMakeLists.txt
vendored
2
deps/boost/CMakeLists.txt
vendored
@@ -32,7 +32,7 @@ else()
|
||||
endif()
|
||||
|
||||
# Boost.System is header-only since 1.69; do not require it explicitly.
|
||||
find_package(Boost ${BOOST_REQUIRED_VERSION} REQUIRED COMPONENTS filesystem program_options iostreams regex)
|
||||
find_package(Boost ${BOOST_REQUIRED_VERSION} REQUIRED COMPONENTS filesystem program_options iostreams regex thread)
|
||||
|
||||
if(NOT Boost_FOUND)
|
||||
if(NOT DEFINED ENV{Boost_ROOT} AND NOT DEFINED Boost_DIR AND NOT DEFINED BOOST_ROOT AND NOT DEFINED BOOSTROOT)
|
||||
|
||||
2
deps/recastnavigation/Detour/CMakeLists.txt
vendored
2
deps/recastnavigation/Detour/CMakeLists.txt
vendored
@@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
|
||||
# Copyright (C) 2016+ AzerothCore <www.azerothcore.org>
|
||||
# Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE
|
||||
#
|
||||
# This file is free software; as a special exception the author gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
|
||||
2
deps/recastnavigation/Recast/CMakeLists.txt
vendored
2
deps/recastnavigation/Recast/CMakeLists.txt
vendored
@@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
|
||||
# Copyright (C) 2016+ AzerothCore <www.azerothcore.org>
|
||||
# Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE
|
||||
#
|
||||
# This file is free software; as a special exception the author gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
|
||||
@@ -414,7 +414,7 @@ minimal-dynamic - builds commands and spells dynamically. Now don't support
|
||||
- Example loader script for modules:
|
||||
```cpp
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
// From SC
|
||||
|
||||
7
doc/changelog/pendings/changes_1647137971165231200.md
Normal file
7
doc/changelog/pendings/changes_1647137971165231200.md
Normal file
@@ -0,0 +1,7 @@
|
||||
### Added
|
||||
|
||||
- New hook for OnQuestComputeXP(). The intended use is to change the XP values for certain quests programmatically. The hook is triggered after XP calculation and before rewarding XP or gold to the player.
|
||||
|
||||
### How to upgrade
|
||||
|
||||
- No special changes needed. The new hook is available for use and should not interfere with any existing hooks or logic.
|
||||
@@ -77,6 +77,7 @@ services:
|
||||
AC_LOGIN_DATABASE_INFO: "ac-database;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth"
|
||||
AC_WORLD_DATABASE_INFO: "ac-database;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world"
|
||||
AC_CHARACTER_DATABASE_INFO: "ac-database;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters"
|
||||
AC_PLAYERBOTS_DATABASE_INFO: "ac-database;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_playerbots"
|
||||
ports:
|
||||
- ${DOCKER_WORLD_EXTERNAL_PORT:-8085}:8085
|
||||
- ${DOCKER_SOAP_EXTERNAL_PORT:-7878}:7878
|
||||
|
||||
@@ -37,6 +37,7 @@ set("AC_MODULE_LIST" "")
|
||||
set("AC_SCRIPTS_LIST" "")
|
||||
set(MOD_ALE_FOUND 0)
|
||||
set(MOD_ALE_PATH "")
|
||||
set(MOD_PLAYERBOTS_FOUND 0)
|
||||
|
||||
foreach(include ${AC_ADD_SCRIPTS_INCLUDE})
|
||||
set("AC_SCRIPTS_INCLUDES" "#include \"${include}\"\n${AC_SCRIPTS_INCLUDES}")
|
||||
@@ -81,6 +82,16 @@ foreach(SOURCE_MODULE ${MODULES_MODULE_LIST})
|
||||
ConfigureALEModule(${SOURCE_MODULE})
|
||||
endif()
|
||||
|
||||
if (SOURCE_MODULE MATCHES "mod-playerbots")
|
||||
set(MOD_PLAYERBOTS_FOUND 1)
|
||||
target_compile_options(database
|
||||
PRIVATE
|
||||
-DMOD_PLAYERBOTS)
|
||||
target_compile_options(game-interface
|
||||
INTERFACE
|
||||
-DMOD_PLAYERBOTS)
|
||||
endif()
|
||||
|
||||
# Build the Graph values
|
||||
if(${MODULE_MODULE_VARIABLE} MATCHES "dynamic")
|
||||
GetProjectNameOfModuleName(${SOURCE_MODULE} MODULE_SOURCE_PROJECT_NAME)
|
||||
@@ -289,6 +300,7 @@ endif()
|
||||
target_link_libraries(modules
|
||||
PRIVATE
|
||||
acore-core-interface
|
||||
mysql
|
||||
PUBLIC
|
||||
game-interface)
|
||||
|
||||
@@ -363,6 +375,12 @@ target_compile_options(modules
|
||||
INTERFACE
|
||||
-DCONFIG_FILE_LIST=$<1:"${CONFIG_LIST}">)
|
||||
|
||||
if (MOD_PLAYERBOTS_FOUND)
|
||||
target_compile_options(modules
|
||||
PRIVATE
|
||||
-DMOD_PLAYERBOTS)
|
||||
endif()
|
||||
|
||||
if (MOD_ALE_FOUND)
|
||||
if (APPLE)
|
||||
target_compile_definitions(modules
|
||||
|
||||
@@ -70,7 +70,6 @@ private:
|
||||
{
|
||||
tree.clear();
|
||||
objects.clear();
|
||||
bounds = G3D::AABox::empty();
|
||||
// create space for the first node
|
||||
tree.push_back(3u << 30u); // dummy leaf
|
||||
tree.insert(tree.end(), 2, 0);
|
||||
@@ -117,7 +116,6 @@ public:
|
||||
delete[] dat.indices;
|
||||
}
|
||||
[[nodiscard]] uint32 primCount() const { return objects.size(); }
|
||||
G3D::AABox const& bound() const { return bounds; }
|
||||
|
||||
template<typename RayCallback>
|
||||
void intersectRay(const G3D::Ray& r, RayCallback& intersectCallback, float& maxDist, bool stopAtFirstHit) const
|
||||
|
||||
@@ -170,6 +170,25 @@ private:
|
||||
VMAP::ModelIgnoreFlags _ignoreFlags;
|
||||
};
|
||||
|
||||
struct DynamicTreeAreaInfoCallback
|
||||
{
|
||||
DynamicTreeAreaInfoCallback(uint32 phaseMask) : _phaseMask(phaseMask) { }
|
||||
|
||||
void operator()(G3D::Vector3 const& p, GameObjectModel const& obj)
|
||||
{
|
||||
obj.IntersectPoint(p, _areaInfo, _phaseMask);
|
||||
}
|
||||
|
||||
VMAP::AreaInfo const& GetAreaInfo() const
|
||||
{
|
||||
return _areaInfo;
|
||||
}
|
||||
|
||||
private:
|
||||
uint32 _phaseMask;
|
||||
VMAP::AreaInfo _areaInfo;
|
||||
};
|
||||
|
||||
struct DynamicTreeLocationInfoCallback
|
||||
{
|
||||
DynamicTreeLocationInfoCallback(uint32 phaseMask)
|
||||
@@ -289,7 +308,24 @@ float DynamicMapTree::getHeight(float x, float y, float z, float maxSearchDist,
|
||||
}
|
||||
}
|
||||
|
||||
bool DynamicMapTree::GetAreaAndLiquidData(float x, float y, float z, uint32 phasemask, Optional<uint8> reqLiquidType, VMAP::AreaAndLiquidData& data) const
|
||||
bool DynamicMapTree::GetAreaInfo(float x, float y, float& z, uint32 phasemask, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const
|
||||
{
|
||||
G3D::Vector3 v(x, y, z + 0.5f);
|
||||
DynamicTreeAreaInfoCallback intersectionCallBack(phasemask);
|
||||
impl->intersectPoint(v, intersectionCallBack);
|
||||
if (intersectionCallBack.GetAreaInfo().result)
|
||||
{
|
||||
flags = intersectionCallBack.GetAreaInfo().flags;
|
||||
adtId = intersectionCallBack.GetAreaInfo().adtId;
|
||||
rootId = intersectionCallBack.GetAreaInfo().rootId;
|
||||
groupId = intersectionCallBack.GetAreaInfo().groupId;
|
||||
z = intersectionCallBack.GetAreaInfo().ground_Z;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void DynamicMapTree::GetAreaAndLiquidData(float x, float y, float z, uint32 phasemask, uint8 reqLiquidType, VMAP::AreaAndLiquidData& data) const
|
||||
{
|
||||
G3D::Vector3 v(x, y, z + 0.5f);
|
||||
DynamicTreeLocationInfoCallback intersectionCallBack(phasemask);
|
||||
@@ -299,16 +335,13 @@ bool DynamicMapTree::GetAreaAndLiquidData(float x, float y, float z, uint32 phas
|
||||
data.floorZ = intersectionCallBack.GetLocationInfo().ground_Z;
|
||||
uint32 liquidType = intersectionCallBack.GetLocationInfo().hitModel->GetLiquidType();
|
||||
float liquidLevel;
|
||||
if (!reqLiquidType || (dynamic_cast<VMAP::VMapMgr2*>(VMAP::VMapFactory::createOrGetVMapMgr())->GetLiquidFlagsPtr(liquidType) & *reqLiquidType))
|
||||
if (!reqLiquidType || (dynamic_cast<VMAP::VMapMgr2*>(VMAP::VMapFactory::createOrGetVMapMgr())->GetLiquidFlagsPtr(liquidType) & reqLiquidType))
|
||||
if (intersectionCallBack.GetHitModel()->GetLiquidLevel(v, intersectionCallBack.GetLocationInfo(), liquidLevel))
|
||||
data.liquidInfo.emplace(liquidType, liquidLevel);
|
||||
|
||||
data.areaInfo.emplace(intersectionCallBack.GetLocationInfo().hitModel->GetWmoID(),
|
||||
0,
|
||||
data.areaInfo.emplace(0,
|
||||
intersectionCallBack.GetLocationInfo().rootId,
|
||||
intersectionCallBack.GetLocationInfo().hitModel->GetMogpFlags(),
|
||||
0);
|
||||
return true;
|
||||
intersectionCallBack.GetLocationInfo().hitModel->GetWmoID(),
|
||||
intersectionCallBack.GetLocationInfo().hitModel->GetMogpFlags());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
#define _DYNTREE_H
|
||||
|
||||
#include "Define.h"
|
||||
#include "Optional.h"
|
||||
|
||||
namespace G3D
|
||||
{
|
||||
@@ -48,7 +47,8 @@ public:
|
||||
|
||||
bool GetIntersectionTime(uint32 phasemask, const G3D::Ray& ray, const G3D::Vector3& endPos, float& maxDist) const;
|
||||
|
||||
bool GetAreaAndLiquidData(float x, float y, float z, uint32 phasemask, Optional<uint8> reqLiquidType, VMAP::AreaAndLiquidData& data) const;
|
||||
bool GetAreaInfo(float x, float y, float& z, uint32 phasemask, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const;
|
||||
void GetAreaAndLiquidData(float x, float y, float z, uint32 phasemask, uint8 reqLiquidType, VMAP::AreaAndLiquidData& data) const;
|
||||
|
||||
bool GetObjectHitPos(uint32 phasemask, const G3D::Vector3& pPos1,
|
||||
const G3D::Vector3& pPos2, G3D::Vector3& pResultHitPos,
|
||||
|
||||
@@ -52,23 +52,20 @@ namespace VMAP
|
||||
{
|
||||
struct AreaInfo
|
||||
{
|
||||
AreaInfo() = default;
|
||||
AreaInfo(int32 _groupId, int32 _adtId, int32 _rootId, uint32 _mogpFlags, uint32 _uniqueId)
|
||||
: groupId(_groupId), adtId(_adtId), rootId(_rootId), mogpFlags(_mogpFlags), uniqueId(_uniqueId) { }
|
||||
int32 groupId = 0;
|
||||
int32 adtId = 0;
|
||||
int32 rootId = 0;
|
||||
uint32 mogpFlags = 0;
|
||||
uint32 uniqueId = 0;
|
||||
AreaInfo(int32 _adtId, int32 _rootId, int32 _groupId, uint32 _flags)
|
||||
: adtId(_adtId), rootId(_rootId), groupId(_groupId), mogpFlags(_flags) { }
|
||||
int32 const adtId;
|
||||
int32 const rootId;
|
||||
int32 const groupId;
|
||||
uint32 const mogpFlags;
|
||||
};
|
||||
|
||||
struct LiquidInfo
|
||||
{
|
||||
LiquidInfo() = default;
|
||||
LiquidInfo(uint32 _type, float _level)
|
||||
: type(_type), level(_level) {}
|
||||
uint32 type = 0;
|
||||
float level = 0.0f;
|
||||
uint32 const type;
|
||||
float const level;
|
||||
};
|
||||
|
||||
float floorZ = VMAP_INVALID_HEIGHT;
|
||||
@@ -123,12 +120,14 @@ namespace VMAP
|
||||
[[nodiscard]] bool isMapLoadingEnabled() const { return (iEnableLineOfSightCalc || iEnableHeightCalc ); }
|
||||
|
||||
[[nodiscard]] virtual std::string getDirFileName(unsigned int pMapId, int x, int y) const = 0;
|
||||
|
||||
/**
|
||||
Query world model area info.
|
||||
\param z gets adjusted to the ground height for which this are info is valid
|
||||
*/
|
||||
virtual bool GetAreaAndLiquidData(uint32 mapId, float x, float y, float z, Optional<uint8> reqLiquidType, AreaAndLiquidData& data) const = 0;
|
||||
virtual bool GetAreaInfo(uint32 pMapId, float x, float y, float& z, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const = 0;
|
||||
virtual bool GetLiquidLevel(uint32 pMapId, float x, float y, float z, uint8 ReqLiquidType, float& level, float& floor, uint32& type, uint32& mogpFlags) const = 0;
|
||||
// get both area + liquid data in a single vmap lookup
|
||||
virtual void GetAreaAndLiquidData(uint32 mapId, float x, float y, float z, uint8 reqLiquidType, AreaAndLiquidData& data) const = 0;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -138,7 +138,8 @@ namespace MMAP
|
||||
uint32 packedGridPos = packTileID(x, y);
|
||||
if (mmap->loadedTileRefs.find(packedGridPos) != mmap->loadedTileRefs.end())
|
||||
{
|
||||
LOG_ERROR("maps", "MMAP:loadMap: Asked to load already loaded navmesh tile. {:03}{:02}{:02}.mmtile", mapId, x, y);
|
||||
// Peiru: Commented out for now because Playerbots system uses this method to load or check loaded maps and will spam logs
|
||||
// LOG_ERROR("maps", "MMAP:loadMap: Asked to load already loaded navmesh tile. {:03}{:02}{:02}.mmtile", mapId, x, y);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -253,8 +253,70 @@ namespace VMAP
|
||||
return VMAP_INVALID_HEIGHT_VALUE;
|
||||
}
|
||||
|
||||
bool VMapMgr2::GetAreaAndLiquidData(uint32 mapId, float x, float y, float z, Optional<uint8> reqLiquidType, AreaAndLiquidData& data) const
|
||||
bool VMapMgr2::GetAreaInfo(uint32 mapId, float x, float y, float& z, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const
|
||||
{
|
||||
#if defined(ENABLE_VMAP_CHECKS)
|
||||
if (!IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_AREAFLAG))
|
||||
#endif
|
||||
{
|
||||
InstanceTreeMap::const_iterator instanceTree = GetMapTree(mapId);
|
||||
if (instanceTree != iInstanceMapTrees.end())
|
||||
{
|
||||
Vector3 pos = convertPositionToInternalRep(x, y, z);
|
||||
bool result = instanceTree->second->GetAreaInfo(pos, flags, adtId, rootId, groupId);
|
||||
// z is not touched by convertPositionToInternalRep(), so just copy
|
||||
z = pos.z;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool VMapMgr2::GetLiquidLevel(uint32 mapId, float x, float y, float z, uint8 reqLiquidType, float& level, float& floor, uint32& type, uint32& mogpFlags) const
|
||||
{
|
||||
#if defined(ENABLE_VMAP_CHECKS)
|
||||
if (!IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_LIQUIDSTATUS))
|
||||
#endif
|
||||
{
|
||||
InstanceTreeMap::const_iterator instanceTree = GetMapTree(mapId);
|
||||
if (instanceTree != iInstanceMapTrees.end())
|
||||
{
|
||||
LocationInfo info;
|
||||
Vector3 pos = convertPositionToInternalRep(x, y, z);
|
||||
if (instanceTree->second->GetLocationInfo(pos, info))
|
||||
{
|
||||
floor = info.ground_Z;
|
||||
ASSERT(floor < std::numeric_limits<float>::max());
|
||||
type = info.hitModel->GetLiquidType(); // entry from LiquidType.dbc
|
||||
mogpFlags = info.hitModel->GetMogpFlags();
|
||||
if (reqLiquidType && !(GetLiquidFlagsPtr(type) & reqLiquidType))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (info.hitInstance->GetLiquidLevel(pos, info, level))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void VMapMgr2::GetAreaAndLiquidData(uint32 mapId, float x, float y, float z, uint8 reqLiquidType, AreaAndLiquidData& data) const
|
||||
{
|
||||
if (IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_LIQUIDSTATUS))
|
||||
{
|
||||
data.floorZ = z;
|
||||
int32 adtId, rootId, groupId;
|
||||
uint32 flags;
|
||||
if (GetAreaInfo(mapId, x, y, data.floorZ, flags, adtId, rootId, groupId))
|
||||
data.areaInfo.emplace(adtId, rootId, groupId, flags);
|
||||
return;
|
||||
}
|
||||
|
||||
InstanceTreeMap::const_iterator instanceTree = GetMapTree(mapId);
|
||||
if (instanceTree != iInstanceMapTrees.end())
|
||||
{
|
||||
@@ -263,22 +325,16 @@ namespace VMAP
|
||||
if (instanceTree->second->GetLocationInfo(pos, info))
|
||||
{
|
||||
data.floorZ = info.ground_Z;
|
||||
if (!IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_LIQUIDSTATUS))
|
||||
{
|
||||
uint32 liquidType = info.hitModel->GetLiquidType(); // entry from LiquidType.dbc
|
||||
float liquidLevel;
|
||||
if (!reqLiquidType || (GetLiquidFlagsPtr(liquidType) & *reqLiquidType))
|
||||
if (info.hitInstance->GetLiquidLevel(pos, info, liquidLevel))
|
||||
data.liquidInfo.emplace(liquidType, liquidLevel);
|
||||
}
|
||||
uint32 liquidType = info.hitModel->GetLiquidType();
|
||||
float liquidLevel;
|
||||
if (!reqLiquidType || (GetLiquidFlagsPtr(liquidType) & reqLiquidType))
|
||||
if (info.hitInstance->GetLiquidLevel(pos, info, liquidLevel))
|
||||
data.liquidInfo.emplace(liquidType, liquidLevel);
|
||||
|
||||
if (!IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_AREAFLAG))
|
||||
data.areaInfo.emplace(info.hitModel->GetWmoID(), info.hitInstance->adtId, info.rootId, info.hitModel->GetMogpFlags(), info.hitInstance->ID);
|
||||
return true;
|
||||
data.areaInfo.emplace(info.hitInstance->adtId, info.rootId, info.hitModel->GetWmoID(), info.hitModel->GetMogpFlags());
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
WorldModel* VMapMgr2::acquireModelInstance(const std::string& basepath, const std::string& filename, uint32 flags/* Only used when creating the model */)
|
||||
|
||||
@@ -115,7 +115,9 @@ namespace VMAP
|
||||
|
||||
bool processCommand(char* /*command*/) override { return false; } // for debug and extensions
|
||||
|
||||
bool GetAreaAndLiquidData(uint32 mapId, float x, float y, float z, Optional<uint8> reqLiquidType, AreaAndLiquidData& data) const override;
|
||||
bool GetAreaInfo(uint32 pMapId, float x, float y, float& z, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const override;
|
||||
bool GetLiquidLevel(uint32 pMapId, float x, float y, float z, uint8 reqLiquidType, float& level, float& floor, uint32& type, uint32& mogpFlags) const override;
|
||||
void GetAreaAndLiquidData(uint32 mapId, float x, float y, float z, uint8 reqLiquidType, AreaAndLiquidData& data) const override;
|
||||
|
||||
WorldModel* acquireModelInstance(const std::string& basepath, const std::string& filename, uint32 flags);
|
||||
void releaseModelInstance(const std::string& filename);
|
||||
|
||||
@@ -51,6 +51,22 @@ namespace VMAP
|
||||
bool hit;
|
||||
};
|
||||
|
||||
class AreaInfoCallback
|
||||
{
|
||||
public:
|
||||
AreaInfoCallback(ModelInstance* val): prims(val) {}
|
||||
void operator()(const Vector3& point, uint32 entry)
|
||||
{
|
||||
#if defined(VMAP_DEBUG)
|
||||
LOG_DEBUG("maps", "AreaInfoCallback: trying to intersect '{}'", prims[entry].name);
|
||||
#endif
|
||||
prims[entry].intersectPoint(point, aInfo);
|
||||
}
|
||||
|
||||
ModelInstance* prims;
|
||||
AreaInfo aInfo;
|
||||
};
|
||||
|
||||
class LocationInfoCallback
|
||||
{
|
||||
public:
|
||||
@@ -83,6 +99,22 @@ namespace VMAP
|
||||
return tilefilename.str();
|
||||
}
|
||||
|
||||
bool StaticMapTree::GetAreaInfo(Vector3& pos, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const
|
||||
{
|
||||
AreaInfoCallback intersectionCallBack(iTreeValues);
|
||||
iTree.intersectPoint(pos, intersectionCallBack);
|
||||
if (intersectionCallBack.aInfo.result)
|
||||
{
|
||||
flags = intersectionCallBack.aInfo.flags;
|
||||
adtId = intersectionCallBack.aInfo.adtId;
|
||||
rootId = intersectionCallBack.aInfo.rootId;
|
||||
groupId = intersectionCallBack.aInfo.groupId;
|
||||
pos.z = intersectionCallBack.aInfo.ground_Z;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool StaticMapTree::GetLocationInfo(const Vector3& pos, LocationInfo& info) const
|
||||
{
|
||||
LocationInfoCallback intersectionCallBack(iTreeValues, info);
|
||||
|
||||
@@ -30,12 +30,6 @@ namespace VMAP
|
||||
enum class ModelIgnoreFlags : uint32;
|
||||
enum class LoadResult : uint8;
|
||||
|
||||
struct GroupLocationInfo
|
||||
{
|
||||
const GroupModel* hitModel = nullptr;
|
||||
int32 rootId = -1;
|
||||
};
|
||||
|
||||
struct LocationInfo
|
||||
{
|
||||
LocationInfo(): ground_Z(-G3D::inf()) { }
|
||||
@@ -79,6 +73,7 @@ namespace VMAP
|
||||
[[nodiscard]] bool isInLineOfSight(const G3D::Vector3& pos1, const G3D::Vector3& pos2, ModelIgnoreFlags ignoreFlags) const;
|
||||
bool GetObjectHitPos(const G3D::Vector3& pos1, const G3D::Vector3& pos2, G3D::Vector3& pResultHitPos, float pModifyDist) const;
|
||||
[[nodiscard]] float getHeight(const G3D::Vector3& pPos, float maxSearchDist) const;
|
||||
bool GetAreaInfo(G3D::Vector3& pos, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const;
|
||||
bool GetLocationInfo(const G3D::Vector3& pos, LocationInfo& info) const;
|
||||
|
||||
bool InitMap(const std::string& fname, VMapMgr2* vm);
|
||||
|
||||
@@ -203,6 +203,27 @@ bool GameObjectModel::intersectRay(const G3D::Ray& ray, float& MaxDist, bool Sto
|
||||
return hit;
|
||||
}
|
||||
|
||||
void GameObjectModel::IntersectPoint(G3D::Vector3 const& point, VMAP::AreaInfo& info, uint32 ph_mask) const
|
||||
{
|
||||
if (!(phasemask & ph_mask) || !owner->IsSpawned() || !IsMapObject())
|
||||
return;
|
||||
|
||||
if (!iBound.contains(point))
|
||||
return;
|
||||
|
||||
// child bounds are defined in object space:
|
||||
Vector3 pModel = iInvRot * (point - iPos) * iInvScale;
|
||||
Vector3 zDirModel = iInvRot * Vector3(0.f, 0.f, -1.f);
|
||||
float zDist;
|
||||
if (iModel->IntersectPoint(pModel, zDirModel, zDist, info))
|
||||
{
|
||||
Vector3 modelGround = pModel + zDist * zDirModel;
|
||||
float world_Z = ((modelGround * iInvRot) * iScale + iPos).z;
|
||||
if (info.ground_Z < world_Z)
|
||||
info.ground_Z = world_Z;
|
||||
}
|
||||
}
|
||||
|
||||
bool GameObjectModel::GetLocationInfo(G3D::Vector3 const& point, VMAP::LocationInfo& info, uint32 ph_mask) const
|
||||
{
|
||||
if (!(phasemask & ph_mask) || !owner->IsSpawned() || !IsMapObject())
|
||||
@@ -215,9 +236,7 @@ bool GameObjectModel::GetLocationInfo(G3D::Vector3 const& point, VMAP::LocationI
|
||||
Vector3 pModel = iInvRot * (point - iPos) * iInvScale;
|
||||
Vector3 zDirModel = iInvRot * Vector3(0.f, 0.f, -1.f);
|
||||
float zDist;
|
||||
|
||||
VMAP::GroupLocationInfo groupInfo;
|
||||
if (iModel->GetLocationInfo(pModel, zDirModel, zDist, groupInfo))
|
||||
if (iModel->GetLocationInfo(pModel, zDirModel, zDist, info))
|
||||
{
|
||||
Vector3 modelGround = pModel + zDist * zDirModel;
|
||||
float world_Z = ((modelGround * iInvRot) * iScale + iPos).z;
|
||||
|
||||
@@ -70,6 +70,7 @@ public:
|
||||
[[nodiscard]] bool IsMapObject() const { return isWmo; }
|
||||
|
||||
bool intersectRay(const G3D::Ray& Ray, float& MaxDist, bool StopAtFirstHit, uint32 ph_mask, VMAP::ModelIgnoreFlags ignoreFlags) const;
|
||||
void IntersectPoint(G3D::Vector3 const& point, VMAP::AreaInfo& info, uint32 ph_mask) const;
|
||||
bool GetLocationInfo(G3D::Vector3 const& point, VMAP::LocationInfo& info, uint32 ph_mask) const;
|
||||
bool GetLiquidLevel(G3D::Vector3 const& point, VMAP::LocationInfo& info, float& liqHeight) const;
|
||||
|
||||
|
||||
@@ -63,6 +63,44 @@ namespace VMAP
|
||||
return hit;
|
||||
}
|
||||
|
||||
void ModelInstance::intersectPoint(const G3D::Vector3& p, AreaInfo& info) const
|
||||
{
|
||||
if (!iModel)
|
||||
{
|
||||
#ifdef VMAP_DEBUG
|
||||
std::cout << "<object not loaded>\n";
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
// M2 files don't contain area info, only WMO files
|
||||
if (flags & MOD_M2)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!iBound.contains(p))
|
||||
{
|
||||
return;
|
||||
}
|
||||
// child bounds are defined in object space:
|
||||
Vector3 pModel = iInvRot * (p - iPos) * iInvScale;
|
||||
Vector3 zDirModel = iInvRot * Vector3(0.f, 0.f, -1.f);
|
||||
float zDist;
|
||||
if (iModel->IntersectPoint(pModel, zDirModel, zDist, info))
|
||||
{
|
||||
Vector3 modelGround = pModel + zDist * zDirModel;
|
||||
// Transform back to world space. Note that:
|
||||
// Mat * vec == vec * Mat.transpose()
|
||||
// and for rotation matrices: Mat.inverse() == Mat.transpose()
|
||||
float world_Z = ((modelGround * iInvRot) * iScale + iPos).z;
|
||||
if (info.ground_Z < world_Z)
|
||||
{
|
||||
info.ground_Z = world_Z;
|
||||
info.adtId = adtId;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool ModelInstance::GetLocationInfo(const G3D::Vector3& p, LocationInfo& info) const
|
||||
{
|
||||
if (!iModel)
|
||||
@@ -86,9 +124,7 @@ namespace VMAP
|
||||
Vector3 pModel = iInvRot * (p - iPos) * iInvScale;
|
||||
Vector3 zDirModel = iInvRot * Vector3(0.f, 0.f, -1.f);
|
||||
float zDist;
|
||||
|
||||
GroupLocationInfo groupInfo;
|
||||
if (iModel->GetLocationInfo(pModel, zDirModel, zDist, groupInfo))
|
||||
if (iModel->GetLocationInfo(pModel, zDirModel, zDist, info))
|
||||
{
|
||||
Vector3 modelGround = pModel + zDist * zDirModel;
|
||||
// Transform back to world space. Note that:
|
||||
@@ -97,8 +133,6 @@ namespace VMAP
|
||||
float world_Z = ((modelGround * iInvRot) * iScale + iPos).z;
|
||||
if (info.ground_Z < world_Z) // hm...could it be handled automatically with zDist at intersection?
|
||||
{
|
||||
info.rootId = groupInfo.rootId;
|
||||
info.hitModel = groupInfo.hitModel;
|
||||
info.ground_Z = world_Z;
|
||||
info.hitInstance = this;
|
||||
return true;
|
||||
|
||||
@@ -66,6 +66,7 @@ namespace VMAP
|
||||
ModelInstance(const ModelSpawn& spawn, WorldModel* model);
|
||||
void setUnloaded() { iModel = nullptr; }
|
||||
bool intersectRay(const G3D::Ray& pRay, float& pMaxDist, bool StopAtFirstHit, ModelIgnoreFlags ignoreFlags) const;
|
||||
void intersectPoint(const G3D::Vector3& p, AreaInfo& info) const;
|
||||
bool GetLocationInfo(const G3D::Vector3& p, LocationInfo& info) const;
|
||||
bool GetLiquidLevel(const G3D::Vector3& p, LocationInfo& info, float& liqHeight) const;
|
||||
WorldModel* getWorldModel() { return iModel; }
|
||||
|
||||
@@ -20,9 +20,9 @@
|
||||
#include "ModelIgnoreFlags.h"
|
||||
#include "ModelInstance.h"
|
||||
#include "VMapDefinitions.h"
|
||||
#include <array>
|
||||
|
||||
using G3D::Vector3;
|
||||
using G3D::Ray;
|
||||
|
||||
template<> struct BoundsTrait<VMAP::GroupModel>
|
||||
{
|
||||
@@ -451,46 +451,21 @@ namespace VMAP
|
||||
return callback.hit;
|
||||
}
|
||||
|
||||
inline bool IsInsideOrAboveBound(G3D::AABox const& bounds, const G3D::Point3& point)
|
||||
bool GroupModel::IsInsideObject(const Vector3& pos, const Vector3& down, float& z_dist) const
|
||||
{
|
||||
return point.x >= bounds.low().x
|
||||
&& point.y >= bounds.low().y
|
||||
&& point.z >= bounds.low().z
|
||||
&& point.x <= bounds.high().x
|
||||
&& point.y <= bounds.high().y;
|
||||
}
|
||||
|
||||
GroupModel::InsideResult GroupModel::IsInsideObject(G3D::Ray const& ray, float& z_dist) const
|
||||
{
|
||||
if (triangles.empty() || !IsInsideOrAboveBound(iBound, ray.origin()))
|
||||
return OUT_OF_BOUNDS;
|
||||
|
||||
if (meshTree.bound().high().z >= ray.origin().z)
|
||||
if (triangles.empty() || !iBound.contains(pos))
|
||||
{
|
||||
float dist = G3D::finf();
|
||||
if (IntersectRay(ray, dist, false))
|
||||
{
|
||||
z_dist = dist - 0.1f;
|
||||
return INSIDE;
|
||||
}
|
||||
if (meshTree.bound().contains(ray.origin()))
|
||||
return MAYBE_INSIDE;
|
||||
return false;
|
||||
}
|
||||
else
|
||||
Vector3 rPos = pos - 0.1f * down;
|
||||
float dist = G3D::inf();
|
||||
G3D::Ray ray(rPos, down);
|
||||
bool hit = IntersectRay(ray, dist, false);
|
||||
if (hit)
|
||||
{
|
||||
// some group models don't have any floor to intersect with
|
||||
// so we should attempt to intersect with a model part below this group
|
||||
// then find back where we originated from (in WorldModel::GetLocationInfo)
|
||||
float dist = G3D::finf();
|
||||
float delta = ray.origin().z - meshTree.bound().high().z;
|
||||
if (IntersectRay(ray.bumpedRay(delta), dist, false))
|
||||
{
|
||||
z_dist = dist - 0.1f + delta;
|
||||
return ABOVE;
|
||||
}
|
||||
z_dist = dist - 0.1f;
|
||||
}
|
||||
|
||||
return OUT_OF_BOUNDS;
|
||||
return hit;
|
||||
}
|
||||
|
||||
bool GroupModel::GetLiquidLevel(const Vector3& pos, float& liqHeight) const
|
||||
@@ -566,58 +541,76 @@ namespace VMAP
|
||||
class WModelAreaCallback
|
||||
{
|
||||
public:
|
||||
WModelAreaCallback(std::vector<GroupModel> const& vals) :
|
||||
prims(vals), hit() { }
|
||||
std::vector<GroupModel> const& prims;
|
||||
std::array<GroupModel const*, 3> hit;
|
||||
bool operator()(G3D::Ray const& ray, uint32 entry, float& distance, bool /*stopAtFirstHit*/)
|
||||
WModelAreaCallback(const std::vector<GroupModel>& vals, const Vector3& down):
|
||||
prims(vals.begin()), hit(vals.end()), minVol(G3D::inf()), zDist(G3D::inf()), zVec(down) { }
|
||||
std::vector<GroupModel>::const_iterator prims;
|
||||
std::vector<GroupModel>::const_iterator hit;
|
||||
float minVol;
|
||||
float zDist;
|
||||
Vector3 zVec;
|
||||
void operator()(const Vector3& point, uint32 entry)
|
||||
{
|
||||
float group_Z;
|
||||
if (GroupModel::InsideResult result = prims[entry].IsInsideObject(ray, group_Z); result != GroupModel::OUT_OF_BOUNDS)
|
||||
//float pVol = prims[entry].GetBound().volume();
|
||||
//if (pVol < minVol)
|
||||
//{
|
||||
/* if (prims[entry].iBound.contains(point)) */
|
||||
if (prims[entry].IsInsideObject(point, zVec, group_Z))
|
||||
{
|
||||
if (result != GroupModel::MAYBE_INSIDE)
|
||||
//minVol = pVol;
|
||||
//hit = prims + entry;
|
||||
if (group_Z < zDist)
|
||||
{
|
||||
if (group_Z < distance)
|
||||
{
|
||||
distance = group_Z;
|
||||
hit[result] = &prims[entry];
|
||||
return true;
|
||||
}
|
||||
zDist = group_Z;
|
||||
hit = prims + entry;
|
||||
}
|
||||
else
|
||||
hit[result] = &prims[entry];
|
||||
#ifdef VMAP_DEBUG
|
||||
const GroupModel& gm = prims[entry];
|
||||
printf("%10u %8X %7.3f, %7.3f, %7.3f | %7.3f, %7.3f, %7.3f | z=%f, p_z=%f\n", gm.GetWmoID(), gm.GetMogpFlags(),
|
||||
gm.GetBound().low().x, gm.GetBound().low().y, gm.GetBound().low().z,
|
||||
gm.GetBound().high().x, gm.GetBound().high().y, gm.GetBound().high().z, group_Z, point.z);
|
||||
#endif
|
||||
}
|
||||
return false;
|
||||
//}
|
||||
//std::cout << "trying to intersect '" << prims[entry].name << "'\n";
|
||||
}
|
||||
};
|
||||
|
||||
bool WorldModel::GetLocationInfo(const G3D::Vector3& p, const G3D::Vector3& down, float& dist, GroupLocationInfo& info) const
|
||||
bool WorldModel::IntersectPoint(const G3D::Vector3& p, const G3D::Vector3& down, float& dist, AreaInfo& info) const
|
||||
{
|
||||
if (groupModels.empty())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
WModelAreaCallback callback(groupModels);
|
||||
G3D::Ray r(p - down * 0.1f, down);
|
||||
float zDist = groupTree.bound().extent().length();
|
||||
groupTree.intersectRay(r, callback, zDist, false);
|
||||
if (callback.hit[GroupModel::INSIDE])
|
||||
WModelAreaCallback callback(groupModels, down);
|
||||
groupTree.intersectPoint(p, callback);
|
||||
if (callback.hit != groupModels.end())
|
||||
{
|
||||
info.rootId = RootWMOID;
|
||||
info.hitModel = callback.hit[GroupModel::INSIDE];
|
||||
dist = zDist;
|
||||
info.groupId = callback.hit->GetWmoID();
|
||||
info.flags = callback.hit->GetMogpFlags();
|
||||
info.result = true;
|
||||
dist = callback.zDist;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// some group models don't have any floor to intersect with
|
||||
// so we should attempt to intersect with a model part below the group `p` is in (stored in GroupModel::ABOVE)
|
||||
// then find back where we originated from (GroupModel::MAYBE_INSIDE)
|
||||
if (callback.hit[GroupModel::MAYBE_INSIDE] && callback.hit[GroupModel::ABOVE])
|
||||
bool WorldModel::GetLocationInfo(const G3D::Vector3& p, const G3D::Vector3& down, float& dist, LocationInfo& info) const
|
||||
{
|
||||
if (groupModels.empty())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
WModelAreaCallback callback(groupModels, down);
|
||||
groupTree.intersectPoint(p, callback);
|
||||
if (callback.hit != groupModels.end())
|
||||
{
|
||||
info.rootId = RootWMOID;
|
||||
info.hitModel = callback.hit[GroupModel::MAYBE_INSIDE];
|
||||
dist = zDist;
|
||||
info.hitModel = &(*callback.hit);
|
||||
dist = callback.zDist;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -29,7 +29,6 @@ namespace VMAP
|
||||
class TreeNode;
|
||||
struct AreaInfo;
|
||||
struct LocationInfo;
|
||||
struct GroupLocationInfo;
|
||||
enum class ModelIgnoreFlags : uint32;
|
||||
|
||||
class MeshTriangle
|
||||
@@ -82,14 +81,12 @@ namespace VMAP
|
||||
void setMeshData(std::vector<G3D::Vector3>& vert, std::vector<MeshTriangle>& tri);
|
||||
void setLiquidData(WmoLiquid*& liquid) { iLiquid = liquid; liquid = nullptr; }
|
||||
bool IntersectRay(const G3D::Ray& ray, float& distance, bool stopAtFirstHit) const;
|
||||
enum InsideResult { INSIDE = 0, MAYBE_INSIDE = 1, ABOVE = 2, OUT_OF_BOUNDS = -1 };
|
||||
InsideResult IsInsideObject(G3D::Ray const& ray, float& z_dist) const;
|
||||
bool IsInsideObject(const G3D::Vector3& pos, const G3D::Vector3& down, float& z_dist) const;
|
||||
bool GetLiquidLevel(const G3D::Vector3& pos, float& liqHeight) const;
|
||||
[[nodiscard]] uint32 GetLiquidType() const;
|
||||
bool writeToFile(FILE* wf);
|
||||
bool readFromFile(FILE* rf);
|
||||
[[nodiscard]] G3D::AABox const& GetBound() const { return iBound; }
|
||||
[[nodiscard]] G3D::AABox const& GetMeshTreeBound() const { return meshTree.bound(); }
|
||||
[[nodiscard]] const G3D::AABox& GetBound() const { return iBound; }
|
||||
[[nodiscard]] uint32 GetMogpFlags() const { return iMogpFlags; }
|
||||
[[nodiscard]] uint32 GetWmoID() const { return iGroupWMOID; }
|
||||
void GetMeshData(std::vector<G3D::Vector3>& outVertices, std::vector<MeshTriangle>& outTriangles, WmoLiquid*& liquid);
|
||||
@@ -112,7 +109,8 @@ namespace VMAP
|
||||
void setGroupModels(std::vector<GroupModel>& models);
|
||||
void setRootWmoID(uint32 id) { RootWMOID = id; }
|
||||
bool IntersectRay(const G3D::Ray& ray, float& distance, bool stopAtFirstHit, ModelIgnoreFlags ignoreFlags) const;
|
||||
bool GetLocationInfo(const G3D::Vector3& p, const G3D::Vector3& down, float& dist, GroupLocationInfo& info) const;
|
||||
bool IntersectPoint(const G3D::Vector3& p, const G3D::Vector3& down, float& dist, AreaInfo& info) const;
|
||||
bool GetLocationInfo(const G3D::Vector3& p, const G3D::Vector3& down, float& dist, LocationInfo& info) const;
|
||||
bool writeFile(const std::string& filename);
|
||||
bool readFile(const std::string& filename);
|
||||
void GetGroupModels(std::vector<GroupModel>& outGroupModels);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
# Copyright (C) 2016+ AzerothCore <www.azerothcore.org>
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE
|
||||
*
|
||||
* This file was based on
|
||||
* https://embeddedartistry.com/blog/2017/05/17/creating-a-circular-buffer-in-c-and-c/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Originally written by Rochet2 - Copyright (C) 2018+ AzerothCore <www.azerothcore.org>
|
||||
* Originally written by Rochet2 - Copyright (C) 2018+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: http://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
#ifndef _DATA_MAP_H_
|
||||
|
||||
@@ -97,6 +97,32 @@ public:
|
||||
return _eventMap.empty();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Current internal time as uint32 milliseconds
|
||||
*
|
||||
* was removed in core https://github.com/azerothcore/azerothcore-wotlk/pull/23121,
|
||||
* but still required atm for mod-playerbot.
|
||||
*/
|
||||
uint32 GetTimer() const
|
||||
{
|
||||
return static_cast<uint32>(duration_cast<Milliseconds>(_time.time_since_epoch()).count());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Time of found even
|
||||
*
|
||||
* was removed in core https://github.com/azerothcore/azerothcore-wotlk/pull/23121,
|
||||
* but still required atm for mod-playerbot.
|
||||
*/
|
||||
uint32 GetNextEventTime(uint16 eventId) const
|
||||
{
|
||||
auto timeUntil = GetTimeUntilEvent(eventId);
|
||||
if (timeUntil == Milliseconds::max())
|
||||
return 0;
|
||||
|
||||
return GetTimer() + static_cast<uint32>(timeUntil.count());
|
||||
}
|
||||
|
||||
/**
|
||||
* @name SetPhase
|
||||
* @brief Sets the phase of the map (absolute).
|
||||
|
||||
@@ -120,7 +120,7 @@ class EventProcessor
|
||||
[[nodiscard]] uint64 CalculateQueueTime(uint64 delay) const;
|
||||
|
||||
void CancelEventGroup(uint8 group);
|
||||
bool HasEvents() const { return !m_events.empty(); }
|
||||
bool HaveEventList() const { return !m_events.empty(); }
|
||||
|
||||
protected:
|
||||
uint64 m_time{0};
|
||||
|
||||
@@ -347,6 +347,7 @@ inline wchar_t wcharToLower(wchar_t wchar)
|
||||
|
||||
void wstrToUpper(std::wstring& str);
|
||||
void wstrToLower(std::wstring& str);
|
||||
void strToLower(std::string& str);
|
||||
|
||||
std::wstring GetMainPartOfName(std::wstring const& wname, uint32 declension);
|
||||
|
||||
|
||||
@@ -434,6 +434,11 @@ bool StartDB()
|
||||
if (!loader.Load())
|
||||
return false;
|
||||
|
||||
if (!sScriptMgr->OnDatabasesLoading())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
///- Get the realm Id from the configuration file
|
||||
realm.Id.Realm = sConfigMgr->GetOption<uint32>("RealmID", 1);
|
||||
if (!realm.Id.Realm)
|
||||
@@ -479,6 +484,8 @@ void StopDB()
|
||||
WorldDatabase.Close();
|
||||
LoginDatabase.Close();
|
||||
|
||||
sScriptMgr->OnDatabasesClosing();
|
||||
|
||||
MySQL::Library_End();
|
||||
}
|
||||
|
||||
@@ -569,6 +576,8 @@ void WorldUpdateLoop()
|
||||
CharacterDatabase.WarnAboutSyncQueries(true);
|
||||
WorldDatabase.WarnAboutSyncQueries(true);
|
||||
|
||||
sScriptMgr->OnDatabaseWarnAboutSyncQueries(true);
|
||||
|
||||
///- While we have not World::m_stopEvent, update the world
|
||||
while (!World::IsStopped())
|
||||
{
|
||||
@@ -598,6 +607,8 @@ void WorldUpdateLoop()
|
||||
#endif
|
||||
}
|
||||
|
||||
sScriptMgr->OnDatabaseWarnAboutSyncQueries(false);
|
||||
|
||||
LoginDatabase.WarnAboutSyncQueries(false);
|
||||
CharacterDatabase.WarnAboutSyncQueries(false);
|
||||
WorldDatabase.WarnAboutSyncQueries(false);
|
||||
|
||||
@@ -677,6 +677,7 @@ Allow.IP.Based.Action.Logging = 0
|
||||
|
||||
Appender.Console=1,4,0,"1 9 3 6 5 8"
|
||||
Appender.Server=2,5,0,Server.log,w
|
||||
Appender.Playerbots=2,5,0,Playerbots.log,w
|
||||
# Appender.GM=2,5,15,gm_%s.log
|
||||
Appender.Errors=2,2,0,Errors.log,w
|
||||
# Appender.DB=3,5,0
|
||||
@@ -712,6 +713,7 @@ Logger.sql=4,Console Server
|
||||
Logger.time.update=4,Console Server
|
||||
Logger.module=4,Console Server
|
||||
Logger.spells.scripts=2,Console Errors
|
||||
Logger.playerbots=5,Console Playerbots
|
||||
#Logger.achievement=4,Console Server
|
||||
#Logger.addon=4,Console Server
|
||||
#Logger.ahbot=4,Console Server
|
||||
|
||||
@@ -20,3 +20,7 @@
|
||||
DatabaseWorkerPool<WorldDatabaseConnection> WorldDatabase;
|
||||
DatabaseWorkerPool<CharacterDatabaseConnection> CharacterDatabase;
|
||||
DatabaseWorkerPool<LoginDatabaseConnection> LoginDatabase;
|
||||
|
||||
#ifdef MOD_PLAYERBOTS
|
||||
DatabaseWorkerPool<PlayerbotsDatabaseConnection> PlayerbotsDatabase;
|
||||
#endif
|
||||
|
||||
@@ -25,6 +25,10 @@
|
||||
#include "Implementation/LoginDatabase.h"
|
||||
#include "Implementation/WorldDatabase.h"
|
||||
|
||||
#ifdef MOD_PLAYERBOTS
|
||||
#include "Implementation/PlayerbotsDatabase.h"
|
||||
#endif
|
||||
|
||||
#include "PreparedStatement.h"
|
||||
#include "QueryCallback.h"
|
||||
#include "Transaction.h"
|
||||
@@ -36,4 +40,9 @@ AC_DATABASE_API extern DatabaseWorkerPool<CharacterDatabaseConnection> Character
|
||||
/// Accessor to the realm/login database
|
||||
AC_DATABASE_API extern DatabaseWorkerPool<LoginDatabaseConnection> LoginDatabase;
|
||||
|
||||
#ifdef MOD_PLAYERBOTS
|
||||
/// Accessor to the playerbots database
|
||||
AC_DATABASE_API extern DatabaseWorkerPool<PlayerbotsDatabaseConnection> PlayerbotsDatabase;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -32,6 +32,10 @@ class CharacterDatabaseConnection;
|
||||
class LoginDatabaseConnection;
|
||||
class WorldDatabaseConnection;
|
||||
|
||||
#ifdef MOD_PLAYERBOTS
|
||||
class PlayerbotsDatabaseConnection;
|
||||
#endif
|
||||
|
||||
class PreparedStatementBase;
|
||||
|
||||
template<typename T>
|
||||
@@ -41,6 +45,10 @@ using CharacterDatabasePreparedStatement = PreparedStatement<CharacterDatabaseCo
|
||||
using LoginDatabasePreparedStatement = PreparedStatement<LoginDatabaseConnection>;
|
||||
using WorldDatabasePreparedStatement = PreparedStatement<WorldDatabaseConnection>;
|
||||
|
||||
#ifdef MOD_PLAYERBOTS
|
||||
using PlayerbotsDatabasePreparedStatement = PreparedStatement<PlayerbotsDatabaseConnection>;
|
||||
#endif
|
||||
|
||||
class PreparedResultSet;
|
||||
using PreparedQueryResult = std::shared_ptr<PreparedResultSet>;
|
||||
using PreparedQueryResultFuture = std::future<PreparedQueryResult>;
|
||||
@@ -70,6 +78,10 @@ using CharacterDatabaseTransaction = SQLTransaction<CharacterDatabaseConnection>
|
||||
using LoginDatabaseTransaction = SQLTransaction<LoginDatabaseConnection>;
|
||||
using WorldDatabaseTransaction = SQLTransaction<WorldDatabaseConnection>;
|
||||
|
||||
#ifdef MOD_PLAYERBOTS
|
||||
using PlayerbotsDatabaseTransaction = SQLTransaction<PlayerbotsDatabaseConnection>;
|
||||
#endif
|
||||
|
||||
class SQLQueryHolderBase;
|
||||
using QueryResultHolderFuture = std::future<void>;
|
||||
using QueryResultHolderPromise = std::promise<void>;
|
||||
@@ -81,6 +93,10 @@ using CharacterDatabaseQueryHolder = SQLQueryHolder<CharacterDatabaseConnection>
|
||||
using LoginDatabaseQueryHolder = SQLQueryHolder<LoginDatabaseConnection>;
|
||||
using WorldDatabaseQueryHolder = SQLQueryHolder<WorldDatabaseConnection>;
|
||||
|
||||
#ifdef MOD_PLAYERBOTS
|
||||
using PlayerbotsDatabaseQueryHolder = SQLQueryHolder<PlayerbotsDatabaseConnection>;
|
||||
#endif
|
||||
|
||||
class SQLQueryHolderCallback;
|
||||
|
||||
// mysql
|
||||
|
||||
@@ -238,3 +238,8 @@ template AC_DATABASE_API
|
||||
DatabaseLoader& DatabaseLoader::AddDatabase<CharacterDatabaseConnection>(DatabaseWorkerPool<CharacterDatabaseConnection>&, std::string const&);
|
||||
template AC_DATABASE_API
|
||||
DatabaseLoader& DatabaseLoader::AddDatabase<WorldDatabaseConnection>(DatabaseWorkerPool<WorldDatabaseConnection>&, std::string const&);
|
||||
|
||||
#ifdef MOD_PLAYERBOTS
|
||||
template AC_DATABASE_API
|
||||
DatabaseLoader& DatabaseLoader::AddDatabase<PlayerbotsDatabaseConnection>(DatabaseWorkerPool<PlayerbotsDatabaseConnection>&, std::string const&);
|
||||
#endif
|
||||
|
||||
@@ -48,8 +48,12 @@ public:
|
||||
DATABASE_LOGIN = 1,
|
||||
DATABASE_CHARACTER = 2,
|
||||
DATABASE_WORLD = 4,
|
||||
|
||||
#ifdef MOD_PLAYERBOTS
|
||||
DATABASE_PLAYERBOTS = 8,
|
||||
DATABASE_MASK_ALL = DATABASE_LOGIN | DATABASE_CHARACTER | DATABASE_WORLD | DATABASE_PLAYERBOTS
|
||||
#else
|
||||
DATABASE_MASK_ALL = DATABASE_LOGIN | DATABASE_CHARACTER | DATABASE_WORLD
|
||||
#endif
|
||||
};
|
||||
|
||||
[[nodiscard]] uint32 GetUpdateFlags() const
|
||||
@@ -57,6 +61,11 @@ public:
|
||||
return _updateFlags;
|
||||
}
|
||||
|
||||
void SetUpdateFlags(uint32 newUpdateFlags)
|
||||
{
|
||||
_updateFlags |= newUpdateFlags;
|
||||
}
|
||||
|
||||
private:
|
||||
bool OpenDatabases();
|
||||
bool PopulateDatabases();
|
||||
@@ -73,7 +82,7 @@ private:
|
||||
std::string const _logger;
|
||||
std::string_view _modulesList;
|
||||
bool const _autoSetup;
|
||||
uint32 const _updateFlags;
|
||||
uint32 _updateFlags;
|
||||
|
||||
std::queue<Predicate> _open, _populate, _update, _prepare;
|
||||
std::stack<Closer> _close;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user