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

54 lines
2.0 KiB
Plaintext

// Vampire buried heartbeat
void main()
{
object oTarget=GetLocalObject(OBJECT_SELF,"oVampire");
effect eEff;
float fDist;
object oNearby;
int nC=1;
int nT;
int nR;
if (oTarget==OBJECT_INVALID)
{
oNearby=GetNearestCreature(CREATURE_TYPE_IS_ALIVE,TRUE,OBJECT_SELF,nC,CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_IS_PC);
if (GetLocalInt(oNearby,"nIsVampire")==TRUE)
{
oTarget=oNearby;
SetLocalObject(OBJECT_SELF,"oVampire",oNearby);
}
}
if ((GetIsDay()==TRUE||GetIsDawn()==TRUE)&&GetArea(oTarget)==GetArea(OBJECT_SELF))
{ // stay buried
SetLocalInt(oTarget,"nBuried",TRUE);
eEff=EffectCutsceneParalyze();
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eEff,oTarget,10.0);
eEff=EffectInvisibility(INVISIBILITY_TYPE_IMPROVED);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eEff,oTarget,10.0);
oNearby=GetNearestCreature(CREATURE_TYPE_IS_ALIVE,TRUE,OBJECT_SELF,nC,CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_IS_PC);
fDist=GetDistanceBetween(oNearby,OBJECT_SELF);
while(oNearby!=OBJECT_INVALID&&fDist<15.0)
{ // cold chills
if (GetAlignmentGoodEvil(oNearby)==ALIGNMENT_GOOD)
{ // good player
nR=d20()+GetSkillRank(SKILL_SPOT,oNearby);
if (nR>18&&oNearby!=oTarget)
{
if (GetLevelByClass(CLASS_TYPE_PALADIN,oNearby)>0)
SendMessageToPC(oNearby,"You feel the presence of a foul spirit nearby.");
else if (GetLevelByClass(CLASS_TYPE_WIZARD,oNearby)>0)
SendMessageToPC(oNearby,"You feel the presence of a powerful undead force nearby.");
else { SendMessageToPC(oNearby,"You feel cold chills."); }
}
} // good player
nC++;
oNearby=GetNearestCreature(CREATURE_TYPE_IS_ALIVE,TRUE,OBJECT_SELF,nC,CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_IS_PC);
fDist=GetDistanceBetween(oNearby,OBJECT_SELF);
} // cold chills
} // stay buried
else
{ //
SetLocalInt(oTarget,"nBuried",FALSE);
DestroyObject(OBJECT_SELF);
} //
}