Merge pull request 'New event fo begin casting' (#12) from Mats391/nampower:BeginCastEvent into master

Reviewed-on: https://gitea.com/avitasia/nampower/pulls/12
This commit is contained in:
avitasia
2026-01-02 23:14:26 +00:00
4 changed files with 42 additions and 0 deletions
+2
View File
@@ -1443,6 +1443,8 @@ namespace game {
AURA_CAST_ON_SELF = 560,
AURA_CAST_ON_OTHER = 561,
SPELL_BEGIN_CAST_EVENT = 562,
};
enum TypeMask {
+3
View File
@@ -1332,6 +1332,9 @@ namespace Nampower {
char SPELL_DAMAGE_EVENT_OTHER[] = "SPELL_DAMAGE_EVENT_OTHER";
addCustomEvent(game::SPELL_DAMAGE_EVENT_OTHER, SPELL_DAMAGE_EVENT_OTHER);
char SPELL_BEGIN_CAST_EVENT[] = "SPELL_BEGIN_CAST_EVENT";
addCustomEvent(game::SPELL_BEGIN_CAST_EVENT, SPELL_BEGIN_CAST_EVENT);
char DEBUFF_ADDED_SELF[] = "DEBUFF_ADDED_SELF";
addCustomEvent(game::DEBUFF_ADDED_SELF, DEBUFF_ADDED_SELF);
+19
View File
@@ -107,6 +107,21 @@ namespace Nampower {
}
}
void
TriggerSpellBeginCastEvent(uint32_t spellId, std::uint64_t guid) {
char format[] = "%d%s";
char *guidStr = new char[21]; // 2 for 0x prefix, 18 for the number, and 1 for '\0'
std::snprintf(guidStr, 21, "0x%016llX", static_cast<unsigned long long>(guid));
((int (__cdecl *)(int, char *, uint32_t, char *)) Offsets::SignalEventParam)(
game::SPELL_BEGIN_CAST_EVENT, // SPELL_BEGIN_CAST_EVENT event we are adding
format,
spellId,
guidStr);
delete[] guidStr;
}
bool Spell_C_TargetSpellHook(hadesmem::PatchDetourBase *detour,
uint32_t *player,
uint32_t *spellId,
@@ -236,6 +251,9 @@ namespace Nampower {
}
gLastCastData.startTimeMs = currentTime;
TriggerSpellBeginCastEvent(cast->spellId, cast->unitTarget);
}
void CastQueuedNonGcdSpell() {
@@ -1073,6 +1091,7 @@ namespace Nampower {
}
void SendCastHook(hadesmem::PatchDetourBase *detour, game::SpellCast *cast, char unk) {
auto const sendCast = detour->GetTrampolineT<SendCastT>();
sendCast(cast, unk);