diff --git a/Release/PRC8_20250104.7z b/Release/PRC8_20250104.7z
new file mode 100644
index 00000000..e4f41a31
Binary files /dev/null and b/Release/PRC8_20250104.7z differ
diff --git a/Release/PRC[34]_4110alpha13.7z b/Release/PRC[34]_4110alpha13.7z
deleted file mode 100644
index 7cabb8b3..00000000
Binary files a/Release/PRC[34]_4110alpha13.7z and /dev/null differ
diff --git a/Release/PRC8_20250103.7z b/_backup/PRC8_20250103.7z
similarity index 76%
rename from Release/PRC8_20250103.7z
rename to _backup/PRC8_20250103.7z
index 4eebcb49..78771e68 100644
Binary files a/Release/PRC8_20250103.7z and b/_backup/PRC8_20250103.7z differ
diff --git a/nwn/nwnprc/trunk/2das/feat.2da b/nwn/nwnprc/trunk/2das/feat.2da
index a480d55f..1fcfe6c3 100644
--- a/nwn/nwnprc/trunk/2das/feat.2da
+++ b/nwn/nwnprc/trunk/2das/feat.2da
@@ -26002,4 +26002,4 @@
 25998 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
 25999 "#BEGIN PRC8 WOL RESERVE#" **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
 26000 Bullybasher_GiantBearing 16977316 16977317 is_giantbearing **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 16553 **** 0.5 **** **** 1 **** **** **** **** **** **** **** **** **** WOL_BULLY_GIANT 6 0 **** **** **** **** 0 0
-26001 FEAT_VOWOFPOVERTY 16977318 16977319 ife_sacredvow **** **** **** **** **** **** **** **** **** **** 0 0 1 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_VOWOFPOVERTY 6 **** **** **** 1 **** 0 0
+26001 FEAT_VOWOFPOVERTY 16977318 16977319 ife_sacredvow **** **** **** **** **** **** **** **** **** **** 0 0 1 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_VOWOFPOVERTY 6 **** **** **** **** **** 0 0
diff --git a/nwn/nwnprc/trunk/include/prc_spell_const.nss b/nwn/nwnprc/trunk/include/prc_spell_const.nss
index 931a735d..1e1510f9 100644
--- a/nwn/nwnprc/trunk/include/prc_spell_const.nss
+++ b/nwn/nwnprc/trunk/include/prc_spell_const.nss
@@ -1223,7 +1223,7 @@ const int SPELL_NIMBUS                              = 1894;
 const int SPELL_NIMBUS_TOUCH_ATTACK                 = 1895;
 const int SPELL_FIREWALK                            = 1896;
 const int SPELL_HEAT_DEATH                          = 1897;
-const int SPELL_CONFLAGRATION                       = 1898;
+const int SPELL_PYRO_CONFLAGRATION                       = 1898;
 
 // Heroes of Horror
 const int SPELL_SUMMON_UNDEAD_1                     = 1784;
diff --git a/nwn/nwnprc/trunk/makefile.temp b/nwn/nwnprc/trunk/makefile.temp
index 6f1a5c7b..65f94069 100644
--- a/nwn/nwnprc/trunk/makefile.temp
+++ b/nwn/nwnprc/trunk/makefile.temp
@@ -28525,9 +28525,9 @@ objs\ft_spontsummon.ncs: scripts\ft_spontsummon.nss
 
 objs\ft_tears_ever.ncs: scripts\ft_tears_ever.nss
 
-objs\ft_vowofpoverty.ncs: scripts\ft_vowofpoverty.nss include\prc_inc_combat.nss include\inc_dynconv.nss include\prc_class_const.nss include\prc_inc_clsfunc.nss include\prc_alterations.nss include\prc_inc_unarmed.nss include\prc_inc_onhit.nss include\prc_misc_const.nss include\prc_inc_fork.nss include\prc_inc_natweap.nss include\inc_utility.nss include\prc_inc_spells.nss include\prc_inc_nwscript.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\prc_inc_array.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_debug.nss include\prc_inc_switch.nss include\inc_persist_loca.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\inc_item_props.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_damage.nss include\prc_inc_sb_const.nss include\prc_effect_inc.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_prc_npc.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss include\inc_abil_damage.nss
+objs\ft_vowofpoverty.ncs: scripts\ft_vowofpoverty.nss include\prc_inc_combat.nss include\inc_dynconv.nss include\prc_class_const.nss include\prc_inc_clsfunc.nss include\prc_alterations.nss include\inc_persist_loca.nss include\prc_inc_unarmed.nss include\prc_inc_onhit.nss include\prc_misc_const.nss include\prc_inc_fork.nss include\prc_inc_natweap.nss include\inc_utility.nss include\prc_inc_spells.nss include\prc_inc_nwscript.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\prc_inc_array.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_debug.nss include\prc_inc_switch.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\inc_item_props.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_damage.nss include\prc_inc_sb_const.nss include\prc_effect_inc.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_prc_npc.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss include\inc_abil_damage.nss
 
