public override void OnStart() { QuestBehaviorBase.UsageCheck_ScheduledForDeprecation(this, "EscortGroup"); // This reports problems, and stops BT processing if there was a problem with attributes... // We had to defer this action, as the 'profile line number' is not available during the element's // constructor call. OnStart_HandleAttributeProblem(); // If the quest is complete, this behavior is already done... // So we don't want to falsely inform the user of things that will be skipped. if (!IsDone) { _configMemento = new ConfigMemento(); // Disable any settings that may interfere with the escort -- // When we escort, we don't want to be distracted by other things. // NOTE: these settings are restored to their normal values when the behavior completes // or the bot is stopped. CharacterSettings.Instance.HarvestHerbs = false; CharacterSettings.Instance.HarvestMinerals = false; CharacterSettings.Instance.LootChests = false; ProfileManager.CurrentProfile.LootMobs = false; CharacterSettings.Instance.NinjaSkin = false; CharacterSettings.Instance.SkinMobs = false; var mobNames = (from mob in ObjectManager.GetObjectsOfType <WoWUnit>() where ObjectId.Contains((int)mob.Entry) let mobName = Utility.GetObjectNameFromId((int)mob.Entry) orderby mobName select mobName) .Distinct(); this.UpdateGoalText(QuestId, string.Format("Escorting {0}", string.Join(", ", mobNames))); } }
public bool Translate(Scene?scene, object source, TextTranslationEventArgs e, string original, out string translate) { if (Type.Count > 0) { if (!Type.Contains(e.Type)) { translate = null; return(false); } } if (Source.Count > 0) { if (!Source.Contains(e.Source)) { translate = null; return(false); } } if (Scene.Count > 0) { if (!Scene.Contains(scene?.name)) { translate = null; return(false); } } if (Scene.Count > 0) { if (!Scene.Contains(scene?.name)) { translate = null; return(false); } } if (Level.Count > 0) { if (!Level.Contains(scene?.buildIndex ?? -1)) { translate = null; return(false); } } var objectName = (source as UnityEngine.Object)?.name; if (ObjectName.Count > 0) { if (!ObjectName.Contains(objectName)) { translate = null; return(false); } } var objectId = (source as UnityEngine.Object)?.GetInstanceID(); if (ObjectId.Count > 0) { if (!ObjectId.Contains(objectId?.ToString())) { translate = null; return(false); } } if ((Flag & TextTranslationFlag.TextPart) > TextTranslationFlag.None) { if ((Flag & TextTranslationFlag.Regex) > TextTranslationFlag.None) { if (!Regex.IsMatch(original)) { translate = null; return(false); } translate = Regex.Replace(original, Translation); if (e.Debug) { Logger.Log(LogLevel.Info, $"TextPart {original} >> {translate}"); } return(true); } else { if (original != Original) { translate = null; return(false); } translate = Translation; if (e.Debug) { Logger.Log(LogLevel.Info, $"TextPart {original} >> {translate}"); } return(true); } } else { if ((Flag & TextTranslationFlag.Regex) > TextTranslationFlag.None) { var matches = Regex.Matches(original); if (matches.Count == 0) { translate = null; return(false); } var originalTemp = new StringBuilder(original, 32); foreach (Match match in matches) { var raw = match.Value; var translateTemp = new StringBuilder(Translation, 32); for (var i = match.Groups.Count - 1; i >= 0; i--) { var group = match.Groups[i]; if (!NamePool.Translate(scene, source, e, group.Value, out var groupValue)) { groupValue = group.Value; } translateTemp = translateTemp.Replace($"${i}", groupValue); translateTemp = translateTemp.Replace($"${{{i}}}", groupValue); } foreach (var name in Regex.GetGroupNames()) { var group = match.Groups[name]; if (!NamePool.Translate(scene, source, e, group.Value, out var groupValue)) { groupValue = group.Value; } translateTemp = translateTemp.Replace($"${{{name}}}", groupValue); } originalTemp = originalTemp.Replace(raw, translateTemp.ToString(), match.Index, match.Length); } translate = originalTemp.ToString(); if (e.Debug) { Logger.Log(LogLevel.Info, $"{original} >> {translate}"); } return(true); } else { if (original != Original) { translate = null; return(false); } translate = Translation; if (e.Debug) { Logger.Log(LogLevel.Info, $"{original} >> {translate}"); } return(true); } } }