diff --git a/.gitignore b/.gitignore
index 9de5892..ecbde4e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,4 @@ Projects/CykaOfQud/.vs/
Projects/CykaOfQud/.vscode/
*.suo
+Projects/BanquetForFools/.vs/BanquetForCyka
diff --git a/Projects/BanquetForFools/.clang-format b/Projects/BanquetForFools/.clang-format
new file mode 100644
index 0000000..d53bf86
--- /dev/null
+++ b/Projects/BanquetForFools/.clang-format
@@ -0,0 +1,3 @@
+BasedOnStyle: Google
+IndentWidth: 4
+ColumnLimit: 120
\ No newline at end of file
diff --git a/Projects/BanquetForFools/BanquetForCyka.sln b/Projects/BanquetForFools/BanquetForCyka.sln
new file mode 100644
index 0000000..26cc872
--- /dev/null
+++ b/Projects/BanquetForFools/BanquetForCyka.sln
@@ -0,0 +1,16 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BanquetForCyka", "BanquetForCyka\BanquetForCyka.csproj", "{EE5EFB7F-A4DC-44F0-967B-F71ECA2D46AE}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {EE5EFB7F-A4DC-44F0-967B-F71ECA2D46AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EE5EFB7F-A4DC-44F0-967B-F71ECA2D46AE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EE5EFB7F-A4DC-44F0-967B-F71ECA2D46AE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EE5EFB7F-A4DC-44F0-967B-F71ECA2D46AE}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+EndGlobal
diff --git a/Projects/BanquetForFools/BanquetForCyka/BanquetForCyka.csproj b/Projects/BanquetForFools/BanquetForCyka/BanquetForCyka.csproj
new file mode 100644
index 0000000..e7e6a68
--- /dev/null
+++ b/Projects/BanquetForFools/BanquetForCyka/BanquetForCyka.csproj
@@ -0,0 +1,94 @@
+
+
+
+
+ Debug
+ C:/Games/Banquet.for.Fools.Build.18497011
+ $(GAME_DIR)/Banquet for Fools_Data/Managed
+ $(GAME_DIR)/BepInEx
+ AnyCPU
+ {EE5EFB7F-A4DC-44F0-967B-F71ECA2D46AE}
+ Library
+ Properties
+ BanquetForCyka
+ BanquetForCyka
+ v4.8
+ 512
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+ $(GAME_BEPINEX)/core/0Harmony.dll
+
+
+ $(GAME_BEPINEX)/core/BepInEx.dll
+
+
+ $(GAME_MANAGED)/UnityEngine.dll
+
+
+ $(GAME_MANAGED)/UnityEngine.CoreModule.dll
+
+
+ $(GAME_MANAGED)/Assembly-CSharp.dll
+
+
+ $(GAME_BEPINEX)/plugins/ConfigurationManager/ConfigurationManager.dll
+
+
+
+
+
\ No newline at end of file
diff --git a/Projects/BanquetForFools/BanquetForCyka/Class1.cs b/Projects/BanquetForFools/BanquetForCyka/Class1.cs
new file mode 100644
index 0000000..2d5dc3f
--- /dev/null
+++ b/Projects/BanquetForFools/BanquetForCyka/Class1.cs
@@ -0,0 +1,50 @@
+using System;
+using System.Linq;
+using BepInEx;
+using BepInEx.Configuration;
+using HarmonyLib;
+using HarmonyLib.Tools;
+
+namespace BanquetForCyka {
+ [BepInPlugin(PluginGuid, PluginName, PluginVersion)]
+ public class Main : BaseUnityPlugin {
+ private const string PluginGuid = "BanquetForCyka";
+ private const string PluginName = "BanquetForCyka";
+ private const string PluginVersion = "1.0.0";
+
+ public static ConfigEntry debug;
+ public static ConfigEntry debugXp;
+
+ public static ConfigEntry xpMultiplier;
+
+ public void Awake() {
+ debug = Config.Bind("Debug", "Global Debug", false);
+ debugXp = Config.Bind("Debug", "XP Debug", false);
+
+ xpMultiplier =
+ Config.Bind("General", "XP Multiplier", 1f,
+ new ConfigDescription("XP Multiplier", new AcceptableValueRange(0.01f, 1024f)));
+
+ Logger.LogInfo("BanquetForCyka loaded");
+ HarmonyFileLog.Enabled = true;
+ Harmony harmony = new Harmony(PluginGuid);
+ harmony.PatchAll();
+ var originalMethods = harmony.GetPatchedMethods();
+ Logger.LogInfo("Patched " + originalMethods.Count() + " methods");
+ }
+
+ public static void LogDebug(string message, ConfigEntry debugFlag = null) {
+ if (debug.Value || (debugFlag != null && debugFlag.Value))
+ Console.WriteLine(message);
+ }
+ }
+
+ [HarmonyPatch(typeof(Stats), "AddXP")]
+ public class Stats_AddXP {
+ public static void Prefix(ref int amt) {
+ Main.LogDebug("Original XP amount: " + amt, Main.debugXp);
+ amt = (int)((float)amt * Main.xpMultiplier.Value);
+ Main.LogDebug("Modified XP amount: " + amt, Main.debugXp);
+ }
+ }
+}
diff --git a/Projects/BanquetForFools/BanquetForCyka/CykUtil.cs b/Projects/BanquetForFools/BanquetForCyka/CykUtil.cs
new file mode 100644
index 0000000..75fcaea
--- /dev/null
+++ b/Projects/BanquetForFools/BanquetForCyka/CykUtil.cs
@@ -0,0 +1,28 @@
+using System;
+
+namespace BanquetForCyka {
+ public class CykUtil {
+ public static bool IsPlayerTank(Module module) {
+ if (module == null)
+ return false;
+ TankBlock block = module.block;
+ if (block == null)
+ return false;
+ Tank tank = block.tank;
+ if (tank == null)
+ return false;
+ return tank.ControllableByLocalPlayer;
+ }
+
+ public static Func