Ok, I have been working on the bug that is reported in Per's guide where if you come to the Raider's base with your car, go down the secret manhole entrance, and return back to the surface your car is mysteriously gone. (as he notes if you leave the map to the world map and come back to the well area, your map returns)
I have looked into what is causing this and I see why the car is disappearing, but I don't understand WHY it is happening. The elevation of the secret entrance area is 1 and the cliff area (the other entrance to the raider base) is elevation 0. The problem occurs only if you go down the manhole and resurface. Once you do so the elevation reported by the “dude_elevation” is 0. Hence your car disappears from the secret entrance area and is constructed on the cliff where the game thinks you are. What I don't understand is why the heck a Fallout function is sending back an incorrect elevation. When you return to the surface it should be reporting elevation of 1. Why is it doing this incorrectly? Any ideas?
Here is the code if anyone wants to take a closer look
Thanks a million in advance for any input. I can see why the Fallout desingers left such bugs undone.....it HURTS THE MIND!
I have looked into what is causing this and I see why the car is disappearing, but I don't understand WHY it is happening. The elevation of the secret entrance area is 1 and the cliff area (the other entrance to the raider base) is elevation 0. The problem occurs only if you go down the manhole and resurface. Once you do so the elevation reported by the “dude_elevation” is 0. Hence your car disappears from the secret entrance area and is constructed on the cliff where the game thinks you are. What I don't understand is why the heck a Fallout function is sending back an incorrect elevation. When you return to the surface it should be reporting elevation of 1. Why is it doing this incorrectly? Any ideas?
Here is the code if anyone wants to take a closer look
Code:
if (is_loading_game == 0) then begin
if (dude_elevation == 0) then begin
set_global_var(GVAR_COMING_FROM_INSIDE_RAIDERS, 0);
set_global_var(GVAR_RAIDERS_CAR_ELEVATION, 0);
if (tile_contains_pid_obj(global_var(GVAR_CAR_PLACED_TILE), CAR_RAIDERS_CAMP_ELEV_SECRET, PID_DRIVABLE_CAR) != 0) then begin
Dest_Car(CAR_RAIDERS_CAMP_HEX_SECRET, CAR_RAIDERS_CAMP_ELEV_SECRET)
set_global_var(GVAR_CAR_PLACED_TILE, 0);
Create_Car(CAR_RAIDERS_CAMP_HEX_NORMAL, CAR_RAIDERS_CAMP_ELEV_NORMAL)
if (tile_contains_pid_obj(CAR_RAIDERS_CAMP_HEX_NORMAL, CAR_RAIDERS_CAMP_ELEV_NORMAL, PID_DRIVABLE_CAR) != 0) then begin
Create_Trunk(CAR_RAIDERS_CAMP_HEX_NORMAL, CAR_RAIDERS_CAMP_ELEV_NORMAL)
end
end else begin
Check_Create_Car(CAR_RAIDERS_CAMP_HEX_NORMAL, CAR_RAIDERS_CAMP_ELEV_NORMAL)
end
end else begin
set_global_var(GVAR_RAIDERS_CAR_ELEVATION, CAR_RAIDERS_CAMP_ELEV_SECRET);
if (tile_contains_pid_obj(global_var(GVAR_CAR_PLACED_TILE), CAR_RAIDERS_CAMP_ELEV_NORMAL, PID_DRIVABLE_CAR) != 0) then begin
Dest_Car(CAR_RAIDERS_CAMP_HEX_NORMAL, CAR_RAIDERS_CAMP_ELEV_NORMAL)
set_global_var(GVAR_CAR_PLACED_TILE, 0);
Create_Car(CAR_RAIDERS_CAMP_HEX_SECRET, CAR_RAIDERS_CAMP_ELEV_SECRET)
if (tile_contains_pid_obj(CAR_RAIDERS_CAMP_HEX_SECRET, CAR_RAIDERS_CAMP_ELEV_SECRET, PID_DRIVABLE_CAR) != 0) then begin
Create_Trunk(CAR_RAIDERS_CAMP_HEX_SECRET, CAR_RAIDERS_CAMP_ELEV_SECRET)
end
end else begin
Check_Create_Car(CAR_RAIDERS_CAMP_HEX_SECRET, CAR_RAIDERS_CAMP_ELEV_SECRET)
end
end
end
Thanks a million in advance for any input. I can see why the Fallout desingers left such bugs undone.....it HURTS THE MIND!