summaryrefslogtreecommitdiff
path: root/src/Game/Actor/Damage/actDamageInfoMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Game/Actor/Damage/actDamageInfoMgr.cpp')
-rw-r--r--src/Game/Actor/Damage/actDamageInfoMgr.cpp69
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