Further file organization
Further file organization
This commit is contained in:
191
nwn/nwnprc/trunk/include/prc_inc_stunfist.nss
Normal file
191
nwn/nwnprc/trunk/include/prc_inc_stunfist.nss
Normal file
@@ -0,0 +1,191 @@
|
||||
/////////////////////////////////////////////////////////////////
|
||||
// notes:
|
||||
// "normal" stunning fist uses are what is normally given, not taking into account the PrC
|
||||
// "extra" stunning fist uses are what uses that come from PrC classes, they can be converted into "normal" uses and dont do anything by themselves
|
||||
// this is to work around the hardcoded limit of the "normal" stunning fist uses
|
||||
|
||||
// Try to expend a number of stunning fist uses, returns true if succesfull
|
||||
int ExpendStunfistUses(object oPC, int nUses);
|
||||
|
||||
// Reset extra stunning fist uses to the extra uses/day a character has (use on rest)
|
||||
void ResetExtraStunfistUses(object oPC);
|
||||
|
||||
// Get remaining "normal" stunning fist uses
|
||||
int GetNormalRemainingStunfistUses(object oPC);
|
||||
|
||||
// Get remaining "extra" stunning fist uses
|
||||
int GetExtraRemainingStunfistUses(object oPC);
|
||||
|
||||
// Get total remaining stunning fist uses
|
||||
int GetTotalRemainingStunfistUses(object oPC);
|
||||
|
||||
// Get amount of "normal" stunning fist uses/day a character has
|
||||
int GetNormalStunfistUsesPerDay(object oPC);
|
||||
|
||||
// Get amount of "extra" stunning fist uses/day a character has
|
||||
int GetExtraStunfistUsesPerDay(object oPC);
|
||||
|
||||
// Get total amount of stunning fist uses/day a character has
|
||||
int GetTotalStunFistUsesPerDay(object oPC);
|
||||
|
||||
// Set remaining "normal" stunning fist uses
|
||||
void SetNormalRemainingStunfistUses(object oPC, int nUses);
|
||||
|
||||
// Set remaining "extra" stunning fist uses
|
||||
void SetExtraRemainingStunfistUses(object oPC, int nUses);
|
||||
|
||||
// Convert "extra" stunning fist uses to "normal" (BW) stunning fist uses
|
||||
void ConvertStunFistUses(object oPC);
|
||||
|
||||
//================================
|
||||
|
||||
// Minimalist includes
|
||||
|
||||
#include "prc_feat_const"
|
||||
#include "prc_class_const"
|
||||
#include "inc_item_props"
|
||||
#include "prc_ipfeat_const"
|
||||
//#include "prc_alterations"
|
||||
|
||||
// Try to expend a number of stunning fist uses, returns true if succesfull
|
||||
int ExpendStunfistUses(object oPC, int nUses)
|
||||
{
|
||||
if (GetTotalRemainingStunfistUses(oPC) < nUses)
|
||||
{
|
||||
SendMessageToPC(oPC, "You don't have enough uses for this feat!");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
ConvertStunFistUses(oPC);
|
||||
|
||||
while (nUses)
|
||||
{
|
||||
nUses--;
|
||||
DecrementRemainingFeatUses(oPC, FEAT_STUNNING_FIST);
|
||||
ConvertStunFistUses(oPC);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// Reset extra stunning fist uses to the extra uses/day a character has (use on rest)
|
||||
void ResetExtraStunfistUses(object oPC)
|
||||
{
|
||||
object oSkin = GetPCSkin(oPC);
|
||||
int nUses = GetExtraStunfistUsesPerDay(oPC);
|
||||
|
||||
if (nUses && !GetLocalInt(oPC, "PRCExtraStunningMessage"))
|
||||
{
|
||||
SetLocalInt(oPC, "PRCExtraStunningMessage", TRUE);
|
||||
DelayCommand(3.001f, SendMessageToPC(oPC, "You gained extra stunning fist uses per day, use the feat 'PrC Extra Stunning'"));
|
||||
DelayCommand(3.002f, SendMessageToPC(oPC, "to convert those uses into normal stunning fist uses"));
|
||||
}
|
||||
|
||||
SetExtraRemainingStunfistUses(oPC, nUses);
|
||||
}
|
||||
|
||||
void ConvertStunFistUses(object oPC)
|
||||
{
|
||||
while (GetNormalRemainingStunfistUses(oPC) < GetNormalStunfistUsesPerDay(oPC) && GetHasFeat(FEAT_PRC_EXTRA_STUNNING, oPC))
|
||||
{
|
||||
IncrementRemainingFeatUses(oPC, FEAT_STUNNING_FIST);
|
||||
DecrementRemainingFeatUses(oPC, FEAT_PRC_EXTRA_STUNNING);
|
||||
}
|
||||
}
|
||||
|
||||
// Get remaining "normal" stunning fist uses
|
||||
int GetNormalRemainingStunfistUses(object oPC)
|
||||
{
|
||||
int nUses = 0;
|
||||
while (GetHasFeat(FEAT_STUNNING_FIST, oPC))
|
||||
{
|
||||
nUses++;
|
||||
DecrementRemainingFeatUses(oPC, FEAT_STUNNING_FIST);
|
||||
}
|
||||
|
||||
SetNormalRemainingStunfistUses(oPC, nUses);
|
||||
return nUses;
|
||||
}
|
||||
|
||||
// Get remaining "extra" stunning fist uses
|
||||
int GetExtraRemainingStunfistUses(object oPC)
|
||||
{
|
||||
int nUses = 0;
|
||||
while (GetHasFeat(FEAT_PRC_EXTRA_STUNNING, oPC))
|
||||
{
|
||||
nUses++;
|
||||
DecrementRemainingFeatUses(oPC, FEAT_PRC_EXTRA_STUNNING);
|
||||
}
|
||||
|
||||
SetExtraRemainingStunfistUses(oPC, nUses);
|
||||
|
||||
return nUses;
|
||||
}
|
||||
|
||||
// Get total remaining stunning fist uses
|
||||
int GetTotalRemainingStunfistUses(object oPC)
|
||||
{
|
||||
return GetNormalRemainingStunfistUses(oPC) + GetExtraRemainingStunfistUses(oPC);
|
||||
}
|
||||
|
||||
// Get amount of "normal" stunning fist uses/day a character has
|
||||
int GetNormalStunfistUsesPerDay(object oPC)
|
||||
{
|
||||
int nUses = GetNormalRemainingStunfistUses(oPC);
|
||||
int nMaxUses = nUses;
|
||||
while (nMaxUses == GetNormalRemainingStunfistUses(oPC))
|
||||
{
|
||||
IncrementRemainingFeatUses(oPC, FEAT_STUNNING_FIST);
|
||||
nMaxUses++;
|
||||
}
|
||||
nMaxUses--;
|
||||
SetNormalRemainingStunfistUses(oPC, nUses);
|
||||
return nMaxUses;
|
||||
}
|
||||
|
||||
// Get amount of "extra" stunning fist uses/day a character has
|
||||
int GetExtraStunfistUsesPerDay(object oPC)
|
||||
{
|
||||
int nUses = 0;
|
||||
|
||||
// classes/effects which give extra stunning fist uses/day should be added here
|
||||
nUses += GetLevelByClass(CLASS_TYPE_ENLIGHTENEDFIST, oPC);
|
||||
nUses += GetLevelByClass(CLASS_TYPE_SHADOW_SUN_NINJA, oPC);
|
||||
nUses += GetLocalInt(oPC, "LiPengStun");
|
||||
|
||||
return nUses;
|
||||
}
|
||||
|
||||
// Get total amount of stunning fist uses/day a character has
|
||||
int GetTotalStunFistUsesPerDay(object oPC)
|
||||
{
|
||||
return GetNormalStunfistUsesPerDay(oPC) + GetExtraStunfistUsesPerDay(oPC);
|
||||
}
|
||||
|
||||
// Set remaining "normal" stunning fist uses
|
||||
void SetNormalRemainingStunfistUses(object oPC, int nUses)
|
||||
{
|
||||
while (GetHasFeat(FEAT_STUNNING_FIST, oPC))
|
||||
{
|
||||
DecrementRemainingFeatUses(oPC, FEAT_STUNNING_FIST);
|
||||
}
|
||||
|
||||
while (nUses--)
|
||||
{
|
||||
IncrementRemainingFeatUses(oPC, FEAT_STUNNING_FIST);
|
||||
}
|
||||
}
|
||||
|
||||
// Set remaining "extra" stunning fist uses
|
||||
void SetExtraRemainingStunfistUses(object oPC, int nUses)
|
||||
{
|
||||
while (GetHasFeat(FEAT_PRC_EXTRA_STUNNING, oPC))
|
||||
{
|
||||
DecrementRemainingFeatUses(oPC, FEAT_PRC_EXTRA_STUNNING);
|
||||
}
|
||||
|
||||
while (nUses--)
|
||||
{
|
||||
IncrementRemainingFeatUses(oPC, FEAT_PRC_EXTRA_STUNNING);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user