mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-16 22:58:34 +00:00
[Feature] Implemented /shield ability and related affects (#1494)
* shield ability initial work
* updates
* update
* updates
* Update client_process.cpp
* major updates
optimized
pet support
perl support
* updates
* minor update
* fix merge error
* requested changes
* variable fix
* optimization
* minor update
* Revert "optimization"
This reverts commit 27e11e758b.
* fix
reset variables on shield_target if shielder dies or zones during shielding.
* edge case fix
Catch and fix situations where shield target doesn't have shielder variable cleared. Can occur if shielder . uses ability when target is not in combat then zones.
* combined packet and mob function
Shield now uses a common pathway through ShieldAbility, added parameters to perl function
* Addressing formatting for Kayen
* Fix function typo
Co-authored-by: Akkadius <akkadius1@gmail.com>
This commit is contained in:
+45
-4
@@ -1633,6 +1633,23 @@ void Mob::ApplyAABonuses(const AA::Rank &rank, StatBonuses *newbon)
|
||||
if (newbon->DoubleMeleeRound[SBIndex::DOUBLE_MELEE_ROUND_CHANCE] < base1) {
|
||||
newbon->DoubleMeleeRound[SBIndex::DOUBLE_MELEE_ROUND_CHANCE] = base1;
|
||||
newbon->DoubleMeleeRound[SBIndex::DOUBLE_MELEE_ROUND_DMG_BONUS] = base2;
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SE_ExtendedShielding:
|
||||
{
|
||||
if (newbon->ExtendedShielding < base1) {
|
||||
newbon->ExtendedShielding = base1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SE_ShieldDuration:
|
||||
{
|
||||
if (newbon->ShieldDuration < base1) {
|
||||
newbon->ShieldDuration = base1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1650,10 +1667,6 @@ void Mob::ApplyAABonuses(const AA::Rank &rank, StatBonuses *newbon)
|
||||
break;
|
||||
case SE_SecondaryForte:
|
||||
break;
|
||||
case SE_ExtendedShielding:
|
||||
break;
|
||||
case SE_ShieldDuration:
|
||||
break;
|
||||
case SE_ReduceApplyPoisonTime:
|
||||
break;
|
||||
case SE_NimbleEvasion:
|
||||
@@ -3567,6 +3580,34 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses *ne
|
||||
new_bonus->Pet_Add_Atk += effect_value;
|
||||
break;
|
||||
|
||||
case SE_ExtendedShielding:
|
||||
{
|
||||
if (AdditiveWornBonus) {
|
||||
new_bonus->ExtendedShielding += effect_value;
|
||||
}
|
||||
else if (effect_value < 0 && new_bonus->ExtendedShielding > effect_value){
|
||||
new_bonus->ExtendedShielding = effect_value;
|
||||
}
|
||||
else if (effect_value > 0 && new_bonus->ExtendedShielding < effect_value){
|
||||
new_bonus->ExtendedShielding = effect_value;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SE_ShieldDuration:
|
||||
{
|
||||
if (AdditiveWornBonus) {
|
||||
new_bonus->ShieldDuration += effect_value;
|
||||
}
|
||||
else if (effect_value < 0 && new_bonus->ShieldDuration > effect_value){
|
||||
new_bonus->ShieldDuration = effect_value;
|
||||
}
|
||||
else if (effect_value > 0 && new_bonus->ShieldDuration < effect_value){
|
||||
new_bonus->ShieldDuration = effect_value;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SE_Worn_Endurance_Regen_Cap:
|
||||
new_bonus->ItemEnduranceRegenCap += effect_value;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user