I've been told to use ASM before when changing oaks movement script
You were misinformed, it's all done by scripting (both normal 'S' tiles and level scripts).
Will this work.....
#dyn 0x740000
#org @main
lock
faceplayer
message @upgradepokedex
callstd MSG_NORMAL
special FR_NATIONAL_DEX
release
end
Looks alright - some syntax is a bit weird, since I would normally use:
#dynamic 0x740000
#org @main
lock
faceplayer
message @upgradepokedex 0x6
special 0x16F
release
end
#org @upgradepokedex
= I'll upgrade your Pokedex for you.
Of course, if that's the correct short-hand/shortcut that XSE has in its std files (I never seem to use them XD) then it should work either way! Just make sure you copy the @main address to the person event, not the @upgradepokedex.
You could look into adding flags, so once he has set your national dex up he will say something else :). This tutorial, that iv0 linked, is fantastic and should help!