Exemple #1
0
 private static void Prefix(ref Player __instance, ref float v)
 {
     if (Configuration.Current.StaminaUsage.IsEnabled)
     {
         string methodName = new StackTrace().GetFrame(2).GetMethod().Name;
         if (methodName.Contains(nameof(Player.UpdatePlacement)) || methodName.Contains(nameof(Player.Repair)) || methodName.Contains(nameof(Player.RemovePiece)))
         {
             string itemName = __instance.GetRightItem()?.m_shared.m_name;
             if (itemName == "$item_hammer")
             {
                 v = Helper.applyModifierValue(v, Configuration.Current.StaminaUsage.hammer);
             }
             else if (itemName == "$item_hoe")
             {
                 v = Helper.applyModifierValue(v, Configuration.Current.StaminaUsage.hoe);
             }
             else if (itemName == "$item_cultivator")
             {
                 v = Helper.applyModifierValue(v, Configuration.Current.StaminaUsage.cultivator);
             }
         }
         else if (methodName.Equals(nameof(Player.PlayerAttackInput)))
         {
             ItemDrop.ItemData item = __instance.GetCurrentWeapon();
             if (item?.m_shared.m_skillType == Skills.SkillType.Bows)
             {
                 v = Helper.applyModifierValue(v, Configuration.Current.StaminaUsage.bows);
             }
         }
         else if (methodName.Equals(nameof(Player.BlockAttack)))
         {
             v = Helper.applyModifierValue(v, Configuration.Current.StaminaUsage.blocking);
         }
     }
 }
Exemple #2
0
 static void Prefixfactionman()
 {
     if (Scribe.mode != LoadSaveMode.Inactive)
     {
         string trace = new StackTrace().ToString();
         if (!trace.Contains("SetInitialPsyfocusLevel") &&
             !trace.Contains("Pawn_NeedsTracker.ShouldHaveNeed") &&
             !trace.Contains("FactionManager.ExposeData"))
         {
             Log.Message($"factionman call {trace}", true);
         }
     }
 }
Exemple #3
0
        private static void FirstChanceExceptionHandler(object sender, FirstChanceExceptionEventArgs args)
        {
            if (!pastExceptions.Add(args.Exception.ToString()))
            {
                return;
            }
            if (args.Exception.Source == "MP3Sharp")
            {
                return;
            }

            var stackTrace = new StackTrace(true).ToString();

            if (stackTrace.Contains("Terraria.ModLoader.ModCompile"))
            {
                return;
            }

            var msg = args.Exception.Message + " " + Language.GetTextValue("tModLoader.RuntimeErrorSeeLogsForFullTrace", Path.GetFileName(LogPath));

#if CLIENT
            float soundVolume = Main.soundVolume;
            Main.soundVolume = 0f;
            Main.NewText(msg, Microsoft.Xna.Framework.Color.OrangeRed);
            Main.soundVolume = soundVolume;
#else
            Console.ForegroundColor = ConsoleColor.DarkMagenta;
            Console.WriteLine(msg);
            Console.ResetColor();
#endif

            tML.Warn(Language.GetTextValue("tModLoader.RuntimeErrorSilentlyCaughtException"), args.Exception);
            tML.Warn(stackTrace);
        }
Exemple #4
0
        public override void Fail(string message, string detailMessage)
        {
            if (message.Contains("This is a soft assert - I don't think this can happen"))
            {
                return;
            }

            if (string.IsNullOrEmpty(message))
            {
                message = "ASSERT FAILED";
            }

            if (detailMessage == null)
            {
                detailMessage = string.Empty;
            }

            string stackTrace = new StackTrace(true).ToString();

            if (stackTrace.Contains("OverriddenOrHiddenMembersHelpers.FindOverriddenOrHiddenMembersInType"))
            {
                // bug 661370
                return;
            }

            base.Fail(message, detailMessage);
            Log.Exception(message + "\r\n" + detailMessage + "\r\n" + stackTrace);
        }
Exemple #5
0
        protected void LogStack(Func <string> logMessage)
        {
            var stackTrace = new StackTrace(1, true).ToString();

            if (string.IsNullOrEmpty(_filterText) || !stackTrace.Contains(_filterText))
            {
                Console.WriteLine(logMessage());
                Console.WriteLine(stackTrace);
            }
        }
Exemple #6
0
        private static void FirstChanceExceptionHandler(object sender, FirstChanceExceptionEventArgs args)
        {
            if (args.Exception.Source == "MP3Sharp")
            {
                return;
            }

            var stackTrace = new StackTrace(true).ToString();

            if (stackTrace.Contains("Terraria.ModLoader.ModCompile") ||
                stackTrace.Contains("Delegate.CreateDelegateNoSecurityCheck") ||
                stackTrace.Contains("MethodBase.GetMethodBody"))
            {
                return;
            }

            stackTrace = stackTrace.Substring(stackTrace.IndexOf('\n'));
            var exString = args.Exception.GetType() + ": " + args.Exception.Message + stackTrace;

            if (!pastExceptions.Add(exString))
            {
                return;
            }

            var msg = args.Exception.Message + " " + Language.GetTextValue("tModLoader.RuntimeErrorSeeLogsForFullTrace", Path.GetFileName(LogPath));

#if CLIENT
            float soundVolume = Main.soundVolume;
            Main.soundVolume = 0f;
            Main.NewText(msg, Microsoft.Xna.Framework.Color.OrangeRed);
            Main.soundVolume = soundVolume;
#else
            Console.ForegroundColor = ConsoleColor.DarkMagenta;
            Console.WriteLine(msg);
            Console.ResetColor();
#endif
            tML.Warn(Language.GetTextValue("tModLoader.RuntimeErrorSilentlyCaughtException") + '\n' + exString);
        }
