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 }