[9160] Implement and use PROC_EX_FULL_BLOCK

It used for spell 31245 and ranks new proc flags.

Original patch provided by dardennf.
This commit is contained in:
VladimirMangos 2010-01-12 12:03:52 +03:00
parent 83261d9b9b
commit a21affbd68
9 changed files with 37 additions and 13 deletions

View file

@ -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),

View file

@ -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);

View file

@ -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);

View file

@ -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);

View file

@ -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

View file

@ -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

View file

@ -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;

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "9159"
#define REVISION_NR "9160"
#endif // __REVISION_NR_H__

View file

@ -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__