ff_u_log_elc
Log ELC events.
Variables
ENABLE__FF_U_ELC_NAME: (int) (opt-in) Set to “Y” on module to enable unit.
Source code
// @code
#include "ff_i_core"
const string ENABLE__FF_U_LOG_ELC = "ENABLE__FF_U_LOG_ELC";
// -----------------------------------------------------------------------------
void OnPlayerELC()
{
int nType = NWNX_ELC_GetValidationFailureType();
int nSubType = NWNX_ELC_GetValidationFailureSubType();
string sOutput;
switch (nType)
{
case NWNX_ELC_VALIDATION_FAILURE_TYPE_NONE: sOutput += "Type None; "; break;
case NWNX_ELC_VALIDATION_FAILURE_TYPE_CHARACTER: sOutput += "Type Character; "; break;
case NWNX_ELC_VALIDATION_FAILURE_TYPE_ITEM: sOutput += "Type Item; "; break;
case NWNX_ELC_VALIDATION_FAILURE_TYPE_SKILL: sOutput += "Type Skill; "; break;
case NWNX_ELC_VALIDATION_FAILURE_TYPE_FEAT: sOutput += "Type Feat; "; break;
case NWNX_ELC_VALIDATION_FAILURE_TYPE_SPELL: sOutput += "Type Spell; "; break;
case NWNX_ELC_VALIDATION_FAILURE_TYPE_CUSTOM: sOutput += "Type Custom; "; break;
default:
}
switch (nSubType)
{
case NWNX_ELC_SUBTYPE_TOO_MANY_FEATS_THIS_LEVEL: sOutput += "Subtype: too many feats this level. FeatID = " + IntToString(NWNX_ELC_GetValidationFailureFeatID()); break;
case NWNX_ELC_SUBTYPE_FEAT_IS_NORMAL_FEAT_ONLY: sOutput += "Subtype: feat should be normal feat only."; break;
case NWNX_ELC_SUBTYPE_ABILITY_POINT_BUY_SYSTEM_CALCULATION: sOutput += "Ability: point buy system calculation."; break;
default:
sOutput += IntToString(nSubType);
break;
}
LogError("ELC validation error for player. " + sOutput);
}
// =============================================================================
void main()
{
if (!GetModuleFlag(ENABLE__FF_U_LOG_ELC, FALSE))
return;
string sEvent = GetCurrentEvent();
if (sEvent == ON_REGISTER)
SubscribeToEvent(ON_DEFAULT_PLAYER_ELC_FAILURE, __FILE__);
else if (sEvent == ON_DEFAULT_PLAYER_ELC_FAILURE)
OnPlayerELC();
}