-objs\ft_vowpoverty_ab.ncs: scripts\ft_vowpoverty_ab.nss include\inc_dynconv.nss include\prc_inc_function.nss include\prc_inc_array.nss include\inc_debug.nss include\prc_inc_switch.nss include\prc_inc_util.nss include\prc_inc_spells.nss include\prc_inc_stunfist.nss include\inc_nwnx_funcs.nss include\prc_template_con.nss include\prc_alterations.nss include\inc_abil_damage.nss include\prc_inc_damage.nss include\prc_effect_inc.nss include\inc_item_props.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_utility.nss include\prc_inc_nwscript.nss include\prc_class_const.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_persist_loca.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_prc_npc.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_sb_const.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss
+objs\ft_vowpoverty_ab.ncs: scripts\ft_vowpoverty_ab.nss include\inc_dynconv.nss include\prc_inc_function.nss include\inc_persist_loca.nss include\prc_inc_array.nss include\inc_debug.nss include\prc_inc_switch.nss include\prc_inc_util.nss include\prc_inc_spells.nss include\prc_inc_stunfist.nss include\inc_nwnx_funcs.nss include\prc_template_con.nss include\prc_alterations.nss include\inc_abil_damage.nss include\prc_inc_damage.nss include\prc_effect_inc.nss include\inc_item_props.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_utility.nss include\prc_inc_nwscript.nss include\prc_class_const.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_prc_npc.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_sb_const.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss
 
 objs\gen_sptouchice.ncs: scripts\gen_sptouchice.nss include\prc_alterations.nss include\prc_inc_spells.nss include\inc_poison.nss include\inc_abil_damage.nss include\prc_inc_damage.nss include\prc_effect_inc.nss include\inc_item_props.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_utility.nss include\prc_inc_nwscript.nss include\prc_class_const.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\prc_inc_array.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_debug.nss include\prc_inc_switch.nss include\inc_persist_loca.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_prc_npc.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_sb_const.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss
 
@@ -29539,7 +29539,7 @@ objs\prc_fb_auto_fre.ncs: scripts\prc_fb_auto_fre.nss include\prc_spell_const.ns
 
 objs\prc_fb_deathless.ncs: scripts\prc_fb_deathless.nss
 
-objs\prc_feats.ncs: scripts\prc_feats.nss include\moi_inc_moifunc.nss include\prc_inc_clsfunc.nss include\prc_inc_natweap.nss include\prc_inc_function.nss include\inc_utility.nss include\prc_inc_spells.nss include\prc_inc_nwscript.nss include\prc_class_const.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\prc_inc_array.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_debug.nss include\prc_inc_switch.nss include\inc_persist_loca.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\inc_item_props.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_damage.nss include\prc_inc_sb_const.nss include\prc_effect_inc.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_prc_npc.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss include\prc_inc_util.nss include\prc_inc_stunfist.nss include\inc_nwnx_funcs.nss include\prc_template_con.nss include\prc_alterations.nss include\inc_abil_damage.nss
+objs\prc_feats.ncs: scripts\prc_feats.nss include\moi_inc_moifunc.nss include\prc_inc_clsfunc.nss include\inc_persist_loca.nss include\prc_inc_natweap.nss include\prc_inc_function.nss include\inc_utility.nss include\prc_inc_spells.nss include\prc_inc_nwscript.nss include\prc_class_const.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\prc_inc_array.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_debug.nss include\prc_inc_switch.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\inc_item_props.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_damage.nss include\prc_inc_sb_const.nss include\prc_effect_inc.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_prc_npc.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss include\prc_inc_util.nss include\prc_inc_stunfist.nss include\inc_nwnx_funcs.nss include\prc_template_con.nss include\prc_alterations.nss include\inc_abil_damage.nss
 
 objs\prc_fh_da.ncs: scripts\prc_fh_da.nss include\prc_alterations.nss include\inc_abil_damage.nss include\prc_inc_damage.nss include\prc_effect_inc.nss include\inc_item_props.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_utility.nss include\prc_inc_nwscript.nss include\prc_class_const.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\prc_inc_array.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_debug.nss include\prc_inc_switch.nss include\inc_persist_loca.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_prc_npc.nss
 
