This commit is contained in:
parent
34d969712e
commit
d444b9ba5c
70 changed files with 569 additions and 495 deletions
|
|
@ -97,7 +97,7 @@ namespace Server.Multis
|
|||
int tileX = start.X + x;
|
||||
int tileY = start.Y + y;
|
||||
|
||||
Tile[] addTiles = mcl.Tiles[x][y];
|
||||
StaticTile[] addTiles = mcl.Tiles[x][y];
|
||||
|
||||
if ( addTiles.Length == 0 )
|
||||
continue; // There are no tiles here, continue checking somewhere else
|
||||
|
|
@ -117,10 +117,10 @@ namespace Server.Multis
|
|||
return HousePlacementResult.BadRegion;
|
||||
}
|
||||
|
||||
Tile landTile = map.Tiles.GetLandTile( tileX, tileY );
|
||||
int landID = landTile.ID & 0x3FFF;
|
||||
LandTile landTile = map.Tiles.GetLandTile( tileX, tileY );
|
||||
int landID = landTile.ID & TileData.MaxLandValue;
|
||||
|
||||
Tile[] oldTiles = map.Tiles.GetStaticTiles( tileX, tileY, true );
|
||||
StaticTile[] oldTiles = map.Tiles.GetStaticTiles( tileX, tileY, true );
|
||||
|
||||
Sector sector = map.GetSector( tileX, tileY );
|
||||
|
||||
|
|
@ -152,12 +152,12 @@ namespace Server.Multis
|
|||
|
||||
for ( int i = 0; i < addTiles.Length; ++i )
|
||||
{
|
||||
Tile addTile = addTiles[i];
|
||||
StaticTile addTile = addTiles[i];
|
||||
|
||||
if ( addTile.ID == 0x4001 ) // Nodraw
|
||||
if ( addTile.ID == 0x1 ) // Nodraw
|
||||
continue;
|
||||
|
||||
TileFlag addTileFlags = TileData.ItemTable[addTile.ID & 0x3FFF].Flags;
|
||||
TileFlag addTileFlags = TileData.ItemTable[addTile.ID & TileData.MaxItemValue].Flags;
|
||||
|
||||
bool isFoundation = ( addTile.Z == 0 && (addTileFlags & TileFlag.Wall) != 0 );
|
||||
bool hasSurface = false;
|
||||
|
|
@ -174,13 +174,13 @@ namespace Server.Multis
|
|||
if ( addTileTop > landStartZ && landAvgZ > addTileZ )
|
||||
return HousePlacementResult.BadLand; // Broke rule #2
|
||||
|
||||
if ( isFoundation && ((TileData.LandTable[landTile.ID & 0x3FFF].Flags & TileFlag.Impassable) == 0) && landAvgZ == center.Z )
|
||||
if ( isFoundation && ((TileData.LandTable[landTile.ID & TileData.MaxLandValue].Flags & TileFlag.Impassable) == 0) && landAvgZ == center.Z )
|
||||
hasSurface = true;
|
||||
|
||||
for ( int j = 0; j < oldTiles.Length; ++j )
|
||||
{
|
||||
Tile oldTile = oldTiles[j];
|
||||
ItemData id = TileData.ItemTable[oldTile.ID & 0x3FFF];
|
||||
StaticTile oldTile = oldTiles[j];
|
||||
ItemData id = TileData.ItemTable[oldTile.ID & TileData.MaxItemValue];
|
||||
|
||||
if ( (id.Impassable || (id.Surface && (id.Flags & TileFlag.Background) == 0)) && addTileTop > oldTile.Z && (oldTile.Z + id.CalcHeight) > addTileZ )
|
||||
return HousePlacementResult.BadStatic; // Broke rule #2
|
||||
|
|
@ -251,14 +251,14 @@ namespace Server.Multis
|
|||
|
||||
if ( vx >= 0 && vx < mcl.Width && vy >= 0 && vy < mcl.Height )
|
||||
{
|
||||
Tile[] breakTiles = mcl.Tiles[vx][vy];
|
||||
StaticTile[] breakTiles = mcl.Tiles[vx][vy];
|
||||
bool shouldBreak = false;
|
||||
|
||||
for ( int i = 0; !shouldBreak && i < breakTiles.Length; ++i )
|
||||
{
|
||||
Tile breakTile = breakTiles[i];
|
||||
StaticTile breakTile = breakTiles[i];
|
||||
|
||||
if ( breakTile.Height == 0 && breakTile.Z <= 8 && TileData.ItemTable[breakTile.ID & 0x3FFF].Surface )
|
||||
if ( breakTile.Height == 0 && breakTile.Z <= 8 && TileData.ItemTable[breakTile.ID & TileData.MaxItemValue].Surface )
|
||||
shouldBreak = true;
|
||||
}
|
||||
|
||||
|
|
@ -280,8 +280,8 @@ namespace Server.Multis
|
|||
{
|
||||
Point2D borderPoint = borders[i];
|
||||
|
||||
Tile landTile = map.Tiles.GetLandTile( borderPoint.X, borderPoint.Y );
|
||||
int landID = landTile.ID & 0x3FFF;
|
||||
LandTile landTile = map.Tiles.GetLandTile( borderPoint.X, borderPoint.Y );
|
||||
int landID = landTile.ID & TileData.MaxLandValue;
|
||||
|
||||
if ( (TileData.LandTable[landID].Flags & TileFlag.Impassable) != 0 )
|
||||
return HousePlacementResult.BadLand;
|
||||
|
|
@ -292,12 +292,12 @@ namespace Server.Multis
|
|||
return HousePlacementResult.BadLand; // Broke rule #5
|
||||
}
|
||||
|
||||
Tile[] tiles = map.Tiles.GetStaticTiles( borderPoint.X, borderPoint.Y, true );
|
||||
StaticTile[] tiles = map.Tiles.GetStaticTiles( borderPoint.X, borderPoint.Y, true );
|
||||
|
||||
for ( int j = 0; j < tiles.Length; ++j )
|
||||
{
|
||||
Tile tile = tiles[j];
|
||||
ItemData id = TileData.ItemTable[tile.ID & 0x3FFF];
|
||||
StaticTile tile = tiles[j];
|
||||
ItemData id = TileData.ItemTable[tile.ID & TileData.MaxItemValue];
|
||||
|
||||
if ( id.Impassable || (id.Surface && (id.Flags & TileFlag.Background) == 0 && (tile.Z + id.CalcHeight) > (center.Z + 2)) )
|
||||
return HousePlacementResult.BadStatic; // Broke rule #1
|
||||
|
|
@ -353,11 +353,11 @@ namespace Server.Multis
|
|||
|
||||
IPooledEnumerable eable = map.GetMultiTilesAt( yardPoint.X, yardPoint.Y );
|
||||
|
||||
foreach ( Tile[] tile in eable )
|
||||
foreach ( StaticTile[] tile in eable )
|
||||
{
|
||||
for ( int j = 0; j < tile.Length; ++j )
|
||||
{
|
||||
if ( (TileData.ItemTable[tile[j].ID & 0x3FFF].Flags & (TileFlag.Impassable | TileFlag.Surface)) != 0 )
|
||||
if ( (TileData.ItemTable[tile[j].ID & TileData.MaxItemValue].Flags & (TileFlag.Impassable | TileFlag.Surface)) != 0 )
|
||||
{
|
||||
eable.Free();
|
||||
return HousePlacementResult.BadStatic; // Broke rule #3
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue