fix: Players casting is sometimes not disturbed (#1138)
This commit is contained in:
parent
2ae762904f
commit
23ae7a3c26
4 changed files with 22 additions and 44 deletions
|
|
@ -386,15 +386,8 @@ namespace Server.Mobiles
|
|||
Disturb(DisturbType.Hurt, false);
|
||||
}
|
||||
|
||||
public override bool CheckDisturb(DisturbType type, bool checkFirst, bool resistable)
|
||||
{
|
||||
if (type is DisturbType.EquipRequest or DisturbType.UseRequest /* || type == DisturbType.Hurt*/)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
public override bool CheckDisturb(DisturbType type, bool checkFirst, bool resistable) =>
|
||||
type != DisturbType.EquipRequest && type != DisturbType.UseRequest;
|
||||
|
||||
public override void DoHurtFizzle()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -113,15 +113,8 @@ namespace Server.SkillHandlers
|
|||
base.OnDisturb(type, message);
|
||||
}
|
||||
|
||||
public override bool CheckDisturb(DisturbType type, bool checkFirst, bool resistable)
|
||||
{
|
||||
if (type is DisturbType.EquipRequest or DisturbType.UseRequest)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
public override bool CheckDisturb(DisturbType type, bool checkFirst, bool resistable) =>
|
||||
type != DisturbType.EquipRequest && type != DisturbType.UseRequest;
|
||||
|
||||
public override void SayMantra()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -395,38 +395,31 @@ namespace Server.Spells
|
|||
return;
|
||||
}
|
||||
|
||||
if (!firstCircle && !Core.AOS && (this as MagerySpell)?.Circle == SpellCircle.First)
|
||||
if (State == SpellState.None || !firstCircle && !Core.AOS && (this as MagerySpell)?.Circle == SpellCircle.First)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var wasCasting = IsCasting; // Copy SpellState before resetting it to none
|
||||
State = SpellState.None;
|
||||
Caster.Spell = null;
|
||||
|
||||
if (State == SpellState.Casting)
|
||||
{
|
||||
OnDisturb(type, true);
|
||||
OnDisturb(type, wasCasting);
|
||||
|
||||
if (wasCasting)
|
||||
{
|
||||
_castTimer?.Stop();
|
||||
_animTimer?.Stop();
|
||||
|
||||
if (Core.AOS && Caster.Player && type == DisturbType.Hurt)
|
||||
{
|
||||
DoHurtFizzle();
|
||||
}
|
||||
|
||||
Caster.NextSpellTime = Core.TickCount + (int)GetDisturbRecovery().TotalMilliseconds;
|
||||
}
|
||||
else if (State == SpellState.Sequencing)
|
||||
else
|
||||
{
|
||||
OnDisturb(type, false);
|
||||
|
||||
Target.Cancel(Caster);
|
||||
}
|
||||
|
||||
if (Core.AOS && Caster.Player && type == DisturbType.Hurt)
|
||||
{
|
||||
DoHurtFizzle();
|
||||
}
|
||||
if (Core.AOS && Caster.Player && type == DisturbType.Hurt)
|
||||
{
|
||||
DoHurtFizzle();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,12 @@
|
|||
namespace Server.Spells
|
||||
namespace Server.Spells;
|
||||
|
||||
public enum SpellState
|
||||
{
|
||||
public enum SpellState
|
||||
{
|
||||
None = 0,
|
||||
None = 0,
|
||||
|
||||
Casting =
|
||||
1, // We are in the process of casting (that is, waiting GetCastTime() and doing animations). Spell casting may be interupted in this state.
|
||||
// We are in the process of casting (that is, waiting GetCastTime() and doing animations). Spell casting may be interupted in this state.
|
||||
Casting = 1,
|
||||
|
||||
Sequencing =
|
||||
2 // Casting completed, but the full spell sequence isn't. Usually waiting for a target response. Some actions are restricted in this state (using skills for example).
|
||||
}
|
||||
// Casting completed, but the full spell sequence isn't. Usually waiting for a target response. Some actions are restricted in this state (using skills for example).
|
||||
Sequencing = 2
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue