mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-12-09 12:27:43 +00:00
Various bug fixes
This commit is contained in:
@@ -9,7 +9,7 @@ const CDamageVulnerability CDamageVulnerability::sNormalVulnerability(
|
||||
EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal,
|
||||
EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal,
|
||||
EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal,
|
||||
EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal, EVulnerability::DoubleDamage);
|
||||
EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Normal, EVulnerability::Weak);
|
||||
|
||||
const CDamageVulnerability CDamageVulnerability::sImmuneVulnerability(
|
||||
EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect,
|
||||
@@ -17,7 +17,7 @@ const CDamageVulnerability CDamageVulnerability::sImmuneVulnerability(
|
||||
EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect,
|
||||
EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect,
|
||||
EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect,
|
||||
EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::DoubleDamage);
|
||||
EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Weak);
|
||||
/* LOL, thanks retro */
|
||||
const CDamageVulnerability CDamageVulnerability::sReflectVulnerability(
|
||||
EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect,
|
||||
@@ -25,7 +25,7 @@ const CDamageVulnerability CDamageVulnerability::sReflectVulnerability(
|
||||
EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect,
|
||||
EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect,
|
||||
EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect,
|
||||
EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::DoubleDamage);
|
||||
EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Deflect, EVulnerability::Weak);
|
||||
|
||||
const CDamageVulnerability CDamageVulnerability::sPassThroughVulnerability(
|
||||
EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough,
|
||||
@@ -33,13 +33,18 @@ const CDamageVulnerability CDamageVulnerability::sPassThroughVulnerability(
|
||||
EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough,
|
||||
EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough,
|
||||
EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough,
|
||||
EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::DoubleDamage);
|
||||
EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::PassThrough, EVulnerability::Weak);
|
||||
|
||||
static inline bool is_not_immune(EVulnerability vuln)
|
||||
{
|
||||
return vuln != EVulnerability::Immune && vuln != EVulnerability::DirectImmune;
|
||||
}
|
||||
|
||||
static inline bool is_normal_or_weak(EVulnerability vuln)
|
||||
{
|
||||
return vuln == EVulnerability::Normal || vuln == EVulnerability::Weak;
|
||||
}
|
||||
|
||||
void CDamageVulnerability::ConstructNew(CInputStream& in, int propCount)
|
||||
{
|
||||
propCount -= 3;
|
||||
@@ -81,7 +86,7 @@ CDamageVulnerability::CDamageVulnerability(CInputStream& in)
|
||||
vulns[i] = EVulnerability(in.readUint32Big());
|
||||
|
||||
if (propCount == 15)
|
||||
x5c_deflected = EVulnerability::DoubleDamage;
|
||||
x5c_deflected = EVulnerability::Weak;
|
||||
else
|
||||
x5c_deflected = EVulnerability(in.readUint32Big());
|
||||
|
||||
@@ -154,11 +159,13 @@ bool CDamageVulnerability::WeaponHurts(const CWeaponMode& mode, bool ignoreDirec
|
||||
EVulnerability normalVuln = (&x0_power)[u32(mode.GetType())];
|
||||
bool normalHurts = true;
|
||||
if (ignoreDirect)
|
||||
normalHurts = is_not_immune(normalVuln);
|
||||
{
|
||||
normalHurts = is_normal_or_weak(normalVuln);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!is_not_immune(normalVuln) &&
|
||||
(normalVuln != EVulnerability::DirectDouble && normalVuln != EVulnerability::DirectNormal))
|
||||
if (!is_normal_or_weak(normalVuln) &&
|
||||
(normalVuln != EVulnerability::DirectWeak && normalVuln != EVulnerability::DirectNormal))
|
||||
normalHurts = false;
|
||||
}
|
||||
|
||||
@@ -170,16 +177,16 @@ bool CDamageVulnerability::WeaponHurts(const CWeaponMode& mode, bool ignoreDirec
|
||||
EVulnerability comboedVuln = (&x4c_superMissile)[u32(mode.GetType())];
|
||||
if (ignoreDirect)
|
||||
{
|
||||
chargedHurts = is_not_immune(chargedVuln);
|
||||
comboedHurts = is_not_immune(comboedVuln);
|
||||
chargedHurts = is_normal_or_weak(chargedVuln);
|
||||
comboedHurts = is_normal_or_weak(comboedVuln);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!is_not_immune(chargedVuln) &&
|
||||
(chargedVuln != EVulnerability::DirectDouble && chargedVuln != EVulnerability::DirectNormal))
|
||||
if (!is_normal_or_weak(chargedVuln) &&
|
||||
(chargedVuln != EVulnerability::DirectWeak && chargedVuln != EVulnerability::DirectNormal))
|
||||
chargedHurts = false;
|
||||
if (!is_not_immune(comboedVuln) &&
|
||||
(comboedVuln != EVulnerability::DirectDouble && comboedVuln != EVulnerability::DirectNormal))
|
||||
if (!is_normal_or_weak(comboedVuln) &&
|
||||
(comboedVuln != EVulnerability::DirectWeak && comboedVuln != EVulnerability::DirectNormal))
|
||||
comboedHurts = false;
|
||||
}
|
||||
}
|
||||
@@ -258,8 +265,8 @@ EVulnerability CDamageVulnerability::GetVulnerability(const CWeaponMode& mode, b
|
||||
if (ignoreDirect)
|
||||
return vuln;
|
||||
|
||||
if (vuln == EVulnerability::DirectDouble)
|
||||
return EVulnerability::DoubleDamage;
|
||||
if (vuln == EVulnerability::DirectWeak)
|
||||
return EVulnerability::Weak;
|
||||
else if (vuln == EVulnerability::DirectNormal)
|
||||
return EVulnerability::Normal;
|
||||
else if (vuln == EVulnerability::DirectImmune)
|
||||
|
||||
Reference in New Issue
Block a user