Just had another idea. This will only work if you have the ability to change companies, which means an active stock market, at least to some extent.
*
IRL any money paid for locos would go to the manufacturer, and possibly to a shipping agent (ie: in the case of imported locos). So, you could set up a separate company for manufacturer/agent
**. The process then could be:
- Get a pop-up warning you to order locos.
- Say yes, me want locos, and pick which ones you want.
- The deposit amount gets deducted from your company cash.
- Six months later you get "delivery", and have to pay the balance.
So far this is the same as the other way of doing it. Now comes the tricky part...
- The company for manufacturer/agent is restricted to a small territory, with a low credit rating.
- This means it can't do anything. It just exists to buy locos (life support for it should be feasible).
- The deposit from your company cash becomes the manufacturer/agent's company cash.
- This gets coded as company cash = $****k, so the previous balance gets wiped.
- You swap companies, buy locos, then resign from the manufacturer/agent.
- Resume chairmanship of your main company.
- Run a confiscation event on the new locos.
- You have the right number and classes of new locos.
The company jumping is a slight inconvenience, and will also cut your chairman's salary. The advantage is that it is almost impossible to exploit, and would be tolerant of human error. It would not be necessary to pause the game to make this work. You could let the AI run your main company for 5 or 10 minutes while you sorted out loco purchases.
The manufacturer/agent company will be permanently broke, with no ability to go anywhere, so it will have no way of generating income. This means no way of running any exploits. Stock price will be only $1 or $2, so stock issues will not gain you anything significant (even if the game allows them). You won't be able to take out any bonds. All you can do is buy locos with whatever company cash it has at the time.
This means no need to run checks, save variables, mess with stock/cargo prices, etc. If you can't use exploits there is no need for safeguards. If you select a combination of locos that leaves some company cash when you are done, it won't matter. In fact this way of doing things means you have total freedom on the choice of locos in the final "delivery", up to the amount of cash available. This should give more strategy/replay options.
Another point is that, providing the deposits for each order are known in advance, it would be possible to make this work in 1.05 (because there is no need to save company cash as a variable) and using 1.05 could be better for scenarios that have haulage goals. By using a variable count combined with pre-set purchase options (ie: F, F + M, F + M + E) it should even be possible to allow some flexibility for orders in 1.05 (ie: if delivery TV1 = 1 set delivery company cash to $X k - or - if delivery TV1 = 2 set delivery company cash to $Y k).
A possible drawback is that all new locos will appear in one small territory. In reality all imported locos will turn up at a port anyway, then you have to run them from there to where you want them. If you want to emulate that, having them turn up in one small territory should be fine. OTOH, if you don't want to emulate that it would just be a nuisance, but probably not a huge one in the scheme of things.
You could even set up more than one delivery territory. For example, the NSWGR Sydney and Newcastle networks were separate before 1889. Locos for Newcastle had to be delivered to Newcastle, and were often different to the locos delivered to Sydney (NSWGR had an crazy plethora of classes in the early days). It would be easy to set up a delivery territory in both cities, with individual deliveries taken from historical examples.
*Note: It should be possible to set this up even for a scenario where you don't really want an active stock market. You could use the editor to set up majority player ownership of both companies at the scenario start, and then impose these restrictions:
- Disable Stock Buying and Selling.
- Disable Company Issue/Buy Back Stock.
- Disable Declaring Bankruptcy.
- Disable Changing the Dividend Rate.
- Disable Being Fired as Chairman.
- Disable Merging Companies.
It would probably also be a good idea to impose:
- Disable Replacing a Locomotive.
- Disable Train Crashes.
**Note: To make this work it is necessary for the delivery company/territory to have access to 2 stations (you can't purchase of a loco unless it has a valid route). I ran a test on two small stations. Each time you build a small station it comes with 5 sections of track attached. This is the minimum spacing for small stations. You can't bulldoze any of those 5 sections without bulldozing the small stations, and you can't put the stations closer together than those lengths of track. However, if you space them one more section apart (ie: 11 track units total) that extra section in the middle can be bulldozed.
This could be used to keep the delivery company under control. If you break the track of an AI company, the company goes into stasis. When you take over control of the company you could fill in that one section, giving a "valid route" for the new locos. When you are finished, delete that section of track to put the company back into stasis. This step could
maybe be automatic, via test against main company and delivery territory.
Note that you could not use a general "Destroy Track" event effect on the delivery territory, because that also takes out the track the stations come with, and it destroys them so it can destroy the track. IOW, a "Destroy Stations" event will only destroy stations, but a "Destroy Track" events destroys track
and stations! This means a test against main company would be necessary to automate this step, so that
only the one section of track laid by your main company was destroyed.
Another option: the purchase event could temporarily give the delivery company access to the main company's territory. The delivery station could then be tacked onto the main station (like a "shed out the back"). This could be better because a/ it takes up less space, and b/ you may not need to delete any track, and c/ you could set the initial routes anywhere in the main company's territory.
You may not even need a delivery company station at all. If the delivery company is not allowed access to any territories (will have to test if that is viable), that should stop it doing anything. Then you can give it temporary access to the main company territory when you want to do purchases, and use main company stations to set the routes, then set it back to no access.