Skip to content

Commit

Permalink
Merge pull request #26 from Vapok/vapok/r1.5.4
Browse files Browse the repository at this point in the history
Release 1.5.4
  • Loading branch information
Vapok authored Jan 29, 2023
2 parents e0cdf88 + cc5c4d9 commit 5bc332e
Show file tree
Hide file tree
Showing 15 changed files with 101 additions and 77 deletions.
12 changes: 5 additions & 7 deletions AdventureBackpacks/AdventureBackpacks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,11 @@
* This largely a new port of the original Jotunn Backpacks. Only.. without the Jotunn, and other things.
*
* Planned Roadmap:
* v0.0.0 - Pre-Releases. May be buggy. May not function. But public input is valuable.
* v1.0.0 - Initial Release - Get existing functionality ported.
* v1.3.0 - Mistlands Backpack - Introduce new Backpack model that when crafted will include the Feather Fall effect.
* v1.5.0 - Adventure Begins - Revamping backpacks to be upgradable and offer new perks as upgrades happen. and offer backpacks at each stage of maturity.
* v0.0.0 - Pre-Releases. May be buggy. May not function. But public input is valuable. - DONE
* v1.0.0 - Initial Release - Get existing functionality ported. - DONE
* v1.3.0 - Mistlands Backpack - Introduce new Backpack model that when crafted will include the Feather Fall effect. - DONE
* v1.5.0 - Adventure Begins - Revamping backpacks to be upgradable and offer new perks as upgrades happen. and offer backpacks at each stage of maturity. - DONE
* v2.0.0 - To be determined!
*
* TODO: Build out a better configuration management
*
*/

Expand Down Expand Up @@ -37,7 +35,7 @@ public class AdventureBackpacks : BaseUnityPlugin, IPluginInfo
//Module Constants
private const string _pluginId = "vapok.mods.adventurebackpacks";
private const string _displayName = "AdventureBackpacks";
private const string _version = "1.5.3";
private const string _version = "1.5.4";

//Interface Properties
public string PluginId => _pluginId;
Expand Down
96 changes: 42 additions & 54 deletions AdventureBackpacks/Assets/Effects/BackpackEffects.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,11 @@ public static class BackpackEffects
public static HitData.DamageModPair FrostResistance = new() { m_type = HitData.DamageType.Frost, m_modifier = HitData.DamageModifier.Resistant};
}

public enum EquipmentEffects
{
SlowFall,
}

