summaryrefslogtreecommitdiff
path: root/src/Game/Actor/Damage/dmgInfoManager.cpp
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2026-09-28 03:39:31 +0200
committerLéo Lam <leo@leolam.fr>2026-10-04 06:50:35 +0200
commitec2ec9ad6dc334522d5175967be8e4a468874896 (patch)
tree3c54330657ceeff7ad4b65b6a5fec44cae90a2be /src/Game/Actor/Damage/dmgInfoManager.cpp
parenta0245d469640cbe64199a2167cbd7b73c9873904 (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.cpp69
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