Overwrite

Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
Unstable Kitsune
2023-11-28 23:20:26 -05:00
parent 3cd54811de
commit b918192e4e
11608 changed files with 2644205 additions and 47 deletions

View File

@@ -0,0 +1,207 @@
/**************************************
*Script Name: Staff Runebook *
*Author: Joeku *
*For use with RunUO 2.0 RC2 *
*Client Tested with: 6.0.9.2 *
*Version: 1.10 *
*Initial Release: 11/25/07 *
*Revision Date: 02/04/09 *
**************************************/
using System;
using Server;
using Server.Accounting;
using Server.Gumps;
namespace Joeku.SR
{
public class SR_Utilities
{
public static bool FindItem(Type type, Point3D p, Map map)
{
return FindEntity(type, p, map, false);
}
public static bool FindMobile(Type type, Point3D p, Map map)
{
return FindEntity(type, p, map, true);
}
public static bool FindEntity(Type type, Point3D p, Map map, bool mob)
{
IPooledEnumerable loc;
Rectangle2D rect = new Rectangle2D(p.X, p.Y, 1, 1);
if (mob)
loc = map.GetMobilesInBounds(rect);
else
loc = map.GetItemsInBounds(rect);
bool found = false;
try
{
foreach (object o in loc)
if (o != null && o.GetType() == type || o.GetType().IsSubclassOf(type))
{
found = true;
break;
}
}
catch
{
}
loc.Free();
return found;
}
public static SR_RuneAccount FetchInfo(IAccount acc)
{
return FetchInfo(acc as Account);
}
public static SR_RuneAccount FetchInfo(Account acc)
{
return FetchInfo(acc.Username);
}
public static SR_RuneAccount FetchInfo(string username)
{
SR_RuneAccount runeAcc = null;
for (int i = 0; i < SR_Main.Count; i++)
if (SR_Main.Info[i].Username == username)
{
runeAcc = SR_Main.Info[i];
break;
}
if (runeAcc == null)
{
runeAcc = new SR_RuneAccount(username);
NewRuneAcc(runeAcc);
}
return runeAcc;
}
public static int RunebookID = 8901;
public static int RuneID = 7956;
public static int ItemOffsetY(SR_Rune rune)
{
if (rune.IsRunebook)
return -1;
return 3;
}
public static int ItemOffsetX(SR_Rune rune)
{
if (rune.IsRunebook)
return -1;
return -2;
}
public static int ItemHue(SR_Rune rune)
{
int hue = 0;
if (rune.IsRunebook)
hue = 1121;
else
hue = RuneHues[MapInt(rune.TargetMap) /*+ (rune.House != null) ? 5 : 0*/];
return hue;
}
private static readonly int[] RuneHues = new int[] { 0, 50, 1102, 1102, 1154, 0x66D, 0x47F, 0x55F, 0x55F, 0x47F };
// To do: check for valid Z (?)
public static bool CheckValid(Point3D loc, Map map)
{
Point2D dim = MapDimensions[MapInt(map)];
if (loc.X < 0 || loc.Y < 0 || loc.X > dim.X || loc.Y > dim.Y)
return false;
return true;
}
private static readonly Point2D[] MapDimensions = new Point2D[]
{
new Point2D(7168, 4096), // Felucca
new Point2D(7168, 4096), // Trammel
new Point2D(2304, 1600), // Ilshenar
new Point2D(2560, 2048), // Malas
new Point2D(1448, 1448), // Tokuno
#region SA
new Point2D(1280, 4096)// TerMur
#endregion
};
public static int MapInt(Map map)
{
int i = 0;
if (map == Map.Felucca)
i = 0;
else if (map == Map.Trammel)
i = 1;
else if (map == Map.Ilshenar)
i = 2;
else if (map == Map.Malas)
i = 3;
else if (map == Map.Tokuno)
i = 4;
#region SA
else if (map == Map.TerMur)
i = 5;
#endregion
return i;
}
public static void NewRuneAcc(SR_RuneAccount acc)
{
acc.Clear();
acc.AddRune(AddTree(GoGump.Felucca, Map.Felucca));
acc.AddRune(AddTree(GoGump.Trammel, Map.Trammel));
acc.AddRune(AddTree(GoGump.Ilshenar, Map.Ilshenar));
acc.AddRune(AddTree(GoGump.Malas, Map.Malas));
acc.AddRune(AddTree(GoGump.Tokuno, Map.Tokuno));
#region SA
acc.AddRune(AddTree(GoGump.TerMur, Map.TerMur));
#endregion
}
private static SR_Rune AddTree(LocationTree tree, Map map)
{
SR_Rune runeBook = new SR_Rune(map.ToString(), true);
for (int i = 0; i < tree.Root.Children.Length; i++)
runeBook.AddRune(AddNode(tree.Root.Children[i], map));
return runeBook;
}
private static SR_Rune AddNode(object o, Map map)
{
if (o is ParentNode)
{
ParentNode parentNode = o as ParentNode;
SR_Rune runeBook = new SR_Rune(parentNode.Name, true);
for (int i = 0; i < parentNode.Children.Length; i++)
runeBook.AddRune(AddNode(parentNode.Children[i], map));
return runeBook;
}
ChildNode childNode = o as ChildNode;
return new SR_Rune(childNode.Name, map, childNode.Location);
}
}
}