--tags represent what the object *is* --traitss represent *special qualities* *beyoond* the default for that object. testing = true story = { main=1, branch_lenore=1, branch_hans=1, branch_brigitte=1, hans_talked=false, got_gunpowder_book=false, got_crystal_book=false, } story.main = 1 library={} library.traits={ large={"large", 10,0, 3,3}, shiny={"shiny", 14,0, 3,3}, fine={"fine", 27,0, 3,2}, red={"red", 29,0, 3,3}, blue={"blue", 7,0, 3,3}, green={"green", 17,0, 3,3}, } library.item_blueprints = { charcoal = { title="charcoal", tags={"black", "fuel"}, quality_base=40, quality_range=20, trait_pool={"fine", "shiny"}, trait_chance=10, description="basket of \ncharcoal", sprite=37, sprite_recolor={[12]=0}, }, well_water = { title="well water", tags={"water"}, quality_base=30, quality_range=20, trait_pool={"blue", "shiny"}, trait_chance=20, description="water from\na well", sprite=37, }, herb = { title="herb", tags={}, quality_base = 40, quality_range=30, trait_pool={"green"}, trait_chance=30, description="healing herb", sprite=34, }, crystal = { title="crystal", tags={}, quality_base=40, quality_range=60, trait_pool={"shiny", "large", "blue"}, trait_chance=50, description="cliff \ncrystals", sprite=38, }, sand = { title="sand", tags={}, quality_base=30, quality_range=40, trait_pool={"fine"}, trait_chance=40, description="beach sand", sprite=32, sprite_recolor={[6]=15} }, distilled_water={ title="pure water",tags={"water", "pure"}, quality_base=50, quality_range=20, --this should only be crafted, so this will be mostly irrelevant trait_pool={}, trait_chance=0, -- again no use description="filtered \npure water", sprite=33, }, reagent = { title="reagent", tags={"red"}, quality_base = 50, quality_range=10, trait_pool={"shiny"}, trait_chance=20, description="red reagent", sprite=33, sprite_recolor={[12]=8}, }, bomb = { title="bomb", tags={"explosive"}, quality_base=60, quality_range=30, trait_pool={}, trait_chance=0, description="explodes for \nfun & profit", sprite=35, }, gunpowder={ title="gunpowder", tags={"explosive"}, quality_base=30, quality_range=10, trait_pool={"fine"}, trait_chance=30, description="be careful!", sprite=32, sprite_recolor={[6]=5}, }, potion = { title="potion", tags={}, quality_base = 50, quality_range=10, trait_pool={"red", "shiny", "curing"}, trait_chance=10, description="a healing\npotion", sprite=33, sprite_recolor={[12]=11} }, polishing_powder = { title="polish", tags={}, quality_base=70, quality_range=30, trait_pool={"shiny", "fine"}, trait_chance=30, description="polishing \npowder", sprite=32, }, starshine_gem={ title="starshine", tags={}, quality_base=100, quality_range=50, trait_pool={"shiny","large"}, trait_chance=40, description="starshine \ngem!~", sprite=39, } } library.recipes={ distilled_water={ title="pure water", ingredients={"well water", "charcoal"}, result="distilled_water" }, reagent={ title="reagent", ingredients={"pure water", "charcoal", "herb"}, result="reagent" }, bomb={ title="small bomb", ingredients={"gunpowder", "fuel"}, result="bomb" }, gunpowder={ title="gunpowder", ingredients={"crystal", "charcoal", "reagent"}, result="gunpowder" }, potion={ title="potion", ingredients={"pure water", "herb", "reagent"}, result="potion" }, polishing_powder={ title="polish", ingredients={"crystals","sand","charcoal"}, result="polishing_powder" }, starshine_gem={ title="starshine", ingredients={"crystals", "polish", "reagent"}, result="starshine_gem" } } if testing then inventory = {} for i=1,4 do local c = make_item(library.item_blueprints.charcoal) c.traits = {"fine", "red"} add(inventory, c) end for i=1,4 do local w = make_item(library.item_blueprints.well_water) w.traits = {"shiny", "blue"} add(inventory, w) end else inventory = {} end grimoire = {library.recipes.distilled_water, library.recipes.potion}