diff --git a/nwn/nwnprc/trunk/psionics/psi_pyro_conf.nss b/nwn/nwnprc/trunk/psionics/psi_pyro_conf.nss
index 2bbdfbe5..a2b3b95c 100644
--- a/nwn/nwnprc/trunk/psionics/psi_pyro_conf.nss
+++ b/nwn/nwnprc/trunk/psionics/psi_pyro_conf.nss
@@ -38,7 +38,7 @@ void main()
             if(!GetIsReactionTypeFriendly(oTarget))
             {
                 //Fire cast spell at event for the specified target
-                PRCSignalSpellEvent(oTarget, TRUE, SPELL_CONFLAGRATION);
+                PRCSignalSpellEvent(oTarget, TRUE, SPELL_PYRO_CONFLAGRATION);
 
                 fDelay = PRCGetSpellEffectDelay(lTarget, oTarget);
 
diff --git a/nwn/nwnprc/trunk/scripts/ft_vowofpoverty.nss b/nwn/nwnprc/trunk/scripts/ft_vowofpoverty.nss
index aff04a8b..852059ec 100644
--- a/nwn/nwnprc/trunk/scripts/ft_vowofpoverty.nss
+++ b/nwn/nwnprc/trunk/scripts/ft_vowofpoverty.nss
@@ -13,6 +13,7 @@
 #include "prc_alterations"
 #include "NW_I0_GENERIC"
 #include "nw_i0_spells"
+#include "inc_persist_loca"
 
 effect VoPDamage(int nTotalEnhancement) //Just for unarmed, so just bludgeoning
 {
@@ -46,7 +47,7 @@ void main()
     object oSkin = GetPCSkin(oPC);
 	int nSlot;
 	int nEvent = GetCurrentlyRunningEvent();
-    int nLevel = GetCharacterLevel(oPC);
+    int nLevel = GetCharacterLevel(oPC)-GetPersistantLocalInt(oPC,"VoPLevel1")+1;
 	int nLevelCheck;
 	int nACArmor = 4+nLevel/3;
 	int nACDeflection = nLevel/6;
@@ -65,6 +66,7 @@ void main()
 	else 									    nTotalEnhancement = nExaltedStrike;
 	
     // We aren't being called from any event, instead from EvalPRCFeats
+	
     if(nEvent == FALSE)
 	{	
 		//Check if level up bonus has already been chosen and given for any of past Forsaker levels
@@ -120,52 +122,44 @@ void main()
 		//True Seeing at 18th
 		if (nLevel>=18) IPSafeAddItemProperty(oSkin, ItemPropertyTrueSeeing(), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, TRUE, TRUE);
 		
-		// Enhacement bonus - only applies to weapons (or unarmed)
-		if(GetIsUnarmed(oPC)) //If it is unarmed, give enhancement bonus to self
+		// Exalted Strike - only applies to weapons or unarmed
+		effect eEffect1 = EffectAttackIncrease(nTotalEnhancement);
+		effect eEffect2 = VoPDamage(nTotalEnhancement);
+		effect eLink = EffectLinkEffects(eEffect1,eEffect2);
+			   eLink = SupernaturalEffect(eLink);
+			   eLink = TagEffect(eLink, "EffectExaltedStrike");
+		
+		//Remove any prior bonus to avoid duplication
+		effect eCheckEffect = GetFirstEffect(oPC);
+		while (GetIsEffectValid(eCheckEffect))
 		{
-			RemoveSpecificEffect(EFFECT_TYPE_ATTACK_INCREASE, oPC); //Remove any prior bonus to avoid duplication
-			RemoveSpecificEffect(EFFECT_TYPE_DAMAGE_INCREASE, oPC);
-			ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectAttackIncrease(nTotalEnhancement), oPC); //Then set the bonus again
-			ApplyEffectToObject(DURATION_TYPE_PERMANENT, VoPDamage(nTotalEnhancement), oPC);
-		}
-		else
-		{			
-			object oItemR = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC);
-			object oItemL = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPC);
-			if(IPGetIsMeleeWeapon(oItemR) || GetWeaponRanged(oItemR))
-			{
-				RemoveSpecificEffect(EFFECT_TYPE_ATTACK_INCREASE, oPC);
-				RemoveSpecificEffect(EFFECT_TYPE_DAMAGE_INCREASE, oPC);
-				IPSafeAddItemProperty(oItemR, ItemPropertyEnhancementBonus(nTotalEnhancement));
-			}  				
-			else if(IPGetIsMeleeWeapon(oItemL) || GetWeaponRanged(oItemL))
-			{
-				RemoveSpecificEffect(EFFECT_TYPE_ATTACK_INCREASE, oPC);
-				RemoveSpecificEffect(EFFECT_TYPE_DAMAGE_INCREASE, oPC);
-				IPSafeAddItemProperty(oItemL, ItemPropertyEnhancementBonus(nTotalEnhancement));
-			}
+			if(GetEffectTag(eCheckEffect) == "EffectExaltedStrike") RemoveEffect(oPC, eCheckEffect);
+			eCheckEffect = GetNextEffect(oPC);
 		}
