[1.0](WIP) What The Hack?! - Mechanoid hacking

Started by Roolo, May 31, 2018, 04:03:57 PM

Previous topic - Next topic

Roolo

Quote from: rawrfisher on August 14, 2018, 02:53:25 PM
I wonder whats stronger.  10 centipides or 2 of that explosive auto cannon mech from the gunners mod

TryMakePreToilReservations() returned false for a non-queued job right after StartJob(). This should have been checked before. curJob=WTH_CarryToHackingTable (Job_1769439) A=Thing_Mech_Scyther263126
Verse.Log:Warning(String, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\Utility\Debug\Log\Log.cs:59)
Verse.AI.Pawn_JobTracker:StartJob(Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:322)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:521)
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:393)
Verse.AI.Pawn_JobTracker:JobTrackerTick() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:120)
Verse.Pawn:Tick_Patch1(Object)
Verse.TickList:Tick() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Ticking\TickList.cs:125)
Verse.TickManager:DoSingleTick() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Ticking\TickManager.cs:303)
Verse.TickManager:TickManagerUpdate() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Ticking\TickManager.cs:267)
Verse.Game:UpdatePlay() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Game.cs:512)
Verse.Root_Play:Update() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Global\Root\Root_Play.cs:99)

lol Yellow text spamming log while haulers act like statues

Ctrl+f12 + some contextual information please. I quote myself:

Quote from: Roolo on August 02, 2018, 03:55:43 AM
Quote from: rawrfisher on August 01, 2018, 09:07:19 PM
[..]

Please make a habit of providing the complete log, and not just 1 error. Using ctrl+f12 or pressing the green "share" button is much more useful for me than just a small error snippet. Hugslib by itself shouldn't have errors, maybe you got errors because you removed a mod from an existing save? Either way, this is hard for me to judge since you didn't provide the full log.

Quote from: rawrfisher on August 01, 2018, 09:07:19 PM
[..]

Again, please share the full log using the Hugslib share functionality. Also, please clarify when this happens exactly (and also make a habit of this). Just some contextual information can really speed up the debugging process, as it can narrow down many things, especially for hard to track bugs.
Edit: If you don't know what's causing it or when it's happening, that's also worth mentioning.

I appreciate your quick debug reports, but please be considerate with my time and report them properly. Properly reported bugs can be fixed much more quickly, which saves time I can then spend on adding features to the mod.

rawrfisher

#211
Hauler bug occurs when setting large numbers of mechs to be hacked and only having 1 or 2 benches.  Easy enough to work around and can be considered trivial. 
My load order was changed significantly since those reports due to addressing another conflict unrelated to this mod. 
I often have to revise my posts as I continue testing to see what I did to mess up.  Will provide output log if requested
https://git.io/fNAd4  Current output log
https://git.io/fNAx6  Log at time of issue with haulers.  This is before fixing a storyteller bug that broke the save.
Main different is I updated 12 mods and added a couple new ones

I know this might not be useful now but I havnt had issues with the haulers since.
Professional jerk
Want something broken let me know

Roolo

#212
Just pushed another update. It includes important fixes and some new things:

- Added "self destruct option" upgrade module. Description: A simple upgrade, consisting of two mortar shells and a wire that short circuits when activated. A plasteel casing prevents that the explosives go off unintentionally. Let your mechs go with a bang!
- Re-organised the research tree. (Picture below)
- Added mechanoid workshop with placeholder sprite (just a recoloured vanilla machine bench). Using this bench the mechanoid upgrades and the mechanoid controller belt can be constructed. Moreover, it can be used to scrap advanced mechanoid chips to retrieve mechanoid parts (see next point).
- Added recipe for mechanoid workshop that allows you to scrap 1 advanced mechanoid chip into 5 mechanoid parts.
- Fixed problem with warnings getting spammed, and haulers not working when multiple mechs have an assigned modification/operation.
- Cancelling abilities no longer results in the ability getting activated anyway.
- Abilities can not longer be cancelled by enemies attacking your pawns.
- A line between a pawn controlling a mechanoid using a controller belt and the mechanoid is now shown when either one of them is selected.
- A burning platform with a mechanoid charging on it no longer causes errors.
- Added glow effect to the hacking table.
- Lowered activation time and power consumption of repair arm and repair module.
- Lowered market value of mechanoid parts.


