Script "gui_clangeddin_bonusfeats_5"
//:://////////////////////////////////////////////
//:: Created By: Clangeddin
//:: Created On: 2015
//:://////////////////////////////////////////////
int CheckRequirement(object oCHAR, int nID)
{
int nAB = StringToInt(Get2DAString("feat", "MINATTACKBONUS", nID));
int nSTR = StringToInt(Get2DAString("feat", "MINSTR", nID));
int nDEX = StringToInt(Get2DAString("feat", "MINDEX", nID));
int nCON = StringToInt(Get2DAString("feat", "MINCON", nID));
int nINT = StringToInt(Get2DAString("feat", "MININT", nID));
int nWIS = StringToInt(Get2DAString("feat", "MINWIS", nID));
int nCHA = StringToInt(Get2DAString("feat", "MINCHA", nID));
int nFT1 = StringToInt(Get2DAString("feat", "PREREQFEAT1", nID));
int nFT2 = StringToInt(Get2DAString("feat", "PREREQFEAT2", nID));
int nSK1 = StringToInt(Get2DAString("feat", "REQSKILL", nID));
int nSR1 = StringToInt(Get2DAString("feat", "ReqSkillMinRanks", nID));
int nSK2 = StringToInt(Get2DAString("feat", "REQSKILL2", nID));
int nSR2 = StringToInt(Get2DAString("feat", "ReqSkillMinRanks2", nID));
int nEPIC = StringToInt(Get2DAString("feat", "PreReqEpic", nID));
if (GetBaseAttackBonus(oCHAR) < nAB)
{
return FALSE;
}
if ((GetAbilityScore(oCHAR, ABILITY_STRENGTH, TRUE) < nSTR)||
(GetAbilityScore(oCHAR, ABILITY_DEXTERITY, TRUE) < nDEX)||
(GetAbilityScore(oCHAR, ABILITY_CONSTITUTION, TRUE) < nCON)||
(GetAbilityScore(oCHAR, ABILITY_INTELLIGENCE, TRUE) < nINT)||
(GetAbilityScore(oCHAR, ABILITY_WISDOM, TRUE) < nWIS)||
(GetAbilityScore(oCHAR, ABILITY_CHARISMA, TRUE) < nCHA))
{
return FALSE;
}
if (((nFT1 > 0)&&(GetHasFeat(nFT1, oCHAR, TRUE) == FALSE))||
((nFT2 > 0)&&(GetHasFeat(nFT2, oCHAR, TRUE) == FALSE))||
((nSR1 > 0)&&(GetSkillRank(nSK1, oCHAR, TRUE) < nSR1))||
((nSR2 > 0)&&(GetSkillRank(nSK2, oCHAR, TRUE) < nSR2))||
((nEPIC == 1)&&(GetTotalLevels(oCHAR, FALSE) < 21)))
{
return FALSE;
}
return TRUE;
}
void main(string sFEAT)
{
object oPC = GetControlledCharacter(OBJECT_SELF);
int nTOTAL = GetTotalLevels(oPC, FALSE);
int nUSED = GetLocalInt(oPC, "CLANGEDDIN_BONUS_FEATS");
int nFEAT = StringToInt(sFEAT);
int nDESCRIPTION = StringToInt(Get2DAString("feat", "DESCRIPTION", nFEAT));
SetGUIObjectHidden(oPC, "SCREEN_BONUS_FEATS", "BUTTON_CONFIRM", TRUE);
SetGUIObjectText(oPC, "SCREEN_BONUS_FEATS", "FEAT_DESCRIPTION", nDESCRIPTION, "");
SetLocalGUIVariable(oPC, "SCREEN_BONUS_FEATS", 2, IntToString(nFEAT));
if (GetHasFeat(nFEAT, oPC, TRUE) == TRUE)
{
SetGUIObjectText(oPC, "SCREEN_BONUS_FEATS", "WARNING_TEXT", -1, "You already have this feat.");
}
else if (nTOTAL - nUSED <= 0)
{
SetGUIObjectText(oPC, "SCREEN_BONUS_FEATS", "WARNING_TEXT", -1, "You ran out of bonus feats.");
}
else if (CheckRequirement(oPC, nFEAT) == TRUE)
{
SetGUIObjectText(oPC, "SCREEN_BONUS_FEATS", "WARNING_TEXT", -1, "");
SetGUIObjectHidden(oPC, "SCREEN_BONUS_FEATS", "BUTTON_CONFIRM", FALSE);
}
else
{
SetGUIObjectText(oPC, "SCREEN_BONUS_FEATS", "WARNING_TEXT", -1, "You don't meet the prerequisites for this feat.");
}
}