1
Help / Re: Compiling Scripts
« on: February 19, 2012, 05:18:28 PM »
Thanks Alex, the remove onRest check script did the trick for me.
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
//::///////////////////////////////////////////////
//:: Dragon Disciple Immunities
//:: prc_dradis.nss
//::///////////////////////////////////////////////
/*
Applies a variety of immunities to the multiple dragon disciple types.
*/
//:://////////////////////////////////////////////
//:: Created By: Silver
//:: Created On: Apr 27, 2005
//:://////////////////////////////////////////////
#include "prc_inc_natweap"
#include "prc_ip_srcost"
#include "pnp_shft_poly"
#include "prc_compan_inc"
//Adds total elemental immunity for the majority of dragon types.
void ElImmune(object oPC ,object oSkin ,int bResisEle ,int iType)
{
DelayCommand(0.1, AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyDamageImmunity(iType,bResisEle),oSkin));
}
//Adds poison immunity for certain dragon types.
//also adds immunity to level drain for shadow dragons.
void PoisImmu(object oPC ,object oSkin ,int bResisEle ,int pImmune)
{
DelayCommand(0.1, AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyImmunityMisc(pImmune),oSkin));
}
//Adds disease immunity for certain dragon types.
void DisImmu(object oPC ,object oSkin ,int bResisEle ,int dImmune)
{
DelayCommand(0.1, AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyImmunityMisc(dImmune),oSkin));
}
//Adds specific spell immunities for certain dragon types.
void SpellImmu(object oPC ,object oSkin ,int bResisEle ,int iSpell)
{
DelayCommand(0.1, AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertySpellImmunitySpecific(iSpell),oSkin));
}
//Adds more spell immunities for certain dragon types.
void SpellImmu2(object oPC ,object oSkin ,int bResisEle ,int iSpel2)
{
DelayCommand(0.1, AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertySpellImmunitySpecific(iSpel2),oSkin));
}
//Adds resistance 10 to cold and fire damage.
void SmallResist(object oPC ,object oSkin ,int bResisEle ,int sResis)
{
DelayCommand(0.1, AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_FIRE,sResis),oSkin));
DelayCommand(0.1, AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_COLD,sResis),oSkin));
}
//Adds immunity 50% to sonic and fire damage.
void LargeResist(object oPC ,object oSkin ,int bResisEle ,int lResis)
{
DelayCommand(0.1, AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_FIRE,lResis),oSkin));
DelayCommand(0.1, AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_SONIC,lResis),oSkin));
}
//Adds Spell Resistance of 20+Level to all Dragon Disciples at level 18.
void SpellResis(object oPC ,object oSkin ,int nLevel)
{
int nSR = 20+nLevel;
nSR = GetSRByValue(nSR);
DelayCommand(0.1, AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyBonusSpellResistance(nSR),oSkin));
}
//Adds True Seeing to all Dragon Disciples at level 20.
void SeeTrue(object oPC ,object oSkin ,int nLevel)
{
if(GetPRCSwitch(PRC_PNP_TRUESEEING))
{
effect eSight = EffectSeeInvisible();
int nSpot = GetPRCSwitch(PRC_PNP_TRUESEEING_SPOT_BONUS);
if(nSpot == 0)
nSpot = 15;
effect eSpot = EffectSkillIncrease(SKILL_SPOT, nSpot);
effect eUltra = EffectUltravision();
eSight = EffectLinkEffects(eSight, eSpot);
eSight = EffectLinkEffects(eSight, eUltra);
eSight = SupernaturalEffect(eSight);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eSight, oPC);
}
else
DelayCommand(0.1, AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyTrueSeeing(),oSkin));
}
void main()
{
//Declare main variables.
object oPC = OBJECT_SELF;
object oSkin = GetPCSkin(oPC);
//Elemental Immunities for various dragon types.
int iType = GetHasFeat(FEAT_BLACK_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_ACID :
GetHasFeat(FEAT_BROWN_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_ACID :
GetHasFeat(FEAT_COPPER_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_ACID :
GetHasFeat(FEAT_GREEN_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_ACID :
GetHasFeat(FEAT_BRASS_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_FIRE :
GetHasFeat(FEAT_GOLD_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_FIRE :
GetHasFeat(FEAT_RED_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_FIRE :
GetHasFeat(FEAT_LUNG_WANG_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_FIRE :
GetHasFeat(FEAT_BATTLE_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_SONIC :
GetHasFeat(FEAT_EMERALD_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_SONIC :
GetHasFeat(FEAT_HOWLING_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_SONIC :
GetHasFeat(FEAT_BLUE_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_ELECTRICAL :
GetHasFeat(FEAT_BRONZE_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_ELECTRICAL :
GetHasFeat(FEAT_OCEANUS_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_ELECTRICAL :
GetHasFeat(FEAT_SAPPHIRE_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_ELECTRICAL :
GetHasFeat(FEAT_SONG_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_ELECTRICAL :
GetHasFeat(FEAT_SHEN_LUNG_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_ELECTRICAL :
GetHasFeat(FEAT_CRYSTAL_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_COLD :
GetHasFeat(FEAT_TOPAZ_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_COLD :
GetHasFeat(FEAT_SILVER_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_COLD :
GetHasFeat(FEAT_WHITE_DRAGON, oPC) ? IP_CONST_DAMAGETYPE_COLD :
-1; // If none match, make the itemproperty invalid
int lResis = GetHasFeat(FEAT_PYROCLASTIC_DRAGON, oPC) ? IP_CONST_DAMAGEIMMUNITY_50_PERCENT :
-1; // If none match, make the itemproperty invalid
//Random Immunities for various Dragon types.
int pImmune = GetHasFeat(FEAT_AMETHYST_DRAGON, oPC) ? IP_CONST_IMMUNITYMISC_POISON :
GetHasFeat(FEAT_SONG_DRAGON, oPC) ? IP_CONST_IMMUNITYMISC_POISON :
GetHasFeat(FEAT_STYX_DRAGON, oPC) ? IP_CONST_IMMUNITYMISC_POISON :
GetHasFeat(FEAT_SHEN_LUNG_DRAGON, oPC) ? IP_CONST_IMMUNITYMISC_POISON :
GetHasFeat(FEAT_SHADOW_DRAGON, oPC) ? IP_CONST_IMMUNITYMISC_LEVEL_ABIL_DRAIN :
-1; // If none match, make the itemproperty invalid
int dImmune = GetHasFeat(FEAT_STYX_DRAGON, oPC) ? IP_CONST_IMMUNITYMISC_DISEASE :
-1; // If none match, make the itemproperty invalid
int iSpell = GetHasFeat(FEAT_DEEP_DRAGON, oPC) ? IP_CONST_IMMUNITYSPELL_CHARM_PERSON_OR_ANIMAL :
GetHasFeat(FEAT_CHAOS_DRAGON, oPC) ? IP_CONST_IMMUNITYSPELL_CONFUSION :
GetHasFeat(FEAT_TIEN_LUNG_DRAGON, oPC) ? SPELL_DROWN :
GetHasFeat(FEAT_LUNG_WANG_DRAGON, oPC) ? SPELL_DROWN :
GetHasFeat(FEAT_CHIANG_LUNG_DRAGON, oPC) ? SPELL_DROWN :
GetHasFeat(FEAT_PAN_LUNG_DRAGON, oPC) ? SPELL_DROWN :
GetHasFeat(FEAT_SHEN_LUNG_DRAGON, oPC) ? SPELL_DROWN :
GetHasFeat(FEAT_TUN_MI_LUNG_DRAGON, oPC) ? SPELL_DROWN :
GetHasFeat(FEAT_YU_LUNG_DRAGON, oPC) ? SPELL_DROWN :
-1; // If none match, make the itemproperty invalid
int iSpel2 = GetHasFeat(FEAT_TIEN_LUNG_DRAGON, oPC) ? SPELL_MASS_DROWN :
GetHasFeat(FEAT_LUNG_WANG_DRAGON, oPC) ? SPELL_MASS_DROWN :
GetHasFeat(FEAT_CHIANG_LUNG_DRAGON, oPC) ? SPELL_MASS_DROWN :
GetHasFeat(FEAT_PAN_LUNG_DRAGON, oPC) ? SPELL_MASS_DROWN :
GetHasFeat(FEAT_SHEN_LUNG_DRAGON, oPC) ? SPELL_MASS_DROWN :
GetHasFeat(FEAT_TUN_MI_LUNG_DRAGON, oPC) ? SPELL_MASS_DROWN :
GetHasFeat(FEAT_YU_LUNG_DRAGON, oPC) ? SPELL_MASS_DROWN :
-1; // If none match, make the itemproperty invalid
int sResis = GetHasFeat(FEAT_DEEP_DRAGON, oPC) ? IP_CONST_DAMAGERESIST_10 :
-1; // If none match, make the itemproperty invalid
int sCale1 = GetHasFeat(FAST_HEALING_1,oPC);
int sCale2 = GetHasFeat(FAST_HEALING_2,oPC);
int nWingType = GetHasFeat(FEAT_BLACK_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_BLACK :
GetHasFeat(FEAT_BLUE_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_BLUE :
GetHasFeat(FEAT_AMETHYST_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_BLUE :
GetHasFeat(FEAT_SAPPHIRE_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_BLUE :
GetHasFeat(FEAT_TOPAZ_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_BLUE :
GetHasFeat(FEAT_BRASS_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_BRASS :
GetHasFeat(FEAT_BRONZE_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_BRONZE :
GetHasFeat(FEAT_COPPER_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_COPPER :
GetHasFeat(FEAT_GOLD_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_GOLD :
GetHasFeat(FEAT_GREEN_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_GREEN :
GetHasFeat(FEAT_EMERALD_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_GREEN :
GetHasFeat(FEAT_SILVER_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_SILVER :
GetHasFeat(FEAT_CRYSTAL_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_SILVER :
GetHasFeat(FEAT_WHITE_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_WHITE :
GetHasFeat(FEAT_RED_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_RED :
GetHasFeat(FEAT_BATTLE_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_COPPER2 :
GetHasFeat(FEAT_CHAOS_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_COPPER2 :
GetHasFeat(FEAT_FANG_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_COPPER2 :
GetHasFeat(FEAT_HOWLING_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_COPPER2 :
GetHasFeat(FEAT_BROWN_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_BRONZE2 :
GetHasFeat(FEAT_DEEP_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_BRONZE2 :
GetHasFeat(FEAT_RUST_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_BRONZE2 :
GetHasFeat(FEAT_ETHEREAL_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_WHITE2 :
GetHasFeat(FEAT_OCEANUS_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_BLUE2 :
GetHasFeat(FEAT_SONG_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_BLUE2 :
GetHasFeat(FEAT_PYROCLASTIC_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_RED2 :
GetHasFeat(FEAT_RADIANT_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_GOLD2 :
GetHasFeat(FEAT_SHADOW_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_BLACK2 :
GetHasFeat(FEAT_STYX_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_GREEN2 :
GetHasFeat(FEAT_TARTIAN_DRAGON, oPC) ? PRC_WING_TYPE_DRAGON_SILVER2 :
PRC_WING_TYPE_DRAGON_RED;
int nTailType = GetHasFeat(FEAT_BLACK_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_BLACK :
GetHasFeat(FEAT_SHADOW_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_BLACK :
GetHasFeat(FEAT_BLUE_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_BLUE :
GetHasFeat(FEAT_AMETHYST_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_BLUE :
GetHasFeat(FEAT_SAPPHIRE_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_BLUE :
GetHasFeat(FEAT_TOPAZ_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_BLUE :
GetHasFeat(FEAT_OCEANUS_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_BLUE :
GetHasFeat(FEAT_SONG_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_BLUE :
GetHasFeat(FEAT_BRASS_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_BRASS :
GetHasFeat(FEAT_BRONZE_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_BRONZE :
GetHasFeat(FEAT_BROWN_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_BRONZE :
GetHasFeat(FEAT_DEEP_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_BRONZE :
GetHasFeat(FEAT_RUST_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_BRONZE :
GetHasFeat(FEAT_COPPER_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_COPPER :
GetHasFeat(FEAT_BATTLE_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_COPPER :
GetHasFeat(FEAT_CHAOS_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_COPPER :
GetHasFeat(FEAT_FANG_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_COPPER :
GetHasFeat(FEAT_HOWLING_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_COPPER :
GetHasFeat(FEAT_GOLD_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_GOLD :
GetHasFeat(FEAT_RADIANT_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_GOLD :
GetHasFeat(FEAT_GREEN_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_GREEN :
GetHasFeat(FEAT_EMERALD_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_GREEN :
GetHasFeat(FEAT_STYX_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_GREEN :
GetHasFeat(FEAT_SILVER_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_SILVER :
GetHasFeat(FEAT_CRYSTAL_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_SILVER :
GetHasFeat(FEAT_TARTIAN_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_SILVER :
GetHasFeat(FEAT_WHITE_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_WHITE :
GetHasFeat(FEAT_ETHEREAL_DRAGON, oPC) ? PRC_TAIL_TYPE_DRAGON_WHITE :
PRC_TAIL_TYPE_DRAGON_RED;
int nLevel = GetLevelByClass(CLASS_TYPE_DRAGON_DISCIPLE,oPC);
//natural weapons
//bite at level 2
//2 claws at level 2
//2 wing slam at level 12
//tail slam at level 17
if(nLevel >= 2)
{
int nSize = PRCGetCreatureSize(oPC);
if(GetHasFeat(DRACONIC_BITE, oPC))
{
string sResRef = "prc_rdd_bite_";
sResRef += GetAffixForSize(nSize);
AddNaturalSecondaryWeapon(oPC, sResRef);
//claw here
sResRef = "prc_claw_1d6l_";
sResRef += GetAffixForSize(nSize);
AddNaturalPrimaryWeapon(oPC, sResRef, 2);
}
if(GetHasFeat(DRACONIC_WINGSLAMS, oPC))
{
string sResRef = "prc_rdd_wing_";
sResRef += GetAffixForSize(nSize);
if(nSize >= CREATURE_SIZE_MEDIUM)
AddNaturalSecondaryWeapon(oPC, sResRef, 2);
}
if(GetHasFeat(DRACONIC_TAILSLAP, oPC))
{
string sResRef = "prc_rdd_tail_";
sResRef += GetAffixForSize(nSize);
if(nSize >= CREATURE_SIZE_LARGE)
AddNaturalSecondaryWeapon(oPC, sResRef);
}
}
int thickScale = -1;
if(GetHasFeat(DRACONIC_ARMOR_AUG_2,oPC))
thickScale = 2;
else if(GetHasFeat(DRACONIC_ARMOR_AUG_1,oPC))
thickScale = 1;
SetCompositeBonus(oSkin, "ScaleThicken", thickScale, ITEM_PROPERTY_AC_BONUS);
int bResisEle = GetHasFeat(FEAT_DRACONIC_IMMUNITY, oPC) ? IP_CONST_DAMAGEIMMUNITY_100_PERCENT : 0;
if (bResisEle>0) ElImmune(oPC,oSkin,bResisEle,iType);
if (bResisEle>0) PoisImmu(oPC,oSkin,bResisEle,pImmune);
if (bResisEle>0) DisImmu(oPC,oSkin,bResisEle,dImmune);
if (bResisEle>0) SpellImmu(oPC,oSkin,bResisEle,iSpell);
if (bResisEle>0) SpellImmu2(oPC,oSkin,bResisEle,iSpel2);
if (bResisEle>0) SmallResist(oPC,oSkin,bResisEle,sResis);
if (bResisEle>0) LargeResist(oPC,oSkin,bResisEle,lResis);
if (nLevel>17) SpellResis(oPC,oSkin,nLevel);
if (nLevel>16 && GetPersistantLocalInt(oPC, "DragonDiscipleTailApplied") == 0)
{
SetPersistantLocalInt(oPC, "DragonDiscipleTailApplied", 1);
SetCreatureTailType(nTailType, oPC);
}
//if (nLevel>8) DelayCommand(1.0f, SetCreatureWingType(nWingType, oPC));
if (nLevel>8)
{
//we don't use default RDD wings to make sure this will work
if(GetCreatureWingType(oPC) == CREATURE_WING_TYPE_DRAGON)
SetCreatureWingType(nWingType, oPC);
}
if (nLevel>19) SeeTrue(oPC,oSkin,nLevel);
//dragon disciple lichs get (almost) draco-lich wings and bony tail at lich 4 ;)
if(nLevel>8 && GetLevelByClass(CLASS_TYPE_LICH, oPC) >= 4) SetCreatureWingType(PRC_WING_TYPE_DRAGON_BRONZE2, oPC);
if(nLevel>16 && GetLevelByClass(CLASS_TYPE_LICH, oPC) >= 4) SetCreatureTailType(CREATURE_TAIL_TYPE_BONE, oPC);
}
C:\NeverwinterNights\NWN\utils>nwnnsscomp.exe -o -g -i c:\prc_include prc_dradis
.nss
NeverWinter Nights Script Compiler/Decompiler
Copyright 2002-2003, Edward T. Smith
Copyright 2003, The Open Knights Consortium
Compiling: prc_dradis.nss
prc_inc_combat.nss(2017): Error: Undeclared identifier "GetArmorType"
prc_inc_combat.nss(2031): Error: Undeclared identifier "GetArmorType"
prc_inc_combat.nss(3051): Error: Undeclared identifier "GetArmorType"
prc_inc_combat.nss(3071): Error: Undeclared identifier "GetArmorType"
Compilation aborted with errors
Errors occurred in compiling "prc_dradis.nss"
Row Label RowLimit
0 classes 255
1 racialtypes 255
2 gender 2
3 portraits 1100
4 skills 50
5 cls_feat_* 600
6 cls_skill_* 50
7 cls_psipw_* 180
8 feat 22300
9 cls_pres_* 25
10 hen_familiar 20
11 hen_companion 20
12 domains 70
13 soundset 450
14 spells 16100
15 appearance 500
16 wingmodel 10
17 tailmodel 10
18 race_feat_* 30
19 ireq_* 50
20 item_to_ireq 700