The icons for the abilities added by upgrades are still placeholder, as well as the mechanoid workshop sprite. The research tree needed some reorganization. First I had the idea that it would make sense that mechs can only use active abilities when they are controlled with either a mechanoid controller belt or by replaced AI. However, after giving it some thought I came to the conclusion that would be too confusing for players, and maybe also a bit too restrictive. So the idea now is that the upgrades no longer need the mechanoid control research, and instead the newly added mechanoid workshop research is a requirement. The idea is that this workshop is used for creating the upgrade modules ,but I still need to make sprites for those modules, so while those are not finished the upgrades still require raw resources. 

Here's the new research tree. It also gives a nice overview of what's currently in the mod:


Quote from: rawrfisher on August 15, 2018, 10:24:01 AM
Hauler bug occurs when setting large numbers of mechs to be hacked and only having 1 or 2 benches.  Easy enough to work around and can be considered trivial. 
My load order was changed significantly since those reports due to addressing another conflict unrelated to this mod. 
I often have to revise my posts as I continue testing to see what I did to mess up.  Will provide output log if requested
https://git.io/fNAd4  Current output log
https://git.io/fNAx6  Log at time of issue with haulers.  This is before fixing a storyteller bug that broke the save.
Main different is I updated 12 mods and added a couple new ones

I know this might not be useful now but I havnt had issues with the haulers since.

Thanks. Much better. As can be seen in the update notes, I just fixed the issue. Thanks for reporting it!

rawrfisher

Wanna place a bet on how long before I find some other edge case or user error bug?
Professional jerk
Want something broken let me know

Roolo

Quote from: rawrfisher on August 15, 2018, 11:53:37 AM
Wanna place a bet on how long before I find some other edge case or user error bug?

Haha, wouldn't be entirely fair as I could just sneak in a bug deliberately. But yeah, this is one of the main reasons I released a work in progress version, so I get some support with the bug finding :).

By the way, I checked out the gunners mod you talked about. But it seemed the mechanoids were removed from that mod. Is that correct? When I tried dev-spawning the mechs today, they weren't in the list anymore. I know they were in the list a few days ago.





rawrfisher

#215
Gonna have to test some stuff.  The mod author says it needs jecs tools now

Mechs got removed but the author might add them back

Btw wanna some something  horrific?  Check out my latest post in the misc robots thread.  I'm just waiting for haplo to tell me to buzz off with the reports lol
Professional jerk
Want something broken let me know

wpfktm

Thank you for creating this awesome and fantastic mode. I am enjoying this mode now.
But there is one thing to ask. I have not been able to escape from the b18 settlement yet. The things that have been done are still so lovely. So I'm using the 18 version mode. What are the features of the 18 version compared to the 19 version?

rawrfisher

Well its not as polished and lacks most anything listed in the last 4 updates
Professional jerk
Want something broken let me know

Roolo

Quote from: wpfktm on August 15, 2018, 07:35:54 PM
Thank you for creating this awesome and fantastic mode. I am enjoying this mode now.
But there is one thing to ask. I have not been able to escape from the b18 settlement yet. The things that have been done are still so lovely. So I'm using the 18 version mode. What are the features of the 18 version compared to the 19 version?

Quote from: rawrfisher on August 15, 2018, 07:47:18 PM
Well its not as polished and lacks most anything listed in the last 4 updates

Indeed, and a lot more than the last 4 updates by the way. A complete list would be very long. The most significant things added in 0.19/1.0 are being able to caravan, and being able to upgrade mechs. Also, the balance is changed a lot, and many small issues have been solved. The B18 version should still be fun to play, so I'd say go for it.

rawrfisher

#219
Quote from: Roolo on August 15, 2018, 12:55:24 PM
Quote from: rawrfisher on August 15, 2018, 11:53:37 AM
Wanna place a bet on how long before I find some other edge case or user error bug?

Haha, wouldn't be entirely fair as I could just sneak in a bug deliberately. But yeah, this is one of the main reasons I released a work in progress version, so I get some support with the bug finding :).

By the way, I checked out the gunners mod you talked about. But it seemed the mechanoids were removed from that mod. Is that correct? When I tried dev-spawning the mechs today, they weren't in the list anymore. I know they were in the list a few days ago.

I doubt you snuck this one in intentionally