+	    
+		//Give player the bonus, regardless of the weapon
+		ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oPC); 	
 		
 		// For some reason, EVENT_ONPLAYEREQUIPITEM just works with weapons, so it is better to check all other items for magic elsewhere		
 		for (nSlot=0; nSlot < 13; nSlot++) //All but creatures slots
 		{
 			oItem=GetItemInSlot(nSlot, oPC);
-			if((GetIsItemPropertyValid(GetFirstItemProperty(oItem)) && !(nSlot == 4 || nSlot == 5)) //Check if it is magical (all items but on the hands)
-			  || (nSlot == 1 && GetBaseAC(oItem) >= 1)                                               //Check if it is an armor (AC>0)
-			  || (nSlot == 5 && GetBaseItemType(oItem) == BASE_ITEM_SMALLSHIELD ||                   //Check if it is a shield 
-								GetBaseItemType(oItem) == BASE_ITEM_LARGESHIELD || 
-								GetBaseItemType(oItem) == BASE_ITEM_TOWERSHIELD))
+			if((GetIsItemPropertyValid(GetFirstItemProperty(oItem)) && !(GetItemPropertyTag(GetFirstItemProperty(oItem)) == "Tag_PRC_OnHitKeeper")
+			  && !(nSlot == 4 || nSlot == 5)) 										   //Check if it is magical (all items but on the hands)
+			   || (nSlot == 1 && GetBaseAC(oItem) >= 1)                                //Check if it is an armor (AC>0)
+			   || (nSlot == 5 && GetBaseItemType(oItem) == BASE_ITEM_SMALLSHIELD ||    //Check if it is a shield 
+							     GetBaseItemType(oItem) == BASE_ITEM_LARGESHIELD || 
+								 GetBaseItemType(oItem) == BASE_ITEM_TOWERSHIELD))
 			{
 				AssignCommand(oPC, ClearAllActions(TRUE));
 				AssignCommand(oPC, ActionUnequipItem(oItem));
 				FloatingTextStringOnCreature(GetName(oItem)+" would break your vow!", oPC, FALSE);
 			}
 		}
+		
+		//Remove bonus from unequiped weapons
 		oItem = GetPCItemLastUnequipped();
-		if((IPGetIsMeleeWeapon(oItem) || GetWeaponRanged(oItem)))
-		{
-			IPRemoveAllItemProperties(oItem, DURATION_TYPE_PERMANENT); //Remove bonus from unequiped weapons
-		}	
+		if((IPGetIsMeleeWeapon(oItem) || GetWeaponRanged(oItem)))  	IPRemoveAllItemProperties(oItem, DURATION_TYPE_PERMANENT); 
 		
         AddEventScript(oPC, EVENT_SCRIPT_MODULE_ON_EQUIP_ITEM, "ft_vowofpoverty", TRUE, FALSE);
     }
