diff --git a/Mods/0-SCore/0-SCore.csproj b/Mods/0-SCore/0-SCore.csproj
index 7f1db3f8..0e2f092d 100644
--- a/Mods/0-SCore/0-SCore.csproj
+++ b/Mods/0-SCore/0-SCore.csproj
@@ -126,6 +126,7 @@
+
@@ -726,6 +727,7 @@
..\..\7DaysToDie_Data\Managed\LogLibrary.dll
False
+
..\..\7DaysToDie_Data\Managed\System.Xml.dll
False
@@ -825,7 +829,7 @@
False
- ..\..\..\..\Program Files (x86)\Steam\steamapps\common\7 Days To Die\7DaysToDie_Data\Managed\UnityEngine.TextRenderingModule.dll
+ ..\..\7DaysToDie_Data\Managed\UnityEngine.TextRenderingModule.dll
..\..\7DaysToDie_Data\Managed\UnityEngine.UI.dll
diff --git a/Mods/0-SCore/Config/Localization.txt b/Mods/0-SCore/Config/Localization.txt
index 4f7c2939..591b1dac 100644
--- a/Mods/0-SCore/Config/Localization.txt
+++ b/Mods/0-SCore/Config/Localization.txt
@@ -86,6 +86,8 @@ npcHasItems,"NPC has items in their inventory."
xuiSCoreUtilities,"SCore Utilities",""
xuiSCoreNPCSettings,"NPC Settings",""
xuiQuietNPC,"Mute NPC Footsteps",""
+xuiScoreUtilsNPCFootStep,"Mute NPC Footsteps",""
+xuiScoreUtilsNPCFootStepToolTip,"Mutes NPC Footsteps",""
xuiQuietNPCToolTip,"Mutes NPC Footsteps",""
xuiLockPickingSettings,"Lock Pick Settings",""
xuiNPCSettings,"NPC Settings",""
@@ -114,5 +116,5 @@ xuiSCoreUtilsDisableFlickeringLights,"Disable Flickering Lights",""
xuiSCoreUtilsDisableFlickeringLightsToolTip,"Disables Flickering Lights.",""
xuiPersonalSettings,"Personal Settings",""
xuiSCoreUtilsAutoRedeemChallenges,"Auto Redeem Challenges",""
-xuiSCoreUtilsAutoRedeemChallengesToolTip,"Auto Redeem Challanges as they complete.",""
+xuiSCoreUtilsAutoRedeemChallengesToolTip,"Auto Redeem Challenges as they complete.",""
ObjectiveBuffSDX_keyword,"Get",""
\ No newline at end of file
diff --git a/Mods/0-SCore/Config/blocks.xml b/Mods/0-SCore/Config/blocks.xml
index b7dc0047..cc22beb9 100644
--- a/Mods/0-SCore/Config/blocks.xml
+++ b/Mods/0-SCore/Config/blocks.xml
@@ -153,6 +153,7 @@
+
diff --git a/Mods/0-SCore/Harmony/EntityAlive/EntityAliveJiggleAdjustment.cs b/Mods/0-SCore/Harmony/EntityAlive/EntityAliveJiggleAdjustment.cs
new file mode 100644
index 00000000..3873850d
--- /dev/null
+++ b/Mods/0-SCore/Harmony/EntityAlive/EntityAliveJiggleAdjustment.cs
@@ -0,0 +1,24 @@
+using System.Collections.Generic;
+using HarmonyLib;
+using UnityEngine;
+
+namespace Harmony.EntityAlive {
+ // In vanilla, the jiggle script gets turned off at a pretty aggressive level.
+ // This will allow each entity to customize it's jiggle distance.
+ [HarmonyPatch(typeof(EModelBase))]
+ [HarmonyPatch("JiggleOn")]
+ public class EModelBaseJiggleOn {
+ private static bool Prefix(EModelBase __instance, ref bool _on) {
+ if (__instance.entity is not global::EntityAlive entityAlive) return true;
+
+ if (entityAlive.EntityClass.Properties.GetBool("AlwaysJiggle"))
+ _on = true;
+
+ if (entityAlive.EntityClass.Properties.GetBool("NeverScaleAI"))
+ entityAlive.aiActiveScale = 1f;
+
+ return true;
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/Mods/0-SCore/Harmony/FoodSpoilage/FoodSpoilage.cs b/Mods/0-SCore/Harmony/FoodSpoilage/FoodSpoilage.cs
index e2bb5407..92157993 100644
--- a/Mods/0-SCore/Harmony/FoodSpoilage/FoodSpoilage.cs
+++ b/Mods/0-SCore/Harmony/FoodSpoilage/FoodSpoilage.cs
@@ -97,9 +97,13 @@ private static float GetCurrentSpoilage(ItemValue itemValue) {
return 1f;
}
+ private static void SetSpoilageMax(ItemValue itemValue, float degradationMax) {
+ itemValue.SetMetadata(KeySpoilageAmount, degradationMax, TypedMetadataValue.TypeTag.Float);
+ }
private static float UpdateCurrentSpoilage(ItemValue itemValue, float spoiled) {
var currentSpoilageAmount = GetCurrentSpoilage(itemValue);
currentSpoilageAmount += spoiled;
+
itemValue.SetMetadata(KeySpoilageAmount, currentSpoilageAmount, TypedMetadataValue.TypeTag.Float);
return currentSpoilageAmount;
}
@@ -264,7 +268,6 @@ public static bool Prefix(XUiC_ItemStack __instance) {
strDisplay += " Spoilage Ticks Missed: " + totalSpoilageMultiplier;
strDisplay += " Total Spoilage: " + totalSpoilage;
- // If we don't want any degradation, skip this step.
currentSpoilage = UpdateCurrentSpoilage(itemValue, totalSpoilage);
// Update the NextSpoilageTick value
@@ -304,7 +307,6 @@ public static bool Prefix(XUiC_ItemStack __instance) {
}
var itemStackSpoiled = new ItemStack(ItemClass.GetItem(strSpoiledItem, false), count);
-
if (itemStackSpoiled?.itemValue?.ItemClass != null &&
itemStackSpoiled.itemValue.ItemClass.GetItemName() != itemClass.GetItemName())
{
@@ -316,12 +318,14 @@ public static bool Prefix(XUiC_ItemStack __instance) {
}
}
}
-
- if (itemStack.count > 2)
+ if (itemStack.count >= 2)
{
AdvLogging.DisplayLog(AdvFeatureClass, itemClass.GetItemName() + ": Reducing Stack by 1");
itemStack.count--;
- currentSpoilage = UpdateCurrentSpoilage(itemValue, -degradationMax);
+ currentSpoilage -= degradationMax;
+
+ // Reset the spoilage counter on the item.
+ SetSpoilageMax(itemValue,degradationMax);
}
else
{
@@ -330,7 +334,9 @@ public static bool Prefix(XUiC_ItemStack __instance) {
break; // Nothing more to spoil
}
}
-
+
+ // Set the current spoilage value.
+ SetSpoilageMax(itemValue,currentSpoilage);
__instance.ForceRefreshItemStack();
return true;
diff --git a/Mods/0-SCore/ModInfo.xml b/Mods/0-SCore/ModInfo.xml
index de65ceba..840e4b7f 100644
--- a/Mods/0-SCore/ModInfo.xml
+++ b/Mods/0-SCore/ModInfo.xml
@@ -5,5 +5,5 @@
-
+
\ No newline at end of file
diff --git a/Mods/0-SCore/Properties/AssemblyInfo.cs b/Mods/0-SCore/Properties/AssemblyInfo.cs
index 05c2d417..d246ac5b 100644
--- a/Mods/0-SCore/Properties/AssemblyInfo.cs
+++ b/Mods/0-SCore/Properties/AssemblyInfo.cs
@@ -38,5 +38,5 @@
// [assembly: AssemblyVersion("1.0.*")]
//[assembly: AssemblyVersion("20.0.*")]
-[assembly: AssemblyVersion("1.0.32.0940")]
-[assembly: AssemblyFileVersion("1.0.32.0940")]
+[assembly: AssemblyVersion("1.0.37.1500")]
+[assembly: AssemblyFileVersion("1.0.37.1500")]
diff --git a/Mods/0-SCore/ReadMe.md b/Mods/0-SCore/ReadMe.md
index 7bb158ec..c8234a65 100644
--- a/Mods/0-SCore/ReadMe.md
+++ b/Mods/0-SCore/ReadMe.md
@@ -23,6 +23,25 @@ Direct Download to the 0-SCore.zip available on gitlab mirror:
### Change Logs
[ Change Log ]
+Version: 1.0.37.1432
+ [ Localization ]
+ - Updated some missing localization entries.
+
+ [ Food Spoilage ]
+ - Fixed an issue where a stack was smapping unlimited rotten meat
+ - Issue was related to the Spoilage meter on an item not being reset properly after each spoiled item.
+
+ [ Jiggle Adjustments ]
+ - If you are under 18, stop reading.
+ - This is mostly for xyth, who is more assuredly considered old enough to view.
+ - Exposed two properties for EntityAlive's:
+
+
+
+
+
+
+
Version: 1.0.32.940
[ CompoPackTweaks ]
diff --git a/Mods/0-SCore/SCore.dll b/Mods/0-SCore/SCore.dll
index c3fc4053..743ddfc1 100644
Binary files a/Mods/0-SCore/SCore.dll and b/Mods/0-SCore/SCore.dll differ
diff --git a/Mods/0-SCore/SCore.pdb b/Mods/0-SCore/SCore.pdb
index 72868d6d..e3c220d5 100644
Binary files a/Mods/0-SCore/SCore.pdb and b/Mods/0-SCore/SCore.pdb differ
diff --git a/Mods/0-SCore/Scripts/Blocks/BlockPickUpAndReplace.cs b/Mods/0-SCore/Scripts/Blocks/BlockPickUpAndReplace.cs
index a804893f..22d33cb8 100644
--- a/Mods/0-SCore/Scripts/Blocks/BlockPickUpAndReplace.cs
+++ b/Mods/0-SCore/Scripts/Blocks/BlockPickUpAndReplace.cs
@@ -19,14 +19,14 @@ public override void Init() {
if (Properties.Values.ContainsKey("PickUpBlock")) pickupBlock = Properties.GetString("PickUpBlock");
if (Properties.Values.ContainsKey("ValidMaterials")) validMaterials = Properties.GetString("ValidMaterials");
if (Properties.Values.ContainsKey("TakeWithTool")) takeWithTool = Properties.GetString("TakeWithTool");
- if (Properties.Values.ContainsKey("CheckToolForMaterial")) validateToolToMaterial = Properties.GetBool("CheckToolForMaterial");
-
+ if (Properties.Values.ContainsKey("CheckToolForMaterial"))
+ validateToolToMaterial = Properties.GetBool("CheckToolForMaterial");
}
// Override the on Block activated, so we can pop up our timer
public override bool OnBlockActivated(WorldBase world, int clrIdx, Vector3i blockPos,
BlockValue blockValue, EntityPlayerLocal player) {
- if (!ValidMaterialCheck(blockValue,player)) return false;
+ if (!ValidMaterialCheck(blockValue, player)) return false;
TakeItemWithTimer(clrIdx, blockPos, blockValue, player);
return true;
}
@@ -120,7 +120,6 @@ public void TakeItemWithTimer(int _cIdx, Vector3i _blockPos, BlockValue _blockVa
break;
}
-
xuiCTimer.SetTimer(newTakeTime, timerEventData);
}
@@ -132,6 +131,7 @@ private bool ValidMaterialCheck(BlockValue blockValue, EntityAlive entityAlive)
{
return entityAlive.inventory.holdingItem.HasAnyTags(FastTags.Parse(blockMaterial.id));
}
+
// Check to see if the material is valid to pick up
foreach (var material in validMaterials.Split(','))
{
diff --git a/Mods/0-SCore/Scripts/XUiC/Companions/XUiC_SCoreCompanionList.cs b/Mods/0-SCore/Scripts/XUiC/Companions/XUiC_SCoreCompanionList.cs
index dd1364ac..ea48db0d 100644
--- a/Mods/0-SCore/Scripts/XUiC/Companions/XUiC_SCoreCompanionList.cs
+++ b/Mods/0-SCore/Scripts/XUiC/Companions/XUiC_SCoreCompanionList.cs
@@ -1,6 +1,4 @@
using System.Collections.Generic;
-using System.Windows.Forms.VisualStyles;
-using UnityEngine;
public class XUiC_SCoreCompanionList : XUiController
{