Meltdown Posted January 16, 2021 Share Posted January 16, 2021 This suggestion is inspired by topics and posts about atmosuit delivery anomalies. I want to suggest an algorithm that would make atmosuit delivery more clear and reduce the amount of situations where atmosuis get taken away from docks or stockpiled on the floor near one of the checkpoints. First, atmosuits should track the checkpoint they were taken from. It shouldn't be a strict bind - just an information that would be used in procedures described below. Second, atmosuit docks should have a number of statuses: 1. Atmosuit Present. In that state, suit is stored to the dock. It should be protected from being taken from it unless dupe equips it when passing the checkpoint. In that state, player would have a "Undock Suit" button available. 2. Atmosuit Taken. In that state, suit is taken by a dupe that passed the checkpoint. Dock is empty, but would accept no deliveries to it. The only way to fill it is by dupe passing back from checkpoint and unequping the suit. In that state, player would have "Cancel Return" button available. 3. Atmosuit Removed. In that state, dock is empty, and wouldn't accept deliveries to it. If it had stored suit, it would drop it upon switching to that state. In that state, player would have "Deliver Suit" button available. 4. Atmosuit Awaited. In that state, dock is empty, and would create an errand to deliver suit to it. In that state, player would have "Cancel Delivery" button available. How does those states work: 1. By default, dock comes in Removed state. It is also moved to this state by pressing "Undock suit", "Cancel Return" or "Cancel Delivery" buttons. 2. Pressing "Deliver Suit" Button moves dock to Awaited state. 3. Storing suit in Awaited or Taken dock makes it Present. 4. While dupe passes to the other side of checkpoint, they take suit from one of docks with Present state. That dock moves to Taken state. 5. Docks both in Awaited and Taken states count towards being able to pass through checkpoint with Clearance: Vacancy. Here is a diagram to visualize the state transitions: This describes normal behaviour of atmosuit system. Not much different from what we have now, except the strict rules on being able to deliver and take suits based on states. Now, to edge cases: 1. What if checkpoint has no Taken docks when dupe tries to come back through it? Normally, it can happen when dupe originally passed through another checkpoint. In that case, the checkpoint in question should try to access the original checkpoint, and request it to switch state of one on it's Taken docks to Awaited. Regardless of the result, it then checks if it has docks with Awaited state. If it has those, it transfers atmosuit to one of them, switching it to Present state and cancelling the delivery. If it doesn't have any, atmosuit is dropped on the floor at the entrance. Block diagram for clarity: That way, checkpoints would automatically create delivery errands if atmosuits are not returned to the original checkpoints. 2. What about worn suits? If Taken or Awaited dock receives suit with depleted durability, it should switch to Awaited state. The worn suit is dropped to the floor. Combined with previous situation, it ensures that at least one currently existing checkpoint would have a dock expecting delivery of a new suit to replace the broken one. Note: Currently docks behave the same way and automatically go into "Deliver Suit" mode if the delivered suit is broken. Link to comment https://forums.kleientertainment.com/forums/topic/126187-atmosuit-delivery-logic/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.
Please be aware that the content of this thread may be outdated and no longer applicable.