52#define GOSSIP_READY "I'm not an actor."
54#define SAY_READY "Splendid, I'm going to get the audience ready. Break a leg!"
55#define SAY_OZ_INTRO1 "Finally, everything is in place. Are you ready for your big stage debut?"
56#define OZ_GOSSIP1 "I'm not an actor."
57#define SAY_OZ_INTRO2 "Don't worry, you'll be fine. You look like a natural!"
58#define OZ_GOSSIP2 "Ok, I'll give it a try, then."
60#define SAY_RAJ_INTRO1 "The romantic plays are really tough, but you'll do better this time. You have TALENT. Ready?"
61#define RAJ_GOSSIP1 "I've never been more ready."
63#define OZ_GM_GOSSIP1 "[GM] Change event to EVENT_OZ"
64#define OZ_GM_GOSSIP2 "[GM] Change event to EVENT_HOOD"
65#define OZ_GM_GOSSIP3 "[GM] Change event to EVENT_RAJ"
110#define SPAWN_O 4.738f
184 me->GetPositionX(),
me->GetPositionY(),
me->GetPositionZ(), 0.0f,
257 for (; index < count; ++index)
260 float PosX =
Spawns[index][1];
284 pSpotlight->DespawnOrUnsummon();
301 Map* map =
me->GetMap();
312 if (i->GetSource()->IsAlive() && !i->GetSource()->IsGameMaster())
335 player->PlayerTalkClass->ClearMenus();
342 player->SEND_GOSSIP_MENU(8971, creature->GetGUID());
345 player->CLOSE_GOSSIP_MENU();
349 player->CLOSE_GOSSIP_MENU();
351 SF_LOG_INFO(
"scripts",
"player (GUID " UI64FMTD ") manually set Opera event to EVENT_OZ", player->GetGUID());
354 player->CLOSE_GOSSIP_MENU();
356 SF_LOG_INFO(
"scripts",
"player (GUID " UI64FMTD ") manually set Opera event to EVENT_HOOD", player->GetGUID());
359 player->CLOSE_GOSSIP_MENU();
361 SF_LOG_INFO(
"scripts",
"player (GUID " UI64FMTD ") manually set Opera event to EVENT_RAJ", player->GetGUID());
377 if (player->IsGameMaster())
386 if (!pBarnesAI->RaidWiped)
387 player->SEND_GOSSIP_MENU(8970, creature->GetGUID());
389 player->SEND_GOSSIP_MENU(8975, creature->GetGUID());
396 player->SEND_GOSSIP_MENU(8978, creature->GetGUID());
410#define GOSSIP_ITEM_TELEPORT "Teleport me to the Guardian's Library"
419 player->PlayerTalkClass->ClearMenus();
423 player->CLOSE_GOSSIP_MENU();
436 player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
445#define SAY_DIALOG_MEDIVH_1 "You've got my attention, dragon. You'll find I'm not as easily scared as the villagers below."
446#define SAY_DIALOG_ARCANAGOS_2 "Your dabbling in the arcane has gone too far, Medivh. You've attracted the attention of powers beyond your understanding. You must leave Karazhan at once!"
447#define SAY_DIALOG_MEDIVH_3 "You dare challenge me at my own dwelling? Your arrogance is astounding, even for a dragon!"
448#define SAY_DIALOG_ARCANAGOS_4 "A dark power seeks to use you, Medivh! If you stay, dire days will follow. You must hurry, we don't have much time!"
449#define SAY_DIALOG_MEDIVH_5 "I do not know what you speak of, dragon... but I will not be bullied by this display of insolence. I'll leave Karazhan when it suits me!"
450#define SAY_DIALOG_ARCANAGOS_6 "You leave me no alternative. I will stop you by force if you won't listen to reason!"
451#define EMOTE_DIALOG_MEDIVH_7 "begins to cast a spell of great power, weaving his own essence into the magic."
452#define SAY_DIALOG_ARCANAGOS_8 "What have you done, wizard? This cannot be! I'm burning from... within!"
453#define SAY_DIALOG_MEDIVH_9 "He should not have angered me. I must go... recover my strength now..."
456static float MedivPos[4] = {-11161.49f, -1902.24f, 91.48f, 1.94f};
534 Map* map =
me->GetMap();
537 case 0:
return 9999999;
587 me->SetVisible(
false);
595 if (i->GetSource()->IsAlive())
598 i->GetSource()->CompleteQuest(9645);
606 default :
return 9999999;
#define SF_LOG_DEBUG(filterType__,...)
#define SF_LOG_INFO(filterType__,...)
@ TEMPSUMMON_TIMED_OR_DEAD_DESPAWN
@ TEMPSUMMON_CORPSE_TIMED_DESPAWN
@ QUEST_STATUS_INCOMPLETE
@ SPELL_SCHOOL_MASK_NORMAL
@ UNIT_FLAG_NON_ATTACKABLE
@ UNIT_FLAG_NOT_SELECTABLE
void Talk(uint8 id, WorldObject const *whisperTarget=NULL)
CreatureScript(const char *name)
PlayerList const & GetPlayers() const
LinkedListHead::Iterator< MapReference const > const_iterator
void MovePoint(uint32 id, Position const &pos, bool generatePath=true)
void DoCast(uint32 spellId)
void CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=NULL, AuraEffect const *triggeredByAura=NULL, uint64 originalCaster=0)
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
MotionMaster * GetMotionMaster()
uint32 DealDamage(Unit *victim, uint32 damage, CleanDamage const *cleanDamage=NULL, DamageEffectType damagetype=DIRECT_DAMAGE, SpellSchoolMask damageSchoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *spellProto=NULL, bool durabilityLoss=true)
static Creature * GetCreature(WorldObject &object, uint64 guid)
static Unit * GetUnit(WorldObject &object, uint64 guid)
void SetSpeed(UnitMoveType mtype, float rate, bool forced=false)
bool SetDisableGravity(bool disable, bool packetOnly=false)
InstanceScript * GetInstanceScript()
void setActive(bool isActiveObject)
void MonsterYell(const char *text, Language language, WorldObject const *target)
bool OnGossipHello(Player *player, Creature *creature) OVERRIDE
bool OnGossipSelect(Player *player, Creature *creature, uint32, uint32 action) OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
bool OnGossipSelect(Player *player, Creature *, uint32, uint32 action) OVERRIDE
bool OnGossipHello(Player *player, Creature *creature) OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
static float ArcanagosPos[4]
#define SAY_DIALOG_MEDIVH_1
#define SAY_DIALOG_ARCANAGOS_4
#define SAY_DIALOG_ARCANAGOS_8
static Dialogue HoodDialogue[]
@ SPELL_CONFLAGRATION_BLAST
#define SAY_DIALOG_ARCANAGOS_2
static Dialogue OzDialogue[]
#define SAY_DIALOG_MEDIVH_3
#define SAY_DIALOG_ARCANAGOS_6
#define EMOTE_DIALOG_MEDIVH_7
#define GOSSIP_ITEM_TELEPORT
#define SAY_DIALOG_MEDIVH_9
static Dialogue RAJDialogue[]
#define SAY_DIALOG_MEDIVH_5
@ DATA_OPERA_OZ_DEATHCOUNT
void SetOrientation(float orientation)
ScriptedAI(Creature *creature)
void WaypointReached(uint32 waypointId) OVERRIDE
void EnterCombat(Unit *) OVERRIDE
InstanceScript * instance
npc_barnesAI(Creature *creature)
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
void EnterEvadeMode() OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
bool HasEscortState(uint32 escortState) const
npc_escortAI(Creature *creature)
void SetEscortPaused(bool on)
void Start(bool isActiveAttacker=true, bool run=false, uint64 playerGUID=0, Quest const *quest=NULL, bool instantRespawn=false, bool canLoopPath=false, bool resetWaypoints=true)
uint32 NextStep(uint32 Step)
uint32 FireArcanagosTimer
npc_image_of_medivhAI(Creature *creature)
InstanceScript * instance
void EnterCombat(Unit *) OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
void MovementInform(uint32 type, uint32 id) OVERRIDE