aoc2: Implement more functions

This commit is contained in:
Léo Lam
2020-11-07 19:06:25 +01:00
parent 3f11fdb6d2
commit 3bd9d7a599
3 changed files with 65 additions and 15 deletions
+46 -7
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
+11
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: