IW4-Dump-Files/maps/_quotes.gsc

174 lines
4.9 KiB
Plaintext

main()
{
thread setDeadQuote();
}
setDeadQuote()
{
level endon( "mine death" );
// kill any deadquotes already running
level notify( "new_quote_string" );
level endon( "new_quote_string" );
// player can be dead if the player died at the same point that setDeadQuote was called from another script
if ( isalive( level.player ) )
level.player waittill( "death" );
if ( !level.missionfailed )
{
deadQuoteSize = ( Int( TableLookup( "sp/deathQuoteTable.csv", 1, "size", 0 ) ) );
deadQuoteIndex = randomInt( deadQuoteSize );
// This is used for testing
if ( GetDvar( "cycle_deathquotes" ) != "" )
{
if ( GetDvar( "ui_deadquote_index" ) == "" )
SetDvar( "ui_deadquote_index", "0" );
deadQuoteIndex = GetDvarInt( "ui_deadquote_index" );
SetDvar( "ui_deadquote", lookupDeathQuote( deadQuoteIndex ) );
deadQuoteIndex++;
if ( deadQuoteIndex > (deadQuoteSize - 1) )
deadQuoteIndex = 0;
SetDvar( "ui_deadquote_index", deadQuoteIndex );
}
else
{
SetDvar( "ui_deadquote", lookupDeathQuote( deadQuoteIndex ) );
}
}
}
lookupDeathQuote( index )
{
return TableLookup( "sp/deathQuoteTable.csv", 0, index, 1 );
}
setDeadQuote_so()
{
level notify( "new_quote_string" );
deadquotes = [];
deadquotes = so_buildDeadQuote();
deadquotes = maps\_utility::array_randomize( deadquotes );
i = randomInt( deadquotes.size );
// Only works in local games. Online the dvars are unreliable so don't bother with them.
if ( !maps\_utility::is_coop_online() )
{
keep_searching = ( deadquotes.size > 1 );
original_i = i;
while( keep_searching )
{
if ( deadquote_recently_used( deadquotes[ i ] ) )
{
i++;
if ( i >= deadquotes.size )
i = 0;
if ( i == original_i )
keep_searching = false;
}
else
{
keep_searching = false;
}
}
setdvar( "ui_deadquote_v3", getdvar( "ui_deadquote_v2" ) );
setdvar( "ui_deadquote_v2", getdvar( "ui_deadquote_v1" ) );
setdvar( "ui_deadquote_v1", deadquotes[ i ] );
}
// A few deadquotes have icons attached to them.
switch ( deadquotes[ i ] )
{
case "@DEADQUOTE_SO_ICON_PARTNER":
maps\_specialops_code::so_special_failure_hint_reset_dvars( "ui_icon_partner" );
break;
case "@DEADQUOTE_SO_ICON_OBJ":
maps\_specialops_code::so_special_failure_hint_reset_dvars( "ui_icon_obj" );
break;
case "@DEADQUOTE_SO_ICON_OBJ_OFFSCREEN":
maps\_specialops_code::so_special_failure_hint_reset_dvars( "ui_icon_obj_offscreen" );
break;
case "@DEADQUOTE_SO_STAR_RANKINGS":
maps\_specialops_code::so_special_failure_hint_reset_dvars( "ui_icon_stars" );
break;
case "@DEADQUOTE_SO_CLAYMORE_POINT_ENEMY":
case "@DEADQUOTE_SO_CLAYMORE_ENEMIES_SHOOT":
maps\_specialops_code::so_special_failure_hint_reset_dvars( "ui_icon_claymore" );
break;
case "@DEADQUOTE_SO_STEALTH_STAY_LOW":
maps\_specialops_code::so_special_failure_hint_reset_dvars( "ui_icon_stealth_stance" );
break;
}
setdvar( "ui_deadquote", deadquotes[ i ] );
}
deadquote_recently_used( deadquote )
{
if ( deadquote == getdvar( "ui_deadquote_v1" ) )
return true;
if ( deadquote == getdvar( "ui_deadquote_v2" ) )
return true;
if ( deadquote == getdvar( "ui_deadquote_v3" ) )
return true;
return false;
}
so_buildDeadQuote()
{
if ( should_use_custom_deadquotes() )
return level.so_deadquotes;
deadquotes = [];
deadquotes[ deadquotes.size ] = "@DEADQUOTE_SO_TRY_NEW_DIFFICULTY";
deadquotes[ deadquotes.size ] = "@DEADQUOTE_SO_BEAT_BEST_TIME";
deadquotes[ deadquotes.size ] = "@DEADQUOTE_SO_TEXT_COLOR_DIFFICULTY";
deadquotes[ deadquotes.size ] = "@DEADQUOTE_SO_SEARCH_FOR_WEAPONS";
deadquotes[ deadquotes.size ] = "@DEADQUOTE_SO_TOGGLE_WEAP_ALT_MODE";
deadquotes[ deadquotes.size ] = "@DEADQUOTE_SO_RED_FIND_COVER";
deadquotes[ deadquotes.size ] = "@DEADQUOTE_SO_THROW_FLASHBANG";
deadquotes[ deadquotes.size ] = "@DEADQUOTE_SO_GRENADES_ROLL";
deadquotes[ deadquotes.size ] = "@DEADQUOTE_SO_STAR_RANKINGS";
deadquotes[ deadquotes.size ] = "@DEADQUOTE_SO_ICON_OBJ";
// deadquotes[ deadquotes.size ] = "@DEADQUOTE_SO_ICON_OBJ_OFFSCREEN";
if ( isdefined( self.so_infohud_toggle_state ) && self.so_infohud_toggle_state != "none" )
{
deadquotes[ deadquotes.size ] = "@DEADQUOTE_SO_TOGGLE_TIMER";
}
if ( maps\_utility::is_coop() )
{
deadquotes[ deadquotes.size ] = "@DEADQUOTE_SO_CRAWL_TO_TEAMMATE";
deadquotes[ deadquotes.size ] = "@DEADQUOTE_SO_STAY_NEAR_TEAMMATE";
deadquotes[ deadquotes.size ] = "@DEADQUOTE_SO_FRIENDLY_FIRE_HINT";
deadquotes[ deadquotes.size ] = "@DEADQUOTE_SO_ICON_PARTNER";
}
return deadquotes;
}
should_use_custom_deadquotes()
{
if ( !isdefined( level.so_deadquotes ) )
return false;
if ( level.so_deadquotes.size <= 0 )
return false;
assertex( isdefined( level.so_deadquotes_chance ), "level.so_deadquotes had contents, but level.so_deadquote_chance was undefined." );
// Set level.so_deadquotes_chance to 1.0 to guarantee the contents will be used.
return ( level.so_deadquotes_chance >= randomfloat( 1.0 ) );
}