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:
@@ -10757,8 +10757,8 @@ namespace Game
|
|||||||
// need for reload case
|
// need for reload case
|
||||||
_jumpChargeParams.Clear();
|
_jumpChargeParams.Clear();
|
||||||
|
|
||||||
// 0 1 2 3 4 5 6
|
// 0 1 2 3 4 5 6 7
|
||||||
SQLResult result = DB.World.Query("SELECT id, speed, treatSpeedAsMoveTimeSeconds, jumpGravity, spellVisualId, progressCurveId, parabolicCurveId FROM jump_charge_params");
|
SQLResult result = DB.World.Query("SELECT id, speed, treatSpeedAsMoveTimeSeconds, jumpGravity, spellVisualId, progressCurveId, parabolicCurveId, triggerSpellId FROM jump_charge_params");
|
||||||
if (result.IsEmpty())
|
if (result.IsEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -10771,6 +10771,7 @@ namespace Game
|
|||||||
uint? spellVisualId = null;
|
uint? spellVisualId = null;
|
||||||
uint? progressCurveId = null;
|
uint? progressCurveId = null;
|
||||||
uint? parabolicCurveId = null;
|
uint? parabolicCurveId = null;
|
||||||
|
uint? triggerSpellId = null;
|
||||||
|
|
||||||
if (speed <= 0.0f)
|
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.");
|
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();
|
JumpChargeParams jumpParams = new();
|
||||||
jumpParams.Speed = speed;
|
jumpParams.Speed = speed;
|
||||||
jumpParams.TreatSpeedAsMoveTimeSeconds = treatSpeedAsMoveTimeSeconds;
|
jumpParams.TreatSpeedAsMoveTimeSeconds = treatSpeedAsMoveTimeSeconds;
|
||||||
@@ -10815,6 +10824,7 @@ namespace Game
|
|||||||
jumpParams.SpellVisualId = spellVisualId;
|
jumpParams.SpellVisualId = spellVisualId;
|
||||||
jumpParams.ProgressCurveId = progressCurveId;
|
jumpParams.ProgressCurveId = progressCurveId;
|
||||||
jumpParams.ParabolicCurveId = parabolicCurveId;
|
jumpParams.ParabolicCurveId = parabolicCurveId;
|
||||||
|
jumpParams.TriggerSpellId = triggerSpellId;
|
||||||
_jumpChargeParams[id] = jumpParams;
|
_jumpChargeParams[id] = jumpParams;
|
||||||
|
|
||||||
} while (result.NextRow());
|
} while (result.NextRow());
|
||||||
|
|||||||
@@ -1339,6 +1339,7 @@ namespace Game.Movement
|
|||||||
public uint? SpellVisualId;
|
public uint? SpellVisualId;
|
||||||
public uint? ProgressCurveId;
|
public uint? ProgressCurveId;
|
||||||
public uint? ParabolicCurveId;
|
public uint? ParabolicCurveId;
|
||||||
|
public uint? TriggerSpellId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct ChaseRange
|
public struct ChaseRange
|
||||||
|
|||||||
@@ -5668,10 +5668,11 @@ namespace Game.Spells
|
|||||||
facing = target;
|
facing = target;
|
||||||
|
|
||||||
JumpArrivalCastArgs arrivalCast = null;
|
JumpArrivalCastArgs arrivalCast = null;
|
||||||
if (effectInfo.TriggerSpell != 0)
|
if (effectInfo.TriggerSpell != 0 || jumpParams.TriggerSpellId.HasValue)
|
||||||
{
|
{
|
||||||
arrivalCast = new();
|
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;
|
SpellEffectExtraData effectExtra = null;
|
||||||
|
|||||||
Reference in New Issue
Block a user