diff options
Diffstat (limited to 'src/Game/Actor/Damage/actDamageInfoMgr.cpp')
| -rw-r--r-- | src/Game/Actor/Damage/actDamageInfoMgr.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/Game/Actor/Damage/actDamageInfoMgr.cpp b/src/Game/Actor/Damage/actDamageInfoMgr.cpp new file mode 100644 index 00000000..e794326a --- /dev/null +++ b/src/Game/Actor/Damage/actDamageInfoMgr.cpp @@ -0,0 +1,69 @@ +#include "Game/Actor/Damage/actDamageInfoMgr.h" +#include "Game/Scene/gameScene.h" +#include "KingSystem/ActorSystem/actGlobalParameter.h" +#include "KingSystem/GameData/gdtCommonFlagsUtils.h" +#include "KingSystem/Resource/GeneralParamList/resGParamListObjectGlobal.h" + +namespace uking::act { + +SEAD_SINGLETON_DISPOSER_IMPL(DamageInfoMgr) + +bool DamageInfoMgr::enableBoomerangRemoteBombs() { + return false; +} + +int DamageInfoMgr::getShieldRideBaseFrame() { + auto* global = ksys::act::GlobalParameter::instance(); + if (!global || !global->getGlobalParam()) + return 0; + + return global->getGlobalParam()->mShieldRideBaseFrame.ref(); +} + +int DamageInfoMgr::getShieldRideHitBaseDamage() { + auto* global = ksys::act::GlobalParameter::instance(); + if (!global || !global->getGlobalParam()) + return 0; + + return global->getGlobalParam()->mShieldRideHitBaseDamage.ref(); +} + +f32 DamageInfoMgr::getCriticalAttackRatio() { + auto* global = ksys::act::GlobalParameter::instance(); + if (!global || !global->getGlobalParam()) + return 1.0; + + return global->getGlobalParam()->mCriticalAttackRatio.ref(); +} + +bool DamageInfoMgr::isTrueFormMasterSword() const { + if (mMasterSwordDisableTrueForm) + return false; + + if (ksys::gdt::getFlag_Open_MasterSword_FullPower()) + return true; + + if (ksys::gdt::getFlag_IsInHyruleCastleArea()) + return true; + + if (ksys::gdt::getFlag_LastBossGanonBeastGenerateFlag()) + return true; + + const sead::SafeString& map = GameScene::getCurrentMapName(); + + if (!ksys::gdt::getFlag_Die_PGanonElectric() && map == "RemainsElectric") + return true; + + if (!ksys::gdt::getFlag_Die_PGanonFire() && map == "RemainsFire") + return true; + + if (!ksys::gdt::getFlag_Die_PGanonWater() && map == "RemainsWater") + return true; + + if (!ksys::gdt::getFlag_Die_PGanonWind() && map == "RemainsWind") + return true; + + return mMasterSwordDetectedEvil; +} + +} // namespace uking::act |
