Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
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);
|
|
} |