-- Automatic bouncer for headshunts, assuming longer headshunt than train length. Arrow points into headshunt local rev_rc = "OAF_HS_S" local rm_rc = true local autocouple = "OAF_HS_S_AC" local rm_cpl_rc = true __approach_callback_mode = 1 if event.approach and not event.has_entered then atc_set_lzb_tsr(3) atc_set_ars_disable(true) return end if event.train then if not atc_arrow then --train has bounced if F.has_rc(autocouple) then atc_send("CplS0WD2S1") if rm_cpl_rc then F.remove_rc({autocouple}) end end return end if not F.has_rc(rev_rc) then --not our train. disregard atc_set_ars_disable(false) return end if rm_rc then F.remove_rc({rev_rc}) end schedule_in(";01",atc_id) return end if event.schedule then if not atc_id then --bounce the train that just passed atc_send_to_train(event.msg,"B0WRD1A1S3") else if atc_id == event.msg then --train hasn't fully passed yet, wait a bit longer schedule_in(";01",atc_id) else -- somehow another train crossed the controller before the first one returned. Unlikely but possible atc_send_to_train(event.msg,"BBOL") atc_send("BBOL") end end end