main() { maps\mp\mp_yuletide_assault_fx::main(); maps\mp\_load::main(); setcvar("r_glowbloomintensity0",".25"); setcvar("r_glowbloomintensity1",".25"); setcvar("r_glowskybleedintensity0",".5"); ambientPlay("ambient_mp_yuletide_assault"); game["allies"] = "russian"; game["axis"] = "german"; game["attackers"] = "allies"; game["defenders"] = "axis"; game["russian_soldiertype"] = "coats"; game["german_soldiertype"] = "winterlight"; // Initialize boundary system thread init_boundary_system(); } init_boundary_system() { // Define the 3 boundary points level.boundary_points = []; level.boundary_points[0] = (6029, 2200, 17); level.boundary_points[1] = (5978, 2324, 103); level.boundary_points[2] = (5951, 2403, 104); // Individual kill radii - make point 0 much larger level.boundary_kill_radii = []; level.boundary_kill_radii[0] = 90; level.boundary_kill_radii[1] = 70; level.boundary_kill_radii[2] = 70; // Warning radius level.warning_radius = 110; // Start monitoring all players thread monitor_boundaries(); } monitor_boundaries() { while(1) { players = getEntArray("player", "classname"); for(i = 0; i < players.size; i++) { player = players[i]; // Skip if not alive if(!isAlive(player)) continue; // Check if player is below z = -200 if(player.origin[2] < -200) { if(!isDefined(player.boundary_killed) || !player.boundary_killed) { player.boundary_killed = true; player thread kill_player_boundary(); } continue; } // Check distance to each boundary point should_kill = false; in_warning = false; for(j = 0; j < level.boundary_points.size; j++) { dist = distance(player.origin, level.boundary_points[j]); // Check against individual kill radius for this point if(dist < level.boundary_kill_radii[j]) { should_kill = true; break; } // Check warning zone if(dist < level.warning_radius) { in_warning = true; } } // Handle warnings and killing if(should_kill) { if(!isDefined(player.boundary_killed) || !player.boundary_killed) { player.boundary_killed = true; player thread kill_player_boundary(); } } else if(in_warning) { current_time = getTime(); if(!isDefined(player.last_warning_time) || (current_time - player.last_warning_time) > 3000) { // Show warning every 3 seconds player thread show_boundary_warning(); player.last_warning_time = current_time; } } else { // Player is safe, clear flags player.boundary_killed = undefined; player.last_warning_time = undefined; } } wait 0.1; // Check every 0.1 seconds } } show_boundary_warning() { self iPrintLnBold("^1WARNING: ^7Do not go beyond map borders!"); self iPrintLn("^7Turn back or you will be killed!"); self playSound("ui_mp_sound_menuwarning"); } kill_player_boundary() { // Don't kill if already dead if(!isAlive(self)) return; // Death message self iPrintLnBold("^1KILLED: ^7You died for trespassing map borders"); self iPrintLn("^7This prevents exploitation of map glitches"); // Kill the player self suicide(); // Clear the flag after a delay wait 2; self.boundary_killed = undefined; }