fix(linq): Removes linq and fixes fishing error (#674)
This commit is contained in:
parent
b112be4e1f
commit
410b18ceca
19 changed files with 253 additions and 62 deletions
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue