[1.0] What the Hack?! v1.2 - last update: May 30, 2019

Started by Roolo, September 07, 2018, 03:25:51 PM

Previous topic - Next topic

Roolo

Quote from: platipuss on September 10, 2018, 06:27:40 AM
hello

I just want to report that when I use this mod you can play with out a problem until the first raid. just before I got the first raid to my colony I took a save if I activate the mod game crashes before the "raid" box appear, when I deactivate the mod and raid comes and continue playing without any issue.

maybe this is happening just to me or I'm using lot of mods and some of those have conflict with this one, I don't know.

Hmm, based on this it seems very likely to me that you're using the wrong version of Rimworld. Could you open up the game, look at the top left corner (when you're in the main menu), and see if it says: Version 0.19.2009?

rawrfisher

Where you able to replicate it at least?
Professional jerk
Want something broken let me know

Roolo

Quote from: rawrfisher on September 10, 2018, 09:53:06 AM
Where you able to replicate it at least?

I did notice that when you scroll down far enough the faction selection buttons seem to disappear until you scroll up again.

rawrfisher


JobDriver threw exception in initAction for pawn Rose driver=JobDriver_DoBill (toilIndex=13) driver.job=(DoBill (Job_4247879) A=Thing_Vanya_DroidBeta449452 B=Thing_WTH_MechanoidParts679410 C=(109, 0, 129)) lastJobGiver=Verse.AI.ThinkNode_QueuedJob
System.NullReferenceException: Object reference not set to an instance of an object
  at WhatTheHack.Recipes.Recipe_HackMechanoid.HealToStanding (Verse.Pawn pawn, Verse.BodyPartRecord part) [0x00000] in <filename unknown>:0
  at WhatTheHack.Recipes.Recipe_HackMechanoid.HackingFailEvent (Verse.Pawn hackee, Verse.BodyPartRecord part, System.Random r) [0x00000] in <filename unknown>:0
  at WhatTheHack.Recipes.Recipe_Hacking.CheckHackingFail (Verse.Pawn hackee, Verse.Pawn hacker, Verse.BodyPartRecord part) [0x00000] in <filename unknown>:0
  at WhatTheHack.Recipes.Recipe_Hacking.ApplyOnPawn (Verse.Pawn pawn, Verse.BodyPartRecord part, Verse.Pawn billDoer, System.Collections.Generic.List`1 ingredients, RimWorld.Bill bill) [0x00000] in <filename unknown>:0
  at RimWorld.Bill_Medical.Notify_IterationCompleted (Verse.Pawn billDoer, System.Collections.Generic.List`1 ingredients) [0x00000] in <filename unknown>:0
  at Verse.AI.Toils_Recipe+<FinishRecipeAndStartStoringProduct>c__AnonStorey2.<>m__0 () [0x00000] in <filename unknown>:0
  at Verse.AI.JobDriver.TryActuallyStartNextToil () [0x00000] in <filename unknown>:0
Verse.Log:Error(String, Boolean)
Verse.AI.JobUtility:TryStartErrorRecoverJob(Pawn, String, Exception, JobDriver)
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.<DoRecipeWork>c__AnonStorey1:<>m__1()
Verse.AI.JobDriver:DriverTick()
Verse.AI.Pawn_JobTracker:JobTrackerTick()
Verse.Pawn:Tick_Patch1(Object)
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()


Probly nothing but have fun glossing over this one
Professional jerk
Want something broken let me know

Roolo

Quote from: rawrfisher on September 11, 2018, 04:02:05 PM

JobDriver threw exception in initAction for pawn Rose driver=JobDriver_DoBill (toilIndex=13) driver.job=(DoBill (Job_4247879) A=Thing_Vanya_DroidBeta449452 B=Thing_WTH_MechanoidParts679410 C=(109, 0, 129)) lastJobGiver=Verse.AI.ThinkNode_QueuedJob
System.NullReferenceException: Object reference not set to an instance of an object
  at WhatTheHack.Recipes.Recipe_HackMechanoid.HealToStanding (Verse.Pawn pawn, Verse.BodyPartRecord part) [0x00000] in <filename unknown>:0
  at WhatTheHack.Recipes.Recipe_HackMechanoid.HackingFailEvent (Verse.Pawn hackee, Verse.BodyPartRecord part, System.Random r) [0x00000] in <filename unknown>:0
  at WhatTheHack.Recipes.Recipe_Hacking.CheckHackingFail (Verse.Pawn hackee, Verse.Pawn hacker, Verse.BodyPartRecord part) [0x00000] in <filename unknown>:0
  at WhatTheHack.Recipes.Recipe_Hacking.ApplyOnPawn (Verse.Pawn pawn, Verse.BodyPartRecord part, Verse.Pawn billDoer, System.Collections.Generic.List`1 ingredients, RimWorld.Bill bill) [0x00000] in <filename unknown>:0
  at RimWorld.Bill_Medical.Notify_IterationCompleted (Verse.Pawn billDoer, System.Collections.Generic.List`1 ingredients) [0x00000] in <filename unknown>:0
  at Verse.AI.Toils_Recipe+<FinishRecipeAndStartStoringProduct>c__AnonStorey2.<>m__0 () [0x00000] in <filename unknown>:0
  at Verse.AI.JobDriver.TryActuallyStartNextToil () [0x00000] in <filename unknown>:0
