fix(Scripts/Karazhan): Cleanup in opera event (#2163)

This commit is contained in:
Viste
2019-08-07 22:25:20 +03:00
committed by Francesco Borzì
parent 24b3de0440
commit d202aea16d
3 changed files with 16 additions and 31 deletions

View File

@@ -665,6 +665,7 @@ public:
void Reset()
{
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
CycloneTimer = 22000;
ChainLightningTimer = 8000;
}
@@ -689,12 +690,7 @@ public:
{
Talk(SAY_CRONE_DEATH);
instance->SetData(DATA_OPERA_PERFORMANCE, DONE);
instance->HandleGameObject(instance->GetData64(DATA_GO_STAGEDOORLEFT), true);
instance->HandleGameObject(instance->GetData64(DATA_GO_STAGEDOORRIGHT), true);
if (GameObject* pSideEntrance = instance->instance->GetGameObject(instance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR)))
pSideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
instance->SetBossState(DATA_OPERA_PERFORMANCE, DONE);
}
void UpdateAI(uint32 diff)
@@ -702,9 +698,6 @@ public:
if (!UpdateVictim())
return;
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
if (CycloneTimer <= diff)
{
if (Creature* Cyclone = DoSpawnCreature(CREATURE_CYCLONE, float(urand(0, 9)), float(urand(0, 9)), 0, 0, TEMPSUMMON_TIMED_DESPAWN, 15000))
@@ -880,12 +873,7 @@ public:
{
DoPlaySoundToSet(me, SOUND_WOLF_DEATH);
instance->SetData(DATA_OPERA_PERFORMANCE, DONE);
instance->HandleGameObject(instance->GetData64(DATA_GO_STAGEDOORLEFT), true);
instance->HandleGameObject(instance->GetData64(DATA_GO_STAGEDOORRIGHT), true);
if (GameObject* pSideEntrance = instance->instance->GetGameObject(instance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR)))
pSideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
instance->SetBossState(DATA_OPERA_PERFORMANCE, DONE);
}
void UpdateAI(uint32 diff)
@@ -1130,11 +1118,7 @@ public:
{
Talk(SAY_JULIANNE_DEATH02);
instance->SetData(DATA_OPERA_PERFORMANCE, DONE);
instance->HandleGameObject(instance->GetData64(DATA_GO_STAGEDOORLEFT), true);
instance->HandleGameObject(instance->GetData64(DATA_GO_STAGEDOORRIGHT), true);
if (GameObject* pSideEntrance = instance->instance->GetGameObject(instance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR)))
pSideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
instance->SetBossState(DATA_OPERA_PERFORMANCE, DONE);
}
void KilledUnit(Unit* /*victim*/)
@@ -1283,12 +1267,7 @@ public:
{
Talk(SAY_ROMULO_DEATH);
instance->SetData(DATA_OPERA_PERFORMANCE, DONE);
instance->HandleGameObject(instance->GetData64(DATA_GO_STAGEDOORLEFT), true);
instance->HandleGameObject(instance->GetData64(DATA_GO_STAGEDOORRIGHT), true);
if (GameObject* pSideEntrance = instance->instance->GetGameObject(instance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR)))
pSideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
instance->SetBossState(DATA_OPERA_PERFORMANCE, DONE);
}
void KilledUnit(Unit* /*victim*/)

View File

@@ -1,9 +1,13 @@
#include "ScriptMgr.h"
#include "Creature.h"
#include "GameObject.h"
#include "InstanceScript.h"
#include "karazhan.h"
#include "SpellScript.h"
#include "SpellAuraEffects.h"
#include "Map.h"
#include "Player.h"
const Position OptionalSpawn[] =
{
@@ -122,7 +126,7 @@ public:
HandleGameObject(m_uiStageDoorRightGUID, true);
if (GameObject* sideEntrance = instance->GetGameObject(m_uiSideEntranceDoor))
sideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
instance->UpdateEncounterState(ENCOUNTER_CREDIT_KILL_CREATURE, 16812, nullptr);
}
break;
case DATA_CHESS:
@@ -136,6 +140,11 @@ public:
return true;
}
void SetData64(uint32 type, uint64 data) override
{
if (type == DATA_IMAGE_OF_MEDIVH)
ImageGUID = data;
}
void OnGameObjectCreate(GameObject* go) override
{
@@ -193,8 +202,6 @@ public:
case GO_DUST_COVERED_CHEST:
DustCoveredChest = go->GetGUID();
break;
}
switch (OperaEvent)
@@ -253,8 +260,6 @@ public:
}
return 0;
}
uint64 GetData64(uint32 data) const override

View File

@@ -339,6 +339,7 @@ public:
break;
case GOSSIP_ACTION_INFO_DEF+2:
CloseGossipMenuFor(player);
pBarnesAI->m_uiEventId = urand(EVENT_OZ, EVENT_RAJ);
pBarnesAI->StartEvent();
break;
case GOSSIP_ACTION_INFO_DEF+3: