174 lines
4.9 KiB
Plaintext
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 ) );
|
|
} |