Verse.Log:Error(String, Boolean)
Verse.AI.JobUtility:TryStartErrorRecoverJob(Pawn, String, Exception, JobDriver)
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.<DoRecipeWork>c__AnonStorey1:<>m__1()
Verse.AI.JobDriver:DriverTick()
Verse.AI.Pawn_JobTracker:JobTrackerTick()
Verse.Pawn:Tick_Patch1(Object)
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()


Probly nothing but have fun glossing over this one

Thanks for reporting. Did the mech become active like how it's intended when this happened or did nothing happen? Was it a vanilla or a modded mech?

Kriyppler

#20
Really cool mod, I love it. How can I get more mechanoid parts? I thought there'd be a way to craft them but I can't see anything of the sorts in research. Can we only get them from salvaging mechs and advanced chips? I haven't been able to play with this mod much because of that. Does it cost mechanoid parts to maintain them aswell?

rawrfisher

#21
Yes it was a modded mech and no it did not become active.  Originally I was gonna type somthing different but then I realized I misread your comment.


System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object
  at Verse.VerbTracker.CreateVerbTargetCommand (Verse.Thing ownerThing, Verse.Verb verb) [0x00000] in <filename unknown>:0
  at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (object,object[],System.Exception&)
  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
  --- End of inner exception stack trace ---
at System.Reflection.MonoMethod.Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) <0x0023b>
at System.Reflection.MethodBase.Invoke (object,object[]) <0x0002f>
at CompVehicle.HarmonyCompVehicle/<GetVerbsCommands>d__43.MoveNext () <0x002f7>
at Verse.Pawn_EquipmentTracker/<GetGizmos>c__Iterator1.MoveNext () <0x00269>
at Verse.Pawn/<GetGizmos>c__Iterator2.MoveNext () <0x006f3>
at TargetingModes.HarmonyPatches/<ModifiedGizmoEnumerable>d__5.MoveNext () <0x0011f>
at System.Collections.Generic.List`1<Verse.Gizmo>.AddEnumerable (System.Collections.Generic.IEnumerable`1<Verse.Gizmo>) <0x000d7>
at System.Collections.Generic.List`1<Verse.Gizmo>..ctor (System.Collections.Generic.IEnumerable`1<Verse.Gizmo>) <0x000e5>
at System.Linq.Enumerable.ToList<Verse.Gizmo> (System.Collections.Generic.IEnumerable`1<Verse.Gizmo>) <0x00070>
at WhatTheHack.Harmony.Pawn_GetGizmos.Postfix (System.Collections.Generic.IEnumerable`1<Verse.Gizmo>&,Verse.Pawn) <0x00034>
at (wrapper dynamic-method) Verse.Pawn.GetGizmos_Patch8 (object) <0x0010a>
at (wrapper dynamic-method) RimWorld.InspectGizmoGrid.DrawInspectGizmoGridFor_Patch0 (System.Collections.Generic.IEnumerable`1<object>,Verse.Gizmo&) <0x0024f>

Verse.Log:Error(String, Boolean)
Verse.Log:ErrorOnce(String, Int32, Boolean)
RimWorld.InspectGizmoGrid:DrawInspectGizmoGridFor_Patch0(IEnumerable`1, Gizmo&)
RimWorld.MainTabWindow_Inspect:DrawInspectGizmos()
RimWorld.InspectPaneUtility:ExtraOnGUI(IInspectPane)
RimWorld.MainTabWindow_Inspect:ExtraOnGUI()
Verse.WindowStack:WindowStackOnGUI()
RimWorld.UIRoot_Play:UIRootOnGUI()
Verse.Root:OnGUI()


and

