ztavern/t6/uncompiled mods/trials.gsc
2024-10-18 00:19:19 +00:00

1844 lines
79 KiB
Text

#include codescripts/struct;
#include maps/mp/_utility;
#include common_scripts/utility;
#include maps/mp/gametypes_zm/_hud;
#include maps/mp/gametypes_zm/_hud_util;
#include maps/mp/gametypes_zm/_hud_message;
#include maps/mp/gametypes_zm/_weapons;
#include maps/mp/zombies/_zm_powerups;
#include maps/mp/zombies/_zm_buildables;
#include maps/mp/zombies/_zm_score;
#include maps/mp/zombies/_zm_utility;
#include maps/mp/zombies/_zm_weapons;
#include maps/mp/gametypes_zm/_spawning;
#include maps/mp/zombies/_zm_unitrigger;
#include maps/mp/zombies/_zm_spawner;
#include maps/mp/zombies/_zm;
#include maps/mp/zombies/_zm_perks;
#include maps/mp/zombies/_zm_zonemgr;
#include maps/mp/zombies/_zm_magicbox;
#include maps/mp/zombies/_zm_power;
#include maps/mp/zombies/_zm_powerups;
#include maps/mp/animscripts/zm_utility;
// Trials System by ZECxR3ap3r & John Kramer
// V1.0.1
init() {
// Precaching Models
precachemodel("t6_wpn_zmb_jet_gun_world");
precachemodel("zombie_pickup_perk_bottle");
precachemodel("t6_wpn_zmb_raygun_view");
precachemodel("p6_anim_zm_buildable_pap");
precachemodel("collision_wall_256x256x10_standard");
precachemodel("p6_zm_hr_lion_statue_base");
precachemodel("p6_zm_hr_lion_statue");
// Precaching Shaders
precacheshader("gradient");
precacheshader("white");
precacheshader("menu_mp_star_rating");
precacheshader("gradient_fadein");
precacheshader("scorebar_zom_1");
precacheshader("codtv_info");
// Settings
setDvar("TrialsCost", 100);// How Much the trials will cost
setDvar("TrialsAllowFreePerk", 1);// Adds a Free Perk Powerup to the Trials Rewards
setDvar("TrialsEnableWonderweapons", 1);// Adds Legendary Wonderweapon Rewards
setDvar("TrialsEnablePapDrop", 1);// Adds Legendary Pap Powerup Reward
// Setup
if(level.script == "zm_transit") {
if(getDvar( "ui_zm_mapstartlocation" ) == "transit" && getDvar( "ui_zm_gamemodegroup" ) != "zsurvival"|| getDvar( "ui_zm_mapstartlocation" ) == "town"){
Collision = spawn( "script_model", (655.126, -281.746, -61.875));
Collision.angles = (0, 0, 0);
Collision setmodel("collision_wall_512x512x10_standard");
PodiumModel = "t6_wpn_zmb_jet_gun_world";
PodiumOrigin = array((495.129, -289.81, -39.875), (595.129, -289.81, -39.875), (775.129, -289.81, -39.875), (875.129, -289.81, -39.875));
PodiumAngles = array((90, 270, 0), (90, 270, 0), (90,270,0), (90,270,0));
TrialsMainModel = "zombie_teddybear";
TrialsMainOrigin = (685.358, -277.641, -33.0248);
TrialsMainAngles = (0, -90, 0);
FXOriginOffset = (0,10,18);
}
else if ( getDvar( "ui_zm_mapstartlocation" ) == "farm" ) {
Collision = spawn( "script_model", (7070.82, -5715.47, -46.2625));
Collision.angles = (0, 90, 0);
Collision setmodel("collision_wall_256x256x10_standard");
PodiumModel = "t6_wpn_zmb_jet_gun_world";
PodiumOrigin = array((7070.94, -5798.61, -28.2646), (7070.94, -5744.61, -28.2646), (7070.94, -5692.61, -28.2646), (7070.94, -5638.61, -28.2646));
PodiumAngles = array((90, 0, 0), (90, 0, 0), (90,0,0), (90,0,0));
TrialsMainModel = "zombie_teddybear";
TrialsMainOrigin = (7670.15, -5562.8, 50.5099);
TrialsMainAngles = (0, -50, 0);
FXOriginOffset = (-12,0,20);
}
else if ( getDvar( "ui_zm_mapstartlocation" ) == "transit" && getDvar( "ui_zm_gamemodegroup" ) == "zsurvival") {
Collision = spawn( "script_model", (-6289.62, 5455.29, 74.125));
Collision.angles = (0, 90, 0);
Collision setmodel("collision_wall_256x256x10_standard");
PodiumModel = "t6_wpn_zmb_jet_gun_world";
PodiumOrigin = array((-6284.36, 5347.11, -35.875), (-6284.36, 5407.11, -35.875), (-6284.36, 5467.11, -35.875), (-6284.36, 5527.11, -35.875));
PodiumAngles = array((90, 0, 0), (90, 0, 0), (90,0,0), (90,0,0));
TrialsMainModel = "zombie_teddybear";
TrialsMainOrigin = (-6097.18, 5610.29, -3.875);
TrialsMainAngles = (0, -130, 0);
FXOriginOffset = (-12,0,20);
}
}
else if(level.script == "zm_prison") {
Collision = spawn( "script_model", (2250.64, 9891.08, 1964.13));
Collision.angles = (0, 90, 0);
Collision setmodel("collision_wall_512x512x10_standard");
PodiumModel = "p6_zm_al_electric_chair";
PodiumOrigin = array((2232.09, 9754.98, 1704.13), (2232.09, 9844.98, 1704.13), (2232.09, 9934.98, 1704.13), (2232.09, 10025, 1704.13));
PodiumAngles = array((0, 0, 0), (0, 0, 0), (0,0,0), (0,0,0));
TrialsMainModel = "p6_zm_al_wall_trap_control_red";
TrialsMainOrigin = (2470.36, 9752.72, 1764.13);
TrialsMainAngles = (0, -180, 0);
FXOriginOffset = (17,0,15);
}
else if(level.script == "zm_buried") {
Collision = spawn( "script_model", (1355.53, 1397.91, 336.474));
Collision.angles = (0, -20, 0);
Collision setmodel("collision_wall_256x256x10_standard");
PodiumModel = "p6_zm_bu_ether_amplifier";
PodiumOrigin = array((1416.2, 1364.68, 200.125), (1365.2, 1383.68, 200.125), (1307.2, 1403.68, 200.125), (1247.2, 1425.68, 200.125));
PodiumAngles = array((0, 0, 0), (0, 0, 0), (0,0,0), (0,0,0));
TrialsMainModel = "zombie_teddybear";
TrialsMainOrigin = (1405.07, 1651.54, 250.32);
TrialsMainAngles = (0, -100, 0);
FXOriginOffset = (0,0,43);
}
else if(level.script == "zm_tomb") {
Collision = spawn( "script_model", (401.108, 2118.76, -122.744));
Collision.angles = (0, 0, 0);
Collision setmodel("zm_collision_perks1");
PodiumModel = "p6_zm_tm_challenge_box";
PodiumOrigin = array((538.473, 2119.9, -127.875), (458.473, 2119.9, -127.875), (348.473, 2119.9, -127.875), (268.473, 2119.9, -127.875));
PodiumAngles = array((0, 0, 0), (0, 0, 0), (0,0,0), (0,0,0));
TrialsMainModel = "p6_zm_tm_puzzle_lever_switch";
TrialsMainOrigin = (401.108, 2118.76, -122.744);
TrialsMainAngles = (0, 0, 0);
FXOriginOffset = (0,0,30);
}
else if(level.script == "zm_nuked") {
Collision = spawn( "script_model", (578.573, 742.585, -64.1112));
Collision.angles = (0, -164, 0);
Collision setmodel("collision_wall_256x256x10_standard");
PodiumModel = "dest_zm_nuked_male_01_d0";
PodiumOrigin = array((665.924, 740.986, -56.875), (617.924, 726.986, -56.875), (565.924, 712.986, -56.875), (515.924, 698.986, -56.875));
PodiumAngles = array((0, -250, 0), (0, -250, 0), (0,-250,0), (0,-250,0));
TrialsMainModel = "zombie_teddybear";
TrialsMainOrigin = (661.327, 983.586, -52.875);
TrialsMainAngles = (0, -150, 0);
FXOriginOffset = (-4,15,14);
}
else if(level.script == "zm_highrise") {
Collision = spawn( "script_model", (1430.19, -348.386, 2624.13));
Collision.angles = (0, 60, 0);
Collision setmodel("collision_wall_512x512x10_standard");
Lion1 = spawn( "script_model", (1347.93, -459.859, 2742.13));
Lion1.angles = (0, 60, 0);
Lion1 setmodel("p6_zm_hr_lion_statue");
Lion2 = spawn( "script_model", (1400.9, -368.924, 2742.13));
Lion2.angles = (0, 60, 0);
Lion2 setmodel("p6_zm_hr_lion_statue");
Lion3 = spawn( "script_model", (1483.22, -226.259, 2742.13));
Lion3.angles = (0, 60, 0);
Lion3 setmodel("p6_zm_hr_lion_statue");
Lion4 = spawn( "script_model", (1534.45, -137.528, 2742.13));
Lion4.angles = (0, 60, 0);
Lion4 setmodel("p6_zm_hr_lion_statue");
PodiumModel = "p6_zm_hr_lion_statue_base";
PodiumOrigin = array((1347.93, -459.859, 2704.13), (1400.9, -368.924, 2704.13), (1483.22, -226.259, 2704.13), (1534.45, -137.528, 2704.13));
PodiumAngles = array((0, 60, 0), (0, 60, 0), (0,60,0), (0,60,0));
TrialsMainModel = "zombie_teddybear";
TrialsMainOrigin = (1434.69, -296.901, 2749.13);
TrialsMainAngles = (0, -35, 0);
FXOriginOffset = (0,2,55);
}
// Main Setup
level.ReaperTrialsActive = 0;
level thread TrialsSystem(FXOriginOffset,PodiumModel, PodiumOrigin, PodiumAngles, TrialsMainModel, TrialsMainOrigin, TrialsMainAngles);
level thread on_connect();
level thread EndGameListener();
// Rewards Map Specific
switch(level.script) {
case "zm_transit":
AddReward("Legendary", undefined, "Skullcrusher", "m16_gl_upgraded_zm", 0);
AddReward("Legendary", "zombie_z_money_icon", "Bonus Points", "Bonus_Points", 1);
AddReward("Legendary", undefined, "SLDG HAMR", "hamr_upgraded_zm", 0);
AddReward("Epic", "zombie_z_money_icon", "Bonus Points", "Bonus_Points", 1);
AddReward("Epic", undefined, "M16", "m16_zm", 0);
AddReward("Rare", "zombie_carpenter", "Carpenter", "carpenter", 1);
AddReward("Rare", "zombie_z_money_icon", "Bonus Points", "Bonus_Points", 1);
AddReward("Rare", undefined, "KAP-40", "kard_zm", 0);
AddReward("Rare", undefined, "M1911", "m1911_zm", 0);
AddReward("Rare", undefined, "RPG", "usrpg_zm", 0);
AddReward("Common", "zombie_z_money_icon", "Bonus Points", "Lose_Points", 1);
AddReward("Common", "zombie_carpenter", "Carpenter", "carpenter", 1);
AddReward("Common", undefined, "SMR", "saritch_zm", 0);
AddReward("Common", undefined, "RPG", "usrpg_zm", 0);
AddReward("Epic", undefined, "MP5", "mp5k_zm", 0);
AddReward("Rare", undefined, "MP5", "mp5k_zm", 0);
AddReward("Common", undefined, "MP5", "mp5k_zm", 0);
AddReward("Common", undefined, "M1911", "m1911_zm", 0);
AddReward("Common", undefined, "Olympia", "rottweil72_zm", 0);
AddReward("Legendary", undefined, "RPD", "rpd_zm", 0);
break;
case "zm_nuked":
AddReward("Legendary", undefined, "Skullcrusher", "m16_gl_upgraded_zm", 0);
AddReward("Legendary", undefined, "SLDG HAMR", "hamr_upgraded_zm", 0);
AddReward("Epic", undefined, "M16", "m16_zm", 0);
AddReward("Rare", undefined, "KAP-40", "kard_zm", 0);
AddReward("Rare", undefined, "M1911", "m1911_zm", 0);
AddReward("Rare", undefined, "RPG", "usrpg_zm", 0);
AddReward("Common", undefined, "SMR", "saritch_zm", 0);
AddReward("Common", undefined, "RPG", "usrpg_zm", 0);
AddReward("Epic", undefined, "MP5", "mp5k_zm", 0);
AddReward("Rare", undefined, "MP5", "mp5k_zm", 0);
AddReward("Common", undefined, "MP5", "mp5k_zm", 0);
AddReward("Common", undefined, "M1911", "m1911_zm", 0);
AddReward("Common", undefined, "Olympia", "rottweil72_zm", 0);
AddReward("Legendary", undefined, "RPD", "rpd_zm", 0);
break;
case "zm_highrise":
AddReward("Legendary", undefined, "Skullcrusher", "m16_gl_upgraded_zm", 0);
AddReward("Legendary", undefined, "SLDG HAMR", "hamr_upgraded_zm", 0);
AddReward("Epic", undefined, "M16", "m16_zm", 0);
AddReward("Rare", "zombie_carpenter", "Carpenter", "carpenter", 1);
AddReward("Rare", undefined, "KAP-40", "kard_zm", 0);
AddReward("Rare", undefined, "M1911", "m1911_zm", 0);
AddReward("Rare", undefined, "RPG", "usrpg_zm", 0);
AddReward("Common", "zombie_carpenter", "Carpenter", "carpenter", 1);
AddReward("Common", undefined, "SMR", "saritch_zm", 0);
AddReward("Common", undefined, "RPG", "usrpg_zm", 0);
AddReward("Epic", undefined, "MP5", "mp5k_zm", 0);
AddReward("Rare", undefined, "MP5", "mp5k_zm", 0);
AddReward("Common", undefined, "MP5", "mp5k_zm", 0);
AddReward("Common", undefined, "M1911", "m1911_zm", 0);
AddReward("Common", undefined, "Olympia", "rottweil72_zm", 0);
AddReward("Legendary", undefined, "RPD", "rpd_zm", 0);
break;
case "zm_prison":
if(getdvarint("TrialsEnableWonderweapons") == 1)
AddReward("Legendary", undefined, "Blundergat", "blundergat_zm", 0);
AddReward("Rare", "zombie_carpenter", "Carpenter", "carpenter", 1);
AddReward("Rare", undefined, "M1911", "m1911_zm", 0);
AddReward("Rare", undefined, "RPG", "usrpg_zm", 0);
AddReward("Common", "zombie_carpenter", "Carpenter", "carpenter", 1);
AddReward("Common", undefined, "RPG", "usrpg_zm", 0);
AddReward("Epic", undefined, "MP5", "mp5k_zm", 0);
AddReward("Rare", undefined, "MP5", "mp5k_zm", 0);
AddReward("Common", undefined, "MP5", "mp5k_zm", 0);
AddReward("Common", undefined, "M1911", "m1911_zm", 0);
AddReward("Common", undefined, "Olympia", "rottweil72_zm", 0);
break;
case "zm_buried":
if(getdvarint("TrialsEnableWonderweapons") == 1)
AddReward("Legendary", undefined, "Paralyzer", "slowgun_zm", 0);
AddReward("Legendary", "zombie_z_money_icon", "Bonus Points", "Bonus_Points", 1);
AddReward("Legendary", undefined, "Skullcrusher", "m16_gl_upgraded_zm", 0);
AddReward("Legendary", undefined, "SLDG HAMR", "hamr_upgraded_zm", 0);
AddReward("Epic", "zombie_z_money_icon", "Bonus Points", "Bonus_Points", 1);
AddReward("Epic", undefined, "M16", "m16_zm", 0);
AddReward("Rare", "zombie_carpenter", "Carpenter", "carpenter", 1);
AddReward("Rare", "zombie_z_money_icon", "Bonus Points", "Bonus_Points", 1);
AddReward("Rare", undefined, "KAP-40", "kard_zm", 0);
AddReward("Rare", undefined, "M1911", "m1911_zm", 0);
AddReward("Rare", undefined, "RPG", "usrpg_zm", 0);
AddReward("Common", "zombie_z_money_icon", "Bonus Points", "Lose_Points", 1);
AddReward("Common", "zombie_carpenter", "Carpenter", "carpenter", 1);
AddReward("Common", undefined, "SMR", "saritch_zm", 0);
AddReward("Common", undefined, "RPG", "usrpg_zm", 0);
AddReward("Epic", undefined, "MP5", "mp5k_zm", 0);
AddReward("Rare", undefined, "MP5", "mp5k_zm", 0);
AddReward("Common", undefined, "MP5", "mp5k_zm", 0);
AddReward("Common", undefined, "M1911", "m1911_zm", 0);
AddReward("Common", undefined, "Olympia", "rottweil72_zm", 0);
AddReward("Legendary", undefined, "RPD", "rpd_zm", 0);
break;
case "zm_tomb":
AddReward("Legendary", undefined, "SLDG HAMR", "hamr_upgraded_zm", 0);
AddReward("Legendary", "zombie_z_money_icon", "Bonus Points", "Bonus_Points", 1);
AddReward("Legendary", undefined, "Agarthan Reaper", "scar_upgraded_zm", 0);
AddReward("Epic", "p6_zm_tm_blood_power_up", "Zombie Blood", "zombie_blood", 1);
AddReward("Epic", undefined, "STG44", "mp44_zm", 0);
AddReward("Epic", "zombie_z_money_icon", "Bonus Points", "Bonus_Points", 1);
AddReward("Epic", undefined, "Scar-H", "scar_zm", 0);
AddReward("Rare", "zombie_carpenter", "Carpenter", "carpenter", 1);
AddReward("Rare", "zombie_z_money_icon", "Bonus Points", "Bonus_Points", 1);
AddReward("Rare", undefined, "KAP-40", "kard_zm", 0);
AddReward("Rare", "p6_zm_tm_blood_power_up", "Zombie Blood", "zombie_blood", 1);
AddReward("Common", "zombie_z_money_icon", "Bonus Points", "Lose_Points", 1);
AddReward("Common", "zombie_carpenter", "Carpenter", "carpenter", 1);
AddReward("Common", "p6_zm_tm_blood_power_up", "Zombie Blood", "zombie_blood", 1);
AddReward("Common", undefined, "Mauser C96", "c96_zm", 0);
AddReward("Common", undefined, "Ballista", "ballista_zm", 0);
break;
}
}
// Everything that works on all Maps
if(getdvarint("TrialsEnableWonderweapons") == 1) {
AddReward("Legendary", undefined, "Ray Gun Mark 2", "raygun_mark2_zm", 0);
if(getdvarint("TrialsAllowFreePerk") == 1)
AddReward("Legendary", "zombie_pickup_perk_bottle", "Free Perk", "free_perk", 1);
if(getdvarint("TrialsEnablePapDrop") == 1)
AddReward("Legendary", "p6_anim_zm_buildable_pap", "Weapon Upgrade", "WeaponUpgrade", 1);
AddReward("Legendary", "t6_wpn_zmb_raygun_view", "Ray Gun", "ray_gun_zm", 0);
AddReward("Legendary", "zombie_z_money_icon", "Bonus Points", "Bonus_Points", 1);
AddReward("Legendary", "Zombie_Skull", "Insta Kill", "insta_kill", 1);
AddReward("Legendary", "zombie_ammocan", "Max Ammo", "full_ammo", 1);
AddReward("Legendary", undefined, "Lamentation", "galil_upgraded_zm", 0);
AddReward("Legendary", undefined, "Mnesia", "m14_upgraded_zm", 0);
AddReward("Epic", "Zombie_Skull", "Insta Kill", "insta_kill", 1);
AddReward("Epic", "zombie_x2_icon", "Double Points", "double_points", 1);
AddReward("Epic", undefined, "DSR-50", "dsr50_zm", 0);
AddReward("Epic", undefined, "Galil", "galil_zm", 0);
AddReward("Epic", undefined, "B23r", "beretta93r_zm", 0);
AddReward("Epic", undefined, "Mnesia", "m14_upgraded_zm", 0);
AddReward("Rare", "zombie_x2_icon", "Double Points", "double_points", 1);
AddReward("Rare", "zombie_bomb", "Nuke", "nuke", 1);
AddReward("Rare", undefined, "Remington", "870mcs_zm", 0);
AddReward("Common", "zombie_bomb", "Nuke", "nuke", 1);
AddReward("Common", undefined, "M14", "m14_zm", 0);
// Lights for Origins Player Podiums
if(level.script == "zm_tomb") {
flag_wait("initial_blackscreen_passed");
playfx(level._effect[ "fx_tomb_chamber_glow_blue" ], PodiumOrigin[0] - (0,0,10), (0,90,0), (0,90,0));
playfx(level._effect[ "fx_tomb_chamber_glow_yellow" ], PodiumOrigin[1] - (0,0,10), (0,0,0), (0,90,0));
playfx(level._effect[ "fx_tomb_crafting_chamber_glow" ], PodiumOrigin[2] - (0,0,10));
playfx(level._effect[ "fx_tomb_chamber_glow_red" ], PodiumOrigin[3] - (0,0,10));
}
}
on_connect() {
level endon("end_game");
for ( ;; ) {
level waittill( "connected", player );
player thread on_spawned();
}
}
on_spawned() {
level endon("end_game");
self endon( "disconnect" );
self.initial_spawn_c = 0;
for ( ;; ) {
self waittill( "spawned_player" );
if(self.initial_spawn_c == 0) {
self.initial_spawn_c = 1;
self.board_repair = 0;
self.ReaperTrialsCurrentMagic = 0;
self init_trial_hud();
}
}
}
init_trial_hud() {
// HUD settings such as sizes, position and fallbacks
self.trials_height = 28;
self.trials_width = int(self.trials_height * 5);
self.trials_space = int(self.trials_height * .115);
self.trials_star = int(self.trials_space * 2.35);
self.trials_x = 5;
if(level.script == "zm_tomb")
self.trials_y = -180 - self.trials_height;
else
self.trials_y = -120 - self.trials_height;
self.trials_reward_color = (.8, 0, 0);
self.trials_reward_code = "none";
self.trials_reward_color_code = "^1";
self.trials_reward_level = "^1None";
self.do_trial_progress = false;
self.trials_init = true;
}
TriggerRewardHandler(player, Name, Powerup, Hint) {
level endon("end_game");
self endon("Timeout");
self endon("Grabbed");
players = getplayers();
while(1) {
self waittill("trigger", player);
if(player usebuttonpressed()) {
if(isdefined(self.sharedreward))
self.sharedreward = undefined;// Trigger Again only Visible for that Specific Player
if(Powerup == 0){
if(Name == "ray_gun_zm" && player has_weapon_or_upgrade("raygun_mark2_zm") || Name == "Mark2" && player has_weapon_or_upgrade("ray_gun_zm")) {
player playlocalsound( level.zmb_laugh_alias );
self notify("Grabbed");
}
if(player has_weapon_or_upgrade(Name)){
player playlocalsound( level.zmb_laugh_alias );
self notify("Grabbed");
}
weapon_limit = get_player_weapon_limit( player );
primaryweapons = player getweaponslistprimaries();
if ( isDefined( primaryweapons ) && primaryweapons.size >= weapon_limit )
player takeweapon(player getcurrentweapon());
wait 0.1;
player giveweapon(Name);
player switchtoweapon(Name);
self notify("Grabbed");
}
else {
wait 0.1;
if(Name == "free_perk")
free_perk = player maps/mp/zombies/_zm_perks::give_random_perk();
else if(Name == "Bonus_Points")
player.score += randomintrange( 1, 50 ) * 100;
else if(Name == "Lose_Points")
player.score -= randomintrange( 1, 50 ) * 100;
else if(Name == "WeaponUpgrade") {
weapon = player get_upgrade_weapon( player getcurrentweapon(), 0 );
if(IsDefined( weapon )) {
player takeweapon( player getcurrentweapon());
player giveweapon( weapon, 0, player get_pack_a_punch_weapon_options( weapon ) );
player givestartammo( weapon );
player givemaxammo( weapon );
player switchtoweapon( weapon );
}
else
player playlocalsound( level.zmb_laugh_alias );
}
else
specific_powerup_drop(Name, player.origin);
self notify("Grabbed");
}
}
if(players.size != 1) {
if(player meleebuttonpressed()){
if(!isdefined(self.sharedreward)) {
self.sharedreward = true; // To Disable the Setinvisible Loop
self playsound("zmb_powerup_grabbed");
self setvisibletoall();
self SetHintString("Press ^3&&1^7 To Take "+Hint);
}
}
}
}
}
Random_Reward(TrialLevel) {
Choosen = [];
for(i = 0; i < level.Rewards_List.size;i++){
if(isdefined(level.Rewards_List[i].Rank) && level.Rewards_List[i].Rank == TrialLevel){
Choosen[Choosen.size] = i;
}
}
return Choosen[randomint(Choosen.size)];
}
RewardModelMain() {
self endon("Done");
level endon("end_game");
if(level.script == "zm_tomb")
playfxontag(level._effect[ "ice_glow" ], self, "tag_origin");
else
playfxontag(level._effect["powerup_on_solo"], self, "tag_origin");
while(isDefined( self )){
waittime = randomfloatrange(2.5, 5);
yaw = randomint(360);
if(yaw > 300)
yaw = 300;
else{
if (yaw < 60){
yaw = 60;
}
}
yaw = self.angles[1] + yaw;
new_angles = (-60 + randomint(120), yaw, -45 + randomint(90) );
self rotateto( new_angles, waittime, waittime * 0.5, waittime * 0.5 );
wait randomfloat( waittime - 0.1 );
}
}
TrialsSystem(CalculatedOrigin,SelectedModel, Origin, Angles, ActivatiorModel, ActivatiorOrigim, ActivatorAngles) {
level endon("end_game");
// Challenges Setup
Challenges = [];
Challenges[Challenges.size] = "K_Trial";// Regular Kills
Challenges[Challenges.size] = "HK_Trial";// Headshot Kills
Challenges[Challenges.size] = "MK_Trial";// Melee Kills
Challenges[Challenges.size] = "GO_Trial";// Kill Zombies With Grenades
Challenges[Challenges.size] = "C_Trial";// Kill Zombies While Crouched
Challenges[Challenges.size] = "NH_Trial";// No Hits
Challenges[Challenges.size] = "BRS_Trial";// Buy Stuff
Challenges[Challenges.size] = "NAIM_Trial";// No Aim
Challenges[Challenges.size] = "CR_Trial";// Close Range Kills
Challenges[Challenges.size] = "BR_Trial";// Big Range Kills
Challenges[Challenges.size] = "TD_Trial";// Take Damage
Challenges[Challenges.size] = "PK_Trial";// Prone Kills
Challenges[Challenges.size] = "SGK_Trial";// Shotgun Kills
Challenges[Challenges.size] = "SMGK_Trial";// SMG Kills
Challenges[Challenges.size] = "ASTK_Trial";// Assualt Kills
Challenges[Challenges.size] = "HSK_Trial";// Higher Spot Kills
Challenges[Challenges.size] = "JUMP_Trial";// Jump Kills
Challenges[Challenges.size] = "LEGK_Trial";// Leg Kills
Challenges[Challenges.size] = "ARMK_Trial";// Arm Kills
switch(level.script) {
case "zm_transit":
Challenges[Challenges.size] = "REPA_Trial";// Rebuild Barriers
if(getDvar( "ui_zm_mapstartlocation" ) != "farm")
Challenges[Challenges.size] = "LAVAK_Trial";// Lava Kills
if(getDvar( "ui_zm_mapstartlocation" ) == "town") {
Challenges[Challenges.size] = "KISZ_Trial";// Kill In Random Zone
Challenges[Challenges.size] = "SISZ_Trial";// Stay In Random Zone
Challenges[Challenges.size] = "NPAP_Trial";// Kill With no Pap Weapon
}
if(getDvar( "ui_zm_mapstartlocation" ) == "transit")
Challenges[Challenges.size] = "ESHK_Trial";// Shield Kills
break;
case "zm_highrise":
Challenges[Challenges.size] = "SPPADK_Trial";// Springpad Kills
Challenges[Challenges.size] = "REPA_Trial";// Rebuild Barriers
Challenges[Challenges.size] = "KISZ_Trial";// Kill In Random Zone
Challenges[Challenges.size] = "SISZ_Trial";// Stay In Random Zone
Challenges[Challenges.size] = "NPAP_Trial";// Kill With no Pap Weapon
break;
case "zm_prison":
Challenges[Challenges.size] = "ESHK_Trial";// Shield Kills
Challenges[Challenges.size] = "REPA_Trial";// Rebuild Barriers
Challenges[Challenges.size] = "KISZ_Trial";// Kill In Random Zone
Challenges[Challenges.size] = "SISZ_Trial";// Stay In Random Zone
Challenges[Challenges.size] = "NPAP_Trial";// Kill With no Pap Weapon
break;
case "zm_buried":
Challenges[Challenges.size] = "SPPADK_Trial";// Springpad Kills
Challenges[Challenges.size] = "BASSK_Trial";// Subwoofer Kills
Challenges[Challenges.size] = "REPA_Trial";// Rebuild Barriers
Challenges[Challenges.size] = "KISZ_Trial";// Kill In Random Zone
Challenges[Challenges.size] = "SISZ_Trial";// Stay In Random Zone
Challenges[Challenges.size] = "NPAP_Trial";// Kill With no Pap Weapon
break;
case "zm_tomb":
Challenges[Challenges.size] = "ESHK_Trial";// Shield Kills
Challenges[Challenges.size] = "KISZ_Trial";// Kill In Random Zone
Challenges[Challenges.size] = "SISZ_Trial";// Stay In Random Zone
Challenges[Challenges.size] = "NPAP_Trial";// Kill With no Pap Weapon
break;
}
TrialPodium_Player1 = spawn( "script_model", Origin[0]);
TrialPodium_Player1.angles = Angles[0];
TrialPodium_Player1 setmodel(SelectedModel);
TrialPodium_Player1 thread PodiumSetupTrigger(Origin[0] + CalculatedOrigin,0);
TrialPodium_Player1 thread PodiumSetupTrigger(Origin[0] + CalculatedOrigin,4);
TrialPodium_Player2 = spawn( "script_model", Origin[1]);
TrialPodium_Player2.angles = Angles[1];
TrialPodium_Player2 setmodel(SelectedModel);
TrialPodium_Player2 thread PodiumSetupTrigger(Origin[1] + CalculatedOrigin,1);
TrialPodium_Player2 thread PodiumSetupTrigger(Origin[1] + CalculatedOrigin,5);
TrialPodium_Player3 = spawn( "script_model", Origin[2]);
TrialPodium_Player3.angles = Angles[2];
TrialPodium_Player3 setmodel(SelectedModel);
TrialPodium_Player3 thread PodiumSetupTrigger(Origin[2] + CalculatedOrigin,2);
TrialPodium_Player3 thread PodiumSetupTrigger(Origin[2] + CalculatedOrigin,6);
TrialPodium_Player4 = spawn( "script_model", Origin[3]);
TrialPodium_Player4.angles = Angles[3];
TrialPodium_Player4 setmodel(SelectedModel);
TrialPodium_Player4 thread PodiumSetupTrigger(Origin[3] + CalculatedOrigin,3);
TrialPodium_Player4 thread PodiumSetupTrigger(Origin[3] + CalculatedOrigin,7);
TrialMainModel = spawn( "script_model", ActivatiorOrigim);
TrialMainModel.angles = ActivatorAngles;
TrialMainModel setmodel(ActivatiorModel);
if(level.script != "zm_prison" && level.script != "zm_tomb")
TrialMainModel thread MainModelAnimation();
TrialsMainTrigger = spawn("trigger_radius", ActivatiorOrigim, 1, 50, 50);
TrialsMainTrigger SetCursorHint( "HINT_NOICON" );
// All Zones For Challenges
Zones = GetEntArray("player_volume", "script_noteworthy");
// Zones check for Town
if (level.script == "zm_transit" && getDvar( "ui_zm_mapstartlocation" ) == "town" ){
for(i = 0;i < Zones.size;i++){
if(Zones[i].targetname == "zone_tow" || Zones[i].targetname == "zone_bar" || Zones[i].targetname == "zone_ban" || Zones[i].targetname == "zone_town_north" || Zones[i].targetname == "zone_town_west" || Zones[i].targetname == "zone_town_east" || Zones[i].targetname == "zone_town_barber" || Zones[i].targetname == "zone_town_south" ){
if(!isdefined(ZonesForSurvival))
ZonesForSurvival = [];
ZonesForSurvival[ZonesForSurvival.size] = Zones[i];
}
}
}
TrialsCost = getDvarInt("TrialsCost");
Challenges = array_randomize(Challenges);
Num = 0;
while(1){
if(level.ReaperTrialsActive == 0)
TrialsMainTrigger SetHintString("Hold ^3&&1^7 to Activate Trial [Cost: " + TrialsCost + "]");
else
TrialsMainTrigger SetHintString("Trial is already Running!");
TrialsMainTrigger waittill("trigger", player);
if(level.ReaperTrialsActive == 0){
if(player UseButtonPressed()){
if(player.score < TrialsCost){
player playsound("evt_perk_deny");
wait 1;
}
else if(player.score >= TrialsCost){
player minus_to_player_score(TrialsCost);
player playsound("zmb_cha_ching");
if(Num >= Challenges.size) {
Challenges = cycle_randomize(Challenges);
Num = 0;
}
if(isdefined(ZonesForSurvival))
level thread ChallengeHandler(ZonesForSurvival,Challenges[Num]);
else
level thread ChallengeHandler(Zones,Challenges[Num]);
foreach(player in level.players)
player playsound( "zmb_meteor_activate" );
Num++;
level.ReaperTrialsActive++;
}
}
}
}
}
cycle_randomize(indices) {
li = indices.size - 1;
last = indices[li];
new_indices = array_randomize(indices);
while (last == new_indices[0])
new_indices = array_randomize(indices);
return new_indices;
}
MainModelAnimation(){// Teddy Floating
level endon("end_game");
flag_wait( "start_zombie_round_logic" );
if(level.script == "zm_nuked") {
for( f = 0; f < 4; f++ ) {
playfxontag( level._effect[ "fx_ash_embers_up_lg" ], self, "tag_origin" );
wait randomfloatrange( 0.1, 0.72 );
}
}
if(level.script == "zm_highrise")
playfx( level._effect[ "fx_highrise_dragon_tower_glow_ric" ], self.origin);
if(level.script == "zm_buried")
playfx( level._effect[ "sq_tower_bolts" ], self.origin, (0,0,180), (0,0,180));
while(1) {
self moveto(self.origin + (0,0,20),randomfloatrange(0.5,4));
self waittill("movedone");
self moveto(self.origin + (0,0,-20),randomfloatrange(0.5,4));
self waittill("movedone");
}
}
ChallengeHandler(Zones,Challenge){
if(Challenge == "K_Trial")
ChallengeDescription = "Kill Zombies";
else if(Challenge == "HK_Trial"){
ChallengeDescription = "Kill Zombies\n^3Headshots";
ChallengePoints = 2;
}
else if(Challenge == "MK_Trial"){
ChallengeDescription = "Kill Zombies with Melee Attacks";
ChallengePoints = 2;
}
else if(Challenge == "KISZ_Trial"){
Num = randomintrange(0, Zones.size);
ChoosenZone = Zones[Num];
ZoneName = get_zone_name(ChoosenZone.targetname);
if(!isdefined(ZoneName) || isdefined(ZoneName) && ZoneName == "") {
Num = randomintrange(0, Zones.size);
ChoosenZone = Zones[Num];
ZoneName = get_zone_name(ChoosenZone.targetname);
}
ChallengeDescription = "Kill Zombies at Location\n^8"+ZoneName;
PositiveChallengeDescription = "Kill Zombies at Location\n^2"+ZoneName;
Time = 120;
}
else if(Challenge == "SISZ_Trial"){
Num = randomintrange(0, Zones.size);
ChoosenZone = Zones[Num];
ZoneName = get_zone_name(ChoosenZone.targetname);
if(!isdefined(ZoneName) || isdefined(ZoneName) && ZoneName == "") {
Num = randomintrange(0, Zones.size);
ChoosenZone = Zones[Num];
ZoneName = get_zone_name(ChoosenZone.targetname);
}
ChallengeDescription = "Stay at Location\n^8"+ZoneName;
PositiveChallengeDescription = "Stay at Location\n^2"+ZoneName;
Time = 120;
}
else if(Challenge == "GO_Trial")
ChallengeDescription = "Kill Zombies with Grenades";
else if(Challenge == "C_Trial")
ChallengeDescription = "Kill Zombies while Crouching";
else if(Challenge == "TD_Trial"){
ChallengeDescription = "Take Damage";
ChallengePoints = 1.5;
}
else if(Challenge == "NH_Trial"){
ChallengeDescription = "Take No Damage";
ChallengePoints = 1.5;
}
else if(Challenge == "BRS_Trial"){
ChallengeDescription = "Spend Points";
Time = 120;
}
else if(Challenge == "NPAP_Trial")
ChallengeDescription = "Kill Zombies with a Non-Upgraded Weapon";
else if(Challenge == "NAIM_Trial")
ChallengeDescription = "Kill Zombies without Aiming";
else if(Challenge == "CR_Trial")
ChallengeDescription = "Kill Zombies in Close Range";
else if(Challenge == "BR_Trial")
ChallengeDescription = "Kill Zombies in Long Range";
else if(Challenge == "PK_Trial")
ChallengeDescription = "Kill Zombies while Prone";
else if(Challenge == "SGK_Trial")
ChallengeDescription = "Kill Zombies with Shotguns";
else if(Challenge == "SMGK_Trial")
ChallengeDescription = "Kill Zombies with SMGs";
else if(Challenge == "ASTK_Trial")
ChallengeDescription = "Kill Zombies with Assault Rifles";
else if(Challenge == "HSK_Trial")
ChallengeDescription = "Kill Zombies at a Higher Position";
else if(Challenge == "JUMP_Trial")
ChallengeDescription = "Kill Zombies While in Air";
else if(Challenge == "LEGK_Trial")
ChallengeDescription = "Kill Zombies\n^3Legshots";
else if(Challenge == "ARMK_Trial")
ChallengeDescription = "Kill Zombies\n^3Armshots";
else if(Challenge == "ESHK_Trial")
ChallengeDescription = "Kill Zombies with a Riotshield";
else if(Challenge == "LAVAK_Trial")
ChallengeDescription = "Kill Zombies while Burning";
else if(Challenge == "REPA_Trial") {
ChallengeDescription = "Repair Barricades";
ChallengePoints = 0.5;
Time = 120;
}
else if(Challenge == "SPPADK_Trial")
ChallengeDescription = "Kill Zombies with a Tramplesteam";
else if(Challenge == "BASSK_Trial")
ChallengeDescription = "Kill Zombies with a Subwoofer";
if(!isdefined(ChallengePoints))// Default
ChallengePoints = 1;
if(!isdefined(time))// Default
time = 90;
// Setup Challenge For Players
players = get_players();
for(i = 0;i < players.size;i++){
if(Challenge == "SISZ_Trial" || Challenge == "TD_Trial" || Challenge == "NH_Trial" || Challenge == "BRS_Trial" || Challenge == "REPA_Trial"){
players[i] thread PlayerTrialHandlerTime(Challenge, ChallengePoints, ChoosenZone);
}
else {
if(Challenge == "SPPADK_Trial" || Challenge == "BASSK_Trial")
players[i] thread PlayerTrialHandlerBuildableKill(Challenge, ChallengePoints);
else
players[i] thread PlayerTrialHandlerKill(Challenge, ChallengePoints, ChoosenZone);
}
players[i] toggle_trial_challenge_hud();
players[i] set_trial_challenge(ChallengeDescription);
players[i] set_trial_timer(time);
if(isdefined(ChoosenZone))
players[i] thread set_trial_location(ChoosenZone, ChallengeDescription, PositiveChallengeDescription);
}
wait time + 1;
for(i = 0;i < players.size;i++){
players[i] notify("TrialOver");
players[i] toggle_trial_challenge_hud();
}
level.ReaperTrialsActive = 0;
}
set_trial_location(zone, out_text, in_text) {
self endon("TrialOver");
self endon("disconnect");
level endon("end_game");
before = false;
while (true) {
in_zone = self istouching(zone);
if(before != in_zone) {
text = in_zone ? in_text : out_text;
self set_trial_challenge(text);
before = in_zone;
}
wait 1;
}
}
// All Buildable Based Challenges Come in here
PlayerTrialHandlerBuildableKill(Trial, Points) {
self endon("TrialOver");
self endon("disconnect");
level endon("end_game");
while(1) {
TrialNotify = self waittill_any_return("zombie_flung", "zombie_subwoofer_kill");
if(TrialNotify == "zombie_flung") {
if(Trial == "SPPADK_Trial")
self thread AddPlayerMagicPoints(Points);
}
else if(TrialNotify == "zombie_subwoofer_kill") {
if(Trial == "BASSK_Trial")
self thread AddPlayerMagicPoints(Points);
}
}
}
// All Kill Based Challenges Come in here
PlayerTrialHandlerKill(trial, Points, SpecificZone){
self endon("TrialOver");
self endon("disconnect");
level endon("end_game");
while(1) {
self waittill( "zom_kill", zombie);
if(trial == "K_Trial")
self thread AddPlayerMagicPoints(Points);
else if(trial == "HK_Trial") {
if(zombie damagelocationisany( "head", "helmet", "neck"))
self thread AddPlayerMagicPoints(Points);
}
else if(trial == "MK_Trial") {
if(zombie.damagemod == "MOD_MELEE" || zombie.damagemod == "MOD_IMPACT")
self thread AddPlayerMagicPoints(Points);
}
else if(trial == "KISZ_Trial") {
if(self istouching(SpecificZone) && zombie istouching(SpecificZone))
self thread AddPlayerMagicPoints(Points);
}
else if(trial == "GO_Trial") {
if(zombie.damagemod == "MOD_GRENADE" || zombie.damagemod == "MOD_GRENADE_SPLASH" || zombie.damagemod == "MOD_EXPLOSIVE" ) {
self thread AddPlayerMagicPoints(Points);
}
}
else if(trial == "C_Trial") {
if(self GetStance() == "crouch")
self thread AddPlayerMagicPoints(Points);
}
else if(trial == "NPAP_Trial") {
if(!self has_upgrade(self getcurrentweapon()) && zombie.damagemod == "MOD_RIFLE_BULLET" || !self has_upgrade(self getcurrentweapon()) && zombie.damagemod == "MOD_PISTOL_BULLET")
self thread AddPlayerMagicPoints(Points);
}
else if(trial == "NAIM_Trial") {
if(!isads(self))
self thread AddPlayerMagicPoints(Points);
}
else if(trial == "CR_Trial") {
if(distancesquared(self.origin,zombie.origin) <= 20000)
self thread AddPlayerMagicPoints(Points);
}
else if(trial == "BR_Trial") {
if(distancesquared(self.origin,zombie.origin) >= 180000)
self thread AddPlayerMagicPoints(Points);
}
else if(trial == "PK_Trial") {
if(self GetStance() == "prone")
self thread AddPlayerMagicPoints(Points);
}
else if(trial == "SGK_Trial") {
if(weaponclass(self getcurrentweapon()) == "spread")
self thread AddPlayerMagicPoints(Points);
}
else if(trial == "SMGK_Trial") {
if(weaponclass(self getcurrentweapon()) == "smg")
self thread AddPlayerMagicPoints(Points);
}
else if(trial == "ASTK_Trial") {
if(weaponclass(self getcurrentweapon()) == "rifle")
self thread AddPlayerMagicPoints(Points);
}
else if(trial == "HSK_Trial") {
if(self.origin[2] >= (zombie.origin[2] + 30))
self thread AddPlayerMagicPoints(Points);
}
else if(trial == "JUMP_Trial") {
if(!isdefined(self getgroundent()))
self thread AddPlayerMagicPoints(Points);
}
else if(trial == "LEGK_Trial") {
if(zombie damagelocationisany( "left_leg_upper", "left_leg_lower", "right_leg_upper", "right_leg_lower" ))
self thread AddPlayerMagicPoints(Points);
}
else if(trial == "ARMK_Trial") {
if(zombie damagelocationisany( "right_arm_upper", "left_arm_upper", "right_arm_lower", "left_arm_lower" ))
self thread AddPlayerMagicPoints(Points);
}
else if(trial == "ESHK_Trial") {
if(zombie.damagemod == "MOD_MELEE" && self getcurrentweapon() == level.riotshield_name || zombie.damagemod == "MOD_IMPACT" && self getcurrentweapon() == level.riotshield_name )
self thread AddPlayerMagicPoints(Points);
}
else if(trial == "LAVAK_Trial") {
if(isdefined(self.is_burning) && self.is_burning == 1)
self thread AddPlayerMagicPoints(Points);
}
}
}
// All Time Based Challenges Come in here
PlayerTrialHandlerTime(trial, Points, SpecificZone) {
self endon("TrialOver");
self endon("disconnect");
level endon("end_game");
while(1){
if(trial == "SISZ_Trial") {
if(isdefined(SpecificZone) && self istouching(SpecificZone)) {
self thread AddPlayerMagicPoints(Points);
}
}
else if(trial == "TD_Trial") {
if((self.health / self.maxhealth) <= 0.8) {
self thread AddPlayerMagicPoints(Points);
}
}
else if(trial == "NH_Trial") {
if(self.health == self.maxhealth) {
self thread AddPlayerMagicPoints(Points);
}
else {
wait 10;
}
}
else if(trial == "BRS_Trial") {
level waittill("spent_points", player, PointsSpent);
if(Player == self) {
if(PointsSpent >= 100) {
self thread AddPlayerMagicPoints(Points);
}
}
}
else if(trial == "REPA_Trial") {
if(self.board_repair > 0) {
self thread AddPlayerMagicPoints(Points);
self.board_repair = 0;
}
}
wait 2.5;
}
}
PodiumSetupTrigger(CalculatedOrigin,Index){
level endon("end_game");
if(level.script == "zm_nuked")
trigger = Spawn( "trigger_radius", self.origin + (0, 0, 30), 0, 45, 45 );
else
trigger = Spawn( "trigger_radius", self.origin + (0, 0, 30), 0, 30, 30 );
trigger SetCursorHint( "HINT_NOICON" );
trigger thread ShowToSpecific(CalculatedOrigin,Index);
while(1) {
players = GetPlayers();
if(players[Index].ReaperTrialsCurrentMagic >= 25)
reward_level = "^2Common";
if(players[Index].ReaperTrialsCurrentMagic >= 50)
reward_level = "^4Rare";
if(players[Index].ReaperTrialsCurrentMagic >= 75)
reward_level = "^6Epic";
if(players[Index].ReaperTrialsCurrentMagic == 100)
reward_level = "^3Legendary";
if(players[Index].ReaperTrialsCurrentMagic >= 25)
trigger SetHintString("Press ^3&&1^7 To Claim " + reward_level + "^7 Reward");
else
trigger SetHintString("Reward Level Too Low");
trigger waittill( "trigger", player);
if(player == players[Index]){
if(!player UseButtonPressed()){
wait .1;
continue;
}
if(players[Index].ReaperTrialsCurrentMagic < 25){
wait .1;
continue;
}
if(players[Index].ReaperTrialsCurrentMagic >= 25)
Reward = Random_Reward("Common");
if(players[Index].ReaperTrialsCurrentMagic >= 50)
Reward = Random_Reward("Rare");
if(players[Index].ReaperTrialsCurrentMagic >= 75)
Reward = Random_Reward("Epic");
if(players[Index].ReaperTrialsCurrentMagic == 100)
Reward = Random_Reward("Legendary");
players[Index].ReaperTrialsCurrentMagic = 0;
players[Index] toggle_trial_reward_hud();
players[Index] set_trial_reward("none");
trigger SetHintString("Generating Reward!");
wait 1;
RewardModel = Spawn( "script_model", CalculatedOrigin + (0,0,28));
RewardModel setmodel(level.Rewards_List[Reward].Model);
RewardModel thread RewardModelMain();
if(players.size == 1)// To Disable the Sharing Hint in Solo Games
trigger SetHintString( "Press ^3&&1^7 To Take "+level.Rewards_List[Reward].Hint);
else
trigger SetHintString( "Press ^3&&1^7 To Take "+level.Rewards_List[Reward].Hint+"\nPress ^3[{+melee}]^7 To Share Reward");
trigger thread TriggerRewardHandler(players[Index], level.Rewards_List[Reward].Name, level.Rewards_List[Reward].Powerup, level.Rewards_List[Reward].Hint);
trigger waittill_any_timeout(30, "Grabbed");
trigger notify("Timeout");
RewardModel notify("Done");
RewardModel delete();
}
}
}
toggle_trial_challenge_hud() {
if (!isdefined(self.trials_init))
return;
sq_size = self.trials_height;
sq_wide = self.trials_width;
sq_dot = self.trials_space;
sq_star = self.trials_star;
x = self.trials_x;
y = self.trials_y;
if (isdefined(self.trials_show_challenge) && self.trials_show_challenge) {
// Wait for last trial progress animation before hide
while (self.do_trial_progress)
wait .1;
self.trials_show_challenge = false;
self.trials_bg.alpha = 0;
self.trials_timer_bg.alpha = 0;
self.trials_timer_bar.alpha = 0;
self.trials_timer.alpha = 0;
self.trials_challenge destroy(); // This will glitch if a new challenge starts too fast
// self.trials_challenge.alpha = 0;
}
else {
self.trials_show_challenge = true;
// Main background
if (!isdefined(self.trials_bg)) {
self.trials_bg = newclienthudelem(self);
self.trials_bg.horzalign = "user_left";
self.trials_bg.alignx = "left";
self.trials_bg.vertalign = "user_center";
self.trials_bg.aligny = "middle";
self.trials_bg.x = x + sq_dot + sq_size;
self.trials_bg.y = y;
self.trials_bg.sort = 1;
self.trials_bg.foreground = true;
self.trials_bg.hidewheninmenu = true;
self.trials_bg setshader("gradient", sq_wide, sq_size);
}
self.trials_bg.alpha = .6;
// Timer background
if (!isdefined(self.trials_timer_bg)) {
self.trials_timer_bg = newclienthudelem(self);
self.trials_timer_bg.horzalign = "user_left";
self.trials_timer_bg.alignx = "left";
self.trials_timer_bg.vertalign = "user_center";
self.trials_timer_bg.aligny = "middle";
self.trials_timer_bg.x = x + sq_dot;
self.trials_timer_bg.y = y;
self.trials_timer_bg.sort = 2;
self.trials_timer_bg.foreground = true;
self.trials_timer_bg.hidewheninmenu = true;
self.trials_timer_bg setshader("black", sq_size, sq_size);
}
self.trials_timer_bg.alpha = .8;
// Left timer bar
if (!isdefined(self.trials_timer_bar)) {
self.trials_timer_bar = newclienthudelem(self);
self.trials_timer_bar.horzalign = "user_left";
self.trials_timer_bar.alignx = "left";
self.trials_timer_bar.vertalign = "user_center";
self.trials_timer_bar.aligny = "middle";
self.trials_timer_bar.x = x;
self.trials_timer_bar.y = y;
self.trials_timer_bar.color = self.trials_reward_color;
self.trials_timer_bar.sort = 3;
self.trials_timer_bar.foreground = true;
self.trials_timer_bar.hidewheninmenu = true;
self.trials_timer_bar setshader("white", sq_dot, sq_size);
}
self.trials_timer_bar.alpha = 1;
// Timer
if (!isdefined(self.trials_timer)) {
self.trials_timer = newclienthudelem(self);
self.trials_timer.horzalign = "user_left";
self.trials_timer.alignx = "center";
self.trials_timer.vertalign = "user_center";
self.trials_timer.aligny = "middle";
self.trials_timer.x = x + sq_dot + (sq_size / 2);
self.trials_timer.y = y;
self.trials_timer.color = self.trials_reward_color;
self.trials_timer.font = "small";
self.trials_timer.sort = 3;
self.trials_timer.foreground = true;
self.trials_timer.hidewheninmenu = true;
}
self.trials_timer.alpha = 1;
// Challenge text
if (!isdefined(self.trials_challenge)) {
self.trials_challenge = newclienthudelem(self);
self.trials_challenge.horzalign = "user_left";
self.trials_challenge.alignx = "left";
self.trials_challenge.vertalign = "user_center";
self.trials_challenge.aligny = "middle";
self.trials_challenge.x = x + (sq_dot * 3) + sq_size;
self.trials_challenge.y = y;
self.trials_challenge.real_y = self.trials_challenge.y;
self.trials_challenge.sort = 3;
self.trials_challenge.foreground = true;
self.trials_challenge.hidewheninmenu = true;
}
self.trials_challenge.alpha = 1;
}
}
toggle_trial_reward_hud() {
if (!isdefined(self.trials_init))
return;
sq_size = self.trials_height;
sq_wide = self.trials_width;
sq_dot = self.trials_space;
sq_star = self.trials_star;
x = self.trials_x;
y = self.trials_y;
if (isdefined(self.trials_show_reward) && self.trials_show_reward) {
// Wait for last trial progress animation before hide
while (self.do_trial_progress)
wait .1;
self.trials_show_reward = false;
self.trials_reward.alpha = 0;
self.trials_common.alpha = 0;
self.trials_rare.alpha = 0;
self.trials_epic.alpha = 0;
self.trials_legend.alpha = 0;
}
else {
self.trials_show_reward = true;
// Reward text
if (!isdefined(self.trials_reward)) {
self.trials_reward = newclienthudelem(self);
self.trials_reward.horzalign = "user_left";
self.trials_reward.alignx = "left";
self.trials_reward.vertalign = "user_center";
self.trials_reward.aligny = "top";
self.trials_reward.x = x + (sq_dot * 3) + sq_size;
self.trials_reward.y = y + (sq_size / 2) - 1;
self.trials_reward.font = "small";
self.trials_reward.color = (.75, .75, .75);
self.trials_reward.sort = 3;
self.trials_reward.foreground = true;
self.trials_reward.hidewheninmenu = true;
self.trials_reward.label = &"Reward Available: ";
}
self.trials_reward.alpha = 1;
// Common tier dot
if (!isdefined(self.trials_common)) {
self.trials_common = newclienthudelem(self);
self.trials_common.horzalign = "user_left";
self.trials_common.alignx = "left";
self.trials_common.vertalign = "user_center";
self.trials_common.aligny = "top";
self.trials_common.x = x - 1;
self.trials_common.y = y + (sq_size / 2) + sq_dot;
self.trials_common.color = (0, 0, 0);
self.trials_common.sort = 3;
self.trials_common.foreground = true;
self.trials_common.hidewheninmenu = true;
self.trials_common setshader("menu_mp_star_rating", sq_star, sq_star);
}
self.trials_common.alpha = .8;
// Rare tier dot
if (!isdefined(self.trials_rare)) {
self.trials_rare = newclienthudelem(self);
self.trials_rare.horzalign = "user_left";
self.trials_rare.alignx = "left";
self.trials_rare.vertalign = "user_center";
self.trials_rare.aligny = "top";
self.trials_rare.x = x + sq_dot + (sq_dot * 2) - 1;
self.trials_rare.y = y + (sq_size / 2) + sq_dot;
self.trials_rare.color = (0, 0, 0);
self.trials_rare.sort = 3;
self.trials_rare.foreground = true;
self.trials_rare.hidewheninmenu = true;
self.trials_rare setshader("menu_mp_star_rating", sq_star, sq_star);
}
self.trials_rare.alpha = .8;
// Epic tier dot
if (!isdefined(self.trials_epic)) {
self.trials_epic = newclienthudelem(self);
self.trials_epic.horzalign = "user_left";
self.trials_epic.alignx = "left";
self.trials_epic.vertalign = "user_center";
self.trials_epic.aligny = "top";
self.trials_epic.x = x + (sq_dot * 2) + (sq_dot * 4) - 1;
self.trials_epic.y = y + (sq_size / 2) + sq_dot;
self.trials_epic.color = (0, 0, 0);
self.trials_epic.sort = 3;
self.trials_epic.foreground = true;
self.trials_epic.hidewheninmenu = true;
self.trials_epic setshader("menu_mp_star_rating", sq_star, sq_star);
}
self.trials_epic.alpha = .8;
// Legendary tier dot
if (!isdefined(self.trials_legend)) {
self.trials_legend = newclienthudelem(self);
self.trials_legend.horzalign = "user_left";
self.trials_legend.alignx = "left";
self.trials_legend.vertalign = "user_center";
self.trials_legend.aligny = "top";
self.trials_legend.x = x + (sq_dot * 3) + (sq_dot * 6) - 1;
self.trials_legend.y = y + (sq_size / 2) + sq_dot;
self.trials_legend.color = (0, 0, 0);
self.trials_legend.sort = 3;
self.trials_legend.foreground = true;
self.trials_legend.hidewheninmenu = true;
self.trials_legend setshader("menu_mp_star_rating", sq_star, sq_star);
}
self.trials_legend.alpha = .8;
}
}
draw_reward_alert(text) {
if (!isdefined(self.trials_init))
return;
if (!isdefined(text))
text = "REWARD UPGRADED";
width = int(self.trials_height * 6.25);
height = self.trials_height;
// Reward upgrade background
if (!isdefined(self.trials_upgrade_shadow)) {
self.trials_upgrade_shadow = newclienthudelem(self);
self.trials_upgrade_shadow.horzalign = "user_center";
self.trials_upgrade_shadow.alignx = "center";
self.trials_upgrade_shadow.vertalign = "user_center";
self.trials_upgrade_shadow.aligny = "middle";
self.trials_upgrade_shadow.x = 0;
self.trials_upgrade_shadow.y = -160;
self.trials_upgrade_shadow.color = (0, 0, 0);
self.trials_upgrade_shadow.sort = 0;
self.trials_upgrade_shadow.foreground = true;
self.trials_upgrade_shadow.hidewheninmenu = true;
self.trials_upgrade_shadow setshader("scorebar_zom_1", width, height);
}
// Reward upgrade background 2
if (!isdefined(self.trials_upgrade_bg)) {
self.trials_upgrade_bg = newclienthudelem(self);
self.trials_upgrade_bg.horzalign = "user_center";
self.trials_upgrade_bg.alignx = "center";
self.trials_upgrade_bg.vertalign = "user_center";
self.trials_upgrade_bg.aligny = "middle";
self.trials_upgrade_bg.x = 0;
self.trials_upgrade_bg.y = -160;
self.trials_upgrade_bg.color = (1, 0, 0);
self.trials_upgrade_bg.sort = 1;
self.trials_upgrade_bg.foreground = true;
self.trials_upgrade_bg.hidewheninmenu = true;
self.trials_upgrade_bg setshader("scorebar_zom_1", width, height);
}
// Reward upgrade text
if (!isdefined(self.trials_upgrade)) {
self.trials_upgrade = newclienthudelem(self);
self.trials_upgrade.horzalign = "user_center";
self.trials_upgrade.alignx = "center";
self.trials_upgrade.vertalign = "user_center";
self.trials_upgrade.aligny = "middle";
self.trials_upgrade.x = 0;
self.trials_upgrade.y = -160;
self.trials_upgrade.fontscale = 1.3;
self.trials_upgrade.sort = 2;
self.trials_upgrade.foreground = true;
self.trials_upgrade.hidewheninmenu = true;
}
self.trials_upgrade settext(text);
// Animation
self playlocalsound("zmb_cha_ching");
self.trials_upgrade_shadow.alpha = 0;
self.trials_upgrade_bg.alpha = 0;
self.trials_upgrade.alpha = 0;
self.trials_upgrade_shadow fadeovertime(.5);
self.trials_upgrade_shadow.alpha = 1;
self.trials_upgrade_bg fadeovertime(.5);
self.trials_upgrade_bg.alpha = 1;
self.trials_upgrade fadeovertime(.5);
self.trials_upgrade.alpha = 1;
wait 5;
self.trials_upgrade_shadow fadeovertime(.25);
self.trials_upgrade_shadow.alpha = 0;
self.trials_upgrade_bg fadeovertime(.25);
self.trials_upgrade_bg.alpha = 0;
self.trials_upgrade fadeovertime(.25);
self.trials_upgrade.alpha = 0;
wait .25;
}
draw_trial_progress() {
if (!isdefined(self.trials_init))
return;
// Drop incoming animation call if the previous one is not completed
if (self.do_trial_progress)
return;
// Drop incoming animation call when highest trial level (legendary) is reached
if (self.trials_reward_code == "legendary")
return;
self.do_trial_progress = true;
sq_size = self.trials_height;
sq_wide = self.trials_width + sq_size;
sq_dot = self.trials_space;
sq_star = self.trials_star;
x = self.trials_x;
y = self.trials_y;
// Top gradient line
if (!isdefined(self.trials_top_bar)) {
self.trials_top_bar = newclienthudelem(self);
self.trials_top_bar.horzalign = "user_left";
self.trials_top_bar.vertalign = "user_center";
self.trials_top_bar.aligny = "top";
self.trials_top_bar.y = y - int(sq_size / 2);
self.trials_top_bar.color = self.trials_reward_color;
self.trials_top_bar.sort = 3;
self.trials_top_bar.foreground = true;
self.trials_top_bar.hidewheninmenu = true;
}
// Bottom gradient line
if (!isdefined(self.trials_bottom_bar)) {
self.trials_bottom_bar = newclienthudelem(self);
self.trials_bottom_bar.horzalign = "user_left";
self.trials_bottom_bar.vertalign = "user_center";
self.trials_bottom_bar.aligny = "bottom";
self.trials_bottom_bar.y = y + int(sq_size / 2);
self.trials_bottom_bar.color = self.trials_reward_color;
self.trials_bottom_bar.sort = 3;
self.trials_bottom_bar.foreground = true;
self.trials_bottom_bar.hidewheninmenu = true;
}
// Animation
self playlocalsound("cac_cmn_beep");
self.trials_top_bar setshader("gradient_fadein", 0, 1);
self.trials_bottom_bar setshader("gradient_fadein", 0, 1);
self.trials_top_bar.alignx = "left";
self.trials_top_bar.x = x + sq_dot;
self.trials_bottom_bar.alignx = "left";
self.trials_bottom_bar.x = x + sq_dot;
self.trials_top_bar.alpha = 1;
self.trials_bottom_bar.alpha = 1;
self.trials_top_bar scaleovertime(.25, sq_wide, 1);
self.trials_bottom_bar scaleovertime(.25, sq_wide, 1);
wait .5;
self.trials_top_bar.alignx = "right";
self.trials_bottom_bar.alignx = "right";
self.trials_top_bar.x = x + sq_dot + sq_wide;
self.trials_bottom_bar.x = x + sq_dot + sq_wide;
self.trials_top_bar scaleovertime(.25, 1, 1);
self.trials_bottom_bar scaleovertime(.25, 1, 1);
self.trials_top_bar fadeovertime(.25);
self.trials_bottom_bar fadeovertime(.25);
self.trials_top_bar.alpha = 0;
self.trials_bottom_bar.alpha = 0;
wait .25;
self.do_trial_progress = false;
}
set_trial_reward(tier) {
if (!isdefined(self.trials_init))
return;
if (isdefined(self.trials_reward_code) && self.trials_reward_code == tier)
return;
switch(tier) {
case "none":
text = "^1None";
color = array((.8, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0));
alpha = array(0, 0, 0, 0);
break;
case "common":
text = "^2Common";
color = array((0, 1, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0));
alpha = array(1, .8, .8, .8);
break;
case "rare":
text = "^4Rare";
color = array((0, .5, 1), (0, .5, 1), (0, 0, 0), (0, 0, 0));
alpha = array(1, 1, .8, .8);
break;
case "epic":
text = "^6Epic";
color = array((0.345, 0, 0.576), (0.345, 0, 0.576), (0.345, 0, 0.576), (0, 0, 0));
alpha = array(1, 1, 1, .8);
break;
case "legendary":
text = "^3Legendary";
color = array((1, 0.478, 0), (1, 0.478, 0), (1, 0.478, 0), (1, 0.478, 0));
alpha = array(1, 1, 1, 1);
break;
default:
return;
}
previous = self.trials_reward_code;
self.trials_reward_color = color[0];
self.trials_reward_code = tier;
self.trials_reward_color_code = getsubstr(text, 0, 2);
self.trials_reward_level = text;
self.trials_reward settext(text);
self.trials_reward.alpha = alpha[0];
self.trials_timer.color = color[0];
self.trials_timer_bar.color = color[0];
self.trials_top_bar.color = color[0];
self.trials_bottom_bar.color = color[0];
self.trials_common.color = color[0];
self.trials_common.alpha = alpha[0];
self.trials_rare.color = color[1];
self.trials_rare.alpha = alpha[1];
self.trials_epic.color = color[2];
self.trials_epic.alpha = alpha[2];
self.trials_legend.color = color[3];
self.trials_legend.alpha = alpha[3];
// Trigger trial challenge text overwrite or reset
if (tier == "legendary" || previous == "legendary")
set_trial_challenge(self.trials_challenge_text);
}
set_trial_challenge(text) {
if (!isdefined(self.trials_init) || !isdefined(text))
return;
self.trials_challenge_text = text;
// Overwrite trial challenge text if highest trial level (legendary) is reached
if (self.trials_reward_code == "legendary")
text = self.trials_reward_color_code + "CLAIM REWARD";
line_shift = issubstr(text, "\n") ? 6 : 0;
self.trials_challenge.y = self.trials_challenge.real_y - line_shift;
self.trials_challenge settext(text);
}
set_trial_timer(time) {
if (!isdefined(self.trials_init) || !isdefined(time))
return;
self.trials_timer settimer(time);
}
AddPlayerMagicPoints(num){
if(isdefined(self.revivetrigger)) {
return;
}
self.ReaperTrialsCurrentMagic += num;
self draw_trial_progress();
if(self.ReaperTrialsCurrentMagic >= 100)
self.ReaperTrialsCurrentMagic = 100;
if(self.ReaperTrialsCurrentMagic >= 25){
if(self.ReaperTrialsCurrentMagic >= 25 && self.ReaperTrialsCurrentMagic < 50){
if(self.trials_reward_code != "common"){
self toggle_trial_reward_hud();
self set_trial_reward("common");
self thread draw_reward_alert("REWARD AVAILABLE");
}
}
if(self.ReaperTrialsCurrentMagic >= 50 && self.ReaperTrialsCurrentMagic < 75){
if(self.trials_reward_code != "rare"){
self set_trial_reward("rare");
self thread draw_reward_alert();
}
}
if(self.ReaperTrialsCurrentMagic >= 75 && self.ReaperTrialsCurrentMagic < 100){
if(self.trials_reward_code != "epic"){
self set_trial_reward("epic");
self thread draw_reward_alert();
}
}
if(self.ReaperTrialsCurrentMagic == 100){
if(self.trials_reward_code != "legendary"){
self set_trial_reward("legendary");
self thread draw_reward_alert();
}
}
}
}
ShowToSpecific(FXOrigin,Index){
level endon("game_ended");
while(1){
if(!isdefined(self.sharedreward)) {
self SetInvisibleToAll();
self SetVisibleToPlayer( GetPlayers()[Index] );
if(isdefined(GetPlayers()[Index])){
if(isdefined(GetPlayers()[Index].ReaperTrialsCurrentMagic) && GetPlayers()[Index].ReaperTrialsCurrentMagic >= 25){
if(level.script == "zm_transit")
playfx( level._effect[ "character_fire_death_sm" ], FXOrigin);
else if(level.script == "zm_prison")
playfx(level._effect[ "fx_alcatraz_elec_chair" ],FXOrigin - (17,0,15),anglesToForward(0,0,0), anglesToUp(0,0,0));// Too Lazy
else if(level.script == "zm_buried")
playfx( level._effect[ "character_fire_death_sm" ], FXOrigin);
else if(level.script == "zm_highrise")
playfx( level._effect[ "character_fire_death_sm" ], FXOrigin);
}
}
}
wait 5;
}
}
EndGameListener() {
while(1) {
level waittill("intermission");
foreach(player in level.players) {
player.trials_show_challenge = false;
player.trials_show_reward = false;
player.trials_bg destroy();
player.trials_timer_bg destroy();
player.trials_timer_bar destroy();
player.trials_timer destroy();
player.trials_challenge destroy();
player.trials_reward destroy();
player.trials_common destroy();
player.trials_rare destroy();
player.trials_epic destroy();
player.trials_legend destroy();
}
}
}
AddReward(TrialRank, RewardModel, RewardHintname, RewardCodename, Powerup) {
if(!isdefined(level.Rewards_List))
level.Rewards_List = [];
Reward = SpawnStruct();
Reward.Rank = TrialRank;
if(isdefined(RewardModel))
Reward.Model = RewardModel;
else
Reward.Model = getweaponmodel(RewardCodename);
Reward.Hint = RewardHintname;
Reward.Name = RewardCodename;
Reward.Powerup = Powerup;
level.Rewards_List[level.Rewards_List.size] = Reward;
}
get_zone_name(key) {
// Caching and array lookup is way more efficient
if (isdefined(level.zone_names))
return level.zone_names[key];
level.zone_names = [];
switch(level.script) {
case "zm_transit":
level.zone_names["zone_pri"] = "Bus Depot";
level.zone_names["zone_pri2"] = "Bus Depot Hallway";
level.zone_names["zone_station_ext"] = "Outside Bus Depot";
level.zone_names["zone_trans_2b"] = "Road After Bus Depot";
level.zone_names["zone_trans_2"] = "Tunnel Entrance";
level.zone_names["zone_amb_tunnel"] = "Tunnel";
level.zone_names["zone_trans_3"] = "Tunnel Exit";
level.zone_names["zone_roadside_west"] = "Outside Diner";
level.zone_names["zone_gas"] = "Gas Station";
level.zone_names["zone_roadside_east"] = "Outside Garage";
level.zone_names["zone_trans_diner"] = "Road Outside Diner";
level.zone_names["zone_trans_diner2"] = "Road Outside Garage";
level.zone_names["zone_gar"] = "Garage";
level.zone_names["zone_din"] = "Diner";
level.zone_names["zone_diner_roof"] = "Diner Roof";
level.zone_names["zone_trans_4"] = "Road After Diner";
level.zone_names["zone_amb_forest"] = "Forest";
level.zone_names["zone_trans_10"] = "Outside Church";
level.zone_names["zone_town_church"] = "Upper South Town";
level.zone_names["zone_trans_5"] = "Road Before Farm";
level.zone_names["zone_far"] = "Outside Farm";
level.zone_names["zone_far_ext"] = "Farm";
level.zone_names["zone_brn"] = "Barn";
level.zone_names["zone_farm_house"] = "Farmhouse";
level.zone_names["zone_trans_6"] = "Road After Farm";
level.zone_names["zone_amb_cornfield"] = "Cornfield";
level.zone_names["zone_cornfield_prototype"] = "Nacht der Untoten";
level.zone_names["zone_trans_7"] = "Upper Road Before Power";
level.zone_names["zone_trans_pow_ext1"] = "Road Before Power";
level.zone_names["zone_pow"] = "Outside Power Station";
level.zone_names["zone_prr"] = "Power Station";
level.zone_names["zone_pcr"] = "Power Control Room";
level.zone_names["zone_pow_warehouse"] = "Warehouse";
level.zone_names["zone_trans_8"] = "Road After Power";
level.zone_names["zone_amb_power2town"] = "Cabin";
level.zone_names["zone_trans_9"] = "Road Before Town";
level.zone_names["zone_town_north"] = "North Town";
level.zone_names["zone_tow"] = "Center Town";
level.zone_names["zone_town_east"] = "East Town";
level.zone_names["zone_town_west"] = "West Town";
level.zone_names["zone_town_west2"] = "West Town 2";
level.zone_names["zone_town_south"] = "South Town";
level.zone_names["zone_bar"] = "Bar";
level.zone_names["zone_town_barber"] = "Above Barbershop";
level.zone_names["zone_ban"] = "Bank";
level.zone_names["zone_ban_vault"] = "Bank Vault";
level.zone_names["zone_tbu"] = "Laboratory";
level.zone_names["zone_trans_11"] = "Road After Town";
level.zone_names["zone_amb_bridge"] = "Bridge";
level.zone_names["zone_trans_1"] = "Road Before Bus Depot";
break;
case "zm_nuked":
level.zone_names["culdesac_yellow_zone"] = "Yellow House Cul-de-sac";
level.zone_names["culdesac_green_zone"] = "Green House Cul-de-sac";
level.zone_names["truck_zone"] = "Truck";
level.zone_names["openhouse1_f1_zone"] = "Green House Downstairs";
level.zone_names["openhouse1_f2_zone"] = "Green House Upstairs";
level.zone_names["openhouse1_backyard_zone"] = "Green House Backyard";
level.zone_names["openhouse2_f1_zone"] = "Yellow House Downstairs";
level.zone_names["openhouse2_f2_zone"] = "Yellow House Upstairs";
level.zone_names["openhouse2_backyard_zone"] = "Yellow House Backyard";
level.zone_names["ammo_door_zone"] = "Yellow House Backyard Door";
break;
case "zm_highrise":
level.zone_names["zone_green_start"] = "Green Highrise Level 3b";
level.zone_names["zone_green_escape_pod"] = "Escape Pod";
level.zone_names["zone_green_escape_pod_ground"] = "Escape Pod Shaft";
level.zone_names["zone_green_level1"] = "Green Highrise Level 3a";
level.zone_names["zone_green_level2a"] = "Green Highrise Level 2a";
level.zone_names["zone_green_level2b"] = "Green Highrise Level 2b";
level.zone_names["zone_green_level3a"] = "Green Highrise Restaurant";
level.zone_names["zone_green_level3b"] = "Green Highrise Level 1a";
level.zone_names["zone_green_level3c"] = "Green Highrise Level 1b";
level.zone_names["zone_green_level3d"] = "Green Highrise Behind Restaurant";
level.zone_names["zone_orange_level1"] = "Upper Orange Highrise Level 2";
level.zone_names["zone_orange_level2"] = "Upper Orange Highrise Level 1";
level.zone_names["zone_orange_elevator_shaft_top"] = "Elevator Shaft Level 3";
level.zone_names["zone_orange_elevator_shaft_middle_1"] = "Elevator Shaft Level 2";
level.zone_names["zone_orange_elevator_shaft_middle_2"] = "Elevator Shaft Level 1";
level.zone_names["zone_orange_elevator_shaft_bottom"] = "Elevator Shaft Bottom";
level.zone_names["zone_orange_level3a"] = "Lower Orange Highrise Level 1a";
level.zone_names["zone_orange_level3b"] = "Lower Orange Highrise Level 1b";
level.zone_names["zone_blue_level5"] = "Lower Blue Highrise Level 1";
level.zone_names["zone_blue_level4a"] = "Lower Blue Highrise Level 2a";
level.zone_names["zone_blue_level4b"] = "Lower Blue Highrise Level 2b";
level.zone_names["zone_blue_level4c"] = "Lower Blue Highrise Level 2c";
level.zone_names["zone_blue_level2a"] = "Upper Blue Highrise Level 1a";
level.zone_names["zone_blue_level2b"] = "Upper Blue Highrise Level 1b";
level.zone_names["zone_blue_level2c"] = "Upper Blue Highrise Level 1c";
level.zone_names["zone_blue_level2d"] = "Upper Blue Highrise Level 1d";
level.zone_names["zone_blue_level1a"] = "Upper Blue Highrise Level 2a";
level.zone_names["zone_blue_level1b"] = "Upper Blue Highrise Level 2b";
level.zone_names["zone_blue_level1c"] = "Upper Blue Highrise Level 2c";
break;
case "zm_prison":
level.zone_names["zone_start"] = "D-Block";
level.zone_names["zone_library"] = "Library";
level.zone_names["zone_cellblock_west"] = "Cellblock 2nd Floor";
level.zone_names["zone_cellblock_west_gondola"] = "Cellblock 3rd Floor";
level.zone_names["zone_cellblock_west_gondola_dock"] = "Cellblock Gondola";
level.zone_names["zone_cellblock_west_barber"] = "Michigan Avenue";
level.zone_names["zone_cellblock_east"] = "Times Square";
level.zone_names["zone_cafeteria"] = "Cafeteria";
level.zone_names["zone_cafeteria_end"] = "Cafeteria End";
level.zone_names["zone_infirmary"] = "Infirmary 1";
level.zone_names["zone_infirmary_roof"] = "Infirmary 2";
level.zone_names["zone_roof_infirmary"] = "Roof 1";
level.zone_names["zone_roof"] = "Roof 2";
level.zone_names["zone_cellblock_west_warden"] = "Sally Port";
level.zone_names["zone_warden_office"] = "Warden's Office";
level.zone_names["cellblock_shower"] = "Showers";
level.zone_names["zone_citadel_shower"] = "Citadel To Showers";
level.zone_names["zone_citadel"] = "Citadel";
level.zone_names["zone_citadel_warden"] = "Citadel To Warden's Office";
level.zone_names["zone_citadel_stairs"] = "Citadel Tunnels";
level.zone_names["zone_citadel_basement"] = "Citadel Basement";
level.zone_names["zone_citadel_basement_building"] = "China Alley";
level.zone_names["zone_studio"] = "Building 64";
level.zone_names["zone_dock"] = "Docks";
level.zone_names["zone_dock_puzzle"] = "Docks Gates";
level.zone_names["zone_dock_gondola"] = "Upper Docks";
level.zone_names["zone_golden_gate_bridge"] = "Golden Gate Bridge";
level.zone_names["zone_gondola_ride"] = "Gondola";
break;
case "zm_buried":
level.zone_names["zone_start"] = "Processing";
level.zone_names["zone_start_lower"] = "Lower Processing";
level.zone_names["zone_tunnels_center"] = "Center Tunnels";
level.zone_names["zone_tunnels_north"] = "Courthouse Tunnels 2";
level.zone_names["zone_tunnels_north2"] = "Courthouse Tunnels 1";
level.zone_names["zone_tunnels_south"] = "Saloon Tunnels 3";
level.zone_names["zone_tunnels_south2"] = "Saloon Tunnels 2";
level.zone_names["zone_tunnels_south3"] = "Saloon Tunnels 1";
level.zone_names["zone_street_lightwest"] = "Outside General Store & Bank";
level.zone_names["zone_street_lightwest_alley"] = "Outside General Store & Bank Alley";
level.zone_names["zone_morgue_upstairs"] = "Morgue";
level.zone_names["zone_underground_jail"] = "Jail Downstairs";
level.zone_names["zone_underground_jail2"] = "Jail Upstairs";
level.zone_names["zone_general_store"] = "General Store";
level.zone_names["zone_stables"] = "Stables";
level.zone_names["zone_street_darkwest"] = "Outside Gunsmith";
level.zone_names["zone_street_darkwest_nook"] = "Outside Gunsmith Nook";
level.zone_names["zone_gun_store"] = "Gunsmith";
level.zone_names["zone_bank"] = "Bank";
level.zone_names["zone_tunnel_gun2stables"] = "Stables To Gunsmith Tunnel 2";
level.zone_names["zone_tunnel_gun2stables2"] = "Stables To Gunsmith Tunnel";
level.zone_names["zone_street_darkeast"] = "Outside Saloon & Toy Store";
level.zone_names["zone_street_darkeast_nook"] = "Outside Saloon & Toy Store Nook";
level.zone_names["zone_underground_bar"] = "Saloon";
level.zone_names["zone_tunnel_gun2saloon"] = "Saloon To Gunsmith Tunnel";
level.zone_names["zone_toy_store"] = "Toy Store Downstairs";
level.zone_names["zone_toy_store_floor2"] = "Toy Store Upstairs";
level.zone_names["zone_toy_store_tunnel"] = "Toy Store Tunnel";
level.zone_names["zone_candy_store"] = "Candy Store Downstairs";
level.zone_names["zone_candy_store_floor2"] = "Candy Store Upstairs";
level.zone_names["zone_street_lighteast"] = "Outside Courthouse & Candy Store";
level.zone_names["zone_underground_courthouse"] = "Courthouse Downstairs";
level.zone_names["zone_underground_courthouse2"] = "Courthouse Upstairs";
level.zone_names["zone_street_fountain"] = "Fountain";
level.zone_names["zone_church_graveyard"] = "Graveyard";
level.zone_names["zone_church_main"] = "Church Downstairs";
level.zone_names["zone_church_upstairs"] = "Church Upstairs";
level.zone_names["zone_mansion_lawn"] = "Mansion Lawn";
level.zone_names["zone_mansion"] = "Mansion";
level.zone_names["zone_mansion_backyard"] = "Mansion Backyard";
level.zone_names["zone_maze"] = "Maze";
level.zone_names["zone_maze_staircase"] = "Maze Staircase";
break;
case "zm_tomb":
level.zone_names["zone_start"] = "Lower Laboratory";
level.zone_names["zone_start_a"] = "Upper Laboratory";
level.zone_names["zone_start_b"] = "Generator 1";
level.zone_names["zone_bunker_1a"] = "Generator 3 Bunker 1";
level.zone_names["zone_fire_stairs"] = "Fire Tunnel";
level.zone_names["zone_fire_stairs_1"] = "zone_fire_stairs_1";
level.zone_names["zone_bunker_1"] = "Generator 3 Bunker 2";
level.zone_names["zone_bunker_3a"] = "Generator 3";
level.zone_names["zone_bunker_3b"] = "Generator 3 Bunker 3";
level.zone_names["zone_bunker_2a"] = "Generator 2 Bunker 1";
level.zone_names["zone_bunker_2"] = "Generator 2 Bunker 2";
level.zone_names["zone_bunker_4a"] = "Generator 2";
level.zone_names["zone_bunker_4b"] = "Generator 2 Bunker 3";
level.zone_names["zone_bunker_4c"] = "Tank Station";
level.zone_names["zone_bunker_4d"] = "Above Tank Station";
level.zone_names["zone_bunker_tank_c"] = "Generator 2 Tank Route 1";
level.zone_names["zone_bunker_tank_c1"] = "Generator 2 Tank Route 2";
level.zone_names["zone_bunker_4e"] = "Generator 2 Tank Route 3";
level.zone_names["zone_bunker_tank_d"] = "Generator 2 Tank Route 4";
level.zone_names["zone_bunker_tank_d1"] = "Generator 2 Tank Route 5";
level.zone_names["zone_bunker_4f"] = "zone_bunker_4f";
level.zone_names["zone_bunker_5a"] = "Workshop Downstairs";
level.zone_names["zone_bunker_5b"] = "Workshop Upstairs";
level.zone_names["zone_nml_2a"] = "No Man's Land Walkway";
level.zone_names["zone_nml_2"] = "No Man's Land Entrance";
level.zone_names["zone_bunker_tank_e"] = "Generator 5 Tank Route 1";
level.zone_names["zone_bunker_tank_e1"] = "Generator 5 Tank Route 2";
level.zone_names["zone_bunker_tank_e2"] = "zone_bunker_tank_e2";
level.zone_names["zone_bunker_tank_f"] = "Generator 5 Tank Route 3";
level.zone_names["zone_nml_1"] = "Generator 5 Tank Route 4";
level.zone_names["zone_nml_4"] = "Generator 5 Tank Route 5";
level.zone_names["zone_nml_0"] = "Generator 5 Left Footstep";
level.zone_names["zone_nml_5"] = "Generator 5 Right Footstep Walkway";
level.zone_names["zone_nml_farm"] = "Generator 5";
level.zone_names["zone_nml_farm_1"] = "zone_nml_farm_1";
level.zone_names["zone_nml_celllar"] = "Generator 5 Cellar";
level.zone_names["zone_bolt_stairs"] = "Lightning Tunnel";
level.zone_names["zone_bolt_stairs_1"] = "zone_bolt_stairs_1";
level.zone_names["zone_nml_3"] = "No Man's Land 1st Right Footstep";
level.zone_names["zone_nml_2b"] = "No Man's Land Stairs";
level.zone_names["zone_nml_6"] = "No Man's Land Left Footstep";
level.zone_names["zone_nml_8"] = "No Man's Land 2nd Right Footstep";
level.zone_names["zone_nml_10a"] = "Generator 4 Tank Route 1";
level.zone_names["zone_nml_10"] = "Generator 4 Tank Route 2";
level.zone_names["zone_nml_7"] = "Generator 4 Tank Route 3";
level.zone_names["zone_nml_7a"] = "zone_nml_7a";
level.zone_names["zone_bunker_tank_a"] = "Generator 4 Tank Route 4";
level.zone_names["zone_bunker_tank_a1"] = "Generator 4 Tank Route 5";
level.zone_names["zone_bunker_tank_a2"] = "zone_bunker_tank_a2";
level.zone_names["zone_bunker_tank_b"] = "Generator 4 Tank Route 6";
level.zone_names["zone_nml_9"] = "Generator 4 Left Footstep";
level.zone_names["zone_nml_9a"] = "zone_nml_9a";
level.zone_names["zone_air_stairs"] = "Wind Tunnel";
level.zone_names["zone_air_stairs_1"] = "zone_air_stairs_1";
level.zone_names["zone_nml_11"] = "Generator 4";
level.zone_names["zone_nml_11a"] = "zone_nml_11a";
level.zone_names["zone_nml_12"] = "Generator 4 Right Footstep";
level.zone_names["zone_nml_12a"] = "zone_nml_12a";
level.zone_names["zone_nml_16"] = "Excavation Site Front Path";
//level.zone_names["zone_nml_16a"] = "zone_nml_16a";
level.zone_names["zone_nml_17"] = "Excavation Site Back Path";
//level.zone_names["zone_nml_17a"] = "zone_nml_17a";
level.zone_names["zone_nml_18"] = "Excavation Site Level 3";
level.zone_names["zone_nml_19"] = "Excavation Site Level 2";
level.zone_names["ug_bottom_zone"] = "Excavation Site Level 1";
level.zone_names["zone_nml_13"] = "Generator 5 To Generator 6 Path";
level.zone_names["zone_nml_14"] = "Generator 4 To Generator 6 Path";
level.zone_names["zone_nml_15"] = "Generator 6 Entrance";
//level.zone_names["zone_nml_15a"] = "zone_nml_15a";
level.zone_names["zone_village_0"] = "Generator 6 Left Footstep";
level.zone_names["zone_village_5"] = "Generator 6 Tank Route 1";
level.zone_names["zone_village_5a"] = "Generator 6 Tank Route 2";
level.zone_names["zone_village_5b"] = "Generator 6 Tank Route 3";
level.zone_names["zone_village_1"] = "Generator 6 Tank Route 4";
//level.zone_names["zone_village_1a"] = "zone_village_1a";
level.zone_names["zone_village_4b"] = "Generator 6 Tank Route 5";
level.zone_names["zone_village_4a"] = "Generator 6 Tank Route 6";
level.zone_names["zone_village_4"] = "Generator 6 Tank Route 7";
level.zone_names["zone_village_2"] = "Church";
level.zone_names["zone_village_3"] = "Generator 6 Right Footstep";
level.zone_names["zone_village_3a"] = "Generator 6";
level.zone_names["zone_village_3b"] = "zone_village_3b";
level.zone_names["zone_ice_stairs"] = "Ice Tunnel";
//level.zone_names["zone_ice_stairs_1"] = "zone_ice_stairs_1";
level.zone_names["zone_bunker_6"] = "Above Generator 3 Bunker";
level.zone_names["zone_nml_20"] = "Above No Man's Land";
level.zone_names["zone_village_6"] = "Behind Church";
//level.zone_names["zone_village_6a"] = "zone_village_6a";
level.zone_names["zone_chamber_0"] = "The Crazy Place Lightning Chamber";
level.zone_names["zone_chamber_1"] = "The Crazy Place Lightning & Ice";
level.zone_names["zone_chamber_2"] = "The Crazy Place Ice Chamber";
level.zone_names["zone_chamber_3"] = "The Crazy Place Fire & Lightning";
level.zone_names["zone_chamber_4"] = "The Crazy Place Center";
level.zone_names["zone_chamber_5"] = "The Crazy Place Ice & Wind";
level.zone_names["zone_chamber_6"] = "The Crazy Place Fire Chamber";
level.zone_names["zone_chamber_7"] = "The Crazy Place Wind & Fire";
level.zone_names["zone_chamber_8"] = "The Crazy Place Wind Chamber";
level.zone_names["zone_robot_head"] = "Robot's Head";
break;
}
return level.zone_names[key];
}