fix: Removes duplicative spell checks (#849)

This commit is contained in:
Kamron Batman 2021-11-14 18:45:16 -08:00 committed by GitHub
parent e5f55a424a
commit 5df7bf6a75
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
50 changed files with 78 additions and 425 deletions

View file

@ -164,36 +164,33 @@ namespace Server.Targeting
{
OnTargetOutOfRange(from, targeted);
}
else
else if (!from.CanSee(targeted))
{
if (!from.CanSee(targeted))
{
OnCantSeeTarget(from, targeted);
}
else if (CheckLOS && !from.InLOS(targeted))
{
OnTargetOutOfLOS(from, targeted);
}
else if (item?.InSecureTrade == true)
{
OnTargetInSecureTrade(from, targeted);
}
else if (item?.IsAccessibleTo(from) == false)
{
OnTargetNotAccessible(from, targeted);
}
else if (item?.CheckTarget(from, this, targeted) == false)
{
OnTargetUntargetable(from, targeted);
}
else if (mobile?.CheckTarget(from, this, mobile) == false)
{
OnTargetUntargetable(from, mobile);
}
else if (from.Region.OnTarget(from, this, targeted))
{
OnTarget(from, targeted);
}
OnCantSeeTarget(from, targeted);
}
else if (CheckLOS && !from.InLOS(targeted))
{
OnTargetOutOfLOS(from, targeted);
}
else if (item?.InSecureTrade == true)
{
OnTargetInSecureTrade(from, targeted);
}
else if (item?.IsAccessibleTo(from) == false)
{
OnTargetNotAccessible(from, targeted);
}
else if (item?.CheckTarget(from, this, targeted) == false)
{
OnTargetUntargetable(from, targeted);
}
else if (mobile?.CheckTarget(from, this, mobile) == false)
{
OnTargetUntargetable(from, mobile);
}
else if (from.Region.OnTarget(from, this, targeted))
{
OnTarget(from, targeted);
}
OnTargetFinish(from);

View file

@ -7,11 +7,9 @@ using Server.Gumps;
using Server.Items;
using Server.Menus.ItemLists;
using Server.Menus.Questions;
using Server.Misc;
using Server.Mobiles;
using Server.Multis;
using Server.Network;
using Server.Saves;
using Server.Spells;
using Server.Targeting;
using Server.Targets;

View file

@ -1,14 +1,9 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.Net;
using System.Net.Http;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
using Server.Buffers;
namespace Server.Compression

View file

@ -1,4 +1,3 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;

View file

@ -24,16 +24,7 @@ namespace Server.Spells.Eighth
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (m == Caster)
if (m == Caster)
{
Caster.SendLocalizedMessage(501039); // Thou can not resurrect thyself.
}

View file

@ -25,15 +25,7 @@ namespace Server.Spells.Fifth
public void Target(Item item)
{
if (item == null)
{
Caster.SendLocalizedMessage(1005049); // That cannot be dispelled.
}
else if (!Caster.CanSee(item))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (!item.GetType().IsDefined(typeof(DispellableFieldAttribute), false))
if (!item.GetType().IsDefined(typeof(DispellableFieldAttribute), false))
{
Caster.SendLocalizedMessage(1005049); // That cannot be dispelled.
}

View file

@ -30,16 +30,7 @@ namespace Server.Spells.Fifth
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (Core.AOS)
if (Core.AOS)
{
if (Caster.CanBeHarmful(m) && CheckSequence())
{

View file

@ -25,17 +25,7 @@ namespace Server.Spells.Fifth
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (Core.AOS && (m.Frozen || m.Paralyzed ||
m.Spell?.IsCasting == true && !(m.Spell is PaladinSpell)))
if (Core.AOS && (m.Frozen || m.Paralyzed || m.Spell?.IsCasting == true && m.Spell is not PaladinSpell))
{
Caster.SendLocalizedMessage(1061923); // The target is already frozen.
}

View file

@ -28,11 +28,7 @@ namespace Server.Spells.Fifth
public void Target(IPoint3D p)
{
if (!Caster.CanSee(p))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (SpellHelper.CheckTown(p, Caster) && CheckSequence())
if (SpellHelper.CheckTown(p, Caster) && CheckSequence())
{
SpellHelper.Turn(Caster, p);

View file

@ -21,16 +21,7 @@ namespace Server.Spells.First
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckHSequence(m))
if (CheckHSequence(m))
{
SpellHelper.Turn(Caster, m);

View file

@ -21,16 +21,7 @@ namespace Server.Spells.First
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckHSequence(m))
if (CheckHSequence(m))
{
SpellHelper.Turn(Caster, m);

View file

@ -26,16 +26,7 @@ namespace Server.Spells.First
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (m.IsDeadBondedPet)
if (m.IsDeadBondedPet)
{
Caster.SendLocalizedMessage(1060177); // You cannot heal a creature that is already dead!
}

View file

@ -24,16 +24,7 @@ namespace Server.Spells.First
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckHSequence(m))
if (CheckHSequence(m))
{
var source = Caster;

View file

@ -21,16 +21,7 @@ namespace Server.Spells.First
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckHSequence(m))
if (CheckHSequence(m))
{
SpellHelper.Turn(Caster, m);

View file

@ -29,11 +29,7 @@ namespace Server.Spells.Fourth
public void Target(IPoint3D p)
{
if (!Caster.CanSee(p))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckSequence())
if (CheckSequence())
{
SpellHelper.Turn(Caster, p);

View file

@ -30,11 +30,7 @@ namespace Server.Spells.Fourth
public void Target(IPoint3D p)
{
if (!Caster.CanSee(p))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckSequence())
if (CheckSequence())
{
SpellHelper.Turn(Caster, p);

View file

@ -25,16 +25,7 @@ namespace Server.Spells.Fourth
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckHSequence(m))
if (CheckHSequence(m))
{
SpellHelper.Turn(Caster, m);
@ -46,8 +37,8 @@ namespace Server.Spells.Fourth
SpellHelper.AddStatCurse(Caster, m, StatType.Int);
SpellHelper.DisableSkillCheck = false;
if (Caster.Player && m.Player /*&& Caster != m */ && !UnderEffect(m)
) // On OSI you CAN curse yourself and get this effect.
// On OSI you CAN curse yourself and get this effect.
if (Caster.Player && m.Player /*&& Caster != m */ && !UnderEffect(m))
{
var duration = SpellHelper.GetDuration(Caster, m);
m_UnderEffect.Add(m);

View file

@ -28,11 +28,7 @@ namespace Server.Spells.Fourth
public void Target(IPoint3D p)
{
if (!Caster.CanSee(p))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (SpellHelper.CheckTown(p, Caster) && CheckSequence())
if (SpellHelper.CheckTown(p, Caster) && CheckSequence())
{
SpellHelper.Turn(Caster, p);

View file

@ -27,16 +27,7 @@ namespace Server.Spells.Fourth
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (m is BaseCreature creature && creature.IsAnimatedDead)
if (m is BaseCreature creature && creature.IsAnimatedDead)
{
Caster.SendLocalizedMessage(1061654); // You cannot heal that which is not alive.
}

View file

@ -23,16 +23,7 @@ namespace Server.Spells.Fourth
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckHSequence(m))
if (CheckHSequence(m))
{
SpellHelper.Turn(Caster, m);

View file

@ -26,16 +26,7 @@ namespace Server.Spells.Fourth
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckHSequence(m))
if (CheckHSequence(m))
{
SpellHelper.Turn(Caster, m);

View file

@ -41,11 +41,7 @@ namespace Server.Spells.Mysticism
public void Target(Mobile targeted)
{
if (!Caster.CanSee(targeted))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckHSequence(targeted))
if (CheckHSequence(targeted))
{
SpellHelper.Turn(Caster, targeted);

View file

@ -22,16 +22,7 @@ namespace Server.Spells.Second
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckBSequence(m))
if (CheckBSequence(m))
{
SpellHelper.Turn(Caster, m);

View file

@ -22,16 +22,7 @@ namespace Server.Spells.Second
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckBSequence(m))
if (CheckBSequence(m))
{
SpellHelper.Turn(Caster, m);

View file

@ -22,16 +22,7 @@ namespace Server.Spells.Second
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckBSequence(m))
if (CheckBSequence(m))
{
SpellHelper.Turn(Caster, m);

View file

@ -23,16 +23,7 @@ namespace Server.Spells.Second
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckHSequence(m))
if (CheckHSequence(m))
{
SpellHelper.Turn(Caster, m);

View file

@ -27,10 +27,6 @@ namespace Server.Spells.Second
{
Caster.SendLocalizedMessage(502942); // You can't trap this!
}
else if (!Caster.CanSee(item))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (cont.TrapType != TrapType.None && cont.TrapType != TrapType.MagicTrap)
{
DoFizzle();

View file

@ -22,13 +22,9 @@ namespace Server.Spells.Second
public void Target(Item item)
{
if (!(item is TrappableContainer cont))
if (item is not TrappableContainer cont)
{
Caster.SendMessage("You can't disarm that"); // TODO: Localization?
}
else if (!Caster.CanSee(item))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
Caster.SendLocalizedMessage(502373); // That doesn't appear to be trapped
}
else if (cont.TrapType != TrapType.None && cont.TrapType != TrapType.MagicTrap)
{

View file

@ -22,16 +22,7 @@ namespace Server.Spells.Second
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckBSequence(m))
if (CheckBSequence(m))
{
SpellHelper.Turn(Caster, m);

View file

@ -28,11 +28,7 @@ namespace Server.Spells.Seventh
public void Target(IPoint3D p)
{
if (!Caster.CanSee(p))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (SpellHelper.CheckTown(p, Caster) && CheckSequence())
if (SpellHelper.CheckTown(p, Caster) && CheckSequence())
{
SpellHelper.Turn(Caster, p);

View file

@ -28,11 +28,7 @@ namespace Server.Spells.Seventh
public void Target(IPoint3D p)
{
if (!Caster.CanSee(p))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (SpellHelper.CheckTown(p, Caster) && CheckSequence())
if (SpellHelper.CheckTown(p, Caster) && CheckSequence())
{
SpellHelper.Turn(Caster, p);

View file

@ -23,16 +23,7 @@ namespace Server.Spells.Seventh
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckHSequence(m))
if (CheckHSequence(m))
{
SpellHelper.Turn(Caster, m);

View file

@ -24,16 +24,7 @@ namespace Server.Spells.Seventh
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckHSequence(m))
if (CheckHSequence(m))
{
SpellHelper.Turn(Caster, m);

View file

@ -25,11 +25,7 @@ namespace Server.Spells.Seventh
public void Target(IPoint3D p)
{
if (!Caster.CanSee(p))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckSequence())
if (CheckSequence())
{
SpellHelper.Turn(Caster, p);

View file

@ -28,11 +28,7 @@ namespace Server.Spells.Seventh
public void Target(IPoint3D p)
{
if (!Caster.CanSee(p))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (SpellHelper.CheckTown(p, Caster) && CheckSequence())
if (SpellHelper.CheckTown(p, Caster) && CheckSequence())
{
SpellHelper.Turn(Caster, p);

View file

@ -24,16 +24,7 @@ namespace Server.Spells.Sixth
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (!(m is BaseCreature bc && bc.IsDispellable))
if (m is not BaseCreature { IsDispellable: true } bc)
{
Caster.SendLocalizedMessage(1005049); // That cannot be dispelled.
}

View file

@ -23,16 +23,7 @@ namespace Server.Spells.Sixth
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckHSequence(m))
if (CheckHSequence(m))
{
var source = Caster;

View file

@ -26,16 +26,7 @@ namespace Server.Spells.Sixth
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (Caster.CanBeHarmful(m) && CheckSequence())
if (Caster.CanBeHarmful(m) && CheckSequence())
{
Mobile attacker = Caster, defender = m;

View file

@ -28,16 +28,7 @@ namespace Server.Spells.Sixth
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (m is BaseVendor || m is PlayerVendor || m.AccessLevel > Caster.AccessLevel)
if (m is BaseVendor or PlayerVendor || m.AccessLevel > Caster.AccessLevel)
{
Caster.SendLocalizedMessage(501857); // This spell won't work on that!
}

View file

@ -24,7 +24,7 @@ namespace Server.Spells.Sixth
public void Target(Item item)
{
if (!(item is RecallRune rune))
if (item is not RecallRune rune)
{
Caster.NetState.SendMessageLocalized(
Caster.Serial,
@ -32,13 +32,9 @@ namespace Server.Spells.Sixth
MessageType.Regular,
0x3B2,
3,
501797,
501797, // I cannot mark that object.
Caster.Name
); // I cannot mark that object.
}
else if (!Caster.CanSee(rune))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
);
}
else if (!SpellHelper.CheckTravel(Caster, TravelCheckType.Mark))
{
@ -49,11 +45,8 @@ namespace Server.Spells.Sixth
}
else if (!rune.IsChildOf(Caster.Backpack))
{
Caster.LocalOverheadMessage(
MessageType.Regular,
0x3B2,
1062422
); // You must have this rune in your backpack in order to mark it.
// You must have this rune in your backpack in order to mark it.
Caster.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1062422);
}
else if (CheckSequence())
{

View file

@ -24,11 +24,7 @@ namespace Server.Spells.Sixth
public void Target(IPoint3D p)
{
if (!Caster.CanSee(p))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (SpellHelper.CheckTown(p, Caster) && CheckSequence())
if (SpellHelper.CheckTown(p, Caster) && CheckSequence())
{
SpellHelper.Turn(Caster, p);

View file

@ -27,11 +27,7 @@ namespace Server.Spells.Sixth
public void Target(IPoint3D p)
{
if (!Caster.CanSee(p))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (SpellHelper.CheckTown(p, Caster) && CheckSequence())
if (SpellHelper.CheckTown(p, Caster) && CheckSequence())
{
SpellHelper.Turn(Caster, p);

View file

@ -22,11 +22,7 @@ namespace Server.Spells.Sixth
public void Target(IPoint3D p)
{
if (!Caster.CanSee(p))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckSequence())
if (CheckSequence())
{
SpellHelper.Turn(Caster, p);
SpellHelper.GetSurfaceTop(ref p);

View file

@ -30,15 +30,7 @@ namespace Server.Spells.Spellweaving
public void Target(Mobile m)
{
if (m == null)
{
Caster.SendLocalizedMessage(1072077); // You may only cast this spell on yourself or a bonded pet.
}
else if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (m.IsDeadBondedPet || !m.Alive)
if (m.IsDeadBondedPet || !m.Alive)
{
// As per Osi: Nothing happens.
}

View file

@ -26,16 +26,7 @@ namespace Server.Spells.Spellweaving
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (m_Table.ContainsKey(m))
if (m_Table.ContainsKey(m))
{
Caster.SendLocalizedMessage(501775); // This spell is already in effect.
}

View file

@ -18,16 +18,7 @@ namespace Server.Spells.Spellweaving
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckHSequence(m))
if (CheckHSequence(m))
{
var loc = m.Location;
loc.Z += 50;

View file

@ -22,16 +22,7 @@ namespace Server.Spells.Third
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckBSequence(m))
if (CheckBSequence(m))
{
SpellHelper.Turn(Caster, m);

View file

@ -22,16 +22,7 @@ namespace Server.Spells.Third
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckHSequence(m))
if (CheckHSequence(m))
{
var source = Caster;

View file

@ -21,16 +21,7 @@ namespace Server.Spells.Third
public void Target(Mobile m)
{
if (m == null)
{
return;
}
if (!Caster.CanSee(m))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (CheckHSequence(m))
if (CheckHSequence(m))
{
SpellHelper.Turn(Caster, m);

View file

@ -25,11 +25,7 @@ namespace Server.Spells.Third
public void Target(IPoint3D p)
{
if (!Caster.CanSee(p))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (SpellHelper.CheckTown(p, Caster) && CheckSequence())
if (SpellHelper.CheckTown(p, Caster) && CheckSequence())
{
SpellHelper.Turn(Caster, p);