From a21affbd68eedcd2dbfca6d05110de1b9dbaa6d9 Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Tue, 12 Jan 2010 12:03:52 +0300 Subject: [PATCH] [9160] Implement and use PROC_EX_FULL_BLOCK It used for spell 31245 and ranks new proc flags. Original patch provided by dardennf. --- sql/mangos.sql | 12 +++++++----- sql/updates/9160_01_mangos_spell_proc_event.sql | 5 +++++ sql/updates/9160_02_mangos_spell_chain.sql | 7 +++++++ sql/updates/9999_02_mangos_spell_chain.sql | 5 +++++ sql/updates/Makefile.am | 4 ++++ src/game/SpellMgr.h | 2 +- src/game/Unit.cpp | 11 ++++++----- src/shared/revision_nr.h | 2 +- src/shared/revision_sql.h | 2 +- 9 files changed, 37 insertions(+), 13 deletions(-) create mode 100644 sql/updates/9160_01_mangos_spell_proc_event.sql create mode 100644 sql/updates/9160_02_mangos_spell_chain.sql create mode 100644 sql/updates/9999_02_mangos_spell_chain.sql diff --git a/sql/mangos.sql b/sql/mangos.sql index aab6fb1bb..34f6f3d30 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_9156_02_mangos_spell_proc_event` bit(1) default NULL + `required_9160_02_mangos_spell_chain` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; -- @@ -14620,8 +14620,8 @@ INSERT INTO spell_chain VALUES -- (50) Beast Mastery ------------------*/ /*Aspect of the Dragonhawk*/ -(61846, 0, 61846, 1, 0), -(61847, 61846, 61846, 2, 0), +(61846,0,61846,1,0), +(61847,61846,61846,2,0), /*Aspect of the Hawk*/ (13165,0,13165,1,0), (14318,13165,13165,2,0), @@ -15797,6 +15797,9 @@ INSERT INTO spell_chain VALUES (34413,34412,1329,4,0), (48663,34413,1329,5,0), (48666,48663,1329,6,0), +/*Quick Recovery*/ +(31244,0,31244,1,0), +(31245,31244,31244,2,0), /*Rupture*/ (1943,0,1943,1,0), (8639,1943,1943,2,0), @@ -18043,8 +18046,7 @@ INSERT INTO `spell_proc_event` VALUES (30937, 0x00000020, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (31124, 0x00000000, 8, 0x2000000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (31126, 0x00000000, 8, 0x2000000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), -(31244, 0x00000000, 8, 0x003E0000, 0x00000009, 0x00000000, 0x00000000, 0x00000004, 0.000000, 0.000000, 0), -(31245, 0x00000000, 8, 0x003E0000, 0x00000009, 0x00000000, 0x00000000, 0x00000004, 0.000000, 0.000000, 0), +(31244, 0x00000000, 8, 0x003E0000, 0x00000009, 0x00000000, 0x00000000, 0x00002034, 0.000000, 0.000000, 0), (31394, 0x00000020, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (31569, 0x00000000, 3, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (31570, 0x00000000, 3, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), diff --git a/sql/updates/9160_01_mangos_spell_proc_event.sql b/sql/updates/9160_01_mangos_spell_proc_event.sql new file mode 100644 index 000000000..8f70036e4 --- /dev/null +++ b/sql/updates/9160_01_mangos_spell_proc_event.sql @@ -0,0 +1,5 @@ +ALTER TABLE db_version CHANGE COLUMN required_9156_02_mangos_spell_proc_event required_9160_01_mangos_spell_proc_event bit; + +DELETE FROM `spell_proc_event` WHERE `entry` IN (31244,31245); +INSERT INTO `spell_proc_event` VALUES +(31244, 0x00000000, 8, 0x003E0000, 0x00000009, 0x00000000, 0x00000000, 0x00002034, 0.000000, 0.000000, 0); diff --git a/sql/updates/9160_02_mangos_spell_chain.sql b/sql/updates/9160_02_mangos_spell_chain.sql new file mode 100644 index 000000000..9b730481f --- /dev/null +++ b/sql/updates/9160_02_mangos_spell_chain.sql @@ -0,0 +1,7 @@ +ALTER TABLE db_version CHANGE COLUMN required_9160_01_mangos_spell_proc_event required_9160_02_mangos_spell_chain bit; + +/*Quick Recovery*/ +DELETE FROM spell_chain WHERE first_spell = 31244; +INSERT INTO spell_chain VALUES +(31244, 0, 31244, 1, 0), +(31245, 31244, 31244, 2, 0); diff --git a/sql/updates/9999_02_mangos_spell_chain.sql b/sql/updates/9999_02_mangos_spell_chain.sql new file mode 100644 index 000000000..72c9b3ad9 --- /dev/null +++ b/sql/updates/9999_02_mangos_spell_chain.sql @@ -0,0 +1,5 @@ +/*Quick Recovery*/ +DELETE FROM spell_chain WHERE first_spell = 31244; +INSERT INTO spell_chain VALUES +(31244, 0, 31244, 1, 0), +(31245, 31244, 31244, 2, 0); diff --git a/sql/updates/Makefile.am b/sql/updates/Makefile.am index 0909c9935..ac71f5c38 100644 --- a/sql/updates/Makefile.am +++ b/sql/updates/Makefile.am @@ -242,6 +242,8 @@ pkgdata_DATA = \ 9155_01_mangos_spell_proc_event.sql \ 9156_01_mangos_spell_chain.sql \ 9156_02_mangos_spell_proc_event.sql \ + 9160_01_mangos_spell_proc_event.sql \ + 9160_02_mangos_spell_chain.sql \ README ## Additional files to include when running 'make dist' @@ -464,4 +466,6 @@ EXTRA_DIST = \ 9155_01_mangos_spell_proc_event.sql \ 9156_01_mangos_spell_chain.sql \ 9156_02_mangos_spell_proc_event.sql \ + 9160_01_mangos_spell_proc_event.sql \ + 9160_02_mangos_spell_chain.sql \ README diff --git a/src/game/SpellMgr.h b/src/game/SpellMgr.h index c34d412a1..741b36356 100644 --- a/src/game/SpellMgr.h +++ b/src/game/SpellMgr.h @@ -498,7 +498,7 @@ enum ProcFlagsEx PROC_EX_ABSORB = 0x0000400, PROC_EX_REFLECT = 0x0000800, PROC_EX_INTERRUPT = 0x0001000, // Melee hit result can be Interrupt (not used) - PROC_EX_RESERVED1 = 0x0002000, + PROC_EX_FULL_BLOCK = 0x0002000, // block al attack damage PROC_EX_RESERVED2 = 0x0004000, PROC_EX_RESERVED3 = 0x0008000, PROC_EX_EX_TRIGGER_ALWAYS = 0x0010000, // If set trigger always ( no matter another flags) used for drop charges diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index cac656672..6757b124b 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -1317,7 +1317,7 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da } case MELEE_HIT_PARRY: damageInfo->TargetState = VICTIMSTATE_PARRY; - damageInfo->procEx|=PROC_EX_PARRY; + damageInfo->procEx |= PROC_EX_PARRY; damageInfo->cleanDamage += damageInfo->damage; damageInfo->damage = 0; break; @@ -1332,12 +1332,13 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da { damageInfo->TargetState = VICTIMSTATE_NORMAL; damageInfo->HitInfo |= HITINFO_BLOCK; - damageInfo->procEx|=PROC_EX_BLOCK; + damageInfo->procEx |= PROC_EX_BLOCK; damageInfo->blocked_amount = damageInfo->target->GetShieldBlockValue(); if (damageInfo->blocked_amount >= damageInfo->damage) { damageInfo->TargetState = VICTIMSTATE_BLOCKS; damageInfo->blocked_amount = damageInfo->damage; + damageInfo->procEx |= PROC_EX_FULL_BLOCK; } damageInfo->damage -= damageInfo->blocked_amount; damageInfo->cleanDamage += damageInfo->blocked_amount; @@ -1345,9 +1346,9 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da } case MELEE_HIT_GLANCING: { - damageInfo->HitInfo |= HITINFO_GLANCING; - damageInfo->TargetState = VICTIMSTATE_NORMAL; - damageInfo->procEx|=PROC_EX_NORMAL_HIT; + damageInfo->HitInfo |= HITINFO_GLANCING; + damageInfo->TargetState = VICTIMSTATE_NORMAL; + damageInfo->procEx |= PROC_EX_NORMAL_HIT; float reducePercent = 1.0f; //damage factor // calculate base values and mods float baseLowEnd = 1.3f; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index ed2a6640f..33b55f094 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 "9159" + #define REVISION_NR "9160" #endif // __REVISION_NR_H__ diff --git a/src/shared/revision_sql.h b/src/shared/revision_sql.h index 71506da93..0eaedae9c 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_9136_07_characters_characters" - #define REVISION_DB_MANGOS "required_9156_02_mangos_spell_proc_event" + #define REVISION_DB_MANGOS "required_9160_02_mangos_spell_chain" #define REVISION_DB_REALMD "required_9010_01_realmd_realmlist" #endif // __REVISION_SQL_H__