diff --git a/sql/mangos.sql b/sql/mangos.sql index 022d78bfb..a06223972 100644 --- a/sql/mangos.sql +++ b/sql/mangos.sql @@ -24,7 +24,7 @@ CREATE TABLE `db_version` ( `version` varchar(120) default NULL, `creature_ai_version` varchar(120) default NULL, `cache_id` int(10) default '0', - `required_9034_01_mangos_spell_proc_event` bit(1) default NULL + `required_9045_02_mangos_spell_chain` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; -- @@ -13732,10 +13732,14 @@ CREATE TABLE `quest_template` ( `ReqItemId2` mediumint(8) unsigned NOT NULL default '0', `ReqItemId3` mediumint(8) unsigned NOT NULL default '0', `ReqItemId4` mediumint(8) unsigned NOT NULL default '0', + `ReqItemId5` mediumint(8) unsigned NOT NULL default '0', + `ReqItemId6` mediumint(8) unsigned NOT NULL default '0', `ReqItemCount1` smallint(5) unsigned NOT NULL default '0', `ReqItemCount2` smallint(5) unsigned NOT NULL default '0', `ReqItemCount3` smallint(5) unsigned NOT NULL default '0', `ReqItemCount4` smallint(5) unsigned NOT NULL default '0', + `ReqItemCount5` smallint(5) unsigned NOT NULL default '0', + `ReqItemCount6` smallint(5) unsigned NOT NULL default '0', `ReqSourceId1` mediumint(8) unsigned NOT NULL default '0', `ReqSourceId2` mediumint(8) unsigned NOT NULL default '0', `ReqSourceId3` mediumint(8) unsigned NOT NULL default '0', @@ -13772,14 +13776,10 @@ CREATE TABLE `quest_template` ( `RewItemId2` mediumint(8) unsigned NOT NULL default '0', `RewItemId3` mediumint(8) unsigned NOT NULL default '0', `RewItemId4` mediumint(8) unsigned NOT NULL default '0', - `ReqItemId5` mediumint(8) unsigned NOT NULL default '0', - `ReqItemId6` mediumint(8) unsigned NOT NULL default '0', `RewItemCount1` smallint(5) unsigned NOT NULL default '0', `RewItemCount2` smallint(5) unsigned NOT NULL default '0', `RewItemCount3` smallint(5) unsigned NOT NULL default '0', `RewItemCount4` smallint(5) unsigned NOT NULL default '0', - `ReqItemCount5` smallint(5) unsigned NOT NULL default '0', - `ReqItemCount6` smallint(5) unsigned NOT NULL default '0', `RewRepFaction1` smallint(5) unsigned NOT NULL default '0' COMMENT 'faction id from Faction.dbc in this case', `RewRepFaction2` smallint(5) unsigned NOT NULL default '0' COMMENT 'faction id from Faction.dbc in this case', `RewRepFaction3` smallint(5) unsigned NOT NULL default '0' COMMENT 'faction id from Faction.dbc in this case', @@ -16618,6 +16618,10 @@ INSERT INTO spell_chain VALUES (26982,26981,774,13,0), (48440,26982,774,14,0), (48441,48440,774,15,0), +/*Revitalize*/ +(48539,0,48539,1,0), +(48544,48539,48539,2,0), +(48545,48544,48539,3,0), /*Revive*/ (50769,0,50769,1,0), (50768,50769,50769,2,0), @@ -18263,6 +18267,7 @@ INSERT INTO `spell_proc_event` VALUES (48516, 0x00000000, 7, 0x00000005, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 30), (48521, 0x00000000, 7, 0x00000005, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 30), (48525, 0x00000000, 7, 0x00000005, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 30), +(48539, 0x00000000, 7, 0x00000010, 0x04000000, 0x00000000, 0x00040000, 0x00000000, 0.000000, 0.000000, 0), (48833, 0x00000000, 7, 0x00000000, 0x00000440, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (48835, 0x00000000, 10, 0x00000000, 0x00000008, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (48837, 0x00000000, 11, 0x90100000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), diff --git a/sql/updates/9045_01_mangos_spell_proc_event.sql b/sql/updates/9045_01_mangos_spell_proc_event.sql new file mode 100644 index 000000000..10885c701 --- /dev/null +++ b/sql/updates/9045_01_mangos_spell_proc_event.sql @@ -0,0 +1,5 @@ +ALTER TABLE db_version CHANGE COLUMN required_9034_01_mangos_spell_proc_event required_9045_01_mangos_spell_proc_event bit; + +DELETE FROM spell_proc_event WHERE entry IN (48545,48544,48539); +INSERT INTO spell_proc_event (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES +(48539, 0x00000000, 7, 0x00000010, 0x04000000, 0x00000000, 0x00040000, 0x00000000, 0.000000, 0.000000, 0); diff --git a/sql/updates/9045_02_mangos_spell_chain.sql b/sql/updates/9045_02_mangos_spell_chain.sql new file mode 100644 index 000000000..c25a68eee --- /dev/null +++ b/sql/updates/9045_02_mangos_spell_chain.sql @@ -0,0 +1,8 @@ +ALTER TABLE db_version CHANGE COLUMN required_9045_01_mangos_spell_proc_event required_9045_02_mangos_spell_chain bit; + +/*Revitalize*/ +DELETE FROM spell_chain WHERE first_spell = 48539; +INSERT INTO spell_chain VALUES +(48539, 0, 48539, 1, 0), +(48544, 48539, 48539, 2, 0), +(48545, 48544, 48539, 3, 0); diff --git a/sql/updates/Makefile.am b/sql/updates/Makefile.am index b6679f0bc..f07dec653 100644 --- a/sql/updates/Makefile.am +++ b/sql/updates/Makefile.am @@ -217,6 +217,8 @@ pkgdata_DATA = \ 9019_01_mangos_spell_threat.sql \ 9025_01_mangos_spell_proc_event.sql \ 9034_01_mangos_spell_proc_event.sql \ + 9045_01_mangos_spell_proc_event.sql \ + 9045_02_mangos_spell_chain.sql \ README ## Additional files to include when running 'make dist' @@ -414,4 +416,6 @@ EXTRA_DIST = \ 9019_01_mangos_spell_threat.sql \ 9025_01_mangos_spell_proc_event.sql \ 9034_01_mangos_spell_proc_event.sql \ + 9045_01_mangos_spell_proc_event.sql \ + 9045_02_mangos_spell_chain.sql \ README diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index e46020c23..8e7da8013 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -6756,6 +6756,11 @@ void Aura::PeriodicTick() int32 gain = m_target->ModifyHealth(pdamage); + // Set trigger flag + uint32 procAttacker = PROC_FLAG_ON_DO_PERIODIC; + uint32 procVictim = PROC_FLAG_ON_TAKE_PERIODIC; + pCaster->ProcDamageAndSpell(m_target, procAttacker, procVictim, PROC_EX_NORMAL_HIT, gain, BASE_ATTACK, m_spellProto); + // add HoTs to amount healed in bgs if( pCaster->GetTypeId() == TYPEID_PLAYER ) if( BattleGround *bg = ((Player*)pCaster)->GetBattleGround() ) diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 4f4b4b90d..f47f74a05 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -2996,6 +2996,7 @@ void Spell::EffectEnergize(uint32 i) level_multiplier = 4; break; case 31930: // Judgements of the Wise + case 48542: // Revitalize (mana restore case) case 63375: // Improved Stormstrike damage = damage * unitTarget->GetCreateMana() / 100; break; diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 42d434dfa..65275da7b 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -7601,6 +7601,9 @@ bool Unit::HandleOverrideClassScriptAuraProc(Unit *pVictim, uint32 damage, Aura Item* castItem = triggeredByAura->GetCastItemGUID() && GetTypeId()==TYPEID_PLAYER ? ((Player*)this)->GetItemByGuid(triggeredByAura->GetCastItemGUID()) : NULL; + // Basepoints of trigger aura + int32 triggerAmount = triggeredByAura->GetModifier()->m_amount; + uint32 triggered_spell_id = 0; switch(scriptId) @@ -7629,8 +7632,7 @@ bool Unit::HandleOverrideClassScriptAuraProc(Unit *pVictim, uint32 damage, Aura case 4086: // Improved Mend Pet (Rank 1) case 4087: // Improved Mend Pet (Rank 2) { - int32 chance = triggeredByAura->GetSpellProto()->EffectBasePoints[triggeredByAura->GetEffIndex()]; - if(!roll_chance_i(chance)) + if(!roll_chance_i(triggerAmount)) return false; triggered_spell_id = 24406; @@ -7661,6 +7663,23 @@ bool Unit::HandleOverrideClassScriptAuraProc(Unit *pVictim, uint32 damage, Aura case 6953: // Warbringer RemoveAurasAtMechanicImmunity(IMMUNE_TO_ROOT_AND_SNARE_MASK,0,true); return true; + case 7010: // Revitalize (rank 1) + case 7011: // Revitalize (rank 2) + case 7012: // Revitalize (rank 3) + { + if(!roll_chance_i(triggerAmount)) + return false; + + switch( pVictim->getPowerType() ) + { + case POWER_MANA: triggered_spell_id = 48542; break; + case POWER_RAGE: triggered_spell_id = 48541; break; + case POWER_ENERGY: triggered_spell_id = 48540; break; + case POWER_RUNIC_POWER: triggered_spell_id = 48543; break; + default: return false; + } + break; + } } // not processed @@ -12726,7 +12745,7 @@ bool Unit::IsTriggeredAtSpellProcEvent(Unit *pVictim, Aura* aura, SpellEntry con } // Aura added by spell can`t trogger from self (prevent drop charges/do triggers) // But except periodic triggers (can triggered from self) - if(procSpell && procSpell->Id == spellProto->Id && !(spellProto->procFlags&PROC_FLAG_ON_TAKE_PERIODIC)) + if(procSpell && procSpell->Id == spellProto->Id && !(spellProto->procFlags & PROC_FLAG_ON_TAKE_PERIODIC)) return false; // Check if current equipment allows aura to proc diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 4fc4e5d5e..a2bc8953f 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "9044" + #define REVISION_NR "9045" #endif // __REVISION_NR_H__ diff --git a/src/shared/revision_sql.h b/src/shared/revision_sql.h index bf27d67c8..c649603f6 100644 --- a/src/shared/revision_sql.h +++ b/src/shared/revision_sql.h @@ -1,6 +1,6 @@ #ifndef __REVISION_SQL_H__ #define __REVISION_SQL_H__ #define REVISION_DB_CHARACTERS "required_8874_01_characters_character_skills" - #define REVISION_DB_MANGOS "required_9034_01_mangos_spell_proc_event" + #define REVISION_DB_MANGOS "required_9045_02_mangos_spell_chain" #define REVISION_DB_REALMD "required_9010_01_realmd_realmlist" #endif // __REVISION_SQL_H__