Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
708 lines
38 KiB
Plaintext
708 lines
38 KiB
Plaintext
/**
|
|
* @file
|
|
*
|
|
* Functions used to get weapon data.
|
|
*
|
|
* Mostly functions moved from prc_inc_combat. Used to get weapon data and weapon-related feats based on weapon type.
|
|
* Used by the combat system, weapon restriction/proficiency system and for deity weapons (eg. favoured soul)
|
|
*/
|
|
|
|
//:: Test void
|
|
//void main (){}
|
|
|
|
//////////////////////////////////////////////////
|
|
/* Constant definitions */
|
|
//////////////////////////////////////////////////
|
|
|
|
// used to select certain types of feats associated with a weapon.
|
|
const int FEAT_TYPE_FOCUS = 1;
|
|
const int FEAT_TYPE_SPECIALIZATION = 2;
|
|
const int FEAT_TYPE_EPIC_FOCUS = 3;
|
|
const int FEAT_TYPE_EPIC_SPECIALIZATION = 4;
|
|
const int FEAT_TYPE_IMPROVED_CRITICAL = 5;
|
|
const int FEAT_TYPE_OVERWHELMING_CRITICAL = 6;
|
|
const int FEAT_TYPE_DEVASTATING_CRITICAL = 7;
|
|
const int FEAT_TYPE_WEAPON_OF_CHOICE = 8;
|
|
|
|
//////////////////////////////////////////////////
|
|
/* Function prototypes */
|
|
//////////////////////////////////////////////////
|
|
|
|
/**
|
|
* Returns the appropriate weapon feat given a weapon type.
|
|
*
|
|
* Similar to GetFeatByWeaponType(), but should be a bit faster, because it does not use strings
|
|
*
|
|
* @param iWeaponType BASE_ITEM_* constant for the weapon
|
|
* @param iFeatType One of:
|
|
* FEAT_TYPE_FOCUS,
|
|
* FEAT_TYPE_EPIC_FOCUS,
|
|
* FEAT_TYPE_SPECIALIZATION,
|
|
* FEAT_TYPE_EPIC_SPECIALIZATION,
|
|
* FEAT_TYPE_OVERWHELMING_CRITICAL,
|
|
* FEAT_TYPE_DEVASTATING_CRITICAL,
|
|
* FEAT_TYPE_WEAPON_OF_CHOICE.
|
|
*
|
|
* @return Appropriate weapon feat number based on arguments.
|
|
*/
|
|
int GetFeatOfWeaponType(int iWeaponType, int iFeatType);
|
|
|
|
/**
|
|
* Returns the weapon focus feat associated with the basetype of the weapon.
|
|
*
|
|
* Creature weapon types count as unarmed for this function. Will return unarmed strike weapon focus
|
|
* feat if base item is invalid.
|
|
*
|
|
* @param iWeaponType The BASE_TYPE_* of the weapon.
|
|
* @return The weapon focus feat associated with the weapon or unarmed if either a
|
|
* creature weapon or BASE_ITEM_INVALID is passed as argument.
|
|
*/
|
|
int GetFocusFeatOfWeaponType(int iWeaponType);
|
|
|
|
/**
|
|
* Returns the weapon specialization feat associated with the basetype of the weapon
|
|
*
|
|
* Creature weapon types count as unarmed for this function. Will return unarmed strike weapon specialization
|
|
* feat if base item is invalid.
|
|
*
|
|
* @param iWeaponType The BASE_TYPE_* of the weapon.
|
|
* @return The weapon specialization feat associated with the weapon or unarmed if either a
|
|
* creature weapon or BASE_ITEM_INVALID is passed as argument.
|
|
*/
|
|
int GetSpecializationFeatOfWeaponType(int iWeaponType);
|
|
|
|
/**
|
|
* Returns the epic weapon focus feat associated with the basetype of the weapon
|
|
*
|
|
* Creature weapon types count as unarmed for this function. Will return unarmed strike epic weapon focus
|
|
* feat if base item is invalid.
|
|
*
|
|
* @param iWeaponType The BASE_TYPE_* of the weapon.
|
|
* @return The epic weapon focus feat associated with the weapon or unarmed if either a
|
|
* creature weapon or BASE_ITEM_INVALID is passed as argument.
|
|
*/
|
|
int GetEpicFocusFeatOfWeaponType(int iWeaponType);
|
|
|
|
/**
|
|
* Returns the epic weapon specialization feat associated with the basetype of the weapon
|
|
*
|
|
* Creature weapon types count as unarmed for this function. Will return unarmed strike epic weapon
|
|
* specialization feat if base item is invalid.
|
|
*
|
|
* @param iWeaponType The BASE_TYPE_* of the weapon.
|
|
* @return The epic weapon specialization feat associated with the weapon or unarmed
|
|
* if either a creature weapon or BASE_ITEM_INVALID is passed as argument.
|
|
*/
|
|
int GetEpicSpecializationFeatOfWeaponType(int iWeaponType);
|
|
|
|
/**
|
|
* Returns the improved critical feat associated with the basetype of the weapon
|
|
*
|
|
* Creature weapon types count as unarmed for this function. Will return unarmed strike improved
|
|
* critical feat if base item is invalid.
|
|
*
|
|
* @param iWeaponType The BASE_TYPE_* of the weapon.
|
|
* @return The improved critical feat associated with the weapon or unarmed
|
|
* if either a creature weapon or BASE_ITEM_INVALID is passed as argument.
|
|
*/
|
|
int GetImprovedCriticalFeatOfWeaponType(int iWeaponType);
|
|
|
|
/**
|
|
* Returns the overwhelming critical feat associated with the basetype of the weapon
|
|
*
|
|
* Creature weapon types count as unarmed for this function. Will return unarmed strike overwhelming
|
|
* critical feat if base item is invalid.
|
|
*
|
|
* @param iWeaponType The BASE_TYPE_* of the weapon.
|
|
* @return The overwhelming critical feat associated with the weapon or unarmed
|
|
* if either a creature weapon or BASE_ITEM_INVALID is passed as argument.
|
|
*/
|
|
int GetOverwhelmingCriticalFeatOfWeaponType(int iWeaponType);
|
|
|
|
/**
|
|
* Returns the devastating critical feat associated with the basetype of the weapon
|
|
*
|
|
* Creature weapon types count as unarmed for this function. Will return unarmed strike devastating
|
|
* critical feat if base item is invalid.
|
|
*
|
|
* @param iWeaponType The BASE_TYPE_* of the weapon.
|
|
* @return The devastating critical feat associated with the weapon or unarmed
|
|
* if either a creature weapon or BASE_ITEM_INVALID is passed as argument.
|
|
*/
|
|
int GetDevastatingCriticalFeatOfWeaponType(int iWeaponType);
|
|
|
|
/**
|
|
* Returns the weapon of choice feat associated with the basetype of the weapon
|
|
*
|
|
* Only melee weapons can be weapons of choice. Creature weapon types count as unarmed for this function, so
|
|
* will return -1 along with ranged weapons and invalid base items.
|
|
*
|
|
* @param iWeaponType The BASE_TYPE_* of the weapon.
|
|
* @return The devastating critical feat associated with a melee weapon or -1 if
|
|
* ranged or creature weapons, or BASE_ITEM_INVALID is passed as argument.
|
|
*/
|
|
int GetWeaponOfChoiceFeatOfWeaponType(int iWeaponType);
|
|
|
|
/**
|
|
* Returns the value of the WeaponType column in baseitem.2da.
|
|
*
|
|
* The number returned will be zero for any Base Item type that is not a weapon,
|
|
* it will have different (positive) numbers for different weapon types
|
|
*
|
|
* @param iBaseType The BASE_TYPE_* of the weapon.
|
|
* @return the weapon type of the weapon or 0 if not a weapon
|
|
*/
|
|
int GetIsWeaponType(int iBaseType);
|
|
|
|
/**
|
|
* Returns the value of the WeaponType column in baseitem.2da.
|
|
*
|
|
* The number returned will be zero for any item that is not a weapon,
|
|
* it will have different (positive) numbers for different weapon types
|
|
*
|
|
* @param oItem The item to test.
|
|
* @return the weapon type of the weapon or 0 if not a weapon
|
|
*/
|
|
int GetIsWeapon(object oItem);
|
|
|
|
/**
|
|
* Gets the size of the weapon. Hard-coded some weapon types to allow large
|
|
* races double-wield two-handed weapons (imagine Ogre with two greatswords ;) )
|
|
*
|
|
* @param oItem The item to test.
|
|
* @return The size of the weapon, -1 if oItem is not a weapon.
|
|
*/
|
|
int GetWeaponSize(object oWeapon);
|
|
|
|
/**
|
|
* Returns TRUE if item is a shield
|
|
*
|
|
* @param oItem The item to test.
|
|
* @return TRUE if a shield, otherwise FALSE
|
|
*/
|
|
int GetIsShield(object oItem);
|
|
|
|
//////////////////////////////////////////////////
|
|
/* Include section */
|
|
//////////////////////////////////////////////////
|
|
|
|
#include "prc_misc_const"
|
|
#include "prc_feat_const"
|
|
#include "inc_2dacache"
|
|
|
|
//////////////////////////////////////////////////
|
|
/* Internal functions */
|
|
//////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////
|
|
/* Function Definitions */
|
|
//////////////////////////////////////////////////
|
|
|
|
int GetFeatOfWeaponType(int iWeaponType, int iFeatType)
|
|
{
|
|
switch(iFeatType)
|
|
{
|
|
case FEAT_TYPE_FOCUS: return GetFocusFeatOfWeaponType(iWeaponType);
|
|
case FEAT_TYPE_SPECIALIZATION: return GetSpecializationFeatOfWeaponType(iWeaponType);
|
|
case FEAT_TYPE_EPIC_FOCUS: return GetEpicFocusFeatOfWeaponType(iWeaponType);
|
|
case FEAT_TYPE_EPIC_SPECIALIZATION: return GetEpicSpecializationFeatOfWeaponType(iWeaponType);
|
|
case FEAT_TYPE_IMPROVED_CRITICAL: return GetImprovedCriticalFeatOfWeaponType(iWeaponType);
|
|
case FEAT_TYPE_OVERWHELMING_CRITICAL: return GetOverwhelmingCriticalFeatOfWeaponType(iWeaponType);
|
|
case FEAT_TYPE_DEVASTATING_CRITICAL: return GetDevastatingCriticalFeatOfWeaponType(iWeaponType);
|
|
case FEAT_TYPE_WEAPON_OF_CHOICE: return GetWeaponOfChoiceFeatOfWeaponType(iWeaponType);
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
int GetFocusFeatOfWeaponType(int iWeaponType)
|
|
{
|
|
switch(iWeaponType)
|
|
{
|
|
case BASE_ITEM_CBLUDGWEAPON:
|
|
case BASE_ITEM_CPIERCWEAPON:
|
|
case BASE_ITEM_CSLASHWEAPON:
|
|
case BASE_ITEM_CSLSHPRCWEAP:
|
|
case BASE_ITEM_INVALID: return FEAT_WEAPON_FOCUS_UNARMED_STRIKE;
|
|
case BASE_ITEM_BASTARDSWORD: return FEAT_WEAPON_FOCUS_BASTARD_SWORD;
|
|
case BASE_ITEM_BATTLEAXE: return FEAT_WEAPON_FOCUS_BATTLE_AXE;
|
|
case BASE_ITEM_CLUB: return FEAT_WEAPON_FOCUS_CLUB;
|
|
case BASE_ITEM_DAGGER: return FEAT_WEAPON_FOCUS_DAGGER;
|
|
case BASE_ITEM_DART: return FEAT_WEAPON_FOCUS_DART;
|
|
case BASE_ITEM_DIREMACE: return FEAT_WEAPON_FOCUS_DIRE_MACE;
|
|
case BASE_ITEM_DOUBLEAXE: return FEAT_WEAPON_FOCUS_DOUBLE_AXE;
|
|
case BASE_ITEM_DWARVENWARAXE: return FEAT_WEAPON_FOCUS_DWAXE;
|
|
case BASE_ITEM_GREATAXE: return FEAT_WEAPON_FOCUS_GREAT_AXE;
|
|
case BASE_ITEM_GREATSWORD: return FEAT_WEAPON_FOCUS_GREAT_SWORD;
|
|
case BASE_ITEM_HALBERD: return FEAT_WEAPON_FOCUS_HALBERD;
|
|
case BASE_ITEM_HANDAXE: return FEAT_WEAPON_FOCUS_HAND_AXE;
|
|
case BASE_ITEM_HEAVYCROSSBOW: return FEAT_WEAPON_FOCUS_HEAVY_CROSSBOW;
|
|
case BASE_ITEM_HEAVYFLAIL: return FEAT_WEAPON_FOCUS_HEAVY_FLAIL;
|
|
case BASE_ITEM_KAMA: return FEAT_WEAPON_FOCUS_KAMA;
|
|
case BASE_ITEM_KATANA: return FEAT_WEAPON_FOCUS_KATANA;
|
|
case BASE_ITEM_KUKRI: return FEAT_WEAPON_FOCUS_KUKRI;
|
|
case BASE_ITEM_LIGHTCROSSBOW: return FEAT_WEAPON_FOCUS_LIGHT_CROSSBOW;
|
|
case BASE_ITEM_LIGHTFLAIL: return FEAT_WEAPON_FOCUS_LIGHT_FLAIL;
|
|
case BASE_ITEM_LIGHTHAMMER: return FEAT_WEAPON_FOCUS_LIGHT_HAMMER;
|
|
case BASE_ITEM_LIGHTMACE: return FEAT_WEAPON_FOCUS_LIGHT_MACE;
|
|
case BASE_ITEM_LONGBOW: return FEAT_WEAPON_FOCUS_LONGBOW;
|
|
case BASE_ITEM_LONGSWORD: return FEAT_WEAPON_FOCUS_LONG_SWORD;
|
|
case BASE_ITEM_MORNINGSTAR: return FEAT_WEAPON_FOCUS_MORNING_STAR;
|
|
case BASE_ITEM_QUARTERSTAFF: return FEAT_WEAPON_FOCUS_STAFF;
|
|
case BASE_ITEM_RAPIER: return FEAT_WEAPON_FOCUS_RAPIER;
|
|
case BASE_ITEM_SCIMITAR: return FEAT_WEAPON_FOCUS_SCIMITAR;
|
|
case BASE_ITEM_SCYTHE: return FEAT_WEAPON_FOCUS_SCYTHE;
|
|
case BASE_ITEM_SHORTBOW: return FEAT_WEAPON_FOCUS_SHORTBOW;
|
|
case BASE_ITEM_SHORTSPEAR: return FEAT_WEAPON_FOCUS_SPEAR;
|
|
case BASE_ITEM_SHORTSWORD: return FEAT_WEAPON_FOCUS_SHORT_SWORD;
|
|
case BASE_ITEM_SHURIKEN: return FEAT_WEAPON_FOCUS_SHURIKEN;
|
|
case BASE_ITEM_SICKLE: return FEAT_WEAPON_FOCUS_SICKLE;
|
|
case BASE_ITEM_SLING: return FEAT_WEAPON_FOCUS_SLING;
|
|
case BASE_ITEM_THROWINGAXE: return FEAT_WEAPON_FOCUS_THROWING_AXE;
|
|
case BASE_ITEM_TWOBLADEDSWORD: return FEAT_WEAPON_FOCUS_TWO_BLADED_SWORD;
|
|
case BASE_ITEM_WARHAMMER: return FEAT_WEAPON_FOCUS_WAR_HAMMER;
|
|
case BASE_ITEM_WHIP: return FEAT_WEAPON_FOCUS_WHIP;
|
|
|
|
// new item types
|
|
case BASE_ITEM_ELVEN_LIGHTBLADE: return FEAT_WEAPON_FOCUS_ELVEN_LIGHTBLADE;
|
|
case BASE_ITEM_ELVEN_THINBLADE: return FEAT_WEAPON_FOCUS_ELVEN_THINBLADE;
|
|
case BASE_ITEM_ELVEN_COURTBLADE: return FEAT_WEAPON_FOCUS_ELVEN_COURTBLADE;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
int GetSpecializationFeatOfWeaponType(int iWeaponType)
|
|
{
|
|
switch(iWeaponType)
|
|
{
|
|
case BASE_ITEM_CBLUDGWEAPON:
|
|
case BASE_ITEM_CPIERCWEAPON:
|
|
case BASE_ITEM_CSLASHWEAPON:
|
|
case BASE_ITEM_CSLSHPRCWEAP:
|
|
case BASE_ITEM_INVALID: return FEAT_WEAPON_SPECIALIZATION_UNARMED_STRIKE;
|
|
case BASE_ITEM_BASTARDSWORD: return FEAT_WEAPON_SPECIALIZATION_BASTARD_SWORD;
|
|
case BASE_ITEM_BATTLEAXE: return FEAT_WEAPON_SPECIALIZATION_BATTLE_AXE;
|
|
case BASE_ITEM_CLUB: return FEAT_WEAPON_SPECIALIZATION_CLUB;
|
|
case BASE_ITEM_DAGGER: return FEAT_WEAPON_SPECIALIZATION_DAGGER;
|
|
case BASE_ITEM_DART: return FEAT_WEAPON_SPECIALIZATION_DART;
|
|
case BASE_ITEM_DIREMACE: return FEAT_WEAPON_SPECIALIZATION_DIRE_MACE;
|
|
case BASE_ITEM_DOUBLEAXE: return FEAT_WEAPON_SPECIALIZATION_DOUBLE_AXE;
|
|
case BASE_ITEM_DWARVENWARAXE: return FEAT_WEAPON_SPECIALIZATION_DWAXE ;
|
|
case BASE_ITEM_GREATAXE: return FEAT_WEAPON_SPECIALIZATION_GREAT_AXE;
|
|
case BASE_ITEM_GREATSWORD: return FEAT_WEAPON_SPECIALIZATION_GREAT_SWORD;
|
|
case BASE_ITEM_HALBERD: return FEAT_WEAPON_SPECIALIZATION_HALBERD;
|
|
case BASE_ITEM_HANDAXE: return FEAT_WEAPON_SPECIALIZATION_HAND_AXE;
|
|
case BASE_ITEM_HEAVYCROSSBOW: return FEAT_WEAPON_SPECIALIZATION_HEAVY_CROSSBOW;
|
|
case BASE_ITEM_HEAVYFLAIL: return FEAT_WEAPON_SPECIALIZATION_HEAVY_FLAIL;
|
|
case BASE_ITEM_KAMA: return FEAT_WEAPON_SPECIALIZATION_KAMA;
|
|
case BASE_ITEM_KATANA: return FEAT_WEAPON_SPECIALIZATION_KATANA;
|
|
case BASE_ITEM_KUKRI: return FEAT_WEAPON_SPECIALIZATION_KUKRI;
|
|
case BASE_ITEM_LIGHTCROSSBOW: return FEAT_WEAPON_SPECIALIZATION_LIGHT_CROSSBOW;
|
|
case BASE_ITEM_LIGHTFLAIL: return FEAT_WEAPON_SPECIALIZATION_LIGHT_FLAIL;
|
|
case BASE_ITEM_LIGHTHAMMER: return FEAT_WEAPON_SPECIALIZATION_LIGHT_HAMMER;
|
|
case BASE_ITEM_LIGHTMACE: return FEAT_WEAPON_SPECIALIZATION_LIGHT_MACE;
|
|
case BASE_ITEM_LONGBOW: return FEAT_WEAPON_SPECIALIZATION_LONGBOW;
|
|
case BASE_ITEM_LONGSWORD: return FEAT_WEAPON_SPECIALIZATION_LONG_SWORD;
|
|
case BASE_ITEM_MORNINGSTAR: return FEAT_WEAPON_SPECIALIZATION_MORNING_STAR;
|
|
case BASE_ITEM_QUARTERSTAFF: return FEAT_WEAPON_SPECIALIZATION_STAFF;
|
|
case BASE_ITEM_RAPIER: return FEAT_WEAPON_SPECIALIZATION_RAPIER;
|
|
case BASE_ITEM_SCIMITAR: return FEAT_WEAPON_SPECIALIZATION_SCIMITAR;
|
|
case BASE_ITEM_SCYTHE: return FEAT_WEAPON_SPECIALIZATION_SCYTHE;
|
|
case BASE_ITEM_SHORTBOW: return FEAT_WEAPON_SPECIALIZATION_SHORTBOW;
|
|
case BASE_ITEM_SHORTSPEAR: return FEAT_WEAPON_SPECIALIZATION_SPEAR;
|
|
case BASE_ITEM_SHORTSWORD: return FEAT_WEAPON_SPECIALIZATION_SHORT_SWORD;
|
|
case BASE_ITEM_SHURIKEN: return FEAT_WEAPON_SPECIALIZATION_SHURIKEN;
|
|
case BASE_ITEM_SICKLE: return FEAT_WEAPON_SPECIALIZATION_SICKLE;
|
|
case BASE_ITEM_SLING: return FEAT_WEAPON_SPECIALIZATION_SLING;
|
|
case BASE_ITEM_THROWINGAXE: return FEAT_WEAPON_SPECIALIZATION_THROWING_AXE;
|
|
case BASE_ITEM_TWOBLADEDSWORD: return FEAT_WEAPON_SPECIALIZATION_TWO_BLADED_SWORD;
|
|
case BASE_ITEM_WARHAMMER: return FEAT_WEAPON_SPECIALIZATION_WAR_HAMMER;
|
|
case BASE_ITEM_WHIP: return FEAT_WEAPON_SPECIALIZATION_WHIP;
|
|
|
|
// new item types
|
|
case BASE_ITEM_ELVEN_LIGHTBLADE: return FEAT_WEAPON_SPECIALIZATION_ELVEN_LIGHTBLADE;
|
|
case BASE_ITEM_ELVEN_THINBLADE: return FEAT_WEAPON_SPECIALIZATION_ELVEN_THINBLADE;
|
|
case BASE_ITEM_ELVEN_COURTBLADE: return FEAT_WEAPON_SPECIALIZATION_ELVEN_COURTBLADE;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
int GetEpicFocusFeatOfWeaponType(int iWeaponType)
|
|
{
|
|
switch(iWeaponType)
|
|
{
|
|
case BASE_ITEM_CBLUDGWEAPON:
|
|
case BASE_ITEM_CPIERCWEAPON:
|
|
case BASE_ITEM_CSLASHWEAPON:
|
|
case BASE_ITEM_CSLSHPRCWEAP:
|
|
case BASE_ITEM_INVALID: return FEAT_EPIC_WEAPON_FOCUS_UNARMED;
|
|
case BASE_ITEM_BASTARDSWORD: return FEAT_EPIC_WEAPON_FOCUS_BASTARDSWORD;
|
|
case BASE_ITEM_BATTLEAXE: return FEAT_EPIC_WEAPON_FOCUS_BATTLEAXE;
|
|
case BASE_ITEM_CLUB: return FEAT_EPIC_WEAPON_FOCUS_CLUB;
|
|
case BASE_ITEM_DAGGER: return FEAT_EPIC_WEAPON_FOCUS_DAGGER;
|
|
case BASE_ITEM_DART: return FEAT_EPIC_WEAPON_FOCUS_DART;
|
|
case BASE_ITEM_DIREMACE: return FEAT_EPIC_WEAPON_FOCUS_DIREMACE;
|
|
case BASE_ITEM_DOUBLEAXE: return FEAT_EPIC_WEAPON_FOCUS_DOUBLEAXE;
|
|
case BASE_ITEM_DWARVENWARAXE: return FEAT_EPIC_WEAPON_FOCUS_DWAXE;
|
|
case BASE_ITEM_GREATAXE: return FEAT_EPIC_WEAPON_FOCUS_GREATAXE;
|
|
case BASE_ITEM_GREATSWORD: return FEAT_EPIC_WEAPON_FOCUS_GREATSWORD;
|
|
case BASE_ITEM_HALBERD: return FEAT_EPIC_WEAPON_FOCUS_HALBERD;
|
|
case BASE_ITEM_HANDAXE: return FEAT_EPIC_WEAPON_FOCUS_HANDAXE;
|
|
case BASE_ITEM_HEAVYCROSSBOW: return FEAT_EPIC_WEAPON_FOCUS_HEAVYCROSSBOW;
|
|
case BASE_ITEM_HEAVYFLAIL: return FEAT_EPIC_WEAPON_FOCUS_HEAVYFLAIL;
|
|
case BASE_ITEM_KAMA: return FEAT_EPIC_WEAPON_FOCUS_KAMA;
|
|
case BASE_ITEM_KATANA: return FEAT_EPIC_WEAPON_FOCUS_KATANA;
|
|
case BASE_ITEM_KUKRI: return FEAT_EPIC_WEAPON_FOCUS_KUKRI;
|
|
case BASE_ITEM_LIGHTCROSSBOW: return FEAT_EPIC_WEAPON_FOCUS_LIGHTCROSSBOW;
|
|
case BASE_ITEM_LIGHTFLAIL: return FEAT_EPIC_WEAPON_FOCUS_LIGHTFLAIL;
|
|
case BASE_ITEM_LIGHTHAMMER: return FEAT_EPIC_WEAPON_FOCUS_LIGHTHAMMER;
|
|
case BASE_ITEM_LIGHTMACE: return FEAT_EPIC_WEAPON_FOCUS_LIGHTMACE;
|
|
case BASE_ITEM_LONGBOW: return FEAT_EPIC_WEAPON_FOCUS_LONGBOW;
|
|
case BASE_ITEM_LONGSWORD: return FEAT_EPIC_WEAPON_FOCUS_LONGSWORD;
|
|
case BASE_ITEM_MORNINGSTAR: return FEAT_EPIC_WEAPON_FOCUS_MORNINGSTAR;
|
|
case BASE_ITEM_QUARTERSTAFF: return FEAT_EPIC_WEAPON_FOCUS_QUARTERSTAFF;
|
|
case BASE_ITEM_RAPIER: return FEAT_EPIC_WEAPON_FOCUS_RAPIER;
|
|
case BASE_ITEM_SCIMITAR: return FEAT_EPIC_WEAPON_FOCUS_SCIMITAR;
|
|
case BASE_ITEM_SCYTHE: return FEAT_EPIC_WEAPON_FOCUS_SCYTHE;
|
|
case BASE_ITEM_SHORTBOW: return FEAT_EPIC_WEAPON_FOCUS_SHORTBOW;
|
|
case BASE_ITEM_SHORTSPEAR: return FEAT_EPIC_WEAPON_FOCUS_SHORTSPEAR;
|
|
case BASE_ITEM_SHORTSWORD: return FEAT_EPIC_WEAPON_FOCUS_SHORTSWORD;
|
|
case BASE_ITEM_SHURIKEN: return FEAT_EPIC_WEAPON_FOCUS_SHURIKEN;
|
|
case BASE_ITEM_SICKLE: return FEAT_EPIC_WEAPON_FOCUS_SICKLE;
|
|
case BASE_ITEM_SLING: return FEAT_EPIC_WEAPON_FOCUS_SLING;
|
|
case BASE_ITEM_THROWINGAXE: return FEAT_EPIC_WEAPON_FOCUS_THROWINGAXE;
|
|
case BASE_ITEM_TWOBLADEDSWORD: return FEAT_EPIC_WEAPON_FOCUS_TWOBLADEDSWORD;
|
|
case BASE_ITEM_WARHAMMER: return FEAT_EPIC_WEAPON_FOCUS_WARHAMMER;
|
|
case BASE_ITEM_WHIP: return FEAT_EPIC_WEAPON_FOCUS_WHIP;
|
|
|
|
// new item types
|
|
case BASE_ITEM_ELVEN_LIGHTBLADE: return FEAT_EPIC_WEAPON_FOCUS_ELVEN_LIGHTBLADE;
|
|
case BASE_ITEM_ELVEN_THINBLADE: return FEAT_EPIC_WEAPON_FOCUS_ELVEN_THINBLADE;
|
|
case BASE_ITEM_ELVEN_COURTBLADE: return FEAT_EPIC_WEAPON_FOCUS_ELVEN_COURTBLADE;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
int GetEpicSpecializationFeatOfWeaponType(int iWeaponType)
|
|
{
|
|
switch(iWeaponType)
|
|
{
|
|
case BASE_ITEM_CBLUDGWEAPON:
|
|
case BASE_ITEM_CPIERCWEAPON:
|
|
case BASE_ITEM_CSLASHWEAPON:
|
|
case BASE_ITEM_CSLSHPRCWEAP:
|
|
case BASE_ITEM_INVALID: return FEAT_EPIC_WEAPON_SPECIALIZATION_UNARMED;
|
|
case BASE_ITEM_BASTARDSWORD: return FEAT_EPIC_WEAPON_SPECIALIZATION_BASTARDSWORD;
|
|
case BASE_ITEM_BATTLEAXE: return FEAT_EPIC_WEAPON_SPECIALIZATION_BATTLEAXE;
|
|
case BASE_ITEM_CLUB: return FEAT_EPIC_WEAPON_SPECIALIZATION_CLUB;
|
|
case BASE_ITEM_DAGGER: return FEAT_EPIC_WEAPON_SPECIALIZATION_DAGGER;
|
|
case BASE_ITEM_DART: return FEAT_EPIC_WEAPON_SPECIALIZATION_DART;
|
|
case BASE_ITEM_DIREMACE: return FEAT_EPIC_WEAPON_SPECIALIZATION_DIREMACE;
|
|
case BASE_ITEM_DOUBLEAXE: return FEAT_EPIC_WEAPON_SPECIALIZATION_DOUBLEAXE;
|
|
case BASE_ITEM_DWARVENWARAXE: return FEAT_EPIC_WEAPON_SPECIALIZATION_DWAXE;
|
|
case BASE_ITEM_GREATAXE: return FEAT_EPIC_WEAPON_SPECIALIZATION_GREATAXE;
|
|
case BASE_ITEM_GREATSWORD: return FEAT_EPIC_WEAPON_SPECIALIZATION_GREATSWORD;
|
|
case BASE_ITEM_HALBERD: return FEAT_EPIC_WEAPON_SPECIALIZATION_HALBERD;
|
|
case BASE_ITEM_HANDAXE: return FEAT_EPIC_WEAPON_SPECIALIZATION_HANDAXE;
|
|
case BASE_ITEM_HEAVYCROSSBOW: return FEAT_EPIC_WEAPON_SPECIALIZATION_HEAVYCROSSBOW;
|
|
case BASE_ITEM_HEAVYFLAIL: return FEAT_EPIC_WEAPON_SPECIALIZATION_HEAVYFLAIL;
|
|
case BASE_ITEM_KAMA: return FEAT_EPIC_WEAPON_SPECIALIZATION_KAMA;
|
|
case BASE_ITEM_KATANA: return FEAT_EPIC_WEAPON_SPECIALIZATION_KATANA;
|
|
case BASE_ITEM_KUKRI: return FEAT_EPIC_WEAPON_SPECIALIZATION_KUKRI;
|
|
case BASE_ITEM_LIGHTCROSSBOW: return FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTCROSSBOW;
|
|
case BASE_ITEM_LIGHTFLAIL: return FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTFLAIL;
|
|
case BASE_ITEM_LIGHTHAMMER: return FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTHAMMER;
|
|
case BASE_ITEM_LIGHTMACE: return FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTMACE;
|
|
case BASE_ITEM_LONGBOW: return FEAT_EPIC_WEAPON_SPECIALIZATION_LONGBOW; // motu99: Longbow and Longsword were interchanged. Corrected that
|
|
case BASE_ITEM_LONGSWORD: return FEAT_EPIC_WEAPON_SPECIALIZATION_LONGSWORD;
|
|
case BASE_ITEM_MORNINGSTAR: return FEAT_EPIC_WEAPON_SPECIALIZATION_MORNINGSTAR;
|
|
case BASE_ITEM_QUARTERSTAFF: return FEAT_EPIC_WEAPON_SPECIALIZATION_QUARTERSTAFF;
|
|
case BASE_ITEM_RAPIER: return FEAT_EPIC_WEAPON_SPECIALIZATION_RAPIER;
|
|
case BASE_ITEM_SCIMITAR: return FEAT_EPIC_WEAPON_SPECIALIZATION_SCIMITAR;
|
|
case BASE_ITEM_SCYTHE: return FEAT_EPIC_WEAPON_SPECIALIZATION_SCYTHE;
|
|
case BASE_ITEM_SHORTBOW: return FEAT_EPIC_WEAPON_SPECIALIZATION_SHORTBOW;
|
|
case BASE_ITEM_SHORTSPEAR: return FEAT_EPIC_WEAPON_SPECIALIZATION_SHORTSPEAR;
|
|
case BASE_ITEM_SHORTSWORD: return FEAT_EPIC_WEAPON_SPECIALIZATION_SHORTSWORD;
|
|
case BASE_ITEM_SHURIKEN: return FEAT_EPIC_WEAPON_SPECIALIZATION_SHURIKEN;
|
|
case BASE_ITEM_SICKLE: return FEAT_EPIC_WEAPON_SPECIALIZATION_SICKLE;
|
|
case BASE_ITEM_SLING: return FEAT_EPIC_WEAPON_SPECIALIZATION_SLING;
|
|
case BASE_ITEM_THROWINGAXE: return FEAT_EPIC_WEAPON_SPECIALIZATION_THROWINGAXE;
|
|
case BASE_ITEM_TWOBLADEDSWORD: return FEAT_EPIC_WEAPON_SPECIALIZATION_TWOBLADEDSWORD;
|
|
case BASE_ITEM_WARHAMMER: return FEAT_EPIC_WEAPON_SPECIALIZATION_WARHAMMER;
|
|
case BASE_ITEM_WHIP: return FEAT_EPIC_WEAPON_SPECIALIZATION_WHIP;
|
|
|
|
// new item types
|
|
case BASE_ITEM_ELVEN_LIGHTBLADE: return FEAT_EPIC_WEAPON_SPECIALIZATION_ELVEN_LIGHTBLADE;
|
|
case BASE_ITEM_ELVEN_THINBLADE: return FEAT_EPIC_WEAPON_SPECIALIZATION_ELVEN_THINBLADE;
|
|
case BASE_ITEM_ELVEN_COURTBLADE: return FEAT_EPIC_WEAPON_SPECIALIZATION_ELVEN_COURTBLADE;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
int GetImprovedCriticalFeatOfWeaponType(int iWeaponType)
|
|
{
|
|
switch(iWeaponType)
|
|
{
|
|
case BASE_ITEM_CBLUDGWEAPON:
|
|
case BASE_ITEM_CPIERCWEAPON:
|
|
case BASE_ITEM_CSLASHWEAPON:
|
|
case BASE_ITEM_CSLSHPRCWEAP:
|
|
case BASE_ITEM_INVALID: return FEAT_IMPROVED_CRITICAL_UNARMED_STRIKE;
|
|
case BASE_ITEM_BASTARDSWORD: return FEAT_IMPROVED_CRITICAL_BASTARD_SWORD;
|
|
case BASE_ITEM_BATTLEAXE: return FEAT_IMPROVED_CRITICAL_BATTLE_AXE;
|
|
case BASE_ITEM_CLUB: return FEAT_IMPROVED_CRITICAL_CLUB;
|
|
case BASE_ITEM_DAGGER: return FEAT_IMPROVED_CRITICAL_DAGGER;
|
|
case BASE_ITEM_DART: return FEAT_IMPROVED_CRITICAL_DART;
|
|
case BASE_ITEM_DIREMACE: return FEAT_IMPROVED_CRITICAL_DIRE_MACE;
|
|
case BASE_ITEM_DOUBLEAXE: return FEAT_IMPROVED_CRITICAL_DOUBLE_AXE;
|
|
case BASE_ITEM_DWARVENWARAXE: return FEAT_IMPROVED_CRITICAL_DWAXE ;
|
|
case BASE_ITEM_GREATAXE: return FEAT_IMPROVED_CRITICAL_GREAT_AXE;
|
|
case BASE_ITEM_GREATSWORD: return FEAT_IMPROVED_CRITICAL_GREAT_SWORD;
|
|
case BASE_ITEM_HALBERD: return FEAT_IMPROVED_CRITICAL_HALBERD;
|
|
case BASE_ITEM_HANDAXE: return FEAT_IMPROVED_CRITICAL_HAND_AXE;
|
|
case BASE_ITEM_HEAVYCROSSBOW: return FEAT_IMPROVED_CRITICAL_HEAVY_CROSSBOW;
|
|
case BASE_ITEM_HEAVYFLAIL: return FEAT_IMPROVED_CRITICAL_HEAVY_FLAIL;
|
|
case BASE_ITEM_KAMA: return FEAT_IMPROVED_CRITICAL_KAMA;
|
|
case BASE_ITEM_KATANA: return FEAT_IMPROVED_CRITICAL_KATANA;
|
|
case BASE_ITEM_KUKRI: return FEAT_IMPROVED_CRITICAL_KUKRI;
|
|
case BASE_ITEM_LIGHTCROSSBOW: return FEAT_IMPROVED_CRITICAL_LIGHT_CROSSBOW;
|
|
case BASE_ITEM_LIGHTFLAIL: return FEAT_IMPROVED_CRITICAL_LIGHT_FLAIL;
|
|
case BASE_ITEM_LIGHTHAMMER: return FEAT_IMPROVED_CRITICAL_LIGHT_HAMMER;
|
|
case BASE_ITEM_LIGHTMACE: return FEAT_IMPROVED_CRITICAL_LIGHT_MACE;
|
|
case BASE_ITEM_LONGBOW: return FEAT_IMPROVED_CRITICAL_LONGBOW;
|
|
case BASE_ITEM_LONGSWORD: return FEAT_IMPROVED_CRITICAL_LONG_SWORD;
|
|
case BASE_ITEM_MORNINGSTAR: return FEAT_IMPROVED_CRITICAL_MORNING_STAR;
|
|
case BASE_ITEM_QUARTERSTAFF: return FEAT_IMPROVED_CRITICAL_STAFF;
|
|
case BASE_ITEM_RAPIER: return FEAT_IMPROVED_CRITICAL_RAPIER;
|
|
case BASE_ITEM_SCIMITAR: return FEAT_IMPROVED_CRITICAL_SCIMITAR;
|
|
case BASE_ITEM_SCYTHE: return FEAT_IMPROVED_CRITICAL_SCYTHE;
|
|
case BASE_ITEM_SHORTBOW: return FEAT_IMPROVED_CRITICAL_SHORTBOW;
|
|
case BASE_ITEM_SHORTSPEAR: return FEAT_IMPROVED_CRITICAL_SPEAR;
|
|
case BASE_ITEM_SHORTSWORD: return FEAT_IMPROVED_CRITICAL_SHORT_SWORD;
|
|
case BASE_ITEM_SHURIKEN: return FEAT_IMPROVED_CRITICAL_SHURIKEN;
|
|
case BASE_ITEM_SICKLE: return FEAT_IMPROVED_CRITICAL_SICKLE;
|
|
case BASE_ITEM_SLING: return FEAT_IMPROVED_CRITICAL_SLING;
|
|
case BASE_ITEM_THROWINGAXE: return FEAT_IMPROVED_CRITICAL_THROWING_AXE;
|
|
case BASE_ITEM_TWOBLADEDSWORD: return FEAT_IMPROVED_CRITICAL_TWO_BLADED_SWORD;
|
|
case BASE_ITEM_WARHAMMER: return FEAT_IMPROVED_CRITICAL_WAR_HAMMER;
|
|
case BASE_ITEM_WHIP: return FEAT_IMPROVED_CRITICAL_WHIP;
|
|
|
|
// new item types
|
|
case BASE_ITEM_ELVEN_LIGHTBLADE: return FEAT_IMPROVED_CRITICAL_ELVEN_LIGHTBLADE;
|
|
case BASE_ITEM_ELVEN_THINBLADE: return FEAT_IMPROVED_CRITICAL_ELVEN_THINBLADE;
|
|
case BASE_ITEM_ELVEN_COURTBLADE: return FEAT_IMPROVED_CRITICAL_ELVEN_COURTBLADE;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
int GetOverwhelmingCriticalFeatOfWeaponType(int iWeaponType)
|
|
{
|
|
switch(iWeaponType)
|
|
{
|
|
case BASE_ITEM_CBLUDGWEAPON:
|
|
case BASE_ITEM_CPIERCWEAPON:
|
|
case BASE_ITEM_CSLASHWEAPON:
|
|
case BASE_ITEM_CSLSHPRCWEAP:
|
|
case BASE_ITEM_INVALID: return FEAT_EPIC_OVERWHELMING_CRITICAL_UNARMED;
|
|
case BASE_ITEM_BASTARDSWORD: return FEAT_EPIC_OVERWHELMING_CRITICAL_BASTARDSWORD;
|
|
case BASE_ITEM_BATTLEAXE: return FEAT_EPIC_OVERWHELMING_CRITICAL_BATTLEAXE;
|
|
case BASE_ITEM_CLUB: return FEAT_EPIC_OVERWHELMING_CRITICAL_CLUB;
|
|
case BASE_ITEM_DAGGER: return FEAT_EPIC_OVERWHELMING_CRITICAL_DAGGER;
|
|
case BASE_ITEM_DART: return FEAT_EPIC_OVERWHELMING_CRITICAL_DART;
|
|
case BASE_ITEM_DIREMACE: return FEAT_EPIC_OVERWHELMING_CRITICAL_DIREMACE;
|
|
case BASE_ITEM_DOUBLEAXE: return FEAT_EPIC_OVERWHELMING_CRITICAL_DOUBLEAXE;
|
|
case BASE_ITEM_DWARVENWARAXE: return FEAT_EPIC_OVERWHELMING_CRITICAL_DWAXE ;
|
|
case BASE_ITEM_GREATAXE: return FEAT_EPIC_OVERWHELMING_CRITICAL_GREATAXE;
|
|
case BASE_ITEM_GREATSWORD: return FEAT_EPIC_OVERWHELMING_CRITICAL_GREATSWORD;
|
|
case BASE_ITEM_HALBERD: return FEAT_EPIC_OVERWHELMING_CRITICAL_HALBERD;
|
|
case BASE_ITEM_HANDAXE: return FEAT_EPIC_OVERWHELMING_CRITICAL_HANDAXE;
|
|
case BASE_ITEM_HEAVYCROSSBOW: return FEAT_EPIC_OVERWHELMING_CRITICAL_HEAVYCROSSBOW;
|
|
case BASE_ITEM_HEAVYFLAIL: return FEAT_EPIC_OVERWHELMING_CRITICAL_HEAVYFLAIL;
|
|
case BASE_ITEM_KAMA: return FEAT_EPIC_OVERWHELMING_CRITICAL_KAMA;
|
|
case BASE_ITEM_KATANA: return FEAT_EPIC_OVERWHELMING_CRITICAL_KATANA;
|
|
case BASE_ITEM_KUKRI: return FEAT_EPIC_OVERWHELMING_CRITICAL_KUKRI;
|
|
case BASE_ITEM_LIGHTCROSSBOW: return FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTCROSSBOW;
|
|
case BASE_ITEM_LIGHTFLAIL: return FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTFLAIL;
|
|
case BASE_ITEM_LIGHTHAMMER: return FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTHAMMER;
|
|
case BASE_ITEM_LIGHTMACE: return FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTMACE;
|
|
case BASE_ITEM_LONGBOW: return FEAT_EPIC_OVERWHELMING_CRITICAL_LONGBOW;
|
|
case BASE_ITEM_LONGSWORD: return FEAT_EPIC_OVERWHELMING_CRITICAL_LONGSWORD;
|
|
case BASE_ITEM_MORNINGSTAR: return FEAT_EPIC_OVERWHELMING_CRITICAL_MORNINGSTAR;
|
|
case BASE_ITEM_QUARTERSTAFF: return FEAT_EPIC_OVERWHELMING_CRITICAL_QUARTERSTAFF;
|
|
case BASE_ITEM_RAPIER: return FEAT_EPIC_OVERWHELMING_CRITICAL_RAPIER;
|
|
case BASE_ITEM_SCIMITAR: return FEAT_EPIC_OVERWHELMING_CRITICAL_SCIMITAR;
|
|
case BASE_ITEM_SCYTHE: return FEAT_EPIC_OVERWHELMING_CRITICAL_SCYTHE;
|
|
case BASE_ITEM_SHORTBOW: return FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTBOW;
|
|
case BASE_ITEM_SHORTSPEAR: return FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTSPEAR;
|
|
case BASE_ITEM_SHORTSWORD: return FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTSWORD;
|
|
case BASE_ITEM_SHURIKEN: return FEAT_EPIC_OVERWHELMING_CRITICAL_SHURIKEN;
|
|
case BASE_ITEM_SICKLE: return FEAT_EPIC_OVERWHELMING_CRITICAL_SICKLE;
|
|
case BASE_ITEM_SLING: return FEAT_EPIC_OVERWHELMING_CRITICAL_SLING;
|
|
case BASE_ITEM_THROWINGAXE: return FEAT_EPIC_OVERWHELMING_CRITICAL_THROWINGAXE;
|
|
case BASE_ITEM_TWOBLADEDSWORD: return FEAT_EPIC_OVERWHELMING_CRITICAL_TWOBLADEDSWORD;
|
|
case BASE_ITEM_WARHAMMER: return FEAT_EPIC_OVERWHELMING_CRITICAL_WARHAMMER;
|
|
case BASE_ITEM_WHIP: return FEAT_EPIC_OVERWHELMING_CRITICAL_WHIP;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
int GetDevastatingCriticalFeatOfWeaponType(int iWeaponType)
|
|
{
|
|
switch(iWeaponType)
|
|
{
|
|
case BASE_ITEM_CBLUDGWEAPON:
|
|
case BASE_ITEM_CPIERCWEAPON:
|
|
case BASE_ITEM_CSLASHWEAPON:
|
|
case BASE_ITEM_CSLSHPRCWEAP:
|
|
case BASE_ITEM_INVALID: return FEAT_EPIC_DEVASTATING_CRITICAL_UNARMED;
|
|
case BASE_ITEM_BASTARDSWORD: return FEAT_EPIC_DEVASTATING_CRITICAL_BASTARDSWORD;
|
|
case BASE_ITEM_BATTLEAXE: return FEAT_EPIC_DEVASTATING_CRITICAL_BATTLEAXE;
|
|
case BASE_ITEM_CLUB: return FEAT_EPIC_DEVASTATING_CRITICAL_CLUB;
|
|
case BASE_ITEM_DAGGER: return FEAT_EPIC_DEVASTATING_CRITICAL_DAGGER;
|
|
case BASE_ITEM_DART: return FEAT_EPIC_DEVASTATING_CRITICAL_DART;
|
|
case BASE_ITEM_DIREMACE: return FEAT_EPIC_DEVASTATING_CRITICAL_DIREMACE;
|
|
case BASE_ITEM_DOUBLEAXE: return FEAT_EPIC_DEVASTATING_CRITICAL_DOUBLEAXE;
|
|
case BASE_ITEM_DWARVENWARAXE: return FEAT_EPIC_DEVASTATING_CRITICAL_DWAXE ;
|
|
case BASE_ITEM_GREATAXE: return FEAT_EPIC_DEVASTATING_CRITICAL_GREATAXE;
|
|
case BASE_ITEM_GREATSWORD: return FEAT_EPIC_DEVASTATING_CRITICAL_GREATSWORD;
|
|
case BASE_ITEM_HALBERD: return FEAT_EPIC_DEVASTATING_CRITICAL_HALBERD;
|
|
case BASE_ITEM_HANDAXE: return FEAT_EPIC_DEVASTATING_CRITICAL_HANDAXE;
|
|
case BASE_ITEM_HEAVYCROSSBOW: return FEAT_EPIC_DEVASTATING_CRITICAL_HEAVYCROSSBOW;
|
|
case BASE_ITEM_HEAVYFLAIL: return FEAT_EPIC_DEVASTATING_CRITICAL_HEAVYFLAIL;
|
|
case BASE_ITEM_KAMA: return FEAT_EPIC_DEVASTATING_CRITICAL_KAMA;
|
|
case BASE_ITEM_KATANA: return FEAT_EPIC_DEVASTATING_CRITICAL_KATANA;
|
|
case BASE_ITEM_KUKRI: return FEAT_EPIC_DEVASTATING_CRITICAL_KUKRI;
|
|
case BASE_ITEM_LIGHTCROSSBOW: return FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTCROSSBOW;
|
|
case BASE_ITEM_LIGHTFLAIL: return FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTFLAIL;
|
|
case BASE_ITEM_LIGHTHAMMER: return FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTHAMMER;
|
|
case BASE_ITEM_LIGHTMACE: return FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTMACE;
|
|
case BASE_ITEM_LONGBOW: return FEAT_EPIC_DEVASTATING_CRITICAL_LONGBOW;
|
|
case BASE_ITEM_LONGSWORD: return FEAT_EPIC_DEVASTATING_CRITICAL_LONGSWORD;
|
|
case BASE_ITEM_MORNINGSTAR: return FEAT_EPIC_DEVASTATING_CRITICAL_MORNINGSTAR;
|
|
case BASE_ITEM_QUARTERSTAFF: return FEAT_EPIC_DEVASTATING_CRITICAL_QUARTERSTAFF;
|
|
case BASE_ITEM_RAPIER: return FEAT_EPIC_DEVASTATING_CRITICAL_RAPIER;
|
|
case BASE_ITEM_SCIMITAR: return FEAT_EPIC_DEVASTATING_CRITICAL_SCIMITAR;
|
|
case BASE_ITEM_SCYTHE: return FEAT_EPIC_DEVASTATING_CRITICAL_SCYTHE;
|
|
case BASE_ITEM_SHORTBOW: return FEAT_EPIC_DEVASTATING_CRITICAL_SHORTBOW;
|
|
case BASE_ITEM_SHORTSPEAR: return FEAT_EPIC_DEVASTATING_CRITICAL_SHORTSPEAR;
|
|
case BASE_ITEM_SHORTSWORD: return FEAT_EPIC_DEVASTATING_CRITICAL_SHORTSWORD;
|
|
case BASE_ITEM_SHURIKEN: return FEAT_EPIC_DEVASTATING_CRITICAL_SHURIKEN;
|
|
case BASE_ITEM_SICKLE: return FEAT_EPIC_DEVASTATING_CRITICAL_SICKLE;
|
|
case BASE_ITEM_SLING: return FEAT_EPIC_DEVASTATING_CRITICAL_SLING;
|
|
case BASE_ITEM_THROWINGAXE: return FEAT_EPIC_DEVASTATING_CRITICAL_THROWINGAXE;
|
|
case BASE_ITEM_TWOBLADEDSWORD: return FEAT_EPIC_DEVASTATING_CRITICAL_TWOBLADEDSWORD;
|
|
case BASE_ITEM_WARHAMMER: return FEAT_EPIC_DEVASTATING_CRITICAL_WARHAMMER;
|
|
case BASE_ITEM_WHIP: return FEAT_EPIC_DEVASTATING_CRITICAL_WHIP;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
int GetWeaponOfChoiceFeatOfWeaponType(int iWeaponType)
|
|
{
|
|
switch(iWeaponType)
|
|
{
|
|
case BASE_ITEM_BASTARDSWORD: return FEAT_WEAPON_OF_CHOICE_BASTARDSWORD;
|
|
case BASE_ITEM_BATTLEAXE: return FEAT_WEAPON_OF_CHOICE_BATTLEAXE;
|
|
case BASE_ITEM_CLUB: return FEAT_WEAPON_OF_CHOICE_CLUB;
|
|
case BASE_ITEM_DAGGER: return FEAT_WEAPON_OF_CHOICE_DAGGER;
|
|
case BASE_ITEM_DIREMACE: return FEAT_WEAPON_OF_CHOICE_DIREMACE;
|
|
case BASE_ITEM_DOUBLEAXE: return FEAT_WEAPON_OF_CHOICE_DOUBLEAXE;
|
|
case BASE_ITEM_DWARVENWARAXE: return FEAT_WEAPON_OF_CHOICE_DWAXE ;
|
|
case BASE_ITEM_GREATAXE: return FEAT_WEAPON_OF_CHOICE_GREATAXE;
|
|
case BASE_ITEM_GREATSWORD: return FEAT_WEAPON_OF_CHOICE_GREATSWORD;
|
|
case BASE_ITEM_HALBERD: return FEAT_WEAPON_OF_CHOICE_HALBERD;
|
|
case BASE_ITEM_HANDAXE: return FEAT_WEAPON_OF_CHOICE_HANDAXE;
|
|
case BASE_ITEM_HEAVYFLAIL: return FEAT_WEAPON_OF_CHOICE_HEAVYFLAIL;
|
|
case BASE_ITEM_KAMA: return FEAT_WEAPON_OF_CHOICE_KAMA;
|
|
case BASE_ITEM_KATANA: return FEAT_WEAPON_OF_CHOICE_KATANA;
|
|
case BASE_ITEM_KUKRI: return FEAT_WEAPON_OF_CHOICE_KUKRI;
|
|
case BASE_ITEM_LIGHTFLAIL: return FEAT_WEAPON_OF_CHOICE_LIGHTFLAIL;
|
|
case BASE_ITEM_LIGHTHAMMER: return FEAT_WEAPON_OF_CHOICE_LIGHTHAMMER;
|
|
case BASE_ITEM_LIGHTMACE: return FEAT_WEAPON_OF_CHOICE_LIGHTMACE;
|
|
case BASE_ITEM_LONGSWORD: return FEAT_WEAPON_OF_CHOICE_LONGSWORD;
|
|
case BASE_ITEM_MORNINGSTAR: return FEAT_WEAPON_OF_CHOICE_MORNINGSTAR;
|
|
case BASE_ITEM_QUARTERSTAFF: return FEAT_WEAPON_OF_CHOICE_QUARTERSTAFF;
|
|
case BASE_ITEM_RAPIER: return FEAT_WEAPON_OF_CHOICE_RAPIER;
|
|
case BASE_ITEM_SCIMITAR: return FEAT_WEAPON_OF_CHOICE_SCIMITAR;
|
|
case BASE_ITEM_SCYTHE: return FEAT_WEAPON_OF_CHOICE_SCYTHE;
|
|
case BASE_ITEM_SHORTSPEAR: return FEAT_WEAPON_OF_CHOICE_SHORTSPEAR;
|
|
case BASE_ITEM_SHORTSWORD: return FEAT_WEAPON_OF_CHOICE_SHORTSWORD;
|
|
case BASE_ITEM_SICKLE: return FEAT_WEAPON_OF_CHOICE_SICKLE;
|
|
case BASE_ITEM_TWOBLADEDSWORD: return FEAT_WEAPON_OF_CHOICE_TWOBLADEDSWORD;
|
|
case BASE_ITEM_WARHAMMER: return FEAT_WEAPON_OF_CHOICE_WARHAMMER;
|
|
case BASE_ITEM_WHIP: return FEAT_WEAPON_OF_CHOICE_WHIP;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
int GetIsWeaponType(int iBaseType)
|
|
{
|
|
return StringToInt(Get2DACache("baseitems", "WeaponType", iBaseType));
|
|
}
|
|
|
|
int GetIsWeapon(object oItem)
|
|
{
|
|
return GetIsWeaponType(GetBaseItemType(oItem));
|
|
}
|
|
|
|
int GetWeaponSize(object oWeapon)
|
|
{
|
|
if(!GetIsWeapon(oWeapon))
|
|
return -1;
|
|
|
|
int iBaseType = GetBaseItemType(oWeapon);
|
|
|
|
// weapons hard-coded by PRC
|
|
switch(iBaseType)
|
|
{
|
|
case BASE_ITEM_LONGBOW:
|
|
case BASE_ITEM_HALBERD:
|
|
case BASE_ITEM_GREATSWORD:
|
|
case BASE_ITEM_GREATAXE:
|
|
case BASE_ITEM_HEAVYFLAIL:
|
|
case BASE_ITEM_QUARTERSTAFF:
|
|
case BASE_ITEM_SCYTHE:
|
|
case BASE_ITEM_SHORTSPEAR:
|
|
case BASE_ITEM_TRIDENT:
|
|
case BASE_ITEM_ELVEN_COURTBLADE:
|
|
return 4;
|
|
}
|
|
|
|
return StringToInt(Get2DACache("baseitems", "WeaponSize", iBaseType));
|
|
}
|
|
|
|
int GetIsShield(object oItem)
|
|
{
|
|
switch(GetBaseItemType(oItem))
|
|
{
|
|
case BASE_ITEM_LARGESHIELD:
|
|
case BASE_ITEM_SMALLSHIELD:
|
|
case BASE_ITEM_TOWERSHIELD:
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
// Special check for weapons with modified WeaponSize entry
|
|
// aka "Two-handed weapons equipped as one-handed"
|
|
// checks if size returned by GetWeaponSize() is different than setting in baseitems.2da
|
|
int PRCLargeWeaponCheck(int iBaseType, int nSize)
|
|
{
|
|
string sTest;
|
|
switch(iBaseType)
|
|
{
|
|
case BASE_ITEM_HALBERD:
|
|
case BASE_ITEM_GREATSWORD:
|
|
case BASE_ITEM_GREATAXE:
|
|
case BASE_ITEM_HEAVYFLAIL:
|
|
case BASE_ITEM_QUARTERSTAFF:
|
|
case BASE_ITEM_SCYTHE:
|
|
case BASE_ITEM_SHORTSPEAR:
|
|
case BASE_ITEM_TRIDENT:
|
|
case BASE_ITEM_ELVEN_COURTBLADE:
|
|
{
|
|
sTest = Get2DAString("baseitems", "WeaponSize", iBaseType);
|
|
break;
|
|
}
|
|
}
|
|
return sTest != "" && sTest != IntToString(nSize);
|
|
} |