/*
 * Copyright (C) 2020 BfaCore
 *
 * 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 <http://www.gnu.org/licenses/>.
 */

#include <G3D/Vector3.h>
#include "MoveSplineInitArgs.h"

#ifndef THE_HIGHTHOLD_H_
#define THE_HIGHTHOLD_H_

#define TNScriptName "instance_the_nighthold"
#define DataHeader    "TN"

static const Position scorpidSpawnPosition = { 133.3403f, 3399.205f, -250.1467f };
static const Position temporalOrbsSpawnPosition = { 276.3507f, 3136.081f, -236.9497f };

static const Movement::PointsArray WaypointScorpid1 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 118.763f, 3426.159f, -249.845f },
    { 119.263f, 3429.159f, -249.845f },
    { 119.763f, 3431.659f, -249.845f },
    { 122.4149f, 3441.74f, -250.0434f },
    { 107.601318f, 3472.371582f, -250.146759f },
    { 90.666519f, 3476.158203f, -250.146759f },
    { 78.17709f, 3473.611f, -250.0633f }
};

static const Movement::PointsArray WaypointScorpid2 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 120.1605f, 3426.993f, -249.8774f },
    { 121.1605f, 3428.993f, -249.8774f },
    { 121.6605f, 3429.993f, -249.8774f },
    { 122.4105f, 3431.493f, -249.8774f },
    { 123.2099f, 3433.407f, -250.1082f }
};

static const Movement::PointsArray WaypointScorpid3 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 118.763f, 3426.159f, -249.845f },
    { 119.263f, 3429.159f, -249.845f },
    { 119.763f, 3431.659f, -249.845f },
    { 122.4149f, 3441.74f, -250.0434f },
    { 101.6649f, 3480.065f, -250.0634f }
};

static const Movement::PointsArray WaypointScorpid4 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 118.763f, 3426.159f, -249.845f },
    { 119.263f, 3429.159f, -249.845f },
    { 119.763f, 3431.659f, -249.845f },
    { 122.4149f, 3441.74f, -250.0434f },
    { 119.493744f, 3461.177734f, -250.145721f },
    { 90.82813f, 3479.208f, -250.0634f }
};

static const Movement::PointsArray WaypointScorpid5 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 112.9384f, 3418.769f, -249.8703f },
    { 104.1884f, 3414.019f, -249.8703f },
    { 98.76563f, 3411.96f, -250.094f },
    { 59.93056f, 3424.537f, -250.0633f }
};

static const Movement::PointsArray WaypointScorpid6 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 119.3602f, 3423.155f, -249.8672f },
    { 121.1094f, 3424.732f, -250.0877f }
};

static const Movement::PointsArray WaypointScorpid7 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 112.9384f, 3418.769f, -249.8703f },
    { 104.1884f, 3414.019f, -249.8703f },
    { 98.76563f, 3411.96f, -250.094f },
    { 84.27084f, 3405.892f, -250.0633f }
};

static const Movement::PointsArray WaypointScorpid8 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 113.5f, 3419.552f, -249.8732f },
    { 100.75f, 3413.552f, -249.8732f },
    { 91.38889f, 3409.027f, -250.0998f }
};

static const Movement::PointsArray WaypointScorpid9 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 119.796f, 3427.591f, -249.8339f },
    { 120.796f, 3430.341f, -249.8339f },
    { 122.796f, 3437.341f, -249.8339f },
    { 124.046f, 3440.591f, -249.8339f },
    { 124.9809f, 3443.604f, -250.0211f }
};

static const Movement::PointsArray WaypointScorpid10 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 112.3498f, 3418.302f, -249.6507f },
    { 104.8498f, 3413.552f, -249.9007f },
    { 98.08854f, 3411.026f, -250.1548f },
    { 73.299416f, 3414.603760f, -250.154800f },
    { 61.618927f, 3429.193115f, -250.154800f },
    { 60.8941f, 3456.313f, -250.0633f }
};

