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 {