public static class EquipmentEffectCache
{
public static HashSet<StatusEffect> activeEffects = new();
public static HashSet<StatusEffect> backpackEffects = new();
{
private static HashSet<StatusEffect> activeEffects = new();
private static HashSet<StatusEffect> backpackEffects = new();
private static bool runningUpdateEquipmentStatusEffects = false;

[HarmonyPatch(typeof(Humanoid), nameof(Humanoid.UpdateEquipmentStatusEffects))]
public static class UpdateStatusEffects
Expand All @@ -28,40 +24,12 @@ public static class UpdateStatusEffects
[HarmonyPriority(Priority.First)]
public static bool Prefix(Humanoid __instance)
{
runningUpdateEquipmentStatusEffects = true;
activeEffects = new HashSet<StatusEffect>();
backpackEffects = new HashSet<StatusEffect>();

var deMister = ObjectDB.instance.GetStatusEffect("Demister");
var slowFall = ObjectDB.instance.GetStatusEffect("SlowFall");

if (__instance.m_leftItem != null && (bool) (UnityEngine.Object) __instance.m_leftItem.m_shared.m_equipStatusEffect)
activeEffects.Add(__instance.m_leftItem.m_shared.m_equipStatusEffect);
if (__instance.m_rightItem != null && (bool) (UnityEngine.Object) __instance.m_rightItem.m_shared.m_equipStatusEffect)
activeEffects.Add(__instance.m_rightItem.m_shared.m_equipStatusEffect);
if (__instance.m_chestItem != null && (bool) (UnityEngine.Object) __instance.m_chestItem.m_shared.m_equipStatusEffect)
activeEffects.Add(__instance.m_chestItem.m_shared.m_equipStatusEffect);
if (__instance.m_legItem != null && (bool) (UnityEngine.Object) __instance.m_legItem.m_shared.m_equipStatusEffect)
activeEffects.Add(__instance.m_legItem.m_shared.m_equipStatusEffect);
if (__instance.m_helmetItem != null && (bool) (UnityEngine.Object) __instance.m_helmetItem.m_shared.m_equipStatusEffect)
activeEffects.Add(__instance.m_helmetItem.m_shared.m_equipStatusEffect);
if (__instance.m_shoulderItem != null && (bool) (UnityEngine.Object) __instance.m_shoulderItem.m_shared.m_equipStatusEffect)
activeEffects.Add(__instance.m_shoulderItem.m_shared.m_equipStatusEffect);
if (__instance.m_utilityItem != null && (bool) (UnityEngine.Object) __instance.m_utilityItem.m_shared.m_equipStatusEffect)
activeEffects.Add(__instance.m_utilityItem.m_shared.m_equipStatusEffect);
if (__instance.HaveSetEffect(__instance.m_leftItem))
activeEffects.Add(__instance.m_leftItem.m_shared.m_setStatusEffect);
if (__instance.HaveSetEffect(__instance.m_rightItem))
activeEffects.Add(__instance.m_rightItem.m_shared.m_setStatusEffect);
if (__instance.HaveSetEffect(__instance.m_chestItem))
activeEffects.Add(__instance.m_chestItem.m_shared.m_setStatusEffect);
if (__instance.HaveSetEffect(__instance.m_legItem))
activeEffects.Add(__instance.m_legItem.m_shared.m_setStatusEffect);
if (__instance.HaveSetEffect(__instance.m_helmetItem))
activeEffects.Add(__instance.m_helmetItem.m_shared.m_setStatusEffect);
if (__instance.HaveSetEffect(__instance.m_shoulderItem))
activeEffects.Add(__instance.m_shoulderItem.m_shared.m_setStatusEffect);
if (__instance.HaveSetEffect(__instance.m_utilityItem))
activeEffects.Add(__instance.m_utilityItem.m_shared.m_setStatusEffect);

foreach (StatusEffect eqipmentStatusEffect in __instance.m_eqipmentStatusEffects)
{
Expand All @@ -80,31 +48,51 @@ public static bool Prefix(Humanoid __instance)
}
}

foreach (StatusEffect eqipmentStatusEffect in __instance.m_eqipmentStatusEffects)
{
if (!activeEffects.Contains(eqipmentStatusEffect) && !backpackEffects.Contains(eqipmentStatusEffect))
__instance.m_seman.RemoveStatusEffect(eqipmentStatusEffect.name);
}

foreach (StatusEffect statusEffect in activeEffects)
{
if (!__instance.m_eqipmentStatusEffects.Contains(statusEffect))
__instance.m_seman.AddStatusEffect(statusEffect);
}

foreach (var backpackEffect in backpackEffects)
{
if (!activeEffects.Contains(backpackEffect))
activeEffects.Add(backpackEffect);
}
__instance.m_eqipmentStatusEffects.Clear();
__instance.m_eqipmentStatusEffects.UnionWith((IEnumerable<StatusEffect>) activeEffects);

return false;
return true;
}

[UsedImplicitly]
public static void Postfix(Humanoid __instance)
{
backpackEffects = new HashSet<StatusEffect>();

foreach (var activeEffect in activeEffects)
{
if (!__instance.m_eqipmentStatusEffects.Contains(activeEffect))
backpackEffects.Add(activeEffect);
}

__instance.m_eqipmentStatusEffects.UnionWith(backpackEffects);
runningUpdateEquipmentStatusEffects = false;
}
}
public static bool HasStatusEffect(StatusEffect statusEffect)

[HarmonyPatch(typeof(SEMan), nameof(SEMan.RemoveStatusEffect), new[] { typeof(string), typeof(bool) })]
public static class RemoveStatusEffects
{
return activeEffects.Contains(statusEffect);

[UsedImplicitly]
[HarmonyPriority(Priority.First)]
public static bool Prefix(string name, ref bool __result)
{
if (activeEffects == null || !runningUpdateEquipmentStatusEffects)
return true;

if (activeEffects.Any(x => x.name.Equals(name)))
{
__result = false;
return false;
}

return true;
}
}
}


