aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLopin <davca.hr@seznam.cz>2011-06-24 08:20:56 +0200
committerLopin <davca.hr@seznam.cz>2011-06-24 08:20:56 +0200
commit7954d9a0991b5ad88dd2faf138d3da3d0a56a3d0 (patch)
treee5110ba0b053fcce94a350470ea87cbbcd26aada /src
parent08d5dd5a6551486730a3ae00ac0fde692c25bf22 (diff)
Scripts/VioletHold: Properly fixed achievement Defenseless
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp21
-rw-r--r--src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp11
-rw-r--r--src/server/scripts/Northrend/VioletHold/violet_hold.h3
3 files changed, 28 insertions, 7 deletions
diff --git a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp
index 017da20a176..804d602a06f 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp
@@ -159,7 +159,28 @@ public:
};
+class achievement_defenseless : public AchievementCriteriaScript
+{
+ public:
+ achievement_defenseless() : AchievementCriteriaScript("achievement_defenseless")
+ {
+ }
+
+ bool OnCheck(Player* /*player*/, Unit* target)
+ {
+ InstanceScript* instance = target->GetInstanceScript();
+ if (!instance)
+ return false;
+
+ if (!instance->GetData(DATA_DEFENSELESS))
+ return false;
+
+ return true;
+ }
+};
+
void AddSC_boss_cyanigosa()
{
new boss_cyanigosa();
+ new achievement_defenseless();
}
diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
index 93ef8256fef..98731f4aa7b 100644
--- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
+++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
@@ -93,15 +93,12 @@ enum Yells
{
CYANIGOSA_SAY_SPAWN = -1608005
};
+
enum Spells
{
CYANIGOSA_SPELL_TRANSFORM = 58668,
CYANIGOSA_BLUE_AURA = 47759,
};
-enum Achievements
-{
- ACHIEV_DEFENSELESS = 1816
-};
class instance_violet_hold : public InstanceMapScript
{
@@ -165,6 +162,7 @@ public:
bool bWiped;
bool bIsDoorSpellCasted;
bool bCrystalActivated;
+ bool defenseless;
std::list<uint8> NpcAtDoorCastingList;
@@ -214,6 +212,7 @@ public:
bActive = false;
bIsDoorSpellCasted = false;
bCrystalActivated = false;
+ defenseless = true;
uiMainEventPhase = NOT_STARTED;
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
@@ -334,8 +333,6 @@ public:
uiMainEventPhase = DONE;
if (GameObject* pMainDoor = instance->GetGameObject(uiMainDoor))
pMainDoor->SetGoState(GO_STATE_ACTIVE);
- if (!bCrystalActivated && uiDoorIntegrity == 100)
- DoCompleteAchievement(ACHIEV_DEFENSELESS);
}
break;
case DATA_WAVE_COUNT:
@@ -350,6 +347,7 @@ public:
break;
case DATA_DOOR_INTEGRITY:
uiDoorIntegrity = data;
+ defenseless = false;
DoUpdateWorldState(WORLD_STATE_VH_PRISON_STATE, uiDoorIntegrity);
break;
case DATA_NPC_PRESENCE_AT_DOOR_ADD:
@@ -432,6 +430,7 @@ public:
case DATA_FIRST_BOSS: return uiFirstBoss;
case DATA_SECOND_BOSS: return uiSecondBoss;
case DATA_MAIN_EVENT_PHASE: return uiMainEventPhase;
+ case DATA_DEFENSELESS: return defenseless ? 1 : 0;
}
return 0;
diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.h b/src/server/scripts/Northrend/VioletHold/violet_hold.h
index 5fe8b75e97f..ff663efe275 100644
--- a/src/server/scripts/Northrend/VioletHold/violet_hold.h
+++ b/src/server/scripts/Northrend/VioletHold/violet_hold.h
@@ -52,7 +52,8 @@ enum Data
DATA_FIRST_BOSS,
DATA_SECOND_BOSS,
DATA_ACTIVATE_CRYSTAL,
- DATA_MAIN_EVENT_PHASE
+ DATA_MAIN_EVENT_PHASE,
+ DATA_DEFENSELESS,
};
enum Data64