ff_u_pc_lvl_mult
Prevent multiclassing to 3 classes.
Prevent multiclassing to 3 classes if one is not the favored class
Variables
ENABLE__FF_U_PC_LVL_MULTI: (int) (opt-in) Set to “Y” on module to enable unit.
Source code
// @code
#include "ff_i_core"
const string ENABLE__FF_U_PC_LVL_MULTI = "ENABLE__FF_U_PC_LVL_MULTI";
const string MESSAGE = "To have 3 classes, one must be your favored class.";
// -----------------------------------------------------------------------------
void OnClientLevel(object oPC)
{
if (!GetIsPC(oPC))
return;
int nRace = GetRacialType(oPC);
int nLevel1 = GetClassByPosition(1, oPC);
int nLevel2 = GetClassByPosition(2, oPC);
if (nLevel2 == CLASS_TYPE_INVALID)
return;
int nLevel3 = GetClassByPosition(3, oPC);
if (nLevel3 == CLASS_TYPE_INVALID)
return;
if (nRace == RACIAL_TYPE_HUMAN)
return;
if (nRace == RACIAL_TYPE_HALFELF)
return;
if (nRace == RACIAL_TYPE_ELF && (nLevel1 == CLASS_TYPE_WIZARD || nLevel2 == CLASS_TYPE_WIZARD || nLevel3 == CLASS_TYPE_WIZARD))
return;
if (nRace == RACIAL_TYPE_DWARF && (nLevel1 == CLASS_TYPE_FIGHTER || nLevel2 == CLASS_TYPE_FIGHTER || nLevel3 == CLASS_TYPE_FIGHTER))
return;
if (nRace == RACIAL_TYPE_HALFLING && (nLevel1 == CLASS_TYPE_ROGUE || nLevel2 == CLASS_TYPE_ROGUE || nLevel3 == CLASS_TYPE_ROGUE))
return;
if (nRace == RACIAL_TYPE_GNOME && (nLevel1 == CLASS_TYPE_WIZARD || nLevel2 == CLASS_TYPE_WIZARD || nLevel3 == CLASS_TYPE_WIZARD))
return;
if (nRace == RACIAL_TYPE_HALFORC && (nLevel1 == CLASS_TYPE_BARBARIAN || nLevel2 == CLASS_TYPE_BARBARIAN || nLevel3 == CLASS_TYPE_BARBARIAN))
return;
FloatingTextStringOnCreature(MESSAGE, oPC, FALSE, TRUE);
SendMessageToPC(oPC, MESSAGE);
CancelLevelUp(oPC, MESSAGE);
}
// -----------------------------------------------------------------------------
void main()
{
if (!GetModuleFlag(ENABLE__FF_U_PC_LVL_MULTI, FALSE))
return;
string sEvent = GetCurrentEvent();
if (sEvent == ON_REGISTER)
SubscribeToEvent(ON_AFTER_PC_LEVELUP, __FILE__);
else if (sEvent == ON_AFTER_PC_LEVELUP)
DelayCommand(0.2f, OnClientLevel(GetPCLevellingUp()));
}