153 lines
6.7 KiB
C#
153 lines
6.7 KiB
C#
namespace Harmony.BindingItemPatches
|
|
{
|
|
[HarmonyPatch(typeof(BindingItem))]
|
|
[HarmonyPatch("ParseCVars")]
|
|
public class ParseCVarsPatch
|
|
{
|
|
public static bool Prefix(BindingItem __instance, ref string __result, string _fullText,
|
|
char ___cvarFormatSplitChar,
|
|
char[] ___cvarFormatSplitCharArray
|
|
)
|
|
{
|
|
//Log.Out("BindingItemPatches-ParseCVars _fullText: " + _fullText);
|
|
|
|
for (int num = _fullText.IndexOf("{cvar(", StringComparison.Ordinal); num != -1; num = _fullText.IndexOf("{cvar(", num, StringComparison.Ordinal))
|
|
{
|
|
//Log.Out("BindingItemPatches-ParseCVars num: " + num);
|
|
string text = _fullText.Substring(num, _fullText.IndexOf('}', num) + 1 - num);
|
|
string format = "";
|
|
int num2 = text.IndexOf('(') + 1;
|
|
string text2 = text.Substring(num2, text.IndexOf(')') - num2);
|
|
if (text2.IndexOf(___cvarFormatSplitChar) >= 0)
|
|
{
|
|
string[] array = text2.Split(___cvarFormatSplitCharArray);
|
|
text2 = array[0];
|
|
format = array[1];
|
|
}
|
|
|
|
bool foundEntry = text2.Contains("$varFuriousRamsay");
|
|
|
|
if (!foundEntry)
|
|
{
|
|
_fullText = _fullText.Replace(text, XUiM_Player.GetPlayer().GetCVar(text2).ToString(format));
|
|
}
|
|
else
|
|
{
|
|
if (text2.EndsWith("Perc") && !text2.EndsWith("Unit"))
|
|
{
|
|
//Log.Out("BindingItemPatches-ParseCVars RebirthVariables.localVariables[" + text2 + "Unit]: " + RebirthVariables.localVariables[text2 + "Unit"].ToString(format));
|
|
|
|
string level = text2.Replace("$varFuriousRamsay", "").Replace("Perc", "");
|
|
|
|
//Log.Out("BindingItemPatches-ParseCVars level: " + level);
|
|
|
|
bool found = false;
|
|
|
|
string foundKey = "";
|
|
|
|
foreach (var key in RebirthVariables.localClasses.Keys)
|
|
{
|
|
//Log.Out("BindingItemPatches-ParseCVars CLASS key: " + key);
|
|
if (level.Contains(key))
|
|
{
|
|
level = level.Replace(key, "");
|
|
found = true;
|
|
foundKey = key;
|
|
|
|
//Log.Out("BindingItemPatches-ParseCVars CLASS level: " + level);
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!found)
|
|
{
|
|
foreach (var key in RebirthVariables.localExpertise.Keys)
|
|
{
|
|
//Log.Out("BindingItemPatches-ParseCVars EXPERTISE key: " + key);
|
|
if (level.Contains(key))
|
|
{
|
|
level = level.Replace(key, "");
|
|
foundKey = key;
|
|
found = true;
|
|
|
|
//Log.Out("BindingItemPatches-ParseCVars EXPERTISE level: " + level);
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
float total = 0;
|
|
|
|
if (found)
|
|
{
|
|
total = RebirthVariables.localVariables[text2.Replace(level, "") + "Unit"];
|
|
}
|
|
else
|
|
{
|
|
total = RebirthVariables.localVariables[text2 + "Unit"];
|
|
}
|
|
|
|
float unit = total % 1;
|
|
|
|
float percentage = (float)(Math.Truncate(unit * 100 * 100) / 100);
|
|
|
|
if (percentage > 100)
|
|
{
|
|
percentage = 100.00f;
|
|
}
|
|
|
|
if (found)
|
|
{
|
|
//Log.Out("BindingItemPatches-ParseCVars level: " + level);
|
|
//Log.Out("BindingItemPatches-ParseCVars unit: " + unit);
|
|
//Log.Out("BindingItemPatches-ParseCVars BEFORE percentage: " + percentage);
|
|
|
|
int foundLevel = int.Parse(level);
|
|
|
|
int currentLevel = (int)total + 1;
|
|
|
|
//Log.Out("BindingItemPatches-ParseCVars currentLevel: " + currentLevel);
|
|
|
|
//Log.Out("BindingItemPatches-ParseCVars foundLevel: " + foundLevel);
|
|
//Log.Out("BindingItemPatches-ParseCVars currentLevel: " + currentLevel);
|
|
if (foundLevel < currentLevel)
|
|
{
|
|
//Log.Out("BindingItemPatches-ParseCVars foundLevel < currentLevel");
|
|
percentage = 100.00f;
|
|
}
|
|
else if (foundLevel > currentLevel)
|
|
{
|
|
//Log.Out("BindingItemPatches-ParseCVars foundLevel > currentLevel");
|
|
percentage = 0.00f;
|
|
}
|
|
|
|
//Log.Out("BindingItemPatches-ParseCVars AFTER percentage: " + percentage);
|
|
}
|
|
|
|
_fullText = _fullText.Replace(text, percentage.ToString());
|
|
}
|
|
else if (text2.EndsWith("Lvl"))
|
|
{
|
|
//Log.Out("BindingItemPatches-ParseCVars RebirthVariables.localConstants[" + text2 + "]: " + RebirthVariables.localConstants[text2].ToString(format));
|
|
_fullText = _fullText.Replace(text, RebirthVariables.localConstants[text2].ToString(format));
|
|
}
|
|
else if (text2.EndsWith("_Cst"))
|
|
{
|
|
//Log.Out("BindingItemPatches-ParseCVars RebirthVariables.localConstants[" + text2 + "]: " + RebirthVariables.localConstants[text2].ToString(format));
|
|
_fullText = _fullText.Replace(text, RebirthVariables.localConstants[text2].ToString(format));
|
|
}
|
|
else
|
|
{
|
|
_fullText = _fullText.Replace(text, XUiM_Player.GetPlayer().GetCVar(text2).ToString(format));
|
|
}
|
|
}
|
|
}
|
|
__result = _fullText;
|
|
|
|
return false;
|
|
}
|
|
}
|
|
}
|