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"); }