It would be nice to buy upgrades for wingmen without trading in your own ship multiple times. And it might be useful for CSC America or other adventures with more fleet management.
- Functions would have to get data about and make changes to a specified object, rather than the playership, obviously.
- Screens would need some new text that doesn't refer to "your ship".
- There'd have to be a way to open them that passes in the object to modify (and maybe the object that's paying).
- Ideally, there'd be a way to switch what object's items you're looking at without leaving the screen. But this is probably only relevant if you can transfer items to and from wingmen.
- Wingmen should probably be allowed to refuse a change, e.g. removing their highest-level non-ammo weapon unless it's replaced with one of equal or higher level, similar to ship swapping.
That's a fair amount of work, but it seems like it should be doable.
I came across this with the GodShip and auton mods I'm working on. Every dock service screen had to be modified to get rid of gPlayerShip. If gPlayerShip was changed to shipObj or theShip any object could use them.
I didn't ticket it then because ship broking was a thing of the future. But it would be useful.
As NMS says you need different identification for the object being serviced and the object that is paying. Mil ID status might need to be determined as well. EDIT: and other IDs and possibly ranks.
Having the wingman dock with the station could be a prerequisite of servicing but there may be docking port availability problems if the playership is also to be docked. Then items from the playership could be installed on the other ship if both were docked (for realism purposes).
It should be relatively straight forward to change the ship being modified from gPlayerShip to shipObj (which will default to gPlayerShip if not specified).
Updating the text would be a lot of work depending on how many combinations need to be supported e.g.:
- station installing device in player ship
- station installing device in player's other ship (current text probably OK)
- station installing device in wingman's ship
- player (CSC) installing device in fleet ship
I started work on a mod to allow the player to upgrade wingmen ships a while back: https://github.com/gcabbage/TranscendenceMods/tree/master/UpgradeableWingmen (note this hasn’t been updated for 1.8 beta yet). In this I took an approach similar to followers in Fallout - the player cant directly equip the wingmen, instead they can offer equipment and if the wingman likes it they will install it.
Ideally, there'd be a way to switch what object's items you're looking at without leaving the screen. But this is probably only relevant if you can transfer items to and from wingmen.
Using tabs would work for this.
If both were docked there could be a combined list of uninstalled items from both the playership and wingmen. Adding data to the items to distinguish which object they came from would allow tabs to separate them. So changing tabs would show either items from the playership or items from the wingmen. I estimate that display width would limit this to about 5 wingmen (plus the playership) before there won't be enough room to have the tabs show side by side. But docking port numbers would limit this as well.
The actions could change for each tab allowing items to be transferred to or installed on different objects.
The data added to the items may need to be removed on exit or identical items might stack above each other in lists afterwards.
EDIT: the ability to vary dockscreen titles would also be of benefit.
2nd EDIT: Noticed while mucking about with the new UseItemOnArmor screens. &baStdPasteBarrel could be changed to shipObj as it uses gPlayerShip.
Also non-playership dock service screens could be used to update the auton bay dock services.
3rd EDIT: It might also be handy to be able to check trading computer status either on the playership or the object. This can be relevant when trading devices directly out of an auton/wingman cargo hold. Being able to install ROMs on the objects is very desirable.
Possibly the paying object could be variable as well. A player might want Volkov to go and loot 1000 credits of gear since he just got a nice new shiny ship from them or whatever. Then the player gets a cut from the money. Volkov would need to have his own balance. And he could pay for his fuel.
Currently the "Cargo Space:" indicator at the top right of dockscreens is locked to the player ship. This could be delinked so other objects could use it but 'other object' cargo space can be shown quite easily in screen descriptions so not really necessary
Using tabs would work for this.
In terms of UI, that would be convenient. But currently I think tabs can only change the list filter, not what set of items is being filtered.
You're right but there is a workaround. We can use a combined list of the relevant uninstalled items from all the objects and filter them by item data. So we add item data 'playership to all items from the playership and data 'wingman1, 'wingman2, etc to items from the wingmen.
Then "Install"ing from a weaponsSelector screen for wingman 1 would show a list with a separate tab for weapons from each object which could then be installed on wingman 1. The tab filters would be 'has data playership', 'has data wingman1', etc.
I've already got data/tab filtering working thanks to your help here http://forums.kronosaur.com/viewtopic.php?f=5&t=8375 and I'll have a go at adding the above example to the next version of the EI Freighter Autons mod as a demonstration. And thanks for the idea because I was a bit blocked about how to improve the dock services in that mod.
I've been messing about with rpgInstallDevicePrep
in a mod. It seems objCanInstallItem
returns differently for the playership and non-playership objects (I'm not 100% sure what is happening). This, I think, allows autons to swap devices but stops the playership from doing the same thing. Not a problem but would need to be taken into account in any code.
Yes, the playership can install/remove anything unless you pass tech criteria or level limits.