diff options
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 19 |
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) |