mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 18:36:31 +01:00
Scripts/Ulduar: Ulduar Teleporter
- add check for formation grounds thanks to silentstormpt - fix gossip for ulduar teleporter --HG-- branch : trunk
This commit is contained in:
@@ -240,10 +240,6 @@ public:
|
||||
void Reset()
|
||||
{
|
||||
_Reset();
|
||||
/*me->SetLootMode(LOOT_MODE_HARD_MODE_4);
|
||||
me->SetLootMode(LOOT_MODE_HARD_MODE_3);
|
||||
me->SetLootMode(LOOT_MODE_HARD_MODE_2);
|
||||
me->SetLootMode(LOOT_MODE_HARD_MODE_1);*/
|
||||
pInstance->SetData(TYPE_LEVIATHAN, NOT_STARTED);
|
||||
me->SetReactState(REACT_DEFENSIVE);
|
||||
InstallAdds(true);
|
||||
@@ -252,7 +248,7 @@ public:
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
_EnterCombat();
|
||||
pInstance->SetData(TYPE_LEVIATHAN, IN_PROGRESS); //_Reset doesnt do this correctly
|
||||
pInstance->SetData(TYPE_LEVIATHAN, IN_PROGRESS);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
events.ScheduleEvent(EVENT_PURSUE, 30*IN_MILLISECONDS);
|
||||
events.ScheduleEvent(EVENT_MISSILE, 1500);
|
||||
@@ -458,7 +454,7 @@ public:
|
||||
case EVENT_SPEED:
|
||||
DoCastAOE(SPELL_GATHERING_SPEED);
|
||||
events.RepeatEvent(15*IN_MILLISECONDS);
|
||||
return;
|
||||
break;
|
||||
case EVENT_SUMMON:
|
||||
if (summons.size() < 15) // 4seat+1turret+10lift
|
||||
if (Creature* pLift = DoSummonFlyer(MOB_MECHANOLIFT, me, 30.0f, 50.0f, 0))
|
||||
@@ -770,9 +766,9 @@ public:
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
if (Unit* pPlayer = me->GetVehicle()->GetPassenger(SEAT_PLAYER))
|
||||
{
|
||||
pPlayer->ExitVehicle();
|
||||
me->GetVehicleBase()->CastSpell(pPlayer, SPELL_SMOKE_TRAIL, true);
|
||||
pPlayer->GetMotionMaster()->MoveKnockbackFrom(me->GetVehicleBase()->GetPositionX(), me->GetVehicleBase()->GetPositionY(), 30, 30);
|
||||
pPlayer->ExitVehicle();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -937,6 +933,12 @@ public:
|
||||
{
|
||||
if (pInstance)
|
||||
pInstance->SetData(TYPE_COLOSSUS,pInstance->GetData(TYPE_COLOSSUS)+1);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
if (pInstance->GetData(TYPE_COLOSSUS == 2))
|
||||
pInstance->SetBossState(DATA_PRELEVIATHAN, DONE); // Unlocks the Teleport 2nd Location
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@ enum eTypes
|
||||
DATA_BRUNDIR = 22,
|
||||
DATA_RUNEMASTER_MOLGEIM = 23,
|
||||
DATA_STORMCALLER_BRUNDIR = 24,
|
||||
DATA_PRELEVIATHAN = 25,
|
||||
|
||||
NPC_LEVIATHAN = 33113,
|
||||
NPC_IGNIS = 33118,
|
||||
@@ -66,5 +67,4 @@ enum eTypes
|
||||
EVENT_TOWER_OF_FLAMES_DESTROYED = 21033,
|
||||
EVENT_TOWER_OF_LIFE_DESTROYED = 21030
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -47,32 +47,41 @@ public:
|
||||
bool OnGossipSelect(Player *pPlayer, GameObject * /*pGO*/, uint32 sender, uint32 action)
|
||||
{
|
||||
pPlayer->PlayerTalkClass->ClearMenus();
|
||||
if (sender != GOSSIP_SENDER_MAIN) return true;
|
||||
if (!pPlayer->getAttackers().empty()) return true;
|
||||
if (sender != GOSSIP_SENDER_MAIN)
|
||||
return false;
|
||||
if (!pPlayer->getAttackers().empty())
|
||||
return false;
|
||||
|
||||
switch(action)
|
||||
{
|
||||
case BASE_CAMP:
|
||||
pPlayer->TeleportTo(603, -706.122f, -92.6024f, 429.876f, 0.0f);
|
||||
pPlayer->CLOSE_GOSSIP_MENU(); break;
|
||||
pPlayer->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
case GROUNDS:
|
||||
pPlayer->TeleportTo(603, 131.248f, -35.3802f, 409.804f, 0.0f);
|
||||
pPlayer->CLOSE_GOSSIP_MENU(); break;
|
||||
pPlayer->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
case FORGE:
|
||||
pPlayer->TeleportTo(603, 553.233f, -12.3247f, 409.679f, 0.0f);
|
||||
pPlayer->CLOSE_GOSSIP_MENU(); break;
|
||||
pPlayer->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
case SCRAPYARD:
|
||||
pPlayer->TeleportTo(603, 926.292f, -11.4635f, 418.595f, 0.0f);
|
||||
pPlayer->CLOSE_GOSSIP_MENU(); break;
|
||||
pPlayer->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
case ANTECHAMBER:
|
||||
pPlayer->TeleportTo(603, 1498.09f, -24.246f, 420.967f, 0.0f);
|
||||
pPlayer->CLOSE_GOSSIP_MENU(); break;
|
||||
pPlayer->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
case WALKWAY:
|
||||
pPlayer->TeleportTo(603, 1859.45f, -24.1f, 448.9f, 0.0f);
|
||||
pPlayer->CLOSE_GOSSIP_MENU(); break;
|
||||
pPlayer->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
case CONSERVATORY:
|
||||
pPlayer->TeleportTo(603, 2086.27f, -24.3134f, 421.239f, 0.0f);
|
||||
pPlayer->CLOSE_GOSSIP_MENU(); break;
|
||||
pPlayer->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -80,28 +89,31 @@ public:
|
||||
|
||||
bool OnGossipHello(Player *pPlayer, GameObject *pGO)
|
||||
{
|
||||
InstanceScript *pInstance = pGO->GetInstanceScript();
|
||||
if (!pInstance) return true;
|
||||
InstanceScript* pInstance = pGO->GetInstanceScript();
|
||||
if (!pInstance)
|
||||
return false;
|
||||
|
||||
pPlayer->ADD_GOSSIP_ITEM(0, "Teleport to the Expedition Base Camp", GOSSIP_SENDER_MAIN, BASE_CAMP);
|
||||
pPlayer->ADD_GOSSIP_ITEM(0, "Teleport to the Formation Grounds", GOSSIP_SENDER_MAIN, GROUNDS);
|
||||
if (pInstance->GetData(TYPE_LEVIATHAN) == DONE)
|
||||
if (pInstance->GetBossState(DATA_PRELEVIATHAN) == DONE || pPlayer->isGameMaster())
|
||||
{
|
||||
pPlayer->ADD_GOSSIP_ITEM(0, "Teleport to the Colossal Forge", GOSSIP_SENDER_MAIN, FORGE);
|
||||
if (pInstance->GetData(TYPE_XT002) == DONE)
|
||||
pPlayer->ADD_GOSSIP_ITEM(0, "Teleport to the Formation Grounds", GOSSIP_SENDER_MAIN, GROUNDS);
|
||||
if (pInstance->GetBossState(TYPE_LEVIATHAN) == DONE || pPlayer->isGameMaster())
|
||||
{
|
||||
pPlayer->ADD_GOSSIP_ITEM(0, "Teleport to the Scrapyard", GOSSIP_SENDER_MAIN, SCRAPYARD);
|
||||
pPlayer->ADD_GOSSIP_ITEM(0, "Teleport to the Antechamber of Ulduar", GOSSIP_SENDER_MAIN, ANTECHAMBER);
|
||||
if (pInstance->GetData(TYPE_KOLOGARN) == DONE)
|
||||
pPlayer->ADD_GOSSIP_ITEM(0, "Teleport to the Colossal Forge", GOSSIP_SENDER_MAIN, FORGE);
|
||||
if (pInstance->GetBossState(TYPE_XT002) == DONE || pPlayer->isGameMaster())
|
||||
{
|
||||
pPlayer->ADD_GOSSIP_ITEM(0, "Teleport to the Shattered Walkway", GOSSIP_SENDER_MAIN, WALKWAY);
|
||||
if (pInstance->GetData(TYPE_AURIAYA) == DONE)
|
||||
pPlayer->ADD_GOSSIP_ITEM(0, "Teleport to the Conservatory of Life", GOSSIP_SENDER_MAIN, CONSERVATORY);
|
||||
pPlayer->ADD_GOSSIP_ITEM(0, "Teleport to the Scrapyard", GOSSIP_SENDER_MAIN, SCRAPYARD);
|
||||
pPlayer->ADD_GOSSIP_ITEM(0, "Teleport to the Antechamber of Ulduar", GOSSIP_SENDER_MAIN, ANTECHAMBER);
|
||||
if (pInstance->GetBossState(TYPE_KOLOGARN) == DONE || pPlayer->isGameMaster())
|
||||
{
|
||||
pPlayer->ADD_GOSSIP_ITEM(0, "Teleport to the Shattered Walkway", GOSSIP_SENDER_MAIN, WALKWAY);
|
||||
if (pInstance->GetBossState(TYPE_AURIAYA) == DONE || pPlayer->isGameMaster())
|
||||
pPlayer->ADD_GOSSIP_ITEM(0, "Teleport to the Conservatory of Life", GOSSIP_SENDER_MAIN, CONSERVATORY);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pGO->GetGUID());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user