diff --git a/nwn/nwnprc/trunk/scripts/ft_vowpoverty_ab.nss b/nwn/nwnprc/trunk/scripts/ft_vowpoverty_ab.nss
index 69ad20f4..5ea491bf 100644
--- a/nwn/nwnprc/trunk/scripts/ft_vowpoverty_ab.nss
+++ b/nwn/nwnprc/trunk/scripts/ft_vowpoverty_ab.nss
@@ -16,6 +16,7 @@
 #include "inc_dynconv"
 #include "prc_inc_function"
 #include "NW_I0_GENERIC"
+#include "inc_persist_loca"
 
 //////////////////////////////////////////////////
 /* Constant defintions                          */
@@ -98,7 +99,7 @@ void main()
 	    if(nStage == STAGE_SELECT_ABIL)
         {
                 ApplyEffectToObject(DURATION_TYPE_PERMANENT,UnyieldingEffect(EffectAbilityIncrease(nChoice,2)),oPC); //Give the boost for the chosen option
-				SetPersistantLocalInt(oPC, "VoPBoost"+IntToString(GetCharacterLevel(oPC)),(nChoice+10)); //Register the boost has been given
+				SetPersistantLocalInt(oPC, "VoPBoost"+IntToString(nLevel),(nChoice+10)); //Register the boost has been given
 				
 				//Give the boost for the ones chosen before
                 for(i = 0; i < nLevel; i++)
diff --git a/nwn/nwnprc/trunk/scripts/prc_feats.nss b/nwn/nwnprc/trunk/scripts/prc_feats.nss
index 347adc6a..ae5f5ad0 100644
--- a/nwn/nwnprc/trunk/scripts/prc_feats.nss
+++ b/nwn/nwnprc/trunk/scripts/prc_feats.nss
@@ -694,6 +694,9 @@ void PRCFeat_AddBonusFeats(object oPC, object oSkin)
 
 //////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////
+#include "NW_I0_GENERIC"
+#include "inc_persist_loca"
+
 void PRCFeat_AddCompositeBonuses(object oPC, object oSkin)
 {
     int nAlignmentGoodEvil = GetAlignmentGoodEvil(oPC);
@@ -707,7 +710,11 @@ void PRCFeat_AddCompositeBonuses(object oPC, object oSkin)
         if(GetHasFeat(FEAT_SAC_VOW, oPC))
             SetCompositeBonus(oSkin, "SacredPer", 2, ITEM_PROPERTY_SKILL_BONUS, SKILL_PERSUADE);
 
-		if(GetHasFeat(FEAT_VOWOFPOVERTY, oPC))                       ExecuteScript("ft_vowofpoverty", oPC);
+		if(GetHasFeat(FEAT_VOWOFPOVERTY, oPC)) 
+		{
+			if(!GetPersistantLocalInt(oPC,"VoPLevel1")) SetPersistantLocalInt(oPC,"VoPLevel1",GetCharacterLevel(oPC));
+			ExecuteScript("ft_vowofpoverty", oPC);
+		}
 		
         if(nAlignmentLawChaos == ALIGNMENT_LAWFUL)
         {
diff --git a/nwn/nwnprc/trunk/scripts/prc_forsaker.nss b/nwn/nwnprc/trunk/scripts/prc_forsaker.nss
index 2f3bbb69..67e49024 100644
--- a/nwn/nwnprc/trunk/scripts/prc_forsaker.nss
+++ b/nwn/nwnprc/trunk/scripts/prc_forsaker.nss
@@ -61,7 +61,8 @@ void main()
 			for (nSlot=0; nSlot < 13; nSlot++) //All but creatures slots
 			{
 				oItem=GetItemInSlot(nSlot, oPC);
-				if(GetIsItemPropertyValid(GetFirstItemProperty(oItem))) //Check if it is magical (all items but on the hands))
+				//Check if it is magical
+				if(GetIsItemPropertyValid(GetFirstItemProperty(oItem)) && !(GetItemPropertyTag(GetFirstItemProperty(oItem)) == "Tag_PRC_OnHitKeeper"))
 				{
 					AssignCommand(oPC, ClearAllActions(TRUE));
 					AssignCommand(oPC, ActionUnequipItem(oItem));
@@ -85,7 +86,6 @@ void main()
 		}
 		
         // Hook in the events
-		//PostString(oPC, "prc_forsaker: Adding eventhooks", 0, 0, SCREEN_ANCHOR_TOP_LEFT, 20.0, 0xFF0000FF, 0x00000000);
         AddEventScript(oPC, EVENT_SCRIPT_MODULE_ON_EQUIP_ITEM,   "prc_forsaker", TRUE, FALSE);
     }
 	
diff --git a/nwn/nwnprc/trunk/scripts/prc_keep_onhit_a.nss b/nwn/nwnprc/trunk/scripts/prc_keep_onhit_a.nss
index 4652da08..ad8be64f 100644
--- a/nwn/nwnprc/trunk/scripts/prc_keep_onhit_a.nss
+++ b/nwn/nwnprc/trunk/scripts/prc_keep_onhit_a.nss
@@ -49,8 +49,9 @@ void AddProperty(object oItem)
         }
 
         // Add the itemproperty
-        IPSafeAddItemProperty(oItem, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1),
-                              0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
+		itemproperty ipNewOH = ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1);
+					 ipNewOH = TagItemProperty(ipNewOH, "Tag_PRC_OnHitKeeper");
+        IPSafeAddItemProperty(oItem, ipNewOH, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
 
         // Add a marker to note that the item has been handled
         SetLocalInt(oItem, "PRC_OnHitKeeper_Marker", TRUE);
@@ -64,11 +65,19 @@ void main()
     // OnEquip event
     if(nEvent == EVENT_ONPLAYEREQUIPITEM)
     {
-        object oItem = GetItemLastEquipped();
-        object oEquipper = GetItemLastEquippedBy();
-        if(GetItemInSlot(INVENTORY_SLOT_CHEST, oEquipper) == oItem)
-            AddProperty(oItem);
-    }
+        object oItem 		= GetItemLastEquipped();
+        object oEquipper 	= GetItemLastEquippedBy();
+		object oSkin 		= GetPCSkin(oEquipper);
+		
+        if(GetItemInSlot(INVENTORY_SLOT_CHEST, oEquipper) == oItem) 
+		{
+			AddProperty(oItem);
+		}
+		else
+		{
+			AddProperty(oSkin);
+		}
+	}
     // OnUnEquip event
     else if(nEvent == EVENT_ONPLAYERUNEQUIPITEM)
     {
@@ -119,7 +128,9 @@ void main()
         AddProperty(oSkin);
 
         object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oCreature);
-        if(GetIsObjectValid(oArmor))
+        if(GetIsObjectValid(oArmor)) 
+		{
             AddProperty(oArmor);
+		}
     }
 }
