diff options
| author | Léo Lam <leo@leolam.fr> | 2026-09-28 03:39:31 +0200 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2026-10-04 06:50:35 +0200 |
| commit | ec2ec9ad6dc334522d5175967be8e4a468874896 (patch) | |
| tree | 3c54330657ceeff7ad4b65b6a5fec44cae90a2be /src/Game/Actor/Damage/dmgInfoManager.cpp | |
| parent | a0245d469640cbe64199a2167cbd7b73c9873904 (diff) | |
Damage: move Game/Damage under Game/Actor
Link order: the damage code is interleaved with actor TUs inside the
Game/Actor block, not in a block of its own.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
Diffstat (limited to 'src/Game/Actor/Damage/dmgInfoManager.cpp')
| -rw-r--r-- | src/Game/Actor/Damage/dmgInfoManager.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/Game/Actor/Damage/dmgInfoManager.cpp b/src/Game/Actor/Damage/dmgInfoManager.cpp new file mode 100644 index 00000000..0b220990 --- /dev/null +++ b/src/Game/Actor/Damage/dmgInfoManager.cpp @@ -0,0 +1,69 @@ +#include "Game/Actor/Damage/dmgInfoManager.h" +#include "Game/Scene/gameScene.h" +#include "KingSystem/ActorSystem/actGlobalParameter.h" +#include "KingSystem/GameData/gdtCommonFlagsUtils.h" +#include "KingSystem/Resource/GeneralParamList/resGParamListObjectGlobal.h" + +namespace uking::dmg { + +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::dmg |
