mirror of https://github.com/AxioDL/metaforce.git
CDamageVulnerability: Use matching GetVulnerability imp
This commit is contained in:
parent
95b3859503
commit
6c449ca146
|
@ -216,9 +216,21 @@ bool CDamageVulnerability::WeaponHits(const CWeaponMode& mode, bool checkDirect)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline EVulnerability direct_to_normal(EVulnerability vuln) {
|
||||||
|
if (vuln == EVulnerability::DirectWeak) {
|
||||||
|
return EVulnerability::Weak;
|
||||||
|
}
|
||||||
|
if (vuln == EVulnerability::DirectNormal) {
|
||||||
|
return EVulnerability::Normal;
|
||||||
|
}
|
||||||
|
if (vuln == EVulnerability::DirectImmune) {
|
||||||
|
return EVulnerability::Immune;
|
||||||
|
}
|
||||||
|
return vuln;
|
||||||
|
}
|
||||||
|
|
||||||
EVulnerability CDamageVulnerability::GetVulnerability(const CWeaponMode& mode, bool ignoreDirect) const {
|
EVulnerability CDamageVulnerability::GetVulnerability(const CWeaponMode& mode, bool ignoreDirect) const {
|
||||||
const auto type = mode.GetType();
|
if (mode.GetType() < EWeaponType::Power || mode.GetType() > EWeaponType::OrangePhazon) {
|
||||||
if (type <= EWeaponType::None || type >= EWeaponType::Max) {
|
|
||||||
return EVulnerability::Deflect;
|
return EVulnerability::Deflect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,39 +238,18 @@ EVulnerability CDamageVulnerability::GetVulnerability(const CWeaponMode& mode, b
|
||||||
return EVulnerability::Normal;
|
return EVulnerability::Normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto vuln = x0_normal[u32(type)];
|
EVulnerability vuln = x0_normal[u32(mode.GetType())];
|
||||||
|
EWeaponType type = mode.GetType();
|
||||||
if (mode.IsCharged()) {
|
if (mode.IsCharged()) {
|
||||||
if (type < EWeaponType::Bomb) {
|
vuln = type < EWeaponType::Bomb ? x3c_charged[u32(type)] : EVulnerability::Normal;
|
||||||
vuln = x3c_charged[u32(type)];
|
|
||||||
} else {
|
|
||||||
vuln = EVulnerability::Normal;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mode.IsComboed()) {
|
if (mode.IsComboed()) {
|
||||||
if (type < EWeaponType::Bomb) {
|
vuln = type < EWeaponType::Bomb ? x4c_combo[u32(type)] : EVulnerability::Normal;
|
||||||
vuln = x4c_combo[u32(type)];
|
|
||||||
} else {
|
|
||||||
vuln = EVulnerability::Normal;
|
|
||||||
}
|
}
|
||||||
}
|
if (ignoreDirect == 1) {
|
||||||
|
|
||||||
if (ignoreDirect) {
|
|
||||||
return vuln;
|
return vuln;
|
||||||
}
|
}
|
||||||
|
return direct_to_normal(vuln);
|
||||||
if (vuln == EVulnerability::DirectWeak) {
|
|
||||||
return EVulnerability::Weak;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (vuln == EVulnerability::DirectNormal) {
|
|
||||||
return EVulnerability::Normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (vuln == EVulnerability::DirectImmune) {
|
|
||||||
return EVulnerability::Immune;
|
|
||||||
}
|
|
||||||
|
|
||||||
return vuln;
|
|
||||||
}
|
}
|
||||||
} // namespace metaforce
|
} // namespace metaforce
|
||||||
|
|
Loading…
Reference in New Issue