ADDITIONS

1.1 Adding an item
 1) Edit itype.h.  Change the enum item_id and insert a unique identifier for
    your new item type. Be sure to put it among similar items.
 2) Edit itypedef.cpp.  Macros are used for all item types, and they are pretty
    self-explanatory.  Be ABSOLUTELY sure that you insert the macro at the same
    point in the list as you inserted the identifier in item_id!
 3) Your item type is now valid, but won't be spawned.  If you want it to be
    spawned among similar items,  edit mapitemsdef.cpp.  Find the appropriate
    array(s), and insert the identifier for your item (e.g. itm_aspirin).  Make
    sure it comes in before the NULL at the end of the list.
 5) Some items, like tools or food, also take an iuse::function reference.
    Edit iuse.h and include the function in the class declaration; then edit
    iuse.cpp and define your function.  Functions may be shared among different
    item types.

1.2 Adding a monster
 1) Edit mtype.h.  Change the enum mon_id and insert a unique identifier for
    your new monster type.  Be sure to put it among similar monsters.
 2) Edit mtypedef.cpp.  A macro is used for monsters and it is pretty
    straightforward (Any of this ring a bell?).  Be ABSOLUTELY sure that you
    insert the macro at the same point in the list as your inserted the
    identifier in mon_id!
 3) Your monster type is now valid, but won't be spawned.  If you want it to be
    spawned among similar monsters, edit mongroupdef.cpp.  Find the appropriate
    array, and insert the identifier for your monster (e.g, mon_zombie).  Make
    sure it comes in before the NULL at the end of the list.
 4) If you want your monster to drop items, edit monitemsdef.cpp.  Make a new
    array for your monster type with all the map item groups it may carry, and a
    chance value for each.
 5) Your monster may have a special attack, a monattack::function reference.
    Edit monattack.h and include the function in the class definition; then
    edit monattack.cpp and define your function.  Functions may be shared among
    different monster types.  Be aware that the function should contain a
    statement that the monster uses to decide whether or not to use the attack,
    and if they do, should reset the monster's attack timer.
 7) Just like attacks, some monsters may have a special function called when
    they die.  This works the same as attacks, but the relevent files are
    mondeath.h and mondeath.cpp.

1.3 Adding a recipe
 1) Edit recipes.json. Add your recipe among similar recipes. Required fields
    are "result", "category", "difficulty", "time", "autolearn", "components".
    Optional fields are "reversible" (defaults to false), "tools" (defaults to
    none), "skill_pri" (primary skill, defaults to none), "skill_sec" (defaults
    to none), "id_suffix" (disambiguates recipes with the same result, must be
    unique among the set of such recipes), "decomp_learn" (the level (if any)
    when you can learn it from disassembly), "book_learn" (a list of books that
    teach the recipe, and the level they teach it at).
