//:://////////////////////////////////////////////////////// //:: hs_include.nss //: /* Catch-all include for missing module scripts. */ //: //:: //:://////////////////////////////////////////////////////// #include "nw_i0_plot" void RemoveXPFromParty(int nXP, object oPC, int bSplit) { object oMember; int nXPToRemove = 0; int nPartyCount = 0; // If splitting the XP, first count the party members. if (bSplit) { oMember = GetFirstFactionMember(oPC); while (oMember != OBJECT_INVALID) { nPartyCount++; oMember = GetNextFactionMember(oPC); } // Avoid division by zero; if no party members, count the PC itself. if (nPartyCount <= 0) nPartyCount = 1; nXPToRemove = nXP / nPartyCount; } else { // If not splitting, each member loses the full XP amount. nXPToRemove = nXP; } // Remove the XP from every party member. oMember = GetFirstFactionMember(oPC); while (oMember != OBJECT_INVALID) { // Subtract XP by adding a negative value. // (Note: Ensure that AddXP in your module supports negative values.) GiveXPToCreature(oMember, -nXPToRemove); oMember = GetNextFactionMember(oPC); } }