item.item_vars["lets_you_save"] = "arbritrary stringified data";
This uses item tags: on load, any tag starting with ascii 001 (^A) is instead
used to populate std::map<std::string, std::string> item_vars, as so:
"^AvariableName=string" => item.item_vars["variableName"] = "string";
Spaces, line feeds, and tabs are escaped as ^A + hex: ^A0D, ^A20, etc.

e are saved and loaded as special item tags that begin with ascii 001 (^A)
Implemented print_temperature for conversions
Added missing check on STR12_DRAW to determine whether or not the player could actually use the bow
Fix merge error.
item_var comment cleanup
Persistent item state tags.
Added small game arrow and NOGIB tag that caps damage at mon.HP + 10
Append carved message to the end of item description if present.
add blue shockwave() explosion, add player-victim collision messages
itemvars["carved_note"] > item_vars["item_note"], use marker instead
Spoiled (rotten) items will now be removed from the map after twice the time it takes to spoil
Merge temperature conversion refactor, small-game arrows, shockwave improvements, and disappearing spoiled food.
Light refactoring on new spoiled food removal code.
Merge converting note code to use marker instead of knife.
Extract code to add a note to an item to a helper function.
Re-add carving a note into an item with a knife.