Damage system
Damage types
There are several different damage types recognised by the game:
- Impact damage - Caused by large, bludgeoning impacts
- Bullet damage - Caused by bullets, or other small, high-velocity projectiles
- Flame damage - Caused by extreme heat and flames
- Explosion damage - Caused by explosives such as rockets
- Radiation damage - Caused by radioactive map blocks
- Electricity damage - Caused by electrocution
- Water damage - Caused by getting wet
Each weapon will do different amounts of each damage type.
Resistances vs. invulnerability
There are two basic damage schemes possible: A percentage resistance to each damage type, or a plain boolean invulnerability flag for each damage type. The resistance method is more flexible and creates deeper gameplay, especially if the game allows for extensive character or vehicle customisation; but the invulnerability method is much simpler for the user to understand, and gives the game a more lightweight feel where you don't have to criticise every item or vehicle to decide which one is better for you to use.
Conclusion
Resistances, innit.
Each ped and car has its own resistance values (based around the resistances of the parent type). This allows the resistances to change over time (i.e. vehicle armour can degrade in effectiveness, or the player can get a radiation suit, etc.) without the use of bitflags to say the entity has been granted special powers (like bullet-proofing, etc.). The only damage flag retained for each ped and car is the global invulnerability flag.
TODO:
MUST-CODE: LONG: Tweak damage amounts/resistances.
???
Profit!