Emmi started 10 jobs in one tick. newJob=DoBill (Job_2049150) A=Thing_Mech_Centipede270065 jobGiver=RimWorld.JobGiver_Work jobList=(DoBill (Job_2049130) A=Thing_Mech_Centipede270065) (DoBill (Job_2049132) A=Thing_Mech_Centipede270065) (DoBill (Job_2049134) A=Thing_Mech_Centipede270065) (DoBill (Job_2049136) A=Thing_Mech_Centipede270065) (DoBill (Job_2049138) A=Thing_Mech_Centipede270065) (DoBill (Job_2049140) A=Thing_Mech_Centipede270065) (DoBill (Job_2049142) A=Thing_Mech_Centipede270065) (DoBill (Job_2049144) A=Thing_Mech_Centipede270065) (DoBill (Job_2049146) A=Thing_Mech_Centipede270065) (DoBill (Job_2049148) A=Thing_Mech_Centipede270065) (DoBill (Job_2049150) A=Thing_Mech_Centipede270065)  lastJobGiver=RimWorld.JobGiver_Work
Verse.Log:Error(String, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\Utility\Debug\Log\Log.cs:78)
Verse.AI.JobUtility:TryStartErrorRecoverJob(Pawn, String, Exception, JobDriver) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobUtility.cs:22)
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:521)
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:393)
Verse.AI.JobDriver:EndJobWith(JobCondition) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:483)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:514)
Verse.AI.JobDriver:TryActuallyStartNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:430)
Verse.AI.JobDriver:ReadyForNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:364)
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:521)
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:393)
Verse.AI.JobDriver:EndJobWith(JobCondition) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:483)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:514)
Verse.AI.JobDriver:TryActuallyStartNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:430)
Verse.AI.JobDriver:ReadyForNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:364)
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:521)
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:393)
Verse.AI.JobDriver:EndJobWith(JobCondition) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:483)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:514)
Verse.AI.JobDriver:TryActuallyStartNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:430)
Verse.AI.JobDriver:ReadyForNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:364)
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:521)
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:393)
Verse.AI.JobDriver:EndJobWith(JobCondition) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:483)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:514)
Verse.AI.JobDriver:TryActuallyStartNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:430)
Verse.AI.JobDriver:ReadyForNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:364)
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:521)
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:393)
Verse.AI.JobDriver:EndJobWith(JobCondition) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:483)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:514)
Verse.AI.JobDriver:TryActuallyStartNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:430)
Verse.AI.JobDriver:ReadyForNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:364)
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:521)
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:393)
Verse.AI.JobDriver:EndJobWith(JobCondition) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:483)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:514)
Verse.AI.JobDriver:TryActuallyStartNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:430)
Verse.AI.JobDriver:ReadyForNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:364)
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:521)
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:393)
Verse.AI.JobDriver:EndJobWith(JobCondition) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:483)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:514)
Verse.AI.JobDriver:TryActuallyStartNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:430)
Verse.AI.JobDriver:ReadyForNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:364)
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:521)
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:393)
Verse.AI.JobDriver:EndJobWith(JobCondition) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:483)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:514)
Verse.AI.JobDriver:TryActuallyStartNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:430)
Verse.AI.JobDriver:ReadyForNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:364)
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:521)
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:393)
Verse.AI.JobDriver:EndJobWith(JobCondition) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:483)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:514)
Verse.AI.JobDriver:TryActuallyStartNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:430)
Verse.AI.JobDriver:ReadyForNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:364)
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:521)
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:393)
Verse.AI.JobDriver:EndJobWith(JobCondition) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:483)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:514)
Verse.AI.JobDriver:TryActuallyStartNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:430)
Verse.AI.JobDriver:ReadyForNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:364)
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:521)
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:393)
Verse.AI.Pawn_JobTracker:JobTrackerTick() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:120)
Verse.Pawn:Tick_Patch1(Object)
Verse.TickList:Tick() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Ticking\TickList.cs:125)
Verse.TickManager:DoSingleTick() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Ticking\TickManager.cs:303)
Verse.TickManager:TickManagerUpdate() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Ticking\TickManager.cs:267)
Verse.Game:UpdatePlay() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Game.cs:512)
Verse.Root_Play:Update() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Global\Root\Root_Play.cs:99)


Emmi trying to hack a centipede throws this.  Errors intermittent and eventually self corrects but still just a minor nitpick 8)
https://git.io/fNhOo  output log even tho this trivial error don't really warrant more then a good laugh

Side note: I would wanna be able to see sythers be able to have normal weapons installed on the arms in a similer manner as the repair arm.  a syther with 2 spears would be funny

Bah forget the spelling mistakes 

update:  I took a closer look and turns out the hauler didnt properly set the centipide on the table and it was worming around at the time the errors were triggered

