fix(linq): Removes linq and fixes fishing error (#674)

This commit is contained in:
Kamron Batman 2021-08-04 22:24:38 -07:00 committed by GitHub
parent b112be4e1f
commit 410b18ceca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 253 additions and 62 deletions

View file

@ -1349,7 +1349,14 @@ namespace Server
{
var eable = GetItemsInRange(point, 0);
contains = !eable.Any(item => item.Visible);
foreach (Item item in eable)
{
if (item.Visible)
{
contains = false;
break;
}
}
eable.Free();

View file

@ -1092,11 +1092,13 @@ namespace Server.Engines.ConPVP
if (ourFlagCarrier != null && GetTeamInfo(ourFlagCarrier) == teamInfo)
{
if (ourFlagCarrier.Aggressors.Any(
aggr => aggr.Defender == ourFlagCarrier && aggr.Attacker == mob
))
foreach (var aggr in ourFlagCarrier.Aggressors)
{
playerInfo.Score += 2; // helped defend guy capturing enemy flag
if (aggr.Defender == ourFlagCarrier && aggr.Attacker == mob)
{
playerInfo.Score += 2; // helped defend guy capturing enemy flag
break;
}
}
if (mob.Map == ourFlagCarrier.Map && ourFlagCarrier.InRange(mob, 12))

View file

@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Server.Engines.Quests;
using Server.Engines.Quests.Collector;
@ -170,12 +171,24 @@ namespace Server.Engines.Harvest
public override bool CheckResources(Mobile from, Item tool, HarvestDefinition def, Map map, Point3D loc, bool timed)
{
return from?.Backpack?.FindItemsByType<SOS>()
.Any(
sos =>
(from.Map == Map.Felucca || from.Map == Map.Trammel) && from.InRange(sos.TargetLocation, 60)
) ??
base.CheckResources(from, tool, def, map, loc, timed);
Container pack = from.Backpack;
if (pack != null)
{
List<SOS> messages = pack.FindItemsByType<SOS>();
for (int i = 0; i < messages.Count; ++i)
{
SOS sos = messages[i];
if ((from.Map == Map.Felucca || from.Map == Map.Trammel) && from.InRange(sos.TargetLocation, 60))
{
return true;
}
}
}
return base.CheckResources(from, tool, def, map, loc, timed);
}
public override Item Construct(Type type, Mobile from)

View file

@ -17,11 +17,16 @@ namespace Server.Commands
{
var eable = Map.Felucca.GetItemsInRange(new Point3D(x, y, z), 0);
var found = eable.Any(
item => item is MorphItem morphItem && morphItem.Z == z &&
morphItem.InactiveItemID == inactiveItemID &&
morphItem.ActiveItemID == activeItemID
);
var found = false;
foreach (var item in eable)
{
if (item is MorphItem morphItem && morphItem.Z == z && morphItem.InactiveItemID == inactiveItemID && morphItem.ActiveItemID == activeItemID)
{
found = true;
break;
}
}
eable.Free();
return found;
}
@ -30,7 +35,16 @@ namespace Server.Commands
{
var eable = Map.Felucca.GetItemsInRange(new Point3D(x, y, z), 0);
var found = eable.Any(item => item is EffectController && item.Z == z);
var found = false;
foreach (var item in eable)
{
if (item is EffectController && item.Z == z)
{
found = true;
break;
}
}
eable.Free();
return found;
}

View file

@ -196,7 +196,14 @@ namespace Server.Items
public void Refresh()
{
Visible = GetMobilesInRange(CurrentRange).Any(mob => !mob.Hidden || mob.AccessLevel <= AccessLevel.Player);
foreach (var mob in GetMobilesInRange(CurrentRange))
{
if (!mob.Hidden || mob.AccessLevel <= AccessLevel.Player)
{
Visible = true;
break;
}
}
}
public override void Serialize(IGenericWriter writer)

View file

@ -75,7 +75,15 @@ namespace Server.Engines.Quests.Naturalist
public bool Contains(IPoint2D p)
{
return m_Rects.Any(rect => rect.Contains(p));
foreach (var rect in m_Rects)
{
if (rect.Contains(p))
{
return true;
}
}
return false;
}
}
}

View file

@ -197,7 +197,15 @@ namespace Server.Items
var north = BaseAddon.IsWall(p3d.X, p3d.Y - 1, p3d.Z, map);
var west = BaseAddon.IsWall(p3d.X - 1, p3d.Y, p3d.Z, map);
var isclear = !Map.Malas.GetItemsInRange(p3d, 0).OfType<Fireflies>().Any();
bool isclear = true;
foreach (Item item in Map.Malas.GetItemsInRange(p3d, 0))
{
if (item is Fireflies)
{
isclear = false;
}
}
if ((m_ItemID == 0x2336 && north || m_ItemID == 0x2332 && west) && isclear)
{

View file

@ -116,10 +116,19 @@ namespace Server.Items
private static bool FindMarkContainer(Point3D p, Map map)
{
var eable = map.GetItemsInRange<MarkContainer>(p, 0);
var found = eable.Any(item => item.Z == p.Z);
eable.Free();
return found;
foreach (var item in eable)
{
if (item.Z == p.Z)
{
eable.Free();
return true;
break;
}
}
eable.Free();
return false;
}
private static void CreateMalasPassage(

View file

@ -321,7 +321,20 @@ namespace Server.Items
public static bool HasDiggingTool(Mobile m)
{
return m.Backpack?.FindItemsByType<BaseHarvestTool>().Any(tool => tool.HarvestSystem == Mining.System) == true;
if (m.Backpack == null)
{
return false;
}
foreach (var tool in m.Backpack.FindItemsByType<BaseHarvestTool>())
{
if (tool.HarvestSystem == Mining.System)
{
return true;
}
}
return false;
}
public void OnBeginDig(Mobile from)

View file

@ -80,7 +80,19 @@ namespace Server.Items
public void Refresh()
{
var found = GetMobilesInRange(CurrentRange).Any(mob => !mob.Hidden || mob.AccessLevel <= AccessLevel.Player);
var found = false;
var eable = GetMobilesInRange(CurrentRange);
foreach (var mob in eable)
{
if (!mob.Hidden || mob.AccessLevel <= AccessLevel.Player)
{
found = true;
break;
}
}
eable.Free();
ItemID = found ? ActiveItemID : InactiveItemID;
Visible = ItemID != 0x1;

View file

@ -44,7 +44,15 @@ namespace Server.Regions
private bool ContainsDeed(Container cont)
{
return cont.FindItemsByType<HouseRaffleDeed>().Any(deed => deed == m_Stone.Deed);
foreach (var deed in cont.FindItemsByType<HouseRaffleDeed>())
{
if (deed == m_Stone.Deed)
{
return true;
}
}
return false;
}
public override bool OnTarget(Mobile m, Target t, object o)

View file

@ -84,22 +84,24 @@ namespace Server.Items
return;
}
var foundPlayer = GetMobilesInRange(3)
.Where(mob => mob.Player && mob.Alive && mob.AccessLevel <= AccessLevel.Player)
.Any(mob => Z + 8 >= mob.Z && mob.Z + 16 > Z);
if (!foundPlayer)
foreach (var mob in GetMobilesInRange(3))
{
m_Spurt?.Delete();
m_Spurt = null;
}
else if (m_Spurt?.Deleted != false)
{
m_Spurt = new Static(0x3709);
m_Spurt.MoveToWorld(Location, Map);
if (mob.Player && mob.Alive && mob.AccessLevel <= AccessLevel.Player && Z + 8 >= mob.Z && mob.Z + 16 > Z)
{
if (m_Spurt?.Deleted != false)
{
m_Spurt = new Static(0x3709);
m_Spurt.MoveToWorld(Location, Map);
Effects.PlaySound(GetWorldLocation(), Map, 0x309);
Effects.PlaySound(GetWorldLocation(), Map, 0x309);
}
return;
}
}
m_Spurt?.Delete();
m_Spurt = null;
}
public override bool OnMoveOver(Mobile m)

View file

@ -81,10 +81,18 @@ namespace Server.Mobiles
lastKiller = creature.GetMaster();
}
if (IsInsideKhaldun(m) && IsInsideKhaldun(lastKiller) && lastKiller.Player && !m_Set.Contains(lastKiller) &&
m.Aggressors.Any(ai => ai.Attacker == lastKiller && ai.CanReportMurder))
if (!IsInsideKhaldun(m) || !IsInsideKhaldun(lastKiller) || !lastKiller.Player || m_Set.Contains(lastKiller))
{
SummonRevenant(m, lastKiller);
return;
}
foreach (var ai in m.Aggressors)
{
if (ai.Attacker == lastKiller && ai.CanReportMurder)
{
SummonRevenant(m, lastKiller);
return;
}
}
}

