Jaysyn904 04165202c0 Initial upload
Initial upload
2024-11-25 19:36:07 -05:00

47 lines
1.8 KiB
Plaintext

void main()
{
object oMe=OBJECT_SELF;
object oMother=GetLocalObject(oMe,"oMother");
effect eE;
int nN;
object oOb;
if (oMother!=OBJECT_INVALID&&GetIsDead(oMother)==FALSE)
{ // mother lives
eE=EffectVisualEffect(57);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eE,oMe,5.0);
eE=EffectDamageResistance(DAMAGE_TYPE_PIERCING,10,0);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eE,oMe,10.0);
eE=EffectDamageResistance(DAMAGE_TYPE_SLASHING,10,0);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eE,oMe,10.0);
eE=EffectDamageResistance(DAMAGE_TYPE_BLUDGEONING,4,0);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eE,oMe,10.0);
nN=GetMaxHitPoints(oMother)-GetCurrentHitPoints(oMother);
if (nN>0)
{ // heal mother
eE=EffectBeam(VFX_BEAM_LIGHTNING,oMe,BODY_NODE_HAND);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eE,oMother,3.0);
eE=EffectHeal(d4());
ApplyEffectToObject(DURATION_TYPE_INSTANT,eE,oMother,1.0);
} // heal mother
else
{ // attack enemy
oOb=GetNearestCreature(CREATURE_TYPE_IS_ALIVE,TRUE,oMe,1,CREATURE_TYPE_REPUTATION,REPUTATION_TYPE_ENEMY);
if (GetObjectSeen(oOb,oMother)==FALSE)
{ // pick target based on mother
oOb=GetNearestCreature(CREATURE_TYPE_IS_ALIVE,TRUE,oMother,1,CREATURE_TYPE_REPUTATION,REPUTATION_TYPE_ENEMY,CREATURE_TYPE_PERCEPTION,PERCEPTION_SEEN);
} // pick target based on mother
if (oOb!=OBJECT_INVALID)
{ // attack
eE=EffectBeam(VFX_BEAM_LIGHTNING,oMe,BODY_NODE_HAND);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eE,oOb,3.0);
eE=EffectDamage(d4(),DAMAGE_TYPE_ELECTRICAL);
ApplyEffectToObject(DURATION_TYPE_INSTANT,eE,oOb,1.0);
} // attack
} // attack enemy
} // mother lives
else
{ // despawn
DestroyObject(oMe);
} // despawn
}