Usage :
Code: Select all
#include "puke"
object oPlayer = ###;
Puke(oPlayer);
Code: Select all
location GetLocationAboveAndInFrontOf(object oPC, float fDist, float fHeight){
float fDistance = -fDist;
object oTarget = (oPC);
object oArea = GetArea(oTarget);
vector vPosition = GetPosition(oTarget);
vPosition.z += fHeight;
float fOrientation = GetFacing(oTarget);
vector vNewPos = AngleToVector(fOrientation);
float vZ = vPosition.z;
float vX = vPosition.x - fDistance * vNewPos.x;
float vY = vPosition.y - fDistance * vNewPos.y;
fOrientation = GetFacing(oTarget);
vX = vPosition.x - fDistance * vNewPos.x;
vY = vPosition.y - fDistance * vNewPos.y;
vNewPos = AngleToVector(fOrientation);
vZ = vPosition.z;
vNewPos = Vector(vX, vY, vZ);
return Location(oArea, vNewPos, fOrientation);
}
void Puke(object oActivator){
float fHeight = 1.7;
float fDistance = 0.1;
if (GetGender(oActivator) == GENDER_MALE){
switch (GetRacialType(oActivator)){
case RACIAL_TYPE_HUMAN:
case RACIAL_TYPE_HALFELF:
fHeight = 1.7;
fDistance = 0.12;
break;
case RACIAL_TYPE_ELF:
fHeight = 1.55;
fDistance = 0.08;
break;
case RACIAL_TYPE_GNOME:
case RACIAL_TYPE_HALFLING:
fHeight = 1.15;
fDistance = 0.12;
break;
case RACIAL_TYPE_DWARF:
fHeight = 1.2;
fDistance = 0.12;
break;
case RACIAL_TYPE_HALFORC:
fHeight = 1.9;
fDistance = 0.2;
break;
}
}
else{
switch (GetRacialType(oActivator)){
case RACIAL_TYPE_HUMAN:
case RACIAL_TYPE_HALFELF:
fHeight = 1.6;
fDistance = 0.12;
break;
case RACIAL_TYPE_ELF:
fHeight = 1.45;
fDistance = 0.12;
break;
case RACIAL_TYPE_GNOME:
case RACIAL_TYPE_HALFLING:
fHeight = 1.1;
fDistance = 0.075;
break;
case RACIAL_TYPE_DWARF:
fHeight = 1.2;
fDistance = 0.1;
break;
case RACIAL_TYPE_HALFORC:
fHeight = 1.8;
fDistance = 0.13;
break;
}
}
location lAboveHead = GetLocationAboveAndInFrontOf(oActivator, fDistance + 0.2, fHeight - 0.4);
AssignCommand(oActivator, ActionPlayAnimation(ANIMATION_LOOPING_TALK_PLEADING, 1.0, 0.5));
AssignCommand(oActivator, ActionSpeakString("*Pukes*", TALKVOLUME_TALK));
DelayCommand(0.1, AssignCommand(oActivator, ActionDoCommand(ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_YELLOW_SMALL), lAboveHead))));
switch(d3()){
case 1 :
DelayCommand(0.3, PlayVoiceChat(VOICE_CHAT_PAIN1, oActivator));
break;
case 2 :
DelayCommand(0.3, PlayVoiceChat(VOICE_CHAT_PAIN2, oActivator));
break;
case 3 :
DelayCommand(0.3, PlayVoiceChat(VOICE_CHAT_PAIN3, oActivator));
break;
}
}