Violet Hold: Implement sinclari's option to teleport player's inside during
main event, based on DennisRassmann Closes issue #2810 --HG-- branch : trunk
This commit is contained in:
@@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#define GOSSIP_START_EVENT "Get your people to safety, we'll keep the Blue Dragonflight's forces at bay."
|
#define GOSSIP_START_EVENT "Get your people to safety, we'll keep the Blue Dragonflight's forces at bay."
|
||||||
#define GOSSIP_ITEM_1 "Activate the crystals when we get in trouble, right"
|
#define GOSSIP_ITEM_1 "Activate the crystals when we get in trouble, right"
|
||||||
|
#define GOSSIP_I_WANT_IN "Sorry, I'm late! Can I get in to help my friends?"
|
||||||
#define SPAWN_TIME 20000
|
#define SPAWN_TIME 20000
|
||||||
|
|
||||||
enum PortalCreatures
|
enum PortalCreatures
|
||||||
@@ -244,7 +245,9 @@ const float SaboteurFinalPos6[5][3] =
|
|||||||
{1931.063354, 848.468445, 47.190434}
|
{1931.063354, 848.468445, 47.190434}
|
||||||
};
|
};
|
||||||
|
|
||||||
const Position MovePosition = { 1806.955566, 803.851807, 44.363323};
|
const Position MovePosition = {1806.955566, 803.851807, 44.363323};
|
||||||
|
const Position playerTeleportPosition = {1830.531006, 803.939758, 44.340508, 6.281611};
|
||||||
|
const Position sinclariOutsidePosition = {1817.315674, 804.060608, 44.363998};
|
||||||
|
|
||||||
struct npc_sinclariAI : public ScriptedAI
|
struct npc_sinclariAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
@@ -263,7 +266,6 @@ struct npc_sinclariAI : public ScriptedAI
|
|||||||
uiPhase = 0;
|
uiPhase = 0;
|
||||||
uiTimer = 0;
|
uiTimer = 0;
|
||||||
|
|
||||||
me->SetVisibility(VISIBILITY_ON);
|
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
|
|
||||||
std::list<Creature*> GuardList;
|
std::list<Creature*> GuardList;
|
||||||
@@ -334,14 +336,13 @@ struct npc_sinclariAI : public ScriptedAI
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 4:
|
case 4:
|
||||||
me->GetMotionMaster()->MovePoint(0, MovePosition);
|
me->GetMotionMaster()->MovePoint(0, sinclariOutsidePosition);
|
||||||
uiTimer = 4000;
|
uiTimer = 4000;
|
||||||
uiPhase = 5;
|
uiPhase = 5;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
if (pInstance)
|
if (pInstance)
|
||||||
pInstance->SetData(DATA_MAIN_EVENT_PHASE,IN_PROGRESS);
|
pInstance->SetData(DATA_MAIN_EVENT_PHASE,IN_PROGRESS);
|
||||||
me->SetVisibility(VISIBILITY_OFF);
|
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
uiTimer = 0;
|
uiTimer = 0;
|
||||||
uiPhase = 0;
|
uiPhase = 0;
|
||||||
@@ -363,6 +364,50 @@ CreatureAI* GetAI_npc_sinclari(Creature* pCreature)
|
|||||||
return new npc_sinclariAI(pCreature);
|
return new npc_sinclariAI(pCreature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool GossipHello_npc_sinclari(Player* pPlayer, Creature* pCreature)
|
||||||
|
{
|
||||||
|
if (ScriptedInstance* pInstance = pCreature->GetInstanceData())
|
||||||
|
{
|
||||||
|
switch (pInstance->GetData(DATA_MAIN_EVENT_PHASE))
|
||||||
|
{
|
||||||
|
case NOT_STARTED:
|
||||||
|
case FAIL: // Allow to start event if not started or wiped
|
||||||
|
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT,GOSSIP_ITEM_1,GOSSIP_SENDER_MAIN,GOSSIP_ACTION_INFO_DEF+2);
|
||||||
|
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT,GOSSIP_START_EVENT,GOSSIP_SENDER_MAIN,GOSSIP_ACTION_INFO_DEF+1);
|
||||||
|
pPlayer->SEND_GOSSIP_MENU(13853, pCreature->GetGUID());
|
||||||
|
break;
|
||||||
|
case IN_PROGRESS: // Allow to teleport inside if event is in progress
|
||||||
|
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT,GOSSIP_I_WANT_IN,GOSSIP_SENDER_MAIN,GOSSIP_ACTION_INFO_DEF+3);
|
||||||
|
pPlayer->SEND_GOSSIP_MENU(13853, pCreature->GetGUID());
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
pPlayer->SEND_GOSSIP_MENU(13910, pCreature->GetGUID());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GossipSelect_npc_sinclari(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction)
|
||||||
|
{
|
||||||
|
switch(uiAction)
|
||||||
|
{
|
||||||
|
case GOSSIP_ACTION_INFO_DEF+1:
|
||||||
|
pPlayer->CLOSE_GOSSIP_MENU();
|
||||||
|
CAST_AI(npc_sinclariAI, (pCreature->AI()))->uiPhase = 1;
|
||||||
|
if (ScriptedInstance *pInstance = pCreature->GetInstanceData())
|
||||||
|
pInstance->SetData(DATA_MAIN_EVENT_PHASE,SPECIAL);
|
||||||
|
break;
|
||||||
|
case GOSSIP_ACTION_INFO_DEF+2:
|
||||||
|
pPlayer->SEND_GOSSIP_MENU(13854, pCreature->GetGUID());
|
||||||
|
break;
|
||||||
|
case GOSSIP_ACTION_INFO_DEF+3:
|
||||||
|
pPlayer->NearTeleportTo(playerTeleportPosition.GetPositionX(),playerTeleportPosition.GetPositionY(),playerTeleportPosition.GetPositionZ(),playerTeleportPosition.GetOrientation(),true);
|
||||||
|
pPlayer->CLOSE_GOSSIP_MENU();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
struct mob_azure_saboteurAI : public npc_escortAI
|
struct mob_azure_saboteurAI : public npc_escortAI
|
||||||
{
|
{
|
||||||
mob_azure_saboteurAI(Creature *c):npc_escortAI(c)
|
mob_azure_saboteurAI(Creature *c):npc_escortAI(c)
|
||||||
@@ -477,40 +522,6 @@ CreatureAI* GetAI_mob_azure_saboteur(Creature* pCreature)
|
|||||||
return new mob_azure_saboteurAI (pCreature);
|
return new mob_azure_saboteurAI (pCreature);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GossipHello_npc_sinclari(Player* pPlayer, Creature* pCreature)
|
|
||||||
{
|
|
||||||
if (ScriptedInstance* pInstance = pCreature->GetInstanceData())
|
|
||||||
{
|
|
||||||
uint8 uiInstancePhase = pInstance->GetData(DATA_MAIN_EVENT_PHASE);
|
|
||||||
if (uiInstancePhase == NOT_STARTED || uiInstancePhase == FAIL) // Allow to start event if not started or wiped
|
|
||||||
{
|
|
||||||
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT,GOSSIP_ITEM_1,GOSSIP_SENDER_MAIN,GOSSIP_ACTION_INFO_DEF+2);
|
|
||||||
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT,GOSSIP_START_EVENT,GOSSIP_SENDER_MAIN,GOSSIP_ACTION_INFO_DEF+1);
|
|
||||||
pPlayer->SEND_GOSSIP_MENU(13853, pCreature->GetGUID());
|
|
||||||
} else
|
|
||||||
pPlayer->SEND_GOSSIP_MENU(13910, pCreature->GetGUID());
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GossipSelect_npc_sinclari(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction)
|
|
||||||
{
|
|
||||||
switch(uiAction)
|
|
||||||
{
|
|
||||||
case GOSSIP_ACTION_INFO_DEF+1:
|
|
||||||
if (pPlayer)
|
|
||||||
pPlayer->CLOSE_GOSSIP_MENU();
|
|
||||||
CAST_AI(npc_sinclariAI, (pCreature->AI()))->uiPhase = 1;
|
|
||||||
if (ScriptedInstance *pInstance = pCreature->GetInstanceData())
|
|
||||||
pInstance->SetData(DATA_MAIN_EVENT_PHASE,SPECIAL);
|
|
||||||
break;
|
|
||||||
case GOSSIP_ACTION_INFO_DEF+2:
|
|
||||||
pPlayer->SEND_GOSSIP_MENU(13854, pCreature->GetGUID());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct npc_teleportation_portalAI : public ScriptedAI
|
struct npc_teleportation_portalAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
npc_teleportation_portalAI(Creature *c) : ScriptedAI(c), listOfMobs(me)
|
npc_teleportation_portalAI(Creature *c) : ScriptedAI(c), listOfMobs(me)
|
||||||
|
|||||||
Reference in New Issue
Block a user