From 7123bef9758a92e0a2380040a6ad2eaaf5de670e Mon Sep 17 00:00:00 2001 From: Blaymoira Date: Sat, 7 Mar 2009 08:58:21 +0100 Subject: *Prevent multiple summoning of Nightbane - by Klaimmore --HG-- branch : trunk --- .../scripts/zone/karazhan/boss_nightbane.cpp | 3 +-- .../scripts/zone/karazhan/instance_karazhan.cpp | 26 +++++----------------- 2 files changed, 7 insertions(+), 22 deletions(-) (limited to 'src/bindings/scripts') diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp index 8ed47127e16..f2c683ac4bf 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp @@ -114,8 +114,7 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE); m_creature->setActive(true); - pInstance->SetData(DATA_NIGHTBANE_EVENT, 6); - if(pInstance->GetData(DATA_NIGHTBANE_EVENT) > 1) + if(pInstance->GetData(DATA_NIGHTBANE_EVENT) == DONE || pInstance->GetData(DATA_NIGHTBANE_EVENT) == IN_PROGRESS) { m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); m_creature->RemoveCorpse(); diff --git a/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp b/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp index f274e81b5c4..c43d5f69590 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp @@ -64,9 +64,6 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance uint64 MastersTerraceDoor[2]; uint64 ImageGUID; - uint8 Nightbane; - bool CheckNightbane; - void Initialize() { for (uint8 i = 0; i < ENCOUNTERS; ++i) @@ -91,10 +88,6 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance MastersTerraceDoor[0]= 0; MastersTerraceDoor[1]= 0; ImageGUID = 0; - - Nightbane = 0; - - CheckNightbane = false; } bool IsEncounterInProgress() const @@ -121,12 +114,7 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance case DATA_NETHERSPITE_EVENT: return Encounters[8]; case DATA_CHESS_EVENT: return Encounters[9]; case DATA_MALCHEZZAR_EVENT: return Encounters[10]; - case DATA_NIGHTBANE_EVENT: - if(CheckNightbane) - { - CheckNightbane = false; - return Nightbane; - }else return Encounters[11]; + case DATA_NIGHTBANE_EVENT: return Encounters[11]; case DATA_OPERA_PERFORMANCE: return OperaEvent; case DATA_OPERA_OZ_DEATHCOUNT: return OzDeathCount; case DATA_IMAGE_OF_MEDIVH: return ImageGUID; @@ -187,11 +175,9 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance case DATA_CHESS_EVENT: Encounters[9] = data; break; case DATA_MALCHEZZAR_EVENT: Encounters[10] = data; break; case DATA_NIGHTBANE_EVENT: - if(data == 6) - { - Nightbane; - CheckNightbane = true; - }else Encounters[11] = data; + if (Encounters[11] == DONE) + break; + Encounters[11] = data; break; case DATA_OPERA_OZ_DEATHCOUNT: ++OzDeathCount; break; } @@ -244,7 +230,7 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance std::ostringstream stream; stream << Encounters[0] << " " << Encounters[1] << " " << Encounters[2] << " " << Encounters[3] << " " << Encounters[4] << " " << Encounters[5] << " " << Encounters[6] << " " << Encounters[7] << " " - << Encounters[8] << " " << Encounters[9] << " " << Encounters[10]; + << Encounters[8] << " " << Encounters[9] << " " << Encounters[10] << " " << Encounters[11]; char* out = new char[stream.str().length() + 1]; strcpy(out, stream.str().c_str()); if(out) @@ -268,7 +254,7 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance std::istringstream stream(in); stream >> Encounters[0] >> Encounters[1] >> Encounters[2] >> Encounters[3] >> Encounters[4] >> Encounters[5] >> Encounters[6] >> Encounters[7] - >> Encounters[8] >> Encounters[9] >> Encounters[10]; + >> Encounters[8] >> Encounters[9] >> Encounters[10] >> Encounters[11]; for(uint8 i = 0; i < ENCOUNTERS; ++i) if(Encounters[i] == IN_PROGRESS) // Do not load an encounter as "In Progress" - reset it instead. Encounters[i] = NOT_STARTED; -- cgit v1.2.3 From 892e54c79cfe4282818701561fbdd118232c85de Mon Sep 17 00:00:00 2001 From: Blaymoira Date: Sat, 7 Mar 2009 09:04:27 +0100 Subject: *Fix a typo - by Anubisss --HG-- branch : trunk --- .../zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp | 6 +++--- .../scripts/zone/tempest_keep/the_mechanar/instance_mechanar.cpp | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'src/bindings/scripts') diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp index 93b653a344c..4fecea70363 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp @@ -201,9 +201,6 @@ struct TRINITY_DLL_DECL mob_ragin_flamesAI : public ScriptedAI void UpdateAI(const uint32 diff) { - if (!UpdateVictim()) - return; - //Check_Timer if(Check_Timer < diff) { @@ -219,6 +216,9 @@ struct TRINITY_DLL_DECL mob_ragin_flamesAI : public ScriptedAI Check_Timer = 1000; }else Check_Timer -= diff; + if (!UpdateVictim()) + return; + if (!onlyonce) { if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0)) diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/instance_mechanar.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/instance_mechanar.cpp index d2c62b89234..05866eb27fb 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/instance_mechanar.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/instance_mechanar.cpp @@ -46,7 +46,8 @@ struct TRINITY_DLL_DECL instance_mechanar : public ScriptedInstance bool IsEncounterInProgress() const { for(uint8 i = 0; i < ENCOUNTERS; ++i) - if(Encounters[i]) return true; + if(Encounters[i] == IN_PROGRESS) + return true; return false; } -- cgit v1.2.3 From 9720fb075f7e8d86d5d6a55ba0938e0c72a53cd5 Mon Sep 17 00:00:00 2001 From: Blaymoira Date: Sun, 8 Mar 2009 09:36:32 +0100 Subject: *Added dinamic spell immunities for two scripts --HG-- branch : trunk --- sql/updates/1160_world.sql | 4 ++-- src/bindings/scripts/scripts/zone/black_temple/boss_bloodboil.cpp | 7 +++++++ src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp | 7 +++++++ 3 files changed, 16 insertions(+), 2 deletions(-) (limited to 'src/bindings/scripts') diff --git a/sql/updates/1160_world.sql b/sql/updates/1160_world.sql index bf959443065..5c77aebdf41 100644 --- a/sql/updates/1160_world.sql +++ b/sql/updates/1160_world.sql @@ -62,7 +62,7 @@ INSERT INTO `access_requirement` VALUES ('26','60','0','0','0','0','0','0',NULL,'0',NULL,'instance Temple of Ahn\'Qiraj (531)'), ('27','68','0','0'/*'24490'*/,'0','0','0','0',NULL,'0',NULL,'instance Karazhan (532)'), ('28','60','0','0','0','0','0','0',NULL,'0',NULL,'instance Naxxramas (533)'), -('29','70','0','0','0','0','0','10445',NULL,'0',NULL,'instance Hyjal Summit (534)'), +('29','70','0','0','0','0','0','0',NULL,'0',NULL,'instance Hyjal Summit (534)'), ('30','55','0','0'/*'28395'*/,'0','30637','30622','0',NULL,'0',NULL,'instance The Shattered Halls (540)'), ('31','55','0','0','0','30637','30622','0',NULL,'0',NULL,'instance The Blood Furnace (542)'), ('32','55','0','0','0','30637','30622','0',NULL,'0',NULL,'instance Hellfire Ramparts (543)'), @@ -80,7 +80,7 @@ INSERT INTO `access_requirement` VALUES ('44','55','0','0','0','30633','0','0',NULL,'0',NULL,'instance Mana-Tombs (557)'), ('45','55','0','0','0','30633','0','0',NULL,'0',NULL,'instance Auchenai Crypts (558)'), ('46','66','0','0','0','30635','0','0',NULL,'0',NULL,'instance Old Hillsbrad Foothills (560)'), -('47','70','0','32649','0','0','0','0',NULL,'0',NULL,'instance Black Temple (564)'), +('47','70','0','0','0','0','0','0',NULL,'0',NULL,'instance Black Temple (564)'), ('48','65','0','0','0','0','0','0',NULL,'0',NULL,'instance Gruul\'s Lair (565)'), ('49','70','0','0','0','0','0','0',NULL,'0',NULL,'instance Zul\'Aman (568)'), ('50','70','0','0','0','0','0','0',NULL,'0',NULL,'instance Sunwell Plateau (580)'), diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_bloodboil.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_bloodboil.cpp index 16fff2fac02..3abde8c307f 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_bloodboil.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_bloodboil.cpp @@ -111,6 +111,9 @@ struct TRINITY_DLL_DECL boss_gurtogg_bloodboilAI : public ScriptedAI PhaseChangeTimer = 60000; Phase1 = true; + + m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, false); + m_creature->ApplySpellImmune(0, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, false); } void Aggro(Unit *who) @@ -292,6 +295,8 @@ struct TRINITY_DLL_DECL boss_gurtogg_bloodboilAI : public ScriptedAI if(DoGetThreat(target)) DoModifyThreatPercent(target, -100); m_creature->AddThreat(target, 50000000.0f); + m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true); + m_creature->ApplySpellImmune(0, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true); // If VMaps are disabled, this spell can call the whole instance DoCast(m_creature, SPELL_INSIGNIFIGANCE, true); DoCast(target, SPELL_FEL_RAGE_TARGET, true); @@ -325,6 +330,8 @@ struct TRINITY_DLL_DECL boss_gurtogg_bloodboilAI : public ScriptedAI FelAcidTimer += 2000; EjectTimer += 2000; PhaseChangeTimer = 60000; + m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, false); + m_creature->ApplySpellImmune(0, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, false); } }else PhaseChangeTimer -= diff; diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp index ac6d1091c60..3ae719effaf 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp @@ -91,6 +91,9 @@ struct TRINITY_DLL_DECL boss_supremusAI : public ScriptedAI Phase1 = true; summons.DespawnAll(); + + m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, false); + m_creature->ApplySpellImmune(0, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, false); } void Aggro(Unit *who) @@ -212,6 +215,8 @@ struct TRINITY_DLL_DECL boss_supremusAI : public ScriptedAI PhaseSwitchTimer = 60000; m_creature->SetSpeed(MOVE_RUN, 1.2f); DoZoneInCombat(); + m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, false); + m_creature->ApplySpellImmune(0, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, false); } else { @@ -222,6 +227,8 @@ struct TRINITY_DLL_DECL boss_supremusAI : public ScriptedAI PhaseSwitchTimer = 60000; m_creature->SetSpeed(MOVE_RUN, 0.9f); DoZoneInCombat(); + m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true); + m_creature->ApplySpellImmune(0, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true); } }else PhaseSwitchTimer -= diff; -- cgit v1.2.3