PRC8/nwn/nwnprc/trunk/scripts/prc_dragonshaman.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
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.
2024-02-11 14:01:05 -05:00

82 lines
4.1 KiB
Plaintext

#include "prc_compan_inc"
#include "pnp_shft_poly"
#include "prc_inc_dragsham"
void main()
{
object oPC = OBJECT_SELF;
object oSkin = GetPCSkin(oPC);
int nTotem = GetLocalInt(oPC, "DragonShamanTotem");
if(!nTotem)
{
nTotem = GetHasFeat(FEAT_DRAGONSHAMAN_BLACK, oPC) ? FEAT_DRAGONSHAMAN_BLACK:
GetHasFeat(FEAT_DRAGONSHAMAN_BLUE, oPC) ? FEAT_DRAGONSHAMAN_BLUE:
GetHasFeat(FEAT_DRAGONSHAMAN_BRASS, oPC) ? FEAT_DRAGONSHAMAN_BRASS:
GetHasFeat(FEAT_DRAGONSHAMAN_BRONZE, oPC) ? FEAT_DRAGONSHAMAN_BRONZE:
GetHasFeat(FEAT_DRAGONSHAMAN_COPPER, oPC) ? FEAT_DRAGONSHAMAN_COPPER:
GetHasFeat(FEAT_DRAGONSHAMAN_GOLD, oPC) ? FEAT_DRAGONSHAMAN_GOLD:
GetHasFeat(FEAT_DRAGONSHAMAN_GREEN, oPC) ? FEAT_DRAGONSHAMAN_GREEN:
GetHasFeat(FEAT_DRAGONSHAMAN_SILVER, oPC) ? FEAT_DRAGONSHAMAN_SILVER:
GetHasFeat(FEAT_DRAGONSHAMAN_WHITE, oPC) ? FEAT_DRAGONSHAMAN_WHITE:
//GetHasFeat(FEAT_DRAGONSHAMAN_RED, oPC) ? FEAT_DRAGONSHAMAN_RED:// no other totems so Red Dragon will be our default
FEAT_DRAGONSHAMAN_RED;//default value - no other totem dragons found
SetLocalInt(oPC, "DragonShamanTotem", nTotem);
}
if(GetHasFeat(FEAT_SHAMANIC_INVOCATION, oPC))
ExecuteScript("prc_amagsys_gain", oPC);
// For Draconic Resolve
if(GetHasFeat(FEAT_DRAGONSHAMAN_RESOLVE, oPC))
{
IPSafeAddItemProperty(oSkin, ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_PARALYSIS), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
IPSafeAddItemProperty(oSkin, ItemPropertySpellImmunitySpecific(IP_CONST_IMMUNITYSPELL_SLEEP), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
IPSafeAddItemProperty(oSkin, ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_FEAR), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
}
// For Draconic Armor
if(GetHasFeat(FEAT_DRAGONSHAMAN_ARMOR, oPC))
{
int nBonus = (GetLevelByClass(CLASS_TYPE_DRAGON_SHAMAN, oPC) - 2) / 5;//+1 every 5 levels starting at lvl 7
SetCompositeBonus(oSkin, "ScaleThicken", nBonus, ITEM_PROPERTY_AC_BONUS);
}
//For Energy Immunity
if(GetHasFeat(FEAT_DRAGONSHAMAN_ENERGY_IMMUNITY, oPC))
{
int nDamageType = GetDragonDamageType(nTotem);
int iIP;
switch(nDamageType)
{
case DAMAGE_TYPE_FIRE: iIP = IP_CONST_DAMAGETYPE_FIRE; break;
case DAMAGE_TYPE_ELECTRICAL: iIP = IP_CONST_DAMAGETYPE_ELECTRICAL; break;
case DAMAGE_TYPE_ACID: iIP = IP_CONST_DAMAGETYPE_ACID; break;
case DAMAGE_TYPE_COLD: iIP = IP_CONST_DAMAGETYPE_COLD; break;
}
IPSafeAddItemProperty(oSkin, ItemPropertyDamageImmunity(iIP, IP_CONST_DAMAGEIMMUNITY_100_PERCENT), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
}
if(GetHasFeat(FEAT_DRAGONSHAMAN_WINGS, oPC) && !GetPersistantLocalInt(oPC, "DragShamanWingsApplied"))
{
int nWingType = nTotem == FEAT_DRAGONSHAMAN_BLACK ? PRC_WING_TYPE_DRAGON_BLACK:
nTotem == FEAT_DRAGONSHAMAN_BLUE ? PRC_WING_TYPE_DRAGON_BLUE:
nTotem == FEAT_DRAGONSHAMAN_BRASS ? PRC_WING_TYPE_DRAGON_BRASS:
nTotem == FEAT_DRAGONSHAMAN_BRONZE ? PRC_WING_TYPE_DRAGON_BRONZE:
nTotem == FEAT_DRAGONSHAMAN_COPPER ? PRC_WING_TYPE_DRAGON_COPPER:
nTotem == FEAT_DRAGONSHAMAN_GOLD ? PRC_WING_TYPE_DRAGON_GOLD:
nTotem == FEAT_DRAGONSHAMAN_GREEN ? PRC_WING_TYPE_DRAGON_GREEN:
nTotem == FEAT_DRAGONSHAMAN_SILVER ? PRC_WING_TYPE_DRAGON_SILVER:
nTotem == FEAT_DRAGONSHAMAN_WHITE ? PRC_WING_TYPE_DRAGON_WHITE:
nTotem == FEAT_DRAGONSHAMAN_RED ? PRC_WING_TYPE_DRAGON_RED:
CREATURE_WING_TYPE_DRAGON;
SetCompositeBonus(oSkin, "WingBonus", 10, ITEM_PROPERTY_SKILL_BONUS, SKILL_JUMP);
SetCreatureWingType(nWingType, oPC);
SetPersistantLocalInt(oPC, "DragShamanWingsApplied", TRUE);
}
}