iw6-scripts/maps/mp/alien/_achievement.gsc
2024-02-13 13:20:49 +01:00

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;
}
}