*Fix judgements of the Wise

*Fix Druids Survival Instincts and thunder clap - by Lightguard.
*Fix Death Coil - by Fisherman, aerione_alt, Lightguard

--HG--
branch : trunk
This commit is contained in:
QAston
2009-03-08 03:10:03 +01:00
parent 63b4a12251
commit 86a4bc7f3f
6 changed files with 56 additions and 5 deletions
+4
View File
@@ -0,0 +1,4 @@
-- Judgements of the Wise
INSERT INTO `spell_proc_event` VALUES (31876, 0x00, 10, 0x20180400, 0x0000008, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0);
INSERT INTO `spell_proc_event` VALUES (31877, 0x00, 10, 0x20180400, 0x0000008, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0);
INSERT INTO `spell_proc_event` VALUES (31878, 0x00, 10, 0x20180400, 0x0000008, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0);
+1
View File
@@ -66,4 +66,5 @@ INSTALL(FILES
1703_world.sql 1703_world.sql
1709_mangos_7393_01_world_game_event.sql 1709_mangos_7393_01_world_game_event.sql
1724_mangos_7399_01_world_trinity_string.sql 1724_mangos_7399_01_world_trinity_string.sql
1729_world.sql
DESTINATION share/trinity/sql/updates) DESTINATION share/trinity/sql/updates)
+13 -1
View File
@@ -1909,6 +1909,15 @@ void Aura::HandleAuraDummy(bool apply, bool Real)
m_modifier.m_amount = caster->SpellHealingBonus(m_target, GetSpellProto(), m_modifier.m_amount, SPELL_DIRECT_DAMAGE); m_modifier.m_amount = caster->SpellHealingBonus(m_target, GetSpellProto(), m_modifier.m_amount, SPELL_DIRECT_DAMAGE);
return; return;
} }
//Druid, Survival Instincts
if(GetSpellProto()->SpellFamilyName==SPELLFAMILY_DRUID && GetSpellProto()->SpellFamilyFlags[2]& 0x40 )
{
if(!m_target)
return;
int32 bp0 = int32(m_target->GetMaxHealth() * m_modifier.m_amount / 100);
m_target->CastCustomSpell(m_target, 50322, &bp0, NULL, NULL, true);
}
} }
// AT REMOVE // AT REMOVE
else else
@@ -5820,7 +5829,6 @@ void Aura::PeriodicTick()
{ {
// ignore non positive values (can be result apply spellmods to aura damage // ignore non positive values (can be result apply spellmods to aura damage
uint32 pdamage = m_modifier.m_amount > 0 ? m_modifier.m_amount : 0; uint32 pdamage = m_modifier.m_amount > 0 ? m_modifier.m_amount : 0;
sLog.outDetail("PeriodicTick: %u (TypeId: %u) energize %u (TypeId: %u) for %u dmg inflicted by %u", sLog.outDetail("PeriodicTick: %u (TypeId: %u) energize %u (TypeId: %u) for %u dmg inflicted by %u",
GUID_LOPART(GetCasterGUID()), GuidHigh2TypeId(GUID_HIPART(GetCasterGUID())), m_target->GetGUIDLow(), m_target->GetTypeId(), pdamage, GetId()); GUID_LOPART(GetCasterGUID()), GuidHigh2TypeId(GUID_HIPART(GetCasterGUID())), m_target->GetGUIDLow(), m_target->GetTypeId(), pdamage, GetId());
@@ -5832,6 +5840,10 @@ void Aura::PeriodicTick()
if(m_target->GetMaxPower(power) == 0) if(m_target->GetMaxPower(power) == 0)
break; break;
// Replenishment (Judgements of the Wise)
if (m_spellProto->SpellIconID == 3184 && m_spellProto->SpellVisual[0] == 12495)
pdamage = 0.25f * m_target->GetMaxPower(POWER_MANA);
WorldPacket data(SMSG_PERIODICAURALOG, (21+16));// we guess size WorldPacket data(SMSG_PERIODICAURALOG, (21+16));// we guess size
data.append(m_target->GetPackGUID()); data.append(m_target->GetPackGUID());
data.appendPackGUID(GetCasterGUID()); data.appendPackGUID(GetCasterGUID());
+26
View File
@@ -425,6 +425,12 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx)
damage+= int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * pct / 100); damage+= int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * pct / 100);
break; break;
} }
// Thunder Clap
else if(m_spellInfo->SpellFamilyFlags[0] & 0x80)
{
damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * 12 / 100);
break;
}
break; break;
} }
case SPELLFAMILY_WARLOCK: case SPELLFAMILY_WARLOCK:
@@ -1858,7 +1864,27 @@ void Spell::EffectDummy(uint32 i)
m_caster->CastSpell(m_caster,spell_id,true); m_caster->CastSpell(m_caster,spell_id,true);
return; return;
} }
// Death Coil
if(m_spellInfo->SpellFamilyFlags[0] & 0x002000)
{
uint32 spell_id = NULL;
damage += m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * 0.15f;
if(m_caster->IsFriendlyTo(unitTarget))
{
if(unitTarget->GetCreatureType() != CREATURE_TYPE_UNDEAD)
return;
spell_id = 47633;
damage *= 1.5f;
}
else
spell_id = 47632;
bp = int32(damage);
m_caster->CastCustomSpell(unitTarget,spell_id,&bp,NULL,NULL,true);
return;
}
break;
} }
//spells triggered by dummy effect should not miss //spells triggered by dummy effect should not miss
+1 -4
View File
@@ -370,7 +370,7 @@ SpellSpecific GetSpellSpecific(uint32 spellId)
if (spellInfo->SpellFamilyFlags[0] & 0x11010002) if (spellInfo->SpellFamilyFlags[0] & 0x11010002)
return SPELL_BLESSING; return SPELL_BLESSING;
if ((spellInfo->SpellFamilyFlags[1] & 0x000008 || spellInfo->SpellFamilyFlags[0] & 20180400) && (spellInfo->AttributesEx3 & 0x200)) if ((spellInfo->SpellFamilyFlags[1] & 0x000008 || spellInfo->SpellFamilyFlags[0] & 0x20180400) && (spellInfo->AttributesEx3 & 0x200))
return SPELL_JUDGEMENT; return SPELL_JUDGEMENT;
for (int i = 0; i < 3; i++) for (int i = 0; i < 3; i++)
@@ -498,9 +498,6 @@ bool IsPositiveEffect(uint32 spellId, uint32 effIndex)
case 23333: // BG spell case 23333: // BG spell
case 23335: // BG spell case 23335: // BG spell
case 34976: // BG spell case 34976: // BG spell
case 31579: // Arcane Empowerment Rank1 talent aura with one positive and one negative (check not needed in wotlk)
case 31582: // Arcane Empowerment Rank2
case 31583: // Arcane Empowerment Rank3
return true; return true;
case 28441: // not positive dummy spell case 28441: // not positive dummy spell
case 37675: // Chaos Blast case 37675: // Chaos Blast
+11
View File
@@ -5843,6 +5843,17 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
basepoints0 = GetAttackTime(BASE_ATTACK) * int32(ap*0.022f + 0.044f * holy) / 1000; basepoints0 = GetAttackTime(BASE_ATTACK) * int32(ap*0.022f + 0.044f * holy) / 1000;
break; break;
} }
// Judgements of the Wise
if (dummySpell->SpellIconID == 3017)
{
// hardcoded amount
basepoints0 = 15 * GetMaxPower(POWER_MANA)/100;
target = this;
triggered_spell_id = 57669;
// replenishment
CastCustomSpell(this,31930,&basepoints0,0,0,true,0,triggeredByAura);
break;
}
// Sanctified Wrath // Sanctified Wrath
if (dummySpell->SpellIconID == 3029) if (dummySpell->SpellIconID == 3029)
{ {