generated from Jaysyn/ModuleTemplate
49 lines
1.3 KiB
Plaintext
49 lines
1.3 KiB
Plaintext
//::////////////////////////////////////////////////////////
|
|
//:: 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);
|
|
}
|
|
}
|