Small bit of trivia about the colonist doing the hacking.  She cannot do any form of crafting lol


Exception ticking scyther: System.NullReferenceException: Object reference not set to an instance of an object
at WhatTheHack.Harmony.Pawn_HealthTracker_HealthTick.Postfix (Verse.Pawn_HealthTracker) <IL 0x001c5, 0x005c4>
at (wrapper dynamic-method) Verse.Pawn_HealthTracker.HealthTick_Patch2 (object) <IL 0x006f6, 0x01a20>
at (wrapper dynamic-method) Verse.Pawn.Tick_Patch1 (object) <IL 0x0011e, 0x00356>
at Verse.TickList.Tick () [0x001aa] in C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Ticking\TickList.cs:125

Verse.Log:Error(String, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\Utility\Debug\Log\Log.cs:78)
Verse.TickList:Tick() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Ticking\TickList.cs:137)
Verse.TickManager:DoSingleTick() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Ticking\TickManager.cs:303)
Verse.TickManager:TickManagerUpdate() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Ticking\TickManager.cs:267)
Verse.Game:UpdatePlay() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Game.cs:512)
Verse.Root_Play:Update() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Global\Root\Root_Play.cs:99)

Thought this bug was dead    Its the death by regen part bug. 
A little thought about how to deal with it lol  Maybe have it repair all existing parts first then regen parts 1 at a time?  If its already this way I haven't noticed
Most relevent info can be found in output log above but hugs lib is timming out so cant provide second instance of output log.  Note this was after 3 back to back mech raids that pushed me to deploy all 30 mechs just to survive  :-\


JobDriver threw exception in initAction for pawn Emmi driver=JobDriver_DoBill (toilIndex=13) driver.job=(DoBill (Job_2748741) A=Thing_Mech_Lancer470006 B=Thing_WTH_MechanoidParts503633 C=(169, 0, 193)) lastJobGiver=RimWorld.JobGiver_Work
System.NullReferenceException: Object reference not set to an instance of an object
  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) [0x00031] in C:\Dev\RimWorld\Assets\Scripts\RimWorld\Pawn\Health\Bill_Medical.cs:108
  at Verse.AI.Toils_Recipe+<FinishRecipeAndStartStoringProduct>c__AnonStorey2.<>m__0 () [0x000cf] in C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\DoBill\Toils_Recipe.cs:206
  at Verse.AI.JobDriver.TryActuallyStartNextToil () [0x0022f] in C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:461
Verse.Log:Error(String, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\Utility\Debug\Log\Log.cs:78)
Verse.AI.JobUtility:TryStartErrorRecoverJob(Pawn, String, Exception, JobDriver) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobUtility.cs:22)
Verse.AI.JobDriver:TryActuallyStartNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:465)
Verse.AI.JobDriver:ReadyForNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:364)
Verse.AI.<DoRecipeWork>c__AnonStorey1:<>m__1() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\DoBill\Toils_Recipe.cs:152)
Verse.AI.JobDriver:DriverTick() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:345)
Verse.AI.Pawn_JobTracker:JobTrackerTick() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:131)
Verse.Pawn:Tick_Patch1(Object)
Verse.TickList:Tick() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Ticking\TickList.cs:125)
Verse.TickManager:DoSingleTick() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Ticking\TickManager.cs:303)
Verse.TickManager:TickManagerUpdate() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Ticking\TickManager.cs:267)
Verse.Game:UpdatePlay() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Game.cs:512)
Verse.Root_Play:Update() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Global\Root\Root_Play.cs:99)

I have to say I think I might be going overboard <.<
This one occured when the pawn from the 10 jobs error hacked a lancer.  She got poorly hacked and it threw this error
Might have had something to do with it being a mech from a raid and not the hive
Output log https://git.io/fNhMd
Professional jerk
Want something broken let me know

Roolo

#220
@rawfisher.

You've been busy :) Thanks for your extensive testing and providing the full logs whenever possible! I'll make sure to fix these issues. When this mod is finished, I'm sure it'll be more crisp than it would have been without your help.  I'll put you in the credits on release.

Quote
A little thought about how to deal with it lol  Maybe have it repair all existing parts first then regen parts 1 at a time?  If its already this way I haven't noticed
Most relevent info can be found in output log above but hugs lib is timming out so cant provide second instance of output log.  Note this was after 3 back to back mech raids that pushed me to deploy all 30 mechs just to survive  :-\

