Example #1
0
        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)));
            }
        }
Example #2
0
        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);
                }
            }
        }