Exemple #7
0
        public void Draw()
        {
            var callingFrameClassName =
                new StackTrace().GetFrame(1).GetMethod().DeclaringType.Name;

            if (!callingFrameClassName.Contains("Tests"))
            {
                Console.SetCursorPosition(0, 0);
            }
            for (int y = 0; y < Height; y++)
            {
                for (int x = 0; x < Width; x++)
                {
                    Console.Write(IsAlive(x, y) ? "*" : ".");
                }
                Console.WriteLine();
            }
        }
        private static bool ValidateCallStack(uint lid, List <string> expectedCallStack)
        {
            bool result = true;

            if (expectedCallStack != null && 0 < expectedCallStack.Count)
            {
                string text = new StackTrace().ToString();
                ExTraceGlobals.TracingTracer.TraceInformation <string>(37269, 0L, "Tracing was called with this callstack:{0}", text);
                foreach (string text2 in expectedCallStack)
                {
                    ExTraceGlobals.TracingTracer.TraceInformation <string>(61845, 0L, "Tracing expects this string in the callstack:{0}", text2);
                    if (!text.Contains(text2))
                    {
                        ExTraceGlobals.TracingTracer.TraceDebug <string, string>(52567, (long)((ulong)lid), "FI call stack mismatch: {0} was not found in\r\n{1}", text2, text);
                        result = false;
                        break;
                    }
                }
            }
            return(result);
        }
Exemple #9
0
        //Override for PlayerData.GetBool
        public static bool GetPlayerDataBool(string name)
        {
            PlayerData pd = PlayerData.instance;

            //Don't run randomizer code in non-randomizer saves
            if (!RandomizerMod.instance.Settings.randomizer)
            {
                return(pd.GetBoolInternal(name));
            }

            if (GameManager.instance.GetSceneNameString() != "RestingGrounds_07" && GameManager.instance.GetSceneNameString() != "RestingGrounds_04")
            {
                if (name == "hasDreamGate" || name == "dreamNailUpgraded" || name == "hasDreamNail")
                {
                    return(pd.GetBoolInternal(name));
                }
            }

            if (string.IsNullOrEmpty(name))
            {
                return(false);
            }

            if (name == "_true")
            {
                return(true);
            }
            else if (name == "_false")
            {
                return(false);
            }
            else if (name == "hasAcidArmour")
            {
                return(GameManager.instance.GetSceneNameString() == "Waterways_13" ? false : PlayerData.instance.hasAcidArmour);
            }

            //Check stack trace to see if player is in a menu
            string stack = new StackTrace().ToString();

            //Split into multiple ifs because this looks horrible otherwise
            //TODO: Cleaner way of checking than stack trace
            if (!stack.Contains("at ShopMenuStock.BuildItemList()"))
            {
                if (stack.Contains("at HutongGames.PlayMaker.Fsm.Start()"))
                {
                    return(pd.GetBoolInternal(name));
                }

                if (name.Contains("gotCharm_") && (stack.Contains("at HutongGames.PlayMaker.Fsm.DoTransition(HutongGames.PlayMaker.FsmTransition transition, Boolean isGlobal)") || InInventory()))
                {
                    return(pd.GetBoolInternal(name));
                }
            }

            string key;
            string key2;

            //Don't run randomizer if bool is not in the loaded data
            if (!reverseLookup.TryGetValue(name, out key) || !RandomizerMod.instance.Settings.StringValues.TryGetValue(key, out key2))
            {
                return(pd.GetBoolInternal(name));
            }
            else
            {
                int             index           = entries[key].GetIndex(name);
                RandomizerEntry randomizerEntry = entries[key2];

                RandomizerVar var;

                //Return the matching bool or the first one if there is no matching index
                if (randomizerEntry.entries.Length > index)
                {
                    var = randomizerEntry.entries[index];
                }
                else
                {
                    var = randomizerEntry.entries[0];
                }

                if (var.type == typeof(bool))
                {
                    return(pd.GetBoolInternal(var.name));
                }
                else
                {
                    if (key2 == "Vengeful Spirit")
                    {
                        return(RandomizerMod.instance.Settings.fireball1);
                    }
                    else if (key2 == "Shade Soul")
                    {
                        return(RandomizerMod.instance.Settings.fireball2);
                    }
                    else if (key2 == "Desolate Dive")
                    {
                        return(RandomizerMod.instance.Settings.quake1);
                    }
                    else if (key2 == "Descending Dark")
                    {
                        return(RandomizerMod.instance.Settings.quake2);
                    }
                    else if (key2 == "Howling Wraiths")
                    {
                        return(RandomizerMod.instance.Settings.scream1);
                    }
                    else if (key2 == "Abyss Shriek")
                    {
                        return(RandomizerMod.instance.Settings.scream2);
                    }
                    return(pd.GetIntInternal(var.name) >= (int)var.value);
                }
            }
        }
Exemple #10
0
        private static bool IsResharperCaller()
        {
            var stackTrace = new StackTrace().ToString();

            return(stackTrace.Contains("JetBrains.VsIntegration."));
        }