[8899] Implement glyph 43374

Original patch provided by Splinter.

Also sort Unit::HandleDummyAuraProc generic family spells in case.
This commit is contained in:
VladimirMangos 2009-12-01 13:43:10 +03:00
parent cd2ec48742
commit 840fad2d07
7 changed files with 51 additions and 33 deletions

View file

@ -24,7 +24,7 @@ CREATE TABLE `db_version` (
`version` varchar(120) default NULL, `version` varchar(120) default NULL,
`creature_ai_version` varchar(120) default NULL, `creature_ai_version` varchar(120) default NULL,
`cache_id` int(10) default '0', `cache_id` int(10) default '0',
`required_8893_01_mangos_mangos_string` bit(1) default NULL `required_8899_01_mangos_spell_proc_event` bit(1) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes';
-- --
@ -18325,6 +18325,7 @@ INSERT INTO `spell_proc_event` VALUES
(57878, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000010, 0.000000, 0.000000, 0), (57878, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000010, 0.000000, 0.000000, 0),
(57880, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000010, 0.000000, 0.000000, 0), (57880, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000010, 0.000000, 0.000000, 0),
(57881, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000010, 0.000000, 0.000000, 0), (57881, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000010, 0.000000, 0.000000, 0),
(57989, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0.000000, 0.000000, 0),
(58357, 0x00000000, 4, 0x00000040, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), (58357, 0x00000000, 4, 0x00000040, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
(58364, 0x00000000, 4, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (58364, 0x00000000, 4, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
(58372, 0x00000000, 4, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (58372, 0x00000000, 4, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),

View file

@ -0,0 +1,5 @@
ALTER TABLE db_version CHANGE COLUMN required_8893_01_mangos_mangos_string required_8899_01_mangos_spell_proc_event bit;
DELETE FROM `spell_proc_event` WHERE `entry` IN (57989);
INSERT INTO `spell_proc_event` VALUES
(57989, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0.000000, 0.000000, 0);

View file

@ -184,6 +184,7 @@ pkgdata_DATA = \
8889_01_mangos_spell_pet_auras.sql \ 8889_01_mangos_spell_pet_auras.sql \
8891_01_mangos_spell_proc_event.sql \ 8891_01_mangos_spell_proc_event.sql \
8893_01_mangos_mangos_string.sql \ 8893_01_mangos_mangos_string.sql \
8899_01_mangos_spell_proc_event.sql \
README README
## Additional files to include when running 'make dist' ## Additional files to include when running 'make dist'
@ -348,4 +349,5 @@ EXTRA_DIST = \
8889_01_mangos_spell_pet_auras.sql \ 8889_01_mangos_spell_pet_auras.sql \
8891_01_mangos_spell_proc_event.sql \ 8891_01_mangos_spell_proc_event.sql \
8893_01_mangos_mangos_string.sql \ 8893_01_mangos_mangos_string.sql \
8899_01_mangos_spell_proc_event.sql \
README README

View file

@ -2362,7 +2362,6 @@ void Aura::HandleAuraDummy(bool apply, bool Real)
caster->InterruptSpell(CURRENT_CHANNELED_SPELL); caster->InterruptSpell(CURRENT_CHANNELED_SPELL);
return; return;
} }
} }
} }

View file

