[1.0] XND's RimWorld Mods - Updated 2019-10-06

Started by XeoNovaDan, January 13, 2017, 10:48:53 AM

Previous topic - Next topic

vandal

i really like this new mod. congrats on finally getting it out in full xeo

XeoNovaDan

I appreciate the support!




Anyway, there's a new test version of Survival Tools on GitHub which offers many improvements over the current release version of it (e.g. balance, usability, functionality with some other mods).

It's not complete enough to be an official release, but there's enough there to be playable and is already quite a big update.

Link: https://github.com/XeoNovaDan/SurvivalTools/releases/tag/v1.1-pre1

Namsan

I have a suggestion for your Targeting Mode mod.

I think colonists should be able to hit the targeted part of an incapacitated enemy in 100% chance, like Dwarf Fortress's adventure mode.

I sometimes order my colonists to destroy legs of downed enemies because installing peglegs costs some medicines...
But colonists can't hit their legs often, despite they can't move at all.
So I made this suggestion.
Hello

ptx

Your survival tools is the first that recognize a tree is different from a shrub, and gives appropriate solution.

Just one thing, it would be cool to give survival tools' abilities to ordinary weapons, like dwarven axes from LoTR dwarves, hobbit's anklebitter or numerous Medieval Times weapons. Chopping down a tree using a dwarven axe should be faster, and since it's dwarven made, should also last longer. Although, that cannot be done right now, I've tried. Maybe for future releases.

And I do hope Targeting Modes works on the next CE release. That can actually make longer range rifles more relevant, instead of just carrying MGs.

Great job, XND!

HSneak

I love your mod ! especially since you added a modifier for items degradation, was regretting putting them to unlimited use, but now at least I can control how much they degrade !

One thing; could it be possible to add compatibility with Dubs Bad Hygiene mod ? since pawns remove all their clothes (belts) when taking a shower, making them drop tools, they don't take them back, instead they haul them to a stockpile zone, so either make the belt stays somehow, or perhaps force them to find tools before doing anything else ? this way they would equip their tool after they drop it (I correctly assigned them their tools).

Last thing, perhaps by default they should have "Nothing" assigned, instead of anything, this way tools stay in stockpiles until a real "specialist" take them.

XeoNovaDan

@Namsan - Yep, sounds like a good idea! Will look into it at some point.

@ptx - I think anything beyond patching materials and job drivers from other mods is a tad out of my scope for Survival Tools; I'll leave it to anybody else for that. That being said, glad you're enjoying and thanks for the support :)

@HSneak - Sure thing with the hygiene compatibility! Might be tricky designing it in a way that isn't exploitable, but I'll give it a shot.

Regarding default, I'll see if I can squeeze in compatibility with Better Pawn Control for that, which I'll ask the author about. IMO setting default tool assignment to nothing would be like the game's default outfit being nudist, but I guess that's kinda apples to pears.

rrexau

I have a question about the survival tool, is it possible to hide those "Colonists lack tools" message? I assign a colonist work on the farm or chop tree, but she is set to be no violence, so she cannot use weapons. Because of this, those message are keep showing.

XeoNovaDan

@rrexau - Non-violents can still pick up tools and therefore use them. Survival Tools isn't like other tool mods where colonists *have* to equip the tools.

Asero