Yeah this hasn't been fixed yet. The solution you propose will do. I'll implement it in the next update.

By they way, 30 mech :O. You're pretty late game aren't you? Can you tell me how much wealth your colony has? How big are the raids you're getting? I think there's currently a flaw with the parts system. You're only punished for the damage to mechs, so having a huge amount of mechs will after the initial hacking costs be as expensive as having only a few. I'm thinking of adding in maintenance. Mechs would get a new need called "maintenance", hackers need to check out the state of the hardware hack from time to time, and use a small amount of parts in the process. If a mech isn't maintained at all, the hack will have a risk to stop working. I would be similar to how training works with animals, which need to be trained now and then. Like with the animals, it will be mild. And it wouldn't be only a drawback, since it would train the crafting and intellect skill of your hackers. If I do this, I'll make sure that more traders sell mech parts, so if you're running out of parts, you still have a way to prevent the disaster of parts running out. I think the risk of running out of parts is a really interesting mechanic, and adds a nice threat to hacking mechs.   

I realize that this feature won't be liked by all players, so if I'll implemented it, I'll make it optional (on by default, but toggleable in the mod options at any time). 

Madman666

Its a really good move, that it will be optional. I'll be disabling that part instantaneously. I can't express how incredibly annoying Rimworld got in this update, once everything it has, needs to be maintained, from pets (ridiculously enough, since they already eat your food, now add tamer's time and medicine to that), to traps and turrets. Everything is a constant boring drain on something (usually just steel, because wtf not) a boring copypaste "maintenance" slapped on just everything it could actually stick to. And if you happen to have half your colony down with malaria and don't have enough people to mine crap out - sorry pal, get owned. Luckily mods can kill all that somewhat easily.

Roolo

Quote from: Madman666 on August 17, 2018, 05:56:21 AM
Its a really good move, that it will be optional. I'll be disabling that part instantaneously. I can't express how incredibly annoying Rimworld got in this update, once everything it has, needs to be maintained, from pets (ridiculously enough, since they already eat your food, now add tamer's time and medicine to that), to traps and turrets. Everything is a constant boring drain on something (usually just steel, because wtf not) a boring copypaste "maintenance" slapped on just everything it could actually stick to. And if you happen to have half your colony down with malaria and don't have enough people to mine crap out - sorry pal, get owned. Luckily mods can kill all that somewhat easily.

Haha, when I came up with the idea, I already thought: "people like Madman666 are probably not going to like this", and there you are :). It's all a matter of playstyle, and it clearly doesn't suit your playstyle. Luckily as a modder, I can easily make controversial changes like these optional. For me personally it makes things more interesting, and it adheres to the vanilla principles, that's why I'm considering it (not even sure if I'll bother though, the upgrade system has my priority now).


rawrfisher

#223
Nope still early game.  I do experience one hell of a nasty wealth bug tho. 
Each colony starts at a minimum of 100k wealth for some reason.  The item wealth is always below 20k but buildings always minimum 80k.  That isn't helpful when your playing on merciless difficulty.  As for running outta mech parts I stay pretty even around 100 with the current setup since there is often raids of 50+ mechs hitting my base.

I do wanna mention that I think you missed a small exploit I pointed out in my wall of reports.  The pawn that does the hacking in my colony has crafting disabled and hack requires 5 crafting and intellect to be preformed. 

The maint idea for mechs isn't too unlike an alternative method for repairing mechs I was considering mentioning.  I decided against that since to even test it would probably take a month to get a rough test version going.

Tech wise I just started multi analyzer but my colony has around 700k in wealth from the massive zerg raids.  50 mechs can be converted into a tribal raid which is strong enough to lag out my desktop in 64 bit mode.  I have 12gb ram 4gb vram and 4 4.0ghz cores dedicated to the game and it still lags on raids  :-\
Professional jerk
Want something broken let me know

Madman666

Yeep, i just really don't like everything being uber-needy. Its enough of a pain that colonists are whining about each and every small thing for every other game entity to also require constant flow of something. I was content when turrets were power hungry and needed periodic component replacement via breakdown event, but constant steel eating is tad much. Hell, I probably made myself quite famous whining everywhere on this forum about maintance mechanics being annoying. It really does depend on playstyle a lot, on this i couldn't agree more. Since a big portion of players doesn't mind or even likes that mechanic, as it requires more resource micromanagement, forces you to venture out more (deep drilling being nerfed into oblivion) etc. Sadly i just don't belong to that big portion.