Ludeon Forums

RimWorld => Mods => Unfinished => Topic started by: sumghai on August 16, 2017, 05:39:21 AM

Title: [1.0] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on August 16, 2017, 05:39:21 AM
A small mod I started working on last weekend, which would add Star Trek-like food replicators to very late stage Spacer/Glitterworld colonies.

Download Playable WIP (https://github.com/sumghai/Replimat/archive/master.zip)
Source on GitHub repository (https://github.com/sumghai/Replimat)
Issue and Ideas tracker (https://github.com/sumghai/Replimat/issues)

Overview

The mod consists of four buildings and one item:

How the mod is intended to work:

Progress so far

All the assets and in-game definitions for the buildings and items are pretty much finalized, other than minor tweaks such as shadows and damage decals. The conduit is already linkable.

(http://i.imgur.com/WdBNBKa.png)

I've also started laying the groundwork for the assembly that will power the mod; however, object-oriented programming has always been one of my weaknesses (my coding experience is geared towards microcontrollers), so I suspect I will be asking for lots of help in addition to deciphering the C# tutorials on the Rimworld wiki.

Remaining Tasks

I'll do my best to keep everyone appraised of my progress and questions. In the meantime, questions, comments and advice are appreciated.
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on August 19, 2017, 06:56:54 PM
Progress Report, 20 August 2017

Hadn't had much luck adapting dubwise56's pipe code from Dub's Bad Hygiene for use in my assembly with what little I know about object-oriented programming. His code was written for A17, but for some reason I'm getting large numbers of invalid method/class references even when duplicating his codebase in its entirety.

I've since corresponded with dubwise, and he is of the opinion that custom conduits are very difficult to code for. He did suggest to try running purely off the existing powernet, although I'm a bit uncomfortable with the idea that solid matter from the replimat feedstock tanks can someone get converted into pure energy and transmitted through power lines.

Then there's the problem that without custom replimat conduits, I wouldn't be able to make isolated replimat networks serving different food items for colonists and prisoners. A possible workaround (and feature enhancement) would be to add a Storage-like menu to each replimat terminal only when the replimat computer is connected to the same powernet, allowing each terminal to be customised to produce selected food items randomly, all while running off the same feedstock tanks. If the computer is destroyed, then the terminals go back to only making Simple/Fine Meals.

Thoughts, guys?
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: faltonico on August 20, 2017, 03:25:12 AM
There was an episode of the Start Trek: Enterprise in which a space station was using live humanoids as their computing cores to do really fast replication... i would love to find more uses for the pirates daring to hurt my colonist >=D

Regarding the issue with the conduits, i know as well because of him how hard it is to code, i think you could select the output from wherever you get the product, is there a need to make it so each tank or network gives different stuff? sorry i might not be getting the point here xD
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: alsoandanswer on August 20, 2017, 12:54:55 PM
Project seems solid, i'm gonna keep an eye on this.

good luck mister modder
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on August 22, 2017, 04:13:05 AM
Quote from: faltonico on August 20, 2017, 03:25:12 AMRegarding the issue with the conduits, i know as well because of him how hard it is to code, i think you could select the output from wherever you get the product, is there a need to make it so each tank or network gives different stuff? sorry i might not be getting the point here xD

I don't understand what you're trying to say here.

Progress Report, 22 August 2017

At Dubwise's advice, I've decided to abandon custom conduits, and instead pretend that the existing stock powernet also comes with a "hidden" organic matter pipeline. This will save some development time.

I've created a rudimentary Building_ReplimatTerminal class, which is essentially a copy (but not a subclass) of the stock Building_NutrientPasteDispenser with any code related to checking for adjacent hoppers removed; it was not possible to simply make it a subclass because Tynan has hardcoded the game to only look for the original Nutrient Dispenser class as part of its list of meal sources, so all custom subclasses will get ignored.

Anyway, for testing purposes I've made it so that the Replimat Terminal would (in theory) dispense free Fine Meals:


using Verse;
using Verse.Sound;
using RimWorld;

namespace Replimat
{
    public class Building_ReplimatTerminal : Building
    {
        public CompPowerTrader powerComp;

        public static int CollectDuration = 50;

        public bool CanDispenseNow
        {
            get
            {
                return this.powerComp.PowerOn; // TODO - Add condition to check if there is enough replicator feedstock
            }
        }

        public virtual ThingDef DispensableDef
        {
            get
            {
                return ThingDefOf.MealFine;
            }
        }

        public override void SpawnSetup(Map map, bool respawningAfterLoad)
        {
            base.SpawnSetup(map, respawningAfterLoad);
            this.powerComp = base.GetComp<CompPowerTrader>();
        }

        public virtual Thing TryDispenseFood()
        {
            if (!this.CanDispenseNow)
            {
                return null;
            }
           
            this.def.building.soundDispense.PlayOneShot(new TargetInfo(base.Position, base.Map, false));
            Thing thing2 = ThingMaker.MakeThing(ThingDefOf.MealFine, null);
            return thing2;
        }
    }
}


When I loaded this into the game, the Replimat Terminals were recognized as a meal source, but no pawn ever bothered using them (as expected above). Tracing backwards from the stock Nutrient Dispenser's TryDispenseFood() method, we see that it is called by a Toil called TakeMealFromDispenser(), which in turn is called by three different eating-related Job Drivers:


Each of these JobDrivers again have explicit instructions to search for food from a pawn's own inventory, colony stockpiles and Nutrient Dispensers - anything any potential source will be ignored.

Dubwise and I are currently considering two ways to get the pawns to start treating ReplimatTerminals as a food source:

As always, thoughts and feedback are appreciated.
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: Mitz on August 22, 2017, 07:25:59 PM
sure am gonna follow this~
seems interesting.
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on August 24, 2017, 05:54:12 AM
Progress Report, 24 August 2017

Something I forgot to mention in my last report was that, at Dubwise's suggestion, I've moved the Replimat Computer down to the same research project as the other Replimat buildings, and removing the now-empty advanced research project - the intention is to prevent the Terminals from working without the Computer. Consequently, this means that the Terminals should be able to produce all food items from the get-go, so I will need to create some sort of ITab GUI to allow players to pick and choose what food items each Terminal can offer at random (as well as having Copy and Paste Setting options for the sake of convenience).

Coming back to the plugin coding, I've decided to create my own copies of the stock eating JobDrivers and Toils, replacing references to Nutrient Dispensers with Replimat Terminals:

I haven't yet been able to actually defInject these new JobDrivers and Toils into the game, because I've encountered several "c_Iterator N not existing in current context" errors. As such, I would appreciate if someone could take a look at my source code here (https://github.com/sumghai/Replimat/tree/799e750ead9dd9e2b68a732a6941e4651e2fcbe5/Source) to see what I've missed.
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on August 26, 2017, 02:10:28 AM
Progress Report, 26 August 2017

Turns out I dun goofed - I was running an old version of ILSpy used for Kerbal Space Program modding, instead of the recommended version that Zhentar maintains (https://github.com/Zhentar/ILSpy). Once this was sorted out, the code I extracted for the JobDrivers and Toils made more sense.

As always, Dubwise performed his wizardry, adding a new JobGiver_GetFoodReplimat and patching it into the think tree. Most importantly, a new utility class now puts Replimat Terminals above Nutrient Paste Dispensers in terms of priority.

At the present time, colonists will get Fine Meals from the Terminals for free; this will fixed later by requiring a connection to Replimat Feedstock Tanks.

Have a play around with the first cut of the plugin and tell us what you guys think!
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on August 28, 2017, 05:46:33 AM
Progress Report, 28 August 2017

As a homage to characters in Star Trek who claim to be able to tell the difference between replicated and non-replicated food, colonists with a new "Sensitive Taster" trait will now complain every time they eat a meal from the Replimat Terminal:

(http://i.imgur.com/o2yUS7S.png)

The same colonists will eat a meal cooked normally without the negative thought.
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: Techgenius on August 28, 2017, 04:56:59 PM
Hello Sumghai. How playable is your mod currently? can I enable it in a normal playthrough and perhaps get a genuine substitute to the nutrient dispenser?
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on August 29, 2017, 03:56:24 AM
Quote from: Techgenius on August 28, 2017, 04:56:59 PMHow playable is your mod currently? can I enable it in a normal playthrough and perhaps get a genuine substitute to the nutrient dispenser?

As mentioned in my earlier posts, the mod in it current state can already be used in a normal savegame to feed your colonists. At the moment they're getting their food for free, but this will be rectified in the final version.

The Replimat Terminals can be used on the same map as any cooking stove or Nutrient Paste Dispensers, so you could have colonists get Fine Meals from the Terminals, while your prisoners can only eat nutrient paste.
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on September 02, 2017, 02:54:29 AM
Progress Report, 2 September 2017

Starting work on the next major feature - allowing players to choose what meal items are available from the Replimat Terminals.

At the moment, I have a blank inspector tab with some placeholder text, while the Terminals themselves now randomly picks an item to replicate from a list of all meals in the game's database. The final implementation would most likely involve:
- The inspector tab presenting a storage tab-like list of all the meals available in-game with the corresponding checkboxes
- Building_ReplimatTerminal receives a sublist of the player's choices
- Building_ReplimatTerminal picks a random item from the aforementioned sublist to replicate

I also pushed through a few bugfixes:
- Doctors can now feed patients with food from any Terminal
- Wardens can use the Terminal to feed incapacitated or leave food for healthy prisoners
- Prisoners can use the Terminals themselves to get food

A few smaller bugs have cropped up:
- When a colonist or prisoner uses the Terminal, the text in the inspector pane flickers rapidly through the various food choices, most likely due to the UI being redrawn constantly
- The WorkGiver for Wardens delivering food to prisoners occasionally throws up an error indicating that the warden has not been assigned a job, even though said warden successfully delivers food and moves on to the next job
- The Wardens also try to deliver food to the prisoners even when the latter have access to their own Terminal
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on September 08, 2017, 04:28:33 AM
Progress Report, 8 September 2017

I haven't made much progress on the food selection menu inspector tab, nor was I able to fix the aforementioned bugs.

I did, however, add a couple of new incidents where any available Replimat Terminal could malfunction, either spilling nutrient feedstock slime or replicating large amounts of Kibble (a la ST:TNG episode "A Fistful of Datas"):

(https://i.imgur.com/QOy5Oto.png)

I originally planned to implement a Replimat-specific food poisoning incident as well, but I've put that idea on the backburner for now due to the complexity of hooking up the food poisoning hediff with a custom message and job drivers.

I'm wondering if I should switch track and look at getting the tanks and hoppers working instead.
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: Mitz on September 08, 2017, 07:29:32 AM
oh boy - now it is as dangerous as a idiot chef pawn...
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: tiger33116 on September 08, 2017, 04:37:50 PM
I'm keeping my eye on this it looks awesome. I would suggest two things. One get the basic components done first so hoppers to get feed stock, the tank to store it, and conduits to move it to the terminals. From there it's a base to really add events for using it. Luciferium laced food anyone? The second thing I would suggest is some type of scanner that allows the terminals to put specific meals out when used. This also could be expanded to get basic recourses or certain items at a very high feed stock cost or using a different type of feed stock. That could also have very interest events tied to it as well.
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on September 08, 2017, 11:34:39 PM
Quote from: tiger33116 on September 08, 2017, 04:37:50 PMOne get the basic components done first so hoppers to get feed stock, the tank to store it, and conduits to move it to the terminals. From there it's a base to really add events for using it.

That was the original plan, yes, but I've ended up tackling low-lying fruit lately because I struggle with C# coding of complex systems.

Quote from: tiger33116 on September 08, 2017, 04:37:50 PMLuciferium laced food anyone?

I'm gonna pass on this one.

Quote from: tiger33116 on September 08, 2017, 04:37:50 PMThe second thing I would suggest is some type of scanner that allows the terminals to put specific meals out when used.

Do you mean scanning a new food item in order to add it to the master list of available recipes?

Quote from: tiger33116 on September 08, 2017, 04:37:50 PM
This also could be expanded to get basic recourses or certain items at a very high feed stock cost or using a different type of feed stock. That could also have very interest events tied to it as well.

Industrial replicators are probably outside the scope of this mod, but I'm definitely keen to implement them someday elsewhere.

FYI, I chose the name Replimat for this mod because I wanted to focus on meals, and the name comes from the self-serve eatery aboard the titular space station in ST:DS9.
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: Sixdd on September 13, 2017, 02:21:29 AM
This looks great! I'd also like the idea that the computer could store "scanned" meal items and only the items you've scanned can be produced, maybe defaulting to nutrient paste when there are no recipes "installed/scanned".

I can't wait to have a fully working Replimat system.

As an aside, I noticed that human meat is disabled in the building defs, I would argue that after reconstitution nobody would notice they are eating human meat, just a thought.
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on September 15, 2017, 04:44:16 AM
Quote from: Sixdd on September 13, 2017, 02:21:29 AM
This looks great! I'd also like the idea that the computer could store "scanned" meal items and only the items you've scanned can be produced, maybe defaulting to nutrient paste when there are no recipes "installed/scanned".

I've thought about this for some time, but felt that this would be too tedious in terms of gameplay, as well as being a bit beyond my minimal coding expertise.

Rather, all recipes come preloaded into the Isolinear Computing Module, which is only available from exotic goods traders. You would then use the ICM to build a Replimat Computer, and only those Terminals connected to the Computer can replicate meals (disconnected Terminals will do nothing).

Quote from: Sixdd on September 13, 2017, 02:21:29 AMAs an aside, I noticed that human meat is disabled in the building defs, I would argue that after reconstitution nobody would notice they are eating human meat, just a thought.

Makes sense - organic matter is organic matter.
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on September 21, 2017, 04:25:01 AM
Progress Report, 21 September 2017

Since my last update, I managed to have the tanks store nutrient feedstock, and the terminals consume feedstock whenever a meal is being replicated. However, dubwise and I soon discovered that if a map does not have any Replimat-related buildings, the game would eventually crash after filling the debug log with various ThoughtWorker and JobDriver errors.

After much discussion and despite my dislike of bundling depedencies, we ended up rewriting the current code from scratch using Harmony to patch existing job drivers.

Here is what we have working so far:
- Terminals generate a random meal whenever a colonist or healthy prisoner uses it
- Feedstock tanks supply nutrients to Terminals
- A rudimentary food selection menu allows selection of available meals

And here are our outstanding issues:
- Terminals do not yet update in real time when feedstock tanks are missing/empty
- Visitors cannot use the Terminals
- Feedstock tanks can currently only be filled/emptied in dev mode
- Food delivery job drivers for colonist and prisoner patients currently do not recognize Terminals as a food source, throws log errors and fails entirely
- Custom refrigerated hoppers not yet implemented
- A power failure to the Replimat system could potentially crash the game completely
- Replimat computer not yet implemented
- Incidents disabled
- Exotic part required to build replimat computer temporarily unavailable do to removal of orbital trader patches

Looks like we've got our work cut out for us...
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: Sixdd on September 24, 2017, 07:54:23 PM
Keep it up guys! You'll get there eventually :D
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: Madman666 on October 06, 2017, 01:00:56 PM
This is definitely nice thing to look out for. Will be paying close attention to this)) Cooks be gone!
Title: Re: [A17] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on October 07, 2017, 05:02:07 AM
Progress Report, 7 October 2017

The next piece of the puzzle were the hoppers.

In the context of the Replimat mod, the hoppers are supposed to take raw food, disassemble them at a molecular level into an organic nutrient suspension, and pipe them through the powernet to the feedstock tanks. I started off by making a 3x1 building with a 1x1 storage cell, with the two bits at the side representing the molecular disassembly machinery:

(https://i.imgur.com/V5dILpC.png)

The transparent lid uses code similar to that for Rimfridge, allowing the contents of the hopper to be shown.

At dubwise's suggestion and assistance (along with help from a number of modders on Discord), I've made it so that if the hopper is connected to the powernet and has power, it will keep the raw food inside frozen. This is so that if the tanks on the network are all filled up, any leftover raw food isn't going to rot.

We believe our implementation of the freezer code might be a bit more efficient than what RimFridge has, so if you're interested, you can take a look at this commit: https://github.com/sumghai/Replimat/commit/8c75922bb0fd21ec0486732c89329a9bf2a5090a

I haven't yet fully implemented the actual conversion from raw food to feedstock, but the hopper currently supplies feedstock to the tanks at a steady rate for free. This, of course, will be fixed.
Title: Re: [B18] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on December 27, 2017, 10:22:58 PM
Progress Report, 28 December 2017

After a bit of a hiatus, I've resumed work on this mod.

Hoppers now convert raw food into nutrient feedstock, which are then stored inside the feedstock tanks. As the Replimat Terminals already consume feedstock each time it replicates a meal, this milestone now means the basic supply chain from raw food->feedstock->meal is now complete.

Also, Replimat Terminals now require a Replimat Computer to be connected to the same powernet before they can start producing meals. The plan is to eventually move the meal selection / policy management UI to the computer, where players can define which food and beverage items are available from the menu for colonists and prisoners.

I've also updated the WIP mod to B18, which involved a whole bunch of minor tweaks and fixes.

One new issue I've identified is that sometimes, if a pawn can't use the Replimat (either because there is not enough feedstock or the pawn is on a map without a Replimat system), the pawn stops looking at other food sources and ends up starving. I think this may have something to do with FoodOptimality or even the order in which the JobDrivers are being added. I'd better fix this before looking into any other issue.

Title: Re: [B18] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on December 30, 2017, 07:09:06 PM
Progress Report, 31 December 2017

Dubwise has significantly overhauled the entire codebase, and fixed quite a few major issues:
My todo list, in rough order of priority:
Some (possible) stretch goals for future versions:

Now, some questions for you guys:

As always, please have a play around with the latest WIP (https://github.com/sumghai/Replimat/archive/master.zip) and let us know what you think!
Title: Re: [B18] [WIP] Replimat - Distributed food replicator system
Post by: Harry_Dicks on January 02, 2018, 06:51:59 PM
Holy moley... this mod looks awesome! Gonna keep my eye on this one ;)
Title: Re: [B18] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on January 03, 2018, 02:05:40 AM
Progress Report, 3 January 2018

Tackled some of the low-lying fruit on my todo list over the past few days:

- Terminals no longer show the "Needs food hopper" alert message

- Replimat Spill and Kibble Malfunction incidents added back into mod, and will "waste" feedstock when triggered; the incidents will only also happen if there is enough feedstock in the tanks

- Tank capacity reduced to 250 litres with a smaller 1x1 tile footprint; in the absence of any feedback, I made the executive decision to do so.

- Computer size reduced to a smaller 2x1 footprint, with feedstock gauge shifted upwards to compensate

(https://i.imgur.com/mCbmZPR.png)
Title: Re: [B18] [WIP] Replimat - Distributed food replicator system
Post by: Harry_Dicks on January 03, 2018, 06:31:29 PM
Quote from: sumghai on January 03, 2018, 02:05:40 AM
Progress Report, 3 January 2018

Tackled some of the low-lying fruit on my todo list over the past few days:

- Terminals no longer show the "Needs food hopper" alert message

- Replimat Spill and Kibble Malfunction incidents added back into mod, and will "waste" feedstock when triggered; the incidents will only also happen if there is enough feedstock in the tanks

- Tank capacity reduced to 250 litres with a smaller 1x1 tile footprint; in the absence of any feedback, I made the executive decision to do so.

- Computer size reduced to a smaller 2x1 footprint, with feedstock gauge shifted upwards to compensate

(https://i.imgur.com/mCbmZPR.png)

I really, really like the new computer. I didn't even know it came with a gauge on it, how awesome! Also, about the feedstock tanks, honestly I really liked the bigger ones. What about having both? A small 1x1 tank with 250L, and a big 2x2 with 1500L? Those are just rough numbers, but I threw out 1500 so that it would be a little more efficient than 4 small ones.

Either way, this mod is looking so freaking promising. Especially if you can "time" restrict things. Something to think about - but maybe in the future you could have a very similar system, but it is similar to a restaurant's fountain system. This way you could make a proper bar with some taps, that could dispense different drinks (Cupro's or Veg Garden's) that are piped in from some back storage room. Maybe even require Dub's Bad Hygeine's water/sewage lines to be connected to it!

Also, I'm sad to see that there is no longer a replimat conduit. Hypothetically, couldn't we just have our own sort of "replimat conduit" with Supe's Parallel Power Conduits and Power Logic? That actually has me kind of curious. Can the food still "travel" along those conduits, or must they be the vanilla conduits? And if they have to be vanilla conduits, could we use Power Logic's emitter and receiver coils for a separate conduit network without causing any issues?

Sorry for all of the questions, but there are just so many freaking possibilites with this mod and I FUCKING LOVE IT! 8)
Title: Re: [B18] [WIP] Replimat - Distributed food replicator system
Post by: SzaryKaptur on March 14, 2018, 12:08:32 PM
Doesn't work, when everything is builded they won't use it and they stop eat normal meals
Title: Re: [B18] [WIP] Replimat - Distributed food replicator system
Post by: SzaryKaptur on March 14, 2018, 12:21:22 PM
Nevermind, conflict with Smarter Food Selection
Title: Re: [B18] [WIP] Replimat - Distributed food replicator system
Post by: Vlad0mi3r on March 19, 2018, 05:28:35 PM
The idea of feeding animals with this system would be the reason why I would use this mod. I know I can use industrial rollers to distribute stuff like kibble around but building your base around rollers doesn't work for me.

Looking forward to the possibility of getting the kibble where it needs to be without the haul.
Title: Re: [B18] [WIP] Replimat - Distributed food replicator system
Post by: Sixdd on March 21, 2018, 11:10:42 PM
I like the new computer and tank but I'd also like to see a larger tank as an option for larger colonies, possibly being just cheaper to build than four small tanks or maybe stores more for the same cost, I could go either way on that one. I'm also very curious if this would work over the parallel conduit mod, I'll see about doing some testing there. Keep up the great work sumghai, it's looking awesome!
Title: Re: [B18] [WIP] Replimat - Distributed food replicator system
Post by: Sixdd on March 29, 2018, 08:32:01 AM
So after some testing I'm noticing a lot of pawns just "standing" around my base, is there some incompatibility with mods that add other job givers maybe?
Title: Re: [B18] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on May 17, 2018, 08:01:48 PM
Apologies for the late reply, everyone - real life and other distractions happened.

Quote from: Harry_Dicks on January 03, 2018, 06:31:29 PMAlso, about the feedstock tanks, honestly I really liked the bigger ones. What about having both? A small 1x1 tank with 250L, and a big 2x2 with 1500L? Those are just rough numbers, but I threw out 1500 so that it would be a little more efficient than 4 small ones.

As per my previous update(s), Dubs and I concluded that even large colonies of 50~100 pawns would never be able to fully utilize a single large tank with a max capacity as low as 1000L, so I decided to opt for just the 250L tanks. Also, do note my comments on redundancy.

Quote from: Harry_Dicks on January 03, 2018, 06:31:29 PMEither way, this mod is looking so freaking promising. Especially if you can "time" restrict things. Something to think about - but maybe in the future you could have a very similar system, but it is similar to a restaurant's fountain system.

A daily meal planner is definitely something I have in mind in the long term, although the UI for it is probably going to be a nightmare to design.

Quote from: Harry_Dicks on January 03, 2018, 06:31:29 PMThis way you could make a proper bar with some taps, that could dispense different drinks (Cupro's or Veg Garden's) that are piped in from some back storage room. Maybe even require Dub's Bad Hygeine's water/sewage lines to be connected to it!

I'm pretty keen on this idea as well.

Quote from: Harry_Dicks on January 03, 2018, 06:31:29 PMAlso, I'm sad to see that there is no longer a replimat conduit. Hypothetically, couldn't we just have our own sort of "replimat conduit" with Supe's Parallel Power Conduits and Power Logic? That actually has me kind of curious. Can the food still "travel" along those conduits, or must they be the vanilla conduits? And if they have to be vanilla conduits, could we use Power Logic's emitter and receiver coils for a separate conduit network without causing any issues?

The Replimat conduit was discarded early on because Dubs noted that it was a real pain to code, even for what he's done with Rimatomics and Bad Hygiene. He also noted that if the mod is uninstalled, there'd be some nasty map components left behind that may bork a savegame.

Quote from: SzaryKaptur on March 14, 2018, 12:21:22 PM
Nevermind, conflict with Smarter Food Selection

Noted!

Quote from: Vlad0mi3r on March 19, 2018, 05:28:35 PM
The idea of feeding animals with this system would be the reason why I would use this mod. I know I can use industrial rollers to distribute stuff like kibble around but building your base around rollers doesn't work for me.

Looking forward to the possibility of getting the kibble where it needs to be without the haul.

I'm of two minds regarding this.

On one hand, the idea behind the Replimat is that it effectively eliminates the need to keep livestock, because meals containing meat and protein can be synthesized from plant-based feedstock. On the other hand, Dubs suggested a kibble bowl or trough that automatically restocks itself to feed pets.

Perhaps in a future release?

Quote from: Sixdd on March 29, 2018, 08:32:01 AM
So after some testing I'm noticing a lot of pawns just "standing" around my base, is there some incompatibility with mods that add other job givers maybe?

Probably some shenanigans involving JobGivers / JobDrivers in general.

Due to the way Tynan hardcoded nutrient dispensers in the base game, Dubs had to write new Replimat-specific JobGivers / JobDrivers that takes precedence over the stock JobGivers / JobDrivers, simply to include Replimats as the top-priority food source. I suspect you just found yet another unforeseen incompatibility or edge case bug.
Title: Re: [1.0 Unstable] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on June 29, 2018, 08:51:39 PM
Progress Report, 30 June 2018

With RimNGE updated for the 1.0 Unstable dev build of the game, it's time to revisit Replimat again!

- Renamed most textures to the new north-south-east orientation scheme

- Added a simple cutoff shader to Replimat Terminal, so that it doesn't appear "yellow" when placed in a prison cell

- Dubs refactored some minor bits of code and fixed a couple of graphics transparency issues

Still quite a few bugs to iron out and features to add, but we're getting there!
Title: Re: [1.0 Unstable] [WIP] Replimat - Distributed food replicator system
Post by: lllMWNlll on June 30, 2018, 05:23:46 PM
That's a great idea for a mod...

And i love the art so friendly to Vanilla style...

I'm going to test it
Title: Re: [1.0 Unstable] [WIP] Replimat - Distributed food replicator system
Post by: lllMWNlll on June 30, 2018, 05:51:52 PM
Reading the topic conversation, also thinking by myself.
I like to suggest add Hospital Food to the Replimat food that helps immunization is something awesome to be added to this mod!

Since it's computer processed food for human consumption the computer could be inserted to the medical equipment (vitals monitor) making food hospital for helping quick recover and immunization (i think i spelled correctly).

It would be a bit op? I don't think so... Play Randy (storyteller) at hardest difficulty, and you think a quick recover would benefit and balance the game.

Anyway it's a idea. Maybe you can think in something else

[more one thing...]
Stables and animals... Replimat for animals... Expading even more the mod...
Title: Re: [1.0 Unstable] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on July 01, 2018, 04:47:46 AM
Quote from: lllMWNlll on June 30, 2018, 05:51:52 PM
Reading the topic conversation, also thinking by myself.
I like to suggest add Hospital Food to the Replimat food that helps immunization is something awesome to be added to this mod!
I'm not keen on the idea of medicated food, and it's not technically possible anyway.

The Replimat Terminal code is based on the vanilla nutrient paste dispenser, so when a pawn goes up to get food, there is no code that lets pawns actively choose what they want to eat - rather, the Terminal randomly picks a meal for them from the game database, which gives players the illusion that pawns are picking random meals. If I added medicated food, I won't be able to control whether a pawn actually receives it with each roll of the dice.

Quote from: lllMWNlll on June 30, 2018, 05:51:52 PM
Stables and animals... Replimat for animals...
Yes, a Replimat animal feeder is planned.
Title: Re: [1.0 Unstable] [WIP] Replimat - Distributed food replicator system
Post by: Canute on July 01, 2018, 06:59:21 AM
Quote from: lllMWNlll on June 30, 2018, 05:51:52 PM
Reading the topic conversation, also thinking by myself.
I like to suggest add Hospital Food to the Replimat food that helps immunization is something awesome to be added to this mod!

Since it's computer processed food for human consumption the computer could be inserted to the medical equipment (vitals monitor) making food hospital for helping quick recover and immunization (i think i spelled correctly).

It would be a bit op? I don't think so... Play Randy (storyteller) at hardest difficulty, and you think a quick recover would benefit and balance the game.
As a longtime user of Vegetable garden i can say it shouldn't be to OP.
Many of the VG food add Blood filt/Blood pump./Metaboism which increase the healing too.
And this food just need regular food resources.

But i just think how the pawn's should handle these medical food.
Since food selection is a big issue at RW a long time. Smarter food selection helped abit.
Maybe made the medical food less attractive them regular replimat, so you need to force pawn's to eat them.
Title: Re: [1.0 Unstable] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on July 01, 2018, 05:42:28 PM
Quote from: Canute on July 01, 2018, 06:59:21 AM
But i just think how the pawn's should handle these medical food.
Since food selection is a big issue at RW a long time. Smarter food selection helped abit.
Maybe made the medical food less attractive them regular replimat, so you need to force pawn's to eat them.

As I have already stated, in order for the Replimat to be recognized as a food source, its functionality was based on the vanilla nutrient paste dispenser.

Pawns cannot "choose" specific meal items like medicated food - instead, they eat whatever the Terminal randomly selects for them.
Title: Re: [1.0 Unstable] [WIP] Replimat - Distributed food replicator system
Post by: lllMWNlll on July 01, 2018, 07:06:49 PM
Quote from: sumghai on July 01, 2018, 05:42:28 PM
Quote from: Canute on July 01, 2018, 06:59:21 AM
[...]

As I have already stated, in order for the Replimat to be recognized as a food source, its functionality was based on the vanilla nutrient paste dispenser.

Pawns cannot "choose" specific meal items like medicated food - instead, they eat whatever the Terminal randomly selects for them.

Maybe a second station?
The normal food station (fine meals)
The medical food station (hospital meals)

That should solve the functionality.
Title: Re: [1.0 Unstable] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on July 01, 2018, 07:15:44 PM
Quote from: lllMWNlll on July 01, 2018, 07:06:49 PM
Maybe a second station?
I have no plans to make medicated food of any kind, period.
Title: Re: [1.0 Unstable] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on July 08, 2018, 01:55:16 AM
Progress Report, 8 July 2018

New building/furniture - Replimat Animal Feeder!

(https://i.imgur.com/eLUIsiD.png)

Essentially a high-tech pet food bowl that can store up to 75 units of Kibble, and will automatically top up by drawing from feedstock tanks when less than 20 units of Kibble remain. Can be switched off if required.

Outstanding issues:
Title: Re: [1.0 Unstable] [WIP] Replimat - Distributed food replicator system
Post by: Sixdd on September 07, 2018, 08:35:27 PM
Hey, just wanted to pop in and ask how is the progress going? This is one of my favorite mods but I did feel like once I got the replimat up and running it broke down a bit too often, just my 2 cents.

EDIT: What I meant was the malfunction events seemed to frequent, not that the terminal would breakdown.
Title: Re: [1.0 Unstable] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on September 08, 2018, 01:42:44 AM
Quote from: Sixdd on September 07, 2018, 08:35:27 PM
Hey, just wanted to pop in and ask how is the progress going?
I haven't made too much progress since then, due to a change in personal circumstances.

Dubwise and I are looking into resuming work on this once things settle down, although I understand that Dubs is currently busy squashing bugs/incompatibilities in his own mods.

Quote from: Sixdd on September 07, 2018, 08:35:27 PMThis is one of my favorite mods but I did feel like once I got the replimat up and running it broke down a bit too often, just my 2 cents.

EDIT: What I meant was the malfunction events seemed to frequent, not that the terminal would breakdown.
Yes, I've noticed that the Replimat Malfunction incidents seemed to happen a bit more often than I would've liked.

It should be easy for me to tweak them to occur less often, but on the flipside, the current frequency of incidents may serve to balance out the OP nature of this mod (I mean, the mod helps mitigate the need for large meal/raw food freezer rooms, cooks and stoves to sustain large colonies - even I admit it's a bit cheaty).
Title: Re: [1.0 Unstable] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on September 29, 2018, 01:57:09 AM
Progress Report, 29 September 2018

Apologies for the radio silence, folks - I recently relocated to start a new job, so I hadn't had much free time or reliable internet.

Now that things have settled down, here's a mockup of the Meal Manager UI that would allow players to control what meal options are available to all connected Replimats:

(https://i.imgur.com/byjQ8Zz.png)
Title: Re: [1.0 Unstable] [WIP] Replimat - Distributed food replicator system
Post by: Canute on September 29, 2018, 04:30:35 AM
Hey you job got priority, since you don't have an own replimat you need it to to have food ! :-)
Title: Re: [B19] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on September 30, 2018, 02:22:50 AM
Progress Report, 30 September 2018

Hopper FX mostly implemented. Still need to add looping sound FX.

(https://i.imgur.com/xGPzS6D.gif)

A nicer GIFV version. (https://i.imgur.com/xGPzS6D.gifv)
Title: Re: [1.0] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on October 06, 2018, 07:09:15 AM
Progress Report, 6 October 2018
Todo:
Title: Re: [1.0] [WIP] Replimat - Distributed food replicator system
Post by: Sixdd on October 14, 2018, 11:37:08 AM
Always great to see progress, can't wait for the 1.0 release :D
Title: Re: [1.0] [WIP] Replimat - Distributed food replicator system
Post by: Chicken Plucker on October 14, 2018, 01:04:41 PM
Loving the effects, some high budget Hollywood sci-fi shenanigans going on here, well done on the progress!
Title: Re: [1.0] [WIP] Replimat - Distributed food replicator system
Post by: Phenomphear on October 15, 2018, 08:10:52 PM
Literally made an account to say I must have this and it looks amazing! Are there more mods here then on steam and if so, why?
Title: Re: [1.0] [WIP] Replimat - Distributed food replicator system
Post by: Sixdd on January 29, 2019, 11:16:39 PM
Is there any way to make the food decompiler thingy suck down full stacks at a time? I have one making the sound effect non-stop because I have 20 pawns and at least a dozen animals all eating from this system and the sound effect gets annoying after about 20 hours. Even still this mod is great, thank you for creating it :D
Title: Re: [1.0] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on January 30, 2019, 09:03:48 AM
Quote from: Sixdd on January 29, 2019, 11:16:39 PM
Is there any way to make the food decompiler thingy suck down full stacks at a time? I have one making the sound effect non-stop because I have 20 pawns and at least a dozen animals all eating from this system and the sound effect gets annoying after about 20 hours.

Yes, I've observed this as well in playthroughs with large colonies.

I do want to finish up this mod eventually, but I'm heavily reliant on Dubwise's help with the coding, and AFAIK he has asked me to wait until he has finished remaking MarsX for RimWorld, so I haven't bought this up again just yet.
Title: Re: [1.0] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on March 08, 2019, 02:32:56 AM
Progress Report, 8 March 2019 - see first post for WIP download

Apologies again for the radio silence! Both Dubwise and I had quite a few different projects and commitments going on, and it took a while before we could revisit Replimat yet again.

To start off, Dubwise significantly revised the underlying code to be more efficient and in line with changes to the vanilla Nutrient Paste Dispenser, since the Replimat Terminals are essentially a more advanced version of the NPDs.

Next, after much discussion, we decided that rather than having a custom meal management interface, we would simply use the vanilla food restriction system, so the Terminals will now only replicate food allowed by each Pawn's individual food restriction policy.

By default, pawns would choose the highest quality meals, but there is a Mod Settings option that would allow pawns to randomly pick meals of any quality - this is to cater for third-party food mods like Vegetable Garden, that has a wide range of simple, fine and lavish meals and snacks.

I added the Storage tab to the Animal Feeder, so players can customize the storage priority of the Kibble generated/stored within.

Finally, Terminals can now be used to synthesize multiple stacks of Packaged Survival Meals, so that players can prepare for caravans or stock up for emergencies. Each Terminal comes with a button:

(https://i.imgur.com/5OaaWhl.png)

A warning message appears if the selected Terminal is not connected to a powerNet, or if tanks don't have enough feedstock:

(https://i.imgur.com/JuTHeLr.png)

Otherwise, a modal dialog with a slider appears, allowing players to adjust how many Survival Meals to replicate. The maximum number that can be made at a time is usually 30, but this can decrease if the stored feedstock is low:

(https://i.imgur.com/hzYerON.png)

Once players click OK, the desired number of Survival Meals are synthesized:

(https://i.imgur.com/JMAtRUS.png)




So what else is missing?


Other than that, this mod should be relatively stable now for a WIP - have fun feeding your large colonies!
Title: Re: [1.0] [WIP] Replimat - Distributed food replicator system
Post by: sidfu on March 13, 2019, 12:31:04 AM
looks like its incomp with the smater food selection mod
Exception in Verse.AI.ThinkNode_PrioritySorter TryIssueJobPackage: System.Exception: Smarter_Food_Selection: Exception when fetching. (getter=Hoath eater=Hoath)
System.ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index
  at System.Collections.Generic.List`1[Verse.Thing].get_Item (Int32 index) [0x00000] in <filename unknown>:0
  at WM.SmarterFoodSelection.Detours.Building_NutrientPasteDispenser_Detour.GetBestMealThoughtsFor (RimWorld.Building_NutrientPasteDispenser self, Verse.Pawn eater) [0x00000] in <filename unknown>:0
  at WM.SmarterFoodSelection.FoodScoreUtils.FoodScoreFor (WM.SmarterFoodSelection.Policy policy, Verse.Pawn eater, Verse.Pawn getter, Verse.Thing food, Boolean noDistanceFactor, Boolean quickScore) [0x00000] in <filename unknown>:0
  at WM.SmarterFoodSelection.FoodUtils.MakeRatedFoodListFromThingList (IEnumerable`1 list, Verse.Pawn eater, Verse.Pawn getter, WM.SmarterFoodSelection.Policy policy, Boolean doScoreSort) [0x00000] in <filename unknown>:0
  at WM.SmarterFoodSelection.FoodUtils.MakeRatedFoodListForPawn (Verse.Map map, Verse.Pawn eater, Verse.Pawn getter, WM.SmarterFoodSelection.Policy policy, System.Collections.Generic.List`1& foodList, Boolean canUseInventory, Boolean allowForbidden) [0x00000] in <filename unknown>:0
  at WM.SmarterFoodSelection.Detours.FoodUtility.TryFindBestFoodSourceFor.Internal (Verse.Pawn getter, Verse.Pawn eater, Boolean desperate, Verse.Thing& foodSource, Verse.ThingDef& foodDef, Boolean canRefillDispenser, Boolean canUseInventory, Boolean allowForbidden, Boolean allowCorpse, WM.SmarterFoodSelection.Policy forcedPolicy) [0x00000] in <filename unknown>:0
  at WM.SmarterFoodSelection.Detours.FoodUtility.TryFindBestFoodSourceFor._Postfix (System.Boolean& __state, System.Boolean& __result, Verse.Pawn getter, Verse.Pawn eater, Boolean desperate, Verse.Thing& foodSource, Verse.ThingDef& foodDef, Boolean canRefillDispenser, Boolean canUseInventory, Boolean allowForbidden, Boolean allowCorpse) [0x00000] in <filename unknown>:0
  at System.Collections.Generic.List`1[Verse.Thing].get_Item (Int32 index) [0x00000] in <filename unknown>:0
  at WM.SmarterFoodSelection.Detours.Building_NutrientPasteDispenser_Detour.GetBestMealThoughtsFor (RimWorld.Building_NutrientPasteDispenser self, Verse.Pawn eater) [0x00000] in <filename unknown>:0
  at WM.SmarterFoodSelection.FoodScoreUtils.FoodScoreFor (WM.SmarterFoodSelection.Policy policy, Verse.Pawn eater, Verse.Pawn getter, Verse.Thing food, Boolean noDistanceFactor, Boolean quickScore) [0x00000] in <filename unknown>:0
  at WM.SmarterFoodSelection.FoodUtils.MakeRatedFoodListFromThingList (IEnumerable`1 list, Verse.Pawn eater, Verse.Pawn getter, WM.SmarterFoodSelection.Policy policy, Boolean doScoreSort) [0x00000] in <filename unknown>:0
  at WM.SmarterFoodSelection.FoodUtils.MakeRatedFoodListForPawn (Verse.Map map, Verse.Pawn eater, Verse.Pawn getter, WM.SmarterFoodSelection.Policy policy, System.Collections.Generic.List`1& foodList, Boolean canUseInventory, Boolean allowForbidden) [0x00000] in <filename unknown>:0
  at WM.SmarterFoodSelection.Detours.FoodUtility.TryFindBestFoodSourceFor.Internal (Verse.Pawn getter, Verse.Pawn eater, Boolean desperate, Verse.Thing& foodSource, Verse.ThingDef& foodDef, Boolean canRefillDispenser, Boolean canUseInventory, Boolean allowForbidden, Boolean allowCorpse, WM.SmarterFoodSelection.Policy forcedPolicy) [0x00000] in <filename unknown>:0
  at WM.SmarterFoodSelection.Detours.FoodUtility.TryFindBestFoodSourceFor._Postfix (System.Boolean& __state, System.Boolean& __result, Verse.Pawn getter, Verse.Pawn eater, Boolean desperate, Verse.Thing& foodSource, Verse.ThingDef& foodDef, Boolean canRefillDispenser, Boolean canUseInventory, Boolean allowForbidden, Boolean allowCorpse) [0x00000] in <filename unknown>:0  ---> System.ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index
  at System.Collections.Generic.List`1[Verse.Thing].get_Item (Int32 index) [0x00000] in <filename unknown>:0
  at WM.SmarterFoodSelection.Detours.Building_NutrientPasteDispenser_Detour.GetBestMealThoughtsFor (RimWorld.Building_NutrientPasteDispenser self, Verse.Pawn eater) [0x00000] in <filename unknown>:0
  at WM.SmarterFoodSelection.FoodScoreUtils.FoodScoreFor (WM.SmarterFoodSelection.Policy policy, Verse.Pawn eater, Verse.Pawn getter, Verse.Thing food, Boolean noDistanceFactor, Boolean quickScore) [0x00000] in <filename unknown>:0
  at WM.SmarterFoodSelection.FoodUtils.MakeRatedFoodListFromThingList (IEnumerable`1 list, Verse.Pawn eater, Verse.Pawn getter, WM.SmarterFoodSelection.Policy policy, Boolean doScoreSort) [0x00000] in <filename unknown>:0
  at WM.SmarterFoodSelection.FoodUtils.MakeRatedFoodListForPawn (Verse.Map map, Verse.Pawn eater, Verse.Pawn getter, WM.SmarterFoodSelection.Policy policy, System.Collections.Generic.List`1& foodList, Boolean canUseInventory, Boolean allowForbidden) [0x00000] in <filename unknown>:0
  at WM.SmarterFoodSelection.Detours.FoodUtility.TryFindBestFoodSourceFor.Internal (Verse.Pawn getter, Verse.Pawn eater, Boolean desperate, Verse.Thing& foodSource, Verse.ThingDef& foodDef, Boolean canRefillDispenser, Boolean canUseInventory, Boolean allowForbidden, Boolean allowCorpse, WM.SmarterFoodSelection.Policy forcedPolicy) [0x00000] in <filename unknown>:0
  at WM.SmarterFoodSelection.Detours.FoodUtility.TryFindBestFoodSourceFor._Postfix (System.Boolean& __state, System.Boolean& __result, Verse.Pawn getter, Verse.Pawn eater, Boolean desperate, Verse.Thing& foodSource, Verse.ThingDef& foodDef, Boolean canRefillDispenser, Boolean canUseInventory, Boolean allowForbidden, Boolean allowCorpse) [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
at WM.SmarterFoodSelection.Detours.FoodUtility.TryFindBestFoodSourceFor._Postfix (bool&,bool&,Verse.Pawn,Verse.Pawn,bool,Verse.Thing&,Verse.ThingDef&,bool,bool,bool,bool) <0x00287>
at (wrapper dynamic-method) RimWorld.FoodUtility.TryFindBestFoodSourceFor_Patch3 (Verse.Pawn,Verse.Pawn,bool,Verse.Thing&,Verse.ThingDef&,bool,bool,bool,bool,bool,bool,bool) <0x00757>
at RimWorld.JobGiver_GetFood.TryGiveJob (Verse.Pawn) <0x001f7>
at (wrapper dynamic-method) Verse.AI.ThinkNode_JobGiver.TryIssueJobPackage_Patch1 (object,Verse.Pawn,Verse.AI.JobIssueParams) <0x0004b>
at Verse.AI.ThinkNode_PrioritySorter.TryIssueJobPackage (Verse.Pawn,Verse.AI.JobIssueParams) <0x0056b>

Verse.Log:Error(String, Boolean)
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_Patch5(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()

BB started 10 jobs in one tick. newJob=Ingest (Job_3829) A=Thing_ReplimatTerminal62161 jobGiver=RimWorld.JobGiver_GetFood jobList=(Ingest (Job_3809) A=Thing_ReplimatTerminal62161) (Ingest (Job_3811) A=Thing_ReplimatTerminal62161) (Ingest (Job_3813) A=Thing_ReplimatTerminal62161) (Ingest (Job_3815) A=Thing_ReplimatTerminal62161) (Ingest (Job_3817) A=Thing_ReplimatTerminal62161) (Ingest (Job_3819) A=Thing_ReplimatTerminal62161) (Ingest (Job_3821) A=Thing_ReplimatTerminal62161) (Ingest (Job_3823) A=Thing_ReplimatTerminal62161) (Ingest (Job_3825) A=Thing_ReplimatTerminal62161) (Ingest (Job_3827) A=Thing_ReplimatTerminal62161) (Ingest (Job_3829) A=Thing_ReplimatTerminal62161)  lastJobGiver=RimWorld.JobGiver_GetFood
Verse.Log:Error(String, Boolean)
Verse.AI.JobUtility:TryStartErrorRecoverJob(Pawn, String, Exception, JobDriver)
Verse.AI.Pawn_JobTracker:StartJob_Patch2(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
WM.SmarterFoodSelection.Detours.Toils_Ingest.<>c__DisplayClass1_0:<Postfix>b__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:Notify_PatherArrived()
Verse.AI.Pawn_PathFollower:PatherArrived()
Verse.AI.Pawn_PathFollower:StartPath(LocalTargetInfo, PathEndMode)
Verse.AI.<GotoThing>c__AnonStorey0:<>m__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch2(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
WM.SmarterFoodSelection.Detours.Toils_Ingest.<>c__DisplayClass1_0:<Postfix>b__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:Notify_PatherArrived()
Verse.AI.Pawn_PathFollower:PatherArrived()
Verse.AI.Pawn_PathFollower:StartPath(LocalTargetInfo, PathEndMode)
Verse.AI.<GotoThing>c__AnonStorey0:<>m__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch2(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
WM.SmarterFoodSelection.Detours.Toils_Ingest.<>c__DisplayClass1_0:<Postfix>b__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:Notify_PatherArrived()
Verse.AI.Pawn_PathFollower:PatherArrived()
Verse.AI.Pawn_PathFollower:StartPath(LocalTargetInfo, PathEndMode)
Verse.AI.<GotoThing>c__AnonStorey0:<>m__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch2(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
WM.SmarterFoodSelection.Detours.Toils_Ingest.<>c__DisplayClass1_0:<Postfix>b__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:Notify_PatherArrived()
Verse.AI.Pawn_PathFollower:PatherArrived()
Verse.AI.Pawn_PathFollower:StartPath(LocalTargetInfo, PathEndMode)
Verse.AI.<GotoThing>c__AnonStorey0:<>m__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch2(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
WM.SmarterFoodSelection.Detours.Toils_Ingest.<>c__DisplayClass1_0:<Postfix>b__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:Notify_PatherArrived()
Verse.AI.Pawn_PathFollower:PatherArrived()
Verse.AI.Pawn_PathFollower:StartPath(LocalTargetInfo, PathEndMode)
Verse.AI.<GotoThing>c__AnonStorey0:<>m__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch2(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
WM.SmarterFoodSelection.Detours.Toils_Ingest.<>c__DisplayClass1_0:<Postfix>b__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:Notify_PatherArrived()
Verse.AI.Pawn_PathFollower:PatherArrived()
Verse.AI.Pawn_PathFollower:StartPath(LocalTargetInfo, PathEndMode)
Verse.AI.<GotoThing>c__AnonStorey0:<>m__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch2(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
WM.SmarterFoodSelection.Detours.Toils_Ingest.<>c__DisplayClass1_0:<Postfix>b__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:Notify_PatherArrived()
Verse.AI.Pawn_PathFollower:PatherArrived()
Verse.AI.Pawn_PathFollower:StartPath(LocalTargetInfo, PathEndMode)
Verse.AI.<GotoThing>c__AnonStorey0:<>m__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch2(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
WM.SmarterFoodSelection.Detours.Toils_Ingest.<>c__DisplayClass1_0:<Postfix>b__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:Notify_PatherArrived()
Verse.AI.Pawn_PathFollower:PatherArrived()
Verse.AI.Pawn_PathFollower:StartPath(LocalTargetInfo, PathEndMode)
Verse.AI.<GotoThing>c__AnonStorey0:<>m__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch2(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
WM.SmarterFoodSelection.Detours.Toils_Ingest.<>c__DisplayClass1_0:<Postfix>b__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:Notify_PatherArrived()
Verse.AI.Pawn_PathFollower:PatherArrived()
Verse.AI.Pawn_PathFollower:StartPath(LocalTargetInfo, PathEndMode)
Verse.AI.<GotoThing>c__AnonStorey0:<>m__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch2(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
WM.SmarterFoodSelection.Detours.Toils_Ingest.<>c__DisplayClass1_0:<Postfix>b__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:Notify_PatherArrived()
Verse.AI.Pawn_PathFollower:PatherArrived()
Verse.AI.Pawn_PathFollower:StartPath(LocalTargetInfo, PathEndMode)
Verse.AI.<GotoThing>c__AnonStorey0:<>m__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch2(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
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()

Title: Re: [1.0] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on March 13, 2019, 12:54:28 AM
Quote from: sidfu on March 13, 2019, 12:31:04 AM
looks like its incomp with the smater food selection mod
From a cursory examination of Smarter Food Selection's mod features and codebase, it looks like it's fighting with Replimat over who gets to patch which food-related JobDrivers. And AFAIK, Smart Food Selection has its own proprietary way of controlling individual pawn food policy, whereas Replimat relies on the vanilla food restriction system.

In essence, both are competing mods, so I don't think Dubwise and I will plan to add compatibility for Replimat. Sorry!
Title: Re: [1.0] [WIP] Replimat - Distributed food replicator system
Post by: sumghai on April 17, 2019, 06:19:38 PM
Now released into the wild!

https://ludeon.com/forums/index.php?topic=48584.0