HoS_PRC8/_mod/_module/nss/vamp_act_stun.nss
Jaysyn904 04165202c0 Initial upload
Initial upload
2024-11-25 19:36:07 -05:00

34 lines
1.3 KiB
Plaintext

// vamp_act_stun
// modified 06/16/2004 Jremy Greene
#include "vampire_header"
void main()
{
object oPC=GetPCSpeaker();
if (!GetIsObjectValid(oPC)) oPC=OBJECT_SELF;
object oT=GetLocalObject(oPC,"oTarget");
int nXP=GetLocalInt(oPC,"nVampireXP");
int nLevel=1+(nXP/5000);
int nStun;
int nCounter;
effect eDazed=EffectVisualEffect(VFX_IMP_DAZED_S);
effect eStun=EffectStunned();
effect eDmg=EffectDamage(0);
if (nLevel>5) nLevel=5;
nStun=d20()+(nLevel*2);
nCounter=d20()+GetWillSavingThrow(oT);
if (GetCurrentHitPoints(oT)<(GetMaxHitPoints(oT)/2)) nStun=nStun+2;
SendMessageToPC(oPC,"You rolled a "+IntToString(nStun)+" against a DC of "+IntToString(nCounter)+".");
AssignCommand(oPC,ClearAllActions());
AssignCommand(oPC,ActionMoveToObject(oT,TRUE,1.0));
//AssignCommand(oPC,ActionAttack(oT,TRUE));
AssignCommand(oPC,ActionDoCommand(SetIsTemporaryEnemy(oPC,oT)));
if (nStun>=nCounter)
{ // stun them
fnGiveVampXP(oPC,5);
AssignCommand(oPC,ActionDoCommand(ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eDazed,oT,12.0)));
AssignCommand(oPC,ActionDoCommand(ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eStun,oT,12.0)));
} // stun them
else
SendMessageToPC(oPC,"You fail to stun "+GetName(oT)+".");
}