mirror of https://github.com/zeldaret/botw.git
uking/dmg: Implement DamageInfoMgr::isTrueFormMasterSword
And some trivial getters.
This commit is contained in:
parent
5328fd2782
commit
5280254ef1
|
@ -40218,7 +40218,7 @@
|
|||
0x000000710067446c,sub_710067446C,664,
|
||||
0x0000007100674704,sub_7100674704,44,
|
||||
0x0000007100674730,sub_7100674730,44,
|
||||
0x000000710067475c,enableBoomerangBombs,8,
|
||||
0x000000710067475c,enableBoomerangBombs,8,_ZN5uking3dmg13DamageInfoMgr26enableBoomerangRemoteBombsEv
|
||||
0x0000007100674764,sub_7100674764,8,
|
||||
0x000000710067476c,sub_710067476C,8,
|
||||
0x0000007100674774,sub_7100674774,8,
|
||||
|
@ -40226,11 +40226,11 @@
|
|||
0x0000007100674788,sub_7100674788,8,
|
||||
0x0000007100674790,sub_7100674790,12,
|
||||
0x000000710067479c,sub_710067479C,8,
|
||||
0x00000071006747a4,getShieldRideBaseFrame,48,
|
||||
0x00000071006747d4,getShieldRideHitBaseDamage,48,
|
||||
0x00000071006747a4,getShieldRideBaseFrame,48,_ZN5uking3dmg13DamageInfoMgr22getShieldRideBaseFrameEv
|
||||
0x00000071006747d4,getShieldRideHitBaseDamage,48,_ZN5uking3dmg13DamageInfoMgr26getShieldRideHitBaseDamageEv
|
||||
0x0000007100674804,get10,8,
|
||||
0x000000710067480c,sub_710067480C,36,
|
||||
0x0000007100674830,DamageInfoMgr::isTrueFormMasterSword,612,
|
||||
0x000000710067480c,sub_710067480C,36,_ZN5uking3dmg13DamageInfoMgr22getCriticalAttackRatioEv
|
||||
0x0000007100674830,DamageInfoMgr::isTrueFormMasterSword,612,_ZNK5uking3dmg13DamageInfoMgr21isTrueFormMasterSwordEv
|
||||
0x0000007100674a94,sub_7100674A94,156,
|
||||
0x0000007100674b30,sub_7100674B30,144,
|
||||
0x0000007100674bc0,sub_7100674BC0,100,
|
||||
|
|
Can't render this file because it is too large.
|
|
@ -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;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue