It looks like you're new here. If you want to get involved, click one of these buttons!
Opcodes 111 (create magical weapon) and 122 (create inventory item) with durations create items and then remove them by internally applying opcodes 122 (remove item) and 123 (remove inventory item). This way of handling things has the following issues:
1. You may not refresh spells that create items because opcode 122 will be applied prematurely from the previous casting. For example, if you cast Flame Blade that lasts for 10 rounds and you try to refresh the spell after 8 rounds, the new casting will only last for 2 rounds because the .itm will be removed by virtue of the previous casting
2. In case of opcode 122 you may give the .itm to another .cre or drop it on the ground or in a container and the .itm will not disappear because at expiry it will attempt to remove the .itm from the .cre on which it was created
3. There is this default sound (EFF_M02) that is hardcoded, which would be nice to softcode or eliminate somehow
4. The created magical items are not dispellable (but this is fixed in ToBEx)
Opcode 255 (create inventory item (days)) on the other hand removes the item by applying an internal timer to the .itm which is stored on the inventory of the .cre. This is a much better way to to handle magically created items, and would fix all the issues if this method would be used by opcodes 111 and 122.
I would even go as far to suggest an alternative to the current ToBEx implementation to use the extra space at 0x10 and 0x11 of inventory items header of the .cre for a "dispellable" flag and bytes at 0x12 and 0x13 to store the casting level of the caster who created the item.