Oxygen Not Included

Oxygen Not Included

Not enough ratings
CafePlus: New Coffee Drinks
   
Award
Favorite
Favorited
Unfavorite
File Size
Posted
Updated
147.671 KB
4 Aug @ 8:11pm
21 Aug @ 8:18am
6 Change Notes ( view )

Subscribe to download
CafePlus: New Coffee Drinks

In 2 collections by hl
HB's ONI Mods
186 items
HB Development Mods
20 items
Description
Why not let your dupes and boops start their day with a variety of bracing and delicious new drinks?

The favorite espresso is still there, but now you can also select from drinks made from milk (brackene), or oil & petroleum for the bionics. There are also few specialty drinks made from other solids (such as mushroom and (ugh) muckroot!)

Works just like the standard espresso machine, however, you can click on the machine and set a recipe. This specified liquid MUST match what you feed it, or you will damage the machine! After all, these are hand-crafted Gravitas wonders.

You can hover over the recipe to see the effects.

Note: to make this upward compatible, Boops are (still) allowed to drink the standard water-based espresso, but in the interest of better role playing and gaming, they are not allowed to drink other water-based drinks!

Effects are not currently being serialized so they will disappear on save/load. But they are temporary anyway!

The JSON file is fully customizable, so go ahead and make (or change the behavior of) any drink you like (including ethanol, nuclear waste) and modify the effects as you please in a User.CafePlusConfig.json file in your mod directory.

Share your favorites!

The file format description is available at https://raw.githubusercontent.com/creatrope/ONImods/refs/heads/master/CafePlus/CafePlusConfig.json

The file format supports multiple solid ingredients, however this is not implemented in the code (yet). Only the first ingredient is used.

Special thanks to @Sgt_Imalas and @ShadowKitty42 for valuable guidance during development.
23 Comments
hl  [author] 21 Aug @ 8:22am 
Celebrating 100+ users. Added Isobrew! Nuclear Waste and Ice, effects is "Glowin' All Day" (Luminescence and Radiation Resistance).
hl  [author] 15 Aug @ 11:21am 
@dje353, will add nuclear drinks shortly!
Redneck353 14 Aug @ 2:11pm 
Nuclear waste coffe to make the dupes glowsticks let's go ! :P
Kaedys 7 Aug @ 6:58am 
Mmm, fair, Discord is almost certainly a better discussion environment for this type of thing. For what it's worth, I can think of at least 3 different locations and at least 4-5 styles for config handling just off the top of my head amongst the mods I use, so ya, it's definitely all over the place out there >.<
hl  [author] 7 Aug @ 12:38am 
I'm totally willing to change how I do configs,but now I've got a couple of mods using this system so I'd like to standardize on a best practice and focus on more interesting development! May I suggest you start a thread on the discord and see if we can align to some kind of consensus on the best practice; what I have it more or less what they suggested and I'd already changed it several times before they even weighed in. Again - I'm not tied to what I have at all, but perhaps best to take into a place where more people can see and comment.
Kaedys 6 Aug @ 7:08pm 
3/3) On a side note, it might be worth changing the config location to the /mods folder, rather than the mod's numbered steam folder, as that entirely avoids the issue of files being overwritten on update, since the config isn't in the numbered folder at all anymore. One mod I use (Customize Buildings) uses `Path.Combine(Util.RootFolder(), "mods")` to point to that mods folder, rather than depending on `Assembly.GetExecutingAssembly()`. That mod (and all of Fumihiko's mods, as far as I know) also uses a versioned config file, with a specific version key at the top level in the JSON, so the configs can be updated as changes to the structure or fields are added, without unconditionally overwriting what the user puts in it. You can an example of that here: https://github.com/Truinto/ONI-Modloader-SimpleMods/blob/master/src/CustomizeBuildings/_CustomizeBuildingsState.cs#L749
Kaedys 6 Aug @ 7:08pm 
(2/3) Having a folder of JSONs would also be nice for sharing potential "sets" of user drinks tailored towards different types of players. As an example, the effects section made me realize that the +1 Athletics from the original espresso is, frankly, kinda pitiful. So I reduced the morale boost on all of them to only +2 (by the time I have an espresso machine and a pincha farm, I don't need another +4), and instead made each one have a sort of themed effect. Espresso was already good for haulers, so now it gives +2 Athletics and Strength. Gravitino got +2 Science and Machinery. Moochiato git +2 Ranching and Farming (because moo!). I added a Slicksterillo made with biodiesel and salt that gives radiation resistance and transit tube speed (because greased!) Not sure if those would make sense for default drinks, but users could submit drink sets that could, at your discretion, be included as default-off drink files with the mod's config folder.
Kaedys 6 Aug @ 7:08pm 
(1/3) Also adding to and the rewriting to the JSON if fields are missing. For example, you added the Duration field to the effects section, and all of my effects suddenly had a duration of 0 because I had not defined that field in my config previously. The mod could have detected that state, filled in a rational default, and written back out to the config file with the updated value and the new structure (while preserving the other content in there, the custom drinks and effects and such). Notably, one thing that CANNOT be done currently, with the "default config" being baked into the assembly, is to *remove* any of the new drinks the mod adds. They can be changed, and additional ones added, via the config, but any drink removed from the config is still added by the mod, because it loads the default additions *and then* the user config. I noticed that when you renamed some of the drinks in the last update, suddenly I had duplicate drinks with slightly different names.
sepruecom 6 Aug @ 12:48pm 
Without knowing anything about the mod, modding of ONI or even having the mod installed: What if you just had several config files? Then you could have a default_recipes.json for the default recipes that are always overwritten (with a warning within the file not to modify it) and a user_recipes.json which contains user recipes and is never overwritten.

Or you could have an entire folder of jsons. Would make exchanging recipes between user much more simple (just put file into directory). Renaming files would deactivate them ("heavens_brew.json0" is not recognised as a json file)

And maybe an additional "disable.json" for disabled recipes. Another one that never needs to be overwritten, but you could easily switch recipes off (and on) with that file.
hl  [author] 6 Aug @ 1:47am 
Now supports other solids (mushroom and muckroot) drinks in the example file. Note: only supports a single solid right now. Most drinks, just like a coffee shop, are still Peppernut (SpiceNut) based.