#218
Still, the problem for me is that you have to craft/equip redundant tools for almost every pawn (even if they don't use it)
just to make the 'Colonists lack tools' message finally go away.

Hjkma

Hi, sorry for being stupid, but I can't find anywhere where to craft tools? I built a stonecutter's table and electric tailoring bench, but did not find there the tools to craft them. In addition to them, there is nothing relevant in the Production tab. Is it necessary to investigate something in the research tab? I tried to search there, but I installed many mods and there are a lot of technologies and I can't find something similar for crafting tools. Help me please.

Canute

Hjkma,
from the first posting
QuoteMost tools can be produced at crafting spots or smithies,
And the HelpTab mod is a nice information source ingame, just search for a tool and show you the recipe, the workbench and nessesary researches.

XeoNovaDan

Survival Tools has been updated to v1.1

Shortened changelog (full viewable on GitHub and Steam):
* New tool optimization system (configurable like outfits); no more tedious micromanagement!
* Added tool belts which allows for 2 more tools to be carried in the inventory
* Tool degradation rate has been reduced by 25% overall
* Chinese translation by fatestartnight
* Proper support for many mods (Fluffy Breakdowns, Quarry, Glitter Tech and many more!)

Main Thread: https://ludeon.com/forums/index.php?topic=29503.msg445544#msg445544
Steam: https://steamcommunity.com/sharedfiles/filedetails/?id=1566269698

Dr_Zhivago

Quote from: XeoNovaDan on November 26, 2018, 09:01:41 PM
Survival Tools has been updated to v1.1

New errors since the update:
*You can ignore the extra "+", only showing the missing column*



Could not execute post-long-event action. Exception: System.TypeInitializationException: An exception was thrown by the type initializer for SurvivalTools.HarmonyPatches ---> System.Exception: Exception from HarmonyInstance "XeoNovaDan.SurvivalTools" ---> System.InvalidCastException: Cannot cast from source type to destination type.
  at SurvivalTools.HarmonyPatches+<Transpile_DrawThingRow>d__19.MoveNext () [0x00000] in <filename unknown>:0
  at System.Linq.Enumerable+<CreateCastIterator>c__Iterator0`1[System.Object].MoveNext () [0x00000] in <filename unknown>:0
  at System.Collections.Generic.List`1[System.Object].AddEnumerable (IEnumerable`1 enumerable) [0x00000] in <filename unknown>:0
  at System.Collections.Generic.List`1[System.Object]..ctor (IEnumerable`1 collection) [0x00000] in <filename unknown>:0
  at System.Linq.Enumerable.ToList[Object] (IEnumerable`1 source) [0x00000] in <filename unknown>:0
  at Harmony.CodeTranspiler+<ConvertToOurInstructions>d__7.MoveNext () [0x00000] in <filename unknown>:0
  at System.Linq.Enumerable+<CreateCastIterator>c__Iterator0`1[Harmony.CodeInstruction].MoveNext () [0x00000] in <filename unknown>:0
  at System.Collections.Generic.List`1[Harmony.CodeInstruction].AddEnumerable (IEnumerable`1 enumerable) [0x00000] in <filename unknown>:0
  at System.Collections.Generic.List`1[Harmony.CodeInstruction]..ctor (IEnumerable`1 collection) [0x00000] in <filename unknown>:0
  at System.Linq.Enumerable.ToList[CodeInstruction] (IEnumerable`1 source) [0x00000] in <filename unknown>:0
  at Harmony.CodeTranspiler.GetResult (System.Reflection.Emit.ILGenerator generator, System.Reflection.MethodBase method) [0x00000] in <filename unknown>:0
  at Harmony.ILCopying.MethodBodyReader.FinalizeILCodes (System.Collections.Generic.List`1 transpilers, System.Collections.Generic.List`1 endLabels, System.Collections.Generic.List`1 endBlocks) [0x00000] in <filename unknown>:0
  at Harmony.ILCopying.MethodCopier.Finalize (System.Collections.Generic.List`1 endLabels, System.Collections.Generic.List`1 endBlocks) [0x00000] in <filename unknown>:0
  at Harmony.MethodPatcher.CreatePatchedMethod (System.Reflection.MethodBase original, System.String harmonyInstanceID, System.Collections.Generic.List`1 prefixes, System.Collections.Generic.List`1 postfixes, System.Collections.Generic.List`1 transpilers) [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at Harmony.MethodPatcher.CreatePatchedMethod (System.Reflection.MethodBase original, System.String harmonyInstanceID, System.Collections.Generic.List`1 prefixes, System.Collections.Generic.List`1 postfixes, System.Collections.Generic.List`1 transpilers) [0x00000] in <filename unknown>:0
  at Harmony.PatchFunctions.UpdateWrapper (System.Reflection.MethodBase original, Harmony.PatchInfo patchInfo, System.String instanceID) [0x00000] in <filename unknown>:0
  at Harmony.PatchProcessor.Patch () [0x00000] in <filename unknown>:0
  at Harmony.HarmonyInstance.Patch (System.Reflection.MethodBase original, Harmony.HarmonyMethod prefix, Harmony.HarmonyMethod postfix, Harmony.HarmonyMethod transpiler) [0x00000] in <filename unknown>:0
  at SurvivalTools.HarmonyPatches..cctor () [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at (wrapper managed-to-native) System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor (intptr)
  at System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor (RuntimeTypeHandle type) [0x00000] in <filename unknown>:0
  at Verse.StaticConstructorOnStartupUtility.CallAll () [0x00000] in <filename unknown>:0
  at Verse.PlayDataLoader.<DoPlayLoad>m__2 () [0x00000] in <filename unknown>:0
  at Verse.LongEventHandler.ExecuteToExecuteWhenFinished () [0x00000] in <filename unknown>:0
Verse.Log:Error(String, Boolean)
Verse.LongEventHandler:ExecuteToExecuteWhenFinished()
Verse.LongEventHandler:UpdateCurrentAsynchronousEvent()
Verse.LongEventHandler:LongEventsUpdate(Boolean&)
Verse.Root:Update_Patch1(Object)
Verse.Root_Entry:Update()


[HugsLib][ERR] Failed to apply Harmony patches for HugsLib.SimpleSidearms. Exception was: System.Exception: Exception from HarmonyInstance "HugsLib.SimpleSidearms" ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: An exception was thrown by the type initializer for SurvivalTools.HarmonyPatches ---> System.Exception: Exception from HarmonyInstance "XeoNovaDan.SurvivalTools" ---> System.InvalidCastException: Cannot cast from source type to destination type.
  at SurvivalTools.HarmonyPatches+<Transpile_DrawThingRow>d__19.MoveNext () [0x00000] in <filename unknown>:0
  at System.Linq.Enumerable+<CreateCastIterator>c__Iterator0`1[System.Object].MoveNext () [0x00000] in <filename unknown>:0
  at System.Collections.Generic.List`1[System.Object].AddEnumerable (IEnumerable`1 enumerable) [0x00000] in <filename unknown>:0
  at System.Collections.Generic.List`1[System.Object]..ctor (IEnumerable`1 collection) [0x00000] in <filename unknown>:0
  at System.Linq.Enumerable.ToList[Object] (IEnumerable`1 source) [0x00000] in <filename unknown>:0
  at Harmony.CodeTranspiler+<ConvertToOurInstructions>d__7.MoveNext () [0x00000] in <filename unknown>:0
  at System.Linq.Enumerable+<CreateCastIterator>c__Iterator0`1[Harmony.CodeInstruction].MoveNext () [0x00000] in <filename unknown>:0
  at System.Collections.Generic.List`1[Harmony.CodeInstruction].AddEnumerable (IEnumerable`1 enumerable) [0x00000] in <filename unknown>:0
  at System.Collections.Generic.List`1[Harmony.CodeInstruction]..ctor (IEnumerable`1 collection) [0x00000] in <filename unknown>:0
  at System.Linq.Enumerable.ToList[CodeInstruction] (IEnumerable`1 source) [0x00000] in <filename unknown>:0
  at Harmony.CodeTranspiler.GetResult (System.Reflection.Emit.ILGenerator generator, System.Reflection.MethodBase method) [0x00000] in <filename unknown>:0
  at Harmony.ILCopying.MethodBodyReader.FinalizeILCodes (System.Collections.Generic.List`1 transpilers, System.Collections.Generic.List`1 endLabels, System.Collections.Generic.List`1 endBlocks) [0x00000] in <filename unknown>:0
  at Harmony.ILCopying.MethodCopier.Finalize (System.Collections.Generic.List`1 endLabels, System.Collections.Generic.List`1 endBlocks) [0x00000] in <filename unknown>:0
  at Harmony.MethodPatcher.CreatePatchedMethod (System.Reflection.MethodBase original, System.String harmonyInstanceID, System.Collections.Generic.List`1 prefixes, System.Collections.Generic.List`1 postfixes, System.Collections.Generic.List`1 transpilers) [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at Harmony.MethodPatcher.CreatePatchedMethod (System.Reflection.MethodBase original, System.String harmonyInstanceID, System.Collections.Generic.List`1 prefixes, System.Collections.Generic.List`1 postfixes, System.Collections.Generic.List`1 transpilers) [0x00000] in <filename unknown>:0
  at Harmony.PatchFunctions.UpdateWrapper (System.Reflection.MethodBase original, Harmony.PatchInfo patchInfo, System.String instanceID) [0x00000] in <filename unknown>:0
  at Harmony.PatchProcessor.Patch () [0x00000] in <filename unknown>:0
  at Harmony.HarmonyInstance.Patch (System.Reflection.MethodBase original, Harmony.HarmonyMethod prefix, Harmony.HarmonyMethod postfix, Harmony.HarmonyMethod transpiler) [0x00000] in <filename unknown>:0
  at SurvivalTools.HarmonyPatches..cctor () [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at (wrapper managed-to-native) System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor (intptr)
  at System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor (RuntimeTypeHandle type) [0x00000] in <filename unknown>:0
  at Verse.StaticConstructorOnStartupUtility.CallAll () [0x00000] in <filename unknown>:0
  at Verse.PlayDataLoader.<DoPlayLoad>m__2 () [0x00000] in <filename unknown>:0
  at Verse.LongEventHandler.ExecuteToExecuteWhenFinished () [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0
  at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <filename unknown>:0
  at Harmony.CodeTranspiler+<>c__DisplayClass10_0.<GetResult>b__0 (System.Reflection.MethodInfo transpiler) [0x00000] in <filename unknown>:0
  at System.Collections.Generic.List`1[System.Reflection.MethodInfo].ForEach (System.Action`1 action) [0x00000] in <filename unknown>:0
  at Harmony.CodeTranspiler.GetResult (System.Reflection.Emit.ILGenerator generator, System.Reflection.MethodBase method) [0x00000] in <filename unknown>:0
  at Harmony.ILCopying.MethodBodyReader.FinalizeILCodes (System.Collections.Generic.List`1 transpilers, System.Collections.Generic.List`1 endLabels, System.Collections.Generic.List`1 endBlocks) [0x00000] in <filename unknown>:0
  at Harmony.ILCopying.MethodCopier.Finalize (System.Collections.Generic.List`1 endLabels, System.Collections.Generic.List`1 endBlocks) [0x00000] in <filename unknown>:0
  at Harmony.MethodPatcher.CreatePatchedMethod (System.Reflection.MethodBase original, System.String harmonyInstanceID, System.Collections.Generic.List`1 prefixes, System.Collections.Generic.List`1 postfixes, System.Collections.Generic.List`1 transpilers) [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at Harmony.MethodPatcher.CreatePatchedMethod (System.Reflection.MethodBase original, System.String harmonyInstanceID, System.Collections.Generic.List`1 prefixes, System.Collections.Generic.List`1 postfixes, System.Collections.Generic.List`1 transpilers) [0x00000] in <filename unknown>:0
  at Harmony.PatchFunctions.UpdateWrapper (System.Reflection.MethodBase original, Harmony.PatchInfo patchInfo, System.String instanceID) [0x00000] in <filename unknown>:0
  at Harmony.PatchProcessor.Patch () [0x00000] in <filename unknown>:0
  at Harmony.HarmonyInstance.<PatchAll>b__9_0 (System.Type type) [0x00000] in <filename unknown>:0
  at Harmony.CollectionExtensions.Do[Type] (IEnumerable`1 sequence, System.Action`1 action) [0x00000] in <filename unknown>:0
  at Harmony.HarmonyInstance.PatchAll (System.Reflection.Assembly assembly) [0x00000] in <filename unknown>:0
  at HugsLib.ModBase.ApplyHarmonyPatches () [0x00000] in <filename unknown>:0
Verse.Log:Error(String, Boolean)
HugsLib.Utils.ModLogger:Error(String, Object[])
HugsLib.ModBase:ApplyHarmonyPatches()
HugsLib.HugsLibController:EnumerateChildMods(Boolean)
HugsLib.HugsLibController:LoadReloadInitialize()
Verse.LongEventHandler:RunEventFromAnotherThread(Action)
Verse.LongEventHandler:<UpdateCurrentAsynchronousEvent>m__1()


Share Logs Link

XeoNovaDan

Looking into fixing this now. Could be difficult though since it's a transpiler, but it could also be really easy.

XeoNovaDan

Alright, I believe it's been fixed now after some quick reproduction testing and thankfully it was an easy fix.