Root level exception in OnGUI(): System.NullReferenceException: Object reference not set to an instance of an object
at (wrapper dynamic-method) RimWorld.StatWorker.IsDisabledFor_Patch1 (object,Verse.Thing) <0x0022b>
at (wrapper dynamic-method) RimWorld.StatWorker.GetValueUnfinalized_Patch1 (object,RimWorld.StatRequest,bool) <0x00067>
at RimWorld.StatWorker.GetValue (RimWorld.StatRequest,bool) <0x0014a>
at RimWorld.StatWorker.GetValue (Verse.Thing,bool) <0x00070>
at (wrapper dynamic-method) RimWorld.StatExtension.GetStatValue_Patch1 (Verse.Thing,RimWorld.StatDef,bool) <0x00066>
at (wrapper dynamic-method) Verse.ShotReport.HitFactorFromShooter_Patch1 (Verse.Thing,single) <0x0007e>
at (wrapper dynamic-method) Verse.ShotReport.HitReportFor_Patch1 (Verse.Thing,Verse.Verb,Verse.LocalTargetInfo) <0x002ad>
at Verse.TooltipUtility.ShotCalculationTipString (Verse.Thing) <0x004a1>
at Verse.TooltipGiverList.DispenseAllThingTooltips () <0x00483>
at RimWorld.MapInterface.MapInterfaceOnGUI_BeforeMainTabs () <0x0019e>
at RimWorld.UIRoot_Play.UIRootOnGUI () <0x0009c>
at Verse.Root.OnGUI () <0x00112>

Verse.Log:Error(String, Boolean)
Verse.Root:OnGUI()


Error 1 is the result of me just being a spaz lol
Error 2 is caused when selecting a mech that I removed the hacked poorly on that didnt have targeting hacked applied previously and yes I do that on mechs I don't want to risk losing anytime soon

Should mention that Error 2 stack trace does provide some context that is often missed.  Mostly related to errors that have 2 different expressions. 
Error 1 Was caused by me removing the targeting hacked poorly on a mech that wasn't hacked initially. 
Error 2 results in the UI being removed while the mech is selected but comes back after the mech is unselected
Professional jerk
Want something broken let me know

Roolo

#22
Quote from: Kriyppler on September 12, 2018, 02:13:54 AM
Really cool mod, I love it. How can I get more mechanoid parts? I thought there'd be a way to craft them but I can't see anything of the sorts in research. Can we only get them from salvaging mechs and advanced chips? I haven't been able to play with this mod much because of that. Does it cost mechanoid parts to maintain them aswell?

Thanks! You can also buy them at outlander towns and from exotic goods traders if you're running out.
During early-mid game they're quite rare, as you won't get raided by mechs that often then. But as the game progresses, they'll become more abundant. Let me know if you feel they're still too rare to your taste during late game. And yes, maintenance also costs a few parts.

Allowing players to craft mechanoid parts would compromise balance too much, and take a way the danger of housing deadly mechanoids. Also, it would encourage an in my opinion boring resource grind.

@rawfisher. Thanks. I really appreciate your reports :). How did you remove the targeting hacked poorly hediff? Just trough the dev console?

rawrfisher

#23
Yup
Also somthing i noticed over time was if an error starts with Root level exception it tends to be a god mod or dev mode Command related instance. 
There are bugs which express multiple ways depending how its triggered. 
examples if such is my run ins with bugs that prevent items from being constructed.
God mode in those generate root level exceptions while trying normally generates a different one which I dont remember off hand.


Cant seem to get colonists to hack.  I try force hack it wont give me any options
I try letting em derp around till they get to it nothing happens.
Logs being flooded by unrelated errors so if theres one in it I will have a hard time finding it

Seems its related to the savegame I was on.


