If you have a book with crafting recipes, the items in said recipes are listed in the crafting menu. This lets you see what skills you need to craft the item, so you can train for them appropriately. It makes sense for them to be shown since you know the item/recipe exists, unlike autolearned recipes that are above your skill level.
You cannot see a crafting recipe written in a book if you do not have the necessary level in the recipe's primary skill. This can be confusing to the player and gives them no indication of what skills to train to be able to craft the item.
The best solution would be to show all recipes written in books, regardless of skill levels. If this is unbalanced in some way, the game could instead allow the player to unlock the recipes (if not the skills needed) by continuing to read the book once its other knowledge has been exhausted.
One issue I could see with this is that it would allow you to attempt to craft some items before you have the skill level to do so, and thus potentially allow you to powerlevel the skill.
IIRC if a recipe doesn't have a "Required skills" only a "Skills Used" value, you can attempt to craft the recipe at any skill level. So if you were to attempt a level 8 mechanics recipe while at level 2 skill, the game would reward you with a ton of xp in that skill.
Ability to learn recipes from a book doesn't necessarily mean there is a
literal recipe in the book, it just has the information necessary to allow
someone with the appropriate skill to figure it out.
@Beanzy If that's the case, the XP gain from recipes above your level ought to be reworked. Blindly trying to make a recipe far more complex than you can understand shouldn't help you much at all in figuring it out. I'd suggest either granting no XP for recipes more than 2 levels above your current skill, or capping the additional XP gain to that of a recipe 1 or 2 levels above your current skill level. For example, attempting to craft a level 8 item at level 2 skill would net you the same experience as trying to craft something at level 3-4.
@kevingranade True. However, since the recipes are listed in the book's description, the player has at least some knowledge of their existence. Information could still be conveyed to the player without being unrealistic for the character by listing the recipe in the crafting menu, but not the ingredients required to make it. The player would be able to see the other requirements of the recipe and perhaps the item description, but there would be a message replacing the component and tool lists, such as "You are not skilled enough to understand this item's recipe."
Though less optimal, it would also be possible to list the lacking skill next to the name of the item in the book's description. For instance, if the player has a book with the recipe for the Cranial Flashlight CBM (electronics, difficulty 6), but only 4 levels of electronics skill, they would see "Cranial Flashlight CBM (electronics)" listed in the book's description along with other recipes. This way the player would at least know what skill they need to train in order to craft the item without giving too much information to the character.
However, since the recipes are listed in the book's description, the player has at least some knowledge of their existence.
This kind of, "player knows x, therefore they also know y" argument doesn't fly, in this case it's already pushed as far as I want it to go. If you want consistency I'd be more likely to remove that list of recipes and replace it with a message about the book having more to offer than provide more detail about the recipes.
Ability to learn recipes from a book doesn't necessarily mean there is a literal recipe in the book, it just has the information necessary to allow someone with the appropriate skill to figure it out.
If you want consistency I'd be more likely to remove that list of recipes and replace it with a message about the book having more to offer than provide more detail about the recipes.
The most apparent concern I see with having the recipes hidden from the player (and the skills needed to make the recipes _visible_ hidden as well) is that the player is left with an essentially useless item. I, as a player, would know that there's something within a book, but the steps to unlock them and the value of the rewards would both be unknown. It's an impasse with no clear way forward.
What are your thoughts, then, on changing the mechanics so as to have the recipes actually present in the book? I see this as a move that's both more player-friendly and one that doesn't stretch the boundaries of realism the game aims to adhere to.
If you want consistency I'd be more likely to remove that list of recipes and replace it with a message about the book having more to offer than provide more detail about the recipes.
So this would replace "This book has the following recipes..." with something to the effect of "This book has more recipes"? Neither this nor the current system make sense in the case of books that _do_ have literal recipes written in them, such as cookbooks. While the character has access to detailed recipes, the player is left with the name of the item, if that. As such, I would venture to call this bad UI design.
What are your thoughts, then, on changing the mechanics so as to have the recipes actually present in the book?
I am in favor of this. It seems unlikely that someone would be able to craft an item only by looking at a picture of it, especially in the case of advanced electronics or mechanics recipes. All this should require is rewording some book descriptions. If this is done, then my first (and simplest) solution above could be implemented without realism or consistency issues.
IRL I find the best way to learn is doing exactly this, trying to create something beyond my skill level by following a book or other instructions. Obviously, there are a lot of things I have absolutely no chance of actually making but trying exposes me to a lot of different aspects so long as it's in the realm of me being able to understand it more than just copy/paste.
I have two suggestions about book mechanics:
What are your thoughts, then, on changing the mechanics so as to have the recipes actually present in the book?
I'm very against, it was set up the way it is specifically because the books in question are rarely simple lists of recipes. I wouldn't object to labelling some books or recipes as being obvious (cookbooks, how-to books, etc) and surfacing them after first read, but not by default for all books with recipes.
I wouldn't object to labelling some books or recipes as being obvious (cookbooks, how-to books, etc) and surfacing them after first read, but not by default for all books with recipes.
That sounds like a fair compromise to me. Are we then going to hide the lists of recipes in other books? I suppose that would be the most realistic, but it has some issues as Leland pointed out.
I also like that idea. I have two thoughts that are probably just adding unnessicerry complications but will throw out just in case: unlock seeing before you can craft and staying hidden until after you learn.
IRL, even if stuff has no meaning to you until you gain a certain level of knowledge, you can usually figure out what it's about before than. I.e. at lv. 0 electronics, you can't tell what a circuit diagram is; at lv.2 you can tell it's a design for something but can't tell what; lv. 4 you know it's the design for XXXX but you can't actually understand it (attempt to craft) until lv.6.
You often figure out something (recipe) from a random sentence or piece of text and had know way of knowing that you could learn how to make YY from it.
To summarize: The course of action I recommend is to add a new flag like "obvious_recipes" or "explicit_recipes" that causes all the recipes in the book to be revealed as soon as the book is scanned (the special handling the first time you read a book). These recipes, along with their requirements would be displayed in the book description and/or the crafting menu.
Books WITHOUT this flag would not have their recipes displayed at all, either in the crafting menu or in the book description until the crafting requirements for said recipes are met.
One can already hid a recipe in a book, or give it a special name (effectively hiding the name of the resulting item). This was implemented some time ago and used in the for the napalm recipe in the textbook_anarch
.
Well, it used to work. Now it doesn't. Why was this changed in #18286?
- islot_book::recipe_with_description_t rwd{ r, j->skill_level, "", j->hidden };
- if( j->recipe_name.empty() ) {
- rwd.name = item::nname( r->result );
- } else {
- rwd.name = _( j->recipe_name.c_str() );
- }
+ islot_book::recipe_with_description_t desc{ &r, bk.second, item::nname( r.result ), false };
+ item::find_type( bk.first )->book->recipes.insert( desc );
Now it stores (unconditionally) the name of the resulting item (completely ignoring the recipe name as defined in JSON), stores a fixed false
in recipe_with_description_t::hidden
(making this member kind of pointless - it has always the same value).
And by the way, that (removed) feature was implemented as response to https://github.com/CleverRaven/Cataclysm-DDA/pull/11620#issuecomment-82751284 - which kind of reminds me of this discussion.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. Please do not 'bump' or comment on this issue unless you are actively working on it. Stale issues, and stale issues that are closed are still considered.
Most helpful comment
The most apparent concern I see with having the recipes hidden from the player (and the skills needed to make the recipes _visible_ hidden as well) is that the player is left with an essentially useless item. I, as a player, would know that there's something within a book, but the steps to unlock them and the value of the rewards would both be unknown. It's an impasse with no clear way forward.
What are your thoughts, then, on changing the mechanics so as to have the recipes actually present in the book? I see this as a move that's both more player-friendly and one that doesn't stretch the boundaries of realism the game aims to adhere to.