aoc2: Implement more functions

This commit is contained in:
Léo Lam 2020-11-07 19:06:25 +01:00
parent 3f11fdb6d2
commit 3bd9d7a599
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
3 changed files with 65 additions and 15 deletions

View File

@ -6520,7 +6520,7 @@
0x000000710011cd2c,AI_Action_EventOpenGetDemo::dtorDelete,52,
0x000000710011cd60,AI_Action_EventOpenGetDemo::init,8,
0x000000710011cd68,AI_Action_EventOpenGetDemo::enter,112,
0x000000710011cdd8,GameDataMgr::setBoolByIter,196,
0x000000710011cdd8,GameDataMgr::setBoolByIter,196,_ZN4ksys3gdt7Manager7setBoolEbNS0_10FlagHandleE
0x000000710011ce9c,AI_Action_EventOpenGetDemo::calc,240,
0x000000710011cf8c,AI_Action_EventOpenGetDemo::leave,68,
0x000000710011cfd0,AI_Action_EventOpenGetDemo::loadParams,108,
@ -72739,7 +72739,7 @@
0x0000007100d6cd40,aoc2::Instance::dtorDelete,100,_ZN5uking4aoc218SingletonDisposer_D0Ev
0x0000007100d6cda4,aoc2::createInstance,136,_ZN5uking4aoc214createInstanceEPN4sead4HeapE
0x0000007100d6ce2c,aoc2::ctor,524,_ZN5uking4aoc2C1Ev
0x0000007100d6d038,aoc2::setAocHardModeEnabledFlag,96,
0x0000007100d6d038,aoc2::setAocHardModeEnabledFlag,96,_ZN5uking4aoc222setHardModeEnabledFlagEPN4ksys3gdt7Manager10ResetEventE
0x0000007100d6d098,aoc2::initGameDataIters,212,_ZN5uking4aoc215initFlagHandlesEPN4ksys3gdt7Manager11ReinitEventE
0x0000007100d6d16c,aoc2::dtor,228,_ZN5uking4aoc2D1Ev
0x0000007100d6d250,aoc2::dtorDelete,36,_ZN5uking4aoc2D0Ev
@ -72751,12 +72751,12 @@
0x0000007100d6d410,sub_7100D6D410,304,
0x0000007100d6d540,aoc2::shouldApplyMasterModeDamageMultiplier,6164,_ZN5uking4aoc237shouldApplyMasterModeDamageMultiplierERKN4ksys3act20ActorConstDataAccessE
0x0000007100d6ed54,aoc2::buffDamage,40,_ZN5uking4aoc210buffDamageERi
0x0000007100d6ed7c,aoc2::initHardModeFlag,172,
0x0000007100d6ee28,aoc2::setAocFlag2,172,
0x0000007100d6eed4,aoc2::setIsLastPlayHardMode,60,
0x0000007100d6ef10,aoc2::setIsLastPlayHardModeToFalse,76,
0x0000007100d6ed7c,aoc2::initHardModeFlag,172,_ZN5uking4aoc226loadIsLastPlayHardModeFlagEv
0x0000007100d6ee28,aoc2::setAocFlag2,172,_ZN5uking4aoc218loadIsHardModeFlagEv
0x0000007100d6eed4,aoc2::setIsLastPlayHardMode,60,_ZN5uking4aoc227storeIsLastPlayHardModeFlagEv
0x0000007100d6ef10,aoc2::setIsLastPlayHardModeToFalse,76,_ZN5uking4aoc227resetIsLastPlayHardModeFlagEv
0x0000007100d6ef5c,aoc2::isTestOfStrengthDungeon,396,_ZNK5uking4aoc222isTestOfStrengthShrineEv
0x0000007100d6f0e8,aoc2::calc,20,
0x0000007100d6f0e8,aoc2::calc,20,_ZN5uking4aoc24calcEv
0x0000007100d6f0fc,aoc2::rankUpEnemy,7780,_ZN5uking4aoc211rankUpEnemyERKN4sead14SafeStringBaseIcEERKN4ksys3map6ObjectEPPKc
0x0000007100d70f60,sub_7100D70F60,48,_ZN4sead9Delegate1IN5uking4aoc2EPN4ksys3gdt7Manager10ResetEventEE6invokeES7_
0x0000007100d70f90,sub_7100D70F90,92,_ZNK4sead9Delegate1IN5uking4aoc2EPN4ksys3gdt7Manager10ResetEventEE5cloneEPNS_4HeapE
@ -74264,7 +74264,7 @@
0x0000007100dd0a6c,GameDataMgr::setCurrentRupeeFlagName,12,
0x0000007100dd0a78,GameDataMgr::requestResetAllToInitial,16,
0x0000007100dd0a88,GameDataMgr::getAndSetShrineQuestAndKassFlags,3628,
0x0000007100dd18b4,GameDataMgr::setBoolByKey,164,
0x0000007100dd18b4,GameDataMgr::setBoolByKey,164,_ZN4ksys3gdt7Manager7setBoolEbRKN4sead14SafeStringBaseIcEE
0x0000007100dd1958,GameDataMgr::getAndSetShrineQuestFlagsAndKassDlc2,1416,
0x0000007100dd1ee0,GameDataMgr::setStringInArrayByKey,184,
0x0000007100dd1f98,GameDataMgr::setBoolByKeyB,164,

