From 1710d4d1c3d23803dea6d404a19cdf9f687726c2 Mon Sep 17 00:00:00 2001 From: sudlud Date: Mon, 25 Dec 2023 07:06:15 +0100 Subject: [PATCH] fix(Scripts/Midsummer): Implement Midsummer Bonfire mechanics (#18023) --- .../rev_1701522254381754000.sql | 194 ++++++++++ .../apps/worldserver/worldserver.conf.dist | 1 + src/server/scripts/Events/midsummer.cpp | 360 +++++++++++++++++- 3 files changed, 553 insertions(+), 2 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1701522254381754000.sql diff --git a/data/sql/updates/pending_db_world/rev_1701522254381754000.sql b/data/sql/updates/pending_db_world/rev_1701522254381754000.sql new file mode 100644 index 000000000..8dff6af20 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1701522254381754000.sql @@ -0,0 +1,194 @@ +-- Implement Midsummer Bonfire Mechanics +-- Assign ArtKits to Alliance and Horde Bonfires +UPDATE `gameobject_template_addon` SET `artkit0` = 121, `artkit1` = 122 WHERE (`entry` IN (187564, 187914, 187916, 187917, 187919, 187920, 187921, 187922, 187923, 187924, 187925, 187926, 187927, 187928, 187929, 187930, 187931, 187932, 187933, 187934, 187935, 187936, 187937, 187938, 187939, 187940, 187941, 187942, 187943, 187944, 187945, 187946, 194032, 194035, 194036, 194038, 194040, 194044, 194045, 194049, 187559, 187947, 187948, 187949, 187950, 187951, 187952, 187953, 187954, 187955, 187956, 187957, 187958, 187959, 187960, 187961, 187962, 187963, 187964, 187965, 187966, 187967, 187968, 187969, 187970, 187971, 187972, 187973, 187974, 187975, 194033, 194034, 194037, 194039, 194042, 194043, 194046, 194048)); + +-- assign implicit targets to spells +-- 28806 'Toss Fuel on Bonfire' targets 16592 'Midsummer Bonfire' (already in DB) +-- 45437 'Stamp Out Bonfire' targets 16592 'Midsummer Bonfire' (already in DB) + +-- 46903 'Stamp Out Bonfire (Art Kit)' targets Alliance / Horde Bonfires +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceEntry` = 46903); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 1, 46903, 0, 0, 31, 0, 5, 187564, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 1, 31, 0, 5, 187914, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 2, 31, 0, 5, 187916, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 3, 31, 0, 5, 187917, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 4, 31, 0, 5, 187919, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 5, 31, 0, 5, 187920, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 6, 31, 0, 5, 187921, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 7, 31, 0, 5, 187922, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 8, 31, 0, 5, 187923, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 9, 31, 0, 5, 187924, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 10, 31, 0, 5, 187925, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 11, 31, 0, 5, 187926, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 12, 31, 0, 5, 187927, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 13, 31, 0, 5, 187928, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 14, 31, 0, 5, 187929, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 15, 31, 0, 5, 187930, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 16, 31, 0, 5, 187931, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 17, 31, 0, 5, 187932, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 18, 31, 0, 5, 187933, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 19, 31, 0, 5, 187934, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 20, 31, 0, 5, 187935, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 21, 31, 0, 5, 187936, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 22, 31, 0, 5, 187937, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 23, 31, 0, 5, 187938, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 24, 31, 0, 5, 187939, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 25, 31, 0, 5, 187940, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 26, 31, 0, 5, 187941, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 27, 31, 0, 5, 187942, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 28, 31, 0, 5, 187943, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 29, 31, 0, 5, 187944, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 30, 31, 0, 5, 187945, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 31, 31, 0, 5, 187946, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 32, 31, 0, 5, 194032, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 33, 31, 0, 5, 194035, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 34, 31, 0, 5, 194036, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 35, 31, 0, 5, 194038, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 36, 31, 0, 5, 194040, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 37, 31, 0, 5, 194044, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 38, 31, 0, 5, 194045, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 39, 31, 0, 5, 194049, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46903, 0, 40, 31, 0, 5, 187559, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 41, 31, 0, 5, 187947, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 42, 31, 0, 5, 187948, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 43, 31, 0, 5, 187949, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 44, 31, 0, 5, 187950, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 45, 31, 0, 5, 187951, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 46, 31, 0, 5, 187952, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 47, 31, 0, 5, 187953, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 48, 31, 0, 5, 187954, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 49, 31, 0, 5, 187955, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 50, 31, 0, 5, 187956, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 51, 31, 0, 5, 187957, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 52, 31, 0, 5, 187958, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 53, 31, 0, 5, 187959, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 54, 31, 0, 5, 187960, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 55, 31, 0, 5, 187961, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 56, 31, 0, 5, 187962, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 57, 31, 0, 5, 187963, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 58, 31, 0, 5, 187964, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 59, 31, 0, 5, 187965, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 60, 31, 0, 5, 187966, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 61, 31, 0, 5, 187967, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 62, 31, 0, 5, 187968, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 63, 31, 0, 5, 187969, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 64, 31, 0, 5, 187970, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 65, 31, 0, 5, 187971, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 66, 31, 0, 5, 187972, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 67, 31, 0, 5, 187973, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 68, 31, 0, 5, 187974, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 69, 31, 0, 5, 187975, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 70, 31, 0, 5, 194033, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 71, 31, 0, 5, 194034, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 72, 31, 0, 5, 194037, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 73, 31, 0, 5, 194039, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 74, 31, 0, 5, 194042, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 75, 31, 0, 5, 194043, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 76, 31, 0, 5, 194046, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46903, 0, 77, 31, 0, 5, 194048, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'); + +-- 46904 'Light Bonfire (Art Kit)' targets Alliance / Horde Bonfires +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceEntry` = 46904); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 1, 46904, 0, 0, 31, 0, 5, 187564, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 1, 31, 0, 5, 187914, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 2, 31, 0, 5, 187916, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 3, 31, 0, 5, 187917, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 4, 31, 0, 5, 187919, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 5, 31, 0, 5, 187920, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 6, 31, 0, 5, 187921, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 7, 31, 0, 5, 187922, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 8, 31, 0, 5, 187923, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 9, 31, 0, 5, 187924, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 10, 31, 0, 5, 187925, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 11, 31, 0, 5, 187926, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 12, 31, 0, 5, 187927, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 13, 31, 0, 5, 187928, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 14, 31, 0, 5, 187929, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 15, 31, 0, 5, 187930, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 16, 31, 0, 5, 187931, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 17, 31, 0, 5, 187932, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 18, 31, 0, 5, 187933, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 19, 31, 0, 5, 187934, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 20, 31, 0, 5, 187935, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 21, 31, 0, 5, 187936, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 22, 31, 0, 5, 187937, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 23, 31, 0, 5, 187938, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 24, 31, 0, 5, 187939, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 25, 31, 0, 5, 187940, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 26, 31, 0, 5, 187941, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 27, 31, 0, 5, 187942, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 28, 31, 0, 5, 187943, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 29, 31, 0, 5, 187944, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 30, 31, 0, 5, 187945, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 31, 31, 0, 5, 187946, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 32, 31, 0, 5, 194032, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 33, 31, 0, 5, 194035, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 34, 31, 0, 5, 194036, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 35, 31, 0, 5, 194038, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 36, 31, 0, 5, 194040, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 37, 31, 0, 5, 194044, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 38, 31, 0, 5, 194045, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 39, 31, 0, 5, 194049, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Alliance Bonfire'), +(13, 1, 46904, 0, 40, 31, 0, 5, 187559, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 41, 31, 0, 5, 187947, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 42, 31, 0, 5, 187948, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 43, 31, 0, 5, 187949, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 44, 31, 0, 5, 187950, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 45, 31, 0, 5, 187951, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 46, 31, 0, 5, 187952, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 47, 31, 0, 5, 187953, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 48, 31, 0, 5, 187954, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 49, 31, 0, 5, 187955, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 50, 31, 0, 5, 187956, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 51, 31, 0, 5, 187957, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 52, 31, 0, 5, 187958, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 53, 31, 0, 5, 187959, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 54, 31, 0, 5, 187960, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 55, 31, 0, 5, 187961, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 56, 31, 0, 5, 187962, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 57, 31, 0, 5, 187963, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 58, 31, 0, 5, 187964, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 59, 31, 0, 5, 187965, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 60, 31, 0, 5, 187966, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 61, 31, 0, 5, 187967, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 62, 31, 0, 5, 187968, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 63, 31, 0, 5, 187969, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 64, 31, 0, 5, 187970, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 65, 31, 0, 5, 187971, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 66, 31, 0, 5, 187972, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 67, 31, 0, 5, 187973, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 68, 31, 0, 5, 187974, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 69, 31, 0, 5, 187975, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 70, 31, 0, 5, 194033, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 71, 31, 0, 5, 194034, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 72, 31, 0, 5, 194037, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 73, 31, 0, 5, 194039, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 74, 31, 0, 5, 194042, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 75, 31, 0, 5, 194043, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 76, 31, 0, 5, 194046, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'), +(13, 1, 46904, 0, 77, 31, 0, 5, 194048, 0, 0, 0, 0, '', 'Light Bonfire (Art Kit) targets Horde Bonfire'); + +-- Creature 16592 Midsummer Bonfire +UPDATE `creature_template` SET `AIName` = '', `ScriptName` = 'npc_midsummer_bonfire' WHERE (`entry` = 16592); + +-- Spell 45444 Bonfire's Blessing +DELETE FROM `spell_script_names` WHERE `spell_id` = 45444 AND `ScriptName` = 'spell_bonfires_blessing'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(45444, 'spell_bonfires_blessing'); + +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 24) AND (`SourceEntry` = 45444); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(24, 0, 45444, 0, 0, 12, 0, 1, 0, 0, 0, 0, 0, '', 'Spell \'Bonfire\'s Blessing\' PROC requires Midsummer Fire Festival'); + +-- proc cooldown 45 seconds +DELETE FROM `spell_proc_event` WHERE (`entry` = 45444); +INSERT INTO `spell_proc_event` (`entry`, `Cooldown`) VALUES +(45444, 45000); + +-- remove all spawns of 181376, 'Midsummer Bonfire Campfire Damage Trap' +-- it's the linked trap of 181377 +-- which is beeing spawned by spell 29114 'Midsummer Bonfire Bunnies 2' by NPC 16592 if the fire is burning +DELETE FROM `game_event_gameobject` WHERE (`guid` IN (SELECT `guid` FROM `gameobject` WHERE `id` = 181376)); +DELETE FROM `gameobject` WHERE (`id` = 181376); diff --git a/src/server/apps/worldserver/worldserver.conf.dist b/src/server/apps/worldserver/worldserver.conf.dist index f88f82c2d..a43f5e3c4 100644 --- a/src/server/apps/worldserver/worldserver.conf.dist +++ b/src/server/apps/worldserver/worldserver.conf.dist @@ -740,6 +740,7 @@ Logger.spells.scripts=2,Console Errors #Logger.scripts.ai.sai=4,Console Server #Logger.scripts.ai=4,Console Server #Logger.scripts.cos=4,Console Server +#Logger.scripts.midsummer=4,Console Server #Logger.scripts=4,Console Server #Logger.server.authserver=4,Console Server #Logger.spells.aura.effect.nospell=4,Console Server diff --git a/src/server/scripts/Events/midsummer.cpp b/src/server/scripts/Events/midsummer.cpp index 89d180eb5..80739ec21 100644 --- a/src/server/scripts/Events/midsummer.cpp +++ b/src/server/scripts/Events/midsummer.cpp @@ -16,9 +16,11 @@ */ #include "CreatureScript.h" +#include "GameEventMgr.h" #include "GameObjectScript.h" #include "GameTime.h" #include "Player.h" +#include "PlayerScript.h" #include "ScriptedCreature.h" #include "ScriptedGossip.h" #include "Spell.h" @@ -29,10 +31,28 @@ enum eBonfire { - GO_MIDSUMMER_BONFIRE = 181288, + GO_MIDSUMMER_BONFIRE_CAMPFIRE_SPELL_FOCUS = 181377, + GO_AHUNE_BONFIRE = 188073, + + SPELL_MIDSUMMER_BONFIRE_BUNNIES_2 = 29114, SPELL_STAMP_OUT_BONFIRE = 45437, - SPELL_LIGHT_BONFIRE = 29831, + SPELL_STAMP_OUT_BONFIRE_ART_KIT = 46903, + + SPELL_TOSS_FUEL_ON_BONFIRE = 28806, + SPELL_LIGHT_BONFIRE_ART_KIT = 46904, + + SPELL_BONFIRES_BLESSING = 45444, + + BONFIRE_TYPE_NONE = 0, + BONFIRE_TYPE_ALLIANCE = 1, + BONFIRE_TYPE_HORDE = 2, + BONFIRE_TYPE_CITY = 3, + BONFIRE_TYPE_AHUNE = 4, + + COUNT_GO_BONFIRE_ALLIANCE = 40, + COUNT_GO_BONFIRE_HORDE = 38, + COUNT_GO_BONFIRE_CITY = 9, }; class go_midsummer_bonfire : public GameObjectScript @@ -49,6 +69,313 @@ public: } }; +static bool BonfireStampedOutState[COUNT_GO_BONFIRE_ALLIANCE + COUNT_GO_BONFIRE_HORDE]; + +// , +const std::map, bool*> BonfireStateStore = { +// Map 0 + { { 0, 1, TEAM_ALLIANCE }, &BonfireStampedOutState[0] }, + { { 0, 3, TEAM_HORDE }, &BonfireStampedOutState[1] }, + { { 0, 4, TEAM_ALLIANCE }, &BonfireStampedOutState[2] }, + { { 0, 8, TEAM_HORDE }, &BonfireStampedOutState[3] }, + { { 0, 10, TEAM_ALLIANCE }, &BonfireStampedOutState[4] }, + { { 0, 11, TEAM_ALLIANCE }, &BonfireStampedOutState[5] }, + { { 0, 12, TEAM_ALLIANCE }, &BonfireStampedOutState[6] }, + { { 0, 28, TEAM_ALLIANCE }, &BonfireStampedOutState[7] }, + { { 0, 33, TEAM_ALLIANCE }, &BonfireStampedOutState[8] }, + { { 0, 33, TEAM_HORDE }, &BonfireStampedOutState[9] }, + { { 0, 38, TEAM_ALLIANCE }, &BonfireStampedOutState[10] }, + { { 0, 40, TEAM_ALLIANCE }, &BonfireStampedOutState[11] }, + { { 0, 44, TEAM_ALLIANCE }, &BonfireStampedOutState[12] }, + { { 0, 45, TEAM_ALLIANCE }, &BonfireStampedOutState[13] }, + { { 0, 45, TEAM_HORDE }, &BonfireStampedOutState[14] }, + { { 0, 46, TEAM_ALLIANCE }, &BonfireStampedOutState[15] }, + { { 0, 46, TEAM_HORDE }, &BonfireStampedOutState[16] }, + { { 0, 47, TEAM_ALLIANCE }, &BonfireStampedOutState[17] }, + { { 0, 47, TEAM_HORDE }, &BonfireStampedOutState[18] }, + { { 0, 85, TEAM_HORDE }, &BonfireStampedOutState[19] }, + { { 0, 130, TEAM_HORDE }, &BonfireStampedOutState[20] }, + { { 0, 267, TEAM_ALLIANCE }, &BonfireStampedOutState[21] }, + { { 0, 267, TEAM_HORDE }, &BonfireStampedOutState[22] }, + +// Map 1 + { { 1, 14, TEAM_HORDE }, &BonfireStampedOutState[23] }, + { { 1, 15, TEAM_ALLIANCE }, &BonfireStampedOutState[24] }, + { { 1, 15, TEAM_HORDE }, &BonfireStampedOutState[25] }, + { { 1, 17, TEAM_HORDE }, &BonfireStampedOutState[26] }, + { { 1, 141, TEAM_ALLIANCE }, &BonfireStampedOutState[27] }, + { { 1, 148, TEAM_ALLIANCE }, &BonfireStampedOutState[28] }, + { { 1, 215, TEAM_HORDE }, &BonfireStampedOutState[29] }, + { { 1, 331, TEAM_ALLIANCE }, &BonfireStampedOutState[30] }, + { { 1, 331, TEAM_HORDE }, &BonfireStampedOutState[31] }, + { { 1, 357, TEAM_ALLIANCE }, &BonfireStampedOutState[32] }, + { { 1, 357, TEAM_HORDE }, &BonfireStampedOutState[33] }, + { { 1, 400, TEAM_HORDE }, &BonfireStampedOutState[34] }, + { { 1, 405, TEAM_ALLIANCE }, &BonfireStampedOutState[35] }, + { { 1, 405, TEAM_HORDE }, &BonfireStampedOutState[36] }, + { { 1, 406, TEAM_HORDE }, &BonfireStampedOutState[37] }, + { { 1, 440, TEAM_ALLIANCE }, &BonfireStampedOutState[38] }, + { { 1, 440, TEAM_HORDE }, &BonfireStampedOutState[39] }, + { { 1, 618, TEAM_ALLIANCE }, &BonfireStampedOutState[40] }, + { { 1, 618, TEAM_HORDE }, &BonfireStampedOutState[41] }, + { { 1, 1377, TEAM_ALLIANCE }, &BonfireStampedOutState[42] }, + { { 1, 1377, TEAM_HORDE }, &BonfireStampedOutState[43] }, + +// Map 530 + { { 530, 3430, TEAM_HORDE }, &BonfireStampedOutState[44] }, + { { 530, 3433, TEAM_HORDE }, &BonfireStampedOutState[45] }, + { { 530, 3483, TEAM_ALLIANCE }, &BonfireStampedOutState[46] }, + { { 530, 3483, TEAM_HORDE }, &BonfireStampedOutState[47] }, + { { 530, 3518, TEAM_ALLIANCE }, &BonfireStampedOutState[48] }, + { { 530, 3518, TEAM_HORDE }, &BonfireStampedOutState[49] }, + { { 530, 3519, TEAM_ALLIANCE }, &BonfireStampedOutState[50] }, + { { 530, 3519, TEAM_HORDE }, &BonfireStampedOutState[51] }, + { { 530, 3520, TEAM_ALLIANCE }, &BonfireStampedOutState[52] }, + { { 530, 3520, TEAM_HORDE }, &BonfireStampedOutState[53] }, + { { 530, 3521, TEAM_ALLIANCE }, &BonfireStampedOutState[54] }, + { { 530, 3521, TEAM_HORDE }, &BonfireStampedOutState[55] }, + { { 530, 3522, TEAM_ALLIANCE }, &BonfireStampedOutState[56] }, + { { 530, 3522, TEAM_HORDE }, &BonfireStampedOutState[57] }, + { { 530, 3523, TEAM_ALLIANCE }, &BonfireStampedOutState[58] }, + { { 530, 3523, TEAM_HORDE }, &BonfireStampedOutState[59] }, + { { 530, 3524, TEAM_ALLIANCE }, &BonfireStampedOutState[60] }, + { { 530, 3525, TEAM_ALLIANCE }, &BonfireStampedOutState[61] }, + +// Map 571 + { { 571, 65, TEAM_ALLIANCE }, &BonfireStampedOutState[62] }, + { { 571, 65, TEAM_HORDE }, &BonfireStampedOutState[63] }, + { { 571, 66, TEAM_ALLIANCE }, &BonfireStampedOutState[64] }, + { { 571, 66, TEAM_HORDE }, &BonfireStampedOutState[65] }, + { { 571, 67, TEAM_ALLIANCE }, &BonfireStampedOutState[66] }, + { { 571, 67, TEAM_HORDE }, &BonfireStampedOutState[67] }, + { { 571, 394, TEAM_ALLIANCE }, &BonfireStampedOutState[68] }, + { { 571, 394, TEAM_HORDE }, &BonfireStampedOutState[69] }, + { { 571, 495, TEAM_ALLIANCE }, &BonfireStampedOutState[70] }, + { { 571, 495, TEAM_HORDE }, &BonfireStampedOutState[71] }, + { { 571, 2817, TEAM_ALLIANCE }, &BonfireStampedOutState[72] }, + { { 571, 2817, TEAM_HORDE }, &BonfireStampedOutState[73] }, + { { 571, 3537, TEAM_ALLIANCE }, &BonfireStampedOutState[74] }, + { { 571, 3537, TEAM_HORDE }, &BonfireStampedOutState[75] }, + { { 571, 3711, TEAM_ALLIANCE }, &BonfireStampedOutState[76] }, + { { 571, 3711, TEAM_HORDE }, &BonfireStampedOutState[77] }, +}; + +uint32 const GoBonfireAlliance[COUNT_GO_BONFIRE_ALLIANCE] = { 187564, 187914, 187916, 187917, 187919, 187920, 187921, 187922, 187923, 187924, 187925, 187926, 187927, 187928, 187929, 187930, 187931, 187932, 187933, 187934, 187935, 187936, 187937, 187938, 187939, 187940, 187941, 187942, 187943, 187944, 187945, 187946, 194032, 194035, 194036, 194038, 194040, 194044, 194045, 194049 }; +uint32 const GoBonfireHorde[COUNT_GO_BONFIRE_HORDE] = { 187559, 187947, 187948, 187949, 187950, 187951, 187952, 187953, 187954, 187955, 187956, 187957, 187958, 187959, 187960, 187961, 187962, 187963, 187964, 187965, 187966, 187967, 187968, 187969, 187970, 187971, 187972, 187973, 187974, 187975, 194033, 194034, 194037, 194039, 194042, 194043, 194046, 194048 }; +uint32 const GoBonfireCity[COUNT_GO_BONFIRE_CITY] = { 181332, 181333, 181334, 181335, 181336, 181337, 188128, 188129, 188352 }; + +class MidsummerPlayerScript : public PlayerScript +{ +public: + MidsummerPlayerScript() : PlayerScript("MidsummerPlayerScript") + { + } + + void OnUpdateZone(Player* player, uint32 newZone, uint32 /*newArea*/) override + { + if (!IsHolidayActive(HOLIDAY_FIRE_FESTIVAL)) + return; + + auto itr = BonfireStateStore.find(std::make_tuple(player->GetMapId(), newZone, player->GetTeamId())); + if ((itr != BonfireStateStore.end()) && (itr->second)) + { + if (!(*(itr->second))) + { + if (!player->HasAura(SPELL_BONFIRES_BLESSING)) + player->CastSpell(player, SPELL_BONFIRES_BLESSING, true); + + return; + } + } + + player->RemoveAurasDueToSpell(SPELL_BONFIRES_BLESSING); + } +}; + +struct npc_midsummer_bonfire : public ScriptedAI +{ + npc_midsummer_bonfire(Creature* creature) : ScriptedAI(creature) + { + _isStampedOut = nullptr; + _teamId = TEAM_NEUTRAL; + _type = BONFIRE_TYPE_NONE; + _spellFocus = nullptr; + + if (!IsHolidayActive(HOLIDAY_FIRE_FESTIVAL)) + return; + + scheduler.Schedule(420ms, [this](TaskContext context) + { + if (!InitBonfire()) + context.Repeat(); + }); + } + + void Ignite() + { + if (_isStampedOut) + *_isStampedOut = false; + + if (!_spellFocus) + { + DoCastSelf(SPELL_MIDSUMMER_BONFIRE_BUNNIES_2, true); + + if ((_spellFocus = me->FindNearestGameObject(GO_MIDSUMMER_BONFIRE_CAMPFIRE_SPELL_FOCUS, 10.0f))) + me->AddGameObject(_spellFocus); + } + + switch (_type) + { + case BONFIRE_TYPE_ALLIANCE: + case BONFIRE_TYPE_HORDE: + DoCastSelf(SPELL_LIGHT_BONFIRE_ART_KIT, true); + UpdateBonfireBlessingBuffs(); + break; + case BONFIRE_TYPE_AHUNE: + if (_bonfire) + _bonfire->SetGoState(GO_STATE_ACTIVE); + break; + default: + break; + } + } + + void StampOut() + { + switch (_type) + { + case BONFIRE_TYPE_ALLIANCE: + case BONFIRE_TYPE_HORDE: + if (_isStampedOut) + *_isStampedOut = true; + + if (_spellFocus) + { + _spellFocus->DespawnOrUnsummon(); + _spellFocus = nullptr; + } + + DoCastSelf(SPELL_STAMP_OUT_BONFIRE_ART_KIT, true); + UpdateBonfireBlessingBuffs(); + break; + default: + break; + } + } + + void UpdateBonfireBlessingBuffs() + { + if ((_type != BONFIRE_TYPE_ALLIANCE) && (_type != BONFIRE_TYPE_HORDE)) + return; + + me->GetMap()->DoForAllPlayers([&](Player* p) + { + if ((p->GetZoneId() == me->GetZoneId()) && (p->GetTeamId() == _teamId)) + { + if (_isStampedOut) + { + if (*_isStampedOut) + p->RemoveAurasDueToSpell(SPELL_BONFIRES_BLESSING); + else + { + if (!p->HasAura(SPELL_BONFIRES_BLESSING)) + p->CastSpell(p, SPELL_BONFIRES_BLESSING, true); + } + } + } + }); + } + + bool InitBonfire() + { + _type = BONFIRE_TYPE_NONE; + _teamId = TEAM_NEUTRAL; + + for (uint32 i = 0; (i < COUNT_GO_BONFIRE_ALLIANCE) && (_type == BONFIRE_TYPE_NONE); i++) + { + if ((_bonfire = me->FindNearestGameObject(GoBonfireAlliance[i], 10.0f))) + { + _type = BONFIRE_TYPE_ALLIANCE; + _teamId = TEAM_ALLIANCE; + } + } + + for (uint32 i = 0; (i < COUNT_GO_BONFIRE_HORDE) && (_type == BONFIRE_TYPE_NONE); i++) + { + if ((_bonfire = me->FindNearestGameObject(GoBonfireHorde[i], 10.0f))) + { + _type = BONFIRE_TYPE_HORDE; + _teamId = TEAM_HORDE; + } + } + + for (uint32 i = 0; (i < COUNT_GO_BONFIRE_CITY) && (_type == BONFIRE_TYPE_NONE); i++) + { + if ((_bonfire = me->FindNearestGameObject(GoBonfireCity[i], 10.0f))) + { + _type = BONFIRE_TYPE_CITY; + return true; + } + } + + if ((_type == BONFIRE_TYPE_NONE) && (_bonfire = me->FindNearestGameObject(GO_AHUNE_BONFIRE, 10.0f))) + { + _type = BONFIRE_TYPE_AHUNE; + return true; + } + + if (_type == BONFIRE_TYPE_NONE) + return false; + + auto itr = BonfireStateStore.find(std::make_tuple(me->GetMapId(), me->GetZoneId(), _teamId)); + if ((itr != BonfireStateStore.end()) && (itr->second)) + _isStampedOut = itr->second; + else + LOG_ERROR("scripts.midsummer", "NPC {} (GUID{}) in map {}, zone {} with teamId {} can't locate its entry within BonfireStateStore", me->GetGUID().GetEntry(), me->GetSpawnId(), me->GetMapId(), me->GetZoneId(), _teamId); + + Ignite(); + + return true; + } + + void SpellHit(Unit* caster, SpellInfo const* spellInfo) override + { + if (caster->GetTypeId() != TYPEID_PLAYER) + return; + + switch (spellInfo->Id) + { + case SPELL_TOSS_FUEL_ON_BONFIRE: + { + Ignite(); + break; + } + case SPELL_STAMP_OUT_BONFIRE: + { + StampOut(); + + // desecrating other faction's bonfire flags player for PVP + caster->SetPvP(true); + break; + } + default: + break; + } + } + + void UpdateAI(uint32 diff) override + { + scheduler.Update(diff); + } + +private: + bool* _isStampedOut; + TeamId _teamId; + uint8 _type; + GameObject* _spellFocus; + GameObject* _bonfire; +}; + enum torchToss { GO_TORCH_TARGET_BRAZIER = 187708, @@ -172,6 +499,30 @@ struct npc_midsummer_torch_target : public ScriptedAI // SPELLS /////////////////////////////// +class spell_bonfires_blessing : public AuraScript +{ + PrepareAuraScript(spell_bonfires_blessing) + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_BONFIRES_BLESSING }); + } + + void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + if (!IsHolidayActive(HOLIDAY_FIRE_FESTIVAL)) + { + if (Unit* target = GetTarget()) + target->RemoveAurasDueToSpell(SPELL_BONFIRES_BLESSING); + } + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_bonfires_blessing::OnApply, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); + } +}; + enum CrabDisguise { SPELL_CRAB_DISGUISE = 46337, @@ -879,12 +1230,17 @@ class spell_midsummer_torch_catch : public SpellScript void AddSC_event_midsummer_scripts() { + // Player + new MidsummerPlayerScript(); + // NPCs new go_midsummer_bonfire(); + RegisterCreatureAI(npc_midsummer_bonfire); RegisterCreatureAI(npc_midsummer_torch_target); RegisterCreatureAI(npc_midsummer_ribbon_pole_target); // Spells + RegisterSpellScript(spell_bonfires_blessing); RegisterSpellScript(spell_gen_crab_disguise); RegisterSpellScript(spell_midsummer_ribbon_pole_firework); RegisterSpellScript(spell_midsummer_ribbon_pole);