PRC8/nwn/nwnprc/trunk/scripts/prc_rotdfeat.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
Updated AMS marker feats.  Removed arcane & divine marker feats.  Updated Dread Necromancer for epic progression. Updated weapon baseitem models.  Updated new weapons for crafting & npc equip.
 Updated prefix.  Updated release archive.
2024-02-11 14:01:05 -05:00

154 lines
8.0 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Races of the Dragon Feats
//:: prc_rotdfeat.nss
//::///////////////////////////////////////////////
/*
Handles the following feats from Races of the Dragon:
Dragon Tail
Dragon Wings
Dragonwrought
*/
//:://////////////////////////////////////////////
//:: Created By: Fox
//:: Created On: Nov 13, 2007
//:://////////////////////////////////////////////
void dragonwrought(object oSkin);
#include "pnp_shft_poly"
#include "prc_inc_natweap"
#include "prc_x2_itemprop"
//the feats common to all dragonwrought
void dragonwrought(object oSkin)
{
IPSafeAddItemProperty(oSkin, ItemPropertyBonusFeat(IP_CONST_FEAT_DRAGON), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
IPSafeAddItemProperty(oSkin, ItemPropertyDarkvision(), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
IPSafeAddItemProperty(oSkin, ItemPropertyBonusFeat(IP_CONST_FEAT_DRAGON_IMMUNE), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
}
void main()
{
object oPC = OBJECT_SELF;
object oSkin = GetPCSkin(oPC);
int nSize = PRCGetCreatureSize(oPC);
int nWingType;
int nTailType;
//wings
if (GetHasFeat(FEAT_KOB_DRAGONWROUGHT_BK) || GetHasFeat(FEAT_DRACONIC_HERITAGE_BK)) nWingType = PRC_WING_TYPE_DRAGON_BLACK;
else if (GetHasFeat(FEAT_KOB_DRAGONWROUGHT_BL) || GetHasFeat(FEAT_KOB_DRAGONWROUGHT_AM) || GetHasFeat(FEAT_KOB_DRAGONWROUGHT_SA) || GetHasFeat(FEAT_KOB_DRAGONWROUGHT_TP) || GetHasFeat(FEAT_DRACONIC_HERITAGE_BL) || GetHasFeat(FEAT_DRACONIC_HERITAGE_AM) || GetHasFeat(FEAT_DRACONIC_HERITAGE_SA) || GetHasFeat(FEAT_DRACONIC_HERITAGE_TP)) nWingType = PRC_WING_TYPE_DRAGON_BLUE;
else if (GetHasFeat(FEAT_KOB_DRAGONWROUGHT_GR) || GetHasFeat(FEAT_KOB_DRAGONWROUGHT_EM) || GetHasFeat(FEAT_DRACONIC_HERITAGE_GR) || GetHasFeat(FEAT_DRACONIC_HERITAGE_EM)) nWingType = PRC_WING_TYPE_DRAGON_GREEN;
else if (GetHasFeat(FEAT_KOB_DRAGONWROUGHT_RD) || GetHasFeat(FEAT_DRACONIC_HERITAGE_RD)) nWingType = PRC_WING_TYPE_DRAGON_RED;
else if (GetHasFeat(FEAT_KOB_DRAGONWROUGHT_WH) || GetHasFeat(FEAT_DRACONIC_HERITAGE_WH)) nWingType = PRC_WING_TYPE_DRAGON_WHITE;
else if (GetHasFeat(FEAT_KOB_DRAGONWROUGHT_CR) || GetHasFeat(FEAT_KOB_DRAGONWROUGHT_SR) || GetHasFeat(FEAT_DRACONIC_HERITAGE_CR) || GetHasFeat(FEAT_DRACONIC_HERITAGE_SR)) nWingType = PRC_WING_TYPE_DRAGON_SILVER;
else if (GetHasFeat(FEAT_KOB_DRAGONWROUGHT_BS) || GetHasFeat(FEAT_DRACONIC_HERITAGE_BS)) nWingType = PRC_WING_TYPE_DRAGON_BRASS;
else if (GetHasFeat(FEAT_KOB_DRAGONWROUGHT_BZ) || GetHasFeat(FEAT_DRACONIC_HERITAGE_BZ)) nWingType = PRC_WING_TYPE_DRAGON_BRONZE;
else if (GetHasFeat(FEAT_KOB_DRAGONWROUGHT_CP) || GetHasFeat(FEAT_DRACONIC_HERITAGE_CP)) nWingType = PRC_WING_TYPE_DRAGON_COPPER;
else if (GetHasFeat(FEAT_KOB_DRAGONWROUGHT_GD) || GetHasFeat(FEAT_DRACONIC_HERITAGE_GD)) nWingType = PRC_WING_TYPE_DRAGON_GOLD;
else nWingType = PRC_WING_TYPE_DRAGON_RED;
//Tails
if (GetHasFeat(FEAT_KOB_DRAGONWROUGHT_BK) || GetHasFeat(FEAT_DRACONIC_HERITAGE_BK)) nTailType = PRC_TAIL_TYPE_DRAGON_BLACK;
else if (GetHasFeat(FEAT_KOB_DRAGONWROUGHT_BL) || GetHasFeat(FEAT_KOB_DRAGONWROUGHT_AM) || GetHasFeat(FEAT_KOB_DRAGONWROUGHT_SA) || GetHasFeat(FEAT_KOB_DRAGONWROUGHT_TP) || GetHasFeat(FEAT_DRACONIC_HERITAGE_BL) || GetHasFeat(FEAT_DRACONIC_HERITAGE_AM) || GetHasFeat(FEAT_DRACONIC_HERITAGE_SA) || GetHasFeat(FEAT_DRACONIC_HERITAGE_TP)) nTailType = PRC_TAIL_TYPE_DRAGON_BLUE;
else if (GetHasFeat(FEAT_KOB_DRAGONWROUGHT_GR) || GetHasFeat(FEAT_KOB_DRAGONWROUGHT_EM) || GetHasFeat(FEAT_DRACONIC_HERITAGE_GR) || GetHasFeat(FEAT_DRACONIC_HERITAGE_EM)) nTailType = PRC_TAIL_TYPE_DRAGON_GREEN;
else if (GetHasFeat(FEAT_KOB_DRAGONWROUGHT_RD) || GetHasFeat(FEAT_DRACONIC_HERITAGE_RD)) nTailType = PRC_TAIL_TYPE_DRAGON_RED;
else if (GetHasFeat(FEAT_KOB_DRAGONWROUGHT_WH) || GetHasFeat(FEAT_DRACONIC_HERITAGE_WH)) nTailType = PRC_TAIL_TYPE_DRAGON_WHITE;
else if (GetHasFeat(FEAT_KOB_DRAGONWROUGHT_CR) || GetHasFeat(FEAT_KOB_DRAGONWROUGHT_SR) || GetHasFeat(FEAT_DRACONIC_HERITAGE_CR) || GetHasFeat(FEAT_DRACONIC_HERITAGE_SR)) nTailType = PRC_TAIL_TYPE_DRAGON_SILVER;
else if ((GetRacialType(oPC) == RACIAL_TYPE_BOZAK) || GetHasFeat(FEAT_KOB_DRAGONWROUGHT_BS) || GetHasFeat(FEAT_DRACONIC_HERITAGE_BS)) nTailType = PRC_TAIL_TYPE_DRAGON_BRASS;
else if ((GetRacialType(oPC) == RACIAL_TYPE_BAAZ) || GetHasFeat(FEAT_KOB_DRAGONWROUGHT_BZ) || GetHasFeat(FEAT_DRACONIC_HERITAGE_BZ)) nTailType = PRC_TAIL_TYPE_DRAGON_BRONZE;
else if ((GetRacialType(oPC) == RACIAL_TYPE_KAPAK) || GetHasFeat(FEAT_KOB_DRAGONWROUGHT_CP) || GetHasFeat(FEAT_DRACONIC_HERITAGE_CP)) nTailType = PRC_TAIL_TYPE_DRAGON_COPPER;
else if (GetHasFeat(FEAT_KOB_DRAGONWROUGHT_GD) || GetHasFeat(FEAT_DRACONIC_HERITAGE_GD)) nTailType = PRC_TAIL_TYPE_DRAGON_GOLD;
else nTailType = PRC_TAIL_TYPE_DRAGON_RED;
//Adds the dragon tail
if(GetHasFeat(FEAT_KOB_DRAGON_TAIL, oPC))
{
string sResRef = "prc_kobdratail_";
sResRef += GetAffixForSize(nSize);
if(DEBUG) DoDebug(sResRef);
AddNaturalSecondaryWeapon(oPC, sResRef);
DoTail(oPC, nTailType);
}
//Adds the wings
if(GetHasFeat(FEAT_KOB_DRAGON_WING_A, oPC)
|| GetHasFeat(FEAT_KOB_DRAGON_WING_BC, oPC)
|| GetHasFeat(FEAT_KOB_DRAGON_WING_BG, oPC)
|| GetHasFeat(FEAT_KOB_DRAGON_WING_BM, oPC))
{
SetCompositeBonus(oSkin, "Dragon_Glide", 10, ITEM_PROPERTY_SKILL_BONUS, SKILL_JUMP);
DoWings(oPC, nWingType);
}
//+2 to Hide for Black, Blue, White, and Copper heritage
if(GetHasFeat(FEAT_KOB_DRAGONWROUGHT_BK, oPC)
|| GetHasFeat(FEAT_KOB_DRAGONWROUGHT_BL, oPC)
|| GetHasFeat(FEAT_KOB_DRAGONWROUGHT_WH, oPC)
|| GetHasFeat(FEAT_KOB_DRAGONWROUGHT_CP, oPC))
{
dragonwrought(oSkin);
SetCompositeBonus(oSkin, "DA_Hide", 2, ITEM_PROPERTY_SKILL_BONUS, SKILL_HIDE);
}
//+2 to Appraise for Red heritage
if(GetHasFeat(FEAT_KOB_DRAGONWROUGHT_RD, oPC))
{
dragonwrought(oSkin);
SetCompositeBonus(oSkin, "DA_Appraise", 2, ITEM_PROPERTY_SKILL_BONUS, SKILL_APPRAISE);
}
//+2 to Move Silently for Green heritage
if(GetHasFeat(FEAT_KOB_DRAGONWROUGHT_GR, oPC))
{
dragonwrought(oSkin);
SetCompositeBonus(oSkin, "DA_Move_Silent", 2, ITEM_PROPERTY_SKILL_BONUS, SKILL_MOVE_SILENTLY);
}
//+2 to Persuade(Diplomacy) for Amethyst and Crystal heritage
if(GetHasFeat(FEAT_KOB_DRAGONWROUGHT_AM, oPC)
|| GetHasFeat(FEAT_KOB_DRAGONWROUGHT_CR, oPC))
{
dragonwrought(oSkin);
SetCompositeBonus(oSkin, "DA_Persuade", 2, ITEM_PROPERTY_SKILL_BONUS, SKILL_PERSUADE);
}
//+2 to Lore for Emerald, Sapphire, and Brass Heritage. Brass should
//have Gather Information, using Lore as substitute.
if(GetHasFeat(FEAT_KOB_DRAGONWROUGHT_EM, oPC)
|| GetHasFeat(FEAT_KOB_DRAGONWROUGHT_SA, oPC)
|| GetHasFeat(FEAT_KOB_DRAGONWROUGHT_BS, oPC))
{
dragonwrought(oSkin);
SetCompositeBonus(oSkin, "DA_Lore", 2, ITEM_PROPERTY_SKILL_BONUS, SKILL_LORE);
}
//+2 to Jump for Topaz, standing in for the +2 to Swim they should have
if(GetHasFeat(FEAT_KOB_DRAGONWROUGHT_TP, oPC))
{
dragonwrought(oSkin);
SetCompositeBonus(oSkin, "DA_Jump", 2, ITEM_PROPERTY_SKILL_BONUS, SKILL_JUMP);
}
//+2 to Search for Bronze, standing in for +2 to Survival
if(GetHasFeat(FEAT_KOB_DRAGONWROUGHT_BZ, oPC))
{
dragonwrought(oSkin);
SetCompositeBonus(oSkin, "DA_Search", 2, ITEM_PROPERTY_SKILL_BONUS, SKILL_SEARCH);
}
//+2 to Heal for Gold heritage
if(GetHasFeat(FEAT_KOB_DRAGONWROUGHT_GD, oPC))
{
dragonwrought(oSkin);
SetCompositeBonus(oSkin, "DA_Heal", 2, ITEM_PROPERTY_SKILL_BONUS, SKILL_HEAL);
}
//+2 to Bluff for Silver heritage, standing in for +2 to Disguise
if(GetHasFeat(FEAT_KOB_DRAGONWROUGHT_SR, oPC))
{
dragonwrought(oSkin);
SetCompositeBonus(oSkin, "DA_Bluff", 2, ITEM_PROPERTY_SKILL_BONUS, SKILL_BLUFF);
}
}