Fixes chaos damage bug with the spell system. Fixes various small other bugs. Fixes more merge cast type checks and uses default values.

This commit is contained in:
Kamron Batman 2018-09-16 21:04:36 -07:00
parent 9542c79ea4
commit c155c82325
115 changed files with 644 additions and 1041 deletions

View file

@ -170,9 +170,7 @@ namespace Server.Spells.Fourth
protected override void OnTarget(Mobile from, object o)
{
IPoint3D p = o as IPoint3D;
if (p != null)
if (o is IPoint3D p)
m_Owner.Target(p);
}

View file

@ -152,9 +152,7 @@ namespace Server.Spells.Fourth
protected override void OnTarget(Mobile from, object o)
{
IPoint3D p = o as IPoint3D;
if (p != null)
if (o is IPoint3D p)
m_Owner.Target(p);
}

View file

@ -66,7 +66,7 @@ namespace Server.Spells.Fourth
) //On OSI you CAN curse yourself and get this effect.
{
TimeSpan duration = SpellHelper.GetDuration(Caster, m);
m_UnderEffect[m] = t = Timer.DelayCall(duration, new TimerStateCallback(RemoveEffect), m);
m_UnderEffect[m] = Timer.DelayCall(duration, new TimerStateCallback(RemoveEffect), m);
m.UpdateResistances();
}
@ -101,8 +101,8 @@ namespace Server.Spells.Fourth
protected override void OnTarget(Mobile from, object o)
{
if (o is Mobile)
m_Owner.Target((Mobile)o);
if (o is Mobile mobile)
m_Owner.Target(mobile);
}
protected override void OnTargetFinish(Mobile from)

View file

@ -246,36 +246,36 @@ namespace Server.Spells.Fourth
Map map = m_Item.Map;
Mobile caster = m_Item.m_Caster;
if (map != null && caster != null)
if (map == null || caster == null)
return;
foreach (Mobile m in m_Item.GetMobilesInRange(0))
if (m.Z + 16 > m_Item.Z && m_Item.Z + 12 > m.Z && (!Core.AOS || m != caster) &&
SpellHelper.ValidIndirectTarget(caster, m) && caster.CanBeHarmful(m, false))
m_Queue.Enqueue(m);
while (m_Queue.Count > 0)
{
foreach (Mobile m in m_Item.GetMobilesInRange(0))
if (m.Z + 16 > m_Item.Z && m_Item.Z + 12 > m.Z && (!Core.AOS || m != caster) &&
SpellHelper.ValidIndirectTarget(caster, m) && caster.CanBeHarmful(m, false))
m_Queue.Enqueue(m);
Mobile m = (Mobile)m_Queue.Dequeue();
while (m_Queue.Count > 0)
if (SpellHelper.CanRevealCaster(m))
caster.RevealingAction();
caster.DoHarmful(m);
int damage = m_Item.m_Damage;
if (!Core.AOS && m.CheckSkill(SkillName.MagicResist, 0.0, 30.0))
{
Mobile m = (Mobile)m_Queue.Dequeue();
damage = 1;
if (SpellHelper.CanRevealCaster(m))
caster.RevealingAction();
caster.DoHarmful(m);
int damage = m_Item.m_Damage;
if (!Core.AOS && m.CheckSkill(SkillName.MagicResist, 0.0, 30.0))
{
damage = 1;
m.SendLocalizedMessage(501783); // You feel yourself resisting magical energy.
}
AOS.Damage(m, caster, damage, 0, 100, 0, 0, 0);
m.PlaySound(0x208);
(m as BaseCreature)?.OnHarmfulSpell(caster);
m.SendLocalizedMessage(501783); // You feel yourself resisting magical energy.
}
AOS.Damage(m, caster, damage, 0, 100, 0, 0, 0);
m.PlaySound(0x208);
(m as BaseCreature)?.OnHarmfulSpell(caster);
}
}
}
@ -293,8 +293,8 @@ namespace Server.Spells.Fourth
protected override void OnTarget(Mobile from, object o)
{
if (o is IPoint3D)
m_Owner.Target((IPoint3D)o);
if (o is IPoint3D d)
m_Owner.Target(d);
}
protected override void OnTargetFinish(Mobile from)

View file

