#W# Initial Commit: Avatars Conquest

This commit is contained in:
WarrentyExpired 2026-07-03 20:19:48 -04:00
commit 8eae46895e
7512 changed files with 416187 additions and 0 deletions

View file

@ -0,0 +1,166 @@
using System;
using System.IO;
using Server;
namespace Server.Misc
{
public class Strandedness
{
private static Point2D[] m_Britannia = new Point2D[]
{
new Point2D( 582, 874 ),
new Point2D( 606, 924 ),
new Point2D( 723, 1026 ),
new Point2D( 683, 1125 ),
new Point2D( 731, 1210 ),
new Point2D( 873, 1191 ),
new Point2D( 952, 1221 ),
new Point2D( 974, 1268 ),
new Point2D( 970, 1319 ),
new Point2D( 880, 1276 ),
new Point2D( 758, 1360 ),
new Point2D( 637, 1495 ),
new Point2D( 690, 1596 ),
new Point2D( 769, 1685 ),
new Point2D( 905, 1765 ),
new Point2D( 922, 1875 ),
new Point2D( 934, 2060 ),
new Point2D( 989, 2165 ),
new Point2D( 1025, 2310 ),
new Point2D( 1073, 2487 ),
new Point2D( 1189, 2536 ),
new Point2D( 1357, 2588 ),
new Point2D( 1452, 2668 ),
new Point2D( 1578, 2717 ),
new Point2D( 1696, 2834 ),
new Point2D( 1692, 2989 ),
new Point2D( 1830, 3088 ),
new Point2D( 1997, 3190 ),
new Point2D( 1966, 3042 ),
new Point2D( 1978, 2933 ),
new Point2D( 2060, 3060 ),
new Point2D( 2147, 2980 ),
new Point2D( 2199, 2824 ),
new Point2D( 2086, 2466 ),
new Point2D( 2088, 2274 ),
new Point2D( 1861, 2033 ),
new Point2D( 1777, 1946 ),
new Point2D( 1682, 1816 ),
new Point2D( 2418, 1566 ),
new Point2D( 2536, 1579 ),
new Point2D( 2671, 1578 ),
new Point2D( 2844, 1511 ),
new Point2D( 3052, 1430 ),
new Point2D( 3134, 1346 ),
new Point2D( 3269, 1311 ),
new Point2D( 3549, 1118 ),
new Point2D( 3607, 1217 ),
new Point2D( 3736, 1198 ),
new Point2D( 3874, 1148 ),
new Point2D( 3957, 964 ),
new Point2D( 4091, 886 ),
new Point2D( 4037, 771 ),
new Point2D( 3823, 736 ),
new Point2D( 3620, 725 ),
new Point2D( 3481, 609 ),
new Point2D( 3364, 561 ),
new Point2D( 3192, 562 ),
new Point2D( 3071, 580 ),
new Point2D( 2515, 629 ),
new Point2D( 2370, 533 ),
new Point2D( 2029, 592 ),
new Point2D( 1874, 565 ),
new Point2D( 1673, 640 ),
new Point2D( 1534, 676 ),
new Point2D( 1473, 551 ),
new Point2D( 1389, 498 ),
new Point2D( 1301, 438 ),
new Point2D( 1225, 577 ),
new Point2D( 1153, 677 ),
new Point2D( 1026, 783 ),
new Point2D( 1008, 887 ),
new Point2D( 805, 923 )
};
public static void Initialize()
{
EventSink.Login += new LoginEventHandler( EventSink_Login );
}
private static bool IsStranded( Mobile from )
{
Map map = from.Map;
if ( map != Map.Britannia )
return false;
object surface = map.GetTopSurface( from.Location );
if ( surface is LandTile ) {
int id = ((LandTile)surface).ID;
return (id >= 168 && id <= 171)
|| (id >= 310 && id <= 311);
} else if ( surface is StaticTile ) {
int id = ((StaticTile)surface).ID;
return (id >= 0x1796 && id <= 0x17B2);
}
return false;
}
public static void EventSink_Login( LoginEventArgs e )
{
Mobile from = e.Mobile;
if ( !IsStranded( from ) )
return;
Map map = from.Map;
Point2D[] list = m_Britannia;
Point2D p = Point2D.Zero;
double pdist = double.MaxValue;
for ( int i = 0; i < list.Length; ++i )
{
double dist = from.GetDistanceToSqrt( list[i] );
if ( dist < pdist )
{
p = list[i];
pdist = dist;
}
}
int x = p.X, y = p.Y;
int z;
bool canFit = false;
z = map.GetAverageZ( x, y );
canFit = map.CanSpawnMobile( x, y, z );
for ( int i = 1; !canFit && i <= 40; i += 2 )
{
for ( int xo = -1; !canFit && xo <= 1; ++xo )
{
for ( int yo = -1; !canFit && yo <= 1; ++yo )
{
if ( xo == 0 && yo == 0 )
continue;
x = p.X + (xo * i);
y = p.Y + (yo * i);
z = map.GetAverageZ( x, y );
canFit = map.CanSpawnMobile( x, y, z );
}
}
}
if ( canFit )
from.Location = new Point3D( x, y, z );
}
}
}