Vinifera-Developers / Vinifera

Vinifera is a C&C: Tiberian Sun engine extension implementing new logics and fixing bugs.
GNU General Public License v3.0
44 stars 10 forks source link

[New Feature] More armor types #107

Open Rampastring opened 3 years ago

Rampastring commented 3 years ago

Description:

Being limited to only 5 armor types really limits balance design of Tiberian Sun mods.

Possible Implementation:

Maybe in addition to having a hardcoded amount of armor types of 5, it could also be made possible to declare the list of armor types in Rules.ini? A section like this could work for example:

[ArmorTypes]
0=none
1=wood
2=light
3=heavy
4=concrete
5=naval
6=conyard

The names could be referred to in the object types' Armor= key.

The game would dynamically fetch the amount of armor types when creating warheads, allocate enough space for the different values and read as many values from Verses= as there are armor types.

OmegaBolt commented 3 years ago

IMO the way Ares does this makes it easier to slot into an existing rules by allowing you to set default values. In Ares, the [ArmorTypes] list does not take a number then the armour ID, rather it takes armour ID then a default value, which can be one of the vanilla armours or a percentage, for example:

[ArmorTypes] naval=concrete conyard=50%

This means all existing warheads can function decently without having to set the new armour type on it, but it also lets you more easily use armours for very specific functions. For example, you might want a warhead that can only damage one technotype, and therefore need to give it a special armour, however for every other warhead you want it to be treated as 'light'. With this you can do it without setting each warhead.

Also in Ares armours do not get added to the verses flag, which would again mean you need to change every warhead in the game every time you add a new armour. Instead each armour can be referenced by it's own flag which overrides the defaults set in [ArmorTypes], eg:

[Warhead] Versus.naval=75% Versus.conyard=0%

More detail in the Ares manual: http://ares-developers.github.io/Ares-docs/new/additionalarmortypesandverses.html