diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..7af27bf
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,31 @@
+{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "Valheim Dev",
+ "type": "cppvsdbg",
+ "request": "launch",
+ "cwd": "C:/Program Files (x86)/Steam/steamapps/common/Valheim_dev",
+ "program": "C:/Program Files (x86)/Steam/steamapps/common/Valheim_dev/valheim.exe",
+ "console": "integratedTerminal",
+ "args": [
+ "-console"
+ ],
+ "preLaunchTask": "build debug"
+ },
+ {
+ "name": "Valheim Dev2",
+ "type": "cppvsdbg",
+ "request": "launch",
+ "cwd": "C:/Program Files (x86)/Steam/steamapps/common/Valheim_dev2",
+ "program": "C:/Program Files (x86)/Steam/steamapps/common/Valheim_dev2/valheim.exe",
+ "console": "integratedTerminal",
+ "args": [
+ "-console"
+ ],
+ }
+ ]
+}
\ No newline at end of file
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 0000000..54b1705
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,33 @@
+{
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "build debug",
+ "command": "msbuild",
+ "type": "shell",
+ "args": [
+ "${workspaceFolder}/GaslightArrin.sln",
+ "/t:GaslightArrin",
+ "/p:Configuration=Debug",
+ "/p:Platform=\"Any CPU\""
+ ],
+ "problemMatcher": "$msCompile",
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ }
+ },
+ {
+ "label": "build release",
+ "command": "msbuild",
+ "type": "shell",
+ "args": [
+ "${workspaceFolder}/GaslightArrin.sln",
+ "/t:GaslightArrin",
+ "/p:Configuration=Release",
+ "/p:Platform=\"Any CPU\""
+ ],
+ "problemMatcher": "$msCompile"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/DoPrebuild.props b/DoPrebuild.props
index 873ae84..376c20d 100644
--- a/DoPrebuild.props
+++ b/DoPrebuild.props
@@ -1,6 +1,6 @@
-
+
- false
+ True
-
\ No newline at end of file
+
diff --git a/GaslightArrin.sln b/GaslightArrin.sln
index 4cffaf1..ab63578 100644
--- a/GaslightArrin.sln
+++ b/GaslightArrin.sln
@@ -1,9 +1,9 @@
-
+
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.4.33213.308
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GaslightArrin", "JotunnModStub\GaslightArrin.csproj", "{DEAF4438-8089-40ED-8175-398E1261D45B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GaslightArrin", "GaslightArrin\GaslightArrin.csproj", "{DEAF4438-8089-40ED-8175-398E1261D45B}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -23,3 +23,4 @@ Global
SolutionGuid = {04FA40AF-91D5-4CE8-92ED-7530C8DF0D5E}
EndGlobalSection
EndGlobal
+
diff --git a/GaslightArrin/EasyStackPlugin.cs b/GaslightArrin/EasyStackPlugin.cs
new file mode 100644
index 0000000..154e826
--- /dev/null
+++ b/GaslightArrin/EasyStackPlugin.cs
@@ -0,0 +1,142 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using BepInEx;
+using HarmonyLib;
+using UnityEngine;
+
+namespace EasyStackPlugin
+{
+ [BepInPlugin(PluginGUID, PluginName, PluginVersion)]
+ [BepInDependency(Jotunn.Main.ModGuid)]
+ //[NetworkCompatibility(CompatibilityLevel.EveryoneMustHaveMod, VersionStrictness.Minor)]
+ internal class EasyStackPlugin : BaseUnityPlugin
+ {
+ public const string PluginGUID = "com.ecaj.easystack";
+ public const string PluginName = "EasyStack";
+ public const string PluginVersion = "1.3.1";
+
+ private const string ArrinName = "arrin";
+ private const string JaceName = "jace";
+ private const float ReopenChance = 1f;
+ private const float OpeningSoundChance = 1/20f;
+ private const float OtherPlayerDistance = 10f;
+
+ private Harmony mHarmony;
+ private static List DoorQueue = new List();
+
+ private void Awake()
+ {
+ mHarmony = Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), PluginGUID);
+ }
+
+ private void OnDestroy()
+ {
+ mHarmony?.UnpatchSelf();
+ }
+
+ private void Update()
+ {
+ if (Player.m_localPlayer == null) {
+ return;
+ }
+
+ for (int i = 0; i < DoorQueue.Count; i++) {
+ var door = DoorQueue[i];
+ if (door == null) {
+ DoorQueue.RemoveAt(i);
+ i--;
+ continue;
+ }
+
+ var diff = door.transform.position - Player.m_localPlayer.transform.position;
+ if (Player.m_localPlayer.GetPlayerName().ToLower() == ArrinName) {
+ // Check if visible to camera
+ var colliders = door.GetComponent()?.GetAllColliders();
+ var planes = GeometryUtility.CalculateFrustumPlanes(Camera.main);
+ var visible = colliders != null && colliders.Any(collider => GeometryUtility.TestPlanesAABB(planes, collider.bounds));
+ if (!visible && diff.magnitude > 6f) {
+ // Only reopen if still closed
+ if (door.m_nview.GetZDO().GetInt("state") == 0) {
+ // Make sure no other players are nearby
+ bool otherPlayersNearby = false;
+ foreach (var player in Player.GetAllPlayers()) {
+ if (player == null || player == Player.m_localPlayer) {
+ continue;
+ }
+ if (Vector3.Distance(player.transform.position, door.transform.position) < OtherPlayerDistance) {
+ otherPlayersNearby = true;
+ break;
+ }
+ }
+
+ if (!otherPlayersNearby) {
+ // Random 1/10 chance to actually play open sound
+ var playCloseSound = Random.Range(0f, 1f) < OpeningSoundChance;
+ var effects = door.m_openEffects;
+ if (!playCloseSound) {
+ door.m_openEffects = new EffectList();
+ }
+ // Open door :)
+ var facing = Vector3.Dot(door.transform.forward, Player.m_localPlayer.transform.forward);
+ door.m_nview.InvokeRPC("UseDoor", facing);
+ if (!playCloseSound) {
+ door.m_openEffects = effects;
+ }
+ }
+ }
+ DoorQueue.RemoveAt(i);
+ i--;
+ }
+ } else if (Player.m_localPlayer.GetPlayerName().ToLower() == JaceName) {
+ // Check if facing away
+ var facing = Vector3.Dot(diff.normalized, Player.m_localPlayer.transform.forward);
+ if (facing < 0 && diff.magnitude > 2f) {
+ // Close door
+ if (door.m_nview.GetZDO().GetInt("state") != 0) {
+ door.m_nview.InvokeRPC("UseDoor", 0);
+ }
+ DoorQueue.RemoveAt(i);
+ i--;
+ }
+ }
+ }
+ }
+
+ [HarmonyPatch(typeof(Door), nameof(Door.Interact))]
+ private class Door_Interact_Patch
+ {
+ private static void Postfix(Door __instance, Humanoid character, bool hold, bool alt, bool __result)
+ {
+ if (!__result) {
+ return;
+ }
+
+ var player = character as Player;
+ if (player == null) {
+ return;
+ }
+
+ bool closed = __instance.m_nview.GetZDO().GetInt("state") == 0;
+ // If Arrin
+ if (player.GetPlayerName().ToLower() == ArrinName) {
+ // If door is being closed
+ if (closed) {
+ // Random chance for door to reopen after closing
+ if (Random.Range(0f, 1f) < ReopenChance) {
+ if (!DoorQueue.Contains(__instance)) {
+ DoorQueue.Add(__instance);
+ }
+ }
+ }
+ // If Jace
+ } else if (player.GetPlayerName().ToLower() == JaceName) {
+ // If door is being opened, make sure it auto-closes
+ if (!closed) {
+ DoorQueue.Add(__instance);
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/JotunnModStub/GaslightArrin.csproj b/GaslightArrin/GaslightArrin.csproj
similarity index 97%
rename from JotunnModStub/GaslightArrin.csproj
rename to GaslightArrin/GaslightArrin.csproj
index ba2d1a8..a844d34 100644
--- a/JotunnModStub/GaslightArrin.csproj
+++ b/GaslightArrin/GaslightArrin.csproj
@@ -1,4 +1,4 @@
-
+
@@ -7,8 +7,8 @@
{DEAF4438-8089-40ED-8175-398E1261D45B}
Library
Properties
- JotunnModStub
- JotunnModStub
+ EasyStack
+ EasyStack
v4.6.2
512
true
@@ -115,4 +115,4 @@
-
\ No newline at end of file
+
diff --git a/JotunnModStub/Package/README.md b/GaslightArrin/Package/README.md
similarity index 100%
rename from JotunnModStub/Package/README.md
rename to GaslightArrin/Package/README.md
diff --git a/JotunnModStub/Package/icon.png b/GaslightArrin/Package/icon.png
similarity index 100%
rename from JotunnModStub/Package/icon.png
rename to GaslightArrin/Package/icon.png
diff --git a/JotunnModStub/Package/manifest.json b/GaslightArrin/Package/manifest.json
similarity index 100%
rename from JotunnModStub/Package/manifest.json
rename to GaslightArrin/Package/manifest.json
diff --git a/JotunnModStub/Properties/AssemblyInfo.cs b/GaslightArrin/Properties/AssemblyInfo.cs
similarity index 97%
rename from JotunnModStub/Properties/AssemblyInfo.cs
rename to GaslightArrin/Properties/AssemblyInfo.cs
index 039c427..f2c0f6b 100644
--- a/JotunnModStub/Properties/AssemblyInfo.cs
+++ b/GaslightArrin/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-using System.Reflection;
+using System.Reflection;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
@@ -33,3 +33,4 @@ using System.Runtime.InteropServices;
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.3.1.0")]
[assembly: AssemblyFileVersion("1.3.1.0")]
+
diff --git a/JotunnModStub/Properties/IgnoreAccessModifiers.cs b/GaslightArrin/Properties/IgnoreAccessModifiers.cs
similarity index 100%
rename from JotunnModStub/Properties/IgnoreAccessModifiers.cs
rename to GaslightArrin/Properties/IgnoreAccessModifiers.cs
diff --git a/JotunnModStub/README.md b/GaslightArrin/README.md
similarity index 100%
rename from JotunnModStub/README.md
rename to GaslightArrin/README.md
diff --git a/JotunnModStub/app.config b/GaslightArrin/app.config
similarity index 100%
rename from JotunnModStub/app.config
rename to GaslightArrin/app.config
diff --git a/JotunnModStub/packages.config b/GaslightArrin/packages.config
similarity index 100%
rename from JotunnModStub/packages.config
rename to GaslightArrin/packages.config
diff --git a/JotunnModUnity/.gitignore b/GaslightArrinUnity/.gitignore
similarity index 100%
rename from JotunnModUnity/.gitignore
rename to GaslightArrinUnity/.gitignore
diff --git a/JotunnModUnity/Assets/Assemblies.meta b/GaslightArrinUnity/Assets/Assemblies.meta
similarity index 100%
rename from JotunnModUnity/Assets/Assemblies.meta
rename to GaslightArrinUnity/Assets/Assemblies.meta
diff --git a/JotunnModUnity/Assets/Assemblies/Assembly-CSharp.dll.meta b/GaslightArrinUnity/Assets/Assemblies/Assembly-CSharp.dll.meta
similarity index 100%
rename from JotunnModUnity/Assets/Assemblies/Assembly-CSharp.dll.meta
rename to GaslightArrinUnity/Assets/Assemblies/Assembly-CSharp.dll.meta
diff --git a/JotunnModUnity/Assets/Assemblies/assembly_googleanalytics.dll.meta b/GaslightArrinUnity/Assets/Assemblies/assembly_googleanalytics.dll.meta
similarity index 100%
rename from JotunnModUnity/Assets/Assemblies/assembly_googleanalytics.dll.meta
rename to GaslightArrinUnity/Assets/Assemblies/assembly_googleanalytics.dll.meta
diff --git a/JotunnModUnity/Assets/Assemblies/assembly_guiutils.dll.meta b/GaslightArrinUnity/Assets/Assemblies/assembly_guiutils.dll.meta
similarity index 100%
rename from JotunnModUnity/Assets/Assemblies/assembly_guiutils.dll.meta
rename to GaslightArrinUnity/Assets/Assemblies/assembly_guiutils.dll.meta
diff --git a/JotunnModUnity/Assets/Assemblies/assembly_lux.dll.meta b/GaslightArrinUnity/Assets/Assemblies/assembly_lux.dll.meta
similarity index 100%
rename from JotunnModUnity/Assets/Assemblies/assembly_lux.dll.meta
rename to GaslightArrinUnity/Assets/Assemblies/assembly_lux.dll.meta
diff --git a/JotunnModUnity/Assets/Assemblies/assembly_postprocessing.dll.meta b/GaslightArrinUnity/Assets/Assemblies/assembly_postprocessing.dll.meta
similarity index 100%
rename from JotunnModUnity/Assets/Assemblies/assembly_postprocessing.dll.meta
rename to GaslightArrinUnity/Assets/Assemblies/assembly_postprocessing.dll.meta
diff --git a/JotunnModUnity/Assets/Assemblies/assembly_simplemeshcombine.dll.meta b/GaslightArrinUnity/Assets/Assemblies/assembly_simplemeshcombine.dll.meta
similarity index 100%
rename from JotunnModUnity/Assets/Assemblies/assembly_simplemeshcombine.dll.meta
rename to GaslightArrinUnity/Assets/Assemblies/assembly_simplemeshcombine.dll.meta
diff --git a/JotunnModUnity/Assets/Assemblies/assembly_steamworks.dll.meta b/GaslightArrinUnity/Assets/Assemblies/assembly_steamworks.dll.meta
similarity index 100%
rename from JotunnModUnity/Assets/Assemblies/assembly_steamworks.dll.meta
rename to GaslightArrinUnity/Assets/Assemblies/assembly_steamworks.dll.meta
diff --git a/JotunnModUnity/Assets/Assemblies/assembly_sunshafts.dll.meta b/GaslightArrinUnity/Assets/Assemblies/assembly_sunshafts.dll.meta
similarity index 100%
rename from JotunnModUnity/Assets/Assemblies/assembly_sunshafts.dll.meta
rename to GaslightArrinUnity/Assets/Assemblies/assembly_sunshafts.dll.meta
diff --git a/JotunnModUnity/Assets/Assemblies/assembly_utils.dll.meta b/GaslightArrinUnity/Assets/Assemblies/assembly_utils.dll.meta
similarity index 100%
rename from JotunnModUnity/Assets/Assemblies/assembly_utils.dll.meta
rename to GaslightArrinUnity/Assets/Assemblies/assembly_utils.dll.meta
diff --git a/JotunnModUnity/Assets/Assemblies/assembly_valheim.dll.meta b/GaslightArrinUnity/Assets/Assemblies/assembly_valheim.dll.meta
similarity index 100%
rename from JotunnModUnity/Assets/Assemblies/assembly_valheim.dll.meta
rename to GaslightArrinUnity/Assets/Assemblies/assembly_valheim.dll.meta
diff --git a/JotunnModUnity/ProjectSettings/AudioManager.asset b/GaslightArrinUnity/ProjectSettings/AudioManager.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/AudioManager.asset
rename to GaslightArrinUnity/ProjectSettings/AudioManager.asset
diff --git a/JotunnModUnity/ProjectSettings/ClusterInputManager.asset b/GaslightArrinUnity/ProjectSettings/ClusterInputManager.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/ClusterInputManager.asset
rename to GaslightArrinUnity/ProjectSettings/ClusterInputManager.asset
diff --git a/JotunnModUnity/ProjectSettings/DynamicsManager.asset b/GaslightArrinUnity/ProjectSettings/DynamicsManager.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/DynamicsManager.asset
rename to GaslightArrinUnity/ProjectSettings/DynamicsManager.asset
diff --git a/JotunnModUnity/ProjectSettings/EditorBuildSettings.asset b/GaslightArrinUnity/ProjectSettings/EditorBuildSettings.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/EditorBuildSettings.asset
rename to GaslightArrinUnity/ProjectSettings/EditorBuildSettings.asset
diff --git a/JotunnModUnity/ProjectSettings/EditorSettings.asset b/GaslightArrinUnity/ProjectSettings/EditorSettings.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/EditorSettings.asset
rename to GaslightArrinUnity/ProjectSettings/EditorSettings.asset
diff --git a/JotunnModUnity/ProjectSettings/GraphicsSettings.asset b/GaslightArrinUnity/ProjectSettings/GraphicsSettings.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/GraphicsSettings.asset
rename to GaslightArrinUnity/ProjectSettings/GraphicsSettings.asset
diff --git a/JotunnModUnity/ProjectSettings/InputManager.asset b/GaslightArrinUnity/ProjectSettings/InputManager.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/InputManager.asset
rename to GaslightArrinUnity/ProjectSettings/InputManager.asset
diff --git a/JotunnModUnity/ProjectSettings/NavMeshAreas.asset b/GaslightArrinUnity/ProjectSettings/NavMeshAreas.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/NavMeshAreas.asset
rename to GaslightArrinUnity/ProjectSettings/NavMeshAreas.asset
diff --git a/JotunnModUnity/ProjectSettings/PackageManagerSettings.asset b/GaslightArrinUnity/ProjectSettings/PackageManagerSettings.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/PackageManagerSettings.asset
rename to GaslightArrinUnity/ProjectSettings/PackageManagerSettings.asset
diff --git a/JotunnModUnity/ProjectSettings/Physics2DSettings.asset b/GaslightArrinUnity/ProjectSettings/Physics2DSettings.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/Physics2DSettings.asset
rename to GaslightArrinUnity/ProjectSettings/Physics2DSettings.asset
diff --git a/JotunnModUnity/ProjectSettings/PresetManager.asset b/GaslightArrinUnity/ProjectSettings/PresetManager.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/PresetManager.asset
rename to GaslightArrinUnity/ProjectSettings/PresetManager.asset
diff --git a/JotunnModUnity/ProjectSettings/ProjectSettings.asset b/GaslightArrinUnity/ProjectSettings/ProjectSettings.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/ProjectSettings.asset
rename to GaslightArrinUnity/ProjectSettings/ProjectSettings.asset
diff --git a/JotunnModUnity/ProjectSettings/ProjectVersion.txt b/GaslightArrinUnity/ProjectSettings/ProjectVersion.txt
similarity index 100%
rename from JotunnModUnity/ProjectSettings/ProjectVersion.txt
rename to GaslightArrinUnity/ProjectSettings/ProjectVersion.txt
diff --git a/JotunnModUnity/ProjectSettings/QualitySettings.asset b/GaslightArrinUnity/ProjectSettings/QualitySettings.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/QualitySettings.asset
rename to GaslightArrinUnity/ProjectSettings/QualitySettings.asset
diff --git a/JotunnModUnity/ProjectSettings/TagManager.asset b/GaslightArrinUnity/ProjectSettings/TagManager.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/TagManager.asset
rename to GaslightArrinUnity/ProjectSettings/TagManager.asset
diff --git a/JotunnModUnity/ProjectSettings/TimeManager.asset b/GaslightArrinUnity/ProjectSettings/TimeManager.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/TimeManager.asset
rename to GaslightArrinUnity/ProjectSettings/TimeManager.asset
diff --git a/JotunnModUnity/ProjectSettings/UnityConnectSettings.asset b/GaslightArrinUnity/ProjectSettings/UnityConnectSettings.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/UnityConnectSettings.asset
rename to GaslightArrinUnity/ProjectSettings/UnityConnectSettings.asset
diff --git a/JotunnModUnity/ProjectSettings/VFXManager.asset b/GaslightArrinUnity/ProjectSettings/VFXManager.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/VFXManager.asset
rename to GaslightArrinUnity/ProjectSettings/VFXManager.asset
diff --git a/JotunnModUnity/ProjectSettings/VersionControlSettings.asset b/GaslightArrinUnity/ProjectSettings/VersionControlSettings.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/VersionControlSettings.asset
rename to GaslightArrinUnity/ProjectSettings/VersionControlSettings.asset
diff --git a/JotunnModUnity/ProjectSettings/XRSettings.asset b/GaslightArrinUnity/ProjectSettings/XRSettings.asset
similarity index 100%
rename from JotunnModUnity/ProjectSettings/XRSettings.asset
rename to GaslightArrinUnity/ProjectSettings/XRSettings.asset
diff --git a/JotunnModStub/EasyStackPlugin.cs b/JotunnModStub/EasyStackPlugin.cs
deleted file mode 100644
index 87d5e65..0000000
--- a/JotunnModStub/EasyStackPlugin.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-// JotunnModStub
-// a Valheim mod skeleton using Jötunn
-//
-// File: JotunnModStub.cs
-// Project: JotunnModStub
-
-using BepInEx;
-using Jotunn.Entities;
-using Jotunn.Managers;
-
-namespace EasyStackPlugin
-{
- [BepInPlugin(PluginGUID, PluginName, PluginVersion)]
- [BepInDependency(Jotunn.Main.ModGuid)]
- //[NetworkCompatibility(CompatibilityLevel.EveryoneMustHaveMod, VersionStrictness.Minor)]
- internal class EasyStackPlugin : BaseUnityPlugin
- {
- public const string PluginGUID = "com.itmae.easystack";
- public const string PluginName = "EasyStack";
- public const string PluginVersion = "1.3.1";
-
- // Use this class to add your own localization to the game
- // https://valheim-modding.github.io/Jotunn/tutorials/localization.html
- public static CustomLocalization Localization = LocalizationManager.Instance.GetLocalization();
-
- private void Awake()
- {
- // Jotunn comes with its own Logger class to provide a consistent Log style for all mods using it
- Jotunn.Logger.LogInfo("ModStub has landed");
-
- // To learn more about Jotunn's features, go to
- // https://valheim-modding.github.io/Jotunn/tutorials/overview.html
- }
- }
-}
\ No newline at end of file