2024-02-13 13:20:49 +01:00

385 lines
11 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
initcharacterface()
{
if ( !anim.usefacialanims )
return;
if ( !isdefined( self.a.currentdialogimportance ) )
{
self.a.currentdialogimportance = 0;
self.a.idleface = anim.alertface;
self.facewaiting = [];
self.facelastnotifynum = 0;
}
}
saygenericdialogue( var_0 )
{
var_1 = undefined;
switch ( self.voice )
{
case "pmc":
case "czech":
case "french":
case "delta":
case "taskforce":
case "seal":
case "american":
var_2 = "friendly";
var_3 = anim.numfriendlyvoices;
break;
default:
var_2 = "enemy";
var_3 = anim.numenemyvoices;
}
var_1 = 1 + self getentitynumber() % var_3;
var_2 = var_2 + "_" + var_1;
var_4 = undefined;
switch ( var_0 )
{
case "meleeattack":
case "meleecharge":
var_5 = 0.5;
break;
case "flashbang":
var_5 = 0.7;
break;
case "pain":
var_5 = 0.9;
break;
case "dogdeathlongplr":
case "dogdeathshortplr":
case "dogdeathlong":
case "dogdeathshort":
case "death":
var_5 = 1.0;
break;
default:
var_5 = 0.3;
break;
}
var_6 = undefined;
if ( isdefined( self.generic_voice_override ) )
{
var_6 = self.generic_voice_override + "_" + var_0 + "_" + var_2;
if ( !soundexists( var_6 ) )
var_6 = "generic_" + var_0 + "_" + var_2;
}
else
var_6 = "generic_" + var_0 + "_" + var_2;
thread playfacethread( var_4, var_6, var_5 );
}
setidlefacedelayed( var_0 )
{
animscripts\battlechatter::playbattlechatter();
self.a.idleface = var_0;
}
setidleface( var_0 )
{
if ( !anim.usefacialanims )
return;
animscripts\battlechatter::playbattlechatter();
self.a.idleface = var_0;
playidleface();
}
sayspecificdialogue( var_0, var_1, var_2, var_3, var_4, var_5 )
{
thread playfacethread( var_0, var_1, var_2, var_3, var_4, var_5 );
}
chooseanimfromset( var_0 )
{
return;
}
playidleface()
{
return;
}
playfacethread( var_0, var_1, var_2, var_3, var_4, var_5 )
{
self.a.facialanimdone = 1;
self.a.facialsounddone = 1;
if ( isdefined( var_3 ) )
{
if ( isdefined( var_1 ) )
{
self playsoundatviewheight( var_1, "animscript facesound" + var_3, 1 );
thread waitforfacesound( var_3 );
}
}
else
self playsoundatviewheight( var_1 );
if ( !anim.usefacialanims )
return;
initcharacterface();
if ( !isdefined( var_0 ) && !isdefined( var_1 ) )
{
if ( isdefined( var_3 ) )
{
wait 0;
self.faceresult = "failed";
self notify( var_3 );
}
}
else
{
self endon( "death" );
if ( isstring( var_2 ) )
{
switch ( var_2 )
{
case "any":
var_2 = 0.1;
break;
case "pain":
var_2 = 0.9;
break;
case "death":
var_2 = 1.0;
break;
}
}
if ( var_2 <= self.a.currentdialogimportance && ( isdefined( var_4 ) && var_4 == "wait" ) )
{
var_6 = self.facewaiting.size;
var_7 = self.facelastnotifynum + 1;
self.facewaiting[var_6]["facialanim"] = var_0;
self.facewaiting[var_6]["soundAlias"] = var_1;
self.facewaiting[var_6]["importance"] = var_2;
self.facewaiting[var_6]["notifyString"] = var_3;
self.facewaiting[var_6]["waitOrNot"] = var_4;
self.facewaiting[var_6]["timeToWait"] = var_5;
self.facewaiting[var_6]["notifyNum"] = var_7;
thread playface_waitfornotify( "animscript face stop waiting " + self.facewaiting[var_6]["notifyNum"], "Face done waiting", "Face done waiting" );
if ( isdefined( var_5 ) )
thread playface_waitfortime( var_5, "Face done waiting", "Face done waiting" );
self waittill( "Face done waiting" );
var_6 = undefined;
for ( var_8 = 0; var_8 < self.facewaiting.size; var_8++ )
{
if ( self.facewaiting[var_8]["notifyNum"] == var_7 )
{
var_6 = var_8;
break;
}
}
if ( self.a.facewaitforresult == "notify" )
playfacethread( self.facewaiting[var_6]["facialanim"], self.facewaiting[var_6]["soundAlias"], self.facewaiting[var_6]["importance"], self.facewaiting[var_6]["notifyString"] );
else if ( isdefined( var_3 ) )
{
self.faceresult = "failed";
self notify( var_3 );
}
for ( var_8 = var_6 + 1; var_8 < self.facewaiting.size; var_8++ )
{
self.facewaiting[var_8 - 1]["facialanim"] = self.facewaiting[var_8]["facialanim"];
self.facewaiting[var_8 - 1]["soundAlias"] = self.facewaiting[var_8]["soundAlias"];
self.facewaiting[var_8 - 1]["importance"] = self.facewaiting[var_8]["importance"];
self.facewaiting[var_8 - 1]["notifyString"] = self.facewaiting[var_8]["notifyString"];
self.facewaiting[var_8 - 1]["waitOrNot"] = self.facewaiting[var_8]["waitOrNot"];
self.facewaiting[var_8 - 1]["timeToWait"] = self.facewaiting[var_8]["timeToWait"];
self.facewaiting[var_8 - 1]["notifyNum"] = self.facewaiting[var_8]["notifyNum"];
}
self.facewaiting[self.facewaiting.size - 1] = undefined;
}
else
{
if ( var_2 >= self.a.currentdialogimportance )
{
self notify( "end current face" );
self endon( "end current face" );
if ( isdefined( var_3 ) )
{
if ( isdefined( self.a.currentdialognotifystring ) )
{
self.faceresult = "interrupted";
self notify( self.a.currentdialognotifystring );
}
}
self.a.currentdialogimportance = var_2;
self.a.currentdialogsound = var_1;
self.a.currentdialognotifystring = var_3;
self.a.facialanimdone = 1;
self.a.facialsounddone = 1;
if ( isdefined( var_0 ) )
{
maps\_anim::disabledefaultfacialanims();
self setflaggedanimknobrestart( "animscript faceanim", var_0, 1, 0.1, 1 );
self.a.facialanimdone = 0;
thread waitforfacialanim();
}
else
maps\_anim::disabledefaultfacialanims( 0 );
if ( isdefined( var_1 ) )
{
self playsoundatviewheight( var_1, "animscript facesound", 1 );
self.a.facialsounddone = 0;
thread waitforfacesound();
}
while ( !self.a.facialanimdone || !self.a.facialsounddone )
self waittill( "animscript facedone" );
self.a.currentdialogimportance = 0;
self.a.currentdialogsound = undefined;
self.a.currentdialognotifystring = undefined;
if ( isdefined( var_3 ) )
{
self.faceresult = "finished";
self notify( var_3 );
}
if ( isdefined( self.facewaiting ) && self.facewaiting.size > 0 )
{
var_9 = 0;
var_10 = 1;
for ( var_8 = 0; var_8 < self.facewaiting.size; var_8++ )
{
if ( self.facewaiting[var_8]["importance"] > var_9 )
{
var_9 = self.facewaiting[var_8]["importance"];
var_10 = var_8;
}
}
self notify( "animscript face stop waiting " + self.facewaiting[var_10]["notifyNum"] );
return;
}
if ( isai( self ) )
{
playidleface();
return;
}
return;
return;
}
if ( isdefined( var_3 ) )
{
self.faceresult = "failed";
self notify( var_3 );
}
}
}
}
waitforfacialanim()
{
self endon( "death" );
self endon( "end current face" );
animscripts\shared::donotetracks( "animscript faceanim" );
self.a.facialanimdone = 1;
self notify( "animscript facedone" );
maps\_anim::disabledefaultfacialanims( 0 );
}
waitforfacesound( var_0 )
{
self endon( "death" );
self waittill( "animscript facesound" + var_0 );
self notify( var_0 );
}
playface_waitfornotify( var_0, var_1, var_2 )
{
self endon( "death" );
self endon( var_2 );
self waittill( var_0 );
self.a.facewaitforresult = "notify";
self notify( var_1 );
}
playface_waitfortime( var_0, var_1, var_2 )
{
self endon( "death" );
self endon( var_2 );
wait( var_0 );
self.a.facewaitforresult = "time";
self notify( var_1 );
}
initlevelface()
{
anim.numfriendlyvoices = 8;
anim.numenemyvoices = 8;
initfacialanims();
}
#using_animtree("generic_human");
initfacialanims()
{
anim.facial = [];
anim.facial["pain"] = [ %facial_pain_1, %facial_pain_2, %facial_pain_3, %facial_pain_4 ];
anim.facial["aim"] = [ %facial_aim_1, %facial_aim_2 ];
anim.facial["run"] = [ %facial_run_1, %facial_run_2 ];
anim.facial["corner_stand_L"] = [ %facial_corner_stand_l_1, %facial_corner_stand_l_2 ];
anim.facial["corner_stand_R"] = [ %facial_corner_stand_r_1, %facial_corner_stand_r_2 ];
anim.facial["death"] = [ %facial_death_1, %facial_death_2, %facial_death_3, %facial_death_4 ];
}
animhasfacialoverride( var_0 )
{
return animhasnotetrack( var_0, "facial_override" );
}
playfacialanim( var_0, var_1, var_2 )
{
if ( isdefined( self.bdisabledefaultfacialanims ) && self.bdisabledefaultfacialanims )
self clearanim( %head, 0.2 );
else
{
if ( isdefined( var_0 ) && animhasfacialoverride( var_0 ) )
{
self clearanim( %head, 0.2 );
return;
}
if ( !isdefined( anim.facial[var_1] ) )
return;
if ( isdefined( var_2 ) && var_2 >= 0 && var_2 < anim.facial[var_1].size )
var_3 = var_2;
else
var_3 = randomint( anim.facial[var_1].size );
var_4 = anim.facial[var_1][var_3];
self setanimknob( var_4 );
}
}