mirror of https://github.com/zeldaret/botw.git
aoc2: Add shouldApplyMasterModeDamageMultiplier
This commit is contained in:
parent
7553861fb8
commit
1176af740b
|
@ -72747,7 +72747,7 @@
|
||||||
0x0000007100d6d394,aoc2::nerfCookCureItemHitPointRecover,64,
|
0x0000007100d6d394,aoc2::nerfCookCureItemHitPointRecover,64,
|
||||||
0x0000007100d6d3d4,aoc2::modifyEnemyNoticeDuration,60,
|
0x0000007100d6d3d4,aoc2::modifyEnemyNoticeDuration,60,
|
||||||
0x0000007100d6d410,sub_7100D6D410,304,
|
0x0000007100d6d410,sub_7100D6D410,304,
|
||||||
0x0000007100d6d540,aoc2::shouldApplyMasterModeDamageMultiplier,6164,
|
0x0000007100d6d540,aoc2::shouldApplyMasterModeDamageMultiplier,6164,_ZN5uking4aoc237shouldApplyMasterModeDamageMultiplierERKN4ksys3act20ActorConstDataAccessE|
|
||||||
0x0000007100d6ed54,aoc2::buffDamage,40,
|
0x0000007100d6ed54,aoc2::buffDamage,40,
|
||||||
0x0000007100d6ed7c,aoc2::initHardModeFlag,172,
|
0x0000007100d6ed7c,aoc2::initHardModeFlag,172,
|
||||||
0x0000007100d6ee28,aoc2::setAocFlag2,172,
|
0x0000007100d6ee28,aoc2::setAocFlag2,172,
|
||||||
|
|
Can't render this file because it is too large.
|
|
@ -2,7 +2,45 @@
|
||||||
|
|
||||||
namespace uking {
|
namespace uking {
|
||||||
|
|
||||||
using namespace ksys;
|
bool aoc2::shouldApplyMasterModeDamageMultiplier(const ksys::act::ActorConstDataAccess& accessor) {
|
||||||
|
if (!accessor.hasProc())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
ksys::act::ActorConstDataAccess parent;
|
||||||
|
if (accessor.hasConnectedCalcParent() && accessor.acquireConnectedCalcParent(&parent))
|
||||||
|
return shouldApplyMasterModeDamageMultiplier(parent);
|
||||||
|
|
||||||
|
if (accessor.hasTag(ksys::act::tags::IsMasterModeDamageMultiplierActor) ||
|
||||||
|
(aoc2::instance() && aoc2::instance()->isTestOfStrengthShrine() &&
|
||||||
|
accessor.hasTag(ksys::act::tags::AncientGuardTarget))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const sead::SafeString& profile = accessor.getProfile();
|
||||||
|
const sead::SafeString& name = accessor.getName();
|
||||||
|
|
||||||
|
if (profile == "LastBoss" || profile == "SiteBoss")
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (name == "Enemy_GanonBeast" || name == "GanonShockWave" || name == "EnemyGanonShockWave" ||
|
||||||
|
name == "GanonSeaOfFlame" || name == "GanonFlameBall" || name == "GanonPillarOfFlame" ||
|
||||||
|
name == "GanonNormalArrow" || name == "GanonSpearForThrowing" || name == "CurseGanonBeam" ||
|
||||||
|
name == "GanonBeam" || name == "GanonIceBullet" || name == "GanonThunder" ||
|
||||||
|
name == "GanonIronPile" || name == "GanonTornado" || name == "GanonBeastBeam" ||
|
||||||
|
name == "SiteBossSeaOfFlame" || name == "SiteBossSeaOfFlameRotate" ||
|
||||||
|
name == "SiteBossFlameBall" || name == "SiteBossBigFlameBall" ||
|
||||||
|
name == "SiteBossPillarOfFlame" || name == "SiteBossWearFlame" ||
|
||||||
|
name == "SiteBossDrawingFlameTornado" || name == "SiteBossGaleArrow" ||
|
||||||
|
name == "SiteBossNormalArrow" || name == "SiteBossSpearForThrowing" ||
|
||||||
|
name == "SiteBossReflectArrow" || name == "ArrowRainChild" ||
|
||||||
|
name == "SiteBossSpearIceBullet" || name == "SiteBossTornado" ||
|
||||||
|
name == "LastBossThunder" || name == "Enemy_Assassin_Senior" ||
|
||||||
|
name == "AssassinRockBall" || name == "AssassinIronBall") {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool aoc2::rankUpEnemy(const sead::SafeString& actor_name, const ksys::map::Object& obj,
|
bool aoc2::rankUpEnemy(const sead::SafeString& actor_name, const ksys::map::Object& obj,
|
||||||
const char** new_name) {
|
const char** new_name) {
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include <heap/seadDisposer.h>
|
#include <heap/seadDisposer.h>
|
||||||
#include <prim/seadSafeString.h>
|
#include <prim/seadSafeString.h>
|
||||||
|
#include "KingSystem/ActorSystem/actActorConstDataAccess.h"
|
||||||
#include "KingSystem/Map/mapObject.h"
|
#include "KingSystem/Map/mapObject.h"
|
||||||
|
|
||||||
namespace uking {
|
namespace uking {
|
||||||
|
@ -16,6 +17,9 @@ class aoc2 {
|
||||||
public:
|
public:
|
||||||
void init(sead::Heap* heap);
|
void init(sead::Heap* heap);
|
||||||
|
|
||||||
|
static bool
|
||||||
|
shouldApplyMasterModeDamageMultiplier(const ksys::act::ActorConstDataAccess& accessor);
|
||||||
|
|
||||||
bool isTestOfStrengthShrine() const;
|
bool isTestOfStrengthShrine() const;
|
||||||
|
|
||||||
bool rankUpEnemy(const sead::SafeString& actor_name, const ksys::map::Object& obj,
|
bool rankUpEnemy(const sead::SafeString& actor_name, const ksys::map::Object& obj,
|
||||||
|
|
|
@ -2,13 +2,19 @@
|
||||||
|
|
||||||
#include "KingSystem/ActorSystem/actActorLinkConstDataAccess.h"
|
#include "KingSystem/ActorSystem/actActorLinkConstDataAccess.h"
|
||||||
#include "KingSystem/ActorSystem/actBaseProcLink.h"
|
#include "KingSystem/ActorSystem/actBaseProcLink.h"
|
||||||
|
#include "KingSystem/ActorSystem/actTag.h"
|
||||||
|
#include "KingSystem/Utils/Types.h"
|
||||||
|
|
||||||
namespace ksys::act {
|
namespace ksys::act {
|
||||||
|
|
||||||
class ActorConstDataAccess : public ActorLinkConstDataAccess {
|
class ActorConstDataAccess : public ActorLinkConstDataAccess {
|
||||||
public:
|
public:
|
||||||
|
ActorConstDataAccess() = default;
|
||||||
|
|
||||||
bool acquireActor(const ActorLinkConstDataAccess& other);
|
bool acquireActor(const ActorLinkConstDataAccess& other);
|
||||||
|
|
||||||
|
bool hasProc() const { return ActorLinkConstDataAccess::hasProc(); }
|
||||||
|
|
||||||
/// Checks whether the acquired BaseProc is `proc`.
|
/// Checks whether the acquired BaseProc is `proc`.
|
||||||
bool hasProc(BaseProc* proc) const;
|
bool hasProc(BaseProc* proc) const;
|
||||||
|
|
||||||
|
@ -21,12 +27,19 @@ public:
|
||||||
|
|
||||||
void debugLog(s32, const sead::SafeString& method_name) const;
|
void debugLog(s32, const sead::SafeString& method_name) const;
|
||||||
|
|
||||||
|
const sead::SafeString& getProfile() const;
|
||||||
const sead::SafeString& getName() const;
|
const sead::SafeString& getName() const;
|
||||||
|
bool hasTag(const sead::SafeString& tag) const;
|
||||||
|
bool hasTag(Tag tag) const;
|
||||||
u32 getId() const;
|
u32 getId() const;
|
||||||
bool acquireConnectedCalcParent(ActorLinkConstDataAccess* accessor) const;
|
bool acquireConnectedCalcParent(ActorLinkConstDataAccess* accessor) const;
|
||||||
bool acquireConnectedCalcChild(ActorLinkConstDataAccess* accessor) const;
|
bool acquireConnectedCalcChild(ActorLinkConstDataAccess* accessor) const;
|
||||||
bool hasConnectedCalcParent() const;
|
bool hasConnectedCalcParent() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
u8 _10 = 0;
|
||||||
};
|
};
|
||||||
|
KSYS_CHECK_SIZE_NX150(ActorConstDataAccess, 0x18);
|
||||||
|
|
||||||
bool acquireActor(BaseProcLink* link, ActorConstDataAccess* accessor);
|
bool acquireActor(BaseProcLink* link, ActorConstDataAccess* accessor);
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,8 @@ public:
|
||||||
|
|
||||||
void release() { acquire(nullptr); }
|
void release() { acquire(nullptr); }
|
||||||
|
|
||||||
|
bool hasProc() const { return mProc != nullptr; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class ActorConstDataAccess;
|
friend class ActorConstDataAccess;
|
||||||
|
|
||||||
|
|
|
@ -10,8 +10,8 @@ namespace ksys::act {
|
||||||
class Tag {
|
class Tag {
|
||||||
public:
|
public:
|
||||||
Tag() = default;
|
Tag() = default;
|
||||||
constexpr Tag(u32 hash) : mHash(hash) {}
|
explicit constexpr Tag(u32 hash) : mHash(hash) {}
|
||||||
constexpr Tag(std::string_view name) : mHash(util::calcCrc32(name)) {}
|
explicit constexpr Tag(std::string_view name) : mHash(util::calcCrc32(name)) {}
|
||||||
|
|
||||||
constexpr bool operator==(Tag other) const { return mHash == other.mHash; }
|
constexpr bool operator==(Tag other) const { return mHash == other.mHash; }
|
||||||
constexpr bool operator!=(Tag other) const { return mHash != other.mHash; }
|
constexpr bool operator!=(Tag other) const { return mHash != other.mHash; }
|
||||||
|
|
Loading…
Reference in New Issue