static const Movement::PointsArray WaypointScorpid11 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 111.6745f, 3417.404f, -249.8632f },
    { 104.2378f, 3412.229f, -250.0798f }
};

static const Movement::PointsArray WaypointScorpid12 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 119.2795f, 3426.869f, -249.8451f },
    { 120.0295f, 3429.869f, -249.8451f },
    { 120.5295f, 3432.619f, -249.8451f },
    { 122.9479f, 3441.66f, -250.0435f },
    { 121.5347f, 3458.441f, -250.0633f }
};

static const Movement::PointsArray WaypointScorpid13 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 116.1736f, 3419.587f, -250.0128f },
};

static const Movement::PointsArray WaypointScorpid14 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 112.3498f, 3418.302f, -249.6507f },
    { 104.8498f, 3413.552f, -249.9007f },
    { 98.08854f, 3411.026f, -250.1548f },
    { 77.574356f, 3413.180420f, -250.154800f },
    { 64.107910f, 3425.887207f, -250.154800f },
    { 53.85938f, 3452.537f, -250.0114f }
};

static const Movement::PointsArray WaypointScorpid15 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 112.9384f, 3418.769f, -249.8703f },
    { 104.1884f, 3414.019f, -249.8703f },
    { 98.76563f, 3411.96f, -250.094f },
    { 80.56077f, 3411.691f, -250.0633f }
};

static const Movement::PointsArray WaypointScorpid16 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 118.763f, 3426.159f, -249.845f },
    { 119.263f, 3429.159f, -249.845f },
    { 119.763f, 3431.659f, -249.845f },
    { 122.4149f, 3441.74f, -250.0434f },
    { 121.245682f, 3457.032471f, -250.146530f },
    { 111.104828f, 3469.851318f, -250.146530f },
    { 80.73264f, 3479.064f, -250.0633f }
};

static const Movement::PointsArray WaypointScorpid17 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 112.3498f, 3418.302f, -249.6507f },
    { 104.8498f, 3413.552f, -249.9007f },
    { 98.08854f, 3411.026f, -250.1548f },
    { 77.227753f, 3412.726563f, -250.146362f },
    { 64.043083f, 3425.474854f, -250.146362f },
    { 57.83681f, 3444.625f, -250.0633f }
};

static const Movement::PointsArray WaypointScorpid18 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 119.2795f, 3426.869f, -249.8451f },
    { 120.0295f, 3429.869f, -249.8451f },
    { 120.5295f, 3432.619f, -249.8451f },
    { 122.9479f, 3441.66f, -250.0435f },
    { 121.265633f, 3457.291016f, -250.145828f },
    { 105.1563f, 3475.252f, -250.0633f }
};

static const Movement::PointsArray WaypointScorpid19 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 111.127f, 3416.625f, -249.7489f },
    { 104.627f, 3411.875f, -249.9989f },
    { 98.14284f, 3406.671f, -249.8512f }
};

static const Movement::PointsArray WaypointScorpid20 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 112.3498f, 3418.302f, -249.6507f },
    { 104.8498f, 3413.552f, -249.9007f },
    { 98.08854f, 3411.026f, -250.1548f },
    { 79.620987f, 3412.137939f, -250.154800f },
    { 68.004456f, 3418.307129f, -250.154800f },
    { 54.29688f, 3438.09f, -250.0633f }
};

static const Movement::PointsArray WaypointScorpid21 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 112.3498f, 3418.302f, -249.6507f },
    { 104.8498f, 3413.552f, -249.9007f },
    { 98.08854f, 3411.026f, -250.1548f },
    { 80.171112f, 3411.329590f, -250.154800f },
    { 64.585449f, 3424.050537f, -250.154800f },
    { 58.426178f, 3441.659424f, -250.154800f },
    { 62.34028f, 3463.875f, -250.0633f }
};

