Overwrite

Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
Unstable Kitsune
2023-11-28 23:20:26 -05:00
parent 3cd54811de
commit b918192e4e
11608 changed files with 2644205 additions and 47 deletions

View File

@@ -0,0 +1,83 @@
using System;
using System.Collections.Generic;
namespace Server.Items
{
// The thrown projectile will arc to a second target after hitting the primary target. Chaos energy will burst from the projectile at each target.
// This will only hit targets that are in combat with the user.
public class MysticArc : WeaponAbility
{
private readonly int m_Damage = 15;
private Mobile m_Target;
private Mobile m_Mobile;
public override int BaseMana
{
get
{
return 20;
}
}
public override void OnHit(Mobile attacker, Mobile defender, int damage)
{
if (!this.CheckMana(attacker, true) && defender != null)
return;
BaseThrown weapon = attacker.Weapon as BaseThrown;
if (weapon == null)
return;
List<Mobile> targets = new List<Mobile>();
IPooledEnumerable eable = attacker.GetMobilesInRange(weapon.MaxRange);
foreach (Mobile m in eable)
{
if (m == defender)
continue;
if (m.Combatant != attacker)
continue;
targets.Add(m);
}
eable.Free();
if (targets.Count > 0)
this.m_Target = targets[Utility.Random(targets.Count)];
AOS.Damage(defender, attacker, this.m_Damage, 0, 0, 0, 0, 0, 100);
if (this.m_Target != null)
{
defender.MovingEffect(this.m_Target, weapon.ItemID, 18, 1, false, false);
Timer.DelayCall(TimeSpan.FromMilliseconds(333.0), new TimerCallback(ThrowAgain));
this.m_Mobile = attacker;
}
ClearCurrentAbility(attacker);
}
public void ThrowAgain()
{
if (this.m_Target != null && this.m_Mobile != null)
{
BaseThrown weapon = this.m_Mobile.Weapon as BaseThrown;
if (weapon == null)
return;
if (WeaponAbility.GetCurrentAbility(this.m_Mobile) is MysticArc)
ClearCurrentAbility(this.m_Mobile);
if (weapon.CheckHit(this.m_Mobile, this.m_Target))
{
weapon.OnHit(this.m_Mobile, this.m_Target, 0.0);
AOS.Damage(this.m_Target, this.m_Mobile, this.m_Damage, 0, 0, 0, 0, 100);
}
}
}
}
}