Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
207
Scripts/Scripts-master/Commands/StaffRunebook/Utilities.cs
Normal file
207
Scripts/Scripts-master/Commands/StaffRunebook/Utilities.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user