So no serious answers then?
Sorry, couldn't resist..
Yeah I could also help you with it, however all you would really have to do is locate the section of code that handles the onhit effects (that's what you are after), then preform a check, then a search if the check is true around 5 tiles of the hit creature, and any creature (up to max of whatever) gets the same onhit effect applied.
public virtual void DoMagicArrow(Mobile attacker, Mobile defender)
{
if (!attacker.CanBeHarmful(defender, false))
return;
attacker.DoHarmful(defender);
double damage = GetAosDamage(attacker, 50, 5, 10);
attacker.MovingParticles(defender, 0x36E4, 5, 0, false, true, 3006, 4006, 0);
attacker.PlaySound(0x1E5);
SpellHelper.Damage(TimeSpan.FromSeconds(1.0), defender, attacker, damage, 0, 100, 0, 0, 0);
}
public virtual void DoMagicArrowA(Mobile from, Mobile defender, int sound, int hue, int phys, int fire, int cold, int pois, int nrgy)
{
Map map = from.Map;
if (map == null)
return;
List<Mobile> list = new List<Mobile>();
foreach (Mobile m in from.GetMobilesInRange(5))
{
if (m == null || m is BaseCreature && (((BaseCreature)m).Controlled || m is BaseVendor || ((BaseCreature)m).Summoned) || m.Deleted || m is PlayerMobile || m.Map != map || !m.Alive || m.IsDeadBondedPet)
continue;
if (m is BaseCreature)
list.Add(m);
}
if (list.Count == 0)
return;
Effects.PlaySound(from.Location, map, sound);
// TODO: What is the damage calculation?
for (int i = 0; i < list.Count; ++i)
{
Mobile m = list[i];
double scalar = (15 - from.GetDistanceToSqrt(m)) / 10;
if (scalar > 1.0)
scalar = 1.0;
else if (scalar < 0.0)
continue;
from.DoHarmful(m, true);
double damage = GetAosDamage(from, 50, 5, 10);
defender.MovingParticles(m, 0x36E4, 5, 0, false, true, 3006, 4006, 0);
AOS.Damage(m, from, (int)(GetBaseDamage(from) * scalar), phys, fire, cold, pois, nrgy);
}
}
We use essential cookies to make this site work, and optional cookies to enhance your experience.