/* * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #include "ScriptMgr.h" #include "Containers.h" #include "EventMap.h" #include "GameEventMgr.h" #include "GameObject.h" #include "GameObjectAI.h" #include "GameTime.h" #include "MapUtils.h" #include "Util.h" enum FireworksShowTypeObjects { FIREWORK_SHOW_TYPE_1_RED = 180703, FIREWORK_SHOW_TYPE_2_RED = 180704, FIREWORK_SHOW_TYPE_1_RED_BIG = 180707, FIREWORK_SHOW_TYPE_2_RED_BIG = 180708, FIREWORK_SHOW_TYPE_1_BLUE = 180720, FIREWORK_SHOW_TYPE_2_BLUE = 180721, FIREWORK_SHOW_TYPE_1_BLUE_BIG = 180722, FIREWORK_SHOW_TYPE_2_BLUE_BIG = 180723, FIREWORK_SHOW_TYPE_1_GREEN = 180724, FIREWORK_SHOW_TYPE_2_GREEN_BIG = 180725, FIREWORK_SHOW_TYPE_1_GREEN_BIG = 180726, FIREWORK_SHOW_TYPE_2_GREEN = 180727, FIREWORK_SHOW_TYPE_1_WHITE = 180728, FIREWORK_SHOW_TYPE_1_WHITE_BIG = 180729, FIREWORK_SHOW_TYPE_2_WHITE = 180730, FIREWORK_SHOW_TYPE_2_WHITE_BIG = 180731, FIREWORK_SHOW_TYPE_1_YELLOW = 180736, FIREWORK_SHOW_TYPE_1_YELLOW_BIG = 180737, FIREWORK_SHOW_TYPE_2_YELLOW = 180738, FIREWORK_SHOW_TYPE_2_YELLOW_BIG = 180739, FIREWORK_SHOW_TYPE_2_PURPLE = 180740, FIREWORK_SHOW_TYPE_1_PURPLE_BIG = 180741, FIREWORK_SHOW_TYPE_2_PURPLE_BIG = 180733 }; enum FireworksMisc { SOUND_CHEER_1 = 8574, SOUND_CHEER_2 = 8573, SOUND_CHEER_3 = 8572, SOUND_CHEER_4 = 8571, EVENT_CHEER = 1, EVENT_FIRE = 2, GAME_EVENT_NEW_YEAR = 6 }; enum FireworksZones { STRANGLETHORN_VALE = 33, // Booty bay EVERSONG_WOODS = 3430, // Silvermoon ORGRIMMAR = 1637, DUROTAR = 14, // Orgrimmar UNDERCITY = 1497, TIRISFAL_GLADES = 85, // Undercity TELDRASSIL = 141, // Darnassus EXODAR = 3557, THUNDERBLUFF = 1638, DUN_MOROGH = 1, // Ironforge IRONFORGE = 1537, STORMWIND = 1519 }; std::vector const BootyBayPos = { { -14358.03f, 515.058f, 34.2664f, 3.68265f }, { -14357.49f, 490.8445f, 39.47329f, 0.9773831f }, { -14355.49f, 518.5656f, 35.36923f, 4.76475f }, { -14353.66f, 485.8341f, 36.86639f, 4.886924f }, { -14376.54f, 487.5282f, 44.47044f, 5.899214f }, { -14376.66f, 516.6852f, 38.5385f, 2.199115f }, { -14382.42f, 516.2576f, 37.59617f, 5.846854f }, { -14389.55f, 485.7437f, 36.32653f, 6.0912f }, { -14376.76f, 507.9842f, 59.56532f, 0.9773831f }, { -14358.97f, 502.0223f, 43.82631f, 2.199115f }, { -14370.77f, 487.4859f, 45.46445f, 4.886924f }, { -14379.15f, 507.237f, 43.95641f, 6.0912f }, { -14363.28f, 506.7344f, 41.27156f, 5.899214f }, { -14374.43f, 496.0701f, 31.31265f, 4.76475f }, { -14360.71f, 493.6036f, 32.06157f, 5.846854f }, { -14354.37f, 491.8791f, 39.83374f, 3.68265f }, { -14371.19f, 505.8404f, 28.75178f, 6.0912f }, { -14356.57f, 494.1887f, 39.58786f, 3.68265f }, { -14380.02f, 506.3313f, 59.75512f, 6.0912f }, { -14389.84f, 503.4612f, 37.37088f, 5.899214f }, { -14353.64f, 485.4063f, 34.11704f, 4.76475f }, { -14359.63f, 522.2571f, 31.2866f, 2.199115f }, { -14374.91f, 491.508f, 40.34925f, 4.886924f }, { -14351.33f, 506.1898f, 28.69684f, 5.846854f }, { -14378.1f, 473.5608f, 40.16786f, 0.9773831f } }; std::vector const StormwindPos = { { -8823.592f, 470.316f, 179.2295f, 1.239183f }, { -8883.005f, 590.1927f, 163.1264f, 0.9773831f }, { -8919.692f, 482.9097f, 185.6471f, 3.735006f }, { -8907.228f, 551.7864f, 188.68f, 4.729844f }, { -8979.651f, 639.3976f, 184.4983f, 3.961899f }, { -8878.851f, 583.1771f, 166.3018f, 3.700105f }, { -8937.466f, 517.0521f, 183.7207f, 3.68265f }, { -8919.247f, 562.2882f, 176.1023f, 3.630291f }, { -8866.37f, 576.0504f, 157.8798f, 3.47321f }, { -8957.122f, 517.7014f, 161.3226f, 3.630291f }, { -8957.857f, 521.934f, 158.9058f, 4.729844f }, { -8851.988f, 486.5625f, 179.6635f, 4.258607f }, { -8972.651f, 531.0799f, 176.6744f, 4.886924f }, { -8986.207f, 560.9792f, 179.1758f, 5.550147f }, { -8848.866f, 488.8281f, 184.9777f, 3.961899f }, { -8946.897f, 521.3976f, 193.4021f, 0.9424766f }, { -8876.854f, 593.6771f, 171.0399f, 0.1396245f }, { -8828.743f, 463.0382f, 195.7672f, 0.9424766f }, { -8968.125f, 525.1285f, 181.9304f, 3.054327f }, { -8952.893f, 629.2743f, 188.2722f, 0.9424766f }, { -8882.172f, 574.4219f, 181.7124f, 6.0912f }, { -8980.363f, 546.7934f, 180.4686f, 4.66003f }, { -8874.944f, 575.5f, 175.7746f, 0.9075702f }, { -8945.109f, 496.3715f, 153.2825f, 6.073746f }, { -8953.094f, 513.5521f, 180.9165f, 3.735006f }, { -8955.02f, 623.7621f, 193.7679f, 0.9424766f }, { -8977.524f, 644.9097f, 197.926f, 3.961899f }, { -8985.639f, 653.9809f, 200.0452f, 3.630291f }, { -8985.639f, 653.9809f, 200.0452f, 3.630291f }, { -8849.723f, 624.1337f, 144.0357f, 0.8552105f }, { -8938.404f, 511.8854f, 179.5132f, 0.4712385f }, { -8815.946f, 571.0833f, 166.8412f, 0.8552105f }, { -8968.125f, 525.1285f, 180.6735f, 3.054327f }, { -8887.63f, 582.0261f, 180.219f, 3.787367f }, { -8962.538f, 541.4132f, 169.8063f, 0.6283169f }, { -8854.854f, 503.4115f, 194.6336f, 3.630291f }, { -8810.004f, 589.0504f, 150.2928f, 0.8552105f }, { -8921.13f, 570.2153f, 186.4456f, 3.857183f }, { -8957.076f, 538.8073f, 165.0997f, 0.5235979f }, { -8954.139f, 507.5695f, 178.861f, 3.595379f }, { -8817.174f, 577.4948f, 152.5639f, 0.8552105f }, { -8808.778f, 582.6389f, 158.5705f, 0.8552105f }, { -8898.136f, 566.4236f, 186.5282f, 6.0912f }, { -8877.205f, 598.0347f, 164.5646f, 0.1396245f }, { -8815.911f, 460.2049f, 179.4585f, 3.926996f }, { -8836.877f, 574.1649f, 168.0506f, 0.8552105f }, { -8883.005f, 590.1927f, 157.0154f, 0.9773831f }, { -8942.71f, 561.3316f, 198.328f, 3.630291f }, { -8949.616f, 617.007f, 197.4469f, 3.630291f }, { -8939.357f, 507.9288f, 155.7625f, 0.6457717f }, { -8976.667f, 558.6233f, 170.7597f, 5.550147f }, { -8871.924f, 609.7327f, 151.6364f, 0.8552105f }, { -8829.264f, 551.5052f, 137.5144f, 0.8552105f }, { -8859.802f, 567.184f, 162.9909f, 3.47321f }, { -8864.504f, 604.0816f, 144.7161f, 0.8552105f }, { -8854.042f, 616.0121f, 146.4188f, 0.8552105f }, { -8839.778f, 576.8004f, 163.2873f, 0.8552105f }, { -8863.049f, 497.7986f, 179.2041f, 3.926996f }, { -8951.743f, 611.4948f, 185.3027f, 3.630291f }, { -8976.063f, 535.0504f, 178.1283f, 4.66003f }, { -8937.466f, 517.0521f, 170.561f, 3.68265f }, { -8940.363f, 490.4288f, 180.8207f, 3.996807f }, { -8838.177f, 541.6476f, 168.6789f, 0.8552105f }, { -8825.467f, 450.7708f, 196.6236f, 3.630291f }, { -8878.851f, 583.1771f, 165.5726f, 3.700105f }, { -8822.146f, 557.2292f, 147.8244f, 0.8552105f }, { -8953.243f, 523.8958f, 158.0031f, 3.630291f }, { -8983.514f, 659.493f, 198.6248f, 3.630291f }, { -8939.941f, 499.6163f, 158.6714f, 3.944446f }, { -8925.567f, 542.2158f, 116.1619f, 6.0912f }, { -8964.125f, 634.6736f, 182.0301f, 0.6283169f }, { -8930.696f, 491.8021f, 185.6471f, 3.944446f }, { -8882.172f, 574.4219f, 165.4764f, 6.0912f }, { -8943.316f, 516.0191f, 155.9438f, 5.846854f }, { -8871.973f, 589.2795f, 159.1132f, 0.4712385f }, { -8883.328f, 579.6736f, 172.1912f, 0.6283169f }, { -8961.998f, 640.1858f, 188.2798f, 0.6283169f }, { -8912.467f, 506.625f, 175.9382f, 5.846854f }, { -8843.524f, 481.7865f, 179.664f, 0.9250238f }, { -8964.986f, 535.2136f, 163.4313f, 4.886924f }, { -8833.341f, 484.1042f, 192.8578f, 0.6283169f }, { -8861.382f, 574.7413f, 162.1575f, 3.47321f }, { -8973.627f, 631.7726f, 192.3904f, 0.6283169f }, { -8878.851f, 583.1771f, 166.149f, 3.700105f }, { -8842.842f, 481.2031f, 204.4827f, 0.6283169f }, { -8902.143f, 527.5035f, 187.1883f, 3.630291f }, { -8956.248f, 514.2257f, 161.3226f, 3.630291f }, { -8835.826f, 488.0764f, 179.2099f, 0.9250238f }, { -8961.319f, 533.3333f, 162.5372f, 3.961899f }, { -8947.649f, 516.0955f, 163.2207f, 3.68265f }, { -8949.186f, 504.1337f, 180.9165f, 3.804818f }, { -8945.564f, 511.5156f, 164.3801f, 5.899214f }, { -8969.266f, 543.882f, 180.4686f, 4.66003f }, { -8874.156f, 586.6302f, 161.5547f, 0.9773831f }, { -8919.748f, 552.2986f, 176.0453f, 3.996807f }, { -8971.5f, 637.2847f, 197.926f, 0.6283169f }, { -8965.389f, 525.8906f, 170.2664f, 2.199115f }, { -8885.1768f, 584.675781f, 141.623886f, 0.62527f }, { -8880.427734f, 576.678406f, 141.62886f, 0.69819f }, { -8873.7005f, 570.2418f, 139.33889f, 0.762973f }, { -8888.692383f, 571.265015f, 120.36886f, 0.601966f }, { -8870.9571f, 575.9952f, 120.811226f, 0.880780f }, { -8875.3905f, 582.87028f, 120.81226f, 0.76898f }, { -8887.0238f, 594.304871f, 120.81226f, 0.700139f }, { -8887.0238f, 594.3041f, 132.571243f, 5.30658f }, { -8874.3430f, 584.368164f, 131.409271f, 5.428242f }, { -8856.23049f, 573.789795f, 131.861237f, 5.707060f }, { -8881.462891f, 592.391418f, 108.883751f, 0.464518f }, { -8871.443359f, 582.234802f, 107.030724f, 0.562685f }, { -8884.809570f, 576.020081f, 100.489868f, 0.621592f }, { -8871.830078f, 585.984314f, 100.492371f, 0.696206f }, { -8871.830078f, 585.984314f, 119.252373f, 0.700133f }, { -8875.578125f, 563.403931f, 104.059372f, 4.521095f }, { -8896.128906f, 584.406311f, 107.437462f, 2.922810f }, { -8873.742188f, 599.873718f, 107.512787f, 3.001356f }, { -8885.817383f, 586.529175f, 98.614265f, 0.437024f }, { -8872.734375f, 573.338440f, 97.723770f, 1.831103f } }; std::vector const OrgrimmarPos = { { 1609.075f, -4383.707f, 90.23414f, 0.3665176f }, { 1469.648f, -4371.285f, 113.8313f, 6.073746f }, { 1391.792f, -4371.f, 165.0406f, 3.630291f }, { 1405.918f, -4504.896f, 123.1683f, 3.700105f }, { 1610.016f, -4386.493f, 82.81187f, 3.909541f }, { 1523.767f, -4385.934f, 100.7948f, 4.572764f }, { 1486.345f, -4493.087f, 146.1718f, 0.1396245f }, { 1606.724f, -4414.668f, 121.4687f, 5.550147f }, { 1647.043f, -4402.644f, 121.7353f, 1.570796f }, { 1573.078f, -4426.342f, 104.5087f, 5.550147f }, { 1600.927f, -4367.731f, 87.9886f, 3.874631f }, { 1558.359f, -4368.33f, 120.0258f, 4.363324f }, { 1377.49f, -4298.74f, 136.4911f, 5.846854f }, { 1395.439f, -4403.583f, 170.1769f, 3.68265f }, { 1394.175f, -4390.438f, 166.5045f, 5.550147f }, { 1389.752f, -4352.681f, 150.5359f, 3.228859f }, { 1471.724f, -4393.083f, 129.966f, 3.159062f }, { 1586.208f, -4334.78f, 104.248f, 2.617989f }, { 1590.582f, -4338.588f, 110.6812f, 0.2094394f }, { 1601.163f, -4367.491f, 105.1535f, 0.5410506f }, { 1493.476f, -4448.524f, 142.9773f, 3.630291f }, { 1481.592f, -4421.177f, 156.4658f, 0.1396245f }, { 1382.604f, -4319.927f, 143.5185f, 3.298687f }, { 1647.483f, -4404.724f, 113.3714f, 2.617989f }, { 1567.398f, -4423.649f, 108.9948f, 4.206246f }, { 1560.326f, -4372.816f, 112.5343f, 6.19592f }, { 1521.741f, -4390.443f, 103.8611f, 5.550147f }, { 1479.924f, -4424.903f, 156.0753f, 3.054327f }, { 1387.427f, -4334.854f, 150.2641f, 0.9773831f }, { 1481.771f, -4466.378f, 138.0009f, 3.47321f }, { 1390.512f, -4372.778f, 154.748f, 3.071766f }, { 1605.115f, -4411.217f, 112.0536f, 0.06981169f }, { 1466.144f, -4341.917f, 140.5263f, 2.548179f }, { 1479.922f, -4467.948f, 129.9536f, 3.33359f }, { 1397.09f, -4405.764f, 149.5936f, 2.199115f }, { 1404.153f, -4497.729f, 121.3236f, 6.0912f }, { 1493.337f, -4441.268f, 137.3894f, 3.211419f }, { 1469.385f, -4340.427f, 150.2859f, 2.548179f }, { 1385.043f, -4317.056f, 145.6198f, 3.194002f }, { 1472.734f, -4398.983f, 135.9285f, 3.47321f }, { 1469.135f, -4380.587f, 117.5022f, 0.1396245f }, { 1389.047f, -4339.42f, 150.2229f, 4.76475f }, { 1476.245f, -4420.931f, 159.4286f, 3.630291f }, { 1479.87f, -4421.628f, 161.0234f, 3.054327f }, { 1391.415f, -4370.76f, 161.9061f, 3.089183f }, { 1394.175f, -4385.715f, 153.2316f, 5.899214f }, { 1396.132f, -4411.295f, 161.1071f, 4.66003f }, { 1403.262f, -4474.733f, 103.9363f, 4.886924f }, { 1488.257f, -4491.f, 130.442f, 0.03490625f }, { 1467.707f, -4361.327f, 105.1312f, 3.700105f }, { 1375.649f, -4366.401f, 152.1661f, 0.1745321f }, { 1389.922f, -4375.253f, 77.87833f, 6.0912f }, { 1392.398f, -4379.628f, 172.5377f, 2.199115f }, { 1394.943f, -4388.257f, 176.3171f, 3.246347f }, { 1481.833f, -4466.399f, 160.8109f, 3.630291f }, { 1469.816f, -4366.597f, 120.6296f, 3.159062f }, { 1379.802f, -4309.967f, 146.3039f, 2.984498f }, { 1388.002f, -4353.233f, 148.1396f, 5.899214f }, { 1378.589f, -4296.118f, 144.691f, 5.846854f }, { 1470.207f, -4395.868f, 133.8257f, 6.073746f }, { 1406.467f, -4511.327f, 123.2332f, 0.1396245f }, { 1395.04f, -4390.569f, 167.5848f, 3.228859f }, { 1480.908f, -4422.219f, 154.6776f, 3.194002f }, { 1486.033f, -4493.719f, 144.937f, 3.47321f }, { 1403.845f, -4488.743f, 124.8069f, 3.700105f }, { 1494.733f, -4446.885f, 140.0633f, 6.248279f }, { 1481.875f, -4428.431f, 161.3601f, 3.316144f }, { 1384.299f, -4332.253f, 146.5117f, 3.194002f }, { 1468.939f, -4346.42f, 143.6888f, 3.054327f }, { 1393.356f, -4478.347f, 125.5958f, 6.0912f }, { 1384.672f, -4449.229f, 146.3165f, 4.886924f }, { 1486.5393f, -4372.5333f, 117.014f, 5.951700f }, { 1489.1738f, -4415.65091f, 110.5526f, 1.309994f }, { 1501.63171f, -4454.74668f, 107.716637f, 0.387151f }, { 1518.3159f, -4438.94873f, 82.9114f, 1.891189f }, { 1511.754272f, -4423.58203f, 75.781662f, 6.1763f }, { 1508.1212f, -4399.4312f, 75.781662f, 3.575869f }, { 1515.1198f, -4356.886719f, 81.859f, 5.87775f }, { 1553.78795f, -4387.95084f, 72.565178f, 1.372812f }, { 1549.74023f, -4413.03227f, 74.2219f, 0.42641f }, { 1528.63644f, -4408.71850f, 118.7224f, 0.23985f }, { 1532.7171f, -4399.64944f, 50.62704f, 0.13188f }, { 1509.3391f, -4422.2905f, 55.24475f, 0.1554f }, { 1501.4160f, -4413.1782f, 42.63250f, 0.347852f }, { 1499.258179f, -4395.1628f, 42.230198f, 6.02282f }, { 1485.33571f, -4397.560547f, 51.07567f, 3.2190f }, { 1495.2693f, -4417.2910f, 50.232471f, 3.31666f }, { 1498.65912f, -4439.20613f, 49.07176f, 3.7643f }, { 1523.45699f, -4393.04395f, 39.775066f, 3.71542f }, { 1536.62665f, -4419.85963f, 40.4508f, 3.46193f }, { 1497.2632f, -4401.54637f, 33.805511f, 2.60181f }, { 1497.9363f, -4437.58008f, 32.326393f, 4.96205f }, { 1493.26253f, -4402.19919f, 59.147816f, 2.2917f } }; std::vector const IronForgePos = { { -5196.038f, -858.4618f, 525.0447f, 6.073746f }, { -5195.734f, -887.6441f, 534.168f, 3.68265f }, { -5195.063f, -762.2795f, 510.0929f, 4.66003f }, { -5164.59f, -858.3264f, 540.0117f, 5.899214f }, { -5130.776f, -791.1945f, 523.2938f, 5.846854f }, { -5127.663f, -827.1771f, 534.2573f, 4.76475f }, { -5227.184f, -754.8802f, 500.0329f, 5.550147f }, { -5197.655f, -857.8889f, 525.5248f, 2.199115f }, { -5227.705f, -859.0052f, 513.9084f, 6.0912f }, { -5227.f, -821.7795f, 471.7424f, 3.700105f }, { -5131.42f, -791.9445f, 537.8198f, 3.054327f }, { -5223.59f, -889.6302f, 509.3725f, 4.886924f }, { -5164.124f, -825.3795f, 525.2161f, 0.9773831f }, { -5196.168f, -826.6163f, 517.4463f, 2.111848f }, { -5227.393f, -757.1059f, 501.0704f, 3.47321f }, { -5192.556f, -784.4583f, 506.9716f, 4.729844f }, { -5227.965f, -792.184f, 509.1933f, 0.1396245f }, { -5182.054f, -782.283f, 514.0707f, 4.886924f }, { -5152.384f, -819.2031f, 508.2252f, 0.9773831f }, { -5220.162f, -722.941f, 501.573f, 3.700105f }, { -5218.438f, -879.0486f, 534.1289f, 2.111848f }, { -5186.096f, -846.5903f, 526.4001f, 3.054327f }, { -5182.972f, -816.2309f, 522.7172f, 5.550147f }, { -5172.745f, -854.6077f, 541.5695f, 2.548179f }, { -5126.936f, -816.5712f, 506.1032f, 4.76475f }, { -5214.637f, -850.4496f, 524.1501f, 4.729844f }, { -5156.693f, -818.3021f, 532.9488f, 4.66003f }, { -5188.997f, -876.8524f, 544.1463f, 6.073746f }, { -5216.222f, -817.3351f, 498.4872f, 3.630291f }, { -5190.08f, -758.6545f, 507.9708f, 6.0912f }, { -5156.724f, -844.0851f, 529.4639f, 5.899214f }, { -5215.002f, -754.8802f, 488.5055f, 0.1396245f }, { -5137.646f, -787.2882f, 502.1171f, 5.846854f }, { -5183.194f, -817.217f, 508.4071f, 3.68265f }, { -5183.191f, -848.6163f, 518.0361f, 2.199115f }, { -5215.972f, -785.0452f, 494.1193f, 3.47321f }, { -5117.396f, -791.4796f, 483.5854f, 6.0912f }, { -5153.132f, -781.2309f, 539.7031f, 5.899214f }, { -5209.993f, -710.1337f, 501.9293f, 5.846854f }, { -5172.809f, -848.1094f, 520.4458f, 6.0912f }, { -5120.552f, -812.3004f, 547.9608f, 3.68265f }, { -5142.92f, -811.507f, 526.748f, 4.886924f }, { -5208.391f, -773.4583f, 497.451f, 4.729844f }, { -5181.903f, -779.1979f, 518.5895f, 0.9773831f }, { -5208.097f, -843.934f, 514.2054f, 3.47321f }, { -5118.309f, -783.3246f, 545.3275f, 2.199115f }, { -5213.969f, -715.6684f, 493.5344f, 6.073746f }, { -5211.384f, -872.493f, 523.3142f, 0.1396245f }, { -5215.563f, -812.7205f, 501.1313f, 2.548179f }, { -5159.971f, -819.0695f, 523.9502f, 5.550147f }, { -5243.21f, -741.7934f, 479.6208f, 2.111848f }, { -5158.577f, -784.243f, 515.7791f, 3.054327f }, { -5210.179f, -809.2413f, 507.136f, 3.630291f }, { -5182.26f, -818.6476f, 519.5022f, 4.66003f }, { -5178.493f, -870.8143f, 539.2921f, 3.700105f }, { -5206.622f, -741.5938f, 511.1593f, 4.76475f }, { -5194.976f, -759.9896f, 517.6288f, 3.630291f } }; std::vector const SilvermoonPos = { { 9466.583f, -7307.326f, 107.8366f, 0.1047193f }, { 9411.616f, -7322.223f, 79.95399f, 2.722713f }, { 9472.98f, -7276.879f, 111.8719f, 6.056293f }, { 9403.265f, -7283.608f, 108.6991f, 3.106652f }, { 9426.45f, -7221.809f, 95.899f, 3.612838f }, { 9410.442f, -7283.999f, 113.0489f, 3.106652f }, { 9398.225f, -7284.489f, 81.34821f, 3.019413f }, { 9400.401f, -7268.281f, 114.684f, 3.228859f }, { 9478.615f, -7259.143f, 109.0896f, 5.777041f }, { 9480.074f, -7163.523f, 113.2669f, 0.1396245f }, { 9482.511f, -7119.089f, 95.79392f, 6.021387f }, { 9407.579f, -7277.173f, 145.9511f, 3.159062f }, { 9399.398f, -7323.894f, 106.2334f, 2.617989f }, { 9395.489f, -7278.119f, 77.25965f, 3.106652f }, { 9407.703f, -7330.93f, 97.46037f, 2.565632f }, { 9408.553f, -7254.359f, 103.7934f, 3.455756f }, { 9480.151f, -7135.254f, 120.9287f, 6.19592f }, { 9412.958f, -7276.931f, 107.8171f, 3.141593f }, { 9475.104f, -7306.728f, 116.2541f, 0.1745321f }, { 9464.988f, -7319.295f, 101.1637f, 0.2617982f }, { 9472.38f, -7267.314f, 140.3056f, 5.93412f }, { 9410.978f, -7300.815f, 109.2923f, 2.583081f }, { 9405.042f, -7301.033f, 124.4924f, 2.967041f }, { 9403.106f, -7309.054f, 103.702f, 2.984498f }, { 9464.217f, -7350.079f, 131.7602f, 0.5759573f }, { 9456.133f, -7348.024f, 104.9382f, 0.383971f }, { 9411.794f, -7285.174f, 101.2357f, 3.089183f }, { 9411.597f, -7266.42f, 102.0371f, 3.263772f }, { 9478.836f, -7127.272f, 95.90057f, 6.143561f }, { 9481.063f, -7136.337f, 101.3669f, 0.01745246f }, { 9398.232f, -7329.835f, 85.74606f, 2.775069f }, { 9399.838f, -7268.37f, 72.05019f, 3.211419f }, { 9409.207f, -7241.094f, 85.7521f, 3.368496f }, { 9465.259f, -7310.388f, 113.2353f, 0.6283169f }, { 9487.643f, -7155.167f, 124.4381f, 0.122173f }, { 9431.971f, -7222.501f, 95.89851f, 3.455756f }, { 9393.978f, -7278.168f, 71.72367f, 3.124123f }, { 9487.966f, -7268.014f, 119.8879f, 5.829401f }, { 9404.565f, -7330.906f, 90.92167f, 2.740162f }, { 9465.2f, -7313.238f, 124.9027f, 0.2268925f }, { 9470.827f, -7304.245f, 135.3172f, 6.265733f }, { 9403.582f, -7255.257f, 107.5193f, 3.298687f }, { 9399.23f, -7310.893f, 80.78027f, 2.879789f }, { 9472.535f, -7267.201f, 112.1708f, 6.03884f }, { 9491.937f, -7154.478f, 97.61007f, 0.05235888f }, { 9412.064f, -7278.493f, 116.0459f, 3.106652f }, { 9369.768f, -7276.374f, 14.24026f, 6.0912f }, { 9410.102f, -7295.561f, 143.4681f, 3.019413f }, { 9484.801f, -7131.789f, 81.00427f, 6.161013f }, { 9411.763f, -7266.338f, 107.3137f, 3.106652f }, { 9407.249f, -7253.171f, 115.6959f, 3.316144f }, { 9465.064f, -7316.58f, 144.7163f, 0.2967052f }, { 9411.466f, -7252.686f, 113.9839f, 3.33359f }, { 9474.942f, -7260.846f, 125.8512f, 5.969027f }, { 9485.356f, -7110.373f, 104.1972f, 6.03884f }, { 9402.48f, -7333.202f, 107.0458f, 2.460913f }, { 9404.987f, -7279.173f, 133.3515f, 2.949595f }, { 9476.116f, -7270.055f, 105.0233f, 6.003934f }, { 9470.456f, -7300.805f, 107.3014f, 0.087266f }, { 9434.106f, -7236.905f, 133.1817f, 3.368496f }, { 9416.494f, -7325.862f, 113.1137f, 2.652894f }, { 9406.013f, -7302.038f, 109.1291f, 2.740162f }, { 9473.886f, -7256.887f, 108.9899f, 5.829401f }, { 9430.171f, -7231.706f, 114.6874f, 3.42085f }, { 9404.366f, -7275.19f, 144.4704f, 3.071766f }, { 9411.504f, -7288.202f, 112.2664f, 2.844883f } }; std::vector const ExodarPos = { { -3992.465f, -11843.86f, 186.4043f, 2.199115f }, { -3948.378f, -11854.06f, 135.6206f, 3.47321f }, { -3918.684f, -11840.53f, 216.565f, 4.886924f }, { -3946.1f, -11854.03f, 131.2059f, 6.0912f }, { -3966.864f, -11851.99f, 106.2717f, 2.548179f }, { -3994.082f, -11855.4f, 66.14954f, 4.32842f }, { -3989.288f, -11846.68f, 147.7923f, 3.700105f }, { -3974.271f, -11849.3f, 183.4967f, 0.9773831f }, { -3943.34f, -11850.36f, 191.2153f, 5.846854f }, { -3923.543f, -11851.16f, 93.1925f, 3.054327f }, { -3990.212f, -11844.83f, 89.08578f, 2.111848f }, { -3977.315f, -11848.61f, 128.4479f, 3.700105f }, { -3972.831f, -11850.72f, 89.65628f, 2.548179f }, { -3946.937f, -11851.44f, 192.1654f, 2.199115f }, { -3937.843f, -11856.82f, 80.51583f, 4.66003f }, { -3954.331f, -11851.98f, 81.24915f, 3.054327f }, { -3937.817f, -11853.64f, 121.1544f, 3.47321f }, { -3967.367f, -11851.36f, 123.7478f, 4.729844f }, { -3986.625f, -11847.29f, 142.0192f, 6.0912f }, { -3990.369f, -11844.75f, 94.17735f, 6.073746f }, { -3938.356f, -11850.21f, 200.6413f, 3.68265f }, { -3954.939f, -11852.58f, 184.5983f, 5.899214f }, { -3988.003f, -11846.72f, 73.19949f, 6.0912f }, { -3896.356f, -11844.68f, 148.2895f, 5.899214f }, { -3971.118f, -11850.72f, 137.1919f, 6.073746f }, { -3930.919f, -11853.74f, 138.6459f, 0.9773831f }, { -3984.946f, -11844.98f, 164.378f, 4.66003f }, { -3943.503f, -11854.65f, 145.232f, 3.630291f }, { -3812.792f, -11807.49f, 135.9212f, 3.700105f }, { -3943.854f, -11854.62f, 163.0852f, 5.550147f }, { -3957.711f, -11850.8f, 147.1301f, 3.68265f }, { -3949.376f, -11848.43f, 146.4466f, 2.199115f }, { -4014.848f, -11815.58f, 130.2189f, 4.729844f }, { -4012.328f, -11821.78f, 92.57595f, 6.073746f }, { -4025.119f, -11794.49f, 183.6754f, 4.76475f }, { -4031.543f, -11791.47f, 78.31419f, 4.66003f }, { -4019.754f, -11805.57f, 129.9788f, 3.630291f }, { -4009.46f, -11824.12f, 126.7007f, 0.1396245f }, { -4049.115f, -11781.37f, 197.9942f, 3.68265f }, { -4006.23f, -11830.18f, 184.4535f, 5.899214f }, { -4017.271f, -11814.06f, 73.86016f, 2.111848f }, { -4018.511f, -11807.98f, 179.3607f, 4.450591f }, { -4038.572f, -11767.11f, 191.1657f, 4.76475f }, { -4018.321f, -11808.37f, 178.2087f, 0.9773831f }, { -4013.852f, -11817.62f, 126.2276f, 4.886924f }, { -4028.476f, -11782.85f, 100.8544f, 0.1396245f }, { -4006.938f, -11821.57f, 81.11591f, 5.550147f }, { -4018.111f, -11808.96f, 113.2876f, 3.630291f }, { -4069.263f, -11755.89f, 133.3362f, 0.1396245f }, { -4041.02f, -11757.23f, 139.8532f, 5.846854f }, { -4012.13f, -11814.23f, 165.8398f, 3.054327f }, { -4028.264f, -11781.04f, 135.2486f, 6.0912f }, { -4025.534f, -11790.81f, 164.8259f, 2.548179f }, { -4015.083f, -11815.16f, 147.3407f, 4.886924f }, { -4011.046f, -11818.31f, 141.9634f, 4.76475f }, { -4043.675f, -11746.47f, 136.9332f, 3.47321f }, { -4013.666f, -11817.91f, 169.5565f, 2.111848f }, { -4036.461f, -11783.4f, 142.8152f, 4.729844f } }; std::vector const ThunderBluffPos = { { -1234.804f, -19.72239f, 206.5436f, 0.1396245f }, { -1244.442f, -35.88308f, 206.82f, 4.729844f }, { -1239.212f, -11.25857f, 208.6352f, 3.700105f }, { -1217.165f, -15.58898f, 207.4553f, 3.68265f }, { -1229.332f, -6.54617f, 208.2537f, 2.548179f }, { -1227.353f, -14.30225f, 206.6192f, 3.054327f }, { -1234.8f, -14.12402f, 208.0964f, 6.0912f }, { -1246.791f, -38.59223f, 206.846f, 6.073746f }, { -1229.818f, -6.788249f, 209.4552f, 4.886924f }, { -1223.867f, -10.67551f, 205.7558f, 0.9773831f }, { -1229.833f, -6.403429f, 208.6842f, 4.76475f }, { -1239.199f, -23.20622f, 207.0188f, 3.47321f }, { -1246.258f, -37.36089f, 208.2598f, 2.199115f }, { -1223.363f, -12.2462f, 201.3805f, 4.66003f }, { -1218.116f, -16.37305f, 199.9185f, 5.550147f }, { -1239.709f, -42.34294f, 204.2466f, 2.111848f }, { -1219.295f, -12.87424f, 206.2387f, 5.899214f }, { -1251.241f, -33.18164f, 209.7986f, 3.630291f }, { -1219.549f, -12.32769f, 207.9862f, 3.47321f }, { -1251.181f, -34.52919f, 206.8795f, 4.66003f }, { -1235.567f, -15.02116f, 205.3759f, 2.199115f }, { -1241.148f, -41.8049f, 205.8436f, 0.1396245f }, { -1241.41f, -23.09136f, 206.5933f, 3.054327f }, { -1235.885f, -19.49116f, 206.4422f, 3.68265f }, { -1234.823f, -13.99685f, 210.1406f, 6.073746f }, { -1220.117f, -10.93815f, 204.8297f, 4.76475f }, { -1219.087f, -6.230252f, 206.5717f, 5.899214f }, { -1235.053f, -20.39225f, 206.5732f, 3.630291f }, { -1239.364f, -22.23714f, 207.2047f, 4.886924f }, { -1245.448f, -37.35639f, 208.0733f, 3.700105f }, { -1222.941f, -10.68441f, 208.3044f, 0.9773831f }, { -1238.765f, -11.7156f, 203.8905f, 2.111848f }, { -1251.638f, -34.5931f, 207.4821f, 6.0912f }, { -1229.332f, -6.54617f, 205.5314f, 4.729844f }, { -1245.196f, -37.02111f, 208.2277f, 5.550147f }, { -1235.227f, -19.88525f, 206.9543f, 2.548179f }, { -1249.993f, -35.97727f, 206.9852f, 5.846854f }, { -1238.741f, -11.55127f, 216.4102f, 4.76475f }, { -1242.702f, -23.95698f, 215.8784f, 2.199115f }, { -1223.998f, -11.75629f, 187.3124f, 6.0912f }, { -1220.138f, -16.90701f, 218.7182f, 2.111848f }, { -1239.351f, -23.36654f, 218.1057f, 5.550147f }, { -1222.544f, -11.58713f, 218.9956f, 3.630291f }, { -1234.379f, -19.82167f, 211.3573f, 5.899214f }, { -1224.649f, -16.73172f, 217.2839f, 6.073746f }, { -1219.856f, -11.69358f, 218.5711f, 0.1396245f }, { -1223.967f, -8.415148f, 219.2347f, 3.47321f }, { -1252.266f, -33.21897f, 215.823f, 3.68265f }, { -1244.304f, -41.49599f, 214.7235f, 3.700105f }, { -1245.102f, -34.69542f, 215.4592f, 4.886924f }, { -1239.761f, -41.99474f, 211.7772f, 6.0912f }, { -1219.803f, -11.18414f, 219.6471f, 4.729844f }, { -1219.832f, -12.19803f, 219.4899f, 5.846854f }, { -1236.825f, -18.4617f, 220.2076f, 4.66003f }, { -1239.635f, -11.55973f, 220.694f, 2.548179f }, { -1233.765f, -15.5765f, 216.1068f, 3.054327f }, { -1233.56f, -15.80257f, 215.6199f, 0.9773831f }, { -1240.617f, -41.39486f, 205.0362f, 5.846854f } }; std::vector const UndercityPos = { { 1850.231f, 257.0156f, 124.1743f, 4.729844f }, { 1863.302f, 193.9063f, 114.5829f, 0.9773831f }, { 1851.997f, 212.7726f, 127.959f, 5.550147f }, { 1862.474f, 288.1528f, 118.4504f, 6.0912f }, { 1851.906f, 267.6267f, 131.5442f, 3.054327f }, { 1868.905f, 323.2587f, 131.801f, 0.1396245f }, { 1849.677f, 196.5052f, 119.4152f, 2.548179f }, { 1870.382f, 155.8438f, 135.8888f, 5.846854f }, { 1863.309f, 211.9219f, 117.2065f, 5.899214f }, { 1849.877f, 215.7413f, 120.1931f, 6.073746f }, { 1864.762f, 170.5399f, 108.2692f, 4.76475f }, { 1839.986f, 288.4306f, 126.1348f, 3.47321f }, { 1875.91f, 230.566f, 125.1612f, 2.199115f }, { 1854.146f, 238.7622f, 131.7162f, 4.66003f }, { 1863.307f, 264.4583f, 123.374f, 4.886924f }, { 1871.578f, 266.8681f, 108.0443f, 4.66003f }, { 1836.901f, 185.5868f, 113.362f, 3.630291f }, { 1871.545f, 191.2622f, 105.8294f, 6.073746f }, { 1863.307f, 211.816f, 114.3906f, 4.76475f }, { 1841.543f, 205.1754f, 102.9691f, 3.47321f }, { 1843.304f, 273.4757f, 104.6566f, 6.0912f }, { 1870.818f, 167.0938f, 126.3066f, 4.729844f }, { 1840.653f, 227.6319f, 106.8095f, 0.1396245f }, { 1863.299f, 282.1806f, 110.9902f, 2.199115f }, { 1875.688f, 230.5278f, 112.7081f, 3.054327f }, { 1872.264f, 311.1458f, 119.7756f, 3.68265f }, { 1871.248f, 297.1684f, 113.6078f, 5.550147f }, { 1863.293f, 186.4896f, 114.6143f, 5.846854f }, { 1838.384f, 252.3264f, 103.8479f, 3.700105f }, { 1886.804f, 166.3976f, 125.2679f, 2.111848f }, { 1863.363f, 237.5417f, 125.3641f, 0.9773831f }, { 1863.307f, 267.875f, 113.7794f, 5.899214f }, { 1845.602f, 299.4445f, 120.9578f, 4.886924f }, { 1871.884f, 217.2656f, 108.2966f, 2.548179f }, { 1867.459f, 240.2357f, 106.0639f, 6.0912f }, { 1863.326f, 298.4879f, 121.1103f, 3.054327f }, { 1844.776f, 287.776f, 131.6692f, 4.76475f }, { 1842.595f, 299.8854f, 132.9048f, 5.846854f }, { 1843.754f, 233.0833f, 122.607f, 3.68265f }, { 1865.563f, 238.7674f, 127.128f, 5.550147f }, { 1863.302f, 282.6076f, 117.6718f, 2.548179f }, { 1850.063f, 218.7344f, 116.5234f, 4.886924f }, { 1852.528f, 257.8333f, 125.5587f, 5.899214f }, { 1870.385f, 321.809f, 123.7424f, 4.66003f }, { 1864.694f, 167.474f, 111.3632f, 0.1396245f }, { 1846.231f, 194.2656f, 108.0038f, 3.700105f }, { 1876.434f, 227.1129f, 116.7266f, 4.729844f }, { 1839.993f, 245.0399f, 120.8441f, 2.199115f }, { 1864.042f, 204.4774f, 105.6403f, 3.630291f }, { 1875.594f, 246.9271f, 110.0379f, 2.111848f }, { 1850.892f, 273.6059f, 133.6044f, 0.9773831f }, { 1863.3f, 186.2188f, 118.3104f, 3.47321f }, { 1851.578f, 203.2604f, 118.5638f, 6.0912f }, { 1863.307f, 259.8038f, 116.5421f, 6.073746f }, { 1877.592f, 247.3872f, 128.022f, 3.68265f }, { 1850.288f, 267.309f, 125.0537f, 3.630291f } }; std::vector const DarnassusPos = { { 8578.888f, 975.2604f, 42.48742f, 5.846854f }, { 8574.236f, 944.2083f, 44.71943f, 4.76475f }, { 8517.067f, 986.0851f, 66.32562f, 4.729844f }, { 8553.734f, 780.0504f, 63.21661f, 4.886924f }, { 8537.763f, 877.8924f, 76.7791f, 3.054327f }, { 8572.691f, 814.7379f, 72.4253f, 3.68265f }, { 8572.691f, 814.7379f, 72.4253f, 3.68265f }, { 8494.191f, 943.868f, 59.0681f, 6.073746f }, { 8536.576f, 873.7222f, 45.29478f, 0.1396245f }, { 8550.191f, 850.7222f, 57.6362f, 3.700105f }, { 8554.281f, 875.8316f, 48.10747f, 5.550147f }, { 8590.731f, 846.9427f, 56.89664f, 2.199115f }, { 8519.5f, 949.7708f, 63.29575f, 3.630291f }, { 8508.24f, 838.3646f, 77.00415f, 4.66003f }, { 8588.622f, 912.0434f, 49.60857f, 0.9773831f }, { 8538.786f, 820.7361f, 67.0003f, 6.0912f }, { 8488.077f, 983.2379f, 59.87747f, 2.111848f }, { 8494.68f, 911.783f, 72.29862f, 2.548179f }, { 8556.297f, 920.9479f, 42.13089f, 3.47321f }, { 8571.629f, 880.1511f, 53.78056f, 5.899214f }, { 8544.278f, 885.059f, 70.3073f, 0.1396245f }, { 8551.224f, 947.6059f, 60.74737f, 6.0912f }, { 8586.716f, 913.4774f, 42.5911f, 4.76475f }, { 8617.442f, 917.658f, 41.92455f, 4.886924f }, { 8519.375f, 917.842f, 74.22758f, 2.111848f }, { 8550.322f, 910.9809f, 52.84513f, 3.700105f }, { 8582.255f, 848.0608f, 53.87154f, 5.899214f }, { 8547.279f, 964.1684f, 45.09663f, 5.550147f }, { 8581.158f, 881.2344f, 54.83494f, 0.9773831f }, { 8550.932f, 817.2396f, 60.80384f, 3.630291f }, { 8550.214f, 787.1684f, 66.42948f, 4.729844f }, { 8583.88f, 948.4114f, 41.32378f, 5.846854f }, { 8550.997f, 848.8594f, 70.56313f, 3.47321f }, { 8517.45f, 879.5555f, 83.80603f, 6.073746f }, { 8558.55f, 838.934f, 56.89937f, 4.66003f }, { 8617.526f, 851.5955f, 37.39491f, 3.68265f }, { 8579.229f, 911.8906f, 44.37334f, 3.054327f }, { 8581.771f, 817.0295f, 30.07061f, 2.199115f }, { 8514.054f, 848.6059f, 59.20383f, 2.548179f }, { 8570.65f, 885.1719f, 59.11485f, 2.548179f }, { 8576.803f, 814.3611f, 50.15007f, 4.66003f }, { 8697.891f, 991.0841f, 39.18531f, 6.0912f }, { 8547.403f, 974.4879f, 63.7893f, 5.846854f }, { 8553.929f, 853.6476f, 84.47609f, 0.1396245f }, { 8507.603f, 878.8854f, 70.23988f, 5.899214f }, { 8570.95f, 854.1406f, 65.7302f, 3.054327f }, { 8560.618f, 777.342f, 79.87446f, 4.886924f }, { 8542.07f, 852.0174f, 64.99033f, 3.700105f }, { 8514.364f, 940.0868f, 64.65899f, 4.76475f }, { 8526.2f, 848.8542f, 63.1242f, 2.199115f }, { 8571.85f, 913.1511f, 43.11662f, 6.073746f }, { 8591.914f, 901.6493f, 26.83536f, 5.550147f }, { 8539.892f, 914.3368f, 45.99331f, 3.630291f }, { 8578.143f, 948.3264f, 62.56763f, 2.111848f }, { 8539.493f, 887.2274f, 79.56437f, 3.47321f }, { 8538.561f, 951.6632f, 69.08958f, 4.729844f }, { 8523.006f, 907.7413f, 72.85262f, 0.9773831f }, { 8520.907f, 813.0208f, 81.70242f, 3.68265f }, { 8554.825f, 813.0746f, 78.88226f, 6.0912f } }; std::unordered_map const*> const PositionsByZoneMap = { { STRANGLETHORN_VALE, &BootyBayPos }, { STORMWIND, &StormwindPos }, { ORGRIMMAR, &OrgrimmarPos }, { DUROTAR, &OrgrimmarPos }, { DUN_MOROGH, &IronForgePos }, { IRONFORGE, &IronForgePos }, { EVERSONG_WOODS, &SilvermoonPos }, { EXODAR, &ExodarPos }, { THUNDERBLUFF, &ThunderBluffPos }, { UNDERCITY, &UndercityPos }, { TIRISFAL_GLADES, &UndercityPos }, { TELDRASSIL, &DarnassusPos } }; class go_cheer_speaker : public GameObjectScript { public: go_cheer_speaker() : GameObjectScript("go_cheer_speaker") { } struct go_cheer_speakerAI : public GameObjectAI { go_cheer_speakerAI(GameObject* go) : GameObjectAI(go) { _started = false; _big = true; } static uint32 CheerPicker() { uint32 ids[] = { SOUND_CHEER_1, SOUND_CHEER_2, SOUND_CHEER_3, SOUND_CHEER_4 }; return Trinity::Containers::SelectRandomContainerElement(ids); } static uint32 FireworksPicker() { uint32 ids[] = { FIREWORK_SHOW_TYPE_1_RED, FIREWORK_SHOW_TYPE_2_RED, FIREWORK_SHOW_TYPE_1_RED_BIG, FIREWORK_SHOW_TYPE_2_RED_BIG, FIREWORK_SHOW_TYPE_1_BLUE, FIREWORK_SHOW_TYPE_2_BLUE, FIREWORK_SHOW_TYPE_1_BLUE_BIG, FIREWORK_SHOW_TYPE_2_BLUE_BIG, FIREWORK_SHOW_TYPE_1_GREEN, FIREWORK_SHOW_TYPE_2_GREEN_BIG, FIREWORK_SHOW_TYPE_1_GREEN_BIG, FIREWORK_SHOW_TYPE_2_GREEN, FIREWORK_SHOW_TYPE_1_WHITE, FIREWORK_SHOW_TYPE_1_WHITE_BIG, FIREWORK_SHOW_TYPE_2_WHITE, FIREWORK_SHOW_TYPE_2_WHITE_BIG, FIREWORK_SHOW_TYPE_1_YELLOW, FIREWORK_SHOW_TYPE_1_YELLOW_BIG, FIREWORK_SHOW_TYPE_2_YELLOW, FIREWORK_SHOW_TYPE_2_YELLOW_BIG, FIREWORK_SHOW_TYPE_2_PURPLE, FIREWORK_SHOW_TYPE_1_PURPLE_BIG, FIREWORK_SHOW_TYPE_2_PURPLE_BIG }; return Trinity::Containers::SelectRandomContainerElement(ids); } static uint32 FireworksBIGOnlyPicker() { uint32 ids[] = { FIREWORK_SHOW_TYPE_1_RED_BIG, FIREWORK_SHOW_TYPE_2_RED_BIG, FIREWORK_SHOW_TYPE_1_BLUE_BIG, FIREWORK_SHOW_TYPE_2_BLUE_BIG, FIREWORK_SHOW_TYPE_2_GREEN_BIG, FIREWORK_SHOW_TYPE_1_GREEN_BIG, FIREWORK_SHOW_TYPE_1_WHITE_BIG, FIREWORK_SHOW_TYPE_2_WHITE_BIG, FIREWORK_SHOW_TYPE_1_YELLOW_BIG, FIREWORK_SHOW_TYPE_2_YELLOW_BIG, FIREWORK_SHOW_TYPE_1_PURPLE_BIG, FIREWORK_SHOW_TYPE_2_PURPLE_BIG }; return Trinity::Containers::SelectRandomContainerElement(ids); } void UpdateAI(uint32 diff) override { _events.Update(diff); time_t time = GameTime::GetGameTime(); tm localTm; localtime_r(&time, &localTm); // Start if ((localTm.tm_min == 0 && localTm.tm_sec == 0) && !_started && (IsHolidayActive(HOLIDAY_FIREWORKS_SPECTACULAR) || IsEventActive(GAME_EVENT_NEW_YEAR))) { _events.ScheduleEvent(EVENT_CHEER, 1s); _events.ScheduleEvent(EVENT_FIRE, 1s); _started = true; } // Event is active if ((localTm.tm_min >= 0 && localTm.tm_sec >= 1 && localTm.tm_min <= 9 && localTm.tm_sec <= 59 && !_started) && (IsHolidayActive(HOLIDAY_FIREWORKS_SPECTACULAR) || IsEventActive(GAME_EVENT_NEW_YEAR))) { _events.ScheduleEvent(EVENT_FIRE, 1s); _started = true; } // Stop if ((localTm.tm_min == 10 && localTm.tm_sec == 0) && _started == true) { _started = false; _events.ScheduleEvent(EVENT_CHEER, 1s); _events.CancelEvent(EVENT_FIRE); } // New Year (Only!) - One more big bang! if ((localTm.tm_min == 10 && localTm.tm_sec == 30 && localTm.tm_hour == 0) && IsEventActive(GAME_EVENT_NEW_YEAR) && _big == true) { _big = false; _events.ScheduleEvent(EVENT_CHEER, 1s); _events.ScheduleEvent(EVENT_FIRE, 1s); _events.ScheduleEvent(EVENT_FIRE, 1s); _events.ScheduleEvent(EVENT_FIRE, 1s); _events.ScheduleEvent(EVENT_FIRE, 1s); _events.ScheduleEvent(EVENT_FIRE, 1s); _events.ScheduleEvent(EVENT_FIRE, 1s); _events.ScheduleEvent(EVENT_FIRE, 1s); _events.ScheduleEvent(EVENT_FIRE, 1s); _events.ScheduleEvent(EVENT_FIRE, 1s); _events.ScheduleEvent(EVENT_FIRE, 1s); } while (uint32 eventId = _events.ExecuteEvent()) { switch (eventId) { case EVENT_CHEER: { me->PlayDistanceSound(CheerPicker()); break; } case EVENT_FIRE: { if (std::vector const* positions = Trinity::Containers::MapGetValuePtr(PositionsByZoneMap, me->GetZoneId())) { Position const& rndpos = Trinity::Containers::SelectRandomContainerElement(*positions); float rndrot = frand(-1.0000000f, 1.0000000f); float rndrot2 = frand(-1.0000000f, 1.0000000f); if (_big) { if (GameObject* firework = me->SummonGameObject(FireworksBIGOnlyPicker(), rndpos, QuaternionData(0.f, 0.f, rndrot, rndrot2), 5min)) { firework->SetRespawnTime(0); firework->Delete(); } } else { if (GameObject* firework = me->SummonGameObject(FireworksPicker(), rndpos, QuaternionData(0.f, 0.f, rndrot, rndrot2), 5min)) { firework->SetRespawnTime(0); firework->Delete(); } } } if (_started == true) _events.ScheduleEvent(EVENT_FIRE, 1s, 2s); break; } default: break; } } } private: EventMap _events; bool _started; bool _big; }; GameObjectAI* GetAI(GameObject* go) const override { return new go_cheer_speakerAI(go); } }; void AddSC_event_fireworks() { new go_cheer_speaker(); }