386 lines
11 KiB
Plaintext
386 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;
|
|
var_3 = 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 );
|
|
}
|
|
}
|