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

212 lines
6.5 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
init_beacon_eog_score_components( var_0 )
{
foreach ( var_2 in var_0 )
{
switch ( var_2 )
{
case "kraken":
maps\mp\alien\_gamescore::register_eog_score_component( "kraken", 17 );
break;
case "item_crafting":
maps\mp\alien\_gamescore::register_eog_score_component( "item_crafting", 14 );
break;
case "side_area":
maps\mp\alien\_gamescore::register_eog_score_component( "side_area", 15 );
break;
case "relics":
maps\mp\alien\_gamescore::register_eog_score_component( "relics", 5 );
break;
default:
}
}
}
init_beacon_encounter_score_components( var_0 )
{
foreach ( var_2 in var_0 )
{
switch ( var_2 )
{
case "kraken":
init_kraken_score_component();
break;
case "kraken_personal":
init_kraken_personal_score_component();
break;
case "kraken_team":
init_kraken_team_score_component();
break;
case "tentacle_bonus":
init_tentacle_score_component();
break;
case "item_crafting":
init_item_crafting_score_component();
break;
case "side_area":
init_side_area_score_component();
break;
case "gas":
init_gas_protection_score_component();
break;
case "progression_door":
init_progression_door_score_component();
break;
default:
}
}
}
init_kraken_score_component()
{
maps\mp\alien\_gamescore::register_encounter_score_component( "kraken", ::init_kraken_score, maps\mp\alien\_globallogic::blank, undefined, ::calculate_kraken_score_component, 17, "kraken" );
}
init_kraken_score( var_0 )
{
if ( maps\mp\alien\_utility::isplayingsolo() )
var_0.max_score_kraken = 6000;
else
var_0.max_score_kraken = 4500;
var_0.team_encounter_performance["kraken_battle_time"] = 0;
return var_0;
}
calculate_kraken_score_component( var_0, var_1 )
{
var_2 = maps\mp\alien\_gamescore::get_team_encounter_performance( var_1, "kraken_battle_time" );
var_3 = max( 0, 750000 - var_2 );
var_4 = var_1.max_score_kraken * ( var_3 / 750000 );
return int( var_4 );
}
init_kraken_personal_score_component()
{
maps\mp\alien\_gamescore::register_encounter_score_component( "kraken_personal", ::init_kraken_personal_score, undefined, maps\mp\alien\_gamescore::reset_player_personal_score_performance, maps\mp\alien\_gamescore::calculate_personal_skill_score, 17, "kraken" );
}
init_kraken_personal_score( var_0 )
{
if ( maps\mp\alien\_utility::isplayingsolo() )
{
var_0.max_score_damage_taken = 2500;
var_0.max_score_accuracy = 1500;
}
else
{
var_0.max_score_damage_taken = 1500;
var_0.max_score_accuracy = 1000;
}
return var_0;
}
init_kraken_team_score_component()
{
maps\mp\alien\_gamescore::register_encounter_score_component( "kraken_team", maps\mp\alien\_gamescore::init_teamwork_score, maps\mp\alien\_gamescore::reset_team_score_performance, maps\mp\alien\_gamescore::reset_player_teamwork_score_performance, maps\mp\alien\_gamescore::calculate_teamwork_score, 17, "kraken" );
}
calculate_kraken_score( var_0 )
{
maps\mp\alien\_gamescore::update_team_encounter_performance( "kraken", "kraken_battle_time", var_0 );
var_1 = get_kraken_score_component_name_list();
maps\mp\alien\_gamescore::calculate_encounter_scores( level.players, var_1 );
}
get_kraken_score_component_name_list()
{
if ( maps\mp\alien\_utility::isplayingsolo() )
return [ "kraken", "kraken_personal" ];
else
return [ "kraken", "kraken_team", "kraken_personal" ];
}
init_tentacle_score_component()
{
maps\mp\alien\_gamescore::register_encounter_score_component( "tentacle_bonus", ::init_tentacle_score, maps\mp\alien\_globallogic::blank, undefined, ::calculate_tentacle_score, 18, "hive" );
}
init_tentacle_score( var_0 )
{
var_0.team_encounter_performance["tentacle_start_HP"] = 0;
return var_0;
}
calculate_tentacle_score( var_0, var_1 )
{
var_2 = maps\mp\alien\_gamescore::get_team_encounter_performance( var_1, "tentacle_start_HP" );
var_3 = get_tentacle_end_hp();
var_4 = min( var_2, var_2 - var_3 );
return int( 2500 * var_4 / var_2 );
}
get_tentacle_end_hp()
{
if ( !isdefined( level.miniboss.hp ) )
return 0;
return max( 0, level.miniboss.hp );
}
init_item_crafting_score_component()
{
maps\mp\alien\_gamescore::register_encounter_score_component( "item_crafting", ::blank_score_component_init, maps\mp\alien\_globallogic::blank, undefined, ::calculate_item_crafting_score, 14, "item_crafting" );
}
calculate_item_crafting_score( var_0, var_1 )
{
var_2 = int( 500 / level.cycle_score_scalar );
var_3 = get_total_item_crafting_score( var_0, var_1 );
return min( var_2, 5000 - var_3 );
}
get_total_item_crafting_score( var_0, var_1 )
{
return var_0.end_game_score[var_1.end_game_score_component_ref];
}
init_side_area_score_component()
{
maps\mp\alien\_gamescore::register_encounter_score_component( "side_area", ::blank_score_component_init, maps\mp\alien\_globallogic::blank, undefined, ::calculate_side_area_score, 15, "side_area" );
}
calculate_side_area_score( var_0, var_1 )
{
return 2000;
}
init_progression_door_score_component()
{
maps\mp\alien\_gamescore::register_encounter_score_component( "progression_door", ::blank_score_component_init, maps\mp\alien\_globallogic::blank, undefined, ::calculate_progression_door_score, 15, "hive" );
}
calculate_progression_door_score( var_0, var_1 )
{
return 2000;
}
init_gas_protection_score_component()
{
maps\mp\alien\_gamescore::register_encounter_score_component( "gas", ::blank_score_component_init, ::reset_team_gas_protection_score, undefined, ::calculate_gas_protection_score, 16, "hive" );
}
reset_team_gas_protection_score( var_0 )
{
var_0.team_encounter_performance["num_valve_destroyed"] = 0;
}
calculate_gas_protection_score( var_0, var_1 )
{
var_2 = maps\mp\alien\_gamescore::get_team_encounter_performance( var_1, "num_valve_destroyed" );
var_3 = max( 0, 4 - var_2 );
return int( var_3 * 500 );
}
blank_score_component_init( var_0 )
{
return var_0;
}