Updated for NWN:EE 37-14
Updated for NWN:EE 37-14 & PRC8. Full compile. Updated release archive.
This commit is contained in:
parent
07d59dd689
commit
6e61873395
1807
_content/hak/prc8_ancordia/69_hench_lib.nss
Normal file
1807
_content/hak/prc8_ancordia/69_hench_lib.nss
Normal file
File diff suppressed because it is too large
Load Diff
240
_content/hak/prc8_ancordia/69_leadership.nss
Normal file
240
_content/hak/prc8_ancordia/69_leadership.nss
Normal file
@ -0,0 +1,240 @@
|
||||
/*69_leadership
|
||||
Leadership Library Functions
|
||||
Created by: 69MEH69
|
||||
Created on: Sep2004
|
||||
*/
|
||||
//void main(){}
|
||||
|
||||
//Level of PC when Leadership begins
|
||||
const int LEADERSHIP_LEVEL = 6;
|
||||
|
||||
//Returns Loyalty modifier
|
||||
int GetHenchLoyalty(object oHench, object oPC);
|
||||
//Returns TRUE if PC has Leadership (must be level 6 or higher)
|
||||
int GetHasLeadership(object oPC);
|
||||
//Returns Leadership Score
|
||||
int GetLeadershipScore(object oPC);
|
||||
//Sets maximum number of henchmen based on Leadership
|
||||
void SetMaxHenchmen69(object oPC);
|
||||
//Returns maximum number of henchmen based on Leadership
|
||||
int GetMaxHenchmen69(object oPC);
|
||||
|
||||
int GetHenchLoyalty(object oHench, object oPC)
|
||||
{
|
||||
int TEST_MODE = GetLocalInt(GetModule(), "TEST_MODE");
|
||||
int nCharisma = GetAbilityModifier(ABILITY_CHARISMA, oPC);
|
||||
//Initial roll + charisma
|
||||
int nLoyalty = d6(3) + nCharisma;
|
||||
string sLoyalty, sHenchdeath;
|
||||
//Test
|
||||
if(TEST_MODE == 1)
|
||||
{
|
||||
sLoyalty = IntToString(nLoyalty);
|
||||
SendMessageToPC(oPC, "Initial nLoyalty = " + sLoyalty);
|
||||
}
|
||||
int nHenchAlign = GetAlignmentGoodEvil(oHench);
|
||||
int nPCAlign = GetAlignmentGoodEvil(oPC);
|
||||
int nHenchDeath = GetLocalInt(oPC, "Hench_Death");
|
||||
//Adjustment for alignments
|
||||
if(nHenchAlign == nPCAlign)
|
||||
{
|
||||
++nLoyalty;
|
||||
}
|
||||
else
|
||||
{
|
||||
--nLoyalty;
|
||||
}
|
||||
//Test
|
||||
if(TEST_MODE == 1)
|
||||
{
|
||||
sLoyalty = IntToString(nLoyalty);
|
||||
SendMessageToPC(oPC, "nLoyalty - Alignment = " + sLoyalty);
|
||||
}
|
||||
//Adjustment for number of dead henchmen
|
||||
nLoyalty = nLoyalty - nHenchDeath;
|
||||
//Test
|
||||
if(TEST_MODE == 1)
|
||||
{
|
||||
sHenchdeath =IntToString(nHenchDeath);
|
||||
sLoyalty = IntToString(nLoyalty);
|
||||
SendMessageToPC(oPC, "Henchmen deaths = " + sHenchdeath);
|
||||
SendMessageToPC(oPC, "nLoyalty - nHenchDeath = " + sLoyalty);
|
||||
SendMessageToPC(oPC, "Loyalty score = " + sLoyalty);
|
||||
}
|
||||
return nLoyalty;
|
||||
}
|
||||
|
||||
int GetHasLeadership(object oPC)
|
||||
{
|
||||
int TEST_MODE = GetLocalInt(GetModule(), "TEST_MODE");
|
||||
int nLeadership = GetHitDice(oPC);
|
||||
if(nLeadership >= LEADERSHIP_LEVEL)
|
||||
{
|
||||
//Test
|
||||
if(TEST_MODE == 1)
|
||||
{
|
||||
SendMessageToPC(oPC, "Leadership is True");
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Test
|
||||
if(TEST_MODE == 1)
|
||||
{
|
||||
SendMessageToPC(oPC, "Leadership is False");
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
int GetLeadershipScore(object oPC)
|
||||
{
|
||||
int TEST_MODE = GetLocalInt(GetModule(), "TEST_MODE");
|
||||
int nPCLevel = GetHitDice(oPC);
|
||||
int nCharisma = GetAbilityModifier(ABILITY_CHARISMA, oPC);
|
||||
int nPersuade = GetSkillRank(SKILL_PERSUADE, oPC);
|
||||
int nLeadershipScore = nPCLevel + nCharisma;
|
||||
//Test
|
||||
if(TEST_MODE == 1)
|
||||
{
|
||||
string sCharisma = IntToString(nCharisma);
|
||||
SendMessageToPC(oPC, "Charisma score = " + sCharisma);
|
||||
string sPersuade = IntToString(nPersuade);
|
||||
SendMessageToPC(oPC, "Persuade score = " + sPersuade);
|
||||
string sLeadershipScore = IntToString(nLeadershipScore);
|
||||
SendMessageToPC(oPC, "Leadership score = " + sLeadershipScore);
|
||||
}
|
||||
return nLeadershipScore;
|
||||
}
|
||||
|
||||
void SetMaxHenchmen69(object oPC)
|
||||
{
|
||||
int nLeadershipScore = GetLeadershipScore(oPC);
|
||||
|
||||
//Primary Code
|
||||
if(GetHasLeadership(oPC) == FALSE)
|
||||
{
|
||||
SetLocalInt(oPC, "MaxHenchmen", 0);
|
||||
}
|
||||
else if(nLeadershipScore >= 25)
|
||||
{
|
||||
SetLocalInt(oPC, "MaxHenchmen", 10);
|
||||
}
|
||||
else if(nLeadershipScore >= 20)
|
||||
{
|
||||
SetLocalInt(oPC, "MaxHenchmen", 5);
|
||||
}
|
||||
else if(nLeadershipScore >= 15)
|
||||
{
|
||||
SetLocalInt(oPC, "MaxHenchmen", 4);
|
||||
}
|
||||
else if(nLeadershipScore >= 10)
|
||||
{
|
||||
SetLocalInt(oPC, "MaxHenchmen", 3);
|
||||
}
|
||||
else if(nLeadershipScore >= 8)
|
||||
{
|
||||
SetLocalInt(oPC, "MaxHenchmen", 2);
|
||||
}
|
||||
else if(nLeadershipScore >= 2)
|
||||
{
|
||||
SetLocalInt(oPC, "MaxHenchmen", 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetLocalInt(oPC, "MaxHenchmen", 0);
|
||||
}
|
||||
//End Primary Code
|
||||
|
||||
//Secondary Code
|
||||
//Uncomment following code to use this form
|
||||
//Comment out the Primary Code
|
||||
/*
|
||||
if(GetHasLeadership(oPC) == FALSE)
|
||||
{
|
||||
SetLocalInt(oPC, "MaxHenchmen", 0);
|
||||
return;
|
||||
}
|
||||
switch(nLeadershipScore)
|
||||
{
|
||||
case 0: case -1: case -2: case -3:
|
||||
SetLocalInt(oPC, "MaxHenchmen", 0);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
SetLocalInt(oPC, "MaxHenchmen", 1);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
SetLocalInt(oPC, "MaxHenchmen", 1);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
SetLocalInt(oPC, "MaxHenchmen", 1);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
SetLocalInt(oPC, "MaxHenchmen", 2);
|
||||
break;
|
||||
|
||||
case 5:
|
||||
SetLocalInt(oPC, "MaxHenchmen", 2);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
SetLocalInt(oPC, "MaxHenchmen", 2);
|
||||
break;
|
||||
|
||||
case 7:
|
||||
SetLocalInt(oPC, "MaxHenchmen", 3);
|
||||
break;
|
||||
|
||||
case 8:
|
||||
SetLocalInt(oPC, "MaxHenchmen", 3);
|
||||
break;
|
||||
|
||||
case 9:
|
||||
SetLocalInt(oPC, "MaxHenchmen", 3);
|
||||
break;
|
||||
|
||||
case 10:
|
||||
SetLocalInt(oPC, "MaxHenchmen", 4);
|
||||
break;
|
||||
|
||||
case 11:
|
||||
SetLocalInt(oPC, "MaxHenchmen", 4);
|
||||
break;
|
||||
|
||||
case 12:
|
||||
SetLocalInt(oPC, "MaxHenchmen", 4);
|
||||
break;
|
||||
|
||||
case 13: case 14: case 15:
|
||||
SetLocalInt(oPC, "MaxHenchmen", 5);
|
||||
break;
|
||||
|
||||
case 16: case 17: case 18:
|
||||
SetLocalInt(oPC, "MaxHenchmen", 6);
|
||||
break;
|
||||
|
||||
default:
|
||||
SetLocalInt(oPC, "MaxHenchmen", 7);
|
||||
break;
|
||||
}*/
|
||||
//End Secondary Code
|
||||
|
||||
}
|
||||
|
||||
int GetMaxHenchmen69(object oPC)
|
||||
{
|
||||
int TEST_MODE = GetLocalInt(GetModule(), "TEST_MODE");
|
||||
int nMaxHenchmen = GetLocalInt(oPC, "MaxHenchmen");
|
||||
//Test
|
||||
if(TEST_MODE == 1)
|
||||
{
|
||||
string sMaxHenchmen = IntToString(nMaxHenchmen);
|
||||
SendMessageToPC(oPC, "Maximum allowable henchmen = " + sMaxHenchmen);
|
||||
}
|
||||
return nMaxHenchmen;
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
693
_content/hak/prc8_ancordia/x4_inc_functions.nss
Normal file
693
_content/hak/prc8_ancordia/x4_inc_functions.nss
Normal file
@ -0,0 +1,693 @@
|
||||
const int VFX_EXCLAIM_YELLOW = 673;
|
||||
const int VFX_QUESTION_YELLOW = 674;
|
||||
const int VFX_EXCLAIM_SILVER = 675;
|
||||
const int VFX_EXCLAIM_BLUE = 676;
|
||||
const int VFX_EXCLAIM_GREEN = 677;
|
||||
const int VFX_EXCLAIM_PURPLE = 678;
|
||||
const int VFX_EXCLAIM_RED = 679;
|
||||
const int VFX_QUESTION_SILVER = 680;
|
||||
const int VFX_QUESTION_BLUE = 681;
|
||||
const int VFX_QUESTION_GREEN = 682;
|
||||
const int VFX_QUESTION_PURPLE = 683;
|
||||
const int VFX_QUESTION_RED = 684;
|
||||
|
||||
const string COLORTOKEN = " ##################$%&'()*+,-./0123456789:;;==?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[[]^_`abcdefghijklmnopqrstuvwxyz{|}~~?<3F>?ƒ????ˆ???????<3F>???????˜???????¥¥¢£¤¼Œ§¨Šª<C5A0><C2AA><EFBFBD>Ž¯°¹²³´¾œ¡¸šº<C5A1>Ÿ½ž¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþþ";
|
||||
|
||||
|
||||
// Sends a message to every PC in the game
|
||||
void GlobalMessage(string sText);
|
||||
|
||||
// Returns a properly color-coded sText string based on specified RGB values
|
||||
string ColorString(string sText, int nRed=255, int nGreen=255, int nBlue=255);
|
||||
|
||||
// Get current time in a single integer
|
||||
int CurrentDateTime();
|
||||
|
||||
// Set time from a single integer
|
||||
void SetDateTime(int nDate);
|
||||
|
||||
// Returns the experience required to reach given character level
|
||||
int GetLevelXP(int nLevel);
|
||||
|
||||
// Checks if the creature has its weapon of choice equipped
|
||||
// Returns 0 if no weapon equipped is the WoC,
|
||||
// 1 if only the main weapon is the WoC,
|
||||
// 2 if only the offhand weapon is the WoC,
|
||||
// 3 if both weapons are the WoC
|
||||
int GetHasWeaponOfChoiceEquipped(object oPC);
|
||||
|
||||
//Applies a permanent effect without an icon (not tested for linked effects)
|
||||
void ApplyEffectToPCAndHideIcon(effect eEffect, object oPC);
|
||||
|
||||
// Retrieves the last chat message of the PC that was registered with the
|
||||
// RegisterNextPCChatMessage function.
|
||||
string GetLastPCChatMessage(object oPC);
|
||||
|
||||
// Causes the next chat message of the PC to be recorded and later retrieved
|
||||
// using the GetLastPCChatMessage function.
|
||||
void RegisterNextPCChatMessage(object oPC);
|
||||
|
||||
// Returns TRUE if the module is being played in a singleplayer mode or
|
||||
// FALSE if the module is being played in a multiplayer mode.
|
||||
// It will still return FALSE if in multiplayer mode, even if there is
|
||||
// only one player in the game.
|
||||
int GetIsSinglePlayer();
|
||||
|
||||
// A function to create a name for a character-specific database variable.
|
||||
// Example: for a variable with common part of the name "GoldBalance" and
|
||||
// for a PC named "Harold Smith" played by a player with login "Xevo",
|
||||
// a string generated will be: "PC_xevo_harold smith_GoldBalance".
|
||||
// Note: there will be no spaces in the string if it's used as a name of
|
||||
// a variable or a database.
|
||||
string DBCharacterSpecificVariable(object oPlayer, string sName);
|
||||
|
||||
// A function to create a name for an account-specific database variable.
|
||||
// Example: for a variable with a common part of the name "GoldBalance" and
|
||||
// for a PC played by a player with a login "Xevo", a string
|
||||
// generated will be: "ACCOUNT_xevo_GoldBalance".
|
||||
// Note: there will be no spaces in the string if it's used as a name of
|
||||
// a variable or a database.
|
||||
string DBAccountSpecificVariable(object oPlayer, string sName);
|
||||
|
||||
// A function to create a name for a character-specific database.
|
||||
// Example: for a PC named "Harold Smith" played by a player with
|
||||
// a login "Xevo", a string generated will be: "PC_xevo_Harold Smith".
|
||||
// Note: there will be no spaces in the string if it's used as a name of
|
||||
// a variable or a database.
|
||||
string CharacterDB(object oPlayer);
|
||||
|
||||
// A function to create a name for an account-specific database.
|
||||
// Example: for a PC played by a player with a login "Xevo",
|
||||
// a string generated will be: "PC_xevo".
|
||||
// Note: there will be no spaces in the string if it's used as a name of
|
||||
// a variable or a database.
|
||||
string AccountDB(object oPlayer);
|
||||
|
||||
// Enforce that the PC will have at least a given number of levels in every
|
||||
// class by the time he/she reaches the maximum level allowed in a module.
|
||||
// If a PC gains a level that would make the above impossible,
|
||||
// the level-up is cancelled.
|
||||
// Use at the beginning of an OnLevelUp script.
|
||||
// - oPC: the levelling player
|
||||
// - nMinLevel: the minimum number of levels in every class
|
||||
// - nPossibleLevel: maximum character level allowed in a module
|
||||
void EnforceAllowedLevel(object oPC, int nMinLevel, int nPossibleLevel = 40);
|
||||
|
||||
// Allows (and forces) PC to reassign a given number of levels.
|
||||
// - oPC: the player
|
||||
// - nLevels: the number of levels to reassign
|
||||
void ReassignLevel(object oPC, int nLevels);
|
||||
|
||||
|
||||
// Functions are implemented below.
|
||||
|
||||
void GlobalMessage(string sText)
|
||||
{
|
||||
object oPC = GetFirstPC();
|
||||
while (GetIsObjectValid(oPC))
|
||||
{
|
||||
SendMessageToPC(oPC, sText);
|
||||
oPC = GetNextPC();
|
||||
}
|
||||
}
|
||||
|
||||
string ColorString(string sText, int nRed=255, int nGreen=255, int nBlue=255)
|
||||
{
|
||||
return "<c" + GetSubString(COLORTOKEN, nRed, 1) + GetSubString(COLORTOKEN, nGreen, 1) + GetSubString(COLORTOKEN, nBlue, 1) + ">" + sText + "</c>";
|
||||
}
|
||||
|
||||
int CurrentDateTime()
|
||||
{
|
||||
int iYear = GetCalendarYear();
|
||||
int iMonth = GetCalendarMonth();
|
||||
int iDay = GetCalendarDay();
|
||||
int iHour = GetTimeHour();
|
||||
int iDate = (iYear * 8064) + ((iMonth - 1) * 672) + ((iDay -1) * 24) + iHour;
|
||||
|
||||
return iDate;
|
||||
}
|
||||
|
||||
void SetDateTime(int nDate)
|
||||
{
|
||||
int iYear = nDate / 8064;
|
||||
int iMonth = ((nDate % 8064) / 672) + 1;
|
||||
int iDay = ((nDate % 672) / 24) + 1;
|
||||
int iHour = nDate % 24;
|
||||
|
||||
SetCalendar(iYear, iMonth, iDay);
|
||||
SetTime(iHour, GetTimeMinute(), GetTimeSecond(), GetTimeMillisecond());
|
||||
}
|
||||
|
||||
void EnforceAllowedLevel(object oPC, int nMinLevel, int nPossibleLevel = 40)
|
||||
{
|
||||
//Declare variables
|
||||
int nClass2 = CLASS_TYPE_INVALID;
|
||||
int nClass3 = CLASS_TYPE_INVALID;
|
||||
int nClass1Levels;
|
||||
int nClass2Levels;
|
||||
int nClass3Levels;
|
||||
int nMinLevelC2;
|
||||
int nMinLevelC3;
|
||||
int nHD = GetHitDice(oPC);
|
||||
|
||||
//Store PC's classes as variables (in case one of them is a Harper or a Knight; for this reason, only slots 2 and 3 are needed)
|
||||
nClass2 = GetClassByPosition(2, oPC);
|
||||
nClass3 = GetClassByPosition(3, oPC);
|
||||
|
||||
//Store levels in each of the PC's class as variables
|
||||
nClass1Levels = GetLevelByPosition(1, oPC);
|
||||
nClass2Levels = GetLevelByPosition(2, oPC);
|
||||
nClass3Levels = GetLevelByPosition(3, oPC);
|
||||
|
||||
//A special case - if nMinLevel is greater than 5, allow PCs to have only 5 levels of a Knight or/and a Harper class anyway
|
||||
nMinLevelC2 = nMinLevel;
|
||||
nMinLevelC3 = nMinLevel;
|
||||
if (nMinLevel > 5)
|
||||
{
|
||||
if (nClass2 == CLASS_TYPE_HARPER || nClass2 == CLASS_TYPE_PURPLE_DRAGON_KNIGHT) nMinLevelC2 = 5;
|
||||
if (nClass3 == CLASS_TYPE_HARPER || nClass3 == CLASS_TYPE_PURPLE_DRAGON_KNIGHT) nMinLevelC3 = 5;
|
||||
|
||||
}
|
||||
|
||||
//Accept the level-up if the PC doesn't multiclass and hasn't crossed a limit of the maximum possible level in a module
|
||||
if (nClass2 == CLASS_TYPE_INVALID)
|
||||
{
|
||||
if (nHD <= nPossibleLevel) return;
|
||||
}
|
||||
|
||||
//Determine if the PC is allowed this level-up if the PC has 2 or 3 classes
|
||||
else
|
||||
{
|
||||
if (nClass1Levels < nMinLevel) nClass1Levels = nMinLevel;
|
||||
if (nClass2Levels < nMinLevel && nClass2 != CLASS_TYPE_INVALID) nClass2Levels = nMinLevelC2;
|
||||
if (nClass3Levels < nMinLevel && nClass3 != CLASS_TYPE_INVALID) nClass3Levels = nMinLevelC3;
|
||||
|
||||
if (nClass1Levels + nClass2Levels + nClass3Levels <= nPossibleLevel) return;
|
||||
}
|
||||
|
||||
//Cancel the level-up if need be
|
||||
int nXP = GetXP(oPC);
|
||||
int nExpMultiplier = nHD-1;
|
||||
SetXP(oPC, (nExpMultiplier*nExpMultiplier-nExpMultiplier)*500);
|
||||
DelayCommand(3.0, SetXP(oPC, nXP));
|
||||
FloatingTextStringOnCreature("You can't advance in this class anymore!", oPC, TRUE);
|
||||
|
||||
}
|
||||
|
||||
void ReassignLevel(object oPC, int nLevels)
|
||||
{
|
||||
int nXP = GetXP(oPC);
|
||||
int nExpMultiplier = GetHitDice(oPC)-nLevels;
|
||||
SetXP(oPC, (nExpMultiplier*nExpMultiplier-nExpMultiplier)*500);
|
||||
DelayCommand(3.0, SetXP(oPC, nXP));
|
||||
}
|
||||
|
||||
int GetHasWeaponOfChoiceEquipped(object oPC)
|
||||
{
|
||||
int nRight;
|
||||
int nLeft;
|
||||
//Club
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_CLUB, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_CLUB )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_CLUB, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_CLUB )
|
||||
nLeft = TRUE;
|
||||
//Bastard
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_BASTARDSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_BASTARDSWORD )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_BASTARDSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_BASTARDSWORD )
|
||||
nLeft = TRUE;
|
||||
//Battle axe
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_BATTLEAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_BATTLEAXE )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_BATTLEAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_BATTLEAXE )
|
||||
nLeft = TRUE;
|
||||
//Dagger
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_DAGGER, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_DAGGER )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_DAGGER, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_DAGGER )
|
||||
nLeft = TRUE;
|
||||
//Dire mace
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_DIREMACE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_DIREMACE )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_DIREMACE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_DIREMACE )
|
||||
nLeft = TRUE;
|
||||
//Double axe
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_DOUBLEAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_DOUBLEAXE )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_DOUBLEAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_DOUBLEAXE )
|
||||
nLeft = TRUE;
|
||||
//Dwarven waraxe
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_DWAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_DWARVENWARAXE )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_DWAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_DWARVENWARAXE )
|
||||
nLeft = TRUE;
|
||||
//Great axe
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_GREATAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_GREATAXE )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_GREATAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_GREATAXE )
|
||||
nLeft = TRUE;
|
||||
//Greatsword
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_GREATSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_GREATSWORD )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_GREATSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_GREATSWORD )
|
||||
nLeft = TRUE;
|
||||
//Halberd
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_HALBERD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_HALBERD )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_HALBERD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_HALBERD )
|
||||
nLeft = TRUE;
|
||||
//Hand axe
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_HANDAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_HANDAXE )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_HANDAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_HANDAXE )
|
||||
nLeft = TRUE;
|
||||
//Heavy flail
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_HEAVYFLAIL, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_HEAVYFLAIL )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_HEAVYFLAIL, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_HEAVYFLAIL )
|
||||
nLeft = TRUE;
|
||||
//Kama
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_KAMA, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_KAMA )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_KAMA, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_KAMA )
|
||||
nLeft = TRUE;
|
||||
//Katana
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_KATANA, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_KATANA )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_KATANA, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_KATANA )
|
||||
nLeft = TRUE;
|
||||
//Kukri
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_KUKRI, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_KUKRI )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_KUKRI, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_KUKRI )
|
||||
nLeft = TRUE;
|
||||
//Light flail
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTFLAIL, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_LIGHTFLAIL )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTFLAIL, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_LIGHTFLAIL )
|
||||
nLeft = TRUE;
|
||||
//Light hammer
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTHAMMER, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_LIGHTHAMMER )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTHAMMER, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_LIGHTHAMMER )
|
||||
nLeft = TRUE;
|
||||
//Light mace
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTMACE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_LIGHTMACE )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTMACE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_LIGHTMACE )
|
||||
nLeft = TRUE;
|
||||
//Longsword
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LONGSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_LONGSWORD )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LONGSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_LONGSWORD )
|
||||
nLeft = TRUE;
|
||||
//Morningstar
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_MORNINGSTAR, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_MORNINGSTAR )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_MORNINGSTAR, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_MORNINGSTAR )
|
||||
nLeft = TRUE;
|
||||
//Quarterstaff
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_QUARTERSTAFF, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_QUARTERSTAFF )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_QUARTERSTAFF, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_QUARTERSTAFF )
|
||||
nLeft = TRUE;
|
||||
//Rapier
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_RAPIER, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_RAPIER )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_RAPIER, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_RAPIER )
|
||||
nLeft = TRUE;
|
||||
//Scimitar
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SCIMITAR, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_SCIMITAR )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SCIMITAR, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_SCIMITAR )
|
||||
nLeft = TRUE;
|
||||
//Scythe
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SCYTHE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_SCYTHE )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SCYTHE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_SCYTHE )
|
||||
nLeft = TRUE;
|
||||
//Spear
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SHORTSPEAR, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_SHORTSPEAR )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SHORTSPEAR, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_SHORTSPEAR )
|
||||
nLeft = TRUE;
|
||||
//Shortsword
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SHORTSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_SHORTSWORD )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SHORTSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_SHORTSWORD )
|
||||
nLeft = TRUE;
|
||||
//Sickle
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SICKLE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_SICKLE )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SICKLE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_SICKLE )
|
||||
nLeft = TRUE;
|
||||
//Trident
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_TRIDENT, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_TRIDENT )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_TRIDENT, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_TRIDENT )
|
||||
nLeft = TRUE;
|
||||
//Two-bladed sword
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_TWOBLADEDSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_TWOBLADEDSWORD )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_TWOBLADEDSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_TWOBLADEDSWORD )
|
||||
nLeft = TRUE;
|
||||
//Warhammer
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_WARHAMMER, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_WARHAMMER )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_WARHAMMER, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_WARHAMMER )
|
||||
nLeft = TRUE;
|
||||
//Whip
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_WHIP, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_WHIP )
|
||||
nRight = TRUE;
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_WHIP, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_WHIP )
|
||||
nLeft = TRUE;
|
||||
|
||||
if (!nLeft && !nRight) return 0;
|
||||
if (!nLeft && nRight) return 1;
|
||||
if (nLeft && !nRight) return 2;
|
||||
return 3;
|
||||
}
|
||||
|
||||
void ApplyWeaponFury(object oPC)
|
||||
{
|
||||
// Check for the pseudo-heartbeat no longer being needed.
|
||||
if ( GetLocalInt(oPC, "wm_weapfury") != 1 )
|
||||
return;
|
||||
|
||||
int nLevel = GetLevelByClass(CLASS_TYPE_WEAPON_MASTER, oPC);
|
||||
int nDuration = nLevel / 2; //1 round per 2 caster levels
|
||||
int nAbBonus = nLevel / 5; //+2AB at level 11, +3 at 15, +4 at 20, +5 at 25, +6 at 30
|
||||
int nDamageBonus = nLevel / 5;
|
||||
//Enhance the bonuses for simple weapons
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_CLUB) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_DAGGER) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTMACE) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_MORNINGSTAR) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_QUARTERSTAFF) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_SICKLE) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_SHORTSPEAR))
|
||||
{
|
||||
nAbBonus += 1;
|
||||
nDamageBonus += 2;
|
||||
}
|
||||
int nDamageType;
|
||||
|
||||
//Club
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_CLUB, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_CLUB )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_CLUB, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_CLUB )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Bastard
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_BASTARDSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_BASTARDSWORD )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_BASTARDSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_BASTARDSWORD )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Battle axe
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_BATTLEAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_BATTLEAXE )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_BATTLEAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_BATTLEAXE )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Dagger
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_DAGGER, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_DAGGER )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_DAGGER, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_DAGGER )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Dire mace
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_DIREMACE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_DIREMACE )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_DIREMACE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_DIREMACE )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Double axe
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_DOUBLEAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_DOUBLEAXE )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_DOUBLEAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_DOUBLEAXE )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Dwarven waraxe
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_DWAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_DWARVENWARAXE )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_DWAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_DWARVENWARAXE )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Great axe
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_GREATAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_GREATAXE )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_GREATAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_GREATAXE )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Greatsword
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_GREATSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_GREATSWORD )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_GREATSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_GREATSWORD )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Halberd
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_HALBERD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_HALBERD )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_HALBERD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_HALBERD )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Hand axe
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_HANDAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_HANDAXE )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_HANDAXE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_HANDAXE )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Heavy flail
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_HEAVYFLAIL, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_HEAVYFLAIL )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_HEAVYFLAIL, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_HEAVYFLAIL )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Kama
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_KAMA, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_KAMA )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_KAMA, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_KAMA )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Katana
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_KATANA, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_KATANA )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_KATANA, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_KATANA )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Kukri
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_KUKRI, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_KUKRI )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_KUKRI, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_KUKRI )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Light flail
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTFLAIL, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_LIGHTFLAIL )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTFLAIL, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_LIGHTFLAIL )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Light hammer
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTHAMMER, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_LIGHTHAMMER )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTHAMMER, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_LIGHTHAMMER )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Light mace
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTMACE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_LIGHTMACE )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTMACE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_LIGHTMACE )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Longsword
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LONGSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_LONGSWORD )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LONGSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_LONGSWORD )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Morningstar
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_MORNINGSTAR, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_MORNINGSTAR )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_MORNINGSTAR, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_MORNINGSTAR )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Quarterstaff
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_QUARTERSTAFF, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_QUARTERSTAFF )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_QUARTERSTAFF, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_QUARTERSTAFF )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Rapier
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_RAPIER, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_RAPIER )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_RAPIER, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_RAPIER )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Scimitar
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SCIMITAR, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_SCIMITAR )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SCIMITAR, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_SCIMITAR )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Scythe
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SCYTHE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_SCYTHE )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SCYTHE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_SCYTHE )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Spear
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SHORTSPEAR, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_SHORTSPEAR )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SHORTSPEAR, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_SHORTSPEAR )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Shortsword
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SHORTSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_SHORTSWORD )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SHORTSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_SHORTSWORD )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Sickle
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SICKLE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_SICKLE )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SICKLE, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_SICKLE )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Trident
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_TRIDENT, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_TRIDENT )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_TRIDENT, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_TRIDENT )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Two-bladed sword
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_TWOBLADEDSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_TWOBLADEDSWORD )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_TWOBLADEDSWORD, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_TWOBLADEDSWORD )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Warhammer
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_WARHAMMER, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_WARHAMMER )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_WARHAMMER, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_WARHAMMER )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
//Whip
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_WHIP, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_WHIP )
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 1);
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_WHIP, oPC) == TRUE && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) == BASE_ITEM_WHIP )
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 1);
|
||||
|
||||
//Make the bonus damage bludgeoning for bludgeoning weapons, slashing for slashing ones and piercing for piercing ones
|
||||
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_CLUB) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_DIREMACE) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_HEAVYFLAIL) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTFLAIL) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTHAMMER) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTMACE) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_MORNINGSTAR) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_QUARTERSTAFF) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_WARHAMMER))
|
||||
nDamageType = DAMAGE_TYPE_BLUDGEONING;
|
||||
|
||||
else if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_BASTARDSWORD) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_BATTLEAXE) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_DOUBLEAXE) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_DWAXE) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_GREATAXE) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_GREATSWORD) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_HALBERD) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_KAMA) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_HANDAXE) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_KATANA) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_KUKRI) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_LONGSWORD) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_SCIMITAR) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_SCYTHE) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_SHORTSWORD) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_SICKLE) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_TWOBLADEDSWORD) || GetHasFeat(FEAT_WEAPON_OF_CHOICE_WHIP))
|
||||
nDamageType = DAMAGE_TYPE_SLASHING;
|
||||
|
||||
else
|
||||
nDamageType = DAMAGE_TYPE_PIERCING;
|
||||
|
||||
if (GetLocalInt(oPC, "wm_rightcorrect") == 1)
|
||||
{
|
||||
effect eAbBonusRight = EffectAttackIncrease(nAbBonus, ATTACK_BONUS_ONHAND);
|
||||
effect eDamageBonusRight = EffectDamageIncrease(nDamageBonus, nDamageType);
|
||||
effect eRight = EffectLinkEffects(eAbBonusRight, eDamageBonusRight);
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRight, oPC, 1.0);
|
||||
}
|
||||
|
||||
if (GetLocalInt(oPC, "wm_leftcorrect") == 1)
|
||||
{
|
||||
effect eAbBonusLeft = EffectAttackIncrease(nAbBonus, ATTACK_BONUS_OFFHAND);
|
||||
effect eDamageBonusLeft = EffectDamageIncrease(nDamageBonus, nDamageType);
|
||||
effect eLeft = EffectLinkEffects(eAbBonusLeft, eDamageBonusLeft);
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLeft, oPC, 1.0);
|
||||
}
|
||||
|
||||
SetLocalInt(oPC, "wm_rightcorrect", 0);
|
||||
SetLocalInt(oPC, "wm_leftcorrect", 0);
|
||||
|
||||
// Recurse.
|
||||
DelayCommand(1.0, ApplyWeaponFury(oPC));
|
||||
}
|
||||
|
||||
string AccountDB(object oPlayer)
|
||||
{
|
||||
string sAccount = GetStringLowerCase(GetPCPlayerName(oPlayer));
|
||||
string sAccountDB = "ACCOUNT_"+sAccount;
|
||||
return sAccountDB;
|
||||
}
|
||||
|
||||
string CharacterDB(object oPlayer)
|
||||
{
|
||||
string sAccount = GetStringLowerCase(GetPCPlayerName(oPlayer));
|
||||
string sFullName = GetName(oPlayer);
|
||||
string sCharDB = "PC_"+sAccount+"_"+sFullName;
|
||||
return sCharDB;
|
||||
}
|
||||
|
||||
string DBAccountSpecificVariable(object oPlayer, string sName)
|
||||
{
|
||||
string sLogin = GetPCPlayerName(oPlayer);
|
||||
string sLoginConv = GetStringLowerCase(sLogin);
|
||||
string sVarName = "ACCOUNT_"+sLoginConv+"_"+sName;
|
||||
return sVarName;
|
||||
}
|
||||
|
||||
string DBCharacterSpecificVariable(object oPlayer, string sName)
|
||||
{
|
||||
string sLogin = GetPCPlayerName(oPlayer);
|
||||
string sFullName = GetName(oPlayer);
|
||||
string sCharacter = sLogin+"_"+sFullName;
|
||||
string sCharacterConv = GetStringLowerCase(sCharacter);
|
||||
string sVarName = "PC_"+sCharacterConv+"_"+sName;
|
||||
return sVarName;
|
||||
}
|
||||
|
||||
int GetIsSinglePlayer()
|
||||
{
|
||||
object oPC = GetFirstPC();
|
||||
if(oPC == OBJECT_INVALID) return FALSE;
|
||||
string sKey = GetPCPublicCDKey(oPC, FALSE);
|
||||
if(sKey == "") return TRUE;
|
||||
else return FALSE;
|
||||
}
|
||||
|
||||
void RegisterNextPCChatMessage(object oPC)
|
||||
{
|
||||
SetLocalInt(oPC, "X4_PC_LISTEN", TRUE);
|
||||
DeleteLocalString(oPC, "X4_CHAT_MESSAGE");
|
||||
}
|
||||
|
||||
string GetLastPCChatMessage(object oPC)
|
||||
{
|
||||
string sMessage = GetLocalString(oPC, "X4_CHAT_MESSAGE");
|
||||
return sMessage;
|
||||
}
|
||||
|
||||
void EquipItem(object oCreature, object oItem)
|
||||
{
|
||||
SetLocalInt(oItem, "X4ToEquip", TRUE);
|
||||
ExecuteScript("x4_pcequip", oCreature);
|
||||
}
|
||||
|
||||
void ApplyEffectToPCAndHideIcon(effect eEffect, object oPC)
|
||||
{
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEffect,oPC);
|
||||
eEffect = EffectLinkEffects(eEffect,EffectTurnResistanceIncrease(1));
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEffect,oPC);
|
||||
RemoveEffect(oPC,eEffect);
|
||||
}
|
||||
|
||||
int GetLevelXP(int nLevel)
|
||||
{
|
||||
int nXP;
|
||||
switch (nLevel)
|
||||
{
|
||||
case 1: nXP = 0; break;
|
||||
case 2: nXP = 1000; break;
|
||||
case 3: nXP = 3000; break;
|
||||
case 4: nXP = 6000; break;
|
||||
case 5: nXP = 10000; break;
|
||||
case 6: nXP = 15000; break;
|
||||
case 7: nXP = 21000; break;
|
||||
case 8: nXP = 28000; break;
|
||||
case 9: nXP = 36000; break;
|
||||
case 10: nXP = 45000; break;
|
||||
case 11: nXP = 55000; break;
|
||||
case 12: nXP = 66000; break;
|
||||
case 13: nXP = 78000; break;
|
||||
case 14: nXP = 91000; break;
|
||||
case 15: nXP = 105000; break;
|
||||
case 16: nXP = 120000; break;
|
||||
case 17: nXP = 136000; break;
|
||||
case 18: nXP = 153000; break;
|
||||
case 19: nXP = 171000; break;
|
||||
case 20: nXP = 190000; break;
|
||||
case 21: nXP = 210000; break;
|
||||
case 22: nXP = 231000; break;
|
||||
case 23: nXP = 253000; break;
|
||||
case 24: nXP = 276000; break;
|
||||
case 25: nXP = 300000; break;
|
||||
case 26: nXP = 325000; break;
|
||||
case 27: nXP = 351000; break;
|
||||
case 28: nXP = 378000; break;
|
||||
case 29: nXP = 406000; break;
|
||||
case 30: nXP = 435000; break;
|
||||
case 31: nXP = 465000; break;
|
||||
case 32: nXP = 496000; break;
|
||||
case 33: nXP = 528000; break;
|
||||
case 34: nXP = 561000; break;
|
||||
case 35: nXP = 595000; break;
|
||||
case 36: nXP = 630000; break;
|
||||
case 37: nXP = 666000; break;
|
||||
case 38: nXP = 703000; break;
|
||||
case 39: nXP = 741000; break;
|
||||
case 40: nXP = 780000; break;
|
||||
}
|
||||
return nXP;
|
||||
}
|
Binary file not shown.
@ -1 +1 @@
|
||||
10c09b0c5da057b636c25f45c16b061e
|
||||
0c1307d9c2cba8ad8677bd037bc88711
|
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user