Implemented SE_PetMeleeMitigation - Bonus applied to pet owner. Gives AC to owner's pet.

Related AA's to be added in a seperate update.
This commit is contained in:
KayenEQ 2014-06-30 16:17:55 -04:00 committed by Arthur Ice
parent 32d20f22ef
commit 718ba3edbf
5 changed files with 29 additions and 3 deletions

View File

@ -19,6 +19,7 @@ Revised Assassinate mechanic so damage now receives all backstab bonuses, proc c
system, or flat chance based on dex (formula updated). Assassinate can now proc from THROW if behind target, various other adjustments. system, or flat chance based on dex (formula updated). Assassinate can now proc from THROW if behind target, various other adjustments.
Kayen: Fix to AA Finishing Blow missing aa_effects data, update required SQL. Kayen: Fix to AA Finishing Blow missing aa_effects data, update required SQL.
Revised Finishing blow so that damage now receives all melee bonus. Support also for this effect if placed on items or spells. Revised Finishing blow so that damage now receives all melee bonus. Support also for this effect if placed on items or spells.
Kayen: Implemented SE_PetMeleeMitigation - Bonus applied to pet owner. Gives AC to owner's pet.
Required SQL: utils/sql/git/required/2014_06_25_AA_Update.sql Required SQL: utils/sql/git/required/2014_06_25_AA_Update.sql
Optional SQL: utils/sql/git/optiional/2014_06_29_HeadShotRules.sql Optional SQL: utils/sql/git/optiional/2014_06_29_HeadShotRules.sql

View File

@ -544,7 +544,7 @@ typedef enum {
#define SE_FcHealAmtIncoming 394 // implemented - Adds/Removes amount of healing on target by X value with foucs restrictions. #define SE_FcHealAmtIncoming 394 // implemented - Adds/Removes amount of healing on target by X value with foucs restrictions.
#define SE_FcHealPctCritIncoming 395 // implemented[AA] - Increases chance of having a heal crit when cast on you. [focus limited] #define SE_FcHealPctCritIncoming 395 // implemented[AA] - Increases chance of having a heal crit when cast on you. [focus limited]
#define SE_FcHealAmtCrit 396 // implemented - Adds a direct healing amount to spells #define SE_FcHealAmtCrit 396 // implemented - Adds a direct healing amount to spells
//#define SE_PetMeleeMitigation 397 // *not implemented[AA] - additional mitigation to your pets. #define SE_PetMeleeMitigation 397 // implemented[AA] - additional mitigation to your pets. Adds AC.
#define SE_SwarmPetDuration 398 // implemented - Affects the duration of swarm pets #define SE_SwarmPetDuration 398 // implemented - Affects the duration of swarm pets
#define SE_FcTwincast 399 // implemented - cast 2 spells for every 1 #define SE_FcTwincast 399 // implemented - cast 2 spells for every 1
#define SE_HealGroupFromMana 400 // implemented - Drains mana and heals for each point of mana drained #define SE_HealGroupFromMana 400 // implemented - Drains mana and heals for each point of mana drained

View File

@ -560,11 +560,21 @@ void Mob::MeleeMitigation(Mob *attacker, int32 &damage, int32 minhit, ExtraAttac
weight = (CastToClient()->CalcCurrentWeight() / 10.0); weight = (CastToClient()->CalcCurrentWeight() / 10.0);
} else if (IsNPC()) { } else if (IsNPC()) {
armor = CastToNPC()->GetRawAC(); armor = CastToNPC()->GetRawAC();
int PetACBonus = 0;
if (!IsPet()) if (!IsPet())
armor = (armor / RuleR(Combat, NPCACFactor)); armor = (armor / RuleR(Combat, NPCACFactor));
else{
Mob *owner = nullptr;
owner = GetOwner();
if (owner){
PetACBonus = owner->aabonuses.PetMeleeMitigation
+ owner->itembonuses.PetMeleeMitigation +
owner->spellbonuses.PetMeleeMitigation;
}
}
armor += spellbonuses.AC + itembonuses.AC + 1; armor += spellbonuses.AC + itembonuses.AC + PetACBonus + 1;
} }
if (opts) { if (opts) {
@ -4447,7 +4457,7 @@ bool Mob::TryFinishingBlow(Mob *defender, SkillUseTypes skillinuse)
uint32 FB_Dmg = aabonuses.FinishingBlow[1] + spellbonuses.FinishingBlow[1] + itembonuses.FinishingBlow[1]; uint32 FB_Dmg = aabonuses.FinishingBlow[1] + spellbonuses.FinishingBlow[1] + itembonuses.FinishingBlow[1];
uint16 FB_Level = 0; //Get Highest Headshot Level uint16 FB_Level = 0;
FB_Level = aabonuses.FinishingBlowLvl[0]; FB_Level = aabonuses.FinishingBlowLvl[0];
if (FB_Level < spellbonuses.FinishingBlowLvl[0]) if (FB_Level < spellbonuses.FinishingBlowLvl[0])
FB_Level = spellbonuses.FinishingBlowLvl[0]; FB_Level = spellbonuses.FinishingBlowLvl[0];

View File

@ -1311,6 +1311,10 @@ void Client::ApplyAABonuses(uint32 aaid, uint32 slots, StatBonuses* newbon)
break; break;
} }
case SE_PetMeleeMitigation:
newbon->PetMeleeMitigation += base1;
break;
} }
} }
} }
@ -2844,6 +2848,10 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses* ne
break; break;
} }
case SE_PetMeleeMitigation:
newbon->PetMeleeMitigation += effect_value;
break;
//Special custom cases for loading effects on to NPC from 'npc_spels_effects' table //Special custom cases for loading effects on to NPC from 'npc_spels_effects' table
if (IsAISpellEffect) { if (IsAISpellEffect) {
@ -4075,6 +4083,12 @@ void Mob::NegateSpellsBonuses(uint16 spell_id)
itembonuses.GivePetGroupTarget = false; itembonuses.GivePetGroupTarget = false;
break; break;
case SE_PetMeleeMitigation:
spellbonuses.PetMeleeMitigation = effect_value;
itembonuses.PetMeleeMitigation = effect_value;
aabonuses.PetMeleeMitigation = effect_value;
break;
case SE_RootBreakChance: case SE_RootBreakChance:
spellbonuses.RootBreakChance = effect_value; spellbonuses.RootBreakChance = effect_value;
aabonuses.RootBreakChance = effect_value; aabonuses.RootBreakChance = effect_value;

View File

@ -427,6 +427,7 @@ struct StatBonuses {
uint8 HSLevel; // Max Level Headshot will be effective at. uint8 HSLevel; // Max Level Headshot will be effective at.
uint32 Assassinate[2]; // Assassinate AA (Massive dmg vs humaniod w/ assassinate) 0= ? 1= Dmg uint32 Assassinate[2]; // Assassinate AA (Massive dmg vs humaniod w/ assassinate) 0= ? 1= Dmg
uint8 AssassinateLevel; // Max Level Assassinate will be effective at. uint8 AssassinateLevel; // Max Level Assassinate will be effective at.
int32 PetMeleeMitigation; // Add AC to owner's pet.
}; };