[Suggestion] Lore text on boards
Sunconure11 opened this issue ยท 14 comments
An example would be how The Notice Board mod for Skyrim has boards that just involve various tales of people in that particular area, for instance.
This could be used for a number of things, such as say, adding wanted signs to villages.
Can you give some examples? I need something more concrete than just an idea. Right now, it's hard to add flavor text when the bounty could be just about anything.
Oh, I see. This does make sense, but it doesn't really work for multiple-objective bounties. What if you get an objective that requires you to kill 4 zombies and have 10 bowls? I'm not sure that it makes much sense.
How about the adding customize tag to Bounties and Reward so they only work if they have the same tag ? Something like this:
{
"tag": "Fetching quest"
"lore": "me want meat"
"content": "minecraft:cooked_beef",
"amount": {
"min": 16,
"max": 128
},
"unitWorth": 5,
"weight": 100
}
And for the Reward:
{
"tag": "Fetching quest"
"content": "minecraft:gold_ingot",
"unitWorth": 900,
"weight": 100
}
Sure, this may explain part of a bounty, but what if it picked that objective, that reward, and an objective that asked for a diamond? The lore would again not make sense ("me want meat").
I don't see quite a viable way around this, because for a bounty with X objectives, a bounty pool with N bounties and a reward pool with M rewards, there are roughly (N^X)*M possible rewards (and that assumes only one reward, which is usually false. The final number of combinations would be much higher)
I would say that there are too many edge cases involved for lore to make sense. Even if the above suggestion did not introduce any ambiguity if it matched multiple lore tags, the odds of finding those specific combinations that resulted in "lore" are quite low.
We could it limit by making sure that the mod always pick one of the tag in the bounty pool first before it pick a objective. For explain, when the mod pick a bounty that has the tag "Fetching quest", it will search for a another bounties & rewards that also has the tag ""Fetching quest", thus assure that the bounty will have the proper lore that match with the request. That of course depend on user's customization.
Also the lore is supposed to work like an extra description to the bounties, so each tag in the bounty pool should have diffirent lore that ties to them, or you know, combine them together.
EDIT: Better yet if you creat seperate folder for bounties and rewards, in which you can add Json file similar to how the mod work now but have lore and condition. For explain, a bounties in the file "Fetching.json" will have the same lore and if you like it you can set it to only pick objectives in the rewards file "FetchingReward.json".
So the the current algorithm only work ramdonly huh ? Then instead of adding tag/lore directly to the entry, how about adding a new tagging.json and condition key ? The mod will first pick ONE entry in the tagging.json first then it search for bounty & reward objectives that have the same condition key ?
For example, the entry for tagging.json would look like this:
{
"Group": "a"
"Name": "Food Aid"
"Lore": "A nearby village is going through famine and is in need of food"
}
And the entry for bounties would be like this
{
"content": "minecraft:cooked_beef",
"amount": {
"min": 10,
"max": 64
},
"unitWorth": 5,
"weight": 100,
"group": ["a", "b"]
}
Which result in a bounty that have tooltip like this:
Food Aid (common)
A nearby village is going through famine and is in need of food
Time to complete:
Required:
Reward:
About your idea, i need to know more about how decrees work. Does it have it own bounties&rewards pool or it work similar to the tagging system i mention up there ? If its the former, then can the player edit it ? Can we add more decrees like how IE's blueprint work ?
The main problem right now is the need to reduce the ramdomness and force the mod to pick objectives from a group of entries rather that all entries. If this play it right, we can turn the mod into a banter system which we can have ramdomnize request and item offer, something like Craigslist in MC
Eh, that doesn't really mesh well with the current algorithm. Currently, it picks several bounty objectives at random. Then, it calculates their total worth and goes through the reward list, selecting rewards at random until it finds enough rewards that match the total worth. There are added edge cases, like the fact that suddenly the program wouldn't pick any objectives that did not have any tags.
However, I do have a similar idea, which I am looking into implementing for 1.13, which would incorporate some lore. How does this sound, @Pkyd ?
I'd like to add a new system with items called "Decrees". A royal decree is an item. All bounty boards will have 3 dedicated slots on the side where only decrees can be placed. You can only place three decrees in a bounty board at a time, and once placed they cannot be removed (only replaced/overridden).
You'll be able to find these decrees in the world. Usually in village chests, and sometimes dungeon chests. Each bounty board will spawn with 1 decree as well. What these decrees do is simple: They determine what kinds of items show up in the bounty board. Here's an example of a decree tooltip:
Villager Rations: Food
Decree
"A nearby village is going through famine and is in need of food"
Place in a bounty board to gain access to lucrative bounties related to farming.
There will be different types of default decrees, such as food, weapons, stonework, armor and alchemy (potions). Putting decrees into bounty boards will change up what types of bounties and rewards show up in the board. Each decree has it's own lore text (as shown above), but that's it.
Keep in mind that this is all quite hypothetical, but I think that I should be able to accomplish it. I'd like to know what you think. Any input, positive or negative is appreciated.
Yeah, each decree would have it's own pools that it can pull from. Via the config you could mix and match pools of objectives and rewards. Decree data is just a title, an ID, some lore text that goes along with it, and a list of Pool IDs for objectives, as well as a list of Pool IDs for rewards.
Example decree:
{
"decreeTitle": "Villager's Rations: Food",
"decreeDesc": "Place in a bounty board to gain access to lucrative bounties related to farming.",
"decreeLore": [
"A nearby village is going through famine and is in need of food"
],
"objectives": [
"meats"
],
"rewards": [
"gold"
]
}
And here are two example pools:
{
"id": "meats",
"entries": [
{
"content": "minecraft:cooked_beef",
"amount": {
"min": 10,
"max": 64
},
"unitWorth": 10
},
...
]
}
{
"id": "money",
"entries": [
{
"content": "minecraft:gold_ingot",
"amount": {
"min": 1,
"max": 1000
},
"unitWorth": 100
},
...
]
}
There will be a separate config for pools, where you can define different sets of objectives and rewards. This way, a pack editor could make it so that a a single decree pulls from multiple pools, multiple decrees pull from a single pool, or both.
Pool A could be [beef, porkchop, chicken] and Pool B could be [wheat, carrots, potatoes]. You could have the food decree pull from Pool A and Pool B as objectives, or even make it so that Pool A is the objectives and Pool B is the rewards. Or you could have two different decrees, one where Pool A is the objectives and another where Pool B is the objectives. Because of this, it is a tag system similar to what you'd posted before, but instead of tags being added to individual entries they are grouped by tag (meats
and money
are the ids of the pools of entries above).
With this mix-and-match system, pack edits can be quite verbose about decrees and what each one gives. And, as you can see, lore would be attached to the decree. Therefore there is still the option of having some lore explaining where the bounties are coming from, but the lore isn't attached to the bounty itself, just the decree on the bounty board.
And since Decrees and Pools are just JSON files, you can add or remove decrees and pools at will. This system should cut down on the amount of randomness that you initially see, because bounty boards will only start with one decree (thus a potentially smaller pool of objectives and rewards). There will always be a large degree of randomness, though, since that's what the mod revolves around (randomly generated bounties being created from a corpus of data with minimal human intervention, while maintaining a large amount of options for customization)
bounty boards will only start with one decree
Does this meant in the future you will removing the current bounties.json and rewards.json and the board will spawm with a Decrees NBT instead ? In that case, i suggest have the Decrees and Pools entries in the same JSON for easy editing, since entries could either be bounties or rewards depending on the packmaker.
Otherwise, excellence idea
On another note, will you also implementing this feature to 1.12 or this is a 1.13 thing only ?
It will be 1.13 only, from now on only bugfixes will be done to the 1.12 version (As the 1.13 version is a complete rewrite).
I could put all of the pools and decrees into a single file, but I'm going to separate it into two folders inside bountiful
: pools
and decrees
. Then you can simply create a new file for every pool or decree, and copy paste files to make new ones. By default, there will only be about 5 decrees and 7-8 pools, anyways.
Bounty Boards will all spawn with a single decree inside of them, and the board will pull objectives and rewards from the pools indicated by said decrees.