From a34deecfc0a956782aa4680367195aec6108c783 Mon Sep 17 00:00:00 2001 From: insider42 Date: Sun, 21 Nov 2010 05:28:59 +0300 Subject: [PATCH] [10764] Implement talent 44543 and ranks charges work. Signed-off-by: VladimirMangos Also fix IGNORE_UNIT_TARGET_NON_FROZEN in part allow casting spell that required frozen target. --- sql/mangos.sql | 5 +++-- sql/updates/10764_01_mangos_spell_proc_event.sql | 5 +++++ sql/updates/Makefile.am | 2 ++ src/game/SharedDefines.h | 2 +- src/game/Spell.cpp | 5 ++++- src/game/SpellAuras.cpp | 15 +++++++++++++++ src/shared/revision_nr.h | 2 +- src/shared/revision_sql.h | 2 +- 8 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 sql/updates/10764_01_mangos_spell_proc_event.sql diff --git a/sql/mangos.sql b/sql/mangos.sql index 4308dc628..c435f4d33 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_10762_01_mangos_spell_proc_event` bit(1) default NULL + `required_10764_01_mangos_spell_proc_event` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; -- @@ -17426,7 +17426,8 @@ INSERT INTO `spell_proc_event` VALUES (71545, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000,45.000000, 0), (71611, 0x7F, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (71642, 0x7F, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), -(71761, 0x00, 3, 0x00000000, 0x00000000, 0x00000000, 0x00100000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0.000000, 0.000000, 0); +(71761, 0x00, 3, 0x00000000, 0x00000000, 0x00000000, 0x00100000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0.000000, 0.000000, 0), +(74396, 0x00, 3, 0x28E212F7, 0x28E212F7, 0x28E212F7, 0x00119048, 0x00119048, 0x00119048, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0.000000, 0.000000, 0); /*!40000 ALTER TABLE `spell_proc_event` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/10764_01_mangos_spell_proc_event.sql b/sql/updates/10764_01_mangos_spell_proc_event.sql new file mode 100644 index 000000000..0b1498580 --- /dev/null +++ b/sql/updates/10764_01_mangos_spell_proc_event.sql @@ -0,0 +1,5 @@ +ALTER TABLE db_version CHANGE COLUMN required_10762_01_mangos_spell_proc_event required_10764_01_mangos_spell_proc_event bit; + +DELETE FROM `spell_proc_event` WHERE `entry` IN (74396); +INSERT INTO spell_proc_event VALUES +(74396, 0x00, 3, 0x28E212F7, 0x28E212F7, 0x28E212F7, 0x00119048, 0x00119048, 0x00119048, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0.000000, 0.000000, 0); diff --git a/sql/updates/Makefile.am b/sql/updates/Makefile.am index 7a772f8de..d2cf75661 100644 --- a/sql/updates/Makefile.am +++ b/sql/updates/Makefile.am @@ -124,6 +124,7 @@ pkgdata_DATA = \ 10746_01_mangos_mangos_string.sql \ 10749_01_mangos_mangos_string.sql \ 10762_01_mangos_spell_proc_event.sql \ + 10764_01_mangos_spell_proc_event.sql \ README ## Additional files to include when running 'make dist' @@ -228,4 +229,5 @@ EXTRA_DIST = \ 10746_01_mangos_mangos_string.sql \ 10749_01_mangos_mangos_string.sql \ 10762_01_mangos_spell_proc_event.sql \ + 10764_01_mangos_spell_proc_event.sql \ README diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h index 5ee0f979c..0d0fb8427 100644 --- a/src/game/SharedDefines.h +++ b/src/game/SharedDefines.h @@ -902,7 +902,7 @@ enum AuraState AURA_STATE_DEFENSE = 1, // C | AURA_STATE_HEALTHLESS_20_PERCENT = 2, // CcT | AURA_STATE_BERSERKING = 3, // C T | - AURA_STATE_FROZEN = 4, // c t| frozen target + AURA_STATE_FROZEN = 4, // cT | frozen target AURA_STATE_JUDGEMENT = 5, // C | //AURA_STATE_UNKNOWN6 = 6, // | not used AURA_STATE_HUNTER_PARRY = 7, // C | diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 4b7b88386..78734c91a 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -2814,6 +2814,9 @@ void Spell::cast(bool skipCheck) // Ice Block if (m_spellInfo->SpellFamilyFlags & UI64LIT(0x0000008000000000)) AddPrecastSpell(41425); // Hypothermia + // Fingers of Frost + else if (m_spellInfo->Id == 44544) + AddPrecastSpell(74396); // Fingers of Frost break; } case SPELLFAMILY_WARRIOR: @@ -4349,7 +4352,7 @@ SpellCastResult Spell::CheckCast(bool strict) { // target state requirements (apply to non-self only), to allow cast affects to self like Dirty Deeds if (m_spellInfo->TargetAuraState && !target->HasAuraStateForCaster(AuraState(m_spellInfo->TargetAuraState), m_caster->GetGUID()) && - !m_caster->IsIgnoreUnitState(m_spellInfo, IGNORE_UNIT_TARGET_STATE)) + !m_caster->IsIgnoreUnitState(m_spellInfo, m_spellInfo->TargetAuraState == AURA_STATE_FROZEN ? IGNORE_UNIT_TARGET_NON_FROZEN : IGNORE_UNIT_TARGET_STATE)) return SPELL_FAILED_TARGET_AURASTATE; // Not allow casting on flying player diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index af4d26688..1559ba0c9 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -2102,6 +2102,13 @@ void Aura::HandleAuraDummy(bool apply, bool Real) } break; } + case SPELLFAMILY_MAGE: + { + // Fingers of Frost stacks set to max at apply + if (GetId() == 74396) + GetHolder()->SetAuraCharges(GetSpellProto()->StackAmount); + break; + } case SPELLFAMILY_SHAMAN: { switch(GetId()) @@ -8353,6 +8360,14 @@ void SpellAuraHolder::HandleSpellSpecificBoosts(bool apply) return; break; } + case 74396: // Fingers of Frost (remove main aura) + { + if (!apply) + spellId1 = 44544; + else + return; + break; + } default: return; } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 840b0f5e4..9d9db0cbd 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 "10763" + #define REVISION_NR "10764" #endif // __REVISION_NR_H__ diff --git a/src/shared/revision_sql.h b/src/shared/revision_sql.h index bed239d6e..884dccdb4 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_10664_01_characters_arena_team_stats" - #define REVISION_DB_MANGOS "required_10762_01_mangos_spell_proc_event" + #define REVISION_DB_MANGOS "required_10764_01_mangos_spell_proc_event" #define REVISION_DB_REALMD "required_10008_01_realmd_realmd_db_version" #endif // __REVISION_SQL_H__