hondacrx
2021-12-07 14:18:01 -05:00
parent 8c8b965b7c
commit dcd4dc4226
3 changed files with 4 additions and 60 deletions
+2 -10
View File
@@ -79,21 +79,13 @@ namespace Game.AI
//Make sure our attack is ready and we aren't currently casting before checking distance //Make sure our attack is ready and we aren't currently casting before checking distance
if (me.IsAttackReady()) if (me.IsAttackReady())
{ {
if (ShouldSparWith(victim)) me.AttackerStateUpdate(victim);
me.FakeAttackerStateUpdate(victim);
else
me.AttackerStateUpdate(victim);
me.ResetAttackTimer(); me.ResetAttackTimer();
} }
if (me.HaveOffhandWeapon() && me.IsAttackReady(WeaponAttackType.OffAttack)) if (me.HaveOffhandWeapon() && me.IsAttackReady(WeaponAttackType.OffAttack))
{ {
if (ShouldSparWith(victim)) me.AttackerStateUpdate(victim, WeaponAttackType.OffAttack);
me.FakeAttackerStateUpdate(victim, WeaponAttackType.OffAttack);
else
me.AttackerStateUpdate(victim, WeaponAttackType.OffAttack);
me.ResetAttackTimer(WeaponAttackType.OffAttack); me.ResetAttackTimer(WeaponAttackType.OffAttack);
} }
} }
-46
View File
@@ -574,52 +574,6 @@ namespace Game.Entities
} }
} }
public void FakeAttackerStateUpdate(Unit victim, WeaponAttackType attType = WeaponAttackType.BaseAttack)
{
if (HasUnitState(UnitState.CannotAutoattack) || HasUnitFlag(UnitFlags.Pacified))
return;
if (!victim.IsAlive())
return;
if ((attType == WeaponAttackType.BaseAttack || attType == WeaponAttackType.OffAttack) && !IsWithinLOSInMap(victim))
return;
AttackedTarget(victim, true);
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags.Attacking);
if (attType != WeaponAttackType.BaseAttack && attType != WeaponAttackType.OffAttack)
return; // ignore ranged case
if (IsTypeId(TypeId.Unit) && !HasUnitFlag(UnitFlags.Possessed) && !HasUnitFlag2(UnitFlags2.DisableTurn))
SetFacingToObject(victim, false); // update client side facing to face the target (prevents visual glitches when casting untargeted spells)
CalcDamageInfo damageInfo = new();
damageInfo.Attacker = this;
damageInfo.Target = victim;
damageInfo.DamageSchoolMask = (uint)GetMeleeDamageSchoolMask();
damageInfo.OriginalDamage = 0;
damageInfo.Damage = 0;
damageInfo.Absorb = 0;
damageInfo.Resist = 0;
damageInfo.AttackType = attType;
damageInfo.CleanDamage = 0;
damageInfo.Blocked = 0;
damageInfo.TargetState = VictimState.Hit;
damageInfo.HitInfo = HitInfo.AffectsVictim | HitInfo.NormalSwing | HitInfo.FakeDamage;
if (attType == WeaponAttackType.OffAttack)
damageInfo.HitInfo |= HitInfo.OffHand;
damageInfo.ProcAttacker = ProcFlags.None;
damageInfo.ProcVictim = ProcFlags.None;
damageInfo.HitOutCome = MeleeHitOutcome.Normal;
SendAttackStateUpdate(damageInfo);
}
public void SetBaseWeaponDamage(WeaponAttackType attType, WeaponDamageRange damageRange, float value) { m_weaponDamage[(int)attType][(int)damageRange] = value; } public void SetBaseWeaponDamage(WeaponAttackType attType, WeaponDamageRange damageRange, float value) { m_weaponDamage[(int)attType][(int)damageRange] = value; }
public Unit GetMeleeHitRedirectTarget(Unit victim, SpellInfo spellInfo = null) public Unit GetMeleeHitRedirectTarget(Unit victim, SpellInfo spellInfo = null)
+2 -4
View File
@@ -142,10 +142,8 @@ namespace Scripts.World.NpcGuard
return; return;
} }
} }
if (ShouldSparWith(victim))
me.FakeAttackerStateUpdate(victim); me.AttackerStateUpdate(victim);
else
me.AttackerStateUpdate(victim);
me.ResetAttackTimer(); me.ResetAttackTimer();
task.Repeat(); task.Repeat();
}); });