615 lines
22 KiB
Plaintext
615 lines
22 KiB
Plaintext
// Dependencies: ats_inc_common, ats_config, ats_const_common, ats_const_skill,
|
|
// ats_const_recipe
|
|
|
|
#include "ats_text_skill"
|
|
|
|
|
|
|
|
////////////////////////////////////////////////
|
|
// ATS_GetMaxSkill //
|
|
// Returns the max skill value for a //
|
|
// particular tradeskill //
|
|
// Returns: int - the max skill of a tradeskill //
|
|
////////////////////////////////////////////////////
|
|
int ATS_GetMaxSkill
|
|
(
|
|
string sTradeSkillType // tradeskill name
|
|
)
|
|
{
|
|
int iMaxValue = 0;
|
|
|
|
if(sTradeSkillType == CSTR_SKILLNAME_MINING)
|
|
iMaxValue = CINT_MAXSKILL_MINING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_BLACKSMITHING)
|
|
iMaxValue = CINT_MAXSKILL_BLACKSMITHING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_ARMORCRAFTING)
|
|
iMaxValue = CINT_MAXSKILL_ARMORCRAFTING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_WEAPONCRAFTING)
|
|
iMaxValue = CINT_MAXSKILL_WEAPONCRAFTING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_TANNING)
|
|
iMaxValue = CINT_MAXSKILL_TANNING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_GEMCUTTING)
|
|
iMaxValue = CINT_MAXSKILL_GEMCUTTING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_JEWELCRAFTING)
|
|
iMaxValue = CINT_MAXSKILL_JEWELCRAFTING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_BOWYERING)
|
|
iMaxValue = CINT_MAXSKILL_BOWYERING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_FLETCHING)
|
|
iMaxValue = CINT_MAXSKILL_FLETCHING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_TAILOR)
|
|
iMaxValue = CINT_MAXSKILL_TAILOR;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_TINKER)
|
|
iMaxValue = CINT_MAXSKILL_TINKER;
|
|
return iMaxValue;
|
|
|
|
|
|
}
|
|
/////////////////////////////////////////////////////
|
|
// ATS_CheckMaxSkill //
|
|
// Checks to see if a passed in skill value //
|
|
// is greater than the max skill level defined//
|
|
// for a particular tradeskill //
|
|
// Returns: int(Boolean) - TRUE if skill is beyond //
|
|
// the max skill //
|
|
// FALSE otherwise //
|
|
/////////////////////////////////////////////////////
|
|
int ATS_CheckMaxSkill
|
|
(
|
|
string sTradeSkillType, // tradeskill name
|
|
int iSkillValue // skill value to check against
|
|
)
|
|
{
|
|
if(iSkillValue > ATS_GetMaxSkill(sTradeSkillType))
|
|
return TRUE;
|
|
else
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
string ATS_GetSkillTokenTag(string sTradeSkillType, int iTokenType)
|
|
{
|
|
string sTokenTag = "";
|
|
|
|
if(sTradeSkillType == CSTR_SKILLNAME_MINING)
|
|
sTokenTag = CSTR_TOKEN_TAG_MINING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_BLACKSMITHING)
|
|
sTokenTag = CSTR_TOKEN_TAG_BLACKSMITHING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_ARMORCRAFTING)
|
|
sTokenTag = CSTR_TOKEN_TAG_ARMORCRAFTING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_WEAPONCRAFTING)
|
|
sTokenTag = CSTR_TOKEN_TAG_WEAPONCRAFTING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_TANNING)
|
|
sTokenTag = CSTR_TOKEN_TAG_TANNING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_GEMCUTTING)
|
|
sTokenTag = CSTR_TOKEN_TAG_GEMCUTTING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_JEWELCRAFTING)
|
|
sTokenTag = CSTR_TOKEN_TAG_JEWELCRAFTING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_BOWYERING)
|
|
sTokenTag = CSTR_TOKEN_TAG_BOWYERING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_FLETCHING)
|
|
sTokenTag = CSTR_TOKEN_TAG_FLETCHING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_TAILOR)
|
|
sTokenTag = CSTR_TOKEN_TAG_TAILOR;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_TINKER)
|
|
sTokenTag = CSTR_TOKEN_TAG_TINKER;
|
|
else
|
|
return sTokenTag;
|
|
|
|
sTokenTag += IntToString(iTokenType);
|
|
|
|
return sTokenTag;
|
|
|
|
}
|
|
string ATS_GetTradeskillName(int iTradeskillConstant)
|
|
{
|
|
if(iTradeskillConstant == CINT_SKILL_MINING)
|
|
return CSTR_SKILLNAME_MINING;
|
|
else if(iTradeskillConstant == CINT_SKILL_BLACKSMITHING)
|
|
return CSTR_SKILLNAME_BLACKSMITHING;
|
|
else if(iTradeskillConstant == CINT_SKILL_ARMORCRAFTING)
|
|
return CSTR_SKILLNAME_ARMORCRAFTING;
|
|
else if(iTradeskillConstant == CINT_SKILL_WEAPONCRAFTING)
|
|
return CSTR_SKILLNAME_WEAPONCRAFTING;
|
|
else if(iTradeskillConstant == CINT_SKILL_TANNING)
|
|
return CSTR_SKILLNAME_TANNING;
|
|
else if(iTradeskillConstant == CINT_SKILL_GEMCUTTING)
|
|
return CSTR_SKILLNAME_GEMCUTTING;
|
|
else if(iTradeskillConstant == CINT_SKILL_JEWELCRAFTING)
|
|
return CSTR_SKILLNAME_JEWELCRAFTING;
|
|
else if(iTradeskillConstant == CINT_SKILL_BOWYERING)
|
|
return CSTR_SKILLNAME_BOWYERING;
|
|
else if(iTradeskillConstant == CINT_SKILL_FLETCHING)
|
|
return CSTR_SKILLNAME_FLETCHING;
|
|
else if(iTradeskillConstant == CINT_SKILL_TAILOR)
|
|
return CSTR_SKILLNAME_TAILOR;
|
|
else if(iTradeskillConstant == CINT_SKILL_TINKER)
|
|
return CSTR_SKILLNAME_TINKER;
|
|
else
|
|
return "";
|
|
}
|
|
int ATS_GetTradeskillConstant(string sTradeskillName)
|
|
{
|
|
if(sTradeskillName == CSTR_SKILLNAME_MINING)
|
|
return CINT_SKILL_MINING;
|
|
else if(sTradeskillName == CSTR_SKILLNAME_BLACKSMITHING)
|
|
return CINT_SKILL_BLACKSMITHING;
|
|
else if(sTradeskillName == CSTR_SKILLNAME_ARMORCRAFTING)
|
|
return CINT_SKILL_ARMORCRAFTING;
|
|
else if(sTradeskillName == CSTR_SKILLNAME_WEAPONCRAFTING)
|
|
return CINT_SKILL_WEAPONCRAFTING;
|
|
else if(sTradeskillName == CSTR_SKILLNAME_TANNING)
|
|
return CINT_SKILL_TANNING;
|
|
else if(sTradeskillName == CSTR_SKILLNAME_GEMCUTTING)
|
|
return CINT_SKILL_GEMCUTTING;
|
|
else if(sTradeskillName == CSTR_SKILLNAME_JEWELCRAFTING)
|
|
return CINT_SKILL_JEWELCRAFTING;
|
|
else if(sTradeskillName == CSTR_SKILLNAME_BOWYERING)
|
|
return CINT_SKILL_BOWYERING;
|
|
else if(sTradeskillName == CSTR_SKILLNAME_FLETCHING)
|
|
return CINT_SKILL_FLETCHING;
|
|
else if(sTradeskillName == CSTR_SKILLNAME_TAILOR)
|
|
return CINT_SKILL_TAILOR;
|
|
else if(sTradeskillName == CSTR_SKILLNAME_TINKER)
|
|
return CINT_SKILL_TINKER;
|
|
else
|
|
return 0;
|
|
}
|
|
void ATS_DestroyTokens(object oPlayer, string sTokenTag)
|
|
{
|
|
object oItem = GetFirstItemInInventory(oPlayer);
|
|
while(GetIsObjectValid(oItem) == TRUE)
|
|
{
|
|
if(GetTag(oItem) == sTokenTag)
|
|
DestroyObject(oItem);
|
|
oItem = GetNextItemInInventory(oPlayer);
|
|
}
|
|
|
|
}
|
|
|
|
void ATS_CreateSkillTokenInBox(object oPlayer, object oBox, string sResRef, int iAmount)
|
|
{
|
|
object oNewToken = CreateItemOnObject(sResRef, oPlayer, iAmount);
|
|
AssignCommand(oPlayer, ActionGiveItem(oNewToken, oBox) );
|
|
}
|
|
void ATS_CreateSkillToken(object oPlayer, string sResRef, int iAmount)
|
|
{
|
|
if(iAmount == 0)
|
|
return; ///
|
|
ATS_CreateItemOnPlayer(sResRef, oPlayer, iAmount, FALSE);
|
|
}
|
|
int ATS_GetAttributeBonus(object oPlayer, string sTradeskillName)
|
|
{
|
|
if(sTradeskillName == CSTR_SKILLNAME_WEAPONCRAFTING ||
|
|
sTradeskillName == CSTR_SKILLNAME_ARMORCRAFTING)
|
|
return GetAbilityModifier(ABILITY_STRENGTH, oPlayer);
|
|
else if(sTradeskillName == CSTR_SKILLNAME_JEWELCRAFTING)
|
|
return GetAbilityModifier(ABILITY_CHARISMA, oPlayer);
|
|
if(sTradeskillName == CSTR_SKILLNAME_BOWYERING ||
|
|
sTradeskillName == CSTR_SKILLNAME_FLETCHING)
|
|
return GetAbilityModifier(ABILITY_INTELLIGENCE, oPlayer);
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
string ATS_GetRelatedQualitySkill(string sTradeskillName)
|
|
{
|
|
if(sTradeskillName == CSTR_SKILLNAME_WEAPONCRAFTING ||
|
|
sTradeskillName == CSTR_SKILLNAME_ARMORCRAFTING)
|
|
return CSTR_SKILLNAME_BLACKSMITHING;
|
|
else if(sTradeskillName == CSTR_SKILLNAME_TANNING)
|
|
return CSTR_SKILLNAME_TANNING;
|
|
else if(sTradeskillName == CSTR_SKILLNAME_JEWELCRAFTING)
|
|
return CSTR_SKILLNAME_JEWELCRAFTING;
|
|
else if(sTradeskillName == CSTR_SKILLNAME_GEMCUTTING)
|
|
return CSTR_SKILLNAME_GEMCUTTING;
|
|
else if(sTradeskillName == CSTR_SKILLNAME_BOWYERING)
|
|
return CSTR_SKILLNAME_BOWYERING;
|
|
return "";
|
|
}
|
|
|
|
int ATS_IsValidSkill(string sTradeskillName)
|
|
{
|
|
return(ATS_GetTradeskillConstant(sTradeskillName) != 0);
|
|
}
|
|
int ATS_IsPrimarySkill(string sTradeskillName)
|
|
{
|
|
|
|
int iSkillConstant = ATS_GetTradeskillConstant(sTradeskillName);
|
|
if(iSkillConstant == 0)
|
|
return FALSE;
|
|
|
|
if(iSkillConstant == CINT_SKILL_PRIMARY_1 ||
|
|
iSkillConstant == CINT_SKILL_PRIMARY_2 ||
|
|
iSkillConstant == CINT_SKILL_PRIMARY_3 ||
|
|
iSkillConstant == CINT_SKILL_PRIMARY_4 ||
|
|
iSkillConstant == CINT_SKILL_PRIMARY_5 ||
|
|
iSkillConstant == CINT_SKILL_PRIMARY_6 ||
|
|
iSkillConstant == CINT_SKILL_PRIMARY_7 ||
|
|
iSkillConstant == CINT_SKILL_PRIMARY_8 ||
|
|
iSkillConstant == CINT_SKILL_PRIMARY_9 ||
|
|
iSkillConstant == CINT_SKILL_PRIMARY_10 )
|
|
return TRUE;
|
|
|
|
else return FALSE;
|
|
}
|
|
string ATS_GetTradeSkillFromCraftTag(string sCraftTag)
|
|
{
|
|
string sCraftType = GetSubString(sCraftTag, 6, 1);
|
|
string sTradeskillName = "";
|
|
|
|
if(sCraftType == ATS_CRAFT_TYPE_ARMOR)
|
|
sTradeskillName = CSTR_SKILLNAME_ARMORCRAFTING;
|
|
else if(sCraftType == ATS_CRAFT_TYPE_WEAPON)
|
|
sTradeskillName = CSTR_SKILLNAME_WEAPONCRAFTING;
|
|
else if(sCraftType == ATS_CRAFT_TYPE_LEATHER)
|
|
sTradeskillName = CSTR_SKILLNAME_TANNING;
|
|
else if(sCraftType == ATS_CRAFT_TYPE_GEMCUTTING)
|
|
sTradeskillName = CSTR_SKILLNAME_GEMCUTTING;
|
|
else if(sCraftType == ATS_CRAFT_TYPE_JEWELCRAFT)
|
|
sTradeskillName = CSTR_SKILLNAME_JEWELCRAFTING;
|
|
else if(sCraftType == ATS_CRAFT_TYPE_BOWYERING)
|
|
sTradeskillName = CSTR_SKILLNAME_BOWYERING;
|
|
else if(sCraftType == ATS_CRAFT_TYPE_FLETCHING)
|
|
sTradeskillName = CSTR_SKILLNAME_FLETCHING;
|
|
else if(sCraftType == ATS_CRAFT_TYPE_TAILOR)
|
|
sTradeskillName = CSTR_SKILLNAME_TAILOR;
|
|
else if(sCraftType == ATS_CRAFT_TYPE_TINKER)
|
|
sTradeskillName = CSTR_SKILLNAME_TINKER;
|
|
|
|
return sTradeskillName;
|
|
|
|
}
|
|
|
|
int ATS_GetFlatFailure(string sTradeSkillType)
|
|
{
|
|
if(sTradeSkillType == CSTR_SKILLNAME_MINING)
|
|
return CINT_FLATFAILURE_MINING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_BLACKSMITHING)
|
|
return CINT_FLATFAILURE_BLACKSMITHING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_ARMORCRAFTING)
|
|
return CINT_FLATFAILURE_ARMORCRAFTING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_WEAPONCRAFTING)
|
|
return CINT_FLATFAILURE_WEAPONCRAFTING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_TANNING)
|
|
return CINT_FLATFAILURE_TANNING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_GEMCUTTING)
|
|
return CINT_FLATFAILURE_GEMCUTTING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_JEWELCRAFTING)
|
|
return CINT_FLATFAILURE_JEWELCRAFTING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_BOWYERING)
|
|
return CINT_FLATFAILURE_BOWYERING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_FLETCHING)
|
|
return CINT_FLATFAILURE_FLETCHING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_TAILOR)
|
|
return CINT_FLATFAILURE_TAILOR;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_TINKER)
|
|
return CINT_FLATFAILURE_TINKER;
|
|
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
float ATS_GetSkillGainAdjustment(string sTradeSkillType)
|
|
{
|
|
if(sTradeSkillType == CSTR_SKILLNAME_MINING)
|
|
return CFLOAT_SKILLGAIN_ADJUST_MINING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_BLACKSMITHING)
|
|
return CFLOAT_SKILLGAIN_ADJUST_BLACKSMITHING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_ARMORCRAFTING)
|
|
return CFLOAT_SKILLGAIN_ADJUST_ARMORCRAFTING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_WEAPONCRAFTING)
|
|
return CFLOAT_SKILLGAIN_ADJUST_WEAPONCRAFTING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_TANNING)
|
|
return CFLOAT_SKILLGAIN_ADJUST_TANNING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_GEMCUTTING)
|
|
return CFLOAT_SKILLGAIN_ADJUST_GEMCUTTING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_JEWELCRAFTING)
|
|
return CFLOAT_SKILLGAIN_ADJUST_JEWELCRAFTING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_BOWYERING)
|
|
return CFLOAT_SKILLGAIN_ADJUST_BOWYERING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_FLETCHING)
|
|
return CFLOAT_SKILLGAIN_ADJUST_FLETCHING;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_TAILOR)
|
|
return CFLOAT_SKILLGAIN_ADJUST_TAILOR;
|
|
else if(sTradeSkillType == CSTR_SKILLNAME_TINKER)
|
|
return CFLOAT_SKILLGAIN_ADJUST_TINKER;
|
|
else
|
|
return 0.0f;
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////
|
|
// ATS_SetTradeskill //
|
|
// Sets the skill value of a particular //
|
|
// tradeskill of a player //
|
|
// Returns: none //
|
|
/////////////////////////////////////////////////////
|
|
void ATS_SetTradeskill
|
|
(
|
|
object oPlayer, // player to set tradeskill value of
|
|
string sTradeSkillType, // name of the tradeskill
|
|
int iSkillValue, // the skill value to set
|
|
int bRemoveJournal = TRUE, // Removes the journal and remakes it to make room
|
|
int bSuppressLog = FALSE
|
|
)
|
|
{
|
|
if(CBOOL_PERSISTENT_SKILLS_ACTIVE == TRUE)
|
|
{
|
|
object oSkillBox = GetItemPossessedBy(oPlayer, CSTR_PERSISTENT_SKILLS_BOXTAG);
|
|
if(GetIsObjectValid(oSkillBox)== FALSE)
|
|
{
|
|
string sBoxResRef = ATS_GetResRefFromTag(CSTR_PERSISTENT_SKILLS_BOXTAG);
|
|
// Create skill box
|
|
object oCreatedItem = CreateItemOnObject(sBoxResRef, oPlayer);
|
|
}
|
|
string sToken1Tag = ATS_GetSkillTokenTag(sTradeSkillType, 1);
|
|
string sToken100Tag = ATS_GetSkillTokenTag(sTradeSkillType, 100);
|
|
|
|
object oNewToken1;
|
|
object oNewToken100;
|
|
|
|
int iValue100 = iSkillValue / 100;
|
|
int iValue1 = iSkillValue - (iValue100 * 100);
|
|
|
|
object oOldToken1 = GetItemPossessedBy(oPlayer, sToken1Tag);
|
|
object oOldToken100 = GetItemPossessedBy(oPlayer, sToken100Tag);
|
|
ATS_DestroyTokens(oPlayer, sToken1Tag);
|
|
ATS_DestroyTokens(oPlayer, sToken100Tag);
|
|
|
|
// object oTradeJournal = GetItemPossessedBy(oPlayer, CSTR_TRADESKILL_JOURNAL);
|
|
if(bRemoveJournal == TRUE)
|
|
{
|
|
ATS_RemoveAllInstancesOnPlayer(oPlayer, CSTR_TRADESKILL_JOURNAL);
|
|
DelayCommand(1.0, ATS_CreateItemOnPlayer(CSTR_TRADESKILL_JOURNAL, oPlayer, 1, FALSE));
|
|
}
|
|
DelayCommand(0.3, ATS_CreateSkillToken(oPlayer, ATS_GetResRefFromTag(sToken1Tag), iValue1));
|
|
DelayCommand(0.3, ATS_CreateSkillToken(oPlayer, ATS_GetResRefFromTag(sToken100Tag), iValue100));
|
|
|
|
}
|
|
|
|
string sVarName = "ats_skillvalue_" + sTradeSkillType;
|
|
ATS_SetPersistentInt(oPlayer, sVarName, iSkillValue);
|
|
// Log Skill Gain
|
|
if(CBOOL_LOG_SKILLGAIN == TRUE && bSuppressLog == FALSE)
|
|
{
|
|
|
|
WriteTimestampedLogEntry("<ATS> Skill Change: " + GetName(oPlayer) +
|
|
"(" + GetPCPlayerName(oPlayer) + ") - " + sTradeSkillType +
|
|
": " + IntToString(iSkillValue));
|
|
}
|
|
}
|
|
|
|
/////////////////////////////////////////////////////
|
|
// ATS_RaiseTradeskill //
|
|
// Raises a player's trade skill by a certain //
|
|
// amount and displays a message //
|
|
// Returns: none //
|
|
/////////////////////////////////////////////////////
|
|
void ATS_RaiseTradeskill
|
|
(
|
|
object oPlayer, // player to raise tradeskill
|
|
string sTradeSkillType, // name of tradeskill
|
|
int iValue // amount to raise by
|
|
)
|
|
{
|
|
int iCurrentValue = ATS_GetTradeskill(oPlayer, sTradeSkillType);
|
|
int iNewValue = iCurrentValue + iValue;
|
|
// Check to make sure the skill isn't maxed out
|
|
if(ATS_CheckMaxSkill(sTradeSkillType, iNewValue) == FALSE)
|
|
{
|
|
|
|
// Sets the skill to it's new value
|
|
ATS_SetTradeskill(oPlayer, sTradeSkillType, iNewValue, TRUE, TRUE);
|
|
string sDisplayMessage = "";
|
|
if(CINT_SKILL_MESSAGE_SETTING == 2)
|
|
{
|
|
sDisplayMessage = "You have gained ";
|
|
if(iValue == 1)
|
|
sDisplayMessage = sDisplayMessage + "a skill point in ";
|
|
else
|
|
sDisplayMessage = sDisplayMessage + IntToString(iValue) + " skill points in ";
|
|
// Display skill gain message
|
|
sDisplayMessage = sDisplayMessage + sTradeSkillType + ". (" +
|
|
IntToString(ATS_GetTradeskill(oPlayer, sTradeSkillType)) + ")";
|
|
}
|
|
else if(CINT_SKILL_MESSAGE_SETTING == 1)
|
|
{
|
|
sDisplayMessage = "You have gained some knowledge in " +
|
|
sTradeSkillType + "!";
|
|
}
|
|
if(sDisplayMessage != "")
|
|
DelayCommand(0.5, SendMessageToPC(oPlayer, sDisplayMessage));
|
|
//AssignCommand(oPlayer, SpeakString(sDisplayMessage, TALKVOLUME_WHISPER));
|
|
if(CBOOL_LOG_SKILLGAIN == TRUE)
|
|
{
|
|
|
|
WriteTimestampedLogEntry("<ATS> Skill Gain: " + GetPCPlayerName(oPlayer) +
|
|
"(" + GetName(oPlayer) + ") - " + sTradeSkillType +
|
|
": " + IntToString(ATS_GetTradeskill(oPlayer, sTradeSkillType)));
|
|
}
|
|
}
|
|
}
|
|
|
|
int ATS_GetPrimarySkillConstant(int iPrimarySkillNum)
|
|
{
|
|
switch(iPrimarySkillNum)
|
|
{
|
|
case 1:
|
|
return CINT_SKILL_PRIMARY_1;
|
|
case 2:
|
|
return CINT_SKILL_PRIMARY_2;
|
|
case 3:
|
|
return CINT_SKILL_PRIMARY_3;
|
|
case 4:
|
|
return CINT_SKILL_PRIMARY_4;
|
|
case 5:
|
|
return CINT_SKILL_PRIMARY_5;
|
|
case 6:
|
|
return CINT_SKILL_PRIMARY_6;
|
|
case 7:
|
|
return CINT_SKILL_PRIMARY_7;
|
|
case 8:
|
|
return CINT_SKILL_PRIMARY_8;
|
|
case 9:
|
|
return CINT_SKILL_PRIMARY_9;
|
|
case 10:
|
|
return CINT_SKILL_PRIMARY_10;
|
|
default:
|
|
return 0;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
string ATS_GetPrimarySkillName(int iPrimarySkillNum)
|
|
{
|
|
return ATS_GetTradeskillName(ATS_GetPrimarySkillConstant(iPrimarySkillNum));
|
|
}
|
|
|
|
int ATS_GetSecondarySkillConstant(int iSecondarySkillNum)
|
|
{
|
|
switch(iSecondarySkillNum)
|
|
{
|
|
case 1:
|
|
return CINT_SKILL_SECONDARY_1;
|
|
case 2:
|
|
return CINT_SKILL_SECONDARY_2;
|
|
case 3:
|
|
return CINT_SKILL_SECONDARY_3;
|
|
case 4:
|
|
return CINT_SKILL_SECONDARY_4;
|
|
case 5:
|
|
return CINT_SKILL_SECONDARY_5;
|
|
case 6:
|
|
return CINT_SKILL_SECONDARY_6;
|
|
case 7:
|
|
return CINT_SKILL_SECONDARY_7;
|
|
case 8:
|
|
return CINT_SKILL_SECONDARY_8;
|
|
case 9:
|
|
return CINT_SKILL_SECONDARY_9;
|
|
case 10:
|
|
return CINT_SKILL_SECONDARY_10;
|
|
default:
|
|
return 0;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
string ATS_GetSecondarySkillName(int iSecondarySkillNum)
|
|
{
|
|
return ATS_GetTradeskillName(ATS_GetSecondarySkillConstant(iSecondarySkillNum));
|
|
}
|
|
|
|
int ATS_GetPrimarySkillTotal(object oPlayer)
|
|
{
|
|
int iSkillTotal = 0;
|
|
int i;
|
|
for(i = 1; i < 11; ++i)
|
|
{
|
|
iSkillTotal += ATS_GetTradeskill(oPlayer, ATS_GetPrimarySkillName(i));
|
|
}
|
|
return iSkillTotal;
|
|
}
|
|
|
|
int ATS_GetSecondarySkillTotal(object oPlayer)
|
|
{
|
|
int iSkillTotal = 0;
|
|
int i;
|
|
for(i = 1; i < 11; ++i)
|
|
{
|
|
iSkillTotal += ATS_GetTradeskill(oPlayer, ATS_GetSecondarySkillName(i));
|
|
}
|
|
return iSkillTotal;
|
|
|
|
}
|
|
|
|
int ATS_GetSkillRank(int iSkillValue)
|
|
{
|
|
if(iSkillValue >= CINT_SKILL_LEVEL_RANK_10)
|
|
return 10;
|
|
else if(iSkillValue >= CINT_SKILL_LEVEL_RANK_9)
|
|
return 9;
|
|
else if(iSkillValue >= CINT_SKILL_LEVEL_RANK_8)
|
|
return 8;
|
|
else if(iSkillValue >= CINT_SKILL_LEVEL_RANK_7)
|
|
return 7;
|
|
else if(iSkillValue >= CINT_SKILL_LEVEL_RANK_6)
|
|
return 6;
|
|
else if(iSkillValue >= CINT_SKILL_LEVEL_RANK_5)
|
|
return 5;
|
|
else if(iSkillValue >= CINT_SKILL_LEVEL_RANK_4)
|
|
return 4;
|
|
else if(iSkillValue >= CINT_SKILL_LEVEL_RANK_3)
|
|
return 3;
|
|
else if(iSkillValue >= CINT_SKILL_LEVEL_RANK_2)
|
|
return 2;
|
|
else if(iSkillValue >= CINT_SKILL_LEVEL_RANK_1)
|
|
return 1;
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
string ATS_GetSkillRankName(int iSkillValue)
|
|
{
|
|
if(iSkillValue >= CINT_SKILL_LEVEL_RANK_10)
|
|
return CSTR_SKILLRANK_10;
|
|
else if(iSkillValue >= CINT_SKILL_LEVEL_RANK_9)
|
|
return CSTR_SKILLRANK_9;
|
|
else if(iSkillValue >= CINT_SKILL_LEVEL_RANK_8)
|
|
return CSTR_SKILLRANK_8;
|
|
else if(iSkillValue >= CINT_SKILL_LEVEL_RANK_7)
|
|
return CSTR_SKILLRANK_7;
|
|
else if(iSkillValue >= CINT_SKILL_LEVEL_RANK_6)
|
|
return CSTR_SKILLRANK_6;
|
|
else if(iSkillValue >= CINT_SKILL_LEVEL_RANK_5)
|
|
return CSTR_SKILLRANK_5;
|
|
else if(iSkillValue >= CINT_SKILL_LEVEL_RANK_4)
|
|
return CSTR_SKILLRANK_4;
|
|
else if(iSkillValue >= CINT_SKILL_LEVEL_RANK_3)
|
|
return CSTR_SKILLRANK_3;
|
|
else if(iSkillValue >= CINT_SKILL_LEVEL_RANK_2)
|
|
return CSTR_SKILLRANK_2;
|
|
else if(iSkillValue >= CINT_SKILL_LEVEL_RANK_1)
|
|
return CSTR_SKILLRANK_1;
|
|
else
|
|
return CSTR_SKILLRANK_0;
|
|
}
|
|
|
|
int ATS_IsSkillValueMasterLevel(int iSkillValue)
|
|
{
|
|
return (ATS_GetSkillRank(iSkillValue) >= CINT_SKILLRANK_MASTERLEVEL);
|
|
}
|
|
|
|
string ATS_GetSkillDescription(string sSkillName)
|
|
{
|
|
if(sSkillName == CSTR_SKILLNAME_MINING)
|
|
return CSTR_DESCRIPTION_SKILL_MINING;
|
|
else if(sSkillName == CSTR_SKILLNAME_BLACKSMITHING)
|
|
return CSTR_DESCRIPTION_SKILL_BLACKSMITHING;
|
|
else if(sSkillName == CSTR_SKILLNAME_ARMORCRAFTING)
|
|
return CSTR_DESCRIPTION_SKILL_ARMORCRAFTING;
|
|
else if(sSkillName == CSTR_SKILLNAME_WEAPONCRAFTING)
|
|
return CSTR_DESCRIPTION_SKILL_WEAPONCRAFTING;
|
|
else if(sSkillName == CSTR_SKILLNAME_TANNING)
|
|
return CSTR_DESCRIPTION_SKILL_TANNING;
|
|
else if(sSkillName == CSTR_SKILLNAME_GEMCUTTING)
|
|
return CSTR_DESCRIPTION_SKILL_GEMCUTTING;
|
|
else if(sSkillName == CSTR_SKILLNAME_JEWELCRAFTING)
|
|
return CSTR_DESCRIPTION_SKILL_JEWELCRAFTING;
|
|
else if(sSkillName == CSTR_SKILLNAME_BOWYERING)
|
|
return CSTR_DESCRIPTION_SKILL_BOWYERING;
|
|
else if(sSkillName == CSTR_SKILLNAME_FLETCHING)
|
|
return CSTR_DESCRIPTION_SKILL_FLETCHING;
|
|
else if(sSkillName == CSTR_SKILLNAME_TAILOR)
|
|
return CSTR_DESCRIPTION_SKILL_TAILOR;
|
|
else if(sSkillName == CSTR_SKILLNAME_TINKER)
|
|
return CSTR_DESCRIPTION_SKILL_TINKER;
|
|
else
|
|
return "";
|
|
|
|
|
|
}
|
|
|