aboutsummaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2016-10-14 03:59:13 -0300
committerjoschiwald <joschiwald.trinity@gmail.com>2017-09-06 15:35:04 +0200
commitd7c85d719306ad6f3e239e7e43975eb70bbdbc9f (patch)
treed1213a516e41ce93922ff2d78cc4d7363577a639 /sql
parent84b6b064321e016785f084384ec5bc6f82acc89a (diff)
Core/SmartScripts: fixup SMART_EVENT_FLAG_WHILE_CHARMED behaviour to only mean charmed creatures (#17738 follow-up)
Unit::IsControlledByPlayer is a expected value for TempSummons (like some triggers used in quests, summoned by spells). Previous logic broke a lot of quests which use triggers to do stuff. Allow JustSummoned and events linked from other events with flag set also in charmed (prevents breaking event chains) Allow vehicles (needed for vehicles with SmartAI, eg Iron Rune Constructs and You: Rocket Jumping) (cherry picked from commit 3e596376a7fae9fd585fac12e5122fd8f1b7ce14)
Diffstat (limited to 'sql')
-rw-r--r--sql/updates/world/master/2017_09_06_05_world_2016_10_14_00_world.sql23
1 files changed, 23 insertions, 0 deletions
diff --git a/sql/updates/world/master/2017_09_06_05_world_2016_10_14_00_world.sql b/sql/updates/world/master/2017_09_06_05_world_2016_10_14_00_world.sql
new file mode 100644
index 00000000000..ce5756cdeb1
--- /dev/null
+++ b/sql/updates/world/master/2017_09_06_05_world_2016_10_14_00_world.sql
@@ -0,0 +1,23 @@
+-- Always for SMART_EVENT_JUST_SUMMONED (Creature can be summoned already charmed by player ie TempSummons)
+UPDATE `smart_scripts` SET `event_flags`=`event_flags`|0x200 WHERE `source_type` = 0 AND `event_type`=54;
+
+-- Event linked actions (Many levels of linked calls, do 8 times)
+UPDATE `smart_scripts` `ss` LEFT JOIN `smart_scripts` `ssl` ON `ss`.`entryorguid` = `ssl`.`entryorguid` AND `ss`.`source_type` = `ssl`.`source_type` AND `ss`.`id` = `ssl`.`link` SET `ss`.`event_flags`=`ss`.`event_flags`|0x200 WHERE `ss`.`source_type`=0 AND
+ `ss`.`event_type` = 61 AND (`ssl`.`event_flags` & 0x200) != 0;
+UPDATE `smart_scripts` `ss` LEFT JOIN `smart_scripts` `ssl` ON `ss`.`entryorguid` = `ssl`.`entryorguid` AND `ss`.`source_type` = `ssl`.`source_type` AND `ss`.`id` = `ssl`.`link` SET `ss`.`event_flags`=`ss`.`event_flags`|0x200 WHERE `ss`.`source_type`=0 AND
+ `ss`.`event_type` = 61 AND (`ssl`.`event_flags` & 0x200) != 0;
+UPDATE `smart_scripts` `ss` LEFT JOIN `smart_scripts` `ssl` ON `ss`.`entryorguid` = `ssl`.`entryorguid` AND `ss`.`source_type` = `ssl`.`source_type` AND `ss`.`id` = `ssl`.`link` SET `ss`.`event_flags`=`ss`.`event_flags`|0x200 WHERE `ss`.`source_type`=0 AND
+ `ss`.`event_type` = 61 AND (`ssl`.`event_flags` & 0x200) != 0;
+UPDATE `smart_scripts` `ss` LEFT JOIN `smart_scripts` `ssl` ON `ss`.`entryorguid` = `ssl`.`entryorguid` AND `ss`.`source_type` = `ssl`.`source_type` AND `ss`.`id` = `ssl`.`link` SET `ss`.`event_flags`=`ss`.`event_flags`|0x200 WHERE `ss`.`source_type`=0 AND
+ `ss`.`event_type` = 61 AND (`ssl`.`event_flags` & 0x200) != 0;
+UPDATE `smart_scripts` `ss` LEFT JOIN `smart_scripts` `ssl` ON `ss`.`entryorguid` = `ssl`.`entryorguid` AND `ss`.`source_type` = `ssl`.`source_type` AND `ss`.`id` = `ssl`.`link` SET `ss`.`event_flags`=`ss`.`event_flags`|0x200 WHERE `ss`.`source_type`=0 AND
+ `ss`.`event_type` = 61 AND (`ssl`.`event_flags` & 0x200) != 0;
+UPDATE `smart_scripts` `ss` LEFT JOIN `smart_scripts` `ssl` ON `ss`.`entryorguid` = `ssl`.`entryorguid` AND `ss`.`source_type` = `ssl`.`source_type` AND `ss`.`id` = `ssl`.`link` SET `ss`.`event_flags`=`ss`.`event_flags`|0x200 WHERE `ss`.`source_type`=0 AND
+ `ss`.`event_type` = 61 AND (`ssl`.`event_flags` & 0x200) != 0;
+UPDATE `smart_scripts` `ss` LEFT JOIN `smart_scripts` `ssl` ON `ss`.`entryorguid` = `ssl`.`entryorguid` AND `ss`.`source_type` = `ssl`.`source_type` AND `ss`.`id` = `ssl`.`link` SET `ss`.`event_flags`=`ss`.`event_flags`|0x200 WHERE `ss`.`source_type`=0 AND
+ `ss`.`event_type` = 61 AND (`ssl`.`event_flags` & 0x200) != 0;
+UPDATE `smart_scripts` `ss` LEFT JOIN `smart_scripts` `ssl` ON `ss`.`entryorguid` = `ssl`.`entryorguid` AND `ss`.`source_type` = `ssl`.`source_type` AND `ss`.`id` = `ssl`.`link` SET `ss`.`event_flags`=`ss`.`event_flags`|0x200 WHERE `ss`.`source_type`=0 AND
+ `ss`.`event_type` = 61 AND (`ssl`.`event_flags` & 0x200) != 0;
+
+-- Vehicles
+UPDATE `smart_scripts` SET `event_flags`=`event_flags`|0x200 WHERE `source_type` = 0 AND `entryorguid` IN (SELECT `entry` FROM `creature_template` WHERE `AIName` = "SmartAI" AND `VehicleId` != 0);