Closed CrossUCI closed 6 years ago
Maybe this can help you
class spell_pal_word_of_glory_AuraScript : public AuraScript { PrepareAuraScript(spell_pal_word_of_glory_AuraScript);
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_PALADIN_DIVINE_PURPOSE_PROC });
}
void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
{
Unit* caster = GetCaster();
if (!caster)
return;
if (caster->HasAura(SPELL_PALADIN_DIVINE_PURPOSE_PROC))
amount += amount * 2;
else
amount += amount * caster->GetPower(POWER_HOLY_POWER);
if (caster != GetUnitOwner())
if (AuraEffect* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_PALADIN, PALADIN_ICOM_ID_SELFLESS_HEALER, EFFECT_0))
amount += CalculatePct(amount, aurEff->GetAmount());
}
void Register() override
{
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_pal_word_of_glory_AuraScript::CalculateAmount, EFFECT_1, SPELL_AURA_PERIODIC_HEAL);
}
};
SPELL_PALADIN_ETERNAL_GLORY_PROC = 88676, SPELL_PALADIN_DIVINE_PURPOSE_PROC = 90174,
// 85673 - Word of Glory class spell_pal_word_of_glory: public SpellScript { PrepareSpellScript(spell_pal_word_of_glory);
bool Load() override
{
if (GetCaster()->GetTypeId() != TYPEID_PLAYER)
return false;
if (GetCaster()->ToPlayer()->getClass() != CLASS_PALADIN)
return false;
return true;
}
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo(
{
SPELL_PALADIN_DIVINE_PURPOSE_PROC,
SPELL_PALADIN_ETERNAL_GLORY_PROC
});
}
void HandleHeal(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
if (!caster)
return;
int32 heal = GetHitHeal();
if (caster->HasAura(SPELL_PALADIN_DIVINE_PURPOSE_PROC))
heal += heal * 2;
else
heal += heal * caster->GetPower(POWER_HOLY_POWER);
if (caster != GetHitUnit())
if (AuraEffect* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_PALADIN, PALADIN_ICOM_ID_SELFLESS_HEALER, EFFECT_0))
heal += CalculatePct(heal, aurEff->GetAmount());
SetHitHeal(heal);
}
void HandleEternalGlory()
{
if (Unit* caster = GetCaster())
{
if (AuraEffect* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_PALADIN, PALADIN_ICON_ID_ETERNAL_GLORY, EFFECT_0))
{
if (roll_chance_i(aurEff->GetAmount()))
{
uint8 powerCost = 1 + GetSpell()->GetPowerCost();
caster->CastCustomSpell(SPELL_PALADIN_ETERNAL_GLORY_PROC, SPELLVALUE_BASE_POINT0, powerCost, caster, true, nullptr, aurEff);
}
}
}
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_pal_word_of_glory::HandleHeal, EFFECT_0, SPELL_EFFECT_HEAL);
AfterCast += SpellCastFn(spell_pal_word_of_glory::HandleEternalGlory);
}
};
i have inserted several new spell i found for paladin, includet youre script.. you are welcome to test
it work
Class: Paladin What should do : Consumes all Holy Power to heal a friendly target for an amount per charge of Holy Power What does : Consumes all holly power but consume all the charge as it only had one Example in player level 50 1 charge must heal 230, real consume 230 2 charge must heal 230x2 , real consume 230 3 charge must heal 230x2 , real consume 230