diff options
| author | Lopin <davca.hr@seznam.cz> | 2011-06-24 08:20:56 +0200 |
|---|---|---|
| committer | Lopin <davca.hr@seznam.cz> | 2011-06-24 08:20:56 +0200 |
| commit | 7954d9a0991b5ad88dd2faf138d3da3d0a56a3d0 (patch) | |
| tree | e5110ba0b053fcce94a350470ea87cbbcd26aada /src | |
| parent | 08d5dd5a6551486730a3ae00ac0fde692c25bf22 (diff) | |
Scripts/VioletHold: Properly fixed achievement Defenseless
Diffstat (limited to 'src')
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 |
