Compare commits

...

2104 Commits

Author SHA1 Message Date
YehonalBot f01ea80d5b fix(startup): harden startup guard parsing 2026-06-11 14:02:18 +00:00
YehonalBot ff34aa244c fix(startup): guard against duplicate server starts 2026-06-11 12:10:03 +00:00
github-actions[bot] 611a85529d chore(DB): import pending files
Referenced commit(s): 040e7a0a4d
2025-11-09 13:15:20 +00:00
Andrew 040e7a0a4d fix(DB/Creature): Despawn all instances of Superior Healing Ward (#23584) 2025-11-09 10:14:19 -03:00
github-actions[bot] d4cd580ddc chore(DB): import pending files
Referenced commit(s): 37833c66e6
2025-11-09 08:50:22 +00:00
Andrew 37833c66e6 fix(DB/Creature): Remove xp from Reclamation mobs (#23579) 2025-11-09 05:49:21 -03:00
github-actions[bot] ec274182a2 chore(DB): import pending files
Referenced commit(s): d9b2e775e3
2025-11-09 07:58:11 +00:00
Andrew d9b2e775e3 fix(DB/Creature): Fix Sorlof visibility distance (#23573) 2025-11-09 04:57:04 -03:00
killerwife c85c86b285 Remove double unroot in Unit::_ExitVehicle (#23545) 2025-11-08 19:40:30 -03:00
sogladev 125e1aec9d fix(Scripts/AzjolNerub): update Azjol-Nerub's Anub'arak (#23570) 2025-11-08 17:27:56 -03:00
Andrew fca2e12056 fix(Scripts/DTK): Fix a couple of Prophet Tharon'ja issues (#23568) 2025-11-08 20:01:55 +01:00
github-actions[bot] c9aedce67f chore(DB): import pending files
Referenced commit(s): e1d28ae712
2025-11-08 17:15:22 +00:00
Benjamin Jackson e1d28ae712 fix(DB/Creature): Adjust experience modifiers for Wrath instance bosses. (#23567) 2025-11-08 14:14:21 -03:00
github-actions[bot] 983557345e chore(DB): import pending files
Referenced commit(s): 743a764c3c
2025-11-08 17:09:19 +00:00
Andrew 743a764c3c fix(DB/Conditions): Malister's Frost Wand should require Proto-Drake (#23569) 2025-11-08 14:08:15 -03:00
github-actions[bot] dab83dd19e chore(DB): import pending files
Referenced commit(s): af779202e6
2025-11-08 07:04:47 +00:00
Benjamin Jackson af779202e6 fix(Core): Move and adjust experience modifiers for instanced elite creatures. (#23563) 2025-11-08 02:03:43 -05:00
Andrew 09e0343491 fix(Scripts/Ahnkahet): Clean up Herald Volazj insanity casting and ph… (#23549) 2025-11-07 19:37:42 -03:00
github-actions[bot] 433be02111 chore(DB): import pending files
Referenced commit(s): 494326656d
2025-11-07 18:21:09 +00:00
Rocco Silipo 494326656d fix(DB/Script): Add various corrections to Massacre At Light's Point event. (#23558) 2025-11-07 19:20:04 +01:00
github-actions[bot] 6b66ae22e3 chore(DB): import pending files
Referenced commit(s): dea8cd64df
2025-11-07 15:57:19 +00:00
sogladev fb96e65696 fix(DB/Creature): add chains to Blightblood Troll (#23561) 2025-11-07 16:56:26 +01:00
killerwife dea8cd64df Movement: Fix flying in dalaran after disconnect (#23559) 2025-11-07 16:56:12 +01:00
sogladev 7ac7228315 fix(Core/Player): simultaneously swap melee and ranged weapon in combat (#23557) 2025-11-07 12:07:57 +01:00
github-actions[bot] 24ca7efb73 chore(DB): import pending files
Referenced commit(s): 0bdf7a6b0f
2025-11-07 06:48:18 +00:00
Nicolas Lebacq 0bdf7a6b0f fix(DB/Creature): Deleted Wendigo entity spawning under the ground… (#23555) 2025-11-07 07:47:12 +01:00
github-actions[bot] 639ee028fd chore(DB): import pending files
Referenced commit(s): 6ef3383b12
2025-11-06 15:03:07 +00:00
Rocco Silipo 6ef3383b12 Fix(DB/Creature): Remove accessory from Enslaved Proto-drake. (#23550) 2025-11-06 16:02:02 +01:00
github-actions[bot] 695448a7b4 chore(DB): import pending files
Referenced commit(s): 1dc05a5254
2025-11-06 06:50:48 +00:00
Rocco Silipo 1dc05a5254 fix(DB/SAI): Solved a couple of issue with the quest Into the realm of shadow. (#23547) 2025-11-06 07:47:33 +01:00
Luca Folloni b272f503ff fix(Core): Change client data downloader version to v18.0 (#23546) 2025-11-05 13:18:17 -03:00
Luca Folloni ee955e74ab fix(Core): Update client data downloader version to v18 (#23544) 2025-11-05 12:09:47 -03:00
github-actions[bot] f909e9b6eb chore(DB): import pending files
Referenced commit(s): f13b557b4e
2025-11-05 12:26:20 +00:00
Rocco Silipo f13b557b4e fix(DB/SAI): Solve Astor Hadren waypoint issue. (#23436) 2025-11-05 13:25:17 +01:00
Anton Popovichenko 422ccc8e44 fix(mmaps): [REQUIRES_REGENERATION] Fix baseUnitDim division to resolve pathing edge cases (#23480)
Co-authored-by: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com>
2025-11-05 06:27:13 -03:00
killerwife 7d2b86d7be fix(Core/Unit): Make players turn to their target during charm automatically (#23534) 2025-11-04 09:46:49 +01:00
github-actions[bot] 9bada17dfa chore(DB): import pending files
Referenced commit(s): c9f17c51c6
2025-11-04 05:13:25 +00:00
sudlud c663cb50bb fix(DB/Gameobject): fix z position of some 195164 'Pumpkin' spawns (#23530) 2025-11-04 06:12:51 +01:00
sudlud c9f17c51c6 fix(DB/creature_addon): add missing Winter Reveler costume auras (#23519) 2025-11-04 06:12:20 +01:00
github-actions[bot] f0381d5229 chore(DB): import pending files
Referenced commit(s): 872ec0ba8a
2025-11-03 21:12:08 +00:00
Rocco Silipo 872ec0ba8a fix(DB/AreaTrigger): Teleport on the top of Naxxanar now works. (#23466) 2025-11-03 22:10:58 +01:00
github-actions[bot] b74d3dc62b chore(DB): import pending files
Referenced commit(s): 430be9ddc2
2025-11-03 06:50:45 +00:00
sogladev 430be9ddc2 fix(Scripts/AzjolNerub): update Azjol-Nerub's Anub'arak (#23329) 2025-11-03 03:49:45 -03:00
blinkysc 5386a1d7a0 fix(Script/HoS): Various issues with brann boss (#23413) 2025-11-03 03:45:18 -03:00
killerwife 288b495701 fix(Core/Movement): Fixup root distancing mobs being stuck in a loop (#23514) 2025-11-03 03:44:29 -03:00
killerwife 92c7ba73bf fix(Core/Unit): Fix root/stun client freeze (#23521) 2025-11-03 03:01:09 -03:00
github-actions[bot] 3ecd52113c chore(DB): import pending files
Referenced commit(s): b1160e9785
2025-11-01 20:38:44 +00:00
blinkysc b1160e9785 fix(Scripts/HoS) Various issues with Krystallus (#23414)
Co-authored-by: John Doe <john.doe@gmail.com>
Co-authored-by: blinkysc <your-github-email@example.com>
2025-11-01 21:37:38 +01:00
github-actions[bot] 40befde849 chore(DB): import pending files
Referenced commit(s): 2b0529ff13
2025-11-01 19:58:41 +00:00
Rocco Silipo 2b0529ff13 fix(DB/SAI): Scourge Reanimator casts Unholy Frenzy on self. (#23497) 2025-11-01 20:57:38 +01:00
Tereneckla e35a5ae049 refactor(Core): use the WeaponAttackType enum (#23457) 2025-11-01 15:26:18 -03:00
github-actions[bot] 97543ba50f chore(DB): import pending files
Referenced commit(s): acee5a4220
2025-11-01 18:18:38 +00:00
blinkysc a71af42e1c fix(Script/HoS): The door for Hall of the High Father is open (#23412) 2025-11-01 15:18:18 -03:00
github-actions[bot] acee5a4220 chore(DB): import pending files
Referenced commit(s): e6984c0672
2025-11-01 18:17:33 +00:00
blinkysc d44c7e309d fix(Script/HoL): General Bjarngrim starting location, timings and pathing corrected (#23416) 2025-11-01 15:17:13 -03:00
blinkysc e6984c0672 fix(Script/HoL) Ionar timers and spark now follows seperate players (#23481) 2025-11-01 15:16:33 -03:00
Tereneckla 675135e19b fix(Core/Spells): only include the targets size for some GroundEffects (#23478) 2025-10-31 11:09:38 -03:00
github-actions[bot] 4c5c930f4c chore(DB): import pending files
Referenced commit(s): a4a9d215d8
2025-10-31 12:36:16 +00:00
Tereneckla a4a9d215d8 refactor(Scripts/Raids): move spell ids for Raids to dungeondifficulty_dbc (#23477) 2025-10-31 09:35:13 -03:00
github-actions[bot] 65dac317c7 chore(DB): import pending files
Referenced commit(s): dea6bce8e1
2025-10-31 12:17:15 +00:00
Rocco Silipo f6cfc9693c fix(DB/Creature): Set root flag on Shadow Fissure Trigger. (#23486) 2025-10-31 09:17:10 -03:00
github-actions[bot] dea6bce8e1 chore(DB): import pending files
Referenced commit(s): b5e947cac8
2025-10-31 12:16:04 +00:00
blinkysc b5e947cac8 fix(DB/SAI): Dark Rune Controller will use Domination only on more then 1 group as well as summon shardling timing. (#23400)
Co-authored-by: John Doe <john.doe@gmail.com>
Co-authored-by: blinkysc <your-github-email@example.com>
2025-10-31 13:15:02 +01:00
Rocco Silipo ed861160b5 fix(Script/Naxx): Remove root when Thaddius is in combat and decrease the first Polarity Shift cast by 10 seconds. (#23484) 2025-10-31 08:07:44 -03:00
blinkysc 2d50ee0ed9 fix(Scripts/HoS): Maiden of Grief various issues (#23415) 2025-10-31 00:34:18 -03:00
blinkysc 43552868b8 fix(Script/HoL): Volkhan timings and Molten Golem timers and abilities (#23433) 2025-10-30 23:53:37 -03:00
天鹭 a1c8e0f221 refactor(Core): SendDirectMessage (#23230) 2025-10-30 14:21:26 -03:00
killerwife b737fc8b59 fix(Core/Unit): Fix dying from fall damage and incorrect flying on map teleport (#23465) 2025-10-30 09:30:13 -03:00
github-actions[bot] 8f1b08ae3b chore(DB): import pending files
Referenced commit(s): e0685a1089
2025-10-30 12:15:10 +00:00
Tereneckla e0685a1089 refactor(Scripts/Instances): move spell ids for Heroic to dungeondifficulty_dbc (#23470) 2025-10-30 09:13:56 -03:00
github-actions[bot] aa61ae9a3e chore(DB): import pending files
Referenced commit(s): a8976aa6e7
2025-10-30 09:45:35 +00:00
killerwife a8976aa6e7 fix(Scripts/Misc): Adjust points from old wrong 0 based indexing to smart ai indexing (#23472) 2025-10-30 06:44:34 -03:00
github-actions[bot] fdf19f1cf7 chore(DB): import pending files
Referenced commit(s): 32519217a0
2025-10-29 23:32:44 +00:00
blinkysc 32519217a0 fix(DB/SAI): Hardened Steel Skycaller Disengage in heroic and proper movement in normal. (#23429)
Co-authored-by: John Doe <john.doe@gmail.com>
2025-10-30 00:31:40 +01:00
github-actions[bot] 3ce6c588ab chore(DB): import pending files
Referenced commit(s): 2df2f99f27
2025-10-29 21:52:22 +00:00
Walter Pagani 2df2f99f27 fix(DB/Gossip): Fix Isfar incorrect dialogue options (#23321) 2025-10-29 18:51:18 -03:00
github-actions[bot] 6198455fed chore(DB): import pending files
Referenced commit(s): ecb2eae3be
2025-10-29 17:29:43 +00:00
blinkysc ecb2eae3be fix(DB/SAI) Dark Rune Giant uses Iron Fist in combat on cooldown. (#23405)
Co-authored-by: John Doe <john.doe@gmail.com>
2025-10-29 18:28:37 +01:00
github-actions[bot] cbec99efb3 chore(DB): import pending files
Referenced commit(s): f0ba3ac821
2025-10-28 23:42:44 +00:00
blinkysc f0ba3ac821 fix(SAI/HoS) Multiple changes to Unrelenting Construct SmartAI (#23407)
Co-authored-by: John Doe <john.doe@gmail.com>
2025-10-29 00:41:38 +01:00
killerwife 4fd7a2a644 Waypoint: Fix last point not being reached on non 0 indexed paths (#23460) 2025-10-28 18:56:44 +01:00
github-actions[bot] 2bec42c747 chore(DB): import pending files
Referenced commit(s): b74dc4961c
2025-10-28 13:33:14 +00:00
Rocco Silipo b74dc4961c fix(DB/AI): Update Thousand Needles racing event (#23417) 2025-10-28 14:32:12 +01:00
github-actions[bot] d620d5103d chore(DB): import pending files
Referenced commit(s): 3b9c91e9dc
2025-10-28 10:36:14 +00:00
blinkysc b8c4d5cdac fix(DB/HoL) Blistering Streamrager has Scald in heroic (#23431)
Co-authored-by: John Doe <john.doe@gmail.com>
2025-10-28 11:35:51 +01:00
blinkysc 3b9c91e9dc fix(DB/HoL) Hardened Steel Reaver Heroic Dull Weapons aura in addon (#23426)
Co-authored-by: John Doe <john.doe@gmail.com>
Co-authored-by: blinkysc <your-github-email@example.com>
2025-10-28 11:35:10 +01:00
killerwife 7e5a28b064 SmartAI: Fix npcs not waypointing when offset is too big (#23453) 2025-10-28 10:49:51 +01:00
github-actions[bot] e00f707777 chore(DB): import pending files
Referenced commit(s): fd497521b7
2025-10-28 09:42:15 +00:00
blinkysc fd497521b7 fix(SAI/HoS) Lightning Construct Electrical Overload timings in combat (#23408)
Co-authored-by: John Doe <john.doe@gmail.com>
2025-10-28 10:41:04 +01:00
github-actions[bot] 8900f74b89 chore(DB): import pending files
Referenced commit(s): e6bf722ad4
2025-10-28 05:33:31 +00:00
blinkysc e6bf722ad4 fix(DB/Creature): Hardened Steel Berserker now has windfury in heroic (#23430) 2025-10-28 02:32:29 -03:00
killerwife 13c6719104 fix(Core/Arena): flying upon arrival in arena if joining on flying mount (#23440) 2025-10-27 11:30:11 +01:00
Francesco Borzì 48736cfc89 feat(CI): enable cache in dashboard checks (#23432) 2025-10-26 22:07:06 +01:00
github-actions[bot] 9dd5407525 chore(DB): import pending files
Referenced commit(s): 4212b83d7c
2025-10-26 19:36:36 +00:00
blinkysc 4212b83d7c fix(HoS/DB) Lightning construct now linked (#23398)
Co-authored-by: John Doe <john.doe@gmail.com>
2025-10-26 20:32:44 +01:00
github-actions[bot] bdd4a12243 chore(DB): import pending files
Referenced commit(s): 6292f80219
2025-10-26 17:07:05 +00:00
killerwife 6292f80219 feature(SmartAI/Movement) - Unify waypoint systems (#23251) 2025-10-26 17:52:59 +01:00
github-actions[bot] af2cb8d227 chore(DB): import pending files
Referenced commit(s): a641d48ba2
2025-10-26 16:18:57 +00:00
blinkysc a641d48ba2 fix(HoS/SmartAI) Fix issues with Dark Elementalist and added SmartAI for air elemental (#23404)
Co-authored-by: John Doe <john.doe@gmail.com>
2025-10-26 17:17:47 +01:00
Francesco Borzì ab8afbb3ec feat(CI): enable caching for pch build (#23422) 2025-10-26 15:24:14 +01:00
github-actions[bot] 989f14d453 chore(DB): import pending files
Referenced commit(s): 299bf089bb
2025-10-26 14:03:55 +00:00
blinkysc 299bf089bb fix(HoS/DB) Unrelenting Construct now linked (#23397)
Co-authored-by: John Doe <john.doe@gmail.com>
2025-10-26 14:48:55 +01:00
Francesco Borzì 3bbcc15233 fix(CI): improve caching (#23387) 2025-10-26 13:43:22 +01:00
killerwife 1b2db00701 fix(Core/Vehicle): Fix invisible vehicle passengers (#23406) 2025-10-25 22:25:43 -03:00
github-actions[bot] dfd21be75b chore(DB): import pending files
Referenced commit(s): e3f4cba090
2025-10-25 21:17:10 +00:00
blinkysc e3f4cba090 fix(HoS/SmartAI): Raging Construct uses correct Potent Jolt timings (#23409)
Co-authored-by: John Doe <john.doe@gmail.com>
2025-10-25 23:00:50 +02:00
github-actions[bot] b7a0fb6466 chore(DB): import pending files
Referenced commit(s): da9c3a53ce
2025-10-25 10:24:40 +00:00
Rocco Silipo da9c3a53ce fix(DB/AI): Disclosure quest now works as intended. (#23384) 2025-10-25 12:23:30 +02:00
killerwife f95dabdfb9 Spell/GameObject: Fix flying upon teleport between map initiated from GO (#23390) 2025-10-25 11:00:55 +02:00
Yehonal a05cc525f0 feat(Config): Implement configuration severity policy and logging mechanism (#23284) 2025-10-25 01:16:09 +02:00
killerwife d58046032b fix(Core/Movement): Add force speed ack to async movement and resolve stutter (#23371) 2025-10-24 18:48:58 -03:00
Ryan Turner 77a1b45fc7 fix(apps/bash) - Command substitution for backtick command / statement. (#23344) 2025-10-24 22:13:09 +01:00
github-actions[bot] 8e1253c82f chore(DB): import pending files
Referenced commit(s): 2c8e3b53d3
2025-10-24 14:54:04 +00:00
sogladev 2c8e3b53d3 fix(Core/Spells): Acid Splash can stack on Krik'thir the Gatewatcher (#23302) 2025-10-24 16:52:54 +02:00
Kitzunu 0a55aed5e4 fix(Script/Commands): ticket response append crash (#23357) 2025-10-24 10:50:11 -03:00
github-actions[bot] 1b7b3b3a16 chore(DB): import pending files
Referenced commit(s): ba60589618
2025-10-24 13:31:30 +00:00
Walter Pagani ba60589618 fix(DB/SAI): Add missing texts for Doomclaw (#23316) 2025-10-24 10:30:11 -03:00
Kitzunu 4069b94fbf fix(Scripts/Commands): arena lookup/info improvemenets (#23355)
Co-authored-by: sudlud <sudlud@users.noreply.github.com>
2025-10-24 10:27:55 -03:00
sudlud 5861eab60c docs(README): add logo for dashboard-ci build status (#23377) 2025-10-24 09:51:01 -03:00
Francesco Borzì ce840795c5 fix(CI): eluna->ale mod rename (#23382) 2025-10-24 09:50:23 -03:00
sudlud d48fe843cd fix(CI/modules-build): rename mod-eluna to mod-ale (#23379) 2025-10-24 09:49:14 -03:00
sudlud d2a9c6468b fix(apps/installer): expired key issue, bump mysql-apt-config to 0.8.35-1 (#23356)
Co-authored-by: Degen <61268368+aradep@users.noreply.github.com>
2025-10-24 11:58:12 +02:00
github-actions[bot] 957c1ae39c chore(DB): import pending files
Referenced commit(s): 911c040469
2025-10-24 08:41:53 +00:00
Rocco Silipo 911c040469 fix(DB/SmartAI): Solve Blight Geist issues. (#23324) 2025-10-24 10:40:41 +02:00
github-actions[bot] 9c6b2c3900 chore(DB): import pending files
Referenced commit(s): 6208acd5e5
2025-10-24 06:53:45 +00:00
Andrew f3931c0a33 fix(Scripts/Gundrak): Update Galdarah script (#23206) 2025-10-24 08:53:40 +02:00
sogladev 6208acd5e5 fix(DB/SmartAI): Zul'Drak Drakuramas mid to top teleporter (#23317) 2025-10-24 08:52:38 +02:00
killerwife a8d07b669d fix(Core/Scripts): Fix the wrong run in npc_escortAI (#23293)
Co-authored-by: 天鹭 <18535853+PkllonG@users.noreply.github.com>
2025-10-24 08:43:18 +02:00
github-actions[bot] 0779ece252 chore(DB): import pending files
Referenced commit(s): d074bb5264
2025-10-24 06:43:02 +00:00
sogladev d074bb5264 fix(DB/SmartAI): update abilities of Anub'ar Webspinner (#23300) 2025-10-24 08:41:53 +02:00
Foe bb2f2daacb chore(Core/modules): necessary core changes for mod-eluna rename (#22962)
Co-authored-by: Francesco Borzì <borzifrancesco@gmail.com>
2025-10-23 12:52:13 +02:00
Localhost 2a78a1788f fix(Scripts/EOE): add null check for killer before updating achievement criteria (#23353)
Co-authored-by: Roman BADANIN <r.badanin@defi-informatique.fr>
2025-10-22 18:49:08 +02:00
privatecore e8b521b863 fix(CI/Windows): installer script - update MYSQL version to 8.4.6 (#23348) 2025-10-22 17:22:33 +02:00
Takenbacon f661f57f67 fix(Core/Visibility): Fix sentry totem visibility not toggling (#23228) 2025-10-22 16:56:54 +02:00
github-actions[bot] e867443c4e chore(DB): import pending files
Referenced commit(s): cbfffe8a2e
2025-10-21 17:29:58 +00:00
Rocco Silipo cbfffe8a2e fix(DB/Creature) Set Unit Flag to Persistence. (#23325) 2025-10-21 19:28:49 +02:00
Luca Folloni 4670a9a3d5 fix(Scripts/UtigardePinnacle): Skadi the Ruthless is not selectable when in Phase 2 (#23333) 2025-10-20 17:51:32 -03:00
github-actions[bot] d4211fde8d chore(DB): import pending files
Referenced commit(s): 71da5b8f68
2025-10-19 17:03:45 +00:00
sogladev 71da5b8f68 fix(DB/Conditions): Krik'thir the Gatewatcher can be hit by Acid Splash (#23301) 2025-10-19 19:02:34 +02:00
github-actions[bot] fad37d974b chore(DB): import pending files
Referenced commit(s): 9749e177fb
2025-10-18 18:51:46 +00:00
Andrew 9749e177fb fix(Scripts/HoL): fix the Hall of Watchers gauntlet event (#23287) 2025-10-18 20:50:39 +02:00
github-actions[bot] 21d2e99d7f chore(DB): import pending files
Referenced commit(s): 671298cc5b
2025-10-18 13:29:36 +00:00
Andrew 6b70ba2d58 fix(DB/Proc): fix Mind Flay not applying Misery (#23289)
Co-authored-by: errodia <1046672+errodia@users.noreply.github.com>
Co-authored-by: Sebastian Valle <subv2112@gmail.com>
2025-10-18 15:29:22 +02:00
Andrew 671298cc5b fix(Scripts/HoL): Fix Ionar ball lightning target and overload knockback (#23290) 2025-10-18 15:28:28 +02:00
Andrew 4919e07a7f fix(Scripts/HoL): Fix Loken intro event (#23286) 2025-10-17 17:15:21 -03:00
github-actions[bot] acfebea21f chore(DB): import pending files
Referenced commit(s): 840eacd19b
2025-10-17 19:31:53 +00:00
Andrew 840eacd19b fix(DB/GameObject): General Bjarngrim and Loken exit door should be o… (#23285) 2025-10-17 16:28:20 -03:00
天鹭 539aa67ef3 fix(Core/Pet): Implement sound playback when dismissing warlock's pet. (#23240) 2025-10-17 19:22:18 +02:00
Andrew 5457678f48 fix(Scripts/HoL): Implement door handling (#23282) 2025-10-17 11:53:05 -03:00
Grimdhex 789c98fccb refactor(Scripts/HallOfLightning): modernize scripts (#23209) 2025-10-17 08:33:25 -03:00
天鹭 058f7acac6 refactor(Core): AddEventAtOffset (#23140) 2025-10-17 06:09:57 +02:00
天鹭 762f5a7158 fix(Core/LFG): Fix Leader flag being ignored (#23239) 2025-10-17 06:09:10 +02:00
github-actions[bot] 1243fdd1d8 chore(DB): import pending files
Referenced commit(s): ae88b7d7f7
2025-10-16 23:14:51 +00:00
Rocco Silipo ae88b7d7f7 fix(DB/Creature): Add immunities to various npcs inside Halls of Lightning. (#23273) 2025-10-16 20:13:43 -03:00
github-actions[bot] 71a7fa9d18 chore(DB): import pending files
Referenced commit(s): 3e97113251
2025-10-16 19:00:23 +00:00
sogladev 7776d6aafe fix(DB/SmartAI): Argent Dawn Priest can now hand out Mark of Dawn (#23269) 2025-10-16 20:59:38 +02:00
sogladev 3e97113251 fix(Core/Player): add missing vendor and repair icons to creatures (#23270) 2025-10-16 20:59:17 +02:00
天鹭 1946543ae2 refactor(Core): SetTimedFacingToObject (#23142) 2025-10-16 20:29:31 +02:00
github-actions[bot] edfc494635 chore(DB): import pending files
Referenced commit(s): eb2c6a445c
2025-10-16 10:32:05 +00:00
Andrew eb2c6a445c feat(Scripts/Commands): Implement debug zonestats command (#23249) 2025-10-16 07:24:23 -03:00
github-actions[bot] 46f04b6062 chore(DB): import pending files
Referenced commit(s): 72d060f097
2025-10-16 10:10:19 +00:00
killerwife 72d060f097 feat(Core/Network): Per-user togglable packet logging (#23254)
Co-authored-by: Ryan Turner <16946913+TheSCREWEDSoftware@users.noreply.github.com>
2025-10-16 10:57:16 +01:00
Yehonal 4c3eab650c feat(apps/service-manager): Add logging output for service uptime checks (#23252) 2025-10-16 11:30:04 +02:00
github-actions[bot] de9ef86a20 chore(DB): import pending files
Referenced commit(s): c62469c884
2025-10-16 08:16:30 +00:00
Rocco Silipo c62469c884 Fix (DB/SmartAI) Set Repeat and Run to 0 on Scarlet Ghoul Action List. (#23264) 2025-10-16 10:15:23 +02:00
github-actions[bot] 8e5d1fde65 chore(DB): import pending files
Referenced commit(s): bc27115efb
2025-10-16 04:22:13 +00:00
sudlud bc27115efb fix(DB/SAI): update waypoint start events for new forcedMovement parameter (#23255) 2025-10-16 06:21:08 +02:00
sudlud 0822bc34d7 fix(apps/installer): bump client-data to v17 (#23256) 2025-10-15 23:44:13 +01:00
Tereneckla 90e0c75616 fix(Bash): installer also copies module configs (#23231) 2025-10-15 21:45:49 +02:00
Yehonal cfc8678843 feat(bash): several chores to bash scripts: (#23250) 2025-10-15 02:10:14 +02:00
sogladev 87deaf7159 fix(Core/Unit): prevent creature triggering combat from self damage (#23245) 2025-10-14 19:43:27 -03:00
Anton Popovichenko f2f31acdcf feat(Core/mmaps): Add configuration file for mmaps-generator. (#22506) 2025-10-14 18:56:09 -03:00
killerwife 10d5a3c553 fix(Core/Unit): rework Walk/Run mode (#22988)
Co-authored-by: sudlud <sudlud@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-14 17:54:19 -03:00
github-actions[bot] c28f635408 chore(DB): import pending files
Referenced commit(s): b8042b7a73
2025-10-14 20:16:23 +00:00
Rocco Silipo b8042b7a73 fix(DB/SAI): Move Westfall Infantries waypoints to Waypoint_Data table. (#23232) 2025-10-14 17:14:37 -03:00
Takenbacon 5aa3161885 fix(Core/Object): Improve safety of visibility override containers (#23219) 2025-10-13 12:36:42 -03:00
Andrew 9ff1d3f06a fix(Core/Map): Fix zone player count update on player removal (#23211) 2025-10-13 09:56:17 -03:00
killerwife 8560c4825a fix(Scripts/Commands): inverted display in chat for gm fly (#23222) 2025-10-13 13:05:03 +02:00
天鹭 53238a68d3 refactor(Core): DespawnOrUnsummon (#23141) 2025-10-13 03:36:23 -03:00
天鹭 8e2e30328f refactor(Core): Make ObjectGuid const (#23170)
* cherry-pick commit (https://github.com/TrinityCore/TrinityCore/commit/a7883380ce4c827db103b0c43faca6632c3d1f66)

Co-Authored-By: Lucas Nascimento <keader.android@gmail.com>
2025-10-12 23:13:12 -03:00
天鹭 9c49349e1e refactor(Core/EventMap): Refactor EventMap and related scripts (#23121)
Co-authored-by: Kelno <3866946+kelno@users.noreply.github.com>
Co-authored-by: Peter Keresztes Schmidt <carbenium@outlook.com>
2025-10-12 22:19:24 -03:00
Grimdhex 8e1426c06a fix(Script/HallOfLightning): wrong spell group with General Bjarngrim (#23205) 2025-10-12 22:12:07 -03:00
Grimdhex 8ac6019a67 fix(Scripts/HallOfLightning): wrong stance when bjarngrim reset (#23207) 2025-10-12 22:11:44 -03:00
天鹭 074d9ebca7 fix(Core/CreatureText): race conditions in CreatureTextMgr repeat group (#23153)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
Co-authored-by: Giacomo Pozzoni <giacomopoz@gmail.com>
2025-10-12 21:30:32 -03:00
Yehonal 8d4fb5b4b4 fix(bash/service-manager): pipeline errors (#23210) 2025-10-13 01:37:41 +02:00
Yehonal bca1cb7168 fix(ServiceManager): add sentinel to argument serialization in exec definition 2025-10-13 00:19:12 +02:00
Yehonal 2717104dc4 feat(ServiceManager): enhance path handling and add canonicalization function 2025-10-13 00:08:25 +02:00
Yehonal 9f732c8cea feat(Bash/ServiceManager): enhance path portability (#22982) 2025-10-12 22:28:22 +02:00
sogladev c24c381bf5 fix(Core/Scripting): fix Defias Thug waypoint errors (#22994) 2025-10-12 18:35:16 +02:00
github-actions[bot] 4a13535e37 chore(DB): import pending files
Referenced commit(s): fc39bf6753
2025-10-12 15:14:18 +00:00
sogladev fc39bf6753 fix(Core/Player): remove vendor icon if there is no gossip vendor option (#23026) 2025-10-12 17:12:54 +02:00
github-actions[bot] 717379628b chore(DB): import pending files
Referenced commit(s): cbfd00a37c
2025-10-12 14:58:45 +00:00
Benjamin Jackson cbfd00a37c fix(DB/Creature): Verify creature models previously from build 11723. (#22924) 2025-10-12 16:57:36 +02:00
github-actions[bot] ae380ab41a chore(DB): import pending files
Referenced commit(s): 951ea50caf
2025-10-12 14:54:52 +00:00
Benjamin Jackson 868bb56582 fix(DB/Creature): Verify various creature models with no verified build. (#22927) 2025-10-12 16:54:45 +02:00
Benjamin Jackson 951ea50caf fix(DB/Creature): Verify creature models previously from build 10505. (#22928) 2025-10-12 16:53:44 +02:00
arsinspace 6261518ebf fix(CORE/DBUpdater): Use stdin instead of -e SOURCE (#22949) 2025-10-12 16:47:42 +02:00
GrenderG c79289c4b8 fix(Scripts/Karazhan): Fix Tenris Mirkblood area trigger conditions. (#23162) 2025-10-12 16:02:34 +02:00
github-actions[bot] a0bbd2fe5e chore(DB): import pending files
Referenced commit(s): b1d526e59d
2025-10-12 14:02:06 +00:00
sogladev b1d526e59d feat(Scripts/Spells): GM utility spells and Beastmaster Mode (#22964)
Co-authored-by: ratkosrb <ratkomladic2@abv.bg>
2025-10-12 16:00:49 +02:00
Benjamin Jackson 1c5f611d62 fix(Core/ObjectMgr): Force probabilities of creature displays during runtime if total probability is 0. (#23197) 2025-10-12 15:59:18 +02:00
github-actions[bot] 5c6e82aa02 chore(DB): import pending files
Referenced commit(s): ad70bedf91
2025-10-12 13:58:47 +00:00
LuckyLuc96 ad70bedf91 fix(DB/SAI): Duskwood Flesh Eating Worms (#22189) 2025-10-12 15:57:46 +02:00
p-tkachuk e57dc1922f fix(Scripts/TrialOfTheChampion): Fix Grand Champions agro before event end (#21775) 2025-10-12 15:56:34 +02:00
blinkysc c3c28e0d8b fix(Script/BloodmystIsle): Tel'athion the Impure will no longer spawn from webbed creature (#22898) 2025-10-12 13:54:52 +02:00
github-actions[bot] b717d9baab chore(DB): import pending files
Referenced commit(s): 2cb42d8283
2025-10-12 11:37:41 +00:00
Alexis LOUBIÈRE 6d97c5b0ee fix(DB/SAI): Fix NPC Kurzen Medicine Man (#22954) 2025-10-12 13:37:28 +02:00
Evgeny 2cb42d8283 fix(modules): fix path to setup_git_commit_template.sh in create_module.sh (#22757) 2025-10-12 13:36:39 +02:00
Peter da5fb6c9f8 feat(Core): BG reputation modifier for WSG, AB and AV (#22685)
Co-authored-by: Zoidwaffle <zoidwaffle@gmail.com>
2025-10-12 13:30:02 +02:00
Benjamin Jackson e07fddc515 fix(Scripts/Item): Introduce Blizzlike Val'anyr absorption value bug. (#23152) 2025-10-12 11:49:20 +02:00
github-actions[bot] a5e4ee10e1 chore(DB): import pending files
Referenced commit(s): fdb89bda9d
2025-10-11 21:52:31 +00:00
Ryan Turner de20f42ce2 fix(DB/Gossip) - Ancient Skull Pile no longer shows 2 gossip menu options (#23183) 2025-10-11 22:51:33 +01:00
github-actions[bot] fdb89bda9d chore(DB): import pending files
Referenced commit(s): 757de7a983
2025-10-11 21:51:26 +00:00
blinkysc 757de7a983 fix(Script/Gundrak): Moorabi timing and hard reset (#23079) 2025-10-11 18:50:19 -03:00
github-actions[bot] c50688c702 chore(DB): import pending files
Referenced commit(s): f0dea45457
2025-10-11 21:02:20 +00:00
sogladev f0dea45457 fix(DB/SmartAI): Scorn spawns after Bloodmage Thalnos dies (#23106)
Co-authored-by: AnonXS <anonxsdev@gmail.com>
2025-10-11 18:01:17 -03:00
github-actions[bot] 4b4c015e4b chore(DB): import pending files
Referenced commit(s): 75a9623f3d
2025-10-11 18:34:51 +00:00
Andrew d49ce35d3d fix(DB/SAI): fix Ruin Dweller Spring (#23190) 2025-10-11 20:34:20 +02:00
Andrew 75a9623f3d fix(DB/SAI): Fix robot chicken escort quests not granting credit to g… (#23193) 2025-10-11 20:33:45 +02:00
killerwife 31b11d0d11 fix(Core/Movement): rework root protocol with ack in mind (#23147) 2025-10-11 13:49:43 -03:00
github-actions[bot] bc89aa561c chore(DB): import pending files
Referenced commit(s): a14fe1c4de
2025-10-11 16:42:14 +00:00
Rocco Silipo a14fe1c4de fix(DB/SAI): Move Rizzle Sprysprocket event to smartscript. (#23167) 2025-10-11 13:41:14 -03:00
Tereneckla 1434cde99e fix(Core/Player): Recalculate all StatModEffects on levelup (#23184) 2025-10-11 13:13:23 -03:00
arsinspace 43a54d4329 fix(Scripts/Gundrak): Fixed behavior for Colossus and Elemental (#23150)
Co-authored-by: arsinspace <arsinspace@outlook.com>
2025-10-11 08:54:06 -03:00
github-actions[bot] dcbc02c93a chore(DB): import pending files
Referenced commit(s): 051a3c5ba8
2025-10-11 08:31:50 +00:00
Ryan Turner 051a3c5ba8 fix(DB/Loot): Kodo apparation no longer can be skinned (#23173) 2025-10-11 10:24:38 +02:00
Benjamin Jackson 292f1a417d fix(Scripts/Spells): Add checks for Relief for the Fallen script. (#23168) 2025-10-10 20:07:56 -03:00
Tereneckla 9ce8bd0cc6 fix(Core/Module): don't fallback to .dist for module configs (#22874) 2025-10-10 18:37:36 -03:00
github-actions[bot] c52d99bfc4 chore(DB): import pending files
Referenced commit(s): a89e989995
2025-10-10 21:00:36 +00:00
Annamaria a89e989995 fix(DB/SAI): Sergeant Lukas should be male (#22747) 2025-10-10 22:59:31 +02:00
github-actions[bot] 4bd945e950 chore(DB): import pending files
Referenced commit(s): 8a64eb05f7
2025-10-10 20:57:02 +00:00
Annamaria 864ca5a324 fix (db/smartscripts) : Milton Beats should be male (#22748) 2025-10-10 22:56:12 +02:00
zeb139 8a64eb05f7 fix(Core): Deeprun Tram Subway timer/syncronization by loading grid (#23009) 2025-10-10 22:55:59 +02:00
grace-of-hainaut 4867510cac fix(Core): Correct fishing catch calculations (#23171) 2025-10-10 22:14:58 +02:00
privatecore dd1f6f776c fix(Core/Player): Fix NotAvoidSatisfy script hook to reference the current player (#23004) 2025-10-10 21:53:36 +02:00
Benjamin Jackson b7d7089da6 fix(Core/Entities): Daily and other quests should grant XP when rewarded on subsequent completions. (#23160) 2025-10-10 17:37:14 +02:00
Benjamin Jackson 21724b5191 fix(Scripts/Karazhan): remove Blood Mirror auras from Mirkblood when mirrored target dies (#23159) 2025-10-10 07:02:44 +02:00
Benjamin Jackson f670387ad4 refactor(Core/Packets): Rewrite various calendar and complaint packets to modern class. (#22884) 2025-10-10 07:02:00 +02:00
github-actions[bot] cc6a256307 chore(DB): import pending files
Referenced commit(s): a0fd180320
2025-10-09 19:58:18 +00:00
Benjamin Jackson a0fd180320 fix(Scripts/Spells): Move Eye of Gruul and Soul Preserver to the same script. (#22692)
Co-authored-by: sudlud <sudlud@users.noreply.github.com>
2025-10-09 21:57:16 +02:00
sogladev 5c053aabe5 fix(Core/Battlefield): AddressSanitizer new-delete-type-mismatch (#23038)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-09 20:12:46 +02:00
Benjamin Jackson d237ea6552 fix(Core/Handlers): Properly limit equipment set name length to client maximum. (#23151) 2025-10-09 20:10:43 +02:00
GrenderG 8d2f307483 fix(Core/Spells): Correct follow position for Pets and Companions. (#23154)
Co-authored-by: sogladev <sogladev@gmail.com>
2025-10-09 20:09:40 +02:00
github-actions[bot] 8fbdca8d50 chore(DB): import pending files
Referenced commit(s): f7bde08d59
2025-10-09 12:17:05 +00:00
sudlud ca20c8a760 fix(DB/Gameobject): Sniffed Values for 'Torch' spawns (#23111) 2025-10-09 14:16:19 +02:00
sudlud a2785badd1 fix(DB/Gameobject): Sniffed Values for 'Frostglow' spawns (#23099) 2025-10-09 14:16:10 +02:00
sudlud f7bde08d59 fix(DB/Gameobject): Sniffed Values for 'Lava' spawns (#23097) 2025-10-09 14:16:00 +02:00
github-actions[bot] f68e8d664f chore(DB): import pending files
Referenced commit(s): e46e29b012
2025-10-09 10:28:51 +00:00
Rocco Silipo e46e29b012 fix(DB/Script/Gundrak) Improve Drakkari Rhino bridge event. (#23144) 2025-10-09 12:23:53 +02:00
Ryan Turner 62d7b0c2e7 docs(PR_Template): Added Commit Message Guidelines to PR template. (#23155) 2025-10-09 08:48:14 +01:00
Andrew 2c5aab9ed2 fix(Core/Spells): Drakkari Medicine Man Earth Shield max targets (#23102) 2025-10-07 09:41:15 +02:00
github-actions[bot] 79bb3230b1 chore(DB): import pending files
Referenced commit(s): 483b068e4d
2025-10-07 07:41:03 +00:00
Andrew 483b068e4d fix(Scripts/IsleOfQueldanas): Fix Greengill Slave script (#23109) 2025-10-07 09:39:57 +02:00
Andrew 939dae3119 fix(Scripts/CoS): Fix chest despawning when player leaves map (#23112) 2025-10-07 09:37:40 +02:00
github-actions[bot] 10acbafed5 chore(DB): import pending files
Referenced commit(s): bfe2cbc9c7
2025-10-07 07:36:58 +00:00
Rocco Silipo bfe2cbc9c7 fix(DB/Creature) Remove immunity to Disarm from Gal'darah. (#23136) 2025-10-07 09:35:50 +02:00
github-actions[bot] 43d46de681 chore(DB): import pending files
Referenced commit(s): 1159076146
2025-10-06 15:41:43 +00:00
Andrew 1159076146 fix(Scripts/Gundrak): Eck should spawn when the Ruin Dweller formatio… (#23114) 2025-10-06 12:40:29 -03:00
blinkysc 4572003eb1 fix(Script/Gundrak): Eck spring now resets threat after cast and Spit/Spring Timings (#23124) 2025-10-05 14:51:21 -03:00
killerwife 0767b2edf5 fix(Core/Movement): Add safeguards against root freezes (#23117) 2025-10-05 14:45:07 -03:00
blinkysc 2afcd037c7 fix(Script/Sunwell): Sinister reflection delays 5 seconds before set in combat (#22939) 2025-10-04 19:24:55 -03:00
github-actions[bot] 973aec9928 chore(DB): import pending files
Referenced commit(s): 42f9db3284
2025-10-04 20:32:12 +00:00
sudlud 42f9db3284 fix(DB/Gameobject): Sniffed Values for 'Doodad_Nox_portal_top01' spawns (#23110) 2025-10-04 17:31:07 -03:00
github-actions[bot] c2440e1fa3 chore(DB): import pending files
Referenced commit(s): 6ceb23fd6d
2025-10-04 17:11:12 +00:00
Rocco Silipo 6ceb23fd6d fix(DB/SmartAI): Fix Fuel Tank and Horde Siege Tank issues. (#23104) 2025-10-04 19:10:10 +02:00
github-actions[bot] 0fb9431692 chore(DB): import pending files
Referenced commit(s): 4e06a56797
2025-10-04 14:25:08 +00:00
Andrew 4e06a56797 fix(DB/Conditions): Fix conditions for The Demoralizer spell (#23101) 2025-10-04 16:24:04 +02:00
github-actions[bot] 7ab7a5108c chore(DB): import pending files
Referenced commit(s): fd24bbba8d
2025-10-04 13:53:04 +00:00
Rocco Silipo fd24bbba8d fix(DB/SmartAI): Wounded Westfall Infantries now have an offy-like behaviour. (#23098) 2025-10-04 15:52:04 +02:00
天鹭 86af3f302b fix(Core/Unit): Fix all that have UNIT_STATE_NO_ENVIRONMENT_UPD (#23100) 2025-10-04 10:33:31 -03:00
Andrew 2fb9c01c20 fix(Core/Unit): Fix thorns/retribution aura only dealing damage on white hits (#23041) 2025-10-04 05:03:02 -03:00
github-actions[bot] 9012df17d2 chore(DB): import pending files
Referenced commit(s): b28da6e03f
2025-10-04 07:29:16 +00:00
sogladev b28da6e03f fix(Scripts/Northrend): quest Sniffing out the Perpetrator (#23076) 2025-10-04 09:28:14 +02:00
killerwife b80353d288 fix(Core/Movement): Implement order counters (#23015) 2025-10-03 21:52:38 -03:00
github-actions[bot] 7015f51971 chore(DB): import pending files
Referenced commit(s): edd91cc551
2025-10-04 00:30:10 +00:00
sudlud 4f19eb9b81 fix(DB/Gameobject): Sniffed Values for 'Stolen Pack' spawns (#23094) 2025-10-03 21:29:34 -03:00
blinkysc 3aa0de2699 fix(Script/Gundrak): path for Eck will only open in heroic (#23072) 2025-10-03 21:29:17 -03:00
github-actions[bot] edd91cc551 chore(DB): import pending files
Referenced commit(s): 0c687f9c60
2025-10-04 00:29:08 +00:00
sudlud 0c687f9c60 fix(DB/Gameobject): Sniffed Values for 'Big Rancid Meat' spawns (#23095) 2025-10-03 21:28:05 -03:00
sogladev 19f1ede216 fix(Core/Unit): add Dual Wield 'auto' to improve scripting (#23078) 2025-10-03 08:26:31 +02:00
privatecore c13492fb31 fix(CI/Windows): installer script - update OpenSSL version to 3.5.4 (#23081) 2025-10-02 21:27:45 +02:00
github-actions[bot] 24860f53ae chore(DB): import pending files
Referenced commit(s): 6fcbc224fa
2025-10-02 11:29:30 +00:00
sogladev 6fcbc224fa fix(DB/Creature): Pushed Too Far quest Stormcrest Eagle spell list (#23075) 2025-10-02 13:28:31 +02:00
github-actions[bot] 60b89c01d8 chore(DB): import pending files
Referenced commit(s): a092755341
2025-10-02 11:25:50 +00:00
sogladev a092755341 fix(DB/SmartAI): Icecrown quest Seeds of Chaos flight speed and eject (#23074) 2025-10-02 13:24:46 +02:00
github-actions[bot] abac321c01 chore(DB): import pending files
Referenced commit(s): cd7e229e6b
2025-10-01 14:18:27 +00:00
Benjamin Jackson cd7e229e6b fix(DB/Creature): Correct model assigns for Demolisher Engineer Blastwrench. (#22923) 2025-10-01 11:17:14 -03:00
Andrew dbd4aaf065 feat(Core/Updater): Add configurable shutdown delay on update exceptions (#23042) 2025-10-01 07:16:32 -03:00
github-actions[bot] a0a8187ea4 chore(DB): import pending files
Referenced commit(s): ddc9397413
2025-10-01 07:43:05 +00:00
blinkysc ddc9397413 fix(DB/gameobject): Adjust Quetz'lun's Corpse Spell Focus location (#22944) 2025-10-01 09:42:02 +02:00
github-actions[bot] 4987a8b2c1 chore(DB): import pending files
Referenced commit(s): e93d3ffd27
2025-10-01 07:37:02 +00:00
sudlud e93d3ffd27 fix(DB/Gameobject): Sniffed Values for '186957' spawns (#22953) 2025-10-01 09:33:13 +02:00
Alwin Arrasyid 0e6a5e4efb fix(Scripts/Commands): escape string before query on go creature command (#23036) 2025-09-30 23:50:34 -03:00
Takenbacon a56d1f65aa fix(Core/Server): Fix player login checks (#23073) 2025-09-30 07:16:07 -03:00
github-actions[bot] 05b57ecb74 chore(DB): import pending files
Referenced commit(s): a644a62c16
2025-09-30 07:13:35 +00:00
blinkysc e75d2e9c8a fix(Script/Gundrak) Drakkari Colossus will now use Mortal Strikes (#23065)
Co-authored-by: Andrew <47818697+Nyeriah@users.noreply.github.com>
2025-09-30 09:13:12 +02:00
blinkysc a644a62c16 fix(DB) Riding Ram Upgraded to a beast from a critter (#23071) 2025-09-30 09:12:34 +02:00
github-actions[bot] 81edabf1fb chore(DB): import pending files
Referenced commit(s): 35e267393f
2025-09-30 00:40:20 +00:00
blinkysc 35e267393f fix(DB/Formations): Drakkari Colossus will now call help from Drakkari Golems (#23064) 2025-09-29 21:39:17 -03:00
Andrew 297c88468c fix(Scripts/Gundrak): Fix Sladran Venom Bolt target and Poison Nova f… (#23055) 2025-09-29 19:24:19 -03:00
github-actions[bot] 5cbfacfdff chore(DB): import pending files
Referenced commit(s): 6ad664fa8f
2025-09-29 15:03:42 +00:00
Rocco Silipo 6ad664fa8f fix(DB/SmartAI) Update Bleeding Hollow Necrolyte and Tunneler AI. (#23057) 2025-09-29 16:58:46 +02:00
Seamthesis 5f61d641ef refactor(Core/Player): small clean in Player.h (#23018)
Co-authored-by: Rykles <219719782+Seamthesis@users.noreply.github.com>
2025-09-29 11:44:24 -03:00
Takenbacon 22f93eaca6 fix(Core/Weather): Improve weather system thread safety (#22772)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-29 11:43:30 -03:00
github-actions[bot] 5f17121117 chore(DB): import pending files
Referenced commit(s): 0d1f885b57
2025-09-28 10:48:11 +00:00
sogladev 0d1f885b57 fix(Core/Spells): updates trajectory target selection (#23031)
Co-authored-by: xinef1 <w.szyszko2@gmail.com>
2025-09-28 07:47:01 -03:00
github-actions[bot] bac2ae4e11 chore(DB): import pending files
Referenced commit(s): 09c2b7e5fb
2025-09-28 10:03:36 +00:00
Andrew 09c2b7e5fb fix(Scripts/UtgardePinnacle): Fix Skadi start and reset checks (#23034) 2025-09-28 12:02:35 +02:00
github-actions[bot] 5d443d3cda chore(DB): import pending files
Referenced commit(s): 561bb80f10
2025-09-27 19:10:29 +00:00
sogladev 561bb80f10 fix(DB/SmartAI): Add Eagle flight of quest Fervor of the Frostborn (#23037)
Co-authored-by: Aokromes <Aokromes@users.noreply.github.com>
2025-09-27 16:09:26 -03:00
Andrew 84d55972fd fix(Core/SAI): Fix crash when using SMART_TARGET_INSTANCE_STORAGE in … (#23033) 2025-09-27 12:09:27 -03:00
Yehonal 1736b7501f refactor(Player): replace visibility detection calls with dedicated methods (#23025) 2025-09-27 16:07:03 +02:00
Yehonal b950c610d4 feat(bash): test command in dashboard + fix tests (#23030)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-27 13:36:14 +02:00
github-actions[bot] 815d99250a chore(DB): import pending files
Referenced commit(s): 9f31fe39fd
2025-09-27 02:15:16 +00:00
sogladev eb766267ca fix(DB/Quest): add prerequisite to Catching up with Brann quest (#23028) 2025-09-26 23:14:41 -03:00
sogladev 74f10db25c fix(DB/Quest): add prerequisite to Sniffing out the Perpetrator quest (#23029) 2025-09-26 23:14:23 -03:00
sogladev 9f31fe39fd fix(DB/Quest): add prerequisite to Loyal Companions quest (#23027) 2025-09-26 23:14:07 -03:00
github-actions[bot] de72325b0a chore(DB): import pending files
Referenced commit(s): ef2f9e0ace
2025-09-26 13:34:52 +00:00
Rocco Silipo ef2f9e0ace fix(DB/Creature) Set right Phasemask for two Scarlet Crusaders. (#23024) 2025-09-26 15:32:17 +02:00
github-actions[bot] 41efc22bf4 chore(DB): import pending files
Referenced commit(s): a0178af877
2025-09-26 01:07:21 +00:00
sogladev a0178af877 fix(DB/SAI): SCRIPT_COMMAND_CAST_SPELL error Heb'Drakkar Headhunter (#22984) 2025-09-25 22:06:17 -03:00
sogladev 80e9265222 Revert "fix(Core/Conditions): ConditionList use after free (#23006)" (#23023) 2025-09-25 09:55:30 -03:00
Degen d05213d85e feat(Core/Config): Infinite ammo config setting (#22969)
Co-authored-by: sogladev <sogladev@gmail.com>
2025-09-23 21:46:04 -03:00
github-actions[bot] ae5001d16e chore(DB): import pending files
Referenced commit(s): e9f4960662
2025-09-23 23:48:15 +00:00
sogladev 4770219a14 fix(DB/SAI): 'The Raven Stones' Cenarion Sparrowhawk will guide players (#22966)
Co-authored-by: dr-j <dr-j@users.noreply.github.com>
Co-authored-by: Gultask <sagemochi@hotmail.com>
2025-09-23 20:48:01 -03:00
github-actions[bot] e9f4960662 chore(DB): import pending files
Referenced commit(s): 3091733dd5
2025-09-23 23:47:12 +00:00
sogladev 6d2ad6047c fix(Core/Conditions): ConditionList use after free (#23006) 2025-09-23 20:46:52 -03:00
sogladev ae1ea1a701 fix(Scripts/Spells): Brewfest Hops (#22998) 2025-09-23 20:46:29 -03:00
killerwife 3091733dd5 fix(apps/installer): windows setup (#23007) 2025-09-23 20:46:07 -03:00
killerwife 8e6d35c9b2 fix(Core/SAI): idle casters (#23005) 2025-09-23 20:45:48 -03:00
arsinspace bc30a6fba6 fix(Scripts/EasternKingdoms) : Fix issues in Battle For The Undercity Horde (#23011)
Co-authored-by: arsinspace <arsinspace@outlook.com>
Co-authored-by: Jelle Meeus <sogladev@gmail.com>
2025-09-23 15:57:10 +02:00
killerwife 77d972acbb fix(Core/Creature): prevent crash due to recursive call for help (#23008) 2025-09-23 06:53:32 -03:00
Andrew 78dea88d5d fix(Scripts/AzjolNerub): Fix Anubarak impale sequence (#22717) 2025-09-23 10:49:23 +02:00
Andrew 7a0b9785bb fix(Scripts/Gundrak): Update Slad'ran script (#22975) 2025-09-23 10:46:17 +02:00
github-actions[bot] c6f24a23cc chore(DB): import pending files
Referenced commit(s): 42d49d1b6a
2025-09-23 08:45:40 +00:00
Andrew 42d49d1b6a fix(Core/Vehicles): Fix issue with Wyrmrest Vanquisher and other issues with On Ruby Wings (#22989) 2025-09-23 10:44:35 +02:00
github-actions[bot] a5502ad0bf chore(DB): import pending files
Referenced commit(s): 032e9b6654
2025-09-23 08:42:02 +00:00
Rocco Silipo 032e9b6654 fix(DB/Creature: update some old SmartAIs (#23010) 2025-09-23 10:40:56 +02:00
Teknishun7 b82857748e fix(Scripts/SMV): Infernal attacker respawn (#23001) 2025-09-22 15:04:50 -03:00
github-actions[bot] c6ca8f8d47 chore(DB): import pending files
Referenced commit(s): 15e6624896
2025-09-22 05:39:51 +00:00
Andrew 15e6624896 fix(Scripts/Spells): Fix Relief of the Fallen quest issues (#22968) 2025-09-22 07:38:49 +02:00
github-actions[bot] de8a0533f9 chore(DB): import pending files
Referenced commit(s): 776cd15d0e
2025-09-22 05:36:45 +00:00
sogladev 776cd15d0e fix(DB/SmartAI): Frostbrood Spawn can now fly away (#22985) 2025-09-22 07:35:43 +02:00
github-actions[bot] 3d2e8b8fc6 chore(DB): import pending files
Referenced commit(s): 6ef23517b3
2025-09-22 05:34:29 +00:00
sogladev 2fc834245e fix(DB/Waypoints): Add WPs for Mountain Gronns in Nagrand (#22993)
Co-authored-by: Rushor <Rushor@users.noreply.github.com>
2025-09-22 07:34:07 +02:00
github-actions[bot] 6ef23517b3 chore(DB): import pending files
Referenced commit(s): bed2fc26f2
2025-09-22 05:33:28 +00:00
Andrew bed2fc26f2 fix(DB/Items): Add stats to savage / hateful gladiator weapons (#22976) 2025-09-22 07:32:28 +02:00
github-actions[bot] 1430d4c2c9 chore(DB): import pending files
Referenced commit(s): bb9aa574f3
2025-09-20 17:50:02 +00:00
Andrew bb9aa574f3 refactor(Scripts/Dragonblight): Move Strengthen the Ancients quest sc… (#22983) 2025-09-20 14:48:58 -03:00
github-actions[bot] 4cf6a87410 chore(DB): import pending files
Referenced commit(s): 1bda2ea846
2025-09-20 17:37:16 +00:00
sogladev 1bda2ea846 fix(DB/SAI): add AI to some Northrend creatures (#22987)
Co-authored-by: CraftedRO <CraftedRO@users.noreply.github.com>
cherry-picked from: https://github.com/TrinityCore/TrinityCore/commit/81a32f89f6a3c07352d228b4651aba7aa6e344cb
2025-09-20 14:36:11 -03:00
Andrew f884f64896 fix(Core/Spells): crashfix (#22986) 2025-09-20 12:21:42 -03:00
github-actions[bot] f9fd86af50 chore(DB): import pending files
Referenced commit(s): 6dda22ec46
2025-09-20 12:26:52 +00:00
Andrew 849303a1f4 fix(DB/Creature): Remove Herald Volazj interrupt immunity (#22981) 2025-09-20 09:26:18 -03:00
Benjamin Jackson 6dda22ec46 chore(Core/Handlers): Remove unused item query optimization. (#22971) 2025-09-20 09:25:51 -03:00
github-actions[bot] d60d970205 chore(DB): import pending files
Referenced commit(s): e549ce25de
2025-09-20 12:21:53 +00:00
Rocco Silipo e549ce25de fix(DB/Creature) Set Force Destination off on Kvaldir Raider's Action List. (#22979) 2025-09-20 14:20:51 +02:00
Yehonal db1ebb04e9 Improve INSTALL_ARGS handling and update OpenSSL version (#22978) 2025-09-20 13:19:21 +02:00
Yehonal 403dacc885 feat(Core/SAI): enhance movement actions with force destination option (#22974) 2025-09-20 13:15:45 +02:00
github-actions[bot] 32a501ca14 chore(DB): import pending files
Referenced commit(s): 90f3dbf04b
2025-09-20 10:51:10 +00:00
Andrew 90f3dbf04b fix(DB/Misc): Fix Neutralizing the Cauldrons animations (#22980) 2025-09-20 07:50:08 -03:00
github-actions[bot] 7b2b029f3b chore(DB): import pending files
Referenced commit(s): 29584da1d0
2025-09-20 09:49:00 +00:00
blinkysc 29584da1d0 fix(DB/StormPeaks): Fix Fjorlin Frostbrow gossip prerequisite conditions (#22914) 2025-09-20 06:47:55 -03:00
Yehonal 09b79f45f2 feat(NPC): add configuration for creature repositioning during NPC combat (#22973)
Co-authored-by: Andrew <47818697+Nyeriah@users.noreply.github.com>
2025-09-20 03:49:50 +02:00
github-actions[bot] 857559616c chore(DB): import pending files
Referenced commit(s): 6af1ef5a8e
2025-09-20 00:07:45 +00:00
sogladev 6af1ef5a8e fix(DB/Creature): Sindragosa's Fall Wyrm Reanimator/Frost Brood Spawn… (#22963)
Co-authored-by: dr-j <dr-j@users.noreply.github.com>
2025-09-19 21:06:38 -03:00
github-actions[bot] cdbd4f4bb6 chore(DB): import pending files
Referenced commit(s): cc183753a1
2025-09-19 23:16:57 +00:00
Rocco Silipo cc183753a1 fix(DB/Borean Tundra) Solve various issues in Kaskala area. (#22970) 2025-09-20 01:15:55 +02:00
github-actions[bot] dabee1e863 chore(DB): import pending files
Referenced commit(s): c2b5c4dcf8
2025-09-19 20:02:13 +00:00
sogladev c2b5c4dcf8 fix(DB/SmartAI): add visuals and animations to quest Vision of Air (#22946)
Co-authored-by: Dr-J <daniel.jarrott0@gmail.com>
2025-09-19 22:01:03 +02:00
github-actions[bot] c1e771195e chore(DB): import pending files
Referenced commit(s): 00587fdbbb
2025-09-19 09:47:58 +00:00
sogladev 436c988c2d refactor(DB/SmartAI): quest 'X Marks... Your Doom!' (#22961)
Co-authored-by: dr-j <dr-j@users.noreply.github.com>
2025-09-19 10:47:50 +01:00
sogladev c8665b003e refactor(DB/SmartAI): quest 'That's What Friends Are For...' (#22960)
Co-authored-by: dr-j <dr-j@users.noreply.github.com>
2025-09-19 10:47:35 +01:00
sogladev c619cc3956 refactor(DB/SmartAI): quest 'Uncovering the Tunnels' (#22959)
Co-authored-by: dr-j <dr-j@users.noreply.github.com>
2025-09-19 10:47:22 +01:00
sogladev 13a3c70861 fix(DB/Achievement): Add missing criteria to 'Disturbing the Peace' (#22957)
Co-authored-by: dr-j <dr-j@users.noreply.github.com>
2025-09-19 10:47:12 +01:00
sogladev 00587fdbbb fix(DB/SmartAI): quest The Collapse and Deploy the Shake-n-Quake (#22945)
Co-authored-by: Killyana <morphone1@gmail.com>
Co-authored-by: Rushor <PBienati@web.de>
2025-09-19 10:46:55 +01:00
Andrew b09609e47d feat(Core/Spells): Implement OnSpellCastFinished hook (#22941)
Co-authored-by: Ovahlord <dreadkiller@gmx.de>
2025-09-19 04:52:22 -03:00
github-actions[bot] d58d8692b1 chore(DB): import pending files
Referenced commit(s): 436890ccfc
2025-09-17 08:00:35 +00:00
Andrew 436890ccfc fix(DB/Creature): Fix Fallen Earthen Warrior (#22950) 2025-09-17 04:59:35 -03:00
github-actions[bot] 11defa83c7 chore(DB): import pending files
Referenced commit(s): f0acf6e3f0
2025-09-16 23:23:35 +00:00
sudlud f0acf6e3f0 fix(DB/Gameobject): Sniffed Values for 'Sturdy Vine' spawns (#22947) 2025-09-16 20:22:28 -03:00
github-actions[bot] 7b9a34b903 chore(DB): import pending files
Referenced commit(s): 56f2a8e4f3
2025-09-16 10:00:02 +00:00
Andrew a56c8805c9 fix(DB/Creature): Implement Naxxanar visuals (#22932) 2025-09-16 11:59:16 +02:00
Andrew 6a156a69fd fix(Scripts/AzjolNerub): Fix Drain Power spell (#22933) 2025-09-16 11:59:09 +02:00
Andrew 56f2a8e4f3 fix(Scripts/BoreanTundra): Script Soul Deflection spell (#22931) 2025-09-16 11:59:02 +02:00
github-actions[bot] f31a7281bd chore(DB): import pending files
Referenced commit(s): add49b7723
2025-09-16 09:54:49 +00:00
Andrew add49b7723 fix(Scripts/Dragonblight): Script Wyrmrest Vanquisher Flame Fury spell (#22940) 2025-09-16 06:53:49 -03:00
github-actions[bot] 5b493a4767 chore(DB): import pending files
Referenced commit(s): d41bfd165e
2025-09-16 08:22:51 +00:00
chauusie 06c692abe6 fix(DB/loot) adjusting droprate for earthfury bracer and earthfury belt (#22935) 2025-09-16 09:22:23 +01:00
chauusie d41bfd165e fix(DB/npc_vendor) Adjusted Wood frog box restock value from 2.5 hours to 30 mins (#22936) 2025-09-16 09:21:47 +01:00
Andrew 9e0b6ff7a6 fix(Core/Creature): ensure target is valid when acquiring GUID (#22937) 2025-09-15 19:05:50 -03:00
github-actions[bot] 1aa5788f72 chore(DB): import pending files
Referenced commit(s): f599c5c3a8
2025-09-15 19:42:32 +00:00
Benjamin Jackson f599c5c3a8 feat(DB): Add VerifiedBuild column for creature_model_info (#22934) 2025-09-15 16:41:30 -03:00
github-actions[bot] a0deae6a4f chore(DB): import pending files
Referenced commit(s): 900f45514d
2025-09-15 19:09:04 +00:00
Andrew 900f45514d fix(DB/SAI): Fix several A Returning to Resting quest issues (#22930) 2025-09-15 16:08:00 -03:00
github-actions[bot] 738ab902a1 chore(DB): import pending files
Referenced commit(s): 97c89f4750
2025-09-15 15:52:42 +00:00
Benjamin Jackson 97c89f4750 fix(DB/Creature): Adjust addon info for Storm Giant. (#22922) 2025-09-15 12:51:40 -03:00
github-actions[bot] ddb5c33388 chore(DB): import pending files
Referenced commit(s): 94c2f38ecc
2025-09-15 07:45:53 +00:00
Andrew c56a8a9155 fix(DB/SAI): Script On Brann's Trail turn in event (#22919) 2025-09-15 09:44:58 +02:00
Andrew 94c2f38ecc feat(Core/SAI): Implement delay option to SMART_ACTION_TALK (#22918) 2025-09-15 09:44:49 +02:00
天鹭 fc30b784ae chore(PlayerSettings): Save data and lowGuid (#22921) 2025-09-14 22:18:33 -03:00
github-actions[bot] c822b98010 chore(DB): import pending files
Referenced commit(s): fc0d5ae502
2025-09-14 22:58:12 +00:00
Rocco Silipo fc0d5ae502 fix(DB/Creature) Gjalerbron Prisoners no longer swim in air. (#22917) 2025-09-15 00:44:11 +02:00
Andrew 28532bc1e0 feat(Core/AI): Allow preventing health check events while casting (#22897) 2025-09-14 18:48:33 -03:00
Jelle Meeus 3d828a6568 fix(World/WorldState): SI main event can only be disabled manually (#22911) 2025-09-14 18:02:02 -03:00
Jelle Meeus 7a43b0f13e feat(World/WorldConfig): ScourgeInvasion Add config BattlesWon tresholds (#22913) 2025-09-14 11:25:18 -03:00
github-actions[bot] 17a9f93cfd chore(DB): import pending files
Referenced commit(s): 835febe6ae
2025-09-14 08:31:10 +00:00
Rocco Silipo 835febe6ae fix(DB/Sholazar) Captive Crocolisk no longer has a wonky path. (#22891) 2025-09-14 10:30:10 +02:00
github-actions[bot] 26662b8db7 chore(DB): import pending files
Referenced commit(s): 7a15ccbe30
2025-09-14 08:26:29 +00:00
Ryan Turner 7a15ccbe30 fix(DB/Quest) - Only allow either News for Rakoria or News from Zangarmarsh be picked up and completed (#22904) 2025-09-14 09:25:25 +01:00
github-actions[bot] 6c12f0ff5f chore(DB): import pending files
Referenced commit(s): 660ae23dd7
2025-09-13 22:42:17 +00:00
Teknishun7 660ae23dd7 fix(DB/Creature) Remove skinning loot from Soriid the Devourer (#22908) 2025-09-13 23:41:13 +01:00
github-actions[bot] 3dc5be9878 chore(DB): import pending files
Referenced commit(s): 7da80bd189
2025-09-13 21:09:10 +00:00
blinkysc 7da80bd189 fix(DB/StormPeaks) Add quest prerequisite for Unwelcome Guests (#22858) 2025-09-13 23:08:07 +02:00
github-actions[bot] 022105ed1d chore(DB): import pending files
Referenced commit(s): 2ca4e8d398
2025-09-13 20:48:33 +00:00
Jelle Meeus 2ca4e8d398 fix(DB/SmartAI): Fortunate Misunderstandings quest completion and oracle pathing (#22888) 2025-09-13 22:46:33 +02:00
github-actions[bot] 705f5e5d2a chore(DB): import pending files
Referenced commit(s): 4a0803a25d
2025-09-13 10:46:04 +00:00
Andrew 4a0803a25d fix(DB/SAI): Scavenge-bot not granting credit for Weakness to Lightni… (#22899) 2025-09-13 07:45:03 -03:00
github-actions[bot] 5814af9e76 chore(DB): import pending files
Referenced commit(s): b085dcddab
2025-09-12 22:29:40 +00:00
Benjamin Jackson b085dcddab fix(DB/SAI): Remove Lash of Pain from Succubus Minion. (#22890) 2025-09-12 19:26:46 -03:00
github-actions[bot] 4fe438da81 chore(DB): import pending files
Referenced commit(s): 2868dc2106
2025-09-12 22:06:22 +00:00
Andrew 2868dc2106 fix(DB/Conditions): Fix Ebon Blade Banner target conditions (Leave Our Mark) (#22880) 2025-09-12 19:05:20 -03:00
github-actions[bot] dd67916176 chore(DB): import pending files
Referenced commit(s): d8c0b25325
2025-09-12 13:23:53 +00:00
blinkysc d8c0b25325 fix(DB/Spells): Anub'arak now uses heroic pound when heroic (#22862) 2025-09-12 10:22:50 -03:00
github-actions[bot] 14cd800e2d chore(DB): import pending files
Referenced commit(s): 73a18d6499
2025-09-12 02:06:47 +00:00
Jelle Meeus 73a18d6499 fix(Scripts/Spells): Friendship Bread does not display hearts when eating (#22875) 2025-09-11 23:02:28 -03:00
github-actions[bot] 7bed27679b chore(DB): import pending files
Referenced commit(s): 55574f191b
2025-09-12 00:03:54 +00:00
Jelle Meeus 55574f191b fix(DB/SAI): Borean Tundra Foolish Endeavors various issues (#22876) 2025-09-11 21:02:48 -03:00
github-actions[bot] 3899fca657 chore(DB): import pending files
Referenced commit(s): 0a3f5544b4
2025-09-12 00:01:50 +00:00
Jelle Meeus 558870af9e fix(DB/Quest): 'The Aberrations Must Die.' is available early (#22889) 2025-09-11 21:01:26 -03:00
天鹭 0a3f5544b4 fix(Core/Creature): group members should also follow the movement (#22690) 2025-09-11 21:00:46 -03:00
github-actions[bot] 5291f30422 chore(DB): import pending files
Referenced commit(s): 3400f919b7
2025-09-11 22:01:32 +00:00
Rocco Silipo 3400f919b7 fix(DB/Oculus): Add various formations. (#22885) 2025-09-11 19:00:15 -03:00
Andrew f893df775c feat(Core/Conditions): Implement CONDITION_AI_DATA and support for st… (#22879) 2025-09-11 18:38:56 -03:00
ekekekkekkek 110fd070f2 fix(Scripts/Spells): Druid ability Starfall now will no longer try to hit outside line of sight targets (#22422)
Co-authored-by: Tereneckla <Tereneckla@pm.me>
2025-09-11 10:46:34 -03:00
Jelle Meeus f334a38c5e fix(Core/Player): Haunted Memento aura remains after mailing the item (#22877) 2025-09-11 09:18:18 -03:00
github-actions[bot] e607736dfe chore(DB): import pending files
Referenced commit(s): e1abb7f346
2025-09-11 12:15:42 +00:00
Jelle Meeus e1abb7f346 fix(DB/SpellProcEvent): Warrior Sword Specialization and Sudden Death (#22042) 2025-09-11 09:14:40 -03:00
github-actions[bot] acab88ebc5 chore(DB): import pending files
Referenced commit(s): c7fc738b4e
2025-09-11 11:05:23 +00:00
Jelle Meeus c7fc738b4e fix(DB/SmartAI): Zul'Drak Voltarus teleporters sometimes do not work (#22878) 2025-09-11 13:04:23 +02:00
github-actions[bot] 7c706cc79a chore(DB): import pending files
Referenced commit(s): dc66ce6079
2025-09-11 06:56:47 +00:00
Rocco Silipo dc66ce6079 fix(DB/Script/Gundrak) Implement Rhino event when the bridge moves. (#22873) 2025-09-11 08:55:46 +02:00
github-actions[bot] 9fc8e11810 chore(DB): import pending files
Referenced commit(s): 32573e8f54
2025-09-10 22:48:39 +00:00
Andrew 32573e8f54 fix(Core/Formations): Prevent formation members from moving when cont… (#22859) 2025-09-11 00:47:24 +02:00
Andrew b2283b737a fix(Scripts/Stormpeaks): Fix Feed Stormcrest Eagle spell target condi… (#22848) 2025-09-11 00:46:55 +02:00
github-actions[bot] d030240891 chore(DB): import pending files
Referenced commit(s): e64f3601e0
2025-09-10 14:56:33 +00:00
sudlud e64f3601e0 fix(DB/Gameobject): Sniffed Values for 'Weapon Rack' spawns (#22854) 2025-09-10 11:55:31 -03:00
github-actions[bot] 9db27bc865 chore(DB): import pending files
Referenced commit(s): 96330bbdd0
2025-09-10 14:42:54 +00:00
Jelle Meeus 96330bbdd0 fix(DB/Conditions): Horde Siege Tank cannot be entered without the required quest (#22856) 2025-09-10 15:41:52 +01:00
github-actions[bot] 0fb904f82a chore(DB): import pending files
Referenced commit(s): e9c1be4648
2025-09-09 20:48:25 +00:00
v-mstrs e9c1be4648 fix(DB/SAI) "The Earthen Oath" quest kill credit from 2 to 1 (#22667)
Co-authored-by: sudlud <sudlud@users.noreply.github.com>
2025-09-09 17:47:24 -03:00
Andrew 3a1f43db5c fix(Scripts/ScarletEnclave): fix crash in Persuasive Strike spell script (#22840) 2025-09-09 13:43:04 -03:00
github-actions[bot] 24ee9e248b chore(DB): import pending files
Referenced commit(s): 4c9bb35352
2025-09-09 11:58:10 +00:00
Benjamin Jackson 4c9bb35352 fix(DB/Creature): Correct visibility distance and addon auras of Fel Reaver. (#22847) 2025-09-09 08:57:04 -03:00
github-actions[bot] cf13c63266 chore(DB): import pending files
Referenced commit(s): 79278aa504
2025-09-09 05:41:05 +00:00
Jelle Meeus 79278aa504 fix(Scripts/Dragonblight): quest Fresh Remounts (#22846) 2025-09-09 02:40:01 -03:00
github-actions[bot] 6750edfee5 chore(DB): import pending files
Referenced commit(s): 5e5b64e04a
2025-09-09 04:22:35 +00:00
sudlud 4f3fb1500d fix(DB/Gameobject): Sniffed Values for 'Meat Wagon' spawns (#22843) 2025-09-09 01:21:56 -03:00
sudlud 5e5b64e04a fix(DB/Gameobject): Sniffed Values for 'Death's Gaze Orb' spawns (#22844) 2025-09-09 01:21:36 -03:00
github-actions[bot] c7e5e7adc0 chore(DB): import pending files
Referenced commit(s): 9ba155c089
2025-09-09 04:16:51 +00:00
Jelle Meeus 9ba155c089 fix(Scripts/Northrend): Scourge Plague Spreader summons ghouls mid-air (#22845) 2025-09-09 01:15:45 -03:00
Takenbacon 4d333518bb fix(Core/Visibility): Visibility should be using 2d distance checks (#22839) 2025-09-08 06:52:14 -03:00
Takenbacon fa33b27700 fix(Core/Visibility): Mark destructible objects infinite visibility (#22838) 2025-09-08 06:51:53 -03:00
Takenbacon 9e04cb9e37 fix(Core/Visibility): Add some safety to visibility grid container (#22837) 2025-09-08 06:51:41 -03:00
Takenbacon f191d71193 fix(Core/Visibility): Fix visibility issue at sight limit (#22830) 2025-09-07 14:17:10 -03:00
github-actions[bot] 96f8149e0e chore(DB): import pending files
Referenced commit(s): f1a6dd9c11
2025-09-07 14:49:16 +00:00
Andrew f1a6dd9c11 fix(DB/SAI): Escape Silverbrook escort should only start on passenger… (#22829) 2025-09-07 11:48:13 -03:00
Takenbacon a28824df85 feat(Core/Visibility): Far visibility worldobjects (#22828) 2025-09-07 08:02:03 -03:00
Benjamin Jackson d55851c513 fix(Scripts/Commands): Don't set error message flag for successful event activelist command. (#22824) 2025-09-06 20:11:38 -03:00
github-actions[bot] fa087ff054 chore(DB): import pending files
Referenced commit(s): 1c0f4804fd
2025-09-06 21:09:37 +00:00
sudlud 1c0f4804fd fix(DB/Gameobject): Sniffed Values for 'Doodad_FrostGiantIceShard' sp… (#22823) 2025-09-06 23:08:31 +02:00
Yehonal 62be119760 fix(CMake/Boost): package finding logic + suppress deprecation warnings + support Boost 1.89 2025-09-06 18:39:59 +02:00
github-actions[bot] d1b75f93f4 chore(DB): import pending files
Referenced commit(s): d22f015e52
2025-09-06 13:29:01 +00:00
Rocco Silipo e6dd4bcb88 fix(DB/Creature) Add immunities to various NPCs. (#22815) 2025-09-06 10:28:22 -03:00
Jelle Meeus d22f015e52 fix(Core/Player): Haunted Memento aura is present when item is in bank (#22811) 2025-09-06 10:28:01 -03:00
github-actions[bot] 809a06ad0b chore(DB): import pending files
Referenced commit(s): 46f12f78e0
2025-09-06 13:22:01 +00:00
Andrew 46f12f78e0 fix(Scripts/AzjolNerub): Modernize Krikthir the Gatewatcher script (#22647)
Co-authored-by: sudlud <sudlud@users.noreply.github.com>
2025-09-06 10:21:00 -03:00
Yehonal 119af32649 feat(Scripts): Add health and console commands to service manager and corresponding tests (#22814) 2025-09-06 15:10:42 +02:00
Yehonal d3a6c09b31 feat(config): add support for excluding modules during installation and updates (#22793) 2025-09-06 11:22:22 +02:00
github-actions[bot] 725b475dd4 chore(DB): import pending files
Referenced commit(s): 18723e298e
2025-09-06 07:49:23 +00:00
Jelle Meeus 18723e298e fix(DB/SAI): Scourge Invasion mini bosses various issues (#22809)
Co-authored-by: Ryan Turner <AugustoMendes4426@gmail.com>
2025-09-06 09:48:23 +02:00
github-actions[bot] d2aa2fc5ee chore(DB): import pending files
Referenced commit(s): fdc81f3be0
2025-09-06 07:45:10 +00:00
Jelle Meeus 2ac43d1722 fix(DB/Event): missing Ironforge Argent Quartermaster (#22810)
Co-authored-by: Orozxy <crusadermeile@gmail.com>
2025-09-06 09:45:00 +02:00
Jelle Meeus 82454c2261 fix(DB/Creature): Necrotic Shard is sometimes regenerating health (#22812) 2025-09-06 09:44:15 +02:00
Jelle Meeus fdc81f3be0 fix(Scripts/Spells): Shadow of Doom death sometimes deals no damage (#22813) 2025-09-06 09:44:07 +02:00
github-actions[bot] 0210e565da chore(DB): import pending files
Referenced commit(s): f7aa69e389
2025-09-05 13:15:32 +00:00
Benjamin Jackson f7aa69e389 fix(DB/Creature): Correct spells for Orc Warlock chess piece. (#22770) 2025-09-05 10:12:59 -03:00
github-actions[bot] 9320f9e1e6 chore(DB): import pending files
Referenced commit(s): 0205a9674f
2025-09-05 00:07:30 +00:00
Andrew 0205a9674f fix(DB/SAI): Fix Leave no one Behind not granting credit if crusaders… (#22790) 2025-09-04 21:06:26 -03:00
github-actions[bot] 741f69052e chore(DB): import pending files
Referenced commit(s): 3f25bee746
2025-09-04 22:36:56 +00:00
Jelle Meeus 3f25bee746 fix(DB/SmartAI): Quest Draconis Gastritis can't be completed (#22805) 2025-09-05 00:35:23 +02:00
github-actions[bot] 42f603a94d chore(DB): import pending files
Referenced commit(s): 091ff23130
2025-09-04 20:07:32 +00:00
sudlud 091ff23130 fix(DB/Gameobject): Sniffed Values for 'Gravestone' spawns (#22796) 2025-09-04 22:06:29 +02:00
github-actions[bot] 079e003caf chore(DB): import pending files
Referenced commit(s): 1278ccff12
2025-09-04 18:20:43 +00:00
Benjamin Jackson 1278ccff12 fix(DB/Creature): Remove incorrect other gender display from Vurtok Axebreaker. (#22782) 2025-09-04 20:19:43 +02:00
Yehonal c9e1782d7a Refactor menu command handling for direct execution (#22791) 2025-09-04 11:47:44 +02:00
github-actions[bot] 300ed47bc4 chore(DB): import pending files
Referenced commit(s): 24c611a9c3
2025-09-04 09:23:46 +00:00
Andrew 24c611a9c3 fix(DB/SAI): Despawn Frozen Phylactery on use (#22788) 2025-09-04 11:22:46 +02:00
Andrew d69f61d7ab fix(Core/SAI): Fix crash in SMART_TARGET_OWNER_OR_SUMMONER (#22789) 2025-09-04 06:19:25 -03:00
Takenbacon af31aaa374 fix(Core/Maps): Move corpse expiration updates to map (#22780) 2025-09-03 20:29:15 -03:00
@cgrahamseven fa9e34de88 fix(Scripts/Oculus): Fix oculus npc belgaristrasz gossip menu (#22765)
Co-authored-by: cgrahamseven <chris.graham@protonmail.com>
2025-09-03 20:25:18 -03:00
github-actions[bot] 2fc5ee9635 chore(DB): import pending files
Referenced commit(s): 1e29c31b07
2025-09-03 23:21:04 +00:00
Jelle Meeus d73cbec424 fix(DB/SAI): low-level scourge invasion mobs are killed by guards (#22784) 2025-09-03 20:20:53 -03:00
Jelle Meeus f970746c2c fix(Scripts/WorldState): zone invasion marks self as defeated when ti… (#22787)
Co-authored-by: Killerwife <killerwife@gmail.com>
2025-09-03 20:20:30 -03:00
Jelle Meeus 1e29c31b07 fix(Scripts/WorldState): defeated scourge zone invasions not restarting after a defeat (#22783) 2025-09-03 20:20:04 -03:00
Yehonal 599d206584 feat(MenuSystem): Implement unified menu system for AzerothCore management (#22786) 2025-09-04 00:03:55 +02:00
github-actions[bot] d5d8256bc5 chore(DB): import pending files
Referenced commit(s): 4d0281552a
2025-09-03 11:14:11 +00:00
Andrew 11e448a230 fix(Scripts/Spells): Fix group credit for Salvaging Life's Strength quest spell (#22779) 2025-09-03 13:13:42 +02:00
Andrew 4d0281552a fix(Scripts/HowlingFjord): Fix Falcon vs Hawk quest credit being gran… (#22778) 2025-09-03 13:13:06 +02:00
github-actions[bot] 6381194d8a chore(DB): import pending files
Referenced commit(s): 0f805db8ba
2025-09-03 04:14:21 +00:00
sudlud 0f805db8ba fix(DB/Gameobject): Sniffed Values for 'various doodad' spawns (#22773) 2025-09-03 06:13:18 +02:00
github-actions[bot] b225e00042 chore(DB): import pending files
Referenced commit(s): a575101751
2025-09-03 01:35:02 +00:00
Yehonal a575101751 feat(core): implement 31-bit safe petition_id for improved database integrity (#22774) 2025-09-02 22:31:09 -03:00
github-actions[bot] 52f79d8dd7 chore(DB): import pending files
Referenced commit(s): f1cb5cc71b
2025-09-02 23:16:45 +00:00
Andrew 66d43b794f fix(DB/SAI): Despawn Wooly Mammoth on dismount (#22776) 2025-09-02 20:15:52 -03:00
Andrew f1cb5cc71b fix(Core/SAI): Remove combat flag on evade for SAI-scripted charmed u… (#22775) 2025-09-02 20:15:40 -03:00
github-actions[bot] 4308fa20f2 chore(DB): import pending files
Referenced commit(s): e26421d2bc
2025-09-02 21:43:09 +00:00
Benjamin Jackson e26421d2bc fix(DB/Creature): Add spawn for Bubulo Acerbus. (#22768) 2025-09-02 18:42:04 -03:00
github-actions[bot] 91c2e40232 chore(DB): import pending files
Referenced commit(s): 201a84fe85
2025-09-02 06:35:21 +00:00
Rocco Silipo 201a84fe85 fix(DB/SAI) Add missing abilites for various npcs in The Shadow Vault area. (#22766) 2025-09-02 08:34:18 +02:00
Benjamin Jackson 033a6e31ed fix(Scripts/World): Swap Shard communication spell to direct cast instead of AoE. (#22764) 2025-09-01 22:40:12 -03:00
Benjamin Jackson 611c9296ff refactor(Core/Packets): Rewrite various item packets to modern class. (#22758) 2025-08-31 21:53:26 +02:00
Yehonal 5a79a4edce Feat/refactoring-module-menu (#22733) 2025-08-30 23:44:07 +02:00
github-actions[bot] 5c31e3b411 chore(DB): import pending files
Referenced commit(s): 427557c3d8
2025-08-30 16:39:19 +00:00
sudlud 9a80edbe92 fix(DB/Gameobject): Sniffed Values for 'Stranglekelp Sack' spawns (#22756) 2025-08-30 18:38:47 +02:00
sudlud 78b9f6ab14 fix(DB/Gameobject): Sniffed Values for 'Mag'har Rug' spawns (#22755) 2025-08-30 18:38:32 +02:00
sudlud 427557c3d8 fix(DB/Creature): Sniffed Values for 'Tahu Sagewind' spawns (#22754) 2025-08-30 18:38:17 +02:00
github-actions[bot] 6065270a37 chore(DB): import pending files
Referenced commit(s): d9c99cd015
2025-08-30 12:44:18 +00:00
Benjamin Jackson d9c99cd015 fix(Scripts/Karazhan): Minor adjustments to Tenris Mirkblood. (#22753) 2025-08-30 09:43:06 -03:00
iThorgrim 445161d3b9 refactor(Core/Script): Rename Creature_SelectLevel to OnCreatureSelectLevel for clarity (#22750) 2025-08-29 17:19:57 -03:00
github-actions[bot] ba607dad88 chore(DB): import pending files
Referenced commit(s): 49dc26bf1d
2025-08-29 13:40:27 +00:00
Annamaria 49dc26bf1d fix (db/smart_scripts): Skeletal Horrors only cast when 2 or more players (#22745) 2025-08-29 14:37:29 +01:00
Andrew c2b298eaac fix(Scripts/SI): crash fix (#22744) 2025-08-28 23:43:36 -04:00
github-actions[bot] 7756b41160 chore(DB): import pending files
Referenced commit(s): 4bf57d11f2
2025-08-29 02:54:27 +00:00
Benjamin Jackson 4bf57d11f2 fix(DB/Loot): Adjust drops for various Scourge Invasion related items. (#22738) 2025-08-28 23:53:26 -03:00
github-actions[bot] 50bbddc7bf chore(DB): import pending files
Referenced commit(s): 99463bce9a
2025-08-28 23:42:55 +00:00
Benjamin Jackson 99463bce9a fix(DB/Creature): Bind players to instance upon killing Tenris Mirkblood. (#22743) 2025-08-28 20:41:54 -03:00
Benjamin Jackson e39333abcb fix(Core/WorldState): Start boss activation event when starting Scourge Invasion. (#22739) 2025-08-28 13:34:45 -03:00
github-actions[bot] 36138dccb7 chore(DB): import pending files
Referenced commit(s): a957b4a5b7
2025-08-27 22:34:06 +00:00
Jelle Meeus a957b4a5b7 fix(DB/SmartAI): port Shadow of Doom script to SmartAI (#22735) 2025-08-27 19:32:59 -03:00
Jelle Meeus a3131d5cdb fix(Core/Player): Recast lost by death item obtain spells of any item… (#22736)
Co-authored-by: ariel- <ariel-@users.noreply.github.com>
2025-08-27 15:43:39 -03:00
github-actions[bot] 71c22ff6cf chore(DB): import pending files
Referenced commit(s): cdceb775a0
2025-08-27 09:29:25 +00:00
Benjamin Jackson cdceb775a0 fix(Scripts/Karazhan): Implement Tenris Mirkblood. (#22551)
Co-authored-by: amed80 <8395873+amed80@users.noreply.github.com>
2025-08-27 06:28:18 -03:00
Quartzi 0fc05ed4d2 feat(Core/Scripting): Add OnPlayerGiveReputation script hook (#21869) 2025-08-27 04:32:02 -03:00
github-actions[bot] a8284b71de chore(DB): import pending files
Referenced commit(s): 96ad9f88ba
2025-08-27 03:03:06 +00:00
Benjamin Jackson 96ad9f88ba fix(DB/Item): Add some stat values to Death Knight Brutal Gladiator set. (#22725) 2025-08-26 23:02:04 -04:00
Benjamin Jackson 2ad40a4d23 fix(Core/GroupHandler): Adjust maximum value for rolls. (#22686) 2025-08-26 20:58:41 -04:00
Yehonal de98f42411 feat(Service Manager): add service registry custom dir and restore functionality (#22589)
This pull request introduces significant enhancements to the service management system by adding a service registry with features like automatic tracking, reboot persistence, and restoration of missing services. 

The goal of this PR is to allow the user to store the service configuration files into an arbitrary directory, in this way they can be easily tracked, versioned, and replicated across different environments

It also includes a migration script to transition from the legacy service configuration format to the new registry-based system. Below is a summary of the most important changes:

### Service Registry and Management Enhancements:
1. **Service Registry Integration**:
   - Added a comprehensive service registry system to track all created services, enabling features like cross-reboot persistence and restoration of missing services (`apps/startup-scripts/src/service-manager.sh`). [[1]](diffhunk://#diff-31edfed7f73d0647a5fc96ce74c249e025e884cd1fe06621cb78eb4a381464f9R41-R229) [[2]](diffhunk://#diff-31edfed7f73d0647a5fc96ce74c249e025e884cd1fe06621cb78eb4a381464f9R273)
   - Introduced commands for managing the registry, such as `restore` for recreating missing services and `list` for viewing registered services. [[1]](diffhunk://#diff-31edfed7f73d0647a5fc96ce74c249e025e884cd1fe06621cb78eb4a381464f9R273) [[2]](diffhunk://#diff-31edfed7f73d0647a5fc96ce74c249e025e884cd1fe06621cb78eb4a381464f9R332-R334) [[3]](diffhunk://#diff-31edfed7f73d0647a5fc96ce74c249e025e884cd1fe06621cb78eb4a381464f9R346-L172)

2. **PM2 Persistence**:
   - Enhanced PM2 integration to automatically configure startup persistence across reboots using `pm2 startup` and `pm2 save` after service creation.

### Migration and Compatibility:
3. **Migration Script**:
   - Added a `migrate-registry.sh` script to convert legacy service configurations into the new registry format. It ensures compatibility while preserving existing service information (`apps/startup-scripts/src/migrate-registry.sh`).

### Documentation Updates:
4. **Updated README**:
   - Expanded documentation in `README.md` to explain the new service registry features, including usage examples, custom configuration directories, and migration instructions. [[1]](diffhunk://#diff-0917b2888cc9b16539173f318b77773d08f7bf360579b68b9710a96ca2bcbb64L387-R468) [[2]](diffhunk://#diff-0917b2888cc9b16539173f318b77773d08f7bf360579b68b9710a96ca2bcbb64R613-R626)

### Configuration Improvements:
5. **Custom Configuration Directories**:
   - Added support for overriding the default configuration directory for service registry and files using the `AC_SERVICE_CONFIG_DIR` environment variable. [[1]](diffhunk://#diff-31edfed7f73d0647a5fc96ce74c249e025e884cd1fe06621cb78eb4a381464f9L14-R15) [[2]](diffhunk://#diff-31edfed7f73d0647a5fc96ce74c249e025e884cd1fe06621cb78eb4a381464f9R346-L172)

These changes significantly improve the usability, reliability, and maintainability of the service management system, especially for setups requiring persistence and multi-project configurations.
2025-08-25 20:25:17 +02:00
github-actions[bot] 846efc3b64 chore(DB): import pending files
Referenced commit(s): f02af61358
2025-08-25 17:22:38 +00:00
sudlud f02af61358 fix(DB/SAI): fix dark portal creatures calling for help on aggro (#22730) 2025-08-25 19:21:33 +02:00
github-actions[bot] d22d5ae40c chore(DB): import pending files
Referenced commit(s): 2e614069a5
2025-08-25 15:33:46 +00:00
sudlud ddf0997c55 fix(DB/SAI): set dark portal event creatures active (#22724) 2025-08-25 12:33:43 -03:00
sudlud 2e614069a5 fix(Entities/Creature): do not touch setActive() state in setDeathSta… (#22729)
Co-authored-by: Takenbacon <revoke1336@live.com>
2025-08-25 12:32:35 -03:00
github-actions[bot] 8a340b1efb chore(DB): import pending files
Referenced commit(s): cd9bdf7a66
2025-08-25 14:53:13 +00:00
Andrew cd9bdf7a66 fix(DB/Conditions): Everfrost Chip should require atleast friendly Sons of Hodir standing (#22718) 2025-08-25 11:52:07 -03:00
Benjamin Jackson 9ed31bd63e refactor(Core/Packets): Rewrite various query packets to modern class. (#22719) 2025-08-24 14:50:16 +02:00
github-actions[bot] 915b39202a chore(DB): import pending files
Referenced commit(s): a1eb3e5cec
2025-08-24 05:41:39 +00:00
sudlud a1eb3e5cec fix(DB/SAI): fix event_type of Pit Commander SAI entry (#22723) 2025-08-24 07:40:37 +02:00
sudlud 2a73b89f6a fix(CI/modules-build): disable archived / outdated module mod-war-effort (#22722) 2025-08-23 16:05:17 -03:00
Andrew 3bdcd83f4a fix(Scripts/Spells): Fix Death and Decay interrupting spellcasting (#22720) 2025-08-23 09:39:32 +02:00
github-actions[bot] efd7a00630 chore(DB): import pending files
Referenced commit(s): fc90e30e50
2025-08-23 05:12:05 +00:00
Benjamin Jackson fc90e30e50 fix(DB): Add spawns/events for Ahn'Qiraj War Effort event. (#22497) 2025-08-23 07:11:03 +02:00
Andrew 82d98f9fb7 chore(Core/Player): Change player setting index type from uint8 to ui… (#22716) 2025-08-22 22:25:15 -03:00
Andrew c67d4efa4a fix(Core/DB): Update connection type for character settings select (#22712) 2025-08-22 10:26:35 +02:00
SAS2000 9d82ae97ae fix(SERVER/Main): Implementation for version param (#22707) 2025-08-21 19:13:04 +02:00
iThorgrim 413178662a fix(Core/SAI): GameObject smart_script based on GUID (#22710) 2025-08-20 19:31:00 -03:00
Benjamin Jackson d4713356a0 refactor(Core/Packets): Rewrite MSG_MINIMAP_PING to modern packet class. (#22696) 2025-08-19 21:51:06 +02:00
Andrew e0f2ec41ef fix(Scripts/Commands): Allow using debug LFG and BG from console (#22705) 2025-08-19 17:59:57 +02:00
天鹭 2602add0fd refactor(Core): Improve readability (#22691) 2025-08-19 15:03:03 +02:00
github-actions[bot] a19dc17cc5 chore(DB): import pending files
Referenced commit(s): 0f08b6e8ab
2025-08-19 12:06:59 +00:00
Rocco Silipo 0f08b6e8ab fix(DB/Creature) Resolve Return of the High Chief quest issues. (#22695) 2025-08-19 09:05:57 -03:00
Takenbacon e3505df99f fix(Core/Visibility): Fix visibility crash (#22704) 2025-08-19 06:14:08 +02:00
Yehonal 2ae1dbeab2 feat(core): add standalone functions for player settings (#22703) 2025-08-18 22:29:34 -03:00
github-actions[bot] f41fb5a169 chore(DB): import pending files
Referenced commit(s): 7a9f430935
2025-08-18 19:05:07 +00:00
Benjamin Jackson 7a9f430935 fix(Scripts/SunwellPlateau): Remove Kil'jaeden's debuffs from Shield of the Blue effects. (#22687) 2025-08-18 16:04:06 -03:00
github-actions[bot] 36f04acdd5 chore(DB): import pending files
Referenced commit(s): 1a019f967d
2025-08-18 15:33:47 +00:00
Benjamin Jackson 1a019f967d fix(DB/Creature): Add more spawns for Isle of Quel'Danas harbor quest credit creatures. (#22698) 2025-08-18 12:32:43 -03:00
github-actions[bot] 1878efda1e chore(DB): import pending files
Referenced commit(s): 3e36b35a15
2025-08-14 11:59:36 +00:00
Christian M 3e36b35a15 fix(DB/SAI): Some Azjob-Nerub spell fixes (#22603) 2025-08-14 08:58:36 -03:00
github-actions[bot] 8bffcab5cf chore(DB): import pending files
Referenced commit(s): 2877502fb3
2025-08-13 11:36:33 +00:00
v-mstrs 2877502fb3 fix(DB/Spell): Allow Poison Bolt to stack (#22668) 2025-08-13 08:35:27 -03:00
sudlud 5ad345a873 fix(Conf/Logs): fix Error appender log level, enable sql.updates error logging (#22682) 2025-08-13 08:48:22 +02:00
github-actions[bot] 55a8e85145 chore(DB): import pending files
Referenced commit(s): d917eec261
2025-08-12 22:10:39 +00:00
v-mstrs d917eec261 fix(DB/Spell): Allow Sunder Armor to stack (#22669) 2025-08-12 19:09:37 -03:00
Rocco Silipo 58504b8a36 Fix Error (#22681) 2025-08-12 20:54:09 +02:00
Andrew 5369aec3c9 fix(Core/SAI): Force SMC creatures to resume chasing victims once in… (#22581) 2025-08-12 14:31:08 -03:00
EricksOliveira 743b6e7cd9 fix(Scripts/Pet): Fixes behavior of Army of the Dead Ghouls to attack… (#22665) 2025-08-12 13:10:20 -03:00
github-actions[bot] 9efdd9798f chore(DB): import pending files
Referenced commit(s): 2e07a0fe1f
2025-08-12 12:24:27 +00:00
Rocco Silipo 2e07a0fe1f fix(DB/SAI): Fezzix Geartwist now flies correctly and the wreckages despawn. (#22674) 2025-08-12 09:23:25 -03:00
Takenbacon 12bee97df9 fix(Core/Visibility): Fix initial visibility on player reused sessions (#22673) 2025-08-11 19:07:00 +02:00
EricksOliveira 1d70c6acc3 fix(Scripts/Pet): Fix Risen Ghoul behavior that does not automaticall… (#22546) 2025-08-10 22:18:53 +02:00
Takenbacon 2450237b7d fix(Core/Maps): Improve large object updater (#22659) 2025-08-10 21:16:04 +02:00
Takenbacon 2485ff7f5f fix(Core/Transports): Improve static transport visibility (#22660) 2025-08-10 21:15:55 +02:00
github-actions[bot] ba1fcf2424 chore(DB): import pending files
Referenced commit(s): 5b36ba898e
2025-08-10 19:08:00 +00:00
Christian M 5b36ba898e fix(DB/creature_loot): Remove wotlk skinning items from creature loot tables (#22645) 2025-08-10 21:06:57 +02:00
github-actions[bot] 72d3db08e5 chore(DB): import pending files
Referenced commit(s): 468457a63e
2025-08-10 14:19:02 +00:00
Rocco Silipo 468457a63e fix(DB/Creature): En'kilah Gargoyles fly well again. (#22658) 2025-08-10 16:12:46 +02:00
Takenbacon 73317b2706 feat(Core/Grids): Remove WorldObject separation in grid containers (#22595) 2025-08-09 06:36:24 +02:00
Takenbacon c97cee1e4f feat(Core/Maps): Remove active objects nearby cell marking handling (#22585) 2025-08-08 16:07:56 -03:00
github-actions[bot] b5fa1aae27 chore(DB): import pending files
Referenced commit(s): b0c4d54d3a
2025-08-08 02:16:16 +00:00
sudlud db5e8420e1 fix(DB/Misc): fix low level scourge invasion quests (#22611)
Co-authored-by: Benjamin Jackson <38561765+heyitsbench@users.noreply.github.com>
2025-08-07 23:15:57 -03:00
Rocco Silipo b0c4d54d3a fix(DB/SAI): Anok'ra the Manipulator no longer retreats when he has low health. (#22635) 2025-08-07 23:15:11 -03:00
github-actions[bot] e87dacb723 chore(DB): import pending files
Referenced commit(s): 8bdacb3151
2025-08-07 15:59:26 +00:00
Rocco Silipo 8bdacb3151 fix(DB/Creature) Init creature_template_addon in Wastes Scavenger. (#22637) 2025-08-07 17:58:24 +02:00
Takenbacon 1499aa51de feat(Core/Visibility): Visibility improvements part 1 (#22624) 2025-08-07 16:17:45 +02:00
Jelle Meeus bde4e076ed fix(Scripts/Spells): DK Ghoul pet is no longer immune to Horn of Winter and other stat mod auras (#22636) 2025-08-06 19:01:29 -03:00
github-actions[bot] d4511eb78c chore(DB): import pending files
Referenced commit(s): 1ab826196a
2025-08-06 20:54:05 +00:00
Rocco Silipo 1ab826196a fix(DB/Creature) Add dialogue to the deaths of Anok'ra, Sinrok, and Tivax. (#22634) 2025-08-06 22:53:00 +02:00
github-actions[bot] aba3b6dff8 chore(DB): import pending files
Referenced commit(s): 42ffbb0d9d
2025-08-06 11:47:01 +00:00
Tereneckla 42ffbb0d9d fix(DB/Creature): remove skinning from Clutchmother Zavas (#22631) 2025-08-06 13:45:59 +02:00
sudlud a276f25d2f fix(CI/windows): bump openssl to 3.5.2 (#22628) 2025-08-06 13:21:12 +02:00
github-actions[bot] 72073df3a9 chore(DB): import pending files
Referenced commit(s): cee5313554
2025-08-06 10:09:56 +00:00
avarishd 372c4fd147 fix(DB/SAI): Captain Arathyn despawning his mount (#22061) 2025-08-06 12:09:25 +02:00
j-sax cee5313554 fix(apps/docker): put TZ ARG after FROM to be correctly applied (#22600)
Co-authored-by: Jesper Saxtorph <gitforgot.sax@manware.dk>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-06 12:08:47 +02:00
github-actions[bot] 7d31a64a50 chore(DB): import pending files
Referenced commit(s): 3a632d7fca
2025-08-06 10:07:22 +00:00
Rocco Silipo 3a632d7fca fix(DB/Creature) Kvaldir Mistweavers no longer swim. (#22622) 2025-08-06 12:06:18 +02:00
github-actions[bot] 66f4596714 chore(DB): import pending files
Referenced commit(s): 5ac2a7c4d6
2025-08-06 10:04:00 +00:00
Rocco Silipo 5ac2a7c4d6 fix(DB/Creature) Edit spawn point for a Snowfall Glade Shaman. (#22623) 2025-08-06 12:02:48 +02:00
NoxMax c7351be94a fix(bash): Exit simple-restarter script if shutdown is requested (#22617) 2025-08-06 08:48:48 +02:00
sudlud 5717cd358c fix(Core/DBUpdater): disable exception throwing for dryrun (#22610) 2025-08-02 11:05:40 -03:00
github-actions[bot] 8a5098861e chore(DB): import pending files
Referenced commit(s): 219942e8f8
2025-08-01 15:04:50 +00:00
sudlud 219942e8f8 fix(DB/SAI): fix scourge invasion quest 12616 'Chamber of Secrets' (#22606) 2025-08-01 12:03:41 -03:00
github-actions[bot] 239a641bd7 chore(DB): import pending files
Referenced commit(s): 9ad7cef3c4
2025-08-01 13:40:43 +00:00
Tereneckla 9ad7cef3c4 fix(Core/Items): count stats programatically instead of manually set (#22564)
Co-authored-by: heyitsbench <benjymansy123@gmail.com>
2025-08-01 10:36:01 -03:00
Vanna White b711c55c1e fix(CORE/lfg): Correct random LFG reward bug (#22599)
Co-authored-by: Kito <kito@vortexirc.com>
2025-08-01 09:55:22 +01:00
Anton Popovichenko 548447ffb0 fix(Core/Pet): Fix player pets attack (#22601)
Co-authored-by: PkllonG <PkllonG@users.noreply.github.com>
2025-07-31 14:45:24 -03:00
Takenbacon cd87350a17 fix(Core/Grids): Fix corpse loading after a server restart (#22594) 2025-07-30 22:49:09 -03:00
github-actions[bot] 4e8d0f565f chore(DB): import pending files
Referenced commit(s): e526623d1d
2025-07-29 20:33:42 +00:00
Ryan Turner e526623d1d fix(DB/Commands): Added and updated commands for go objects, go creatures and group revive (#22229) 2025-07-29 21:32:41 +01:00
Tereneckla 9cf742a04b fix(Scripts/Spell): improve handling of refreshing diseases with Glyph of Disease (#22434) 2025-07-29 10:07:52 -03:00
github-actions[bot] ddefd87fef chore(DB): import pending files
Referenced commit(s): 2bc6e0f747
2025-07-29 13:05:40 +00:00
Tereneckla f0054bd197 fix(DB/Spells): add various spells to spell_groups (#22075) 2025-07-29 10:04:35 -03:00
github-actions[bot] 2bc6e0f747 chore(DB): import pending files
Referenced commit(s): 33a71434c9
2025-07-29 13:01:32 +00:00
Kitzunu 35d8d49ce3 feat(Core/ServerMail): Add AccountFlags condition to server mail temp… (#22549) 2025-07-29 10:01:16 -03:00
github-actions[bot] 33a71434c9 chore(DB): import pending files
Referenced commit(s): 67aa022dbf
2025-07-29 13:00:21 +00:00
avarishd 231a03d785 fix(Spells/Druid): Moonglade Raiment 2-piece set bonus (#22148) 2025-07-29 10:00:00 -03:00
Jelle Meeus 2e1f848f09 fix(Core/Unit): Add melee leeway for auto attacks (#22566) 2025-07-29 09:58:30 -03:00
Anton Popovichenko 67aa022dbf fix(Core/Leash): Improve leashing behavior and timer handling (#22525) 2025-07-29 09:55:56 -03:00
Jelle Meeus 40c58123b1 fix(Core/Player): allow attacking target within boundary radius when… (#22500)
Co-authored-by: Kito <kito@vortexirc.com>
2025-07-29 09:38:49 -03:00
Jelle Meeus 98eda3684d feat(Core/Spell): implement SPELL_ATTR2_CHAIN_FROM_CASTER (#22515)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
2025-07-29 09:36:36 -03:00
Takenbacon a77bd19104 feat(Core/Maps): Remove worldobject container switch functionality (#22586) 2025-07-29 09:18:07 -03:00
github-actions[bot] 956f4b0751 chore(DB): import pending files
Referenced commit(s): 5031483ad1
2025-07-29 12:13:56 +00:00
Andrew 5031483ad1 fix(DB/SAI): Fix Poisonous Mushroom cast logic and move script to SAI (#22567) 2025-07-29 09:12:51 -03:00
天鹭 0abb998529 refactor(Core): Clean (#22583) 2025-07-29 09:11:25 -03:00
Takenbacon 57dacae38b feat(Core/Maps): Multithread startup map preloading (#22580) 2025-07-29 09:10:46 -03:00
Takenbacon f31643c72c feat(Core/Unit): Optimize AuraEffectList container (#22584) 2025-07-29 09:10:13 -03:00
Jelle Meeus cb580b9865 fix(Core/Spell): skip Guardian pets when searching for Party/R… (#22587) 2025-07-29 09:08:48 -03:00
Jelle Meeus fc4b2939ee refactor(World/WorldState): use prepared statements (#22582) 2025-07-28 02:04:03 -03:00
Andrew 970b6cf7b6 fix(Scripts/AhnKahet): Refactor Prince Taldaram vanish and embrace logic (#22524) 2025-07-28 02:03:00 -03:00
github-actions[bot] f5d39a2f8b chore(DB): import pending files
Referenced commit(s): b6bef0f6af
2025-07-27 13:31:48 +00:00
Rocco Silipo b6bef0f6af fix(DB/SAI): Implement Dialogue in the tavern (#22577) 2025-07-27 10:25:15 -03:00
Yehonal dbee211506 fix(bash/starter): enhance interactive mode handling (#22516)
This pull request updates the startup script in `apps/startup-scripts/src/starter` to improve handling of interactive and non-interactive modes, particularly when running under different session managers. 

### Improvements to interactive and non-interactive mode handling:

* Updated the condition to check if the application should run interactively by combining `AC_LAUNCHED_BY_PM2` and `AC_DISABLE_INTERACTIVE` environment variables. This ensures more accurate handling of interactive mode.


Fixes: https://github.com/azerothcore/azerothcore-wotlk/issues/22507
2025-07-27 13:50:20 +02:00
github-actions[bot] 90ac298155 chore(DB): import pending files
Referenced commit(s): 60643ce5e7
2025-07-27 08:02:39 +00:00
Kitzunu 60643ce5e7 feat(Script/Command): Add AccountFlag pinfo output (#22548) 2025-07-27 09:59:13 +02:00
github-actions[bot] e66f763a9c chore(DB): import pending files
Referenced commit(s): 4da5884532
2025-07-27 07:28:39 +00:00
Andrew 4da5884532 fix(DB/SAI): Grant quest credit to all group members for quest The Mi… (#22572) 2025-07-27 09:11:27 +02:00
Kitzunu 3f46e05d36 refactor(Core/Account): Move account flag logic from AccountMgr to WorldSession (#22558) 2025-07-27 08:54:16 +02:00
Jelle Meeus 24d1a4808f fix(Scripts/Spells): Death and Decay not breaking Hungering Cold (#22573) 2025-07-27 00:12:49 -03:00
Christian M d2fb893f87 feat(Core/Player): Allow spell validation to be skipped at server owner's risk (#22521)
Co-authored-by: Tereneckla <Tereneckla@pm.me>
2025-07-26 19:26:00 -03:00
github-actions[bot] 00f411c0b1 chore(DB): import pending files
Referenced commit(s): dad67f9bb0
2025-07-26 19:43:50 +00:00
Andrew 9f8cd74205 fix(DB/Spell): Fix serverside spell Grow (#22569)
Co-authored-by: Gustavo <sirikfoll@hotmail.com>

Cherry-picked from commit: https://github.com/TrinityCore/TrinityCore/commit/0b766db6a41a4db0d631e36fcc753c658b746328
2025-07-26 16:43:17 -03:00
Andrew dad67f9bb0 fix(Scripts/CullingOfStratholme): Prevent Arthas from despawning (#22570) 2025-07-26 16:42:49 -03:00
github-actions[bot] 5a96fbd23e chore(DB): import pending files
Referenced commit(s): 71c2dbfa20
2025-07-26 10:07:12 +00:00
chaosua 71c2dbfa20 fix(DB/page_text_locale): fix gender tags and html for 3539, 3540, 3541 (#22562) 2025-07-26 12:06:09 +02:00
NoxMax 27da054661 feat(Core): make BGs and Arena prep time configurable (#22136)
Co-authored-by: Tereneckla <Tereneckla@pm.me>
2025-07-26 02:09:20 +01:00
github-actions[bot] 6c72e9b9ee chore(DB): import pending files
Referenced commit(s): 5155f97261
2025-07-25 07:02:19 +00:00
Tereneckla 99931d59d8 fix(Script/Creature): Add random delay to Gargoyle casts (#22512) 2025-07-25 09:02:02 +02:00
Jelle Meeus 5155f97261 fix(DB/Event): Scourge Invasion Shadow of Doom and rare loot (#22518) 2025-07-25 09:01:04 +02:00
github-actions[bot] e494a1ecb2 chore(DB): import pending files
Referenced commit(s): e0aca50840
2025-07-24 20:25:38 +00:00
Ryan Turner e0aca50840 fix(DB/Spawns) Removes 6x creature spawns for "Lordaeron Citizen" (#22552) 2025-07-24 21:24:37 +01:00
Kitzunu dc3d2def80 feat(Core/Load): Add debug logs for zone and area assignment (#22509) 2025-07-24 16:21:05 -03:00
Quentin Dawans 250bc557f4 fix(Conf/Misc): Update max visibility description (#22187) 2025-07-24 21:06:37 +02:00
github-actions[bot] 37a7c76c0a chore(DB): import pending files
Referenced commit(s): 084605d495
2025-07-24 17:57:16 +00:00
Rocco Silipo 084605d495 fix(DB/SAI): Implement various missing Culling of Stratholme behaviours (part 2). (#22550) 2025-07-24 14:56:15 -03:00
Jelle Meeus e685c7f4ad fix(Core/Spell): skip Guardian pets when searching for Party/Raid members (#22528) 2025-07-24 18:25:11 +02:00
Kitzunu 9286bb363e fix(Core/Account): Change account flag updates to async connection (#22547) 2025-07-24 16:52:51 +02:00
github-actions[bot] 283e831594 chore(DB): import pending files
Referenced commit(s): 603249c046
2025-07-24 13:10:02 +00:00
Kitzunu 1e68280691 feat(Core/Account): Add account flags support (#22533) 2025-07-24 10:09:30 -03:00
Jelle Meeus 603249c046 fix(Core/Unit): wrong behavior of HasUnitMovementFlag (#22529) 2025-07-24 10:09:01 -03:00
github-actions[bot] 298ba0f035 chore(DB): import pending files
Referenced commit(s): 6e16139b35
2025-07-24 13:06:06 +00:00
Rocco Silipo 6e16139b35 fix(DB/SAI): Implement various missing Culling of Stratholme behaviours (#22545) 2025-07-24 10:05:03 -03:00
Jelle Meeus cd2c081a64 fix(Scripts/Northrend): Ulduar Mimiron plasma ball always target victim (#22543)
Co-authored-by: Tereneckla <Tereneckla@pm.me>
2025-07-24 10:02:11 -03:00
github-actions[bot] 2a3075504e chore(DB): import pending files
Referenced commit(s): 308e6ce015
2025-07-24 06:32:53 +00:00
Andrew 308e6ce015 fix(DB/Creature): Update Amanitar spawn position (#22542) 2025-07-24 08:31:50 +02:00
Ryan Turner 60800314ab fix(DB/SQL): Do not give all permissions to user "acore" upon creation via the sql file (#22540) 2025-07-23 18:32:48 -03:00
Tereneckla a96c7e85c5 fix(Core/Player): Only mark spells as invalid when none of the Skills match (#22537) 2025-07-23 12:49:29 -03:00
github-actions[bot] 6bf8469cf3 chore(DB): import pending files
Referenced commit(s): f9a26d21d7
2025-07-23 13:54:48 +00:00
Rocco Silipo f9a26d21d7 fix(DB/Creature): Rhunok cannot be attacked anymore without using first Tormentor's Incense. (#22534) 2025-07-23 15:53:40 +02:00
github-actions[bot] 7f4f39b089 chore(DB): import pending files
Referenced commit(s): ae81ce2a24
2025-07-22 16:13:29 +00:00
Rocco Silipo ae81ce2a24 fix (DB/Creature) Edit Geirrvif's position. (#22531) 2025-07-22 18:12:24 +02:00
github-actions[bot] e66931ca4a chore(DB): import pending files
Referenced commit(s): 3bb130f06a
2025-07-22 15:17:34 +00:00
Rocco Silipo 3bb130f06a fix (DB/Creature) Set right faction for Ice Steppe Rhinos. (#22530) 2025-07-22 17:16:29 +02:00
github-actions[bot] 6fe2792fef chore(DB): import pending files
Referenced commit(s): 3582369b67
2025-07-22 12:06:03 +00:00
Rocco Silipo 3582369b67 fix (DB/Gameobject) Vordrassil Seeds now have a corrected spawn point. (#22527) 2025-07-22 14:05:00 +02:00
github-actions[bot] 50ff7ef67b chore(DB): import pending files
Referenced commit(s): a885fd04b2
2025-07-22 06:24:30 +00:00
Rocco Silipo a885fd04b2 fix (DB/Creature) Eyes Above quest issues are now solved. (#22513) 2025-07-22 08:23:29 +02:00
github-actions[bot] d36f690e4c chore(DB): import pending files
Referenced commit(s): f7d88089aa
2025-07-21 23:30:28 +00:00
Andrew f7d88089aa fix(Scripts/GrizzlyHills): Refactor Red Rocket quest to use SmartAI s… (#22517) 2025-07-21 20:29:22 -03:00
github-actions[bot] 8621c2cef9 chore(DB): import pending files
Referenced commit(s): 982f75541a
2025-07-21 21:50:49 +00:00
Jelle Meeus 982f75541a fix(DB/Event): Scourge Invasion vendor conditions (#22519) 2025-07-21 18:49:48 -03:00
Fazzul 65ad4b1b49 fix(Scripts/Ulduar): Phase 1 of Thorim (#22037) 2025-07-20 18:40:08 +02:00
Jelle Meeus e28ea50766 fix(Scripts/Spells): killing with Victory Rush grants Victory Rush (#22514) 2025-07-20 11:11:59 -03:00
github-actions[bot] 10a22aba9c chore(DB): import pending files
Referenced commit(s): 1c87fc4e28
2025-07-20 07:21:25 +00:00
avarishd 1c87fc4e28 fix(DB/Custom): Stackable debuffs for wotlk dungeons/T7 raids (#22062) 2025-07-20 09:19:57 +02:00
github-actions[bot] 9ef0e4f9db chore(DB): import pending files
Referenced commit(s): f478d23288
2025-07-20 06:57:52 +00:00
avarishd f478d23288 fix(DB/Custom): Stackable debuffs for wotlk T8 and up raids (#22105) 2025-07-20 08:56:23 +02:00
github-actions[bot] fac1cb5e21 chore(DB): import pending files
Referenced commit(s): 53e1cd553b
2025-07-20 06:12:14 +00:00
Jelle Meeus 53e1cd553b fix(Scripts/Spells): Update Death Knight Ebon Gargoyle auras and damage, and Ghoul auras (#22398)
Co-authored-by: Tereneckla <Tereneckla@pm.me>
2025-07-20 08:10:47 +02:00
skelUA 7c4a5bc37c fix(Core/Metrics): InfluxDB v1 config check #22358 (#22479)
Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>
2025-07-19 22:14:42 +02:00
天鹭 7ff30f5b30 fix(Core/Authserver): HandleLogonProof query as async (#22510)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
2025-07-19 22:07:22 +02:00
github-actions[bot] f0117913f1 chore(DB): import pending files
Referenced commit(s): 819c03e238
2025-07-19 17:09:40 +00:00
Jelle Meeus 819c03e238 fix(DB/Event): Scourge Invasion creature_template, quest mail, loot (#22501) 2025-07-19 19:08:11 +02:00
Kitzunu 129434bb42 feat(DB): Release ACDB 13.0.0 (#22508) 2025-07-19 13:16:46 +02:00
Andrew 3ca377fed3 refactor(Core/PlayerSettings): Refactor Player settings handling for efficiency (#22494)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-19 11:38:04 +02:00
Francesco Borzì c6a53849c7 refactor(Core/Misc): string handling and use smart pointer for strand (#22351) 2025-07-19 11:36:40 +02:00
Kitzunu cbd8596184 fix(Core/Player): Unlearn invalid spells for race/class on login (#22370)
Co-authored-by: Andrew <47818697+Nyeriah@users.noreply.github.com>
2025-07-19 11:35:26 +02:00
Takenbacon 5dbcdfcbd5 fix(Core/Creatures): Always update temp summons (#22484) 2025-07-19 11:32:27 +02:00
github-actions[bot] 4cbddc073a chore(DB): import pending files
Referenced commit(s): b65b719f56
2025-07-18 15:03:54 +00:00
Tereneckla b65b719f56 fix(DB/Spells): Update Killing Machine PPM rate (#22477) 2025-07-18 12:02:52 -03:00
Jelle Meeus 578fabfc7f fix(Core/Player): implement Character flag CHARACTER_FLAG_RESTING (#22499) 2025-07-18 11:14:27 +02:00
Martin Leuner d40be8c1d4 fix(Scripts/AuchenaiCrypts): Remove debuff on summon death (#22461) 2025-07-16 10:06:21 -03:00
Rocco Silipo 9f5b56ac86 fix(Script/ScarletEnclave) Acherus Soul Prisons now reset properly. (#22496)
Co-authored-by: Takenbacon <revoke1336@live.com>
2025-07-16 10:22:00 +02:00
github-actions[bot] f5ee400be2 chore(DB): import pending files
Referenced commit(s): 1947442137
2025-07-15 20:27:49 +00:00
sudlud 1947442137 fix(Scripts/Midsummer): improve torch tossing based on sniffs (#22378) 2025-07-15 22:26:46 +02:00
Tereneckla 6a8d08383e fix(Core/Config): align worldconfig default values to .conf.dist (#22475) 2025-07-15 09:14:02 +02:00
github-actions[bot] b52eb53762 chore(DB): import pending files
Referenced commit(s): 38cb6ace25
2025-07-15 07:06:56 +00:00
Paul 38cb6ace25 fix(Core/Spells): Fixed explosive shot ammo consumption (#21501)
Co-authored-by: pavel_k <pavel_k@mail.com>
Co-authored-by: Jelle Meeus <sogladev@gmail.com>
2025-07-15 09:05:56 +02:00
attacksnack 506722ee88 fix(Scripts/Kalimdor): Fix hardcoded gossip in zone_felwood (#21931)
Co-authored-by: Christopher Höllriegl <buddiman@users.noreply.github.com>
2025-07-15 07:01:52 +02:00
Anton Popovichenko 7712c2a973 fix(Core/FleeingMovementGenerator): Prevent fleeing players from moving off cliffs (#22462)
Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>
2025-07-14 10:24:55 +02:00
Jelle Meeus a88c058ef0 fix(Core/AI): prevent PetAI autocast leap to self and allies (#22472)
Co-authored-by: xomachine <xomachiner@gmail.com>
Co-authored-by: jackpoz <giacomopoz@gmail.com>
2025-07-14 10:23:55 +02:00
github-actions[bot] 5e30c5abaa chore(DB): import pending files
Referenced commit(s): 3c0a9d90dd
2025-07-14 01:32:14 +00:00
Rocco Silipo 3c0a9d90dd fix (DB/Creature) Remove Blood Plague, Frost Fever etc... from various Scarlet Enclave npcs. (#22471) 2025-07-14 03:31:11 +02:00
Rocco Silipo 88342576e0 fix (Script/Scarlet Enclave) Named Npcs can no longer be attacked after the end of the The Light of Dawn battle. (#22463) 2025-07-13 08:50:50 +02:00
Benjamin Jackson bfd3f0aa95 chore(Core/Config): Finish removing config option. (#22464)
Co-authored-by: Takenbacon <922834+Takenbacon@users.noreply.github.com>
2025-07-13 00:19:00 +02:00
Jelle Meeus b463e8c07f fix(Scripts/World): fix windows/mac build (#22465) 2025-07-13 00:18:28 +02:00
github-actions[bot] 5fb1c324ac chore(DB): import pending files
Referenced commit(s): 8e083fbde3
2025-07-12 18:55:21 +00:00
Jelle Meeus 8e083fbde3 feat(Core/WorldState): init Scourge Invasion pre-wrath event (#22286)
Co-authored-by: Orozxy <crusadermeile@gmail.com>
Co-authored-by: Killerwife <killerwife@gmail.com>
Co-authored-by: Ryan Turner <AugustoMendes4426@gmail.com>
2025-07-12 20:54:18 +02:00
github-actions[bot] 68bac6ee0c chore(DB): import pending files
Referenced commit(s): 2787eb4588
2025-07-12 18:49:11 +00:00
Jelle Meeus 2787eb4588 fix(Scripts/EasternKingdoms): Add quest requirement to Orbaz Bloodbane's Ebon Hold portal (#22443)
Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>
2025-07-12 20:48:05 +02:00
Ryan Turner 561399e011 chore(CI): Corrected the name of workflow in action tab to be more clear. (#22459) 2025-07-11 14:59:50 -04:00
Anton Popovichenko 628f6255c4 fix(Core/FleeingMovementGenerator): Prevent fear movement from causing characters to fall through the ground (#22451) 2025-07-11 11:44:44 -03:00
Takenbacon 1c3cbd3d9e feat(Core/Maps): Improve map object updater (#22392) 2025-07-11 16:00:16 +02:00
Seamthesis 9d6c7ad7ea fix(Core/Group): incorrect parameter type in RegisterGroupId (#22448)
Co-authored-by: Rykles <219719782+Seamthesis@users.noreply.github.com>
2025-07-11 15:54:42 +02:00
Ryan Turner b90638fdf3 feat(Codestyle/SQL): Ensure InnoDB is used as DB Engine (#22457) 2025-07-11 15:52:16 +02:00
github-actions[bot] 418cabbb6e chore(DB): import pending files
Referenced commit(s): 0ea5b9cc4e
2025-07-11 12:51:50 +00:00
Jelle Meeus 0ea5b9cc4e fix(DB/world_state): Update engine to InnoDB (#22456) 2025-07-11 14:50:40 +02:00
Benjamin Jackson 7724dd00d1 fix(Core/Battlegrounds): Add Call to Arms bonus data to Alterac Valley and fix bonuses for other battlegrounds. (#21923) 2025-07-11 08:32:10 -03:00
Benjamin Jackson bae4dd8ccf feat(Core): Add config for legacy arena team start rating. (#22080)
Co-authored-by: Tereneckla <Tereneckla@pm.me>
2025-07-11 08:30:20 -03:00
Benjamin Jackson 1679a9ff42 fix(Core/Unit): Don't extend leash when taking self-inflicted damage. (#22449) 2025-07-11 08:17:01 -03:00
Benjamin Jackson 70faaf9288 fix(Core/SharedDefines): Define creature static flags. (#22127)
Co-authored-by: killerwife <killerwife@users.noreply.github.com>
2025-07-10 16:19:24 -03:00
Andrew cdf35268a2 fix(Core/Opcodes): Crash fix (#22453) 2025-07-10 12:04:13 -03:00
Rocco Silipo 09b9320f6f fix(Script/ScarletEnclave): Darion now have Corrupter Ashbringer on respawn. (#22452) 2025-07-10 09:59:25 -03:00
Tereneckla 1ce01c8dad fix(Core/LFG): revert #22360 (#22436) 2025-07-10 09:56:11 -03:00
github-actions[bot] 50a5ee1be5 chore(DB): import pending files
Referenced commit(s): 557f1c374b
2025-07-10 10:48:45 +00:00
Rocco Silipo 557f1c374b fix (DB/Creature) Ensure that Scarlet Npcs respawn without the NON_ATTACKABLE flag. (#22450) 2025-07-10 07:47:44 -03:00
github-actions[bot] 3bb1512b65 chore(DB): import pending files
Referenced commit(s): 7dfe1a854c
2025-07-09 18:47:24 +00:00
Rocco Silipo 7dfe1a854c fix (DB/Quest) Chapter V aura is now added to players when “The Light of Dawn” is delivered. (#22437) 2025-07-09 20:46:25 +02:00
github-actions[bot] 96ecdc3324 chore(DB): import pending files
Referenced commit(s): d071719cb5
2025-07-08 17:54:34 +00:00
Apatia d071719cb5 fix(DB/CreatureFormations): Add formations to NPCs in the Magister's Terrace (#22440) 2025-07-08 19:53:35 +02:00
Kitzunu 619f40b01f feat(Core/Chat): Allow whispers to Game Masters regardless of sender … (#22417) 2025-07-08 12:00:03 -03:00
github-actions[bot] 2f47656531 chore(DB): import pending files
Referenced commit(s): 781059efeb
2025-07-08 14:58:46 +00:00
Andrew 781059efeb fix(Scripts/ScarletEnclave): Refactor 'How to Win Friends' quest scri… (#22432)
Co-authored-by: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com>
2025-07-08 11:57:46 -03:00
Tereneckla dcc500d7b7 fix(Core/Spells): Glyph of Scourge Strike can prolong diseases that were reapplied (#22438) 2025-07-08 09:33:33 -03:00
github-actions[bot] 6d78dbefa2 chore(DB): import pending files
Referenced commit(s): 0121589bb0
2025-07-07 17:53:31 +00:00
Rocco Silipo 0121589bb0 fix (DB/Creature) The Eye of Acherus now removes the aura from the player on death. (#22428) 2025-07-07 19:48:19 +02:00
Yehonal ed8139b82a feat(tests): add BATS test parallel conf and integration tests for compiler module (#22421) 2025-07-06 17:03:51 +02:00
Yehonal 9fcacf7ea7 feat: improve session management and PM2 support in startup scripts (#22420)
New feature to manage service restart policies and refactors crash logging paths for better flexibility and clarity. The most significant changes include adding support for configurable restart policies (`on-failure` and `always`), updating documentation to reflect these changes, and improving crash path handling in multiple scripts.
2025-07-06 12:00:38 +02:00
Yehonal 9a837ee1f7 fix(bash): Improve session management and GDB handling in service scripts (#22418)
This pull request introduces several enhancements and fixes to the startup scripts for AzerothCore, focusing on improving service management, interactive mode handling, and script execution. The most important changes include adding support for non-interactive mode, enhancing systemd integration, and refactoring the starter script to handle binary paths and files more robustly.

### Enhancements to Service Management:
* **Non-Interactive Mode:** Added `AC_DISABLE_INTERACTIVE` environment variable to disable interactive prompts for services running without session managers (e.g., systemd/pm2). This prevents hanging during non-interactive execution. (`apps/startup-scripts/src/run-engine`, `apps/startup-scripts/src/service-manager.sh`) [[1]](diffhunk://#diff-1792abab64da981c71221890876ce832aab405f670f320f75b73b8788b1a4174R336-R349) [[2]](diffhunk://#diff-31edfed7f73d0647a5fc96ce74c249e025e884cd1fe06621cb78eb4a381464f9R724-R727)
* **Enhanced Systemd Integration:** Services using session managers like tmux/screen are automatically configured with `Type=forking` and appropriate `ExecStop` commands to terminate sessions gracefully. (`apps/startup-scripts/src/service-manager.sh`) [[1]](diffhunk://#diff-31edfed7f73d0647a5fc96ce74c249e025e884cd1fe06621cb78eb4a381464f9R401-R425) [[2]](diffhunk://#diff-31edfed7f73d0647a5fc96ce74c249e025e884cd1fe06621cb78eb4a381464f9R567-R578)

### Improvements to Script Execution:
* **Starter Script Refactor:** Updated the starter script to require both binary path and file name as parameters, improving clarity and error handling. (`apps/startup-scripts/src/starter`) [[1]](diffhunk://#diff-e92f132163ec1e49dc625eac9107c6841ae14e416aa35adec787dca5031dc631L6-R16) [[2]](diffhunk://#diff-e92f132163ec1e49dc625eac9107c6841ae14e416aa35adec787dca5031dc631L26-R44)
* **Temporary GDB File Management:** Enhanced handling of temporary GDB configuration files, ensuring proper cleanup after execution. (`apps/startup-scripts/src/starter`) [[1]](diffhunk://#diff-e92f132163ec1e49dc625eac9107c6841ae14e416aa35adec787dca5031dc631R68-R70) [[2]](diffhunk://#diff-e92f132163ec1e49dc625eac9107c6841ae14e416aa35adec787dca5031dc631R92-R141)

### Updates to Tests:
* **Test Adjustments:** Modified test cases to reflect the updated starter script parameter requirements and error messages. (`apps/startup-scripts/test/test_startup_scripts.bats`) [[1]](diffhunk://#diff-febbaeb294e50bdba0511ecad5d44b0c3f11ae92c79dd19dbd5f61d41a654278L26-R26) [[2]](diffhunk://#diff-febbaeb294e50bdba0511ecad5d44b0c3f11ae92c79dd19dbd5f61d41a654278L41-R49)
2025-07-05 23:02:04 +02:00
Kitzunu a1a11a7c38 BREAKINGCHANGE(Metrics): Support InfluxDB v2 (#22358)
This commit introduces support for InfluxDB v2 in the metric logging system, updates configuration options, and enhances the code to handle both InfluxDB v1 and v2. The changes include updates to the `Metric` class, configuration file, and logging behavior.

### InfluxDB v2 Support:
* Added support for InfluxDB v2 in the `Metric` class by introducing new configuration options (`Metric.InfluxDB.Org`, `Metric.InfluxDB.Bucket`, `Metric.InfluxDB.Token`) and logic to handle v2-specific parameters.
* Updated the `SendBatch` method to construct HTTP requests differently based on whether v1 or v2 is enabled. 

### Configuration Updates:
* Replaced the `Metric.ConnectionInfo` configuration with `Metric.InfluxDB.Connection` and added detailed comments and examples for both InfluxDB v1 and v2 configurations in `worldserver.conf.dist`.
* Added placeholder configuration entries for InfluxDB v2 parameters (`Metric.InfluxDB.Org`, `Metric.InfluxDB.Bucket`, `Metric.InfluxDB.Token`) in `worldserver.conf.dist`. 

### Logging Enhancements:
* Added a commented-out logger configuration (`Logger.metric`) in `worldserver.conf.dist` for potential use in metric-specific logging.
2025-07-05 12:00:08 +02:00
Yehonal 161898b7e6 fix(installer/windows): update OpenSSL version to 3.5.1 to fix gh build errors (#22416)
Chocolatey on windows cannot download openssl 3.4.1 since the source has been removed.

3.5.1 is available instead. However, this must be tested

This https://community.chocolatey.org/packages/openssl/3.4.1 is pointing to this: https://slproweb.com/download/Win32OpenSSL-3_4_1.exe that doesn't exist anymore and has been replaced by the 3.4.2, but chocolatey doesn't have this version yet
2025-07-03 20:31:18 +02:00
github-actions[bot] bd6011414a chore(DB): import pending files
Referenced commit(s): 75915c2e12
2025-07-03 17:28:49 +00:00
Jelle Meeus 75915c2e12 fix(DB/SAI): Use Holy Fire spell for Draenei Anchorite (#22414) 2025-07-03 14:27:46 -03:00
github-actions[bot] 4744ba3970 chore(DB): import pending files
Referenced commit(s): 4e9889db24
2025-07-03 15:44:24 +00:00
Kitzunu 87e500ff0f fix(DB/Autobroadcast): Update 'text' column in autobroadcast_locale t… (#22382) 2025-07-03 16:43:55 +01:00
github-actions[bot] 545d5a48e2 chore(DB): import pending files
Referenced commit(s): 08e6d4786a
2025-07-03 15:43:34 +00:00
Ryan Turner 4e9889db24 fix(DB/Quests) - Corrected the Reputation requirements for the Scryers and Aldor (#22362)
Co-authored-by: Tereneckla <Tereneckla@pm.me>
2025-07-03 16:43:23 +01:00
github-actions[bot] 08e6d4786a chore(DB): import pending files
Referenced commit(s): 0628ea53bb
2025-07-03 15:42:33 +00:00
Ryan Turner 206589636e fix(DB/ArathiBasin): Replacement for previously lost tabards added and adjustements to quests (#22338) 2025-07-03 16:42:22 +01:00
Benjamin Jackson dba7f694ed fix(Scripts/Spells): Don't proc Misdirection from Mend Pet's heal effect. (#22293) 2025-07-03 16:41:52 +01:00
Macs-Account 0628ea53bb fix(Core/Unit): Add previously unreferenced DealDamage script hook in Unit (#22207) 2025-07-03 16:41:30 +01:00
Jelle Meeus 7561147e7c fix(Core/Spells): No longer add a signature to items created by NPCs (#22415) 2025-07-03 12:35:06 -03:00
IntelligentQuantum f0a38b3091 feat(Core/LFG): RDF CF (#22360) 2025-07-03 10:46:02 -03:00
Yehonal 04547d90b3 fix(CI): update build job to support multiple Ubuntu versions (#22413) 2025-07-03 11:03:16 +02:00
github-actions[bot] 583c115660 chore(DB): import pending files
Referenced commit(s): 780c240440
2025-07-03 06:07:22 +00:00
Ryan Turner 780c240440 fix(DB/SAI) - Corrects Corpse.Decay for Patchwerk from the end of the Death Knight zone (#22412) 2025-07-03 08:06:19 +02:00
github-actions[bot] 10e1f3af8c chore(DB): import pending files
Referenced commit(s): ba7407b562
2025-07-02 23:43:46 +00:00
Andrew ba7407b562 fix(DB/SAI: Fix Archerus Deathcharger not despawning if players move … (#22411) 2025-07-02 20:42:44 -03:00
github-actions[bot] ab38edb81b chore(DB): import pending files
Referenced commit(s): 8dccc64668
2025-07-02 07:03:53 +00:00
Rocco Silipo 8dccc64668 fix (DB/Creature) Tirion doesn't get back on his horse anymore during The Light of Dawn event. (#22406) 2025-07-02 04:02:52 -03:00
Benjamin Jackson 12328920dd fix(Core/Reputation): Remove At War flag when rising above hated reputation. (#22386) 2025-07-01 15:44:48 -03:00
github-actions[bot] 273607b38a chore(DB): import pending files
Referenced commit(s): a04375e4fe
2025-07-01 18:38:05 +00:00
Rocco Silipo a04375e4fe fix (DB/Creature) A couple of simple SmartAI corrections for Scarlet Ghouls and Scourge Gryphons. (#22405) 2025-07-01 20:37:02 +02:00
github-actions[bot] fcda60bbea chore(DB): import pending files
Referenced commit(s): 77529b0769
2025-07-01 14:42:57 +00:00
Rocco Silipo 77529b0769 fix (DB/Creature) Elite npcs no longer die during The Light of Dawn battle. (#22402) 2025-07-01 16:41:46 +02:00
github-actions[bot] e01286fcb2 chore(DB): import pending files
Referenced commit(s): c581abc4cd
2025-07-01 14:40:07 +00:00
Rocco Silipo c581abc4cd fix (DB/Creature/Scarlet Enclave) Implement Ghouls and Gryphon spawn and behaviour. (#22348)
Co-authored-by: Yehonal <yehonal.azeroth@gmail.com>
2025-07-01 16:39:05 +02:00
Yehonal e1b2689c3a feat(bash): startup-scripts reworked + bash scripts workflow integration (#22401) 2025-07-01 15:35:54 +02:00
github-actions[bot] d3130f0d39 chore(DB): import pending files
Referenced commit(s): 681e8439ff
2025-07-01 07:18:01 +00:00
Andrew 681e8439ff fix(Scripts/ScarletEnclave): Correct Tirion spawn position in Light o… (#22394) 2025-07-01 09:17:00 +02:00
Jelle Meeus dbb995cace refactor(Scripts/Pet): Death Knight use creature register macros (#22399) 2025-06-30 17:55:18 +02:00
Takenbacon fd262c3ab1 feat(Core/Config): Improvements to config caching (#21647) 2025-06-30 17:14:12 +02:00
github-actions[bot] 904ddc72cc chore(DB): import pending files
Referenced commit(s): 656694b383
2025-06-30 03:50:49 +00:00
Jelle Meeus 656694b383 feat(Core/Command): add GM spectator to allow cross-faction /follow (#22393) 2025-06-30 00:49:47 -03:00
github-actions[bot] ab5af303ab chore(DB): import pending files
Referenced commit(s): 31012923c1
2025-06-29 19:12:09 +00:00
Andrew 31012923c1 fix(Core/Spells): Fix SPELL_EFFECT_LEAP_BACK not working on targeted … (#22389) 2025-06-29 16:11:11 -03:00
github-actions[bot] c3cec7198e chore(DB): import pending files
Referenced commit(s): 563ef5d7d9
2025-06-29 19:03:11 +00:00
Kitzunu ae28b35f2c feat(Scripts/Commands): Add guild ranks display to guild info command (#22380) 2025-06-29 16:02:55 -03:00
Christian M 563ef5d7d9 fix(Scripts/Spells): Death Knight Bone shield charges now have a 2 second delay between uses. (#22340) 2025-06-29 16:02:09 -03:00
github-actions[bot] d00449dbd8 chore(DB): import pending files
Referenced commit(s): 57487b8244
2025-06-29 18:59:54 +00:00
Benjamin Jackson 57487b8244 fix(DB/Creature): Make Captured Raptor immune to player characters. (#22387)
Co-authored-by: Ryan Turner <16946913+TheSCREWEDSoftware@users.noreply.github.com>
2025-06-29 15:58:53 -03:00
github-actions[bot] 9c2ea449b6 chore(DB): import pending files
Referenced commit(s): 3b13fe6207
2025-06-29 11:29:19 +00:00
Jelle Meeus 3b13fe6207 fix(Scripts/Spells): add script to GM spell CooldownAll (#22383) 2025-06-29 13:28:21 +02:00
Kitzunu f4e049f227 refactor(db-scripts): replace PowerShell database tools with Bash scripts and update documentation (#22372)
* closes https://github.com/azerothcore/azerothcore-wotlk/issues/4343

This pull request replaces the PowerShell implementation of the AzerothCore database export and squash tools with Bash scripts, streamlining the process and improving compatibility. It also updates the documentation to reflect these changes. The most important changes include the creation of new Bash scripts for exporting databases, squashing databases, and updating versions, as well as the removal of the previous PowerShell script and its associated documentation.

### Script Replacement and Enhancements:
* [`apps/DatabaseSquash/DatabaseExporter/DatabaseExporter.sh`](diffhunk://#diff-af0bd252ac095aaad91b842c75b60a689792e6dc9ce88f5e2e4b6f68acf84dcaR1-R69): Introduced a Bash script to replace the PowerShell implementation for exporting database tables, with added features such as formatted SQL output and dynamic directory creation.
* [`apps/DatabaseSquash/DatabaseSquash.sh`](diffhunk://#diff-79ff4f749c045a7d91e9b43aefb5d6fbebdc5fdfb430fbcba329e4d96d71a4fbR1-R52): Added a Bash script to automate the database squash process, integrating the version updater and database exporter tools.
* [`apps/DatabaseSquash/VersionUpdater/VersionUpdater.sh`](diffhunk://#diff-3abc69c645cb80aff30824739e317c9e847e743eeab15ab4825951d10179b265R1-R84): Created a Bash script for automatically updating the version in `acore.json` and generating SQL update files with proper versioning.

### Documentation Updates:
* [`apps/DatabaseSquash/DatabaseExporter/databaseexporter.md`](diffhunk://#diff-b2b291286f2b900a022474f00754ebfe78410780c010d46752335a372d688aefR1-R16): Rewritten documentation to reflect the usage of the new Bash script for database exporting.
* [`apps/DatabaseSquash/VersionUpdater/versionupdater.md`](diffhunk://#diff-f12e21f8a404957c90d9120cf9df0724ff27a7efdb5de0798d974079cfe8adadR1-R10): Added documentation for the new version updater tool, explaining its functionality and usage.
* [`apps/DatabaseSquash/databasesquash.md`](diffhunk://#diff-4a559f6e7404b529714bac65ad22744feb7b9f88343864a20e0a46974233767eR1-R11): Documented the overall database squash tool, detailing its integration of the version updater and database exporter scripts.

### Removal of Legacy Code:
* [`apps/DatabaseExporter/DatabaseExporter.ps1`](diffhunk://#diff-2b4e49f704d88a372b5160c7278839668c81dbecaf52a4edd327873e30b9ae70L1-L234): Removed the PowerShell script for database exporting, along with its associated functionality and settings.
* [`apps/DatabaseExporter/databaseexporter.md`](diffhunk://#diff-0618d62def0d611be6e0d4fc524df6f702f493cb87870d9382402aaf52f484e8L1-L85): Deleted outdated documentation for the PowerShell-based database exporter tool.
2025-06-28 16:17:48 +02:00
Hyjarion 969e0275a9 fix(Core/Player): Mutilate + Cold Blood crit fix (#22308) 2025-06-28 10:58:45 -03:00
Kitzunu ca8a2a5f58 fix(CI/Codestyle): Add directory check to SQL codestyle script (#22376) 2025-06-28 15:06:39 +02:00
github-actions[bot] c0276a3410 chore(DB): import pending files
Referenced commit(s): bd0bcaef09
2025-06-28 12:08:41 +00:00
Rocco Silipo bd0bcaef09 fix(DB/Creature): Remove respawn time from the smartAI of some npc's in the scarlet enclave. (#22375) 2025-06-28 09:07:42 -03:00
Rocco Silipo d6cf473882 fix (Core/SmartScript) Improve SMART_ACTION_START_CLOSEST_WAYPOINT. (#22364)
Co-authored-by: Yehonal <yehonal.azeroth@gmail.com>
2025-06-27 20:07:54 +02:00
github-actions[bot] 732b916a2a chore(DB): import pending files
Referenced commit(s): 989b64cb3d
2025-06-27 13:31:23 +00:00
SHIHUANG214 989b64cb3d feat(Script/Commands): allow to pass email in account create (#22310)
Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>
2025-06-27 15:30:21 +02:00
Kitzunu 5311717a89 fix(Player/Skills): Improve skill validation and logging in Player::_… (#22369) 2025-06-27 09:14:04 -03:00
Benjamin Jackson f01e5d157c refactor(Core/Scripting): Forward-declare AuctionEntry as a struct rather than a class. (#22282) 2025-06-27 09:43:05 +01:00
github-actions[bot] 69645f37d4 chore(DB): import pending files
Referenced commit(s): ec23669a29
2025-06-27 08:40:30 +00:00
Tereneckla ec23669a29 feature(Scripts/Commands) choose Xth spawn of entry for go creature/gameobject id (#22363) 2025-06-27 09:39:26 +01:00
github-actions[bot] e8429688f1 chore(DB): import pending files
Referenced commit(s): e4583eb06f
2025-06-27 00:26:27 +00:00
Andrew e4583eb06f fix(DB/Creature): Bound Air, Fire and Water Elemental damage and immu… (#22300) 2025-06-26 21:25:30 -03:00
Tereneckla 67aa3e8e9c fix(Script/SWP): unify events that interact with Anveena in P5 Kil'Jaeden (#22366) 2025-06-26 17:39:48 -03:00
Vanna White 36c4de6590 fix(CORE/SAI): Properly Implement START_CLOSEST_WAYPOINT (#22256)
Co-authored-by: wetbrownsauce <you@example.com>
2025-06-26 13:12:13 +02:00
Tereneckla 0810fa076a refactor(Core/AI): rename FarthestTargetSelector to RangeSelector (#22026) 2025-06-24 23:09:38 +02:00
Benjamin Jackson f910147296 fix(Core/Movement): Use attack speed for leash reset period and only extend timer if in melee range or can't move freely. (#22350)
Co-authored-by: ratkosrb <35845488+ratkosrb@users.noreply.github.com>
2025-06-24 16:17:59 -04:00
Tereneckla e77f5d63da fix(Core/AI): crashfix(#22352) (#22353) 2025-06-24 17:03:45 -03:00
Takenbacon 8dbde7a588 fix(Core/Grids): Crash fix (#22347) 2025-06-23 09:51:50 -03:00
Tereneckla 92094eec01 fix(Core/Spell): implement SPELL_ATTR5_NOT_ON_PLAYER and SPELL_ATTR5_NOT_ON_PLAYER_CONTROLLED_NPC (#22332) 2025-06-22 22:51:58 -03:00
Kitzunu 8200f3729e fix(Core/SAI): Exclude GMs for player target/event (#22345) 2025-06-22 21:47:32 -03:00
Tereneckla 94f941731e fix (Core) update comments on unused SpellAttributes (#22343) 2025-06-22 17:01:53 +02:00
Tereneckla 86f460c0ca fix(Scripts/Spell): snapshot %dmg and crit when spreading or refreshing diseases with pestilence (#22306) 2025-06-22 11:38:09 +02:00
github-actions[bot] 90eb27cd15 chore(DB): import pending files
Referenced commit(s): f30a821b7f
2025-06-21 21:47:00 +00:00
Rocco Silipo f30a821b7f fix (DB/Script/Scarlet Enclave) Corrects some spell timers and adds a new spell for Darion Mograine. (#22324) 2025-06-21 23:45:59 +02:00
github-actions[bot] d68b0913a1 chore(DB): import pending files
Referenced commit(s): 7c171ae4dc
2025-06-21 18:45:05 +00:00
avarishd 7c171ae4dc fix(Scripts/ScarletEnclave): City guards should throw stuff at new DKs (#22317) 2025-06-21 20:44:01 +02:00
github-actions[bot] 5a58237007 chore(DB): import pending files
Referenced commit(s): 711f674c8a
2025-06-21 17:33:24 +00:00
Andrew 711f674c8a fix(Scripts/ScarletEnclave): Rewrite Brothers in Death (#22303) 2025-06-21 14:32:22 -03:00
github-actions[bot] 58b966cbff chore(DB): import pending files
Referenced commit(s): 9d03f229c9
2025-06-21 16:22:29 +00:00
Rocco Silipo 9d03f229c9 fix(DB/Condition): Deliver Stolen Horse only works near Salanar. (#22341) 2025-06-21 13:21:29 -03:00
Jelle Meeus 7fc8b14e3e feat(Core/Utilities): add Seconds overload for randtime (#22337) 2025-06-20 23:18:05 +02:00
Francesco Borzì e21dd80381 fix(Core/PlayerTaxi): prevent pop_front crash (#22292)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-18 19:10:33 +01:00
github-actions[bot] 56f8f6ab98 chore(DB): import pending files
Referenced commit(s): d94fbb1609
2025-06-18 13:48:10 +00:00
Andrew d94fbb1609 fix(Scripts/ZulDrak): Fix Ghymer not being healed by storm clouds (#22302) 2025-06-18 10:47:10 -03:00
Jelle Meeus 4d2fe013fd chore(vscode): update extensions, settings, tasks (#22200) 2025-06-17 21:26:17 +01:00
github-actions[bot] 4f44add274 chore(DB): import pending files
Referenced commit(s): 84533758f9
2025-06-17 19:15:44 +00:00
Tereneckla c5f3c968ad fix(DB/Creature) add CC immunities to the Fel Crystals in the Selin Fireheart encounter (#22304) 2025-06-17 20:15:31 +01:00
Ryan Turner 84533758f9 fix(core/SMART_EVENT_LINK) - Seperation and clarification of "not found or invalid, skipped" (#22240) 2025-06-17 20:14:45 +01:00
github-actions[bot] 31f466fa32 chore(DB): import pending files
Referenced commit(s): a902e7314c
2025-06-17 17:51:17 +00:00
avarishd 8c2b1bc79b fix(Scripts/HoL): Ionar's Static Overload missing knockback (#22049) 2025-06-17 14:50:29 -03:00
github-actions[bot] a902e7314c chore(DB): import pending files
Referenced commit(s): e50a692fc7
2025-06-17 17:50:18 +00:00
Jelle Meeus e50a692fc7 fix(DB): set game_event_* tables to use smallint (#22309) 2025-06-17 18:49:18 +01:00
github-actions[bot] 7f46986771 chore(DB): import pending files
Referenced commit(s): 19626d0bfa
2025-06-17 17:47:49 +00:00
Lyn 19626d0bfa fix(DB/Creature): Molten War Golem - Added immunities (#22315)
Co-authored-by: ratkosrb <ratkomladic2@abv.bg>
2025-06-17 18:46:46 +01:00
Yehonal 03df002471 fix(bash): repository initialization bugs and update configurations (#22311) 2025-06-17 18:30:51 +01:00
github-actions[bot] d3cbce652d chore(DB): import pending files
Referenced commit(s): 080e9e05da
2025-06-16 15:40:04 +00:00
avarishd 080e9e05da fix(Scripts/Items): Bloodsail Admiral's hat should despawn parrot on … (#22327) 2025-06-16 17:39:03 +02:00
github-actions[bot] dd96b57be4 chore(DB): import pending files
Referenced commit(s): a473138dbb
2025-06-15 21:43:51 +00:00
Benjamin Jackson a473138dbb fix(DB/Gameobject): Correct Area 52 Mailbox faction. (#22319) 2025-06-15 17:42:51 -04:00
github-actions[bot] 8daba92e58 chore(DB): import pending files
Referenced commit(s): c5cb54c2ea
2025-06-15 20:48:50 +00:00
Benjamin Jackson c5cb54c2ea fix(Scripts/ScarletEnclave): Improve Might of Mograine aura behavior. (#22320) 2025-06-15 22:47:46 +02:00
github-actions[bot] 6a054da69d chore(DB): import pending files
Referenced commit(s): c55e737fdd
2025-06-15 18:33:54 +00:00
Ryan Turner c55e737fdd fix(DB/Loot) - Archimonde now properly drops the Helms (#22322)
Co-authored-by: amed80 <8395873+amed80@users.noreply.github.com>
2025-06-15 19:32:55 +01:00
Andrew a8cc3b7ba7 fix(Scripts/AhnKahet): Fix Taldaram Spheres duration, spawn position … (#22296) 2025-06-13 18:52:21 -03:00
github-actions[bot] 1ce62f4718 chore(DB): import pending files
Referenced commit(s): 40a4ed5fc7
2025-06-12 09:23:16 +00:00
Smirnov Sergey 40a4ed5fc7 fix(DB/SAI/Scripts) [Sholazar Basin] Quest: A Hero's Burden -- Behavior of all NPCs (#22278) 2025-06-12 11:22:17 +02:00
github-actions[bot] 8060e2afbc chore(DB): import pending files
Referenced commit(s): d28d98a434
2025-06-12 09:18:39 +00:00
Andrew d28d98a434 fix(DB/SAI): Fix Eye of Taldaram not casting Shadowfury on death (#22297) 2025-06-12 11:17:39 +02:00
github-actions[bot] a79c7c09d3 chore(DB): import pending files
Referenced commit(s): 98ea0b40fa
2025-06-12 09:14:06 +00:00
Andrew 48b1480536 fix(DB/SAI): Fix Bonegrinder not casting Frightening Shout (#22299) 2025-06-12 11:13:29 +02:00
github-actions[bot] 79e3b48d6f chore(DB): import pending files
Referenced commit(s): 5a4da0c9a8
2025-06-12 09:13:19 +00:00
Andrew 98ea0b40fa fix(DB/Creature): Herald Volaj despawn on evade (#22295) 2025-06-12 11:13:01 +02:00
Andrew 5a4da0c9a8 fix(DB/SAI): Savage Cave Beast should enrage every 30-35s (#22294) 2025-06-12 11:12:22 +02:00
Andrew a20576dc8c fix(Scripts/UtgardePinnacle): Svala Sorrowgrave should not be unattac… (#22298) 2025-06-11 12:06:51 -03:00
Andrew a00e266b1f fix(Core/Spells): Fix Element 115 Perpetual Instability not preventin… (#22301) 2025-06-10 18:23:26 -03:00
Tereneckla 0afc258a6b fix(Core/Spell): Halve healing threat generated by paladins (#22271) 2025-06-09 23:25:33 -03:00
Tereneckla 3a7705409c fix(Core/Unit): use casttime for ppm calculation of spells (#22019) 2025-06-09 12:07:42 -03:00
Tereneckla 745f757551 refactor(Scripts/SunwellPlateau): use existing functions for Dark Fiend target search (#22025) 2025-06-09 11:55:17 -03:00
github-actions[bot] 9697ace17c chore(DB): import pending files
Referenced commit(s): d05276cb54
2025-06-09 11:13:30 +00:00
avarishd d05276cb54 fix(DB/SAI): Leaping Hatchling pet is not leaping around (#22287) 2025-06-09 12:12:19 +01:00
github-actions[bot] 43305233c7 chore(DB): import pending files
Referenced commit(s): 3092df60cc
2025-06-08 20:44:48 +00:00
Benjamin Jackson 3092df60cc fix(DB): Correct an area trigger teleport entry. (#22290) 2025-06-08 16:43:43 -04:00
github-actions[bot] 2277c48fe8 chore(DB): import pending files
Referenced commit(s): 8fe9ee2b96
2025-06-08 11:01:42 +00:00
Christian M 0f20934cad Quest - Imprisoned in the Citadel - Can now be completed. (#22231) 2025-06-08 12:01:07 +01:00
Ryan Turner 8fe9ee2b96 fix(DB/areatrigger_teleport) - Multiple updated areatriggers. (#22190) 2025-06-08 12:00:41 +01:00
github-actions[bot] 6f9696ad2c chore(DB): import pending files
Referenced commit(s): d365b18c0d
2025-06-08 10:56:24 +00:00
blinkysc d365b18c0d fix(DB/CreatureLoot) Fix loot table for Archimonde (#21785) 2025-06-08 11:55:18 +01:00
github-actions[bot] 11978bff08 chore(DB): import pending files
Referenced commit(s): d7452e83b0
2025-06-08 00:27:08 +00:00
Benjamin Jackson d7452e83b0 fix(DB): Significantly increase opcode limit for guild member note opcodes. (#22258) 2025-06-08 01:26:04 +01:00
github-actions[bot] 43108b8ee2 chore(DB): import pending files
Referenced commit(s): e3096010a4
2025-06-08 00:15:40 +00:00
Macs-Account 68ece33f89 fix(Core/Scripting): UnitScript::DealDamage always returns the original damage value (#22206) 2025-06-08 01:15:32 +01:00
Smirnov Sergey 608d110d7f fix(DB/Quest) Added/Fix missing russian quest locale and fix wrong russian locale. #3 (#22277) 2025-06-08 01:14:56 +01:00
Quentin Dawans e3096010a4 fix(DB/creature_loot) - Durar's and Kathorn's Power Cell corrected drop rate to 100% (#22203) 2025-06-08 01:14:34 +01:00
Andrew 9279b1248f fix(Core/SAI): Don't try to reposition SMC creatures while moving (fi… (#22280) 2025-06-07 15:43:53 -03:00
Jelle Meeus 13e9ae5206 fix(Core/Spells): channels no longer update player server-side orientation (#22138) 2025-06-07 12:58:53 +01:00
Benjamin Jackson 416955907d refactor(Core/Channel): Cast moderation level to account types and avoid boolean evaluation. (#22283) 2025-06-07 12:57:23 +01:00
NoxMax b400dcfdb1 fix(Conf/Logs): Change Errors.log to overwrite (#22151) 2025-06-07 10:59:39 +02:00
github-actions[bot] 15c7673d05 chore(DB): import pending files
Referenced commit(s): a4e609f762
2025-06-07 08:44:26 +00:00
Jelle Meeus a4e609f762 fix(DB/Command): update wchange help (#22281) 2025-06-07 10:43:25 +02:00
Benjamin Jackson da7db0a510 refactor(Core/Spells): Remove effectively unused switch case. (#22284) 2025-06-07 09:24:50 +02:00
github-actions[bot] 90a101cedb chore(DB): import pending files
Referenced commit(s): e824525a31
2025-06-06 21:53:56 +00:00
Ryan Turner 481046ad8b fix(Quest/DB) - Removed the prequesite for Observing the Sporelings (#22004) 2025-06-06 22:53:16 +01:00
Ryan Turner e824525a31 fix(DB/Quest) - "Fine Gold Thread" is now repeatable (#22146) 2025-06-06 22:52:50 +01:00
Jelle Meeus 0f26b634e3 refactor(Core/Player): revert equip item aura duration core fix with a spell correction (#22167) 2025-06-05 17:08:38 -03:00
avarishd 9ede3a546f fix(Scripts/UP): King Ymiron should use only 1 boat ability at a time & Spirit Fount speed (#22081) 2025-06-05 16:07:34 -03:00
github-actions[bot] 8c4b7851ef chore(DB): import pending files
Referenced commit(s): 11a4dc5ece
2025-06-05 18:57:26 +00:00
Benjamin Jackson 1733c94aec refactor(Core): Make use of standard config usage for guild member limit option. (#22259) 2025-06-05 15:51:19 -03:00
Benjamin Jackson 11a4dc5ece fix(Core/Creature): Use minimum template level instead of current level for leash timer. (#22250) 2025-06-05 15:50:36 -03:00
Tereneckla bea53b9826 fix(Core/Spells): simplify and fix Blood-Caked Strike calculation (#22243) 2025-06-05 15:49:44 -03:00
Benjamin Jackson b73bdb3adc chore(Core): Remove unused and inaccurate comment headers for various script-related files. (#22263) 2025-06-05 15:49:20 -03:00
avarishd aac5d3aa95 fix(DB/Misc): Gundrak formations and SAI (#22107) 2025-06-05 15:00:28 -03:00
Benjamin Jackson 640dc2db40 chore(Core/Guild): Adjust variable declaration name to match usage. (#22257) 2025-06-05 12:49:07 -03:00
Macs-Account 31ea22acc4 fix(Core/Spells): weapon damage based magic abilities gain too much effect from spell aura % damage increase (#22232) 2025-06-05 12:48:38 -03:00
Tereneckla 2b70446322 fix(Core/Spell): Revert paladin seal hackfixes (#22264) 2025-06-05 12:47:37 -03:00
github-actions[bot] ab80936712 chore(DB): import pending files
Referenced commit(s): 1f082cb29c
2025-06-05 15:44:52 +00:00
Martin Leuner 1f082cb29c fix(DB/Creature): Remove extra Shaffar adds (#22255) 2025-06-05 12:43:52 -03:00
github-actions[bot] b0c2d3a13b chore(DB): import pending files
Referenced commit(s): d26d09c358
2025-06-05 14:46:58 +00:00
Rocco Silipo d26d09c358 fix(Scripts/ScarletEnclave): Death Knight Initiates now despawn when defeated. (#22268) 2025-06-05 11:45:56 -03:00
github-actions[bot] c9cacfee44 chore(DB): import pending files
Referenced commit(s): fe2d1150b3
2025-06-05 14:44:41 +00:00
Tereneckla fe2d1150b3 fix(Core/LFG): Lock Deathknights from the dungeonfinder until they complete their starting zone (#22270) 2025-06-05 11:43:35 -03:00
Benjamin Jackson 2a93e7d410 chore(Core/Unit): Correct typo of Controlled. (#22260) 2025-06-03 08:56:44 +02:00
Andrew 46d2739a74 fix(Scripts/AhnKahet): Modernize Amanitar script (#22254) 2025-06-01 10:27:47 -03:00
github-actions[bot] 68818caa75 chore(DB): import pending files
Referenced commit(s): b6daee6c7a
2025-05-31 15:10:09 +00:00
Rocco Silipo b6daee6c7a fix (DB/Script) Move Eye of Acherus event to SmartAI. (#22249) 2025-05-31 17:09:03 +02:00
github-actions[bot] 48b62e567b chore(DB): import pending files
Referenced commit(s): 08cbd4f328
2025-05-31 00:42:06 +00:00
Jelle Meeus 08cbd4f328 fix(Scripts/SunwellPlateau): Eredar Twins blaze trap delay (#22253) 2025-05-30 21:41:07 -03:00
github-actions[bot] bd756a542a chore(DB): import pending files
Referenced commit(s): e35a565880
2025-05-30 19:16:17 +00:00
Rocco Silipo e35a565880 fix(DB/Creature) Edit Sinister Reflection spell timers. (#22233) 2025-05-30 21:14:23 +02:00
github-actions[bot] 92bfdac461 chore(DB): import pending files
Referenced commit(s): 30f5dacd69
2025-05-30 17:34:34 +00:00
Brian 30f5dacd69 feat(Scripts/Commands): Add group revive command (#22204) 2025-05-30 14:33:32 -03:00
github-actions[bot] 34698e0f62 chore(DB): import pending files
Referenced commit(s): c9f7031314
2025-05-30 15:14:12 +00:00
avarishd c9f7031314 fix(Scripts/Oculus): Varos Cloudstrider does not summon Azure Ring Captain (#22198) 2025-05-30 12:13:11 -03:00
github-actions[bot] 2217b5642d chore(DB): import pending files
Referenced commit(s): b15507eb06
2025-05-30 14:43:14 +00:00
Jelle Meeus b15507eb06 feat(Scripts/Commands): .debug boundary to visualize CreatureBoundary (#22099)
Co-authored-by: avarishd <46330494+avarishd@users.noreply.github.com>
Co-authored-by: treeston <treeston.mmoc@gmail.com>
2025-05-30 11:42:11 -03:00
github-actions[bot] 4ad3df7210 chore(DB): import pending files
Referenced commit(s): d4e419bf8d
2025-05-30 14:31:49 +00:00
avarishd d4e419bf8d fix(Scripts/AhnKahet): Ahn'kahar Spell Flinger failing to channel S… (#22082) 2025-05-30 11:30:46 -03:00
github-actions[bot] 942c3aed78 chore(DB): import pending files
Referenced commit(s): 47cc6a7a4b
2025-05-30 13:38:41 +00:00
avarishd 47cc6a7a4b fix(Scripts/Items): Noblegarden Chocolate instantly giving Well Fed buff (#22150) 2025-05-30 10:37:38 -03:00
Benjamin Jackson e6a29d96c8 fix(Core/Creature): Use home position for leash distance check for creatures with no movement. (#22245) 2025-05-30 10:35:28 -03:00
github-actions[bot] deeb3a495b chore(DB): import pending files
Referenced commit(s): 9ed8350b95
2025-05-30 13:06:49 +00:00
avarishd 9ed8350b95 fix(Scripts/VioletHold): Sinclari gossip order, crystals being spamma… (#22195) 2025-05-30 10:05:46 -03:00
kissingers d2be121930 fix(Scripts/TheEye): Al'ar don't attack other players if the onlyone tank died (#22118) 2025-05-30 10:04:26 -03:00
github-actions[bot] d518053091 chore(DB): import pending files
Referenced commit(s): 1cdcb9c606
2025-05-30 12:09:30 +00:00
avarishd 1cdcb9c606 fix(Scripts/Karazhan): Script Wrath of the Titans (#22165) 2025-05-30 09:08:25 -03:00
Andrew af383daf18 fix(Scripts/AhnKahet): Amanitar shouldn't be immune to nature damage (#22244) 2025-05-30 09:00:18 -03:00
github-actions[bot] cb482af450 chore(DB): import pending files
Referenced commit(s): f61d3f6a1d
2025-05-30 11:52:05 +00:00
Rocco Silipo f61d3f6a1d fix(DB/Creature): Remove Set_Active from some creatures in dk starting area. (#22234) 2025-05-30 08:50:59 -03:00
avarishd c7aa50dfc0 fix(Scripts/AhnKahet): Elder Nadox enrage & health check (#22208) 2025-05-29 20:51:24 -03:00
github-actions[bot] 4ad99e2de8 chore(DB): import pending files
Referenced commit(s): f9564c5ee0
2025-05-29 17:19:19 +00:00
avarishd f9564c5ee0 fix(DB/Creature): Jedoga Shadowseeker should be disarmable and hard r… (#22215) 2025-05-29 19:18:16 +02:00
github-actions[bot] 8d9636e1fa chore(DB): import pending files
Referenced commit(s): 172df6feb7
2025-05-29 08:47:57 +00:00
Ryan Turner 172df6feb7 fix(DB/SAI) - SAI for NPCs related to ETC event to no longer display errors. (#22222) 2025-05-29 09:46:50 +01:00
Benjamin Jackson 0d9708cfab fix(Scripts/SunwellPlateau): Don't inflict Darkness damage if Darkness aura is removed by death. (#22223) 2025-05-27 23:22:27 -04:00
github-actions[bot] a72e948c6b chore(DB): import pending files
Referenced commit(s): 26cb7597fb
2025-05-27 21:03:13 +00:00
Ryan Turner 26cb7597fb fix(DB/Command) - Updates the "guild rank" command to be more clear. (#22186) 2025-05-27 22:02:07 +01:00
github-actions[bot] ae90ea11a1 chore(DB): import pending files
Referenced commit(s): db18d5b035
2025-05-27 13:42:03 +00:00
Benjamin Jackson db18d5b035 refactor(Core): Use database tables for Shaman totems and Druid shapeshift forms. (#22104)
Co-authored-by: DoctorKraft <25483209+doctorkraft@users.noreply.github.com>
Co-authored-by: Shauren <shauren.trinity@gmail.com>
Co-authored-by: ForesterDev <11771800+ForesterDev@users.noreply.github.com>
2025-05-27 14:40:57 +01:00
github-actions[bot] c10e4dc015 chore(DB): import pending files
Referenced commit(s): d6a21a53db
2025-05-27 13:38:54 +00:00
avarishd d6a21a53db fix(DB/SAI): Portal Keepers now uses the correct Arcane Missiles spell (#22209) 2025-05-27 14:37:52 +01:00
github-actions[bot] 61273296d5 chore(DB): import pending files
Referenced commit(s): fdaaaae257
2025-05-26 10:45:44 +00:00
avarishd fdaaaae257 fix(Scripts/ScarletEnclave): Script Recall Eye of Acherus & fix Summo… (#22205) 2025-05-26 12:44:42 +02:00
avarishd 2a45d1a26f fix(Core/Spells): Siphon Bloodgem now channels no matter the player's orientation. (#22143) 2025-05-24 19:53:27 +01:00
avarishd 39f6974f7d fix(Scripts/SWP): Breath: Haste now removes impairing auras (#22192)
Kil'Jaeden encounter (SWP) Spell: breath: haste will now remove impairing auras.
2025-05-24 19:51:57 +01:00
github-actions[bot] c7b86bc664 chore(DB): import pending files
Referenced commit(s): ae48c37914
2025-05-24 18:51:04 +00:00
avarishd ae48c37914 fix(Scripts/Spells): - Weapon Coating Enchant (#22060)
Righteous and Blessed Weapon Coating will now properly proc.
2025-05-24 19:49:59 +01:00
github-actions[bot] 440ffc3b03 chore(DB): import pending files
Referenced commit(s): f79c0292eb
2025-05-24 18:42:40 +00:00
avarishd f79c0292eb fix(Scripts/ScarletEnclave): Devour Humanoid castable without target … (#22196)
Co-authored-by: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com>
2025-05-24 20:41:37 +02:00
Jelle Meeus 3bae9804ba fix(Scripts/SunwellPlateau): crash in Sinister Reflection Clone spellscript (#22201) 2025-05-24 20:30:50 +02:00
github-actions[bot] 77ac0ce718 chore(DB): import pending files
Referenced commit(s): 63b4f41f05
2025-05-24 08:32:04 +00:00
avarishd 63b4f41f05 fix(DB/Spells): Shield of the Blue output damage reduction (#22191) 2025-05-24 10:31:03 +02:00
github-actions[bot] 78f52b5614 chore(DB): import pending files
Referenced commit(s): 120ecc0742
2025-05-23 20:30:27 +00:00
avarishd 120ecc0742 fix(DB/Creature): Warp Storm doesn't do anything (#22144)
NPC: Warp Storm summoned by NPC: Warp Aberration will not attack the player.
2025-05-23 21:29:28 +01:00
github-actions[bot] 5f87829635 chore(DB): import pending files
Referenced commit(s): 676daccc32
2025-05-23 20:13:51 +00:00
avarishd b4a58ee354 fix(DB/Creature): Captured Totem shouldn't be attackable (#22142)
Item: Captured Totem from Quest: The Grimtotem Weapon no longer generates aggro nor can't be attacked
2025-05-23 21:13:09 +01:00
github-actions[bot] 676daccc32 chore(DB): import pending files
Referenced commit(s): 65dfd60279
2025-05-23 20:12:43 +00:00
avarishd 65dfd60279 Fix(DB/Spells): Hallows End candies should not give Well Fed buff. (#22141)
Co-authored-by: UltraNix <80540499+UltraNix@users.noreply.github.com>

Hallowe'en / hallow's end candy no longer gives you a food buff.
2025-05-23 21:11:40 +01:00
github-actions[bot] f85f0e8774 chore(DB): import pending files
Referenced commit(s): c6d2249d92
2025-05-23 16:25:11 +00:00
avarishd 01aee2a734 fix(Scripts/Northrend): Crashing wave should do double damage to frozen … (#22057) 2025-05-23 18:25:09 +02:00
avarishd 774a20c02a fix(Scripts/OldKingdom): Jedoga Shadowseeker boundary (#22084)
Co-authored-by: Gustavo <sirikfoll@hotmail.com>
2025-05-23 18:24:28 +02:00
Jelle Meeus c6d2249d92 fix(Scripts/Spells): re-add startDelay for some traps (#22102) 2025-05-23 18:24:08 +02:00
Benjamin Jackson f710fb8d9f refactor(Core/Worldstate): Remove redundant worldstate usage. (#22126)
Co-authored-by: Jelle Meeus <sogladev@gmail.com>
2025-05-23 18:23:34 +02:00
Benjamin Jackson 93ac73a4d1 fix(Core/Creature): Leashing improvements. (#22129)
Co-authored-by: killerwife <killerwife@users.noreply.github.com>
Co-authored-by: 天鹭 <18535853+PkllonG@users.noreply.github.com>
2025-05-23 18:22:56 +02:00
github-actions[bot] 2c74df350e chore(DB): import pending files
Referenced commit(s): a1bbb1d5f6
2025-05-23 16:21:37 +00:00
Christian M a1bbb1d5f6 Update 2 mobs with broken damage (#22149)
Co-authored-by: Benjamin Jackson <38561765+heyitsbench@users.noreply.github.com>
2025-05-23 18:20:01 +02:00
Brian cd26c20028 Worldserver conf table reference correction (#22177) 2025-05-23 18:18:31 +02:00
github-actions[bot] 4a41715b47 chore(DB): import pending files
Referenced commit(s): 41e315b9ed
2025-05-23 16:10:31 +00:00
Rocco Silipo 23d5eabbb7 fix (DB/Creature) Improve Citizen of Havenshire SmartAI. (#22185) 2025-05-23 18:09:56 +02:00
Rocco Silipo 41e315b9ed fix(DB/Creature) Configure Set_Active on various npcs in dk starting area. (#22175) 2025-05-23 18:09:28 +02:00
github-actions[bot] eced1b714f chore(DB): import pending files
Referenced commit(s): 1326c27529
2025-05-22 09:34:12 +00:00
Rocco Silipo 1326c27529 fix (DB/Creature) Kil'Jaeden Sinister Reflections now have 3 seconds of delay before attacking. (#22162) 2025-05-22 11:33:05 +02:00
github-actions[bot] a953710d3a chore(DB): import pending files
Referenced commit(s): 22b1d072c2
2025-05-21 22:27:31 +00:00
Benjamin Jackson 6864748c9d fix(DB/SAI): Correct Fireball spell ID used by Wyrmcult Scouts and Zealots. (#22147) 2025-05-21 19:27:20 -03:00
Jelle Meeus 22b1d072c2 fix(Core/Player): aura removal logic to equipped "Use" items (#22164)
Co-authored-by: itslovelol <robin.schriever.hude@web.de>
Co-authored-by: VladimirMangos <vladimir@getmangos.com>
2025-05-21 19:26:28 -03:00
github-actions[bot] 9bc847d339 chore(DB): import pending files
Referenced commit(s): 70044b71f4
2025-05-21 12:08:03 +00:00
Tereneckla 70044b71f4 fix(DB/Spells): Shadow Bolt Volley of Hand of Deceivers on the Kil'jaeden fight stack (#22156) 2025-05-21 09:06:59 -03:00
github-actions[bot] f507df2661 chore(DB): import pending files
Referenced commit(s): e7343b0e3c
2025-05-20 07:07:51 +00:00
Benjamin Jackson e7343b0e3c fix(DB/Loot): Adjust Thori'dal drop chance. (#22124) 2025-05-20 09:06:46 +02:00
Francesco Borzì 8e68d9a8b4 docs(AUTHORS): add Cross-project Collaboration section (#22034) 2025-05-19 17:49:15 +02:00
github-actions[bot] a20077eca8 chore(DB): import pending files
Referenced commit(s): 75d7f4886c
2025-05-19 11:17:16 +00:00
Ryan Turner 75d7f4886c fix(DB/Loot) - Dalaran Wizard's Robe no longer drops from un-wanted creatures. (#22091)
Co-authored-by: Grimfeather <88028633+grimfeather@users.noreply.github.com>
2025-05-19 13:16:09 +02:00
github-actions[bot] 0e62559a3c chore(DB): import pending files
Referenced commit(s): a8102ab716
2025-05-18 21:17:55 +00:00
Ryan Turner a8102ab716 fix(DB/SAI) - Removes Link in Smart AI for creature Ziggurat Defender (#22137) 2025-05-18 22:16:56 +01:00
avarishd 60d6274261 fix(Scripts/Zone): Quest 'Fire At Will!' should give group credit (#22145) 2025-05-18 08:33:33 -04:00
Andrew c3d3eb23de fix(Scripts/SunwellPlateau): Fix Killjaeden text spam (#22139) 2025-05-18 00:07:27 +02:00
Jelle Meeus 6cdf185412 fix(Scripts/Spells): Kil'Jaeden Fire Bloom AoE pet damage (#22133) 2025-05-17 08:36:47 +02:00
github-actions[bot] 06e78fa8f2 chore(DB): import pending files
Referenced commit(s): f1269a6fff
2025-05-15 10:11:13 +00:00
Jelle Meeus f1269a6fff fix(Scripts/SunwellPlateau): Spell Fury spellsteal resets stacks and is no longer consumes on dot ticks (#22125) 2025-05-15 12:10:11 +02:00
Jelle Meeus 3e20d6edf8 feat(apps/extractor): add extractor for non windows (#22123) 2025-05-14 23:29:43 +01:00
github-actions[bot] 6de87af4d2 chore(DB): import pending files
Referenced commit(s): 7ae3f76358
2025-05-13 21:31:32 +00:00
Benjamin Jackson 7ae3f76358 fix(DB/Creature): Correct Kil'jaeden's model info. (#22120) 2025-05-13 18:30:32 -03:00
Jelle Meeus 2883160086 fixup! refactor(Core/World): Move various worldstate related function… (#22119) 2025-05-13 21:03:42 +02:00
Andrew bf5a62ec2b fix(Scripts/SunwellPlateau): Fix flame dart timers and cast in all ph… (#22113) 2025-05-13 08:58:03 +02:00
github-actions[bot] 4c162ca405 chore(DB): import pending files
Referenced commit(s): 396fd687fa
2025-05-12 16:04:02 +00:00
Rocco Silipo 396fd687fa fix(DB/Creature) Scarlet Crusaders don't hook invisible Eye of Acherus anymore (phase 2). (#22106) 2025-05-12 18:02:58 +02:00
Rocco Silipo 4e2d6be224 fix (Script/Sunwell Plateau) Edit Kil'Jaeden Darkness Timers. (#22115) 2025-05-12 16:05:13 +02:00
github-actions[bot] 8b4b37fdbb chore(DB): import pending files
Referenced commit(s): 78a5a5c429
2025-05-12 00:27:24 +00:00
Rocco Silipo 78a5a5c429 fix(DB/Creature): Add Taunt Immunity to Kil'Jaeden. (#22114) 2025-05-11 21:26:18 -03:00
Benjamin Jackson 4dfc44a69b fix(Scripts): Use distinct sound entry for BRD L70ETC Music Doodad. (#22029) 2025-05-10 20:33:48 +01:00
github-actions[bot] bd3f4d0228 chore(DB): import pending files
Referenced commit(s): f721682d7e
2025-05-10 18:11:04 +00:00
Brian f721682d7e fix(DB/Commands) Corrected syntax for "help server exit" and "help reload config". (#22100)
Trinitycore references changes to azerothcore for command "help reload config" and help server exit
2025-05-10 19:10:04 +01:00
github-actions[bot] ed69f9b2ea chore(DB): import pending files
Referenced commit(s): 83adff44e4
2025-05-10 17:52:33 +00:00
Tereneckla 7df7f2610e fix(Core/Spells) reimplement SPELL_ATTR3_CAN_PROC_FROM_PROCS (#22072) 2025-05-10 18:52:06 +01:00
Tereneckla 83adff44e4 fix(Spells/Paladin) remove custom cooldown and procFlags from Judgement of Wisdom/Light (#22018) 2025-05-10 18:51:30 +01:00
github-actions[bot] 3f527c54e3 chore(DB): import pending files
Referenced commit(s): 60296dd934
2025-05-10 17:39:49 +00:00
Benjamin Jackson 60296dd934 fix(Scripts/Paladin): Add cast check to Hand of Protection for casting spell on non-self targets. (#22077)
Hand of Protection no longer can be used if the caster it's stunned or confused.
2025-05-10 18:38:46 +01:00
github-actions[bot] 201c1fc491 chore(DB): import pending files
Referenced commit(s): 43a308897b
2025-05-10 17:33:49 +00:00
avarishd 43a308897b fix(DB/Conditions): 'Opening the Backdoor' pre-quests (#22097) 2025-05-10 18:32:44 +01:00
avarishd f40954ab42 fix(Scripts/Desolace): Kodo Roundup (#22052)
Quest: Kodo Roundup now can be completed.
2025-05-10 18:30:32 +01:00
Rocco Silipo 8591e9f825 fix (Script/SunwellPlateau): Edit some Kil'jaeden dialogue and spells' timers. (#22093) 2025-05-10 12:51:02 -03:00
github-actions[bot] e165105503 chore(DB): import pending files
Referenced commit(s): 6a387fe637
2025-05-10 00:11:07 +00:00
Ryan Turner 6a387fe637 fix(DB/Loot) - Lorgalis Manuscript no longer drops from creatures. (#22092) 2025-05-10 01:10:09 +01:00
Benjamin Jackson 52799d76f6 refactor(Core): Add definition file for area table entries. (#22054) 2025-05-09 15:48:02 +02:00
github-actions[bot] db62fe8310 chore(DB): import pending files
Referenced commit(s): 784e434eed
2025-05-09 10:33:47 +00:00
avarishd 784e434eed fix(DB/Creature): Ahn'kahar Watcher will no longer spawn in normal mode. (#22083) 2025-05-09 12:32:45 +02:00
github-actions[bot] 1966b82ce5 chore(DB): import pending files
Referenced commit(s): 19d1595fc1
2025-05-09 10:29:26 +00:00
Benjamin Jackson e6b203f184 refactor(Core/World): Move various worldstate related functions to worldstate class. (#22086) 2025-05-09 12:29:09 +02:00
avarishd 19d1595fc1 fix(DB/Creature): Remove Wrath Enforcer damage requirement (#22065) 2025-05-09 12:28:26 +02:00
Jelle Meeus 2ad7cccb0a fix(Core/Spells): Heart of the Crusader (#22070) 2025-05-09 11:15:03 +01:00
blinkysc 8c727c5485 fix(Scripts/SunwellPlateau): Ensure Kil'jaeden encounter resets correctly on evade (#22006) 2025-05-07 10:42:49 +02:00
Andrew 69a16b0b59 fix(Scripts/SunwellPlateau): Kiljaeden shouldnt interrupt Darkness of… (#21982) 2025-05-07 10:41:08 +02:00
avarishd 93f08a8a70 Revert "fix(Core/Spells): Allow glyphed PS to be casted while Seduced… (#22067) 2025-05-06 18:19:09 +01:00
github-actions[bot] f07142b359 chore(DB): import pending files
Referenced commit(s): da5c98e51f
2025-05-05 19:23:10 +00:00
Rocco Silipo da5c98e51f fix(DB/Creature) Havenshire Horses now have a blizz-like behaviour when dismounted or die. (#22059) 2025-05-05 21:21:59 +02:00
avarishd 041d39279f fix(Core/Spells): Allow glyphed PS to be casted while Seduced (#22047)
While having Glyph of Pain Suppression the player now (correctly) can cast it while being charmed.
2025-05-05 20:18:30 +01:00
Tereneckla a8b982dca8 refactor(Core/AI) don't add currentTarget to the front of the SelectTargetList for MaxThreat/Random (#21965) 2025-05-05 20:17:10 +01:00
github-actions[bot] 2772da9bf2 chore(DB): import pending files
Referenced commit(s): 90fce27c83
2025-05-04 23:14:00 +00:00
avarishd 8420346d94 fix(DB/Conditions): Quest 'Harp on This!' not allowing interaction wi… (#22051) 2025-05-05 00:13:34 +01:00
avarishd 64d7deec6e fix(DB/Conditions): Gather Lumber not despawning Coldwind Tree GOs (#22050) 2025-05-05 00:13:26 +01:00
github-actions[bot] 2271b88f6e chore(DB): import pending files
Referenced commit(s): b3735c9d5c
2025-05-04 23:13:03 +00:00
avarishd 90fce27c83 fix(DB/Custom): UP Avenging Spirit's Wither should stack from multip… (#22056) 2025-05-05 00:12:54 +01:00
avarishd b3735c9d5c fix(Scripts/CoS): First trio transforming on low HP (#22055)
Culling of Stratholme after defeating Salramm the Fleshcrafter the following npcs will now have their health at max:
- Infinite Adversary
- Infinite Hunter
- Infinite Agent
2025-05-05 00:12:00 +01:00
github-actions[bot] e21f80c379 chore(DB): import pending files
Referenced commit(s): 8b773e8691
2025-05-04 12:24:03 +00:00
avarishd 8b773e8691 fix(DB/Formations): Naxxramas - Embalming Slime (#22046) 2025-05-04 13:22:59 +01:00
Jelle Meeus 297f16820e fix(Core/Player): smooth energy regeneration with SPELL_AURA_MOD_POWER_REGEN_PERCENT mods (#22041)
Co-authored-by: r4dish <ovitnez@gmail.com>
2025-05-04 13:20:59 +01:00
github-actions[bot] 3643d80ecf chore(DB): import pending files
Referenced commit(s): b6b05867f5
2025-05-04 07:01:17 +00:00
Jelle Meeus b6b05867f5 fix(DB/GameObject): place Alchemy Lab on the Alchemy Table (#22045) 2025-05-04 09:00:15 +02:00
github-actions[bot] 0c476619d9 chore(DB): import pending files
Referenced commit(s): 7097d3a2e1
2025-05-03 12:42:11 +00:00
Tereneckla 7097d3a2e1 fix(DB/Spells) Thunderfury does not stack with Infected Wounds/Thunderclap/Icy Touch anymore (#22035)
Thundefurry (spell) no longer stacks with following spells: Cripple, Thunder Clap, Earth Shock, Chilled, Frost Fever, Infected Wounds and Judgements of the Just
2025-05-03 13:33:23 +01:00
Tereneckla 338acf7c41 refactor(Scripts/BlackTemple) remove tanks from Fatal Attraction after setting the target amount (#22038) 2025-05-03 02:41:17 +01:00
github-actions[bot] b9704d4fa1 chore(DB): import pending files
Referenced commit(s): 41a1612283
2025-05-01 15:16:17 +00:00
Rocco Silipo 41a1612283 fix (DB/Creature) The Horses' pack and the single horse now have a path and jump the fence. (#22033) 2025-05-01 17:15:16 +02:00
Jelle Meeus 8358e17ac1 Revert "Fix(Core/Player): Energy regen rate bonuses (#20321)" (#22032) 2025-04-30 20:54:37 -03:00
github-actions[bot] 8797e8ad28 chore(DB): import pending files
Referenced commit(s): b2a810f96c
2025-04-30 13:47:36 +00:00
Jelle Meeus b2a810f96c chore(Core/Spells): move db spell_dbc corrections to SpellInfoCorre… (#21819) 2025-04-30 14:46:36 +01:00
blinkysc f1751c0c18 fix(Scripts/SunwellPlateau): Ensure proper reset for Kil'jaeden encounter (#22024)
Kil'jaeden will now properly reset
2025-04-30 03:47:19 +01:00
blinkysc 0bb8e3cd0c fix(Scripts/SunwellPlateau): Dark Fiends should use threat table and not deal melee damage (#21991) 2025-04-30 02:27:19 +01:00
Benjamin Jackson 5686f1e87a fix(Core/Creature): Implement respond to call for help faction flag. (#21959) 2025-04-30 02:19:58 +01:00
Tereneckla d8bc1d1797 fix(Script/Spell) exclude original target from glyph of holy light (#22002)
Glyph of Holy Light no longer applies (10%) to the target
2025-04-30 02:17:45 +01:00
Jelle Meeus 775b9ff29a fix(Core/Player): correct SpellPriority logic (#21052)
Co-authored-by: killerwife <killerwife@gmail.com>
Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>
2025-04-30 02:09:20 +01:00
github-actions[bot] e45b04daec chore(DB): import pending files
Referenced commit(s): 23dd832b47
2025-04-30 00:46:47 +00:00
Tereneckla 1144c05c21 fix(DB/Spells) add K'iru's Song of Victory to Intellect and Stamina aura stack groups (#22022)
K'iru's Song of Victory no longer stacks with Intellect and Stamina buff(s)
2025-04-30 01:46:23 +01:00
github-actions[bot] 23dd832b47 chore(DB): import pending files
Referenced commit(s): b7f75c4673
2025-04-30 00:45:42 +00:00
Tereneckla d86caa05db fix(DB/Spells) add Battle Squawk to Melee Haste aura stack group (#22021)
Battle Squawk no longer stacks melee haste buff(s)
2025-04-30 01:44:49 +01:00
github-actions[bot] b7f75c4673 chore(DB): import pending files
Referenced commit(s): e44b8ed939
2025-04-30 00:44:38 +00:00
chaosua e44b8ed939 fix(db/locale): Added missing Russian translation for the (Shaman) Totems (#22012) 2025-04-30 01:43:31 +01:00
github-actions[bot] 1f632c868d chore(DB): import pending files
Referenced commit(s): 372c159f00
2025-04-30 00:25:03 +00:00
Tereneckla 372c159f00 fix(Scripts/SunwellPlateau): exclude tank from flame sear (#22014)
Grand Warlock Alythess (Twin from Sunwell Plateau) will no longer target the tanks when using Flame Sear
2025-04-30 01:24:02 +01:00
github-actions[bot] dcf6d6e838 chore(DB): import pending files
Referenced commit(s): 983ca0fbd5
2025-04-29 15:56:41 +00:00
Rocco Silipo 983ca0fbd5 fix(DB/Creature) Solve a wrong SmartAI update in my previous PR. (#22020) 2025-04-29 17:50:20 +02:00
github-actions[bot] d2be4d9b95 chore(DB): import pending files
Referenced commit(s): 025b579822
2025-04-29 13:42:22 +00:00
Rocco Silipo 025b579822 fix(DB/Creature) Solve various issues on dk starting area (phase 4). (#22017) 2025-04-29 15:40:46 +02:00
NoxMax 8ba0b7a4b2 fix(Core/worldserver.conf) Clarification for AllowTwoSide.Interaction.Auction (#22013) 2025-04-29 13:41:10 +01:00
Tereneckla 08ca9eb3f2 fix(Scripts/SunwellPlateau): Make Twin special abilities target one of the highest 6 in threat of the other twin (#21964) 2025-04-27 09:34:29 +02:00
github-actions[bot] 40a6d667aa chore(DB): import pending files
Referenced commit(s): 30e81f8d67
2025-04-26 18:45:53 +00:00
Rocco Silipo 30e81f8d67 fix (DB/Creature) Citizen of New Avalon inside Scarlet Tavern now remain dead. (#21996) 2025-04-26 20:44:51 +02:00
sudlud efe81e16db fix(deps/PackageList.txt): update for current state of dependencies (#21968)
Updated many depedencies for PackageList.txt
Co-authored-by: blinkysc <37940565+blinkysc@users.noreply.github.com>
2025-04-26 19:39:50 +01:00
Tereneckla 7503a24266 fix(Core/Player) internally handle expertise as float (#21967)
The core will no longer truncated the expertise (from float to int) value on the server side.
2025-04-26 19:37:05 +01:00
Tereneckla c1d42d2c36 fix (Script/Gruul) Kiggler polymorph targets his tank (#21966)
Kiggler the Crazed now targets the tank when casting Greater Polymorph
2025-04-26 19:35:02 +01:00
Benjamin Jackson da55f05cfc refactor(Core/WorldState): Initial addition of world state definition file. (#21875)
Many world states had their enums from script's header and hardcoded values to their respective header file (WorldStateDefines.h)
Co-authored-by: Jelle Meeus <sogladev@gmail.com>
2025-04-26 19:31:30 +01:00
blinkysc d23e61b721 fix(SmartAI): Ensure immediate combat engagement (#21854)
NPCs will stop their current waypoint and start combat.
2025-04-26 19:24:35 +01:00
Quentin Dawans b8b5a4ea1c chore(Core/Auth): align mysql ping log level and name to worldserver (#21986) 2025-04-25 20:20:37 -03:00
github-actions[bot] f35876968f chore(DB): import pending files
Referenced commit(s): 7a84999ef1
2025-04-25 21:17:54 +00:00
blinkysc 7a84999ef1 fix(Scripts/SunwellPlateau): Make Blue Dragon Breath Haste apply 25% haste effect (#21984)
Co-authored-by: Jelle Meeus <sogladev@gmail.com>
2025-04-25 23:16:48 +02:00
blinkysc e8453a1968 fix(Scripts/SunwellPlateau): Make Kil'jaeden's Sinister Reflections clone the same player (#21949) 2025-04-25 17:12:07 +02:00
github-actions[bot] d8d4999c3e chore(DB): import pending files
Referenced commit(s): e84c837ae6
2025-04-25 06:45:25 +00:00
Andrew e84c837ae6 fix(DB/SAI): Despawn Mu'ru Void Spawns on evade (#21989) 2025-04-25 08:44:20 +02:00
Tereneckla e6eb02a09e fix (Script/SWP) use enrage function for brutallus enrage (#21987) 2025-04-24 21:05:06 +02:00
blinkysc dd43a0cfdf fix(Scripts/SunwellPlateau): Fix Entropius wrong spell ID and timers (#21970) 2025-04-24 11:49:38 +02:00
Jelle Meeus 38ff8bae28 fix(Core/Maps): Do not allow entering an instance if the player is (#21973)
Co-authored-by: Gildor <gildor55@gmail.com>
2025-04-23 19:59:32 -03:00
blinkysc 7cae4f5a16 fix(Script/Sunwell): Use raycast to prevent Singularity throwing players through walls (#21928) 2025-04-23 23:45:25 +02:00
blinkysc f1df2c21d2 chore(Deps/Zlib): Upgrade zlib to 1.3.1 (#21940) 2025-04-21 20:47:05 +02:00
Benjamin Jackson 9ced420849 fix(Core/AI): Ignore PvP flagged players for aggressive pets if owner is not PvP flagged. (#21922) 2025-04-21 09:40:56 +02:00
github-actions[bot] 3baadd0637 chore(DB): import pending files
Referenced commit(s): 6f8566d838
2025-04-20 19:37:39 +00:00
Benjamin Jackson 6f8566d838 fix(DB): Add and correct arena season rewards. (#21960) 2025-04-20 21:36:38 +02:00
github-actions[bot] 384577b923 chore(DB): import pending files
Referenced commit(s): 4c19d51286
2025-04-20 09:48:57 +00:00
Benjamin Jackson 4c19d51286 fix(DB/Loot): Consolidate Sunwell trash recipe drops into one reference table and update chance. (#21962) 2025-04-20 11:47:55 +02:00
Jelle Meeus 534d07ec1b fix(Core/Spells): Suppress Crystal Spire of Karabor procs (#21961) 2025-04-19 19:12:17 -03:00
Anton Popovichenko 7162294f1b fix(Deps/Boost): Fix build for boost 1.88. (#21952) 2025-04-19 21:01:40 +02:00
github-actions[bot] 0ddce17a4f chore(DB): import pending files
Referenced commit(s): 68558e8626
2025-04-19 11:16:33 +00:00
sudlud 68558e8626 fix(Scripts/Noblegarden): fix bunny transformation on egg looting (#21957) 2025-04-19 13:15:33 +02:00
Andrew 704f7f0705 fix(Scripts/SunwellPlateau): Correct Felmyst landing pos variable names (#21954) 2025-04-19 10:01:46 +02:00
NoxMax cc05127276 fix(Battlefield/WG): set default maxplayer 120, minlevel 75 (#21937) 2025-04-19 06:59:06 +02:00
Vincent Vanclef 575283f46c fix(Core/AutobroadcastMgr): correctly check for existing textId in SendWorldAnnouncement (#21911) 2025-04-17 21:39:05 +02:00
Andrew 8775bd85c4 fix(Scripts/SunwellPlateau): Fix Alythess not casting Flame Sear in p… (#21948) 2025-04-17 10:01:18 -03:00
github-actions[bot] 6ab0acb8ff chore(DB): import pending files
Referenced commit(s): a79c725431
2025-04-17 12:52:25 +00:00
Rocco Silipo a79c725431 fix(DB/Creature): Some SwP packs are now in formation. (#21951) 2025-04-17 09:51:20 -03:00
github-actions[bot] c43f435d10 chore(DB): import pending files
Referenced commit(s): 0d30816602
2025-04-17 08:09:37 +00:00
Andrew 0d30816602 fix(Scripts/SunwellPlateau): Void Sentinels spawn at floor level (#21946) 2025-04-17 10:08:35 +02:00
Anton Popovichenko c66972b900 fix(Core/Scripts): Fix heap-use-after-free in Fingers of Frost proc handler (#21943) 2025-04-17 09:27:49 +02:00
blinkysc f24e54d037 fix(Scripts/SunwellPlateau): Limit Kil'jaeden's Armageddon ability (#21932) 2025-04-16 22:33:10 -03:00
blinkysc 0fc912d867 fix(Script/Sunwell): M'uru height check (#21942) 2025-04-16 18:24:29 +02:00
github-actions[bot] 35d593ecb5 chore(DB): import pending files
Referenced commit(s): 5b957ab403
2025-04-15 22:03:43 +00:00
blinkysc 5b957ab403 fix(Script/Sunwell): Adjust Singularity behaviors (#21919) 2025-04-16 00:02:44 +02:00
github-actions[bot] fd62c99670 chore(DB): import pending files
Referenced commit(s): b4165d3240
2025-04-15 17:43:13 +00:00
blinkysc b4165d3240 fix(DB/Quest) Return to Thrallmar has proper prerequisite quest Mission: Gateways Murketh and Shaadraz (#21856) 2025-04-15 19:42:11 +02:00
github-actions[bot] 273251054c chore(DB): import pending files
Referenced commit(s): 607f0579e7
2025-04-14 16:17:55 +00:00
blinkysc 607f0579e7 fix(Scripts/SunwellPlateau): Move Dark Fiend from SmartAI to ScriptedAI with corrected despawn behavior (#21910) 2025-04-14 18:16:54 +02:00
Localhost 20584bc0a6 fix(Scripts/Creature): Crash for npc_captured_beryl_sorcerer by secur… (#21889)
Co-authored-by: localhost <rom.badanin@gmail.com>
2025-04-14 06:53:12 -03:00
github-actions[bot] e673e095a6 chore(DB): import pending files
Referenced commit(s): 7eb5f20617
2025-04-13 18:53:19 +00:00
Benjamin Jackson 7eb5f20617 fix(DB/Creature): Remove unnecessary Netherwing targetting dummy creatures. (#21867) 2025-04-13 14:51:50 -04:00
github-actions[bot] e43550a12c chore(DB): import pending files
Referenced commit(s): d68bf36762
2025-04-13 18:44:27 +00:00
blinkysc d68bf36762 fix(Scripts/SunwellPlateau): Add taunt immunity to Entropius (#21918) 2025-04-13 20:43:28 +02:00
github-actions[bot] 98ea3b331e chore(DB): import pending files
Referenced commit(s): d4dda607b4
2025-04-13 17:26:11 +00:00
Benjamin Jackson d4dda607b4 fix(DB/Creature): Add model data for Entropius display. (#21920) 2025-04-13 14:25:10 -03:00
github-actions[bot] 3c2ccc5031 chore(DB): import pending files
Referenced commit(s): ab8c09215c
2025-04-13 15:00:09 +00:00
Rocco Silipo ab8c09215c fix(DB/Creature) Add Verified Build. (#21915) 2025-04-13 16:59:07 +02:00
天鹿 3f418ca3ee fix(Scripts/SunwellPlateau): Entropius' darkness spawn height (#21914) 2025-04-13 14:28:25 +02:00
github-actions[bot] 00f69bdcb7 chore(DB): import pending files
Referenced commit(s): 8470711e72
2025-04-13 11:57:18 +00:00
Rocco Silipo 8470711e72 fix(DB/Creature) Locate more Death Knight Initiates on their sniffed spawn points. (#21912) 2025-04-13 13:56:18 +02:00
Andrew a2ccdba158 fix(Scripts/SunwellPlateau): Prevent spell casting if nearing air phase (#21873) 2025-04-12 19:43:19 +02:00
github-actions[bot] 651ac9336d chore(DB): import pending files
Referenced commit(s): d75073a941
2025-04-12 16:39:11 +00:00
Jelle Meeus 4b64c4ed25 fix(Core/Player): Force UpdateZone on resurrect to apply Zone auras (#21888) 2025-04-12 13:38:32 -03:00
Rocco Silipo d75073a941 fix(DB/Creature): Implement Crusader assaults during the dk chain quest (phase 64). (#21881) 2025-04-12 13:38:08 -03:00
blinkysc 613f09199c fix(Scripts/SunwellPlateau): Correct timing for Eredar Twins (#21894) 2025-04-12 13:12:04 -03:00
github-actions[bot] df17717b98 chore(DB): import pending files
Referenced commit(s): fef1cc1417
2025-04-12 15:31:29 +00:00
blinkysc fef1cc1417 fix(Scripts/SunwellPlateau): Add Blink with Nove Arch Mage (#21904) 2025-04-12 17:30:29 +02:00
Rocco Silipo 329ba16e8a Fix(Script) Remove a Trailing whitespace from brutallus script. (#21909) 2025-04-12 11:03:48 -03:00
blinkysc 7a9a466f1b fix(Scripts/SunwellPlateau): Set Brutallus corpse despawn timer to 3 minutes (#21896) 2025-04-12 09:49:13 -03:00
Rocco Silipo f903a73051 fix(Script/SunwellPlateau): Kil'jaeden now has a more offy-like last phase. (#21907) 2025-04-12 09:22:04 -03:00
github-actions[bot] f2577cabf2 chore(DB): import pending files
Referenced commit(s): bd83226d52
2025-04-11 19:04:54 +00:00
Jelle Meeus bd83226d52 fix(DB/Creature): Add Shadow Bolt Volley to Void Spawn's spells (#21898) 2025-04-11 21:03:49 +02:00
github-actions[bot] d67daf8e53 chore(DB): import pending files
Referenced commit(s): 12693ff3f2
2025-04-11 18:46:31 +00:00
Jelle Meeus 530bc7349c fix(DB/SpellCustomAttr): make Spell Fury spellstealable (#21897) 2025-04-11 20:45:59 +02:00
blinkysc 12693ff3f2 fix(Scripts/SunwellPlateau): Correct Singularity behavior in Entropius encounter (#21892) 2025-04-11 20:45:28 +02:00
github-actions[bot] 3f08610f84 chore(DB): import pending files
Referenced commit(s): 52aa16d3cf
2025-04-10 21:52:18 +00:00
Rocco Silipo 52aa16d3cf fix(DB/Creature): Hand of the Deceiver is no longer immune to silence and stun. (#21890) 2025-04-10 18:51:16 -03:00
github-actions[bot] 7cc26e44c1 chore(DB): import pending files
Referenced commit(s): 78fbc77be2
2025-04-10 08:09:51 +00:00
Ryan Turner 78fbc77be2 fix (db/Conditions) - Kael'thas Sunstrider's Heroic loot ref will drop the correct recipes to their respective proffesion. (#21884) 2025-04-10 10:08:50 +02:00
Jelle Meeus b828f7a025 fix(Scripts/BlackTemple): Shahraz Fatal Attraction number of targets can be fewer than 3 (#21859) 2025-04-09 13:17:18 +02:00
Jelle Meeus 756c6c9001 fix(Scripts/BlackTemple): Shahraz Fatal Attraction Teleport (#21858) 2025-04-09 11:34:53 +02:00
github-actions[bot] cf67c48a1f chore(DB): import pending files
Referenced commit(s): c9595ed88b
2025-04-09 07:27:15 +00:00
Rocco Silipo c9595ed88b fix(DB/Loot) Add gold drop, Netherweave Cloth and a drop chance for Gan'arg Analyzer. (#21883) 2025-04-09 09:26:14 +02:00
Tereneckla dda1fe87ca feat(Core/World) add an error message when closing due to not finding the starting area map files (#21879)
Server no longer will close without displaying an error message.
2025-04-08 22:13:26 +01:00
github-actions[bot] 4089f652c9 chore(DB): import pending files
Referenced commit(s): bb66418929
2025-04-08 16:02:41 +00:00
Rocco Silipo bb66418929 fix(DB/Creature) Solve some npc issues on DK starting area (Phase 64). (#21848) 2025-04-08 18:01:39 +02:00
Andrew 1355762160 fix(Scripts/SunwellPlateau): Felmyst should choose the closest side (#21865) 2025-04-07 06:58:21 -03:00
github-actions[bot] b5931cd53a chore(DB): import pending files
Referenced commit(s): 4e64426644
2025-04-05 22:37:16 +00:00
Jelle Meeus 4e64426644 fix(DB/CreatureAddon): Remove auras Sunwell Radiance (#21857)
Removes all fragements of `Sunwell Radiance` aura
2025-04-05 23:32:52 +01:00
github-actions[bot] c7eca94e18 chore(DB): import pending files
Referenced commit(s): bee1c4b809
2025-04-05 21:03:25 +00:00
Jelle Meeus bee1c4b809 fix(DB/GossipMenuOption): Swap Exarch Nasuun Anvil and Harbor progress (#21864) 2025-04-05 23:02:28 +02:00
github-actions[bot] c91b6d0e2d chore(DB): import pending files
Referenced commit(s): 51f0495621
2025-04-04 14:18:37 +00:00
Andrew 51f0495621 fix(Scripts/SunwellPlateau): Fix Darkness spawning midair (#21851) 2025-04-04 16:17:31 +02:00
github-actions[bot] ee724b0f38 chore(DB): import pending files
Referenced commit(s): f374136cee
2025-04-03 20:36:33 +00:00
Jelle Meeus f374136cee fix(DB/SpellCooldownOverrides): remove overrides of player spells (#21850) 2025-04-03 22:35:33 +02:00
blinkysc f8ab473f9e fix(Script/ZulAmen) Hexlord now has fallback behavior as warrior (#21829) 2025-04-03 20:37:48 +02:00
Andrew ac6dea6df3 fix(Scripts/Commands): Fix crash in unstuck command (#21846) 2025-04-02 19:22:55 -03:00
github-actions[bot] 3d561fcd5b chore(DB): import pending files
Referenced commit(s): e39ebbbbf6
2025-04-02 20:27:33 +00:00
Jelle Meeus f937ed0dcd fix(Scripts/SunwellPlateau): Add Moorba's teleporter gossip (#21845)
Co-authored-by: killerwife <killerwife@gmail.com>
2025-04-02 22:26:52 +02:00
github-actions[bot] e39ebbbbf6 chore(DB): import pending files
Referenced commit(s): e5f67c52eb
2025-04-02 20:26:15 +00:00
Jelle Meeus e5f67c52eb fix(DB/SpellCooldownOverrides): remove overrides of player spells (#21844) 2025-04-02 22:25:16 +02:00
github-actions[bot] 0de3f63ce5 chore(DB): import pending files
Referenced commit(s): d9aec99a34
2025-04-02 19:45:34 +00:00
Jelle Meeus d9aec99a34 fix(Scripts/ZulAman): Add Beast Tamer missing abilities (#21821)
Co-authored-by: killerwife <killerwife@gmail.com>
Co-authored-by: anonxs <anonxs@web.de>
2025-04-02 21:44:38 +02:00
github-actions[bot] 1e28939fab chore(DB): import pending files
Referenced commit(s): 19092fa5e3
2025-04-02 14:56:43 +00:00
Smirnov Sergey 21a94413dc fix(DB/Conditions) Requires Spirit Calling Aura to loot Lesser Nether Drake Spirit (QuestID: 10853) (#21841)
Quest `Spirit Calling` now only will drop `Lesser Nether Drake Spirit` when the `Spirit Calling Totems'`s aura (`38778`) is on the player(s). 

To-do: `If recharges are finished quest giver should also refill your stock, currently it doesn't.`
2025-04-02 15:56:07 +01:00
github-actions[bot] 19092fa5e3 chore(DB): import pending files
Referenced commit(s): cc129c3d79
2025-04-02 14:55:35 +00:00
Rocco Silipo cc129c3d79 fix(DB/Creature) Citizen of New Avalon now have a more blizzlike behaviour. (#21842) 2025-04-02 16:54:32 +02:00
github-actions[bot] 274c31d403 chore(DB): import pending files
Referenced commit(s): ad580a6190
2025-04-01 17:49:45 +00:00
Rocco Silipo ad580a6190 fix(DB/Creature) Shadow Image now only use one ability at a time. (#21834) 2025-04-01 19:48:43 +02:00
github-actions[bot] 2bf5472ce6 chore(DB): import pending files
Referenced commit(s): 441e55f7dc
2025-04-01 17:15:21 +00:00
Jelle Meeus 441e55f7dc fix(DB/SpellCooldownOverrides): Add Data from SmartAI timers (#21830) 2025-04-01 19:14:20 +02:00
github-actions[bot] 87863b9741 chore(DB): import pending files
Referenced commit(s): cba329c8a8
2025-04-01 16:36:53 +00:00
Rocco Silipo cba329c8a8 fix(DB/Creature) Reduce Dark Fiend range to explode. (#21840) 2025-04-01 18:35:46 +02:00
github-actions[bot] be4f3fdc8b chore(DB): import pending files
Referenced commit(s): 521802382a
2025-04-01 16:22:35 +00:00
Rocco Silipo 521802382a fix(DB/Creature) Add various immunities to Void Sentinel, Berserkers and Fury Mages. (#21839) 2025-04-01 18:21:35 +02:00
github-actions[bot] 90f9287857 chore(DB): import pending files
Referenced commit(s): 4c42bbc9c7
2025-04-01 15:53:12 +00:00
Smirnov Sergey 4c42bbc9c7 Added/Corrected missing russian quest locale and fix wrong russian locale. #2 (#21837)
Multiple russian translations for:
- Quests 
- Quests Request Items
- Quests Offer Reward

Progression of: https://github.com/azerothcore/azerothcore-wotlk/commit/c9464baa459089897a67455224106443092eb2b2
2025-04-01 16:52:07 +01:00
github-actions[bot] b03006aa1d chore(DB): import pending files
Referenced commit(s): 277aed596e
2025-04-01 09:07:15 +00:00
Rocco Silipo 1f3a90a41e fix(DB/Creature) Solve some Dark Fiend's behaviour. (#21818) 2025-04-01 11:06:29 +02:00
Rocco Silipo 277aed596e fix(Script/Sunwell) Solve some Eredar Twins' timer issues. (#21835) 2025-04-01 11:06:11 +02:00
github-actions[bot] 3c1f42245c chore(DB): import pending files
Referenced commit(s): 9734d1b4cc
2025-04-01 01:14:50 +00:00
blinkysc 9734d1b4cc fix(DB/Quest) Gammerita, Mon! Now has no quest requirement (#21833)
Quest: "Gammerita, Mon!" no longer requires "Snapjaws, Mon!" (removed pre-requesite)
2025-04-01 02:13:51 +01:00
github-actions[bot] d99295fb18 chore(DB): import pending files
Referenced commit(s): b3622bbe5e
2025-04-01 00:31:35 +00:00
Jelle Meeus b3622bbe5e fix(DB/Creature): set Charm immune (mechanic_immune_mask) for SWP Trash demons (#21826) 2025-03-31 21:30:35 -03:00
github-actions[bot] 369a43110d chore(DB): import pending files
Referenced commit(s): 3ede7bd944
2025-03-31 23:49:46 +00:00
Smirnov Sergey 3ede7bd944 fix(DB/Creature) fix Bannok Grimaxe's Axe Toss has a missing model (#21780)
Co-authored-by: sudlud <sudlud@users.noreply.github.com>
2025-04-01 01:48:40 +02:00
github-actions[bot] dafd307088 chore(DB): import pending files
Referenced commit(s): d724f43d55
2025-03-31 22:08:53 +00:00
Rocco Silipo d724f43d55 Fix(DB/Loot) Remove Sunglow Vest from Eredar Twins loot. (#21831) 2025-04-01 00:07:47 +02:00
github-actions[bot] fdf8517566 chore(DB): import pending files
Referenced commit(s): c9464baa45
2025-03-31 19:03:28 +00:00
Smirnov Sergey c9464baa45 fix(DB/Quest) Added missing russian quest locale and fix wrong russian locale. #1 (#21758)
Multiple russian translations for:
- Quests 
- Quests Request Items
- Quests Offer Reward
- Quest Greeting
2025-03-31 20:02:26 +01:00
blinkysc 5562d722d6 fix(Warden) Warden Anti-Cheat Timing Attack Protection MAC (#21824) 2025-03-31 18:50:48 +02:00
blinkysc f1f56bf1db fix(Warden) Warden Anti-Cheat Timing Attack Protection WINDOWS (#21823) 2025-03-31 18:50:28 +02:00
github-actions[bot] 555021ae1b chore(DB): import pending files
Referenced commit(s): 6d23ecbe9b
2025-03-31 14:40:11 +00:00
Rocco Silipo 6d23ecbe9b fix(DB/Creature) Locate some Death Knight Initiates on their sniffed spawn points. (#21825) 2025-03-31 16:39:05 +02:00
Andrew 9db6fd53c1 fix(Scripts/SunwellPlateau): M'uru should be passive (#21822) 2025-03-31 05:17:14 +02:00
github-actions[bot] 2071eaa591 chore(DB): import pending files
Referenced commit(s): 0baa8bedb1
2025-03-30 17:30:19 +00:00
Ryan Turner 0baa8bedb1 fix(db/CreatureLoot) - Removal of "Rod of Lianthe" and "Nightmare Vine" from "Eclipsion Hawkstrider"'s Loot (#21816) 2025-03-30 19:29:19 +02:00
github-actions[bot] 08696f9aad chore(DB): import pending files
Referenced commit(s): d30306c250
2025-03-30 16:47:38 +00:00
Rocco Silipo d30306c250 fix(DB/Creature) Remove Immune to Distract Flag on M'uru. (#21815) 2025-03-30 18:46:37 +02:00
github-actions[bot] cb68845229 chore(DB): import pending files
Referenced commit(s): 88f3145b31
2025-03-30 16:42:56 +00:00
Rocco Silipo 88f3145b31 fix(DB/Creatures) Fix various issues on DK starting area (phase 1 and 64). (#21814) 2025-03-30 18:41:53 +02:00
天鹿 0cb6a03acf Fix(Core/Wintergrasp): Retrieve the missing Tower Cannon (#21752)
Co-authored-by: sudlud <sudlud@users.noreply.github.com>
2025-03-29 21:03:13 +01:00
Rocco Silipo 9d918f553c fix(Script/Sunwell) Edit Felmyst timers and move emote in the right spell cast. (#21809) 2025-03-29 08:58:54 -03:00
github-actions[bot] d549776335 chore(DB): import pending files
Referenced commit(s): d21dd6d0bd
2025-03-29 10:19:43 +00:00
Rocco Silipo b384f4cc66 fix(DB/Creature) Southshore Assassins now despawn when OOC for 30 seconds. (#21757) 2025-03-29 11:18:59 +01:00
Rocco Silipo d21dd6d0bd fix(DB/Creature) Remove Random in Radius and edit orientation for some Scarlet Peasants. (#21797) 2025-03-29 11:18:43 +01:00
github-actions[bot] 1a9000f636 chore(DB): import pending files
Referenced commit(s): 80627efd6f
2025-03-29 08:36:26 +00:00
Ryan Turner 80627efd6f (db/Creautre) - Adds Heroic version of Brann Bronzebeard to Halls of Stone (#21755) 2025-03-29 09:35:27 +01:00
github-actions[bot] 0ec26eba7c chore(DB): import pending files
Referenced commit(s): cf0bcf8616
2025-03-28 16:25:19 +00:00
Rocco Silipo cf0bcf8616 fix(DB/Condition) Scarlet Cannons now require Massacre at Light’s Point to be used. (#21796) 2025-03-28 17:24:16 +01:00
Jelle Meeus 094c15a323 fix(Core/Spells): implement SPELL_ATTR7_TREAT_AS_NPC_AOE (#21787)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
2025-03-28 11:18:40 +01:00
github-actions[bot] e6615c8b3a chore(DB): import pending files
Referenced commit(s): 9c3418d482
2025-03-27 17:43:31 +00:00
blinkysc 9c3418d482 fix(DB/Creature) Set Kirtonos the Herald to level 60 (#21784)
Kirtonos the Herald corrected level from 63 to 60
2025-03-27 17:42:29 +00:00
github-actions[bot] fe8dcf9765 chore(DB): import pending files
Referenced commit(s): c528ce61cd
2025-03-27 15:42:09 +00:00
Rocco Silipo c528ce61cd fix(DB/SunwellPlateau) M'uru should Hard Reset. (#21791) 2025-03-27 16:41:06 +01:00
Andrew 242311b7b1 fix(Scripts/SunwellPlateau): Update twin timers and Flame Sear target… (#21777) 2025-03-26 09:18:32 +01:00
github-actions[bot] 71c3371437 chore(DB): import pending files
Referenced commit(s): bec7a4e3fb
2025-03-25 19:36:13 +00:00
blinkysc bec7a4e3fb fix(DB/SmartScript) Alumeth the Ascended will now repeat cast Psychicscream around 20 seconds (#21772) 2025-03-25 20:35:15 +01:00
Andrew 761cd7e6ad fix(Scripts/SunwellPlateau): Fix Alythess chasing players after casting (#21773) 2025-03-25 18:48:00 +01:00
github-actions[bot] c906261209 chore(DB): import pending files
Referenced commit(s): ac927769fc
2025-03-25 13:10:46 +00:00
Rocco Silipo ac927769fc fix(DB/Creature) Eredar Twins should be immune to taunt. (#21770) 2025-03-25 14:09:48 +01:00
github-actions[bot] 28bf680a99 chore(DB): import pending files
Referenced commit(s): 4e9148799f
2025-03-24 17:17:24 +00:00
Andrew 4e9148799f fix(Scripts/SunwellPlateau): Remove despawn on evade flag from KJ and… (#21753) 2025-03-24 18:16:22 +01:00
github-actions[bot] d5bee6e2a3 chore(DB): import pending files
Referenced commit(s): 62ca88a2b4
2025-03-22 16:17:17 +00:00
Rocco Silipo 62ca88a2b4 fix(DB/Creature) Dark Fiends now despawn when dispelled. (#21749) 2025-03-22 17:16:18 +01:00
Andrew e23e4dfd52 fix(Scripts/SunwellPlateau): Fix twin emotes in phase 2 (#21751) 2025-03-22 14:29:55 +01:00
github-actions[bot] 8acbd9a889 chore(DB): import pending files
Referenced commit(s): 0210f617c1
2025-03-22 12:55:18 +00:00
Rocco Silipo 0210f617c1 fix(Creature/Formations) Volatile Fiend Packs now are in formation. (#21750) 2025-03-22 13:54:21 +01:00
天鹿 ae76703b75 fix(Scripts/SunwellPlateau): M'Uru ability DARKNESS now spawns dispellable skulls (#21747) 2025-03-22 09:13:08 +01:00
github-actions[bot] ca0b851487 chore(DB): import pending files
Referenced commit(s): 90866f1d28
2025-03-22 08:04:20 +00:00
Jelle Meeus 6ed7e0fe5c fix(Scripts/SunwellPlateau): Felmyst Strafe strafe spells (#21745)
Co-authored-by: killerwife <killerwife@gmail.com>
2025-03-22 09:04:00 +01:00
Andrew 90866f1d28 fix(Scripts/SunwellPlateau): Implement twins boundary wipe mechanic (#21746) 2025-03-22 09:03:22 +01:00
p-tkachuk 7aced2f62e fix(Scripts/Nexus): Magus Telestra death (#21744)
Co-authored-by: Hexadecimal <hexa@deci.mal>
2025-03-21 14:55:53 -03:00
github-actions[bot] 1707832e7a chore(DB): import pending files
Referenced commit(s): d666c9330c
2025-03-21 16:19:51 +00:00
sudlud d666c9330c fix(DB/Gameobject): Sniffed Values for 'SWP / MGT' spawns (#21699) 2025-03-21 17:18:53 +01:00
Andrew 3cbe976a4e fix(Scripts/SunwellPlateau): Vapor should chase the player targeted b… (#21740) 2025-03-21 09:00:17 +01:00
Rocco Silipo a0fc2a553c fix(Script/Boss) Decrease Kalecgos human form spawn timer. (#21738) 2025-03-20 18:28:57 -03:00
github-actions[bot] 77e497a49d chore(DB): import pending files
Referenced commit(s): 87effd1841
2025-03-19 22:44:10 +00:00
Rocco Silipo 87effd1841 fix(DB/Creature) Add formation for the the last pack before Kalecgos. (#21735) 2025-03-19 19:43:09 -03:00
Anton Popovichenko 9520b25155 fix(Core/Spell): Prevent Blink from causing character to fall through ground (#21537) 2025-03-19 17:46:00 +01:00
Andrew 5eee6bc383 fix(Scripts/SunwellPlateau): Increase delay before choosing lane and … (#21733) 2025-03-19 12:52:37 +01:00
github-actions[bot] 35d37a6f93 chore(DB): import pending files
Referenced commit(s): aa84cbc954
2025-03-19 08:16:39 +00:00
Jelle Meeus aa84cbc954 fix(Scripts/SunwellPlateau): Sathrovarr's Curse of Boundless Agony (#21730) 2025-03-19 09:15:38 +01:00
Jelle Meeus 7727a09dc8 fix(Scripts/Outland): add missing return if no target is found (#21731) 2025-03-18 16:39:55 +01:00
github-actions[bot] 3b90710e64 chore(DB): import pending files
Referenced commit(s): 83d9c6c763
2025-03-17 21:28:15 +00:00
kamenitxan 83d9c6c763 fix(DB/POI): update poi for Anthion's Old Friend quest with sniffed data (#20980) 2025-03-17 22:27:15 +01:00
github-actions[bot] 674cba3ad9 chore(DB): import pending files
Referenced commit(s): 76594b0292
2025-03-17 13:57:23 +00:00
p-tkachuk 76594b0292 fix(Scripts/Zuldrak) Npc: Blightguard; Spell: Scourge Disguise and related things (#21536)
Co-authored-by: Hexadecimal <hd@hd.hd>
Co-authored-by: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com>
Co-authored-by: Killyana <morphone1@gmail.com>
Co-authored-by: Hexadecimal <hexa@deci.mal>
Co-authored-by: sudlud <sudlud@users.noreply.github.com>
2025-03-17 14:56:23 +01:00
p-tkachuk c79c5b54fa fix(Scripts/AzjolNerub): Boss Herald Volazj - Insanity spell cast (#21287)
Co-authored-by: Hexadecimal <hd@hd.hd>
Co-authored-by: sudlud <sudlud@users.noreply.github.com>
2025-03-17 12:48:10 +01:00
github-actions[bot] 6f2bd587f5 chore(DB): import pending files
Referenced commit(s): a387282e69
2025-03-17 11:24:00 +00:00
p-tkachuk a387282e69 fix(DB/FISHING): Fix "Disarmed!" fishing quest (#21310)
Co-authored-by: Hexadecimal <hd@hd.hd>
2025-03-17 12:23:01 +01:00
github-actions[bot] 010d962e70 chore(DB): import pending files
Referenced commit(s): 6535a75121
2025-03-17 10:06:27 +00:00
Jelle Meeus 6535a75121 fix(Scripts/Spells): add warrior heroic strike daze bonus damage (#21650) 2025-03-17 11:04:31 +01:00
github-actions[bot] 5d406b9220 chore(DB): import pending files
Referenced commit(s): 84e4884d85
2025-03-16 20:06:51 +00:00
Pandeesh Groodanj 84e4884d85 fix(DB/Quest): Fixes missing prerequisite quest for "Pushed Too Far" (#21721)
Co-authored-by: Pandeesh Groodanj <dark.dog5483@fastmail.com>
2025-03-16 21:05:52 +01:00
github-actions[bot] 7185e94954 chore(DB): import pending files
Referenced commit(s): 71870c05c7
2025-03-16 19:30:59 +00:00
@cgrahamseven 71870c05c7 fix(DB/Core/Quests): Fix the quest "Load'er Up" (#20241)
Co-authored-by: cgrahamseven <chris.graham@protonmail.com>
Co-authored-by: sudlud <sudlud@users.noreply.github.com>
2025-03-16 20:29:57 +01:00
github-actions[bot] c3a888f684 chore(DB): import pending files
Referenced commit(s): 34d1402331
2025-03-16 19:26:30 +00:00
blinkysc 34d1402331 fix(DB/Halls of Lightning) Trash inside dungeon now drop [Relic of Ulduar] (#21713) 2025-03-16 20:25:31 +01:00
github-actions[bot] a776c764c6 chore(DB): import pending files
Referenced commit(s): 3bd493f152
2025-03-16 19:19:15 +00:00
blinkysc 3bd493f152 fix(DB/Halls of Stone) Trash inside dungeon now drops [Relic of Ulduar] (#21710) 2025-03-16 20:18:16 +01:00
github-actions[bot] fa273a9f28 chore(DB): import pending files
Referenced commit(s): 04b400447c
2025-03-16 08:28:42 +00:00
Pandeesh Groodanj 04b400447c fix(DB/Quest): Fixes the prerequisite quest for "A Job Undone" (#21714)
Co-authored-by: Pandeesh Groodanj <dark.dog5483@fastmail.com>
2025-03-16 09:27:42 +01:00
sudlud 4459afc98d fix(Core/Movement): Allow MoveFollow to not inherit speed of the target (#21711) 2025-03-15 21:47:11 +01:00
github-actions[bot] 92c666afb4 chore(DB): import pending files
Referenced commit(s): 77e6dbcf85
2025-03-15 16:06:19 +00:00
Jelle Meeus 77e6dbcf85 fix(Scripts/SunwellPlateau): Felmyst Demonic Vapor (#21709) 2025-03-15 17:05:19 +01:00
Anton Popovichenko e0a2622138 fix(Core/Calendar): Fix crash on deletion while iterating through calendar events. (#21667) 2025-03-14 06:41:04 -03:00
Rocco Silipo 82e76e8781 fix(Script/SunwellPlateau): Correct Meteror Slash Timer. (#21688) 2025-03-13 20:24:02 -03:00
github-actions[bot] 7cc25c9799 chore(DB): import pending files
Referenced commit(s): 00f12d685e
2025-03-13 22:32:52 +00:00
Rocco Silipo 00f12d685e fix(DB/Loot) Add missing recipes to SwP trashes (#21701) 2025-03-13 23:31:54 +01:00
Rocco Silipo 8584763889 fix(Script/SunwellPlateau): Correct some spell's timers. (#21689) 2025-03-12 20:17:27 -03:00
Rocco Silipo a2eee90f0d fix(Script/SunwellPlateau): Demonic Vapor Trail now despawn. (#21687) 2025-03-12 20:10:27 -03:00
Grimgravy 502730d89e fix(Scripts/ZulAman): text with symbol and improved frog movement (#21206)
Co-authored-by: sudlud <sudlud@users.noreply.github.com>
Co-authored-by: Jelle Meeus <sogladev@gmail.com>
2025-03-12 11:15:59 +01:00
github-actions[bot] 5a89348d73 chore(DB): import pending files
Referenced commit(s): 71ee156871
2025-03-11 20:40:43 +00:00
sudlud 71ee156871 fix(DB/Gameobject): Sniffed Values for 'Orb of the Blue Flight' spawns (#21696) 2025-03-11 21:39:43 +01:00
github-actions[bot] 069db988a2 chore(DB): import pending files
Referenced commit(s): da7b57079d
2025-03-11 18:08:53 +00:00
Rocco Silipo da7b57079d fix(DB/Loot) Add missing loots on Eredar Twins and Entropius. (#21693) 2025-03-11 19:07:47 +01:00
Vincent Vanclef dd42f7a673 feat(Core/Entities): Add OnPlayerSendListInventory script hook (#21676) 2025-03-11 15:01:55 +01:00
github-actions[bot] d4b1c795c8 chore(DB): import pending files
Referenced commit(s): 0b6f9b475b
2025-03-11 06:13:10 +00:00
Exitare 0b6f9b475b fix(DB/Quest): Zapped Giants now behave correctly (#21100)
Co-authored-by: Exitare <Exitare@users.noreply.github.com>
Co-authored-by: Ludwig <sudlud@users.noreply.github.com>
Co-authored-by: Jelle Meeus <sogladev@gmail.com>
2025-03-11 07:12:03 +01:00
sudlud 2e9b40e21a fix(Core/Group): fix group loot for quest items (#21683)
Co-authored-by: EricksOliveira <ericksoliveira258@gmail.com>
2025-03-10 22:48:04 +01:00
Exitare 451750eb04 fix(Scripts/Hyjal): Fix hyjal trash (#21194)
Co-authored-by: Exitare <Exitare@users.noreply.github.com>
Co-authored-by: Ludwig <sudlud@users.noreply.github.com>
2025-03-10 22:10:43 +01:00
github-actions[bot] 90ed058379 chore(DB): import pending files
Referenced commit(s): 5291632c00
2025-03-10 15:36:54 +00:00
Jelle Meeus 5291632c00 fix(Scripts/SunwellPlateau): Add Brutallus Flame Ring explosion (#21681) 2025-03-10 16:35:54 +01:00
Vincent Vanclef ffe03f6e14 feat(Core/Entities): add OnPlayerCanGiveLevel script hook (#21666) 2025-03-10 08:44:33 +01:00
Jelle Meeus 4cdb315db1 fix(Script/SunwellPlateau): duplicate keys instance objects (#21679) 2025-03-09 20:43:47 -03:00
github-actions[bot] a62be1f563 chore(DB): import pending files
Referenced commit(s): 973b501f2b
2025-03-09 21:47:35 +00:00
Ryan Turner 973b501f2b fix(DB/Loot Comments) - Added Missing Reference and Creature Loot Comments (#21672) 2025-03-09 22:46:36 +01:00
github-actions[bot] 83ae9b13a1 chore(DB): import pending files
Referenced commit(s): 5ab3997c40
2025-03-09 21:43:50 +00:00
blinkysc 5ab3997c40 fix(Quest/HillsbradFoothills) Elixir of Pain quest now has no prerequisite (#21662)
Co-authored-by: sudlud <sudlud@users.noreply.github.com>
2025-03-09 22:42:51 +01:00
tabudz 0b24431768 fix(deps/zlib): CVE-2022-37434: Potential Vulnerability in Cloned Function (#21599)
https://nvd.nist.gov/vuln/detail/CVE-2022-37434
madler/zlib@eff308a
2025-03-09 22:27:37 +01:00
天鹿 5ec85e527a fix(Core/PvP): OutdoorPvPZM - fetch creature spawnId correctly (#21634) 2025-03-09 22:21:34 +01:00
github-actions[bot] b9c3ed63e8 chore(DB): import pending files
Referenced commit(s): 052c944880
2025-03-09 21:14:49 +00:00
Paul 052c944880 fix(DB/SpellProc): Update Fists of fury proc chance to 5% (#21454) 2025-03-09 22:13:49 +01:00
p-tkachuk f7778ccaf5 fix(Core/SpellInfoCorrections): Fix "Throw Bomb" spell (#21463)
Co-authored-by: Hexadecimal <hd@hd.hd>
2025-03-09 11:14:06 +01:00
github-actions[bot] 227be74e67 chore(DB): import pending files
Referenced commit(s): 231096132c
2025-03-09 08:18:59 +00:00
Kitzunu 231096132c refactor(Core/ServerMail): Refactor to Dedicated Manager Class with Multi-Item & Condition Support (#21590)
1. Core Cleanup
    - Move all ServerMail logic from `ObjectMgr` into a new dedicated `ServerMailMgr` class
    - Move faction logic for money from SendServerMail into the script
2. Separation of items into a new table
    - Create a new `mail_server_template_items` table
    - Allows to send multiple items in one mail
    - Separate items per faction Alliance/Horde
3. Separation of conditions into a new table
    - Create a new `mail_server_template_conditions` table
    - Allows to use multiple conditions for one mail
    - Available condition types
        - Minimum playtime (playerLevel >= condition)
        - Minimum playtime (playerPlayTime >= condition)
        - Rewarded quest
        - Earned achievement
        - Earned reputation (playerReputation >= conditionState)
        - Faction
        - Race
        - Class
4. Updated ServerMail loading
    - Move item and condition loading to their own functions
        - LoadMailServerTemplateItems()
        - LoadMailServerTemplateConditions()
5. Reworked eligibility check
    - Player needs to pass all conditions to be eligible for the mail
    - All players are automatically eligible if no conditions exist for a server mail template.
6. Updated foreign keys
    - For table `mail_server_character`, `mail_server_template_conditions`, `mail_server_template_items` foreign key with on delete cascade is added for automatic removal of entries if mail_server_template.id is deleted.
7. Database changes
    - See the PR
2025-03-09 09:18:01 +01:00
github-actions[bot] 061044b710 chore(DB): import pending files
Referenced commit(s): c211920e11
2025-03-09 07:06:01 +00:00
daobashun c211920e11 fix(DB/SAI) add Wind trader mu'fah smart script (#21366) 2025-03-09 08:05:01 +01:00
github-actions[bot] 9990d59979 chore(DB): import pending files
Referenced commit(s): 5c1b4d863c
2025-03-08 21:44:21 +00:00
Jelle Meeus 5c1b4d863c fix(Scripts/SunwellPlateau): Sunblade Scout activate protector (#21629) 2025-03-08 22:43:20 +01:00
Tereneckla 4a11fe0db5 Core/Unit: Revert AutoRepeatSpell delay application to Auto Shot (#19603) 2025-03-08 15:45:15 +01:00
github-actions[bot] 4acb784bb6 chore(DB): import pending files
Referenced commit(s): 99c90c00d5
2025-03-08 11:22:24 +00:00
Rocco Silipo 99c90c00d5 fix(DB/Creature) Adds Disable Gravity to Shield Orb. (#21671) 2025-03-08 12:21:26 +01:00
Anton Popovichenko 3406cb03b3 fix(Core/Tickets): Fix crash in ticket complete command. (#21665) 2025-03-07 21:52:47 +01:00
github-actions[bot] 263f14d800 chore(DB): import pending files
Referenced commit(s): 1a2e30a1f6
2025-03-06 20:38:25 +00:00
Rocco Silipo 1a2e30a1f6 fix(DB/Creature) Solve some Shadowsword Assassin issues. (#21658) 2025-03-06 21:37:27 +01:00
github-actions[bot] f818ef6876 chore(DB): import pending files
Referenced commit(s): aba8d42dde
2025-03-06 06:57:15 +00:00
sudlud aba8d42dde fix(DB/Gameobject): Sniffed Values for 'Isle Daily Gobs' spawns (#21655) 2025-03-06 07:56:15 +01:00
sudlud e8ba158c62 fix(CI/modules-build): enable mod-antifarming (#21654) 2025-03-05 13:10:58 +01:00
Tereneckla 062cb90da8 fix(Core/Spells): readd 33% chance for lightning overload to fail on chain lightning (#21645) 2025-03-04 23:48:37 -03:00
github-actions[bot] f6caa7e63b chore(DB): import pending files
Referenced commit(s): 78a01fd678
2025-03-05 02:45:57 +00:00
p-tkachuk 78a01fd678 fix(Scripts/Ulduar): Fix Kologarn script (#21595)
Co-authored-by: Hexadecimal <hd@hd.hd>
2025-03-04 23:44:57 -03:00
天鹿 82bc814858 fix(Core/PvP): Sometimes mobs and objects fail to spawn in OutdoorPvP (#21636) 2025-03-03 22:12:54 +01:00
天鹿 a2a0bc51ab fix(Core/Bones): Unable to create bones (#21635) 2025-03-03 22:11:56 +01:00
sudlud ba37b3d130 feat(CI/modules-build): add all current azerothcore modules (#21624) 2025-03-03 18:46:03 +01:00
github-actions[bot] 6fc6333141 chore(DB): import pending files
Referenced commit(s): fdd469b61b
2025-03-03 05:13:16 +00:00
Benjamin Jackson fdd469b61b fix(DB): Add spawns for Tenris Mirkblood room in Karazhan. (#21638) 2025-03-03 06:12:17 +01:00
github-actions[bot] 222beca66d chore(DB): import pending files
Referenced commit(s): 945b2d79fd
2025-03-03 01:24:41 +00:00
Andrew 945b2d79fd fix(DB/Creature): Disable Felmyst pathfinding (#21641) 2025-03-02 22:23:36 -03:00
sudlud 2957143338 fix(CI/linux-build): use correct OS name for cache key (#21640) 2025-03-02 22:05:20 +01:00
github-actions[bot] bff7b0dd7c chore(DB): import pending files
Referenced commit(s): a414b5776a
2025-03-02 20:31:17 +00:00
Benjamin Jackson ed6f296849 fix(DB/Disables): Remove incorrectly disabled quests. (#21628) 2025-03-02 21:31:02 +01:00
github-actions[bot] a414b5776a chore(DB): import pending files
Referenced commit(s): 7e78484bd8
2025-03-02 20:30:17 +00:00
Benjamin Jackson 7e78484bd8 fix(DB): Add Argent Dawn spawns for Scourge Invasion. (#21630) 2025-03-02 17:29:18 -03:00
github-actions[bot] 6422026893 chore(DB): import pending files
Referenced commit(s): c60b294228
2025-03-02 19:08:41 +00:00
Andrew c60b294228 fix(Scripts/SunwellPlateau): Fix Felmyst air phase (#21637) 2025-03-02 16:07:43 -03:00
Kitzunu 9e4c74bab1 fix(CI/Codestyle): Minor typo in insert_delete_safety_check (#21639) 2025-03-02 18:48:42 +01:00
Kitzunu 6786cb19c3 fix(CI/Codestyle): Imrpove semicolon check and general improvements (#21632) 2025-03-02 18:02:09 +01:00
Kitzunu ee23fdca3d fix(CI/Codestyle): Escape all MySQL keywords and skip /* comments (#21631) 2025-03-02 16:49:18 +01:00
p-tkachuk 544878c048 fix (Core/Wintergrasp) Fix map and battle icon (#21622) 2025-03-02 05:46:49 +01:00
github-actions[bot] e1f84d5604 chore(DB): import pending files
Referenced commit(s): b7e33283a5
2025-03-01 23:34:08 +00:00
Ryan Turner b7e33283a5 feat(DB): clarify IDs for faction changes (#20480) 2025-03-02 00:33:10 +01:00
p-tkachuk 00df52ff19 fix (Core/Wintergrasp) hearthstone was visibly on cooldown when player left WG (#21620)
Co-authored-by: Hexadecimal <hd@hd.hd>
2025-03-01 21:53:05 +01:00
p-tkachuk 9a6078a262 fix (Core/Wintergrasp) Icon now disappears when player leaves queue (#21619)
Co-authored-by: Hexadecimal <hd@hd.hd>
2025-03-01 21:51:46 +01:00
p-tkachuk 3834bac43d fix (Core/Wintergrasp) Change spell used by WG NPCs (#21621)
Co-authored-by: Hexadecimal <hd@hd.hd>
2025-03-01 21:50:13 +01:00
github-actions[bot] f9ca059868 chore(DB): import pending files
Referenced commit(s): c7981bea85
2025-03-01 19:40:30 +00:00
Rocco Silipo c7981bea85 fix(DB/Text) Add correct text on Sunblade Scouts. (#21626) 2025-03-01 20:39:30 +01:00
valsan-azerty-boi a3f7e1e76d feat(Core/BG): Allow battlegrounds to be configurable (#20320) (#21124) 2025-03-01 12:01:10 -03:00
Tereneckla de6732da34 fix(Core/Spells): remove custom loop so that one lightning damage instance can only proc one lightning overload (#21625) 2025-03-01 10:42:09 -03:00
github-actions[bot] 6930d2beda chore(DB): import pending files
Referenced commit(s): b9cd73ae03
2025-02-28 15:24:52 +00:00
Rocco Silipo b9cd73ae03 fix(DB/Creature) Various trash's issues on the road between Felmyst and Eredar Twins are now solved. (#21623) 2025-02-28 16:23:51 +01:00
github-actions[bot] 1c65032c0f chore(DB): import pending files
Referenced commit(s): fa0a8858e8
2025-02-27 19:05:56 +00:00
Ryan Turner fa0a8858e8 fix(DB/Item) - Envolpe Assignment loot no longer gives you empty loot. (#21073) 2025-02-27 20:04:56 +01:00
github-actions[bot] 4603e26b6a chore(DB): import pending files
Referenced commit(s): 97471151e7
2025-02-26 20:53:03 +00:00
sudlud 97471151e7 fix(DB/Gameobject): Sniffed Values for 'Smuggled Mana Cell' spawns (#21617) 2025-02-26 21:52:02 +01:00
github-actions[bot] 1ddec44220 chore(DB): import pending files
Referenced commit(s): bf1e3e4ce8
2025-02-26 11:08:23 +00:00
Rocco Silipo bf1e3e4ce8 fix(DB/Creature) Add formations to Scout's packs. (#21614) 2025-02-26 12:07:24 +01:00
github-actions[bot] a42509836b chore(DB): import pending files
Referenced commit(s): e18df16abd
2025-02-26 10:58:39 +00:00
Rocco Silipo df710719ac fix(DB/Creature) Elf patrols are now in formation. (#21613) 2025-02-26 11:57:46 +01:00
Rocco Silipo e18df16abd fix(DB/Creature) Volatile Fiends now reach the end of the ramp. (#21600) 2025-02-26 11:57:35 +01:00
Takenbacon 60b1bd8f0d fix(Core/Server): Disable out of world packet requeuing (#21608) 2025-02-25 23:11:36 -03:00
vrachv 0ff1a9756c fix(Core/Spell) Removed Prey on the Weak triggering on dead targets (#21611) 2025-02-25 23:52:23 +01:00
sudlud 9fcd9b3684 fix(scripts/SWP): remove whitespaces to fix codestyle check (#21609) 2025-02-25 20:20:39 +01:00
github-actions[bot] cb0e66e8c4 chore(DB): import pending files
Referenced commit(s): a2eaa57394
2025-02-25 18:41:42 +00:00
Razor2142 a2eaa57394 fix(Scripts/Naxxramas): refactored instance script (#21539) 2025-02-25 15:40:42 -03:00
SaW 9f99e89bc3 fix(Core/Threading): Refactored Map class - some code optimization (#21288) 2025-02-24 15:49:54 -03:00
vrachv b83071388c fix(Scripts/SunwellPlateau) Fix flame touched stacking (#21594) 2025-02-24 11:49:33 -03:00
Andrew f234f034a1 fix(Scripts/SunwellPlateau): Fix twins respawn (#21598) 2025-02-24 11:48:44 -03:00
Andrew 835283bf26 feat(Core/Scripting): Implement ScheduleEnrageTimer() helper (#21597) 2025-02-24 09:59:18 +01:00
Andrew 8f6d651471 fix(Scripts/SunwellPlateau): Felmyst should cast Noxious Cloud only a… (#21596) 2025-02-24 02:36:22 -03:00
github-actions[bot] f6c29614d5 chore(DB): import pending files
Referenced commit(s): 96e7a20bd9
2025-02-24 05:19:56 +00:00
Andrew 96e7a20bd9 fix(DB/Creature): Fix Felmyst flying animation in p1 and add despawn on evade (#21396) 2025-02-24 06:18:55 +01:00
Kitzunu cd8761796f fix(CI/Codestyle): skip SQL keyword 'NOT' (#21591) 2025-02-24 06:16:20 +01:00
Kitzunu 6f38d3c817 fix(Core/Logging): revert commit e3432102f7e66968f53c6e9afb11d7844e95… (#21593) 2025-02-23 17:53:11 +01:00
Paul 826b55dffb fix(Core/Spells): Fixed pet swoop ability not rooting target (#21559)
Co-authored-by: pavel_k <pavel_k@mail.com>
2025-02-23 11:13:31 +01:00
vrachv e31674045b fix(Core/Spells): Fix "Repelling Wave" stun radius (#21587) 2025-02-23 11:05:54 +01:00
Kitzunu 5d32676193 fix(Core/Misc): Fix NextPage Data Type in PageText Structure and Improve Logging Messages (#21586) 2025-02-22 21:58:21 -03:00
Andrew d97563be44 fix(Scripts/SilverpineForest): Fix double spawn in Pyrewood Ambush an… (#21584) 2025-02-22 22:38:44 +01:00
Andrew 0e77a7a447 fix(Scripts/OutdoorPvP): Fix Halaa guards not spawning (#21585) 2025-02-22 22:38:07 +01:00
github-actions[bot] 29db247503 chore(DB): import pending files
Referenced commit(s): dc646e8304
2025-02-22 01:11:18 +00:00
Andrew 4906867220 fix(Core/Spells): Ingvar Smash and Dark Smash should not ignore LOS (#21581) 2025-02-21 22:10:39 -03:00
Andrew dc646e8304 fix(DB/Creature): Fix Steel Gate Flying Machine inhabit type (#21582) 2025-02-21 22:10:19 -03:00
Paul 3fcccf2a2e fix(Core/Spells): Fixed misdirection triggering from mend pet (#21526)
Co-authored-by: pavel_k <pavel_k@mail.com>
2025-02-21 19:50:33 -03:00
github-actions[bot] eed4c3515d chore(DB): import pending files
Referenced commit(s): 4987e83232
2025-02-21 22:48:08 +00:00
Tereneckla 4987e83232 fix(DB/Creature): let Magister's Terrace Normal bosses give reputation until exalted and reduce Kael'thas reputation gain (#21532) 2025-02-21 19:47:09 -03:00
Jelle Meeus 4216d196c2 fix(Scripts/ZulAman): scout drum and hard CC interaction (#21281) 2025-02-21 19:43:21 -03:00
github-actions[bot] 5aed1624c8 chore(DB): import pending files
Referenced commit(s): 8166664da4
2025-02-21 22:39:25 +00:00
Andrew 8166664da4 fix(DB/SAI): Fix Kael Flamestrikes chasing players (#21579) 2025-02-21 19:38:20 -03:00
Takenbacon d145b866a5 fix(Core/Maps): Fix instance factions (#21577) 2025-02-21 16:49:39 -03:00
github-actions[bot] 0161a611ef chore(DB): import pending files
Referenced commit(s): 609b1b731a
2025-02-21 19:27:42 +00:00
Andrew 609b1b731a fix(Scripts/SunwellPlateau): Fix twin marks not applying from dots (#21415) 2025-02-21 20:26:41 +01:00
github-actions[bot] 880804d6fa chore(DB): import pending files
Referenced commit(s): 4cd1ed2181
2025-02-21 06:18:37 +00:00
Takenbacon 4cd1ed2181 refactor(Core/Server): Improvements to antidos opcode handling (#21502) 2025-02-21 07:17:34 +01:00
Andrew f6c4164765 chore(CI): Add mod-costumes (#21548) 2025-02-20 06:29:46 +01:00
github-actions[bot] 28f5ead7f3 chore(DB): import pending files
Referenced commit(s): 04bf98fa6e
2025-02-19 13:56:13 +00:00
Smirnov Sergey 04bf98fa6e fix (DB/SAI) [Howling Fjord] Bjorn Halgurdsson behavior (#21474)
Co-authored-by: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com>
2025-02-19 14:55:11 +01:00
Andrew 862690ecc0 chore(CI): Add mod-arena-3v3-solo-queue.git (#21530)
Co-authored-by: sudlud <sudlud@users.noreply.github.com>
2025-02-19 13:38:59 +01:00
Jelle Meeus 4c4b04f07b refactor(Core/Packet): use WorldPackets::WorldState::InitWorldStates definition (#20475)
Co-authored-by: ccrs <ccrs@users.noreply.github.com>
2025-02-19 07:55:09 -03:00
github-actions[bot] bc17d068cd chore(DB): import pending files
Referenced commit(s): 79ba56ed3d
2025-02-19 10:51:50 +00:00
Jelle Meeus 79ba56ed3d fix(Scripts/Spell): Priest shadowfiend attack and Shadowfiend Death proc (#20987)
Co-authored-by: killerwife <killerwife@gmail.com>
Co-authored-by: Grimdhex <176165533+Grimdhex@users.noreply.github.com>
2025-02-19 07:50:44 -03:00
55Honey b80da06152 fix(Core/Auth): prevent expansion overflow in SendAuthResponse (#21503) 2025-02-18 20:41:11 +01:00
github-actions[bot] 86ee1a994c chore(DB): import pending files
Referenced commit(s): fca4ee32cd
2025-02-18 17:50:05 +00:00
Rocco Silipo fca4ee32cd fix (DB/Creature) Alarmed Blightguards now spawn as they should. (#21489) 2025-02-18 18:49:00 +01:00
Takenbacon 854ebc8025 fix(Core/Server): Add bytebuffer exception handling to addoninfo read (#21500) 2025-02-18 12:15:59 +01:00
Takenbacon 58d13e69e1 fix(Core/Grids): Standardize grid coordinates (#21479) 2025-02-18 07:16:36 +01:00
Francesco Borzì 8207d1e8d0 docs(README): update JetBrains logo (#21478) 2025-02-17 11:08:34 +01:00
Patrick Müssig f89a8e0b81 fix(UnitTest): fixes unit tests not compiling under windows (#21299) 2025-02-17 06:17:51 +01:00
iThorgrim e28384b059 feat(Core/Scripting): Add new hooks for Ticket (#21238) 2025-02-17 03:26:05 +01:00
Paul 0c099a75ec fix(Core/Spell): Corrected values for event food (#21465)
Co-authored-by: pavel_k <pavel_k@mail.com>
2025-02-16 23:27:45 +01:00
Razor2142 8cc47ab1f1 feat(Script/Instance): added generic instance map script (#21218)
Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>
2025-02-16 23:26:07 +01:00
Jelle Meeus 92ef042f33 fix(Scripts/Spells): Warrior IntimidationShout (#20969) 2025-02-16 23:19:50 +01:00
github-actions[bot] 6d88cd40f6 chore(DB): import pending files
Referenced commit(s): 30f273e593
2025-02-16 22:15:10 +00:00
Jelle Meeus 30f273e593 fix(Scripts/Naxxramas): Add post-Gothik Four Horsemen introduction (#20550) 2025-02-16 23:14:09 +01:00
github-actions[bot] 2c7cf4832e chore(DB): import pending files
Referenced commit(s): f7028d5778
2025-02-16 22:11:59 +00:00
Fabrizio Contigiani f7028d5778 fix(DB/Quest): Allow both factions to get quest "The Multiphase Survey" [id: 11880] (#21433) 2025-02-16 23:10:59 +01:00
Kitzunu 4c66c589e4 fix(Core/Spells): Implement SPELL_ATTR2_ALLOW_LOW_LEVEL_BUFF (#21470)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
2025-02-16 23:07:37 +01:00
github-actions[bot] 5fb67bdd5c chore(DB): import pending files
Referenced commit(s): 3291c747c5
2025-02-16 20:20:31 +00:00
Kitzunu d0085feb95 fix(DB/Auth): allow autobroadcast_locale to have multiple locales for… (#21467) 2025-02-16 21:20:29 +01:00
Kitzunu 3291c747c5 feat(Core/DBUpdater): include pending path (#21469) 2025-02-16 21:19:31 +01:00
github-actions[bot] 8cfe71e27e chore(DB): import pending files
Referenced commit(s): 6c91d0f4a5
2025-02-16 20:07:56 +00:00
Rocco Silipo 6c91d0f4a5 fix(DB/Creatures) Various Northrend NPCs now have a SmartAI. (#21471) 2025-02-16 21:06:52 +01:00
Exitare 98ceb1c067 fix(Core/PlayerScript) Align player script function names (#21020)
Co-authored-by: sudlud <sudlud@users.noreply.github.com>
2025-02-16 14:59:41 +01:00
github-actions[bot] df7c23d763 chore(DB): import pending files
Referenced commit(s): 409ad14e14
2025-02-15 23:27:32 +00:00
p-tkachuk 409ad14e14 fix(DB/SAI) Quest Feedin' Da Goolz (12652) (#21264)
Co-authored-by: Hexadecimal <hd@hd.hd>
Co-authored-by: Jelle Meeus <sogladev@gmail.com>
2025-02-16 00:26:27 +01:00
iThorgrim e3432102f7 fix(Core/World): Load metric and log configs at start (#21243) 2025-02-15 23:34:25 +01:00
iThorgrim 971ebcae31 feat(Core/Scripting): Add Player skill based hook (#21273)
Co-authored-by: IntelligentQuantum <IntelligentQuantum@ProtonMail.Com>
Co-authored-by: Ludwig <sudlud@users.noreply.github.com>
2025-02-15 23:10:38 +01:00
Mykhailo Redko c96ff8a6dc fix(Core/Spells): Chain heal shoudln't jump to other players who are at full hp. (#21387) 2025-02-15 22:47:22 +01:00
demetrzz 61f04f69db fix(Scripts/Naxxramas): Maexxna's Outer Web Door (#21445)
Co-authored-by: pavel_k <pavel_k@mail.com>
2025-02-15 22:29:57 +01:00
Jelle Meeus a05833eeed fix(Core/Common): Container fixes use after free (#21460) 2025-02-15 22:22:30 +01:00
demetrzz 75752880e2 fix(Apps/Codestyle) corrected wrong text in the sql codestyle check (#21466)
Co-authored-by: pavel_k <pavel_k@mail.com>
2025-02-15 22:15:37 +01:00
天鹿 c78217baa2 fix(Core/Creature): Correctly get flag from cinfo in IsDungeonBoss & IsImmuneToKnockback (#21456) 2025-02-15 18:10:48 +01:00
github-actions[bot] b542e64abf chore(DB): import pending files
Referenced commit(s): b8b38e1e7e
2025-02-15 16:23:57 +00:00
Jelle Meeus b8b38e1e7e fix(Core/Spells): Hand of Protection no longer removes Nalorak's Mangle (#21413) 2025-02-15 17:22:59 +01:00
Rocco Silipo a5a8ef92b4 fix (DB/Creature) Correct a missing link in Valgarde Harpoon Target SmartAI (#21462) 2025-02-15 17:13:57 +01:00
sudlud 0d37ff292b fix(CI/nopch-module-build): ensure build continues after errors (#21457) 2025-02-15 14:10:46 +01:00
Jelle Meeus fae07daa4c fix(Scripts/Outland): LoadMinionData buffer overflow (#21461) 2025-02-15 14:08:49 +01:00
github-actions[bot] e5dbc39cc5 chore(DB): import pending files
Referenced commit(s): 8f00369599
2025-02-15 12:27:57 +00:00
Smirnov Sergey 8f00369599 fix (DB/SAI) [Howling Fjord] Attack to Valgarde. Dragonflayer Invader and Worg. Valgarde Defender. (#21434) 2025-02-15 13:26:52 +01:00
Kitzunu 19847395eb fix(CI/Windows): Bump openssl version (#21458) 2025-02-15 13:12:13 +01:00
demetrzz fe206c7138 fix(Scripts/Spells): Corrected shaman 8/8 T2 set bonus damage proc (#21432)
Co-authored-by: pavel_k <pavel_k@mail.com>
2025-02-15 12:02:27 +01:00
Anton Popovichenko 91da92f33f fix(Core/SpellQueue): Fix undefined behavior when processing SpellQueue. (#21459) 2025-02-15 11:45:12 +01:00
Takenbacon ee69a569c4 fix(Core/Grids): Grid improvements (#20955) 2025-02-14 22:11:27 +01:00
Mykhailo Redko 10183efd51 fix(Core/Chat): Fix lower security check for GM commands. (#21382) 2025-02-14 22:11:01 +01:00
Anton Popovichenko 2982b64430 fix(Core/Spell): Reset insignia spell target when it is deleted. (#21437) 2025-02-14 21:58:30 +01:00
github-actions[bot] 0273a9f08d chore(DB): import pending files
Referenced commit(s): 0bbcddcf70
2025-02-14 20:50:33 +00:00
sudlud 0bbcddcf70 fix(DB/Creature): Sniffed Values for 'Chemical Wagon' spawns (#21446) 2025-02-14 21:49:28 +01:00
Anton Popovichenko cdcdf4564b fix(Core/Pet): Fix possible heap-use-after-free of charmInfo when handling pet action. (#21439) 2025-02-14 20:02:02 +01:00
Jelle Meeus 75441ddb3b fix(Core/Player): SpellQueue avoid possible undefined behavior by copying instead of move (#21444) 2025-02-14 15:45:36 +01:00
Jelle Meeus 3854d00dee fix(Scripts/ShadowmoonValley): Illidan buffer overflow (#21442) 2025-02-14 11:31:21 +01:00
Jelle Meeus 9412c1eb3a fix(Scripts/BlackTemple): Illidan buffer overflow (#21441) 2025-02-14 11:31:14 +01:00
Andrew 062f9c4341 fix(Core/Map): Dynamic respawns: preserve original respawn timer and skip rares (#21440) 2025-02-14 11:30:59 +01:00
Anton Popovichenko db9b4cf0c6 fix(Scripts/ICC): Fix crash in npc_darnavan when killer is nil. (#21438) 2025-02-14 05:54:45 +01:00
Anton Popovichenko db49562a6a fix(Core/Channels): Don't use deleted pointer in channel name creation. (#21435) 2025-02-13 21:39:29 +01:00
Andrew 0db39f76de fix(Core/Creature): Creatures should skip confused targets (#21410) 2025-02-13 13:22:02 -03:00
Andrew 6c2d9aff49 chore(Config): Improve DynamicRates description (#21431) 2025-02-13 17:05:14 +01:00
Jelle Meeus 9e720b91f0 fix(Core/Worldstate): fix Sanctums Wards triggering phase transition too early (#21430) 2025-02-13 09:13:40 -03:00
github-actions[bot] c5d83d31c7 chore(DB): import pending files
Referenced commit(s): 98a8a1306a
2025-02-13 10:39:46 +00:00
Andrew 98a8a1306a fix(Scripts/SunwellPlateau): Fix Felmyst death event (#21425) 2025-02-13 11:38:47 +01:00
github-actions[bot] 75388c7538 chore(DB): import pending files
Referenced commit(s): f9415f38cb
2025-02-13 08:05:42 +00:00
Andrew f9415f38cb fix(Scripts/Naxxramas): Update Faerlina script (#21375) 2025-02-13 05:04:36 -03:00
Takenbacon edcfaeb845 refactor(Core/World): Create WorldSessionMgr to split session logic out of World (#21400) 2025-02-13 07:04:38 +01:00
Andrew 0f0b341d9d fix(Scripts/SunwellPlateau): Fix Brutallus burn timer (#21423) 2025-02-13 00:05:32 +01:00
Anton Popovichenko 3baa00ae06 fix(Core/Group): Fix use of a deleted pointer in the group invites list. (#21422) 2025-02-12 18:24:56 -03:00
Anton Popovichenko c92d50d6ec fix(Core/Guild): Fix use of guild members' data after deletion. (#21421) 2025-02-12 18:23:57 -03:00
Anton Popovichenko fe2627bc91 fix(Core/Pet): Fix possible crash when using dangling pointer as pets spell target and fix possible memory leak. (#21420) 2025-02-12 17:34:30 -03:00
Anton Popovichenko 47c524581b fix(Core/Scripts): Fix buffer-overflow errors in scripts. (#21419) 2025-02-12 16:34:56 -03:00
github-actions[bot] 076e32292f chore(DB): import pending files
Referenced commit(s): 00be3a417f
2025-02-12 18:12:13 +00:00
Andrew 00be3a417f fix(DB/Creature): Sacrolash and Alythess should be taunt immune (#21418) 2025-02-12 19:11:12 +01:00
Andrew 16fa25b7a9 feat(Core/Maps): Implement dynamic respawn rates (#21417)
Co-authored-by: r00ty-tc <r00ty-tc@users.noreply.github.com>
Co-authored-by: Jelle Meeus <sogladev@gmail.com>
Co-authored-by Treeston

This is a partial cherry-pick of: https://github.com/TrinityCore/TrinityCore/pull/19056/commits/59db2eeea0a35028779fd76372ae06cc98c8086f
2025-02-12 15:06:42 -03:00
Takenbacon 5421f13c13 fix(Core/Disables): Optimize DisableMgr container (#21416) 2025-02-12 10:40:04 -03:00
Andrew b17d69b33c feat(Core/Unit): Add SpellSchoolMask info to the DamageDealt() hook (#21411) 2025-02-12 12:16:02 +01:00
github-actions[bot] 3a41901154 chore(DB): import pending files
Referenced commit(s): f6a0433297
2025-02-12 10:10:31 +00:00
Anton Popovichenko f6a0433297 feat(Core/Arena): Add support for arena seasons completion with progression in runtime. (#19858)
Co-authored-by: Winfidonarleyan <dowlandtop@yandex.com>
2025-02-12 07:09:31 -03:00
Kitzunu 24dd7dfc21 refactor(Misc): improve issue templates (#21391) 2025-02-11 22:45:47 -03:00
Anton Popovichenko 07cb5c880c fix(Core/SQLField): Fix heap-buffer-overflow issue when interacting with mysql field value. (#21393) 2025-02-11 17:24:56 +01:00
Anton Popovichenko c2986977d9 fix(Core/Items): Fix duplication exploit where a player could loot infinitely from bags containing gold. (#21394) 2025-02-11 17:23:01 +01:00
Andrew c070e4bddf fix(Scripts/SunwellPlateau): Don't replay Felmyst intro after wipes (#21398)
Felmyst into no longer relays after a wipe.
2025-02-11 12:30:34 +00:00
github-actions[bot] 2f6097f15e chore(DB): import pending files
Referenced commit(s): 489d668a8d
2025-02-10 22:27:59 +00:00
Rocco Silipo 489d668a8d fix(DB/Creature) Dawnblade Hawkriders and Shattered Sun Marksmen behaviours. (#21341) 2025-02-10 23:26:59 +01:00
Kitzunu 787b4e4efe fix(CI/Codestyle): correct double semicolon check (#21388) 2025-02-10 20:24:28 +01:00
Mykhailo Redko 017cfb7b4b fix(Core/PacketIO): Implemented CMSG_BUSY_TRADE and CMSG_IGNORE_TRADE. (#21385) 2025-02-10 17:12:38 +01:00
Andrew 91cd42ef91 fix(Scripts/SunwellPlateau): Clear basic events on death (#21374) 2025-02-10 09:28:19 +01:00
Andrew 4b79a09e91 fix(Scripts/SunwellPlateau): Prevent Sathrovarr summon event from dou… (#21376) 2025-02-10 09:23:33 +01:00
github-actions[bot] 41ed6f600d chore(DB): import pending files
Referenced commit(s): d0412438fc
2025-02-10 07:51:13 +00:00
Andrew d0412438fc fix(DB/SAI): Fix Doomfire Shard Avenging Wrath spell (#21377) 2025-02-10 08:50:09 +01:00
Andrew 7e29e023e8 fix(Core/Creature): Allow temp summons to respawn when despawning on … (#21363) 2025-02-10 08:46:31 +01:00
github-actions[bot] b0a45c98c2 chore(DB): import pending files
Referenced commit(s): 3c8823a871
2025-02-09 18:56:34 +00:00
Andrew 2495ef4422 fix(Scripts/SunwellPlateau): Correct Felmyst spawn event (#21360) 2025-02-09 15:55:58 -03:00
Andrew 3c8823a871 fix(Scripts/SunwellPleateau): Remove invincibility from human kalecgos (#21369) 2025-02-09 15:55:31 -03:00
Jelle Meeus 05cf475975 fix(Core/Worldstate): sunsreach print correct counter (#21356) 2025-02-09 18:40:44 +01:00
github-actions[bot] e4c68355c3 chore(DB): import pending files
Referenced commit(s): fcf9725dbb
2025-02-09 17:35:07 +00:00
Benjamin Jackson 865dd24c37 fix(DB/Creature): Correct run speed of Kael'thas's Arcane Spheres on heroic. (#21367) 2025-02-09 14:34:28 -03:00
Benjamin Jackson fcf9725dbb chore(DB): Add missing file extension for query. (#21368) 2025-02-09 14:34:08 -03:00
github-actions[bot] 295220fd96 chore(DB): import pending files
Referenced commit(s): cf103be146
2025-02-09 12:28:12 +00:00
Jelle Meeus cf103be146 fix(DB/Conditions): Sunwell Gates progress gossip (#21344)
Co-authored-by: sudlud <sudlud@users.noreply.github.com>
Co-authored-by: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com>
2025-02-09 09:27:11 -03:00
github-actions[bot] 709368ca22 chore(DB): import pending files
Referenced commit(s): 9eeaef516a
2025-02-09 06:32:38 +00:00
daobashun 9eeaef516a fix(DB/SAI) add Kaylaan smart ai (#21293) 2025-02-09 07:31:35 +01:00
sudlud 58ad9e27f4 Revert "chore(Deps/Zlib): move to Cloudflare fork (#21028)" (#21364) 2025-02-08 21:57:18 +01:00
Andrew 79cbb00075 feat(Core/Creature): Implement HasFlagsExtra() helper to creature (#21362) 2025-02-08 14:07:04 -03:00
Kitzunu 31529db282 fix(CI/Codestyle): Final fixes to backtick check (#21361) 2025-02-08 11:34:38 +01:00
p-tkachuk b07e545bae fix(Core/Transport): Fix for passengers dropped in the middle of nowhere (#21296) 2025-02-08 05:53:57 +01:00
github-actions[bot] fd67f8e004 chore(DB): import pending files
Referenced commit(s): 4fa80509ec
2025-02-07 19:47:52 +00:00
murmeli666 4fa80509ec fix(DB/Quest): Remove Failed Incursion requirement from Lost in Action (#21353) 2025-02-07 20:46:53 +01:00
天鹿 9768cfca3a fix(Core): Fix After PR#21213 Crash (#21327) 2025-02-07 13:52:56 -03:00
github-actions[bot] 4b8e94924d chore(DB): import pending files
Referenced commit(s): 7916db5b2f
2025-02-07 14:53:00 +00:00
murmeli666 7916db5b2f fix(DB/Creature): Remove aggro from Abandoned Fuel Tank (#21352) 2025-02-07 11:51:54 -03:00
Exitare ff4d1ef053 chore(Core/EventMgr): Align code to Code standard & improve LoadFromDB function (#21151)
Co-authored-by: Jelle Meeus <sogladev@gmail.com>
Co-authored-by: Ludwig <sudlud@users.noreply.github.com>
2025-02-07 14:25:07 +01:00
Rocco Silipo 2e91c83433 fix(DB/Creature) Theremis, Archmage and Yrma floating now. (#21349) 2025-02-07 12:36:41 +01:00
github-actions[bot] de48c00c8c chore(DB): import pending files
Referenced commit(s): edb49c86e9
2025-02-07 11:33:02 +00:00
Rocco Silipo c08b40d2bb fix(DB/Creature) Thornvine Creeper is skinnable with herbalism. (#21350) 2025-02-07 12:32:19 +01:00
murmeli666 edb49c86e9 fix(DB/Creature) Enable mining for Iron Rune Sentinel (#21348) 2025-02-07 12:32:02 +01:00
Kitzunu 2c561f0433 fix(CI): typo (#21347) 2025-02-07 09:51:25 +01:00
github-actions[bot] 82c85e7067 chore(DB): import pending files
Referenced commit(s): 2ec792c295
2025-02-07 07:43:46 +00:00
Jelle Meeus 2ec792c295 fix(DB/CreatureAddon): add hawkstriker mount to Sun's Reach patrol (#21345) 2025-02-07 08:42:45 +01:00
Kitzunu 306f41a2d8 fix(CI/Codestyle): ignore lines starting with @ (#21346) 2025-02-07 06:52:38 +01:00
Kitzunu 668864556b fix(CI/Codestyle): Ignore comments for backtick check (#21343) 2025-02-07 00:09:55 +01:00
github-actions[bot] 703deaa388 chore(DB): import pending files
Referenced commit(s): ce3a25e516
2025-02-06 20:12:08 +00:00
blinkysc ce3a25e516 fix(DB/Creature): Fix gold drop rate for sunfury mobs in netherstorm (#21250) 2025-02-06 21:11:08 +01:00
chaosua 775febad9c fix(Scripts/Northrend): Exclude Dalaran Sewer Exit Pipe from GUARD teleport checks (#21222) 2025-02-06 20:50:22 +01:00
Grimdhex 994eccebdf chore(Deps/Zlib): move to Cloudflare fork (#21028)
Co-authored-by: Andrew <47818697+Nyeriah@users.noreply.github.com>
2025-02-06 14:41:31 +01:00
github-actions[bot] 1cdc7ce56e chore(DB): import pending files
Referenced commit(s): 176007253d
2025-02-06 12:05:15 +00:00
Gabriele Sani 176007253d fix(DB/creature_template-skinning_loot_template): Removed some wrong skinloot template (#18626) 2025-02-06 13:04:15 +01:00
github-actions[bot] daf5fbcf8b chore(DB): import pending files
Referenced commit(s): db877ab99b
2025-02-06 11:38:40 +00:00
@cgrahamseven db877ab99b fix(DB/SAI): Add target type correction for spell 43458 (Secrets of Wyrmskull) (#20294)
Co-authored-by: cgrahamseven <chris.graham@protonmail.com>
2025-02-06 12:37:35 +01:00
manstfu 478a076589 fix(Script/ICC): Make Sindragosa Tail Smash - ignore LOS(#20935) 2025-02-06 11:58:28 +01:00
manstfu 23e27f350e fix(Scripts/IcecrownCitadel): Sindragosa P3 Exploit (#20938)
Co-authored-by: Jelle Meeus <sogladev@gmail.com>
2025-02-06 11:54:49 +01:00
Jelle Meeus 6e58645751 fix(Core/Battlefield): Wintergrasp out of bounds error when setting neutral faction of stalker (#21340) 2025-02-06 09:44:27 +01:00
github-actions[bot] f3c96f6452 chore(DB): import pending files
Referenced commit(s): 585b8964ef
2025-02-06 08:02:32 +00:00
Andrew 982d80f9ef fix(DB/Text): Fix Brutallus text language (#21338) 2025-02-06 09:02:07 +01:00
github-actions[bot] 585b8964ef chore(DB): import pending files
Referenced commit(s): 811342c120
2025-02-06 08:01:26 +00:00
Andrew 8f450686b9 fix(Scripts/SunwellPlateau): Felmyst should be invincible while flying (#21336) 2025-02-06 09:00:56 +01:00
Andrew 811342c120 fix(DB/Creature): Kalecgos should despawn on evade (#21335) 2025-02-06 09:00:24 +01:00
github-actions[bot] ab1c969c6e chore(DB): import pending files
Referenced commit(s): 3de0b913f3
2025-02-05 18:26:13 +00:00
Rocco Silipo 3de0b913f3 fix(DB/Creature) Various Northrend NPCs have SmartAI now. (#21330) 2025-02-05 19:25:13 +01:00
Kitzunu f46fea0ac9 fix(CI/Codestyle): Backtick check SET, quote and REPLACE case (#21333) 2025-02-05 17:25:34 +01:00
sudlud 34bed0651a fix(DB/world): delete base/db_world/player_classlevelstats.sql (#21329) 2025-02-05 15:47:18 +01:00
github-actions[bot] b717893309 chore(DB): import pending files
Referenced commit(s): be422f2f2a
2025-02-05 06:44:37 +00:00
Andrew be422f2f2a fix(Scripts/Spells): Fix Isle of Queldanas Orb of Translocation (#21325) 2025-02-05 07:43:39 +01:00
github-actions[bot] 8af593bda9 chore(DB): import pending files
Referenced commit(s): 7e2d5c438b
2025-02-04 12:35:10 +00:00
Jelle Meeus 7e2d5c438b fix(DB/SAI): Escape from Jaedanar group completion (#21286) 2025-02-04 13:34:08 +01:00
iThorgrim 13e3a3c84a Feat(Core/Player): Add ExtraBonusTalentCount methods (#21271) 2025-02-04 07:47:26 +01:00
iThorgrim 054018232c feat(Core/Scripting): Add new hook OnUnitSetShapeshiftForm (#21235) 2025-02-04 07:41:29 +01:00
sudlud 02a903b16f fix(CI/Windows): fix windows build (#21322) 2025-02-03 22:01:14 +01:00
Kitzunu 5d9e45ab9b feat(CI/Codestyle): backtick check for sql (#21321) 2025-02-03 21:03:21 +01:00
sudlud 2aaf28800d fix(DB/updates): add missing backticks to 2025_02_03_00.sql (#21320) 2025-02-03 18:42:53 +01:00
iThorgrim c53112d820 Feat(Core/Scripting): Add new hook CanPlayerResurrect to simplify HardCore mod etc. (#21272) 2025-02-03 18:28:19 +01:00
p-tkachuk 6753b44b16 fix(Scripts/Oculus): Prevent boss Urom teleportation to nowhere on fast kill (#21305)
Co-authored-by: Hexadecimal <hd@hd.hd>
2025-02-03 17:47:38 +01:00
Andrew 7b47cdebb9 fix(Script/ZulAman): Don't start the timer before Harrison Johnes event (#21311) 2025-02-03 09:11:08 -03:00
github-actions[bot] a447308a4b chore(DB): import pending files
Referenced commit(s): cce6f7513e
2025-02-03 11:55:18 +00:00
Andrew e75505d071 fix(Scripts/SunwellPlateau): Remove Sunwell Radiance from mobs (#21312) 2025-02-03 12:54:19 +01:00
github-actions[bot] cce6f7513e chore(DB): import pending files
Referenced commit(s): 990b9a524c
2025-02-03 11:54:05 +00:00
Smirnov Sergey 990b9a524c fix(DB/Locale) Minor fix Russian locale of quests (#21313) 2025-02-03 12:53:05 +01:00
Kitzunu 17412174be feat(Core/SAI): implement SMART_ACTION_DISABLE_REWARD (#21105) 2025-02-01 22:49:41 +01:00
Kitzunu 47c5ff904f refactor(Core/Disables): Convert from Namespace to Class Structure (#21109) 2025-02-01 22:48:52 +01:00
github-actions[bot] 3b12decaae chore(DB): import pending files
Referenced commit(s): 9e9a2fe5e3
2025-02-01 21:47:46 +00:00
Kitzunu 9e9a2fe5e3 refactor(Core/ObjectMgr): Change GetAcoreString from char const* to s… (#21213)
...ring
2025-02-01 22:46:42 +01:00
Kitzunu 137337601d fix(DB/Misc): Bad delete in update file (#21307)
Co-authored-by: Andrew <47818697+Nyeriah@users.noreply.github.com>
2025-02-01 16:48:24 +01:00
github-actions[bot] 5e7d4bd9d7 chore(DB): import pending files
Referenced commit(s): c94f41d868
2025-02-01 07:51:16 +00:00
Andrew d3296f6462 refactor(Scripts/MagisterTerrace): Clean up Vexallus instance script … (#21303) 2025-02-01 08:50:21 +01:00
github-actions[bot] c94f41d868 chore(DB): import pending files
Referenced commit(s): 22e028b054
2025-02-01 07:50:10 +00:00
Andrew 22e028b054 fix(DB/SAI): Fix Brightscale Wyrm Energy Infusion (#21304) 2025-02-01 08:49:05 +01:00
github-actions[bot] 80220f9178 chore(DB): import pending files
Referenced commit(s): 9c214f0de0
2025-01-31 16:23:28 +00:00
blinkysc 9c214f0de0 fix(Scripts/MagisterTerrace/DB) Vexallus Boss Complete Overhaul (#21266) 2025-01-31 17:22:25 +01:00
github-actions[bot] 158f81a973 chore(DB): import pending files
Referenced commit(s): 00b8a3f419
2025-01-31 12:20:19 +00:00
Jelle Meeus 00b8a3f419 feat(Core/WorldState): implement Battle for Sun's Reach Event (#21219)
Co-authored-by: killerwife <killerwife@gmail.com>
Co-authored-by: Benjamin Jackson <38561765+heyitsbench@users.noreply.github.com>
Co-authored-by: MantisLord <sabinprosper@gmail.com>
2025-01-31 13:19:12 +01:00
vrachv ca51e7fc22 fix(Scripts/SunwellPlateau): Fix Felmyst start fight (#21291) 2025-01-30 11:26:56 +01:00
Andrew 2809f70dc1 fix(Scripts/MagisterTerrace): Fix Kael's outro and close door during … (#21289) 2025-01-29 06:27:30 -03:00
vrachv 18cb8f7d6c fix(Scripts/SunwellPlateau): Fix Madrigosa flight movement (#21290) 2025-01-29 02:47:34 -03:00
github-actions[bot] dfd09a3541 chore(DB): import pending files
Referenced commit(s): 1c036f69d1
2025-01-28 09:43:13 +00:00
Rocco Silipo 1c036f69d1 fix(DB/Creature) Update Amani Trainer SmartAI comments. (#21282) 2025-01-28 10:42:12 +01:00
github-actions[bot] d5e68136bf chore(DB): import pending files
Referenced commit(s): 33eedba1bf
2025-01-27 15:49:51 +00:00
blinkysc 33eedba1bf fix(DB/SAI) Fix Amani Trainer Abilities (#21269) 2025-01-27 16:48:50 +01:00
github-actions[bot] fb3fd37c6e chore(DB): import pending files
Referenced commit(s): ed99f050fa
2025-01-27 10:36:14 +00:00
Andrew ed99f050fa fix(Scripts/MagisterTerrace): Rescript Kael's intro (#21278) 2025-01-27 11:34:59 +01:00
github-actions[bot] 777f7ed935 chore(DB): import pending files
Referenced commit(s): 9b3d54dd60
2025-01-27 10:11:36 +00:00
Kitzunu 9b3d54dd60 refactor(Core/Motd): improve and simplify (#21252) 2025-01-27 11:07:46 +01:00
Andrew 8f16de2084 feat(Core/Unit): Implement SetEmoteState() and ClearEmoteState() helpers (#21279) 2025-01-27 06:35:12 -03:00
github-actions[bot] 899b3df4a7 chore(DB): import pending files
Referenced commit(s): dc0f77e0d2
2025-01-26 19:49:01 +00:00
Ryan Turner dc0f77e0d2 fix(DB/SAI) - Fixes quest Counterattack! sometimes not being completed and adds 1 ability to the creature. (#21050) 2025-01-26 20:48:01 +01:00
github-actions[bot] 894fb1cf35 chore(DB): import pending files
Referenced commit(s): f824f15301
2025-01-26 10:05:08 +00:00
Rocco Silipo f824f15301 fix(DB/Creature) Several Dragonflayers now have a SmartAI. (#21275) 2025-01-26 11:04:03 +01:00
github-actions[bot] 81ddb4b41c chore(DB): import pending files
Referenced commit(s): edf2959a26
2025-01-26 08:41:40 +00:00
Grimdhex edf2959a26 feat(Core/Creatures): implement a sparring system (#19824) 2025-01-26 09:40:37 +01:00
github-actions[bot] 2b4a6cc902 chore(DB): import pending files
Referenced commit(s): a74e06c27c
2025-01-26 08:38:32 +00:00
Exitare a74e06c27c feat(Core/Autobroacast): Add autobroadcast locale (#20946) 2025-01-26 09:37:32 +01:00
Ryan Turner 778742749a SECURITY.md File Update (#20190) 2025-01-26 08:20:03 +01:00
blinkysc d297030a08 fix(Scripts/BlackTemple): Fix Gurtogg will not use acidic wound in phase 2 (#21253) 2025-01-25 19:06:21 -03:00
skelUA d2500e8cb7 fix(Core/Auction): Fix usable item search in auction (#21267) 2025-01-25 22:04:01 +01:00
github-actions[bot] 1acd652105 chore(DB): import pending files
Referenced commit(s): f42019574b
2025-01-25 20:51:07 +00:00
Andrew f42019574b fix(DB/SAI): Correct Phoenix/Egg rebirth and combat behaviour (#21261) 2025-01-25 17:50:08 -03:00
Jelle Meeus b47ec3b5c8 fix(Apps/Codestyle): ignore comments for some checks (#21268) 2025-01-25 19:58:01 +01:00
github-actions[bot] f692ae9003 chore(DB): import pending files
Referenced commit(s): d3cdd2fbf7
2025-01-24 22:38:22 +00:00
Jelle Meeus d3cdd2fbf7 fix(DB/Gameobject): remove extra Sanctum Planetarium (#21251) 2025-01-24 23:37:23 +01:00
github-actions[bot] dcf097aa09 chore(DB): import pending files
Referenced commit(s): c54de87645
2025-01-24 18:48:48 +00:00
Tereneckla c54de87645 fix(DB/Loot) Clean up loot of bosses in MGT HC (#21262) 2025-01-24 19:47:48 +01:00
Andrew c08a1eefff fix(Scripts/MagisterTerrace): Fix Phoenixes and eggs not despawning (#21260) 2025-01-24 19:44:54 +01:00
github-actions[bot] a13c2ff55f chore(DB): import pending files
Referenced commit(s): d99285ed26
2025-01-23 17:30:31 +00:00
Andrew d99285ed26 fix(DB/Creature): Fix Flamestrike inhabit types (#21249) 2025-01-23 18:29:29 +01:00
SaW 365224039f fix(Core/Threading): Refactored LockedQueue / MPSCQueue - Improve thread safety, performance, and memory management (#21127) 2025-01-23 10:26:01 +01:00
github-actions[bot] 177cd47a9f chore(DB): import pending files
Referenced commit(s): 2ca4551e03
2025-01-23 07:53:30 +00:00
Andrew 2ca4551e03 fix(DB/Creature): Correct Sunblade Sentinel fel lightning (#21245) 2025-01-23 08:52:28 +01:00
github-actions[bot] 2baa3aa349 chore(DB): import pending files
Referenced commit(s): eee1a8bc89
2025-01-23 07:45:02 +00:00
Andrew a38da4ba69 fix(Scripts/MagisterTerrace): Implement missing Kaelthas text line (#21247) 2025-01-23 08:44:18 +01:00
Andrew eee1a8bc89 fix(DB/Creature): Felblood Kael'thas should despawn on evade (#21246) 2025-01-23 08:43:09 +01:00
blinkysc 53f8e306e8 fix(Scripts/MagistersTerrace) Add 5s Vexallus Pure Energy (#21239)
Co-authored-by: Andrew <47818697+Nyeriah@users.noreply.github.com>
2025-01-23 01:25:14 -03:00
github-actions[bot] 7724a755fa chore(DB): import pending files
Referenced commit(s): f0507fbd2c
2025-01-23 03:03:43 +00:00
blinkysc 67c1f13f4a fix(Scripts/MagistersTerrace): Pheonix will now reset after death (#21240) 2025-01-23 00:03:13 -03:00
Rocco Silipo f0507fbd2c fix(DB/SAI): Kael'Thas Phoenix now only use fireball during gravity Lapse. (#21244) 2025-01-23 00:02:42 -03:00
github-actions[bot] 2490c9e456 chore(DB): import pending files
Referenced commit(s): 4927d20d48
2025-01-22 14:19:05 +00:00
Rocco Silipo d313248685 fix(DB/Creature) Sunblade Sentinel "Fel Lighting" has different timers and comment updated. (#21229) 2025-01-22 15:18:41 +01:00
github-actions[bot] c44e13babd chore(DB): import pending files
Referenced commit(s): 3870426a4b
2025-01-22 14:18:18 +00:00
Rocco Silipo 4927d20d48 fix(DB/Creature) Fel Crystals no longer follow players. (#21227) 2025-01-22 15:18:02 +01:00
Rocco Silipo 3870426a4b fix(DB/Creature) Various Shoveltusk SmartAI added. (#21234) 2025-01-22 15:17:18 +01:00
Andrew d851f97f40 fix(Core/Instances): Ensure team is acquired before spawning creatures (#21221) 2025-01-21 20:13:22 -03:00
Kitzunu 0733c30471 refactor(Core/Player): Improve Channel.RestrictedLfg handling (#21145) 2025-01-21 19:09:31 +01:00
Grimdhex 7725610ff3 chore(Apps/Codestyle): add new checks for SQL files (#21026) 2025-01-21 10:44:39 +01:00
Kitzunu 847d2156fc refactor(Core/Loot): Simplify GetFishLoot with for loop and merge Get… (#21217) 2025-01-20 14:09:27 +01:00
sudlud c72ac105e4 fix(Core/Gameobject): prevent getting empty fishing loot (#21216) 2025-01-19 21:34:02 +01:00
Andrew b238daa7a8 refactor(Scripts/BloodFurnace): Clean up instance script (#21207) 2025-01-19 20:33:19 +01:00
Kitzunu 9c43adc445 fix(Core/ObjectMgr): Potential crash in GetModuleString() (#21211) 2025-01-19 20:31:54 +01:00
Jelle Meeus 5bc512f75c chore(Docker): Update dev container to ubuntu24.04 (#21044) 2025-01-19 12:46:28 +01:00
github-actions[bot] f7ae5115ef chore(DB): import pending files
Referenced commit(s): 9db9c42cb0
2025-01-19 11:43:20 +00:00
daobashun 9db9c42cb0 fix(Scripts/ScarletMonastery): improvement ScarletMonastery (#17558)
Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>
2025-01-19 12:42:18 +01:00
github-actions[bot] 5b743be361 chore(DB): import pending files
Referenced commit(s): eb37cd8d3e
2025-01-19 07:20:12 +00:00
FlyingArowana eb37cd8d3e fix(Core/DB) - Correct the max length of a username to 17 characters (#21183) 2025-01-19 08:18:56 +01:00
Razor2142 20ad1c68ec fix(Scripts/Naxxramas): fixed invalid horseman state on instance init (#21167) 2025-01-19 08:15:34 +01:00
FlyingArowana 759c912bd1 feat(Core) - Additional "ActionButton" log information. (#21201) 2025-01-19 08:14:11 +01:00
github-actions[bot] 33003c0f6f chore(DB): import pending files
Referenced commit(s): d840e7e858
2025-01-19 07:12:12 +00:00
sudlud d840e7e858 fix(DB/Gameobject): Pooling and sniffed Values for 2744 'Giant Clam' spawns (#21203) 2025-01-19 08:11:13 +01:00
iThorgrim 90566589b0 feat(Scripting/Spell): Add new hooks for Spell (OnSpellCast, OnSpellPrepare, OnSpellCancel) (#21149) 2025-01-18 12:26:39 -03:00
github-actions[bot] c55346dbe3 chore(DB): import pending files
Referenced commit(s): 01f34b2b34
2025-01-18 11:27:23 +00:00
Rocco Silipo 01f34b2b34 fix(DB/Creature) Kel'thuzad no longer attacks players. (#21199) 2025-01-18 12:26:24 +01:00
github-actions[bot] 459ffa7efe chore(DB): import pending files
Referenced commit(s): 818c03cf74
2025-01-18 06:25:08 +00:00
sudlud 818c03cf74 fix(DB/Gameobject): pooling and sniffed Values for 19018 'Giant Clam' spawns (#21197) 2025-01-18 07:24:04 +01:00
Andrew 882951c613 fix(Core/Unit): Fix fast creatures chasing indefinitely (#21200) 2025-01-18 00:00:04 -03:00
Andrew 4a3fab424c refactor(Core/Instances): Implement GetTeamIdInInstance() for two-fac… (#21168) 2025-01-17 23:51:25 -03:00
github-actions[bot] 30a9c87d7d chore(DB): import pending files
Referenced commit(s): 12aa9dc12c
2025-01-17 09:28:46 +00:00
Kitzunu cdbc510cf0 fix(Script/WP): correct output of wp show command (#21193) 2025-01-17 10:28:30 +01:00
Kitzunu 12aa9dc12c fix(Core/Misc): Resolve output formatting issues with fmt library (#21191) 2025-01-17 10:27:46 +01:00
github-actions[bot] 9a50d9f228 chore(DB): import pending files
Referenced commit(s): 38548a9b22
2025-01-17 08:10:42 +00:00
Andrew 38548a9b22 fix(DB/Creature): Remove rooted inhabit type from Coilfang Beast Tamer (#21196) 2025-01-17 09:09:41 +01:00
github-actions[bot] cbe611978c chore(DB): import pending files
Referenced commit(s): de0b1137d8
2025-01-16 21:11:34 +00:00
Rocco Silipo de0b1137d8 fix(DB/Creature) Bloodscalp Witch Doctor can now move during combat. (#21189) 2025-01-16 22:10:28 +01:00
Kitzunu fca38b8c33 refactor(Github/Misc): Deprecate Suggestion label and use Github Type (#21192) 2025-01-16 21:00:07 +01:00
Kitzunu 2aa8c8aa80 refactor(Core/SmartScripts): Clean up validation logic by replacing A… (#21184) 2025-01-16 20:49:26 +01:00
github-actions[bot] e2981cbbc9 chore(DB): import pending files
Referenced commit(s): 8c9dd1aeeb
2025-01-16 08:54:15 +00:00
Benjamin Jackson c22d30f120 fix(DB/Spell): Add sniffed data for Medallion of Karabor. (#21185) 2025-01-16 09:54:09 +01:00
github-actions[bot] 93b89d828e chore(DB): import pending files
Referenced commit(s): 4328567e2e
2025-01-16 08:53:53 +00:00
Andrew 8c9dd1aeeb fix(DB/SAI): Tamed Amani Crocolisk abilities (#21188) 2025-01-16 09:53:11 +01:00
Andrew 4328567e2e fix(DB/SAI): Amani Lynx shouldn't use dash (#21187) 2025-01-16 09:52:53 +01:00
github-actions[bot] 99d2cffec4 chore(DB): import pending files
Referenced commit(s): 14dda24d2b
2025-01-16 00:10:13 +00:00
Andrew 14dda24d2b fix(Scripts/Silverpine): Fix Fearleia not reseting and modernize Pyre… (#21159) 2025-01-15 21:09:15 -03:00
github-actions[bot] b14be1b932 chore(DB): import pending files
Referenced commit(s): aefd3a5a3f
2025-01-15 22:53:13 +00:00
Jelle Meeus aefd3a5a3f fix(Scripts/ZulAman): prevent early engaging of door guardians to skip timed event (#21177) 2025-01-15 19:52:10 -03:00
github-actions[bot] a37e0c9717 chore(DB): import pending files
Referenced commit(s): 3f1d54b871
2025-01-15 11:28:49 +00:00
Benjamin Jackson 3f1d54b871 fix(DB/Spell): Correct map ID for Medallion of Karabor. (#21175) 2025-01-15 12:27:48 +01:00
github-actions[bot] c3f4995366 chore(DB): import pending files
Referenced commit(s): d234af1d72
2025-01-15 07:44:03 +00:00
Rocco Silipo d234af1d72 fix(DB/Creature) Some Borean Tundra npcs now have a smartai. (#21171) 2025-01-15 08:42:58 +01:00
github-actions[bot] 04ddc18581 chore(DB): import pending files
Referenced commit(s): 1db36de350
2025-01-15 02:52:57 +00:00
Exitare 1db36de350 fix(DB/Spell): fix item "Blessed Medallion of Karabor" (#20948)
Co-authored-by: Grimdhex <176165533+Grimdhex@users.noreply.github.com>
2025-01-14 23:51:55 -03:00
github-actions[bot] 65b155e6a4 chore(DB): import pending files
Referenced commit(s): a1cf6a7ceb
2025-01-15 01:10:08 +00:00
Jelle Meeus a1cf6a7ceb fix(Scripts/ZulAman): Zul'Jin reduce procs of Energy Storm Aura (#21169) 2025-01-14 22:09:07 -03:00
github-actions[bot] 070fbd58b9 chore(DB): import pending files
Referenced commit(s): ea63eb6e02
2025-01-14 20:45:17 +00:00
Andrew ea63eb6e02 fix(DB/SAI): Amani'shi Berserker SAI (#21165) 2025-01-14 21:44:18 +01:00
github-actions[bot] c0979337e2 chore(DB): import pending files
Referenced commit(s): 6c4db8e667
2025-01-14 16:51:11 +00:00
Rocco Silipo 6c4db8e667 fix(DB/Creature) Solve some npc problems along the road to Drakos. (#21152) 2025-01-14 17:50:10 +01:00
github-actions[bot] ee0525843a chore(DB): import pending files
Referenced commit(s): 995eed88a5
2025-01-14 11:23:36 +00:00
Jelle Meeus 995eed88a5 fix(Scripts/ZulAman): Akilzon Gauntlet hyperspawn, handling Eagle Trash Triggers (#21129) 2025-01-14 12:22:37 +01:00
github-actions[bot] 1fdc887780 chore(DB): import pending files
Referenced commit(s): b1d72f14a7
2025-01-14 10:24:32 +00:00
Rocco Silipo b1d72f14a7 fix(DB/Creature) Remove double Nerub'ar Victims and set a Crystalline Tender movement type to 0. (#21153) 2025-01-14 11:23:32 +01:00
github-actions[bot] f4534e256a chore(DB): import pending files
Referenced commit(s): 29f9187882
2025-01-14 10:13:03 +00:00
Andrew c16af59b5f fix(Scripts/ZulAman): Store chest count in DB (#21160) 2025-01-14 11:12:15 +01:00
FlyingArowana 29f9187882 fix(DB/page_text) - Added Sniffed Texts to the plaques in Hall of Champions (Scarlet Monastery Armoury) (#21157)
co-author @heyitsbench
2025-01-14 11:12:00 +01:00
github-actions[bot] 88914e6a48 chore(DB): import pending files
Referenced commit(s): 10be6b056f
2025-01-14 02:40:41 +00:00
Exitare 10be6b056f fix(DB/SAI): Sunfury Bloodwarder do not intercept anymore (#21147) 2025-01-13 23:39:43 -03:00
Andrew 241d05f569 fix(Core/Map): Fix crash OnPlayerLeave() (#21155) 2025-01-13 17:33:05 -03:00
github-actions[bot] 8bd66612db chore(DB): import pending files
Referenced commit(s): 3d1efbd4e5
2025-01-13 16:48:33 +00:00
Andrew 3d1efbd4e5 fix(DB/Conditions): Havenshire horses spellclick should require Grand… (#21154) 2025-01-13 17:47:30 +01:00
manstfu bf4118362a fix(Core/Group): CF Faction Assign & Leader Instance Faction (#21118)
Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>
2025-01-13 08:54:47 -03:00
Andrew 67afd97edf fix(Scripts/ZulAman): Use Zul'jins threatlist to search for cyclone t… (#21138) 2025-01-12 15:23:09 +01:00
github-actions[bot] 286e79e8dd chore(DB): import pending files
Referenced commit(s): e9dfbe0163
2025-01-12 13:34:36 +00:00
Tereneckla 085a8d31a0 fix(DB/Loot): Malacrass should drop 2 pieces of loot and sometimes Tiny Vodoo Mask (#21139) 2025-01-12 14:33:46 +01:00
github-actions[bot] e9dfbe0163 chore(DB): import pending files
Referenced commit(s): 849e10439e
2025-01-12 13:33:38 +00:00
FlyingArowana 849e10439e fix(DB/Creature) - Removes weapons from Rorgish Jowl (#21142) 2025-01-12 14:32:34 +01:00
iThorgrim 03c263f88e feat(CMake/Eluna): Update CMakeLists for modules to allow Eluna to switch Lua version (#21123) 2025-01-11 13:03:20 +01:00
github-actions[bot] 6baae1d942 chore(DB): import pending files
Referenced commit(s): fe30831bc2
2025-01-11 01:26:02 +00:00
Andrew 601901b0de fix(DB/SAI): Fix Marauding Bursters repositioning in combat (#21135) 2025-01-11 02:25:43 +01:00
github-actions[bot] fe30831bc2 chore(DB): import pending files
Referenced commit(s): ea28a9f249
2025-01-11 01:25:02 +00:00
Andrew ea28a9f249 fix(DB/Creature): Akil'zon interrupt immunity (#21130) 2025-01-11 02:23:59 +01:00
github-actions[bot] 4c18c6a8cf chore(DB): import pending files
Referenced commit(s): 07937d34da
2025-01-10 23:49:59 +00:00
Andrew 07937d34da feat(Scripts/Commands): Implement opendoor command (#21136) 2025-01-10 20:48:58 -03:00
github-actions[bot] 8b21b6150f chore(DB): import pending files
Referenced commit(s): 3e465ddedc
2025-01-10 23:44:14 +00:00
Andrew 3e465ddedc feat(Scripts/Commands): Update GetBossState to display all states (#21134) 2025-01-10 20:43:11 -03:00
Jelle Meeus 5bc20a184d fix(Player/SpellQueue): bandaid crashfix (#21103) 2025-01-10 19:38:24 -03:00
Andrew e941d43a0a fix(Scripts/ZulAman): Fix Hexlord gate not opening after crashes (#21133) 2025-01-10 19:15:05 -03:00
github-actions[bot] 71155cb730 chore(DB): import pending files
Referenced commit(s): 564ccd945a
2025-01-10 21:13:37 +00:00
Jelle Meeus 564ccd945a fix(Scripts/ZulAman): Zul'jin Add Cooldown to EnergyStorm proc (#21132) 2025-01-10 18:12:34 -03:00
Andrew 89204a4cdc fix(Scripts/ZulAman): Limit target search range for Cyclones (#21131) 2025-01-10 21:51:30 +01:00
github-actions[bot] 1fca5a13bd chore(DB): import pending files
Referenced commit(s): fcfa35139e
2025-01-10 17:21:47 +00:00
Exitare fcfa35139e fix(Scripts/ShatteredHalls): Add scripts & spawn for quest "Imprisoned in the citadel" (#21114) 2025-01-10 14:20:47 -03:00
github-actions[bot] 07a077a207 chore(DB): import pending files
Referenced commit(s): 70c34bd403
2025-01-09 19:21:01 +00:00
Exitare 22397d0411 fix(DB/Creature)Badlands Reagent Run II dragons don't aggro when sucking blood (#21021) 2025-01-09 20:20:54 +01:00
Tralenor 70c34bd403 fix(Core/World): edge case when last Char on realm was deleted (#20864) 2025-01-09 20:20:02 +01:00
github-actions[bot] 6b22c7b43e chore(DB): import pending files
Referenced commit(s): fb3749718e
2025-01-09 19:16:51 +00:00
Andrew fb3749718e fix(Scripts/Spells): Move Curse of Mending (7098 & 39647) to spell sc… (#21117) 2025-01-09 20:15:50 +01:00
github-actions[bot] 42e0ab5a5d chore(DB): import pending files
Referenced commit(s): f7c9170c79
2025-01-09 09:25:15 +00:00
Rocco Silipo f7c9170c79 fix(DB/Creatures) Remove Tanzar from his cage and activate group loot for its chest. (#21120) 2025-01-09 10:24:18 +01:00
EricksOliveira d62c6e36d8 fix(Scripts/SunwellPlateau): Muru - Changed the amount of Tick Negative Energy Periodic (#21102) 2025-01-08 10:49:01 -03:00
SaW 64d524f889 fix(Core/Threading): Modernize/Improve thread safety, performance, and maintainability of the MapUpdater class (#21081)
Co-authored-by: Anton Popovichenko <walkline.ua@gmail.com>
2025-01-08 10:40:57 -03:00
Andrew 373c442a1d fix(Scripts/ZulAman): Increase Jan'alai teleport exclusion zone (#21115) 2025-01-08 04:45:31 +01:00
Jelle Meeus cbfeb3edbe fix(Scripts/ZulAman): Scout's hut search should ignore the world trigger near Jan'alai (#21113) 2025-01-07 18:06:15 +01:00
EricksOliveira b373df9b3d fix(Scripts/Halion): Halion freeze against "Feign Death" hunters (#21093) 2025-01-07 06:13:09 +01:00
github-actions[bot] fd567a2a6f chore(DB): import pending files
Referenced commit(s): 0c2d735eba
2025-01-07 05:12:15 +00:00
Jelle Meeus 07ca1051ec fix(DB/Conditions): remove conditions for Rune of Mazthoril (#21053) 2025-01-07 06:11:54 +01:00
github-actions[bot] 0c2d735eba chore(DB): import pending files
Referenced commit(s): 73038058da
2025-01-07 05:11:16 +00:00
Exitare 73038058da fix(DB/Loot) Sealed Craftsman's Writ loot problem (#20981) 2025-01-07 06:10:14 +01:00
Kitzunu 4b8dca1ea2 fix(Core/Misc): Correct some fmt logs (#21106) 2025-01-07 06:08:19 +01:00
github-actions[bot] 1d2b1511a5 chore(DB): import pending files
Referenced commit(s): aa0f3f4a9e
2025-01-07 05:08:04 +00:00
Rocco Silipo 6692637c26 fix(DB/Creature) Add Waypoint and Creature Formation for Medicine Man and Wind Walker (#21108) 2025-01-07 06:07:25 +01:00
github-actions[bot] aa0f3f4a9e chore(DB): import pending files
Referenced commit(s): c1e7c2e9b9
2025-01-07 05:07:04 +00:00
Rocco Silipo c1e7c2e9b9 fix(DB/Creature) Clean road to Halazzi. (#21110) 2025-01-07 06:06:02 +01:00
Dan 72ae994a65 fix(Scripts/ZulAman): make sure Malacrass timer is delayed only when it should be triggered during channel of Spirit Bolts (#21089) 2025-01-06 18:44:44 +01:00
Andrew 131671d793 refactor(Scripts/ZulAman): clean up Helazzi code (#21101) 2025-01-06 13:19:03 +01:00
github-actions[bot] e91176a563 chore(DB): import pending files
Referenced commit(s): 5f81bdb25d
2025-01-05 20:50:36 +00:00
Andrew 5f81bdb25d fix(Scripts/ZulAman): Fix initial pack not chasing distant players (#21098) 2025-01-05 21:49:33 +01:00
github-actions[bot] 43994e0fb1 chore(DB): import pending files
Referenced commit(s): f7d500c3f1
2025-01-05 20:01:50 +00:00
Jelle Meeus f7d500c3f1 fix(DB/SmartAI): HEALTH_PCT where Min equals Max (#21097) 2025-01-05 17:00:48 -03:00
github-actions[bot] 84531500e5 chore(DB): import pending files
Referenced commit(s): df89704ab5
2025-01-05 17:55:46 +00:00
Rocco Silipo 460f86d4d2 fix(DB/Creature) Rain of Darkness and Saronite Arrows spawn. (#21094) 2025-01-05 18:55:38 +01:00
Jelle Meeus df89704ab5 fix(Scripts/ZulAman): add Scout run to drums (#21095)
Co-authored-by: MantisLord <sabinprosper@gmail.com>
2025-01-05 18:54:43 +01:00
github-actions[bot] 956b48da21 chore(DB): import pending files
Referenced commit(s): 0b16bfa7ae
2025-01-05 16:53:31 +00:00
Jelle Meeus 0b16bfa7ae fix(DB/SmartAI): more consistent bear summon, despawn bear on reset (#21096) 2025-01-05 17:52:31 +01:00
github-actions[bot] d5cb202735 chore(DB): import pending files
Referenced commit(s): 15b11ae6e0
2025-01-05 15:54:30 +00:00
mostlynick3 15b11ae6e0 fix(DB/Creature): Correct behavior and emote of oil-covered birds (#20923) 2025-01-05 16:53:26 +01:00
github-actions[bot] 5df6d2b151 chore(DB): import pending files
Referenced commit(s): 9ab46f81a1
2025-01-05 15:32:33 +00:00
Exitare 9ab46f81a1 fix(DB/Creature): Set respawn to 15s for Soul Fragments in the Shrine of Lost Souls (#20992) 2025-01-05 16:31:33 +01:00
github-actions[bot] 161c433cf0 chore(DB): import pending files
Referenced commit(s): 87bf90b9da
2025-01-05 09:53:11 +00:00
Rocco Silipo 87bf90b9da fix (DB/Creature) Remove some Amanshi Scouts and add a Waypoint for two of them. (#21092) 2025-01-05 10:52:06 +01:00
Rocco Silipo 712e4af5c2 fix (Boss/Script) Increase Spell Hatch Egg cooldown by one second. (#21090) 2025-01-04 15:51:54 +01:00
github-actions[bot] 3cdbff009c chore(DB): import pending files
Referenced commit(s): 6598be59c5
2025-01-04 10:08:32 +00:00
Jelle Meeus 6598be59c5 fix(Scripts/ZulAman): initial Amani'shi pack (#21084) 2025-01-04 11:07:30 +01:00
Kitzunu 275ff66e29 chore(Core/World): improve server restart/shutdown logging (#21046) 2025-01-04 10:36:23 +01:00
github-actions[bot] 7084ebdcea chore(DB): import pending files
Referenced commit(s): 2f50923caf
2025-01-04 07:32:21 +00:00
daobashun 2f50923caf fix(DB/SAI): Add dialogue between creature argah 27440 and creature sagai 27441 (#21075) 2025-01-04 08:31:22 +01:00
github-actions[bot] 86cd052abb chore(DB): import pending files
Referenced commit(s): a907edb13c
2025-01-04 07:20:28 +00:00
Trinitarius a907edb13c fix(DB/Locale): deDE fixes for quest offer reward entry 8346 (#21076) 2025-01-04 08:19:28 +01:00
Dan 3193a5ba5a fix(Scripts/ZulAman): make Zul'Jin p3 cyclones go to random targets (#21087) 2025-01-03 23:01:54 +01:00
github-actions[bot] fd4019c074 chore(DB): import pending files
Referenced commit(s): 3c19ab5fde
2025-01-03 17:29:56 +00:00
Andrew 3c19ab5fde fix(Scripts/ZulAman): Fix Jan'lai teleport spells (#21083) 2025-01-03 14:28:56 -03:00
Jelle Meeus 0594a8f518 fix(Scripts/ZulAman): reset Nalorakk's intro on wipe (#21063)
Co-authored-by: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com>
2025-01-01 20:25:39 -03:00
Jelle Meeus fa9718b737 fix(Core/Spells): Remove level scaling from Booming Voice (#21054) 2025-01-01 20:24:39 -03:00
github-actions[bot] d7189cf87e chore(DB): import pending files
Referenced commit(s): 106e0ed4d2
2024-12-31 08:42:09 +00:00
Rocco Silipo 63bd7cdca3 fix (DB/Creature) Citizen of Havenshire waypoints and SmartAI. (#21048) 2024-12-31 09:41:47 +01:00
Rocco Silipo 106e0ed4d2 fix(DB/Creature) Scarlet Peasant SmartAI. (#21069) 2024-12-31 09:40:53 +01:00
github-actions[bot] 35bc0a78ce chore(DB): import pending files
Referenced commit(s): e837fa84f3
2024-12-30 22:24:48 +00:00
Jelle Meeus e837fa84f3 fix(Scripts/ZulAman): Eagle Gauntlet behavior (#20947) 2024-12-30 23:23:46 +01:00
Andrew d6edcf810d fix(Scripts/PitOfSaron): Fix Scourgelord Tyrannus not respawning afte… (#21070) 2024-12-30 18:56:18 -03:00
github-actions[bot] 236f60799c chore(DB): import pending files
Referenced commit(s): b6c9573070
2024-12-30 21:21:56 +00:00
Trinitarius b6c9573070 fix(DB/Locale): deDE fixes for quest greetings (#21067) 2024-12-30 22:20:52 +01:00
blinkysc 4e49f522b4 fix(Scripts/PitOfSauron): Reset Scourgelord Tyrannus encounter state (#21057)
Co-authored-by: Nicholas Lee <nicholaslee@Nicholass-MacBook-Air.local>
Co-authored-by: blinkysc <binders-36-gap@icloud.com>
2024-12-30 18:09:20 -03:00
Kitzunu 6ea9b7a9cb fix(Core/Player): fix output for disabled maps (#21068) 2024-12-30 16:42:09 -03:00
github-actions[bot] 715f55900a chore(DB): import pending files
Referenced commit(s): e6cf00aefa
2024-12-30 19:25:30 +00:00
vrachv e6cf00aefa fix(DB/SAI): restore Drakuru’s (id: 28802) health to 100% upon charming (#21037) 2024-12-30 20:24:29 +01:00
Jelle Meeus 467a5116f1 fix(Scripts/ZulAman): add Boss Boundaries (#21065) 2024-12-30 15:05:43 -03:00
Jelle Meeus 6313d538c7 fix(Scripts/ZulAman): add Altar Torch visuals (#21064) 2024-12-30 15:32:33 +01:00
github-actions[bot] 9b5fc8775e chore(DB): import pending files
Referenced commit(s): 0e6fffa72e
2024-12-29 19:57:54 +00:00
Trinitarius 0e6fffa72e fix(DB/Locale): deDE fixes cata quest texts to wrath state - part 2 (#21059) 2024-12-29 20:56:55 +01:00
github-actions[bot] 26ae20a2f3 chore(DB): import pending files
Referenced commit(s): 8f7fc6d0d1
2024-12-29 19:47:47 +00:00
Trinitarius 8f7fc6d0d1 fix(DB/Locale): deDE fixes cata quest texts to wrath state (#21049) 2024-12-29 20:46:44 +01:00
vrachv e152d6a3aa fix(Scripts/Karazhan): Chess pieces reset to correct positions (#21061) 2024-12-29 20:13:22 +01:00
github-actions[bot] a97bff0baa chore(DB): import pending files
Referenced commit(s): d949192455
2024-12-29 18:14:54 +00:00
Benjamin Jackson d949192455 fix(Scripts/Zul'Aman): Band-Aid fix for hostage loot. (#21060) 2024-12-29 19:13:52 +01:00
github-actions[bot] a710b9873d chore(DB): import pending files
Referenced commit(s): 5dfe8973bb
2024-12-29 17:51:19 +00:00
Kitzunu 5dfe8973bb chore(DB): Delete empty/null entries (#21058) 2024-12-29 18:50:20 +01:00
github-actions[bot] ca686d8798 chore(DB): import pending files
Referenced commit(s): 3acf687b08
2024-12-29 16:18:35 +00:00
Trinitarius 3acf687b08 fix(DB/Creature): Arcanist Helion gossip text (#21062) 2024-12-29 17:17:34 +01:00
github-actions[bot] 61521231ef chore(DB): import pending files
Referenced commit(s): 7ab42194d7
2024-12-28 22:08:04 +00:00
FlyingArowana 7ab42194d7 fix(DB/SAI): SAI overhaul of Deadwood Warrior, Gardener and Pathfinder (#20901) 2024-12-28 19:07:05 -03:00
github-actions[bot] 8679e2900e chore(DB): import pending files
Referenced commit(s): 638b8ea621
2024-12-28 13:24:12 +00:00
Jelle Meeus 638b8ea621 fix(Scripts/Spells): Death Knight Army of the Dead auras (#19795) 2024-12-28 14:23:14 +01:00
github-actions[bot] 118c426f74 chore(DB): import pending files
Referenced commit(s): a1e1bded35
2024-12-28 01:34:16 +00:00
Kitzunu a1e1bded35 fix(Scripts/ICC): Use threatlist for vampiric bite (#21012)
Co-authored-by: Grimdhex <176165533+Grimdhex@users.noreply.github.com>
2024-12-27 22:33:18 -03:00
Saqra1 af9f416751 fix(Core/Spells): Initial threat for periodic effects (#21045)
Co-authored-by: tarwyn <tarwyn@thesilvercircle.org>
2024-12-26 18:25:08 +01:00
github-actions[bot] 987c7910fa chore(DB): import pending files
Referenced commit(s): 8ed7c5aa1f
2024-12-26 17:21:51 +00:00
Andrew 8ed7c5aa1f fix(Scripts/SSC): Fix console panel gate not opening (#21047) 2024-12-26 18:20:52 +01:00
Kitzunu bff594c4f5 feat(Unit/Misc): HasAnyAuras() HasAllAuras() HasAuras() (#21040) 2024-12-26 05:51:54 -03:00
Andrew aa24f50a03 chore(Scripts/SSC): Move Vashj summons to the new format (#21042) 2024-12-26 05:51:02 -03:00
github-actions[bot] 59f79b5a3c chore(DB): import pending files
Referenced commit(s): 7f826731b7
2024-12-26 08:50:46 +00:00
Exitare 7f826731b7 fix(DB/Creature): Add Illidari Nightlord interrupt immunity (#21031)
Co-authored-by: Grimdhex <176165533+Grimdhex@users.noreply.github.com>
2024-12-26 09:49:45 +01:00
github-actions[bot] e912547c40 chore(DB): import pending files
Referenced commit(s): f8ea1316c9
2024-12-26 08:48:32 +00:00
Exitare f8ea1316c9 fix(DB/Creature)Ashtongue Stormcaller missing interrupt immunity (#21030) 2024-12-26 09:47:34 +01:00
Kitzunu e68faf71fe fix(Core/Log): fmt output for appender (#21043) 2024-12-25 23:17:25 +01:00
sudlud 0828851313 feat(CI/linux-build): introduce option to set maxerrors for compilation (#21022) 2024-12-25 22:46:45 +01:00
Grimdhex fcc3f7f7cb fix(Script/Zul'Aman): adjust Zuljin timers (#20919) 2024-12-25 17:57:17 -03:00
github-actions[bot] 4073a8dfc7 chore(DB): import pending files
Referenced commit(s): 532d33c89e
2024-12-25 18:51:48 +00:00
Trinitarius 532d33c89e fix(DB/page_text_locale): deDE name and location fixes (#21035) 2024-12-25 19:50:48 +01:00
github-actions[bot] ddd272f6a2 chore(DB): import pending files
Referenced commit(s): 2c92744140
2024-12-24 13:36:38 +00:00
Rocco Silipo 2c92744140 fix(DB/Object) Sniffed Saronite Arrows spawn in phase 1. (#21029)
Co-authored-by: Grimdhex <176165533+Grimdhex@users.noreply.github.com>
2024-12-24 14:35:38 +01:00
Grimdhex ffae375f73 fix(Apps/Codestyle): rewrite semi-colon check (#21027) 2024-12-24 12:39:00 +01:00
sudlud 24726545fb fix(Core/Network): fix high idle cpu load in NetworkThread (#21033) 2024-12-23 22:29:06 +01:00
Exitare 9c01bbbd6e fix(Scripts/Hyjal) First wave should not grant reputation (#21004) 2024-12-23 12:08:39 +01:00
Kitzunu 3dff276136 chore(CI): Update CI run types (#21015) 2024-12-23 10:23:55 +01:00
Takenbacon 0a70ebc3af fix(Core/Auctionhouse): Fix auctionhouse searches with locales other than enUS (#21019) 2024-12-23 08:26:18 +01:00
github-actions[bot] 5b37bc5205 chore(DB): import pending files
Referenced commit(s): f5ce076919
2024-12-22 17:41:05 +00:00
Kitzunu f5ce076919 chore(DB/quest_request_items_locale): Remove empty or NULL entries (#21013) 2024-12-22 18:40:06 +01:00
Kitzunu d5fac96a20 refactor(CI/Codestyle): Move the SQL check to python (#21002) 2024-12-22 16:50:32 +01:00
Stepan Makhorin cbdab03623 fix(Scripts/ICC): Make Blood-Queen Lana'thel bite tanks as well (#17834) 2024-12-22 11:48:36 +01:00
github-actions[bot] 0d6a0f8441 chore(DB): import pending files
Referenced commit(s): b4d04b1af1
2024-12-22 08:45:52 +00:00
Exitare 7be3c82505 feat(Core/Creature): Add new config option for npc speeds (#20617) 2024-12-22 09:45:39 +01:00
Exitare b4d04b1af1 refactor(Core/Event): Load event vendors seperatly (#20906) 2024-12-22 09:44:50 +01:00
Kitzunu 7714ca31a2 refactor(Core/Time): Introduce GetExpirationTime instead of calculati… (#21006) 2024-12-22 09:42:39 +01:00
Kitzunu 1462d1ae39 fix(Script/Command): Allow guid for npc move and delete (#21008) 2024-12-22 09:42:21 +01:00
EricksOliveira 2110f7cc84 Core/TempSummons: avoid use MoveInLineOfSight before InitSummon (#20999) 2024-12-22 09:03:28 +01:00
sudlud ebf7f7583b fix(CI): do not run on draft PRs (#21009) 2024-12-22 09:02:15 +01:00
Jelle Meeus f011cbb602 refactor(Core/Unit): Add naming for all ShapeshiftFlags (#20989) 2024-12-22 08:56:54 +01:00
github-actions[bot] dc79f26e04 chore(DB): import pending files
Referenced commit(s): d278266b56
2024-12-22 07:44:54 +00:00
Rocco Silipo d278266b56 fix(Creature/Loot) Remove Black Pearl item from all creatures. (#20988) 2024-12-22 08:43:56 +01:00
Kitzunu 2c20c9463a feat(CI/Codestyle): Check for tabs (#20998) 2024-12-22 00:43:23 +01:00
sudlud 99e5d73beb feat(CI/modules_build): trigger on file change instead label (#20997) 2024-12-21 22:44:12 +01:00
Kitzunu d2b88bdc1e feat(CI/Codestyle); Check for double semicolons (#20996) 2024-12-21 22:19:49 +01:00
Francesco Borzì 08d5861a51 Revert "chore(Licence): Add an agreement to relicense for futur PRs" (#20986)
Revert "chore(Licence): Add an agreement to relicense for futur PRs (#20910)"

This reverts commit 70b8b6f47a.
2024-12-20 23:42:45 +01:00
github-actions[bot] b8aacb990d chore(DB): import pending files
Referenced commit(s): 9524e48c0f
2024-12-20 16:37:20 +00:00
Rocco Silipo 9524e48c0f fix(DB/Object) Add Saronite Arrows in Phase 2. (#20975) 2024-12-20 17:36:18 +01:00
github-actions[bot] 77a6a5b815 chore(DB): import pending files
Referenced commit(s): 403e0a894b
2024-12-20 16:29:05 +00:00
Exitare 403e0a894b fix(DB/Loot)Add missing heavy stone loot entries (#20971) 2024-12-20 17:28:01 +01:00
Exitare 25fb6cca47 fix(Core/WorldSession): incorrect fmt formatting (#20926) 2024-12-20 15:38:17 +01:00
github-actions[bot] 330873400a chore(DB): import pending files
Referenced commit(s): c23b4740f0
2024-12-20 11:45:09 +00:00
sudlud c23b4740f0 fix(DB/item_loot_template): fix Santa sometimes handing out empty pr… (#20978) 2024-12-20 12:44:10 +01:00
Grimdhex 70b8b6f47a chore(Licence): Add an agreement to relicense for futur PRs (#20910) 2024-12-20 07:36:04 +01:00
Kitzunu ceefd89a06 feat(CI/Codestyle): check for curly brackets before/after if/else statements (#20977)
* feat(CI/Codestyle): check for braces after if/else statements

* right need to edit a cpp file to trigger cpp check

* Revert "right need to edit a cpp file to trigger cpp check"

This reverts commit 2e34d8c52f.

* fix codestyle in cpp

* Update oculus.cpp

* Update codestyle.py

* Update codestyle.py

* Update codestyle.py

* Update codestyle.py
2024-12-19 21:14:58 +01:00
Mike Delago 288d70e58e docker-compose: ac-database: bump to mysql LTS (#20976) 2024-12-19 19:38:55 +01:00
Nathan Handley 0b39bf01cc feat(tools/vmap4_extractor) Add detection of collision-only material IDs (#20822) 2024-12-19 19:16:57 +01:00
Grimdhex 866c304d85 refactor(Deps/MySQL): replace hardcoded MySQL paths (#20870)
cherry-pick from https://github.com/TrinityCore/TrinityCore/commit/ab046bdc327374878b3bede39f2d519d0aef3493

Co-authored-by: Shauren <shauren.trinity@gmail.com>
2024-12-19 18:27:19 +01:00
Kitzunu 0bc70670d2 refactor(Core/Misc): Use steady_timer instead of deadline_timer (#20940) 2024-12-19 18:00:03 +01:00
github-actions[bot] ea02be964b chore(DB): import pending files
Referenced commit(s): cd4175cb7f
2024-12-19 16:12:37 +00:00
daobashun cd4175cb7f Fix(DB/SAI): Add dialogue between Archmage Mordent Evenshade and Sentinel Stillbough (#20913)
* Added Dialogue when idle

* Update rev_1734101479985626400.sql

* Update rev_1734101479985626400.sql

* fix error
2024-12-19 17:11:36 +01:00
Andrew 68d69c3596 fix(Scripts/Spells): Fix Aether Ray behaviour for quest Wrangle Aethe… (#20972)
fix(Scripts/Spells): Fix Aether Ray behaviour for quest Wrangle Aether Rays
2024-12-19 05:35:39 -03:00
Exitare df11419ccb fix(Scripts/BlackTemple): Update AreaBoundary to avoid reset in the corners with Illidari council (#20957)
* Update distance and boundaries for council target selection

* Merge branch 'master' into council_evade
2024-12-18 23:34:59 -03:00
Exitare 4d1dba4a09 fix(Core/Player): Quest failure sound when inventory full (#20970)
* Add quest failure sound when inventory is full or quest failed

* Fix sound being played for all players & move call to correct function
2024-12-18 21:58:32 -03:00
Takenbacon a23b13defe fix(Core/Database): Gracefully close database workers (#20936)
* Gracefully close database workers

* Change init order. Such a silly compiler flag

* Fix hang if db connection failed to open
2024-12-18 20:24:17 +01:00
Takenbacon c8734af4bc fix(Core/Movement): Fix creatures not resuming movement after being talked to (#20945)
Fix creatures not resuming movement after being talked to
2024-12-18 20:19:31 +01:00
Takenbacon 4d349e87b5 feat(Core/AuctionHouse): Rework auctionhouse search threading (#20830) 2024-12-18 15:50:26 +01:00
Takenbacon e9c86737fb refactor(Core/Random): Remove unused map based RNG (#20939)
Remove unused map based RNG
2024-12-18 13:48:06 +01:00
github-actions[bot] 5f020de546 chore(DB): import pending files
Referenced commit(s): 5bce9b5d33
2024-12-18 09:53:31 +00:00
Rocco Silipo 5bce9b5d33 fix(DB/Creature) Scarlet Land Cannons (#20922)
Create Scarlet_Land_Cannons.sql
2024-12-18 10:52:27 +01:00
Stefano Borzì 83b8bf7288 ci: fix codestyle and cppcheck reports (#20962) 2024-12-18 10:34:42 +01:00
sudlud 0a454b08fc fix(apps/DatabaseExporter): fix utf-8 encoding for sql export (#20951) 2024-12-18 10:33:53 +01:00
Rocco Silipo 2e13eac041 fix(Script/ZulAman): Nalorakk abilities. (#20937)
* Update boss_nalorakk.cpp

* Update boss_nalorakk.cpp
2024-12-18 09:00:20 +01:00
sudlud abbd552ce5 feat(DB): Release ACDB 12.0.1 (#20954) 2024-12-18 06:07:03 +01:00
Exitare 325c208b7c feat(Scripts/Command): Update gm fly to behave like a toggle (#20925) 2024-12-18 05:50:33 +01:00
Andrew 2923a4aa43 fix(Scripts/ZulAman): Fix Electric Storm shouldnt hit safe players (#20897)
* fix(Scripts/ZulAman): Fix Electric Storm shouldnt hit safe players

* increase cloud duration by 500ms

Co-Authored-By: killerwife <killerwife@users.noreply.github.com>

---------

Co-authored-by: killerwife <killerwife@users.noreply.github.com>
2024-12-17 12:28:46 -03:00
github-actions[bot] 1078433bb2 chore(DB): import pending files
Referenced commit(s): ab060f7941
2024-12-17 14:07:55 +00:00
FlyingArowana ab060f7941 fix(DB/CreatureSAI) - Removed "Charm" Flag from Frayfeather Stagwing and Frayfeather Skystormer (#20943)
* Created

* Removed Charm Flag

* Mighty space

* Added sourcetype
2024-12-17 11:06:59 -03:00
Jelle Meeus 88eb6fbb2b fix(Core/Player): SpellQueue fix typo StartRecoveryCategory (#20944)
fix: typo StartRecoveryCategory

should be category
2024-12-17 10:38:24 -03:00
Kitzunu 3a20433827 feat(DB): New DB exporter and versioning tools for DB squashes (#20920) 2024-12-16 16:13:05 +01:00
github-actions[bot] 35f316b1a6 chore(DB): import pending files
Referenced commit(s): 7fd8b04a56
2024-12-15 18:50:58 +00:00
Exitare 7fd8b04a56 feat(Core/Motd): Allow localized motd (#20542)
* Initial commit for localized motd

* Rename function that created world packages

* Update to satisfy code check

* Update code to accomodate localized motd

* Update command to support multiple optionales & adjusted db

* Code cleanup

* Update sql name

* Fix codestyle issues

* Remove hardcoded schema

* Add check for valid player in reload command

* Update to better code style

* Add missing include

* Fix redundant code usage

* Add missing include

* Remove sql files and create new rev sql files

* Address minor code reviews

* Fix code style

* Update code to address code revisions.

- Remove two unused functions
- Remove map
- Use available function to resolve LocaleConstant

* Fix code style

* Add check for base motd and update locale to DEFAULT_LOCALE

* Code docs

* Removed some docs, readd defaultd motd formatting

* Fix oversight in variable declaration

* Code style fix

* Update code based on code review

* ready for merge

* Fix set motd command due to changes to DEFAULT_LOCALE

* Fix CI

* Fix trailing whitespace

---------

Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>
2024-12-15 19:50:02 +01:00
Kitzunu 7732e1a5b2 feat(DB): Release ACDB 12.0.0 (#20921) 2024-12-15 14:35:42 +01:00
Exitare 98b426bf3a feat(Core/Player) Option to adjust max rest bonus via config (#20836) 2024-12-14 20:51:28 +01:00
github-actions[bot] 7164422883 chore(DB): import pending files
Referenced commit(s): fd1123caae
2024-12-14 14:52:53 +00:00
Grimdhex fd1123caae fix(DB/SAI): several missing abilities in Zul'Aman (#20918) 2024-12-14 15:51:58 +01:00
Jelle Meeus 94f1176cd0 fix(Scripts/TheEye): Kaelthas reduce time until all advisors phase (#20914) 2024-12-14 11:20:41 +01:00
github-actions[bot] 4746425683 chore(DB): import pending files
Referenced commit(s): 6f65f5f22b
2024-12-14 08:47:33 +00:00
Andrew 8fce766627 fix(DB/Creature): Illidari Nightlord remove distract and add banish i… (#20912) 2024-12-14 09:47:12 +01:00
Exitare 6f65f5f22b feat(Core/Player)Add quest failure sound when inventory is full or quest failed (#20917) 2024-12-14 09:46:41 +01:00
Grimdhex a4e2b1d743 feat(Core/WorldObjects): implement Heartbeat timers (#20872) 2024-12-13 08:50:45 +01:00
Jelle Meeus 993bdcb84e feat(Core/Player): implement Spell Queue (#20797) 2024-12-12 11:59:52 +01:00
github-actions[bot] f31bf723a0 chore(DB): import pending files
Referenced commit(s): 80e6a3a412
2024-12-12 05:55:35 +00:00
Jelle Meeus 80e6a3a412 fix(Scripts/TrialOfChampion): fail and send custom spell error when trying to mount without lance equipped (#19932) 2024-12-12 06:54:40 +01:00
IntelligentQuantum 9f37794f5c Fix(Core/Player): Energy regen rate bonuses (#20321) 2024-12-12 06:53:39 +01:00
github-actions[bot] f1d9c16e53 chore(DB): import pending files
Referenced commit(s): 4c54f7e171
2024-12-12 05:11:53 +00:00
Andrew d94dda9d93 feat(Core/SAI): Implement SMART_ACTION_DISMOUNT (206) (#20899) 2024-12-12 06:11:42 +01:00
github-actions[bot] 4c54f7e171 chore(DB): import pending files
Referenced commit(s): a4c30ad720
2024-12-12 05:10:55 +00:00
Andrew a4c30ad720 fix(DB/Creature): Fix ZA bosses not despawning on evade (#20900) 2024-12-12 06:09:59 +01:00
blinkysc cef1b781d7 fix(Scripts/IcecrownCitadel): Vengeful Shade unroot timer fix (#20902)
Vengeful Shade unroot timer fix

Co-authored-by: Nicholas Lee <nicholaslee@Nicholass-MacBook-Air.local>
2024-12-12 00:03:29 -03:00
github-actions[bot] eadcaea296 chore(DB): import pending files
Referenced commit(s): 5e8ee9bd59
2024-12-11 22:28:29 +00:00
Andrew 5e8ee9bd59 fix(DB/Creature): Amanishi Tempest should be immune to taunts, fears … (#20898)
fix(DB/Creature): Amanishi Tempest should be immune to taunts, fears and stuns
2024-12-11 19:27:31 -03:00
Andrew 60667e75c3 fix(Scripts/ZulAman): Malacrass adds shouldnt change on wipes (#20894) 2024-12-11 00:59:59 +01:00
github-actions[bot] 3c20dd0ac0 chore(DB): import pending files
Referenced commit(s): aeaa738e86
2024-12-10 21:33:58 +00:00
Rocco Silipo aeaa738e86 fix(DB/Creature) Havenshire Horses run from Stables to New Havalon. (#20884) 2024-12-10 22:33:04 +01:00
Andrew 7a66008429 fix(Scripts/ZulAman): Dont update Hexlord timers while casting (#20876) 2024-12-10 18:27:22 -03:00
github-actions[bot] a476287ff5 chore(DB): import pending files
Referenced commit(s): 8d32ee8e39
2024-12-10 19:34:58 +00:00
Tereneckla d80b08f006 fix(DB/Loot): improve Illidan loot (#20767) 2024-12-10 20:34:28 +01:00
Rocco Silipo 8d32ee8e39 fix(DB/Creature)Amani Eagle doesn't use Talon ability. (#20888) 2024-12-10 20:34:03 +01:00
github-actions[bot] 99cc9698e1 chore(DB): import pending files
Referenced commit(s): 2aae596e04
2024-12-09 15:06:10 +00:00
FlyingArowana 2aae596e04 fix(DB/Creature) - Removed the profession requirement to interact with trainer (#20763) 2024-12-09 16:05:15 +01:00
Andrew 951d395dca fix(Scripts/ZulAman): Zuljin abilities shouldnt overlap (#20875) 2024-12-09 12:50:04 +01:00
Andrew 7530423f6b fix(Scripts/SunwellPlateau): Fix Entropius despawning (#20874) 2024-12-09 07:38:25 -03:00
github-actions[bot] e6cea73120 chore(DB): import pending files
Referenced commit(s): 2654ec83cd
2024-12-08 20:05:34 +00:00
sudlud 72bc891fda fix(DB/Creature): Sniffed Values for 'Lunar - Revelers' spawns (#20866) 2024-12-08 21:05:24 +01:00
Benjamin Jackson 2654ec83cd fix(Core/AI): Increase movement leash extension interval. (#20867)
Init.
2024-12-08 21:04:41 +01:00
github-actions[bot] 85d8c99b49 chore(DB): import pending files
Referenced commit(s): 41643df4d8
2024-12-08 10:51:25 +00:00
Rocco Silipo 41643df4d8 Fix(DB/Spawn) Silt Crawlers under the landscape (another two). (#20861)
* Create Silt_Crawlers.sql

* Update Silt_Crawlers.sql
2024-12-08 11:50:27 +01:00
github-actions[bot] adfc85d615 chore(DB): import pending files
Referenced commit(s): 80eadde93d
2024-12-08 10:27:15 +00:00
Rocco Silipo 80eadde93d fix(DB/Creatures) Scarlet Enclave phase 4 npcs (2-2). (#20852)
* Create Scarlet_Enclave_Phase_4_2_of_2.sql

* Update Scarlet_Enclave_Phase_4_2_of_2.sql

* Update Scarlet_Enclave_Phase_4_2_of_2.sql

* Update Scarlet_Enclave_Phase_4_2_of_2.sql
2024-12-08 11:26:20 +01:00
github-actions[bot] 429f7e1826 chore(DB): import pending files
Referenced commit(s): 8f137e6759
2024-12-07 09:57:18 +00:00
sudlud fa8f66c33d fix(DB/Gameobject): Improve spawns positions of 180867 `Greater Moonl… (#20849)
fix(DB/Gameobject): Improve spawns positions of 180867 `Greater Moonlight Spell Focus`

- sync these with sniffed spawns of creature 15897 `Large Spotlight`
- fun fact: these gameobjects do not show in sniffs at all
-> so probably the currently implemented mechanism at the spotlight
   is not blizzlike or classic change or something
2024-12-07 06:57:02 -03:00
github-actions[bot] 5d1b735bf7 chore(DB): import pending files
Referenced commit(s): 4e78c6fe29
2024-12-07 09:56:45 +00:00
sudlud 55d86b4256 fix(DB/Gameobject): Sniffed Values for 'Lucky Red Envelope' spawns (#20850) 2024-12-07 06:56:35 -03:00
sudlud 8f137e6759 fix(DB/Gameobject): Sniffed Values for 'Starsong Scroll' spawns (#20851) 2024-12-07 06:56:20 -03:00
sudlud 27d50617f2 fix(DB/Gameobject): Sniffed Values for 'DwarvenTableSmall' spawns (#20853) 2024-12-07 06:56:05 -03:00
sudlud 4e78c6fe29 fix(DB/Gameobject): Sniffed Values for 'Boss Fight Altar' spawns (#20854) 2024-12-07 06:55:47 -03:00
github-actions[bot] bfd8577252 chore(DB): import pending files
Referenced commit(s): f9cbfcbe69
2024-12-06 21:58:54 +00:00
Rocco Silipo f9cbfcbe69 fix(DB/Creatures) Scarlet Enclave phase 4 npcs (1-2). (#20827)
* Create Scarlet_Enclave_Phase_4.sql

* Update Scarlet_Enclave_Phase_4.sql

* Update Scarlet_Enclave_Phase_4.sql

Added Random Spawn for creatures with Waypoints

* Update Scarlet_Enclave_Phase_4.sql

* Update Scarlet_Enclave_Phase_4.sql

Added another waypoint
2024-12-06 22:58:01 +01:00
Jelle Meeus 00eeb0051a fix(Core/SpellAuraEffects): use caster's level to scale amount to break crowd control auras (#20153) 2024-12-06 12:19:03 +01:00
github-actions[bot] 70bc19d000 chore(DB): import pending files
Referenced commit(s): 00c0e202ef
2024-12-05 12:47:09 +00:00
Andrew 00c0e202ef fix(Scripts/ZulAman): Akil'zon storm damage should multiply per tick (#20842) 2024-12-05 09:46:07 -03:00
Andrew 0d0e3a6ce1 fix(Scripts/ZulAman): Zul'jin gate should be unlocked instead auto open (#20841) 2024-12-05 05:17:18 -03:00
Jelle Meeus 3f5ac98bdb fix(Scripts/Karazhan): Nightbane Speed (#20838)
fix(Scripts/Karazhan)NightbaneSpeed

revert speed to before 7e0dff5839
2024-12-04 16:14:39 -03:00
sudlud 47580c0fab fix(CI/nopch-modules): bump to ubuntu-24.04/clang-18, align with nopc… (#20832) 2024-12-04 07:54:00 +01:00
sudlud 63bf4058fc fix(CI): make tools build able to run on PRs again (#20831) 2024-12-04 07:53:48 +01:00
github-actions[bot] 7f0a178c4e chore(DB): import pending files
Referenced commit(s): ca009110c7
2024-12-03 23:08:20 +00:00
Jelle Meeus ca009110c7 fix(DB/SAI): Swiftmane Waypoint ReactState (#20833)
fix(DB/SAI)SwiftmaneWaypointReactState
2024-12-03 20:07:26 -03:00
Riley S. 97937d1724 request(git): Update .gitignore (#20748)
Update .gitignore

Ignores .vs (Visual Studio) and /out/* (Default build directory when unspecified (Visual Studio).)
2024-12-03 21:02:59 +01:00
github-actions[bot] b6a4ececeb chore(DB): import pending files
Referenced commit(s): 6f824ee856
2024-12-03 19:57:26 +00:00
DuckBone 26518b3790 Fix(DB/Script): Halls of Stone, Brann escort (#20312)
* Fix(DB/Script): Halls of Stone, Brann escort

- escort, tribunal, bjonnir code completion

Closes issue #13079

* Fix(DB/Script): Halls of Stone, Brann escort

* Fix(DB/Script): Halls of Stone, Brann escort

* Fix(DB/Script): Halls of Stone, Brann escort

* Fix(DB/Script): Halls of Stone, Brann escort

* Fix(DB/Script): Halls of Stone, Brann escort

* Fix(DB/Script): Halls of Stone, Brann escort

* Update rev_1729968739299017200.sql

* Fix(DB/Script): Halls of Stone, Brann escort fix

* Fix(DB/Script): Halls of Stone, Brann escort fix 2

* Fix(DB/Script): Halls of Stone, Brann escort brackets format

* Fix(DB/Script): Halls of Stone, Brann escort remove whitespace

* Fix(DB/Script): Halls of Stone, Brann escort remove last whitespace

---------

Co-authored-by: zalazoltan86 <zalazoltan86@gmail.com>
2024-12-03 20:57:11 +01:00
avarishd 6f824ee856 fix(DB/Conditions): 'Zeth'Gor Must Burn!' setting the sky on fire (#20447) 2024-12-03 20:56:31 +01:00
Andrew 69c85ca8a2 fix(Scripts/ZulAman): Overpower spell cooldown (#20828) 2024-12-03 13:57:14 -03:00
github-actions[bot] 6cd9f953c0 chore(DB): import pending files
Referenced commit(s): f94388fbd1
2024-12-02 23:05:43 +00:00
Tereneckla f94388fbd1 fix (DB/Loot) Old Hillsbrad Foothills guards should not skinnable (#20818) 2024-12-03 00:04:50 +01:00
github-actions[bot] ebd4aa2f8a chore(DB): import pending files
Referenced commit(s): 777c9d4eee
2024-12-02 20:34:27 +00:00
FlyingArowana 777c9d4eee Fix(DB/SAI) - Quest: "Escape from Silverbrook" [WotLK] (#20211)
* Fixed Quest: 12308

Issue: #20127

* Reverted Back to AC with Corrections

@skelUA suggestion
2024-12-02 21:33:32 +01:00
github-actions[bot] 2005aa8897 chore(DB): import pending files
Referenced commit(s): 9187f93a42
2024-12-02 19:37:24 +00:00
FlyingArowana 9187f93a42 fix(DB/Creature) - Eydis Darkbane no longer stuck under the ground (#20813)
* File Created

* Correct Z-axis

* Add id1 to the query
2024-12-02 20:36:27 +01:00
Andrew 02cacd2341 feat(Core/Unit): Implement GetCompanionPet() helper (#20819) 2024-12-02 16:34:24 -03:00
github-actions[bot] 0a66daa005 chore(DB): import pending files
Referenced commit(s): 3a9e8c0940
2024-12-02 15:21:22 +00:00
Tereneckla 3a9e8c0940 fix(DB/Loot): Critters are not skinnable (#20817) 2024-12-02 12:20:28 -03:00
Nathan Handley a704556ae8 fix(Tools/MapExtractor) Update MPQ patch iterator to also load patch files 4 through 9 (#20815) 2024-12-02 15:40:13 +01:00
Andrew 8c387fa2b8 refactor(Scripts/UtgardeKeep): Modernize Prince Keleseth script (#20806) 2024-12-02 08:17:16 -03:00
Andrew 0f1618faf5 feat(Core/Scripting): Implement SetAutoAttackAllowed() to disable aut… (#20805)
* feat(Core/Scripting): Implement SetAutoAttackAllowed() to disable autoattacks

* Update ScriptedCreature.cpp
2024-12-02 08:11:18 -03:00
github-actions[bot] 3c706a8efc chore(DB): import pending files
Referenced commit(s): 48805ee1cf
2024-12-02 10:40:47 +00:00
FlyingArowana 48805ee1cf fix(DB/Quest) - Remove breadcrumb quest from The Crown of Will (2/5) (#20814)
* File create

* Remove breadcrumb quest
2024-12-02 11:39:51 +01:00
github-actions[bot] 4644856fae chore(DB): import pending files
Referenced commit(s): 7f44962d25
2024-12-02 01:35:42 +00:00
sudlud 7f44962d25 fix(DB/Gameobject): Sniffed Values for 'Log Pile' spawns (#20812) 2024-12-02 02:34:46 +01:00
github-actions[bot] 0846c8aa74 chore(DB): import pending files
Referenced commit(s): 125900a20e
2024-12-01 21:18:25 +00:00
FlyingArowana 125900a20e fix(DB/Quest) - Add the missing NPC Starters for Regthar Deathgate (#20762)
* Added NPC Starters

* Added delete to the new NPCs
2024-12-01 22:17:30 +01:00
Jelle Meeus 4f23dbbb03 refactor(Apps/Startup): replace 'set logging on` command with 'set logging enabled on' (#20778)
refactor: replace deprecated 'set logging on'
2024-12-01 21:29:35 +01:00
Tereneckla 8e080f1e60 fix(Core/Pet): Remove unnecessary Pet Class reassignments (#20614)
remove unnecessary class assignment
2024-12-01 17:16:13 -03:00
Jelle Meeus 2d616ce0e8 fix(Core/Vmaps): Do not ignore model rotation when calculating liquid level (#20760)
cherry-picked from:
https://github.com/TrinityCore/TrinityCore/commit/53b4501ce9b072cfffe7de7f348094f443e36950

Co-authored-by: Shauren <shauren.trinity@gmail.com>
2024-12-01 17:09:47 -03:00
gontrannopier cf7959238a fix(Core/Players): don't set full heath/mana/rage while Dead (#20723)
fix level up while dead -> check if player is not dead, then update health/mana/rage/..

Co-authored-by: gontrannopier <gontrannopier@gontrannopier.com>
2024-12-01 17:09:26 -03:00
Andrew ffe7d42831 chore(Scripts/Karazhan): Remove unused variables (#20810) 2024-12-01 16:57:06 -03:00
Andrew af3ded6889 fix(Scripts/ZulAman): Fix Zuljin targetting players during eagle phase (#20808) 2024-12-01 14:08:11 -03:00
Andrew 4ef0a02fc4 fix(Scripts/ZulAman): Delay static disruption by 3s after storm (#20809) 2024-12-01 14:07:53 -03:00
Kitzunu 490c90bdd7 feat(Core/SAI): Add pet variable to SMART_TARGET_INVOKER_PARTY (#20804)
* feat(Core/SAI): Add pet variable to SMART_TARGET_INVOKER_PARTY

* closes https://github.com/azerothcore/azerothcore-wotlk/issues/15755

* mb
2024-12-01 13:57:39 -03:00
github-actions[bot] 9ff887d001 chore(DB): import pending files
Referenced commit(s): 81d1fcad65
2024-12-01 11:53:38 +00:00
Jelle Meeus 81d1fcad65 fix(Scripts/ZulAman): eagle gauntlet (#20719)
* sql

* add script handling

https://github.com/cmangos/mangos-wotlk/commit/4b890a4096153686f97c0faa3f6196b27205cc8a

Co-authored-by: MantisLord <sabinprosper@gmail.com>

* set Akilzon call for help

boss should pull trash

* style: remove blank lines

* add passiveAI header and sort

* Revert "set Akilzon call for help"

This reverts commit 99143339a9.

line of sight blocks call for help

---------

Co-authored-by: MantisLord <sabinprosper@gmail.com>
2024-12-01 08:52:44 -03:00
Kitzunu ed008a8780 refactor(Core/Spells): Add helpers for HasAuraType (#20802) 2024-12-01 08:50:59 -03:00
github-actions[bot] 55f6bd0972 chore(DB): import pending files
Referenced commit(s): 938c637c9a
2024-12-01 11:48:51 +00:00
Andrew 938c637c9a refactor(Scripts/VioletHold): Move all spells to spelldifficul… (#20796)
refactor(Scripts/VioletHold): Move all spell scripts to spelldifficultydbc
2024-12-01 08:47:52 -03:00
Kitzunu 10a79441b6 fix(Core/Spells): Logic misstake for spells that can be cast on dead … (#20800) 2024-12-01 11:11:33 +01:00
Tereneckla ae4e673713 fix(Scripts/Commands) fix formatting in server debug (#20801) 2024-12-01 11:11:23 +01:00
github-actions[bot] a9ff6f834c chore(DB): import pending files
Referenced commit(s): 6c8c0cf697
2024-12-01 10:02:53 +00:00
Rocco Silipo 6c8c0cf697 fix(DB/Creature) Scarlet Infantrymen. (#20768)
* Create scarlet_infantrymen.sql

Fix Scarlet Infantrymen.

* Update scarlet_infantrymen.sql

* Update scarlet_infantrymen.sql

* Update scarlet_infantrymen.sql
2024-12-01 11:01:56 +01:00
Andrew a4a278a0e7 refactor(Scripts/UtgardeKeep): Upgrade scripts to new register method (#20795) 2024-11-30 20:25:27 -03:00
Kitzunu 5e4f6ac576 fix(Script/Commands): tele add should only check exact match (#20785)
* fix(Script/Commands): tele add should only check exact match

* closes https://github.com/azerothcore/azerothcore-wotlk/issues/20268

* better describe the variable
2024-11-30 20:06:26 -03:00
github-actions[bot] fc9e730974 chore(DB): import pending files
Referenced commit(s): 7d3b3ae72f
2024-11-30 20:23:24 +00:00
Andrew 7d3b3ae72f fix(DB/Creature): Fix Zul'jin formations (#20781) 2024-11-30 17:22:28 -03:00
Andrew bef9e46e9b refactor(Scripts/TheNexus): Update Command Kolurg script (#20783) 2024-11-30 16:52:57 -03:00
Andrew 4a8247824e fix(Scripts/ZulAman): Hex Lord Malacrass shouldn't use previous class… (#20784)
fix(Scripts/ZulAman): Hex Lord Malacrass shouldn't use previous class abilities after siphon
2024-11-30 16:52:10 -03:00
Riley S. e9137d4d4d fix(Core/Spells): Resolve invalid spell casts on dead players when the cast is valid. (#20712)
* Initial fix for #20509

* small revert

* Two way visibility between ghosts.

* clean up temporary changes.

* clean up debug code.

* small typo

* revert .gitignore

* fix codestyle

* Add missing flag, resolve issue where cast was failing while alive.

* Update SpellInfo.cpp

Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>

---------

Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>
2024-11-30 20:18:32 +01:00
Andrew 00109faa86 fix(Scripts/ZulAman): Reset threat after Zuljin does his phase transi… (#20782)
fix(Scripts/ZulAman): Reset threat after Zuljin does his phase transition transformation
2024-11-30 15:13:25 -03:00
Andrew afc81098f2 fix(Scripts/ZulAman): Fix Vortex not following players and also spell… (#20780)
* fix(Scripts/ZulAman): Fix Vortex not following players and also spell missing

* Update boss_zuljin.cpp
2024-11-30 12:28:19 -03:00
Jelle Meeus 6b5f50cdbe fix(Core/Database): prevent crash due to special chars in branch name (#20776)
add prepared statements to escape special characters in branch name
2024-11-30 12:26:57 -03:00
github-actions[bot] e3bcb6c14b chore(DB): import pending files
Referenced commit(s): 6ec4eb5ab6
2024-11-30 15:22:16 +00:00
sudlud f1b635c0f4 fix(DB/Gameobject): Sniffed values for 'Lunar Festival' spawns (#20769) 2024-11-30 12:21:43 -03:00
sudlud 6ec4eb5ab6 fix(DB/Gameobject): Sniffed Values for 'Dwarf Hero / Gnome Hero' spawns (#20779) 2024-11-30 12:21:21 -03:00
github-actions[bot] c8805b6ed1 chore(DB): import pending files
Referenced commit(s): 9d422136f6
2024-11-30 10:31:56 +00:00
sudlud 9d422136f6 fix(Core/LootMgr): add startup error for unsupported reference minCou… (#20725) 2024-11-30 11:31:02 +01:00
github-actions[bot] cf0097e4dd chore(DB): import pending files
Referenced commit(s): 2ff4788b90
2024-11-30 09:36:11 +00:00
FlyingArowana 2ff4788b90 fix(DB/Quest) - Remove the wrong prerequisite Escape from Skettis and Hungry Nether Rays (#20753)
* Created File

* Removed the prequiste quests

* Space correction
2024-11-30 10:35:17 +01:00
Andrew a22403356c fix(Scripts/ZulAman): Fix Soul Siphon visual effect (#20765) 2024-11-29 09:32:49 -03:00
Jelle Meeus d8123cbc37 fix(Scripts/ZulAman): Halazzi Lynx Ability Timers (#20761)
fix(Scripts/ZulAman)HalazziLynxAbilityTimers
2024-11-29 05:04:44 -03:00
Riley S. dd3eb38378 fix(Scripts/ZulAman): Hex Lord Malacrass' Drain Power Timer (#20754)
* Initial Fix for #20751

* Tighten timings

* Condense Code

* Move `ScheduleHealthCheckEvent` into `Reset()`
2024-11-28 14:34:15 -03:00
github-actions[bot] b5be6bc702 chore(DB): import pending files
Referenced commit(s): bcfcdbdb4c
2024-11-27 20:26:59 +00:00
sudlud bcfcdbdb4c fix(DB/item_template): add flag CU_DURATION_REAL_TIME to Pilgrim's Bo… (#20756)
* fix(DB/item_template): add flag CU_DURATION_REAL_TIME to Pilgrim's Bounty items

* set duration to 7 days
2024-11-27 21:26:02 +01:00
github-actions[bot] d9863e7373 chore(DB): import pending files
Referenced commit(s): ff650d0a45
2024-11-27 10:49:43 +00:00
Rocco Silipo ff650d0a45 fix(DB/Creature): Scarlet Miners and Cars don't follow a path. (#20701)
* Create Scarlet_miners_and_Cars_Fix.sql

* Update Scarlet_miners_and_Cars_Fix.sql

Missing Delete waypoint

* Update Scarlet_miners_and_Cars_Fix.sql

Removed Mine Car spawn points and spawn addon.
Modified respawn timers for Scarlet Miners outside the mine.
SmartAI Improved.

* Update Scarlet_miners_and_Cars_Fix.sql

Waypoints Improved.

* Update Scarlet_miners_and_Cars_Fix.sql

* Update Scarlet_miners_and_Cars_Fix.sql

* Update Scarlet_miners_and_Cars_Fix.sql

Add Comment in Scarlet Miners DBGuid.
2024-11-27 11:48:50 +01:00
github-actions[bot] 8ec510865c chore(DB): import pending files
Referenced commit(s): 8a2ffc7a58
2024-11-27 07:41:58 +00:00
Rocco Silipo 8a2ffc7a58 Fix(DB/Spawn/WP) Scarlet Medics. (#20738)
Create Scarlet_Medics_Fix.sql

Remove some wrong guids.
Add waypoints for Scarlet Medics.
2024-11-27 08:41:04 +01:00
github-actions[bot] 4703bf08d0 chore(DB): import pending files
Referenced commit(s): 6ab70f0926
2024-11-26 19:02:56 +00:00
Rocco Silipo 1de7a95054 Fix(DB/Spawn/WP) Scarlet Captains. (#20720)
Create Scarlet_Captains.sql

Fix for Scarlet Captains in DK Starting Area.
2024-11-26 20:02:51 +01:00
github-actions[bot] 6ab70f0926 chore(DB): import pending files
Referenced commit(s): 7fc938dfcb
2024-11-26 19:01:50 +00:00
Andrew 7fc938dfcb fix(DB/Spells): Malacrass Drain Power should stack from different cas… (#20749)
fix(DB/Spells): Malacrass Drain Power should stack from different casters
2024-11-26 20:00:46 +01:00
Andrew 2649ca2d65 feat(Core/Spells): Allow modifying MiscValues during cast (#20731) 2024-11-26 12:17:02 -03:00
github-actions[bot] e5b83b29de chore(DB): import pending files
Referenced commit(s): 3d5d300f76
2024-11-26 10:50:13 +00:00
FlyingArowana 3d5d300f76 fix(DB/Creature) - Adds "Disarm" Immunity to Boss: Nalorakk [Zul'Aman] (#20746)
* File created

* Added Disarm immunity

* The mighty newline
2024-11-26 11:49:19 +01:00
github-actions[bot] 42879621e4 chore(DB): import pending files
Referenced commit(s): 96ec2dc626
2024-11-25 13:36:22 +00:00
FlyingArowana 96ec2dc626 fix(DB/Creature): Taunt Immunity to Boss: "Hex Lord Malacrass" (Zul'aman) (#20737) 2024-11-25 10:35:23 -03:00
github-actions[bot] 1d69ff706e chore(DB): import pending files
Referenced commit(s): 5d229d47f8
2024-11-25 13:34:04 +00:00
Andrew 5d229d47f8 fix(DB/SAI): Fix Grimtotem Raider using net under crowd control effects (#20733) 2024-11-25 14:33:11 +01:00
Andrew 00564e6ab5 fix(Scripts/ZulAman): Fix Malacrass not using Slice and Dice (#20735) 2024-11-25 09:56:03 -03:00
Andrew 65ec5bbceb refactor(Scripts/Nexus): Update creature scripts to new register method (#20728) 2024-11-25 03:15:49 -03:00
Andrew 7da3ab573c fix(Scripts/Events): Earning Spirit of Sharing should remove the othe… (#20732)
fix(Scripts/Events): Earning Spirit of Sharing should remove the other buffs
2024-11-25 03:15:07 -03:00
Andrew 78dc29371c fix(Scripts/MagisterTerrace): Fix Selin's crystal drain being interru… (#20727)
fix(Scripts/MagisterTerrace): Fix Selin's crystal drain being interrupted
2024-11-24 19:38:52 -03:00
Andrew 94873d129b fix(Scripts/ZulAman): Fix Berserk crash and Corrupted Totems not atta… (#20726)
fix(Scripts/ZulAman): Fix Berserk crash and Corrupted Totems not attacking
2024-11-24 19:21:00 -03:00
github-actions[bot] b2225cd385 chore(DB): import pending files
Referenced commit(s): ec84bf98f9
2024-11-24 21:04:28 +00:00
daobashun ec84bf98f9 fix(Scripts/Spell): Added random whispers of the Death Knight Newbie Village Lich King (#19006)
* Use rand Spell Whispers

* Added smart script for creature 28576|28577

* Added spell script name

* Fixed the wrong name

* The script name is lowercase
Remove spaces

* Remove spaces

* Remove spaces

* Players will only be able to whisper if they have mission 12678
Attacking civilians is the only way to whisper

* Validate

* Update src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp

Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>

---------

Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>
2024-11-24 18:03:34 -03:00
github-actions[bot] 6b2cc0fd86 chore(DB): import pending files
Referenced commit(s): b2c04603f7
2024-11-24 20:25:57 +00:00
sudlud b2c04603f7 feat(Core/SmartAI): add startup error for non existent SmartAI entries (#20694) 2024-11-24 21:25:02 +01:00
Andrew 7f5bcda7f7 chore(DB/Spells): Add missing Charm of the Bloodletter gender (#20724) 2024-11-24 17:03:41 -03:00
Grimdhex 9874a47de5 refactor(Core): fix few static analysis (#20566)
* refactor(Core): fix few static analysis

* fix builds

* revert FacingInfo change and fix GraveYard ID use in a log
2024-11-24 17:02:32 -03:00
github-actions[bot] 8792cd38dc chore(DB): import pending files
Referenced commit(s): 2bb208cc54
2024-11-24 19:04:45 +00:00
Andrew 2bb208cc54 fix(DB/Spell): Correct gender requirement for ZA charm spells (#20722) 2024-11-24 16:03:01 -03:00
github-actions[bot] c139c948cc chore(DB): import pending files
Referenced commit(s): 33d038b227
2024-11-24 18:45:20 +00:00
Andrew 33d038b227 fix(DB/SAI): Fix Disciple of Naralex despawning if talked while in co… (#20718)
fix(DB/SAI): Fix Disciple of Naralex despawning if talked while in combat
2024-11-24 15:43:34 -03:00
Andrew 72b5e26c91 fix(Scripts/ZulAman): Dont cast Gust of Wind if about to start Electr… (#20717) 2024-11-24 12:24:45 -03:00
Jelle Meeus c1c9443dd1 fix(Scripts/ZulAman): remove cast transfigure when going into lynx (#20716) 2024-11-24 12:18:23 -03:00
Andrew ab7f49b220 feat(Core/Scripting): Implement TaskScheduler GetNextGroupOccurrence() (#20714) 2024-11-24 12:02:56 -03:00
github-actions[bot] 735a5a5037 chore(DB): import pending files
Referenced commit(s): 6e0e5a6939
2024-11-24 14:41:02 +00:00
Jelle Meeus 6e0e5a6939 fix(Scripts/ZulAman): Harrison Jones gong event RP with taskscheduler (#20713) 2024-11-24 11:39:19 -03:00
Kitzunu 4aa70c4dba refactor(Deps/mysqllite): Nuke it (#20710)
* close https://github.com/azerothcore/azerothcore-wotlk/issues/20123
2024-11-24 14:45:46 +01:00
Andrew 49b0596744 fix(Scripts/ZulAman): Despawn Zuljin spirits shortly after death (#20711) 2024-11-24 08:54:29 -03:00
IntelligentQuantum 065579a6e3 fix(Scripts/ZulAman): Nalorakk in Bearform should not be attacking wi… (#20707) 2024-11-24 08:13:57 -03:00
Andrew c5876bff6f fix(Scripts/ZulAman): Fix Amani Hatcher behaviour (#20687) 2024-11-24 07:56:18 -03:00
github-actions[bot] cbcee46a82 chore(DB): import pending files
Referenced commit(s): 0676bf9355
2024-11-24 10:48:16 +00:00
Andrew 0676bf9355 fix(DB/Conditions): Fix Jan'lai not hatching all eggs (#20686)
* fix(DB/Conditions): Fix Jan'lai not hatching all eggs

* Update rev_1732316403019721900.sql
2024-11-24 07:47:23 -03:00
Jelle Meeus a6f279ccfa fix(Scripts/Zulaman): Halazzi double scheduling of lynx abilties in the first phase 1 (#20708)
double scheduling of enter lynx
2024-11-24 10:34:31 +01:00
github-actions[bot] 9db157545d chore(DB): import pending files
Referenced commit(s): d9d8dc5a2f
2024-11-24 02:52:30 +00:00
FlyingArowana cb9df80a6d fix(DB/Creature): Adds "Disarm" Mechanic Flag Immunity to Halazzi (#20696)
* Created file

* Added Disarm Immunity to Halazzi
2024-11-23 23:52:27 -03:00
Jelle Meeus d9d8dc5a2f fix(DB/Creature): add spawns Eagle Trash Aggro Trigger (#20693)
fix(DB/Creature)AddEagleTrashAggroTrigger
2024-11-23 23:51:36 -03:00
github-actions[bot] f8368fee49 chore(DB): import pending files
Referenced commit(s): 7cb459591c
2024-11-23 11:49:00 +00:00
Jelle Meeus 7cb459591c fix(DB/Conditions): add Jan'alai's Summon Hatchers implicit target entry (#20692)
fix(DB/Conditions)SummonHatchersSetTargetEntry

Summon Amani'shi Hatcher
2024-11-23 08:47:11 -03:00
Andrew 0b771cbc92 fix(Core/Creature): Don't call reset if still in combat (#20675) 2024-11-23 10:57:26 +01:00
github-actions[bot] 3f6fe11f83 chore(DB): import pending files
Referenced commit(s): c0de2b38fb
2024-11-23 01:54:40 +00:00
FlyingArowana c0de2b38fb fix(DB/Creature) Removal of Turkeys outside of the expected zones. (#20685) 2024-11-22 22:52:56 -03:00
github-actions[bot] 792b657541 chore(DB): import pending files
Referenced commit(s): 31a16c1603
2024-11-22 17:20:21 +00:00
Andrew 31a16c1603 fix(DB/Spells): Amani Hatchling Flame Buffet should stack from differ… (#20668) 2024-11-22 14:19:28 -03:00
Jelle Meeus 4b03e97a63 fix(Core/Creature): Set RespawnTime before AI Reset (#20684)
fix(Core/Creature): Set RespawnTIme before AI Reset
2024-11-22 12:23:21 -03:00
github-actions[bot] 695fc7994f chore(DB): import pending files
Referenced commit(s): b23bad6be8
2024-11-22 12:26:34 +00:00
FlyingArowana b23bad6be8 fix(DB/Creature): Boneschewer removal of Distract immuninty (#20670) 2024-11-22 09:25:40 -03:00
github-actions[bot] 4b47a7fb4b chore(DB): import pending files
Referenced commit(s): 81ef89b10c
2024-11-22 12:24:25 +00:00
FlyingArowana 81ef89b10c fix(DB/Quest): Makes a bunch of "mandatory" quests into "optional" 2.0 (#20671)
* File created

* Fixed the quests
2024-11-22 09:23:31 -03:00
github-actions[bot] 106cbe7fdf chore(DB): import pending files
Referenced commit(s): ca10f37bf0
2024-11-22 00:06:11 +00:00
Andrew ca10f37bf0 fix(DB/Loot): Malacrass should drop 2-3 pieces of loot (#20674) 2024-11-22 01:04:07 +01:00
github-actions[bot] 37ca2129ec chore(DB): import pending files
Referenced commit(s): 6f98cac461
2024-11-21 23:50:47 +00:00
Stefano Borzì 6f98cac461 fix(DB/pickpocketloot): add missing pickpocketloot (#20672)
* feat: add cppcheck for scripts

* fix(DB/pickpocketloot): add missing pickpocketloot
2024-11-22 00:49:54 +01:00
github-actions[bot] e2369986ef chore(DB): import pending files
Referenced commit(s): cdade8dcd6
2024-11-21 13:50:51 +00:00
FlyingArowana cdade8dcd6 fix(DB/Quest) - Makes a bunch of "mandatory" quests into "optional" (#20610)
* Created file

* Removed required quests that should be optional

* Added another 2 quests
2024-11-21 14:49:52 +01:00
github-actions[bot] 139e8176d5 chore(DB): import pending files
Referenced commit(s): f19c98f341
2024-11-21 11:28:58 +00:00
Andrew f19c98f341 fix(DB/Loot): First 4 Zul'Aman bosses should only drop 1 item (#20666) 2024-11-21 08:28:03 -03:00
Andrew e15ca6ff51 fix(Scripts/ZulAman): Jan'alai eggs should not respawn during encounter (#20664) 2024-11-21 07:23:01 +01:00
Andrew d5d6ce39af fix(Scripts/ZulAman): Correct gate ids (#20665) 2024-11-21 07:22:33 +01:00
Dan 8c3c751221 refactor(Scripts/MagistersTerrace): Felblood Kael'thas (#20642)
* Felblood kael (#14)

* init

* initial ready version

* make scheduler repeatable and correct intro sequence

* some debug and OOC scheduler

* Update boss_felblood_kaelthas.cpp

* finale

* Update boss_felblood_kaelthas.cpp

* Update boss_felblood_kaelthas.cpp

* Update boss_felblood_kaelthas.cpp

* Update boss_felblood_kaelthas.cpp

* simplify target selection
2024-11-20 23:19:03 +01:00
Andrew bda74c14b8 fix(Scripts/ZulAman): Hexlord: missing update to last commit (#20663)
* fix(Scripts/ZulAman): Hexlord: missing update to last commit

* Update boss_hexlord.cpp
2024-11-20 22:33:19 +01:00
Andrew 57f9cecbd9 fix(Scripts/ZulAman): Fix Narolakk Mangle timer and Bear phase not la… (#20648)
* fix(Scripts/ZulAman): Fix Narolakk Mangle timer and Bear phase not lasting for full duration

* Update boss_nalorakk.cpp

* Update boss_nalorakk.cpp
2024-11-20 22:29:07 +01:00
Andrew 62a5529fcf fix(Scripts/ZulAman): Fix Halazzi lynx not moving on spawn (#20649) 2024-11-20 22:28:16 +01:00
Andrew 4aca845fab fix(Scripts/ZulAman): Remove Zul'jin Electrical Storm on phase change (#20651) 2024-11-20 22:27:53 +01:00
Andrew aa847d110a fix(Scripts/ZulAman): Fix Malacrass not casting correct class abilities (#20653)
* fix(Scripts/ZulAman): Fix Malacrass not casting correct class abilities

* Update boss_hexlord.cpp
2024-11-20 22:27:35 +01:00
Andrew 5561445de4 fix(Scripts/ZulAman): Fix Janalai Enrage/Berserk behaviour (#20662)
* fix(Scripts/ZulAman): Fix Janalai Enrage/Berserk behaviour

* Update boss_janalai.cpp
2024-11-20 22:26:45 +01:00
github-actions[bot] ee379b8968 chore(DB): import pending files
Referenced commit(s): 9e29e705b9
2024-11-20 18:38:37 +00:00
Andrew 9e29e705b9 fix(DB/Creature): Jan'alai taunt immunity (#20660) 2024-11-20 15:37:43 -03:00
github-actions[bot] e07f16049b chore(DB): import pending files
Referenced commit(s): 047a21d31a
2024-11-20 12:09:16 +00:00
Jelle Meeus 047a21d31a fix(Scripts/ZulAman): Halazzi Phases (#20650) 2024-11-20 09:08:21 -03:00
github-actions[bot] 8cde31018d chore(DB): import pending files
Referenced commit(s): 2bd7c2e36d
2024-11-20 09:44:59 +00:00
Stefano Borzì a601d109ea fix(DB/Skinning): add missing skinloot 2/4 (#20644)
* feat: add cppcheck for scripts

* fix(DB/Skinning): add missing skinloot 2 on 4
2024-11-20 10:44:24 +01:00
Stefano Borzì d7c2e1a94c fix(DB/skinning): missing skinloot 4/4 (#20646)
* feat: add cppcheck for scripts

* fix(DB/skinning): missing skinloot 4 on 4
2024-11-20 10:44:11 +01:00
Stefano Borzì 2bd7c2e36d fix(DB/Skinning): add missing skinloot 3/4 (#20645)
* feat: add cppcheck for scripts

* fix(DB/Skinning): add missing skinloot 3 on 4

* .
2024-11-20 10:44:06 +01:00
Stefano Borzì d0b84a7346 fix(DB/skinning): add missing skinning loot 1/4 (#20643)
* feat: add cppcheck for scripts

* fix(DB/skinning): add missing skinning loot 1/4

* fix(DB/Skinloot): missing skinloot
2024-11-20 10:43:57 +01:00
github-actions[bot] 372235d837 chore(DB): import pending files
Referenced commit(s): 640f84e280
2024-11-20 09:37:13 +00:00
Jelle Meeus 640f84e280 feat(Core/SmartAI): introduce new SMART_EVENT_IS_IN_MELEE_RANGE (#20575) 2024-11-20 06:36:17 -03:00
github-actions[bot] ff55c0e1de chore(DB): import pending files
Referenced commit(s): 94bd617a70
2024-11-20 09:22:10 +00:00
IntelligentQuantum 94bd617a70 fix(DB/Conditions): Mana Remnants can be used only near Crystal Wards (#20647) 2024-11-20 06:21:15 -03:00
github-actions[bot] b96acc57fb chore(DB): import pending files
Referenced commit(s): 52f1380530
2024-11-19 19:59:11 +00:00
Rocco Silipo 52f1380530 fix(DB/Creature): Remove Amani Bear Mounts from Zul'Aman. (#20641) 2024-11-19 16:58:15 -03:00
github-actions[bot] 00931a20a1 chore(DB): import pending files
Referenced commit(s): 3ae3b08b85
2024-11-19 15:12:30 +00:00
avarishd 3ae3b08b85 fix(Scripts/Item): Multiphase Goggles not showing disturbances on minimap (#20446)
* fix(Scripts/Item): Multiphase Goggles not showing disturbances on mimimap

* Apply suggestions from code review
2024-11-19 12:11:34 -03:00
github-actions[bot] 1fe84a2c7e chore(DB): import pending files
Referenced commit(s): 67cd7c4d17
2024-11-19 14:46:56 +00:00
IntelligentQuantum 67cd7c4d17 fix(DB/Conditions): Ur'dan require quest to buy stardust (#20639) 2024-11-19 11:46:00 -03:00
github-actions[bot] 4f73d0166a chore(DB): import pending files
Referenced commit(s): f6a9d41657
2024-11-19 10:41:34 +00:00
FlyingArowana f6a9d41657 fix(DB/Spawn) - Drywallow Daggermaw under the map (#20621)
* Created file

* Fixed Z-Position
2024-11-19 11:40:38 +01:00
Andrew c46fceeea7 fix(Scripts/ZulAman): Restore hatcher side switch (#20633) 2024-11-19 06:25:21 -03:00
Andrew c4a8fafecb fix(Scripts/ZulAman): Fix Gust of Wind targetting tanks and eagles no… (#20632)
fix(Scripts/ZulAman): Fix Gust of Wind targetting tanks and eagles not spawning
2024-11-19 06:24:36 -03:00
Dan 8c763f6612 refactor(Scripts/MagistersTerrace): refactor Selin Fireheart (#20604)
* init

* Update boss_selin_fireheart.cpp

* rectification

* whitespace
2024-11-18 16:37:03 -03:00
Jelle Meeus 5ca9b5f942 fix(Scripts/TheEye): Advisors add Sanguinar's Bellowing Roar (#20620)
add roar
2024-11-18 05:44:45 -03:00
github-actions[bot] 2f9f2206df chore(DB): import pending files
Referenced commit(s): 51a201545f
2024-11-18 07:30:47 +00:00
Andrew 51a201545f fix(DB/SAI): Fix Sunblade Protector behaviour (#20598)
* fix(DB/SAI): Fix Sunblade Protector behaviour

* Update rev_1731793823275142100.sql

* Update rev_1731793823275142100.sql

* Update rev_1731793823275142100.sql

* add texts
2024-11-18 08:29:51 +01:00
Andrew 17bb56932e fix(Scripts/ZulAman): Fix Janalai berserk (#20612) 2024-11-18 08:24:32 +01:00
Andrew 68f3a59f78 fix(Scripts/ZulAman): Narolakk dont engage after wave dies and attack… (#20615)
* fix(Scripts/ZulAman): Narolakk dont engage after wave dies and attackable

* Update boss_nalorakk.cpp
2024-11-18 08:23:46 +01:00
github-actions[bot] 5f7aa536bf chore(DB): import pending files
Referenced commit(s): bbe527ffcd
2024-11-18 00:24:09 +00:00
FlyingArowana bbe527ffcd fix(DB/Quest) - Vital Supplies [1477] and Report to Mountaineer Rockgar [468] are now Optional (#20608) 2024-11-17 21:23:10 -03:00
Andrew 7a5b7efc42 refactor(Scripts/MagisterTerrace): Update Priestess Delrissa (#20611) 2024-11-17 21:21:06 -03:00
github-actions[bot] 2aae89f846 chore(DB): import pending files
Referenced commit(s): 5695af54c8
2024-11-17 16:11:25 +00:00
Andrew 5695af54c8 fix(DB/Creature): Zul'jin and Akil'zon should be taunt immune (#20609) 2024-11-17 13:10:29 -03:00
github-actions[bot] 0363ca31d6 chore(DB): import pending files
Referenced commit(s): 0e1ae66e5e
2024-11-17 09:20:16 +00:00
Rocco Silipo 0e1ae66e5e Fix(DB/Spawn) Silt Crawlers under the landscape. (#20600)
Create silt_crawler_zspawn.sql

Change z spawn position for 3 Silt Crawler.
2024-11-17 10:19:21 +01:00
Andrew 6bca63b4d8 refactor(Scripts/SunwellPlateau): Update Felmyst script (#20602)
* refactor(Scripts/SunwellPlateau): Update Felmyst script

* Update instance_sunwell_plateau.cpp

* Update boss_felmyst.cpp

* Update boss_felmyst.cpp
2024-11-17 04:31:07 -03:00
Andrew d2c28681aa refactor(Scripts/ZulGurub): Modernize Gahzranka script (#20603) 2024-11-17 02:19:46 -03:00
github-actions[bot] 287ac42423 chore(DB): import pending files
Referenced commit(s): 1b94e4245c
2024-11-17 05:12:34 +00:00
FlyingArowana 1b94e4245c fix(DB/Quest): Morgan Stern [1260] not required for 1204 (#20579) 2024-11-17 06:11:40 +01:00
FingerKnoten 593ca4dae1 fix(Core/Player): properly update m_usedTalentCount (#20232) 2024-11-16 22:31:24 +01:00
2500 changed files with 4713081 additions and 3285427 deletions
+21 -17
View File
@@ -17,25 +17,29 @@
"workspaceFolder": "/azerothcore",
// Set *default* container specific settings.json values on container create.
"settings": {
"terminal.integrated.shell.linux": null
"customizations": {
"vscode": {
"settings": {
"terminal.integrated.shell.linux": null
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"ms-vscode-remote.remote-containers",
"notskm.clang-tidy",
"xaver.clang-format",
"bbenoist.doxygen",
"ms-vscode.cpptools",
"ms-vscode.cmake-tools",
"mhutchie.git-graph",
"github.vscode-pull-request-github",
"eamodio.gitlens",
"cschlosser.doxdocgen",
"sanaajani.taskrunnercode",
"mads-hartmann.bash-ide-vscode"
]
}
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"notskm.clang-tidy",
"xaver.clang-format",
"bbenoist.doxygen",
"ms-vscode.cpptools",
"austin.code-gnu-global",
"twxs.cmake",
"mhutchie.git-graph",
"github.vscode-pull-request-github",
"eamodio.gitlens",
"cschlosser.doxdocgen",
"sanaajani.taskrunnercode"
],
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
+1 -1
View File
@@ -7,7 +7,7 @@ insert_final_newline = true
trim_trailing_whitespace = true
max_line_length = 80
[*.{json,ts,js,yml}]
[*.{json,ts,js,yml,sh}]
charset = utf-8
indent_style = space
indent_size = 2
+2
View File
@@ -0,0 +1,2 @@
# Protect dashboard workflow require explicit review
.github/workflows/dashboard-ci.yml @Yehonal
@@ -1,4 +1,4 @@
name: Bug report
name: Game issues
description: Create a bug report to help us improve.
body:
- type: markdown
@@ -14,14 +14,13 @@ body:
description: |
Description of the problem or issue here.
Include entries of affected creatures / items / quests / spells etc.
If this is a crash, post the crashlog (upload to https://gist.github.com/) and include the link here.
Never upload files! Use GIST for text and YouTube for videos!
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected Blizzlike Behaviour
label: Expected Behaviour
description: |
Tell us what should happen instead.
validations:
@@ -0,0 +1,86 @@
name: Crash / Server Crash issues
description: Did your server crash? Post an issue here!
title: "Crash: "
labels: ["Priority-Critical", "HasBacktrace"]
body:
- type: markdown
attributes:
value: |
Thank you for taking the time to fill out a bug report. Remember to fill out all fields including the title above.
An issue that is not properly filled out will be closed.
- type: textarea
id: current
attributes:
label: Steps to Reproduce
description: |
If possible provide detailed steps to reproduce the crash.
placeholder: |
1. Provide the exact steps to trigger the crash.
2. Include any relevant configurations or commands.
3. Mention if the crash is consistent or intermittent.
validations:
required: false
- type: markdown
attributes:
value: |
NOTE: Make sure your server was compiled in RelWithDebug or Debug mode as crashlogs from Release do not contain enough information.
- type: textarea
id: logs
attributes:
label: Logs and Screenshots
description: |
Do you have any logs or screenshots that can be useful?
Crash logs in text are preffered over screenshots.
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
id: os
attributes:
label: Operating System
description: |
The Operating System you are having issues on.
i.e. Windows 11 x64, Debian 10 x64, macOS 12, Ubuntu 20.04
validations:
required: true
- type: textarea
id: deps
attributes:
label: Dependencies & versions
description: |
Relevant information about dependencies and their versions that can be useful to debug the issue.
Example:
- OpenSSL ver ...
- Boost ver ...
- MySQL ver ...
- Visual Studio ver ...
- GCC ver ...
- Clang ver ...
- CMake ver ...
validations:
required: true
- type: input
id: commit
attributes:
label: Commit
description: |
Which commit hash are you using.
validations:
required: true
- type: textarea
id: extra
attributes:
label: Additional Context
description: |
Do you have any other relevant information about the issue?
validations:
required: false
- type: markdown
attributes:
value: |
Thank you for your contribution.
If you use AzerothCore regularly, we really NEED your help to:
- Test our fixes: https://www.azerothcore.org/wiki/How-to-test-a-PR
- Report issues or suggestions: https://github.com/azerothcore/azerothcore-wotlk/issues/new/choose
- Improve the documentation/wiki: https://www.azerothcore.org/wiki/home
With your help, the project can evolve much quicker!
+75
View File
@@ -0,0 +1,75 @@
name: Build/Tools/Apps issues
description: Got an issue with build, tools or apps? Create an issue to let us know!
body:
- type: markdown
attributes:
value: |
Thank you for taking the time to fill out a bug report. Remember to fill out all fields including the title above.
An issue that is not properly filled out will be closed.
- type: textarea
id: current
attributes:
label: Current Behaviour
description: |
What actually happens and how do we reproduce it?
validations:
required: true
- type: textarea
id: logs
attributes:
label: Logs and Screenshots
description: |
Do you have any logs or screenshots that can be useful?
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
id: os
attributes:
label: Operating System
description: |
The Operating System you are having issues on.
i.e. Windows 11 x64, Debian 10 x64, macOS 12, Ubuntu 20.04
validations:
required: true
- type: textarea
id: deps
attributes:
label: Dependencies & versions
description: |
Relevant information about dependencies and their versions that can be useful to debug the issue.
Example:
- OpenSSL ver ...
- Boost ver ...
- MySQL ver ...
- Visual Studio ver ...
- GCC ver ...
- Clang ver ...
- CMake ver ...
validations:
required: true
- type: input
id: commit
attributes:
label: Commit
description: |
Which commit hash are you using.
validations:
required: true
- type: textarea
id: extra
attributes:
label: Additional Context
description: |
Do you have any other relevant information about the issue?
validations:
required: false
- type: markdown
attributes:
value: |
Thank you for your contribution.
If you use AzerothCore regularly, we really NEED your help to:
- Test our fixes: https://www.azerothcore.org/wiki/How-to-test-a-PR
- Report issues or suggestions: https://github.com/azerothcore/azerothcore-wotlk/issues/new/choose
- Improve the documentation/wiki: https://www.azerothcore.org/wiki/home
With your help, the project can evolve much quicker!
+1 -4
View File
@@ -1,4 +1,4 @@
blank_issues_enabled: true
blank_issues_enabled: false
contact_links:
- name: Website
url: https://www.azerothcore.org
@@ -6,9 +6,6 @@ contact_links:
- name: Wiki
url: https://www.azerothcore.org/wiki
about: You can find plenty of information on our Wiki.
- name: How to ask for help
url: https://www.azerothcore.org/wiki/How-to-ask-for-help
about: Before submitting an issue we'd love if you take a minute to read this.
- name: FAQ
url: https://www.azerothcore.org/wiki/faq
about: Frequently asked questions.
@@ -1,12 +1,12 @@
name: Feature request
description: Suggest an idea for this project
title: "Feature: "
labels: [Suggestion]
labels: "Feature"
body:
- type: markdown
attributes:
value: |
Thank you for taking your time to fill out a feature request. Remember to fill out all fields including the title above.
Thank you for taking the time to fill out a feature request. Remember to fill out all fields including the title above.
An issue that is not properly filled out will be closed.
- type: textarea
id: description
+12
View File
@@ -0,0 +1,12 @@
name: CC Triage
description: This template is only used for ChromieCraft
labels: ["ChromieCraft Generic"]
body:
- type: textarea
id: current
attributes:
label: Triage
description: |
Paste the issue from ChromieCraft here.
validations:
required: true
+2 -1
View File
@@ -14,6 +14,7 @@
[![macos-build](https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/macos_build.yml/badge.svg?branch=master)](https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/macos_build.yml?query=branch%3Amaster)
[![docker-build](https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/docker_build.yml/badge.svg?branch=master)](https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/docker_build.yml?query=branch%3Amaster)
[![tools-build](https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/tools_build.yml/badge.svg?branch=master)](https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/tools_build.yml?query=branch%3Amaster)
[![dashboard-ci](https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/dashboard-ci.yml/badge.svg?branch=master)](https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/dashboard-ci.yml?query=branch%3Amaster)
## Introduction
@@ -89,4 +90,4 @@ It's important to note that AzerothCore is not an official Blizzard Entertainmen
[JetBrains](https://www.jetbrains.com/?from=AzerothCore) is providing free [open-source licenses](https://www.jetbrains.com/community/opensource/) to the AzerothCore developers.
[![JetBrains](https://user-images.githubusercontent.com/75517/51205146-7f225c80-1905-11e9-82e0-835627be170d.png)](https://www.jetbrains.com/?from=AzerothCore)
[![JetBrains logo.](https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.svg)](https://jb.gg/OpenSourceSupport)
+70 -39
View File
@@ -4,60 +4,91 @@
We support the following versions of dependencies.
:white_check_mark: = supported
| Icon | Meaning |
| :------------------- | :---------------: |
| :white_check_mark: | **Supported** |
| :red_circle: | **NOT** Supported |
| :large_blue_diamond: | **Recommended** |
:red_circle: = NOT supported
### Versions of AzerothCore:
unspecified = might work but no guarantee
| AzerothCore Branch | Status | Recommended |
| ---------------------------- | :----------------: | :------------------: |
| **master** | :white_check_mark: | :large_blue_diamond: |
| Any non-official fork | :red_circle: | |
| Any Playerbots fork | :red_circle: | |
| Any NPCBots fork | :red_circle: | |
| Any AC (non-official) repack | :red_circle: | |
Versions of AzerothCore:
### Supported Operating Systems
| AzerothCore Branch | Supported |
| ------------------ | ------------------ |
| master | :white_check_mark: |
| Any playerbot fork | :red_circle: |
| Any NPCBot fork | :red_circle: |
| Linux (Ubuntu) | Status | Recommended |
| :------------- | :----------------: | :------------------: |
| 24.04 | :white_check_mark: | :large_blue_diamond: |
| 22.04 | :white_check_mark: | |
| 20.04 ≤ | :red_circle: | |
Versions of MySQL:
| macOS | Status | Recommended |
| :---- | :----------------: | :------------------: |
| 14 | :white_check_mark: | :large_blue_diamond: |
| 12 ≤ | :red_circle: | |
| MySQL Version | Supported |
| ------------- | ------------------ |
| 8.4 | :white_check_mark: |
| 8.0 | :white_check_mark: |
| 5.7 and lower | :red_circle: |
| Windows | Status | Recommended |
| :------------ | :----------------: | :------------------: |
| Windows 11 | :white_check_mark: | :large_blue_diamond: |
| Windows 10 | :white_check_mark: |
| Windows 8.1 ≤ | :red_circle: |
Versions of CLang:
<br>
| CLang Version | Supported |
| ------------- | ------------------ |
| 18 | :white_check_mark: |
| 15 | :white_check_mark: |
| 14 and lower | :red_circle: |
### Supported Boost Versions:
Versions of GCC:
| Boost | Status | Recommended |
| :----- | :----------------: | :------------------: |
| 1.70 ≥ | :white_check_mark: | :large_blue_diamond: |
| GCC Version | Supported |
| ------------ | ------------------ |
| 14 | :white_check_mark: |
| 12 | :white_check_mark: |
| 11 and lower | :red_circle: |
### Supported OpenSSL Versions:
Versions of Ubuntu:
| OpenSSL | Status | Recommended |
| :------ | :----------------: | :------------------: |
| 3.X.X ≥ | :white_check_mark: | :large_blue_diamond: |
| Ubuntu version | Supported |
| --------------- | ------------------ |
| 24.04 | :white_check_mark: |
| 22.04 | :white_check_mark: |
| 20.04 and lower | :red_circle: |
### Supported CMake Versions:
Versions of macOS:
| CMake | Status | Recommended |
| :----- | :----------------: | :------------------: |
| 3.16 ≥ | :white_check_mark: | :large_blue_diamond: |
| macOS Version | Supported |
| ------------- | ------------------ |
| 14 | :white_check_mark: |
| 12 and lower | :red_circle: |
### Supported MySQL Versions:
**Note**: We do NOT support any repacks that may or may not have been made based on AzerothCore. This is because they are usually based on older versions and there is no way to know what is in the precompiled binaries. Instead, you should compile your binaries from the AzerothCore source. To get started, read the [Installation Guide](https://www.azerothcore.org/wiki/installation).
| MySQL | Status | Recommended |
| :---- | :----------------: | :------------------: |
| 8.4 ≥ | :white_check_mark: | :large_blue_diamond: |
| 8.0 | :white_check_mark: | |
| 8.1 | :red_circle: | |
| 8.0 < | :red_circle: | |
### Supported CLang Versions:
| CLang | Status | Recommended |
| :---- | :----------------: | :------------------: |
| 18 | :white_check_mark: | :large_blue_diamond: |
| 15 | :white_check_mark: | |
| 14 ≤ | :red_circle: | |
### Supported GCC Versions:
| GCC | Status | Recommended |
| :--- | :----------------: | :------------------: |
| 14 | :white_check_mark: | :large_blue_diamond: |
| 12 | :white_check_mark: | |
| 11 ≤ | :red_circle: | |
> [!NOTE]
> We do **NOT** support any repacks that may or may not have been made based on AzerothCore. This is because they are usually based on older versions and there is no way to know what is in the precompiled binaries. Instead, you should compile your binaries from the AzerothCore source. To get started, read the [Installation Guide](https://www.azerothcore.org/wiki/installation).
> [!CAUTION]
> [Why you should not use repacks to run your WoW server](https://www.mangosrumors.org/why-you-should-not-use-repacks-to-run-your-wow-server/)
## Reporting a Vulnerability
+61 -17
View File
@@ -26,21 +26,32 @@ inputs:
description: Flag to enable or disable PCH
required: false
type: boolean
maxerrors:
default: 1
description: Max allowed error count before compilation stops
required: false
type: number
keepgoing:
default: false
description: Flag to continue build after errors
required: false
type: boolean
runs:
using: composite
steps:
- name: echo cache key
shell: bash
run: echo "Cache key -> ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}:pch=${{ inputs.pch }}:${{ github.ref_name }}"
- name: Cache
uses: actions/cache@v4
if: inputs.pch != 'true'
with:
path: ${{ github.workspace }}/var/ccache
# format
# ccache:OS:CC_CXX:MODULES:GITHUB_REF:GITHUB_SHA
key: ccache:ubuntu-latest:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}:${{ github.ref }}:${{ github.sha }}
key: ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}:pch=${{ inputs.pch }}:${{ github.ref_name }}
restore-keys: |
ccache:ubuntu-latest:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}:${{ github.ref }}
ccache:ubuntu-latest:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}
ccache:ubuntu-latest:${{ inputs.CC }}_${{ inputs.CXX }}
ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}:pch=${{ inputs.pch }}
ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}
ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}
# This script moves sql files from "data/sql/updates/pending_$DB" to the
# proper folder for the db
@@ -63,12 +74,12 @@ runs:
UBUNTU_VERSION="$(grep VERSION_ID /etc/os-release | cut -f2 -d\")"
source /etc/os-release
if [[ "$VERSION_CODENAME" == "jammy" ]]; then
if [[ "${{ inputs.cc }}" =~ "clang-" ]]; then
CLANG_VERSION="$(echo '${{ inputs.cc }}' | cut -f2 -d\-)"
if [[ "${{ inputs.CC }}" =~ "clang-" ]]; then
CLANG_VERSION="$(echo '${{ inputs.CC }}' | cut -f2 -d\-)"
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo add-apt-repository "deb http://apt.llvm.org/$VERSION_CODENAME/ llvm-toolchain-$VERSION_CODENAME-$CLANG_VERSION main"
sudo apt-get -qq update
sudo apt-get -qq install '${{ inputs.cc }}'
sudo apt-get -qq install '${{ inputs.CC }}'
fi
fi
@@ -77,19 +88,44 @@ runs:
env:
CCACHE_DIR: $GITHUB_WORKSPACE/var/ccache
run: |
cat <<EOF >> $GITHUB_ENV
mkdir -p "$CCACHE_DIR"
cat <<EOF >> "$GITHUB_ENV"
CCACHE_BASEDIR=${GITHUB_WORKSPACE}
CCACHE_DIR=${{ env.CCACHE_DIR }}
CCACHE_MAXSIZE=1000MB
CCACHE_HASHDIR=1
CCACHE_MAXSIZE=5G
CCACHE_SLOPPINESS=pch_defines,time_macros,include_file_mtime
CCACHE_CPP2=true
CCACHE_COMPRESS=1
CCACHE_COMPRESSLEVEL=9
CCACHE_COMPILERCHECK=content
CCACHE_LOGFILE=$CCACHE_DIR/cache.debug
CCACHE_LOGFILE=${{ env.CCACHE_DIR }}/cache.debug
CC=${{ inputs.CC }}
CXX=${{ inputs.CXX }}
EOF
- name: ccache config snapshot
shell: bash
run: |
echo "==== Effective ccache configuration ===="
ccache -p | egrep 'base_dir|hash_dir|compiler_check|sloppiness|max_size' || true
echo
echo "==== Compiler info ===="
which ${{ inputs.CC }} && ${{ inputs.CC }} --version || true
which ${{ inputs.CXX }} && ${{ inputs.CXX }} --version || true
echo
echo "==== Previous cache stats ===="
ccache -s || true
echo
echo "==== Top cache results ===="
grep -o 'result: .*' "$CCACHE_DIR/cache.debug" 2>/dev/null | sort | uniq -c | sort -nr | head || true
- name: reset ccache stats
shell: bash
run: ccache -z || true
- name: Configure
shell: bash
run: |
@@ -97,6 +133,8 @@ runs:
mkdir build
cd build
cmake "$GITHUB_WORKSPACE" \
-DCMAKE_C_COMPILER="${{ inputs.CC }}" \
-DCMAKE_CXX_COMPILER="${{ inputs.CXX }}" \
-DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/env/dist" \
-DAPPS_BUILD="all" \
-DTOOLS_BUILD=${{ inputs.tools }} \
@@ -106,8 +144,8 @@ runs:
-DCMAKE_BUILD_TYPE="Release" \
-DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \
-DCMAKE_C_COMPILER_LAUNCHER="ccache" \
-DCMAKE_C_FLAGS="-Werror" \
-DCMAKE_CXX_FLAGS="-Werror" \
-DCMAKE_C_FLAGS="-Werror ${{ startsWith(inputs.CC, 'clang') && '-ferror-limit=' || '-fmax-errors=' }}${{inputs.maxerrors}} -fdebug-prefix-map=${GITHUB_WORKSPACE}=." \
-DCMAKE_CXX_FLAGS="-Werror ${{ startsWith(inputs.CXX, 'clang') && '-ferror-limit=' || '-fmax-errors=' }}${{inputs.maxerrors}} -fdebug-prefix-map=${GITHUB_WORKSPACE}=." \
-DBUILD_TESTING="ON" \
-DUSE_SCRIPTPCH=${{ inputs.pch == 'true' && 'ON' || '' }} \
-DUSE_COREPCH=${{ inputs.pch == 'true' && 'ON' || '' }} \
@@ -116,7 +154,9 @@ runs:
- name: build
shell: bash
working-directory: "${{ github.workspace }}/build"
run: cmake --build . --config "Release" -j "$(($(nproc) + 2))"
run: |
# '--' passes '--keep-going' to the underlying build system (make)
cmake --build . --config "Release" -j "$(($(nproc) + 2))" ${{ inputs.keepgoing == 'true' && '-- --keep-going' || '' }}
- name: install
shell: bash
@@ -178,3 +218,7 @@ runs:
else
exit 0
fi
- name: ccache stats
shell: bash
run: ccache -s || true
+7 -3
View File
@@ -1,6 +1,10 @@
name: Codestyle
name: C++ Codestyle
on:
pull_request:
types:
- opened
- reopened
- synchronize
paths:
- src/**
- "!README.md"
@@ -10,7 +14,7 @@ jobs:
triage:
runs-on: ubuntu-latest
name: C++
if: github.repository == 'azerothcore/azerothcore-wotlk'
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
steps:
- uses: actions/checkout@v4
- name: Setup python
@@ -18,7 +22,7 @@ jobs:
with:
python-version: '3.10'
- name: AzerothCore codestyle
run: python ./apps/codestyle/codestyle.py
run: python ./apps/codestyle/codestyle-cpp.py
- name: C++ Advanced
run: |
sudo apt update -y
+6 -2
View File
@@ -10,9 +10,13 @@ on:
- synchronize
concurrency:
group: ${{ github.head_ref }} || concat(${{ github.ref }}, ${{ github.workflow }})
group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }})
cancel-in-progress: true
permissions:
actions: write
contents: read
jobs:
build:
strategy:
@@ -33,7 +37,7 @@ jobs:
CXX: g++-14
runs-on: ${{ matrix.os }}
name: ${{ matrix.os }}-${{ matrix.compiler.CC }}-nopch
if: github.repository == 'azerothcore/azerothcore-wotlk'
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/linux-build
+9 -2
View File
@@ -4,12 +4,19 @@ on:
branches:
- 'master'
pull_request:
types: ['opened', 'synchronize', 'reopened']
types:
- opened
- reopened
- synchronize
concurrency:
group: ${{ github.head_ref }} || concat(${{ github.ref }}, ${{ github.workflow }})
group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }})
cancel-in-progress: true
permissions:
actions: write
contents: read
jobs:
build:
strategy:
+34 -16
View File
@@ -4,26 +4,42 @@ on:
branches:
- 'master'
pull_request:
types: ['labeled', 'opened', 'synchronize', 'reopened']
types:
- opened
- reopened
- synchronize
paths:
- 'src/*'
- 'src/common/**/*'
- 'src/genrev/**/*'
- 'src/server/*'
- 'src/server/apps/**/*'
- 'src/server/database/**/*'
- 'src/server/game/**/*'
- 'src/server/shared/**/*'
- 'src/tools/**/*'
permissions:
actions: write
contents: read
concurrency:
group: ${{ github.head_ref }} || concat(${{ github.ref }}, ${{ github.workflow }})
group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }})
cancel-in-progress: true
jobs:
build-modules:
runs-on: ubuntu-latest
name: modules build on latest ubuntu
if: |
github.repository == 'azerothcore/azerothcore-wotlk'
&& !github.event.pull_request.draft
&& (
github.ref_name == 'master'
|| contains(github.event.pull_request.labels.*.name, 'file-cpp'
|| github.event.label.name == 'file-cpp'
|| contains(github.event.pull_request.labels.*.name, 'run-build')
|| github.event.label.name == 'run-build')
)
strategy:
fail-fast: true
matrix:
include:
- os: ubuntu-24.04
compiler:
CC: clang-18
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
steps:
- uses: actions/checkout@v4
# This script installs a general list of modules to compile with
@@ -33,7 +49,9 @@ jobs:
run: bash -x ./apps/ci/ci-install-modules.sh
- uses: ./.github/actions/linux-build
with:
CC: clang-15
CXX: clang++-15
CC: ${{ matrix.compiler.CC }}
CXX: ${{ matrix.compiler.CXX }}
modules: true
pch: false
maxerrors: 0
keepgoing: true
+279
View File
@@ -0,0 +1,279 @@
name: Dashboard CI
description: |
This workflow runs tests and builds for the AzerothCore dashboard.
It includes testing of bash scripts and integration testing of the AzerothCore server.
Do not remove this if something is broken here and you don't know how to fix it, ping Yehonal instead.
on:
push:
branches:
- 'master'
pull_request:
types:
- opened
- reopened
- synchronize
workflow_dispatch:
concurrency:
group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }})
cancel-in-progress: true
permissions:
actions: write
contents: read
env:
CONTINUOUS_INTEGRATION: true
MYSQL_ROOT_PASSWORD: root
jobs:
test-bash-scripts:
name: Test Bash Scripts
strategy:
fail-fast: true
matrix:
include:
- os: ubuntu-22.04
- os: ubuntu-24.04
runs-on: ${{ matrix.os }}
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install requirements
run: |
sudo apt-get update
# Install bats-core >= 1.5.0 to support bats_require_minimum_version
sudo apt-get install -y git curl
git clone --depth 1 https://github.com/bats-core/bats-core.git /tmp/bats-core
sudo /tmp/bats-core/install.sh /usr/local
bats --version
./acore.sh install-deps
- name: Run bash script tests for ${{ matrix.test-module }}
env:
TERM: xterm-256color
run: |
./acore.sh test bash --tap --all
build-and-test:
name: Build and Integration Test
strategy:
fail-fast: true
matrix:
include:
- os: ubuntu-22.04
- os: ubuntu-24.04
runs-on: ${{ matrix.os }}
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install ccache
shell: bash
run: |
sudo apt-get update
sudo apt-get install -y ccache
ccache --version
# Detect the compilers that acore.sh / CMake will end up using.
# We record both the binary name and a short version tag for the cache key.
- name: Detect compiler
id: detect
shell: bash
run: |
set -euo pipefail
CC_BIN="${CC:-}"
CXX_BIN="${CXX:-}"
[[ -z "$CC_BIN" ]] && CC_BIN="$(command -v clang || command -v gcc)"
[[ -z "$CXX_BIN" ]] && CXX_BIN="$(command -v clang++ || command -v g++)"
make_ver_id() {
local bin="$1"; local base="$(basename "$bin")"
case "$base" in
clang)
maj="$("$bin" -dumpversion 2>/dev/null | cut -d. -f1)"; [[ -z "$maj" ]] && maj="$( "$bin" --version | sed -n 's/.*version \([0-9][0-9]*\).*/\1/p' | head -1 )"
echo "clang-${maj:-unknown}"
;;
clang++)
maj="$("$bin" -dumpversion 2>/dev/null | cut -d. -f1)"; [[ -z "$maj" ]] && maj="$( "$bin" --version | sed -n 's/.*version \([0-9][0-9]*\).*/\1/p' | head -1 )"
echo "clang++-${maj:-unknown}"
;;
gcc)
maj="$("$bin" -dumpfullversion -dumpversion 2>/dev/null || "$bin" -dumpversion 2>/dev/null)"; maj="${maj%%.*}"
echo "gcc-${maj:-unknown}"
;;
g++)
maj="$("$bin" -dumpfullversion -dumpversion 2>/dev/null || "$bin" -dumpversion 2>/dev/null)"; maj="${maj%%.*}"
echo "g++-${maj:-unknown}"
;;
*)
echo "$base"
;;
esac
}
echo "cc_id=$(make_ver_id "$CC_BIN")" >> "$GITHUB_OUTPUT"
echo "cxx_id=$(make_ver_id "$CXX_BIN")" >> "$GITHUB_OUTPUT"
echo "Detected: $CC_BIN, $CXX_BIN"
- name: Prepare ccache dir
shell: bash
run: mkdir -p "${{ github.workspace }}/var/ccache"
- name: Echo cache key
shell: bash
run: echo "Cache key -> ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:${{ github.ref_name }}"
- name: Restore ccache
id: restore_ccache
uses: actions/cache/restore@v4
with:
path: ${{ github.workspace }}/var/ccache
key: ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:${{ github.ref_name }}
restore-keys: |
ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:true:pch=false:
ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:false:pch=false:
ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:true:pch=true:
ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:false:pch=true:
ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:true:
ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:false:
ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:
- name: Setup ccache env
shell: bash
env:
CCACHE_DIR: ${{ github.workspace }}/var/ccache
run: |
mkdir -p "$CCACHE_DIR"
cat <<EOF >> "$GITHUB_ENV"
CCACHE_BASEDIR=${{ github.workspace }}
CCACHE_DIR=${{ github.workspace }}/var/ccache
CCACHE_HASHDIR=1
CCACHE_MAXSIZE=5G
CCACHE_SLOPPINESS=pch_defines,time_macros,include_file_mtime
CCACHE_COMPRESS=1
CCACHE_COMPRESSLEVEL=9
CCACHE_COMPILERCHECK=content
CCACHE_LOGFILE=${{ github.workspace }}/var/ccache/cache.debug
CMAKE_C_COMPILER_LAUNCHER=ccache
CMAKE_CXX_COMPILER_LAUNCHER=ccache
EOF
- name: ccache snapshot (before)
shell: bash
run: |
echo "==== Effective ccache configuration ===="
ccache -p | egrep 'base_dir|hash_dir|compiler_check|sloppiness|max_size' || true
echo
echo "==== Previous cache stats ===="
ccache -s || true
echo
echo "==== Top cache results (from prior runs) ===="
grep -o 'result: .*' "${{ github.workspace }}/var/ccache/cache.debug" 2>/dev/null | sort | uniq -c | sort -nr | head || true
- name: Reset ccache stats
shell: bash
run: ccache -z || true
- name: Configure AzerothCore settings
run: |
touch conf/config.sh
echo 'MTHREADS=4' >> conf/config.sh
echo 'CBUILD_TESTING=ON' >> conf/config.sh
echo 'AC_ENABLE_ROOT_CMAKE_INSTALL=1' >> conf/config.sh
echo 'export AC_CONFIG_POLICY=$AC_CONFIG_POLICY_PRESET_ZERO_CONF' >> conf/config.sh
echo 'AC_ENABLE_CONF_COPY_ON_INSTALL=0' >> conf/config.sh
cat conf/config.sh
# debug content of AC_CONFIG_POLICY
./acore.sh config show AC_CONFIG_POLICY
- name: Test module commands
run: |
./acore.sh module install mod-autobalance
./acore.sh module install mod-duel-reset
./acore.sh module list
./acore.sh module install --all
./acore.sh module update mod-autobalance
./acore.sh module update --all
- name: Run complete installation (deps, compile, database, client-data)
run: |
# This runs: install-deps, compile, database setup, client-data download
./acore.sh init
sudo npm install -g pm2
timeout-minutes: 120
- name: Test module removal
run: |
./acore.sh module remove mod-autobalance
./acore.sh module list
./acore.sh module remove mod-duel-reset
./acore.sh module list
- name: Run core tests
run: |
./acore.sh test core
- name: Test authserver dry-run
run: |
source ./acore.sh config load
cd env/dist/bin
timeout 5m ./authserver -dry-run
continue-on-error: false
- name: Test worldserver dry-run
run: |
source ./acore.sh config load
cd env/dist/bin
timeout 5m ./worldserver -dry-run
continue-on-error: false
- name: Test worldserver with startup scripts
run: |
./acore.sh sm create world worldserver --bin-path ./env/dist/bin --provider pm2
./acore.sh sm show-config worldserver
./acore.sh sm start worldserver
./acore.sh sm wait-uptime worldserver 10 300
./acore.sh sm send worldserver "account create tester password 3"
./acore.sh sm send worldserver "account set gm tester 3"
./acore.sh sm send worldserver "account set addon tester 1"
./acore.sh sm wait-uptime worldserver 10 300
./acore.sh sm stop worldserver
./acore.sh sm delete worldserver
timeout-minutes: 30
continue-on-error: false
- name: Test authserver with startup scripts
run: |
./acore.sh sm create auth authserver --bin-path ./env/dist/bin --provider pm2
./acore.sh sm show-config authserver
./acore.sh sm start authserver
./acore.sh sm wait-uptime authserver 10 300
./acore.sh sm stop authserver
./acore.sh sm delete authserver
timeout-minutes: 30
continue-on-error: false
# save only if we didn't hit the cache
- name: Save ccache
if: steps.restore_ccache.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: ${{ github.workspace }}/var/ccache
key: ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:${{ github.ref_name }}
- name: ccache stats (after)
shell: bash
run: ccache -s || true
+6 -8
View File
@@ -6,12 +6,10 @@ on:
pull_request:
types:
- labeled
- opened
- synchronize
- reopened
concurrency:
group: ${{ github.head_ref }} || concat(${{ github.ref }}, ${{ github.workflow }})
group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }})
cancel-in-progress: true
env:
@@ -38,16 +36,16 @@ jobs:
- uses: actions/checkout@v4
# The containers created in this workflow are used by
# acore-docker, which has a dependency on mod-eluna.
# acore-docker, which has a dependency on mod-ale.
#
# If you're wanting containers without mod-eluna, the best solution is to
# If you're wanting containers without mod-ale, the best solution is to
# build them locally (such as with `docker compose build`)
- name: Download Eluna
if: github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master'
uses: actions/checkout@v4
with:
repository: azerothcore/mod-eluna
path: modules/mod-eluna
repository: azerothcore/mod-ale
path: modules/mod-ale
- name: Login to Docker Hub
if: github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master'
@@ -117,6 +115,6 @@ jobs:
event-type: azerothcore-new-images
client-payload: >
{
"ref": "${{ github.ref }}",
"ref": "${{ github.ref_name }}",
"sha": "${{ github.sha }}"
}
+16 -4
View File
@@ -4,12 +4,18 @@ on:
branches:
- 'master'
pull_request:
types: ['labeled', 'opened', 'synchronize', 'reopened']
types:
- labeled
- synchronize
concurrency:
group: ${{ github.head_ref }} || concat(${{ github.ref }}, ${{ github.workflow }})
group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }})
cancel-in-progress: true
permissions:
actions: write
contents: read
jobs:
macos-build:
strategy:
@@ -29,13 +35,19 @@ jobs:
uses: actions/cache@v4
with:
path: ~/Library/Caches/ccache
key: ccache:${{ matrix.os }}:${{ github.ref }}:${{ github.sha }}
key: ccache:${{ matrix.os }}:${{ github.ref_name }}
restore-keys: |
ccache:${{ matrix.os }}:${{ github.ref }}
ccache:${{ matrix.os }}:${{ github.ref_name }}
ccache:${{ matrix.os }}
- name: reset ccache stats
shell: bash
run: ccache -z || true
- name: Install latest bash
run: brew install bash
- name: Configure OS
run: source ./acore.sh install-deps
- name: Build
run: source ./apps/ci/mac/ci-compile.sh
- name: ccache stats
shell: bash
run: ccache -s || true
+1 -1
View File
@@ -6,7 +6,7 @@ jobs:
triage:
runs-on: ubuntu-24.04
permissions: write-all
if: github.repository == 'azerothcore/azerothcore-wotlk'
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
steps:
- uses: actions/checkout@v4
with:
+12 -4
View File
@@ -1,6 +1,10 @@
name: Codestyle
name: SQL Codestyle
on:
pull_request:
types:
- opened
- reopened
- synchronize
paths:
- data/**
- "!README.md"
@@ -10,8 +14,12 @@ jobs:
triage:
runs-on: ubuntu-latest
name: SQL
if: github.repository == 'azerothcore/azerothcore-wotlk'
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
steps:
- uses: actions/checkout@v4
- name: Check pending SQL
run: source ./apps/ci/ci-pending.sh
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: AzerothCore codestyle
run: python ./apps/codestyle/codestyle-sql.py
+4 -1
View File
@@ -4,9 +4,12 @@ on:
branches:
- 'master'
pull_request:
types:
- labeled
- synchronize
concurrency:
group: ${{ github.head_ref }} || concat(${{ github.ref }}, ${{ github.workflow }})
group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }})
cancel-in-progress: true
jobs:
+4 -2
View File
@@ -4,10 +4,12 @@ on:
branches:
- 'master'
pull_request:
types: ['labeled', 'opened', 'synchronize', 'reopened']
types:
- labeled
- synchronize
concurrency:
group: ${{ github.head_ref }} || concat(${{ github.ref }}, ${{ github.workflow }})
group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }})
cancel-in-progress: true
jobs:
+10
View File
@@ -29,6 +29,9 @@
!.gitkeep
# default build directory if not specified by CMAKE configuration
/out/*
#
#Generic
#
@@ -63,6 +66,13 @@ nbproject/
.idea
cmake-build-*/*
coverage-report/
.vs
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
#
# Eclipse
+5 -3
View File
@@ -5,12 +5,14 @@
"xaver.clang-format",
"bbenoist.doxygen",
"ms-vscode.cpptools",
"austin.code-gnu-global",
"twxs.cmake",
"ms-vscode.cmake-tools",
"mhutchie.git-graph",
"github.vscode-pull-request-github",
"eamodio.gitlens",
"cschlosser.doxdocgen",
"sanaajani.taskrunnercode"
"sanaajani.taskrunnercode",
"mads-hartmann.bash-ide-vscode",
"jetmartin.bats",
"ms-vscode.makefile-tools",
]
}
+7 -1
View File
@@ -118,5 +118,11 @@
},
"deno.enable": true,
"deno.path": "deps/deno/bin/deno",
"deno.lint": true
"deno.lint": true,
"C_Cpp.default.compileCommands": "${workspaceFolder}/build/compile_commands.json",
"C_Cpp.default.cppStandard": "c++17",
"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools",
"C_Cpp.default.compilerPath": "/usr/bin/clang",
"cmake.sourceDirectory": ["${workspaceFolder}"],
"cmake.buildDirectory": "${workspaceFolder}/var/build",
}
+23 -12
View File
@@ -13,18 +13,7 @@
"problemMatcher": []
},
{
"label": "AzerothCore: Import/update database",
"type": "shell",
"command": "./acore.sh db-assembler import-all",
"group": "build",
"presentation": {
"reveal": "always",
"panel": "new"
},
"problemMatcher": []
},
{
"label": "AzerothCore: download client-data",
"label": "AzerothCore: Download client-data",
"type": "shell",
"command": "./acore.sh client-data",
"group": "none",
@@ -59,6 +48,28 @@
},
"problemMatcher": []
},
{
"label": "AzerothCore: Check codestyle cpp",
"type": "shell",
"command": "python apps/codestyle/codestyle-cpp.py",
"group": "none",
"presentation": {
"reveal": "always",
"panel": "new"
},
"problemMatcher": []
},
{
"label": "AzerothCore: Check codestyle sql",
"type": "shell",
"command": "python apps/codestyle/codestyle-sql.py",
"group": "none",
"presentation": {
"reveal": "always",
"panel": "new"
},
"problemMatcher": []
},
{
"label": "AzerothCore: Run authserver (restarter)",
"type": "shell",
+19
View File
@@ -34,3 +34,22 @@ The third-party libraries have their own way of addressing authorship, and the a
a third-party library reflects who did the importing instead of who wrote the code within the commit.
The Authors of third-party libraries are not explicitly mentioned, and usually is possible to obtain from the files belonging to the third-party libraries.
## Cross-project collaboration
At AzerothCore, we actively promote collaboration with other MaNGOS-based open-source projects that are actively maintained. This also includes cherry-picking commits from relevant projects such as:
* TrinityCore: https://github.com/trinitycore
* CMaNGOS: https://github.com/cmangos/
* vMaNGOS: https://github.com/vmangos
* and others
It is strictly required for any contributor importing code to credit the original author by:
- linking the original PR (or commit)
- adding a [Co-authored-by](https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors) line in the PR description
This will automatically include the original author in our list of [Contributors](https://github.com/azerothcore/azerothcore-wotlk/graphs/contributors).
If you notice a violation of the above, please report it to the Staff immediately.
We encourage other projects to adopt similar practices to promote healthy cross-project collaboration and proper attribution.
+3
View File
@@ -35,6 +35,9 @@ set(CMAKE_BUILD_WITH_INSTALL_RPATH 0)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH 1)
# Export compile commands for IDE support
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(AC_PATH_ROOT "${CMAKE_SOURCE_DIR}")
# set macro-directory
+3 -3
View File
@@ -1,5 +1,5 @@
{
"name": "azerothcore-wotlk",
"version": "12.0.0-dev.1",
"license": "AGPL3"
"name": "azerothcore-wotlk",
"version": "14.0.0-dev",
"license": "AGPL3"
}
@@ -0,0 +1,70 @@
#!/bin/bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
if [[ "$PROJECT_ROOT" =~ ^/([a-zA-Z])/(.*) ]]; then
DRIVE_LETTER="${BASH_REMATCH[1]}"
PATH_REMAINDER="${BASH_REMATCH[2]}"
PROJECT_ROOT="${DRIVE_LETTER^^}:/${PATH_REMAINDER}"
fi
BASE_OUTPUT_DIR="$PROJECT_ROOT/data/sql/base"
read -p "Enter MySQL username: " DB_USER
read -p "Enter MySQL password: " DB_PASS
read -p "Enter MySQL host (default: localhost): " DB_HOST
DB_HOST=${DB_HOST:-localhost}
read -p "Enter MySQL port (default: 3306): " DB_PORT
DB_PORT=${DB_PORT:-3306}
# Prompt for database names
read -p "Enter name of Auth database [default: acore_auth]: " DB_AUTH
DB_AUTH=${DB_AUTH:-acore_auth}
read -p "Enter name of Characters database [default: acore_characters]: " DB_CHARACTERS
DB_CHARACTERS=${DB_CHARACTERS:-acore_characters}
read -p "Enter name of World database [default: acore_world]: " DB_WORLD
DB_WORLD=${DB_WORLD:-acore_world}
# Mapping for folder names
declare -A DB_MAP=(
["$DB_AUTH"]="db_auth"
["$DB_CHARACTERS"]="db_characters"
["$DB_WORLD"]="db_world"
)
# Dump each database
for DB_NAME in "${!DB_MAP[@]}"; do
FOLDER_NAME="${DB_MAP[$DB_NAME]}"
echo "📦 Dumping database '$DB_NAME' into folder '$FOLDER_NAME'"
echo "$BASE_OUTPUT_DIR/$FOLDER_NAME"
mkdir -p "$BASE_OUTPUT_DIR/$FOLDER_NAME"
TABLES=$(mysql -u "$DB_USER" -p"$DB_PASS" -h "$DB_HOST" -P "$DB_PORT" -N -e "SHOW TABLES FROM \`$DB_NAME\`;")
if [[ -z "$TABLES" ]]; then
echo "⚠️ No tables found or failed to connect to '$DB_NAME'. Skipping."
continue
fi
while IFS= read -r raw_table; do
TABLE=$(echo "$raw_table" | tr -d '\r"' | xargs)
if [[ -n "$TABLE" ]]; then
echo " ➤ Dumping table: $TABLE"
# --skip-tz-utc needed to keep TIMESTAMP values as-is
mysqldump -u $DB_USER -p$DB_PASS -h $DB_HOST -P $DB_PORT --skip-tz-utc --extended-insert $DB_NAME $TABLE > $BASE_OUTPUT_DIR/$FOLDER_NAME/$TABLE.sql
# cleanup files
sed -E '
s/VALUES[[:space:]]*/VALUES\n/;
:a
s/\),\(/\),\n\(/g;
ta
' "$BASE_OUTPUT_DIR/$FOLDER_NAME/$TABLE.sql" > "$BASE_OUTPUT_DIR/$FOLDER_NAME/${TABLE}_formatted.sql"
mv "$BASE_OUTPUT_DIR/$FOLDER_NAME/${TABLE}_formatted.sql" "$BASE_OUTPUT_DIR/$FOLDER_NAME/$TABLE.sql"
fi
done <<< "$TABLES"
done
echo "✅ Done dumping all specified databases."
@@ -0,0 +1,16 @@
# The AzerothCore Database Exporter for Database Squashes
> [!CAUTION]
> These steps are only for project maintainers who intend to update base files.
## Requirements
1. MySQL
2. mysqldump
## Usage
1. Run DatabaseExporter.sh from the current directory.
2. Fill in required data within the CLI.
3. The tool will autopopulate the basefile directories.
4. Done.
+52
View File
@@ -0,0 +1,52 @@
#!/usr/bin/env bash
echo "❗CAUTION"
echo "This tool is only supposed to be used by AzerothCore Maintainers."
echo "The tool is used to prepare for, and generate a database squash."
echo
echo "Before you continue make sure you have read"
echo "https://github.com/azerothcore/azerothcore-wotlk/blob/master/data/sql/base/database-squash.md"
echo
read -p "Are you sure you want to continue (Y/N)?" choice
case "$choice" in
y|Y ) echo "Starting...";;
* ) echo "Aborted"; exit 0 ;;
esac
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
if [[ "$PROJECT_ROOT" =~ ^/([a-zA-Z])/(.*) ]]; then
DRIVE_LETTER="${BASH_REMATCH[1]}"
PATH_REMAINDER="${BASH_REMATCH[2]}"
PROJECT_ROOT="${DRIVE_LETTER^^}:/${PATH_REMAINDER}"
fi
VERSION_UPDATER_PATH="$PROJECT_ROOT/apps/DatabaseSquash/VersionUpdater/versionupdater.sh"
"$VERSION_UPDATER_PATH"
echo "✅ VersionUpdater Completed..."
echo
echo "❗IMPORTANT!"
echo "1. Before you continue you need to drop all your databases."
echo "2. Run WorldServer to populate the database."
echo
echo "❗DO NOT continue before you have completed the steps above!"
echo
echo "The next step will export your database and overwrite the base files."
echo
read -p "Are you sure you want to export your database (Y/N)?" choice
case "$choice" in
y|Y ) echo "Starting...";;
* ) echo "Aborted"; exit 0 ;;
esac
DATABASE_EXPORTER_PATH="$PROJECT_ROOT/apps/DatabaseSquash/DatabaseExporter/databaseexporter.sh"
"$DATABASE_EXPORTER_PATH"
echo "✅ DatabaseExporter Completed..."
echo "✅ DatabaseSquash Completed... "
echo
read -p "Press Enter to exit..."
@@ -0,0 +1,84 @@
#!/bin/bash
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
if [[ "$PROJECT_ROOT" =~ ^/([a-zA-Z])/(.*) ]]; then
DRIVE_LETTER="${BASH_REMATCH[1]}"
PATH_REMAINDER="${BASH_REMATCH[2]}"
PROJECT_ROOT="${DRIVE_LETTER^^}:/${PATH_REMAINDER}"
fi
ACORE_JSON_PATH="$PROJECT_ROOT/acore.json"
DB_WORLD_UPDATE_DIR="$PROJECT_ROOT/data/sql/updates/db_world"
VERSION_LINE=$(grep '"version"' "$ACORE_JSON_PATH")
VERSION=$(echo "$VERSION_LINE" | sed -E 's/.*"version": *"([^"]+)".*/\1/')
# Parse version into parts
if [[ "$VERSION" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)(.*)$ ]]; then
MAJOR="${BASH_REMATCH[1]}"
SUFFIX="${BASH_REMATCH[4]}"
NEW_VERSION="$((MAJOR + 1)).0.0$SUFFIX"
# Replace version in file
sed -i.bak -E "s/(\"version\": *\")[^\"]+(\" *)/\1$NEW_VERSION\2/" "$ACORE_JSON_PATH"
rm -f "$ACORE_JSON_PATH.bak"
echo "✅ Version updated to $NEW_VERSION"
else
echo "Error: Could not parse version string: $VERSION"
exit 1
fi
# Extract the new major version from NEW_VERSION
if [[ "$NEW_VERSION" =~ ^([0-9]+)\. ]]; then
NEW_MAJOR="${BASH_REMATCH[1]}"
else
echo "Error: Unable to extract major version from $NEW_VERSION"
exit 1
fi
# Prepare SQL content
DB_VERSION_CONTENT="'ACDB 335.${NEW_MAJOR}-dev'"
SQL_QUERY="UPDATE \`version\` SET \`db_version\`=${DB_VERSION_CONTENT}, \`cache_id\`=${NEW_MAJOR} LIMIT 1;"
# Format date as yyyy_mm_dd
TODAY=$(date +%Y_%m_%d)
# Ensure directory exists
mkdir -p "$DB_WORLD_UPDATE_DIR"
# List existing files for today
existing_files=($(find "$DB_WORLD_UPDATE_DIR" -maxdepth 1 -type f -name "${TODAY}_*.sql" 2>/dev/null))
# Determine next xx counter
# Determine next xx
COUNTER="00"
if [ ${#existing_files[@]} -gt 0 ]; then
max=0
for file in "${existing_files[@]}"; do
basename=$(basename "$file")
if [[ "$basename" =~ ^${TODAY}_([0-9]{2})\.sql$ ]]; then
num=${BASH_REMATCH[1]}
if [[ "$num" =~ ^[0-9]+$ ]] && (( 10#$num > max )); then
max=$((10#$num))
fi
fi
done
COUNTER=$(printf "%02d" $((max + 1)))
fi
# Compose final file path
SQL_FILENAME="${TODAY}_${COUNTER}.sql"
SQL_FILE_PATH="$DB_WORLD_UPDATE_DIR/$SQL_FILENAME"
# Write to file
{
echo "-- Auto-generated by VersionUpdater.sh on $(date)"
echo "$SQL_QUERY"
} > "$SQL_FILE_PATH"
echo "✅ SQL file created at $SQL_FILE_PATH"
@@ -0,0 +1,10 @@
# The AzerothCore Version Updater for Database Squashes
> [!CAUTION]
> These steps are only for project maintainers who intend to update base files.
## Usage
1. Run VersionUpdater.sh from the current directory.
2. The tool will update acore.json and create a new update sql file.
3. Done.
+11
View File
@@ -0,0 +1,11 @@
# The AzerothCore DatabaseSquash tool for Database Squashes
> [!CAUTION]
> These steps are only for project maintainers who intend to update base files.
## Usage
1. Run DatabaseSquash.sh from the current directory.
2. The tool will run VersionUpdater.sh and DatabaseExporter.sh
3. Follow the instructions in the CLI.
4. Done.
+11 -8
View File
@@ -1,16 +1,19 @@
function registerHooks() { acore_event_registerHooks "$@"; }
function runHooks() { acore_event_runHooks "$@"; }
source "$AC_PATH_CONF/dist/config.sh" # include dist to avoid missing conf variables
function acore_common_loadConfig() {
#shellcheck source=../../conf/dist/config.sh
source "$AC_PATH_CONF/dist/config.sh" # include dist to avoid missing conf variables
# first check if it's defined in env, otherwise use the default
USER_CONF_PATH=${USER_CONF_PATH:-"$AC_PATH_CONF/config.sh"}
# first check if it's defined in env, otherwise use the default
USER_CONF_PATH=${USER_CONF_PATH:-"$AC_PATH_CONF/config.sh"}
if [ -f "$USER_CONF_PATH" ]; then
source "$USER_CONF_PATH" # should overwrite previous
else
echo "NOTICE: file <$USER_CONF_PATH> not found, we use default configuration only."
fi
if [ -f "$USER_CONF_PATH" ]; then
source "$USER_CONF_PATH" # should overwrite previous
else
echo "NOTICE: file <$USER_CONF_PATH> not found, we use default configuration only."
fi
}
#
# Load modules
+6 -4
View File
@@ -19,10 +19,12 @@ case $AC_PATH_ROOT in
*) AC_PATH_ROOT=$PWD/$AC_PATH_ROOT;;
esac
AC_PATH_CONF="$AC_PATH_ROOT/conf"
export AC_PATH_CONF="$AC_PATH_ROOT/conf"
AC_PATH_MODULES="$AC_PATH_ROOT/modules"
export AC_PATH_MODULES="$AC_PATH_ROOT/modules"
AC_PATH_DEPS="$AC_PATH_ROOT/deps"
export AC_PATH_DEPS="$AC_PATH_ROOT/deps"
AC_PATH_VAR="$AC_PATH_ROOT/var"
export AC_BASH_LIB_PATH="$AC_PATH_DEPS/acore/bash-lib/src"
export AC_PATH_VAR="$AC_PATH_ROOT/var"
+10 -1
View File
@@ -7,10 +7,19 @@ AC_PATH_APPS="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../" && pwd )"
AC_PATH_SHARED="$AC_PATH_APPS/bash_shared"
# shellcheck source=./defines.sh
source "$AC_PATH_SHARED/defines.sh"
# shellcheck source=../../deps/acore/bash-lib/src/event/hooks.sh
source "$AC_PATH_DEPS/acore/bash-lib/src/event/hooks.sh"
# shellcheck source=./common.sh
source "$AC_PATH_SHARED/common.sh"
[[ "$OSTYPE" = "msys" ]] && AC_BINPATH_FULL="$BINPATH" || AC_BINPATH_FULL="$BINPATH/bin"
acore_common_loadConfig
if [[ "$OSTYPE" = "msys" ]]; then
AC_BINPATH_FULL="$BINPATH"
else
export AC_BINPATH_FULL="$BINPATH/bin"
fi
+267
View File
@@ -0,0 +1,267 @@
#!/usr/bin/env bash
# =============================================================================
# AzerothCore Menu System Library
# =============================================================================
# This library provides a unified menu system for AzerothCore scripts.
# It supports ordered menu definitions, short commands, numeric selection,
# and proper argument handling.
#
# Features:
# - Single source of truth for menu definitions
# - Automatic ID assignment (1, 2, 3...)
# - Short command aliases (c, i, q, etc.)
# - Interactive mode: numbers + long/short commands
# - Direct mode: only long/short commands (no numbers)
# - Proper argument forwarding
#
# Usage:
# source "path/to/menu_system.sh"
# menu_items=("command|short|description" ...)
# menu_run "Menu Title" callback_function "${menu_items[@]}" "$@"
# =============================================================================
# Global arrays for menu state (will be populated by menu_define)
declare -a _MENU_KEYS=()
declare -a _MENU_SHORTS=()
declare -a _MENU_OPTIONS=()
# Parse menu items and populate global arrays
# Usage: menu_define array_elements...
function menu_define() {
# Clear previous state
_MENU_KEYS=()
_MENU_SHORTS=()
_MENU_OPTIONS=()
# Parse each menu item: "key|short|description"
local item key short desc
for item in "$@"; do
IFS='|' read -r key short desc <<< "$item"
_MENU_KEYS+=("$key")
_MENU_SHORTS+=("$short")
_MENU_OPTIONS+=("$key ($short): $desc")
done
}
# Display menu with numbered options
# Usage: menu_display "Menu Title"
function menu_display() {
local title="$1"
echo "==== $title ===="
for idx in "${!_MENU_OPTIONS[@]}"; do
local num=$((idx + 1))
printf "%2d) %s\n" "$num" "${_MENU_OPTIONS[$idx]}"
done
echo ""
}
# Find menu index by user input (number, long command, or short command)
# Returns: index (0-based) or -1 if not found
# Usage: index=$(menu_find_index "user_input")
function menu_find_index() {
local user_input="$1"
# Try numeric selection first
if [[ "$user_input" =~ ^[0-9]+$ ]]; then
local num=$((user_input - 1))
if [[ $num -ge 0 && $num -lt ${#_MENU_KEYS[@]} ]]; then
echo "$num"
return 0
fi
fi
# Try long command name
local idx
for idx in "${!_MENU_KEYS[@]}"; do
if [[ "$user_input" == "${_MENU_KEYS[$idx]}" ]]; then
echo "$idx"
return 0
fi
done
# Try short command
for idx in "${!_MENU_SHORTS[@]}"; do
if [[ "$user_input" == "${_MENU_SHORTS[$idx]}" ]]; then
echo "$idx"
return 0
fi
done
echo "-1"
return 1
}
# Handle direct execution (command line arguments)
# Disables numeric selection to prevent confusion with command arguments
# Usage: menu_direct_execute callback_function "$@"
function menu_direct_execute() {
local callback="$1"
shift
local user_input="$1"
shift
# Disable numeric selection in direct mode
if [[ "$user_input" =~ ^[0-9]+$ ]]; then
echo "Invalid option. Numeric selection is not allowed when passing arguments."
echo "Use command name or short alias instead."
return 1
fi
# Find command and execute
local idx
# try-catch
{
idx=$(menu_find_index "$user_input")
} ||
{
idx=-1
}
if [[ $idx -ge 0 ]]; then
"$callback" "${_MENU_KEYS[$idx]}" "$@"
return $?
else
# Handle help requests directly
if [[ "$user_input" == "--help" || "$user_input" == "help" || "$user_input" == "-h" ]]; then
echo "Available commands:"
printf '%s\n' "${_MENU_OPTIONS[@]}"
return 0
fi
echo "Invalid option. Use --help to see available commands." >&2
return 1
fi
}
# Handle interactive menu selection
# Usage: menu_interactive callback_function "Menu Title"
function menu_interactive() {
local callback="$1"
local title="$2"
while true; do
menu_display "$title"
read -r -p "Please enter your choice: " REPLY
# Parse input to separate command from arguments
local input_parts=()
read -r -a input_parts <<< "$REPLY"
local user_command="${input_parts[0]}"
local user_args=("${input_parts[@]:1}")
# Find and execute command
local idx
idx=$(menu_find_index "$user_command")
if [[ $idx -ge 0 ]]; then
# Pass the command key and any additional arguments
"$callback" "${_MENU_KEYS[$idx]}" "${user_args[@]}"
local exit_code=$?
# Exit loop if callback returns 0 (e.g., quit command)
if [[ $exit_code -eq 0 && "${_MENU_KEYS[$idx]}" == "quit" ]]; then
break
fi
else
# Handle help request
if [[ "$REPLY" == "--help" || "$REPLY" == "help" || "$REPLY" == "h" ]]; then
echo "Available commands:"
printf '%s\n' "${_MENU_OPTIONS[@]}"
echo ""
continue
fi
echo "Invalid option. Please try again or use 'help' for available commands." >&2
echo ""
fi
done
}
# Main menu runner function
# Usage: menu_run "Menu Title" callback_function "$@"
# The menu items array should be defined globally before calling this function
function menu_run() {
local title="$1"
local callback="$2"
shift 2
# Define menu from globally available menu items array
# This expects the calling script to have set up the menu items
# Handle direct execution if arguments provided
if [[ $# -gt 0 ]]; then
menu_direct_execute "$callback" "$@"
return $?
fi
# Run interactive menu
menu_interactive "$callback" "$title"
}
# Alternative menu runner that accepts menu items directly
# Usage: menu_run_with_items "Menu Title" callback_function -- "${menu_items_array[@]}" -- "$@"
function menu_run_with_items() {
local title="$1"
local callback="$2"
shift 2
# Parse parameters: menu items are between first and second "--"
local menu_items=()
local script_args=()
# Skip first "--"
if [[ "$1" == "--" ]]; then
shift
else
echo "Error: menu_run_with_items requires -- separator before menu items" >&2
return 1
fi
# Collect menu items until second "--"
while [[ $# -gt 0 && "$1" != "--" ]]; do
menu_items+=("$1")
shift
done
# Skip second "--" if present
if [[ "$1" == "--" ]]; then
shift
fi
# Remaining args are script arguments
script_args=("$@")
# Define menu from provided array
menu_define "${menu_items[@]}"
# Handle direct execution if arguments provided
if [[ ${#script_args[@]} -gt 0 ]]; then
menu_direct_execute "$callback" "${script_args[@]}"
return $?
fi
# Run interactive menu
menu_interactive "$callback" "$title"
}
# Utility function to show available commands (for --help)
# Usage: menu_show_help
function menu_show_help() {
echo "Available commands:"
printf '%s\n' "${_MENU_OPTIONS[@]}"
}
# Utility function to get command key by index
# Usage: key=$(menu_get_key index)
function menu_get_key() {
local idx="$1"
if [[ $idx -ge 0 && $idx -lt ${#_MENU_KEYS[@]} ]]; then
echo "${_MENU_KEYS[$idx]}"
fi
}
# Utility function to get all command keys
# Usage: keys=($(menu_get_all_keys))
function menu_get_all_keys() {
printf '%s\n' "${_MENU_KEYS[@]}"
}
+98 -20
View File
@@ -3,27 +3,105 @@
set -e
echo "install modules"
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-eluna.git modules/mod-eluna
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-autobalance.git modules/mod-autobalance
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-ah-bot.git modules/mod-ah-bot
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-anticheat.git modules/mod-anticheat
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-bg-item-reward.git modules/mod-bg-item-reward
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-1v1-arena modules/mod-1v1-arena
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-account-mounts modules/mod-account-mounts
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-ah-bot modules/mod-ah-bot
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-anticheat modules/mod-anticheat
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-antifarming modules/mod-antifarming
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-arena-3v3-solo-queue modules/mod-arena-3v3-solo-queue
git clone --depth=1 --branch=main https://github.com/azerothcore/mod-arena-replay modules/mod-arena-replay
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-auto-revive modules/mod-auto-revive
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-autobalance modules/mod-autobalance
# NOTE: disabled because it causes DB error
# git clone --depth=1 --branch=master https://github.com/azerothcore/mod-azerothshard.git modules/mod-azerothshard
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-cfbg.git modules/mod-cfbg
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-better-item-reloading modules/mod-better-item-reloading
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-bg-item-reward modules/mod-bg-item-reward
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-bg-reward modules/mod-bg-reward
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-boss-announcer modules/mod-boss-announcer
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-breaking-news-override modules/mod-breaking-news-override
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-buff-command modules/mod-buff-command
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-cfbg modules/mod-cfbg
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-character-tools modules/mod-character-tools
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-chat-login modules/mod-chat-login
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-chat-transmitter modules/mod-chat-transmitter
# NOTE: disabled because it causes DB error
#git clone --depth=1 --branch=master https://github.com/azerothcore/mod-chromie-xp.git modules/mod-chromie-xp
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-cta-switch.git modules/mod-cta-switch
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-desertion-warnings.git modules/mod-desertion-warnings
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-duel-reset.git modules/mod-duel-reset
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-ip-tracker.git modules/mod-ip-tracker
git clone --depth=1 --branch=main https://github.com/azerothcore/mod-low-level-arena.git modules/mod-low-level-arena
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-low-level-rbg.git modules/mod-low-level-rbg
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-multi-client-check.git modules/mod-multi-client-check
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-pvp-titles.git modules/mod-pvp-titles
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-pvpstats-announcer.git modules/mod-pvpstats-announcer
git clone --depth=1 --branch=main https://github.com/azerothcore/mod-queue-list-cache.git modules/mod-queue-list-cache
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-server-auto-shutdown.git modules/mod-server-auto-shutdown
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-transmog.git modules/mod-transmog
# NOTE: disabled because it causes DB startup error
# git clone --depth=1 --branch=master https://github.com/azerothcore/mod-chromie-xp modules/mod-chromie-xp
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-congrats-on-level modules/mod-congrats-on-level
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-costumes modules/mod-costumes
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-cta-switch modules/mod-cta-switch
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-custom-login modules/mod-custom-login
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-desertion-warnings modules/mod-desertion-warnings
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-detailed-logging modules/mod-detailed-logging
git clone --depth=1 --branch=main https://github.com/azerothcore/mod-dmf-switch modules/mod-dmf-switch
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-duel-reset modules/mod-duel-reset
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-dynamic-xp modules/mod-dynamic-xp
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-ale modules/mod-ale
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-emblem-transfer modules/mod-emblem-transfer
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-fireworks-on-level modules/mod-fireworks-on-level
git clone --depth=1 --branch=main https://github.com/azerothcore/mod-global-chat modules/mod-global-chat
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-guild-zone-system modules/mod-guild-zone-system
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-guildhouse modules/mod-guildhouse
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-individual-xp modules/mod-individual-xp
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-instance-reset modules/mod-instance-reset
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-instanced-worldbosses modules/mod-instanced-worldbosses
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-ip-tracker modules/mod-ip-tracker
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-item-level-up modules/mod-item-level-up
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-keep-out modules/mod-keep-out
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-learn-highest-talent modules/mod-learn-highest-talent
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-learn-spells modules/mod-learn-spells
git clone --depth=1 --branch=main https://github.com/azerothcore/mod-low-level-arena modules/mod-low-level-arena
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-low-level-rbg modules/mod-low-level-rbg
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-mall-teleport modules/mod-mall-teleport
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-morph-all-players modules/mod-morph-all-players
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-morphsummon modules/mod-morphsummon
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-multi-client-check modules/mod-multi-client-check
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-notify-muted modules/mod-notify-muted
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-npc-all-mounts modules/mod-npc-all-mounts
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-npc-beastmaster modules/mod-npc-beastmaster
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-npc-buffer modules/mod-npc-buffer
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-npc-codebox modules/mod-npc-codebox
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-npc-enchanter modules/mod-npc-enchanter
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-npc-free-professions modules/mod-npc-free-professions
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-npc-gambler modules/mod-npc-gambler
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-npc-morph modules/mod-npc-morph
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-npc-services modules/mod-npc-services
# not yet on azerothcore github
git clone --depth=1 --branch=master https://github.com/gozzim/mod-npc-spectator modules/mod-npc-spectator
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-npc-talent-template modules/mod-npc-talent-template
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-npc-titles-tokens modules/mod-npc-titles-tokens
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-phased-duels modules/mod-phased-duels
# outdated
# git clone --depth=1 --branch=master https://github.com/azerothcore/mod-playerbots modules/mod-playerbots
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-pocket-portal modules/mod-pocket-portal
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-premium modules/mod-premium
git clone --depth=1 --branch=main https://github.com/azerothcore/mod-progression-system.git modules/mod-progression-system
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-promotion-azerothcore modules/mod-promotion-azerothcore
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-pvp-quests modules/mod-pvp-quests
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-pvp-titles modules/mod-pvp-titles
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-pvp-zones modules/mod-pvp-zones
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-pvpscript modules/mod-pvpscript
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-pvpstats-announcer modules/mod-pvpstats-announcer
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-quest-status modules/mod-quest-status
git clone --depth=1 --branch=main https://github.com/azerothcore/mod-queue-list-cache modules/mod-queue-list-cache
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-quick-teleport modules/mod-quick-teleport
git clone --depth=1 --branch=main https://github.com/azerothcore/mod-racial-trait-swap modules/mod-racial-trait-swap
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-random-enchants modules/mod-random-enchants
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-rdf-expansion modules/mod-rdf-expansion
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-resurrection-scroll modules/mod-resurrection-scroll
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-reward-played-time modules/mod-reward-played-time
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-reward-shop modules/mod-reward-shop
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-server-auto-shutdown.git modules/mod-server-auto-shutdown
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-solocraft modules/mod-solocraft
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-skip-dk-starting-area modules/mod-skip-dk-starting-area
# has core patch file
# git clone --depth=1 --branch=master https://github.com/azerothcore/mod-spell-regulator modules/mod-spell-regulator
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-starter-guild modules/mod-starter-guild
git clone --depth=1 --branch=main https://github.com/azerothcore/mod-system-vip modules/mod-system-vip
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-tic-tac-toe modules/mod-tic-tac-toe
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-top-arena modules/mod-top-arena
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-transmog modules/mod-transmog
# archived / outdated
#git clone --depth=1 --branch=master https://github.com/azerothcore/mod-war-effort modules/mod-war-effort
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-weekend-xp modules/mod-weekend-xp
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-who-logged modules/mod-who-logged
git clone --depth=1 --branch=master https://github.com/azerothcore/mod-zone-difficulty modules/mod-zone-difficulty
-36
View File
@@ -1,36 +0,0 @@
#!/bin/bash
set -e
echo "Pending SQL check script:"
echo
# We want to ensure the end of file has a semicolon and doesn't have extra
# newlines
find data/sql/updates/pending* -name "*.sql" -type f | while read -r file; do
# The first sed script collapses all strings into an empty string. The
# contents of strings aren't necessary for this check and its still valid
# sql.
#
# The second rule removes sql comments.
ERR_AT_EOF="$(sed -e "s/'.*'/''/g" -e 's/ --([^-])*$//' "$file" | tr -d '\n ' | tail -c 1)"
if [[ "$ERR_AT_EOF" != ";" ]]; then
echo "Missing Semicolon (;) or multiple newlines at the end of the file."
exit 1
else
echo "> Semicolon check - OK"
fi
done
find data/sql/updates/pending* -name "*.sql" -type f | while read -r file; do
if sed "s/'.*'\(.*\)/\1/g" "$file" | grep -q -i -E "broadcast_text"; then
echo "> broadcast_text check - Failed"
echo " - DON'T EDIT broadcast_text TABLE UNLESS YOU KNOW WHAT YOU ARE DOING!"
echo " - This error can safely be ignored if the changes are approved to be sniffed."
exit 1
else
echo "> broadcast_text check - OK"
fi
done
echo
echo "Everything looks good"
@@ -21,6 +21,11 @@ results = {
# Main function to parse all the files of the project
def parsing_file(directory: str) -> None:
print("Starting AzerothCore CPP Codestyle check...")
print(" ")
print("Please read the C++ Code Standards for AzerothCore:")
print("https://www.azerothcore.org/wiki/cpp-code-standards")
print(" ")
for root, _, files in os.walk(directory):
for file in files:
if not file.endswith('.ico'): # Skip .ico files that cannot be read
@@ -138,23 +143,23 @@ def npcflags_helpers_check(file: io, file_path: str) -> None:
for line_number, line in enumerate(file, start = 1):
if 'GetUInt32Value(UNIT_NPC_FLAGS)' in line:
print(
f"Please use GetNpcFlags() instead GetUInt32Value(UNIT_NPC_FLAGS): {file_path} at line {line_number}")
f"Please use GetNpcFlags() instead of GetUInt32Value(UNIT_NPC_FLAGS): {file_path} at line {line_number}")
check_failed = True
if 'HasFlag(UNIT_NPC_FLAGS,' in line:
print(
f"Please use HasNpcFlag() instead HasFlag(UNIT_NPC_FLAGS, ...): {file_path} at line {line_number}")
f"Please use HasNpcFlag() instead of HasFlag(UNIT_NPC_FLAGS, ...): {file_path} at line {line_number}")
check_failed = True
if 'SetUInt32Value(UNIT_NPC_FLAGS,' in line:
print(
f"Please use ReplaceAllNpcFlags() instead SetUInt32Value(UNIT_NPC_FLAGS, ...): {file_path} at line {line_number}")
f"Please use ReplaceAllNpcFlags() instead of SetUInt32Value(UNIT_NPC_FLAGS, ...): {file_path} at line {line_number}")
check_failed = True
if 'SetFlag(UNIT_NPC_FLAGS,' in line:
print(
f"Please use SetNpcFlag() instead SetFlag(UNIT_NPC_FLAGS, ...): {file_path} at line {line_number}")
f"Please use SetNpcFlag() instead of SetFlag(UNIT_NPC_FLAGS, ...): {file_path} at line {line_number}")
check_failed = True
if 'RemoveFlag(UNIT_NPC_FLAGS,' in line:
print(
f"Please use RemoveNpcFlag() instead RemoveFlag(UNIT_NPC_FLAGS, ...): {file_path} at line {line_number}")
f"Please use RemoveNpcFlag() instead of RemoveFlag(UNIT_NPC_FLAGS, ...): {file_path} at line {line_number}")
check_failed = True
# Handle the script error and update the result output
if check_failed:
@@ -214,20 +219,41 @@ def misc_codestyle_check(file: io, file_path: str) -> None:
global error_handler, results
file.seek(0) # Reset file pointer to the beginning
check_failed = False
# used to check for "if/else (...) {" "} else" ignores "if/else (...) {...}" "#define ... if/else (...) {"
ifelse_curlyregex = r"^[^#define].*\s+(if|else)(\s*\(.*\))?\s*{[^}]*$|}\s*else(\s*{[^}]*$)"
# used to catch double semicolons ";;" ignores "(;;)"
double_semiregex = r"(?<!\()\s*;;(?!\))"
# used to catch tabs
tab_regex = r"\t"
# Parse all the file
for line_number, line in enumerate(file, start = 1):
if 'const auto&' in line:
print(
f"Please use 'auto const&' syntax instead of 'const auto&': {file_path} at line {line_number}")
f"Please use the 'auto const&' syntax instead of 'const auto&': {file_path} at line {line_number}")
check_failed = True
if re.search(r'\bconst\s+\w+\s*\*\b', line):
print(
f"Please use the syntax 'Class/ObjectType const*' instead of 'const Class/ObjectType*': {file_path} at line {line_number}")
f"Please use the 'Class/ObjectType const*' syntax instead of 'const Class/ObjectType*': {file_path} at line {line_number}")
check_failed = True
if [match for match in [' if(', ' if ( '] if match in line]:
print(
f"AC have as standard: if (XXXX). Please check spaces in your condition': {file_path} at line {line_number}")
f"Please use the 'if (XXXX)' syntax instead of 'if(XXXX)': {file_path} at line {line_number}")
check_failed = True
if re.match(ifelse_curlyregex, line):
print(
f"Curly brackets are not allowed to be leading or trailing if/else statements. Place it on a new line: {file_path} at line {line_number}")
check_failed = True
if re.search(double_semiregex, line):
print(
f"Double semicolon (;;) found in {file_path} at line {line_number}")
check_failed = True
if re.match(tab_regex, line):
print(
f"Tab found! Replace it to 4 spaces: {file_path} at line {line_number}")
check_failed = True
# Handle the script error and update the result output
if check_failed:
error_handler = True
+411
View File
@@ -0,0 +1,411 @@
import io
import os
import sys
import re
import glob
import subprocess
base_dir = os.getcwd()
# Get the pending directory of the project
pattern = os.path.join(base_dir, 'data/sql/updates/pending_db_*')
src_directory = glob.glob(pattern)
# Get files from base dir
base_pattern = os.path.join(base_dir, 'data/sql/base/db_*')
base_directory = glob.glob(base_pattern)
# Get files from archive dir
archive_pattern = os.path.join(base_dir, 'data/sql/archive/db_*')
archive_directory = glob.glob(archive_pattern)
# Global variables
error_handler = False
results = {
"Multiple blank lines check": "Passed",
"Trailing whitespace check": "Passed",
"SQL codestyle check": "Passed",
"INSERT & DELETE safety usage check": "Passed",
"Missing semicolon check": "Passed",
"Backtick check": "Passed",
"Directory check": "Passed",
"Table engine check": "Passed"
}
# Collect all files in all directories
def collect_files_from_directories(directories: list) -> list:
all_files = []
for directory in directories:
for root, _, files in os.walk(directory):
for file in files:
if not file.endswith('.sh'): # Skip .sh files
all_files.append(os.path.join(root, file))
return all_files
# Used to find changed or added files compared to master.
def get_changed_files() -> list:
subprocess.run(["git", "fetch", "origin", "master"], check=True)
result = subprocess.run(
["git", "diff", "--name-status", "origin/master"],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
)
changed_files = []
for line in result.stdout.strip().splitlines():
if not line:
continue
status, path = line.split(maxsplit=1)
if status in ("A", "M"):
changed_files.append(path)
return changed_files
# Main function to parse all the files of the project
def parsing_file(files: list) -> None:
print("Starting AzerothCore SQL Codestyle check...")
print(" ")
print("Please read the SQL Standards for AzerothCore:")
print("https://www.azerothcore.org/wiki/sql-standards")
print(" ")
# Iterate over all files in data/sql/updates/pending_db_*
for file_path in files:
if "base" not in file_path and "archive" not in file_path:
try:
with open(file_path, 'r', encoding='utf-8') as file:
multiple_blank_lines_check(file, file_path)
trailing_whitespace_check(file, file_path)
sql_check(file, file_path)
insert_delete_safety_check(file, file_path)
semicolon_check(file, file_path)
backtick_check(file, file_path)
non_innodb_engine_check(file, file_path)
except UnicodeDecodeError:
print(f"\n❌ Could not decode file {file_path}")
sys.exit(1)
# Make sure we only check changed or added files when we work with base/archive paths
changed_files = get_changed_files()
# Iterate over all file paths
for file_path in changed_files:
if "base" in file_path or "archive" in file_path:
try:
with open(file_path, "r", encoding="utf-8") as f:
directory_check(f, file_path)
except UnicodeDecodeError:
print(f"\n❌ Could not decode file {file_path}")
sys.exit(1)
# Output the results
print("\n ")
for check, result in results.items():
print(f"{check} : {result}")
if error_handler:
print("\n ")
print("\n❌ Please fix the codestyle issues above.")
sys.exit(1)
else:
print("\n ")
print(f"\n✅ Everything looks good")
# Codestyle patterns checking for multiple blank lines
def multiple_blank_lines_check(file: io, file_path: str) -> None:
global error_handler, results
file.seek(0) # Reset file pointer to the beginning
check_failed = False
consecutive_blank_lines = 0
# Parse all the file
for line_number, line in enumerate(file, start = 1):
if line.strip() == '':
consecutive_blank_lines += 1
if consecutive_blank_lines > 1:
print(f"❌ Multiple blank lines found in {file_path} at line {line_number - 1}")
check_failed = True
else:
consecutive_blank_lines = 0
# Additional check for the end of the file
if consecutive_blank_lines >= 1:
print(f"❌ Multiple blank lines found at the end of: {file_path}")
check_failed = True
# Handle the script error and update the result output
if check_failed:
error_handler = True
results["Multiple blank lines check"] = "Failed"
# Codestyle patterns checking for whitespace at the end of the lines
def trailing_whitespace_check(file: io, file_path: str) -> None:
global error_handler, results
file.seek(0) # Reset file pointer to the beginning
check_failed = False
# Parse all the file
for line_number, line in enumerate(file, start = 1):
if line.endswith(' \n'):
print(f"❌ Trailing whitespace found: {file_path} at line {line_number}")
check_failed = True
if check_failed:
error_handler = True
results["Trailing whitespace check"] = "Failed"
# Codestyle patterns checking for various codestyle issues
def sql_check(file: io, file_path: str) -> None:
global error_handler, results
file.seek(0) # Reset file pointer to the beginning
check_failed = False
# Parse all the file
for line_number, line in enumerate(file, start = 1):
if [match for match in ['broadcast_text'] if match in line]:
print(
f"❌ DON'T EDIT broadcast_text TABLE UNLESS YOU KNOW WHAT YOU ARE DOING!\nThis error can safely be ignored if the changes are approved to be sniffed: {file_path} at line {line_number}")
check_failed = True
if "EntryOrGuid" in line:
print(
f"❌ Please use entryorguid syntax instead of EntryOrGuid in {file_path} at line {line_number}\nWe recommend to use keira to have the right syntax in auto-query generation")
check_failed = True
if [match for match in [';;'] if match in line]:
print(
f"❌ Double semicolon (;;) found in {file_path} at line {line_number}")
check_failed = True
if re.match(r"\t", line):
print(
f"❌ Tab found! Replace it to 4 spaces: {file_path} at line {line_number}")
check_failed = True
last_line = line[-1].strip()
if last_line:
print(
f"❌ The last line is not a newline. Please add a newline: {file_path}")
check_failed = True
# Handle the script error and update the result output
if check_failed:
error_handler = True
results["SQL codestyle check"] = "Failed"
def insert_delete_safety_check(file: io, file_path: str) -> None:
global error_handler, results
file.seek(0) # Reset file pointer to the beginning
not_delete = ["creature_template", "gameobject_template", "item_template", "quest_template"]
check_failed = False
previous_line = ""
# Parse all the file
for line_number, line in enumerate(file, start = 1):
if line.startswith("--"):
continue
if "INSERT" in line and "DELETE" not in previous_line:
print(f"❌ No DELETE keyword found before the INSERT in {file_path} at line {line_number}\nIf this error is intended, please notify a maintainer")
check_failed = True
previous_line = line
match = re.match(r"DELETE FROM\s+`([^`]+)`", line, re.IGNORECASE)
if match:
table_name = match.group(1)
if table_name in not_delete:
print(
f"❌ Entries from {table_name} should not be deleted! {file_path} at line {line_number}\nIf this error is intended, please notify a maintainer")
check_failed = True
# Handle the script error and update the result output
if check_failed:
error_handler = True
results["INSERT & DELETE safety usage check"] = "Failed"
def semicolon_check(file: io, file_path: str) -> None:
global error_handler, results
file.seek(0) # Reset file pointer to the start
check_failed = False
query_open = False
in_block_comment = False
inside_values_block = False
lines = file.readlines()
total_lines = len(lines)
def get_next_non_blank_line(start):
""" Get the next non-blank, non-comment line starting from `start` """
for idx in range(start, total_lines):
next_line = lines[idx].strip()
if next_line and not next_line.startswith('--') and not next_line.startswith('/*'):
return next_line
return None
for line_number, line in enumerate(lines, start=1):
stripped_line = line.strip()
# Skip single-line comments
if stripped_line.startswith('--'):
continue
# Handle block comments
if in_block_comment:
if '*/' in stripped_line:
in_block_comment = False
stripped_line = stripped_line.split('*/', 1)[1].strip()
else:
continue
else:
if '/*' in stripped_line:
query_open = False # Reset query state at start of block comment
in_block_comment = True
stripped_line = stripped_line.split('/*', 1)[0].strip()
# Skip empty lines (unless inside values block)
if not stripped_line and not inside_values_block:
continue
# Remove inline comments after SQL
stripped_line = stripped_line.split('--', 1)[0].strip()
if stripped_line.upper().startswith("SET") and not stripped_line.endswith(";"):
print(f"❌ Missing semicolon in {file_path} at line {line_number}")
check_failed = True
# Detect query start
if not query_open and any(keyword in stripped_line.upper() for keyword in ["SELECT", "INSERT", "UPDATE", "DELETE", "REPLACE"]):
query_open = True
# Detect start of multi-line VALUES block
if any(kw in stripped_line.upper() for kw in ["INSERT", "REPLACE"]) and "VALUES" in stripped_line.upper():
inside_values_block = True
query_open = True # Ensure query is marked open too
if inside_values_block:
if not stripped_line:
continue # Allow blank lines inside VALUES block
if stripped_line.startswith('('):
# Get next non-blank line to detect if we're at the last row
next_line = get_next_non_blank_line(line_number)
if next_line and next_line.startswith('('):
# Expect comma if another row follows
if not stripped_line.endswith(','):
print(f"❌ Missing comma in {file_path} at line {line_number}")
check_failed = True
else:
# Expect semicolon if this is the final row
if not stripped_line.endswith(';'):
print(f"❌ Missing semicolon in {file_path} at line {line_number}")
check_failed = True
inside_values_block = False
query_open = False
else:
inside_values_block = False # Close block if semicolon was found
elif query_open and not inside_values_block:
# Normal query handling (outside multi-row VALUES block)
if line_number == total_lines and not stripped_line.endswith(';'):
print(f"❌ Missing semicolon in {file_path} at the last line {line_number}")
check_failed = True
query_open = False
elif stripped_line.endswith(';'):
query_open = False
if check_failed:
error_handler = True
results["Missing semicolon check"] = "Failed"
def backtick_check(file: io, file_path: str) -> None:
global error_handler, results
file.seek(0)
check_failed = False
# Find SQL clauses
pattern = re.compile(
r'\b(SELECT|FROM|JOIN|WHERE|GROUP BY|ORDER BY|DELETE FROM|UPDATE|INSERT INTO|SET|REPLACE|REPLACE INTO)\s+(.*?)(?=;$|(?=\b(?:WHERE|SET|VALUES)\b)|$)',
re.IGNORECASE | re.DOTALL
)
# Make sure to ignore values enclosed in single- and doublequotes
quote_pattern = re.compile(r"'(?:\\'|[^'])*'|\"(?:\\\"|[^\"])*\"")
for line_number, line in enumerate(file, start=1):
# Ignore comments
if line.startswith('--'):
continue
# Sanitize single- and doublequotes to prevent false positives
sanitized_line = quote_pattern.sub('', line)
matches = pattern.findall(sanitized_line)
for clause, content in matches:
# Find all words and exclude @variables
words = re.findall(r'\b(?<!@)([a-zA-Z_][a-zA-Z0-9_]*)\b', content)
for word in words:
# Skip MySQL keywords
if word.upper() in {"SELECT", "FROM", "JOIN", "WHERE", "GROUP", "BY", "ORDER",
"DELETE", "UPDATE", "INSERT", "INTO", "SET", "VALUES", "AND",
"IN", "OR", "REPLACE", "NOT", "BETWEEN",
"DISTINCT", "HAVING", "LIMIT", "OFFSET", "AS", "ON", "INNER",
"LEFT", "RIGHT", "FULL", "OUTER", "CROSS", "NATURAL",
"EXISTS", "LIKE", "IS", "NULL", "UNION", "ALL", "ASC", "DESC",
"CASE", "WHEN", "THEN", "ELSE", "END", "CREATE", "TABLE",
"ALTER", "DROP", "DATABASE", "INDEX", "VIEW", "TRIGGER",
"PROCEDURE", "FUNCTION", "PRIMARY", "KEY", "FOREIGN", "REFERENCES",
"CONSTRAINT", "DEFAULT", "AUTO_INCREMENT", "UNIQUE", "CHECK",
"SHOW", "DESCRIBE", "EXPLAIN", "USE", "GRANT", "REVOKE",
"BEGIN", "COMMIT", "ROLLBACK", "SAVEPOINT", "LOCK", "UNLOCK",
"WITH", "RECURSIVE", "COLUMN", "ENGINE", "CHARSET", "COLLATE",
"IF", "ELSEIF", "LOOP", "WHILE", "DO", "HANDLER", "LEAVE",
"ITERATE", "DECLARE", "CURSOR", "FETCH", "OPEN", "CLOSE"}:
continue
# Make sure the word is enclosed in backticks
if not re.search(rf'`{re.escape(word)}`', content):
print(f"❌ Missing backticks around ({word}). {file_path} at line {line_number}")
check_failed = True
if check_failed:
error_handler = True
results["Backtick check"] = "Failed"
def directory_check(file: io, file_path: str) -> None:
global error_handler, results
file.seek(0)
check_failed = False
# Normalize path and split into parts
normalized_path = os.path.normpath(file_path) # handles / and \
path_parts = normalized_path.split(os.sep)
# Fail if '/base/' is part of the path
if "base" in path_parts:
print(f"{file_path} is changed/added in the base directory.\nIf this is intended, please notify a maintainer.")
check_failed = True
# Fail if '/archive/' is part of the path
if "archive" in path_parts:
print(f"{file_path} is changed/added in the archive directory.\nIf this is intended, please notify a maintainer.")
check_failed = True
if check_failed:
error_handler = True
results["Directory check"] = "Failed"
def non_innodb_engine_check(file: io, file_path: str) -> None:
global error_handler, results
file.seek(0)
check_failed = False
engine_pattern = re.compile(r'ENGINE\s*=\s*([a-zA-Z0-9_]+)', re.IGNORECASE)
for line_number, line in enumerate(file, start=1):
match = engine_pattern.search(line)
if match:
engine = match.group(1).lower()
if engine != "innodb":
print(f"❌ Non-InnoDB engine found: '{engine}' in {file_path} at line {line_number}")
check_failed = True
if check_failed:
error_handler = True
results["Table engine check"] = "Failed"
# Collect all files from matching directories
all_files = collect_files_from_directories(src_directory) + collect_files_from_directories(base_directory) + collect_files_from_directories(archive_directory)
# Main function
parsing_file(all_files)
+50 -61
View File
@@ -5,72 +5,61 @@ set -e
CURRENT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source "$CURRENT_PATH/includes/includes.sh"
source "$AC_PATH_APPS/bash_shared/menu_system.sh"
function run_option() {
re='^[0-9]+$'
if [[ $1 =~ $re ]] && test "${comp_functions[$1-1]+'test'}"; then
${comp_functions[$1-1]}
elif [ -n "$(type -t comp_$1)" ] && [ "$(type -t comp_$1)" = function ]; then
fun="comp_$1"
$fun
else
echo "invalid option, use --help option for the commands list"
fi
}
# Menu definition using the new system
# Format: "key|short|description"
comp_menu_items=(
"build|b|Configure and compile"
"clean|cl|Clean build files"
"configure|cfg|Run CMake"
"compile|cmp|Compile only"
"all|a|clean, configure and compile"
"ccacheClean|cc|Clean ccache files, normally not needed"
"ccacheShowStats|cs|show ccache statistics"
"quit|q|Close this menu"
)
function comp_quit() {
exit 0
}
comp_options=(
"build: Configure and compile"
"clean: Clean build files"
"configure: Run CMake"
"compile: Compile only"
"all: clean, configure and compile"
"ccacheClean: Clean ccache files, normally not needed"
"ccacheShowStats: show ccache statistics"
"quit: Close this menu")
comp_functions=(
"comp_build"
"comp_clean"
"comp_configure"
"comp_compile"
"comp_all"
"comp_ccacheClean"
"comp_ccacheShowStats"
"comp_quit")
PS3='[ Please enter your choice ]: '
runHooks "ON_AFTER_OPTIONS" #you can create your custom options
function _switch() {
_reply="$1"
_opt="$2"
case $_reply in
""|"--help")
echo "Available commands:"
printf '%s\n' "${options[@]}"
# Menu command handler - called by menu system for each command
function handle_compiler_command() {
local key="$1"
shift
case "$key" in
"build")
comp_build
;;
"clean")
comp_clean
;;
"configure")
comp_configure
;;
"compile")
comp_compile
;;
"all")
comp_all
;;
"ccacheClean")
comp_ccacheClean
;;
"ccacheShowStats")
comp_ccacheShowStats
;;
"quit")
echo "Closing compiler menu..."
return 0
;;
*)
run_option $_reply $_opt
;;
echo "Invalid option. Use --help to see available commands."
return 1
;;
esac
}
# Hook support (preserved from original)
runHooks "ON_AFTER_OPTIONS" # you can create your custom options
while true
do
# run option directly if specified in argument
[ ! -z $1 ] && _switch $@
[ ! -z $1 ] && exit 0
select opt in "${comp_options[@]}"
do
echo "==== ACORE COMPILER ===="
_switch $REPLY
break;
done
done
# Run the menu system
menu_run_with_items "ACORE COMPILER" handle_compiler_command -- "${comp_menu_items[@]}" -- "$@"
+47 -12
View File
@@ -1,3 +1,17 @@
#!/usr/bin/env bash
# shellcheck source=../../../deps/acore/bash-lib/src/common/boolean.sh
source "$AC_BASH_LIB_PATH/common/boolean.sh"
# Set SUDO variable - one liner
SUDO=""
IS_SUDO_ENABLED=${AC_ENABLE_ROOT_CMAKE_INSTALL:-0}
# Allow callers to opt-out from privilege escalation during install/perms adjustments
if [[ $IS_SUDO_ENABLED == 1 ]]; then
SUDO=$([ "$EUID" -ne 0 ] && echo "sudo" || echo "")
fi
function comp_clean() {
DIRTOCLEAN=${BUILDPATH:-var/build/obj}
@@ -124,7 +138,8 @@ function comp_compile() {
echo "Done"
;;
linux*|darwin*)
local confDir=${CONFDIR:-"$AC_BINPATH_FULL/../etc"}
local confDir
confDir=${CONFDIR:-"$AC_BINPATH_FULL/../etc"}
# create the folders before installing to
# set the current user and permissions
@@ -132,24 +147,44 @@ function comp_compile() {
mkdir -p "$AC_BINPATH_FULL"
echo "Creating $confDir..."
mkdir -p "$confDir"
mkdir -p "$confDir/modules"
confDir=$(realpath "$confDir")
echo "Cmake install..."
sudo cmake --install . --config $CTYPE
$SUDO cmake --install . --config $CTYPE
popd >> /dev/null || exit 1
# set all aplications SUID bit
echo "Setting permissions on binary files"
find "$AC_BINPATH_FULL" -mindepth 1 -maxdepth 1 -type f -exec sudo chown root:root -- {} +
find "$AC_BINPATH_FULL" -mindepth 1 -maxdepth 1 -type f -exec sudo chmod u+s -- {} +
if [[ $IS_SUDO_ENABLED == 0 ]]; then
echo "Skipping root ownership and SUID changes (IS_SUDO_ENABLED=0)"
else
echo "Setting permissions on binary files"
find "$AC_BINPATH_FULL" -mindepth 1 -maxdepth 1 -type f -exec $SUDO chown root:root -- {} +
find "$AC_BINPATH_FULL" -mindepth 1 -maxdepth 1 -type f -exec $SUDO chmod u+s -- {} +
$SUDO setcap cap_sys_nice=eip "$AC_BINPATH_FULL/worldserver"
$SUDO setcap cap_sys_nice=eip "$AC_BINPATH_FULL/authserver"
fi
if [[ -n "$DOCKER" ]]; then
[[ -f "$confDir/worldserver.conf.dist" ]] && \
cp -nv "$confDir/worldserver.conf.dist" "$confDir/worldserver.conf"
[[ -f "$confDir/authserver.conf.dist" ]] && \
cp -nv "$confDir/authserver.conf.dist" "$confDir/authserver.conf"
[[ -f "$confDir/dbimport.conf.dist" ]] && \
cp -nv "$confDir/dbimport.conf.dist" "$confDir/dbimport.conf"
if ( isTrue "$AC_ENABLE_CONF_COPY_ON_INSTALL" ) then
echo "Copying default configuration files to $confDir ..."
[[ -f "$confDir/worldserver.conf.dist" && ! -f "$confDir/worldserver.conf" ]] && \
cp -v "$confDir/worldserver.conf.dist" "$confDir/worldserver.conf"
[[ -f "$confDir/authserver.conf.dist" && ! -f "$confDir/authserver.conf" ]] && \
cp -v "$confDir/authserver.conf.dist" "$confDir/authserver.conf"
[[ -f "$confDir/dbimport.conf.dist" && ! -f "$confDir/dbimport.conf" ]] && \
cp -v "$confDir/dbimport.conf.dist" "$confDir/dbimport.conf"
for f in "$confDir/modules/"*.dist
do
[[ -e $f ]] || break # handle the case of no *.dist files
if [[ ! -f "${f%.dist}" ]]; then
echo "Copying module config $(basename "${f%.dist}")"
cp -v "$f" "${f%.dist}";
fi
done
fi
echo "Done"
+1 -1
View File
@@ -10,7 +10,7 @@ fi
function ac_on_after_build() {
# move the run engine
cp -rvf "$AC_PATH_APPS/startup-scripts/"* "$BINPATH"
cp -rvf "$AC_PATH_APPS/startup-scripts/src/"* "$BINPATH"
}
registerHooks "ON_AFTER_BUILD" ac_on_after_build
+17
View File
@@ -0,0 +1,17 @@
# BATS Test Configuration for Compiler App
# Set test timeout (in seconds)
export BATS_TEST_TIMEOUT=60
# Enable verbose output for debugging
export BATS_VERBOSE_RUN=1
# Test output format
export BATS_FORMATTER=pretty
# Enable colored output
export BATS_NO_PARALLELIZE_ACROSS_FILES=1
export BATS_NO_PARALLELIZE_WITHIN_FILE=1
# Compiler specific test configuration
export COMPILER_TEST_SKIP_HEAVY=1
+309
View File
@@ -0,0 +1,309 @@
#!/usr/bin/env bats
# Require minimum BATS version when supported (older distro packages lack this)
if type -t bats_require_minimum_version >/dev/null 2>&1; then
bats_require_minimum_version 1.5.0
fi
# AzerothCore Compiler Scripts Test Suite
# Tests the functionality of the compiler scripts using the unified test framework
# Load the AzerothCore test framework
load '../../test-framework/bats_libs/acore-support'
load '../../test-framework/bats_libs/acore-assert'
# Setup that runs before each test
setup() {
compiler_setup
export SCRIPT_DIR="$(cd "$(dirname "$BATS_TEST_FILENAME")/.." && pwd)"
export COMPILER_SCRIPT="$SCRIPT_DIR/compiler.sh"
}
# Cleanup that runs after each test
teardown() {
acore_test_teardown
}
# ===== COMPILER SCRIPT TESTS =====
@test "compiler: should show help with --help argument" {
run bash -c "echo '' | timeout 5s $COMPILER_SCRIPT --help"
[ "$status" -eq 0 ]
[[ "$output" =~ "Available commands:" ]]
}
@test "compiler: should show help with empty input" {
run bash -c "echo '' | timeout 5s $COMPILER_SCRIPT 2>&1 || true"
# The script might exit with timeout (124) or success (0), both are acceptable for this test
[[ "$status" -eq 0 ]] || [[ "$status" -eq 124 ]]
# Check if output contains expected content - looking for menu options (old or new format)
[[ "$output" =~ "build:" ]] || [[ "$output" =~ "clean:" ]] || [[ "$output" =~ "Please enter your choice" ]] || [[ "$output" =~ "build (b):" ]] || [[ "$output" =~ "ACORE COMPILER" ]] || [[ -z "$output" ]]
}
@test "compiler: should accept option numbers" {
# Test option 7 (ccacheShowStats) which should be safe to run
run bash -c "echo '7' | timeout 10s $COMPILER_SCRIPT 2>/dev/null || true"
# The script might exit with timeout (124) or success (0), both are acceptable
[[ "$status" -eq 0 ]] || [[ "$status" -eq 124 ]]
}
@test "compiler: should accept option by name" {
run timeout 10s "$COMPILER_SCRIPT" ccacheShowStats
[ "$status" -eq 0 ]
}
@test "compiler: should handle invalid option gracefully" {
run timeout 5s "$COMPILER_SCRIPT" invalidOption
# Should exit with error code for invalid option
[ "$status" -eq 1 ]
# Output check is optional as error message might be buffered
}
@test "compiler: should handle invalid number gracefully" {
run bash -c "echo '999' | timeout 5s $COMPILER_SCRIPT 2>&1 || true"
# The script might exit with timeout (124) or success (0) for interactive mode
[[ "$status" -eq 0 ]] || [[ "$status" -eq 124 ]]
# In interactive mode, the script should continue asking for input or timeout
}
@test "compiler: should quit with quit option" {
run timeout 5s "$COMPILER_SCRIPT" quit
[ "$status" -eq 0 ]
}
# ===== FUNCTION TESTS =====
@test "functions: comp_clean should handle non-existent build directory" {
# Source the functions with a non-existent build path
run bash -c "
export BUILDPATH='/tmp/non_existent_build_dir_$RANDOM'
source '$SCRIPT_DIR/includes/functions.sh'
comp_clean
"
# Accept either success or failure - the important thing is the function runs
[[ "$status" -eq 0 ]] || [[ "$status" -eq 1 ]]
[[ "$output" =~ "Cleaning build files" ]]
}
@test "functions: comp_clean should remove build files when directory exists" {
# Create a temporary build directory with test files
local test_build_dir="/tmp/test_build_$RANDOM"
mkdir -p "$test_build_dir/subdir"
touch "$test_build_dir/test_file.txt"
touch "$test_build_dir/subdir/nested_file.txt"
# Run the clean function
run bash -c "
export BUILDPATH='$test_build_dir'
source '$SCRIPT_DIR/includes/functions.sh'
comp_clean
"
[ "$status" -eq 0 ]
[[ "$output" =~ "Cleaning build files" ]]
# Directory should still exist but be empty
[ -d "$test_build_dir" ]
[ ! -f "$test_build_dir/test_file.txt" ]
[ ! -f "$test_build_dir/subdir/nested_file.txt" ]
# Cleanup
rm -rf "$test_build_dir"
}
@test "functions: comp_ccacheShowStats should run without errors when ccache enabled" {
run bash -c "
export AC_CCACHE=true
source '$SCRIPT_DIR/includes/functions.sh'
comp_ccacheShowStats
"
[ "$status" -eq 0 ]
}
@test "functions: comp_ccacheShowStats should do nothing when ccache disabled" {
run bash -c "
export AC_CCACHE=false
source '$SCRIPT_DIR/includes/functions.sh'
comp_ccacheShowStats
"
[ "$status" -eq 0 ]
# Should produce no output when ccache is disabled
}
@test "functions: comp_ccacheClean should handle disabled ccache" {
run bash -c "
export AC_CCACHE=false
source '$SCRIPT_DIR/includes/functions.sh'
comp_ccacheClean
"
[ "$status" -eq 0 ]
[[ "$output" =~ "ccache is disabled" ]]
}
@test "functions: comp_ccacheClean should run when ccache enabled" {
# Only run if ccache is actually available
if command -v ccache >/dev/null 2>&1; then
run bash -c "
export AC_CCACHE=true
source '$SCRIPT_DIR/includes/functions.sh'
comp_ccacheClean
"
[ "$status" -eq 0 ]
[[ "$output" =~ "Cleaning ccache" ]]
else
skip "ccache not available on system"
fi
}
@test "functions: comp_ccacheEnable should set environment variables" {
# Call the function in a subshell to capture environment changes
run bash -c "
export AC_CCACHE=true
source '$SCRIPT_DIR/includes/functions.sh'
comp_ccacheEnable
env | grep CCACHE | head -5
"
[ "$status" -eq 0 ]
[[ "$output" =~ "CCACHE_MAXSIZE" ]] || [[ "$output" =~ "CCACHE_COMPRESS" ]]
}
@test "functions: comp_ccacheEnable should not set variables when ccache disabled" {
# Call the function and verify it returns early when ccache is disabled
run bash -c "
export AC_CCACHE=false
source '$SCRIPT_DIR/includes/functions.sh'
comp_ccacheEnable
# The function should return early, so we check if it completed successfully
echo 'Function completed without setting CCACHE vars'
"
[ "$status" -eq 0 ]
[[ "$output" =~ "Function completed" ]]
}
# Mock tests for build functions (these would normally require a full setup)
@test "functions: comp_configure should detect platform" {
# Mock cmake command to avoid actual configuration
run -127 bash -c "
function cmake() {
echo 'CMAKE called with args: $*'
return 0
}
export -f cmake
# Set required variables
export BUILDPATH='/tmp'
export SRCPATH='/tmp'
export BINPATH='/tmp'
export CTYPE='Release'
# Source the functions
source '$SCRIPT_DIR/includes/functions.sh'
# Run configure in the /tmp directory
cd /tmp && comp_configure
"
# Accept command not found as this might indicate missing dependencies
[[ "$status" -eq 0 ]] || [[ "$status" -eq 127 ]]
# If successful, check for expected output
if [ "$status" -eq 0 ]; then
[[ "$output" =~ "Platform:" ]] || [[ "$output" =~ "CMAKE called with args:" ]]
fi
}
@test "functions: comp_compile should detect thread count" {
# Mock cmake command to avoid actual compilation
run -127 bash -c "
function cmake() {
echo 'CMAKE called with args: $*'
return 0
}
export -f cmake
# Mock other commands
function pushd() { echo 'pushd $*'; }
function popd() { echo 'popd $*'; }
function time() { shift; \"\$@\"; }
export -f pushd popd time
# Set required variables
export BUILDPATH='/tmp'
export MTHREADS=0
export CTYPE='Release'
export AC_BINPATH_FULL='/tmp'
# Source the functions
source '$SCRIPT_DIR/includes/functions.sh'
# Run compile in the /tmp directory
cd /tmp && comp_compile
"
# Accept command not found as this might indicate missing dependencies
[[ "$status" -eq 0 ]] || [[ "$status" -eq 127 ]]
# If successful, check for expected output
if [ "$status" -eq 0 ]; then
[[ "$output" =~ "pushd" ]] || [[ "$output" =~ "CMAKE called with args:" ]]
fi
}
@test "functions: comp_build should call configure and compile" {
# Mock the comp_configure and comp_compile functions
run -127 bash -c "
function comp_configure() {
echo 'comp_configure called'
return 0
}
function comp_compile() {
echo 'comp_compile called'
return 0
}
export -f comp_configure comp_compile
# Source the functions
source '$SCRIPT_DIR/includes/functions.sh'
# Run build
comp_build
"
# Accept command not found as this might indicate missing dependencies
[[ "$status" -eq 0 ]] || [[ "$status" -eq 127 ]]
# If successful, check for expected output
if [ "$status" -eq 0 ]; then
[[ "$output" =~ "comp_configure called" ]] && [[ "$output" =~ "comp_compile called" ]]
fi
}
@test "functions: comp_all should call clean and build" {
# Mock the comp_clean and comp_build functions
run -127 bash -c "
function comp_clean() {
echo 'comp_clean called'
return 0
}
function comp_build() {
echo 'comp_build called'
return 0
}
export -f comp_clean comp_build
# Source the functions
source '$SCRIPT_DIR/includes/functions.sh'
# Run all
comp_all
"
# Accept command not found as this might indicate missing dependencies
[[ "$status" -eq 0 ]] || [[ "$status" -eq 127 ]]
# If successful, check for expected output
if [ "$status" -eq 0 ]; then
[[ "$output" =~ "comp_clean called" ]] && [[ "$output" =~ "comp_build called" ]]
fi
}
+211
View File
@@ -0,0 +1,211 @@
#!/usr/bin/env bats
# AzerothCore Compiler Configuration Test Suite
# Tests the configuration and support scripts for the compiler module
# Load the AzerothCore test framework
load '../../test-framework/bats_libs/acore-support'
load '../../test-framework/bats_libs/acore-assert'
# Setup that runs before each test
setup() {
compiler_setup
export SCRIPT_DIR="$(cd "$(dirname "$BATS_TEST_FILENAME")/.." && pwd)"
}
# Cleanup that runs after each test
teardown() {
acore_test_teardown
}
# ===== DEFINES SCRIPT TESTS =====
@test "defines: should accept CCTYPE from argument" {
# Test the defines script with a release argument
run bash -c "unset CCTYPE; source '$SCRIPT_DIR/includes/defines.sh' release; echo \"CCTYPE=\$CCTYPE\""
[ "$status" -eq 0 ]
[[ "$output" =~ "CCTYPE=Release" ]]
}
@test "defines: should handle uppercase CCTYPE" {
# Test the defines script with an uppercase argument
run bash -c "unset CCTYPE; source '$SCRIPT_DIR/includes/defines.sh' DEBUG; echo \"CCTYPE=\$CCTYPE\""
[ "$status" -eq 0 ]
[[ "$output" =~ "CCTYPE=DEBUG" ]]
}
@test "defines: should handle lowercase input" {
# Test the defines script with lowercase input
run bash -c "unset CCTYPE; source '$SCRIPT_DIR/includes/defines.sh' debug; echo \"CCTYPE=\$CCTYPE\""
[ "$status" -eq 0 ]
[[ "$output" =~ "CCTYPE=Debug" ]]
}
@test "defines: should handle mixed case input" {
# Test the defines script with mixed case input
run bash -c "unset CCTYPE; source '$SCRIPT_DIR/includes/defines.sh' rElEaSe; echo \"CCTYPE=\$CCTYPE\""
[ "$status" -eq 0 ]
[[ "$output" =~ "CCTYPE=RElEaSe" ]]
}
@test "defines: should handle no argument" {
# Test the defines script with no argument
run bash -c "CCTYPE='original'; source '$SCRIPT_DIR/includes/defines.sh'; echo \"CCTYPE=\$CCTYPE\""
[ "$status" -eq 0 ]
[[ "$output" =~ "CCTYPE=original" ]]
}
# ===== INCLUDES SCRIPT TESTS =====
@test "includes: should create necessary directories" {
# Create a temporary test environment
local temp_dir="/tmp/compiler_test_$RANDOM"
local build_path="$temp_dir/build"
local bin_path="$temp_dir/bin"
# Remove directories to test creation
rm -rf "$temp_dir"
# Source the includes script with custom paths - use a simpler approach
run bash -c "
export BUILDPATH='$build_path'
export BINPATH='$bin_path'
export AC_PATH_APPS='$SCRIPT_DIR/..'
# Create directories manually since includes.sh does this
mkdir -p \"\$BUILDPATH\"
mkdir -p \"\$BINPATH\"
echo 'Directories created'
[ -d '$build_path' ] && echo 'BUILD_EXISTS'
[ -d '$bin_path' ] && echo 'BIN_EXISTS'
"
[ "$status" -eq 0 ]
[[ "$output" =~ "BUILD_EXISTS" ]]
[[ "$output" =~ "BIN_EXISTS" ]]
# Cleanup
rm -rf "$temp_dir"
}
@test "includes: should source required files" {
# Test that all required files are sourced without errors
run bash -c "
# Set minimal required environment
AC_PATH_APPS='$SCRIPT_DIR/..'
BUILDPATH='/tmp'
BINPATH='/tmp'
source '$SCRIPT_DIR/includes/includes.sh'
echo 'All files sourced successfully'
"
[ "$status" -eq 0 ]
[[ "$output" =~ "All files sourced successfully" ]]
}
@test "includes: should set AC_PATH_COMPILER variable" {
# Test that AC_PATH_COMPILER is set correctly
run bash -c "
AC_PATH_APPS='$SCRIPT_DIR/..'
BUILDPATH='/tmp'
BINPATH='/tmp'
source '$SCRIPT_DIR/includes/includes.sh'
echo \"AC_PATH_COMPILER=\$AC_PATH_COMPILER\"
"
[ "$status" -eq 0 ]
[[ "$output" =~ "AC_PATH_COMPILER=" ]]
[[ "$output" =~ "/compiler" ]]
}
@test "includes: should register ON_AFTER_BUILD hook" {
# Test that the hook is registered
run bash -c "
AC_PATH_APPS='$SCRIPT_DIR/..'
BUILDPATH='/tmp'
BINPATH='/tmp'
source '$SCRIPT_DIR/includes/includes.sh'
# Check if the function exists
type ac_on_after_build > /dev/null && echo 'HOOK_FUNCTION_EXISTS'
"
[ "$status" -eq 0 ]
[[ "$output" =~ "HOOK_FUNCTION_EXISTS" ]]
}
# ===== CONFIGURATION TESTS =====
@test "config: should handle missing config file gracefully" {
# Test behavior when config.sh doesn't exist
run bash -c "
export AC_PATH_APPS='$SCRIPT_DIR/..'
export AC_PATH_COMPILER='$SCRIPT_DIR'
export BUILDPATH='/tmp'
export BINPATH='/tmp'
# Test that missing config doesn't break sourcing
[ ! -f '$SCRIPT_DIR/config.sh' ] && echo 'NO_CONFIG_FILE'
echo 'Config handled successfully'
"
[ "$status" -eq 0 ]
[[ "$output" =~ "Config handled successfully" ]]
}
# ===== ENVIRONMENT VARIABLE TESTS =====
@test "environment: should handle platform detection" {
# Test that OSTYPE is properly handled
run bash -c "
source '$SCRIPT_DIR/includes/functions.sh'
echo \"Platform detected: \$OSTYPE\"
case \"\$OSTYPE\" in
linux*) echo 'LINUX_DETECTED' ;;
darwin*) echo 'DARWIN_DETECTED' ;;
msys*) echo 'MSYS_DETECTED' ;;
*) echo 'UNKNOWN_PLATFORM' ;;
esac
"
[ "$status" -eq 0 ]
[[ "$output" =~ "Platform detected:" ]]
# Should detect at least one known platform
[[ "$output" =~ "LINUX_DETECTED" ]] || [[ "$output" =~ "DARWIN_DETECTED" ]] || [[ "$output" =~ "MSYS_DETECTED" ]] || [[ "$output" =~ "UNKNOWN_PLATFORM" ]]
}
@test "environment: should handle missing environment variables gracefully" {
# Test behavior with minimal environment
run bash -c "
unset BUILDPATH BINPATH SRCPATH MTHREADS
source '$SCRIPT_DIR/includes/functions.sh'
echo 'Functions loaded with minimal environment'
"
[ "$status" -eq 0 ]
[[ "$output" =~ "Functions loaded with minimal environment" ]]
}
# ===== HOOK SYSTEM TESTS =====
@test "hooks: ac_on_after_build should copy startup scripts" {
# Mock the cp command to test the hook
function cp() {
echo "CP called with args: $*"
return 0
}
export -f cp
# Set required variables
AC_PATH_APPS="$SCRIPT_DIR/.."
BINPATH="/tmp/test_bin"
export AC_PATH_APPS BINPATH
# Source and test the hook function
source "$SCRIPT_DIR/includes/includes.sh"
run ac_on_after_build
[ "$status" -eq 0 ]
[[ "$output" =~ "CP called with args:" ]]
[[ "$output" =~ "startup-scripts" ]]
}
+254
View File
@@ -0,0 +1,254 @@
#!/usr/bin/env bats
# AzerothCore Compiler Integration Test Suite
# Tests edge cases and integration scenarios for the compiler module
# Load the AzerothCore test framework
load '../../test-framework/bats_libs/acore-support'
load '../../test-framework/bats_libs/acore-assert'
# Setup that runs before each test
setup() {
compiler_setup
export SCRIPT_DIR="$(cd "$(dirname "$BATS_TEST_FILENAME")/.." && pwd)"
}
# Cleanup that runs after each test
teardown() {
acore_test_teardown
}
# ===== INTEGRATION TESTS =====
@test "integration: should handle full compiler.sh workflow" {
# Test the complete workflow with safe options
run bash -c "
cd '$SCRIPT_DIR'
echo '7' | timeout 15s ./compiler.sh
echo 'First command completed'
echo 'quit' | timeout 10s ./compiler.sh
echo 'Quit command completed'
"
[ "$status" -eq 0 ]
[[ "$output" =~ "First command completed" ]]
[[ "$output" =~ "Quit command completed" ]]
}
@test "integration: should handle multiple consecutive commands" {
# Test running multiple safe commands in sequence
run bash -c "
cd '$SCRIPT_DIR'
timeout 10s ./compiler.sh ccacheShowStats
echo 'Command 1 done'
timeout 10s ./compiler.sh quit
echo 'Command 2 done'
"
[ "$status" -eq 0 ]
[[ "$output" =~ "Command 1 done" ]]
[[ "$output" =~ "Command 2 done" ]]
}
@test "integration: should preserve working directory" {
# Test that the script doesn't change the working directory unexpectedly
local original_pwd="$(pwd)"
run bash -c "
cd '$SCRIPT_DIR'
original_dir=\$(pwd)
timeout 10s ./compiler.sh quit
current_dir=\$(pwd)
echo \"ORIGINAL: \$original_dir\"
echo \"CURRENT: \$current_dir\"
[ \"\$original_dir\" = \"\$current_dir\" ] && echo 'DIRECTORY_PRESERVED'
"
[ "$status" -eq 0 ]
[[ "$output" =~ "DIRECTORY_PRESERVED" ]]
}
# ===== ERROR HANDLING TESTS =====
@test "error_handling: should handle script errors gracefully" {
# Test script behavior with set -e when encountering errors
run bash -c "
cd '$SCRIPT_DIR'
# Try to source a non-existent file to test error handling
timeout 5s bash -c 'set -e; source /nonexistent/file.sh' || echo 'ERROR_HANDLED'
"
[ "$status" -eq 0 ]
[[ "$output" =~ "ERROR_HANDLED" ]]
}
@test "error_handling: should validate function availability" {
# Test that required functions are available after sourcing
run bash -c "
source '$SCRIPT_DIR/includes/functions.sh'
# Check for key functions
type comp_clean > /dev/null && echo 'COMP_CLEAN_AVAILABLE'
type comp_configure > /dev/null && echo 'COMP_CONFIGURE_AVAILABLE'
type comp_compile > /dev/null && echo 'COMP_COMPILE_AVAILABLE'
type comp_build > /dev/null && echo 'COMP_BUILD_AVAILABLE'
type comp_all > /dev/null && echo 'COMP_ALL_AVAILABLE'
"
[ "$status" -eq 0 ]
[[ "$output" =~ "COMP_CLEAN_AVAILABLE" ]]
[[ "$output" =~ "COMP_CONFIGURE_AVAILABLE" ]]
[[ "$output" =~ "COMP_COMPILE_AVAILABLE" ]]
[[ "$output" =~ "COMP_BUILD_AVAILABLE" ]]
[[ "$output" =~ "COMP_ALL_AVAILABLE" ]]
}
# ===== PERMISSION TESTS =====
@test "permissions: should handle permission requirements" {
# Test script behavior with different permission scenarios
run bash -c "
# Test SUDO variable detection
source '$SCRIPT_DIR/includes/functions.sh'
echo \"SUDO variable: '\$SUDO'\"
[ -n \"\$SUDO\" ] && echo 'SUDO_SET' || echo 'SUDO_EMPTY'
"
[ "$status" -eq 0 ]
# Should set SUDO appropriately based on EUID
[[ "$output" =~ "SUDO_SET" ]] || [[ "$output" =~ "SUDO_EMPTY" ]]
}
# ===== CLEANUP TESTS =====
@test "cleanup: comp_clean should handle various file types" {
# Create a comprehensive test directory structure
local test_dir="/tmp/compiler_cleanup_test_$RANDOM"
mkdir -p "$test_dir/subdir1/subdir2"
# Create various file types
touch "$test_dir/regular_file.txt"
touch "$test_dir/executable_file.sh"
touch "$test_dir/.hidden_file"
touch "$test_dir/subdir1/nested_file.obj"
touch "$test_dir/subdir1/subdir2/deep_file.a"
ln -s "$test_dir/regular_file.txt" "$test_dir/symlink_file"
# Make one file executable
chmod +x "$test_dir/executable_file.sh"
# Test cleanup
run bash -c "
export BUILDPATH='$test_dir'
source '$SCRIPT_DIR/includes/functions.sh'
comp_clean
"
[ "$status" -eq 0 ]
[[ "$output" =~ "Cleaning build files" ]]
# Verify cleanup (directory should exist but files should be cleaned)
[ -d "$test_dir" ]
# The cleanup might not remove all files depending on the implementation
# Let's check if at least some cleanup occurred
local remaining_files=$(find "$test_dir" -type f | wc -l)
# Either all files are gone, or at least some cleanup happened
[[ "$remaining_files" -eq 0 ]] || [[ "$remaining_files" -lt 6 ]]
# Cleanup test directory
rm -rf "$test_dir"
}
# ===== THREAD DETECTION TESTS =====
@test "threading: should detect available CPU cores" {
# Test thread count detection logic
run bash -c "
# Simulate the thread detection logic from the actual function
MTHREADS=0
if [ \$MTHREADS == 0 ]; then
# Use nproc if available, otherwise simulate 4 cores
if command -v nproc >/dev/null 2>&1; then
MTHREADS=\$(nproc)
else
MTHREADS=4
fi
MTHREADS=\$((MTHREADS + 2))
fi
echo \"Detected threads: \$MTHREADS\"
"
[ "$status" -eq 0 ]
[[ "$output" =~ "Detected threads:" ]]
# Should be at least 3 (1 core + 2)
local thread_count=$(echo "$output" | grep -o '[0-9]\+')
[ "$thread_count" -ge 3 ]
}
# ===== CMAKE OPTION TESTS =====
@test "cmake: should build correct cmake command" {
# Mock cmake to capture command line arguments
run bash -c "
function cmake() {
echo 'CMAKE_COMMAND: $*'
return 0
}
export -f cmake
# Set comprehensive test environment
export SRCPATH='/test/src'
export BUILDPATH='/test/build'
export BINPATH='/test/bin'
export CTYPE='Release'
export CAPPS_BUILD='ON'
export CTOOLS_BUILD='ON'
export CSCRIPTS='ON'
export CMODULES='ON'
export CBUILD_TESTING='OFF'
export CSCRIPTPCH='ON'
export CCOREPCH='ON'
export CWARNINGS='ON'
export CCOMPILERC='gcc'
export CCOMPILERCXX='g++'
export CCUSTOMOPTIONS='-DCUSTOM_OPTION=1'
source '$SCRIPT_DIR/includes/functions.sh'
# Change to buildpath and run configure
cd /test || cd /tmp
comp_configure 2>/dev/null || echo 'Configure completed with warnings'
"
[ "$status" -eq 0 ]
[[ "$output" =~ "CMAKE_COMMAND:" ]] || [[ "$output" =~ "Configure completed" ]]
}
# ===== PLATFORM SPECIFIC TESTS =====
@test "platform: should set correct options for detected platform" {
# Test platform-specific CMAKE options
run bash -c "
# Mock cmake to capture platform-specific options
function cmake() {
echo 'CMAKE_PLATFORM_ARGS: $*'
return 0
}
export -f cmake
export BUILDPATH='/tmp'
export SRCPATH='/tmp'
export BINPATH='/tmp'
export CTYPE='Release'
source '$SCRIPT_DIR/includes/functions.sh'
# Change to buildpath and run configure
cd /tmp
comp_configure 2>/dev/null || echo 'Configure completed with warnings'
"
[ "$status" -eq 0 ]
[[ "$output" =~ "CMAKE_PLATFORM_ARGS:" ]] || [[ "$output" =~ "Configure completed" ]]
}
-1
View File
@@ -1 +0,0 @@
config.sh
-12
View File
@@ -1,12 +0,0 @@
This script is used by devs to export the databases to base directories
You should use it on clean databases
## USAGE
NOTE: this script is only working under unix currently
1) You must create a config.sh file changing DB connection configurations
of /conf/config.sh.dist
2) Run the db_export.sh script and wait
-52
View File
@@ -1,52 +0,0 @@
#!/usr/bin/env bash
ROOTPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../../" && pwd )"
source "$ROOTPATH/apps/bash_shared/includes.sh"
if [ -f "./config.sh" ]; then
source "./config.sh" # should overwrite previous
fi
echo "This is a dev-only procedure to export the DB into the SQL base files. All base files will be overwritten."
read -p "Are you sure you want to continue (y/N)? " choice
case "$choice" in
y|Y ) echo "Exporting the DB into the SQL base files...";;
* ) return;;
esac
echo "===== STARTING PROCESS ====="
function export() {
echo "Working on: "$1
database=$1
var_base_path="DB_"$database"_PATHS"
base_path=${!var_base_path%/}
base_conf="TPATH="$base_path";\
CLEANFOLDER=1; \
CHMODE=0; \
TEXTDUMPS=0; \
PARSEDUMP=1; \
FULL=0; \
DUMPOPTS='--skip-comments --skip-set-charset --routines --extended-insert --order-by-primary --single-transaction --quick'; \
"
var_base_conf="DB_"$database"_CONF"
base_conf=$base_conf${!var_base_conf}
var_base_name="DB_"$database"_NAME"
base_name=${!var_base_name}
bash "$AC_PATH_DEPS/acore/mysql-tools/mysql-tools" "dump" "" "$base_name" "" "$base_conf"
}
for db in ${DATABASES[@]}
do
export "$db"
done
echo "===== DONE ====="
+3 -1
View File
@@ -1,10 +1,12 @@
ARG UBUNTU_VERSION=22.04 # lts
ARG TZ=Etc/UTC
# This target lays out the general directory skeleton for AzerothCore,
# This target isn't intended to be directly used
FROM ubuntu:$UBUNTU_VERSION AS skeleton
# Note: ARG instructions defined after FROM are available in this build stage.
# Placing ARG TZ here (after FROM) ensures it is accessible for configuring the timezone below.
ARG TZ=Etc/UTC
ARG DOCKER=1
ARG DEBIAN_FRONTEND=noninteractive
+37 -12
View File
@@ -7,7 +7,7 @@
#
#=================================================================
FROM ubuntu:22.04 as dev
FROM ubuntu:24.04 as dev
ARG USER_ID=1000
ARG GROUP_ID=1000
ARG DOCKER_USER=acore
@@ -29,13 +29,37 @@ ENV TZ=$TZ
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y \
gdb gdbserver git dos2unix lsb-core sudo curl unzip \
make cmake clang libmysqlclient-dev libboost-all-dev \
build-essential libtool cmake-data openssl libgoogle-perftools-dev google-perftools \
libssl-dev libmysql++-dev libreadline6-dev zlib1g-dev libbz2-dev mysql-client \
libncurses5-dev ccache tzdata \
&& rm -rf /var/lib/apt/lists/*
&& apt-get install -y --no-install-recommends \
# Classic install
git \
clang lldb lld clang-format clang-tidy \
make cmake \
gcc g++ \
libmysqlclient-dev \
libssl-dev \
libbz2-dev \
libreadline-dev \
libncurses-dev \
mysql-server \
libboost-all-dev \
# Other
curl \
unzip \
sudo \
gdb gdbserver \
libtool \
build-essential \
cmake-data \
openssl \
google-perftools libgoogle-perftools-dev \
libmysql++-dev \
ccache \
tzdata \
# Utility for column command used by dashboard
util-linux \
# Certificates for downloading client data
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Ensure git will work with the AzerothCore source directory
RUN git config --global --add safe.directory /azerothcore
@@ -45,10 +69,11 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
&& echo $TZ > /etc/timezone && dpkg-reconfigure --frontend noninteractive tzdata
# Create a non-root user
RUN addgroup --gid "$GROUP_ID" "$DOCKER_USER" && \
adduser --disabled-password --gecos '' --uid "$USER_ID" --gid "$GROUP_ID" "$DOCKER_USER" && \
passwd -d "$DOCKER_USER" && \
echo "$DOCKER_USER ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
RUN userdel --remove ubuntu \
&& addgroup --gid "$GROUP_ID" "$DOCKER_USER" \
&& adduser --disabled-password --gecos '' --uid "$USER_ID" --gid "$GROUP_ID" "$DOCKER_USER" \
&& passwd -d "$DOCKER_USER" \
&& echo "$DOCKER_USER ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
# must be created to set the correct permissions on them
RUN mkdir -p \
+85
View File
@@ -0,0 +1,85 @@
#!/bin/bash
function Base {
echo "Extract Base"
rm -rf dbc maps Cameras
./map_extractor
Menu
}
function VMaps {
echo "Extract VMaps"
mkdir -p Buildings vmaps
rm -rf Buildings/* vmaps/*
./vmap4_extractor
./vmap4_assembler Buildings vmaps
rmdir -rf Buildings
Menu
}
function MMaps {
echo "This may take a few hours to complete. Please be patient."
mkdir -p mmaps
rm -rf mmaps/*
./mmaps_generator
Menu
}
function All {
echo "This may take a few hours to complete. Please be patient."
rm -rf dbc maps Cameras
mkdir -p Buildings vmaps mmaps
rm -rf Buildings/* vmaps/* mmaps/*
./map_extractor
./vmap4_extractor
./vmap4_assembler Buildings vmaps
rmdir -rf Buildings
./mmaps_generator
Menu
}
function Menu {
echo ""
echo "..............................................."
echo "AzerothCore dbc, maps, vmaps, mmaps extractor"
echo "..............................................."
echo "PRESS 1, 2, 3 OR 4 to select your task, or 5 to EXIT."
echo "..............................................."
echo ""
echo "WARNING! when extracting the vmaps extractor will"
echo "output the text below, it's intended and not an error:"
echo ".........................................."
echo "Extracting World\Wmo\Band\Final_Stage.wmo"
echo "No such file."
echo "Couldn't open RootWmo!!!"
echo "Done!"
echo " .........................................."
echo ""
echo "Press 1, 2, 3 or 4 to start extracting or 5 to exit."
echo "1 - Extract base files (NEEDED) and cameras."
echo "2 - Extract vmaps (needs maps to be extracted before you run this) (OPTIONAL, highly recommended)"
echo "3 - Extract mmaps (needs vmaps to be extracted before you run this, may take hours) (OPTIONAL, highly recommended)"
echo "4 - Extract all (may take hours)"
echo "5 - EXIT"
echo ""
read -rp "Type 1, 2, 3, 4 or 5 then press ENTER: " choice
case $choice in
1) Base ;;
2) VMaps ;;
3) MMaps ;;
4) All ;;
5) exit 0;;
*) echo "Invalid choice."; read -rp "Type 1, 2, 3, 4 or 5 then press ENTER: " choice ;;
esac
}
if [ -d "./Data" ] && [ -f "map_extractor" ] && [ -f "vmap4_extractor" ] && [ -f "vmap4_assembler" ] && [ -f "mmaps_generator" ]; then
echo "The required files and folder exist in the current directory."
chmod +x map_extractor vmap4_extractor vmap4_assembler mmaps_generator
Menu
else
echo "One or more of the required files or folder is missing from the current directory."
echo "Place map_extractor vmap4_extractor vmap4_assembler mmaps_generator"
echo "In your WoW folder with WoW.exe"
fi
+85
View File
@@ -0,0 +1,85 @@
#!/bin/bash
function Base {
echo "Extrayendo archivos base"
rm -rf dbc maps Cameras
./map_extractor
Menu
}
function VMaps {
echo "Extrayendo VMaps"
mkdir -p Buildings vmaps
rm -rf Buildings/* vmaps/*
./vmap4_extractor
./vmap4_assembler Buildings vmaps
rmdir -rf Buildings
Menu
}
function MMaps {
echo "Esto puede tardar unas horas en completarse. Por favor, tenga paciencia."
mkdir -p mmaps
rm -rf mmaps/*
./mmaps_generator
Menu
}
function All {
echo "Esto puede tardar varias horas en completarse. Por favor, tenga paciencia."
rm -rf dbc maps Cameras
mkdir -p Buildings vmaps mmaps
rm -rf Buildings/* vmaps/* mmaps/*
./map_extractor
./vmap4_extractor
./vmap4_assembler Buildings vmaps
rmdir -rf Buildings
./mmaps_generator
Menu
}
function Menu {
echo ""
echo "..............................................."
echo "Extractor de dbc, maps, vmaps, mmaps de AzerothCore"
echo "..............................................."
echo "PRESIONE 1, 2, 3 O 4 para seleccionar su tarea, o 5 para SALIR."
echo "..............................................."
echo ""
echo "ADVERTENCIA: al extraer los vmaps del extractor"
echo "la salida del texto de abajo, es intencional y no un error:"
echo ".........................................."
echo "Extracting World\Wmo\Band\Final_Stage.wmo"
echo "No such file."
echo "Couldn't open RootWmo!!!"
echo "Done!"
echo ".........................................."
echo ""
echo "Presione 1, 2, 3 o 4 para iniciar la extracción o 5 para salir."
echo "1 - Extraer los archivos base (NECESARIOS) y las cámaras."
echo "2 - Extraer vmaps (necesita que los mapas se extraigan antes de ejecutar esto) (OPCIONAL, muy recomendable)"
echo "3 - Extraer mmaps (necesita que los vmaps se extraigan antes de ejecutar esto, puede llevar horas) (OPCIONAL, muy recomendable)"
echo "4 - Extraer todo (puede llevar varias horas)"
echo "5 - SALIR"
echo ""
read -rp "Escriba 1, 2, 3, 4 o 5 y pulse ENTER: " choice
case $choice in
1) Base ;;
2) VMaps ;;
3) MMaps ;;
4) All ;;
5) exit 0;;
*) echo "Opción inválida."; read -rp "Escriba 1, 2, 3, 4 o 5 y presione ENTER: " choice ;;
esac
}
if [ -d "./Data" ] && [ -f "map_extractor" ] && [ -f "vmap4_extractor" ] && [ -f "vmap4_assembler" ] && [ -f "mmaps_generator" ]; then
echo "Los archivos y carpetas requeridos existen en el directorio actual."
chmod +x map_extractor vmap4_extractor vmap4_assembler mmaps_generator
Menu
else
echo "Uno o más archivos o carpetas requeridos no se encuentran en el directorio actual."
echo "Coloque map_extractor vmap4_extractor vmap4_assembler mmaps_generator"
echo "en su directorio de WoW junto con WoW.exe"
fi
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
CURRENT_PATH=$( cd "$(dirname "${BASH_SOURCE[0]}")" || exit ; pwd )
# shellcheck source=./config.sh
source "$CURRENT_PATH/config.sh"
acore_dash_config "$@"
+60
View File
@@ -0,0 +1,60 @@
#!/usr/bin/env bash
CURRENT_PATH=$( cd "$(dirname "${BASH_SOURCE[0]}")" || exit ; pwd )
# shellcheck source=../../../bash_shared/includes.sh
source "$CURRENT_PATH/../../../bash_shared/includes.sh"
# shellcheck source=../includes.sh
source "$CURRENT_PATH/../includes.sh"
# shellcheck source=../../../bash_shared/menu_system.sh
source "$AC_PATH_APPS/bash_shared/menu_system.sh"
function acore_dash_configShowValue() {
if [ $# -ne 1 ]; then
echo "Usage: show <VAR_NAME>"
return 1
fi
local varName="$1"
local varValue="${!varName}"
if [ -z "$varValue" ]; then
echo "$varName is not set."
else
echo "$varName=$varValue"
fi
}
function acore_dash_configLoad() {
acore_common_loadConfig
echo "Configuration loaded into the current shell session."
}
# Configuration management menu definition
# Format: "key|short|description"
config_menu_items=(
"show|s|Show configuration variable value"
"load|l|Load configurations variables within the current shell session"
"help|h|Show detailed help"
"quit|q|Close this menu"
)
# Menu command handler for configuration operations
function handle_config_command() {
local key="$1"
shift
case "$key" in
"show")
acore_dash_configShowValue "$@"
;;
"load")
acore_dash_configLoad
;;
esac
}
function acore_dash_config() {
menu_run_with_items "CONFIG MANAGER" handle_config_command -- "${config_menu_items[@]}" -- "$@"
return $?
}
+69 -135
View File
@@ -1,3 +1,12 @@
#!/usr/bin/env bash
# Set SUDO variable - one liner
if [[ "$OSTYPE" == "msys"* ]]; then
SUDO=""
else
SUDO=$([ "$EUID" -ne 0 ] && echo "sudo" || echo "")
fi
function inst_configureOS() {
echo "Platform: $OSTYPE"
case "$OSTYPE" in
@@ -45,6 +54,42 @@ function inst_configureOS() {
esac
}
# Use the data/sql/create/create_mysql.sql to initialize the database
function inst_dbCreate() {
echo "Creating database..."
# Attempt to connect with MYSQL_ROOT_PASSWORD
if [ ! -z "$MYSQL_ROOT_PASSWORD" ]; then
if $SUDO mysql -u root -p"$MYSQL_ROOT_PASSWORD" < "$AC_PATH_ROOT/data/sql/create/create_mysql.sql" 2>/dev/null; then
echo "Database created successfully."
return 0
else
echo "Failed to connect with provided password, falling back to interactive mode..."
fi
fi
# In CI environments or when no password is set, try without password first
if [[ "$CONTINUOUS_INTEGRATION" == "true" ]]; then
echo "CI environment detected, attempting connection without password..."
if $SUDO mysql -u root < "$AC_PATH_ROOT/data/sql/create/create_mysql.sql" 2>/dev/null; then
echo "Database created successfully."
return 0
else
echo "Failed to connect without password, falling back to interactive mode..."
fi
fi
# Try with password (interactive mode)
echo "Please enter your sudo and your MySQL root password if prompted."
$SUDO mysql -u root -p < "$AC_PATH_ROOT/data/sql/create/create_mysql.sql"
if [ $? -ne 0 ]; then
echo "Database creation failed. Please check your MySQL server and credentials."
exit 1
fi
echo "Database created successfully."
}
function inst_updateRepo() {
cd "$AC_PATH_ROOT"
if [ ! -z $INSTALLER_PULL_FROM ]; then
@@ -73,149 +118,36 @@ function inst_cleanCompile() {
function inst_allInOne() {
inst_configureOS
inst_compile
dbasm_import true true true
inst_dbCreate
inst_download_client_data
}
function inst_getVersionBranch() {
local res="master"
local v="not-defined"
local MODULE_MAJOR=0
local MODULE_MINOR=0
local MODULE_PATCH=0
local MODULE_SPECIAL=0;
local ACV_MAJOR=0
local ACV_MINOR=0
local ACV_PATCH=0
local ACV_SPECIAL=0;
local curldata=$(curl -f --silent -H 'Cache-Control: no-cache' "$1" || echo "{}")
local parsed=$(echo "$curldata" | "$AC_PATH_DEPS/jsonpath/JSONPath.sh" -b '$.compatibility.*.[version,branch]')
############################################################
# Module helpers and dispatcher #
############################################################
semverParseInto "$ACORE_VERSION" ACV_MAJOR ACV_MINOR ACV_PATCH ACV_SPECIAL
if [[ ! -z "$parsed" ]]; then
readarray -t vers < <(echo "$parsed")
local idx
res="none"
# since we've the pair version,branch alternated in not associative and one-dimensional
# array, we've to simulate the association with length/2 trick
for idx in `seq 0 $((${#vers[*]}/2-1))`; do
semverParseInto "${vers[idx*2]}" MODULE_MAJOR MODULE_MINOR MODULE_PATCH MODULE_SPECIAL
if [[ $MODULE_MAJOR -eq $ACV_MAJOR && $MODULE_MINOR -le $ACV_MINOR ]]; then
res="${vers[idx*2+1]}"
v="${vers[idx*2]}"
fi
done
# Returns the default branch name of a GitHub repo in the azerothcore org.
# If the API call fails, defaults to "master".
function inst_get_default_branch() {
local repo="$1"
local def
def=$(curl --silent "https://api.github.com/repos/azerothcore/${repo}" \
| "$AC_PATH_DEPS/jsonpath/JSONPath.sh" -b '$.default_branch')
if [ -z "$def" ]; then
def="master"
fi
echo "$v" "$res"
}
function inst_module_search {
local res="$1"
local idx=0;
if [ -z "$1" ]; then
echo "Type what to search or leave blank for full list"
read -p "Insert name: " res
fi
local search="+$res"
echo "Searching $res..."
echo "";
readarray -t MODS < <(curl --silent "https://api.github.com/search/repositories?q=org%3Aazerothcore${search}+fork%3Atrue+topic%3Acore-module+sort%3Astars&type=" \
| "$AC_PATH_DEPS/jsonpath/JSONPath.sh" -b '$.items.*.name')
while (( ${#MODS[@]} > idx )); do
mod="${MODS[idx++]}"
read v b < <(inst_getVersionBranch "https://raw.githubusercontent.com/azerothcore/$mod/master/acore-module.json")
if [[ "$b" != "none" ]]; then
echo "-> $mod (tested with AC version: $v)"
else
echo "-> $mod (no revision available for AC v$AC_VERSION, it could not work!)"
fi
done
echo "";
echo "";
}
function inst_module_install {
local res
if [ -z "$1" ]; then
echo "Type the name of the module to install"
read -p "Insert name: " res
else
res="$1"
fi
read v b < <(inst_getVersionBranch "https://raw.githubusercontent.com/azerothcore/$res/master/acore-module.json")
if [[ "$b" != "none" ]]; then
Joiner:add_repo "https://github.com/azerothcore/$res" "$res" "$b" && echo "Done, please re-run compiling and db assembly. Read instruction on module repository for more information"
else
echo "Cannot install $res module: it doesn't exists or no version compatible with AC v$ACORE_VERSION are available"
fi
echo "";
echo "";
}
function inst_module_update {
local res;
local _tmp;
local branch;
local p;
if [ -z "$1" ]; then
echo "Type the name of the module to update"
read -p "Insert name: " res
else
res="$1"
fi
_tmp=$PWD
if [ -d "$J_PATH_MODULES/$res/" ]; then
read v b < <(inst_getVersionBranch "https://raw.githubusercontent.com/azerothcore/$res/master/acore-module.json")
cd "$J_PATH_MODULES/$res/"
# use current branch if something wrong with json
if [[ "$v" == "none" || "$v" == "not-defined" ]]; then
b=`git rev-parse --abbrev-ref HEAD`
fi
Joiner:upd_repo "https://github.com/azerothcore/$res" "$res" "$b" && echo "Done, please re-run compiling and db assembly" || echo "Cannot update"
cd $_tmp
else
echo "Cannot update! Path doesn't exist"
fi;
echo "";
echo "";
}
function inst_module_remove {
if [ -z "$1" ]; then
echo "Type the name of the module to remove"
read -p "Insert name: " res
else
res="$1"
fi
Joiner:remove "$res" && echo "Done, please re-run compiling" || echo "Cannot remove"
echo "";
echo "";
echo "$def"
}
# =============================================================================
# Module Management System
# =============================================================================
# Load the module manager functions from the dedicated modules-manager directory
source "$AC_PATH_INSTALLER/includes/modules-manager/modules.sh"
function inst_simple_restarter {
echo "Running $1 ..."
bash "$AC_PATH_APPS/startup-scripts/simple-restarter" "$AC_BINPATH_FULL" "$1"
bash "$AC_PATH_APPS/startup-scripts/src/simple-restarter" "$AC_BINPATH_FULL" "$1"
echo
#disown -a
#jobs -l
@@ -223,7 +155,7 @@ function inst_simple_restarter {
function inst_download_client_data {
# change the following version when needed
local VERSION=v16
local VERSION=v18.0
echo "#######################"
echo "Client data downloader"
@@ -251,3 +183,5 @@ function inst_download_client_data {
&& echo "Remove downloaded file" && rm "$zipPath" \
&& echo "INSTALLED_VERSION=$VERSION" > "$dataVersionFile"
}
+5 -4
View File
@@ -2,6 +2,7 @@
CURRENT_PATH=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd )
# shellcheck source=../../bash_shared/includes.sh
source "$CURRENT_PATH/../../bash_shared/includes.sh"
AC_PATH_INSTALLER="$AC_PATH_APPS/installer"
@@ -9,14 +10,14 @@ AC_PATH_INSTALLER="$AC_PATH_APPS/installer"
J_PATH="$AC_PATH_DEPS/acore/joiner"
J_PATH_MODULES="$AC_PATH_MODULES"
# shellcheck source=../../../deps/acore/joiner/joiner.sh
source "$J_PATH/joiner.sh"
if [ -f "$AC_PATH_INSTALLER/config.sh" ]; then
source "$AC_PATH_INSTALLER/config.sh" # should overwrite previous
fi
# shellcheck source=../../compiler/includes/includes.sh
source "$AC_PATH_APPS/compiler/includes/includes.sh"
# shellcheck source=../../../deps/semver_bash/semver.sh
source "$AC_PATH_DEPS/semver_bash/semver.sh"
# shellcheck source=../includes/functions.sh
source "$AC_PATH_INSTALLER/includes/functions.sh"
@@ -0,0 +1,311 @@
# AzerothCore Module Manager
This directory contains the module management system for AzerothCore, providing advanced functionality for installing, updating, and managing server modules.
## 🚀 Features
- **Advanced Syntax**: Support for `repo[:dirname][@branch[:commit]]` format
- **Cross-Format Recognition**: Intelligent matching across URLs, SSH, and simple names
- **Custom Directory Naming**: Prevent conflicts with custom directory names
- **Duplicate Prevention**: Smart detection and prevention of duplicate installations
- **Multi-Host Support**: GitHub, GitLab, and other Git hosts
- **Module Exclusion**: Support for excluding modules via environment variable
- **Interactive Menu System**: Easy-to-use menu interface for module management
- **Colored Output**: Enhanced terminal output with color support (respects NO_COLOR)
- **Flat Directory Structure**: Uses flat module installation (no owner subfolders)
## 📁 File Structure
```
modules-manager/
├── modules.sh # Core module management functions
└── README.md # This documentation file
```
## 🔧 Module Specification Syntax
The module manager supports flexible syntax for specifying modules:
### New Syntax Format
```bash
repo[:dirname][@branch[:commit]]
```
### Examples
| Specification | Description |
|---------------|-------------|
| `mod-transmog` | Simple module name, uses default branch and directory |
| `mod-transmog:my-custom-dir` | Custom directory name |
| `mod-transmog@develop` | Specific branch |
| `mod-transmog:custom@develop:abc123` | Custom directory, branch, and commit |
| `https://github.com/owner/repo.git@main` | Full URL with branch |
| `git@github.com:owner/repo.git:custom-dir` | SSH URL with custom directory |
## 🎯 Usage Examples
### Installing Modules
```bash
# Simple module installation
./acore.sh module install mod-transmog
# Install with custom directory name
./acore.sh module install mod-transmog:my-transmog-dir
# Install specific branch
./acore.sh module install mod-transmog@develop
# Install with full specification
./acore.sh module install mod-transmog:custom-dir@develop:abc123
# Install from URL
./acore.sh module install https://github.com/azerothcore/mod-transmog.git@main
# Install multiple modules
./acore.sh module install mod-transmog mod-ale:custom-eluna
# Install all modules from list
./acore.sh module install --all
```
### Updating Modules
```bash
# Update specific module
./acore.sh module update mod-transmog
# Update all modules
./acore.sh module update --all
# Update with branch specification
./acore.sh module update mod-transmog@develop
```
### Removing Modules
```bash
# Remove by simple name (cross-format recognition)
./acore.sh module remove mod-transmog
# Remove by URL (recognizes same module)
./acore.sh module remove https://github.com/azerothcore/mod-transmog.git
# Remove multiple modules
./acore.sh module remove mod-transmog mod-ale
```
### Searching Modules
```bash
# Search for modules
./acore.sh module search transmog
# Search with multiple terms
./acore.sh module search auction house
# Search with input prompt
./acore.sh module search
```
### Listing Installed Modules
```bash
# List all installed modules
./acore.sh module list
```
### Interactive Menu
```bash
# Start interactive menu system
./acore.sh module
# Menu options:
# s - Search for available modules
# i - Install one or more modules
# u - Update installed modules
# r - Remove installed modules
# l - List installed modules
# h - Show detailed help
# q - Close this menu
```
## 🔍 Cross-Format Recognition
The system intelligently recognizes the same module across different specification formats:
```bash
# These all refer to the same module:
mod-transmog
azerothcore/mod-transmog
https://github.com/azerothcore/mod-transmog.git
git@github.com:azerothcore/mod-transmog.git
```
This allows:
- Installing with one format and removing with another
- Preventing duplicates regardless of specification format
- Consistent module tracking across different input methods
## 🛡️ Conflict Prevention
The system prevents common conflicts:
### Directory Conflicts
```bash
# If 'mod-transmog' directory already exists:
$ ./acore.sh module install mod-transmog:mod-transmog
Possible solutions:
1. Use a different directory name: mod-transmog:my-custom-name
2. Remove the existing directory first
3. Use the update command if this is the same module
```
### Duplicate Module Prevention
The system uses intelligent owner/name matching to prevent installing the same module multiple times, even when specified in different formats.
## 🚫 Module Exclusion
You can exclude modules from installation using the `MODULES_EXCLUDE_LIST` environment variable:
```bash
# Exclude specific modules (space-separated)
export MODULES_EXCLUDE_LIST="mod-test-module azerothcore/mod-dev-only"
./acore.sh module install --all # Will skip excluded modules
# Supports cross-format matching
export MODULES_EXCLUDE_LIST="https://github.com/azerothcore/mod-transmog.git"
./acore.sh module install mod-transmog # Will be skipped as excluded
```
The exclusion system:
- Uses the same cross-format recognition as other module operations
- Works with all installation methods (`install`, `install --all`)
- Provides clear feedback when modules are skipped
- Supports URLs, owner/name format, and simple names
## 🎨 Color Support
The module manager provides enhanced terminal output with colors:
- **Info**: Cyan text for informational messages
- **Success**: Green text for successful operations
- **Warning**: Yellow text for warnings
- **Error**: Red text for errors
- **Headers**: Bold cyan text for section headers
Color support is automatically disabled when:
- Output is not to a terminal (piped/redirected)
- `NO_COLOR` environment variable is set
- Terminal doesn't support colors
You can force color output with:
```bash
export FORCE_COLOR=1
```
## 🔄 Integration
### Including in Scripts
```bash
# Source the module functions
source "$AC_PATH_INSTALLER/includes/modules-manager/modules.sh"
# Use module functions
inst_module_install "mod-transmog:custom-dir@develop"
```
### Testing
The module system is tested through the main installer test suite:
```bash
./apps/installer/test/test_module_commands.bats
```
## 📋 Module List Format
Modules are tracked in `conf/modules.list` with the format:
```
# Comments start with #
repo_reference branch commit
# Examples:
azerothcore/mod-transmog master abc123def456
https://github.com/custom/mod-custom.git develop def456abc789
mod-ale:custom-eluna-dir main 789abc123def
```
The list maintains:
- **Alphabetical ordering** by normalized owner/name for consistency
- **Original format preservation** of how modules were specified
- **Automatic deduplication** across different specification formats
- **Custom directory tracking** when specified
## 🔧 Configuration
### Environment Variables
| Variable | Description | Default |
|----------|-------------|---------|
| `MODULES_LIST_FILE` | Override default modules list path | `$AC_PATH_ROOT/conf/modules.list` |
| `MODULES_EXCLUDE_LIST` | Space-separated list of modules to exclude | - |
| `J_PATH_MODULES` | Modules installation directory | `$AC_PATH_ROOT/modules` |
| `AC_PATH_ROOT` | AzerothCore root path | - |
| `NO_COLOR` | Disable colored output | - |
| `FORCE_COLOR` | Force colored output even when not TTY | - |
### Default Paths
- **Modules list**: `$AC_PATH_ROOT/conf/modules.list`
- **Installation directory**: `$J_PATH_MODULES` (flat structure, no owner subfolders)
## 🏗️ Architecture
### Core Functions
| Function | Purpose |
|----------|---------|
| `inst_module()` | Main dispatcher and interactive menu |
| `inst_parse_module_spec()` | Parse advanced module syntax |
| `inst_extract_owner_name()` | Normalize modules for cross-format recognition |
| `inst_mod_list_*()` | Module list management (read/write/update) |
| `inst_module_*()` | Module operations (install/update/remove/search) |
### Key Features
- **Flat Directory Structure**: All modules install directly under `modules/` without owner subdirectories
- **Smart Conflict Detection**: Prevents directory name conflicts with helpful suggestions
- **Cross-Platform Compatibility**: Works on Linux, macOS, and Windows (Git Bash)
- **Version Compatibility**: Checks `acore-module.json` for AzerothCore version compatibility
- **Git Integration**: Uses Joiner system for Git repository management
### Debug Mode
For debugging module operations, you can examine the generated commands:
```bash
# Check what Joiner commands would be executed
tail -f /tmp/joiner_called.txt # In test environments
```
## 🤝 Contributing
When modifying the module manager:
1. **Maintain backwards compatibility** with existing module list format
2. **Update tests** in `test_module_commands.bats` for new functionality
3. **Update this documentation** for any new features or changes
4. **Test cross-format recognition** thoroughly across all supported formats
5. **Ensure helpful error messages** for common user mistakes
6. **Test exclusion functionality** with various module specification formats
7. **Verify color output** works correctly in different terminal environments
### Testing Guidelines
```bash
# Run all module-related tests
cd apps/installer
bats test/test_module_commands.bats
# Test with different environments
NO_COLOR=1 ./acore.sh module list
FORCE_COLOR=1 ./acore.sh module help
```
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
CURRENT_PATH=$( cd "$(dirname "${BASH_SOURCE[0]}")" || exit ; pwd )
source "$CURRENT_PATH/modules.sh"
inst_module "$@"
File diff suppressed because it is too large Load Diff
+17 -8
View File
@@ -1,5 +1,12 @@
#!/usr/bin/env bash
CURRENT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Set SUDO variable - one liner
SUDO=$([ "$EUID" -ne 0 ] && echo "sudo" || echo "")
if ! command -v lsb_release &>/dev/null ; then
sudo apt-get install -y lsb-release
$SUDO apt-get install -y lsb-release
fi
DEBIAN_VERSION=$(lsb_release -sr)
@@ -14,16 +21,18 @@ if [[ $DEBIAN_VERSION -lt $DEBIAN_VERSION_MIN ]]; then
echo "########## ########## ##########"
fi
sudo apt-get update -y
$SUDO apt-get update -y
sudo apt-get install -y gdbserver gdb unzip curl \
$SUDO apt-get install -y gdbserver gdb unzip curl \
libncurses-dev libreadline-dev clang g++ \
gcc git cmake make ccache \
libssl-dev libbz2-dev \
libboost-all-dev gnupg wget
libboost-all-dev gnupg wget jq screen tmux expect
VAR_PATH="$CURRENT_PATH/../../../../var"
# run noninteractive install for MYSQL 8.4 LTS
wget https://dev.mysql.com/get/mysql-apt-config_0.8.32-1_all.deb
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i ./mysql-apt-config_0.8.32-1_all.deb
sudo apt-get update
sudo DEBIAN_FRONTEND="noninteractive" apt-get install -y mysql-server libmysqlclient-dev
wget https://dev.mysql.com/get/mysql-apt-config_0.8.35-1_all.deb -P "$VAR_PATH"
DEBIAN_FRONTEND="noninteractive" $SUDO dpkg -i "$VAR_PATH/mysql-apt-config_0.8.35-1_all.deb"
$SUDO apt-get update
DEBIAN_FRONTEND="noninteractive" $SUDO apt-get install -y mysql-server libmysqlclient-dev
+1 -1
View File
@@ -31,4 +31,4 @@ if ! command -v cmake &>/dev/null ; then
fi
##########################################
brew install openssl@3 readline boost bash-completion curl unzip mysql ccache
brew install openssl@3 readline boost bash-completion curl unzip mysql ccache expect tmux screen jq
+30 -18
View File
@@ -1,5 +1,12 @@
#!/usr/bin/env bash
CURRENT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Set SUDO variable - one liner
SUDO=$([ "$EUID" -ne 0 ] && echo "sudo" || echo "")
if ! command -v lsb_release &>/dev/null ; then
sudo apt-get install -y lsb-release
$SUDO apt-get install -y lsb-release
fi
UBUNTU_VERSION=$(lsb_release -sr);
@@ -19,26 +26,31 @@ case $UBUNTU_VERSION in
;;
esac
sudo apt update
$SUDO apt update
# shared deps
sudo DEBIAN_FRONTEND="noninteractive" \
apt-get -y install ccache clang cmake curl google-perftools libmysqlclient-dev make unzip
DEBIAN_FRONTEND="noninteractive" $SUDO \
apt-get -y install ccache clang cmake curl google-perftools libmysqlclient-dev make unzip jq screen tmux \
libreadline-dev libncurses5-dev libncursesw5-dev libbz2-dev git gcc g++ libssl-dev \
libncurses-dev libboost-all-dev gdb gdbserver expect
if [[ $CONTINUOUS_INTEGRATION || $DOCKER ]]; then
# TODO: update CI / Docker section for Ubuntu 22.04+
sudo add-apt-repository -y ppa:mhier/libboost-latest && sudo apt update && sudo apt-get -y install build-essential cmake-data \
libboost1.74-dev libbz2-dev libncurses5-dev libmysql++-dev libgoogle-perftools-dev libreadline6-dev libssl-dev libtool \
openssl zlib1g-dev
else
sudo DEBIAN_FRONTEND="noninteractive" \
apt-get install -y g++ gdb gdbserver gcc git \
libboost-all-dev libbz2-dev libncurses-dev libreadline-dev \
libssl-dev
VAR_PATH="$CURRENT_PATH/../../../../var"
# Do not install MySQL if we are in docker (It will be used a docker container instead) or we are explicitly skipping it.
if [[ $DOCKER != 1 && $SKIP_MYSQL_INSTALL != 1 ]]; then
# run noninteractive install for MYSQL 8.4 LTS
wget https://dev.mysql.com/get/mysql-apt-config_0.8.32-1_all.deb
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i ./mysql-apt-config_0.8.32-1_all.deb
sudo apt-get update
sudo DEBIAN_FRONTEND="noninteractive" apt-get install -y mysql-server
wget https://dev.mysql.com/get/mysql-apt-config_0.8.35-1_all.deb -P "$VAR_PATH"
# resolve expired key issue
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
DEBIAN_FRONTEND="noninteractive" $SUDO dpkg -i "$VAR_PATH/mysql-apt-config_0.8.35-1_all.deb"
$SUDO apt-get update
DEBIAN_FRONTEND="noninteractive" $SUDO apt-get install -y mysql-server
fi
if [[ $CONTINUOUS_INTEGRATION ]]; then
$SUDO systemctl enable mysql.service
$SUDO systemctl start mysql.service
fi
+9 -10
View File
@@ -1,6 +1,6 @@
# install chocolatey before
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
# powershell.exe -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
# install automatically following packages:
# cmake
@@ -8,10 +8,10 @@
# microsoft-build-tools
# mysql
INSTALL_ARGS=""
INSTALL_ARGS=()
if [[ $CONTINUOUS_INTEGRATION ]]; then
INSTALL_ARGS=" --no-progress "
INSTALL_ARGS+=(--no-progress)
else
{ # try
choco uninstall -y -n cmake.install cmake # needed to make sure that following install set the env properly
@@ -19,12 +19,11 @@ else
echo "nothing to do"
}
choco install -y --skip-checksums $INSTALL_ARGS git visualstudio2022community
choco install -y --skip-checksums "${INSTALL_ARGS[@]}" git visualstudio2022community
fi
choco install -y --skip-checksums $INSTALL_ARGS cmake.install -y --installargs 'ADD_CMAKE_TO_PATH=System'
choco install -y --skip-checksums $INSTALL_ARGS visualstudio2022-workload-nativedesktop
choco install -y --skip-checksums $INSTALL_ARGS openssl --version=3.1.1
choco install -y --skip-checksums $INSTALL_ARGS boost-msvc-14.3 --version=1.82.0
choco install -y --skip-checksums $INSTALL_ARGS mysql --version=8.0.31
choco install -y --skip-checksums "${INSTALL_ARGS[@]}" cmake.install -y --installargs 'ADD_CMAKE_TO_PATH=System'
choco install -y --skip-checksums "${INSTALL_ARGS[@]}" visualstudio2022-workload-nativedesktop
choco install -y --skip-checksums "${INSTALL_ARGS[@]}" openssl --force --version=3.5.4
choco install -y --skip-checksums "${INSTALL_ARGS[@]}" boost-msvc-14.3 --force --version=1.87.0
choco install -y --skip-checksums "${INSTALL_ARGS[@]}" mysql --force --version=8.4.6
+83 -63
View File
@@ -1,99 +1,119 @@
#!/usr/bin/env bash
# AzerothCore Dashboard Script
#
# This script provides an interactive menu system for AzerothCore management
# using the unified menu system library.
#
# Usage:
# ./acore.sh - Interactive mode with numeric and text selection
# ./acore.sh <command> [args] - Direct command execution (only text commands, no numbers)
#
# Interactive Mode:
# - Select options by number (1, 2, 3...), command name (init, compiler, etc.),
# or short alias (i, c, etc.)
# - All selection methods work in interactive mode
#
# Direct Command Mode:
# - Only command names and short aliases are accepted (e.g., './acore.sh compiler build', './acore.sh c build')
# - Numeric selection is disabled to prevent confusion with command arguments
# - Examples: './acore.sh init', './acore.sh compiler clean', './acore.sh module install mod-name'
#
# Menu System:
# - Uses unified menu system from bash_shared/menu_system.sh
# - Single source of truth for menu definitions
# - Consistent behavior across all AzerothCore tools
CURRENT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source "$CURRENT_PATH/includes/includes.sh"
source "$AC_PATH_APPS/bash_shared/menu_system.sh"
PS3='[Please enter your choice]: '
options=(
"init (i): First Installation" # 1
"install-deps (d): Configure OS dep" # 2
"pull (u): Update Repository" # 3
"reset (r): Reset & Clean Repository" # 4
"compiler (c): Run compiler tool" # 5
"module-search (ms): Module Search by keyword" # 6
"module-install (mi): Module Install by name" # 7
"module-update (mu): Module Update by name" # 8
"module-remove: (mr): Module Remove by name" # 9
"client-data: (gd): download client data from github repository (beta)" # 10
"run-worldserver (rw): execute a simple restarter for worldserver" # 11
"run-authserver (ra): execute a simple restarter for authserver" # 12
"docker (dr): Run docker tools" # 13
"quit: Exit from this menu" # 14
)
# Menu: single ordered source of truth (no functions in strings)
# Format: "key|short|description"
menu_items=(
"init|i|First Installation"
"install-deps|d|Configure OS dep"
"pull|u|Update Repository"
"reset|r|Reset & Clean Repository"
"setup-db|r|Install db only"
"compiler|c|Run compiler tool"
"module|m|Module manager (search/install/update/remove)"
"client-data|gd|download client data from github repository (beta)"
"run-worldserver|rw|execute a simple restarter for worldserver"
"run-authserver|ra|execute a simple restarter for authserver"
"test|t|Run test framework"
"docker|dr|Run docker tools"
"version|v|Show AzerothCore version"
"service-manager|sm|Run service manager to run authserver and worldserver in background"
"config|cf|Configuration manager"
"quit|q|Exit from this menu"
)
function _switch() {
_reply="$1"
_opt="$2"
case $_reply in
""|"i"|"init"|"1")
# Menu command handler - called by menu system for each command
function handle_menu_command() {
local key="$1"
shift
case "$key" in
"init")
inst_allInOne
;;
""|"d"|"install-deps"|"2")
"install-deps")
inst_configureOS
;;
""|"u"|"pull"|"3")
"pull")
inst_updateRepo
;;
""|"r"|"reset"|"4")
"reset")
inst_resetRepo
;;
""|"c"|"compiler"|"5")
bash "$AC_PATH_APPS/compiler/compiler.sh" $_opt
"setup-db")
inst_dbCreate
;;
""|"ms"|"module-search"|"6")
inst_module_search "$_opt"
"compiler")
bash "$AC_PATH_APPS/compiler/compiler.sh" "$@"
;;
""|"mi"|"module-install"|"7")
inst_module_install "$_opt"
"module")
bash "$AC_PATH_APPS/installer/includes/modules-manager/module-main.sh" "$@"
;;
""|"mu"|"module-update"|"8")
inst_module_update "$_opt"
;;
""|"mr"|"module-remove"|"9")
inst_module_remove "$_opt"
;;
""|"gd"|"client-data"|"10")
"client-data")
inst_download_client_data
;;
""|"rw"|"run-worldserver"|"11")
"run-worldserver")
inst_simple_restarter worldserver
;;
""|"ra"|"run-authserver"|"12")
"run-authserver")
inst_simple_restarter authserver
;;
""|"dr"|"docker"|"13")
DOCKER=1 bash "$AC_PATH_ROOT/apps/docker/docker-cmd.sh" "${@:2}"
"test")
bash "$AC_PATH_APPS/test-framework/test-main.sh" "$@"
;;
"docker")
DOCKER=1 bash "$AC_PATH_ROOT/apps/docker/docker-cmd.sh" "$@"
exit
;;
""|"v"|"version"|"14")
# denoRunFile "$AC_PATH_APPS/installer/main.ts" "version"
"version")
printf "AzerothCore Rev. %s\n" "$ACORE_VERSION"
exit
;;
""|"quit"|"15")
"service-manager")
bash "$AC_PATH_APPS/startup-scripts/src/service-manager.sh" "$@"
exit
;;
"config")
bash "$AC_PATH_APPS/installer/includes/config/config-main.sh" "$@"
;;
"quit")
echo "Goodbye!"
exit
;;
""|"--help")
echo "Available commands:"
printf '%s\n' "${options[@]}"
*)
echo "Invalid option. Use --help to see available commands."
return 1
;;
*) echo "invalid option, use --help option for the commands list";;
esac
}
while true
do
# run option directly if specified in argument
[ ! -z $1 ] && _switch $@ # old method: "${options[$cmdopt-1]}"
[ ! -z $1 ] && exit 0
echo "==== ACORE DASHBOARD ===="
select opt in "${options[@]}"
do
_switch $REPLY
break
done
done
# Run the menu system
menu_run_with_items "ACORE DASHBOARD" handle_menu_command -- "${menu_items[@]}" -- "$@"
+14
View File
@@ -0,0 +1,14 @@
# BATS Test Configuration
# Set test timeout (in seconds)
export BATS_TEST_TIMEOUT=30
# Enable verbose output for debugging
export BATS_VERBOSE_RUN=1
# Test output format
export BATS_FORMATTER=pretty
# Enable colored output
export BATS_NO_PARALLELIZE_ACROSS_FILES=1
export BATS_NO_PARALLELIZE_WITHIN_FILE=1
+755
View File
@@ -0,0 +1,755 @@
#!/usr/bin/env bats
# Tests for installer module commands (search/install/update/remove)
# Focused on installer:module install behavior using a mocked joiner
load '../../test-framework/bats_libs/acore-support'
load '../../test-framework/bats_libs/acore-assert'
setup() {
acore_test_setup
# Point to the installer src directory (not needed in this test)
# Set installer/paths environment for the test
export AC_PATH_APPS="$TEST_DIR/apps"
export AC_PATH_ROOT="$TEST_DIR"
export AC_PATH_DEPS="$TEST_DIR/deps"
export AC_PATH_MODULES="$TEST_DIR/modules"
export MODULES_LIST_FILE="$TEST_DIR/conf/modules.list"
# Create stubbed deps: joiner.sh (sourced by includes) and semver
mkdir -p "$TEST_DIR/deps/acore/joiner"
cat > "$TEST_DIR/deps/acore/joiner/joiner.sh" << 'EOF'
#!/usr/bin/env bash
# Stub joiner functions used by installer
Joiner:add_repo() {
# arguments: url name branch basedir
echo "ADD $@" > "$TEST_DIR/joiner_called.txt"
return 0
}
Joiner:upd_repo() {
echo "UPD $@" > "$TEST_DIR/joiner_called.txt"
return 0
}
Joiner:remove() {
echo "REM $@" > "$TEST_DIR/joiner_called.txt"
return 0
}
EOF
chmod +x "$TEST_DIR/deps/acore/joiner/joiner.sh"
mkdir -p "$TEST_DIR/deps/semver_bash"
# Minimal semver stub
cat > "$TEST_DIR/deps/semver_bash/semver.sh" << 'EOF'
#!/usr/bin/env bash
# semver stub
semver::satisfies() { return 0; }
EOF
chmod +x "$TEST_DIR/deps/semver_bash/semver.sh"
# Provide a minimal compiler includes file expected by installer
mkdir -p "$TEST_DIR/apps/compiler/includes"
touch "$TEST_DIR/apps/compiler/includes/includes.sh"
# Provide minimal bash_shared includes to satisfy installer include
mkdir -p "$TEST_DIR/apps/bash_shared"
cat > "$TEST_DIR/apps/bash_shared/includes.sh" << 'EOF'
#!/usr/bin/env bash
# minimal stub
EOF
# Copy the menu system needed by modules.sh
cp "$AC_TEST_ROOT/apps/bash_shared/menu_system.sh" "$TEST_DIR/apps/bash_shared/"
# Copy the real installer app into the test apps dir
mkdir -p "$TEST_DIR/apps"
cp -r "$(cd "$AC_TEST_ROOT/apps/installer" && pwd)" "$TEST_DIR/apps/installer"
}
teardown() {
acore_test_teardown
}
@test "module install should call joiner and record entry in modules list" {
cd "$TEST_DIR"
# Source installer includes and call the install function directly to avoid menu interaction
run bash -c "source '$TEST_DIR/apps/installer/includes/includes.sh' && inst_module_install example-module@main:abcd1234"
# Check that joiner was called
[ -f "$TEST_DIR/joiner_called.txt" ]
grep -q "ADD" "$TEST_DIR/joiner_called.txt"
# Check modules list was created and contains the repo_ref and branch
[ -f "$TEST_DIR/conf/modules.list" ]
grep -q "azerothcore/example-module main" "$TEST_DIR/conf/modules.list"
}
@test "module install with owner/name format should work" {
cd "$TEST_DIR"
# Test with owner/name format
run bash -c "source '$TEST_DIR/apps/installer/includes/includes.sh' && inst_module_install myorg/mymodule"
# Check that joiner was called with correct URL
[ -f "$TEST_DIR/joiner_called.txt" ]
grep -q "ADD https://github.com/myorg/mymodule mymodule" "$TEST_DIR/joiner_called.txt"
# Check modules list contains the entry
[ -f "$TEST_DIR/conf/modules.list" ]
grep -q "myorg/mymodule" "$TEST_DIR/conf/modules.list"
}
@test "module remove should call joiner remove and update modules list" {
cd "$TEST_DIR"
# First install a module
bash -c "source '$TEST_DIR/apps/installer/includes/includes.sh' && inst_module_install test-module"
# Then remove it
run bash -c "source '$TEST_DIR/apps/installer/includes/includes.sh' && inst_module_remove test-module"
# Check that joiner remove was called
[ -f "$TEST_DIR/joiner_called.txt" ]
# With flat structure, basedir is empty; ensure name is present
grep -q "REM test-module" "$TEST_DIR/joiner_called.txt"
# Check modules list no longer contains the entry
[ -f "$TEST_DIR/conf/modules.list" ]
! grep -q "azerothcore/test-module" "$TEST_DIR/conf/modules.list"
}
# Tests for intelligent module management (duplicate prevention and cross-format removal)
@test "inst_extract_owner_name should extract owner/name from various formats" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Test simple name
run inst_extract_owner_name "mod-transmog"
[ "$output" = "azerothcore/mod-transmog" ]
# Test owner/name format
run inst_extract_owner_name "azerothcore/mod-transmog"
[ "$output" = "azerothcore/mod-transmog" ]
# Test HTTPS URL
run inst_extract_owner_name "https://github.com/azerothcore/mod-transmog.git"
[ "$output" = "azerothcore/mod-transmog" ]
# Test SSH URL
run inst_extract_owner_name "git@github.com:azerothcore/mod-transmog.git"
[ "$output" = "azerothcore/mod-transmog" ]
# Test GitLab URL
run inst_extract_owner_name "https://gitlab.com/myorg/mymodule.git"
[ "$output" = "myorg/mymodule" ]
}
@test "inst_extract_owner_name should handle URLs with ports correctly" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Test HTTPS URL with port
run inst_extract_owner_name "https://example.com:8080/user/repo.git"
[ "$output" = "user/repo" ]
# Test SSH URL with port
run inst_extract_owner_name "ssh://git@example.com:2222/owner/module"
[ "$output" = "owner/module" ]
# Test URL with port and custom directory (should ignore the directory part)
run inst_extract_owner_name "https://gitlab.internal:9443/team/project.git:custom-dir"
[ "$output" = "team/project" ]
# Test complex URL with port (should extract owner/name correctly)
run inst_extract_owner_name "https://git.company.com:8443/department/awesome-module.git"
[ "$output" = "department/awesome-module" ]
}
@test "duplicate module entries should be prevented across different formats" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Add module via simple name
inst_mod_list_upsert "mod-transmog" "master" "abc123"
# Verify it's in the list
grep -q "mod-transmog master abc123" "$TEST_DIR/conf/modules.list"
# Add same module via owner/name format - should replace, not duplicate
inst_mod_list_upsert "azerothcore/mod-transmog" "dev" "def456"
# Should only have one entry (the new one)
[ "$(grep -c "azerothcore/mod-transmog" "$TEST_DIR/conf/modules.list")" -eq 1 ]
grep -q "azerothcore/mod-transmog dev def456" "$TEST_DIR/conf/modules.list"
! grep -q "mod-transmog master abc123" "$TEST_DIR/conf/modules.list"
}
@test "module installed via URL should be recognized when checking with different formats" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Install via HTTPS URL
inst_mod_list_upsert "https://github.com/azerothcore/mod-transmog.git" "master" "abc123"
# Should be detected as installed using simple name
run inst_mod_is_installed "mod-transmog"
[ "$status" -eq 0 ]
# Should be detected as installed using owner/name
run inst_mod_is_installed "azerothcore/mod-transmog"
[ "$status" -eq 0 ]
# Should be detected as installed using SSH URL
run inst_mod_is_installed "git@github.com:azerothcore/mod-transmog.git"
[ "$status" -eq 0 ]
# Non-existent module should not be detected
run inst_mod_is_installed "mod-nonexistent"
[ "$status" -ne 0 ]
}
@test "module installed via URL with port should be recognized correctly" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Install via URL with port
inst_mod_list_upsert "https://gitlab.internal:9443/myorg/my-module.git" "master" "abc123"
# Should be detected as installed using normalized owner/name
run inst_mod_is_installed "myorg/my-module"
[ "$status" -eq 0 ]
# Should be detected when checking with different URL format
run inst_mod_is_installed "ssh://git@gitlab.internal:9443/myorg/my-module"
[ "$status" -eq 0 ]
# Should be detected when checking with custom directory syntax
run inst_mod_is_installed "myorg/my-module:custom-dir"
[ "$status" -eq 0 ]
# Different module should not be detected
run inst_mod_is_installed "myorg/different-module"
[ "$status" -ne 0 ]
}
@test "cross-format module removal should work" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Install via SSH URL
inst_mod_list_upsert "git@github.com:azerothcore/mod-transmog.git" "master" "abc123"
# Verify it's installed
grep -q "git@github.com:azerothcore/mod-transmog.git" "$TEST_DIR/conf/modules.list"
# Remove using simple name
inst_mod_list_remove "mod-transmog"
# Should be completely removed
! grep -q "azerothcore/mod-transmog" "$TEST_DIR/conf/modules.list"
! grep -q "git@github.com:azerothcore/mod-transmog.git" "$TEST_DIR/conf/modules.list"
}
@test "module installation should prevent duplicates when already installed" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Install via simple name first
inst_mod_list_upsert "mod-worldchat" "master" "abc123"
# Try to install same module via URL - should detect it's already installed
run inst_mod_is_installed "https://github.com/azerothcore/mod-worldchat.git"
[ "$status" -eq 0 ]
# Add via URL should replace the existing entry
inst_mod_list_upsert "https://github.com/azerothcore/mod-worldchat.git" "dev" "def456"
# Should only have one entry
[ "$(grep -c "azerothcore/mod-worldchat" "$TEST_DIR/conf/modules.list")" -eq 1 ]
grep -q "https://github.com/azerothcore/mod-worldchat.git dev def456" "$TEST_DIR/conf/modules.list"
}
@test "module update --all uses flat structure (no branch subfolders)" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Prepare modules.list with one entry and a matching local directory
mkdir -p "$TEST_DIR/conf"
echo "azerothcore/mod-transmog master abc123" > "$TEST_DIR/conf/modules.list"
mkdir -p "$TEST_DIR/modules/mod-transmog"
# Run update all
run bash -c "source '$TEST_DIR/apps/installer/includes/includes.sh' && inst_module_update --all"
# Verify Joiner:upd_repo received flat structure args (no basedir)
[ -f "$TEST_DIR/joiner_called.txt" ]
grep -q "UPD https://github.com/azerothcore/mod-transmog mod-transmog master" "$TEST_DIR/joiner_called.txt"
}
@test "module update specific uses flat structure with override branch" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Create local directory so update proceeds
mkdir -p "$TEST_DIR/modules/mymodule"
# Run update specifying owner/name and branch
run bash -c "source '$TEST_DIR/apps/installer/includes/includes.sh' && inst_module_update myorg/mymodule@dev"
# Should call joiner with name 'mymodule' and branch 'dev' (no basedir)
[ -f "$TEST_DIR/joiner_called.txt" ]
grep -q "UPD https://github.com/myorg/mymodule mymodule dev" "$TEST_DIR/joiner_called.txt"
}
@test "custom directory names should work with new syntax" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Test parsing with custom directory name
run inst_parse_module_spec "mod-transmog:my-custom-dir@develop:abc123"
[ "$status" -eq 0 ]
# Should output: repo_ref owner name branch commit url dirname
IFS=' ' read -r repo_ref owner name branch commit url dirname <<< "$output"
[ "$repo_ref" = "azerothcore/mod-transmog" ]
[ "$owner" = "azerothcore" ]
[ "$name" = "mod-transmog" ]
[ "$branch" = "develop" ]
[ "$commit" = "abc123" ]
[ "$url" = "https://github.com/azerothcore/mod-transmog" ]
[ "$dirname" = "my-custom-dir" ]
}
@test "directory conflict detection should work" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Create a fake existing directory
mkdir -p "$TEST_DIR/modules/existing-dir"
# Should detect conflict
run inst_check_module_conflict "existing-dir" "mod-test"
[ "$status" -eq 1 ]
[[ "$output" =~ "Directory 'existing-dir' already exists" ]]
[[ "$output" =~ "Use a different directory name: mod-test:my-custom-name" ]]
# Should not detect conflict for non-existing directory
run inst_check_module_conflict "non-existing-dir" "mod-test"
[ "$status" -eq 0 ]
}
@test "module update should work with custom directories" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# First add module with custom directory to list
inst_mod_list_upsert "azerothcore/mod-transmog:custom-dir" "master" "abc123"
# Create fake module directory structure
mkdir -p "$TEST_DIR/modules/custom-dir/.git"
echo "ref: refs/heads/master" > "$TEST_DIR/modules/custom-dir/.git/HEAD"
# Mock git commands in the fake module directory
cat > "$TEST_DIR/modules/custom-dir/.git/config" << 'EOF'
[core]
repositoryformatversion = 0
filemode = true
bare = false
[remote "origin"]
url = https://github.com/azerothcore/mod-transmog
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
EOF
# Test update with custom directory should work
# Note: This would require more complex mocking for full integration test
# For now, just test the parsing recognizes the custom directory
run inst_parse_module_spec "azerothcore/mod-transmog:custom-dir"
[ "$status" -eq 0 ]
IFS=' ' read -r repo_ref owner name branch commit url dirname <<< "$output"
[ "$dirname" = "custom-dir" ]
}
@test "URL formats should be properly normalized" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Test various URL formats produce same owner/name
run inst_extract_owner_name "https://github.com/azerothcore/mod-transmog"
local url_format="$output"
run inst_extract_owner_name "https://github.com/azerothcore/mod-transmog.git"
local url_git_format="$output"
run inst_extract_owner_name "git@github.com:azerothcore/mod-transmog.git"
local ssh_format="$output"
run inst_extract_owner_name "azerothcore/mod-transmog"
local owner_name_format="$output"
run inst_extract_owner_name "mod-transmog"
local simple_format="$output"
# All should normalize to the same owner/name
[ "$url_format" = "azerothcore/mod-transmog" ]
[ "$url_git_format" = "azerothcore/mod-transmog" ]
[ "$ssh_format" = "azerothcore/mod-transmog" ]
[ "$owner_name_format" = "azerothcore/mod-transmog" ]
[ "$simple_format" = "azerothcore/mod-transmog" ]
}
# Tests for module exclusion functionality
@test "module exclusion should work with MODULES_EXCLUDE_LIST" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Test exclusion with simple name
export MODULES_EXCLUDE_LIST="mod-test-module"
run inst_mod_is_excluded "mod-test-module"
[ "$status" -eq 0 ]
# Test exclusion with owner/name format
export MODULES_EXCLUDE_LIST="azerothcore/mod-test"
run inst_mod_is_excluded "mod-test"
[ "$status" -eq 0 ]
# Test exclusion with space-separated list
export MODULES_EXCLUDE_LIST="mod-one mod-two mod-three"
run inst_mod_is_excluded "mod-two"
[ "$status" -eq 0 ]
# Test exclusion with newline-separated list
export MODULES_EXCLUDE_LIST="
mod-alpha
mod-beta
mod-gamma
"
run inst_mod_is_excluded "mod-beta"
[ "$status" -eq 0 ]
# Test exclusion with URL format
export MODULES_EXCLUDE_LIST="https://github.com/azerothcore/mod-transmog.git"
run inst_mod_is_excluded "mod-transmog"
[ "$status" -eq 0 ]
# Test non-excluded module
export MODULES_EXCLUDE_LIST="mod-other"
run inst_mod_is_excluded "mod-transmog"
[ "$status" -eq 1 ]
# Test empty exclusion list
unset MODULES_EXCLUDE_LIST
run inst_mod_is_excluded "mod-transmog"
[ "$status" -eq 1 ]
}
@test "install --all should skip excluded modules" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Setup modules list with excluded module
mkdir -p "$TEST_DIR/conf"
cat > "$TEST_DIR/conf/modules.list" << 'EOF'
azerothcore/mod-transmog master abc123
azerothcore/mod-excluded master def456
EOF
# Set exclusion list
export MODULES_EXCLUDE_LIST="mod-excluded"
# Mock the install process to capture output
run bash -c "source '$TEST_DIR/apps/installer/includes/includes.sh' && inst_module_install --all 2>&1"
# Should show that excluded module was skipped
[[ "$output" == *"azerothcore/mod-excluded"* && "$output" == *"Excluded by MODULES_EXCLUDE_LIST"* && "$output" == *"skipping"* ]]
}
@test "exclusion should work with multiple formats in same list" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Test multiple exclusion formats
export MODULES_EXCLUDE_LIST="mod-test https://github.com/azerothcore/mod-transmog.git custom/mod-other"
run inst_mod_is_excluded "mod-test"
[ "$status" -eq 0 ]
run inst_mod_is_excluded "azerothcore/mod-transmog"
[ "$status" -eq 0 ]
run inst_mod_is_excluded "custom/mod-other"
[ "$status" -eq 0 ]
run inst_mod_is_excluded "mod-allowed"
[ "$status" -eq 1 ]
}
# Tests for color support functionality
@test "color functions should work correctly" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Test that print functions exist and work
run print_info "test message"
[ "$status" -eq 0 ]
run print_warn "test warning"
[ "$status" -eq 0 ]
run print_error "test error"
[ "$status" -eq 0 ]
run print_success "test success"
[ "$status" -eq 0 ]
run print_skip "test skip"
[ "$status" -eq 0 ]
run print_header "test header"
[ "$status" -eq 0 ]
}
@test "color support should respect NO_COLOR environment variable" {
cd "$TEST_DIR"
# Test with NO_COLOR set
export NO_COLOR=1
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Colors should be empty when NO_COLOR is set
[ -z "$C_RED" ]
[ -z "$C_GREEN" ]
[ -z "$C_RESET" ]
}
# Tests for interactive menu system
@test "module help should display comprehensive help" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
run inst_module_help
[ "$status" -eq 0 ]
# Should contain key sections
[[ "$output" =~ "Module Manager Help" ]]
[[ "$output" =~ "Usage:" ]]
[[ "$output" =~ "Module Specification Syntax:" ]]
[[ "$output" =~ "Examples:" ]]
}
@test "module list should show installed modules correctly" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Setup modules list
mkdir -p "$TEST_DIR/conf"
cat > "$TEST_DIR/conf/modules.list" << 'EOF'
azerothcore/mod-transmog master abc123
custom/mod-test develop def456
EOF
run inst_module_list
[ "$status" -eq 0 ]
# Should show both modules
[[ "$output" =~ "mod-transmog" ]]
[[ "$output" =~ "custom/mod-test" ]]
[[ "$output" =~ "master" ]]
[[ "$output" =~ "develop" ]]
}
@test "module list should handle empty list gracefully" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Ensure empty modules list
mkdir -p "$TEST_DIR/conf"
touch "$TEST_DIR/conf/modules.list"
run inst_module_list
[ "$status" -eq 0 ]
[[ "$output" =~ "No modules installed" ]]
}
# Tests for advanced parsing edge cases
@test "parsing should handle complex URL formats" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Test GitLab URL with custom directory and branch
run inst_parse_module_spec "https://gitlab.com/myorg/mymodule.git:custom-dir@develop:abc123"
[ "$status" -eq 0 ]
IFS=' ' read -r repo_ref owner name branch commit url dirname <<< "$output"
[ "$repo_ref" = "https://gitlab.com/myorg/mymodule.git" ]
[ "$owner" = "myorg" ]
[ "$name" = "mymodule" ]
[ "$branch" = "develop" ]
[ "$commit" = "abc123" ]
[ "$dirname" = "custom-dir" ]
}
@test "parsing should handle URLs with ports correctly (fix for port/dirname confusion)" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Test HTTPS URL with port - should NOT treat port as dirname
run inst_parse_module_spec "https://example.com:8080/user/repo.git"
[ "$status" -eq 0 ]
IFS=' ' read -r repo_ref owner name branch commit url dirname <<< "$output"
[ "$repo_ref" = "https://example.com:8080/user/repo.git" ]
[ "$owner" = "user" ]
[ "$name" = "repo" ]
[ "$branch" = "-" ]
[ "$commit" = "-" ]
[ "$url" = "https://example.com:8080/user/repo.git" ]
[ "$dirname" = "repo" ] # Should default to repo name, NOT port number
}
@test "parsing should handle URLs with ports and custom directory correctly" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Test URL with port AND custom directory - should parse custom directory correctly
run inst_parse_module_spec "https://example.com:8080/user/repo.git:custom-dir"
[ "$status" -eq 0 ]
IFS=' ' read -r repo_ref owner name branch commit url dirname <<< "$output"
[ "$repo_ref" = "https://example.com:8080/user/repo.git" ]
[ "$owner" = "user" ]
[ "$name" = "repo" ]
[ "$branch" = "-" ]
[ "$commit" = "-" ]
[ "$url" = "https://example.com:8080/user/repo.git" ]
[ "$dirname" = "custom-dir" ] # Should be custom-dir, not port number
}
@test "parsing should handle SSH URLs with ports correctly" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Test SSH URL with port
run inst_parse_module_spec "ssh://git@example.com:2222/user/repo"
[ "$status" -eq 0 ]
IFS=' ' read -r repo_ref owner name branch commit url dirname <<< "$output"
[ "$repo_ref" = "ssh://git@example.com:2222/user/repo" ]
[ "$owner" = "user" ]
[ "$name" = "repo" ]
[ "$dirname" = "repo" ] # Should be repo name, not port number
}
@test "parsing should handle SSH URLs with ports and custom directory" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Test SSH URL with port and custom directory
run inst_parse_module_spec "ssh://git@example.com:2222/user/repo:my-custom-dir@develop"
[ "$status" -eq 0 ]
IFS=' ' read -r repo_ref owner name branch commit url dirname <<< "$output"
[ "$repo_ref" = "ssh://git@example.com:2222/user/repo" ]
[ "$owner" = "user" ]
[ "$name" = "repo" ]
[ "$branch" = "develop" ]
[ "$dirname" = "my-custom-dir" ]
}
@test "parsing should handle complex URLs with ports, custom dirs, and branches" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Test comprehensive URL with port, custom directory, branch, and commit
run inst_parse_module_spec "https://gitlab.example.com:9443/myorg/myrepo.git:custom-name@feature-branch:abc123def"
[ "$status" -eq 0 ]
IFS=' ' read -r repo_ref owner name branch commit url dirname <<< "$output"
[ "$repo_ref" = "https://gitlab.example.com:9443/myorg/myrepo.git" ]
[ "$owner" = "myorg" ]
[ "$name" = "myrepo" ]
[ "$branch" = "feature-branch" ]
[ "$commit" = "abc123def" ]
[ "$url" = "https://gitlab.example.com:9443/myorg/myrepo.git" ]
[ "$dirname" = "custom-name" ]
}
@test "URL port parsing regression test - ensure ports are not confused with directory names" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# These are the problematic cases that the fix addresses
local test_cases=(
"https://example.com:8080/repo.git"
"https://gitlab.internal:9443/group/project.git"
"ssh://git@server.com:2222/owner/repo"
"https://git.company.com:8443/team/module.git"
)
for spec in "${test_cases[@]}"; do
run inst_parse_module_spec "$spec"
[ "$status" -eq 0 ]
IFS=' ' read -r repo_ref owner name branch commit url dirname <<< "$output"
# Critical: dirname should NEVER be a port number
[[ ! "$dirname" =~ ^[0-9]+$ ]] || {
echo "FAIL: Port number '$dirname' incorrectly parsed as directory name for spec: $spec"
return 1
}
# dirname should be the repository name by default
local expected_name
if [[ "$spec" =~ /([^/]+)(\.git)?$ ]]; then
expected_name="${BASH_REMATCH[1]}"
expected_name="${expected_name%.git}"
fi
[ "$dirname" = "$expected_name" ] || {
echo "FAIL: Expected dirname '$expected_name' but got '$dirname' for spec: $spec"
return 1
}
done
}
@test "parsing should handle URL with custom directory but no branch" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
run inst_parse_module_spec "https://github.com/owner/repo.git:my-dir"
[ "$status" -eq 0 ]
IFS=' ' read -r repo_ref owner name branch commit url dirname <<< "$output"
[ "$repo_ref" = "https://github.com/owner/repo.git" ]
[ "$dirname" = "my-dir" ]
[ "$branch" = "-" ]
}
@test "modules list should maintain alphabetical order" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
# Add modules in random order
inst_mod_list_upsert "zeta/mod-z" "master" "abc"
inst_mod_list_upsert "alpha/mod-a" "master" "def"
inst_mod_list_upsert "beta/mod-b" "master" "ghi"
# Read the list and verify alphabetical order
local entries=()
while read -r repo_ref branch commit; do
[[ -z "$repo_ref" ]] && continue
entries+=("$repo_ref")
done < <(inst_mod_list_read)
# Should be in alphabetical order by owner/name
[ "${entries[0]}" = "alpha/mod-a" ]
[ "${entries[1]}" = "beta/mod-b" ]
[ "${entries[2]}" = "zeta/mod-z" ]
}
@test "module dispatcher should handle unknown commands gracefully" {
cd "$TEST_DIR"
source "$TEST_DIR/apps/installer/includes/includes.sh"
run inst_module "unknown-command"
[ "$status" -eq 1 ]
[[ "$output" =~ "Invalid option" ]]
}
+685
View File
@@ -0,0 +1,685 @@
# AzerothCore Startup Scripts
A comprehensive suite of scripts for managing AzerothCore server instances with advanced session management, automatic restart capabilities, and production-ready service management.
## 📋 Table of Contents
- [Overview](#overview)
- [Components](#components)
- [Quick Start](#quick-start)
- [Configuration](#configuration)
- [Detailed Usage](#detailed-usage)
- [Multiple Realms Setup](#multiple-realms-setup)
- [Service Management](#service-management)
- [Troubleshooting](#troubleshooting)
## 🎯 Overview
The AzerothCore startup scripts provide multiple approaches to running server instances:
1. **Development/Testing**: Simple execution for debugging and development
2. **Production with Restarts**: Automatic restart on crashes with crash detection
3. **Background Services**: Production-ready service management with PM2 or systemd
4. **Session Management**: Interactive console access via tmux/screen
All scripts are integrated into the `acore.sh` dashboard for easy access.
### 📦 Automatic Deployment
**Important**: When you compile AzerothCore using the acore dashboard (`./acore.sh compiler build`), all startup scripts are automatically copied from `apps/startup-scripts/src/` to your `bin/` folder. This means:
-**Portable Deployment**: You can copy the entire `bin/` folder to different servers
-**Self-Contained**: All restart and service management tools travel with your binaries
-**No Additional Setup**: Scripts work immediately after deployment
-**Production Ready**: Deploy to production servers without needing the full source code
This makes it easy to deploy your compiled binaries along with the management scripts to production environments where you may not have the full AzerothCore source code.
## 🔧 Components
### Core Scripts
- **`run-engine`**: Advanced script with session management and configuration priority
- **`simple-restarter`**: Wrapper around starter with restart functionality (legacy compatibility)
- **`starter`**: Basic binary execution with optional GDB support
- **`service-manager.sh`**: Production service management with PM2/systemd
### Configuration
- **`conf.sh.dist`**: Default configuration template
- **`conf.sh`**: User configuration (create from .dist)
- **`gdb.conf`**: GDB debugging configuration
### Examples
- **`restarter-auth.sh`**: Auth server restart example
- **`restarter-world.sh`**: World server restart example
- **`starter-auth.sh`**: Auth server basic start example
- **`starter-world.sh`**: World server basic start example
## 🚀 Quick Start
### 1. Basic Server Start (Development)
```bash
# Start authserver directly
./starter /path/to/bin authserver
# Start worldserver with config
./starter /path/to/bin worldserver "" /path/to/worldserver.conf
```
### 2. Start with Auto-Restart
```bash
# Using simple-restarter (legacy)
./simple-restarter /path/to/bin authserver
# Using run-engine (recommended)
./run-engine restart authserver --bin-path /path/to/bin
```
### 3. Production Service Management
```bash
# Create and start a service
./service-manager.sh create auth authserver --bin-path /path/to/bin
# List all services
./service-manager.sh list
# Stop a service
./service-manager.sh stop auth
```
### 4. Using acore.sh Dashboard
```bash
# Interactive dashboard
./acore.sh
# Direct commands
./acore.sh run-authserver # Start authserver with restart
./acore.sh run-worldserver # Start worldserver with restart
./acore.sh service-manager # Access service manager
```
## ⚙️ Configuration
### Configuration Priority (Highest to Lowest)
1. **`conf.sh`** - User configuration file
2. **Command line arguments** - Runtime parameters
3. **Environment variables** - `RUN_ENGINE_*` variables
4. **`conf.sh.dist`** - Default configuration
### Creating Configuration
```bash
# Copy default configuration
cp scripts/conf.sh.dist scripts/conf.sh
# Edit your configuration
nano scripts/conf.sh
```
### Key Configuration Options
```bash
# Binary settings
export BINPATH="/path/to/azerothcore/bin"
export SERVERBIN="worldserver" # or "authserver"
export CONFIG="/path/to/worldserver.conf"
# Session management
export SESSION_MANAGER="tmux" # none|auto|tmux|screen
export SESSION_NAME="ac-world"
# Interactive mode control
export AC_DISABLE_INTERACTIVE="0" # Set to 1 to disable interactive prompts (useful for non-interactive services)
# Debugging
export GDB_ENABLED="1" # 0 or 1
export GDB="/path/to/gdb.conf"
# Logging
export LOGS_PATH="/path/to/logs"
export CRASHES_PATH="/path/to/crashes"
export LOG_PREFIX_NAME="realm1"
```
## 📖 Detailed Usage
### 1. Run Engine
The `run-engine` is the most advanced script with multiple operation modes:
#### Basic Execution
```bash
# Start server once
./run-engine start worldserver --bin-path /path/to/bin
# Start with configuration file
./run-engine start worldserver --config ./conf-world.sh
# Start with specific server config
./run-engine start worldserver --server-config /path/to/worldserver.conf
```
#### Restart Mode
```bash
# Automatic restart on crash
./run-engine restart worldserver --bin-path /path/to/bin
# Restart with session management
./run-engine restart worldserver --session-manager tmux
```
#### Session Management
```bash
# Start in tmux session
./run-engine start worldserver --session-manager tmux
# Attach to existing session
tmux attach-session -t worldserver
# Start in screen session
./run-engine start worldserver --session-manager screen
# Attach to screen session
screen -r worldserver
```
#### Configuration Options
```bash
./run-engine restart worldserver \
--bin-path /path/to/bin \
--server-config /path/to/worldserver.conf \
--session-manager tmux \
--gdb-enabled 1 \
--logs-path /path/to/logs \
--crashes-path /path/to/crashes
```
### 2. Simple Restarter
Legacy-compatible wrapper with restart functionality:
```bash
# Basic restart
./simple-restarter /path/to/bin worldserver
# With full parameters
./simple-restarter \
/path/to/bin \
worldserver \
./gdb.conf \
/path/to/worldserver.conf \
/path/to/system.log \
/path/to/system.err \
1 \
/path/to/crashes
```
**Parameters:**
1. Binary path (required)
2. Binary name (required)
3. GDB configuration file (optional)
4. Server configuration file (optional)
5. System log file (optional)
6. System error file (optional)
7. GDB enabled flag (0/1, optional)
8. Crashes directory path (optional)
### 3. Starter
Basic execution script without restart functionality:
```bash
# Simple start
./starter /path/to/bin worldserver
# With GDB debugging
./starter /path/to/bin worldserver ./gdb.conf /path/to/worldserver.conf "" "" 1
```
### 4. Service Manager
Production-ready service management:
#### Creating Services
```bash
# Auto-detect provider (PM2 or systemd)
./service-manager.sh create auth authserver --bin-path /path/to/bin
# Force PM2
./service-manager.sh create world worldserver --provider pm2 --bin-path /path/to/bin
# Force systemd
./service-manager.sh create world worldserver --provider systemd --bin-path /path/to/bin
# Create service with restart policy
./service-manager.sh create world worldserver --bin-path /path/to/bin --restart-policy always
```
#### Restart Policies
Services support two restart policies:
- **`on-failure`** (default): Restart only on crashes or errors (exit code != 0, only works with PM2 or systemd without tmux/screen)
- **`always`**: Restart on any exit, including clean shutdown (exit code 0)
**Important**: When using `--restart-policy always`, the in-game command `server shutdown X` will behave like `server restart X` - the service will automatically restart after shutdown. Only the shutdown message differs from a restart message.
```bash
# Service that restarts only on crashes (default behavior)
./service-manager.sh create auth authserver --bin-path /path/to/bin --restart-policy on-failure
# Service that always restarts (even on manual shutdown)
./service-manager.sh create world worldserver --bin-path /path/to/bin --restart-policy always
# Update existing service restart policy
./service-manager.sh update worldserver --restart-policy always
```
#### Service Operations
```bash
# Start/stop services
./service-manager.sh start auth
./service-manager.sh stop world
./service-manager.sh restart auth
# View logs
./service-manager.sh logs world
./service-manager.sh logs world --follow
# Attach to console (interactive)
./service-manager.sh attach world
# List services
./service-manager.sh list
./service-manager.sh list pm2
./service-manager.sh list systemd
# Delete service
./service-manager.sh delete auth
```
#### Health and Console Commands
Use these commands to programmatically check service health and interact with the console (used by CI workflows):
```bash
# Check if service is currently running (exit 0 if running)
./service-manager.sh is-running world
# Print current uptime in seconds (fails if not running)
./service-manager.sh uptime-seconds world
# Wait until uptime >= 10s (optional timeout 240s)
./service-manager.sh wait-uptime world 10 240
# Send a console command (uses pm2 send or tmux/screen)
./service-manager.sh send world "server info"
# Show provider, configs and run-engine settings
./service-manager.sh show-config world
```
Notes:
- For `send`, PM2 provider uses `pm2 send` with the process ID; systemd provider requires a session manager (tmux/screen). If no attachable session is configured, the command fails.
- `wait-uptime` fails with a non-zero exit code if the service does not reach the requested uptime within the timeout window.
#### Service Configuration
```bash
# Update service settings
./service-manager.sh update world --session-manager screen --gdb-enabled 1
# Edit configuration
./service-manager.sh edit world
# Restore missing services from registry
./service-manager.sh restore
```
## 🌍 Multiple Realms Setup
### Method 1: Using Service Manager (Recommended)
```bash
# Create multiple world server instances with different restart policies
./service-manager.sh create world1 worldserver \
--bin-path /path/to/bin \
--server-config /path/to/worldserver-realm1.conf \
--restart-policy on-failure
./service-manager.sh create world2 worldserver \
--bin-path /path/to/bin \
--server-config /path/to/worldserver-realm2.conf \
--restart-policy always
# Single auth server for all realms (always restart for stability)
./service-manager.sh create auth authserver \
--bin-path /path/to/bin \
--server-config /path/to/authserver.conf \
--restart-policy always
```
### Method 2: Using Run Engine with Different Configurations
Create separate configuration files for each realm:
**conf-realm1.sh:**
```bash
export BINPATH="/path/to/bin"
export SERVERBIN="worldserver"
export CONFIG="/path/to/worldserver-realm1.conf"
export SESSION_NAME="ac-realm1"
export LOG_PREFIX_NAME="realm1"
export LOGS_PATH="/path/to/logs/realm1"
```
**conf-realm2.sh:**
```bash
export BINPATH="/path/to/bin"
export SERVERBIN="worldserver"
export CONFIG="/path/to/worldserver-realm2.conf"
export SESSION_NAME="ac-realm2"
export LOG_PREFIX_NAME="realm2"
export LOGS_PATH="/path/to/logs/realm2"
```
Start each realm:
```bash
./run-engine restart worldserver --config ./conf-realm1.sh
./run-engine restart worldserver --config ./conf-realm2.sh
```
### Method 3: Using Examples with Custom Configurations
Copy and modify the example scripts:
```bash
# Copy examples
cp examples/restarter-world.sh restarter-realm1.sh
cp examples/restarter-world.sh restarter-realm2.sh
# Edit each script to point to different configuration files
# Then run:
./restarter-realm1.sh
./restarter-realm2.sh
```
## 🛠️ Service Management
### Service Registry and Persistence
The service manager includes a comprehensive registry system that tracks all created services and enables automatic restoration:
#### Service Registry Features
- **Automatic Tracking**: All services are automatically registered when created
- **Cross-Reboot Persistence**: PM2 services are configured with startup persistence
- **Service Restoration**: Missing services can be detected and restored from registry
- **Migration Support**: Legacy service configurations can be migrated to the new format
#### Using the Registry
```bash
# Check for missing services and restore them
./service-manager.sh restore
# List all registered services (includes status)
./service-manager.sh list
# Services are automatically added to registry on creation
./service-manager.sh create auth authserver --bin-path /path/to/bin
```
#### Custom Configuration Directories
You can customize where service configurations and PM2/systemd files are stored:
```bash
# Set custom directories
export AC_SERVICE_CONFIG_DIR="/path/to/your/project/services"
# Now all service operations will use these custom directories
./service-manager.sh create auth authserver --bin-path /path/to/bin
```
This is particularly useful for:
- **Version Control**: Keep service configurations in your project repository
- **Multiple Projects**: Separate service configurations per project
- **Team Collaboration**: Share service setups across development teams
#### Service Configuration Portability
The service manager automatically stores binary and configuration paths as relative paths when they are located under the `AC_SERVICE_CONFIG_DIR`, making service configurations portable across environments:
```bash
# Set up a portable project structure
export AC_SERVICE_CONFIG_DIR="/opt/myproject/services"
mkdir -p "$AC_SERVICE_CONFIG_DIR"/{bin,etc}
# Copy your binaries and configs
cp /path/to/compiled/authserver "$AC_SERVICE_CONFIG_DIR/bin/"
cp /path/to/authserver.conf "$AC_SERVICE_CONFIG_DIR/etc/"
# Create service - paths under AC_SERVICE_CONFIG_DIR will be stored as relative
./service-manager.sh create auth authserver \
--bin-path "$AC_SERVICE_CONFIG_DIR/bin" \
--server-config "$AC_SERVICE_CONFIG_DIR/etc/authserver.conf"
# Registry will contain relative paths like "bin/authserver" and "etc/authserver.conf"
# instead of absolute paths, making the entire directory portable
```
**Benefits:**
- **Environment Independence**: Move the entire services directory between machines
- **Container Friendly**: Perfect for Docker volumes and bind mounts
- **Backup/Restore**: Archive and restore complete service configurations
- **Development/Production Parity**: Same relative structure across environments
**How it works:**
- Paths under `AC_SERVICE_CONFIG_DIR` are automatically stored as relative paths
- Paths outside `AC_SERVICE_CONFIG_DIR` are stored as absolute paths for safety
- When services are restored or started, relative paths are resolved from `AC_SERVICE_CONFIG_DIR`
- If `AC_SERVICE_CONFIG_DIR` is not set, all paths are stored as absolute paths (traditional behavior)
#### Migration from Legacy Format
If you have existing services in the old format, use the migration script:
```bash
# Migrate existing registry to new format
./migrate-registry.sh
# The script will:
# - Detect old format automatically
# - Create a backup of the old registry
# - Convert to new format with proper tracking
# - Preserve all existing service information
```
### PM2 Services
When using PM2 as the service provider:
* [PM2 CLI Documentation](https://pm2.io/docs/runtime/reference/pm2-cli/)
**Automatic PM2 Persistence**: The service manager automatically configures PM2 for persistence across reboots by:
- Running `pm2 startup` to set up the startup script
- Running `pm2 save` after each service creation/modification
- This ensures your services automatically start when the system reboots
NOTE: pm2 cannot run tmux/screen sessions, but you can always use the `attach` command to connect to the service console because pm2 supports interactive mode.
### Environment Variables
The startup scripts recognize several environment variables for configuration and runtime behavior:
#### Configuration Directory Variables
- **`AC_SERVICE_CONFIG_DIR`**: Override the default configuration directory for services registry and configurations
- Default: `${XDG_CONFIG_HOME:-$HOME/.config}/azerothcore/services`
- Used for storing service registry and run-engine configurations
#### Service Detection Variables
- **`AC_LAUNCHED_BY_PM2`**: Set to `1` when launched by PM2 (automatically set by service-manager)
- Disables the use of the `unbuffer` command for output capture
- Enables non-interactive mode to prevent prompts
- More robust than relying on PM2's internal variables
- **`AC_DISABLE_INTERACTIVE`**: Controls interactive mode (0=enabled, 1=disabled)
- Automatically set based on execution context
- Prevents AzerothCore from showing interactive prompts in service environments
#### Configuration Variables
- **`RUN_ENGINE_*`**: See [Configuration](#configuration) section for complete list
- **`SERVICE_MODE`**: Set to `true` to enable service-specific behavior
- **`SESSION_MANAGER`**: Override session manager choice (tmux, screen, none, auto)
### Systemd Services
When using systemd as the service provider:
```bash
# Systemd commands
systemctl --user status acore-auth # Check status
systemctl --user logs acore-auth # View logs
systemctl --user restart acore-auth # Restart
systemctl --user enable acore-auth # Enable auto-start
# For system services (requires sudo)
sudo systemctl status acore-auth
sudo systemctl enable acore-auth
```
**Enhanced systemd Integration:**
- **Automatic Service Type**: When using session managers (tmux/screen), services are automatically configured with `Type=forking` for proper daemon behavior
- **Smart ExecStop**: Services with session managers get automatic `ExecStop` commands to properly terminate tmux/screen sessions when stopping the service
- **Non-Interactive Mode**: Services without session managers automatically set `AC_DISABLE_INTERACTIVE=1` to prevent hanging on prompts
### Session Management in Services
Services can be configured with session managers for interactive access:
```bash
# Create service with tmux
./service-manager.sh create world worldserver \
--bin-path /path/to/bin \
--session-manager tmux
# Attach to the session
./service-manager.sh attach world
# or directly:
tmux attach-session -t worldserver
```
## 🎮 Integration with acore.sh Dashboard
The startup scripts are fully integrated into the AzerothCore dashboard:
### Direct Commands
```bash
# Run servers with simple restart (development/testing)
./acore.sh run-worldserver # Option 11 or 'rw'
./acore.sh run-authserver # Option 12 or 'ra'
# Access service manager (production)
./acore.sh service-manager # Option 15 or 'sm'
# Examples:
./acore.sh rw # Quick worldserver start
./acore.sh ra # Quick authserver start
./acore.sh sm create auth authserver --bin-path /path/to/bin
```
### What Happens Behind the Scenes
- **run-worldserver/run-authserver**: Calls `simple-restarter` with appropriate binary
- **service-manager**: Provides full access to the service management interface
- Scripts automatically use the correct binary path from your build configuration
## 🐛 Troubleshooting
### Common Issues
#### 1. Binary Not Found
```bash
Error: Binary '/path/to/bin/worldserver' not found
```
**Solution**: Check binary path and ensure servers are compiled
```bash
# Check if binary exists
ls -la /path/to/bin/worldserver
# Compile if needed
./acore.sh compiler build
```
#### 2. Configuration File Issues
```bash
Error: Configuration file not found
```
**Solution**: Create configuration from template
```bash
cp scripts/conf.sh.dist scripts/conf.sh
# Edit conf.sh with correct paths
```
#### 3. Session Manager Not Available
```bash
Warning: tmux not found, falling back to direct execution
```
**Solution**: Install required session manager
```bash
# Ubuntu/Debian
sudo apt install tmux screen
# CentOS/RHEL
sudo yum install tmux screen
```
#### 4. Permission Issues (systemd)
```bash
Failed to create systemd service
```
**Solution**: Check user permissions or use --system flag
```bash
# For user services (no sudo required)
./service-manager.sh create auth authserver --bin-path /path/to/bin
# For system services (requires sudo)
./service-manager.sh create auth authserver --bin-path /path/to/bin --system
```
#### 5. PM2 Not Found
```bash
Error: PM2 is not installed
```
**Solution**: Install PM2
```bash
npm install -g pm2
# or
sudo npm install -g pm2
```
#### 7. Registry Out of Sync
```bash
# If the service registry shows services that don't actually exist
```
**Solution**: Use registry sync or restore
```bash
# Check and restore missing services (also cleans up orphaned entries)
./service-manager.sh restore
# If you have a very old registry format, migrate it
./migrate-registry.sh
```
-50
View File
@@ -1,50 +0,0 @@
# enable/disable GDB execution
export GDB_ENABLED=0
# [optional] gdb file
# default: gdb.conf
export GDB=""
# directory where binary are stored
export BINPATH=""
# Put here the pid you configured on your worldserver.conf file
# needed when GDB_ENABLED=1
export SERVERPID=""
# path to configuration file (including the file name)
# ex: /home/user/azerothcore/etc/worldserver.conf
export CONFIG=""
# path of log files
# needed by restarter to store its logs
export LOGS_PATH="";
# exec name
# ex: worldserver
export SERVERBIN=""
# prefix name for log files
# to avoid collision with other restarters
export LOG_PREFIX_NAME=""
# [optional] name of screen service
# if no specified, screen util won't be used
export SCREEN_NAME=""
# [optional] overwrite default screen options: -A -m -d -S
# WARNING: if you are running it under a systemd service
# please do not remove -m -d arguments from screen if are you using it,
# or keep WITH_CONSOLE=0 .
# otherwise the journald-logging system will take 100% of CPU slowing
# down the whole machine. It's because a systemd service should have
# low console output.
export SCREEN_OPTIONS=""
# enable/disable it to show the output
# within console, if disable the output will be redirect to
# logging files
#
export WITH_CONSOLE=0
@@ -1,14 +0,0 @@
#!/usr/bin/env bash
PATH_RUNENGINE="./"
source "$PATH_RUNENGINE/run-engine"
# you must create your conf
# copying conf.sh.dist
# and renaming as below
source "./conf-auth.sh"
restarter
@@ -1,14 +0,0 @@
#!/usr/bin/env bash
PATH_RUNENGINE="./"
source "$PATH_RUNENGINE/run-engine"
# you must create your conf
# copying conf.sh.dist
# and renaming as below
source "./conf-world.sh"
restarter
@@ -1,13 +0,0 @@
#!/usr/bin/env bash
PATH_RUNENGINE="./"
source "$PATH_RUNENGINE/run-engine"
# you must create your conf
# copying conf.sh.dist
# and renaming as below
source "./conf-auth.sh"
starter
@@ -1,14 +0,0 @@
#!/usr/bin/env bash
PATH_RUNENGINE="./"
source "$PATH_RUNENGINE/run-engine"
# you must create your conf
# copying conf.sh.dist
# and renaming as below
source "./conf-world.sh"
starter
-7
View File
@@ -1,7 +0,0 @@
set logging on
set debug timestamp
run
bt
bt full
info thread
thread apply all backtrace full
-115
View File
@@ -1,115 +0,0 @@
export RUN_ENGINE_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# load default conf
if [ -e "$RUN_ENGINE_PATH/conf.dist" ]; then
source "$RUN_ENGINE_PATH/conf.sh.dist"
fi
function finish {
if [ ! -z "$SCREEN_NAME" ]; then
screen -X -S "$SCREEN_NAME" quit
fi
}
# disabled for now, but could be useful if we want
# shutdown the process if restarter crashes for some reason
# trap finish EXIT
function configureFiles() {
TRACE_BEGIN_STRING="SIGSEGV"
TRACE_FILE="$LOGS_PATH/"$LOG_PREFIX_NAME"_trace.log"
ERR_FILE="$LOGS_PATH/"$LOG_PREFIX_NAME"_error.log"
SYSLOG="$LOGS_PATH/"$LOG_PREFIX_NAME"_system.log"
SYSERR="$LOGS_PATH/"$LOG_PREFIX_NAME"_system.err"
LINKS_FILE="$LOGS_PATH/"$LOG_PREFIX_NAME"_crash_links.link"
}
function checkStatus() {
local ret=1
# wipe do : destroy old screens + ls
#screen -wipe
#if screen -ls $1 | grep -q "No Sockets found"
#then
# return 0
#fi
local gdbres=$(pgrep -f "gdb -x $GDB --batch $SERVERBIN")
if [[ $GDB_ENABLED -eq 1 && ! -z $gdbres ]]; then
return 1
fi
#
# This is a specific check for Azeroth Core in case of screen failure
# It is possible since same binary file cannot be launched with same configuration file
# This is an extra check
#
local binres=$(pgrep -f "$SERVERBIN -c $CONFIG")
if [ ! -z $binres ]; then
return 1
fi
return 0
}
function run() {
echo $1
if [ ! -z $1 ]; then
local OPTIONS="-A -m -d -S"
if [ ! -z "$SCREEN_OPTIONS" ]; then
OPTIONS=$SCREEN_OPTIONS
fi
echo "> Starting with screen ( screen $OPTIONS )"
screen $OPTIONS $1 "$RUN_ENGINE_PATH/starter" $2 $3 "$4" "$5" "$6" $7 "$BINPATH/crashes"
else
$RUN_ENGINE_PATH/starter $2 $3 "$4" "$5" "$6" $7 "$BINPATH/crashes"
fi
}
function starter() {
cd $BINPATH
mkdir -p "$LOGS_PATH"
mkdir -p "$BINPATH"/crashes
configureFiles
run "$SCREEN_NAME" "$SERVERBIN" "$GDB" "$CONFIG" "$SYSLOG" "$SYSERR" "$GDB_ENABLED"
}
function restarter() {
cd $BINPATH
mkdir -p "$LOGS_PATH"
mkdir -p "$BINPATH"/crashes
configureFiles
if [ ! -f $TRACE_FILE ]; then
touch $TRACE_FILE
fi
while :
do
if checkStatus $SCREEN_NAME; then
DATE=$(date)
echo "Restarting $SCREEN_NAME Core blizz($DATE)"
if [ $GDB_ENABLED -eq 1 ]; then
echo "GDB enabled"
grep -B 10 -A 1800 "$TRACE_BEGIN_STRING" "$SYSLOG" >> "$TRACE_FILE"
cat "$SYSERR" > "$ERR_FILE"
run "$SCREEN_NAME" "$SERVERBIN" "$GDB" "$CONFIG" "$SYSLOG" "$SYSERR" 1
fi
if [ $GDB_ENABLED -eq 0 ]; then
echo "GDB disabled"
run "$SCREEN_NAME" "$SERVERBIN" null "$CONFIG" null null 0
fi
fi
sleep 10
done
}
-70
View File
@@ -1,70 +0,0 @@
#!/usr/bin/env bash
#PARAMETER 1: directory
#PARAMETER 2: binary file
#PARAMETER 3: gdb on/off
bin_path="${1:-$AC_RESTARTER_BINPATH}"
bin_file="${2:-$AC_RESTARTER_BINFILE}"
with_gdb="${3:-$AC_RESTARTER_WITHGDB}"
CURRENT_PATH=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd )
_instant_crash_count=0
_restart_count=0
if [ "$#" -ne 2 ]; then
echo "Usage: $0 path filename"
echo "Example: $0 $HOME/azerothcore/bin worldserver"
exit 1
fi
while true
do
if [ ! -f "$bin_path/$bin_file" ]; then
echo "$bin_path/$bin_file doesn't exists!"
exit 1
fi
STARTING_TIME=$(date +%s)
cd "$bin_path";
if [ "$with_gdb" = true ]; then
echo "Running with GDB enabled"
gdb -x "$CURRENT_PATH/gdb.conf" --batch "./$bin_file"
else
echo "Running without GDB"
"./$bin_file"
fi
_exit_code=$?
echo "exit code: $_exit_code"
# stop restarter on SIGKILL (disabled for now)
# 128 + 9 (SIGKILL)
#if [ $_exit_code -eq 137 ]; then
# echo "$bin_file has been killed"
# exit 0
#fi
echo "$bin_file terminated, restarting..."
ENDING_TIME=$(date +%s)
DIFFERENCE=$(( $ENDING_TIME - $STARTING_TIME ))
((_restart_count++))
echo "$bin_file Terminated after $DIFFERENCE seconds, termination count: : $_restart_count"
if [ $DIFFERENCE -lt 10 ]; then
# increment instant crash if runtime is lower than 10 seconds
((_instant_crash_count++))
else
_instant_crash_count=0 # reset count
fi
if [ $_instant_crash_count -gt 5 ]; then
echo "$bin_file Restarter exited. Infinite crash loop prevented. Please check your system"
exit 1
fi
done
+1
View File
@@ -0,0 +1 @@
logs
+57
View File
@@ -0,0 +1,57 @@
# AzerothCore Run Engine Default Configuration
# This file contains default values that can be overridden by environment variables
# Priority order: conf.sh > environment variables > conf.sh.dist (this file)
# Enable/disable GDB execution
export GDB_ENABLED="${RUN_ENGINE_GDB_ENABLED:-0}"
# [optional] GDB configuration file
# default: gdb.conf
export GDB="${RUN_ENGINE_GDB:-}"
# Directory where binaries are stored
export BINPATH="${RUN_ENGINE_BINPATH:-}"
# Server binary name (e.g., worldserver, authserver)
export SERVERBIN="${RUN_ENGINE_SERVERBIN:-}"
# Path to server configuration file (including the file name)
# ex: /home/user/azerothcore/etc/worldserver.conf
export CONFIG="${RUN_ENGINE_CONFIG:-}"
# Session manager to use: none|auto|tmux|screen
# auto will detect the best available option
export SESSION_MANAGER="${RUN_ENGINE_SESSION_MANAGER:-none}"
# Default session manager (fallback when SESSION_MANAGER is not set)
export DEFAULT_SESSION_MANAGER="${RUN_ENGINE_DEFAULT_SESSION_MANAGER:-none}"
# Path of the crashes directory
# If not specified, it will be created in the same directory as logs named "crashes"
export CRASHES_PATH="${RUN_ENGINE_CRASHES_PATH:-}"
# Path of log files directory
export LOGS_PATH="${RUN_ENGINE_LOGS_PATH:-}"
# Prefix name for log files to avoid collision with other instances
export LOG_PREFIX_NAME="${RUN_ENGINE_LOG_PREFIX_NAME:-}"
# [optional] Name of session (tmux session or screen session)
# If not specified, a default name will be generated based on server binary
export SESSION_NAME="${RUN_ENGINE_SESSION_NAME:-}"
# [optional] Screen-specific options: -A -m -d -S
# WARNING: if you are running it under a systemd service
# please do not remove -m -d arguments from screen if you are using it,
# or keep WITH_CONSOLE=0. Otherwise the journald-logging system will take
# 100% of CPU slowing down the whole machine.
export SCREEN_OPTIONS="${RUN_ENGINE_SCREEN_OPTIONS:-}"
# Enable/disable console output
# If disabled, output will be redirected to logging files
export WITH_CONSOLE="${RUN_ENGINE_WITH_CONSOLE:-0}"
# Restart policy (on-failure|always)
export RESTART_POLICY="always"
+48
View File
@@ -0,0 +1,48 @@
#!/usr/bin/env bash
# AzerothCore Auth Server Restarter Example
# This example shows how to use the run-engine with restart functionality for authserver
PATH_RUNENGINE="./"
CONFIG_FILE="./conf-auth.sh"
# Method 1: Using configuration file (recommended)
if [ -f "$CONFIG_FILE" ]; then
echo "Starting authserver with restart loop using config file: $CONFIG_FILE"
source "$CONFIG_FILE"
"$PATH_RUNENGINE/run-engine" restart "$SERVERBIN" --config "$CONFIG_FILE"
else
echo "Error: Configuration file not found: $CONFIG_FILE"
echo "Please create $CONFIG_FILE by copying and modifying conf.sh.dist"
echo "Make sure to set: export SERVERBIN=\"authserver\""
echo ""
echo "Alternative: Start with binary path directly"
echo "Example: $PATH_RUNENGINE/run-engine restart /path/to/bin/authserver"
echo "Example: $PATH_RUNENGINE/run-engine restart authserver # if in PATH"
exit 1
fi
# Method 2: Direct binary path (full path)
# Uncomment the line below to start with full binary path
#
# "$PATH_RUNENGINE/run-engine" restart /home/user/azerothcore/bin/authserver --server-config /path/to/authserver.conf
# Method 3: Binary name only (system PATH)
# Uncomment the line below if authserver is in your system PATH
#
# "$PATH_RUNENGINE/run-engine" restart authserver --server-config /path/to/authserver.conf
# Method 4: With session manager (tmux/screen)
# Uncomment the line below to use tmux session
#
# "$PATH_RUNENGINE/run-engine" restart authserver --session-manager tmux --server-config /path/to/authserver.conf
# Method 5: Environment variables only
# Uncomment the lines below for environment variable configuration
#
# export RUN_ENGINE_BINPATH="/path/to/your/bin"
# export RUN_ENGINE_SERVERBIN="authserver"
# export RUN_ENGINE_CONFIG="/path/to/authserver.conf"
# "$PATH_RUNENGINE/run-engine" restart authserver
+47
View File
@@ -0,0 +1,47 @@
#!/usr/bin/env bash
# AzerothCore World Server Restarter Example
# This example shows how to use the run-engine with restart functionality for worldserver
PATH_RUNENGINE="./"
CONFIG_FILE="./conf-world.sh"
# Method 1: Using configuration file (recommended)
if [ -f "$CONFIG_FILE" ]; then
echo "Starting worldserver with restart loop using config file: $CONFIG_FILE"
"$PATH_RUNENGINE/run-engine" restart "$SERVERBIN" --config "$CONFIG_FILE"
else
echo "Error: Configuration file not found: $CONFIG_FILE"
echo "Please create $CONFIG_FILE by copying and modifying conf.sh.dist"
echo "Make sure to set: export SERVERBIN=\"worldserver\""
echo ""
echo "Alternative: Start with binary path directly"
echo "Example: $PATH_RUNENGINE/run-engine restart /path/to/bin/worldserver"
echo "Example: $PATH_RUNENGINE/run-engine restart worldserver # if in PATH"
exit 1
fi
# Method 2: Direct binary path (full path)
# Uncomment the line below to start with full binary path
#
# "$PATH_RUNENGINE/run-engine" restart /home/user/azerothcore/bin/worldserver --server-config /path/to/worldserver.conf
# Method 3: Binary name only (system PATH)
# Uncomment the line below if worldserver is in your system PATH
#
# "$PATH_RUNENGINE/run-engine" restart worldserver --server-config /path/to/worldserver.conf
# Method 4: With session manager (tmux/screen)
# Uncomment the line below to use tmux session
#
# "$PATH_RUNENGINE/run-engine" restart worldserver --session-manager tmux --server-config /path/to/worldserver.conf
# Method 5: Environment variables only
# Uncomment the lines below for environment variable configuration
#
# export RUN_ENGINE_BINPATH="/path/to/your/bin"
# export RUN_ENGINE_SERVERBIN="worldserver"
# export RUN_ENGINE_CONFIG="/path/to/worldserver.conf"
# "$PATH_RUNENGINE/run-engine" restart worldserver
+46
View File
@@ -0,0 +1,46 @@
#!/usr/bin/env bash
# AzerothCore Auth Server Starter Example
# This example shows how to use the run-engine to start authserver without restart loop
PATH_RUNENGINE="./"
CONFIG_FILE="./conf-auth.sh"
# Method 1: Using configuration file (recommended)
if [ -f "$CONFIG_FILE" ]; then
echo "Starting authserver (single run) with config file: $CONFIG_FILE"
"$PATH_RUNENGINE/run-engine" start "$SERVERBIN" --config "$CONFIG_FILE"
else
echo "Error: Configuration file not found: $CONFIG_FILE"
echo "Please create $CONFIG_FILE by copying and modifying conf.sh.dist"
echo "Make sure to set: export SERVERBIN=\"authserver\""
echo ""
echo "Alternative: Start with binary path directly"
echo "Example: $PATH_RUNENGINE/run-engine start /path/to/bin/authserver"
echo "Example: $PATH_RUNENGINE/run-engine start authserver # if in PATH"
exit 1
fi
# Method 2: Direct binary path (full path)
# Uncomment the line below to start with full binary path
#
# "$PATH_RUNENGINE/run-engine" start /home/user/azerothcore/bin/authserver --server-config /path/to/authserver.conf
# Method 3: Binary name only (system PATH)
# Uncomment the line below if authserver is in your system PATH
#
# "$PATH_RUNENGINE/run-engine" start authserver --server-config /path/to/authserver.conf
# Method 4: With session manager (tmux/screen)
# Uncomment the line below to use tmux session
#
# "$PATH_RUNENGINE/run-engine" start authserver --session-manager tmux --server-config /path/to/authserver.conf
# Method 5: Environment variables only
# Uncomment the lines below for environment variable configuration
#
# export RUN_ENGINE_BINPATH="/path/to/your/bin"
# export RUN_ENGINE_SERVERBIN="authserver"
# export RUN_ENGINE_CONFIG="/path/to/authserver.conf"
# "$PATH_RUNENGINE/run-engine" start authserver
+47
View File
@@ -0,0 +1,47 @@
#!/usr/bin/env bash
# AzerothCore World Server Starter Example
# This example shows how to use the run-engine to start worldserver without restart loop
PATH_RUNENGINE="./"
CONFIG_FILE="./conf-world.sh"
# Method 1: Using configuration file (recommended)
if [ -f "$CONFIG_FILE" ]; then
echo "Starting worldserver (single run) with config file: $CONFIG_FILE"
"$PATH_RUNENGINE/run-engine" start "$SERVERBIN" --config "$CONFIG_FILE"
else
echo "Error: Configuration file not found: $CONFIG_FILE"
echo "Please create $CONFIG_FILE by copying and modifying conf.sh.dist"
echo "Make sure to set: export SERVERBIN=\"worldserver\""
echo ""
echo "Alternative: Start with binary path directly"
echo "Example: $PATH_RUNENGINE/run-engine start /path/to/bin/worldserver"
echo "Example: $PATH_RUNENGINE/run-engine start worldserver # if in PATH"
exit 1
fi
# Method 2: Direct binary path (full path)
# Uncomment the line below to start with full binary path
#
# "$PATH_RUNENGINE/run-engine" start /home/user/azerothcore/bin/worldserver --server-config /path/to/worldserver.conf
# Method 3: Binary name only (system PATH)
# Uncomment the line below if worldserver is in your system PATH
#
# "$PATH_RUNENGINE/run-engine" start worldserver --server-config /path/to/worldserver.conf
# Method 4: With session manager (tmux/screen)
# Uncomment the line below to use tmux session
#
# "$PATH_RUNENGINE/run-engine" start worldserver --session-manager tmux --server-config /path/to/worldserver.conf
# Method 5: Environment variables only
# Uncomment the lines below for environment variable configuration
#
# export RUN_ENGINE_BINPATH="/path/to/your/bin"
# export RUN_ENGINE_SERVERBIN="worldserver"
# export RUN_ENGINE_CONFIG="/path/to/worldserver.conf"
# "$PATH_RUNENGINE/run-engine" start worldserver
+144
View File
@@ -0,0 +1,144 @@
#!/usr/bin/env bash
# One-time migration script for service registry
# Converts old format to new format
set -euo pipefail # Strict error handling
CONFIG_DIR="${AC_SERVICE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/azerothcore/services}"
REGISTRY_FILE="$CONFIG_DIR/service_registry.json"
BACKUP_FILE="$CONFIG_DIR/service_registry.json.backup"
# Colors
readonly YELLOW='\033[1;33m'
readonly GREEN='\033[0;32m'
readonly RED='\033[0;31m'
readonly BLUE='\033[0;34m'
readonly NC='\033[0m'
echo -e "${BLUE}AzerothCore Service Registry Migration Tool${NC}"
echo "=============================================="
# Check dependencies
if ! command -v jq >/dev/null 2>&1; then
echo -e "${RED}Error: jq is required but not installed. Please install jq package.${NC}"
exit 1
fi
# Create config directory if it doesn't exist
mkdir -p "$CONFIG_DIR"
# Check if registry exists
if [ ! -f "$REGISTRY_FILE" ]; then
echo -e "${YELLOW}No registry file found. Nothing to migrate.${NC}"
exit 0
fi
# Validate JSON format
if ! jq empty "$REGISTRY_FILE" >/dev/null 2>&1; then
echo -e "${RED}Error: Registry file contains invalid JSON.${NC}"
echo "Please check the file: $REGISTRY_FILE"
exit 1
fi
# Check if it's already new format
if jq -e 'type == "array" and (length == 0 or .[0] | has("bin_path"))' "$REGISTRY_FILE" >/dev/null 2>&1; then
echo -e "${GREEN}Registry is already in new format. No migration needed.${NC}"
exit 0
fi
# Check if it's old format
if ! jq -e 'type == "array" and (length == 0 or .[0] | has("config"))' "$REGISTRY_FILE" >/dev/null 2>&1; then
echo -e "${YELLOW}Registry format not recognized. Manual review needed.${NC}"
echo "Current registry content:"
cat "$REGISTRY_FILE"
exit 1
fi
echo -e "${YELLOW}Old format detected. Starting migration...${NC}"
# Create backup
if ! cp "$REGISTRY_FILE" "$BACKUP_FILE"; then
echo -e "${RED}Error: Failed to create backup file.${NC}"
exit 1
fi
echo -e "${BLUE}Backup created: $BACKUP_FILE${NC}"
# Convert to new format
echo "[]" > "$REGISTRY_FILE.new"
services_migrated=0
while IFS= read -r service; do
if [ -n "$service" ] && [ "$service" != "null" ]; then
name=$(echo "$service" | jq -r '.name // ""')
provider=$(echo "$service" | jq -r '.provider // ""')
type=$(echo "$service" | jq -r '.type // ""')
config=$(echo "$service" | jq -r '.config // ""')
# Validate required fields
if [ -z "$name" ] || [ -z "$provider" ] || [ -z "$type" ]; then
echo -e "${YELLOW}Skipping invalid service entry: $service${NC}"
continue
fi
echo -e "${YELLOW}Migrating service: $name${NC}"
# Create new format entry with all required fields
new_entry=$(jq -n \
--arg name "$name" \
--arg provider "$provider" \
--arg type "$type" \
--arg bin_path "unknown" \
--arg args "" \
--arg created "$(date -Iseconds)" \
--arg status "migrated" \
--arg systemd_type "--user" \
--arg restart_policy "always" \
--arg session_manager "none" \
--arg gdb_enabled "0" \
--arg pm2_opts "" \
--arg server_config "" \
--arg legacy_config "$config" \
'{
name: $name,
provider: $provider,
type: $type,
bin_path: $bin_path,
args: $args,
created: $created,
status: $status,
systemd_type: $systemd_type,
restart_policy: $restart_policy,
session_manager: $session_manager,
gdb_enabled: $gdb_enabled,
pm2_opts: $pm2_opts,
server_config: $server_config,
legacy_config: $legacy_config
}')
# Add to new registry with error checking
if ! jq --argjson entry "$new_entry" '. += [$entry]' "$REGISTRY_FILE.new" > "$REGISTRY_FILE.new.tmp"; then
echo -e "${RED}Error: Failed to add service $name to new registry${NC}"
rm -f "$REGISTRY_FILE.new" "$REGISTRY_FILE.new.tmp"
exit 1
fi
mv "$REGISTRY_FILE.new.tmp" "$REGISTRY_FILE.new"
services_migrated=$((services_migrated + 1))
fi
done < <(jq -c '.[]?' "$BACKUP_FILE" 2>/dev/null || echo "")
# Replace old registry with new one
if ! mv "$REGISTRY_FILE.new" "$REGISTRY_FILE"; then
echo -e "${RED}Error: Failed to replace old registry with new one${NC}"
exit 1
fi
echo -e "${GREEN}Migration completed successfully!${NC}"
echo -e "${BLUE}Services migrated: $services_migrated${NC}"
echo -e "${BLUE}Use 'service-manager.sh restore' to review and update services.${NC}"
echo -e "${YELLOW}Note: Migrated services have bin_path='unknown' and need manual recreation.${NC}"
echo ""
echo -e "${BLUE}To recreate services, use commands like:${NC}"
echo " ./service-manager.sh create auth authserver --provider pm2 --bin-path /path/to/your/bin"
echo " ./service-manager.sh create world worldserver --provider systemd --bin-path /path/to/your/bin"
+490
View File
@@ -0,0 +1,490 @@
#!/usr/bin/env bash
# AzerothCore Run Engine
# Advanced script for running AzerothCore services with session management and restart capabilities
#
# This script can be sourced to provide functions or executed directly with parameters
#
# Configuration Priority Order (highest to lowest):
# 1. conf.sh - User configuration file (highest priority)
# 2. Command line arguments (--config, --server-config, etc.)
# 3. Environment variables (RUN_ENGINE_*)
# 4. conf.sh.dist - Default configuration (lowest priority)
#
# Environment Variables:
# RUN_ENGINE_CONFIG_FILE - Path to temporary configuration file (optional)
# RUN_ENGINE_SESSION_MANAGER - Session manager (none|auto|tmux|screen, default: auto)
# RUN_ENGINE_BINPATH - Binary directory path
# RUN_ENGINE_SERVERBIN - Server binary name (worldserver|authserver)
# RUN_ENGINE_CONFIG - Server configuration file path
# RUN_ENGINE_LOGS_PATH - Directory for log files
# RUN_ENGINE_CRASHES_PATH - Directory for crash dumps
# RUN_ENGINE_SESSION_NAME - Session name for tmux/screen
export RUN_ENGINE_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Configuration priority order:
# 1. conf.sh (highest priority - user overrides)
# 2. Environment variables (RUN_ENGINE_*)
# 3. conf.sh.dist (lowest priority - defaults)
# Load default configuration first (sets defaults from environment variables)
if [ -e "$RUN_ENGINE_PATH/conf.sh.dist" ]; then
source "$RUN_ENGINE_PATH/conf.sh.dist"
fi
# Load user configuration if exists (this takes priority over everything)
if [ -e "$RUN_ENGINE_PATH/conf.sh" ]; then
source "$RUN_ENGINE_PATH/conf.sh"
fi
# Load configuration
function load_config() {
local config_file="$1"
# If a specific config file is provided via command line, load it
# This allows temporary overrides for specific runs
if [ -n "$config_file" ] && [ -e "$config_file" ]; then
echo "Loading configuration from: $config_file"
source "$config_file"
elif [ -n "$RUN_ENGINE_CONFIG_FILE" ] && [ -e "$RUN_ENGINE_CONFIG_FILE" ]; then
echo "Loading configuration from environment: $RUN_ENGINE_CONFIG_FILE"
source "$RUN_ENGINE_CONFIG_FILE"
fi
# Final override with any remaining environment variables
# This ensures that even after loading config files, environment variables take precedence
BINPATH="${RUN_ENGINE_BINPATH:-$BINPATH}"
SERVERBIN="${RUN_ENGINE_SERVERBIN:-$SERVERBIN}"
CONFIG="${RUN_ENGINE_CONFIG:-$CONFIG}"
SESSION_MANAGER="${RUN_ENGINE_SESSION_MANAGER:-$SESSION_MANAGER}"
LOGS_PATH="${RUN_ENGINE_LOGS_PATH:-$LOGS_PATH}"
CRASHES_PATH="${RUN_ENGINE_CRASHES_PATH:-$CRASHES_PATH}"
}
# Detect available session manager
function detect_session_manager() {
if command -v tmux >/dev/null 2>&1; then
echo "tmux"
elif command -v screen >/dev/null 2>&1; then
echo "screen"
else
echo "none"
fi
}
# Determine which session manager to use
function get_session_manager() {
local requested="$1"
case "$requested" in
"none")
echo "none"
;;
"auto")
detect_session_manager
;;
"tmux")
if command -v tmux >/dev/null 2>&1; then
echo "tmux"
else
echo "error"
fi
;;
"screen")
if command -v screen >/dev/null 2>&1; then
echo "screen"
else
echo "error"
fi
;;
*)
echo "none"
;;
esac
}
# Configure log files
function configure_files() {
TRACE_BEGIN_STRING="SIGSEGV"
TRACE_FILE="$LOGS_PATH/${LOG_PREFIX_NAME}_trace.log"
ERR_FILE="$LOGS_PATH/${LOG_PREFIX_NAME}_error.log"
SYSLOG="$LOGS_PATH/${LOG_PREFIX_NAME}_system.log"
SYSERR="$LOGS_PATH/${LOG_PREFIX_NAME}_system.err"
LINKS_FILE="$LOGS_PATH/${LOG_PREFIX_NAME}_crash_links.link"
}
# Check if service is running
function check_status() {
local session_name="$1"
local ret=1
# Check for GDB process
local gdbres=$(pgrep -f "gdb.*--batch.*$SERVERBIN")
if [[ "$GDB_ENABLED" -eq 1 && -n "$gdbres" ]]; then
return 1
fi
# Check for binary process
local binres=$(pgrep -f "$SERVERBIN -c $CONFIG")
if [ -n "$binres" ]; then
return 1
fi
# Check session manager
if [ -n "$session_name" ]; then
case "$(get_session_manager "${SESSION_MANAGER:-auto}")" in
"tmux")
tmux has-session -t "$session_name" 2>/dev/null && return 1
;;
"screen")
screen -ls "$session_name" 2>/dev/null | grep -q "$session_name" && return 1
;;
esac
fi
return 0
}
# Run with session manager
function run_with_session() {
local session_manager="$1"
local session_name="$2"
local wrapper="$3"
shift 3
local args=("$@")
if [ "$wrapper" = "simple-restarter" ]; then
script_path="$RUN_ENGINE_PATH/simple-restarter"
else
script_path="$RUN_ENGINE_PATH/starter"
fi
case "$session_manager" in
"tmux")
echo "> Starting with tmux session: $session_name - attach with 'tmux attach -t $session_name'"
tmux new-session -d -s "$session_name" -- "$script_path" "${args[@]}"
;;
"screen")
local OPTIONS="-A -m -d -S"
if [ -n "$SCREEN_OPTIONS" ]; then
OPTIONS="$SCREEN_OPTIONS"
fi
echo "> Starting with screen session: $session_name (options: $OPTIONS) - attach with 'screen -r $session_name'"
echo "screen $OPTIONS \"$session_name\" -- \"$script_path\" ${args[*]}"
screen $OPTIONS "$session_name" -- "$script_path" "${args[@]}"
;;
"none"|*)
echo "> Starting without session manager"
"$script_path" "${args[@]}"
;;
esac
}
# Parse command line arguments
function parse_arguments() {
local mode="$1"
local serverbin="$2"
shift 2
local config_file=""
local serverconfig=""
local session_manager=""
# Parse named arguments
while [[ $# -gt 0 ]]; do
case $1 in
--config)
config_file="$2"
shift 2
;;
--server-config)
serverconfig="$2"
shift 2
;;
--session-manager)
session_manager="$2"
shift 2
;;
*)
echo "Unknown argument: $1"
return 1
;;
esac
done
# Export parsed values for use by start_service
export PARSED_MODE="$mode"
export PARSED_SERVERBIN="$serverbin"
export PARSED_CONFIG_FILE="$config_file"
export PARSED_SERVERCONFIG="$serverconfig"
export PARSED_SESSION_MANAGER="$session_manager"
echo "Parsed arguments:"
echo " Mode: $PARSED_MODE"
echo " Server Binary: $PARSED_SERVERBIN"
echo " Config File: $PARSED_CONFIG_FILE"
echo " Server Config: $PARSED_SERVERCONFIG"
echo " Session Manager: $PARSED_SESSION_MANAGER"
}
# Start service (single run or with simple-restarter)
function start_service() {
local config_file="$1"
local serverbin_path="$2"
local serverconfig="$3"
local use_restarter="${4:-false}"
local session_manager_choice="$5"
# Load configuration first
load_config "$config_file"
# if no session manager is specified, get it from config
if [ -z "$session_manager_choice" ]; then
session_manager_choice="$SESSION_MANAGER"
fi
# Parse serverbin_path to extract BINPATH and SERVERBIN
if [ -n "$serverbin_path" ]; then
# If it's a full path, extract directory and binary name
if [[ "$serverbin_path" == */* ]]; then
BINPATH="$(dirname "$serverbin_path")"
SERVERBIN="$(basename "$serverbin_path")"
else
# If it's just a binary name, use it as-is (system PATH)
SERVERBIN="$serverbin_path"
BINPATH="${BINPATH:-""}" # Empty means use current directory or system PATH
fi
fi
# Use environment/config values if not set from command line
BINPATH="${BINPATH:-$RUN_ENGINE_BINPATH}"
SERVERBIN="${SERVERBIN:-$RUN_ENGINE_SERVERBIN}"
CONFIG="${serverconfig:-$CONFIG}"
echo "SERVERBIN: $SERVERBIN"
# Validate required parameters
if [ -z "$SERVERBIN" ]; then
echo "Error: SERVERBIN is required"
echo "Could not determine server binary from: $serverbin_path"
echo "Provide it as:"
echo " - Full path: $0 <mode> /path/to/bin/worldserver"
echo " - Binary name: $0 <mode> worldserver"
echo " - Environment variables: RUN_ENGINE_SERVERBIN"
echo " - Configuration file with SERVERBIN variable"
return 1
fi
# If BINPATH is set, validate binary exists and create log paths
if [ -n "$BINPATH" ]; then
if [ ! -d "$BINPATH" ]; then
echo "Error: BINPATH not found: $BINPATH"
return 1
fi
# Set up directories and logging relative to BINPATH
LOGS_PATH="${LOGS_PATH:-"$BINPATH/logs"}"
CRASHES_PATH="${CRASHES_PATH:-"$BINPATH/crashes"}"
mkdir -p "$LOGS_PATH"
mkdir -p "$CRASHES_PATH"
else
# For system binaries, try to detect binary location and create logs accordingly
local detected_binpath=""
# Try to find binary in system PATH
local binary_location=$(which "$SERVERBIN" 2>/dev/null)
if [ -n "$binary_location" ]; then
detected_binpath="$(dirname "$binary_location")"
echo "Binary found in system PATH: $binary_location"
# Set BINPATH to the detected location so starter script can find the binary
BINPATH="$detected_binpath"
fi
# Set up log paths based on detected or fallback location
if [ -n "$detected_binpath" ]; then
LOGS_PATH="${LOGS_PATH:-"$detected_binpath/logs"}"
CRASHES_PATH="${CRASHES_PATH:-"$detected_binpath/crashes"}"
else
# Fallback to current directory for logs
LOGS_PATH="${LOGS_PATH:-./logs}"
CRASHES_PATH="${CRASHES_PATH:-"$./crashes"}"
fi
mkdir -p "$LOGS_PATH"
mkdir -p "$CRASHES_PATH"
fi
# Set up logging names
LOG_PREFIX_NAME="${LOG_PREFIX_NAME:-${SERVERBIN%server}}"
# Set up session name (with backward compatibility for SCREEN_NAME)
SESSION_NAME="${SESSION_NAME:-$SCREEN_NAME}"
SESSION_NAME="${SESSION_NAME:-AC-${SERVERBIN%server}}"
configure_files
local session_manager=$(get_session_manager "$session_manager_choice")
if [ "$session_manager" = "error" ]; then
echo "Error: Invalid session manager specified: $session_manager_choice, is it installed?"
exit 1
fi
echo "Using session manager: $session_manager"
echo "Starting server: $SERVERBIN"
if [ -n "$CONFIG" ]; then
echo "Server config: $CONFIG"
else
echo "Server config: default (not specified)"
fi
# Set AC_DISABLE_INTERACTIVE when running as a service without interactive session manager
# This prevents AzerothCore from showing interactive prompts when running under systemd/pm2
if [[ "${SERVICE_MODE:-false}" == "true" && "$session_manager" == "none" ]]; then
export AC_DISABLE_INTERACTIVE=1
echo "Service mode: Non-interactive mode enabled (AC_DISABLE_INTERACTIVE=1)"
else
export AC_DISABLE_INTERACTIVE=0
if [[ "${SERVICE_MODE:-false}" == "true" ]]; then
echo "Service mode: Interactive mode enabled (session manager: $session_manager)"
else
echo "Direct execution: Interactive mode enabled"
fi
fi
if [ "$use_restarter" = "true" ]; then
# Use simple-restarter for restart functionality
local gdb_enabled="${GDB_ENABLED:-0}"
run_with_session "$session_manager" "$SESSION_NAME" "simple-restarter" "$BINPATH" "$SERVERBIN" "$GDB" "$CONFIG" "$SYSLOG" "$SYSERR" "$gdb_enabled" "$CRASHES_PATH"
else
# Single run using starter
local gdb_enabled="${GDB_ENABLED:-0}"
run_with_session "$session_manager" "$SESSION_NAME" "starter" "$BINPATH" "$SERVERBIN" "$GDB" "$CONFIG" "$SYSLOG" "$SYSERR" "$gdb_enabled" "$CRASHES_PATH"
fi
}
# Cleanup function
function finish() {
local session_manager=$(get_session_manager "${SESSION_MANAGER:-auto}")
if [ -n "$SESSION_NAME" ]; then
case "$session_manager" in
"tmux")
tmux kill-session -t "$SESSION_NAME" 2>/dev/null || true
;;
"screen")
screen -X -S "$SESSION_NAME" quit 2>/dev/null || true
;;
esac
fi
}
# Legacy compatibility functions for old examples
function restarter() {
echo "Legacy function 'restarter' called - redirecting to new API"
start_service "" "" "" "true" "${SESSION_MANAGER:-auto}"
}
function starter() {
echo "Legacy function 'starter' called - redirecting to new API"
start_service "" "" "" "false" "${SESSION_MANAGER:-auto}"
}
# Set trap for cleanup (currently disabled to avoid interfering with systemd)
# trap finish EXIT
# Main execution when script is run directly
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
case "${1:-help}" in
"start"|"restart")
if [ $# -lt 2 ]; then
echo "Error: Missing required arguments"
echo "Usage: $0 <mode> <serverbin> [options]"
echo "Example: $0 start worldserver --config ./conf-world.sh --server-config worldserver.conf"
exit 1
fi
# Parse arguments
if ! parse_arguments "$@"; then
exit 1
fi
# Determine restart mode
use_restarter="false"
if [ "$PARSED_MODE" = "restart" ]; then
use_restarter="true"
fi
# Start service with parsed arguments
start_service "$PARSED_CONFIG_FILE" "$PARSED_SERVERBIN" "$PARSED_SERVERCONFIG" "$use_restarter" "$PARSED_SESSION_MANAGER"
;;
"help"|*)
echo "AzerothCore Run Engine"
echo ""
echo "Usage: $0 <mode> <serverbin> [options]"
echo ""
echo "Modes:"
echo " start - Start service once (no restart on crash)"
echo " restart - Start service with restart on crash (uses simple-restarter)"
echo ""
echo "Required Parameters:"
echo " serverbin - Server binary (full path or binary name)"
echo " Full path: /path/to/bin/worldserver"
echo " Binary name: worldserver (uses system PATH)"
echo ""
echo "Options:"
echo " --config <file> - Path to configuration file"
echo " --server-config <file> - Server configuration file (sets -c parameter)"
echo " --session-manager <type> - Session manager: none|auto|tmux|screen (default: auto)"
echo ""
echo "Configuration Priority (highest to lowest):"
echo " 1. conf.sh - User configuration file"
echo " 2. Command line arguments (--config, --server-config, etc.)"
echo " 3. Environment variables (RUN_ENGINE_*)"
echo " 4. conf.sh.dist - Default configuration"
echo ""
echo "Environment Variables:"
echo " RUN_ENGINE_CONFIG_FILE - Config file path"
echo " RUN_ENGINE_SESSION_MANAGER - Session manager (default: auto)"
echo " RUN_ENGINE_BINPATH - Binary directory path"
echo " RUN_ENGINE_SERVERBIN - Server binary name"
echo " RUN_ENGINE_CONFIG - Server configuration file"
echo " RUN_ENGINE_LOGS_PATH - Directory for log files"
echo " RUN_ENGINE_CRASHES_PATH - Directory for crash dumps"
echo " RUN_ENGINE_SESSION_NAME - Session name for tmux/screen"
echo ""
echo "Examples:"
echo ""
echo " # Using full path to binary"
echo " $0 start /home/user/ac/bin/worldserver"
echo ""
echo " # Using binary name (system PATH)"
echo " $0 start worldserver"
echo ""
echo " # With configuration file"
echo " $0 start worldserver --config ./conf-world.sh"
echo ""
echo " # With server configuration (sets -c parameter)"
echo " $0 start /path/to/bin/worldserver --server-config /etc/worldserver.conf"
echo ""
echo " # With session manager"
echo " $0 restart worldserver --session-manager tmux"
echo ""
echo " # Complete example"
echo " $0 restart /home/user/ac/bin/worldserver --config ./conf-world.sh --server-config worldserver.conf --session-manager screen"
echo ""
echo "Binary Resolution:"
echo " - Full path (contains /): Extracts directory and binary name"
echo " - Binary name only: Uses system PATH to find executable"
echo " Auto-detection will check current directory first, then system PATH"
echo ""
echo "Server Config:"
echo " If --server-config is specified, it's passed as -c parameter to the server."
echo " If not specified, the server will use its default configuration."
;;
esac
fi
File diff suppressed because it is too large Load Diff
+95
View File
@@ -0,0 +1,95 @@
#!/usr/bin/env bash
# AzerothCore Simple Restarter
# This script is a wrapper around the starter script that provides restart functionality
# and maintains compatibility with the acore dashboard
#
# Usage: simple-restarter <binary> [gdb_file] [config] [syslog] [syserr] [gdb_enabled] [crashes_path]
#
# Parameters (same as starter):
# $1 - Binary to execute (required)
# $2 - GDB configuration file (optional)
# $3 - Configuration file path (optional)
# $4 - System log file (optional)
# $5 - System error file (optional)
# $6 - GDB enabled flag (0/1, optional)
# $7 - Crashes directory path (optional)
# Get script directory
CURRENT_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Parameters (same as starter)
BINPATH="$1"
BINFILE="$2"
GDB_FILE="$3"
CONFIG="$4"
SYSLOG="$5"
SYSERR="$6"
GDB_ENABLED="${7:-0}"
CRASHES_PATH="$8"
BINARY="$BINPATH/$BINFILE"
# Default values (same as starter)
DEFAULT_GDB_FILE="$CURRENT_PATH/gdb.conf"
# Set defaults if not provided
GDB_FILE="${GDB_FILE:-$DEFAULT_GDB_FILE}"
# Counters for crash detection
_instant_crash_count=0
_restart_count=0
# Check if starter script exists
STARTER_SCRIPT="$CURRENT_PATH/starter"
if [ ! -f "$STARTER_SCRIPT" ]; then
echo "Error: starter script not found at $STARTER_SCRIPT"
exit 1
fi
# Main restart loop
while true; do
STARTING_TIME=$(date +%s)
echo "AC_CONFIG_POLICY: $AC_CONFIG_POLICY"
# Use starter script to launch the binary with all parameters
"$STARTER_SCRIPT" "$BINPATH" "$BINFILE" "$GDB_FILE" "$CONFIG" "$SYSLOG" "$SYSERR" "$GDB_ENABLED" "$CRASHES_PATH"
_exit_code=$?
echo "$(basename "$BINARY") terminated with exit code: $_exit_code"
# Calculate runtime
ENDING_TIME=$(date +%s)
DIFFERENCE=$((ENDING_TIME - STARTING_TIME))
((_restart_count++))
echo "$(basename "$BINARY") terminated after $DIFFERENCE seconds, restart count: $_restart_count"
# Crash loop detection
if [ "$DIFFERENCE" -lt 10 ]; then
# Increment instant crash count if runtime is lower than 10 seconds
((_instant_crash_count++))
echo "Warning: Quick restart detected ($DIFFERENCE seconds) - instant crash count: $_instant_crash_count"
else
# Reset count on successful longer run
_instant_crash_count=0
fi
# Prevent infinite crash loops
if [ "$_instant_crash_count" -gt 5 ]; then
echo "Error: $(basename "$BINARY") restarter exited. Infinite crash loop prevented (6 crashes in under 10 seconds each)"
echo "Please check your system configuration and logs"
exit 1
fi
# Exit cleanly if shutdown was requested by command or SIGINT (exit code 0)
if [ "$_exit_code" -eq 0 ]; then
echo "$(basename "$BINARY") shutdown safely"
exit 0
fi
echo "$(basename "$BINARY") will restart in 3 seconds..."
sleep 3
done
+321
View File
@@ -0,0 +1,321 @@
#!/usr/bin/env bash
# AzerothCore Starter Script
# This script handles the execution of AzerothCore binaries with optional GDB support
#
# Usage: starter <binpath> <binfile> [gdb_file] [config] [syslog] [syserr] [gdb_enabled] [crashes_path]
#
# Parameters:
# $1 - Binary path (required)
# $2 - Binary file name (required)
# $3 - GDB configuration file (optional)
# $4 - Configuration file path (optional)
# $5 - System log file (optional)
# $6 - System error file (optional)
# $7 - GDB enabled flag (0/1, optional)
# $8 - Crashes directory path (optional)
BINPATH="$1"
BINFILE="$2"
GDB_FILE="$3"
CONFIG="$4"
SYSLOG="$5"
SYSERR="$6"
GDB_ENABLED="${7:-0}"
CRASHES_PATH="$8"
# Default values
CURRENT_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DEFAULT_CRASHES_PATH=$(realpath "$BINPATH/crashes")
[ -n "$CONFIG" ] && CONFIG_ABS=$(realpath "$CONFIG")
# Set defaults if not provided
CRASHES_PATH="${CRASHES_PATH:-$DEFAULT_CRASHES_PATH}"
# Validate binary
if [ -z "$BINPATH" ] || [ -z "$BINFILE" ]; then
echo "Error: Binary path and file are required"
echo "Usage: $0 <binpath> <binfile> [gdb_file] [config] [syslog] [syserr] [gdb_enabled] [crashes_path]"
exit 1
fi
BINARY="$BINPATH/$BINFILE"
if [ ! -f "$BINARY" ]; then
echo "Error: Binary '$BINARY' not found"
exit 1
fi
function config_value() {
local key="$1"
if [ -z "${CONFIG_ABS:-}" ] || [ ! -f "$CONFIG_ABS" ]; then
return 1
fi
awk -F= -v key="$key" '
{
configKey = $1
gsub(/^[[:space:]]+|[[:space:]]+$/, "", configKey)
}
configKey == key {
value = $0
sub(/^[^=]*=/, "", value)
sub(/[[:space:]]*[#;].*$/, "", value)
gsub(/"/, "", value)
gsub(/^[[:space:]]+|[[:space:]]+$/, "", value)
print value
exit
}
' "$CONFIG_ABS"
}
function command_contains_config() {
local command_line="$1"
if [ -z "${CONFIG_ABS:-}" ]; then
return 0
fi
case "$command_line" in
*" -c $CONFIG_ABS"*|*" -c \"$CONFIG_ABS\""*)
return 0
;;
esac
return 1
}
function find_existing_instances() {
local line pid command_line
while IFS= read -r line; do
pid="${line%% *}"
command_line="${line#* }"
[ -z "$pid" ] && continue
[ "$pid" = "$$" ] && continue
[ "$pid" = "$PPID" ] && continue
case "$command_line" in
*"/starter "*|*"pgrep "*)
continue
;;
esac
if command_contains_config "$command_line"; then
printf '%s\n' "$line"
fi
done < <(pgrep -fa "$EXECPATH" 2>/dev/null || true)
}
function listening_on_port() {
local port="$1"
command -v ss >/dev/null 2>&1 || return 1
ss -H -ltn "sport = :$port" 2>/dev/null | grep -q .
}
function guarded_ports() {
local port soap_enabled soap_port
if [ "$BINFILE" != "worldserver" ]; then
return 0
fi
port="$(config_value "WorldServerPort" || true)"
if [ -n "$port" ]; then
printf '%s\n' "$port"
fi
soap_enabled="$(config_value "SOAP.Enabled" || true)"
soap_port="$(config_value "SOAP.Port" || true)"
if [ "$soap_enabled" = "1" ] && [ -n "$soap_port" ]; then
printf '%s\n' "$soap_port"
fi
}
function find_listening_guard_ports() {
local port
while IFS= read -r port; do
[ -z "$port" ] && continue
if listening_on_port "$port"; then
printf '%s\n' "$port"
fi
done < <(guarded_ports)
}
function wait_for_startup_guard() {
local timeout="${AC_STARTUP_GUARD_TIMEOUT:-90}"
local interval="${AC_STARTUP_GUARD_INTERVAL:-2}"
local elapsed=0
local instances ports
local sleep_for
local warned=0
if [ "${AC_STARTUP_SKIP_GUARD:-0}" = "1" ]; then
return 0
fi
case "$timeout" in
''|*[!0-9]*)
echo "Startup guard: invalid AC_STARTUP_GUARD_TIMEOUT '$timeout', using 90."
timeout=90
;;
esac
case "$interval" in
''|*[!0-9]*)
echo "Startup guard: invalid AC_STARTUP_GUARD_INTERVAL '$interval', using 2."
interval=2
;;
esac
if [ "$interval" -lt 1 ]; then
echo "Startup guard: AC_STARTUP_GUARD_INTERVAL must be at least 1, using 1."
interval=1
fi
while true; do
instances="$(find_existing_instances)"
ports="$(find_listening_guard_ports)"
if [ -z "$instances" ] && [ -z "$ports" ]; then
return 0
fi
if [ "$elapsed" -ge "$timeout" ]; then
echo "Startup guard: refusing to start duplicate $BINFILE after waiting ${timeout}s."
if [ -n "$instances" ]; then
echo "Startup guard: existing matching process(es):"
echo "$instances"
fi
if [ -n "$ports" ]; then
echo "Startup guard: configured port(s) still listening: $(echo "$ports" | paste -sd ',' -)"
fi
exit 0
fi
if [ "$warned" -eq 0 ]; then
echo "Startup guard: waiting for existing $BINFILE instance or configured port(s) to clear..."
warned=1
fi
sleep_for="$interval"
if [ $((elapsed + sleep_for)) -gt "$timeout" ]; then
sleep_for=$((timeout - elapsed))
fi
[ "$sleep_for" -le 0 ] && continue
sleep "$sleep_for"
elapsed=$((elapsed + sleep_for))
done
}
# Create crashes directory if it doesn't exist
mkdir -p "$CRASHES_PATH"
cd "$BINPATH" || {
echo "Error: Could not change to binary path '$BINPATH'"
exit 1
}
EXECPATH=$(realpath "$BINFILE")
wait_for_startup_guard
if [ "$GDB_ENABLED" -eq 1 ]; then
echo "Starting $EXECPATH with GDB enabled"
# Generate GDB configuration on the fly
TIMESTAMP=$(date +%Y-%m-%d-%H-%M-%S)
GDB_TEMP_FILE="$CRASHES_PATH/gdb-$TIMESTAMP.conf"
GDB_OUTPUT_FILE="$CRASHES_PATH/gdb-$TIMESTAMP.txt"
# Create GDB configuration file if it is not defined
if [ -z "$GDB_FILE" ]; then
# Create GDB configuration
cat > "$GDB_TEMP_FILE" << EOF
set logging file $GDB_OUTPUT_FILE
set logging enabled on
set debug timestamp
EOF
# Add run command with config if specified
if [ -n "$CONFIG_ABS" ]; then
echo "run -c $CONFIG_ABS" >> "$GDB_TEMP_FILE"
else
echo "run" >> "$GDB_TEMP_FILE"
fi
cat >> "$GDB_TEMP_FILE" << EOF
bt
bt full
info thread
thread apply all backtrace full
EOF
GDB_FILE="$GDB_TEMP_FILE"
fi
# Create log files if specified
if [ -n "$SYSLOG" ]; then
[ ! -f "$SYSLOG" ] && touch "$SYSLOG"
fi
if [ -n "$SYSERR" ]; then
[ ! -f "$SYSERR" ] && touch "$SYSERR"
fi
# Execute with GDB
if [ "${WITH_CONSOLE:-0}" -eq 0 ] && [ -n "$SYSLOG" ] && [ -n "$SYSERR" ]; then
gdb -x "$GDB_FILE" --batch "$EXECPATH" >> "$SYSLOG" 2>> "$SYSERR"
else
echo "> Console enabled"
if [ -n "$SYSLOG" ] && [ -n "$SYSERR" ]; then
gdb -x "$GDB_FILE" --batch "$EXECPATH" > >(tee "$SYSLOG") 2> >(tee "$SYSERR" >&2)
else
gdb -x "$GDB_FILE" --batch "$EXECPATH"
fi
fi
# clean up temporary GDB file if it exists
if [ -n "$GDB_TEMP_FILE" ]; then
# Clean up temporary GDB file
rm -f "$GDB_TEMP_FILE"
fi
else
echo "Starting $BINFILE without GDB"
# Determine if PM2 is active
is_pm2_active="0"
[ "$AC_LAUNCHED_BY_PM2" == "1" ] && is_pm2_active="1"
# Determine if interactive mode is enabled
is_interactive_enabled="1"
[ "$AC_DISABLE_INTERACTIVE" == "1" ] && is_interactive_enabled="0"
# use normal execution if we are running the binary under PM2
# or when interactive mode is enabled
if [[ "$is_pm2_active" == "1" || "$is_interactive_enabled" == "1" ]]; then
echo "Running AC"
"$EXECPATH" ${CONFIG_ABS:+-c "$CONFIG_ABS"}
else
# When AC_DISABLE_INTERACTIVE is set to 1 and we are not in PM2
# This means we are using systemd without interactive mode and no session managers
# in this case we need to run AC with unbuffer for line-buffered output
# NOTE unbuffer doesn't fully support interactive mode
if command -v unbuffer >/dev/null 2>&1; then
echo "Running AC with unbuffer for line-buffered output"
unbuffer "$EXECPATH" ${CONFIG_ABS:+-c "$CONFIG_ABS"}
else
echo "⚠️ unbuffer not found, the output may not be line-buffered. Try installing expect."
exec "$EXECPATH" ${CONFIG_ABS:+-c "$CONFIG_ABS"}
fi
fi
fi
-32
View File
@@ -1,32 +0,0 @@
#!/usr/bin/env bash
GDB_FILE="$2"
CONFIG="$3"
SYSLOG="$4"
SYSERR="$5"
GDB_ENABLED="$6"
CRASHES_PATH="$7"
if [ $GDB_ENABLED -eq 1 ]; then
echo "set logging file "$CRASHES_PATH"/gdb-$(date +%Y-%m-%d-%H-%M-%S).txt" > "$GDB_FILE"
echo "set logging on" >> "$GDB_FILE"
echo "set debug timestamp" >> "$GDB_FILE"
echo "run -c $3" >> "$GDB_FILE"
echo "bt" >> "$GDB_FILE"
echo "bt full" >> "$GDB_FILE"
echo "info thread" >> "$GDB_FILE"
echo "thread apply all backtrace full" >> "$GDB_FILE"
[ ! -f "$SYSLOG" ] && touch "$SYSLOG"
[ ! -f "$SYSERR" ] && touch "$SYSERR"
if [ $WITH_CONSOLE -eq 0 ]; then
gdb -x $GDB_FILE --batch $1 >> "$SYSLOG" 2>> "$SYSERR"
else
echo "> Console enabled"
gdb -x $GDB_FILE --batch $1 > >(tee ${SYSLOG}) 2> >(tee ${SYSERR} >&2)
fi
elif [ $GDB_ENABLED -eq 0 ]; then
"./$1" -c "$CONFIG"
fi
+14
View File
@@ -0,0 +1,14 @@
# BATS Test Configuration
# Set test timeout (in seconds)
export BATS_TEST_TIMEOUT=30
# Enable verbose output for debugging
export BATS_VERBOSE_RUN=1
# Test output format
export BATS_FORMATTER=pretty
# Enable colored output
export BATS_NO_PARALLELIZE_ACROSS_FILES=1
export BATS_NO_PARALLELIZE_WITHIN_FILE=1
+564
View File
@@ -0,0 +1,564 @@
#!/usr/bin/env bats
# AzerothCore Startup Scripts Test Suite
# This script tests the basic functionality of the startup scripts using the unified test framework
# Load the AzerothCore test framework
load '../../test-framework/bats_libs/acore-support'
load '../../test-framework/bats_libs/acore-assert'
# Setup that runs before each test
setup() {
startup_scripts_setup
export SCRIPT_DIR="$(cd "$(dirname "$BATS_TEST_FILENAME")/../src" && pwd)"
}
# Cleanup that runs after each test
teardown() {
acore_test_teardown
}
# ===== STARTER SCRIPT TESTS =====
@test "starter: should fail with missing parameters" {
run timeout 3s "$SCRIPT_DIR/starter" '' ''
[ "$status" -ne 0 ]
[[ "$output" =~ "Error: Binary path and file are required" ]]
}
@test "starter: should start with valid binary" {
cd "$TEST_DIR"
run timeout 5s "$SCRIPT_DIR/starter" "$TEST_DIR/bin" "test-server" "" "$TEST_DIR/test-server.conf" "" "" 0
debug_on_failure
# The starter might have issues with the script command, so we check for specific behavior
# Either it should succeed or show a specific error we can work with
[[ "$output" =~ "Test server starting" ]] || [[ "$output" =~ "script:" ]] || [[ "$status" -eq 124 ]]
}
@test "starter: should validate binary path exists" {
run "$SCRIPT_DIR/starter" "/nonexistent/path" "test-server"
[ "$status" -ne 0 ]
[[ "$output" =~ "Binary '/nonexistent/path/test-server' not found" ]]
}
@test "starter: should detect PM2 environment properly" {
cd "$TEST_DIR"
# Test with AC_LAUNCHED_BY_PM2=1 (should not use script command)
AC_LAUNCHED_BY_PM2=1 run timeout 5s "$SCRIPT_DIR/starter" "$TEST_DIR/bin" "test-server" "" "$TEST_DIR/test-server.conf" "" "" 0
debug_on_failure
# Should start without using script command
[[ "$output" =~ "Test server starting" ]]
}
@test "starter: should refuse duplicate binary/config start" {
cat > "$TEST_DIR/bin/duplicate-server" << 'EOF'
#!/usr/bin/env bash
sleep 30
EOF
chmod +x "$TEST_DIR/bin/duplicate-server"
"$TEST_DIR/bin/duplicate-server" -c "$TEST_DIR/test-server.conf" &
local duplicate_pid=$!
AC_STARTUP_GUARD_TIMEOUT=1 AC_STARTUP_GUARD_INTERVAL=1 run timeout 5s "$SCRIPT_DIR/starter" "$TEST_DIR/bin" "duplicate-server" "" "$TEST_DIR/test-server.conf" "" "" 0
kill "$duplicate_pid" 2>/dev/null || true
wait "$duplicate_pid" 2>/dev/null || true
debug_on_failure
[ "$status" -eq 0 ]
[[ "$output" =~ "Startup guard: refusing to start duplicate duplicate-server" ]]
[[ "$output" =~ "existing matching process" ]]
}
@test "starter: should refuse occupied configured worldserver ports" {
if ! command -v nc >/dev/null 2>&1; then
skip "nc is required for this test"
fi
cat > "$TEST_DIR/bin/worldserver" << 'EOF'
#!/usr/bin/env bash
echo "worldserver should not start"
EOF
chmod +x "$TEST_DIR/bin/worldserver"
local listen_port=40123
cat > "$TEST_DIR/worldserver.conf" << EOF
WorldServerPort = $listen_port
SOAP.Enabled = 0
EOF
nc -l 127.0.0.1 "$listen_port" >/dev/null &
local listener_pid=$!
AC_STARTUP_GUARD_TIMEOUT=1 AC_STARTUP_GUARD_INTERVAL=1 run timeout 5s "$SCRIPT_DIR/starter" "$TEST_DIR/bin" "worldserver" "" "$TEST_DIR/worldserver.conf" "" "" 0
kill "$listener_pid" 2>/dev/null || true
wait "$listener_pid" 2>/dev/null || true
debug_on_failure
[ "$status" -eq 0 ]
[[ "$output" =~ "Startup guard: refusing to start duplicate worldserver" ]]
[[ "$output" =~ "configured port(s) still listening: $listen_port" ]]
}
@test "starter: should parse config keys literally for startup guard" {
if ! command -v nc >/dev/null 2>&1; then
skip "nc is required for this test"
fi
cat > "$TEST_DIR/bin/worldserver" << 'EOF'
#!/usr/bin/env bash
echo "worldserver started"
EOF
chmod +x "$TEST_DIR/bin/worldserver"
local listen_port=40124
cat > "$TEST_DIR/worldserver.conf" << EOF
WorldServerPort = 40125
SOAPXEnabled = 1
SOAPXPort = $listen_port
SOAP.Enabled = 0
EOF
nc -l 127.0.0.1 "$listen_port" >/dev/null &
local listener_pid=$!
AC_STARTUP_GUARD_TIMEOUT=1 AC_STARTUP_GUARD_INTERVAL=1 run timeout 5s "$SCRIPT_DIR/starter" "$TEST_DIR/bin" "worldserver" "" "$TEST_DIR/worldserver.conf" "" "" 0
kill "$listener_pid" 2>/dev/null || true
wait "$listener_pid" 2>/dev/null || true
debug_on_failure
[ "$status" -eq 0 ]
[[ "$output" =~ "worldserver started" ]]
[[ ! "$output" =~ "Startup guard: refusing" ]]
}
# ===== SIMPLE RESTARTER TESTS =====
@test "simple-restarter: should fail with missing parameters" {
run timeout 3s "$SCRIPT_DIR/simple-restarter" '' ''
[ "$status" -ne 0 ]
[[ "$output" =~ "Error: Binary path and file are required" ]]
}
@test "simple-restarter: should fail with missing binary" {
run timeout 3s "$SCRIPT_DIR/simple-restarter" "$TEST_DIR/bin" 'nonexistent'
[ "$status" -ne 0 ]
[[ "$output" =~ "not found" ]] || [[ "$output" =~ "terminated with exit code" ]]
}
@test "simple-restarter: should detect starter script" {
# Test that it finds the starter script
run timeout 1s "$SCRIPT_DIR/simple-restarter" '' ''
# Should not fail because starter script is missing
[[ ! "$output" =~ "starter script not found" ]]
}
# ===== RUN-ENGINE TESTS =====
@test "run-engine: should show help" {
run "$SCRIPT_DIR/run-engine" help
[ "$status" -eq 0 ]
[[ "$output" =~ "AzerothCore Run Engine" ]]
}
@test "run-engine: should validate parameters for start command" {
run "$SCRIPT_DIR/run-engine" start
[ "$status" -ne 0 ]
[[ "$output" =~ "Missing required arguments" ]]
}
@test "run-engine: should detect binary with full path" {
run timeout 5s "$SCRIPT_DIR/run-engine" start "$TEST_DIR/bin/test-server" --server-config "$TEST_DIR/test-server.conf"
debug_on_failure
[[ "$output" =~ "Starting server: test-server" ]] || [[ "$status" -eq 124 ]]
}
@test "run-engine: should detect binary in current directory" {
cd "$TEST_DIR/bin"
run timeout 5s "$SCRIPT_DIR/run-engine" start test-server --server-config "$TEST_DIR/test-server.conf"
debug_on_failure
[[ "$output" =~ "Binary found in current directory" ]] || [[ "$output" =~ "Starting server: test-server" ]] || [[ "$status" -eq 124 ]]
}
@test "run-engine: should support restart mode" {
run timeout 5s "$SCRIPT_DIR/run-engine" restart "$TEST_DIR/bin/test-server" --server-config "$TEST_DIR/test-server.conf"
debug_on_failure
[[ "$output" =~ "Starting server: test-server" ]] || [[ "$status" -eq 124 ]]
}
# ===== SERVICE MANAGER TESTS =====
@test "service-manager: should show help" {
run "$SCRIPT_DIR/service-manager.sh" help
[ "$status" -eq 0 ]
[[ "$output" =~ "AzerothCore Service Setup" ]]
}
@test "service-manager: should validate create command parameters" {
run "$SCRIPT_DIR/service-manager.sh" create
[ "$status" -ne 0 ]
[[ "$output" =~ "Missing required arguments" ]] || [[ "$output" =~ "Error:" ]]
}
@test "service-manager: should validate restart policy values" {
run "$SCRIPT_DIR/service-manager.sh" create auth test-auth --bin-path /nonexistent --restart-policy invalid
[ "$status" -ne 0 ]
[[ "$output" =~ "Invalid restart policy" ]]
}
@test "service-manager: should accept valid restart policy values" {
# Test on-failure (should be accepted)
run "$SCRIPT_DIR/service-manager.sh" create auth test-auth --bin-path /nonexistent --restart-policy on-failure
# Should fail due to missing binary, not restart policy validation
[[ ! "$output" =~ "Invalid restart policy" ]]
# Test always (should be accepted)
run "$SCRIPT_DIR/service-manager.sh" create auth test-auth2 --bin-path /nonexistent --restart-policy always
# Should fail due to missing binary, not restart policy validation
[[ ! "$output" =~ "Invalid restart policy" ]]
}
@test "service-manager: should include restart policy in help output" {
run "$SCRIPT_DIR/service-manager.sh" help
[ "$status" -eq 0 ]
[[ "$output" =~ "--restart-policy" ]]
[[ "$output" =~ "on-failure|always" ]]
}
@test "service-manager: help lists health and console commands" {
run "$SCRIPT_DIR/service-manager.sh" help
[ "$status" -eq 0 ]
[[ "$output" =~ "is-running <service-name>" ]]
[[ "$output" =~ "uptime-seconds <service-name>" ]]
[[ "$output" =~ "wait-uptime <service> <sec>" ]]
[[ "$output" =~ "send <service-name>" ]]
[[ "$output" =~ "show-config <service-name>" ]]
}
@test "service-manager: pm2 uptime and wait-uptime work with mocked pm2" {
command -v jq >/dev/null 2>&1 || skip "jq not installed"
export AC_SERVICE_CONFIG_DIR="$TEST_DIR/services"
mkdir -p "$AC_SERVICE_CONFIG_DIR"
# Create registry with pm2 provider service
cat > "$AC_SERVICE_CONFIG_DIR/service_registry.json" << 'EOF'
[
{
"name":"test-world",
"provider":"pm2",
"type":"service",
"bin_path":"/bin/worldserver",
"args":"",
"systemd_type":"--user",
"restart_policy":"always",
"exec":{
"command":"/bin/true",
"args":[]
}
}
]
EOF
# Create minimal service config and run-engine config files required by 'send'
echo "RUN_ENGINE_CONFIG_FILE=\"$AC_SERVICE_CONFIG_DIR/test-world-run-engine.conf\"" > "$AC_SERVICE_CONFIG_DIR/test-world.conf"
cat > "$AC_SERVICE_CONFIG_DIR/test-world-run-engine.conf" << 'EOF'
export SESSION_MANAGER="none"
export SESSION_NAME="test-world"
EOF
# Mock pm2
cat > "$TEST_DIR/bin/pm2" << 'EOF'
#!/usr/bin/env bash
case "$1" in
jlist)
# Produce a JSON with uptime ~20 seconds
if date +%s%N >/dev/null 2>&1; then
nowms=$(( $(date +%s%N) / 1000000 ))
else
nowms=$(( $(date +%s) * 1000 ))
fi
up=$(( nowms - 20000 ))
echo "[{\"name\":\"test-world\",\"pm2_env\":{\"status\":\"online\",\"pm_uptime\":$up}}]"
;;
id)
echo "[1]"
;;
attach|send|list|describe|logs)
exit 0
;;
*)
exit 0
;;
esac
EOF
chmod +x "$TEST_DIR/bin/pm2"
run "$SCRIPT_DIR/service-manager.sh" uptime-seconds test-world
debug_on_failure
[ "$status" -eq 0 ]
# Output should be a number >= 10
[[ "$output" =~ ^[0-9]+$ ]]
[ "$output" -ge 10 ]
run "$SCRIPT_DIR/service-manager.sh" wait-uptime test-world 10 5
debug_on_failure
[ "$status" -eq 0 ]
}
@test "service-manager: send works under pm2 with mocked pm2" {
command -v jq >/dev/null 2>&1 || skip "jq not installed"
export AC_SERVICE_CONFIG_DIR="$TEST_DIR/services"
mkdir -p "$AC_SERVICE_CONFIG_DIR"
# Create registry and config as in previous test
cat > "$AC_SERVICE_CONFIG_DIR/service_registry.json" << 'EOF'
[
{
"name":"test-world",
"provider":"pm2",
"type":"service",
"bin_path":"/bin/worldserver",
"args":"",
"systemd_type":"--user",
"restart_policy":"always",
"exec":{
"command":"/bin/true",
"args":[]
}
}
]
EOF
echo "RUN_ENGINE_CONFIG_FILE=\"$AC_SERVICE_CONFIG_DIR/test-world-run-engine.conf\"" > "$AC_SERVICE_CONFIG_DIR/test-world.conf"
cat > "$AC_SERVICE_CONFIG_DIR/test-world-run-engine.conf" << 'EOF'
export SESSION_MANAGER="none"
export SESSION_NAME="test-world"
EOF
# pm2 mock
cat > "$TEST_DIR/bin/pm2" << 'EOF'
#!/usr/bin/env bash
case "$1" in
jlist)
if date +%s%N >/dev/null 2>&1; then
nowms=$(( $(date +%s%N) / 1000000 ))
else
nowms=$(( $(date +%s) * 1000 ))
fi
up=$(( nowms - 15000 ))
echo "[{\"name\":\"test-world\",\"pm2_env\":{\"status\":\"online\",\"pm_uptime\":$up}}]"
;;
id)
echo "[1]"
;;
send)
# simulate success
exit 0
;;
attach|list|describe|logs)
exit 0
;;
*)
exit 0
;;
esac
EOF
chmod +x "$TEST_DIR/bin/pm2"
run "$SCRIPT_DIR/service-manager.sh" send test-world "server info"
debug_on_failure
[ "$status" -eq 0 ]
}
@test "service-manager: restore helper recreates missing configs" {
command -v jq >/dev/null 2>&1 || skip "jq not installed"
export AC_SERVICE_CONFIG_DIR="$TEST_DIR/services"
mkdir -p "$AC_SERVICE_CONFIG_DIR"
source "$SCRIPT_DIR/service-manager.sh"
local service_name="restore-test"
local run_engine_config="$AC_SERVICE_CONFIG_DIR/$service_name-run-engine.conf"
local service_conf="$AC_SERVICE_CONFIG_DIR/$service_name.conf"
rm -f "$run_engine_config" "$service_conf"
mkdir -p "$TEST_DIR/bin" "$TEST_DIR/etc"
touch "$TEST_DIR/bin/worldserver"
touch "$TEST_DIR/etc/worldserver.conf"
ensure_service_configs_restored "$service_name" "world" "systemd" "$TEST_DIR/bin/worldserver" "$TEST_DIR/etc/worldserver.conf" "always" "none" "0" "--user" "" "$run_engine_config"
[ -f "$run_engine_config" ]
[ -f "$service_conf" ]
grep -Fq 'export SESSION_MANAGER="none"' "$run_engine_config"
grep -Fq 'export BINPATH="'$TEST_DIR'/bin"' "$run_engine_config"
grep -Fq "RUN_ENGINE_CONFIG_FILE=\"$run_engine_config\"" "$service_conf"
grep -Fq 'RESTART_POLICY="always"' "$service_conf"
}
@test "service-manager: wait-uptime times out for unknown service" {
command -v jq >/dev/null 2>&1 || skip "jq not installed"
export AC_SERVICE_CONFIG_DIR="$TEST_DIR/services"
mkdir -p "$AC_SERVICE_CONFIG_DIR"
echo "[]" > "$AC_SERVICE_CONFIG_DIR/service_registry.json"
run "$SCRIPT_DIR/service-manager.sh" wait-uptime unknown 2 1
[ "$status" -ne 0 ]
}
# ===== EXAMPLE SCRIPTS TESTS =====
@test "examples: restarter-world should show configuration error" {
run "$SCRIPT_DIR/examples/restarter-world.sh"
[[ "$output" =~ "Configuration file not found" ]]
}
@test "examples: starter-auth should show configuration error" {
run "$SCRIPT_DIR/examples/starter-auth.sh"
[[ "$output" =~ "Configuration file not found" ]]
}
# ===== PATH PORTABILITY TESTS =====
@test "service-manager: path conversion functions work correctly" {
# Source the service-manager script to access helper functions
source "$SCRIPT_DIR/service-manager.sh"
# Test make_path_relative without AC_SERVICE_CONFIG_DIR
unset AC_SERVICE_CONFIG_DIR
result=$(make_path_relative "/absolute/path/test")
[[ "$result" == "/absolute/path/test" ]]
# Test make_path_relative with AC_SERVICE_CONFIG_DIR
export AC_SERVICE_CONFIG_DIR="/tmp/test-config"
mkdir -p "$AC_SERVICE_CONFIG_DIR/subdir"
result=$(make_path_relative "$AC_SERVICE_CONFIG_DIR/subdir/binary")
[[ "$result" == "subdir/binary" ]]
result=$(make_path_relative "/opt/bin/authserver")
[[ "$result" == "../../opt/bin/authserver" ]]
# Test make_path_absolute
result=$(make_path_absolute "subdir/binary")
[[ "$result" == "$AC_SERVICE_CONFIG_DIR/subdir/binary" ]]
result=$(make_path_absolute "../../opt/bin/authserver")
[[ "$result" == "/opt/bin/authserver" ]]
# Test absolute path stays absolute
result=$(make_path_absolute "/absolute/path")
[[ "$result" == "/absolute/path" ]]
# Cleanup
rm -rf "$AC_SERVICE_CONFIG_DIR"
unset AC_SERVICE_CONFIG_DIR
}
@test "service-manager: registry stores relative paths when possible" {
# Set up test environment
export AC_SERVICE_CONFIG_DIR="$TEST_DIR/service-config"
mkdir -p "$AC_SERVICE_CONFIG_DIR"
# Create a temporary service registry in our test directory
local test_registry="$AC_SERVICE_CONFIG_DIR/test_registry.json"
echo "[]" > "$test_registry"
# Source the service-manager and override REGISTRY_FILE
source "$SCRIPT_DIR/service-manager.sh"
REGISTRY_FILE="$test_registry"
# Create test binary directory under config dir
mkdir -p "$AC_SERVICE_CONFIG_DIR/bin"
# Test that paths under AC_SERVICE_CONFIG_DIR are stored as relative
add_service_to_registry "test-service" "pm2" "auth" "$AC_SERVICE_CONFIG_DIR/bin/authserver" "--config test.conf" "" "always" "none" "0" "" "$AC_SERVICE_CONFIG_DIR/etc/test.conf"
# Check that paths were stored as relative
local stored_bin_path=$(jq -r '.[0].bin_path' "$test_registry")
local stored_config_path=$(jq -r '.[0].server_config' "$test_registry")
[[ "$stored_bin_path" == "bin/authserver" ]]
[[ "$stored_config_path" == "etc/test.conf" ]]
# Test that absolute paths outside config dir are stored as absolute
add_service_to_registry "test-service2" "pm2" "auth" "/opt/azerothcore/bin/authserver" "--config test.conf" "" "always" "none" "0" "" "/opt/azerothcore/etc/test.conf"
local stored_bin_path2=$(jq -r '.[1].bin_path' "$test_registry")
local stored_config_path2=$(jq -r '.[1].server_config' "$test_registry")
local expected_bin_rel=$(make_path_relative "/opt/azerothcore/bin/authserver")
local expected_cfg_rel=$(make_path_relative "/opt/azerothcore/etc/test.conf")
[[ "$stored_bin_path2" == "$expected_bin_rel" ]]
[[ "$stored_config_path2" == "$expected_cfg_rel" ]]
# Cleanup
rm -rf "$AC_SERVICE_CONFIG_DIR"
unset AC_SERVICE_CONFIG_DIR
}
@test "service-manager: restore --sync-only recreates config files" {
command -v jq >/dev/null 2>&1 || skip "jq not installed"
export AC_SERVICE_CONFIG_DIR="$TEST_DIR/services"
mkdir -p "$AC_SERVICE_CONFIG_DIR"
cat > "$AC_SERVICE_CONFIG_DIR/service_registry.json" <<'EOF'
[
{
"name": "sync-test",
"provider": "pm2",
"type": "auth",
"bin_path": "bin/authserver",
"exec": {
"command": "../src/run-engine",
"args": [
"start",
"bin/authserver",
"--config",
"sync-test-run-engine.conf"
]
},
"args": "",
"created": "2025-10-12T20:00:54+02:00",
"status": "active",
"systemd_type": "--user",
"restart_policy": "always",
"session_manager": "none",
"gdb_enabled": "0",
"pm2_opts": " ",
"server_config": "etc/authserver.conf"
}
]
EOF
rm -f "$AC_SERVICE_CONFIG_DIR/sync-test.conf" "$AC_SERVICE_CONFIG_DIR/sync-test-run-engine.conf"
mkdir -p "$AC_SERVICE_CONFIG_DIR/bin" "$AC_SERVICE_CONFIG_DIR/etc"
touch "$AC_SERVICE_CONFIG_DIR/bin/authserver"
touch "$AC_SERVICE_CONFIG_DIR/etc/authserver.conf"
run "$SCRIPT_DIR/service-manager.sh" restore --sync-only
debug_on_failure
[ "$status" -eq 0 ]
[ -f "$AC_SERVICE_CONFIG_DIR/sync-test.conf" ]
[ -f "$AC_SERVICE_CONFIG_DIR/sync-test-run-engine.conf" ]
grep -Fq "RUN_ENGINE_CONFIG_FILE=\"$AC_SERVICE_CONFIG_DIR/sync-test-run-engine.conf\"" "$AC_SERVICE_CONFIG_DIR/sync-test.conf"
grep -Fq "export BINPATH=\"$AC_SERVICE_CONFIG_DIR/bin\"" "$AC_SERVICE_CONFIG_DIR/sync-test-run-engine.conf"
}
@test "examples: restarter-auth should show configuration error" {
run "$SCRIPT_DIR/examples/restarter-auth.sh"
[[ "$output" =~ "Configuration file not found" ]]
}
@test "examples: restarter-world should show alternative suggestions" {
run "$SCRIPT_DIR/examples/restarter-world.sh"
[[ "$output" =~ "Alternative: Start with binary path directly" ]]
}
# ===== INTEGRATION TESTS =====
@test "integration: starter and simple-restarter work together" {
# Test that simple-restarter can use starter
run timeout 5s "$SCRIPT_DIR/simple-restarter" "$TEST_DIR/bin" "test-server"
# Should start and then restart at least once
[[ "$output" =~ "terminated with exit code" ]] || [[ "$status" -eq 124 ]]
}
@test "integration: run-engine can handle missing config gracefully" {
run timeout 3s "$SCRIPT_DIR/run-engine" start "$TEST_DIR/bin/test-server"
# Should either work or give a meaningful error
[[ "$status" -eq 124 ]] || [[ "$status" -eq 0 ]] || [[ "$output" =~ "config" ]]
}
+416
View File
@@ -0,0 +1,416 @@
# AzerothCore Test Framework
This is the centralized test framework for all AzerothCore bash scripts. It provides a unified way to write, run, and manage tests across all modules.
## Structure
```
apps/test-framework/
├── test-main.sh # Unified test framework entry point
├── run-bash-tests.sh # Bash test runner for BATS tests
├── run-core-tests.sh # AzerothCore unit test runner
├── README.md # This documentation
├── bats_libs/ # Custom BATS libraries
│ ├── acore-support.bash # Test setup and helpers
│ └── acore-assert.bash # Custom assertions
└── helpers/ # Test utilities
└── test_common.sh # Common test functions and setup
```
## Quick Start
### Using acore.sh (Recommended):
```bash
# Run the unified test framework (interactive menu)
./acore.sh test
# Run bash tests directly
./acore.sh test bash --all
# Run AzerothCore unit tests
./acore.sh test core
```
### From any module directory:
```bash
# Run tests for current module
../test-framework/run-bash-tests.sh --dir .
```
### From test-framework directory:
```bash
# Run all tests in all modules
./run-bash-tests.sh --all
# Run tests for specific module
./run-bash-tests.sh startup-scripts
# List available modules
./run-bash-tests.sh --list
# Run tests with debug info
./run-bash-tests.sh --all --debug
```
### From project root:
```bash
# Run all tests
apps/test-framework/run-bash-tests.sh --all
# Run specific module
apps/test-framework/run-bash-tests.sh startup-scripts
# Run with verbose output
apps/test-framework/run-bash-tests.sh startup-scripts --verbose
```
## Test Types
The framework now supports two types of tests:
1. **Bash Tests** - BATS-based tests for bash scripts and functionality
2. **Core Tests** - AzerothCore C++ unit tests
### Unified Test Framework
The test framework provides a unified entry point through `test-main.sh` which presents an interactive menu:
- **bash**: Run BATS-based bash script tests
- **core**: Run AzerothCore C++ unit tests
- **quit**: Exit the test framework
```bash
# Interactive test menu
./acore.sh test
# Direct test execution
./acore.sh test bash --all # Run all bash tests
./acore.sh test core # Run core unit tests
```
## Usage
### Basic Commands
```bash
# Run all tests
./run-bash-tests.sh --all
# Run tests for specific module
./run-bash-tests.sh startup-scripts
# Run tests matching pattern
./run-bash-tests.sh --filter starter
# Run tests in specific directory
./run-bash-tests.sh --dir apps/docker
# Show available modules
./run-bash-tests.sh --list
# Show test count
./run-bash-tests.sh --count
```
### Output Formats
```bash
# Pretty output (default)
./run-bash-tests.sh --pretty
# TAP output for CI/CD
./run-bash-tests.sh --tap
# Verbose output with debug info
./run-bash-tests.sh --verbose --debug
```
## Writing Tests
### Basic Test Structure
```bash
#!/usr/bin/env bats
# Load the AzerothCore test framework
load '../../test-framework/bats_libs/acore-support'
load '../../test-framework/bats_libs/acore-assert'
setup() {
acore_test_setup # Standard setup
# or
startup_scripts_setup # For startup scripts
# or
compiler_setup # For compiler tests
# or
docker_setup # For docker tests
}
teardown() {
acore_test_teardown
}
@test "my test description" {
run my_command
assert_success
assert_output "expected output"
}
```
### Available Setup Functions
- `acore_test_setup` - Basic setup for all tests
- `startup_scripts_setup` - Setup for startup script tests
- `compiler_setup` - Setup for compiler tests
- `docker_setup` - Setup for docker tests
- `extractor_setup` - Setup for extractor tests
### Custom Assertions
```bash
# Assert binary exists and is executable
assert_binary_exists "$TEST_DIR/bin/authserver"
# Assert server started correctly
assert_acore_server_started "$output" "authserver"
# Assert config was loaded
assert_config_loaded "$output" "authserver.conf"
# Assert build success
assert_build_success "$output"
# Assert timeout occurred (for long-running processes)
assert_timeout "$status"
# Assert log contains content
assert_log_contains "$log_file" "Server started"
```
### Test Environment Variables
When using the framework, these variables are automatically set:
- `$TEST_DIR` - Temporary test directory
- `$AC_TEST_ROOT` - Project root directory
- `$AC_TEST_APPS` - Apps directory
- `$BUILDPATH` - Build directory path
- `$SRCPATH` - Source directory path
- `$BINPATH` - Binary directory path
- `$LOGS_PATH` - Logs directory path
### Helper Functions
```bash
# Create test binary
create_test_binary "authserver" 0 2 "Server started"
# Create test config
create_test_config "authserver.conf" "Database.Info = \"127.0.0.1;3306;root;pass;db\""
# Create AzerothCore specific binaries and configs
create_acore_binaries
create_acore_configs
# Run command with timeout
run_with_timeout 5s my_command
# Wait for condition
wait_for_condition "test -f $TEST_DIR/ready" 10 1
# Debug test failure
debug_on_failure
```
## Module Integration
### Adding Tests to a New Module
1. Create a `test/` directory in your module:
```bash
mkdir apps/my-module/test
```
2. Create test files (ending in `.bats`):
```bash
touch apps/my-module/test/test_my_feature.bats
```
3. Write your tests using the framework (see examples above)
### Running Tests
From your module directory:
```bash
../test-framework/run-bash-tests.sh --dir .
```
From the test framework:
```bash
./run-bash-tests.sh my-module
```
From project root:
```bash
apps/test-framework/run-bash-tests.sh my-module
```
## CI/CD Integration
For continuous integration, use TAP output:
```bash
# Recommended: Use acore.sh integration
./acore.sh test bash --tap --all > test-results.tap
# Direct script usage
cd apps/test-framework
./run-bash-tests.sh --all --tap > test-results.tap
# Or from project root
apps/test-framework/run-bash-tests.sh --all --tap > test-results.tap
# Run core unit tests in CI
./acore.sh test core
```
## Core Tests
The framework now includes support for AzerothCore's C++ unit tests through `run-core-tests.sh`:
```bash
# Run core unit tests
./acore.sh test core
# Direct script usage
apps/test-framework/run-core-tests.sh
```
**Prerequisites for Core Tests:**
- Project must be built with unit tests enabled (`CBUILD_TESTING="ON"` inside `conf/config.sh` that works with the acore.sh compiler)
- Unit test binary should be available at `$BUILDPATH/src/test/unit_tests`
The core test runner will:
1. Check if the unit test binary exists
2. Execute the AzerothCore unit tests
3. Return appropriate exit codes for CI/CD integration
## Available Commands
### Unified Test Framework Commands
Recommended usage through `acore.sh`:
- `./acore.sh test` - Interactive test framework menu
- `./acore.sh test bash [options]` - Run bash tests with options
- `./acore.sh test core` - Run AzerothCore unit tests
### Bash Test Commands
All bash test functionality is available through the `run-bash-tests.sh` script:
### Basic Test Execution
- `./run-bash-tests.sh --all` - Run all tests in all modules
- `./run-bash-tests.sh <module>` - Run tests for specific module
- `./run-bash-tests.sh --dir <path>` - Run tests in specific directory
- `./run-bash-tests.sh --list` - List available modules
- `./run-bash-tests.sh --count` - Show test count
### Output Control
- `./run-bash-tests.sh --verbose` - Verbose output with debug info
- `./run-bash-tests.sh --tap` - TAP output for CI/CD
- `./run-bash-tests.sh --debug` - Debug mode with failure details
- `./run-bash-tests.sh --pretty` - Pretty output (default)
### Test Filtering
- `./run-bash-tests.sh --filter <pattern>` - Run tests matching pattern
- `./run-bash-tests.sh <module> --filter <pattern>` - Filter within module
### Utility Functions
- `./run-bash-tests.sh --help` - Show help message
- Install BATS: Use your system package manager (`apt install bats`, `brew install bats-core`, etc.)
### Direct Script Usage
## Examples
### Running Specific Tests
```bash
# Run only starter-related tests
./run-bash-tests.sh --filter starter
# Run only tests in startup-scripts module
./run-bash-tests.sh startup-scripts
# Run all tests with verbose output
./run-bash-tests.sh --all --verbose
# Run tests in specific directory with debug
./run-bash-tests.sh --dir apps/docker --debug
```
### Development Workflow
```bash
# Recommended: Use acore.sh for unified testing
./acore.sh test # Interactive menu
./acore.sh test bash --all # All bash tests
./acore.sh test core # Core unit tests
# While developing, run tests frequently from module directory
cd apps/my-module
../test-framework/run-bash-tests.sh --dir .
# Debug failing tests
../test-framework/run-bash-tests.sh --dir . --debug --verbose
# Run specific test pattern
../test-framework/run-bash-tests.sh --dir . --filter my-feature
# From project root - run all tests
./acore.sh test bash --all # Recommended
apps/test-framework/run-bash-tests.sh --all # Direct
# Quick test count check
./acore.sh test bash --count # Recommended
apps/test-framework/run-bash-tests.sh --count # Direct
```
## Benefits
1. **No Boilerplate**: Minimal setup required for new test modules
2. **Consistent Environment**: All tests use the same setup/teardown
3. **Reusable Utilities**: Common functions available across all tests
4. **Centralized Management**: Single place to update test infrastructure
5. **Flexible Execution**: Run tests for one module, multiple modules, or all modules
6. **CI/CD Ready**: TAP output format supported
7. **Easy Debugging**: Built-in debug helpers and verbose output
## Dependencies
- [BATS (Bash Automated Testing System)](https://github.com/bats-core/bats-core)
- Standard Unix utilities (find, grep, timeout, etc.)
Install BATS with your system package manager:
```bash
# Ubuntu/Debian
sudo apt update && sudo apt install bats
# Fedora/RHEL
sudo dnf install bats
# macOS
brew install bats-core
# Arch Linux
sudo pacman -S bats
```
## Contributing
When adding new test utilities:
1. Add common functions to `helpers/test_common.sh`
2. Add BATS-specific helpers to `bats_libs/acore-support.bash`
3. Add custom assertions to `bats_libs/acore-assert.bash`
4. Update this README with new functionality
@@ -0,0 +1,178 @@
#!/usr/bin/env bash
# AzerothCore BATS Assertions Library
# Custom assertions for AzerothCore testing
# Assert that a binary exists and is executable
assert_binary_exists() {
local binary_path="$1"
local message="${2:-Binary should exist and be executable}"
if [[ ! -f "$binary_path" ]]; then
echo "Binary not found: $binary_path"
echo "$message"
return 1
fi
if [[ ! -x "$binary_path" ]]; then
echo "Binary not executable: $binary_path"
echo "$message"
return 1
fi
}
# Assert that output contains specific AzerothCore patterns
assert_acore_server_started() {
local output="$1"
local server_type="$2"
local message="${3:-Server should show startup message}"
if [[ ! "$output" =~ $server_type.*starting ]]; then
echo "Server start message not found for $server_type"
echo "Expected pattern: '$server_type.*starting'"
echo "Actual output: $output"
echo "$message"
return 1
fi
}
# Assert that configuration file was loaded
assert_config_loaded() {
local output="$1"
local config_file="$2"
local message="${3:-Configuration file should be loaded}"
if [[ ! "$output" =~ config.*$config_file ]] && [[ ! "$output" =~ $config_file ]]; then
echo "Configuration file loading not detected: $config_file"
echo "Expected to find: config.*$config_file OR $config_file"
echo "Actual output: $output"
echo "$message"
return 1
fi
}
# Assert that a process exited with expected code
assert_exit_code() {
local actual_code="$1"
local expected_code="$2"
local message="${3:-Process should exit with expected code}"
if [[ "$actual_code" -ne "$expected_code" ]]; then
echo "Expected exit code: $expected_code"
echo "Actual exit code: $actual_code"
echo "$message"
return 1
fi
}
# Assert that output contains specific error pattern
assert_error_message() {
local output="$1"
local error_pattern="$2"
local message="${3:-Output should contain expected error message}"
if [[ ! "$output" =~ $error_pattern ]]; then
echo "Expected error pattern not found: $error_pattern"
echo "Actual output: $output"
echo "$message"
return 1
fi
}
# Assert that a file was created
assert_file_created() {
local file_path="$1"
local message="${2:-File should be created}"
if [[ ! -f "$file_path" ]]; then
echo "File not created: $file_path"
echo "$message"
return 1
fi
}
# Assert that a directory was created
assert_directory_created() {
local dir_path="$1"
local message="${2:-Directory should be created}"
if [[ ! -d "$dir_path" ]]; then
echo "Directory not created: $dir_path"
echo "$message"
return 1
fi
}
# Assert that output contains success message
assert_success_message() {
local output="$1"
local success_pattern="${2:-success|completed|finished|done}"
local message="${3:-Output should contain success message}"
if [[ ! "$output" =~ $success_pattern ]]; then
echo "Success message not found"
echo "Expected pattern: $success_pattern"
echo "Actual output: $output"
echo "$message"
return 1
fi
}
# Assert that build was successful
assert_build_success() {
local output="$1"
local message="${2:-Build should complete successfully}"
local build_success_patterns="Build completed|compilation successful|build.*success|make.*success"
assert_success_message "$output" "$build_success_patterns" "$message"
}
# Assert that server is responsive
assert_server_responsive() {
local output="$1"
local server_type="$2"
local message="${3:-Server should be responsive}"
if [[ ! "$output" =~ $server_type.*initialized ]] && [[ ! "$output" =~ $server_type.*ready ]]; then
echo "Server responsiveness not detected for $server_type"
echo "Expected pattern: '$server_type.*initialized' OR '$server_type.*ready'"
echo "Actual output: $output"
echo "$message"
return 1
fi
}
# Assert that timeout occurred (for long-running processes)
assert_timeout() {
local exit_code="$1"
local message="${2:-Process should timeout as expected}"
if [[ "$exit_code" -ne 124 ]]; then
echo "Expected timeout (exit code 124)"
echo "Actual exit code: $exit_code"
echo "$message"
return 1
fi
}
# Assert that log file contains expected content
assert_log_contains() {
local log_file="$1"
local expected_content="$2"
local message="${3:-Log file should contain expected content}"
if [[ ! -f "$log_file" ]]; then
echo "Log file not found: $log_file"
echo "$message"
return 1
fi
if ! grep -q "$expected_content" "$log_file"; then
echo "Expected content not found in log: $expected_content"
echo "Log file: $log_file"
echo "Log contents:"
cat "$log_file" | head -20
echo "$message"
return 1
fi
}
@@ -0,0 +1,116 @@
#!/usr/bin/env bash
# AzerothCore BATS Support Library
# Additional helper functions for BATS testing
# Load common test utilities
source "$(dirname "${BASH_SOURCE[0]}")/../helpers/test_common.sh"
# Standard setup for all AzerothCore tests
acore_test_setup() {
setup_test_env
create_acore_binaries
create_acore_configs
}
# Standard teardown for all AzerothCore tests
acore_test_teardown() {
cleanup_test_env
}
# Quick setup for startup script tests
startup_scripts_setup() {
acore_test_setup
create_test_script_config "test" "test-server"
# Create additional test binary for startup scripts
create_test_binary "test-server" 0 2 "Test server starting with config:"
# Create the test-server.conf file that tests expect
cat > "$TEST_DIR/test-server.conf" << EOF
# Test server configuration file
# Generated by AzerothCore test framework
Database.Info = "127.0.0.1;3306;acore;acore;acore_world"
LoginDatabaseInfo = "127.0.0.1;3306;acore;acore;acore_auth"
CharacterDatabaseInfo = "127.0.0.1;3306;acore;acore;acore_characters"
EOF
}
# Quick setup for compiler tests
compiler_setup() {
acore_test_setup
# Create mock build tools
create_test_binary "gcc" 0 1
create_test_binary "g++" 0 1
create_test_binary "ninja" 0 2
# Create mock CMake files
mkdir -p "$TEST_DIR/build"
touch "$TEST_DIR/build/CMakeCache.txt"
echo "CMAKE_BUILD_TYPE:STRING=RelWithDebInfo" > "$TEST_DIR/build/CMakeCache.txt"
}
# Quick setup for docker tests
docker_setup() {
acore_test_setup
# Create mock docker commands
create_test_binary "docker" 0 1 "Docker container started"
create_test_binary "docker-compose" 0 2 "Docker Compose services started"
# Create test docker files
cat > "$TEST_DIR/Dockerfile" << 'EOF'
FROM ubuntu:20.04
RUN apt-get update
EOF
cat > "$TEST_DIR/docker-compose.yml" << 'EOF'
version: '3.8'
services:
test-service:
image: ubuntu:20.04
EOF
}
# Quick setup for extractor tests
extractor_setup() {
acore_test_setup
# Create mock client data directories
mkdir -p "$TEST_DIR/client"/{Maps,vmaps,mmaps,dbc}
# Create some test data files
echo "Test map data" > "$TEST_DIR/client/Maps/test.map"
echo "Test DBC data" > "$TEST_DIR/client/dbc/test.dbc"
}
# Helper to run command with timeout and capture output
run_with_timeout() {
local timeout_duration="$1"
shift
run timeout "$timeout_duration" "$@"
}
# Helper to check if a process is running
process_running() {
local process_name="$1"
pgrep -f "$process_name" >/dev/null 2>&1
}
# Helper to wait for a condition
wait_for_condition() {
local condition="$1"
local timeout="${2:-10}"
local interval="${3:-1}"
local count=0
while ! eval "$condition"; do
sleep "$interval"
count=$((count + interval))
if [[ $count -ge $timeout ]]; then
return 1
fi
done
return 0
}
+143
View File
@@ -0,0 +1,143 @@
#!/usr/bin/env bash
# AzerothCore Test Common Utilities
# Shared functions and setup for all BATS tests
export AC_TEST_FRAMEWORK_VERSION="1.0.0"
# Get paths
AC_TEST_FRAMEWORK_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
AC_PROJECT_ROOT="$(cd "$AC_TEST_FRAMEWORK_DIR/../.." && pwd)"
# Common test environment setup
setup_test_env() {
export TEST_DIR="$(mktemp -d)"
export AC_TEST_ROOT="$AC_PROJECT_ROOT"
export AC_TEST_APPS="$AC_TEST_ROOT/apps"
# Create standard test directory structure
mkdir -p "$TEST_DIR"/{bin,etc,logs,data,crashes,build}
# Set up test-specific environment variables
export ORIGINAL_PATH="$PATH"
export PATH="$TEST_DIR/bin:$PATH"
# Common environment variables for AzerothCore
export BUILDPATH="$TEST_DIR/build"
export SRCPATH="$AC_TEST_ROOT"
export BINPATH="$TEST_DIR/bin"
export LOGS_PATH="$TEST_DIR/logs"
}
cleanup_test_env() {
if [[ -n "$TEST_DIR" && -d "$TEST_DIR" ]]; then
rm -rf "$TEST_DIR"
fi
if [[ -n "$ORIGINAL_PATH" ]]; then
export PATH="$ORIGINAL_PATH"
fi
}
# Create standard test binary
create_test_binary() {
local binary_name="$1"
local exit_code="${2:-0}"
local runtime="${3:-2}"
local extra_output="${4:-""}"
cat > "$TEST_DIR/bin/$binary_name" << EOF
#!/usr/bin/env bash
echo "$binary_name starting with config: \$2"
echo "$binary_name running for $runtime seconds..."
if [[ -n "$extra_output" ]]; then
echo "$extra_output"
fi
sleep $runtime
echo "$binary_name exiting with code $exit_code"
exit $exit_code
EOF
chmod +x "$TEST_DIR/bin/$binary_name"
}
# Create test configuration file
create_test_config() {
local config_name="$1"
local content="$2"
cat > "$TEST_DIR/etc/$config_name" << EOF
# Test configuration file: $config_name
# Generated by AzerothCore test framework
$content
EOF
}
# Create AzerothCore specific test binaries
create_acore_binaries() {
create_test_binary "authserver" 0 1 "AuthServer initialized"
create_test_binary "worldserver" 0 2 "WorldServer initialized"
create_test_binary "cmake" 0 1 "CMake configured"
create_test_binary "make" 0 2 "Build completed"
create_test_binary "mapextractor" 0 3 "Map extraction completed"
create_test_binary "vmap4extractor" 0 2 "VMap extraction completed"
create_test_binary "vmap4assembler" 0 1 "VMap assembly completed"
create_test_binary "mmaps_generator" 0 5 "MMap generation completed"
}
# Create AzerothCore specific test configs
create_acore_configs() {
create_test_config "authserver.conf" 'Database.Info = "127.0.0.1;3306;acore;acore;acore_auth"
LoginDatabaseInfo = "127.0.0.1;3306;acore;acore;acore_auth"'
create_test_config "worldserver.conf" 'Database.Info = "127.0.0.1;3306;acore;acore;acore_world"
LoginDatabaseInfo = "127.0.0.1;3306;acore;acore;acore_auth"
CharacterDatabaseInfo = "127.0.0.1;3306;acore;acore;acore_characters"'
create_test_config "config.sh" "export BUILDPATH=\"$TEST_DIR/build\"
export SRCPATH=\"$AC_TEST_ROOT\"
export BINPATH=\"$TEST_DIR/bin\"
export LOGS_PATH=\"$TEST_DIR/logs\""
}
# Create a test script configuration (for startup scripts)
create_test_script_config() {
local script_name="$1"
local binary_name="${2:-authserver}"
cat > "$TEST_DIR/conf-$script_name.sh" << EOF
export BINPATH="$TEST_DIR/bin"
export SERVERBIN="$binary_name"
export CONFIG="$TEST_DIR/etc/$binary_name.conf"
export LOGS_PATH="$TEST_DIR/logs"
export LOG_PREFIX_NAME="$script_name"
export SCREEN_NAME="AC-$script_name"
export GDB_ENABLED=0
export WITH_CONSOLE=1
EOF
}
# Debug helper function
debug_on_failure() {
if [[ "$status" -ne 0 ]]; then
echo "Command failed with status: $status" >&3
echo "Output was:" >&3
echo "$output" >&3
if [[ -n "$TEST_DIR" ]]; then
echo "Test directory contents:" >&3
ls -la "$TEST_DIR" >&3 2>/dev/null || true
fi
fi
}
# Print test environment info
print_test_env() {
echo "Test Environment:" >&3
echo " TEST_DIR: $TEST_DIR" >&3
echo " AC_TEST_ROOT: $AC_TEST_ROOT" >&3
echo " AC_TEST_APPS: $AC_TEST_APPS" >&3
echo " PATH: $PATH" >&3
}
# Check if running in test mode
is_test_mode() {
[[ -n "$BATS_TEST_FILENAME" ]] || [[ -n "$TEST_DIR" ]]
}
+314
View File
@@ -0,0 +1,314 @@
#!/usr/bin/env bash
# AzerothCore Universal Test Runner
# This script provides a unified way to run BATS tests across all modules
# Get the script directory and project root
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
# Count cores for parallel execution
if [[ -z "$ACORE_TEST_CORES" ]]; then
if command -v nproc >/dev/null 2>&1; then
ACORE_TEST_CORES=$(nproc)
elif command -v sysctl >/dev/null 2>&1; then
ACORE_TEST_CORES=$(sysctl -n hw.ncpu)
else
ACORE_TEST_CORES=1 # Fallback to single core if detection fails
fi
export ACORE_TEST_CORES
fi
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
show_help() {
echo -e "${BLUE}AzerothCore Universal Test Runner${NC}"
echo ""
echo "Usage: $0 [OPTIONS] [TEST_MODULES...]"
echo ""
echo "Options:"
echo " -h, --help Show this help message"
echo " -v, --verbose Enable verbose output"
echo " -t, --tap Use TAP output format (for CI/CD)"
echo " -p, --pretty Use pretty output format (default)"
echo " -f, --filter Run only tests matching pattern"
echo " -c, --count Show test count only"
echo " -d, --debug Enable debug mode (shows output on failure)"
echo " -l, --list List available test modules"
echo " -j, --jobs <num> Set number of parallel jobs (default: $ACORE_TEST_CORES)"
echo " --dir <path> Run tests in specific directory"
echo " --all Run all tests in all modules"
echo ""
echo "Test Modules:"
echo " startup-scripts - Startup script tests"
echo " compiler - Compiler script tests"
echo " docker - Docker-related tests"
echo " installer - Installer script tests"
echo ""
echo "Examples:"
echo " $0 # Run tests in current directory"
echo " $0 --all # Run all tests in all modules"
echo " $0 startup-scripts # Run startup-scripts tests only"
echo " $0 --dir apps/docker # Run tests in specific directory"
echo " $0 --verbose startup-scripts # Run with verbose output"
echo " $0 --filter starter # Run only tests matching 'starter'"
echo " $0 --tap # Output in TAP format for CI"
}
# Parse command line arguments
VERBOSE=false
TAP=false
PRETTY=true
FILTER=""
COUNT_ONLY=false
DEBUG=false
LIST_MODULES=false
RUN_ALL=false
TEST_DIRS=()
TEST_MODULES=()
while [[ $# -gt 0 ]]; do
case $1 in
-h|--help)
show_help
exit 0
;;
-v|--verbose)
VERBOSE=true
shift
;;
-t|--tap)
TAP=true
PRETTY=false
shift
;;
-p|--pretty)
PRETTY=true
TAP=false
shift
;;
-f|--filter)
FILTER="$2"
shift 2
;;
-c|--count)
COUNT_ONLY=true
shift
;;
-d|--debug)
DEBUG=true
shift
;;
-l|--list)
LIST_MODULES=true
shift
;;
--dir)
TEST_DIRS+=("$2")
shift 2
;;
--all)
RUN_ALL=true
shift
;;
-j|--jobs)
if [[ "$2" =~ ^[0-9]+$ ]]; then
ACORE_TEST_CORES="$2"
export ACORE_TEST_CORES
shift 2
else
echo -e "${RED}Error: Invalid number of jobs specified: $2${NC}"
echo "Please provide a valid number."
exit 1
fi
;;
*.bats)
# Individual test files
TEST_FILES+=("$1")
shift
;;
*)
# Assume it's a module name
TEST_MODULES+=("$1")
shift
;;
esac
done
# Check if BATS is installed
if ! command -v bats >/dev/null 2>&1; then
echo -e "${RED}Error: BATS is not installed${NC}"
echo "Please install BATS first:"
echo " sudo apt install bats # On Ubuntu/Debian"
echo " brew install bats-core # On macOS"
echo "Or run: make install-bats"
exit 1
fi
# Function to find test directories
find_test_directories() {
local search_paths=()
if [[ "$RUN_ALL" == true ]]; then
# Find all test directories
mapfile -t search_paths < <(find "$PROJECT_ROOT/apps" -type d -name "test" 2>/dev/null)
elif [[ ${#TEST_DIRS[@]} -gt 0 ]]; then
# Use specified directories
for dir in "${TEST_DIRS[@]}"; do
if [[ -d "$PROJECT_ROOT/$dir/test" ]]; then
search_paths+=("$PROJECT_ROOT/$dir/test")
elif [[ -d "$dir/test" ]]; then
search_paths+=("$dir/test")
elif [[ -d "$dir" ]]; then
search_paths+=("$dir")
else
echo -e "${YELLOW}Warning: Test directory not found: $dir${NC}"
fi
done
elif [[ ${#TEST_MODULES[@]} -gt 0 ]]; then
# Use specified modules
for module in "${TEST_MODULES[@]}"; do
if [[ -d "$PROJECT_ROOT/apps/$module/test" ]]; then
search_paths+=("$PROJECT_ROOT/apps/$module/test")
else
echo -e "${YELLOW}Warning: Module test directory not found: $module${NC}"
fi
done
else
# Default: use current directory or startup-scripts if run from test-framework
if [[ "$(basename "$PWD")" == "test-framework" ]]; then
search_paths=("$PROJECT_ROOT/apps/startup-scripts/test")
elif [[ -d "./test" ]]; then
search_paths=("./test")
else
echo -e "${YELLOW}No test directory found. Use --all or specify a module.${NC}"
exit 0
fi
fi
echo "${search_paths[@]}"
}
# Function to list available modules
list_modules() {
echo -e "${BLUE}Available test modules:${NC}"
find "$PROJECT_ROOT/apps" -type d -name "test" 2>/dev/null | while read -r test_dir; do
module_name=$(basename "$(dirname "$test_dir")")
test_count=$(find "$test_dir" -name "*.bats" | wc -l)
echo -e " ${GREEN}$module_name${NC} ($test_count test files)"
done
}
# Show available modules if requested
if [[ "$LIST_MODULES" == true ]]; then
list_modules
exit 0
fi
# Find test directories
TEST_SEARCH_PATHS=($(find_test_directories))
if [[ ${#TEST_SEARCH_PATHS[@]} -eq 0 ]]; then
echo -e "${YELLOW}No test directories found.${NC}"
echo "Use --list to see available modules."
exit 0
fi
# Collect all test files
TEST_FILES=()
for test_dir in "${TEST_SEARCH_PATHS[@]}"; do
if [[ -d "$test_dir" ]]; then
if [[ -n "$FILTER" ]]; then
# Find test files matching filter
mapfile -t filtered_files < <(find "$test_dir" -name "*.bats" -exec grep -l "$FILTER" {} \; 2>/dev/null)
TEST_FILES+=("${filtered_files[@]}")
else
# Use all test files in directory
mapfile -t dir_files < <(find "$test_dir" -name "*.bats" 2>/dev/null)
TEST_FILES+=("${dir_files[@]}")
fi
fi
done
if [[ ${#TEST_FILES[@]} -eq 0 ]]; then
if [[ -n "$FILTER" ]]; then
echo -e "${YELLOW}No test files found matching filter: $FILTER${NC}"
else
echo -e "${YELLOW}No test files found in specified directories.${NC}"
fi
exit 0
fi
# Show test count only
if [[ "$COUNT_ONLY" == true ]]; then
total_tests=0
for file in "${TEST_FILES[@]}"; do
count=$(grep -c "^@test" "$file" 2>/dev/null || echo 0)
total_tests=$((total_tests + count))
done
echo "Total tests: $total_tests"
echo "Test files: ${#TEST_FILES[@]}"
echo "Test directories: ${#TEST_SEARCH_PATHS[@]}"
exit 0
fi
# Build BATS command
BATS_CMD="bats --jobs $ACORE_TEST_CORES"
# Set output format
if [[ "$TAP" == true ]]; then
BATS_CMD+=" --formatter tap"
elif [[ "$PRETTY" == true ]]; then
BATS_CMD+=" --formatter pretty"
fi
# Enable verbose output
if [[ "$VERBOSE" == true ]]; then
BATS_CMD+=" --verbose-run"
fi
# Add filter if specified
if [[ -n "$FILTER" ]]; then
BATS_CMD+=" --filter '$FILTER'"
fi
# Add test files
BATS_CMD+=" ${TEST_FILES[*]}"
echo -e "${BLUE}Running AzerothCore Tests with ${ACORE_TEST_CORES} jobs${NC}"
echo -e "${YELLOW}Test directories: ${TEST_SEARCH_PATHS[*]}${NC}"
echo -e "${YELLOW}Test files: ${#TEST_FILES[@]}${NC}"
if [[ -n "$FILTER" ]]; then
echo -e "${YELLOW}Filter: $FILTER${NC}"
fi
echo ""
# Run tests
if [[ "$DEBUG" == true ]]; then
echo -e "${YELLOW}Command: $BATS_CMD${NC}"
echo ""
fi
# Execute BATS
if eval "$BATS_CMD"; then
echo ""
echo -e "${GREEN}✅ All tests passed!${NC}"
exit 0
else
exit_code=$?
echo ""
echo -e "${RED}❌ Some tests failed!${NC}"
if [[ "$DEBUG" == true ]]; then
echo -e "${YELLOW}Tip: Check the output above for detailed error information${NC}"
echo -e "${YELLOW}You can also run individual tests for more detailed debugging:${NC}"
echo -e "${YELLOW} $0 --verbose --filter <test_name>${NC}"
fi
exit $exit_code
fi

Some files were not shown because too many files have changed in this diff Show More