8 changes: 2 additions & 6 deletions AdventureBackpacks/Assets/Effects/Demister.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System.Collections.Generic;
using System.Linq;
using AdventureBackpacks.Assets.Factories;
using AdventureBackpacks.Assets.Factories;
using AdventureBackpacks.Extensions;
using BepInEx.Configuration;
using HarmonyLib;
Expand All @@ -11,7 +9,6 @@ namespace AdventureBackpacks.Assets.Effects;

public static class Demister
{

public static class Configuration
{
public static ConfigEntry<bool> EnabledEffect { get; private set;}
Expand Down Expand Up @@ -74,8 +71,7 @@ public static void Postfix(Humanoid __instance)
return;
}

var shouldHaveDemister = ShouldHaveDemister(__instance) || EquipmentEffectCache.HasStatusEffect(deMister);

var shouldHaveDemister = ShouldHaveDemister(__instance);
var hasDemister = player.m_eqipmentStatusEffects.Contains(deMister);

if (hasDemister && shouldHaveDemister)
Expand Down
7 changes: 2 additions & 5 deletions AdventureBackpacks/Assets/Effects/FeatherFall.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using System.Linq;
using AdventureBackpacks.Assets.Factories;
using AdventureBackpacks.Assets.Factories;
using AdventureBackpacks.Extensions;
using BepInEx.Configuration;
using HarmonyLib;
Expand Down Expand Up @@ -38,7 +37,6 @@ public static void RegisterEffectConfiguration(ConfigFile config)
}

}


public static bool ShouldHaveFeatherFall(Humanoid human)
{
Expand All @@ -58,7 +56,6 @@ public static bool ShouldHaveFeatherFall(Humanoid human)

return false;
}


[HarmonyPatch(typeof(Humanoid), nameof(Humanoid.UpdateEquipmentStatusEffects))]
[HarmonyBefore(new string[]{"randyknapp.mods.epicloot"})]
Expand All @@ -75,7 +72,7 @@ public static void Postfix(Humanoid __instance)
return;
}

var shouldHaveFeatherFall = ShouldHaveFeatherFall(__instance) || EquipmentEffectCache.HasStatusEffect(slowFall);;
var shouldHaveFeatherFall = ShouldHaveFeatherFall(__instance);
var hasFeatherFall = player.m_eqipmentStatusEffects.Contains(slowFall);

