This should be simple but is driving me crazy. Tin can, player can't open it unless that have a tin opener. I can't modify the 'open' command on the tin without making it a container, when a container I can't require an item to open it unless it is locked, but being 'locked' doesn't make linguistic sense.
I hate containers!
I think if you have it as an openable/cloeable, the open script can check if the player has the opener, and open it if she has, and not otherwise. I think the openable/closeable script does the actual opening (so should set
isopen), while the scripts on other containers occur after the built-in code has opened it.
Also, it might be worth creating a new tinopener as attributes from containers can have an effect on openable/closeables (I think), so swapping between the two can cause errors (actually it might be going the other way that is problem).