Here, this script should be what you're looking for:
Code:
#dynamic 0x800000
#org @start
checkflag 0x1F // Checks if we've already spoken
if 0x1 goto @done // If we have spoken to her, skip to the end
setflag 0x1F // Sets a temporary flag
msgbox @msg1 0x2
compare 0x800C 0x2 // We don't need to copyvar 0x800C to 0x4011, we can read it directly
if 0x1 goto @up // We only need to check 0x800C once and split the script depending on the result
applymovement 0x2 @move1
waitmovement 0x0
movesprite2 0x2 0x2 0x4 // Changes the default position of the OW until you leave the map
spritebehave 0x2 0x7 // Makes the OW face up if you unload them and then return
end
#org @up
applymovement 0x2 @move
waitmovement 0x0
movesprite2 0x2 0x3 0x3 // Changes the default position of the OW until you leave the map
spritebehave 0x2 0x9 // Makes the OW face left if you unload them and then return
end
#org @done
msgbox @msg2 0x2
end
#org @move
#raw 0x13 // The girl doesn't have to face right before moving right
#raw 0x2
#raw 0xFE // Don't put the 'end' command after movement values
#org @move1
#raw 0x10// The girl doesn't have to face down before moving down
#raw 0x1
#raw 0xFE // Don't put the 'end' command after movement values
#org @msg1
= Oh look, look!
#org @msg2
= Godspeed!
You said that you didn't want to use any flags, but flag 0x1F is a bit different than most others. Its a temporary flag, meaning that when you exit the map, it resets to 0x0. Flags 0x11 - 0x1F are usually only used for destructible OWs that reset themselves (Cut trees, Rock Smash rocks etc) but since you want the girl to reset her position when you leave the map I thought it would be appropriate to use in this context.