@ -4762,6 +4762,10 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
triggered_spell_id = 26654; triggered_spell_id = 26654;
break; break;
} }
// Twisted Reflection (boss spell)
case 21063:
triggered_spell_id = 21064;
break;
// Unstable Power // Unstable Power
case 24658: case 24658:
{ {
@ -4852,6 +4856,30 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
triggered_spell_id = 34650; triggered_spell_id = 34650;
break; break;
} }
// Divine purpose
case 31871:
case 31872:
{
// Roll chane
if (!roll_chance_i(triggerAmount))
return false;
// Remove any stun effect on target
AuraMap& Auras = pVictim->GetAuras();
for(AuraMap::const_iterator iter = Auras.begin(); iter != Auras.end();)
{
SpellEntry const *spell = iter->second->GetSpellProto();
if( spell->Mechanic == MECHANIC_STUN ||
spell->EffectMechanic[iter->second->GetEffIndex()] == MECHANIC_STUN)
{
pVictim->RemoveAurasDueToSpell(spell->Id);
iter = Auras.begin();
}
else
++iter;
}
return true;
}
// Mark of Malice // Mark of Malice
case 33493: case 33493:
{ {
@ -4863,10 +4891,6 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
triggered_spell_id = 33494; triggered_spell_id = 33494;
break; break;
} }
// Twisted Reflection (boss spell)
case 21063:
triggered_spell_id = 21064;
break;
// Vampiric Aura (boss spell) // Vampiric Aura (boss spell)
case 38196: case 38196:
{ {
@ -4936,12 +4960,6 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
((Player*)this)->Say("This is Madness!", LANG_UNIVERSAL); ((Player*)this)->Say("This is Madness!", LANG_UNIVERSAL);
break; break;
} }
/*
// Sunwell Exalted Caster Neck (??? neck)
// cast ??? Light's Wrath if Exalted by Aldor
// cast ??? Arcane Bolt if Exalted by Scryers*/
case 46569:
return false; // old unused version
// Sunwell Exalted Caster Neck (Shattered Sun Pendant of Acumen neck) // Sunwell Exalted Caster Neck (Shattered Sun Pendant of Acumen neck)
// cast 45479 Light's Wrath if Exalted by Aldor // cast 45479 Light's Wrath if Exalted by Aldor
// cast 45429 Arcane Bolt if Exalted by Scryers // cast 45429 Arcane Bolt if Exalted by Scryers
@ -5050,6 +5068,12 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
} }
return false; return false;
} }
/*
// Sunwell Exalted Caster Neck (??? neck)
// cast ??? Light's Wrath if Exalted by Aldor
// cast ??? Arcane Bolt if Exalted by Scryers*/
case 46569:
return false; // old unused version
// Living Seed // Living Seed
case 48504: case 48504:
{ {
@ -5067,28 +5091,15 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
target = this; target = this;
break; break;
} }
// Divine purpose // Shadowfiend Death (Gain mana if pet dies with Glyph of Shadowfiend)
case 31871: case 57989:
case 31872:
{ {
// Roll chane Unit *owner = GetOwner();
if (!roll_chance_i(triggerAmount)) if (!owner || owner->GetTypeId() != TYPEID_PLAYER)
return false; return false;
// Remove any stun effect on target // Glyph of Shadowfiend (need cast as self cast for owner, no hidden cooldown)
AuraMap& Auras = pVictim->GetAuras(); owner->CastSpell(owner,58227,true,castItem,triggeredByAura);
for(AuraMap::const_iterator iter = Auras.begin(); iter != Auras.end();)
{
SpellEntry const *spell = iter->second->GetSpellProto();
if( spell->Mechanic == MECHANIC_STUN ||
spell->EffectMechanic[iter->second->GetEffIndex()] == MECHANIC_STUN)
{
pVictim->RemoveAurasDueToSpell(spell->Id);
iter = Auras.begin();
}
else
++iter;
}
return true; return true;
} }
} }

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "8898" #define REVISION_NR "8899"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__

View file

@ -1,6 +1,6 @@
#ifndef __REVISION_SQL_H__ #ifndef __REVISION_SQL_H__
#define __REVISION_SQL_H__ #define __REVISION_SQL_H__
#define REVISION_DB_CHARACTERS "required_8874_01_characters_character_skills" #define REVISION_DB_CHARACTERS "required_8874_01_characters_character_skills"
#define REVISION_DB_MANGOS "required_8893_01_mangos_mangos_string" #define REVISION_DB_MANGOS "required_8899_01_mangos_spell_proc_event"
#define REVISION_DB_REALMD "required_8728_01_realmd_account" #define REVISION_DB_REALMD "required_8728_01_realmd_account"
#endif // __REVISION_SQL_H__ #endif // __REVISION_SQL_H__