279 lines
7.5 KiB
Plaintext
279 lines
7.5 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
init_player_achievement()
|
|
{
|
|
self.achievement_list = [];
|
|
|
|
if ( isdefined( level.achievement_registration_func ) )
|
|
[[ level.achievement_registration_func ]]();
|
|
|
|
if ( maps\mp\alien\_utility::is_true( level.include_default_achievements ) )
|
|
register_default_achievements();
|
|
}
|
|
|
|
register_default_achievements()
|
|
{
|
|
register_achievement( "KILL_WITH_TRAP", 50, ::default_init, ::should_update_kill_with_trap, ::equal_to_goal );
|
|
register_achievement( "ESCAPE_ALL_PLAYERS", 4, ::default_init, ::default_should_update, ::at_least_goal );
|
|
register_achievement( "ESCAPE_IN_TIME", 90000, ::default_init, ::default_should_update, ::at_least_goal );
|
|
register_achievement( "ESCAPE_1ST_TIME", 1, ::default_init, ::default_should_update, ::at_least_goal );
|
|
register_achievement( "ESCAPE_ALL_CHALLENGE", 1, ::default_init, ::should_update_all_challenge, ::at_least_goal );
|
|
register_achievement( "ESCAPE_WITH_NERF_ON", 1, ::default_init, ::default_should_update, ::at_least_goal );
|
|
register_achievement( "REACH_CITY", 1, ::default_init, ::default_should_update, ::at_least_goal );
|
|
register_achievement( "REACH_CABIN", 1, ::default_init, ::default_should_update, ::at_least_goal );
|
|
register_achievement( "SCAVENGE_ITEM", 40, ::default_init, ::default_should_update, ::equal_to_goal );
|
|
}
|
|
|
|
register_achievement( var_0, var_1, var_2, var_3, var_4, var_5 )
|
|
{
|
|
var_6 = spawnstruct();
|
|
var_6 [[ var_2 ]]( var_1, var_3, var_4, var_5 );
|
|
self.achievement_list[var_0] = var_6;
|
|
}
|
|
|
|
default_init( var_0, var_1, var_2, var_3 )
|
|
{
|
|
self.progress = 0;
|
|
self.goal = var_0;
|
|
self.should_update_func = var_1;
|
|
self.is_goal_reached_func = var_2;
|
|
self.achievement_completed = 0;
|
|
|
|
if ( isdefined( var_3 ) )
|
|
self.complete_in_casual = var_3;
|
|
}
|
|
|
|
default_should_update( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9 )
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
update_progress( var_0 )
|
|
{
|
|
self.progress = self.progress + var_0;
|
|
}
|
|
|
|
at_least_goal()
|
|
{
|
|
return self.progress >= self.goal;
|
|
}
|
|
|
|
equal_to_goal()
|
|
{
|
|
return self.progress == self.goal;
|
|
}
|
|
|
|
is_completed()
|
|
{
|
|
return self.achievement_completed;
|
|
}
|
|
|
|
can_complete_in_causal()
|
|
{
|
|
return maps\mp\alien\_utility::is_true( self.complete_in_casual );
|
|
}
|
|
|
|
mark_completed()
|
|
{
|
|
self.achievement_completed = 1;
|
|
}
|
|
|
|
is_valid_achievement( var_0 )
|
|
{
|
|
return isdefined( var_0 );
|
|
}
|
|
|
|
update_achievement( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9, var_10, var_11 )
|
|
{
|
|
var_12 = self.achievement_list[var_0];
|
|
|
|
if ( !is_valid_achievement( var_12 ) )
|
|
return;
|
|
|
|
if ( var_12 is_completed() )
|
|
return;
|
|
|
|
if ( maps\mp\alien\_utility::is_casual_mode() && !var_12 can_complete_in_causal() )
|
|
return;
|
|
|
|
if ( var_12 [[ var_12.should_update_func ]]( var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9, var_10, var_11 ) )
|
|
{
|
|
var_12 update_progress( var_1 );
|
|
|
|
if ( var_12 [[ var_12.is_goal_reached_func ]]() )
|
|
{
|
|
self giveachievement( var_0 );
|
|
var_12 mark_completed();
|
|
}
|
|
}
|
|
}
|
|
|
|
update_alien_kill_achievements( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8 )
|
|
{
|
|
if ( isdefined( level.update_alien_kill_achievements_func ) )
|
|
[[ level.update_alien_kill_achievements_func ]]( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8 );
|
|
|
|
if ( !isdefined( var_1 ) || !isplayer( var_1 ) )
|
|
return;
|
|
|
|
var_1 update_achievement( "KILL_WITH_TRAP", 1, var_0 );
|
|
}
|
|
|
|
should_update_kill_with_trap( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9 )
|
|
{
|
|
if ( maps\mp\alien\_utility::is_trap( var_0 ) )
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
update_escape_achievements( var_0, var_1 )
|
|
{
|
|
var_2 = var_0.size;
|
|
|
|
foreach ( var_4 in var_0 )
|
|
{
|
|
var_5 = var_4 maps\mp\alien\_persistence::get_player_escaped();
|
|
var_6 = var_4 maps\mp\alien\_prestige::get_num_nerf_selected();
|
|
var_4 update_personal_escape_achievements( var_2, var_1, var_5, var_6 );
|
|
}
|
|
}
|
|
|
|
update_personal_escape_achievements( var_0, var_1, var_2, var_3 )
|
|
{
|
|
update_achievement( "ESCAPE_ALL_PLAYERS", var_0 );
|
|
update_achievement( "ESCAPE_IN_TIME", var_1 );
|
|
update_achievement( "ESCAPE_1ST_TIME", var_2 );
|
|
update_achievement( "ESCAPE_ALL_CHALLENGE", 1 );
|
|
update_achievement( "ESCAPE_WITH_NERF_ON", var_3 );
|
|
}
|
|
|
|
should_update_all_challenge( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9 )
|
|
{
|
|
return level.all_challenge_completed;
|
|
}
|
|
|
|
update_blocker_hive_achievements( var_0 )
|
|
{
|
|
switch ( var_0 )
|
|
{
|
|
case "lodge_lung_3":
|
|
update_achievement_all_players( "REACH_CITY", 1 );
|
|
break;
|
|
case "city_lung_5":
|
|
update_achievement_all_players( "REACH_CABIN", 1 );
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
update_achievement_all_players( var_0, var_1 )
|
|
{
|
|
foreach ( var_3 in level.players )
|
|
var_3 update_achievement( var_0, var_1 );
|
|
}
|
|
|
|
update_scavenge_achievement()
|
|
{
|
|
update_achievement( "SCAVENGE_ITEM", 1 );
|
|
}
|
|
|
|
update_achievement_damage_weapon( var_0 )
|
|
{
|
|
if ( isdefined( level.update_achievement_damage_weapon_func ) )
|
|
self [[ level.update_achievement_damage_weapon_func ]]( var_0 );
|
|
}
|
|
|
|
eggallfoundforpack( var_0 )
|
|
{
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
level common_scripts\utility::waittill_any( "regular_hive_destroyed", "obelisk_destroyed", "outpost_encounter_completed" );
|
|
var_1 = self getcoopplayerdata( "alienPlayerStats", "deaths" );
|
|
var_2 = self getcoopplayerdatareservedint( "eggstra_state_flags" );
|
|
var_3 = var_2 >> var_0 * 4 & 15;
|
|
|
|
if ( var_3 == 15 )
|
|
{
|
|
var_4 = self getcoopplayerdatareservedint( "eggstra_award_flags" );
|
|
var_5 = 0;
|
|
|
|
if ( var_1 == 1015 && ( var_4 & 1 ) != 1 )
|
|
{
|
|
var_4 = var_4 | 1;
|
|
var_5 = 1;
|
|
}
|
|
|
|
if ( ( var_4 & 1 << var_0 ) == 0 )
|
|
{
|
|
var_4 = var_4 | 1 << var_0;
|
|
var_5 = 1;
|
|
self setclientomnvar( "ui_alien_eggstra_xp", 1 );
|
|
thread maps\mp\alien\_persistence::wait_and_give_player_xp( 10000, 5.0 );
|
|
}
|
|
|
|
if ( var_5 == 1 )
|
|
self setcoopplayerdatareservedint( "eggstra_award_flags", var_4 );
|
|
|
|
update_mp_eggs_achievement( var_0 );
|
|
}
|
|
}
|
|
|
|
update_mp_eggs_achievement( var_0 )
|
|
{
|
|
switch ( var_0 )
|
|
{
|
|
case 0:
|
|
update_achievement( "GOT_THEEGGSTRA_XP", 1 );
|
|
break;
|
|
case 1:
|
|
update_achievement( "GOT_THEEGGSTRA_XP_DLC2", 1 );
|
|
break;
|
|
case 2:
|
|
update_achievement( "GOT_THEEGGSTRA_XP_DLC3", 1 );
|
|
break;
|
|
case 3:
|
|
update_achievement( "GOT_THEEGGSTRA_XP_DLC4", 1 );
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
update_intel_achievement( var_0 )
|
|
{
|
|
var_0 = 0;
|
|
var_1 = getdvar( "ui_mapname" );
|
|
|
|
if ( var_1 == "mp_alien_armory" )
|
|
var_0 = 1;
|
|
|
|
if ( var_1 == "mp_alien_beacon" )
|
|
var_0 = 2;
|
|
|
|
if ( var_1 == "mp_alien_dlc3" )
|
|
var_0 = 3;
|
|
|
|
if ( var_1 == "mp_alien_last" )
|
|
var_0 = 4;
|
|
|
|
switch ( var_0 )
|
|
{
|
|
case 1:
|
|
update_achievement( "FOUND_ALL_INTELS", 1 );
|
|
break;
|
|
case 2:
|
|
update_achievement( "FOUND_ALL_INTELS_MAYDAY", 1 );
|
|
break;
|
|
case 3:
|
|
update_achievement( "AWAKENING_ALL_INTEL", 1 );
|
|
break;
|
|
case 4:
|
|
update_achievement( "LAST_ALL_INTEL", 1 );
|
|
default:
|
|
break;
|
|
}
|
|
}
|