[A16] WM mods (New mods: SyncGrowth, Medivac) 2017.01.06

Started by Wishmaster, November 07, 2016, 06:50:31 PM

Previous topic - Next topic

ambivalence

Please, could you upload it to steamworkshop? It's pretty comfy to get updates this way.

Wellenbrecher

Quote from: Wishmaster on January 03, 2017, 06:24:48 PM
I started working on an A16 then gave up for technical reasons but also because of the new guilt mechanics.

I want to be as vanilla friendly as possible so if I do like A15, this would just negate the guilt.

So I wanted to create new rules where guilt would be one of the factors of the mood effect as well as faction hostility and the death (euthanized / organ harvest) or if the victim was sold.

For example selling a guilty prisoner from a hostile faction will get you a lesser mood debuff while harvesting (and killing) a non hostile prisoner (like a space refugee) will get you an important mood debuff.

I also wanted to make guilt lasting longer depending on the offense (hit colonist = 2 days, prison break/murder = 6 days).

What do you think ? Do you want a newly reworked mod or something simple like A15 ?

And thank you so much for your support !
I have to admit I never even thought about the guilt thing... :-\
A16 came along and I just went on from a A15 "yeah this makes no sense so let's change it" style point of view and that was it.
You are right of course, simply doing it the A15 way again would take away from what the game offers. Same with how I for my own game just toned down the mood penalty and how long it lasts to a negligible amount.
And looking back at my save I am suddenly annoyed I didn't know this, haha.


I'd say a lot of that depends on what triggers "guilt" (another thing I am ignorant off for now, I'll have to look at that after I finish the post). As in is being part of a raid enough that they don't care? Or does the pawn in question have to be one that got a hit in? Lethal or not.
This obviously doesn't count for killings, where the matter is pretty clear and is also tracked in the thoughts.

The different severity of the debuffs and how long guilt would last is something that should definitely be part of the game, no matter what else. If that could be changed/expanded upon without requiring what amounts to a complete rework of the entire system and insane man-hours, it would add a meaningful distinction to what's going on in the colony and its interaction with other factions IMO.



To be quite honest I for one would be more than happy with either.
Your method was way more elegant (and less game breaking) than any editing of the thoughts could ever be, for obvious reasons.
And at the same time a mod that further develops on that would be more than welcome to many people as well I am sure. At the danger of doing something that might already be planend for vanilla.
So err... both? ;D

Wishmaster

Quote from: ambivalence on January 03, 2017, 08:15:10 PM
Please, could you upload it to steamworkshop? It's pretty comfy to get updates this way.

No, I can't :/ , never.

@Wellenbrecher

both ? do you mean two mods ? I don't understand . one mod can't do both, it won't make sense.
Either I do exactly like the A15 mod (and honestly it will probably take less than one hour to update) either I do something that makes sense for A16 and the guilt system.

Besides a prisoners gets guilty for 24h if he hits/kills a colonists or is involved in a prison break. Then you can execute him and you'll get a very little mood debuff (-1 if I remember).

Wellenbrecher

