Advertisement
Vearie

How Scion Shields and Armor work in Battlezone II

Nov 14th, 2017
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. 9:41 PM - [ARM] Ultraken: BZ2 armor and shield effects basically multiply together. The "none" value is the baseline for the other values
  2. 9:42 PM - [ARM] Ultraken: so, armor is the none, light, and heavy (as one would expect), and the three shields use none as their baseline to become multipliers
  3. 9:44 PM - [ARM] Ultraken: Here's an example of how the damage values get read in:
  4.  
  5. // get base damage value
  6. ParameterDB::GetFloat(crcOdf, 0x5DA6CB99 /* "OrdnanceClass" */, 0xAD9A37C1 /* "damageValue(N)" */, &damageValue, proto->damageValue);
  7.  
  8. // get armor damage scales
  9. armorScale[ARMOR_NONE] = 1.0f;
  10. if (ParameterDB::GetFloat(crcOdf, 0x5DA6CB99 /* "OrdnanceClass" */, 0x0D68A9CE /* "damageValue(L)" */, &armorScale[ARMOR_LIGHT], proto->armorScale[ARMOR_LIGHT]))
  11. armorScale[ARMOR_LIGHT] = damageValue ? armorScale[ARMOR_LIGHT] / damageValue : 0.0f;
  12. if (ParameterDB::GetFloat(crcOdf, 0x5DA6CB99 /* "OrdnanceClass" */, 0x484C8867 /* "damageValue(H)" */, &armorScale[ARMOR_HEAVY], proto->armorScale[ARMOR_HEAVY]))
  13. armorScale[ARMOR_HEAVY] = damageValue ? armorScale[ARMOR_HEAVY] / damageValue : 0.0f;
  14.  
  15. // get shield damage scales
  16. shieldScale[SHIELD_NONE] = 1.0f;
  17. if (ParameterDB::GetFloat(crcOdf, 0x5DA6CB99 /* "OrdnanceClass" */, 0xA0BE0FF5 /* "damageValue(S)" */, &shieldScale[SHIELD_STASIS], proto->shieldScale[SHIELD_STASIS]))
  18. shieldScale[SHIELD_STASIS] = damageValue ? shieldScale[SHIELD_STASIS] / damageValue : 0.0f;
  19. if (ParameterDB::GetFloat(crcOdf, 0x5DA6CB99 /* "OrdnanceClass" */, 0x8720EA9C /* "damageValue(D)" */, &shieldScale[SHIELD_DEFLECT], proto->shieldScale[SHIELD_DEFLECT]))
  20. shieldScale[SHIELD_DEFLECT] = damageValue ? shieldScale[SHIELD_DEFLECT] / damageValue : 0.0f;
  21. if (ParameterDB::GetFloat(crcOdf, 0x5DA6CB99 /* "OrdnanceClass" */, 0x101D0AE9 /* "damageValue(A)" */, &shieldScale[SHIELD_ABSORB], proto->shieldScale[SHIELD_ABSORB]))
  22. shieldScale[SHIELD_ABSORB] = damageValue ? shieldScale[SHIELD_ABSORB] / damageValue : 0.0f;
  23. 9:44 PM - Real: interesting
  24. 9:44 PM - Real: I always assumed they just replaced the armor class as-is
  25. 9:45 PM - Real: I've played BZ2 15 years and never knew this
  26. 9:45 PM - [ARM] Ultraken: It's not well documented
  27. 9:46 PM - [ARM] Ultraken: So (N) damage value is the baseline for everything else
  28. 9:46 PM - [ARM] Ultraken: L and H armor divide by N
  29. 9:46 PM - [ARM] Ultraken: S, D, and A shield also divide by N
  30. 9:46 PM - [ARM] Ultraken: and then when applying damage, it's the N value times the armor scale times the shield scale
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement