///:://///////////////////////////////////////////// //:: Blackstaff //:: X2_S0_Blckstff //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* Adds +4 enhancement bonus, On Hit: Dispel. */ //::////////////////////////////////////////////// //:: Created By: Andrew Nobbs //:: Created On: Nov 29, 2002 //::////////////////////////////////////////////// //:: Updated by Andrew Nobbs May 07, 2003 //:: 2003-07-07: Stacking Spell Pass, Georg Zoeller //:: 2003-07-15: Complete Rewrite to make use of Item Property System #include "nw_i0_spells" #include "x2_i0_spells" #include "x2_inc_spellhook" // Palmer - now adds only +2 to bonus void AddBlackStaffEffectOnWeapon (object oTarget, float fDuration) { IPSafeAddItemProperty(oTarget, ItemPropertyEnhancementBonus(2), fDuration, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING,FALSE, TRUE); IPSafeAddItemProperty(oTarget, ItemPropertyOnHitProps(IP_CONST_ONHIT_DISPELMAGIC, IP_CONST_ONHIT_SAVEDC_16), fDuration,X2_IP_ADDPROP_POLICY_REPLACE_EXISTING ); IPSafeAddItemProperty(oTarget, ItemPropertyVisualEffect(ITEM_VISUAL_EVIL), fDuration,X2_IP_ADDPROP_POLICY_REPLACE_EXISTING,FALSE,TRUE ); return; } void main() { /* Spellcast Hook Code Added 2003-07-07 by Georg Zoeller If you want to make changes to all spells, check x2_inc_spellhook.nss to find out more */ if (!X2PreSpellCastCode()) { // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell return; } // End of Spell Cast Hook //Declare major variables effect eVis = EffectVisualEffect(VFX_IMP_EVIL_HELP); effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); int nDuration = GetCasterLevel(OBJECT_SELF); int nMetaMagic = GetMetaMagicFeat(); object oMyWeapon = IPGetTargetedOrEquippedMeleeWeapon(); if (nMetaMagic == METAMAGIC_EXTEND) { nDuration = nDuration * 2; //Duration is +100% } if(GetIsObjectValid(oMyWeapon) ) { SignalEvent(GetItemPossessor(oMyWeapon), EventSpellCastAt(OBJECT_SELF, GetSpellId(), FALSE)); if (GetBaseItemType(oMyWeapon) == BASE_ITEM_QUARTERSTAFF) { if (nDuration>0) { ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, GetItemPossessor(oMyWeapon)); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDur, GetItemPossessor(oMyWeapon), RoundsToSeconds(nDuration)); AddBlackStaffEffectOnWeapon(oMyWeapon, RoundsToSeconds(nDuration)); } return; } else { FloatingTextStrRefOnCreature(83620, OBJECT_SELF); // not a qstaff return; } } else { FloatingTextStrRefOnCreature(83615, OBJECT_SELF); return; } }