Forsaker / Saint / Vow of Poverty interaction fixes
Forsaker / Saint / Vow of Poverty interaction fixes. Renamed Pyro Conflagration constant. Removed depreciated PRC4 archive. Updated release archive.
This commit is contained in:
parent
a8c707e987
commit
b6cc854fab
BIN
Release/PRC8_20250104.7z
Normal file
BIN
Release/PRC8_20250104.7z
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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++)
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user