# Free roam to the front end and back among free-roam friends, every car slot
# in use (a 2026-10-21 crash report on dc1404c: quitting a full free roam ended
# the game in the front end's load, "index out of bounds" in 0x493800 from
# 0x4939B0's walk over the solid packs, right after 62 friends' rides were
# unloaded while one of them was still loading).  Both ways unload the city for
# the front end, so the track unload gives back the car pool's extra block
# (0x63A6F0), which 60b2e7a keeps while anything still holds it.  From a career
# save the bot loads free roam; then VISITS times the crib (its marker, the
# engage dialog, Return to Explore Mode) and QUITS times the pause menu's Quit
# (to the main menu, Resume Career), each time back until the friends' cars
# are made again.  Good: no trap, crib_end at the end.  (Loops of 0 never end:
# give both at least 1.)
#   node web/tools/roam-crowd.mjs --base <server> --n 32 --cars all --room <r> --seconds 3600
#   NFSU2_SAVE_SEED=<a career save> node web/tools/run-suite.mjs --base <server> --script roam_crowd_crib.txt
#        --marker crib_end --net <name> --env NFSU2_ROAM=1 --env NFSU2_ROAM_WEBTEST=vlan --env NFSU2_ROAM_ROOM=<r>
#        --env ROAM_CROWD_CARS=32 --env VISITS=2 --env QUITS=2 --timeout-scale 3
0     bot on
+0    waitroam 6000
+0    bot off
+0    roam smsauto on
+0    roam mp waitcars ${ROAM_CROWD_CARS} 6000
+600  roam mp status
+0    loop ${VISITS}
+0    log VISIT the crib
+0    roam shopgo CRIB_1
+300  tapfe RETURN UI_EngageShopDialog.fng 120 2400
+120  tap LEFT
+30   tap RETURN                      # enter the crib
+0    waitfe UI_CareerCrib.fng 3000
+300  roam mp status
+0    tap RETURN                      # Return to Explore Mode
+150  tap LEFT
+30   tap RETURN                      # Yes
+0    waitroam 4000
+0    roam mp waitcars ${ROAM_CROWD_CARS} 6000
+600  roam mp status
+0    endloop
+0    loop ${QUITS}
+0    log QUIT to the main menu
+0    tap ESCAPE
+0    waitfe UI_pause.fng 600
+120  tap RIGHT                       # Save (the car stands: not greyed out)
+40   tap RIGHT
+40   tap RIGHT
+40   tap RIGHT
+40   tap RIGHT
+60   tap RETURN                      # Quit
+0    waitfe UI_InGameDialog.fng 600
+60   tap LEFT
+30   tap RETURN                      # Yes
+0    waitfe UI_Main.fng 3000
+300  roam mp status
+0    bot on                          # Career, Resume Career
+0    waitroam 6000
+0    bot off
+0    roam mp waitcars ${ROAM_CROWD_CARS} 6000
+600  roam mp status
+0    endloop
+60   status crib_end
+10   quit