View file

@ -120,7 +120,10 @@ namespace Server.Mobiles
{
p = GetSpawnPosition(2);
if (!Map.GetItemsInRange(p, 0).OfType<StainedOoze>().Any())
var eable = Map.GetItemsInRange<StainedOoze>(p, 0);
bool atLocation = eable.GetEnumerator().MoveNext();
eable.Free();
if (!atLocation)
{
break;
}

View file

@ -252,7 +252,10 @@ namespace Server.Mobiles
{
p = GetSpawnPosition(2);
if (!Map.GetItemsInRange(p, 0).OfType<StainedOoze>().Any())
var eable = Map.GetItemsInRange<StainedOoze>(p, 0);
bool atLocation = eable.GetEnumerator().MoveNext();
eable.Free();
if (!atLocation)
{
break;
}

View file

@ -709,11 +709,21 @@ namespace Server.Multis
public override bool InRange(IPoint2D from, int range)
{
return Region?.Area.Any(
rect =>
from.X >= rect.Start.X - range && from.Y >= rect.Start.Y - range && from.X < rect.End.X + range &&
from.Y < rect.End.Y + range
) == true;
if (Region == null)
{
return false;
}
foreach (var rect in Region.Area)
{
if (from.X >= rect.Start.X - range && from.Y >= rect.Start.Y - range && from.X < rect.End.X + range && from.Y < rect.End.Y + range)
{
return true;
}
}
return false;
}
public virtual int GetNewVendorSystemMaxVendors()
@ -766,8 +776,18 @@ namespace Server.Multis
public List<Mobile> AvailableVendorsFor(Mobile m) =>
PlayerVendors.Where(vendor => vendor.CanInteractWith(m, false)).ToList<Mobile>();
public bool AreThereAvailableVendorsFor(Mobile m) =>
PlayerVendors.Any(vendor => vendor.CanInteractWith(m, false));
public bool AreThereAvailableVendorsFor(Mobile m)
{
foreach (var vendor in PlayerVendors)
{
if (vendor.CanInteractWith(m, false))
{
return true;
}
}
return false;
}
public void MoveAllToCrate()
{
@ -3446,8 +3466,23 @@ namespace Server.Multis
AllHouses.Remove(this);
}
public static bool HasHouse(Mobile m) =>
m != null && m_Table.TryGetValue(m, out var list) && list.Any(h => !h.Deleted);
public static bool HasHouse(Mobile m)
{
if (m == null || !m_Table.TryGetValue(m, out var list))
{
return false;
}
foreach (var h in list)
{
if (!h.Deleted)
{
return true;
}
}
return false;
}
public static bool HasAccountHouse(Mobile m)
{

View file

@ -137,8 +137,28 @@ namespace Server.Multis
Fixtures.Add(item);
}
public override bool IsInside(Point3D p, int height) =>
base.IsInside(p, height) || Fixtures?.OfType<HouseTeleporter>().Any(fix => fix.Location == p) == true;
public override bool IsInside(Point3D p, int height)
{
if (base.IsInside(p, height))
{
return true;
}
if (Fixtures == null)
{
return false;
}
foreach (Item fixture in Fixtures)
{
if (fixture is HouseTeleporter fix && fix.Location == p)
{
return true;
}
}
return false;
}
public virtual void AutoAddFixtures()
{

View file

@ -209,11 +209,23 @@ namespace Server.Regions
public override bool OnDecay(Item item) =>
(!House.HasLockedDownItem(item) && !House.HasSecureItem(item) || !House.IsInside(item)) && base.OnDecay(item);
public override TimeSpan GetLogoutDelay(Mobile m) =>
House.IsFriend(m) && House.IsInside(m)
? m.Aggressed.Any(info => info.Defender.Player && Core.Now - info.LastCombatTime < CombatHeatDelay) ?
base.GetLogoutDelay(m) : TimeSpan.Zero
: base.GetLogoutDelay(m);
public override TimeSpan GetLogoutDelay(Mobile m)
{
if (!House.IsFriend(m) || !House.IsInside(m))
{
return base.GetLogoutDelay(m);
}
foreach (var info in m.Aggressed)
{
if (info.Defender.Player && Core.Now - info.LastCombatTime < CombatHeatDelay)
{
return base.GetLogoutDelay(m);
}
}
return TimeSpan.Zero;
}
public override void OnSpeech(SpeechEventArgs e)
{

View file

@ -63,10 +63,17 @@ namespace Server.SkillHandlers
{
if (!CombatOverride)
{
if (m.GetMobilesInRange(range).Any(check => check.InLOS(m) && check.Combatant == m))
var eable = m.GetMobilesInRange(range);
foreach (var check in eable)
{
badCombat = true;
if (check.InLOS(m) && check.Combatant == m)
{
badCombat = true;
break;
}
}
eable.Free();
}
ok = !badCombat && m.CheckSkill(SkillName.Hiding, 0.0 - bonus, 100.0 - bonus);