PWE_PRC8/_module/nss/mod_heart.nss
Jaysyn904 ee1dc35889 Initial Commit
Initial Commit
2025-04-03 10:29:41 -04:00

114 lines
4.0 KiB
Plaintext

void Cough(object oDM)
{
string snd = "as_pl_coughm" + IntToString(Random(7)+1);
if (GetGender(oDM)) snd = "as_pl_coughf" + IntToString(Random(7)+1);
AssignCommand (oDM, PlaySound(snd));
return;
}
void Puke(object oPC)
{
DelayCommand(1.0,ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(Random(3) + VFX_COM_CHUNK_GREEN_SMALL), oPC, 1.0));
Cough(oPC);
}
void MakeDrunk(object oPC, int alc)
{
int alev;
int hit;
alc -= 1;
SetLocalInt(oPC,"alcohol",alc);
alev = GetLocalInt(oPC,"alclevel");
if (alev != alc / 5) {
alev = alc / 5;
SetLocalInt(oPC,"alclevel",alev);
if (alev == 0) {
SendMessageToPC(oPC, "You are quite sober.");
} else if(alev == 1) {
SendMessageToPC(oPC, "You are a bit tipsy.");
} else if(alev == 2) {
SendMessageToPC(oPC, "You are drunk.");
if (GetGender(oPC)) AssignCommand ( oPC, PlaySound("as_pl_tavcallf1"));
else AssignCommand ( oPC, PlaySound("as_pl_tavsongm1"));
} else if(alev == 3) {
SendMessageToPC(oPC, "You are roaring drunk.");
if (GetGender(oPC)) AssignCommand ( oPC, PlaySound("as_pl_tavlewdf1"));
else AssignCommand ( oPC, PlaySound("as_pl_tavsongm2"));
} else if(alev == 4) {
SendMessageToPC(oPC, "You are Legless.");
} else if(alev >= 5) {
SendMessageToPC(oPC, "You are Paralytic.");
}
}
hit = 0;
if (alev == 1) AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_PAUSE_DRUNK, 1.0, 4.0));
if (alev > 1) hit = 1;
if (alev > 1 && alev < 5) {
if (FortitudeSave(oPC,alc+15)) {
hit = 0;
if (Random(3) != 1) {
AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_PAUSE_DRUNK, 1.0, 4.0));
} else {
AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_TALK_LAUGHING, 1.0, 1.0));
AssignCommand(oPC, PlayVoiceChat(VOICE_CHAT_LAUGH));
AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_PAUSE_DRUNK, 1.0, 4.0));
}
}
}
if (hit > 0) {
AssignCommand(oPC, ClearAllActions(TRUE));
if (alev < 5) {
if (Random(6-alev) == 1) {
if (Random(6) == 2) {
Puke(oPC);
} else {
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_IMP_SLEEP),oPC,10.0);
}
}
hit = Random(5);
if (hit == 0) {
AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_SIT_CROSS, 1.0, 5.0));
} else if (hit == 1) {
AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_MEDITATE, 1.0, 5.0));
} else if (hit == 2) {
AssignCommand(oPC, ActionRandomWalk());
} else {
AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_DEAD_FRONT, 1.0, 10.0));
}
} else {
if (Random(12 - alev) == 2) {
Puke(oPC);
} else {
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_IMP_SLEEP),oPC,10.0);
}
if (Random(6) != 1) {
AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_DEAD_FRONT, 1.0, 10.0));
} else {
AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_WORSHIP, 1.0, 5.0));
}
}
}
}
void main()
{
ExecuteScript("hd_o0_heartbeat",OBJECT_SELF);
ExecuteScript("race_hb", GetModule() );
int alc;
object oPC = GetFirstPC();
while(oPC!=OBJECT_INVALID && GetIsObjectValid(oPC)==TRUE) {
int punish = GetLocalInt(oPC,"punish");
if (punish > 0) {
SetLocalInt(oPC,"punish", punish-6);
Puke(oPC);
}
alc = GetLocalInt(oPC,"alcohol");
if (alc > 0) MakeDrunk(oPC, alc);
oPC = GetNextPC();
}
SetLocalString(GetModule(), "NWNX!VERSION", "xxxxxxxx");
}