diff options
3 files changed, 21 insertions, 47 deletions
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp index 44385ea83e2..05abcc35d32 100755 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp @@ -93,6 +93,9 @@ enum BossSpells SPELL_UNLEASHED_DARK = 65808, SPELL_UNLEASHED_LIGHT = 65795, + + SPELL_TWIN_EMPATHY_1 = 66132, + SPELL_TWIN_EMPATHY_2 = 66133, //PowerUp 67604 }; @@ -122,6 +125,8 @@ struct boss_twin_baseAI : public ScriptedAI InstanceScript* m_pInstance; SummonList Summons; + AuraStateType m_uiAuraState; + uint8 m_uiStage; bool m_bIsBerserk; uint8 m_uiWaveCount; @@ -135,6 +140,7 @@ struct boss_twin_baseAI : public ScriptedAI int32 m_uiVortexEmote; uint32 m_uiSisterNpcId; uint32 m_uiColorballNpcId; + uint32 m_uiMyEmphatySpellId; uint32 m_uiEssenceNpcId; uint32 m_uiMyEssenceSpellId; uint32 m_uiOtherEssenceSpellId; @@ -152,6 +158,7 @@ struct boss_twin_baseAI : public ScriptedAI void Reset() { me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE); me->SetReactState(REACT_PASSIVE); + me->ModifyAuraState(m_uiAuraState, true); /* Uncomment this once that they are flying above the ground me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING); me->SetFlying(true); */ @@ -172,7 +179,6 @@ struct boss_twin_baseAI : public ScriptedAI if (m_pInstance) { m_pInstance->SetData(TYPE_VALKIRIES, FAIL); - m_pInstance->SetData(DATA_HEALTH_TWIN_SHARED, me->GetMaxHealth()); } me->DespawnOrUnsummon(); } @@ -231,35 +237,16 @@ struct boss_twin_baseAI : public ScriptedAI Summons.Despawn(summoned); } - void DamageTaken(Unit* pDoneBy, uint32 &uiDamage) + void HealReceived(Unit* healer, uint32& heal) { - if (!me || !me->isAlive()) - return; - - if (pDoneBy->GetGUID() == me->GetGUID()) - return; - - if (pDoneBy->GetTypeId() == TYPEID_PLAYER) + if(healer->GetEntry() == me->GetEntry()) { - if (pDoneBy->HasAura(m_uiOtherEssenceSpellId)) - uiDamage += uiDamage/2; - if (pDoneBy->HasAura(m_uiEmpoweredWeaknessSpellId)) - uiDamage += uiDamage; - else - if (pDoneBy->HasAura(m_uiMyEssenceSpellId)) - uiDamage /= 2; + if (Creature* pSister = GetSister()) + { + heal = uint32(heal/2); + healer->DealHeal(pSister, heal); + } } - - if (m_pInstance) - m_pInstance->SetData(DATA_HEALTH_TWIN_SHARED, me->GetHealth() >= uiDamage ? me->GetHealth() - uiDamage : 0); - } - - void SpellHit(Unit* caster, const SpellInfo* spell) - { - if (caster->ToCreature() == me) - if (spell->Effects[0].Effect == 136) //Effect Heal - if (m_pInstance) - m_pInstance->SetData(DATA_HEALTH_TWIN_SHARED, me->GetHealth() + me->CountPctFromMaxHealth(spell->Effects[EFFECT_0].CalcValue())); } void SummonColorballs(uint8 quantity) @@ -282,7 +269,6 @@ struct boss_twin_baseAI : public ScriptedAI DoScriptText(SAY_DEATH, me); if (m_pInstance) { - m_pInstance->SetData(DATA_HEALTH_TWIN_SHARED, 0); if (Creature* pSister = GetSister()) { if (!pSister->isAlive()) @@ -307,8 +293,10 @@ struct boss_twin_baseAI : public ScriptedAI me->SetInCombatWithZone(); if (m_pInstance) { + if (Creature* pSister = GetSister()) + me->AddAura(m_uiMyEmphatySpellId, pSister); + m_pInstance->SetData(TYPE_VALKIRIES, IN_PROGRESS); - m_pInstance->SetData(DATA_HEALTH_TWIN_SHARED, me->GetMaxHealth()); } if (me->isAlive()) { @@ -338,11 +326,6 @@ struct boss_twin_baseAI : public ScriptedAI if (!m_pInstance || !UpdateVictim()) return; - if (m_pInstance->GetData(DATA_HEALTH_TWIN_SHARED) != 0) - me->SetHealth(m_pInstance->GetData(DATA_HEALTH_TWIN_SHARED)); - else - me->SetHealth(1); - switch (m_uiStage) { case 0: @@ -449,11 +432,13 @@ public: boss_twin_baseAI::Reset(); SetEquipmentSlots(false, EQUIP_MAIN_1, EQUIP_OFFHAND_1, EQUIP_RANGED_1); m_uiStage = 0; + m_uiAuraState = AURA_STATE_UNKNOWN22; m_uiVortexEmote = EMOTE_LIGHT_VORTEX; m_uiVortexSay = SAY_LIGHT_VORTEX; m_uiSisterNpcId = NPC_DARKBANE; m_uiColorballNpcId = NPC_UNLEASHED_LIGHT; m_uiEssenceNpcId = NPC_LIGHT_ESSENCE; + m_uiMyEmphatySpellId = SPELL_TWIN_EMPATHY_1; m_uiMyEssenceSpellId = SPELL_LIGHT_ESSENCE_HELPER; m_uiOtherEssenceSpellId = SPELL_DARK_ESSENCE_HELPER; m_uiEmpoweredWeaknessSpellId = SPELL_EMPOWERED_DARK_HELPER; @@ -508,11 +493,13 @@ public: boss_twin_baseAI::Reset(); SetEquipmentSlots(false, EQUIP_MAIN_2, EQUIP_OFFHAND_2, EQUIP_RANGED_2); m_uiStage = 1; + m_uiAuraState = AURA_STATE_UNKNOWN19; m_uiVortexEmote = EMOTE_DARK_VORTEX; m_uiVortexSay = SAY_DARK_VORTEX; m_uiSisterNpcId = NPC_LIGHTBANE; m_uiColorballNpcId = NPC_UNLEASHED_DARK; m_uiEssenceNpcId = NPC_DARK_ESSENCE; + m_uiMyEmphatySpellId = SPELL_TWIN_EMPATHY_2; m_uiMyEssenceSpellId = SPELL_DARK_ESSENCE_HELPER; m_uiOtherEssenceSpellId = SPELL_LIGHT_ESSENCE_HELPER; m_uiEmpoweredWeaknessSpellId = SPELL_EMPOWERED_LIGHT_HELPER; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp index e4d7d051676..91cd8dee55c 100755 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp @@ -44,10 +44,6 @@ class instance_trial_of_the_crusader : public InstanceMapScript std::string SaveDataBuffer; bool NeedSave; - uint32 DataDamageTwin; - uint32 FjolaCasting; - uint32 EydisCasting; - uint64 BarrentGUID; uint64 TirionGUID; uint64 FizzlebangGUID; @@ -368,11 +364,6 @@ class instance_trial_of_the_crusader : public InstanceMapScript break; } break; - case DATA_HEALTH_TWIN_SHARED: - DataDamageTwin = data; - data = NOT_STARTED; - break; - //Achievements case DATA_SNOBOLD_COUNT: if (data == INCREASE) @@ -584,8 +575,6 @@ class instance_trial_of_the_crusader : public InstanceMapScript break; }; return EventNPCId; - case DATA_HEALTH_TWIN_SHARED: - return DataDamageTwin; default: break; } diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h index ab9087c0ca8..98b5056b1c8 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h @@ -22,8 +22,6 @@ enum TYPE_EVENT_NPC = 102, TYPE_NORTHREND_BEASTS = 103, - DATA_HEALTH_TWIN_SHARED = 201, - DATA_SNOBOLD_COUNT = 301, DATA_MISTRESS_OF_PAIN_COUNT = 302, DATA_TRIBUTE_TO_IMMORTALITY_ELEGIBLE = 303, |