It was a silly joke. :(
I really like the ideas you posted with the time and different types of debuffs and if you find the time and/or passion to work on that I'm sure a fair few people would appreciate it.


And interesting, so the fact that the prisoners did take part in a raid does not by itself trigger guilt? What a weird system...
Also 24 hours is quite short indeed.

ambivalence

 :-[

Tried to spawn Pearl377833 in a null map.
Verse.Log:Error(String)
Verse.GenSpawn:Spawn(Thing, IntVec3, Map, Rot4)
Verse.GenSpawn:Spawn(Thing, IntVec3, Map)
Verse.GenSpawn:Spawn(ThingDef, IntVec3, Map)
FishIndustry.Item_Oyster:Destroy(DestroyMode)
WM_Smarter_Food_Selection.FoodStorage:RefreshStorage(Map)
WM_Smarter_Food_Selection.FoodStorage:foodAvailabilityGap(Map, Pawn, WMFoodPref, List`1)
WM_Smarter_Food_Selection.FoodUtility_Detour:FoodSourceOptimality(Pawn, Thing, Single)
RimWorld.FoodUtility:SpawnedFoodSearchInnerScan(Pawn, IntVec3, List`1, PathEndMode, TraverseParms, Single, Predicate`1)
System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)
System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo)
System.Reflection.MethodBase:Invoke(Object, Object[])
WM_Smarter_Food_Selection.FoodUtility_Detour:SpawnedFoodSearchInnerScan(Pawn, IntVec3, List`1, PathEndMode, TraverseParms, Single, Predicate`1)
WM_Smarter_Food_Selection.FoodUtility_Detour:BestFoodSourceOnMapEx(Pawn, Pawn, Boolean, FoodPreferability, Boolean, Boolean, Boolean, Boolean, Boolean, Boolean, Boolean)
WM_Smarter_Food_Selection.FoodUtility_Detour:BestFoodSourceOnMap(Pawn, Pawn, Boolean, FoodPreferability, Boolean, Boolean, Boolean, Boolean, Boolean, Boolean)
WM_Smarter_Food_Selection.FoodUtility_Detour:TryFindBestFoodSourceFor(Pawn, Pawn, Boolean, Thing&, ThingDef&, Boolean, Boolean, Boolean, Boolean)
RimWorld.JobGiver_GetFood:TryGiveJob(Pawn)
Verse.AI.ThinkNode_JobGiver:TryIssueJobPackage(Pawn)
Verse.AI.ThinkNode_PrioritySorter:TryIssueJobPackage(Pawn)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn)
Verse.AI.Pawn_JobTracker:DetermineNextJob(ThinkTreeDef&)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean)
Verse.AI.Pawn_JobTracker:JobTrackerTick()
Verse.Pawn:Tick()
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:Update()
Verse.Root_Play:Update()


Extended food score is on. By the way, how does it work in a few words?

Wishmaster

#110
Thank you for reporting this.
It seems like FishIndustry does something quite unexpected upon item destruction.
But I know how to avoid this and I will fix it.

Explaining the "Extended food score" needs a bit more than few words.

Let's say a husky's diet in SFS is : Humanlike corpse > Kibble > Meal awful > Raw human meat. (It is actually much longer but anyway...).

When this option is NOT enabled, the score penalty for a kibble will be -1 * 80 = -80, and -2 * 80 = -160 for awful meal and 0 * 80 = 0 for humanlike corpses. Therefore the humanlike corpses is the most likely to be selected. (There are other factors like distance).

When the option is enabled, the math is quite the same except that the rank matters only when the element is available in your storage.
For example if you don't have human corpses nor awful meal, the penalty for kibble will only be 0 * 80 = 0 and for raw human meat -1 * 80 = -80 .

The whole purpose of this is avoid ridiculous food penalty for a given food as a husky's diet has about 10 elements so the penalty can be up to -10 * 80 = -800 .

I don't know how to explain this quickly !

This is an option because I'm afraid it can causes large fps drops if you have a lot of things in storage.

carpediembr

Let me say that the reusable pods is an amazing mod!

Is there any chance we could have some sort of "checklist" of what is missing to load? Or even check the gear of the pod?

Degraine

I'm having a problem similar to KakyoKazuki where I can't build a pod launcher while the mod's enabled. Here's the error it throws:

Exception in Tick (pawn=Rene, job=FinishFrame A=Thing_PodLauncher_Frame38347, CurToil=2): System.ArgumentNullException: Argument cannot be null.
Parameter name: type
  at System.Activator.CheckType (System.Type type) [0x00000] in <filename unknown>:0
  at System.Activator.CreateInstance (System.Type type, Boolean nonPublic) [0x00000] in <filename unknown>:0
  at System.Activator.CreateInstance (System.Type type) [0x00000] in <filename unknown>:0
  at Verse.ThingMaker.MakeThing (Verse.ThingDef def, Verse.ThingDef stuff) [0x00000] in <filename unknown>:0
  at RimWorld.Frame.CompleteConstruction (Verse.Pawn worker) [0x00000] in <filename unknown>:0
  at RimWorld.JobDriver_ConstructFinishFrame+<MakeNewToils>c__IteratorE.<>m__36 () [0x00000] in <filename unknown>:0
  at Verse.AI.JobDriver.DriverTick () [0x00000] in <filename unknown>:0
Verse.Log:Error(String)
Verse.AI.JobDriver:DriverTick()
Verse.AI.Pawn_JobTracker:JobTrackerTick()
Verse.Pawn:Tick()
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:Update()
Verse.Root_Play:Update()


Trying to place a pod launcher or a landing controller in god mode just tells me 'Argument cannot be null. Parameter name: type'. Also, there's a missing 'l' in the name of the Landing Controller.

My mod list: HugsLib, AWorldWithoutHat, Chemicals & Neutroamine, DefensivePositions, ED-Embrasures, ED-ShieldsBasic, EdBPrepareCarefully, EPEO - Hardcore Version 1.21, Feed The Colonists, Fireplace Mod V1.7 A16, HaulingHysteresis, ICanFixIt, kNumbers-0.6.0, LT_Gardening, MineItAll, Miniaturisation, More Vanilla Turrets, QualityBuilder, WM Reuse pods, RimFridge, RT_SolarFlareShield-A16-1.1.1, SillyBuilder, T-MoreFloors, Taiga_Creatures, TradingSpotA16, Ushanka16_0, Vas's Conduit Explosion Nullifier, Vegetable Garden 5.3, Megatherium_0.16.1393, ItsDangerous, and Raindrops

Degraine

All right so I did a bit of testing and I figured out what's going on: If Reuse Pods is loaded after ED-Embrasures, it causes the problems I saw. It causes problems for Camping Stuff as well, weirdly enough.

Absolutely no idea why that should be the case since it's just an XML mod, but there it is. So it works for me now! And the novelty value of sending people back and forth in pods is pretty high.

Smexy_Vampire

will this reuse pod luncher work with long pod lucnh from Xhati ?

Wishmaster

Quote from: carpediembr on January 04, 2017, 08:08:42 PM
Let me say that the reusable pods is an amazing mod!

Is there any chance we could have some sort of "checklist" of what is missing to load? Or even check the gear of the pod?

Thank you and... no ^^'. That's not the purpose of the mod but you can use such a mod as well as this one.

Quote from: Smexy_Vampire on January 05, 2017, 12:31:47 AM
will this reuse pod luncher work with long pod lucnh from Xhati ?

I haven't try but yes, it should works.

Quote from: Degraine on January 05, 2017, 12:18:54 AM
All right so I did a bit of testing and I figured out what's going on: If Reuse Pods is loaded after ED-Embrasures, it causes the problems I saw. It causes problems for Camping Stuff as well, weirdly enough.

Absolutely no idea why that should be the case since it's just an XML mod, but there it is. So it works for me now! And the novelty value of sending people back and forth in pods is pretty high.

That's a pretty weird. What happens if you delete the XML files of Reuse pods ? Or just the "PodLauncher" def ? (The mod should still work if you only delete this).

Really I don't understand what's going on the logs. It must be related to Defs but all I did was to copy/paste from the Core and edit them a bit.

SamuraiSkye

I made an account just to post this. I think I figured out the error.

If you have an existing save, deconstruct all your pods and launchers, then reconstruct them. Then everything works fine. I also raised it in the load order while troubleshooting so you might want to do that too, but it didn't work until I deconstructed.

Fun sidenote: You can launch a pod and receive it in the same colony. For when you dont want to walk 40 tiles!

Wishmaster

#117
Quote from: SamuraiSkye on January 05, 2017, 01:12:28 PM
I made an account just to post this. I think I figured out the error.

If you have an existing save, deconstruct all your pods and launchers, then reconstruct them. Then everything works fine. I also raised it in the load order while troubleshooting so you might want to do that too, but it didn't work until I deconstructed.

Fun sidenote: You can launch a pod and receive it in the same colony. For when you dont want to walk 40 tiles!

Thank you for figuring that out.

You can do that in vanilla as well :p . But oh well that gives me an idea about a local shuttle thing !

If some people are interested in solving the problem, here is the mod on github (master branch)
https://github.com/Wishmaster01/Reuse.pods/tree/master/source

Wishmaster

Updated Smarter Food Selection and totally fixed the massive fps drop when your pets are hungry.

Also released two new mods: SyncGrowth and Medivac.

Medivac allows you to put your pawns into pods and makes your colonists pick the best medical beds. Useful if not all your medical beds are highend.

SyncGrowth redistributes the growth between your crops so they get mature at the same time.

More informations and download links are on the topic.

Also I put the source of everything on github (please don't blame my amateurish work D: ).

https://github.com/Wishmaster01/Smarter.food.selection
https://github.com/Wishmaster01/Reuse.pods
https://github.com/Wishmaster01/Medivac
https://github.com/Wishmaster01/SyncGrowth

asquirrel

Quote from: Wishmaster on January 06, 2017, 03:13:31 PM
Updated Smarter Food Selection and totally fixed the massive fps drop when your pets are hungry.

Also released two new mods: SyncGrowth and Medivac.

Medivac allows you to put your pawns into pods and makes your colonists pick the best medical beds. Useful if not all your medical beds are highend.

SyncGrowth redistributes the growth between your crops so they get mature at the same time.

More informations and download links are on the topic.

Also I put the source of everything on github (please don't blame my amateurish work D: ).

https://github.com/Wishmaster01/Smarter.food.selection
https://github.com/Wishmaster01/Reuse.pods
https://github.com/Wishmaster01/Medivac
https://github.com/Wishmaster01/SyncGrowth

The one you just uploaded (https://github.com/Wishmaster01/Smarter.food.selection) doesn't have any def files inside. Is that a problem?   The last release you did had a defs folder (version 1.1a).  Inside your def folder you had a file named "injector.xml."

Going to wait for your response before I update.

Do you think SyncGrowth is a cheat?  I'm just thinking because each crop normally has a different growth rate, correct?  Thanks for the feedback!