100 lines
4.0 KiB
Plaintext
100 lines
4.0 KiB
Plaintext
#include "nwnx_creature"
|
|
#include "inc_item_props"
|
|
#include "prc_class_const"
|
|
|
|
/*
|
|
Desert Wind: Scimitar, Light Mace, Spear, Light Pick, Falchion.
|
|
Diamond Mind: Katana, Rapier, Bastard Sword, Spear
|
|
Setting Sun: Short Sword, Staff, Unarmed Strike, Nunchaku
|
|
Shadow Hand: Short Sword, Dagger, Unarmed Strike, Sai
|
|
Stone Dragon: Unarmed Strike, Great Sword, Great Axe, Heavy Mace
|
|
Tiger Claw: Unarmed Strike, Great Axe, Kama, Kukri, Hand Axe
|
|
|
|
FEAT_SS_DF_WF_DW
|
|
FEAT_SS_DF_WF_DM
|
|
FEAT_SS_DF_WF_SS
|
|
FEAT_SS_DF_WF_SH
|
|
FEAT_SS_DF_WF_SD
|
|
FEAT_SS_DF_WF_TC
|
|
*/
|
|
|
|
void main()
|
|
{
|
|
object oCreature = OBJECT_SELF;
|
|
object oSkin = GetItemInSlot(INVENTORY_SLOT_CARMOUR, oCreature);
|
|
|
|
int bWarDomain = GetHasFeat(DOMAIN_WAR, oCreature) || GetHasFeat(FEAT_WAR_DOMAIN_POWER, oCreature);
|
|
|
|
int bSwordsage = GetLevelByClass(CLASS_TYPE_SWORDSAGE, oCreature);
|
|
|
|
if (!GetIsObjectValid(oSkin))
|
|
return;
|
|
|
|
int nLevel = GetHitDice(oCreature);
|
|
|
|
if(bSwordsage)
|
|
{
|
|
if (GetHasFeat(FEAT_SS_DF_WF_DW, oCreature)) //:: Desert Wind
|
|
{
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_SCIMITAR, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_LIGHT_MACE, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_SPEAR, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_LIGHT_PICK, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_FALCHION, nLevel);
|
|
}
|
|
if (GetHasFeat(FEAT_SS_DF_WF_DM, oCreature)) //:: Diamond Mind
|
|
{
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_KATANA, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_RAPIER, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_SPEAR, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_BASTARD_SWORD, nLevel);
|
|
}
|
|
if (GetHasFeat(FEAT_SS_DF_WF_SS, oCreature)) //:: Setting Sun
|
|
{
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_SHORT_SWORD, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_STAFF, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_UNARMED_STRIKE, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_NUNCHAKU, nLevel);
|
|
}
|
|
if (GetHasFeat(FEAT_SS_DF_WF_SH, oCreature)) //:: Shadow Hand
|
|
{
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_SHORT_SWORD, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_DAGGER, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_UNARMED_STRIKE, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_SAI, nLevel);
|
|
}
|
|
if (GetHasFeat(FEAT_SS_DF_WF_SD, oCreature)) //:: Stone Dragon
|
|
{
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_GREAT_SWORD, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_GREAT_AXE, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_UNARMED_STRIKE, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_HEAVY_MACE, nLevel);
|
|
}
|
|
if (GetHasFeat(FEAT_SS_DF_WF_TC, oCreature)) //:: Tiger Claw
|
|
{
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_GREAT_AXE, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_KAMA, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_UNARMED_STRIKE, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_KUKRI, nLevel);
|
|
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_HAND_AXE, nLevel);
|
|
}
|
|
}
|
|
|
|
itemproperty ipCheck = GetFirstItemProperty(oSkin);
|
|
while (GetIsItemPropertyValid(ipCheck))
|
|
{
|
|
if (GetItemPropertyType(ipCheck) == ITEM_PROPERTY_BONUS_FEAT)
|
|
{
|
|
int nIPFeat = GetItemPropertySubType(ipCheck);
|
|
int nMappedFeat = WF_IpropToFeat(nIPFeat);
|
|
|
|
if (nMappedFeat != -1)
|
|
{
|
|
NWNX_Creature_AddFeatByLevel(oCreature, nMappedFeat, nLevel);
|
|
SendMessageToPC(GetFirstPC(), "Weapon Focus feat applied via item property.");
|
|
}
|
|
}
|
|
|
|
ipCheck = GetNextItemProperty(oSkin);
|
|
}
|
|
} |