protected override bool OnMove(Direction d) { RoofEncounter encounter = ShadowguardController.GetEncounter(this.Location, this.Map) as RoofEncounter; if (encounter != null) { Point3D spawn = encounter.SpawnPoints[0]; int x = this.X; int y = this.Y; Movement.Movement.Offset(d, ref x, ref y); Point3D p = new Point3D(x, y, this.Map.GetAverageZ(x, y)); int z = p.Z; if (p.Y < spawn.Y - 5 || p.Y > spawn.Y + 4 || p.X > spawn.X + 4 || p.X < spawn.X - 5) { return(false); } IPooledEnumerable eable = this.Map.GetItemsInRange(p, 0); Item i = null; foreach (Item item in eable) { if (item.Z + item.ItemData.CalcHeight > z) { i = item; z = item.Z + item.ItemData.CalcHeight; } } StaticTile[] staticTiles = this.Map.Tiles.GetStaticTiles(x, y, true); foreach (StaticTile tile in staticTiles) { ItemData itemData = TileData.ItemTable[tile.ID & TileData.MaxItemValue]; if (tile.Z + itemData.CalcHeight > z) { z = tile.Z + itemData.CalcHeight; } } eable.Free(); if (z < this.Z) { return(false); } } return(base.OnMove(d)); }
public override void Damage(int amount, Mobile from, bool informMount, bool checkfizzle) { RoofEncounter encounter = ShadowguardController.GetEncounter(this.Location, this.Map) as RoofEncounter; if (encounter != null && from != null) { from.SendLocalizedMessage(1156254); // Minax laughs as she deflects your puny attacks! Defeat her minions to close the Time Gate! return; } base.Damage(amount, from, informMount, checkfizzle); }
public override void OnThink() { base.OnThink(); RoofEncounter encounter = ShadowguardController.GetEncounter(this.Location, this.Map) as RoofEncounter; if (encounter != null) { Point3D spawn = encounter.SpawnPoints[0]; Point3D p = this.Location; encounter.ConvertOffset(ref spawn); if (this.Z < 30 || p.Y < spawn.Y - 5 || p.Y > spawn.Y + 4 || p.X > spawn.X + 4 || p.X < spawn.X - 5) { this.MoveToWorld(spawn, Map.TerMur); } } }