diff --git a/Projects/BlacksmithMaster/.clang-format b/Projects/BlacksmithMaster/.clang-format
new file mode 100644
index 0000000..d53bf86
--- /dev/null
+++ b/Projects/BlacksmithMaster/.clang-format
@@ -0,0 +1,3 @@
+BasedOnStyle: Google
+IndentWidth: 4
+ColumnLimit: 120
\ No newline at end of file
diff --git a/Projects/BlacksmithMaster/.vs/BlacksmithMaster/v16/.suo b/Projects/BlacksmithMaster/.vs/BlacksmithMaster/v16/.suo
new file mode 100644
index 0000000..a50e4b3
Binary files /dev/null and b/Projects/BlacksmithMaster/.vs/BlacksmithMaster/v16/.suo differ
diff --git a/Projects/BlacksmithMaster/.vs/Ereshor/v16/.suo b/Projects/BlacksmithMaster/.vs/Ereshor/v16/.suo
new file mode 100644
index 0000000..112ae7c
Binary files /dev/null and b/Projects/BlacksmithMaster/.vs/Ereshor/v16/.suo differ
diff --git a/Projects/BlacksmithMaster/BlacksmithMaster.sln b/Projects/BlacksmithMaster/BlacksmithMaster.sln
new file mode 100644
index 0000000..6fc0b7c
--- /dev/null
+++ b/Projects/BlacksmithMaster/BlacksmithMaster.sln
@@ -0,0 +1,16 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlacksmithMaster", "BlacksmithMaster\BlacksmithMaster.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/BlacksmithMaster/BlacksmithMaster/BlacksmithMaster.csproj b/Projects/BlacksmithMaster/BlacksmithMaster/BlacksmithMaster.csproj
new file mode 100644
index 0000000..b971ef2
--- /dev/null
+++ b/Projects/BlacksmithMaster/BlacksmithMaster/BlacksmithMaster.csproj
@@ -0,0 +1,94 @@
+
+
+
+
+ Debug
+ C:\Games\Blacksmith.Master.Early.Access
+ $(GAME_DIR)/Blacksmith Master_Data/Managed
+ $(GAME_DIR)/BepInEx
+ AnyCPU
+ {EE5EFB7F-A4DC-44F0-967B-F71ECA2D46AE}
+ Library
+ Properties
+ BlacksmithMaster
+ BlacksmithMaster
+ 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/BlacksmithMaster/BlacksmithMaster/Class1.cs b/Projects/BlacksmithMaster/BlacksmithMaster/Class1.cs
new file mode 100644
index 0000000..9d219d9
--- /dev/null
+++ b/Projects/BlacksmithMaster/BlacksmithMaster/Class1.cs
@@ -0,0 +1,48 @@
+using System;
+using System.Linq;
+using BepInEx;
+using BepInEx.Configuration;
+using HarmonyLib;
+using HarmonyLib.Tools;
+
+namespace BlacksmithMaster {
+ [BepInPlugin(PluginGuid, PluginName, PluginVersion)]
+ public class Main : BaseUnityPlugin {
+ private const string PluginGuid = "Cykasmith";
+ private const string PluginName = "Cykasmith";
+ private const string PluginVersion = "1.0.0";
+
+ public static ConfigEntry debug;
+
+ public static ConfigEntry xpMultiplier;
+
+ public void Awake() {
+ debug = Config.Bind("General", "Debug", false);
+
+ xpMultiplier =
+ Config.Bind("General", "XP Multiplier", 1f,
+ new ConfigDescription("XP Multiplier", new AcceptableValueRange(0.01f, 1024f)));
+
+ Logger.LogInfo("Cykasmith 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) {
+ if (Main.debug.Value)
+ Console.WriteLine(message);
+ }
+ }
+
+ [HarmonyPatch(typeof(StaffBase), "AddXp")]
+ public class TavernData_AddXp {
+ public static void Prefix(ref int amount) {
+ Main.LogDebug("Original XP amount: " + amount);
+ amount = (int)((float)amount * Main.xpMultiplier.Value);
+ Main.LogDebug("Modified XP amount: " + amount);
+ }
+ }
+}
diff --git a/Projects/BlacksmithMaster/BlacksmithMaster/CykUtil.cs b/Projects/BlacksmithMaster/BlacksmithMaster/CykUtil.cs
new file mode 100644
index 0000000..2a6cc7d
--- /dev/null
+++ b/Projects/BlacksmithMaster/BlacksmithMaster/CykUtil.cs
@@ -0,0 +1,28 @@
+using System;
+
+namespace BlacksmithMaster {
+ 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