local rev_rc = "S27_REV_East" local rm_rc = false __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 and atc_arrow then if not F.has_rc(rev_rc) then atc_set_ars_disable(false) return end if rm_rc then F.remove_rc({rev_rc}) end if F.has_rc("S27_SHUNTER") then local stages = { "S27_EXP_PICKUP", "S27_EXP_LOAD", "S27_EXP_DEPART" } for i,v in ipairs(stages) do if F.has_rc(v) then unset_autocouple() F.remove_rc(v) local next_stage = stages[i == #stages and 1 or i+1] if next_stage == "S27_EXP_PICKUP" and not section_occupancy("254098")[1] then -- no wagons left to load. store loco F.add_rc("S27_LOCOSTORE") break end if next_stage ~= "S27_EXP_DEPART" then set_autocouple() end F.add_rc(next_stage) break end end 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