CastCustomSpell bp > 2.

The method must be supplemented. There is one example for this.

ID - 117549 Духовная связь
=================================================
Description: Заряжает энергией дух цели, придавая им дополнительные силы в битве с противником.

ToolTip: $?$W3!=0[Скорость, вероятность нанесения критического удара и урон увеличены на $w3%][]
$?$W6!=0[Искусность повышена на $w6][]
Category = 0, SpellIconID = 459, activeIconID = 0, SpellVisual = (0,0)
Family SPELLFAMILY_GENERIC, flag [0] 0x00000000 [1] 0x00000000 [2] 0x00000000 [3] 0x00000000

SpellSchoolMask = 0 (SPELL_SCHOOL_MASK_NONE)
DamageClass = 0 (SPELL_DAMAGE_CLASS_NONE)
PreventionType = 0 (SPELL_PREVENTION_TYPE_NONE)
=================================================
Attributes: 0x80000000 (SPELL_ATTR0_CANT_CANCEL)
AttributesEx4: 0x00001000 (SPELL_ATTR4_UNK12)
AttributesEx7: 0x00010000 (SPELL_ATTR7_CAN_RESTORE_SECONDARY_POWER)
AttributesEx8: 0x00001000 (SPELL_ATTR8_AURA_SEND_AMOUNT)
AttributesEx9: 0x00100000 (SPELL_ATTR9_UNK20)
AttributesEx10: 0x00004000 (SPELL_ATTR10_UNK14)
=================================================
Spell Level = 0, base 0, max 0

Category = 0
DispelType = 0 (DISPEL_NONE)
Mechanic = 0 (MECHANIC_NONE)
SpellRange: (Id 13) “Anywhere”:
MinRangeNegative = 0, MinRangePositive = 0
MaxRangeNegative = 50000, MaxRangePositive = 50000

Cast time (Id 1) = 0,00
Duration: ID (9) 30000, 0, 30000
Interrupt Flags: 0x00000000, AuraIF 0xE4480000, ChannelIF 0x00000000

Allowed areas:
6125 - Подземелья Могу’шан (Map: 1008)

Chance = 0, charges - 0
=================================================
Effect 0: Id 6 (SPELL_EFFECT_APPLY_AURA) DIFFICULTY_NONE
BasePoints = 0
Targets (25, 0) (TARGET_UNIT_TARGET_ANY, NO_TARGET)
Aura Id 24 (SPELL_AURA_PERIODIC_ENERGIZE), value = 0, misc = 10 (10), miscB = 0, periodic = 1000

Effect 1: Id 6 (SPELL_EFFECT_APPLY_AURA) DIFFICULTY_NONE
BasePoints = 0
Targets (25, 0) (TARGET_UNIT_TARGET_ANY, NO_TARGET)
Aura Id 239 (SPELL_AURA_MOD_SCALE_2), value = 0, misc = 0 (0), miscB = 0, periodic = 0

Effect 2: Id 6 (SPELL_EFFECT_APPLY_AURA) DIFFICULTY_NONE
BasePoints = 0
Targets (25, 0) (TARGET_UNIT_TARGET_ANY, NO_TARGET)
Aura Id 193 (SPELL_AURA_MELEE_SLOW), value = 0, misc = 0 (0), miscB = 0, periodic = 0

Effect 3: Id 6 (SPELL_EFFECT_APPLY_AURA) DIFFICULTY_NONE
BasePoints = 0
Targets (25, 0) (TARGET_UNIT_TARGET_ANY, NO_TARGET)
Aura Id 52 (SPELL_AURA_MOD_WEAPON_CRIT_PERCENT), value = 0, misc = 0 (0), miscB = 0, periodic = 0

Effect 4: Id 6 (SPELL_EFFECT_APPLY_AURA) DIFFICULTY_NONE
BasePoints = 0
Targets (25, 0) (TARGET_UNIT_TARGET_ANY, NO_TARGET)
Aura Id 79 (SPELL_AURA_MOD_DAMAGE_PERCENT_DONE), value = 0, misc = 0 (0), miscB = 0, periodic = 0

Effect 5: Id 6 (SPELL_EFFECT_APPLY_AURA) DIFFICULTY_NONE
BasePoints = 0
Targets (25, 0) (TARGET_UNIT_TARGET_ANY, NO_TARGET)
Aura Id 318 (SPELL_AURA_MASTERY), value = 0, misc = 0 (0), miscB = 0, periodic = 0

As you can see the aura has SPELL_ATTR8_AURA_SEND_AMOUNT attribute.

My suggest: I did not touch the old method, simply added an extra.

Simply put - copypaste.

In Unit.h

void CastCustomSpell(Unit* victim, uint32 spellId, int32 const* bp0, int32 const* bp1, int32 const* bp2, int32 const* bp3, int32 const* bp4, int32 const* bp5, bool triggered, Item* castItem = NULL, AuraEffect const* triggeredByAura = NULL, ObjectGuid originalCaster = ObjectGuid::Empty);

