This fix adds an effect map to build a buff, which allows multiple buffs to be applied to an effect. This fixes the trader assembly buff, which only applied food_assembly. The mapping table allows multiple assembly buffs to be applied without hard coding. This fix also makes a change to the experience buff. The trade buffs also apply an experience bonus, but were not limited to crafting. The XP buff provides an additional buff, to chronicler xp.
I moved the xp application to a common function, and they no longer overwrite each other. The highest buff is applied.
I did a partial refactor to make the code easier to follow. This refactor is limited to the build a buff handlers.