//::///////////////////////////////////////////////
//:: GiveXPRewardFromTableToParty
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Verteilt EP an die Gruppe von oMember gegen
eine Herausforderung mit HG iCR.
Benutzt dazu die Funktion GetXPFromTable.
*/
//:://////////////////////////////////////////////
//:: Created By: Tingil
//:: Created On: July 18, 2004
//:://////////////////////////////////////////////
void GiveXPRewardFromTableToParty(object oMember, int iCR, int iPercentage = 10)
{
object oArea = GetArea(oMember);
// Mitglieder und Henchmen in oMembers Faction zaehlen
int i, iMembers = 0, iHenchmen = 0;
object oHen;
object oPC = GetFirstFactionMember(oMember);
while (oPC != OBJECT_INVALID)
{
if (GetArea(oPC) == oArea)
{
iMembers++;
i = 1;
oHen = GetHenchman(oPC);
while (oHen != OBJECT_INVALID)
{
iHenchmen++;
i++;
oHen = GetHenchman(oPC, i);
}
}
oPC = GetNextFactionMember(oMember);
}
// EP pro Mitglied errechnen
int iXP = GetXPFromTable(GetFactionAverageLevel(oMember), iCR) /
(iMembers + iHenchmen);
iXP = iXP + ((iHenchmen * (iXP / 2)) / iMembers);
// EP verteilen
oPC = GetFirstFactionMember(oMember);
while (oPC != OBJECT_INVALID)
{
if (GetArea(oPC) == oArea)
{
GiveXPToCreature(oPC, iXP);
}
oPC = GetNextFactionMember(oMember);
}
}
//::///////////////////////////////////////////////
//:: GetXPFromTable
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Gibt die EP fuer eine Gruppe der Stufe iLevel
und einer Herausforderung des HG iCR zurueck.
*/
//:://////////////////////////////////////////////
//:: Created By: Tingil
//:: Created On: July 18, 2004
//:://////////////////////////////////////////////
int GetXPFromTable(int iLevel, int iCR, int iPercentage = 10)
{
if (iLevel < 1)
{
iLevel = 1;
}
else if (iLevel > 40)
{
iLevel = 40;
}
if (iCR < 0)
{
iCR = 0;
}
else if (iCR > 40)
{
iCR = 40;
}
if (iPercentage < 0)
{
iPercentage = 0;
}
else if (iPercentage > 200)
{
iPercentage = 200;
}
// EP auslesen
float fXP = StringToFloat(
Get2DAString("xptable.2DA", "C" + IntToString(iCR), iLevel - 1));
// Die in xptable.2DA gespeicherten Werte sind bereits 1/10 der
// eigentlichen Werte.
return FloatToInt(fXP * (IntToFloat(iPercentage) / 10));
}