Summary:
In the xml files, 5 different crossbows (and a variety of other items in the other spitems xmls) are assigned the "neutral_culture" tag.
The code then apparently assigns any items labelled with the "neutral_culture" tag as having "Calradian" culture.
Well when workshops are randomly selecting an item to produce, they can only pick an item that has either the same culture as the town or 'null' culture. This can be seen in the IsItemPreferredForTown method.
Since "Calradian" is niether 'null' nor a valid culture of a town, then the items with that tag are blocked from ever getting chosen to be produced by workshops. If those tags are removed from the item in the xmls by using Ctrl + F for "neutral_culture" and deleting the line, then those items will begin to spawn in towns again.
Other items that are also considered cultureless, such as the Noble Bow, do not have any culture tags specified in the xmls and will spawn in game without an issue.
Either another exception for items of "Calradian" culture needs to be added to the IsItemPreferredForTown method, or the "neutral_culture" tag needs to be removed from use in all of the item xmls.
How to Reproduce: Look in the market of towns in any game of sufficient length and notice that there are no Bound Crossbows to be found anywhere. You can also put a breakpoint in the code in the GetRandomItem method, then navigate through the local variables to the "ranged_weapon_5" category and observe that the Bound Crossbow (crossbow_f) is labelled as Calradian culture.
Have you used cheats and if so which: No
In the xml files, 5 different crossbows (and a variety of other items in the other spitems xmls) are assigned the "neutral_culture" tag.
The code then apparently assigns any items labelled with the "neutral_culture" tag as having "Calradian" culture.
Well when workshops are randomly selecting an item to produce, they can only pick an item that has either the same culture as the town or 'null' culture. This can be seen in the IsItemPreferredForTown method.
Since "Calradian" is niether 'null' nor a valid culture of a town, then the items with that tag are blocked from ever getting chosen to be produced by workshops. If those tags are removed from the item in the xmls by using Ctrl + F for "neutral_culture" and deleting the line, then those items will begin to spawn in towns again.
Other items that are also considered cultureless, such as the Noble Bow, do not have any culture tags specified in the xmls and will spawn in game without an issue.
Either another exception for items of "Calradian" culture needs to be added to the IsItemPreferredForTown method, or the "neutral_culture" tag needs to be removed from use in all of the item xmls.
How to Reproduce: Look in the market of towns in any game of sufficient length and notice that there are no Bound Crossbows to be found anywhere. You can also put a breakpoint in the code in the GetRandomItem method, then navigate through the local variables to the "ranged_weapon_5" category and observe that the Bound Crossbow (crossbow_f) is labelled as Calradian culture.
Have you used cheats and if so which: No