botw/src/Game/Damage/dmgInfoManager.cpp

70 lines
1.9 KiB
C++

#include "Game/Damage/dmgInfoManager.h"
#include "Game/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