mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-13 19:18:21 +00:00
Merge 52722dc0c8 into 81e04ee185
This commit is contained in:
@@ -1574,6 +1574,10 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses* ne
|
||||
newbon->MeleeMitigation -= effect_value;
|
||||
break;
|
||||
|
||||
case SE_IncreaseHitDmgTaken:
|
||||
newbon->MeleeMitigation += effect_value;
|
||||
break;
|
||||
|
||||
case SE_CriticalHitChance:
|
||||
{
|
||||
|
||||
@@ -2689,6 +2693,8 @@ uint8 Mob::IsFocusEffect(uint16 spell_id,int effect_index, bool AA,uint32 aa_eff
|
||||
return focusImprovedDamage2;
|
||||
case SE_Empathy:
|
||||
return focusAdditionalDamage;
|
||||
case SE_ReduceHeal:
|
||||
return focusReduceHeal;
|
||||
case SE_HealRate2:
|
||||
return focusHealRate;
|
||||
case SE_IncreaseSpellPower:
|
||||
@@ -3006,6 +3012,12 @@ void Mob::NegateSpellsBonuses(uint16 spell_id)
|
||||
aabonuses.MeleeMitigation = effect_value;
|
||||
break;
|
||||
|
||||
case SE_IncreaseHitDmgTaken:
|
||||
spellbonuses.MeleeMitigation = effect_value;
|
||||
itembonuses.MeleeMitigation = effect_value;
|
||||
aabonuses.MeleeMitigation = effect_value;
|
||||
break;
|
||||
|
||||
case SE_CriticalHitChance:
|
||||
{
|
||||
for(int e = 0; e < HIGHEST_SKILL+1; e++)
|
||||
|
||||
@@ -73,6 +73,7 @@ typedef enum { //focus types
|
||||
focusBlockNextSpell,
|
||||
focusHealRate,
|
||||
focusAdditionalDamage,
|
||||
focusReduceHeal,
|
||||
focusSpellEffectiveness,
|
||||
focusIncreaseNumHits,
|
||||
focusCriticalHealRate,
|
||||
|
||||
@@ -237,6 +237,7 @@ int32 Client::Additional_Heal(uint16 spell_id)
|
||||
|
||||
heal_amt += GetFocusEffect(focusAdditionalHeal, spell_id);
|
||||
heal_amt += GetFocusEffect(focusAdditionalHeal2, spell_id);
|
||||
heal_amt -= GetFocusEffect(focusReduceHeal, spell_id);
|
||||
|
||||
if (heal_amt){
|
||||
int duration = CalcBuffDuration(this, this, spell_id);
|
||||
|
||||
@@ -2868,6 +2868,7 @@ int32 Merc::Additional_Heal(uint16 spell_id)
|
||||
|
||||
heal_amt += GetFocusEffect(focusAdditionalHeal, spell_id);
|
||||
heal_amt += GetFocusEffect(focusAdditionalHeal2, spell_id);
|
||||
heal_amt -= GetFocusEffect(focusReduceHeal, spell_id);
|
||||
|
||||
if (heal_amt){
|
||||
int duration = CalcBuffDuration(this, this, spell_id);
|
||||
|
||||
+4
-4
@@ -3176,7 +3176,7 @@ void Mob::TrySpellTrigger(Mob *target, uint32 spell_id)
|
||||
if(MakeRandomInt(0, trig_chance) <= spells[spell_id].base[i])
|
||||
{
|
||||
// If we trigger an effect then its over.
|
||||
SpellFinished(spells[spell_id].base2[i], target);
|
||||
SpellFinished(spells[spell_id].base2[i], target, 10, 0, -1, spells[spell_id].ResistDiff);
|
||||
break;
|
||||
}
|
||||
else
|
||||
@@ -3197,7 +3197,7 @@ void Mob::TrySpellTrigger(Mob *target, uint32 spell_id)
|
||||
{
|
||||
if(MakeRandomInt(0, 100) <= spells[spell_id].base[i])
|
||||
{
|
||||
SpellFinished(spells[spell_id].base2[i], target);
|
||||
SpellFinished(spells[spell_id].base2[i], target, 10, 0, -1, spells[spell_id].ResistDiff);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3213,12 +3213,12 @@ void Mob::TryApplyEffect(Mob *target, uint32 spell_id)
|
||||
|
||||
for(int i = 0; i < EFFECT_COUNT; i++)
|
||||
{
|
||||
if (spells[spell_id].effectid[i] == SE_ApplyEffect)
|
||||
if (spells[spell_id].effectid[i] == SE_ApplyEffect || spells[spell_id].effectid[i] == SE_ApplyEffect2)
|
||||
{
|
||||
if(MakeRandomInt(0, 100) <= spells[spell_id].base[i])
|
||||
{
|
||||
if(target)
|
||||
SpellFinished(spells[spell_id].base2[i], target);
|
||||
SpellFinished(spells[spell_id].base2[i], target, 10, 0, -1, spells[spell_id].ResistDiff);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2804,6 +2804,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial)
|
||||
case SE_SpellVulnerability:
|
||||
case SE_SpellTrigger:
|
||||
case SE_ApplyEffect:
|
||||
case SE_ApplyEffect2:
|
||||
case SE_Twincast:
|
||||
case SE_DelayDeath:
|
||||
case SE_InterruptCasting:
|
||||
@@ -2892,6 +2893,9 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial)
|
||||
case SE_ChannelChanceItems:
|
||||
case SE_CriticalHealRate:
|
||||
case SE_IncreaseNumHits:
|
||||
case SE_CastonFocusEffect:
|
||||
case SE_ReduceHeal:
|
||||
case SE_IncreaseHitDmgTaken:
|
||||
{
|
||||
break;
|
||||
}
|
||||
@@ -4266,6 +4270,14 @@ int16 Client::CalcAAFocus(focusType type, uint32 aa_ID, uint16 spell_id)
|
||||
break;
|
||||
}
|
||||
|
||||
case SE_ReduceHeal:
|
||||
{
|
||||
if(type == focusReduceHeal)
|
||||
value = base1;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case SE_CriticalHealRate:
|
||||
{
|
||||
if (type == focusCriticalHealRate)
|
||||
@@ -4351,6 +4363,7 @@ int16 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
|
||||
int lvldiff = 0;
|
||||
bool LimitSpellSkill = false;
|
||||
bool SpellSkill_Found = false;
|
||||
uint32 Caston_spell_id = 0;
|
||||
|
||||
for (int i = 0; i < EFFECT_COUNT; i++) {
|
||||
|
||||
@@ -4511,6 +4524,11 @@ int16 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
|
||||
return 0;
|
||||
break;
|
||||
|
||||
case SE_CastonFocusEffect:
|
||||
if (focus_spell.base[i] > 0)
|
||||
Caston_spell_id = focus_spell.base[i];
|
||||
break;
|
||||
|
||||
//handle effects
|
||||
case SE_ImprovedDamage:
|
||||
// No Spell used this, its handled by different spell effect IDs.
|
||||
@@ -4732,6 +4750,14 @@ int16 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
|
||||
break;
|
||||
}
|
||||
|
||||
case SE_ReduceHeal:
|
||||
{
|
||||
if(type == focusReduceHeal)
|
||||
value = focus_spell.base[i];
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case SE_CriticalHealRate:
|
||||
{
|
||||
if (type == focusCriticalHealRate)
|
||||
@@ -4799,6 +4825,11 @@ int16 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
|
||||
if ((LimitSpellSkill) && (!SpellSkill_Found))
|
||||
return 0;
|
||||
|
||||
if (Caston_spell_id){
|
||||
if(IsValidSpell(Caston_spell_id) && (Caston_spell_id != spell_id))
|
||||
SpellFinished(Caston_spell_id, this, 10, 0, -1, spells[Caston_spell_id].ResistDiff);
|
||||
}
|
||||
|
||||
return(value*lvlModifier/100);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user