So a feature I have often wanted is a way to handle promotions manually. I know some people don't mind/appreciate the automatic promotions, but I've never been a fan, and I can dislike how sometimes an inferior soldier ends up promoted simply because they had seniority when a position became available (maybe this is realistic, never the less, I dislike it).
As I see it, implementation would be fairly straightforward. The existing `SaveGame::handlePromotions` function would get split into two functions, one that identifies openings (the current first half of the method) returning a `PromotionInfo` object with the available openings and one that then processes the promotions. When this feature is enabled, the debriefing screen will instead display new openings (if any) after a battle. I think new generic translation strings may be necessary for these openings as I know the rank titles can be overridden on a per-soldierType basis (I haven't investigated this yet, though). Some fallback option is probably possible to not-break existing mods.
To actually perform the promotions, I envision clicking on the rank icon (turning it into an interactive surface), which would open up a screen very similar to the SoldierArmorState window, except it would be populated with possible promotions. Clicking on the rank would then promote the soldier. Additionally, it might be desirable to have a "Promotions" view accessible via the combo-drop-down from the soldier screen in the same way the transformation overview screen is. This has the advantage of being more visible as the fact that you can promote via clicking the rank icon wouldn't be immediately obvious, I think. This implementation would be more work, however, so I do not envision creating this screen in an initial implementation.
Questions I have:
- If I was to implement this, would it be a patch OXCE would be open to accepting? To be clear, I'm motivated to make this modification simply for my own desires, but I'd be more motivated if chances were good it could be accepted more wildly.
- As I laid it out, the promotion screen would display all open positions, allowing (potentially) a rookie to be promoted to commander if desired. This is not typically how it works in the game. So instead, the promotion screen might simply give an option to promote to the next rank, if available. Ironically I think this would be somewhat more work to write, as I can't just crib off the existing windows (though there is probably a "confirmation" type window someplace I can crib-off of). Promotion from rookie to commander would still be possible, it would simply take more clicks.
- Should demotions be possible? A "demote" option could easily be added to the list of possible new ranks. In a "single-step" promotion scenario, the window that pops up could give promotion and demotion options. Alternatively, one might right-click on the rank to demote and left-click on the rank to promote.
- Should the existing promotion pyramid be enforced? That is, should it be impossible to promote a soldier to say sergant until an existing captain vacancy was filled?
- To what extent is it desirable for the above rules to be configurable? Should the ability to demote be an additional configurable option? How about the ability to promote from Rookie to Squadie?
So yeah, mostly concerned about the shape of the UI and configuration options. My inclination is, of course, to do the easiest possible implementation for a 1.0 feature, but I don't want to road-block future decisions with decisions made now (which probably means going for single-step promotion since I can later switch to multi-step promotion, but switching back would probably be disruptive).
Looking further down the road, it occurs to me that making ranks more configurable in general is probably desirable, and it's something I might be motivated to work on later, so I also want to avoid getting in the way of any configuration in that respect. However, it does occur to me that manual promotion might be a desirable feature in such a future, even for people who dislike the concept, if ranks were to become more unified with transformations in general, and so that, for example, a promotion might be a "transformation" that comes with both a benefit and a cost. For example, promoting a soldier to Captain or whatever gives them bonus stats, but requires them to be transferred off base for a week at Officer School, or whatever. I know some mods already do this via the transformation screen, but unifying the two might be desirable and could help make the drop-down not become so cluttered.