Skip to content

Commit 30c3776

Browse files
authored
Merge branch '3.3.5' into BlackMorass
2 parents 4cf3b7f + e30e023 commit 30c3776

3 files changed

Lines changed: 536 additions & 445 deletions

File tree

Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
1+
--
2+
SET @CGUID := 147490; -- 8
3+
SET @SPAWN_GROUP_ID := 381; -- 4
4+
5+
-- Akil'zon
6+
DELETE FROM `creature_text` WHERE `CreatureID` = 23574;
7+
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
8+
(23574,0,0,"I be da predator! You da prey...",14,0,100,0,0,12013,23235,0,"Akil'zon SAY_AGGRO"),
9+
(23574,1,0,"Feed, me bruddahs!",14,0,100,0,0,12014,23931,0,"Akil'zon SAY_SUMMON"),
10+
(23574,2,0,"All you be doin' is wastin' me time!",14,0,100,0,0,12016,23236,0,"Akil'zon SAY_BERSERK"),
11+
(23574,3,0,"Ya got nothin'!",14,0,100,0,0,12017,23234,0,"Akil'zon SAY_SLAY_1"),
12+
(23574,3,1,"Stop your cryin'!",14,0,100,0,0,12018,23233,0,"Akil'zon SAY_SLAY_2"),
13+
(23574,4,0,"You can't... kill... me spirit!",14,0,100,0,0,12019,23232,0,"Akil'zon SAY_DEATH"),
14+
(23574,5,0,"My eagles gonna bear your spirits to me. Your sacrifices not gonna be in vain....",14,0,100,0,0,12122,23307,0,"Akil'zon SAY_EVENT_1"),
15+
(23574,5,1,"Your death gonna be quick, strangers. You shoulda never come to this place....",14,0,100,0,0,12123,23308,0,"Akil'zon SAY_EVENT_2"),
16+
(23574,6,0,"An electrical storm appears!",41,0,100,0,0,0,23603,0,"Akil'zon EMOTE_STORM");
17+
18+
-- Soaring Eagle
19+
UPDATE `creature_template` SET `ScriptName` = 'npc_soaring_eagle' WHERE `entry` = 24858;
20+
21+
DELETE FROM `creature_template_movement` WHERE `CreatureId` = 24858;
22+
INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`, `InteractionPauseTimer`) VALUES
23+
(24858,1,1,1,0,0,0,NULL);
24+
25+
DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+7;
26+
INSERT INTO `creature` (`guid`,`id`,`map`,`zoneId`,`areaId`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`wander_distance`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`,`npcflag`,`unit_flags`,`dynamicflags`,`ScriptName`,`StringId`,`VerifiedBuild`) VALUES
27+
(@CGUID+0,24858,568,0,0,1,1,0,0,355.33228,1410.8638,91.63957,5.856256484985351562,259200,0,0,0,0,2,0,0,0,'',NULL,0),
28+
(@CGUID+1,24858,568,0,0,1,1,0,0,356.3942,1419.819,91.724396,4.567828655242919921,259200,0,0,0,0,0,0,0,0,'',NULL,0),
29+
(@CGUID+2,24858,568,0,0,1,1,0,0,369.08588,1378.0735,91.788025,0.423484355211257934,259200,0,0,0,0,2,0,0,0,'',NULL,0),
30+
(@CGUID+3,24858,568,0,0,1,1,0,0,362.54413,1379.9407,91.75828,5.741417884826660156,259200,0,0,0,0,0,0,0,0,'',NULL,0),
31+
(@CGUID+4,24858,568,0,0,1,1,0,0,396.04984,1398.6158,91.4911,4.309737205505371093,259200,0,0,0,0,2,0,0,0,'',NULL,0),
32+
(@CGUID+5,24858,568,0,0,1,1,0,0,394.63245,1394.0079,91.796165,1.772356867790222167,259200,0,0,0,0,0,0,0,0,'',NULL,0),
33+
(@CGUID+6,24858,568,0,0,1,1,0,0,385.94797,1430.2812,92.62734,3.174873828887939453,259200,0,0,0,0,2,0,0,0,'',NULL,0),
34+
(@CGUID+7,24858,568,0,0,1,1,0,0,381.91397,1433.9738,91.658966,6.053234577178955078,259200,0,0,0,0,0,0,0,0,'',NULL,0);
35+
36+
DELETE FROM `spawn_group_template` WHERE `groupId` BETWEEN @SPAWN_GROUP_ID+0 AND @SPAWN_GROUP_ID+3;
37+
INSERT INTO `spawn_group_template` (`groupId`, `groupName`, `groupFlags`) VALUES
38+
(@SPAWN_GROUP_ID+0,"Zul'Aman - Soaring Eagle Group 1",4),
39+
(@SPAWN_GROUP_ID+1,"Zul'Aman - Soaring Eagle Group 2",4),
40+
(@SPAWN_GROUP_ID+2,"Zul'Aman - Soaring Eagle Group 3",4),
41+
(@SPAWN_GROUP_ID+3,"Zul'Aman - Soaring Eagle Group 4",4);
42+
43+
DELETE FROM `spawn_group` WHERE `spawnId` BETWEEN @CGUID+0 AND @CGUID+7 AND `spawnType` = 0;
44+
INSERT INTO `spawn_group` (`groupId`, `spawnType`, `spawnId`) VALUES
45+
(@SPAWN_GROUP_ID+0,0,@CGUID+0),
46+
(@SPAWN_GROUP_ID+0,0,@CGUID+1),
47+
(@SPAWN_GROUP_ID+1,0,@CGUID+2),
48+
(@SPAWN_GROUP_ID+1,0,@CGUID+3),
49+
(@SPAWN_GROUP_ID+2,0,@CGUID+4),
50+
(@SPAWN_GROUP_ID+2,0,@CGUID+5),
51+
(@SPAWN_GROUP_ID+3,0,@CGUID+6),
52+
(@SPAWN_GROUP_ID+3,0,@CGUID+7);
53+
54+
DELETE FROM `waypoint_data` WHERE `id` IN ((@CGUID+0)*10,(@CGUID+2)*10,(@CGUID+4)*10,(@CGUID+6)*10);
55+
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
56+
((@CGUID+0)*10,1,352.03665,1411.3475,91.7419,NULL,0,1,0,100,0),
57+
((@CGUID+0)*10,2,352.768,1412.0295,91.7419,NULL,0,1,0,100,0),
58+
((@CGUID+0)*10,3,389.26443,1394.4066,90.3169,NULL,0,1,0,100,0),
59+
((@CGUID+0)*10,4,405.69748,1381.4075,90.3169,NULL,0,1,0,100,0),
60+
((@CGUID+0)*10,5,418.16028,1383.2,90.3169,NULL,0,1,0,100,0),
61+
((@CGUID+0)*10,6,415.5009,1387.942,90.3169,NULL,0,1,0,100,0),
62+
((@CGUID+0)*10,7,399.76562,1414.877,90.3169,NULL,0,1,0,100,0),
63+
((@CGUID+0)*10,8,380.8964,1424.8958,90.3169,NULL,0,1,0,100,0),
64+
((@CGUID+0)*10,9,357.7345,1418.2468,90.3169,NULL,0,1,0,100,0),
65+
((@CGUID+0)*10,10,342.5394,1404.734,90.3169,NULL,0,1,0,100,0),
66+
((@CGUID+0)*10,11,343.50098,1395.6887,90.3169,NULL,0,1,0,100,0),
67+
((@CGUID+0)*10,12,340.88748,1384.222,90.3169,NULL,0,1,0,100,0),
68+
((@CGUID+0)*10,13,360.84256,1382.7749,90.3169,NULL,0,1,0,100,0),
69+
((@CGUID+0)*10,14,369.62912,1388.5502,90.3169,NULL,0,1,0,100,0),
70+
((@CGUID+0)*10,15,376.77408,1400.9977,90.3169,NULL,0,1,0,100,0),
71+
((@CGUID+0)*10,16,388.67688,1423.4247,90.3169,NULL,0,1,0,100,0),
72+
((@CGUID+0)*10,17,398.8929,1441.9341,90.3169,NULL,0,1,0,100,0),
73+
((@CGUID+0)*10,18,382.19348,1437.8445,90.3169,NULL,0,1,0,100,0),
74+
((@CGUID+0)*10,19,370.78647,1423.2487,90.3169,NULL,0,1,0,100,0),
75+
((@CGUID+0)*10,20,356.91635,1397.7987,90.3169,NULL,0,1,0,100,0),
76+
((@CGUID+0)*10,21,354.5165,1380.9031,90.3169,NULL,0,1,0,100,0),
77+
((@CGUID+0)*10,22,395.601,1376.0145,90.3169,NULL,0,1,0,100,0),
78+
((@CGUID+0)*10,23,422.74762,1384.6039,90.3169,NULL,0,1,0,100,0),
79+
((@CGUID+0)*10,24,398.88052,1410.5187,90.3169,NULL,0,1,0,100,0),
80+
((@CGUID+0)*10,25,382.2971,1424.7145,90.3169,NULL,0,1,0,100,0),
81+
((@CGUID+0)*10,26,360.14865,1431.6875,90.3169,NULL,0,1,0,100,0),
82+
((@CGUID+0)*10,27,345.7219,1422.5363,90.3169,NULL,0,1,0,100,0),
83+
((@CGUID+0)*10,28,345.66623,1416.4381,90.3169,NULL,0,1,0,100,0),
84+
((@CGUID+0)*10,29,389.26443,1394.4066,90.3169,NULL,0,1,0,100,0),
85+
((@CGUID+0)*10,30,405.69748,1381.4075,90.3169,NULL,0,1,0,100,0),
86+
87+
((@CGUID+2)*10,1,367.06046,1376.0284,91.747284,NULL,0,1,0,100,0),
88+
((@CGUID+2)*10,2,366.48688,1376.8475,91.747284,NULL,0,1,0,100,0),
89+
((@CGUID+2)*10,3,402.18002,1393.9266,92.29734,NULL,0,1,0,100,0),
90+
((@CGUID+2)*10,4,405.5344,1407.2664,92.29734,NULL,0,1,0,100,0),
91+
((@CGUID+2)*10,5,391.50912,1426.6482,92.29734,NULL,0,1,0,100,0),
92+
((@CGUID+2)*10,6,384.56445,1434.1189,92.29734,NULL,0,1,0,100,0),
93+
((@CGUID+2)*10,7,357.36685,1441.9121,92.29734,NULL,0,1,0,100,0),
94+
((@CGUID+2)*10,8,351.07693,1440.2948,92.29734,NULL,0,1,0,100,0),
95+
((@CGUID+2)*10,9,329.53537,1422.8164,92.29734,NULL,0,1,0,100,0),
96+
((@CGUID+2)*10,10,331.16852,1411.1921,92.29734,NULL,0,1,0,100,0),
97+
((@CGUID+2)*10,11,352.1847,1384.4667,92.29734,NULL,0,1,0,100,0),
98+
((@CGUID+2)*10,12,394.28995,1393.1965,92.29734,NULL,0,1,0,100,0),
99+
((@CGUID+2)*10,13,410.53754,1400.7565,92.29734,NULL,0,1,0,100,0),
100+
((@CGUID+2)*10,14,397.51172,1432.3961,92.29734,NULL,0,1,0,100,0),
101+
((@CGUID+2)*10,15,351.6988,1433.4469,92.29734,NULL,0,1,0,100,0),
102+
((@CGUID+2)*10,16,335.5918,1438.5464,92.29734,NULL,0,1,0,100,0),
103+
((@CGUID+2)*10,17,328.19498,1434.6647,92.29734,NULL,0,1,0,100,0),
104+
((@CGUID+2)*10,18,319.32867,1429.3776,92.29734,NULL,0,1,0,100,0),
105+
((@CGUID+2)*10,19,329.76138,1413.6876,92.29734,NULL,0,1,0,100,0),
106+
((@CGUID+2)*10,20,365.2091,1407.883,92.29734,NULL,0,1,0,100,0),
107+
((@CGUID+2)*10,21,402.18002,1393.9266,92.29734,NULL,0,1,0,100,0),
108+
((@CGUID+2)*10,22,405.5344,1407.2664,92.29734,NULL,0,1,0,100,0),
109+
110+
((@CGUID+4)*10,1,396.47882,1402.0371,91.81095,NULL,0,1,0,100,0),
111+
((@CGUID+4)*10,2,397.27747,1401.4353,91.81095,NULL,0,1,0,100,0),
112+
((@CGUID+4)*10,3,387.03668,1381.7903,89.69339,NULL,0,1,0,100,0),
113+
((@CGUID+4)*10,4,370.12805,1370.0513,89.69339,NULL,0,1,0,100,0),
114+
((@CGUID+4)*10,5,359.64487,1373.1759,89.69339,NULL,0,1,0,100,0),
115+
((@CGUID+4)*10,6,350.18198,1386.6072,89.69339,NULL,0,1,0,100,0),
116+
((@CGUID+4)*10,7,345.56348,1402.6711,89.69339,NULL,0,1,0,100,0),
117+
((@CGUID+4)*10,8,355.46756,1424.0919,89.69339,NULL,0,1,0,100,0),
118+
((@CGUID+4)*10,9,367.25217,1433.9203,89.69339,NULL,0,1,0,100,0),
119+
((@CGUID+4)*10,10,373.7067,1438.8328,89.69339,NULL,0,1,0,100,0),
120+
((@CGUID+4)*10,11,386.6186,1435.4559,89.69339,NULL,0,1,0,100,0),
121+
((@CGUID+4)*10,12,405.42404,1418.889,89.69339,NULL,0,1,0,100,0),
122+
((@CGUID+4)*10,13,410.99643,1390.823,89.69339,NULL,0,1,0,100,0),
123+
((@CGUID+4)*10,14,397.09592,1382.1975,89.69339,NULL,0,1,0,100,0),
124+
((@CGUID+4)*10,15,376.45215,1393.8619,89.69339,NULL,0,1,0,100,0),
125+
((@CGUID+4)*10,16,356.00858,1404.278,89.69339,NULL,0,1,0,100,0),
126+
((@CGUID+4)*10,17,344.35168,1416.3293,89.69339,NULL,0,1,0,100,0),
127+
((@CGUID+4)*10,18,351.9594,1439.8646,89.69339,NULL,0,1,0,100,0),
128+
((@CGUID+4)*10,19,353.33682,1441.8173,89.69339,NULL,0,1,0,100,0),
129+
((@CGUID+4)*10,20,368.85004,1445.7336,89.69339,NULL,0,1,0,100,0),
130+
((@CGUID+4)*10,21,381.1107,1440.9076,89.69339,NULL,0,1,0,100,0),
131+
((@CGUID+4)*10,22,392.25012,1433.5304,89.69339,NULL,0,1,0,100,0),
132+
((@CGUID+4)*10,23,388.21756,1408.2224,89.69339,NULL,0,1,0,100,0),
133+
((@CGUID+4)*10,24,378.6734,1393.3729,89.69339,NULL,0,1,0,100,0),
134+
((@CGUID+4)*10,25,368.74435,1377.1985,89.69339,NULL,0,1,0,100,0),
135+
((@CGUID+4)*10,26,358.59244,1357.8248,89.69339,NULL,0,1,0,100,0),
136+
((@CGUID+4)*10,27,352.95963,1373.3104,89.69339,NULL,0,1,0,100,0),
137+
((@CGUID+4)*10,28,354.78592,1394.457,89.69339,NULL,0,1,0,100,0),
138+
((@CGUID+4)*10,29,362.43695,1408.394,89.69339,NULL,0,1,0,100,0),
139+
((@CGUID+4)*10,30,379.70877,1427.434,89.69339,NULL,0,1,0,100,0),
140+
((@CGUID+4)*10,31,392.25433,1431.5131,89.69339,NULL,0,1,0,100,0),
141+
((@CGUID+4)*10,32,402.16602,1427.8239,89.69339,NULL,0,1,0,100,0),
142+
((@CGUID+4)*10,33,387.03668,1381.7903,89.69339,NULL,0,1,0,100,0),
143+
((@CGUID+4)*10,34,370.12805,1370.0513,89.69339,NULL,0,1,0,100,0),
144+
145+
((@CGUID+6)*10,1,389.7559,1429.5692,91.704124,NULL,0,1,0,100,0),
146+
((@CGUID+6)*10,2,389.15408,1430.3678,91.704124,NULL,0,1,0,100,0),
147+
((@CGUID+6)*10,3,364.2945,1429.2323,99.35547,NULL,0,1,0,100,0),
148+
((@CGUID+6)*10,4,385.5457,1429.0762,97.52219,NULL,0,1,0,100,0),
149+
((@CGUID+6)*10,5,403.14258,1412.2823,91.68882,NULL,0,1,0,100,0),
150+
((@CGUID+6)*10,6,400.02182,1390.2379,91.68882,NULL,0,1,0,100,0),
151+
((@CGUID+6)*10,7,376.41537,1384.655,94.605484,NULL,0,1,0,100,0),
152+
((@CGUID+6)*10,8,359.02756,1371.6508,94.605484,NULL,0,1,0,100,0),
153+
((@CGUID+6)*10,9,346.9107,1391.9337,94.605484,NULL,0,1,0,100,0),
154+
((@CGUID+6)*10,10,341.37088,1418.3412,94.605484,NULL,0,1,0,100,0),
155+
((@CGUID+6)*10,11,350.69977,1429.8486,94.605484,NULL,0,1,0,100,0),
156+
((@CGUID+6)*10,12,370.01108,1435.0266,94.605484,NULL,0,1,0,100,0),
157+
((@CGUID+6)*10,13,392.06976,1429.9241,94.605484,NULL,0,1,0,100,0),
158+
((@CGUID+6)*10,14,386.54068,1408.4303,94.605484,NULL,0,1,0,100,0),
159+
((@CGUID+6)*10,15,373.95096,1376.0957,94.605484,NULL,0,1,0,100,0),
160+
((@CGUID+6)*10,16,357.72754,1363.8644,94.605484,NULL,0,1,0,100,0),
161+
((@CGUID+6)*10,17,347.01358,1378.5763,94.605484,NULL,0,1,0,100,0),
162+
((@CGUID+6)*10,18,347.7666,1389.9219,94.605484,NULL,0,1,0,100,0),
163+
((@CGUID+6)*10,19,365.9999,1404.3414,94.605484,NULL,0,1,0,100,0),
164+
((@CGUID+6)*10,20,383.0139,1413.7719,94.605484,NULL,0,1,0,100,0),
165+
((@CGUID+6)*10,21,409.8304,1421.2222,94.605484,NULL,0,1,0,100,0),
166+
((@CGUID+6)*10,22,401.74924,1445.9572,94.605484,NULL,0,1,0,100,0),
167+
((@CGUID+6)*10,23,382.86514,1454.6213,94.605484,NULL,0,1,0,100,0),
168+
((@CGUID+6)*10,24,365.86273,1452.1888,94.605484,NULL,0,1,0,100,0),
169+
((@CGUID+6)*10,25,351.98242,1449.2568,94.605484,NULL,0,1,0,100,0),
170+
((@CGUID+6)*10,26,334.17416,1440.2583,94.605484,NULL,0,1,0,100,0),
171+
((@CGUID+6)*10,27,334.8176,1426.2494,94.605484,NULL,0,1,0,100,0),
172+
((@CGUID+6)*10,28,345.3902,1406.333,94.605484,NULL,0,1,0,100,0),
173+
((@CGUID+6)*10,29,362.73828,1394.9055,94.605484,NULL,0,1,0,100,0),
174+
((@CGUID+6)*10,30,394.5153,1384.1464,94.605484,NULL,0,1,0,100,0),
175+
((@CGUID+6)*10,31,419.7296,1377.4557,94.605484,NULL,0,1,0,100,0),
176+
((@CGUID+6)*10,32,409.288,1407.1461,94.605484,NULL,0,1,0,100,0),
177+
((@CGUID+6)*10,33,386.95444,1434.5723,94.605484,NULL,0,1,0,100,0),
178+
((@CGUID+6)*10,34,349.70334,1440.1602,98.16106,NULL,0,1,0,100,0),
179+
((@CGUID+6)*10,35,333.68912,1444.1354,100.02217,NULL,0,1,0,100,0),
180+
((@CGUID+6)*10,36,312.27518,1440.3971,100.02216,NULL,0,1,0,100,0),
181+
((@CGUID+6)*10,37,303.0779,1411.3394,97.49439,NULL,0,1,0,100,0),
182+
((@CGUID+6)*10,38,321.6631,1412.2037,94.605484,NULL,0,1,0,100,0),
183+
((@CGUID+6)*10,39,364.2945,1429.2323,99.35547,NULL,0,1,0,100,0),
184+
((@CGUID+6)*10,40,385.5457,1429.0762,97.52219,NULL,0,1,0,100,0);
185+
186+
DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+7;
187+
INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES
188+
(@CGUID+0,(@CGUID+0)*10,0,0,0,0,0,1,0,0,0,''),
189+
(@CGUID+2,(@CGUID+2)*10,0,0,0,0,0,1,0,0,0,''),
190+
(@CGUID+4,(@CGUID+4)*10,0,0,0,0,0,1,0,0,0,''),
191+
(@CGUID+6,(@CGUID+6)*10,0,0,0,0,0,1,0,0,0,'');
192+
193+
DELETE FROM `creature_formations` WHERE `leaderGUID` BETWEEN @CGUID+0 AND @CGUID+7;
194+
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
195+
(@CGUID+0,@CGUID+0,0,0,0,0,0),
196+
(@CGUID+0,@CGUID+1,5,0,512,0,0),
197+
(@CGUID+2,@CGUID+2,0,0,0,0,0),
198+
(@CGUID+2,@CGUID+3,5,0,512,0,0),
199+
(@CGUID+4,@CGUID+4,0,0,0,0,0),
200+
(@CGUID+4,@CGUID+5,5,0,512,0,0),
201+
(@CGUID+6,@CGUID+6,0,0,0,0,0),
202+
(@CGUID+6,@CGUID+7,5,0,512,0,0);
203+
204+
-- Spell scripts
205+
DELETE FROM `spell_script_names` WHERE `ScriptName` IN (
206+
'spell_akilzon_eagle_swoop_primer',
207+
'spell_akilzon_teleport_self',
208+
'spell_akilzon_electrical_overload_primer',
209+
'spell_akilzon_electrical_storm_damage');
210+
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
211+
(44733, 'spell_akilzon_eagle_swoop_primer'),
212+
(44006, 'spell_akilzon_teleport_self'),
213+
(44735, 'spell_akilzon_electrical_overload_primer'),
214+
(43657, 'spell_akilzon_electrical_storm_damage');
215+
216+
DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (44007,44008);

