A: Yes, this is the case. The only thing that is saved is the current state of the maps, inventory, and sprite locations... I think.
B: If there is any way to find out if have_spear should be set, based on these things, you can simply check those variables (like, for example, what map you're on, or if you have a certain inventory item) and set have_spear to true if you should. If you can't derive its value based on saved settings, you should add an invisible inventory item to be saved with the project that is always equal to whatever have_spear is (1 for TRUE, 0 for FALSE).