static const Movement::PointsArray WaypointScorpid22 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 120.6181f, 3428.603f, -250.0651f },
    { 121.6181f, 3431.103f, -249.8151f },
    { 122.8681f, 3434.353f, -249.8151f },
    { 128.125f, 3447.628f, -249.9836f }
};

static const Movement::PointsArray WaypointScorpid23 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 118.763f, 3426.159f, -249.845f },
    { 119.263f, 3429.159f, -249.845f },
    { 119.763f, 3431.659f, -249.845f },
    { 122.4149f, 3441.74f, -250.0434f },
    { 122.948242f, 3454.770020f, -250.146545f },
    { 113.697266f, 3467.749756f, -250.146545f },
    { 97.3941f, 3475.97f, -250.0633f }
};

static const Movement::PointsArray WaypointScorpid24 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 119.2795f, 3426.869f, -249.8451f },
    { 120.0295f, 3429.869f, -249.8451f },
    { 120.5295f, 3432.619f, -249.8451f },
    { 122.9479f, 3441.66f, -250.0435f },
    { 123.096268f, 3453.047852f, -250.146423f },
    { 112.0208f, 3474.897f, -250.0633f }
};

static const Movement::PointsArray WaypointScorpid25 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 119.2795f, 3426.869f, -249.8451f },
    { 120.0295f, 3429.869f, -249.8451f },
    { 120.5295f, 3432.619f, -249.8451f },
    { 122.9479f, 3441.66f, -250.0435f },
    { 127.1858f, 3453.653f, -250.0633f }
};

static const Movement::PointsArray WaypointScorpid26 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 112.9384f, 3418.769f, -249.8703f },
    { 104.1884f, 3414.019f, -249.8703f },
    { 98.76563f, 3411.96f, -250.094f },
    { 83.821014f, 3411.038330f, -250.146698f },
    { 69.824844f, 3418.261230f, -250.146698f },
    { 60.54167f, 3433.258f, -250.0633f }
};

static const Movement::PointsArray WaypointScorpid27 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 119.2795f, 3426.869f, -249.8451f },
    { 120.0295f, 3429.869f, -249.8451f },
    { 120.5295f, 3432.619f, -249.8451f },
    { 122.9479f, 3441.66f, -250.0435f },
    { 124.5417f, 3462.165f, -250.0634f }
};

static const Movement::PointsArray WaypointScorpid28 =
{
    { 132.6806f, 3400.784f, -250.1467f },
    { 127.6649f, 3408.174f, -250.1467f },
    { 120.099f, 3419.889f, -250.1467f },
    { 119.1458f, 3420.806f, -250.1467f },
    { 117.6111f, 3421.578f, -250.1467f },
    { 112.9384f, 3418.769f, -249.8703f },
    { 104.1884f, 3414.019f, -249.8703f },
    { 98.76563f, 3411.96f, -250.094f },
    { 71.3125f, 3411.25f, -250.0413f }
};

static const std::vector<Movement::PointsArray> scorpidsPath =
{
    WaypointScorpid1,
    WaypointScorpid2,
    WaypointScorpid3,
    WaypointScorpid4,
    WaypointScorpid5,
    WaypointScorpid6,
    WaypointScorpid7,
    WaypointScorpid8,
    WaypointScorpid9,
    WaypointScorpid10,
    WaypointScorpid11,
    WaypointScorpid12,
    WaypointScorpid13,
    WaypointScorpid14,
    WaypointScorpid15,
    WaypointScorpid16,
    WaypointScorpid17,
    WaypointScorpid18,
    WaypointScorpid19,
    WaypointScorpid20,
    WaypointScorpid21,
    WaypointScorpid22,
    WaypointScorpid23,
    WaypointScorpid24,
    WaypointScorpid25,
    WaypointScorpid26,
    WaypointScorpid27,
    WaypointScorpid28
};

