//:://///////////////////////////////////////////// //:: Knight - Improved Shield Ally //:: prc_knght_ishlly.nss //::////////////////////////////////////////////// //:: Share Pain for one round //::////////////////////////////////////////////// //:: Created By: Stratovarius //:: Created On: July 1, 2007 //::////////////////////////////////////////////// #include "prc_alterations" void main() { //Declare main variables. object oPC = OBJECT_SELF; object oTarget = PRCGetSpellTargetObject(); object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC); object oArmor2 = GetItemInSlot(INVENTORY_SLOT_CHEST, oTarget); ExecuteScript("prc_knght_ishart", oTarget); int iDamageTaken = GetLocalInt(oTarget, "ShieldAllyDamage"); int iHeal = 0; // Once a round, fellas if (GetLocalInt(oPC, "ImprovedShieldAlly")) return; if(iDamageTaken > 0) { iHeal = iDamageTaken; effect eHeal = EffectHeal(iHeal); ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget); effect eDamage = EffectDamage(iDamageTaken); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC); } effect eDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_POSITIVE); // Get the OnHitCast: Unique on the manifester's armor / hide IPSafeAddItemProperty(oArmor2, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 6.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING); // Hook eventscript AddEventScript(oPC, EVENT_ONHIT, "psi_pow_shrpnaux", TRUE, FALSE); DelayCommand(6.0, RemoveEventScript(oPC, EVENT_ONHIT, "psi_pow_shrpnaux", TRUE, FALSE)); // Store the target for use in the damage script SetLocalObject(oTarget, "PRC_Power_SharePain_Target", oPC); // Do VFX for the monitor to look for SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDur, oTarget, 6.0, TRUE, PRCGetSpellId(), 1000); SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDur, oPC, 6.0, TRUE, PRCGetSpellId(), 1000); SetLocalInt(oPC, "ImprovedShieldAlly", TRUE); DelayCommand(6.0, DeleteLocalInt(oPC, "ImprovedShieldAlly")); }