Actually this is done via scripts. If an item is to be given to you at a specific time, then the script checks for a flag of some sort. The actual script opcode to make an item appear is DD xx xx, and remember that the item needs to be set to comming out of a chest for it to work(or else the game will freeze).
Sorry to say, but there's not yet an easy way to edit npc's without knowing some ASM and scripting. Don't forget that Lin and I are still deconstructing both Ages and Seasons.
Edit: I found out that the script opcode that let's a npc give you an item is DE xx xx. You still need to pay attention to the actual item and make sure it's set so it's given to you as opposed to falling down, spawning via puff of smoke, or rises up from the ground like you got it from a chest.
Now, if you want to find out where the script is for the interaction you want to edit, in the D000 section of ram, interactions are loaded in this area. For the mayor in Horon Village in Seasons, his interaction loads at D340 in ram. At D358 and D359, the two bytes used to get the script are stored here. When the room is first loaded, it's poised over the trigger script code, and when the conditions are set, it starts excecuting the rest of the code. The script bank in Seasons is at 2C000, and the bank in Ages is at 30000. Remember you need to set things up to set flags when you do get an item.
That's very interesting. I'm working on ZOSE as I type this and I've created a new opcode called "jump3bytecm", which will jump anywhere in the ROM if a certain byte in the memory matches the specified byte. I can guarantee it will have that opcode, and I want to have more that's capable of creating NPCs and doing more than just dungeon-type events.