TC Ports:
Core/Misc: 522f537048 followup (https://github.com/TrinityCore/TrinityCore/commit/9a57e95f102a9d35ac8416d02e24c0dddbc755ed) Core/CreatureAI: b6b0353bff followup (https://github.com/TrinityCore/TrinityCore/commit/5d411e0b21b1f1a4653d274d9b1cc7fef17f232b) Core/Spell: move creature focus (https://github.com/TrinityCore/TrinityCore/commit/8c12f36915b2fddd48a5e4c9244c2b0498a64ae9) Core/Unit: 2170541a51 followup (https://github.com/TrinityCore/TrinityCore/commit/2d4549023a6655d19671f7f7e6b4f7c9b71ae632) Core/Misc: cleanup SetInFront uses (https://github.com/TrinityCore/TrinityCore/commit/104e745edfb89f95e34cad7840eae0b6e183bf94) Core/Unit: 229444b74a follow-up (https://github.com/TrinityCore/TrinityCore/commit/6a96addadd5dea633b3066b8d0427302ba514364) Core/Unit: revert 3ea46e57af (https://github.com/TrinityCore/TrinityCore/commit/a46286a803b41b375ed9352858c742626bb85720) Core/Scripts: remove OnDummyEffect hook/sOnDummyEffect ai hook (https://github.com/TrinityCore/TrinityCore/commit/1929ca3aa14f6cd83ea3ac9d7e8c0e2ed0e87a26) Core/Entities: moved PetAura handling to Player where it belongs (https://github.com/TrinityCore/TrinityCore/commit/4f6d38fe9d5c07e6e8eb88e517af71b6cdc4f9f8) Core/Spells: Fixed Chilled to the Bone (https://github.com/TrinityCore/TrinityCore/commit/08635c740a7ee04da9b0cd5045075a9432121b06) Core/Spell: implement pvp trinket immunity against Judgement of Justice (https://github.com/TrinityCore/TrinityCore/commit/05ba662d5daaa3428cc01cdaa3794bf5a073ef17)
This commit is contained in:
@@ -930,6 +930,27 @@ namespace Game.Entities
|
||||
&& !GetCreatureTemplate().FlagsExtra.HasAnyFlag(CreatureFlagsExtra.NoXpAtKill);
|
||||
}
|
||||
|
||||
public override bool IsMovementPreventedByCasting()
|
||||
{
|
||||
// first check if currently a movement allowed channel is active and we're not casting
|
||||
Spell spell = GetCurrentSpell(CurrentSpellTypes.Channeled);
|
||||
if (spell != null)
|
||||
{
|
||||
if (spell.GetState() != SpellState.Finished && spell.IsChannelActive())
|
||||
if (spell.GetSpellInfo().IsMoveAllowedChannel())
|
||||
if (HasUnitState(UnitState.Casting))
|
||||
return true;
|
||||
}
|
||||
|
||||
if (IsFocusing(null, true))
|
||||
return true;
|
||||
|
||||
if (HasUnitState(UnitState.Casting))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public void StartPickPocketRefillTimer()
|
||||
{
|
||||
_pickpocketLootRestore = Time.UnixTime + WorldConfig.GetIntValue(WorldCfg.CreaturePickpocketRefill);
|
||||
@@ -2768,19 +2789,19 @@ namespace Game.Entities
|
||||
bool canTurnDuringCast = !focusSpell.GetSpellInfo().HasAttribute(SpellAttr5.DontTurnDuringCast);
|
||||
// Face the target - we need to do this before the unit state is modified for no-turn spells
|
||||
if (target)
|
||||
SetFacingToObject(target);
|
||||
SetFacingToObject(target, false);
|
||||
else if (!canTurnDuringCast)
|
||||
{
|
||||
Unit victim = GetVictim();
|
||||
if (victim)
|
||||
SetFacingToObject(victim); // ensure server-side orientation is correct at beginning of cast
|
||||
SetFacingToObject(victim, false); // ensure server-side orientation is correct at beginning of cast
|
||||
}
|
||||
|
||||
if (!canTurnDuringCast)
|
||||
AddUnitState(UnitState.CannotTurn);
|
||||
}
|
||||
|
||||
public override bool IsFocusing(Spell focusSpell = null, bool withDelay = false)
|
||||
public bool IsFocusing(Spell focusSpell = null, bool withDelay = false)
|
||||
{
|
||||
if (!IsAlive()) // dead creatures cannot focus
|
||||
{
|
||||
@@ -2821,10 +2842,10 @@ namespace Game.Entities
|
||||
{
|
||||
WorldObject objTarget = Global.ObjAccessor.GetWorldObject(this, m_suppressedTarget);
|
||||
if (objTarget)
|
||||
SetFacingToObject(objTarget);
|
||||
SetFacingToObject(objTarget, false);
|
||||
}
|
||||
else
|
||||
SetFacingTo(m_suppressedOrientation);
|
||||
SetFacingTo(m_suppressedOrientation, false);
|
||||
}
|
||||
else
|
||||
// tell the creature that it should reacquire its actual target after the delay expires (this is handled in ::Update)
|
||||
@@ -3156,7 +3177,7 @@ namespace Game.Entities
|
||||
|
||||
if (target != null && _IsTargetAcceptable(target) && CanCreatureAttack(target))
|
||||
{
|
||||
if (!IsFocusing())
|
||||
if (!IsFocusing(null, true))
|
||||
SetInFront(target);
|
||||
return target;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user