src/server/game/Entities/Object/Object.cpp

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3323,40 +3323,41 @@ void WorldObject::MovePosition(Position &pos, float dist, float angle)
33233323
void WorldObject::MovePositionToFirstCollision(Position &pos, float dist, float angle)
33243324
{
33253325
angle += GetOrientation();
3326+
float cosAngle = std::cos(angle);
3327+
float sinAngle = std::sin(angle);
33263328
float destx, desty, destz;
3327-
destx = pos.m_positionX + dist * std::cos(angle);
3328-
desty = pos.m_positionY + dist * std::sin(angle);
3329+
destx = pos.m_positionX + dist * cosAngle;
3330+
desty = pos.m_positionY + dist * sinAngle;
33293331
destz = pos.m_positionZ;
33303332

33313333
// Prevent invalid coordinates here, position is unchanged
33323334
if (!Trinity::IsValidMapCoord(destx, desty))
33333335
{
3334-
TC_LOG_FATAL("misc", "WorldObject::MovePositionToFirstCollision invalid coordinates X: {} and Y: {} were passed!", destx, desty);
3336+
TC_LOG_FATAL("misc", "WorldObject::MovePositionToFirstCollision invalid coordinates Src: {}, dist {}, angle {}, destX: {} destY: {} were passed!",
3337+
pos.ToString(), dist, angle, destx, desty);
33353338
return;
33363339
}
33373340

3341+
float halfHeight = GetCollisionHeight() * 0.5f;
3342+
bool col = false;
3343+
33383344
// Use a detour raycast to get our first collision point
33393345
PathGenerator path(this);
33403346
path.SetUseRaycast(true);
33413347
path.CalculatePath(destx, desty, destz, false);
33423348

33433349
// Check for valid path types before we proceed
3344-
if (!(path.GetPathType() & PATHFIND_NOT_USING_PATH))
3345-
if (path.GetPathType() & ~(PATHFIND_NORMAL | PATHFIND_SHORTCUT | PATHFIND_INCOMPLETE | PATHFIND_FARFROMPOLY_END))
3346-
return;
3347-
3348-
G3D::Vector3 result = path.GetPath().back();
3349-
destx = result.x;
3350-
desty = result.y;
3351-
destz = result.z;
3352-
3353-
// check static LOS
3354-
float halfHeight = GetCollisionHeight() * 0.5f;
3355-
bool col = false;
3356-
3357-
// Unit is flying, check for potential collision via vmaps
3358-
if (path.GetPathType() & PATHFIND_NOT_USING_PATH)
3350+
if (!(path.GetPathType() & (PATHFIND_NOPATH | PATHFIND_NOT_USING_PATH | PATHFIND_FARFROMPOLY_START)))
33593351
{
3352+
G3D::Vector3 const& result = path.GetPath().back();
3353+
destx = result.x;
3354+
desty = result.y;
3355+
destz = result.z;
3356+
}
3357+
else
3358+
{
3359+
// check static LOS
3360+
// Unit is flying, check for potential collision via vmaps
33603361
col = VMAP::VMapFactory::createOrGetVMapManager()->getObjectHitPos(GetMapId(),
33613362
pos.m_positionX, pos.m_positionY, pos.m_positionZ + halfHeight,
33623363
destx, desty, destz + halfHeight,
@@ -3367,9 +3368,8 @@ void WorldObject::MovePositionToFirstCollision(Position &pos, float dist, float
33673368
// Collided with static LOS object, move back to collision point
33683369
if (col)
33693370
{
3370-
destx -= CONTACT_DISTANCE * std::cos(angle);
3371-
desty -= CONTACT_DISTANCE * std::sin(angle);
3372-
dist = std::sqrt((pos.m_positionX - destx) * (pos.m_positionX - destx) + (pos.m_positionY - desty) * (pos.m_positionY - desty));
3371+
destx -= CONTACT_DISTANCE * cosAngle;
3372+
desty -= CONTACT_DISTANCE * sinAngle;
33733373
}
33743374
}
33753375

@@ -3384,18 +3384,16 @@ void WorldObject::MovePositionToFirstCollision(Position &pos, float dist, float
33843384
// Collided with a gameobject, move back to collision point
33853385
if (col)
33863386
{
3387-
destx -= CONTACT_DISTANCE * std::cos(angle);
3388-
desty -= CONTACT_DISTANCE * std::sin(angle);
3389-
dist = std::sqrt((pos.m_positionX - destx)*(pos.m_positionX - destx) + (pos.m_positionY - desty) * (pos.m_positionY - desty));
3387+
destx -= CONTACT_DISTANCE * cosAngle;
3388+
desty -= CONTACT_DISTANCE * sinAngle;
33903389
}
33913390

33923391
float groundZ = VMAP_INVALID_HEIGHT_VALUE;
33933392
Trinity::NormalizeMapCoord(pos.m_positionX);
33943393
Trinity::NormalizeMapCoord(pos.m_positionY);
33953394
UpdateAllowedPositionZ(destx, desty, destz, &groundZ);
33963395

3397-
pos.SetOrientation(GetOrientation());
3398-
pos.Relocate(destx, desty, destz);
3396+
pos.Relocate(destx, desty, destz, GetOrientation());
33993397

34003398
// position has no ground under it (or is too far away)
34013399
if (groundZ <= INVALID_HEIGHT)

0 commit comments

Comments
 (0)