When I was messing around with changing characters in my test environments, I got similar results with lookaround. I ending up using replaceActorAction(gPlayerChar,Look). That appeared to fix the half swap that I received.
Your replaceActorAction workaround works fine. As a workaround, I’ve found more semantic newActorAction [run a new action with a specific actor], because I’m not exactly replacing an action.
That will lead to the wrong actor being used for the next turn. It will be correct for ever turn after that though. It is for that oddity that I used replace instead of new.
Maybe your case is more complex but I can’t reproduce the oddity with new.
A slightly modified code follows. It uses the newActorAction workaround and starts with the bar in Bob’s inventory (listed correctly in the next turn):
[spoiler][code]#charset “utf-8”
#include <adv3.h> #include <en_us.h>
versionInfo: GameID
;
gameMain: GameMainDef
initialPlayerChar = alice
change_player_test(actor) {
“