Created
May 26, 2020 04:23
-
-
Save faustofjunqueira/4b26d5f66c399a7c84ae30c376383636 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* TheoSystem AntCheat | |
* Sistema de prevencao a alteracao do stats, feats e skill do arquivo .2da | |
* Fausto Ferreira Junqueira | |
* 01/08/2012 | |
* Configurado para check em level 1 | |
* File Name :theo_an_stats | |
*/ | |
int Anticheat_GetBaseScoreSTR(int iRace) { | |
if (iRace == RACIAL_TYPE_HALFORC) { | |
return 10; | |
} | |
if (iRace == RACIAL_TYPE_GNOME || iRace == RACIAL_TYPE_HALFLING) { | |
return 6; | |
} | |
return 8; | |
} | |
int Anticheat_GetBaseScoreDEX(int iRace) { | |
if (iRace == RACIAL_TYPE_ELF || iRace == RACIAL_TYPE_HALFELF ) { | |
return 10; | |
} | |
return 8; | |
} | |
int Anticheat_GetBaseScoreCON(int iRace) { | |
if (iRace == RACIAL_TYPE_ELF) { | |
return 6; | |
} else if (iRace == RACIAL_TYPE_GNOME || iRace == RACIAL_TYPE_DWARF) { | |
return 10; | |
} | |
return 8; | |
} | |
int Anticheat_GetBaseScoreWIS(int iRace) { | |
return 8; | |
} | |
int Anticheat_GetBaseScoreINT(int iRace) { | |
if (iRace == RACIAL_TYPE_HALFORC) { | |
return 6; | |
} | |
return 8; | |
} | |
int Anticheat_GetBaseScoreCHA(int iRace) { | |
if (iRace == RACIAL_TYPE_DWARF || iRace == RACIAL_TYPE_HALFORC) { | |
return 6; | |
} | |
return 8; | |
} | |
// Returns the amount of point remained. If returns -1, means that the user are invalid | |
int Anticheat_SpentPointAbilityScore(int iPointsRemain, int iAbilityScore, int iIteration=0) { | |
if (iPointsRemain == -1) { | |
return -1; | |
} | |
if(iAbilityScore == 0) { | |
return iPointsRemain; | |
} else if(iPointsRemain > 0) { | |
if (iIteration < 6) { | |
return Anticheat_SpentPointAbilityScore(iPointsRemain-1, iAbilityScore-1, iIteration+1); | |
} else if (iIteration < 8) { | |
return Anticheat_SpentPointAbilityScore(iPointsRemain-2, iAbilityScore-1, iIteration+1); | |
} else if (iIteration < 10) { | |
return Anticheat_SpentPointAbilityScore(iPointsRemain-3, iAbilityScore-1, iIteration+1); | |
} | |
} | |
return -1; | |
} | |
int Anticheat_CheckAbilityScore(object oPC) { | |
int iPointsRemain = 30; // Default by NWN | |
int iRace = GetRacialType(oPC); | |
int iLevel = GetHitDice(oPC); | |
int iSTR = GetAbilityScore(oPC, ABILITY_STRENGTH) - Anticheat_GetBaseScoreSTR(iRace); | |
int iDEX = GetAbilityScore(oPC, ABILITY_DEXTERITY) - Anticheat_GetBaseScoreDEX(iRace); | |
int iCON = GetAbilityScore(oPC, ABILITY_CONSTITUTION) - Anticheat_GetBaseScoreCON(iRace); | |
int iINT = GetAbilityScore(oPC, ABILITY_INTELLIGENCE) - Anticheat_GetBaseScoreINT(iRace); | |
int iWIS = GetAbilityScore(oPC, ABILITY_WISDOM) - Anticheat_GetBaseScoreWIS(iRace); | |
int iCHA = GetAbilityScore(oPC, ABILITY_CHARISMA) - Anticheat_GetBaseScoreCHA(iRace); | |
iPointsRemain = Anticheat_SpentPointAbilityScore(iPointsRemain, iSTR); | |
iPointsRemain = Anticheat_SpentPointAbilityScore(iPointsRemain, iDEX); | |
iPointsRemain = Anticheat_SpentPointAbilityScore(iPointsRemain, iCON); | |
iPointsRemain = Anticheat_SpentPointAbilityScore(iPointsRemain, iINT); | |
iPointsRemain = Anticheat_SpentPointAbilityScore(iPointsRemain, iWIS); | |
iPointsRemain = Anticheat_SpentPointAbilityScore(iPointsRemain, iCHA); | |
// Must use all points | |
return iPointsRemain == 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment