I don't like this.

A lot of the code below this line is structured to prevent calling Adjacent() unless we cannot figure it out with faster code (in contents list, etc).  This code will run Adjacent() as long as you are holding a item.

There is no reason it needs to come before attack_self(), so it's probably better if this just goes with attackby() and afterattack().