main() { wait 1.0; // Start all ambient sounds using the proven method thread start_all_ambient_sounds(); // Handle all doors using getentarray (proven method) thread setup_all_doors(); // Handle teleport using the proven method from your other map thread setup_teleport(); // Open secret doors permanently at start thread open_secret_doors(); // Setup secret triggers thread setup_secret_triggers(); } start_all_ambient_sounds() { // Play main ambient sound using playloopsound on an entity ambient_ent = getent("bonus", "targetname"); if (isDefined(ambient_ent)) { ambient_ent playloopsound("sparrows_nightmare"); } else { // Fallback: create entity and play loop sound ambient_ent = spawn("script_origin", (0, 0, 200)); ambient_ent playloopsound("sparrows_nightmare"); } // Start random ghost sounds thread random_ghost_sounds(); } random_ghost_sounds() { // Use a central location for ghost sounds ghost_ent = spawn("script_origin", (0, 0, 200)); while(1) { // Wait random time between ghost sounds (15-45 seconds) wait randomfloat(15, 45); // Randomly select a ghost sound sound_type = randomint(5); if(sound_type == 0) ghost_ent PlaySound("ghost_laugh"); else if(sound_type == 1) ghost_ent PlaySound("human_scream1"); else if(sound_type == 2) ghost_ent PlaySound("human_scream2"); else if(sound_type == 3) ghost_ent PlaySound("ghost_attack"); else if(sound_type == 4) ghost_ent PlaySound("ghost_noise"); } } setup_all_doors() { // Main door (unique names - keep as is since it works) thread door1_loop(); // Left doors - use getentarray for duplicates left_triggers = getentarray("trig_door_left", "targetname"); left_doors = getentarray("door_left", "targetname"); if (isdefined(left_triggers) && isdefined(left_doors)) { for(i = 0; i < left_triggers.size; i++) { if (i < left_doors.size) left_triggers[i] thread door_single_loop(left_doors[i]); } } // Right doors - use getentarray for duplicates right_triggers = getentarray("trig_door_right", "targetname"); right_doors = getentarray("door_right", "targetname"); if (isdefined(right_triggers) && isdefined(right_doors)) { for(i = 0; i < right_triggers.size; i++) { if (i < right_doors.size) right_triggers[i] thread door_single_loop(right_doors[i]); } } } door1_loop() { trigger = getent("trig_door1", "targetname"); door_a = getent("door1_a", "targetname"); door_b = getent("door1_b", "targetname"); if (!isDefined(trigger)) return; while(1) { trigger waittill("trigger", player); // Play door knock sound when triggered trigger PlaySound("door_knock"); if (isDefined(door_a)) { door_a moveTo(door_a.origin + (0, 0, 120), 1.0); door_a PlaySound("door_creak"); } if (isDefined(door_b)) { door_b moveTo(door_b.origin + (0, 0, 120), 1.0); door_b PlaySound("wood_creak"); } // Play random spooky sound 5 seconds after door opens thread play_door_area_sound(door_a.origin); wait 5.0; if (isDefined(door_a)) { door_a moveTo(door_a.origin - (0, 0, 120), 1.0); door_a PlaySound("door_creak"); } if (isDefined(door_b)) { door_b moveTo(door_b.origin - (0, 0, 120), 1.0); door_b PlaySound("wood_creak"); } } } door_single_loop(door) { while(1) { self waittill("trigger", player); // Play door knock sound when triggered self PlaySound("door_knock"); door moveTo(door.origin + (0, 0, 120), 1.0); door PlaySound("door_creak"); // Play random spooky sound 5 seconds after door opens thread play_door_area_sound(door.origin); wait 5.0; door moveTo(door.origin - (0, 0, 120), 1.0); door PlaySound("wood_creak"); } } play_door_area_sound(door_origin) { // Wait 5 seconds after door opens wait 5.0; // Create sound entity at door location sound_ent = spawn("script_origin", door_origin); // Randomly select a spooky sound to play near the door area sound_type = randomint(5); if(sound_type == 0) sound_ent PlaySound("ghost_laugh"); else if(sound_type == 1) sound_ent PlaySound("human_scream1"); else if(sound_type == 2) sound_ent PlaySound("human_scream2"); else if(sound_type == 3) sound_ent PlaySound("ghost_attack"); else if(sound_type == 4) sound_ent PlaySound("ghost_noise"); // Wait for sound to play then remove entity wait 3.0; sound_ent delete(); } setup_teleport() { teleporters = getentarray("teleport", "targetname"); if(isdefined(teleporters)) { for(i = 0; i < teleporters.size; i++) teleporters[i] thread transporter(); } } transporter() { while(true) { self waittill("trigger", player); bonus = getent("bonus", "targetname"); if(isdefined(bonus)) { // Play teleport sequence sounds player PlaySound("sparrows_nightmare"); wait 0.1; player PlaySound("human_scream1"); wait 0.2; player setOrigin(bonus.origin); player setPlayerAngles(bonus.angles); wait 0.1; player PlaySound("gorilla_yell"); } } } open_secret_doors() { wait 3.0; // Wait a bit after map start // Open secret doors permanently secret_doors = getentarray("secretdoor1", "targetname"); if(isdefined(secret_doors)) { for(i = 0; i < secret_doors.size; i++) { secret_doors[i] moveTo(secret_doors[i].origin + (0, 0, 150), 2.0); secret_doors[i] PlaySound("ghost_attack"); wait 0.5; } } secret_doors2 = getentarray("secretdoor2", "targetname"); if(isdefined(secret_doors2)) { for(i = 0; i < secret_doors2.size; i++) { secret_doors2[i] moveTo(secret_doors2[i].origin + (0, 0, 150), 2.0); secret_doors2[i] PlaySound("ghost_attack"); wait 0.5; } } } setup_secret_triggers() { // Setup damage triggers for secrets secret_triggers = getentarray("trig_secret1", "targetname"); if(isdefined(secret_triggers)) { for(i = 0; i < secret_triggers.size; i++) secret_triggers[i] thread secret_trigger_function(); } secret_door_triggers = getentarray("trig_secretdoor1", "targetname"); if(isdefined(secret_door_triggers)) { for(i = 0; i < secret_door_triggers.size; i++) secret_door_triggers[i] thread secret_door_trigger_function(); } // Setup secret detection trigger detect_triggers = getentarray("trig_detectsecret1", "targetname"); if(isdefined(detect_triggers)) { for(i = 0; i < detect_triggers.size; i++) detect_triggers[i] thread detect_secret_function(); } } secret_trigger_function() { self waittill("trigger", player); // Play ghost sounds when secret area discovered player PlaySound("ghost_laugh"); wait 0.5; player PlaySound("ghost_noise"); // Remove trigger after use self delete(); } secret_door_trigger_function() { self waittill("trigger", player); // Play spooky sounds when secret door triggered player PlaySound("human_scream2"); wait 0.3; player PlaySound("gorilla_grunt"); // Remove trigger after use self delete(); } detect_secret_function() { self waittill("trigger", player); // Play sound when secret is detected player PlaySound("ghost_attack"); // Remove trigger after use self delete(); }