diff --git a/Preload/Reloc.event b/Preload/Reloc.event index 62c83a113..2bcb0121f 100644 --- a/Preload/Reloc.event +++ b/Preload/Reloc.event @@ -154,4 +154,16 @@ gpExternalPrePhaseHook: WORD 0 gpExternalPrePhaseHealCalc: WORD 0 gpExternalSkillListGenerator: WORD 0 +gpExternalHpGetters: WORD 0 +gpExternalPowGetters: WORD 0 +gpExternalMagGetters: WORD 0 +gpExternalSklGetters: WORD 0 +gpExternalSpdGetters: WORD 0 +gpExternalLckGetters: WORD 0 +gpExternalDefGetters: WORD 0 +gpExternalResGetters: WORD 0 +gpExternalMovGetters: WORD 0 +gpExternalConGetters: WORD 0 +gpExternalAidGetters: WORD 0 + KERNEL_RELOC_END: diff --git a/Wizardry/Core/UnitStatusGetter/source/AidGetter.c b/Wizardry/Core/UnitStatusGetter/source/AidGetter.c index eb92f27b7..7df1489ab 100644 --- a/Wizardry/Core/UnitStatusGetter/source/AidGetter.c +++ b/Wizardry/Core/UnitStatusGetter/source/AidGetter.c @@ -18,5 +18,8 @@ int _GetUnitAid(struct Unit *unit) for (it = gpAidGetters; *it; it++) status = (*it)(status, unit); + if (gpExternalAidGetters) + status = gpExternalAidGetters(status, unit); + return status; } diff --git a/Wizardry/Core/UnitStatusGetter/source/DefGetter.c b/Wizardry/Core/UnitStatusGetter/source/DefGetter.c index b6ad7b93d..57084ad32 100644 --- a/Wizardry/Core/UnitStatusGetter/source/DefGetter.c +++ b/Wizardry/Core/UnitStatusGetter/source/DefGetter.c @@ -11,6 +11,9 @@ int _GetUnitDefense(struct Unit *unit) for (it = gpDefGetters; *it; it++) status = (*it)(status, unit); + if (gpExternalDefGetters) + status = gpExternalDefGetters(status, unit); + return status; } diff --git a/Wizardry/Core/UnitStatusGetter/source/HpGetter.c b/Wizardry/Core/UnitStatusGetter/source/HpGetter.c index 393cdc382..00873928e 100644 --- a/Wizardry/Core/UnitStatusGetter/source/HpGetter.c +++ b/Wizardry/Core/UnitStatusGetter/source/HpGetter.c @@ -11,6 +11,9 @@ int _GetUnitMaxHp(struct Unit *unit) for (it = gpHpGetters; *it; it++) status = (*it)(status, unit); + if (gpExternalHpGetters) + status = gpExternalHpGetters(status, unit); + return status; } diff --git a/Wizardry/Core/UnitStatusGetter/source/LckGetter.c b/Wizardry/Core/UnitStatusGetter/source/LckGetter.c index 57e4e247c..fccfc40dd 100644 --- a/Wizardry/Core/UnitStatusGetter/source/LckGetter.c +++ b/Wizardry/Core/UnitStatusGetter/source/LckGetter.c @@ -11,6 +11,9 @@ int _GetUnitLuck(struct Unit *unit) for (it = gpLckGetters; *it; it++) status = (*it)(status, unit); + if (gpExternalLckGetters) + status = gpExternalLckGetters(status, unit); + return status; } diff --git a/Wizardry/Core/UnitStatusGetter/source/MagGetter.c b/Wizardry/Core/UnitStatusGetter/source/MagGetter.c index 8cd92663d..a198f29dc 100644 --- a/Wizardry/Core/UnitStatusGetter/source/MagGetter.c +++ b/Wizardry/Core/UnitStatusGetter/source/MagGetter.c @@ -12,6 +12,9 @@ int _GetUnitMagic(struct Unit *unit) for (it = gpMagGetters; *it; it++) status = (*it)(status, unit); + if (gpExternalMagGetters) + status = gpExternalMagGetters(status, unit); + return status; } diff --git a/Wizardry/Core/UnitStatusGetter/source/MovGetter.c b/Wizardry/Core/UnitStatusGetter/source/MovGetter.c index 9813f96d8..799426e56 100644 --- a/Wizardry/Core/UnitStatusGetter/source/MovGetter.c +++ b/Wizardry/Core/UnitStatusGetter/source/MovGetter.c @@ -12,6 +12,9 @@ int _GetUnitMov(struct Unit *unit) for (it = gpMovGetters; *it; it++) status = (*it)(status, unit); + if (gpExternalMovGetters) + status = gpExternalMovGetters(status, unit); + /* Some special effects */ if (gpDebuffInfos[GetUnitStatusIndex(unit)].cannot_move) status = 0; diff --git a/Wizardry/Core/UnitStatusGetter/source/PowGetter.c b/Wizardry/Core/UnitStatusGetter/source/PowGetter.c index 1c85d30ed..160ef7c4c 100644 --- a/Wizardry/Core/UnitStatusGetter/source/PowGetter.c +++ b/Wizardry/Core/UnitStatusGetter/source/PowGetter.c @@ -11,6 +11,9 @@ int _GetUnitPower(struct Unit *unit) for (it = gpPowGetters; *it; it++) status = (*it)(status, unit); + if (gpExternalPowGetters) + status = gpExternalPowGetters(status, unit); + return status; } diff --git a/Wizardry/Core/UnitStatusGetter/source/ResGetter.c b/Wizardry/Core/UnitStatusGetter/source/ResGetter.c index ba37eb66e..f82a7ab5c 100644 --- a/Wizardry/Core/UnitStatusGetter/source/ResGetter.c +++ b/Wizardry/Core/UnitStatusGetter/source/ResGetter.c @@ -11,6 +11,9 @@ int _GetUnitResistance(struct Unit *unit) for (it = gpResGetters; *it; it++) status = (*it)(status, unit); + if (gpExternalResGetters) + status = gpExternalResGetters(status, unit); + return status; } diff --git a/Wizardry/Core/UnitStatusGetter/source/SklGetter.c b/Wizardry/Core/UnitStatusGetter/source/SklGetter.c index 7ce067c05..a091c7466 100644 --- a/Wizardry/Core/UnitStatusGetter/source/SklGetter.c +++ b/Wizardry/Core/UnitStatusGetter/source/SklGetter.c @@ -14,6 +14,9 @@ int _GetUnitSkill(struct Unit *unit) for (it = gpSklGetters; *it; it++) status = (*it)(status, unit); + if (gpExternalSklGetters) + status = gpExternalSklGetters(status, unit); + return status; } diff --git a/Wizardry/Core/UnitStatusGetter/source/SpdGetter.c b/Wizardry/Core/UnitStatusGetter/source/SpdGetter.c index 1117e5d23..a2a0f092b 100644 --- a/Wizardry/Core/UnitStatusGetter/source/SpdGetter.c +++ b/Wizardry/Core/UnitStatusGetter/source/SpdGetter.c @@ -14,6 +14,9 @@ int _GetUnitSpeed(struct Unit *unit) for (it = gpSpdGetters; *it; it++) status = (*it)(status, unit); + if (gpExternalSpdGetters) + status = gpExternalSpdGetters(status, unit); + return status; } diff --git a/include/status-getter.h b/include/status-getter.h index d6ecc4337..f68152dc4 100644 --- a/include/status-getter.h +++ b/include/status-getter.h @@ -16,6 +16,18 @@ extern StatusGetterFunc_t const *const gpMovGetters; extern StatusGetterFunc_t const *const gpConGetters; extern StatusGetterFunc_t const *const gpAidGetters; +extern StatusGetterFunc_t const gpExternalHpGetters; +extern StatusGetterFunc_t const gpExternalPowGetters; +extern StatusGetterFunc_t const gpExternalMagGetters; +extern StatusGetterFunc_t const gpExternalSklGetters; +extern StatusGetterFunc_t const gpExternalSpdGetters; +extern StatusGetterFunc_t const gpExternalLckGetters; +extern StatusGetterFunc_t const gpExternalDefGetters; +extern StatusGetterFunc_t const gpExternalResGetters; +extern StatusGetterFunc_t const gpExternalMovGetters; +extern StatusGetterFunc_t const gpExternalConGetters; +extern StatusGetterFunc_t const gpExternalAidGetters; + int HpMaxGetter(struct Unit *unit); int PowGetter(struct Unit *unit); int MagGetter(struct Unit *unit);