PRC8/nwn/nwnprc/trunk/scripts/prc_domain_skin.nss
Jaysyn904 914300411e Shaman wasn't getting domain bonus feats
Shaman wasn't getting domain bonus feats.  Fixed epic && bug in feat enforcement script.
2024-09-24 22:28:04 -04:00

325 lines
28 KiB
Plaintext

// Written by Stratovarius
// Applies the cast domain feats to the hide
#include "inc_newspellbook"
#include "prc_inc_domain"
#include "inc_dynconv"
#include "inc_nwnx_funcs"
void AddDomainPower(object oPC, object oSkin, int bFuncs)
{
if(bFuncs)
{
if (GetHasFeat(FEAT_BONUS_DOMAIN_AIR, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_AIR_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_AIR_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_ANIMAL, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_ANIMAL_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_ANIMAL_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_DEATH, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DEATH_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_DEATH_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_DESTRUCTION, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DESTRUCTION_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_DESTRUCTION_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_EARTH, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_EARTH_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_EARTH_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_EVIL, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_EVIL_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_EVIL_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_FIRE, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_FIRE_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_FIRE_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_GOOD, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_GOOD_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_GOOD_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_HEALING, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_HEALING_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_HEALING_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_KNOWLEDGE, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_KNOWLEDGE_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_KNOWLEDGE_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_MAGIC, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_MAGIC_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_MAGIC_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_PLANT, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_PLANT_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_PLANT_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_PROTECTION, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_PROTECTION_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_PROTECTION_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_STRENGTH, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_STRENGTH_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_STRENGTH_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_SUN, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_SUN_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_SUN_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_TRAVEL, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_TRAVEL_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_TRAVEL_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_TRICKERY, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_TRICKERY_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_TRICKERY_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_WAR, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_WAR_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_WAR_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_WATER, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_WATER_DOMAIN_POWER)) PRC_Funcs_AddFeat(oPC, FEAT_WATER_DOMAIN_POWER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_DARKNESS, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_DARKNESS)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_DARKNESS);
if (GetHasFeat(FEAT_BONUS_DOMAIN_STORM, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_STORM)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_STORM);
if (GetHasFeat(FEAT_BONUS_DOMAIN_METAL, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_METAL)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_METAL);
if (GetHasFeat(FEAT_BONUS_DOMAIN_PORTAL, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_PORTAL)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_PORTAL);
if (GetHasFeat(FEAT_BONUS_DOMAIN_FORCE, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_FORCE)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_FORCE);
if (GetHasFeat(FEAT_BONUS_DOMAIN_SLIME, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_SLIME)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_SLIME);
if (GetHasFeat(FEAT_BONUS_DOMAIN_TYRANNY, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_TYRANNY)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_TYRANNY);
if (GetHasFeat(FEAT_BONUS_DOMAIN_DOMINATION, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_DOMINATION)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_DOMINATION);
if (GetHasFeat(FEAT_BONUS_DOMAIN_SPIDER, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_SPIDER)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_SPIDER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_UNDEATH, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_UNDEATH)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_UNDEATH);
if (GetHasFeat(FEAT_BONUS_DOMAIN_TIME, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_TIME)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_TIME);
if (GetHasFeat(FEAT_BONUS_DOMAIN_DWARF, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_DWARF)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_DWARF);
if (GetHasFeat(FEAT_BONUS_DOMAIN_CHARM, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_CHARM)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_CHARM);
if (GetHasFeat(FEAT_BONUS_DOMAIN_ELF, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_ELF)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_ELF);
if (GetHasFeat(FEAT_BONUS_DOMAIN_FAMILY, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_FAMILY)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_FAMILY);
if (GetHasFeat(FEAT_BONUS_DOMAIN_FATE, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_FATE)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_FATE);
if (GetHasFeat(FEAT_BONUS_DOMAIN_GNOME, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_GNOME)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_GNOME);
if (GetHasFeat(FEAT_BONUS_DOMAIN_ILLUSION, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_ILLUSION)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_ILLUSION);
if (GetHasFeat(FEAT_BONUS_DOMAIN_HATRED, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_HATRED)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_HATRED);
if (GetHasFeat(FEAT_BONUS_DOMAIN_HALFLING, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_HALFLING)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_HALFLING);
if (GetHasFeat(FEAT_BONUS_DOMAIN_NOBILITY, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_NOBILITY)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_NOBILITY);
if (GetHasFeat(FEAT_BONUS_DOMAIN_OCEAN, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_OCEAN)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_OCEAN);
if (GetHasFeat(FEAT_BONUS_DOMAIN_ORC, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_ORC)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_ORC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_RENEWAL, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_RENEWAL)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_RENEWAL);
if (GetHasFeat(FEAT_BONUS_DOMAIN_RETRIBUTION, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_RETRIBUTION)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_RETRIBUTION);
if (GetHasFeat(FEAT_BONUS_DOMAIN_RUNE, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_RUNE)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_RUNE);
if (GetHasFeat(FEAT_BONUS_DOMAIN_SPELLS, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_SPELLS)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_SPELLS);
if (GetHasFeat(FEAT_BONUS_DOMAIN_SCALEYKIND, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_SCALEYKIND)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_SCALEYKIND);
if (GetHasFeat(FEAT_BONUS_DOMAIN_BLIGHTBRINGER, oPC)&& !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_BLIGHTBRINGER)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_BLIGHTBRINGER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_DRAGON, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_DRAGON)) PRC_Funcs_AddFeat(oPC, FEAT_DOMAIN_POWER_DRAGON);
}
else
{
if (GetHasFeat(FEAT_BONUS_DOMAIN_AIR, oPC)) AddSkinFeat(FEAT_AIR_DOMAIN_POWER, IP_CONST_FEAT_AIR_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_ANIMAL, oPC)) AddSkinFeat(FEAT_ANIMAL_DOMAIN_POWER, IP_CONST_FEAT_ANIMAL_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_DEATH, oPC)) AddSkinFeat(FEAT_DEATH_DOMAIN_POWER, IP_CONST_FEAT_DEATH_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_DESTRUCTION, oPC)) AddSkinFeat(FEAT_DESTRUCTION_DOMAIN_POWER, IP_CONST_FEAT_DESTRUCTION_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_EARTH, oPC)) AddSkinFeat(FEAT_EARTH_DOMAIN_POWER, IP_CONST_FEAT_EARTH_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_EVIL, oPC)) AddSkinFeat(FEAT_EVIL_DOMAIN_POWER, IP_CONST_FEAT_EVIL_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_FIRE, oPC)) AddSkinFeat(FEAT_FIRE_DOMAIN_POWER, IP_CONST_FEAT_FIRE_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_GOOD, oPC)) AddSkinFeat(FEAT_GOOD_DOMAIN_POWER, IP_CONST_FEAT_GOOD_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_HEALING, oPC)) AddSkinFeat(FEAT_HEALING_DOMAIN_POWER, IP_CONST_FEAT_HEALING_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_KNOWLEDGE, oPC)) AddSkinFeat(FEAT_KNOWLEDGE_DOMAIN_POWER, IP_CONST_FEAT_KNOWLEDGE_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_MAGIC, oPC)) AddSkinFeat(FEAT_MAGIC_DOMAIN_POWER, IP_CONST_FEAT_MAGIC_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_PLANT, oPC)) AddSkinFeat(FEAT_PLANT_DOMAIN_POWER, IP_CONST_FEAT_PLANT_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_PROTECTION, oPC)) AddSkinFeat(FEAT_PROTECTION_DOMAIN_POWER, IP_CONST_FEAT_PROTECTION_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_STRENGTH, oPC)) AddSkinFeat(FEAT_STRENGTH_DOMAIN_POWER, IP_CONST_FEAT_STRENGTH_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_SUN, oPC)) AddSkinFeat(FEAT_SUN_DOMAIN_POWER, IP_CONST_FEAT_SUN_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_TRAVEL, oPC)) AddSkinFeat(FEAT_TRAVEL_DOMAIN_POWER, IP_CONST_FEAT_TRAVEL_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_TRICKERY, oPC)) AddSkinFeat(FEAT_TRICKERY_DOMAIN_POWER, IP_CONST_FEAT_TRICKERY_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_WAR, oPC)) AddSkinFeat(FEAT_WAR_DOMAIN_POWER, IP_CONST_FEAT_WAR_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_WATER, oPC)) AddSkinFeat(FEAT_WATER_DOMAIN_POWER, IP_CONST_FEAT_WATER_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_DARKNESS, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_DARKNESS, IP_CONST_FEAT_DARKNESS_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_STORM, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_STORM, IP_CONST_FEAT_STORM_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_METAL, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_METAL, IP_CONST_FEAT_METAL_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_PORTAL, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_PORTAL, IP_CONST_FEAT_PORTAL_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_FORCE, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_FORCE, IP_CONST_FEAT_FORCE_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_SLIME, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_SLIME, IP_CONST_FEAT_SLIME_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_TYRANNY, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_TYRANNY, IP_CONST_FEAT_TYRANNY_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_DOMINATION, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_DOMINATION, IP_CONST_FEAT_DOMINATION_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_SPIDER, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_SPIDER, IP_CONST_FEAT_SPIDER_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_UNDEATH, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_UNDEATH, IP_CONST_FEAT_UNDEATH_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_TIME, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_TIME, IP_CONST_FEAT_TIME_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_DWARF, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_DWARF, IP_CONST_FEAT_DWARF_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_CHARM, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_CHARM, IP_CONST_FEAT_CHARM_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_ELF, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_ELF, IP_CONST_FEAT_ELF_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_FAMILY, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_FAMILY, IP_CONST_FEAT_FAMILY_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_FATE, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_FATE, IP_CONST_FEAT_FATE_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_GNOME, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_GNOME, IP_CONST_FEAT_GNOME_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_ILLUSION, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_ILLUSION, IP_CONST_FEAT_ILLUSION_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_HATRED, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_HATRED, IP_CONST_FEAT_HATRED_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_HALFLING, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_HALFLING, IP_CONST_FEAT_HALFLING_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_NOBILITY, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_NOBILITY, IP_CONST_FEAT_NOBILITY_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_OCEAN, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_OCEAN, IP_CONST_FEAT_OCEAN_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_ORC, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_ORC, IP_CONST_FEAT_ORC_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_RENEWAL, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_RENEWAL, IP_CONST_FEAT_RENEWAL_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_RETRIBUTION, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_RETRIBUTION, IP_CONST_FEAT_RETRIBUTION_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_RUNE, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_RUNE, IP_CONST_FEAT_RUNE_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_SPELLS, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_SPELLS, IP_CONST_FEAT_SPELLS_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_SCALEYKIND, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_SCALEYKIND, IP_CONST_FEAT_SCALEYKIND_DOMAIN, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_BLIGHTBRINGER, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_BLIGHTBRINGER, IP_CONST_FEAT_BLIGHTBRINGER, oSkin, oPC);
if (GetHasFeat(FEAT_BONUS_DOMAIN_DRAGON, oPC)) AddSkinFeat(FEAT_DOMAIN_POWER_DRAGON, IP_CONST_FEAT_DRAGON_DOMAIN, oSkin, oPC);
}
}
void AddDomainFeat(object oPC, object oSkin, int bFuncs)
{
if(DEBUG) DoDebug("Add Domain Feat is running");
if(bFuncs)
{
if (GetHasFeat(FEAT_DOMAIN_POWER_DARKNESS, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_BLIND_FIGHT)) PRC_Funcs_AddFeat(oPC, FEAT_BLIND_FIGHT);
if (GetHasFeat(FEAT_DOMAIN_POWER_DWARF, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_GREAT_FORTITUDE)) PRC_Funcs_AddFeat(oPC, FEAT_GREAT_FORTITUDE);
if (GetHasFeat(FEAT_DOMAIN_POWER_ELF, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_POINT_BLANK_SHOT)) PRC_Funcs_AddFeat(oPC, FEAT_POINT_BLANK_SHOT);
if (GetHasFeat(FEAT_DOMAIN_POWER_FATE, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_UNCANNY_DODGE_1)) PRC_Funcs_AddFeat(oPC, FEAT_UNCANNY_DODGE_1);
if (GetHasFeat(FEAT_DOMAIN_POWER_RUNE, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_SCRIBE_SCROLL)) PRC_Funcs_AddFeat(oPC, FEAT_SCRIBE_SCROLL);
if (GetHasFeat(FEAT_DOMAIN_POWER_TIME, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_IMPROVED_INITIATIVE)) PRC_Funcs_AddFeat(oPC, FEAT_IMPROVED_INITIATIVE);
if (GetHasFeat(FEAT_DOMAIN_POWER_UNDEATH, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_EXTRA_TURNING)) PRC_Funcs_AddFeat(oPC, FEAT_EXTRA_TURNING);
if (GetHasFeat(FEAT_DOMAIN_POWER_DOMINATION, oPC) && !PRC_Funcs_GetFeatKnown(oPC, FEAT_SPELL_FOCUS_ENCHANTMENT)) PRC_Funcs_AddFeat(oPC, FEAT_SPELL_FOCUS_ENCHANTMENT);
}
else
{
effect eBonusFeat;
if (GetHasFeat(FEAT_DOMAIN_POWER_DARKNESS, oPC))
{
eBonusFeat = EffectBonusFeat(FEAT_BLIND_FIGHT);
eBonusFeat = SupernaturalEffect(eBonusFeat);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBonusFeat, oPC);
}
if (GetHasFeat(FEAT_DOMAIN_POWER_DWARF, oPC))
{
eBonusFeat = EffectBonusFeat(FEAT_GREAT_FORTITUDE);
eBonusFeat = SupernaturalEffect(eBonusFeat);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBonusFeat, oPC);
}
if (GetHasFeat(FEAT_DOMAIN_POWER_ELF, oPC))
{
eBonusFeat = EffectBonusFeat(FEAT_POINT_BLANK_SHOT);
eBonusFeat = SupernaturalEffect(eBonusFeat);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBonusFeat, oPC);
}
if (GetHasFeat(FEAT_DOMAIN_POWER_FATE, oPC))
{
eBonusFeat = EffectBonusFeat(FEAT_UNCANNY_DODGE_1);
eBonusFeat = SupernaturalEffect(eBonusFeat);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBonusFeat, oPC);
}
if (GetHasFeat(FEAT_DOMAIN_POWER_TIME, oPC))
{
eBonusFeat = EffectBonusFeat(FEAT_IMPROVED_INITIATIVE);
eBonusFeat = SupernaturalEffect(eBonusFeat);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBonusFeat, oPC);
}
if (GetHasFeat(FEAT_DOMAIN_POWER_UNDEATH, oPC))
{
eBonusFeat = EffectBonusFeat(FEAT_EXTRA_TURNING);
eBonusFeat = SupernaturalEffect(eBonusFeat);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBonusFeat, oPC);
}
if (GetHasFeat(FEAT_DOMAIN_POWER_DOMINATION, oPC))
{
eBonusFeat = EffectBonusFeat(FEAT_SPELL_FOCUS_ENCHANTMENT);
eBonusFeat = SupernaturalEffect(eBonusFeat);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBonusFeat, oPC);
}
}
/* {
if (GetHasFeat(FEAT_DOMAIN_POWER_DARKNESS, oPC)) AddSkinFeat(FEAT_BLIND_FIGHT, IP_CONST_FEAT_BLINDFIGHT, oSkin, oPC);
if (GetHasFeat(FEAT_DOMAIN_POWER_DWARF, oPC)) AddSkinFeat(FEAT_GREAT_FORTITUDE, IP_CONST_FEAT_GREAT_FORTITUDE, oSkin, oPC);
if (GetHasFeat(FEAT_DOMAIN_POWER_ELF, oPC)) AddSkinFeat(FEAT_POINT_BLANK_SHOT, IP_CONST_FEAT_POINTBLANK, oSkin, oPC);
if (GetHasFeat(FEAT_DOMAIN_POWER_FATE, oPC)) AddSkinFeat(FEAT_UNCANNY_DODGE_1, IP_CONST_FEAT_UNCANNY_DODGE1, oSkin, oPC);
if (GetHasFeat(FEAT_DOMAIN_POWER_RUNE, oPC)) AddSkinFeat(FEAT_SCRIBE_SCROLL, IP_CONST_FEAT_SCRIBE_SCROLL, oSkin, oPC);
if (GetHasFeat(FEAT_DOMAIN_POWER_TIME, oPC)) AddSkinFeat(FEAT_IMPROVED_INITIATIVE, IP_CONST_FEAT_IMPROVED_INIT, oSkin, oPC);
if (GetHasFeat(FEAT_DOMAIN_POWER_UNDEATH, oPC)) AddSkinFeat(FEAT_EXTRA_TURNING, IP_CONST_FEAT_EXTRA_TURNING, oSkin, oPC);
if (GetHasFeat(FEAT_DOMAIN_POWER_DOMINATION, oPC)) AddSkinFeat(FEAT_SPELL_FOCUS_ENCHANTMENT, IP_CONST_FEAT_SPELLFOCUSENC, oSkin, oPC);
} */
// +2 Conc and Spellcraft
if (GetHasFeat(FEAT_DOMAIN_POWER_SPELLS, oPC))
{
SetCompositeBonus(oSkin, "SpellDomainPowerConc", 2, ITEM_PROPERTY_SKILL_BONUS, SKILL_CONCENTRATION);
SetCompositeBonus(oSkin, "SpellDomainPowerSpell", 2, ITEM_PROPERTY_SKILL_BONUS, SKILL_SPELLCRAFT);
}
// Electrical resist 5
if (GetHasFeat(FEAT_DOMAIN_POWER_STORM, oPC))
{
itemproperty ipIP =ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_ELECTRICAL, IP_CONST_DAMAGERESIST_5);
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
}
if (GetHasFeat(FEAT_WAR_DOMAIN_POWER, oPC))
{
int nWarFocus = GetPersistantLocalInt(oPC, "WarDomainWeaponPersistent");
// If they've already chosen a weapon, reapply the feats if they dont have it
if (nWarFocus)
{
if(bFuncs)
{
if (!PRC_Funcs_GetFeatKnown(oPC, nWarFocus)) PRC_Funcs_AddFeat(oPC, nWarFocus);
if (!PRC_Funcs_GetFeatKnown(oPC, FEAT_WEAPON_PROFICIENCY_MARTIAL)) PRC_Funcs_AddFeat(oPC, FEAT_WEAPON_PROFICIENCY_MARTIAL);
}
else
{
int nWarWFIprop = FeatToIprop(nWarFocus);
AddSkinFeat(nWarFocus, nWarWFIprop, oSkin, oPC);
AddSkinFeat(FEAT_WEAPON_PROFICIENCY_MARTIAL, IP_CONST_FEAT_WEAPON_PROF_MARTIAL, oSkin, oPC);
}
}
else
{
DelayCommand(1.5, StartDynamicConversation("prc_domain_war", oPC, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oPC));
}
}
if (GetHasFeat(FEAT_DOMAIN_POWER_METAL, oPC))
{
int nWFocus = GetPersistantLocalInt(oPC, "MetalDomainWeaponPersistent");
// If they've already chosen a weapon, reapply the feats if they dont have it
if (nWFocus)
{
if(bFuncs)
{
if (!PRC_Funcs_GetFeatKnown(oPC, nWFocus)) PRC_Funcs_AddFeat(oPC, nWFocus);
if (!PRC_Funcs_GetFeatKnown(oPC, FEAT_WEAPON_PROFICIENCY_MARTIAL)) PRC_Funcs_AddFeat(oPC, FEAT_WEAPON_PROFICIENCY_MARTIAL);
}
else
{
int nWFIprop = FeatToIprop(nWFocus);
AddSkinFeat(nWFocus, nWFIprop, oSkin, oPC);
AddSkinFeat(FEAT_WEAPON_PROFICIENCY_MARTIAL, IP_CONST_FEAT_WEAPON_PROF_MARTIAL, oSkin, oPC);
}
}
else
{
DelayCommand(1.5, StartDynamicConversation("prc_domain_metal", oPC, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oPC));
}
}// +2 Bluff and Intimidate - since adding to class skills isn't allowed
if (GetHasFeat(FEAT_DOMAIN_POWER_DRAGON, oPC))
{
SetCompositeBonus(oSkin, "DragonDomainBluff", 2, ITEM_PROPERTY_SKILL_BONUS, SKILL_BLUFF);
SetCompositeBonus(oSkin, "DragonDomainIntim", 2, ITEM_PROPERTY_SKILL_BONUS, SKILL_INTIMIDATE);
}
/*
// Domain powers that need to be created
if (GetHasFeat(FEAT_BONUS_DOMAIN_ANIMAL, oPC)) IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_ANIMAL_DOMAIN ), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
// Domain Powers that grant Turning or something affecting Turning
if (GetHasFeat(FEAT_BONUS_DOMAIN_SCALEYKIND, oPC)) IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_SCALEYKIND_DOMAIN ), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
if (GetHasFeat(FEAT_BONUS_DOMAIN_SLIME, oPC)) IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_SLIME_DOMAIN ), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
if (GetHasFeat(FEAT_BONUS_DOMAIN_SPIDER, oPC)) IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_SPIDER_DOMAIN ), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
if (GetHasFeat(FEAT_BONUS_DOMAIN_AIR, oPC)) IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_AIR_DOMAIN ), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
if (GetHasFeat(FEAT_BONUS_DOMAIN_EARTH, oPC)) IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_EARTH_DOMAIN ), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
if (GetHasFeat(FEAT_BONUS_DOMAIN_FIRE, oPC)) IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_FIRE_DOMAIN ), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
if (GetHasFeat(FEAT_BONUS_DOMAIN_PLANT, oPC)) IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_PLANT_DOMAIN ), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
if (GetHasFeat(FEAT_BONUS_DOMAIN_WATER, oPC)) IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_WATER_DOMAIN ), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
// Domains below here do not have possible Domain Powers in NWN
if (GetHasFeat(FEAT_BONUS_DOMAIN_PORTAL, oPC)) IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_PORTAL_DOMAIN ), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
if (GetHasFeat(FEAT_BONUS_DOMAIN_OCEAN, oPC)) IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_OCEAN_DOMAIN ), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
if (GetHasFeat(FEAT_BONUS_DOMAIN_FORCE, oPC)) IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_FORCE_DOMAIN ), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
if (GetHasFeat(FEAT_BONUS_DOMAIN_MAGIC, oPC)) IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_MAGIC_DOMAIN ), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
if (GetHasFeat(FEAT_BONUS_DOMAIN_TRICKERY, oPC)) IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_TRICKERY_DOMAIN ), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
*/
}
void main()
{
object oPC = OBJECT_SELF;
object oSkin = GetPCSkin(oPC);
int bFuncs = GetPRCSwitch(PRC_NWNX_FUNCS);
if(DEBUG) DoDebug("PRC Domain Skin is running");
// This is above the check to stop because AddDomainFeat needs this to run beforehand.
// Puts the domain power feats on the skin for the appropriate domains.
AddDomainPower(oPC, oSkin, bFuncs);
// This is above the check to stop because all domains, including ones pick at level of a cleric use this
// Puts the bonus feats that some domains grant on the skin for the appropriate domains.
AddDomainFeat(oPC, oSkin, bFuncs);
// Stops the script from running if the PC has no bonus domains
// Looks in the first slot for a bonus domain, exits if there is none
// The first domain begins at 1
if (GetBonusDomain(oPC, 1) <= 0)
{
if(DEBUG) DoDebug("You have no bonus domains, exiting prc_domain_skin");
return;
}
// The prereq variables use 0 as true and 1 as false, becuase they are used in class prereqs
// It uses allspell because there are some feats that allow a wizard or other arcane caster to take domains.
AddSkinFeat(FEAT_CHECK_DOMAIN_SLOTS, IP_CONST_FEAT_CHECK_DOMAIN_SLOTS, oSkin, oPC);
if(GetLocalInt(oPC, "PRC_AllSpell1") == 0)
AddSkinFeat(FEAT_CAST_DOMAIN_LEVEL_ONE, IP_CONST_FEAT_CAST_DOMAIN_LEVEL_ONE, oSkin, oPC);
if(GetLocalInt(oPC, "PRC_AllSpell2") == 0)
AddSkinFeat(FEAT_CAST_DOMAIN_LEVEL_TWO, IP_CONST_FEAT_CAST_DOMAIN_LEVEL_TWO, oSkin, oPC);
if(GetLocalInt(oPC, "PRC_AllSpell3") == 0)
AddSkinFeat(FEAT_CAST_DOMAIN_LEVEL_THREE, IP_CONST_FEAT_CAST_DOMAIN_LEVEL_THREE, oSkin, oPC);
if(GetLocalInt(oPC, "PRC_AllSpell4") == 0)
AddSkinFeat(FEAT_CAST_DOMAIN_LEVEL_FOUR, IP_CONST_FEAT_CAST_DOMAIN_LEVEL_FOUR, oSkin, oPC);
if(GetLocalInt(oPC, "PRC_AllSpell5") == 0)
AddSkinFeat(FEAT_CAST_DOMAIN_LEVEL_FIVE, IP_CONST_FEAT_CAST_DOMAIN_LEVEL_FIVE, oSkin, oPC);
if(GetLocalInt(oPC, "PRC_AllSpell6") == 0)
AddSkinFeat(FEAT_CAST_DOMAIN_LEVEL_SIX, IP_CONST_FEAT_CAST_DOMAIN_LEVEL_SIX, oSkin, oPC);
if(GetLocalInt(oPC, "PRC_AllSpell7") == 0)
AddSkinFeat(FEAT_CAST_DOMAIN_LEVEL_SEVEN, IP_CONST_FEAT_CAST_DOMAIN_LEVEL_SEVEN, oSkin, oPC);
if(GetLocalInt(oPC, "PRC_AllSpell8") == 0)
AddSkinFeat(FEAT_CAST_DOMAIN_LEVEL_EIGHT, IP_CONST_FEAT_CAST_DOMAIN_LEVEL_EIGHT, oSkin, oPC);
if(GetLocalInt(oPC, "PRC_AllSpell9") == 0)
AddSkinFeat(FEAT_CAST_DOMAIN_LEVEL_NINE, IP_CONST_FEAT_CAST_DOMAIN_LEVEL_NINE, oSkin, oPC);
}