Files
CypherCore/Source/Scripts/Northrend/DraktharonKeep/InstanceDrakTharonKeep.cs
T
2020-01-09 11:35:00 -05:00

225 lines
8.6 KiB
C#

/*
* Copyright (C) 2012-2020 CypherCore <http://github.com/CypherCore>
*
* 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 3 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/>.
*/
using Game.Entities;
using Game.Maps;
using Game.Scripting;
namespace Scripts.Northrend.DraktharonKeep
{
struct DTKDataTypes
{
// Encounter States/Boss Guids
public const uint Trollgore = 0;
public const uint Novos = 1;
public const uint KingDred = 2;
public const uint TharonJa = 3;
// Additional Data
//public const uint KingDredAchiev;
public const uint TrollgoreInvaderSummoner1 = 4;
public const uint TrollgoreInvaderSummoner2 = 5;
public const uint TrollgoreInvaderSummoner3 = 6;
public const uint NovosCrystal1 = 7;
public const uint NovosCrystal2 = 8;
public const uint NovosCrystal3 = 9;
public const uint NovosCrystal4 = 10;
public const uint NovosSummoner1 = 11;
public const uint NovosSummoner2 = 12;
public const uint NovosSummoner3 = 13;
public const uint NovosSummoner4 = 14;
public const int ActionCrystalHandlerDied = 15;
}
struct DTKCreatureIds
{
public const uint Trollgore = 26630;
public const uint Novos = 26631;
public const uint KingDred = 27483;
public const uint TharonJa = 26632;
// Trollgore
public const uint DrakkariInvaderA = 27709;
public const uint DrakkariInvaderB = 27753;
public const uint DrakkariInvaderC = 27754;
// Novos
public const uint CrystalChannelTarget = 26712;
public const uint CrystalHandler = 26627;
public const uint HulkingCorpse = 27597;
public const uint FetidTrollCorpse = 27598;
public const uint RisenShadowcaster = 27600;
// King Dred
public const uint DrakkariGutripper = 26641;
public const uint DrakkariScytheclaw = 26628;
public const uint WorldTrigger = 22515;
}
struct DTKGameObjectIds
{
public const uint NovosCrystal1 = 189299;
public const uint NovosCrystal2 = 189300;
public const uint NovosCrystal3 = 189301;
public const uint NovosCrystal4 = 189302;
}
[Script]
class instance_drak_tharon_keep : InstanceMapScript
{
public instance_drak_tharon_keep() : base(nameof(instance_drak_tharon_keep), 600) { }
class instance_drak_tharon_keep_InstanceScript : InstanceScript
{
public instance_drak_tharon_keep_InstanceScript(InstanceMap map) : base(map)
{
SetHeaders("DTK");
SetBossNumber(4);
}
public override void OnCreatureCreate(Creature creature)
{
switch (creature.GetEntry())
{
case DTKCreatureIds.Trollgore:
TrollgoreGUID = creature.GetGUID();
break;
case DTKCreatureIds.Novos:
NovosGUID = creature.GetGUID();
break;
case DTKCreatureIds.KingDred:
KingDredGUID = creature.GetGUID();
break;
case DTKCreatureIds.TharonJa:
TharonJaGUID = creature.GetGUID();
break;
case DTKCreatureIds.WorldTrigger:
InitializeTrollgoreInvaderSummoner(creature);
break;
case DTKCreatureIds.CrystalChannelTarget:
InitializeNovosSummoner(creature);
break;
default:
break;
}
}
public override void OnGameObjectCreate(GameObject go)
{
switch (go.GetEntry())
{
case DTKGameObjectIds.NovosCrystal1:
NovosCrystalGUIDs[0] = go.GetGUID();
break;
case DTKGameObjectIds.NovosCrystal2:
NovosCrystalGUIDs[1] = go.GetGUID();
break;
case DTKGameObjectIds.NovosCrystal3:
NovosCrystalGUIDs[2] = go.GetGUID();
break;
case DTKGameObjectIds.NovosCrystal4:
NovosCrystalGUIDs[3] = go.GetGUID();
break;
default:
break;
}
}
void InitializeTrollgoreInvaderSummoner(Creature creature)
{
float y = creature.GetPositionY();
float z = creature.GetPositionZ();
if (z < 50.0f)
return;
if (y < -650.0f && y > -660.0f)
TrollgoreInvaderSummonerGuids[0] = creature.GetGUID();
else if (y < -660.0f && y > -670.0f)
TrollgoreInvaderSummonerGuids[1] = creature.GetGUID();
else if (y < -675.0f && y > -685.0f)
TrollgoreInvaderSummonerGuids[2] = creature.GetGUID();
}
void InitializeNovosSummoner(Creature creature)
{
float x = creature.GetPositionX();
float y = creature.GetPositionY();
float z = creature.GetPositionZ();
if (x < -374.0f && x > -379.0f && y > -820.0f && y < -815.0f && z < 60.0f && z > 58.0f)
NovosSummonerGUIDs[0] = creature.GetGUID();
else if (x < -379.0f && x > -385.0f && y > -820.0f && y < -815.0f && z < 60.0f && z > 58.0f)
NovosSummonerGUIDs[1] = creature.GetGUID();
else if (x < -374.0f && x > -385.0f && y > -827.0f && y < -820.0f && z < 60.0f && z > 58.0f)
NovosSummonerGUIDs[2] = creature.GetGUID();
else if (x < -338.0f && x > -380.0f && y > -727.0f && y < 721.0f && z < 30.0f && z > 26.0f)
NovosSummonerGUIDs[3] = creature.GetGUID();
}
public override ObjectGuid GetGuidData(uint type)
{
switch (type)
{
case DTKDataTypes.Trollgore:
return TrollgoreGUID;
case DTKDataTypes.Novos:
return NovosGUID;
case DTKDataTypes.KingDred:
return KingDredGUID;
case DTKDataTypes.TharonJa:
return TharonJaGUID;
case DTKDataTypes.TrollgoreInvaderSummoner1:
case DTKDataTypes.TrollgoreInvaderSummoner2:
case DTKDataTypes.TrollgoreInvaderSummoner3:
return TrollgoreInvaderSummonerGuids[type - DTKDataTypes.TrollgoreInvaderSummoner1];
case DTKDataTypes.NovosCrystal1:
case DTKDataTypes.NovosCrystal2:
case DTKDataTypes.NovosCrystal3:
case DTKDataTypes.NovosCrystal4:
return NovosCrystalGUIDs[type - DTKDataTypes.NovosCrystal1];
case DTKDataTypes.NovosSummoner1:
case DTKDataTypes.NovosSummoner2:
case DTKDataTypes.NovosSummoner3:
case DTKDataTypes.NovosSummoner4:
return NovosSummonerGUIDs[type - DTKDataTypes.NovosSummoner1];
}
return ObjectGuid.Empty;
}
ObjectGuid TrollgoreGUID;
ObjectGuid NovosGUID;
ObjectGuid KingDredGUID;
ObjectGuid TharonJaGUID;
ObjectGuid[] TrollgoreInvaderSummonerGuids = new ObjectGuid[3];
ObjectGuid[] NovosCrystalGUIDs = new ObjectGuid[4];
ObjectGuid[] NovosSummonerGUIDs = new ObjectGuid[4];
}
public override InstanceScript GetInstanceScript(InstanceMap map)
{
return new instance_drak_tharon_keep_InstanceScript(map);
}
}
}