static const Movement::PointsArray WaypointChronomaticAnomaly =
{
    { 242.7361f, 3169.684f, -234.9167f },
    { 258.3084f, 3180.089f, -236.8933f },
    { 276.6773f, 3183.743f, -236.8933f },
    { 295.0461f, 3180.089f, -236.8933f },
    { 310.6184f, 3169.684f, -236.8933f },
    { 321.0235f, 3154.112f, -236.8933f },
    { 324.6772f, 3135.743f, -236.8933f },
    { 321.0234f, 3117.374f, -236.8933f },
    { 310.6183f, 3101.802f, -236.8933f },
    { 295.046f, 3091.397f, -236.8933f },
    { 276.6772f, 3087.743f, -236.8933f },
    { 258.3084f, 3091.397f, -236.8933f },
    { 242.7361f, 3101.802f, -236.8933f },
};

static const Position temporalOrbsDestPositions[72] =
{
    { 191.4979f, 3220.934f, -236.9497f },
    { 178.0525f, 3204.91f, -236.9497f },
    { 167.5938f, 3186.795f, -236.9497f },
    { 160.4396f, 3167.139f, -236.9497f },
    { 156.8073f, 3146.54f, -236.9497f },
    { 156.8073f, 3125.622f, -236.9497f },
    { 160.4396f, 3105.022f, -236.9497f },
    { 167.5938f, 3085.367f, -236.9497f },
    { 178.0525f, 3067.252f, -236.9497f },
    { 191.4979f, 3051.228f, -236.9497f },
    { 207.5215f, 3037.782f, -236.9497f },
    { 225.6365f, 3027.324f, -236.9497f },
    { 245.2924f, 3020.17f, -236.9497f },
    { 265.892f, 3016.537f, -236.9497f },
    { 286.8094f, 3016.537f, -236.9497f },
    { 307.409f, 3020.17f, -236.9497f },
    { 327.0649f, 3027.324f, -236.9497f },
    { 345.1799f, 3037.782f, -236.9497f },
    { 361.2035f, 3051.228f, -236.9497f },
    { 374.649f, 3067.252f, -236.9497f },
    { 385.1076f, 3085.367f, -236.9497f },
    { 392.2618f, 3105.022f, -236.9497f },
    { 395.8941f, 3125.622f, -236.9497f },
    { 395.8941f, 3146.54f, -236.9497f },
    { 392.2618f, 3167.139f, -236.9497f },
    { 385.1076f, 3186.795f, -236.9497f },
    { 374.649f, 3204.91f, -236.9497f },
    { 361.2035f, 3220.934f, -236.9497f },
    { 345.1799f, 3234.379f, -236.9497f },
    { 327.0649f, 3244.838f, -236.9497f },
    { 307.409f, 3251.992f, -236.9497f },
    { 286.8094f, 3255.624f, -236.9497f },
    { 265.892f, 3255.624f, -236.9497f },
    { 245.2924f, 3251.992f, -236.9497f },
    { 225.6365f, 3244.838f, -236.9497f },
    { 207.5215f, 3234.379f, -236.9497f },
    { 297.1885f, 3017.904f, -236.9497f },
    { 317.3931f, 3023.318f, -236.9497f },
    { 336.3507f, 3032.158f, -236.9497f },
    { 353.4852f, 3044.156f, -236.9497f },
    { 368.276f, 3058.946f, -236.9497f },
    { 380.2737f, 3076.081f, -236.9497f },
    { 389.1138f, 3095.038f, -236.9497f },
    { 394.5276f, 3115.243f, -236.9497f },
    { 396.3507f, 3136.081f, -236.9497f },
    { 394.5276f, 3156.919f, -236.9497f },
    { 389.1138f, 3177.123f, -236.9497f },
    { 380.2737f, 3196.081f, -236.9497f },
    { 368.276f, 3213.215f, -236.9497f },
    { 353.4852f, 3228.006f, -236.9497f },
    { 336.3507f, 3240.004f, -236.9497f },
    { 317.3931f, 3248.844f, -236.9497f },
    { 297.1885f, 3254.258f, -236.9497f },
    { 276.3507f, 3256.081f, -236.9497f },
    { 255.5129f, 3254.258f, -236.9497f },
    { 235.3083f, 3248.844f, -236.9497f },
    { 216.3507f, 3240.004f, -236.9497f },
    { 199.2162f, 3228.006f, -236.9497f },
    { 184.4254f, 3213.215f, -236.9497f },
    { 172.4277f, 3196.081f, -236.9497f },
    { 163.5876f, 3177.123f, -236.9497f },
    { 158.1738f, 3156.919f, -236.9497f },
    { 156.3507f, 3136.081f, -236.9497f },
    { 158.1738f, 3115.243f, -236.9497f },
    { 163.5876f, 3095.038f, -236.9497f },
    { 172.4277f, 3076.081f, -236.9497f },
    { 184.4254f, 3058.946f, -236.9497f },
    { 199.2162f, 3044.156f, -236.9497f },
    { 216.3507f, 3032.158f, -236.9497f },
    { 235.3083f, 3023.318f, -236.9497f },
    { 255.5129f, 3017.904f, -236.9497f },
    { 276.3507f, 3016.081f, -236.9497f }
};

