To force a disconnect, you can try WiFi.mode( WIFI_OFF ) ;
On ap1 and ap2, you could regularly run your own check to see ap0 is responding if you can’t rely on WL_DISCONNECTED. Say use client.connect() against ap0. If that fails, force a restart by while( 1 ) for the wdt to do it for you, or a more elegant way of your choice.