From 0e74a9a610e823dd7e752a004c735d52cca9a586 Mon Sep 17 00:00:00 2001 From: autocommitter Date: Mon, 22 Apr 2024 14:58:04 +0200 Subject: State at 2023-03-27 --- durt/nodes/(-1403,11,-2533).lua | 61 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) (limited to 'durt') diff --git a/durt/nodes/(-1403,11,-2533).lua b/durt/nodes/(-1403,11,-2533).lua index 7489acc..898b856 100644 --- a/durt/nodes/(-1403,11,-2533).lua +++ b/durt/nodes/(-1403,11,-2533).lua @@ -1 +1,60 @@ --- \ No newline at end of file +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 \ No newline at end of file -- cgit v1.2.3