Right - copied and pasted from a post I made on the "official" (*cough*) forums.... Sorry if it seems a bit like a brain dump

I've already emailed the idea off to Aaron btw (with an offer of rewriting all relevant components to cope), but it's quite a large change so I wouldn't expect things to happen soon (assuming he likes the idea even).
Anyway, feedback / other ideas appreciated.
Now this is the sort of thing i'd love to see. Off the top of my head, there's kinetic damage (er, rocks / uranium slugs / whatever) - thermal damage (lasers! PEW PEW!), corrosive damage (or other chemical burns), Electromagnetic damage, Explosive damage - and that's only a handful of things we can current produce on earth. It would be great if we could allow specific shield resistances, so a hyper-cooled armour would be great at soaking up the old thermal damage, but not so good at everything else.
Although - for 'damage distribution' - it would make more sense to organise shields and armour into a greatest->least resistance order.
Example (bear with me, this could be quite long :O ):
--------
Now, a *better* way to handle this would be to re-think the way shields and armour currently work, and to assign the following setup to shields / armour and weapons.
Damage Types
A list of Damage Types needs to be created - each should be conceptually different and ideally non-overlapping where possible.
DamageTypes.txt file is partly redundant - penetration, damage and resistance are moved into the relevant components (weapons / shields+armour) so only a few fields (like population killed per damage point, viral weapon flag) will remain - along with the special requirements for targetted weapons, special effects, and so on.
Code:
Damage Type Name := Thermal
Description := Damage caused by heat.
Picture number := 1
Population Amount Killed Per Damage Point := 0.25
Crew Amount Killed Per Damage Point := 0
Is Viral Weapon := 0
Number Of Special Effects := 0
Number Of Requirements := 0
Number Of Abilities := 0
Damage Type Name := Kinetic
Description := Damage caused by impact.
Picture number := 2
Population Amount Killed Per Damage Point := 0.25
Crew Amount Killed Per Damage Point := 0
Is Viral Weapon := 0
Number Of Special Effects := 0
Number Of Requirements := 0
Number Of Abilities := 0
Damage Type Name := ElectroMagnetic
Description := Damage caused by electromagnetism.
Picture number := 3
Population Amount Killed Per Damage Point := 0.25
Crew Amount Killed Per Damage Point := 0
Is Viral Weapon := 0
Number Of Special Effects := 0
Number Of Requirements := 0
Number Of Abilities := 0
Damage Type Name := Explosive
Description := Damage caused by explosions.
Picture number := 4
Population Amount Killed Per Damage Point := 0.25
Crew Amount Killed Per Damage Point := 0
Is Viral Weapon := 0
Number Of Special Effects := 0
Number Of Requirements := 0
Number Of Abilities := 0
Damage Type Name := Corrosive
Description := Damage caused by acid and chemical burns.
Picture number := 5
Population Amount Killed Per Damage Point := 0.25
Crew Amount Killed Per Damage Point := 0
Is Viral Weapon := 0
Number Of Special Effects := 0
Number Of Requirements := 0
Number Of Abilities := 0
Shields/Armour
Shields are still hit before armour, but are handled in the following way:
ShieldsAndArmourLevels.txt file is now superfluous as resistances will be ordered from highest to lowest.
The shield and armour components will get a rather large overhaul. Alongside the usual component fields we would see:
Code:
Number Of Resistances := 2
Resistance 1 Damage Type := Thermal
Resistance 1 Description := Shield negates 75% of all thermal damage while operational.
Resistance 1 Damage Formula := 75
Resistance 2 Damage Type := Kinetic
Resistance 2 Description := Shield negates 40% of all kinetic damage while operational.
Resistance 2 Damage Formula := 40
Weaponry
With the introduction of new damage types and resistance formulae - we need a way to be able to quickly and easily define shield and armour penetration. Previously these were held in DamageTypes.txt, but if we were to do this with the proposed model the file would become incredibly complex and unwieldly. Thus - penetration(s) are moved into the weapon components, and damage for weapons will be split up as follows...
Alongside the usualy component fields, we get something like (I know it's not exactly the correct language used, but you'll get the important bits!) :-
Code:
Weapon Damage Types := 2
Damage Type 1 Name := Thermal
Damage Type 1 Shield Penetration Formula := 0
Damage Type 1 Armour Penetration Formula := 0
Damage Type 1 Amount Formula := ([%LEVEL%]*10)-[%RANGE_TO_TARGET%]*2.5
Damage Type 2 Name := Kinetic
Damage Type 2 Shield Penetration Formula := 30
Damage Type 2 Armour Penetration Formula := 5
Damage Type 2 Amount Formula := ([%LEVEL%]*10)
The big example
Ship A shoots the weapon described above (level 4) at Ship B (who has one unit of the shields described above)
At a range of 5 squares - the weapon will do 27.5 Thermal damage (4*10-12.5) with zero penetration and 40 Kinetic Damage(4*10), where 30% will pass through the shields and 5% of the remainder will pass through armour.
So.... it's time for some calculations!
1. Remove all 'penetration data' and move it to one side (we'll come back to this after the shield stage)
Code:
27.5 Thermal damage to shields
28 Kinetic damage to shields (40-(40*30%) = 40-12 = 28)
12 Kinetic damage penetrates shields and goes straight to armour.
Ship B has the shields listed above (75% thermal resist and 40% kinetic resist) - so immediately, the damage applied to shields is completely reduced by this amount.
Code:
27.5 Thermal Damage reduced to 6.875 Thermal Damage
28 Kinetic Damage reduced to 16.8 Kinetic Damage
This damage is then removed from the remaining shieldpool at a 1:1 ratio. If the shield is depleted - you must remember to cancel-out the resistances on the remaining damage, and move on to any remaining shields in order of greatest resistance.
Let us assume that the ship only had 10 shield points remaining.
Code:
6.857 Thermal damage and 16.8 Kinetic Damage = 23.675 Total Damage
of which 10 gets soaked by the shields leaving 13.675 which gets through.
The damage ratio after resists is 6.875:16.8 or 1:2.4436
So after the 10 soak we are left with 3.97 Thermal and 9.70 Kinetic damage
We then need to reverse the shield-resist calculations on this remaining damage pool (after all, the shield couldn't cope with this much damage so the shield-resists can't affect this portion of damage.
Undoing the 75% thermal resist and 40% kinetic resist leaves us with:
Code:
3.97*(1/25%) = 15.88 Thermal Damage.
9.70*(1/60%) = 16.16 Kinetic Damage
This added to anything which directly penetrated the shields gives us the amount we then start using when working out armour damage
In this case, we add the 12 Kinetic Damage which penetrated before to give a new starting point for the next round of calculations:
15.88 Thermal Damage and 28.16 Kinetic Damage.
All of the calculations are then repeated for armour and resists, and anything remaining / penetrating armour will damage the internal structure.
Multi-mixed-shields and multi-damage types.
Since weapons can deal more than one damage type, and shields can resist more than one you must apply each damage type to the shield with highest resist for that type, in order descending. This could get complex if you're working it out on paper, but the computer just needs to track each current damage-type path.
So, if Ship B had two shield generators, once specialising in Kinetic and another specialising in Thermal, each shield would deal with the particular part of the damage as best it could: e.g. (woop - another example full of maths)
Simpler weapon though. It deals 50 Thermal Damage and 50 Kinetic Damage.
Ship B has 3 shield generators, one has 60% thermal resist (and 5% kinetic resist), the second has 75% kinetic resist only. The third does a flat 20% resistance to everything.
For each damage type that gets gets calculated, order the shields (or armour if you're at that stage) into resistance order.
Code:
75% kinetic resist on generator B
60% thermal resist on generator A
20% kinetic resist on generator C
20% thermal resist on generator C
5% kinetic resist on generator A
Damage and resistance versus the shields will then get computed in the order listed above....
So firstly, all kinetic damage will be worked out against generator B, any remaining damage is put on one side until we hit the next kinetic damage step later, then all thermal damage is worked out against generator A... again any remainder is put on one side, then all combined remaining damage is worked out against generator C, finally leaving any remaining kinetic damage versus generator A. Anything not absorbed by shields, resisted by shields, or so on gets through to armour.
---
Also - handling them in this way shouldn't break the existing concept of simple shields, phased shields and whatever else in stock because by (when damage is worked out) applying the shields in order of highest resistance you'll get the same overall effect. Just define a few simple damage types (Normal, Phased, Null-Space) and you'll get identical behaviour - but this model increases the scope for modding significantly. Of course - shields don't *have* to have resist values - they'll be depleted by unresisted damage or damage remaining after resists are worked out.
I hope I explained that all in enough detail - the concept is sound in my head at least

If anyone needs / would like, I can work through more (more detailed!) examples.