Core/Spells: Refactor CastSpellExtraArgs

* Allow C++20 designated initializers
* Allow precise float values for SPELLVALUE_RADIUS_MOD, SPELLVALUE_CRIT_CHANCE and SPELLVALUE_DURATION_PCT
This commit is contained in:
Shauren
2024-09-12 21:57:16 +02:00
parent d3b05c591c
commit 975e7cc072
9 changed files with 92 additions and 61 deletions

View File

@@ -555,7 +555,7 @@ public:
{
void SetRadiusMod()
{
GetSpell()->SetSpellValue(SPELLVALUE_RADIUS_MOD, int32(GetCaster()->GetObjectScale() * 10000 * 2 / 3));
GetSpell()->SetSpellValue(SPELLVALUE_RADIUS_MOD, GetCaster()->GetObjectScale() * 2 / 3);
}
void FilterTargets(std::list<WorldObject*>& unitList)
@@ -626,7 +626,7 @@ public:
{
void SetRadiusMod()
{
GetSpell()->SetSpellValue(SPELLVALUE_RADIUS_MOD, int32(GetCaster()->GetObjectScale() * 10000 * 2 / 3));
GetSpell()->SetSpellValue(SPELLVALUE_RADIUS_MOD, GetCaster()->GetObjectScale() * 2 / 3);
}
void Register() override

View File

@@ -1506,7 +1506,7 @@ class spell_halion_combustion_consumption_periodic : public SpellScriptLoader
return;
uint32 triggerSpell = aurEff->GetSpellEffectInfo().TriggerSpell;
int32 radius = caster->GetObjectScale() * M_PI * 10000 / 3;
float radius = caster->GetObjectScale() * M_PI / 3;
CastSpellExtraArgs args(aurEff);
args.OriginalCaster = caster->GetGUID();

View File

@@ -1208,7 +1208,7 @@ class spell_jormungars_slime_pool : public AuraScript
{
PreventDefaultAction();
int32 const radius = static_cast<int32>(((aurEff->GetTickNumber() / 60.f) * 0.9f + 0.1f) * 10000.f * 2.f / 3.f);
float const radius = ((aurEff->GetTickNumber() / 60.f) * 0.9f + 0.1f) * 2.f / 3.f;
CastSpellExtraArgs args(aurEff);
args.AddSpellMod(SPELLVALUE_RADIUS_MOD, radius);
GetTarget()->CastSpell(nullptr, aurEff->GetSpellEffectInfo().TriggerSpell, args);

View File

@@ -226,7 +226,7 @@ class spell_grobbulus_poison_cloud : public AuraScript
return;
uint32 triggerSpell = aurEff->GetSpellEffectInfo().TriggerSpell;
int32 mod = int32(((float(aurEff->GetTickNumber()) / aurEff->GetTotalTicks()) * 0.9f + 0.1f) * 10000 * 2 / 3);
float mod = ((float(aurEff->GetTickNumber()) / aurEff->GetTotalTicks()) * 0.9f + 0.1f) * 2 / 3;
CastSpellExtraArgs args(aurEff);
args.AddSpellMod(SPELLVALUE_RADIUS_MOD, mod);

View File

@@ -292,7 +292,7 @@ class spell_broggok_poison_cloud : public SpellScriptLoader
return;
uint32 triggerSpell = aurEff->GetSpellEffectInfo().TriggerSpell;
int32 mod = int32(((float(aurEff->GetTickNumber()) / aurEff->GetTotalTicks()) * 0.9f + 0.1f) * 10000 * 2 / 3);
float mod = ((float(aurEff->GetTickNumber()) / aurEff->GetTotalTicks()) * 0.9f + 0.1f) * 10000 * 2 / 3;
GetTarget()->CastSpell(nullptr, triggerSpell, CastSpellExtraArgs(aurEff).AddSpellMod(SPELLVALUE_RADIUS_MOD, mod));
}