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.
118 lines
5.2 KiB
Plaintext
118 lines
5.2 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Swift Wing
|
|
//:: prc_swiftwing.nss
|
|
//::///////////////////////////////////////////////
|
|
/*
|
|
Handles the passive bonuses for Swift Wings
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Fox
|
|
//:: Created On: Nov 21, 2007
|
|
//:://////////////////////////////////////////////
|
|
#include "prc_x2_itemprop"
|
|
#include "inc_item_props"
|
|
|
|
void main()
|
|
{
|
|
object oPC = OBJECT_SELF;
|
|
object oSkin = GetPCSkin(oPC);
|
|
int nLevel = GetLevelByClass(CLASS_TYPE_SWIFT_WING, oPC);
|
|
|
|
//Energy Resistance/Immunity
|
|
if(nLevel > 3)
|
|
{
|
|
//Acid
|
|
if(GetHasFeat(FEAT_DRAGON_AFFINITY_BK, oPC)
|
|
|| GetHasFeat(FEAT_DRAGON_AFFINITY_CP, oPC)
|
|
|| GetHasFeat(FEAT_DRAGON_AFFINITY_GR, oPC))
|
|
{
|
|
if(nLevel > 8)
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_ACID, IP_CONST_DAMAGEIMMUNITY_100_PERCENT), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
|
else
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_ACID, IP_CONST_DAMAGERESIST_20), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
|
}
|
|
|
|
//Cold
|
|
else if(GetHasFeat(FEAT_DRAGON_AFFINITY_CR, oPC)
|
|
|| GetHasFeat(FEAT_DRAGON_AFFINITY_SR, oPC)
|
|
|| GetHasFeat(FEAT_DRAGON_AFFINITY_TP, oPC)
|
|
|| GetHasFeat(FEAT_DRAGON_AFFINITY_WH, oPC))
|
|
{
|
|
if(nLevel > 8)
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_COLD, IP_CONST_DAMAGEIMMUNITY_100_PERCENT), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
|
else
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_COLD, IP_CONST_DAMAGERESIST_20), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
|
}
|
|
|
|
//Electric
|
|
else if(GetHasFeat(FEAT_DRAGON_AFFINITY_BL, oPC)
|
|
|| GetHasFeat(FEAT_DRAGON_AFFINITY_BZ, oPC)
|
|
|| GetHasFeat(FEAT_DRAGON_AFFINITY_SA, oPC))
|
|
{
|
|
if(nLevel > 8)
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_ELECTRICAL, IP_CONST_DAMAGEIMMUNITY_100_PERCENT), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
|
else
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_ELECTRICAL, IP_CONST_DAMAGERESIST_20), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
|
}
|
|
|
|
//Fire
|
|
else if(GetHasFeat(FEAT_DRAGON_AFFINITY_BS, oPC)
|
|
|| GetHasFeat(FEAT_DRAGON_AFFINITY_GD, oPC)
|
|
|| GetHasFeat(FEAT_DRAGON_AFFINITY_RD, oPC)
|
|
|| GetHasFeat(FEAT_DRAGON_AFFINITY_AM, oPC))
|
|
{
|
|
if(nLevel > 8)
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_FIRE, IP_CONST_DAMAGEIMMUNITY_100_PERCENT), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
|
else
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_FIRE, IP_CONST_DAMAGERESIST_20), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
|
}
|
|
|
|
//Sonic
|
|
else if(GetHasFeat(FEAT_DRAGON_AFFINITY_EM, oPC))
|
|
{
|
|
if(nLevel > 8)
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_SONIC, IP_CONST_DAMAGEIMMUNITY_100_PERCENT), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
|
else
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_SONIC, IP_CONST_DAMAGERESIST_20), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
|
}
|
|
}
|
|
|
|
//Damage Reduction 5/+1 at level 7
|
|
if(nLevel > 6)
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageReduction(IP_CONST_DAMAGEREDUCTION_1, IP_CONST_DAMAGESOAK_5_HP), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
|
|
|
//Draconic Surge bonuses
|
|
if(nLevel > 9)
|
|
{
|
|
if(GetHasFeat(FEAT_DRACONIC_SURGE_STR, oPC))
|
|
{
|
|
if(!GetPersistantLocalInt(oPC, "NWNX_DragonicSurgeStr"))
|
|
SetCompositeBonus(oSkin, "DrSge_STR", 1, ITEM_PROPERTY_ABILITY_BONUS, IP_CONST_ABILITY_STR);
|
|
}
|
|
if(GetHasFeat(FEAT_DRACONIC_SURGE_DEX, oPC))
|
|
{
|
|
if(!GetPersistantLocalInt(oPC, "NWNX_DragonicSurgeDex"))
|
|
SetCompositeBonus(oSkin, "DrSge_DEX", 1, ITEM_PROPERTY_ABILITY_BONUS, IP_CONST_ABILITY_DEX);
|
|
}
|
|
if(GetHasFeat(FEAT_DRACONIC_SURGE_CON, oPC))
|
|
{
|
|
if(!GetPersistantLocalInt(oPC, "NWNX_DragonicSurgeCon"))
|
|
SetCompositeBonus(oSkin, "DrSge_CON", 1, ITEM_PROPERTY_ABILITY_BONUS, IP_CONST_ABILITY_CON);
|
|
}
|
|
if(GetHasFeat(FEAT_DRACONIC_SURGE_INT, oPC))
|
|
{
|
|
if(!GetPersistantLocalInt(oPC, "NWNX_DragonicSurgeInt"))
|
|
SetCompositeBonus(oSkin, "DrSge_INT", 1, ITEM_PROPERTY_ABILITY_BONUS, IP_CONST_ABILITY_INT);
|
|
}
|
|
if(GetHasFeat(FEAT_DRACONIC_SURGE_WIS, oPC))
|
|
{
|
|
if(!GetPersistantLocalInt(oPC, "NWNX_DragonicSurgeWis"))
|
|
SetCompositeBonus(oSkin, "DrSge_WIS", 1, ITEM_PROPERTY_ABILITY_BONUS, IP_CONST_ABILITY_WIS);
|
|
}
|
|
if(GetHasFeat(FEAT_DRACONIC_SURGE_CHA, oPC))
|
|
{
|
|
if(!GetPersistantLocalInt(oPC, "NWNX_DragonicSurgeCha"))
|
|
SetCompositeBonus(oSkin, "DrSge_CHA", 1, ITEM_PROPERTY_ABILITY_BONUS, IP_CONST_ABILITY_CHA);
|
|
}
|
|
}
|
|
} |