My suggestion is mostly relevant to modding, but again, which one isn't nowadays?
Basically, I would like to see a new ruleset option: container list. This list contains a number of entries, like items or research objects, and represents all of them.
For example, in the FMP, every alien engineer has the following entry:
getOneFree:
- STR_SMALL_SCOUT
- STR_MEDIUM_SCOUT
- STR_LARGE_SCOUT
- STR_HARVESTER
- STR_ABDUCTOR
- STR_TERROR_SHIP
- STR_BATTLESHIP
- STR_SUPPLY_SHIP
- STR_SENTRY_SHIP
- STR_FIGHTER_SHIP
- STR_LAB_SHIP
- STR_EXCAVATOR
- STR_RAIDER_SHIP
- STR_PARTICLE_MICROACCELERATION
- STR_ANTIMATTER_CONTAINMENT
- STR_FUSION_EXPLOSIVES
- STR_ALIEN_GRAVITY_GENERATOR
- STR_TRACTOR_BEAM_GENERATOR
- STR_ADVANCED_PLASMA_PHYSICS
- STR_ALIEN_ELECTRONICS
- STR_DELTA_RADIATION
- STR_SECTOPOD
- STR_CYBERDISC
- STR_SECTOPOD_CORPSE
- STR_CYBERDISC_CORPSE
This means I have to repeat this chunk of text under every single engineer, which bloats the ruleset and is prone to errors. Which sufficient number of entries, data management becomes a hassle due to the sheer amount of data and scrolling.
I would rather see a new ruleset section:
lists:
- type: LIST_ALIEN_ENGINEER_GET_ONE_FREE
section: research
items:
- STR_SMALL_SCOUT
- STR_MEDIUM_SCOUT
- STR_LARGE_SCOUT
- STR_HARVESTER
- STR_ABDUCTOR
- STR_TERROR_SHIP
- STR_BATTLESHIP
- STR_SUPPLY_SHIP
- STR_SENTRY_SHIP
- STR_FIGHTER_SHIP
- STR_LAB_SHIP
- STR_EXCAVATOR
- STR_RAIDER_SHIP
- STR_PARTICLE_MICROACCELERATION
- STR_ANTIMATTER_CONTAINMENT
- STR_FUSION_EXPLOSIVES
- STR_ALIEN_GRAVITY_GENERATOR
- STR_TRACTOR_BEAM_GENERATOR
- STR_ADVANCED_PLASMA_PHYSICS
- STR_ALIEN_ELECTRONICS
- STR_DELTA_RADIATION
- STR_SECTOPOD
- STR_CYBERDISC
- STR_SECTOPOD_CORPSE
- STR_CYBERDISC_CORPSE
Then, each engineer entry would only have:
getOneFree:
- LIST_ALIEN_ENGINEER_GET_ONE_FREE
Looks nice, doesn't it?
Then, you could combine lists. For example, in the FMP, leaders give one discovery either from the abovementioned engineer list or the medic list, which contains live alien research and other biology-related stuff. So you could have
getOneFree:
- LIST_ALIEN_ENGINEER_GET_ONE_FREE
- LIST_ALIEN_MEDIC_GET_ONE_FREE
as long as you make the LIST_ALIEN_MEDIC_GET_ONE_FREE list.
Furthermore, this feature is not limited to research topics. For example, we could have random "treasure stashes", (particularly useful for the Piratez mod). For example, you make a list:
lists:
- type: LIST_FREIGHTER_CHEST_BOOTY
section: items
items:
- STR_BEER
- STR_VODKA
- STR_LIGHT_CRYSTAL
- STR_SCRAP_METAL
- STR_CHEMICALS
- STR_PARTS_GAUSS_COIL
- STR_CREDIT_CHIP_M
And then you simply add this list to the relevant map block like any item, and they'll all spawn there.
Or even better, we could have an additional parameter in the list:
lists:
- type: LIST_FREIGHTER_CHEST_BOOTY
section: items
pickrandom: true
items:
- STR_BEER
- STR_VODKA
- STR_LIGHT_CRYSTAL
- STR_SCRAP_METAL
- STR_CHEMICALS
- STR_PARTS_GAUSS_COIL
- STR_CREDIT_CHIP_M
And only one random item will spawn.
As I said, the main objective of this feature is modding, but it would also be useful for medic and engineer entries in the vanilla game.