Fixes/Crashes:

command "cometome"
Using call pet on hunter
crash when casting some spells.
This commit is contained in:
hondacrx
2023-03-20 05:50:18 -04:00
parent 12897e80e8
commit bd437fc87a
4 changed files with 21 additions and 20 deletions
@@ -649,7 +649,7 @@ namespace Game.AI
SmartEvents.OnSpellFailed => Marshal.SizeOf(typeof(SmartEvent.SpellCast)),
SmartEvents.OnSpellStart => Marshal.SizeOf(typeof(SmartEvent.SpellCast)),
SmartEvents.OnDespawn => 0,
_ => Marshal.SizeOf(typeof(SmartEvent.Raw)),
_ => Marshal.SizeOf(typeof(SmartEvent.Raw)),
};
int rawCount = Marshal.SizeOf(typeof(SmartEvent.Raw)) / sizeof(uint);
+1 -1
View File
@@ -283,7 +283,7 @@ namespace Game.Entities
}
else if (PetSaveMode.FirstActiveSlot <= slot && slot <= PetSaveMode.LastActiveSlot)
{
var activePetIndex = Array.FindIndex(petStable.ActivePets, pet => pet?.PetNumber == petnumber);
var activePetIndex = Array.FindIndex(petStable.ActivePets, pet => pet?.PetNumber == petInfo.PetNumber);
Cypher.Assert(activePetIndex != -1);
@@ -60,25 +60,29 @@ namespace Game.Movement
owner.AddUnitState(UnitState.RoamingMove);
MoveSplineInit init = new(owner);
if (_generatePath)
new Action(() =>
{
PathGenerator path = new(owner);
bool result = path.CalculatePath(_destination.posX, _destination.posY, _destination.posZ, false);
if (result && !path.GetPathType().HasFlag(PathType.NoPath))
if (_generatePath)
{
if (_closeEnoughDistance.HasValue)
path.ShortenPathUntilDist(_destination, _closeEnoughDistance.Value);
PathGenerator path = new(owner);
bool result = path.CalculatePath(_destination.posX, _destination.posY, _destination.posZ, false);
if (result && !path.GetPathType().HasFlag(PathType.NoPath))
{
if (_closeEnoughDistance.HasValue)
path.ShortenPathUntilDist(_destination, _closeEnoughDistance.Value);
init.MovebyPath(path.GetPath());
return;
init.MovebyPath(path.GetPath());
return;
}
}
}
Position dest = _destination;
if (_closeEnoughDistance.HasValue)
owner.MovePosition(dest, Math.Min(_closeEnoughDistance.Value, dest.GetExactDist(owner)), MathF.PI + owner.GetRelativeAngle(dest));
Position dest = _destination;
if (_closeEnoughDistance.HasValue)
owner.MovePosition(dest, Math.Min(_closeEnoughDistance.Value, dest.GetExactDist(owner)), MathF.PI + owner.GetRelativeAngle(dest));
init.MoveTo(dest.GetPositionX(), dest.GetPositionY(), dest.GetPositionZ(), false);
init.MoveTo(dest.GetPositionX(), dest.GetPositionY(), dest.GetPositionZ(), false);
})();
if (_speed.HasValue)
init.SetVelocity(_speed.Value);
+2 -5
View File
@@ -98,9 +98,6 @@ namespace Game.Spells
for (var i = 0; i < SpellConst.MaxEffects; ++i)
m_destTargets[i] = new SpellDestination(m_caster);
m_targets = new SpellCastTargets();
m_appliedMods = new List<Aura>();
}
public virtual void Dispose()
@@ -7964,11 +7961,11 @@ namespace Game.Spells
public SpellMisc m_misc;
public object m_customArg;
public SpellCastVisual m_SpellVisual;
public SpellCastTargets m_targets;
public SpellCastTargets m_targets = new();
public sbyte m_comboPointGain;
public SpellCustomErrors m_customError;
public List<Aura> m_appliedMods;
public List<Aura> m_appliedMods = new();
WorldObject m_caster;
public SpellValue m_spellValue;