public static void DoPostRenderHudEvent() { if (Game1.activeClickableMenu != null) { return; } Type t = Type.GetType("ExperienceBars.Mod, ExperienceBars"); int currentAlchemyLevel = EquivalentExchange.instance.currentPlayerData.AlchemyLevel; int currentAlchemyExperience = EquivalentExchange.instance.currentPlayerData.AlchemyExperience; int x = 10; int y = (int)Util.GetStaticField(t, "expBottom"); int previousExperienceRequired = 0, nextExperienceRequired = 1; if (currentAlchemyLevel == 0) { nextExperienceRequired = Alchemy.GetAlchemyExperienceNeededForNextLevel(); } else if (currentAlchemyLevel != 10) { previousExperienceRequired = Alchemy.GetAlchemyExperienceNeededForLevel(currentAlchemyLevel - 1); nextExperienceRequired = Alchemy.GetAlchemyExperienceNeededForLevel(currentAlchemyLevel); } int progressTowardCurrentLevel = currentAlchemyExperience - previousExperienceRequired; int experienceGapForCurrentLevel = nextExperienceRequired - previousExperienceRequired; float progressBarPercentage = (float)progressTowardCurrentLevel / experienceGapForCurrentLevel; if (currentAlchemyLevel == 10) { progressBarPercentage = -1; } object[] args = new object[] { x, y, alchemySkillIcon, new Rectangle(0, 0, 16, 16), currentAlchemyLevel, progressBarPercentage, new Color(196, 79, 255), }; Util.CallStaticMethod(t, "renderSkillBar", args); Util.SetStaticField(t, "expBottom", y + 40); }