forked from Jaysyn/PRC8
Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
99 lines
4.2 KiB
Plaintext
99 lines
4.2 KiB
Plaintext
//:://////////////////////////////////////////////
|
|
//:: Debug: Duplicate hide feat monitor
|
|
//:: prc_debug_hfeatm
|
|
//:://////////////////////////////////////////////
|
|
/** @file
|
|
Checks if the PC has multiple instances of the
|
|
same itempropertybonusfeat on their hide.
|
|
|
|
@author Ornedan
|
|
@date Created - 2005.9.18
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:://////////////////////////////////////////////
|
|
|
|
//:: Updated for .35 by Jaysyn 2023/03/11
|
|
|
|
#include "inc_utility"
|
|
|
|
const string SET_NAME = "PRC_DEBUG_HFeatM_IPs";
|
|
|
|
|
|
void main()
|
|
{if(DEBUG){ // This should do nothing if DEBUG is not active
|
|
object oPC = OBJECT_SELF;
|
|
object oSkin = GetPCSkin(oPC);
|
|
|
|
// If the skin has no itemproperties, nothing to do
|
|
itemproperty ip = GetFirstItemProperty(oSkin);
|
|
if(!GetIsItemPropertyValid(ip))
|
|
return;
|
|
|
|
// Create the set to store the ipfeat numbers in
|
|
if(set_exists(oPC, SET_NAME))
|
|
set_delete(oPC, SET_NAME);
|
|
set_create(oPC, SET_NAME);
|
|
|
|
// Loop over all itemproperties, looking for duplicates
|
|
int nErrorFound = FALSE;
|
|
while(GetIsItemPropertyValid(ip))
|
|
{
|
|
if(GetItemPropertyType(ip) == ITEM_PROPERTY_BONUS_FEAT)
|
|
{
|
|
int nIPFeat = GetItemPropertySubType(ip);
|
|
if(set_contains_int(oPC, SET_NAME, nIPFeat))
|
|
{
|
|
DoDebug("prc_debug_hfeatm: Duplicate bonus feat on the hide: " + IntToString(nIPFeat) + " - '" + GetStringByStrRef(StringToInt(Get2DACache("iprp_feats", "Name", nIPFeat))) + "'");
|
|
nErrorFound = TRUE;
|
|
}
|
|
else
|
|
set_add_int(oPC, SET_NAME, nIPFeat);
|
|
}
|
|
|
|
ip = GetNextItemProperty(oSkin);
|
|
}
|
|
|
|
// Cleanup
|
|
set_delete(oPC, SET_NAME);
|
|
|
|
// Request a bugreport
|
|
if(nErrorFound)
|
|
{
|
|
DoDebug("prc_debug_hfeatm: Found duplicate bonus feats on the hide of " + DebugObject2Str(oPC) + "; Build: "
|
|
+ GetStringByStrRef(StringToInt(Get2DACache("classes", "Name", GetClassByPosition(1, oPC)))) + " " + IntToString(GetLevelByPosition(1, oPC))
|
|
+ (GetClassByPosition(2, oPC) != CLASS_TYPE_INVALID ?
|
|
" / " + GetStringByStrRef(StringToInt(Get2DACache("classes", "Name", GetClassByPosition(2, oPC)))) + " " + IntToString(GetLevelByPosition(2, oPC))
|
|
: ""
|
|
)
|
|
+ (GetClassByPosition(3, oPC) != CLASS_TYPE_INVALID ?
|
|
" / " + GetStringByStrRef(StringToInt(Get2DACache("classes", "Name", GetClassByPosition(3, oPC)))) + " " + IntToString(GetLevelByPosition(3, oPC))
|
|
: ""
|
|
)
|
|
+ (GetClassByPosition(4, oPC) != CLASS_TYPE_INVALID ?
|
|
" / " + GetStringByStrRef(StringToInt(Get2DACache("classes", "Name", GetClassByPosition(4, oPC)))) + " " + IntToString(GetLevelByPosition(4, oPC))
|
|
: ""
|
|
)
|
|
+ (GetClassByPosition(5, oPC) != CLASS_TYPE_INVALID ?
|
|
" / " + GetStringByStrRef(StringToInt(Get2DACache("classes", "Name", GetClassByPosition(5, oPC)))) + " " + IntToString(GetLevelByPosition(5, oPC))
|
|
: ""
|
|
)
|
|
+ (GetClassByPosition(6, oPC) != CLASS_TYPE_INVALID ?
|
|
" / " + GetStringByStrRef(StringToInt(Get2DACache("classes", "Name", GetClassByPosition(6, oPC)))) + " " + IntToString(GetLevelByPosition(6, oPC))
|
|
: ""
|
|
)
|
|
+ (GetClassByPosition(7, oPC) != CLASS_TYPE_INVALID ?
|
|
" / " + GetStringByStrRef(StringToInt(Get2DACache("classes", "Name", GetClassByPosition(7, oPC)))) + " " + IntToString(GetLevelByPosition(7, oPC))
|
|
: ""
|
|
)
|
|
+ (GetClassByPosition(8, oPC) != CLASS_TYPE_INVALID ?
|
|
" / " + GetStringByStrRef(StringToInt(Get2DACache("classes", "Name", GetClassByPosition(8, oPC)))) + " " + IntToString(GetLevelByPosition(8, oPC))
|
|
: ""
|
|
)
|
|
);
|
|
|
|
DoDebug("A duplicate itemproperty feat has been discovered. This is a critical bug, so please report it.\n\n"
|
|
+ "The report should contain an excerpt from your log (nwn/logs/nwclientlog1.txt) that contains all lines starting with"
|
|
+ "'prc_debug_hfeatm:'."
|
|
);
|
|
}
|
|
}} |