Exception in BreadthFirstTraverse: System.NullReferenceException: Object reference not set to an instance of an object
at SmartMedicine.InventorySurgery/<>c.<Postfix>b__0_0 (Verse.Thing) <0x00048>
at SmartMedicine.InventorySurgery.Postfix (Verse.Pawn,Verse.Thing,System.Collections.Generic.List`1<Verse.Thing>,Verse.Map) <0x00205>
at (wrapper dynamic-method) RimWorld.WorkGiver_DoBill.AddEveryMedicineToRelevantThings_Patch1 (Verse.Pawn,Verse.Thing,System.Collections.Generic.List`1<Verse.Thing>,System.Predicate`1<Verse.Thing>,Verse.Map) <0x002f1>
at (wrapper delegate-invoke) RIMMSqol.performance.workgiver_dobill.WorkGiver_DoBill_TryFindBestBillIngredients/AddEveryMedicineToRelevantThingsType.invoke_void__this___Pawn_Thing_List`1<Thing>_Predicate`1<Thing>_Map (Verse.Pawn,Verse.Thing,System.Collections.Generic.List`1<Verse.Thing>,System.Predicate`1<Verse.Thing>,Verse.Map) <0x00093>
at RIMMSqol.performance.workgiver_dobill.WorkGiver_DoBill_TryFindBestBillIngredients.Prefix (RimWorld.Bill,Verse.Pawn,Verse.Thing,System.Collections.Generic.List`1<Verse.ThingCount>,bool&) <0x008aa>
at (wrapper dynamic-method) RimWorld.WorkGiver_DoBill.TryFindBestBillIngredients_Patch7 (RimWorld.Bill,Verse.Pawn,Verse.Thing,System.Collections.Generic.List`1<Verse.ThingCount>) <0x0007d>
at (wrapper dynamic-method) RimWorld.WorkGiver_DoBill.StartOrResumeBillJob_Patch0 (object,Verse.Pawn,RimWorld.IBillGiver) <0x004b0>
at RimWorld.WorkGiver_DoBill.JobOnThing (Verse.Pawn,Verse.Thing,bool) <0x00356>
at RimWorld.WorkGiver_Scanner.HasJobOnThing (Verse.Pawn,Verse.Thing,bool) <0x00031>
at PrisonLabor.HarmonyPatches.Patch_LaborForbid/<>c__DisplayClass1_0.<CreatePredicate>b__0 (Verse.Thing) <0x00056>
at Verse.GenClosest/<RegionwiseBFSWorker>c__AnonStorey1.<>m__1 (Verse.Region) <0x00320>
at Verse.RegionTraverser/BFSWorker.BreadthFirstTraverseWork (Verse.Region,Verse.RegionEntryPredicate,Verse.RegionProcessor,int,Verse.RegionType) <0x000f7>
at Verse.RegionTraverser.BreadthFirstTraverse (Verse.Region,Verse.RegionEntryPredicate,Verse.RegionProcessor,int,Verse.RegionType) <0x00130>

Verse.Log:Error(String, Boolean)
Verse.RegionTraverser:BreadthFirstTraverse(Region, RegionEntryPredicate, RegionProcessor, Int32, RegionType)
Verse.GenClosest:RegionwiseBFSWorker(IntVec3, Map, ThingRequest, PathEndMode, TraverseParms, Predicate`1, Func`2, Int32, Int32, Single, Int32&, RegionType, Boolean)
Verse.GenClosest:ClosestThingReachable(IntVec3, Map, ThingRequest, PathEndMode, TraverseParms, Single, Predicate`1, IEnumerable`1, Int32, Int32, Boolean, RegionType, Boolean)
RimWorld.JobGiver_Work:TryIssueJobPackage_Patch0(Object, Pawn, JobIssueParams)
Verse.AI.ThinkNode_PrioritySorter:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Tagger:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Subtree:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Conditional:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.Pawn_JobTracker:DetermineNextJob_Patch2(Object, ThinkTreeDef&)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean)
Verse.AI.Pawn_JobTracker:JobTrackerTick()
Verse.Pawn:Tick_Patch1(Object)
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()

Got this when assigning a hacking bill.  Already reported on smart medicine steam page

Was an issue with smart medicine that just got fixed
Professional jerk
Want something broken let me know

Kriyppler

Quote from: Roolo on September 12, 2018, 07:16:40 AM
Quote from: Kriyppler on September 12, 2018, 02:13:54 AM
Really cool mod, I love it. How can I get more mechanoid parts? I thought there'd be a way to craft them but I can't see anything of the sorts in research. Can we only get them from salvaging mechs and advanced chips? I haven't been able to play with this mod much because of that. Does it cost mechanoid parts to maintain them aswell?

Thanks! You can also buy them at outlander towns and from exotic goods traders if you're running out.
During early-mid game they're quite rare, as you won't get raided by mechs that often then. But as the game progresses, they'll become more abundant. Let me know if you feel they're still too rare to your taste during late game. And yes, maintenance also costs a few parts.

Allowing players to craft mechanoid parts would compromise balance too much, and take a way the danger of housing deadly mechanoids. Also, it would encourage an in my opinion boring resource grind.

I find the rarity is fine now, I have visited a few traders, defended from a few ship parts etc. and I'm doing well. I have made a controller belt but it's quite confusing to me. I see that if the mech is within the radius of the pawn using the belt, then you can draft your mech, however whenever I try to make it move to a position (outside or within the belt radius), the mech undrafts itself and begins wandering as if it was just normally activated. Or is this intended behaviour? Is the belt just for making the mech stay still, and being able to move it at my command is unlocked after the AI implant and not the belt?

Roolo


- Fixed: mod options not able to handle a lot of factions and factions/mechs with very long names.
- Fixed: mechs with vanometric module using mechanoid platforms during caravanning while they have plenty of power.
- Fixed: not possible to craft vanometric module.
- Added Japanese translations (by Proxyer), simplified chinese translations (by LingLuo), and traditional chinese translations (by Biscuit)


@Kriyppler

Glad to hear the rarity is fine. The controller belt is so you can draft and control mechs within the controller belts radius. The controlling colonist will try to stay within the range of the mech so it can keep controlling it. So as long as the colonist is close enough, you can move the mech at your command, and also choose which enemies the mech should target. Keep in mind that drafted colonists cannot control mechs. How big the radius is depends on the quality of the belt. Clear now? 

Kriyppler

Sorry, what I experienced was a mod conflict lol. I understand the belt, the bug was confusing me. It appears this mod conflicts with the Achtung! mod and doesn't allow you to move your mech while it's drafted, I just disabled it and all is good now

rawrfisher

#27

JobDriver threw exception in initAction for pawn Valentine driver=JobDriver_DoBill (toilIndex=13) driver.job=(DoBill (Job_2418969) A=Thing_Vanya_DroidBeta200478 B=Thing_WTH_MechanoidParts237256 C=(179, 0, 218)) lastJobGiver=RimWorld.JobGiver_Work
System.NullReferenceException: Object reference not set to an instance of an object
  at WhatTheHack.Recipes.Recipe_HackMechanoid.HealToStanding (Verse.Pawn pawn, Verse.BodyPartRecord part) [0x00000] in <filename unknown>:0
  at WhatTheHack.Recipes.Recipe_HackMechanoid.HackingFailEvent (Verse.Pawn hackee, Verse.BodyPartRecord part, System.Random r) [0x00000] in <filename unknown>:0
  at WhatTheHack.Recipes.Recipe_Hacking.CheckHackingFail (Verse.Pawn hackee, Verse.Pawn hacker, Verse.BodyPartRecord part) [0x00000] in <filename unknown>:0
  at WhatTheHack.Recipes.Recipe_Hacking.ApplyOnPawn (Verse.Pawn pawn, Verse.BodyPartRecord part, Verse.Pawn billDoer, System.Collections.Generic.List`1 ingredients, RimWorld.Bill bill) [0x00000] in <filename unknown>:0
  at RimWorld.Bill_Medical.Notify_IterationCompleted (Verse.Pawn billDoer, System.Collections.Generic.List`1 ingredients) [0x00000] in <filename unknown>:0
  at Verse.AI.Toils_Recipe+<FinishRecipeAndStartStoringProduct>c__AnonStorey2.<>m__0 () [0x00000] in <filename unknown>:0
  at Verse.AI.JobDriver.TryActuallyStartNextToil () [0x00000] in <filename unknown>:0
Verse.Log:Error(String, Boolean)
Verse.AI.JobUtility:TryStartErrorRecoverJob(Pawn, String, Exception, JobDriver)
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.<DoRecipeWork>c__AnonStorey1:<>m__1()
Verse.AI.JobDriver:DriverTick()
Verse.AI.Pawn_JobTracker:JobTrackerTick()
Verse.Pawn:Tick_Patch1(Object)
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()

Didnt expect this to pop up but here it is.  Occured with general play

https://git.io/fAXye   Just gonna toss this out since last time I think I forgot to place an output log

Lol your recall system isnt entirely Rawrfisher proof.  I managed to have a mech ignore the deactivate order and go on a killing spree :P

Was just an oversight on my part tho lol
Professional jerk
Want something broken let me know

Roolo

Update:
v0.19.4
- Added Bio tab for hacked mechanoids, and the possibility to rename mechs there.
- When a modification fails, you should get back the upgrade module
- You get back most upgrade modules installed in a mech when disassembling the mech now.
- Several fixes for how bills are assigned at hacking benches. If a hack or modification fails, the bill should be re-added appropriately.
- Fixed: impossible to remove a mech that is downed on a hacking table from it.
- Possible fix for situational issue with maintenance.

rawrfisher

Lets see if this version is rawrfisher proof :P
Professional jerk
Want something broken let me know