Can't render this file because it is too large.

View File

@ -37,6 +37,11 @@ aoc2::aoc2()
setHardModeChange(HardModeChange::ApplyDamageMultiplier, true);
}
void aoc2::setHardModeEnabledFlag(ksys::gdt::Manager::ResetEvent*) {
ksys::gdt::Manager::instance()->setBool(true, mAoCHardModeEnabledFlag);
mGdtResetSlot.release();
}
void aoc2::initFlagHandles(ksys::gdt::Manager::ReinitEvent*) {
auto* gdm = ksys::gdt::Manager::instance();
mHardModeHighScoreFlag = gdm->getS32Handle(sData.flag_name_HardMode_HighScore);
@ -114,6 +119,42 @@ bool aoc2::shouldApplyMasterModeDamageMultiplier(const ksys::act::ActorConstData
return false;
}
void aoc2::buffDamage(s32& damage) {
damage = damage * 1.5f;
if (damage == 1) {
damage = 2;
}
}
void aoc2::loadIsLastPlayHardModeFlag() {
bool value{};
ksys::gdt::Manager::instance()->getBool(mIsLastPlayHardModeFlag, &value);
const bool x = value;
#ifdef MATCHING_HACK_NX_CLANG
asm("");
#endif
setFlag(Flag::EnableHardMode, x);
}
void aoc2::loadIsHardModeFlag() {
bool value{};
ksys::gdt::Manager::instance()->getBool(mAoCHardModeEnabledFlag, &value);
const bool x = value;
#ifdef MATCHING_HACK_NX_CLANG
asm("");
#endif
setFlag(Flag::EnableHardMode, x);
}
void aoc2::storeIsLastPlayHardModeFlag() {
ksys::gdt::Manager::instance()->setBool(checkFlag(Flag::EnableHardMode),
mIsLastPlayHardModeFlag);
}
void aoc2::resetIsLastPlayHardModeFlag() {
ksys::gdt::Manager::instance()->setBool(false, "IsLastPlayHardMode");
}
bool aoc2::isTestOfStrengthShrine() const {
if (mMapType != "CDungeon")
return false;
@ -129,6 +170,11 @@ bool aoc2::isTestOfStrengthShrine() const {
return false;
}
void aoc2::calc() {
volatile u32 unused = 0;
static_cast<void>(unused);
}
bool aoc2::rankUpEnemy(const sead::SafeString& actor_name, const ksys::map::Object& obj,
const char** new_name) {
if (obj.getFlags().isOn(ksys::map::Object::Flag::HasUniqueName) ||
@ -267,11 +313,4 @@ bool aoc2::rankUpEnemy(const sead::SafeString& actor_name, const ksys::map::Obje
return true;
}
void aoc2::buffDamage(s32& damage) {
damage = damage * 1.5f;
if (damage == 1) {
damage = 2;
}
}
} // namespace uking

View File

@ -29,6 +29,14 @@ public:
void init(sead::Heap* heap);
void loadIsLastPlayHardModeFlag();
void loadIsHardModeFlag();
void storeIsLastPlayHardModeFlag();
void resetIsLastPlayHardModeFlag();
void calc();
void nerfHpRestore(f32* hp) const;
void nerfHpRestore(s32* hp) const;
void modifyEnemyNoticeDuration(f32* value) const;
@ -44,7 +52,10 @@ public:
void setHardModeChange(HardModeChange flag, bool on) { mHardModeChanges.changeBit(flag, on); }
bool isHardModeChangeOn(HardModeChange flag) const { return mHardModeChanges.isOnBit(flag); }
void setFlag(Flag flag, bool on) { mFlags.changeBit(flag, on); }
bool checkFlag(Flag flag) const { return mFlags.isOnBit(flag); }
f32 getMultiplier(MultiplierType type) const { return mMultipliers[type]; }
private: