Up to now, the equipment is hardcoded in the C++ engine. If you are developping your own quest with the Solarus engine, you cannot add new items or remove the ones you don't want, unless you modify the C++ code. By "items", I refer here to everything that the player can find: a sword, a shield, a boomerang, some bombs, some rupees, a piece of heart, a bottle, a key, etc. The list of items is defined in the C++ code, as well as their behavior.
I am currently working on making items independent of the engine. This is an important step for making the engine not specific to a particular game. The ultimate objective is to have a configuration file that describes each item of your quest. Such a file might have an ini-like syntax where each item is described in a group.
The hookshot would be described like this:
[item.hookshot] name = Hookshot savegame_variable = 1105 can_be_assigned = true
A Lua script gives the behavior of the item. It defines what happens when the player uses it explicitely (for items that can be assigned to an item key). It can also define what ability the simple fact to have the item gives (for example, the flippers give the ability to swim and the player does not need to assign them to an item key).
Some items have several variants. For such items, the possession state may have a value greater than one. For example, we can imagine that the sword has four variants:
[item.sword] name = Sword nb_variants = 4 ability = sword
[item.bombs] name = Bombs savegame_variable = 1101 can_be_assigned = true counter = 1024
[item.bomb_bag] name = Bomb bag savegame_variable = 1032 limit_for_counter = bombs nb_variants = 3 amount_1 = 10 amount_2 = 30 amount_3 = 99
[item.bombs_refill] name = Bombs refill changes_counter = bombs nb_variants = 3 amount_1 = 1 amount_2 = 5 amount_3 = 10 brandish_when_picked = false can_disappear = true
When this work is finished, your existing maps, scripts and savegames will not be compatible anymore (of course, I will provide some documentation to explain how to upgrade them).