In Unit.cpp

void Unit::CastCustomSpell(Unit* target, uint32 spellId, int32 const* bp0, int32 const* bp1, int32 const* bp2, int32 const* bp3, int32 const* bp4, int32 const* bp5, bool triggered, Item* castItem, AuraEffect const* triggeredByAura, ObjectGuid originalCaster)
{
CustomSpellValues values;
if (bp0)
values.AddSpellMod(SPELLVALUE_BASE_POINT0, *bp0);
if (bp1)
values.AddSpellMod(SPELLVALUE_BASE_POINT1, *bp1);
if (bp2)
values.AddSpellMod(SPELLVALUE_BASE_POINT2, *bp2);
if (bp3)
values.AddSpellMod(SPELLVALUE_BASE_POINT3, *bp3);
if (bp4)
values.AddSpellMod(SPELLVALUE_BASE_POINT4, *bp4);
if (bp5)
values.AddSpellMod(SPELLVALUE_BASE_POINT5, *bp5);
CastCustomSpell(spellId, values, target, triggered ? TRIGGERED_FULL_MASK : TRIGGERED_NONE, castItem, triggeredByAura, originalCaster);
}

No.

Use CastCustomSpell version where you pass CustomSpellValues directly.

  1. void Unit::CastCustomSpell(uint32 spellId, SpellValueMod mod, int32 value, Unit* target, bool triggered, Item* castItem, AuraEffect const* triggeredByAura, ObjectGuid originalCaster)
    {
    CustomSpellValues values;
    values.AddSpellMod(mod, value);
    CastCustomSpell(spellId, values, target, triggered ? TRIGGERED_FULL_MASK : TRIGGERED_NONE, castItem, triggeredByAura, originalCaster);
    }

  2. void Unit::CastCustomSpell(uint32 spellId, SpellValueMod mod, int32 value, Unit* target, TriggerCastFlags triggerFlags, Item* castItem, AuraEffect const* triggeredByAura, ObjectGuid originalCaster)
    {
    CustomSpellValues values;
    values.AddSpellMod(mod, value);
    CastCustomSpell(spellId, values, target, triggerFlags, castItem, triggeredByAura, originalCaster);
    }

Version 1 or version 2?

If you need to override value of one effect use this one

 void CastCustomSpell(uint32 spellId, SpellValueMod mod, int32 value, Unit* victim, TriggerCastFlags triggerFlags, Item* castItem, AuraEffect const* triggeredByAura, ObjectGuid originalCaster)

If you need to override many effects then this one

 void CastCustomSpell(uint32 spellId, CustomSpellValues const &values, Unit* victim, TriggerCastFlags triggerFlags, Item* castItem, AuraEffect const* triggeredByAura, ObjectGuid originalCaster) 

Thanks for clarify and explanation. For [COLOR=rgb(39,42,52)]117549 spell need

void CastCustomSpell(uint32 spellId, CustomSpellValues const &values, Unit* victim, TriggerCastFlags triggerFlags, Item* castItem, AuraEffect const* triggeredByAura, ObjectGuid originalCaster)
It is a pity there is no example to use. For

SpellValueMod mod a lot of. Temple Guardian Anuur example

CastCustomSpell(Unit* target, uint32 spellId, int32 const* bp0, int32 const* bp1…

This function is an example for how to use CustomSpellValues

I mean spell script specifically for use void CastCustomSpell (uint32 spellId, CustomSpellValues const & values, Unit * victim, TriggerCastFlags triggerFlags, Item * castItem, AuraEffect const * triggeredByAura, ObjectGuid originalCaster)

For Spellvalue mod example:

class spell_anhuur_divine_reckoning : public SpellScriptLoader
{
public:
spell_anhuur_divine_reckoning() : SpellScriptLoader(“spell_anhuur_divine_reckoning”) { }

class spell_anhuur_divine_reckoning_AuraScript : public AuraScript
    {
        PrepareAuraScript(spell_anhuur_divine_reckoning_AuraScript);

    void OnPeriodic(AuraEffect const* aurEff)
        {
            if (Unit* caster = GetCaster())
            {
                CustomSpellValues values;
                values.AddSpellMod(SPELLVALUE_BASE_POINT0, aurEff->GetAmount());
                caster->CastCustomSpell(GetSpellInfo()->GetEffect(caster, EFFECT_0)->TriggerSpell, values, GetTarget());
            }
        }

    void Register() override
        {
            OnEffectPeriodic += AuraEffectPeriodicFn(spell_anhuur_divine_reckoning_AuraScript::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
        }
    };

AuraScript* GetAuraScript() const override
    {
        return new spell_anhuur_divine_reckoning_AuraScript();
    }
};

For CustomSpellValue method cannot find example spellscript. Only bp or Spellvalue Mod BASEPOINT_X