if (hasFeatherFall && shouldHaveFeatherFall)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ public BackpackBlackForest(string prefabName, string itemName) : base(prefabName
AddUpgradeIngredient("TrollHide", 3);
AddUpgradeIngredient("Bronze", 3);

Item.DropsFrom.Add("Greydwarf", 0.02f, 1);
Item.DropsFrom.Add("Greydwarf_Elite", 0.04f, 1);
Item.DropsFrom.Add("Greydwarf_Shaman", 0.04f, 1);
Item.DropsFrom.Add("Troll", 0.10f, 1);

RegisterShaderSwap();

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ public BackpackMeadows(string prefabName, string itemName) : base(prefabName , i
AddUpgradeIngredient("LeatherScraps", 5);
AddUpgradeIngredient("DeerHide", 3);

Item.DropsFrom.Add("Greyling", 0.02f, 1);

RegisterShaderSwap();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,12 @@ public BackpackMistlands(string prefabName, string itemName) : base(prefabName,
AddUpgradeIngredient("Eitr", 2);
AddUpgradeIngredient("Softtissue", 5);

Item.DropsFrom.Add("Dverger", 0.02f, 1);
Item.DropsFrom.Add("DvergerMage", 0.02f, 1);
Item.DropsFrom.Add("DvergerMageFire", 0.02f, 1);
Item.DropsFrom.Add("DvergerMageIce", 0.02f, 1);
Item.DropsFrom.Add("DvergerMageSupport", 0.02f, 1);

//RegisterShaderSwap();

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ public BackpackMountains(string prefabName, string itemName) : base(prefabName,
AddUpgradeIngredient("WolfPelt", 5);
AddUpgradeIngredient("Silver", 5);

Item.DropsFrom.Add("Fenring_Cultist", 0.02f, 1);
Item.DropsFrom.Add("Fenring", 0.08f, 1);

RegisterShaderSwap();

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ public BackpackPlains(string prefabName, string itemName) : base(prefabName, ite

AddUpgradeIngredient("LoxPelt", 2);
AddUpgradeIngredient("BlackMetal", 5);

Item.DropsFrom.Add("Goblin", 0.02f, 1);
Item.DropsFrom.Add("GoblinArcher", 0.02f, 1);
Item.DropsFrom.Add("GoblinBrute", 0.02f, 1);
Item.DropsFrom.Add("GoblinShaman", 0.02f, 1);

RegisterShaderSwap();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ public BackpackSwamp(string prefabName, string itemName) : base(prefabName, item
AddUpgradeIngredient("Bloodbag", 2);
AddUpgradeIngredient("Iron", 5);

Item.DropsFrom.Add("Draugr", 0.02f, 1);
Item.DropsFrom.Add("Draugr_Ranged", 0.04f, 1);
Item.DropsFrom.Add("Draugr_Elite", 0.04f, 1);
Item.DropsFrom.Add("Troll", 0.08f, 1);

RegisterShaderSwap();

}
Expand Down
4 changes: 2 additions & 2 deletions AdventureBackpacks/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.5.3.0")]
[assembly: AssemblyFileVersion("1.5.3.0")]
[assembly: AssemblyVersion("1.5.4.0")]
[assembly: AssemblyFileVersion("1.5.4.0")]
5 changes: 5 additions & 0 deletions PATCHNOTES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Adventure Backpacks Patchnotes

# 1.5.4.0
* French words have characters that are not allowed in BepInEx configs that was causing major start issues.
* I have fixed this by sanitizing words before making configs.
* Cleaned up the way I was patching Status Effects. More Robust and won't conflict with other mods.

# 1.5.3.0
* Found another instance of Feather Fall not working. Fixed.
* Found a bug in the Epic Loot Augmenter when changing enchants. Fixed.
Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ stage of maturity. This includes a backpack progression that will start at Meado


# Current Patch Notes
## 1.5.4.0
* French words have characters that are not allowed in BepInEx configs that was causing major start issues.
* I have fixed this by sanitizing words before making configs.
* Cleaned up the way I was patching Status Effects. More Robust and won't conflict with other mods.

## 1.5.3.0
* Found another instance of Feather Fall not working. Fixed.
Expand Down
14 changes: 12 additions & 2 deletions Vapok.Common/Managers/Configuration/ConfigSyncBase.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
using BepInEx.Configuration;
using System;
using System.Collections.Generic;
using BepInEx.Configuration;
using ServerSync;
using Vapok.Common.Abstractions;

Expand Down Expand Up @@ -59,12 +61,20 @@ protected ConfigSyncBase(IPluginInfo _mod)
if (_config == null || _configSync == null)
return null;

var configEntry = _config.Bind(group, configName, value, description);
var configEntry = _config.Bind(RemoveInvalidCharacters(group), RemoveInvalidCharacters(configName), value, description);

var syncedConfigEntry = _configSync.AddConfigEntry(configEntry);
syncedConfigEntry.SynchronizedConfig = synchronizedSetting;

return configEntry;
}

private static string RemoveInvalidCharacters(string sectionName)
{
var invalidCharacters = new List<char> { '\n', '\t', '"', '\'', '[', ']' };

invalidCharacters.ForEach(c => sectionName = sectionName.Replace(c.ToString(),String.Empty));
return sectionName;
}

}
2 changes: 1 addition & 1 deletion manifest.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "AdventureBackpacks",
"version_number": "1.5.3",
"version_number": "1.5.4",
"website_url": "https://github.com/Vapok/AdventureBackpacks",
"description": "A Valheim Mod to add a catalogue of Adventuring Backpacks to the Game. These packs will grow and become more useful as the game progresses.",
"dependencies": [
Expand Down

0 comments on commit 5bc332e

Please sign in to comment.