diff --git a/nwn/nwnprc/trunk/scripts/tmp_m_saint.nss b/nwn/nwnprc/trunk/scripts/tmp_m_saint.nss
index 872400cc..78bc5e4d 100644
--- a/nwn/nwnprc/trunk/scripts/tmp_m_saint.nss
+++ b/nwn/nwnprc/trunk/scripts/tmp_m_saint.nss
@@ -72,10 +72,14 @@ void main()
     }
 
 //:: Declare major variables
-    int iHD = GetHitDice(oPC);
-	int iWISb = GetAbilityModifier(ABILITY_WISDOM, oPC);
+	int bVowPoverty = GetHasFeat(FEAT_VOWOFPOVERTY, oPC);
+	int bForsaker	= GetLevelByClass(CLASS_TYPE_FORSAKER, oPC);
+    int iHD 		= GetHitDice(oPC);
+	int iWISb 		= GetAbilityModifier(ABILITY_WISDOM, oPC);
+	
 	object oItem;
 	object oSkin = GetPCSkin(oPC);
+	
 	itemproperty ipIP;
 	
 //:: Setup HD based Fast Healing
@@ -205,7 +209,7 @@ void main()
 		//:: Setup Holy Touch anti-evil damage shield.		
 			itemproperty iHolyTouch = (ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1));
 			object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);
-			if (GetIsObjectValid(oArmor))
+			if (GetIsObjectValid(oArmor) && !bForsaker && !bVowPoverty)
 			{
 				//:: Add item prop with DURATION_TYPE_PERMANENT
 				IPSafeAddItemProperty(oArmor, iHolyTouch, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);