aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellEffects.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 06ee5111fd6..0e1d4149a06 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -3790,19 +3790,24 @@ void Spell::EffectFeedPet(SpellEffIndex effIndex)
if (!pet->IsAlive())
return;
- int32 benefit = pet->GetCurrentFoodBenefitLevel(foodItem->GetTemplate()->GetBaseItemLevel());
- if (benefit <= 0)
- return;
-
ExecuteLogEffectDestroyItem(effIndex, foodItem->GetEntry());
+ int32 pct;
+ int32 levelDiff = int32(pet->getLevel()) - int32(foodItem->GetTemplate()->GetBaseItemLevel());
+ if (levelDiff >= 30)
+ return;
+ else if (levelDiff >= 20)
+ pct = int32(12.5); // we can't pass double so keeping the cast here for future references
+ else if (levelDiff >= 10)
+ pct = 25;
+ else
+ pct = 50;
+
uint32 count = 1;
player->DestroyItemCount(foodItem, count, true);
/// @todo fix crash when a spell has two effects, both pointed at the same item target
- CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
- args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT0, benefit);
- m_caster->CastSpell(pet, effectInfo->TriggerSpell, args);
+ m_caster->CastSpell(pet, effectInfo->TriggerSpell, CastSpellExtraArgs(TRIGGERED_FULL_MASK));
}
void Spell::EffectDismissPet(SpellEffIndex effIndex)