Scripts/Icecrown Citadel: Added Blood Prince Council script

Scripts/Icecrown Citadel: Festergut will not cast Vile Gas on melee targets if there are at least 3 (25 man: 8) ranged targets
Scripts/Icecrown Citadel: Festergut and Rotface gates will close with delay (when Putricide reaches the balcony)
Scripts/Icecrown Citadel: Replaced ASSERT(instance) with code disabling the AI if not inside instance
Core/Spells: Fixed TARGET_DEST_TARGET_RANDOM usage
Core/Scripts: Extended DamageDealt in AI to accept damage type as 3rd parameter
Scripts/Quests: Fixed quest "Unholy Infusion" (24749)

--HG--
branch : trunk
This commit is contained in:
Shauren
2010-10-24 21:27:02 +02:00
parent 07fa1bcbdf
commit d03aeab9ad
26 changed files with 1879 additions and 87 deletions
+1 -1
View File
@@ -94,7 +94,7 @@ class CreatureAI : public UnitAI
virtual void EnterCombat(Unit* /*enemy*/) {}
// Called at any Damage to any victim (before damage apply)
virtual void DamageDealt(Unit * /*done_to*/, uint32 & /*damage*/) { }
virtual void DamageDealt(Unit * /*done_to*/, uint32 & /*damage*/, DamageEffectType /*damagetype*/) { }
// Called at any Damage from any attacker (before damage apply)
// Note: it for recalculation damage or special reaction at damage
+1 -1
View File
@@ -98,7 +98,7 @@ void SmartAI::SpellHitTarget(Unit* /*target*/, const SpellEntry* /*pSpell*/)
{
}
void SmartAI::DamageTaken(Unit* /*done_by*/, uint32& /*damage*/)
void SmartAI::DamageTaken(Unit* /*done_by*/, uint32& /*damage*/, DamageEffectType /*damagetype*/)
{
}
+1 -1
View File
@@ -289,7 +289,7 @@ class SmartAI : public CreatureAI
void SpellHitTarget(Unit* target, const SpellEntry*);
// Called at any Damage from any attacker (before damage apply)
void DamageTaken(Unit* done_by, uint32& damage);
void DamageTaken(Unit* done_by, uint32& damage, DamageEffectType damagetype);
// Called when the creature receives heal
void HealReceived(Unit* done_by, uint32& addhealth);
+8 -1
View File
@@ -549,7 +549,7 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa
pVictim->ToCreature()->AI()->DamageTaken(this, damage);
if (GetTypeId() == TYPEID_UNIT && this->ToCreature()->IsAIEnabled)
this->ToCreature()->AI()->DamageDealt(pVictim, damage);
this->ToCreature()->AI()->DamageDealt(pVictim, damage, damagetype);
if (damagetype != NODAMAGE)
{
@@ -7930,6 +7930,13 @@ bool Unit::HandleAuraProc(Unit * pVictim, uint32 damage, Aura * triggeredByAura,
RemoveAuraFromStack(71564);
*handled = true;
break;
case 71756:
case 72782:
case 72783:
case 72784:
RemoveAuraFromStack(dummySpell->Id);
*handled = true;
break;
}
break;
case SPELLFAMILY_PALADIN:
-1
View File
@@ -5259,7 +5259,6 @@ void ObjectMgr::ValidateSpellScripts()
SpellEntry const * spellEntry = sSpellStore.LookupEntry(itr->first);
std::vector<std::pair<SpellScriptLoader *, SpellScriptsMap::iterator> > SpellScriptLoaders;
sScriptMgr.CreateSpellScriptLoaders(itr->first, SpellScriptLoaders);
SpellScriptsMap::iterator bitr;
itr = mSpellScripts.upper_bound(itr->first);
for (std::vector<std::pair<SpellScriptLoader *, SpellScriptsMap::iterator> >::iterator sitr = SpellScriptLoaders.begin(); sitr != SpellScriptLoaders.end(); ++sitr)
@@ -448,6 +448,7 @@ void AddSC_boss_deathbringer_saurfang();
void AddSC_boss_festergut();
void AddSC_boss_rotface();
void AddSC_boss_professor_putricide();
void AddSC_boss_blood_prince_council();
void AddSC_icecrown_citadel_teleport();
void AddSC_instance_icecrown_citadel();
@@ -1108,6 +1109,7 @@ void AddNorthrendScripts()
AddSC_boss_festergut();
AddSC_boss_rotface();
AddSC_boss_professor_putricide();
AddSC_boss_blood_prince_council();
AddSC_icecrown_citadel_teleport();
AddSC_instance_icecrown_citadel();
@@ -2245,9 +2245,16 @@ void AuraEffect::TriggerSpell(Unit * target, Unit * caster) const
return;
}
// Tear of Azzinoth Summon Channel - it's not really supposed to do anything,and this only prevents the console spam
case 39857: triggerSpellId = 39856; break;
case 39857:
triggerSpellId = 39856;
break;
// Personalized Weather
case 46736: triggerSpellId = 46737; break;
case 46736:
triggerSpellId = 46737;
break;
// Ball of Flames Visual
case 71706:
return;
}
break;
}
+1 -1
View File
@@ -2207,7 +2207,7 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur)
dist = (float)target->GetSpellRadiusForTarget(target, sSpellRadiusStore.LookupEntry(m_spellInfo->EffectRadiusIndex[i]));
if (dist < objSize)
dist = objSize;
else if (cur == TARGET_DEST_CASTER_RANDOM)
else if (cur == TARGET_DEST_TARGET_RANDOM)
dist = objSize + (dist - objSize) * (float)rand_norm();
switch(cur)
+7
View File
@@ -3928,6 +3928,13 @@ void SpellMgr::LoadSpellCustomAttr()
spellInfo->EffectImplicitTargetB[0] = TARGET_UNIT_TARGET_ENEMY;
count++;
break;
case 71708: // Empowered Flare
case 72785: // Empowered Flare
case 72786: // Empowered Flare
case 72787: // Empowered Flare
spellInfo->AttributesEx3 |= SPELL_ATTR_EX3_NO_DONE_BONUS;
count++;
break;
default:
break;
}