It's on the skimbleshanks page. Scorpiorus.
Grim Reaper, now that we're looking at the right template

:
There's a line in
repeatedly_execute - it's line 88 in a new game, but if you've added code before that, I can't give an exact number - that looks like this:
[code]
got_inv = character[EGO].activeinv;
[/code]
I can't be bothered reading through the whole thing to figure out the sense of it, but it seems to change out of cursor mode 4 (UseInv) if
got_inv is -1 (which should be the normal behaviour - like I said, can't be bothered working out the whole thing). When you don't have EGO as the player character, it doesn't update properly and you can't be in mode 4. (To me, it looks like the cursor changes to the Item for a split second then changes back - which would support this idea.)
Changing that line to:
[code]
got_inv = character[GetPlayerCharacter()].activeinv;
[/code]
Works for me.
EDIT:
On a related note, it uses
player.activeinv in
unhandled_event. IIRR, the
player pointer didn't update to when you change the player character before V2.7, so you might need to replace that with
character[GetPlayerCharacter()].activeinv as well.