47 lines
1.8 KiB
Plaintext
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
|
|
}
|