Remove Hardcoded Spells on Twin Val'kyr Script

This commit is contained in:
Nevan
2011-08-24 06:29:38 +02:00
parent 7e1f3ceb44
commit c29ff1b084
3 changed files with 21 additions and 47 deletions
@@ -93,6 +93,9 @@ enum BossSpells
SPELL_UNLEASHED_DARK = 65808, SPELL_UNLEASHED_DARK = 65808,
SPELL_UNLEASHED_LIGHT = 65795, SPELL_UNLEASHED_LIGHT = 65795,
SPELL_TWIN_EMPATHY_1 = 66132,
SPELL_TWIN_EMPATHY_2 = 66133,
//PowerUp 67604 //PowerUp 67604
}; };
@@ -122,6 +125,8 @@ struct boss_twin_baseAI : public ScriptedAI
InstanceScript* m_pInstance; InstanceScript* m_pInstance;
SummonList Summons; SummonList Summons;
AuraStateType m_uiAuraState;
uint8 m_uiStage; uint8 m_uiStage;
bool m_bIsBerserk; bool m_bIsBerserk;
uint8 m_uiWaveCount; uint8 m_uiWaveCount;
@@ -135,6 +140,7 @@ struct boss_twin_baseAI : public ScriptedAI
int32 m_uiVortexEmote; int32 m_uiVortexEmote;
uint32 m_uiSisterNpcId; uint32 m_uiSisterNpcId;
uint32 m_uiColorballNpcId; uint32 m_uiColorballNpcId;
uint32 m_uiMyEmphatySpellId;
uint32 m_uiEssenceNpcId; uint32 m_uiEssenceNpcId;
uint32 m_uiMyEssenceSpellId; uint32 m_uiMyEssenceSpellId;
uint32 m_uiOtherEssenceSpellId; uint32 m_uiOtherEssenceSpellId;
@@ -152,6 +158,7 @@ struct boss_twin_baseAI : public ScriptedAI
void Reset() { void Reset() {
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
me->SetReactState(REACT_PASSIVE); me->SetReactState(REACT_PASSIVE);
me->ModifyAuraState(m_uiAuraState, true);
/* Uncomment this once that they are flying above the ground /* Uncomment this once that they are flying above the ground
me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING); me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
me->SetFlying(true); */ me->SetFlying(true); */
@@ -172,7 +179,6 @@ struct boss_twin_baseAI : public ScriptedAI
if (m_pInstance) if (m_pInstance)
{ {
m_pInstance->SetData(TYPE_VALKIRIES, FAIL); m_pInstance->SetData(TYPE_VALKIRIES, FAIL);
m_pInstance->SetData(DATA_HEALTH_TWIN_SHARED, me->GetMaxHealth());
} }
me->DespawnOrUnsummon(); me->DespawnOrUnsummon();
} }
@@ -231,35 +237,16 @@ struct boss_twin_baseAI : public ScriptedAI
Summons.Despawn(summoned); Summons.Despawn(summoned);
} }
void DamageTaken(Unit* pDoneBy, uint32 &uiDamage) void HealReceived(Unit* healer, uint32& heal)
{ {
if (!me || !me->isAlive()) if(healer->GetEntry() == me->GetEntry())
return;
if (pDoneBy->GetGUID() == me->GetGUID())
return;
if (pDoneBy->GetTypeId() == TYPEID_PLAYER)
{ {
if (pDoneBy->HasAura(m_uiOtherEssenceSpellId)) if (Creature* pSister = GetSister())
uiDamage += uiDamage/2; {
if (pDoneBy->HasAura(m_uiEmpoweredWeaknessSpellId)) heal = uint32(heal/2);
uiDamage += uiDamage; healer->DealHeal(pSister, heal);
else }
if (pDoneBy->HasAura(m_uiMyEssenceSpellId))
uiDamage /= 2;
} }
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) void SummonColorballs(uint8 quantity)
@@ -282,7 +269,6 @@ struct boss_twin_baseAI : public ScriptedAI
DoScriptText(SAY_DEATH, me); DoScriptText(SAY_DEATH, me);
if (m_pInstance) if (m_pInstance)
{ {
m_pInstance->SetData(DATA_HEALTH_TWIN_SHARED, 0);
if (Creature* pSister = GetSister()) if (Creature* pSister = GetSister())
{ {
if (!pSister->isAlive()) if (!pSister->isAlive())
@@ -307,8 +293,10 @@ struct boss_twin_baseAI : public ScriptedAI
me->SetInCombatWithZone(); me->SetInCombatWithZone();
if (m_pInstance) if (m_pInstance)
{ {
if (Creature* pSister = GetSister())
me->AddAura(m_uiMyEmphatySpellId, pSister);
m_pInstance->SetData(TYPE_VALKIRIES, IN_PROGRESS); m_pInstance->SetData(TYPE_VALKIRIES, IN_PROGRESS);
m_pInstance->SetData(DATA_HEALTH_TWIN_SHARED, me->GetMaxHealth());
} }
if (me->isAlive()) if (me->isAlive())
{ {
@@ -338,11 +326,6 @@ struct boss_twin_baseAI : public ScriptedAI
if (!m_pInstance || !UpdateVictim()) if (!m_pInstance || !UpdateVictim())
return; 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) switch (m_uiStage)
{ {
case 0: case 0:
@@ -449,11 +432,13 @@ public:
boss_twin_baseAI::Reset(); boss_twin_baseAI::Reset();
SetEquipmentSlots(false, EQUIP_MAIN_1, EQUIP_OFFHAND_1, EQUIP_RANGED_1); SetEquipmentSlots(false, EQUIP_MAIN_1, EQUIP_OFFHAND_1, EQUIP_RANGED_1);
m_uiStage = 0; m_uiStage = 0;
m_uiAuraState = AURA_STATE_UNKNOWN22;
m_uiVortexEmote = EMOTE_LIGHT_VORTEX; m_uiVortexEmote = EMOTE_LIGHT_VORTEX;
m_uiVortexSay = SAY_LIGHT_VORTEX; m_uiVortexSay = SAY_LIGHT_VORTEX;
m_uiSisterNpcId = NPC_DARKBANE; m_uiSisterNpcId = NPC_DARKBANE;
m_uiColorballNpcId = NPC_UNLEASHED_LIGHT; m_uiColorballNpcId = NPC_UNLEASHED_LIGHT;
m_uiEssenceNpcId = NPC_LIGHT_ESSENCE; m_uiEssenceNpcId = NPC_LIGHT_ESSENCE;
m_uiMyEmphatySpellId = SPELL_TWIN_EMPATHY_1;
m_uiMyEssenceSpellId = SPELL_LIGHT_ESSENCE_HELPER; m_uiMyEssenceSpellId = SPELL_LIGHT_ESSENCE_HELPER;
m_uiOtherEssenceSpellId = SPELL_DARK_ESSENCE_HELPER; m_uiOtherEssenceSpellId = SPELL_DARK_ESSENCE_HELPER;
m_uiEmpoweredWeaknessSpellId = SPELL_EMPOWERED_DARK_HELPER; m_uiEmpoweredWeaknessSpellId = SPELL_EMPOWERED_DARK_HELPER;
@@ -508,11 +493,13 @@ public:
boss_twin_baseAI::Reset(); boss_twin_baseAI::Reset();
SetEquipmentSlots(false, EQUIP_MAIN_2, EQUIP_OFFHAND_2, EQUIP_RANGED_2); SetEquipmentSlots(false, EQUIP_MAIN_2, EQUIP_OFFHAND_2, EQUIP_RANGED_2);
m_uiStage = 1; m_uiStage = 1;
m_uiAuraState = AURA_STATE_UNKNOWN19;
m_uiVortexEmote = EMOTE_DARK_VORTEX; m_uiVortexEmote = EMOTE_DARK_VORTEX;
m_uiVortexSay = SAY_DARK_VORTEX; m_uiVortexSay = SAY_DARK_VORTEX;
m_uiSisterNpcId = NPC_LIGHTBANE; m_uiSisterNpcId = NPC_LIGHTBANE;
m_uiColorballNpcId = NPC_UNLEASHED_DARK; m_uiColorballNpcId = NPC_UNLEASHED_DARK;
m_uiEssenceNpcId = NPC_DARK_ESSENCE; m_uiEssenceNpcId = NPC_DARK_ESSENCE;
m_uiMyEmphatySpellId = SPELL_TWIN_EMPATHY_2;
m_uiMyEssenceSpellId = SPELL_DARK_ESSENCE_HELPER; m_uiMyEssenceSpellId = SPELL_DARK_ESSENCE_HELPER;
m_uiOtherEssenceSpellId = SPELL_LIGHT_ESSENCE_HELPER; m_uiOtherEssenceSpellId = SPELL_LIGHT_ESSENCE_HELPER;
m_uiEmpoweredWeaknessSpellId = SPELL_EMPOWERED_LIGHT_HELPER; m_uiEmpoweredWeaknessSpellId = SPELL_EMPOWERED_LIGHT_HELPER;
@@ -44,10 +44,6 @@ class instance_trial_of_the_crusader : public InstanceMapScript
std::string SaveDataBuffer; std::string SaveDataBuffer;
bool NeedSave; bool NeedSave;
uint32 DataDamageTwin;
uint32 FjolaCasting;
uint32 EydisCasting;
uint64 BarrentGUID; uint64 BarrentGUID;
uint64 TirionGUID; uint64 TirionGUID;
uint64 FizzlebangGUID; uint64 FizzlebangGUID;
@@ -368,11 +364,6 @@ class instance_trial_of_the_crusader : public InstanceMapScript
break; break;
} }
break; break;
case DATA_HEALTH_TWIN_SHARED:
DataDamageTwin = data;
data = NOT_STARTED;
break;
//Achievements //Achievements
case DATA_SNOBOLD_COUNT: case DATA_SNOBOLD_COUNT:
if (data == INCREASE) if (data == INCREASE)
@@ -584,8 +575,6 @@ class instance_trial_of_the_crusader : public InstanceMapScript
break; break;
}; };
return EventNPCId; return EventNPCId;
case DATA_HEALTH_TWIN_SHARED:
return DataDamageTwin;
default: default:
break; break;
} }
@@ -22,8 +22,6 @@ enum
TYPE_EVENT_NPC = 102, TYPE_EVENT_NPC = 102,
TYPE_NORTHREND_BEASTS = 103, TYPE_NORTHREND_BEASTS = 103,
DATA_HEALTH_TWIN_SHARED = 201,
DATA_SNOBOLD_COUNT = 301, DATA_SNOBOLD_COUNT = 301,
DATA_MISTRESS_OF_PAIN_COUNT = 302, DATA_MISTRESS_OF_PAIN_COUNT = 302,
DATA_TRIBUTE_TO_IMMORTALITY_ELEGIBLE = 303, DATA_TRIBUTE_TO_IMMORTALITY_ELEGIBLE = 303,