public void FinalizeDataHolder() { AreaTrigger areaTrigger = AreaTriggerMgr.AreaTriggers.Get <AreaTrigger>(this.Id); if (areaTrigger == null) { ContentMgr.OnInvalidDBData("AreaTriggerEntry {0} (#{1}, Type: {2}) had invalid AreaTrigger-id.", (object)this.Name, (object)this.Id, (object)this.Type); } else { areaTrigger.Template = this; if (this.TargetPos.IsSet) { MapTemplate mapTemplate = WCell.RealmServer.Global.World.GetMapTemplate(this.TargetMap); if (mapTemplate != null) { this.Type = AreaTriggerType.Teleport; int num = (int)ArrayUtil.AddOnlyOne <Vector3>(ref mapTemplate.EntrancePositions, this.TargetPos); } } this.Handler = AreaTriggerMgr.GetHandler(this.Type); } }
/// <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 regionInfo = World.GetRegionTemplate(trigger.Template.TargetMap); #if DEBUG chr.SendSystemMessage("Target location: {0}", trigger.Template.TargetMap); #endif if (regionInfo.IsInstance) { if (regionInfo.Type == MapType.Normal) { InstanceMgr.LeaveInstance(chr, regionInfo, trigger.Template.TargetPos); return true; } else { return InstanceMgr.EnterInstance(chr, regionInfo, trigger.Template.TargetPos); } } else if (regionInfo.BGTemplate == null) { var rgn = World.GetRegion(regionInfo.Id); if (rgn != null) { chr.TeleportTo(rgn, trigger.Template.TargetPos, trigger.Template.TargetOrientation); return true; } else { ContentMgr.OnInvalidDBData("Invalid Region: " + 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); }
/// <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); }
internal void NotifyTriggered(AreaTrigger at, Character chr) { AreaTrigger.ATUseHandler triggered = this.Triggered; if (triggered == null) { return; } triggered(at, chr); }
internal void NotifyTriggered(AreaTrigger at, Character chr) { var evt = Triggered; if (evt != null) { evt(at, chr); } }
/// <summary>Triggers Quest</summary> /// <param name="chr"></param> /// <param name="trigger"></param> /// <returns></returns> public static bool HandleQuestTrigger(Character chr, AreaTrigger trigger) { Quest activeQuest = chr.QuestLog.GetActiveQuest(trigger.Template.TriggerQuestId); if (activeQuest == null) { return(false); } activeQuest.SignalATVisited(trigger.Id); return(true); }
/// <summary> /// Triggers Quest /// </summary> /// <param name="chr"></param> /// <param name="trigger"></param> /// <returns></returns> public static bool HandleQuestTrigger(Character chr, AreaTrigger trigger) { var quest = chr.QuestLog.GetActiveQuest(trigger.Template.TriggerQuestId); if (quest != null) { // progress Quest quest.SignalATVisited(trigger.Id); return(true); } return(false); }
/// <summary> /// Do nothing /// </summary> /// <param name="arg1"></param> /// <param name="arg2"></param> /// <returns></returns> public static bool NoAction(Character arg1, AreaTrigger arg2) { return false; }
/// <summary> /// Cast a spell on the Character. /// [NYI] /// </summary> /// <param name="chr"></param> /// <param name="trigger"></param> /// <returns></returns> public static bool HandleSpell(Character chr, AreaTrigger trigger) { return false; }
/// <summary> /// Start resting /// </summary> /// <param name="chr"></param> /// <param name="trigger"></param> /// <returns></returns> public static bool HandleRest(Character chr, AreaTrigger trigger) { chr.RestTrigger = trigger; return true; }
/// <summary> /// Triggers Quest /// </summary> /// <param name="chr"></param> /// <param name="trigger"></param> /// <returns></returns> public static bool HandleQuestTrigger(Character chr, AreaTrigger trigger) { var quest = chr.QuestLog.GetActiveQuest(trigger.Template.TriggerQuestId); if (quest != null) { // progress Quest quest.SignalATVisited(trigger.Id); return true; } return false; }
static void OnObservanceHallTriggered(AreaTrigger at, Character chr) { var instance = chr.Map as UtgardePinnacle; if (instance != null && !instance.m_EncounterStarted) { instance.StartEncounter(); } }
/// <summary> /// Somebody stepped on the Alliance capture areatrigger /// </summary> /// <param name="at"></param> /// <param name="chr"></param> private static void AllianceCaptureTriggered(AreaTrigger at, Character chr) { // Check whether the battle has started and the Character is actively participating var team = chr.Battlegrounds.Team; var wsg = chr.Region as WarsongGulch; if (team != null && wsg != null && wsg.IsActive) { if (team.Side == BattlegroundSide.Alliance) { if (wsg.WarsongClan.FlagCarrier == chr && wsg.Silverwing.IsFlagHome) { wsg.WarsongClan.CaptureFlag(chr); } } } }
/// <summary> /// Do nothing /// </summary> /// <param name="arg1"></param> /// <param name="arg2"></param> /// <returns></returns> public static bool NoAction(Character arg1, AreaTrigger arg2) { return(false); }
/// <summary> /// Cast a spell on the Character. /// [NYI] /// </summary> /// <param name="chr"></param> /// <param name="trigger"></param> /// <returns></returns> public static bool HandleSpell(Character chr, AreaTrigger trigger) { return(false); }
/// <summary> /// Start resting /// </summary> /// <param name="chr"></param> /// <param name="trigger"></param> /// <returns></returns> public static bool HandleRest(Character chr, AreaTrigger trigger) { chr.RestTrigger = trigger; return(true); }