static const Position waningTimeParticleSpawnPositions[2] =
{
    { 254.769836f, 3092.668213f, -237.012711f },
    { 296.969727f, 3179.675293f, -237.012833f }
};

static const Movement::PointsArray WaypointAlurielAnomaly =
{
    { 360.707f, 3290.48f, 142.136f },
    { 345.7813f, 3282.544f,  142.1351f },
    { 336.8507f, 3255.997f,  142.1367f },
    { 349.757f, 3225.975f,   142.1367f },
    { 367.8663f, 3206.712f, 142.1367f },
    { 409.394f, 3195.435f, 142.1367f },
    { 438.277f, 3212.269f, 142.1367f },
    { 443.168f, 3239.752f, 142.1367f },
    { 427.967f, 3273.432f, 142.1367f },
    { 399.971f, 3290.818f, 142.1367f },
};

enum TheNightholdDataTypes
{
    DATA_CAGE_REMATCH               = 1,
    DATA_TORM_THE_BRUTE             = 2,
    DATA_SLIME_POOL                 = 3,
};

enum TheNightholdGuidData
{
    DATAGUID_THE_NIGHTWELL          = 1,
    DATAGUID_TRILLAX                = 2,
};

enum TheNightholdNPCs
{
    NPC_CRYSTALLINE_SCORPID         = 103217,
    NPC_CRYSTALLINE_SHARD           = 103209,
    NPC_FRAGMENTED_TIME_PARTICLE    = 114671,
    NPC_THE_NIGHTWELL               = 104738,
    NPC_TRILLAX                     = 104288,
};

enum TheNightholdGOBs
{
    GO_SKORPYRON_DOOR_01            = 252105,
    GO_SKORPYRON_DOOR_02            = 252103,
    GO_TORM_THE_BRUTE_DOOR          = 251519,
    GO_CHRONOMATIC_ANOMALY_01       = 252349,
    GO_CHRONOMATIC_ANOMALY_02       = 252348,
    GO_TRILLIAX_DOOR_01             = 251397,
    GO_TRILLIAX_DOOR_02             = 250243,
};

enum TheNightholdBosses
{
    BOSS_SKORPYRON                  = 0,
    BOSS_CHRONOMATIC_ANOMALY        = 1,
    BOSS_TRILLIAX                   = 2,
    BOSS_ALURIEL                    = 3,
    MAX_ENCOUNTER
};

enum TheNightholdAchievements
{
    ACHIEVEMENT_CAGE_REMATCH        = 10678,
};

template<class AI, class T>
inline AI* GetTheNightholdAI(T* obj)
{
    return GetInstanceAI<AI>(obj, TNScriptName);
}

#endif
