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.
105 lines
4.9 KiB
Plaintext
105 lines
4.9 KiB
Plaintext
//::///////////////////////////////////////////////
|
||
//:: Name Necropolitan template script
|
||
//:: FileName tmp_m_necropol
|
||
//::
|
||
//:://////////////////////////////////////////////
|
||
/* CREATING A NECROPOLITAN
|
||
Necropolitan is an acquired template that can be added to
|
||
any humanoid or monstrous humanoid (referred to here after as the base creature).
|
||
A necropolitan speaks any languages it knew in life, and it
|
||
has all the base creature<72>s statistics and special abilities except
|
||
as noted here.
|
||
|
||
Size and Type: The creature<72>s type changes to undead, and
|
||
it gains the augmented subtype. Do not recalculate base attack
|
||
bonus, saves, or skill points. Size is unchanged.
|
||
|
||
Hit Dice: Increase to d12.
|
||
|
||
Special Qualities: A necropolitan retains all the special
|
||
qualities of the base creature and gains those described below.
|
||
|
||
Resist Control (Ex): Necropolitans have a +2 profane bonus on their
|
||
Will saving throws to resist the effect of a control undead spell.
|
||
|
||
Turn Resistance (Ex): A necropolitan has +2 turn resistance.
|
||
|
||
Unnatural Resilience (Ex): Necropolitans automatically heal
|
||
hit point damage and ability damage at the same rate as a living
|
||
creature. The Heal skill has no effect on necropolitans; however,
|
||
negative energy (such as an infl ict spell) heals them.
|
||
|
||
Abilities: Same as the base creature, except that as undead
|
||
creatures, necropolitans have no Constitution score.
|
||
|
||
Advancement: By character class.
|
||
|
||
Level Adjustment: Same as the base creature. (Becoming a
|
||
necropolitan involves losing a level so the advantages of the undead type
|
||
cancel out what would other wise be a larger adjustment.)
|
||
*/
|
||
//:://////////////////////////////////////////////
|
||
//:: Created By: Tenjac
|
||
//:: Created On: 5/6/08
|
||
//:://////////////////////////////////////////////
|
||
|
||
#include "prc_inc_template"
|
||
#include "inc_nwnx_funcs"
|
||
|
||
void main()
|
||
{
|
||
object oPC = OBJECT_SELF;
|
||
object oSkin = GetPCSkin(oPC);
|
||
itemproperty ipIP;
|
||
int bFuncs = GetPRCSwitch(PRC_NWNX_FUNCS);
|
||
int iTest = GetPersistantLocalInt(oPC, "NWNX_Template_necropolitan");
|
||
|
||
//NOTE: this maintains the Necropolitan template
|
||
int nTurnResist = 2;
|
||
SetCompositeBonus(oSkin, "Template_necropol_turnresist", nTurnResist, ITEM_PROPERTY_TURN_RESISTANCE);
|
||
|
||
if(bFuncs && !iTest)
|
||
{
|
||
SetPersistantLocalInt(oPC, "NWNX_Template_necropolitan", 1);
|
||
PRC_Funcs_AddFeat(oPC, FEAT_UNDEAD_HD);
|
||
PRC_Funcs_AddFeat(oPC, FEAT_IMMUNITY_ABILITY_DECREASE);
|
||
PRC_Funcs_AddFeat(oPC, FEAT_IMMUNITY_CRITICAL);
|
||
PRC_Funcs_AddFeat(oPC, FEAT_IMMUNITY_DEATH);
|
||
PRC_Funcs_AddFeat(oPC, FEAT_IMMUNITY_DISEASE);
|
||
PRC_Funcs_AddFeat(oPC, FEAT_IMMUNITY_MIND_SPELLS);
|
||
PRC_Funcs_AddFeat(oPC, FEAT_IMMUNITY_PARALYSIS);
|
||
PRC_Funcs_AddFeat(oPC, FEAT_IMMUNITY_POISON);
|
||
PRC_Funcs_AddFeat(oPC, FEAT_IMMUNITY_SNEAKATTACK);
|
||
PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_NECROPOLITAN_MARKER);
|
||
}
|
||
else
|
||
{
|
||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_UNDEAD_HD);
|
||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_IMMUNITY_ABILITY_DECREASE);
|
||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_IMMUNITY_CRITICAL);
|
||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_IMMUNITY_DEATH);
|
||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_IMMUNITY_DISEASE);
|
||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_IMMUNITY_MIND_SPELLS);
|
||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_IMMUNITY_PARALYSIS);
|
||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_IMMUNITY_POISON);
|
||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_IMMUNITY_SNEAKATTACK);
|
||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||
//marker feat
|
||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_TEMPLATE_NECROPOLITAN_MARKER);
|
||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||
|
||
// Bugfix
|
||
ipIP = ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_NEGATIVE, IP_CONST_DAMAGEIMMUNITY_100_PERCENT);
|
||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||
}
|
||
|
||
if(DEBUG) SendMessageToPC(oPC, "You have feat Undead HD = "+IntToString(GetHasFeat(FEAT_UNDEAD_HD, oPC)));
|
||
} |