/// <summary> /// Teleports into an instance /// </summary> /// <param name="chr"></param> /// <param name="trigger"></param> /// <returns></returns> public static bool HandleTeleport(Character chr, AreaTrigger trigger) { var mapInfo = World.GetMapTemplate(trigger.Template.TargetMap); #if DEBUG chr.SendSystemMessage("Target location: {0}", trigger.Template.TargetMap); #endif if (mapInfo.IsInstance) { if (mapInfo.Type == MapType.Normal) { InstanceMgr.LeaveInstance(chr, mapInfo, trigger.Template.TargetPos); return(true); } else { return(InstanceMgr.EnterInstance(chr, mapInfo, trigger.Template.TargetPos)); } } else if (mapInfo.BattlegroundTemplate == null) { var rgn = World.GetNonInstancedMap(mapInfo.Id); if (rgn != null) { chr.TeleportTo(rgn, trigger.Template.TargetPos, trigger.Template.TargetOrientation); return(true); } else { ContentMgr.OnInvalidDBData("Invalid Map: " + rgn); } } return(true); }
/// <summary>Teleports into an instance</summary> /// <param name="chr"></param> /// <param name="trigger"></param> /// <returns></returns> public static bool HandleTeleport(Character chr, AreaTrigger trigger) { MapTemplate mapTemplate = World.GetMapTemplate(trigger.Template.TargetMap); if (mapTemplate.IsInstance) { if (mapTemplate.Type != MapType.Normal) { return(InstanceMgr.EnterInstance(chr, mapTemplate, trigger.Template.TargetPos)); } InstanceMgr.LeaveInstance(chr, mapTemplate, trigger.Template.TargetPos); return(true); } if (mapTemplate.BattlegroundTemplate == null) { Map nonInstancedMap = World.GetNonInstancedMap(mapTemplate.Id); if (nonInstancedMap != null) { chr.TeleportTo(nonInstancedMap, trigger.Template.TargetPos, new float?(trigger.Template.TargetOrientation)); return(true); } ContentMgr.OnInvalidDBData("Invalid Map: " + (object)nonInstancedMap); } else { chr.AddMessage((Action)(() => chr.TeleportTo(trigger.Template.TargetMap, trigger.Template.TargetPos))); } return(true); }