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.
117 lines
5.8 KiB
Plaintext
117 lines
5.8 KiB
Plaintext
//:://///////////////////////////////////////////////////////
|
|
//:: Name: Baelnorn Abilities, Properties, and Defense Script
|
|
//:: FileName prc_baelnorn.nss
|
|
//:: Copyright (c) 2001 Bioware Corp.
|
|
//::////////////////////////////////////////////////////////
|
|
//* Handles the attributes of the Baelnorn.
|
|
|
|
//*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Mike Adams
|
|
//:: Created On: 7/9/2004
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "inc_item_props"
|
|
#include "prc_x2_itemprop"
|
|
|
|
//Baelnorn Property bonus function
|
|
void BaelnProp (object oPC, object oSkin, int nBonus)
|
|
{
|
|
int iTest = GetPersistantLocalInt(oPC, "NWNX_BaelnornSkill");
|
|
int nDiff = nBonus - iTest;
|
|
|
|
if(nDiff != 0)
|
|
{
|
|
SetCompositeBonus(oSkin, "BaelnPropSp", nDiff, ITEM_PROPERTY_SKILL_BONUS, SKILL_SPOT);
|
|
SetCompositeBonus(oSkin, "BaelnPropH", nDiff, ITEM_PROPERTY_SKILL_BONUS, SKILL_HIDE);
|
|
SetCompositeBonus(oSkin, "BaelnPropL", nDiff, ITEM_PROPERTY_SKILL_BONUS, SKILL_LISTEN);
|
|
SetCompositeBonus(oSkin, "BaelnPropM", nDiff, ITEM_PROPERTY_SKILL_BONUS, SKILL_MOVE_SILENTLY);
|
|
SetCompositeBonus(oSkin, "BaelnPropS", nDiff, ITEM_PROPERTY_SKILL_BONUS, SKILL_SEARCH);
|
|
SetCompositeBonus(oSkin, "BaelnPropP", nDiff, ITEM_PROPERTY_SKILL_BONUS, SKILL_PERSUADE);
|
|
}
|
|
}
|
|
|
|
//Baelnorn Ability bonus function
|
|
void BaelnAbil (object oPC, object oSkin, int nLevel)
|
|
{
|
|
switch(nLevel)
|
|
{
|
|
case 4:
|
|
if(!GetPersistantLocalInt(oPC, "NWNX_BaelnornCha"))
|
|
SetCompositeBonus(oSkin, "BaelnAbilC", 2, ITEM_PROPERTY_ABILITY_BONUS, ABILITY_CHARISMA);
|
|
case 3:
|
|
if(!GetPersistantLocalInt(oPC, "NWNX_BaelnornWis"))
|
|
SetCompositeBonus(oSkin, "BaelnAbilW", 2, ITEM_PROPERTY_ABILITY_BONUS, ABILITY_WISDOM);
|
|
case 2:
|
|
case 1:
|
|
if(!GetPersistantLocalInt(oPC, "NWNX_BaelnornInt"))
|
|
SetCompositeBonus(oSkin, "BaelnAbilI", 2, ITEM_PROPERTY_ABILITY_BONUS, ABILITY_INTELLIGENCE);
|
|
break;
|
|
default:
|
|
WriteTimestampedLogEntry("Unknown nLevel parameter passed to BaelnAbil: " + IntToString(nLevel));
|
|
}
|
|
}
|
|
|
|
//Baelnorn Defense bonus function
|
|
void BaelnDef (object oSkin, int nLevel)
|
|
{
|
|
// Added this in - Strat
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_NEGATIVE, IP_CONST_DAMAGEIMMUNITY_100_PERCENT), 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
|
|
//SetCompositeBonus(oSkin, "BaelnDefA", nLevel + 1, AC_NATURAL_BONUS, ITEM_PROPERTY_AC_BONUS);
|
|
|
|
switch (nLevel)
|
|
{
|
|
case 1:
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_COLD, IP_CONST_DAMAGERESIST_5),
|
|
0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_ELECTRICAL, IP_CONST_DAMAGERESIST_5),
|
|
0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
|
|
break;
|
|
case 2:
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_COLD, IP_CONST_DAMAGERESIST_10),
|
|
0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_ELECTRICAL, IP_CONST_DAMAGERESIST_10),
|
|
0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageReduction(IP_CONST_DAMAGEREDUCTION_1, IP_CONST_DAMAGESOAK_5_HP),
|
|
0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
|
|
break;
|
|
case 3:
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_COLD, IP_CONST_DAMAGERESIST_20),
|
|
0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_ELECTRICAL, IP_CONST_DAMAGERESIST_20),
|
|
0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageReduction(IP_CONST_DAMAGEREDUCTION_1, IP_CONST_DAMAGESOAK_10_HP),
|
|
0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
|
|
break;
|
|
case 4:
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_COLD, IP_CONST_DAMAGEIMMUNITY_100_PERCENT),
|
|
0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_ELECTRICAL, IP_CONST_DAMAGEIMMUNITY_100_PERCENT),
|
|
0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
|
|
IPSafeAddItemProperty(oSkin, ItemPropertyDamageReduction(IP_CONST_DAMAGEREDUCTION_1, IP_CONST_DAMAGESOAK_15_HP),
|
|
0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
|
|
break;
|
|
|
|
default:
|
|
WriteTimestampedLogEntry("Unknown nLevel parameter passed to BaelnDef: " + IntToString(nLevel));
|
|
}
|
|
}
|
|
|
|
|
|
//main method
|
|
void main()
|
|
{
|
|
//define vars
|
|
object oPC = OBJECT_SELF;
|
|
object oSkin = GetPCSkin(oPC);
|
|
int nLevel = GetLevelByClass(CLASS_TYPE_BAELNORN, oPC);
|
|
int nBonus = nLevel * 2;
|
|
|
|
BaelnProp(oPC, oSkin, nBonus);
|
|
//BaelnAbil(oPC, oSkin, nLevel);
|
|
BaelnDef(oSkin, nLevel);
|
|
|
|
//Eyes
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_BAELN_EYES, oPC, METAMAGIC_NONE, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_UNDEAD_HD), 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
|
} |