// ============================================================================ // File Name: bpc_on_damaged // Emergency LLM interruption for combat events // ============================================================================ #include "nwnx_redis" void main() { object oNPC = OBJECT_SELF; object oAttacker = GetLastDamager(); if (!GetIsObjectValid(oAttacker)) oAttacker = GetLastAttacker(); if (!GetIsObjectValid(oAttacker)) return; int nStrategy = GetLocalInt(oNPC, "LLM_STRATEGY"); if (nStrategy == 3) return; // Maestros don't think in combat if (GetLocalInt(oNPC, "LLM_PAIN_THROTTLE") == TRUE) return; SetLocalInt(oNPC, "LLM_PAIN_THROTTLE", TRUE); DelayCommand(12.0f, DeleteLocalInt(oNPC, "LLM_PAIN_THROTTLE")); json jData = JsonObject(); jData = JsonObjectSet(jData, "npc_tag", JsonString(GetTag(oNPC))); jData = JsonObjectSet(jData, "llm_strategy", JsonInt(nStrategy)); jData = JsonObjectSet(jData, "target_player", JsonString(GetName(oAttacker))); string sPainMsg = "[SYSTEM CRITICAL] You were just physically attacked and damaged by " + GetName(oAttacker) + "!! Make a tactical decision immediately!"; jData = JsonObjectSet(jData, "message", JsonString(sPainMsg)); jData = JsonObjectSet(jData, "persona", JsonString(GetLocalString(oNPC, "LLM_PERSONA"))); NWNX_Redis_RPush("nwn_to_llm", JsonDump(jData)); }