Clear out experimental .35 files
Clear out experimental .35 files
This commit is contained in:
@@ -1,82 +0,0 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Share Pain (,Forced) auxiliary script
|
||||
//:: psi_pow_shrpnaux
|
||||
//::///////////////////////////////////////////////
|
||||
/** @file
|
||||
The eventhook script for Share Pain and Share
|
||||
Pain, Forced. Applies the damage transfer when
|
||||
the user is damaged.
|
||||
|
||||
@author Ornedan
|
||||
@date Created - 2005.11.04
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "psi_inc_psifunc"
|
||||
#include "prc_inc_spells"
|
||||
|
||||
void AvoidDR(object oTarget, int nDamage);
|
||||
|
||||
void main()
|
||||
{
|
||||
object oManifester = OBJECT_SELF;
|
||||
object oItem = GetSpellCastItem();
|
||||
|
||||
// Make sure the one doing the triggering hit was someone else
|
||||
if(GetBaseItemType(oItem) == BASE_ITEM_ARMOR ||
|
||||
GetBaseItemType(oItem) == BASE_ITEM_CREATUREITEM
|
||||
)
|
||||
{
|
||||
object oTarget = GetLocalObject(oManifester, "PRC_Power_SharePain_Target");
|
||||
int nDamage = GetTotalDamageDealt() / 2;
|
||||
effect eHealLink = EffectLinkEffects(EffectHeal(nDamage),
|
||||
EffectVisualEffect(VFX_IMP_HEALING_L)
|
||||
);
|
||||
effect eDamageVis = EffectVisualEffect(VFX_IMP_HARM);
|
||||
|
||||
// Apply effects
|
||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHealLink, oManifester);
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamageVis, oTarget);
|
||||
AvoidDR(oTarget, nDamage);
|
||||
|
||||
// If the target died, remove the event hook immediately. The monitor will take care of the rest
|
||||
if(GetIsDead(oTarget))
|
||||
RemoveEventScript(oManifester, EVENT_ONHIT, "psi_pow_shrpnaux", TRUE, FALSE);
|
||||
}// end if - Manifester was the one hit in the triggering attack
|
||||
}
|
||||
|
||||
void AvoidDR(object oTarget, int nDamage)
|
||||
{
|
||||
int nCurHP = GetCurrentHitPoints(oTarget);
|
||||
int nTargetHP = nCurHP - nDamage;
|
||||
int nDamageToApply = nDamage;
|
||||
effect eDamage;
|
||||
|
||||
// Try magical damage
|
||||
eDamage = EffectDamage(nDamageToApply, DAMAGE_TYPE_MAGICAL);
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget);
|
||||
|
||||
// Check if the target's HP dropped enough. Skip if the target died on the way
|
||||
if(GetCurrentHitPoints(oTarget) > nTargetHP && !GetIsDead(oTarget))
|
||||
{
|
||||
// Didn't, try again, this time with Divine damage
|
||||
nDamageToApply = GetCurrentHitPoints(oTarget) - nTargetHP;
|
||||
|
||||
eDamage = EffectDamage(nDamageToApply, DAMAGE_TYPE_DIVINE);
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget);
|
||||
|
||||
// Check if the target's HP dropped enough. Skip if the target died on the way
|
||||
if(GetCurrentHitPoints(oTarget) > nTargetHP && !GetIsDead(oTarget))
|
||||
{
|
||||
// Didn't, try again, this time with Positive damage
|
||||
nDamageToApply = GetCurrentHitPoints(oTarget) - nTargetHP;
|
||||
|
||||
eDamage = EffectDamage(nDamageToApply, DAMAGE_TYPE_POSITIVE);
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget);
|
||||
|
||||
// If it still didn't work, just give up. The blighter probably has immunities to everything else, too, anyway
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user