mirror of
https://github.com/zeldaret/botw
synced 2026-07-30 23:55:02 -04:00
uking/dmg: Implement DamageInfoMgr::isTrueFormMasterSword
And some trivial getters.
This commit is contained in:
@@ -229,11 +229,11 @@ bool DamageManagerBase::canTakeDamage() {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!DamageInfoMgr::instance()->mDamagesArray.isBufferReady()) {
|
||||
if (!DamageInfoMgr::instance()->getDamagesArray().isBufferReady()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
DamageInfoMgr::DamageItem& item = DamageInfoMgr::instance()->mDamagesArray[idx];
|
||||
DamageInfoMgr::DamageItem& item = DamageInfoMgr::instance()->getDamagesArray()[idx];
|
||||
return item.mCanTakeDamageFromType[damageTypeMaybe] & 0x1;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,69 @@
|
||||
#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
|
||||
|
||||
@@ -24,8 +24,22 @@ public:
|
||||
sead::SafeArray<u8, 3> mCanTakeDamageFromType;
|
||||
};
|
||||
|
||||
/// Boomerang remote bombs are a scrapped feature.
|
||||
static bool enableBoomerangRemoteBombs();
|
||||
static int getShieldRideBaseFrame();
|
||||
static int getShieldRideHitBaseDamage();
|
||||
static f32 getCriticalAttackRatio();
|
||||
|
||||
bool isTrueFormMasterSword() const;
|
||||
|
||||
sead::Buffer<DamageItem>& getDamagesArray() { return mDamagesArray; }
|
||||
const sead::Buffer<DamageItem>& getDamagesArray() const { return mDamagesArray; }
|
||||
f32 getMasterSwordSearchEvilDist() const { return mMasterSwordSearchEvilDist; }
|
||||
bool isMasterSwordDetectedEvil() const { return mMasterSwordDetectedEvil; }
|
||||
bool isMasterSwordDisableTrueForm() const { return mMasterSwordDisableTrueForm; }
|
||||
bool isOneHitObliteratorActive() const { return mOneHitObliteratorActive; }
|
||||
|
||||
private:
|
||||
/* 0x0028 */ u8 TEMP_8[0x5d0 - 0x28];
|
||||
/* 0x05d0 */ ksys::res::Handle mReactionTable;
|
||||
/* 0x0620 */ sead::Buffer<DamageItem> mDamagesArray;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <prim/seadSafeString.h>
|
||||
|
||||
namespace uking {
|
||||
|
||||
// TODO
|
||||
@@ -7,6 +9,12 @@ class GameScene {
|
||||
public:
|
||||
static bool isOpenWorldDemo() { return sIsOpenWorldDemo; }
|
||||
|
||||
/// Get the current map type (e.g. MainFieldDungeon)
|
||||
static const sead::SafeString& getCurrentMapType();
|
||||
|
||||
/// Get the current map name (e.g. RemainsWind, FinalTrial, ...)
|
||||
static const sead::SafeString& getCurrentMapName();
|
||||
|
||||
private:
|
||||
static bool sIsOpenWorldDemo;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user