PoA_PRC8/_module/nss/swap_iprpfeat.nss
Jaysyn904 359b31c3c7 Updated for PRC8 v4.20
Updated for PRC8 v4.20
2025-05-31 01:01:06 -04:00

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);
}
}