Further file organization
Further file organization
This commit is contained in:
320
nwn/nwnprc/trunk/scripts/tmp_m_hceles.nss
Normal file
320
nwn/nwnprc/trunk/scripts/tmp_m_hceles.nss
Normal file
@@ -0,0 +1,320 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Name Half-Celestial template script
|
||||
//:: FileName tmp_m_hceles
|
||||
//:: Copyright (c) 2001 Bioware Corp.
|
||||
//:://////////////////////////////////////////////
|
||||
/*
|
||||
Half-Celestial
|
||||
|
||||
No matter the form, half-celestials are always comely and delightful to the senses, having golden skin,
|
||||
sparkling eyes, angelic wings, or some other sign of their higher nature.
|
||||
|
||||
Creating A Half-Celestial
|
||||
|
||||
"Half-celestial" is an inherited template that can be added to any living, corporeal creature with an
|
||||
Intelligence score of 4 or higher and nonevil alignment (referred to hereafter as the base creature).
|
||||
|
||||
A half-celestial uses all the base creature<72>s statistics and special abilities except as noted here.
|
||||
|
||||
Size and Type
|
||||
The creature<72>s type changes to outsider. Do not recalculate the creature<72>s Hit Dice, base attack bonus,
|
||||
or saves. Size is unchanged. Half-celestials are normally native outsiders.
|
||||
|
||||
Speed
|
||||
A half-celestial has feathered wings and can fly at twice the base creature<72>s base land speed
|
||||
(good maneuverability). If the base creature has a fly speed, use that instead.
|
||||
|
||||
Armor Class
|
||||
Natural armor improves by +1 (this stacks with any natural armor bonus the base creature has).
|
||||
|
||||
Special Attacks
|
||||
A half-celestial retains all the special attacks of the base creature and also gains the following special
|
||||
abilities.
|
||||
|
||||
Daylight (Su)
|
||||
Half-celestials can use a daylight effect (as the spell) at will.
|
||||
|
||||
Smite Evil (Su)
|
||||
Once per day a half-celestial can make a normal melee attack to deal extra damage equal to its HD
|
||||
(maximum of +20) against an evil foe.
|
||||
|
||||
HD Abilities
|
||||
1-2 Protection from evil 3/day, bless
|
||||
3-4 Aid, detect evil
|
||||
5-6 Cure serious wounds, neutralize poison
|
||||
7-8 Holy smite, remove disease
|
||||
9-10 Dispel evil
|
||||
11-12 Holy word
|
||||
13-14 Holy aura 3/day, hallow
|
||||
15-16 Mass charm monster
|
||||
17-18 Summon monster IX (celestials only)
|
||||
19-20 Resurrection
|
||||
|
||||
Spell-Like Abilities
|
||||
A half-celestial with an Intelligence or Wisdom score of 8 or higher has two or more spell-like abilities,
|
||||
depending on its Hit Dice, as indicated on the table below. The abilities are cumulative
|
||||
|
||||
Unless otherwise noted, an ability is usable once per day. Caster level equals the creature<72>s HD, and the
|
||||
save DC is Charisma-based.
|
||||
|
||||
Special Qualities
|
||||
A half-celestial has all the special qualities of the base creature, plus the following special qualities.
|
||||
|
||||
* Darkvision out to 60 feet.
|
||||
* Immunity to disease.
|
||||
* Resistance to acid 10, cold 10, and electricity 10.
|
||||
* Damage reduction: 5/magic (if HD 11 or less) or 10/magic (if HD 12 or more).
|
||||
* A half-celestial<61>s natural weapons are treated as magic weapons for the purpose of overcoming damage reduction.
|
||||
* Spell resistance equal to creature<72>s HD + 10 (maximum 35).
|
||||
* +4 racial bonus on Fortitude saves against poison.
|
||||
|
||||
Abilities
|
||||
Increase from the base creature as follows: Str +4, Dex +2, Con +4, Int +2, Wis +4, Cha +4.
|
||||
|
||||
Skills
|
||||
A half-celestial gains skill points as an outsider and has skill points equal to (8 + Int modifier) <20> (HD +3).
|
||||
Do not include Hit Dice from class levels in this calculation<6F>the half-celestial gains outsider skill points only for its racial Hit Dice, and gains the normal amount of skill points for its class levels. Treat skills from the base creature<72>s list as class skills, and other skills as cross-class.
|
||||
|
||||
Challenge Rating
|
||||
HD 5 or less, as base creature +1; HD 6 to 10, as base creature +2; HD 11 or more, as base creature +3.
|
||||
|
||||
Alignment
|
||||
Always good (any).
|
||||
|
||||
Level Adjustment
|
||||
Same as base creature +4.
|
||||
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Primogenitor
|
||||
//:: Created On: 18/04/06
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "pnp_shft_poly"
|
||||
#include "prc_inc_template"
|
||||
#include "inc_nwnx_funcs"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oPC = OBJECT_SELF;
|
||||
object oSkin = GetPCSkin(oPC);
|
||||
int nHD = GetHitDice(oPC);
|
||||
itemproperty ipIP;
|
||||
int bFuncs = GetPRCSwitch(PRC_NWNX_FUNCS);
|
||||
int iTest = GetPersistantLocalInt(oPC, "NWNX_Template_hceles");
|
||||
|
||||
//wings
|
||||
DoWings(oPC, CREATURE_WING_TYPE_ANGEL);
|
||||
|
||||
if(bFuncs && !iTest)
|
||||
{
|
||||
SetPersistantLocalInt(oPC, "NWNX_Template_hceles", 1);
|
||||
//ability mods
|
||||
PRC_Funcs_ModAbilityScore(oPC, ABILITY_STRENGTH, 4);
|
||||
PRC_Funcs_ModAbilityScore(oPC, ABILITY_DEXTERITY, 2);
|
||||
PRC_Funcs_ModAbilityScore(oPC, ABILITY_CONSTITUTION, 4);
|
||||
PRC_Funcs_ModAbilityScore(oPC, ABILITY_INTELLIGENCE, 2);
|
||||
PRC_Funcs_ModAbilityScore(oPC, ABILITY_WISDOM, 4);
|
||||
PRC_Funcs_ModAbilityScore(oPC, ABILITY_CHARISMA, 4);
|
||||
//feats
|
||||
//smite evil
|
||||
PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_SMITE_EVIL);
|
||||
//marker feat
|
||||
PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_MARKER);
|
||||
//daylight
|
||||
PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_DAYLIGHT);
|
||||
}
|
||||
else if(!bFuncs && !iTest)
|
||||
{
|
||||
//ability mods
|
||||
SetCompositeBonus(oSkin, "Template_hceles_str", 4, ITEM_PROPERTY_ABILITY_BONUS, IP_CONST_ABILITY_STR);
|
||||
SetCompositeBonus(oSkin, "Template_hceles_dex", 2, ITEM_PROPERTY_ABILITY_BONUS, IP_CONST_ABILITY_DEX);
|
||||
SetCompositeBonus(oSkin, "Template_hceles_con", 4, ITEM_PROPERTY_ABILITY_BONUS, IP_CONST_ABILITY_CON);
|
||||
SetCompositeBonus(oSkin, "Template_hceles_int", 2, ITEM_PROPERTY_ABILITY_BONUS, IP_CONST_ABILITY_INT);
|
||||
SetCompositeBonus(oSkin, "Template_hceles_wis", 4, ITEM_PROPERTY_ABILITY_BONUS, IP_CONST_ABILITY_WIS);
|
||||
SetCompositeBonus(oSkin, "Template_hceles_cha", 4, ITEM_PROPERTY_ABILITY_BONUS, IP_CONST_ABILITY_CHA);
|
||||
//feats
|
||||
//smite evil
|
||||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_TEMPLATE_HALF_CELESTIAL_SMITE_EVIL);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
//marker feat
|
||||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_TEMPLATE_HALF_CELESTIAL_MARKER);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
//daylight
|
||||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_TEMPLATE_HALF_CELESTIAL_DAYLIGHT);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
}
|
||||
|
||||
//naturalAC
|
||||
SetCompositeBonus(oSkin, "Template_hceles_natAC", 1, ITEM_PROPERTY_AC_BONUS);
|
||||
//darkvision
|
||||
ipIP = ItemPropertyDarkvision();
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
//immunity to disease
|
||||
ipIP = ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_DISEASE);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
//resistance to acid 10 cold 10 elec 10
|
||||
ipIP = ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_COLD, IP_CONST_DAMAGERESIST_10);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
ipIP = ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_ACID, IP_CONST_DAMAGERESIST_10);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
ipIP = ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_ELECTRICAL, IP_CONST_DAMAGERESIST_10);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
//damage reduction 5/+1 or 10/+1
|
||||
if(nHD <= 11)
|
||||
{
|
||||
ipIP = ItemPropertyDamageReduction(IP_CONST_DAMAGEREDUCTION_1, IP_CONST_DAMAGESOAK_5_HP);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
}
|
||||
else if(nHD >= 12)
|
||||
{
|
||||
ipIP = ItemPropertyDamageReduction(IP_CONST_DAMAGEREDUCTION_1, IP_CONST_DAMAGESOAK_10_HP);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
}
|
||||
//SR
|
||||
int nSR = nHD+10;
|
||||
if(nSR > 35)
|
||||
nSR = 35;
|
||||
ipIP = ItemPropertyBonusSpellResistance(GetSRByValue(nSR));
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
//+4 vs poison
|
||||
SetCompositeBonus(oSkin, "Template_hceles_poison", 4, ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC, IP_CONST_SAVEVS_POISON);
|
||||
|
||||
//SLAs
|
||||
if(GetAbilityScore(oPC,ABILITY_WISDOM, TRUE) >= 8
|
||||
|| GetAbilityScore(oPC, ABILITY_INTELLIGENCE, TRUE) >= 8)
|
||||
{
|
||||
if(bFuncs)
|
||||
{
|
||||
if(!PRC_Funcs_GetFeatKnown(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_PROTECTION))
|
||||
PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_PROTECTION);
|
||||
if(!PRC_Funcs_GetFeatKnown(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_BLESS))
|
||||
PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_BLESS);
|
||||
if(nHD >= 3)
|
||||
{
|
||||
if(!PRC_Funcs_GetFeatKnown(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_AID))
|
||||
PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_AID, 3);
|
||||
if(!PRC_Funcs_GetFeatKnown(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_DETECT))
|
||||
PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_DETECT, 3);
|
||||
}
|
||||
if(nHD >= 5)
|
||||
{
|
||||
if(!PRC_Funcs_GetFeatKnown(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_CURE_SERIOUS))
|
||||
PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_CURE_SERIOUS, 5);
|
||||
if(!PRC_Funcs_GetFeatKnown(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_NEUTRALIZE_POISON))
|
||||
PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_NEUTRALIZE_POISON, 5);
|
||||
}
|
||||
if(nHD >= 7)
|
||||
{
|
||||
//if(!PRC_Funcs_GetFeatKnown(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_HOLY_SMITE))
|
||||
// PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_HOLY_SMITE, 7);
|
||||
if(!PRC_Funcs_GetFeatKnown(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_REMOVE_DISEASE))
|
||||
PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_REMOVE_DISEASE, 7);
|
||||
}
|
||||
if(nHD >= 9)
|
||||
{
|
||||
//if(!PRC_Funcs_GetFeatKnown(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_DISPEL_EVIL))
|
||||
// PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_DISPEL_EVIL, 9);
|
||||
}
|
||||
if(nHD >= 11)
|
||||
{
|
||||
if(!PRC_Funcs_GetFeatKnown(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_HOLY_WORD))
|
||||
PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_HOLY_WORD, 11);
|
||||
}
|
||||
if(nHD >= 13)
|
||||
{
|
||||
if(!PRC_Funcs_GetFeatKnown(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_HOLY_AURA))
|
||||
PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_HOLY_AURA, 13);
|
||||
//if(!PRC_Funcs_GetFeatKnown(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_HALLOW))
|
||||
// PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_HALLOW, 13);
|
||||
}
|
||||
if(nHD >= 15)
|
||||
{
|
||||
if(!PRC_Funcs_GetFeatKnown(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_MASS_CHARM))
|
||||
PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_MASS_CHARM, 15);
|
||||
}
|
||||
if(nHD >= 17)
|
||||
{
|
||||
if(!PRC_Funcs_GetFeatKnown(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_SUMMON_IX))
|
||||
PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_SUMMON_IX, 17);
|
||||
}
|
||||
if(nHD >= 19)
|
||||
{
|
||||
if(!PRC_Funcs_GetFeatKnown(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_RESURRECTION))
|
||||
PRC_Funcs_AddFeat(oPC, FEAT_TEMPLATE_HALF_CELESTIAL_RESURRECTION, 19);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//protection from evil 3/day
|
||||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_TEMPLATE_HALF_CELESTIAL_PROTECTION);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
//bless 1/day
|
||||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_TEMPLATE_HALF_CELESTIAL_BLESS);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
if(nHD >= 3)
|
||||
{
|
||||
//aid 1/day
|
||||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_TEMPLATE_HALF_CELESTIAL_AID);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
//detect evil 1/day
|
||||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_TEMPLATE_HALF_CELESTIAL_DETECT);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
}
|
||||
if(nHD >= 5)
|
||||
{
|
||||
//cure serious wounds 1/day
|
||||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_TEMPLATE_HALF_CELESTIAL_CURE_SERIOUS);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
//neutralize poison 1/day
|
||||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_TEMPLATE_HALF_CELESTIAL_NEUTRALIZE_POISON);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
}
|
||||
if(nHD >= 7)
|
||||
{
|
||||
//holy smite 1/day
|
||||
//TO BE ADDED
|
||||
//remove disease 1/day
|
||||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_TEMPLATE_HALF_CELESTIAL_REMOVE_DISEASE);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
}
|
||||
if(nHD >= 9)
|
||||
{
|
||||
//dispel evil 1/day
|
||||
//TO BE ADDED
|
||||
}
|
||||
if(nHD >= 11)
|
||||
{
|
||||
//holy word 1/day
|
||||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_TEMPLATE_HALF_CELESTIAL_HOLY_WORD);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
}
|
||||
if(nHD >= 13)
|
||||
{
|
||||
//holy aura 3.day
|
||||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_TEMPLATE_HALF_CELESTIAL_HOLY_AURA);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
//hallow 1/day
|
||||
//TO BE ADDED
|
||||
}
|
||||
if(nHD >= 15)
|
||||
{
|
||||
//mass charm monster 1/day
|
||||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_TEMPLATE_HALF_CELESTIAL_MASS_CHARM);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
}
|
||||
if(nHD >= 17)
|
||||
{
|
||||
//summon monster IX 1/day
|
||||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_TEMPLATE_HALF_CELESTIAL_SUMMON_IX);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
}
|
||||
if(nHD >= 19)
|
||||
{
|
||||
//resurrection
|
||||
ipIP = PRCItemPropertyBonusFeat(IP_CONST_FEAT_TEMPLATE_HALF_CELESTIAL_RESURRECTION);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user