TL;DR
Having more conditions for limiting / triggering interrupts would open up a lot more amazing (and stupid! ) possibilities.What ?
Train interrupts are EXTREMELY powerful , but a couple more conditions could really kick things up a notch, here's what I would find useful / could see being useful:- Has fluid wagon: Does the train that the interrupt is triggering on have a fluid wagon? Useful for generic train dispatching systems, yes you can check manually with inserters and some additional logic, but that has caveats.
- Has cargo wagon: Ditto
- Cargo wagon count: Mixing train sizes on the same network is cool! If you're using the same interrupt on multiple train configurations, it would be nice to differentiate them somehow. Especially since Interrupts are not train group specific, you end up with a lot of duplicated interrupts if you want to use different logic for different train sizes.
- Fluid wagon count: Ditto
- Locomotive count: Ditto
- Trains on the way to station / station is empty: If there are trains already heading to the station, It would be useful to be able to detect that from inside the trains, so you can avoid sending 10 trains to the same stop at once. Yes train limits can be used, but having trains on the way is slightly more nuanced, especially if you are using bidirectional trains, where there might not be a open path to the station until the trains on route have fully arrived!
- Has priority / priority conditional: Being able to set a priority threshold would be cool, you could have 2 separate fleets of iron trains that are only activated when priority passes a threshold. Imagine a iron unloading station that increases its priority based on how much ore it has left in its buffer, and you can have a specialized fleet of trains that use higher quality fuel, which _only_ deliver to the station if the priority passes a certain point. IE [station] has priority [comparison] [number or signal value]
- Damage taken: Like space platforms, if a train is taking damage, you usually want to get it outta there ASAP!
- Time passed: Lots of people use inactivity in their unloading stations, but there is times where a train is sitting at a station, and being unloaded _very_ slowly, even though it would be better off going to another station to continue delivering items. Being able to set a hard cap with an interrupt could be useful, especially for stations where you are storing your trains depot style. Ever had a train end up stuck behind another train in a stacker, because the train in front of it has already "left" the station, but has been waiting to pathfind somewhere for 10 trillion years? An interrupt on that train in front to go to another "im idle" station would be useful!
- Has open path: This might be a stretch due to the performance hit of tons of trains doing path calculation when using this condition, but knowing if a train _can_ get to a station from where it is would also be very useful. Only being able to check _after_ a train leaves is a tad annoying, since the train would have to trip a second interrupt. _Or_, if you could allow players to invert the `Destination full or no path` condition.
- Distance: Set a maximum (or minimum!) Distance between the train and the desired station, IE [station] distance is [comparison] [number or signal value]. Imagine having a station on the other side of your base, but you know you need to have x fuel to go x distance, before sending the train, you could validate that the train can make it there and back without running out, or use a train with less cargo wagons to get there faster!
- Fuel level: Being able to check fuels is probably the most powerful part of the interrupt system , but you end up with several `or` statements in a row to check multiple types of fuel. Doing `fuel wildcard` < 50 works great for coal, but when you switch to using uranium in a train, that would trigger every time. A "fuel level" interrupt would allow you to send a train to a station if it is [comparison] [number or signal value]% full on whatever fuel item it is carrying. IE <33% would trip on 200 spoilage, 50 coal, 20 rocket fuel, or 1 nuclear fuel.
Why ?
The more ways you can interact with the interrupt system, the more cool things you will be able to do!Train got blown up? Send it to the graveyard.
Station is too far away? Don't go there until you have a full tank of gas!
Station has low priority? Eh, somebody else can do that.
Don't have a fluid tank? Then don't go to the oil pickup station!