@ -46,7 +46,7 @@ namespace Server.Spells.Fourth
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (m is BaseCreature && ((BaseCreature)m).IsAnimatedDead)
else if (m is BaseCreature creature && creature.IsAnimatedDead)
{
Caster.SendLocalizedMessage(1061654); // You cannot heal that which is not alive.
}
@ -92,7 +92,8 @@ namespace Server.Spells.Fourth
protected override void OnTarget(Mobile from, object o)
{
if (o is Mobile) m_Owner.Target((Mobile)o);
if (o is Mobile mobile)
m_Owner.Target(mobile);
}
protected override void OnTargetFinish(Mobile from)

View file

@ -76,8 +76,8 @@ namespace Server.Spells.Fourth
protected override void OnTarget(Mobile from, object o)
{
if (o is Mobile)
m_Owner.Target((Mobile)o);
if (o is Mobile mobile)
m_Owner.Target(mobile);
}
protected override void OnTargetFinish(Mobile from)

View file

@ -120,8 +120,8 @@ namespace Server.Spells.Fourth
protected override void OnTarget(Mobile from, object o)
{
if (o is Mobile)
m_Owner.Target((Mobile)o);
if (o is Mobile mobile)
m_Owner.Target(mobile);
}
protected override void OnTargetFinish(Mobile from)

View file

@ -24,11 +24,7 @@ namespace Server.Spells.Fourth
private RunebookEntry m_Entry;
public RecallSpell(Mobile caster, Item scroll) : this(caster, scroll, null, null)
{
}
public RecallSpell(Mobile caster, Item scroll, RunebookEntry entry, Runebook book) : base(caster, scroll, m_Info)
public RecallSpell(Mobile caster, Item scroll, RunebookEntry entry = null, Runebook book = null) : base(caster, scroll, m_Info)
{
m_Entry = entry;
m_Book = book;
@ -99,9 +95,9 @@ namespace Server.Spells.Fourth
else if (!SpellHelper.CheckTravel(Caster, map, loc, TravelCheckType.RecallTo))
{
}
else if (map == Map.Felucca && Caster is PlayerMobile && ((PlayerMobile)Caster).Young)
else if (map == Map.Felucca && Caster is PlayerMobile mobile && mobile.Young)
{
Caster.SendLocalizedMessage(1049543); // You decide against traveling to Felucca while you are still young.
mobile.SendLocalizedMessage(1049543); // You decide against traveling to Felucca while you are still young.
}
else if (Caster.Kills >= 5 && map != Map.Felucca)
{
@ -159,38 +155,32 @@ namespace Server.Spells.Fourth
protected override void OnTarget(Mobile from, object o)
{
if (o is RecallRune)
if (o is RecallRune rune)
{
RecallRune rune = (RecallRune)o;
if (rune.Marked)
m_Owner.Effect(rune.Target, rune.TargetMap, true);
else
from.SendLocalizedMessage(501805); // That rune is not yet marked.
}
else if (o is Runebook)
else if (o is Runebook runebook)
{
RunebookEntry e = ((Runebook)o).Default;
RunebookEntry e = runebook.Default;
if (e != null)
m_Owner.Effect(e.Location, e.Map, true);
else
from.SendLocalizedMessage(502354); // Target is not marked.
}
else if (o is Key && ((Key)o).KeyValue != 0 && ((Key)o).Link is BaseBoat)
else if (o is Key key && key.KeyValue != 0 && key.Link is BaseBoat boat)
{
BaseBoat boat = ((Key)o).Link as BaseBoat;
if (!boat.Deleted && boat.CheckKey(((Key)o).KeyValue))
if (!boat.Deleted && boat.CheckKey(key.KeyValue))
m_Owner.Effect(boat.GetMarkedLocation(), boat.Map, false);
else
from.Send(new MessageLocalized(from.Serial, from.Body, MessageType.Regular, 0x3B2, 3, 502357,
from.Name, "")); // I can not recall from that object.
}
else if (o is HouseRaffleDeed && ((HouseRaffleDeed)o).ValidLocation())
else if (o is HouseRaffleDeed deed && deed.ValidLocation())
{
HouseRaffleDeed deed = (HouseRaffleDeed)o;
m_Owner.Effect(deed.PlotLocation, deed.PlotFacet, true);
}
else