Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conditionally autolearned recipes #45204

Open
I-am-Erk opened this issue Nov 1, 2020 · 3 comments
Open

Conditionally autolearned recipes #45204

I-am-Erk opened this issue Nov 1, 2020 · 3 comments
Labels
[C++] Changes (can be) made in C++. Previously named `Code` Crafting / Construction / Recipes Includes: Uncrafting / Disassembling [JSON] Changes (can be) made in JSON Mechanics: Effects / Skills / Stats Effects / Skills / Stats (P3 - Medium) Medium (normal) priority <Suggestion / Discussion> Talk it out before implementing

Comments

@I-am-Erk
Copy link
Member

I-am-Erk commented Nov 1, 2020

Problem

Autolearning recipes is currently a pretty simple matter. If the recipe is set to autolearn, you learn it when you meet the skill requirements.

A lot of the current "loot all the books" meta would become much more interesting if there were more complex ways to learn recipes.

Solution

Originally I was just going to ask for a field that required a proficiency before the recipe would autolearn, but then I thought of something way more cool and powerful.

Add an autolearn_conditional field, (edit: or maybe conditional_visibility) which uses the standard JSON conditionals (the ones originally designed for dialogue) to specify a set of conditions required to autolearn (or show, if we go with visibility) the recipe.

This would allow proficiencies, mutations, starting professions, time since cataclysm, current season, items in your possession, and an almost infinite number of other criteria to be required before you can learn a recipe. We'd be able to use and and or in those requirements, and basically do whatever we want to trigger access to particular recipes.

We should also add a forget_if_false option (edit: or hide_if_false if we use conditional visibility), which would cause you to lose the recipe if the conditional was no longer true. This would allow some really weird stuff, like having a snowball recipe that was only available in winter while outdoors.

Other Notes

We should consider using JSON conditionals in other contexts, such as determining when certain item actions are available. They're powerful and standardized.

@I-am-Erk I-am-Erk added [C++] Changes (can be) made in C++. Previously named `Code` [JSON] Changes (can be) made in JSON Crafting / Construction / Recipes Includes: Uncrafting / Disassembling Mechanics: Effects / Skills / Stats Effects / Skills / Stats (P3 - Medium) Medium (normal) priority <Suggestion / Discussion> Talk it out before implementing labels Nov 2, 2020
@kholat
Copy link
Contributor

kholat commented Nov 2, 2020

Now this, is pod racing!

@Aivean
Copy link
Contributor

Aivean commented Nov 6, 2020

Somewhat related: #45262

@Ramza13
Copy link
Contributor

Ramza13 commented Feb 1, 2021

So once #42786 is merged this will be pretty easy to do.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[C++] Changes (can be) made in C++. Previously named `Code` Crafting / Construction / Recipes Includes: Uncrafting / Disassembling [JSON] Changes (can be) made in JSON Mechanics: Effects / Skills / Stats Effects / Skills / Stats (P3 - Medium) Medium (normal) priority <Suggestion / Discussion> Talk it out before implementing
Projects
None yet
Development

No branches or pull requests

4 participants