Core/Spells: Implemented setting spell to cast on arrival from SPELL_EFFECT_JUMP_CHARGE in database

Port From (https://github.com/TrinityCore/TrinityCore/commit/b6b0eced74676816ae41d46ddb0ae7fa74068d3f)
This commit is contained in:
Hondacrx
2025-10-13 16:19:14 -04:00
parent b7eacd869e
commit aa2b2599b2
3 changed files with 16 additions and 4 deletions
+12 -2
View File
@@ -10757,8 +10757,8 @@ namespace Game
// need for reload case
_jumpChargeParams.Clear();
// 0 1 2 3 4 5 6
SQLResult result = DB.World.Query("SELECT id, speed, treatSpeedAsMoveTimeSeconds, jumpGravity, spellVisualId, progressCurveId, parabolicCurveId FROM jump_charge_params");
// 0 1 2 3 4 5 6 7
SQLResult result = DB.World.Query("SELECT id, speed, treatSpeedAsMoveTimeSeconds, jumpGravity, spellVisualId, progressCurveId, parabolicCurveId, triggerSpellId FROM jump_charge_params");
if (result.IsEmpty())
return;
@@ -10771,6 +10771,7 @@ namespace Game
uint? spellVisualId = null;
uint? progressCurveId = null;
uint? parabolicCurveId = null;
uint? triggerSpellId = null;
if (speed <= 0.0f)
{
@@ -10808,6 +10809,14 @@ namespace Game
Log.outError(LogFilter.Sql, $"Table `jump_charge_params` references non-existing parabolic Curve: {result.Read<uint>(6)} for id {id}, ignored.");
}
if (!result.IsNull(7))
{
if (Global.SpellMgr.GetSpellInfo(result.Read<uint>(7), Difficulty.None) != null)
triggerSpellId = result.Read<uint>(7);
else
Log.outDebug(LogFilter.Sql, $"Table `jump_charge_params` references non-existing trigger spell id: {result.Read<uint>(7)} for id {id}, ignored.");
}
JumpChargeParams jumpParams = new();
jumpParams.Speed = speed;
jumpParams.TreatSpeedAsMoveTimeSeconds = treatSpeedAsMoveTimeSeconds;
@@ -10815,6 +10824,7 @@ namespace Game
jumpParams.SpellVisualId = spellVisualId;
jumpParams.ProgressCurveId = progressCurveId;
jumpParams.ParabolicCurveId = parabolicCurveId;
jumpParams.TriggerSpellId = triggerSpellId;
_jumpChargeParams[id] = jumpParams;
} while (result.NextRow());
+1
View File
@@ -1339,6 +1339,7 @@ namespace Game.Movement
public uint? SpellVisualId;
public uint? ProgressCurveId;
public uint? ParabolicCurveId;
public uint? TriggerSpellId;
}
public struct ChaseRange
+3 -2
View File
@@ -5668,10 +5668,11 @@ namespace Game.Spells
facing = target;
JumpArrivalCastArgs arrivalCast = null;
if (effectInfo.TriggerSpell != 0)
if (effectInfo.TriggerSpell != 0 || jumpParams.TriggerSpellId.HasValue)
{
arrivalCast = new();
arrivalCast.SpellId = effectInfo.TriggerSpell;
arrivalCast.SpellId = jumpParams.TriggerSpellId.HasValue ? jumpParams.TriggerSpellId.Value : effectInfo.TriggerSpell;
arrivalCast.Target = unitTarget != null ? unitTarget.GetGUID() : ObjectGuid.Empty;
}
SpellEffectExtraData effectExtra = null;