diff --git a/code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dm b/code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dm index ac09a7c2ce..9511d17e80 100644 --- a/code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dm +++ b/code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dm @@ -135,202 +135,200 @@ Initialise() /obj/machinery/jungle_controller/proc/Initialise() - set background = 1 - spawn(0) - world << "\red \b Setting up jungle, this may take a moment..." + world << "\red \b Setting up jungle, this may take a bleeding eternity..." - //crash dat shuttle - var/area/start_location = locate(/area/jungle/crash_ship_source) - var/area/clean_location = locate(/area/jungle/crash_ship_clean) - var/list/ship_locations = list(/area/jungle/crash_ship_one, /area/jungle/crash_ship_two, /area/jungle/crash_ship_three, /area/jungle/crash_ship_four) - var/area/end_location = locate( pick(ship_locations) ) - ship_locations -= end_location.type + //crash dat shuttle + var/area/start_location = locate(/area/jungle/crash_ship_source) + var/area/clean_location = locate(/area/jungle/crash_ship_clean) + var/list/ship_locations = list(/area/jungle/crash_ship_one, /area/jungle/crash_ship_two, /area/jungle/crash_ship_three, /area/jungle/crash_ship_four) + var/area/end_location = locate( pick(ship_locations) ) + ship_locations -= end_location.type - start_location.move_contents_to(end_location) - for(var/area_type in ship_locations) - var/area/cur_location = locate(area_type) - clean_location.copy_turfs_to(cur_location) + start_location.move_contents_to(end_location) + for(var/area_type in ship_locations) + var/area/cur_location = locate(area_type) + clean_location.copy_turfs_to(cur_location) - //drop some random river nodes - var/list/river_nodes = list() - var/max = rand(1,3) - var/num_spawned = 0 - while(num_spawned < max) - var/turf/unsimulated/jungle/J = locate(rand(RANDOM_LOWER_X, RANDOM_UPPER_X), rand(RANDOM_LOWER_Y, RANDOM_UPPER_Y), src.z) - if(!istype(J)) - continue - if(!J.bushes_spawn) - continue - river_nodes.Add(new /obj/effect/landmark/river_waypoint(J)) - num_spawned++ + //drop some random river nodes + var/list/river_nodes = list() + var/max = rand(1,3) + var/num_spawned = 0 + while(num_spawned < max) + var/turf/unsimulated/jungle/J = locate(rand(RANDOM_LOWER_X, RANDOM_UPPER_X), rand(RANDOM_LOWER_Y, RANDOM_UPPER_Y), src.z) + if(!istype(J)) + continue + if(!J.bushes_spawn) + continue + river_nodes.Add(new /obj/effect/landmark/river_waypoint(J)) + num_spawned++ - //make some randomly pathing rivers - for(var/obj/effect/landmark/river_waypoint/W in world) - if (W.z != src.z || W.connected) - continue + //make some randomly pathing rivers + for(var/obj/effect/landmark/river_waypoint/W in world) + if (W.z != src.z || W.connected) + continue - W.connected = 1 - var/turf/cur_turf = new /turf/unsimulated/jungle/water(get_turf(W)) - var/turf/target_turf = get_turf(pick(river_nodes)) + W.connected = 1 + var/turf/cur_turf = new /turf/unsimulated/jungle/water(get_turf(W)) + var/turf/target_turf = get_turf(pick(river_nodes)) - var/detouring = 0 - var/cur_dir = get_dir(cur_turf, target_turf) - // - while(cur_turf != target_turf) - //randomly snake around a bit - if(detouring) - if(prob(20)) - detouring = 0 - cur_dir = get_dir(cur_turf, target_turf) - else if(prob(20)) - detouring = 1 - if(prob(50)) - cur_dir = turn(cur_dir, 45) - else - cur_dir = turn(cur_dir, -45) - else - cur_dir = get_dir(cur_turf, target_turf) - - cur_turf = get_step(cur_turf, cur_dir) - - var/skip = 0 - if(!istype(cur_turf, /turf/unsimulated/jungle) || istype(cur_turf, /turf/unsimulated/jungle/rock)) + var/detouring = 0 + var/cur_dir = get_dir(cur_turf, target_turf) + // + while(cur_turf != target_turf) + //randomly snake around a bit + if(detouring) + if(prob(20)) detouring = 0 cur_dir = get_dir(cur_turf, target_turf) - cur_turf = get_step(cur_turf, cur_dir) - continue - - if(!skip) - var/turf/unsimulated/jungle/water/water_turf = new(cur_turf) - water_turf.Spread(75, rand(65, 25)) - - var/list/path_nodes = list() - - //place some ladders leading down to pre-generated temples - max = rand(2,5) - num_spawned = 0 - while(num_spawned < max) - var/turf/unsimulated/jungle/J = locate(rand(RANDOM_LOWER_X, RANDOM_UPPER_X), rand(RANDOM_LOWER_Y, RANDOM_UPPER_Y), src.z) - if(!J || !J.bushes_spawn) - continue - new /obj/effect/landmark/temple(J) - path_nodes.Add(new /obj/effect/landmark/path_waypoint(J)) - num_spawned++ - - //put a native tribe somewhere - num_spawned = 0 - while(num_spawned < 1) - var/turf/unsimulated/jungle/J = locate(rand(RANDOM_LOWER_X, RANDOM_UPPER_X), rand(RANDOM_LOWER_Y, RANDOM_UPPER_Y), src.z) - if(!J || !J.bushes_spawn) - continue - new /obj/effect/jungle_tribe_spawn(J) - path_nodes.Add(new /obj/effect/landmark/path_waypoint(J)) - num_spawned++ - - //place some random path waypoints to confuse players - max = rand(1,3) - num_spawned = 0 - while(num_spawned < max) - var/turf/unsimulated/jungle/J = locate(rand(RANDOM_LOWER_X, RANDOM_UPPER_X), rand(RANDOM_LOWER_Y, RANDOM_UPPER_Y), src.z) - if(!J || !J.bushes_spawn) - continue - path_nodes.Add(new /obj/effect/landmark/path_waypoint(J)) - num_spawned++ - - //get any path nodes placed on the map - for(var/obj/effect/landmark/path_waypoint/W in world) - if (W.z == src.z) - path_nodes.Add(W) - - //make random, connecting paths - for(var/obj/effect/landmark/path_waypoint/W in path_nodes) - if (W.connected) - continue - - W.connected = 1 - var/turf/cur_turf = get_turf(W) - path_nodes.Remove(W) - var/turf/target_turf = get_turf(pick(path_nodes)) - path_nodes.Add(W) - // - cur_turf = new /turf/unsimulated/jungle/path(cur_turf) - - var/detouring = 0 - var/cur_dir = get_dir(cur_turf, target_turf) - // - while(cur_turf != target_turf) - //randomly snake around a bit - if(detouring) - if(prob(20) || get_dist(cur_turf, target_turf) < 5) - detouring = 0 - cur_dir = get_dir(cur_turf, target_turf) - else if(prob(20) && get_dist(cur_turf, target_turf) > 5) - detouring = 1 - if(prob(50)) - cur_dir = turn(cur_dir, 45) - else - cur_dir = turn(cur_dir, -45) + else if(prob(20)) + detouring = 1 + if(prob(50)) + cur_dir = turn(cur_dir, 45) else - cur_dir = get_dir(cur_turf, target_turf) + cur_dir = turn(cur_dir, -45) + else + cur_dir = get_dir(cur_turf, target_turf) - //move a step forward + cur_turf = get_step(cur_turf, cur_dir) + + var/skip = 0 + if(!istype(cur_turf, /turf/unsimulated/jungle) || istype(cur_turf, /turf/unsimulated/jungle/rock)) + detouring = 0 + cur_dir = get_dir(cur_turf, target_turf) cur_turf = get_step(cur_turf, cur_dir) + continue - //if we're not a jungle turf, get back to what we were doing - if(!istype(cur_turf, /turf/unsimulated/jungle/)) + if(!skip) + var/turf/unsimulated/jungle/water/water_turf = new(cur_turf) + water_turf.Spread(75, rand(65, 25)) + + var/list/path_nodes = list() + + //place some ladders leading down to pre-generated temples + max = rand(2,5) + num_spawned = 0 + while(num_spawned < max) + var/turf/unsimulated/jungle/J = locate(rand(RANDOM_LOWER_X, RANDOM_UPPER_X), rand(RANDOM_LOWER_Y, RANDOM_UPPER_Y), src.z) + if(!J || !J.bushes_spawn) + continue + new /obj/effect/landmark/temple(J) + path_nodes.Add(new /obj/effect/landmark/path_waypoint(J)) + num_spawned++ + + //put a native tribe somewhere + num_spawned = 0 + while(num_spawned < 1) + var/turf/unsimulated/jungle/J = locate(rand(RANDOM_LOWER_X, RANDOM_UPPER_X), rand(RANDOM_LOWER_Y, RANDOM_UPPER_Y), src.z) + if(!J || !J.bushes_spawn) + continue + new /obj/effect/jungle_tribe_spawn(J) + path_nodes.Add(new /obj/effect/landmark/path_waypoint(J)) + num_spawned++ + + //place some random path waypoints to confuse players + max = rand(1,3) + num_spawned = 0 + while(num_spawned < max) + var/turf/unsimulated/jungle/J = locate(rand(RANDOM_LOWER_X, RANDOM_UPPER_X), rand(RANDOM_LOWER_Y, RANDOM_UPPER_Y), src.z) + if(!J || !J.bushes_spawn) + continue + path_nodes.Add(new /obj/effect/landmark/path_waypoint(J)) + num_spawned++ + + //get any path nodes placed on the map + for(var/obj/effect/landmark/path_waypoint/W in world) + if (W.z == src.z) + path_nodes.Add(W) + + //make random, connecting paths + for(var/obj/effect/landmark/path_waypoint/W in path_nodes) + if (W.connected) + continue + + W.connected = 1 + var/turf/cur_turf = get_turf(W) + path_nodes.Remove(W) + var/turf/target_turf = get_turf(pick(path_nodes)) + path_nodes.Add(W) + // + cur_turf = new /turf/unsimulated/jungle/path(cur_turf) + + var/detouring = 0 + var/cur_dir = get_dir(cur_turf, target_turf) + // + while(cur_turf != target_turf) + //randomly snake around a bit + if(detouring) + if(prob(20) || get_dist(cur_turf, target_turf) < 5) + detouring = 0 cur_dir = get_dir(cur_turf, target_turf) - cur_turf = get_step(cur_turf, cur_dir) - continue + else if(prob(20) && get_dist(cur_turf, target_turf) > 5) + detouring = 1 + if(prob(50)) + cur_dir = turn(cur_dir, 45) + else + cur_dir = turn(cur_dir, -45) + else + cur_dir = get_dir(cur_turf, target_turf) - var/turf/unsimulated/jungle/J = cur_turf - if(istype(J, /turf/unsimulated/jungle/impenetrable) || istype(J, /turf/unsimulated/jungle/water/deep)) - cur_dir = get_dir(cur_turf, target_turf) - cur_turf = get_step(cur_turf, cur_dir) - continue + //move a step forward + cur_turf = get_step(cur_turf, cur_dir) - if(!istype(J, /turf/unsimulated/jungle/water)) - J = new /turf/unsimulated/jungle/path(cur_turf) - J.Spread(PATH_SPREAD_CHANCE_START, rand(PATH_SPREAD_CHANCE_LOSS_UPPER, PATH_SPREAD_CHANCE_LOSS_LOWER)) - - //create monkey spawners - num_spawned = 0 - max = rand(3,6) - while(num_spawned < max) - var/turf/unsimulated/jungle/J = locate(rand(RANDOM_LOWER_X, RANDOM_UPPER_X), rand(RANDOM_LOWER_Y, RANDOM_UPPER_Y), src.z) - if(!J || !J.bushes_spawn) + //if we're not a jungle turf, get back to what we were doing + if(!istype(cur_turf, /turf/unsimulated/jungle/)) + cur_dir = get_dir(cur_turf, target_turf) + cur_turf = get_step(cur_turf, cur_dir) continue - animal_spawners.Add(new /obj/effect/landmark/animal_spawner/monkey(J)) - num_spawned++ - //create panther spawners - num_spawned = 0 - max = rand(6,12) - while(num_spawned < max) - var/turf/unsimulated/jungle/J = locate(rand(RANDOM_LOWER_X, RANDOM_UPPER_X), rand(RANDOM_LOWER_Y, RANDOM_UPPER_Y), src.z) - if(!J || !istype(J) || !J.bushes_spawn) + var/turf/unsimulated/jungle/J = cur_turf + if(istype(J, /turf/unsimulated/jungle/impenetrable) || istype(J, /turf/unsimulated/jungle/water/deep)) + cur_dir = get_dir(cur_turf, target_turf) + cur_turf = get_step(cur_turf, cur_dir) continue - animal_spawners.Add(new /obj/effect/landmark/animal_spawner/panther(J)) - num_spawned++ - //create snake spawners - num_spawned = 0 - max = rand(6,12) - while(num_spawned < max) - var/turf/unsimulated/jungle/J = locate(rand(RANDOM_LOWER_X, RANDOM_UPPER_X), rand(RANDOM_LOWER_Y, RANDOM_UPPER_Y), src.z) - if(!J || !istype(J) || !J.bushes_spawn) - continue - animal_spawners.Add(new /obj/effect/landmark/animal_spawner/snake(J)) - num_spawned++ + if(!istype(J, /turf/unsimulated/jungle/water)) + J = new /turf/unsimulated/jungle/path(cur_turf) + J.Spread(PATH_SPREAD_CHANCE_START, rand(PATH_SPREAD_CHANCE_LOSS_UPPER, PATH_SPREAD_CHANCE_LOSS_LOWER)) - //create parrot spawners - num_spawned = 0 - max = rand(3,6) - while(num_spawned < max) - var/turf/unsimulated/jungle/J = locate(rand(RANDOM_LOWER_X, RANDOM_UPPER_X), rand(RANDOM_LOWER_Y, RANDOM_UPPER_Y), src.z) - if(!J || !istype(J) || !J.bushes_spawn) - continue - animal_spawners.Add(new /obj/effect/landmark/animal_spawner/parrot(J)) - num_spawned++ + //create monkey spawners + num_spawned = 0 + max = rand(3,6) + while(num_spawned < max) + var/turf/unsimulated/jungle/J = locate(rand(RANDOM_LOWER_X, RANDOM_UPPER_X), rand(RANDOM_LOWER_Y, RANDOM_UPPER_Y), src.z) + if(!J || !J.bushes_spawn) + continue + animal_spawners.Add(new /obj/effect/landmark/animal_spawner/monkey(J)) + num_spawned++ + + //create panther spawners + num_spawned = 0 + max = rand(6,12) + while(num_spawned < max) + var/turf/unsimulated/jungle/J = locate(rand(RANDOM_LOWER_X, RANDOM_UPPER_X), rand(RANDOM_LOWER_Y, RANDOM_UPPER_Y), src.z) + if(!J || !istype(J) || !J.bushes_spawn) + continue + animal_spawners.Add(new /obj/effect/landmark/animal_spawner/panther(J)) + num_spawned++ + + //create snake spawners + num_spawned = 0 + max = rand(6,12) + while(num_spawned < max) + var/turf/unsimulated/jungle/J = locate(rand(RANDOM_LOWER_X, RANDOM_UPPER_X), rand(RANDOM_LOWER_Y, RANDOM_UPPER_Y), src.z) + if(!J || !istype(J) || !J.bushes_spawn) + continue + animal_spawners.Add(new /obj/effect/landmark/animal_spawner/snake(J)) + num_spawned++ + + //create parrot spawners + num_spawned = 0 + max = rand(3,6) + while(num_spawned < max) + var/turf/unsimulated/jungle/J = locate(rand(RANDOM_LOWER_X, RANDOM_UPPER_X), rand(RANDOM_LOWER_Y, RANDOM_UPPER_Y), src.z) + if(!J || !istype(J) || !J.bushes_spawn) + continue + animal_spawners.Add(new /obj/effect/landmark/animal_spawner/parrot(J)) + num_spawned++ #undef PATH_SPREAD_CHANCE_START #undef PATH_SPREAD_CHANCE_LOSS_UPPER diff --git a/code/ZAS/FEA_system.dm b/code/ZAS/FEA_system.dm index 1eadd31ed6..2db7e94dd5 100644 --- a/code/ZAS/FEA_system.dm +++ b/code/ZAS/FEA_system.dm @@ -106,7 +106,6 @@ datum var/current_cycle = 0 var/update_delay = 5 //How long between check should it try to process atmos again. var/failed_ticks = 0 //How many ticks have runtimed? - var/next_stat_check = 10 var/tick_progress = 0 @@ -137,7 +136,10 @@ datum var/start_time = world.timeofday + var/simulated_turf_count = 0 + for(var/turf/simulated/S in world) + simulated_turf_count++ if(!S.zone && !S.blocks_air) if(S.CanPass(null, S, 0, 0)) new/zone(S) @@ -145,8 +147,12 @@ datum for(var/turf/simulated/S in world) S.update_air_properties() - world << "\red \b Geometry processed in [time2text(world.timeofday-start_time, "mm:ss")] minutes!" -// spawn start() + world << {"Geometry initialized in [round(0.1*(world.timeofday-start_time),0.1)] seconds. + Total Simulated Turfs: [simulated_turf_count] + Total Zones: [zones.len] + Total Unsimulated Turfs: [world.maxx*world.maxy*world.maxz - simulated_turf_count]"} + /* + spawn start() proc/start() //Purpose: This is kicked off by the master controller, and controls the processing of all atmosphere. @@ -154,7 +160,7 @@ datum //Inputs: None. //Outputs: None. - /* + set background = 1 while(1) @@ -172,13 +178,6 @@ datum proc/tick() . = 1 //Set the default return value, for runtime detection. - tick_progress = "next_stat_check (atmos statistics)" - if(current_cycle >= next_stat_check) - var/zone/z = pick(zones) - var/log_file = file("[time2text(world.timeofday, "statistics/DD-MM-YYYY-air.txt")]") - log_file << "\"\The [get_area(pick(z.contents))]\",[z.air.oxygen],[z.air.nitrogen],[z.air.carbon_dioxide],[z.air.toxins],[z.air.temperature],[z.air.group_multiplier * z.air.volume]" - next_stat_check = current_cycle + (rand(5,7)*60) - tick_progress = "update_air_properties" if(tiles_to_update.len) //If there are tiles to update, do so. for(var/turf/simulated/T in tiles_to_update) diff --git a/code/ZAS/Plasma.dm b/code/ZAS/Plasma.dm index aa444628d9..3196d93db9 100644 --- a/code/ZAS/Plasma.dm +++ b/code/ZAS/Plasma.dm @@ -68,8 +68,9 @@ obj/item/proc if(!pl_head_protected()) if(prob(1)) suit_contamination() //Plasma can sometimes get through such an open suit. - if(istype(back,/obj/item/weapon/storage/backpack)) - back.contaminate() +//Cannot wash backpacks currently. +// if(istype(back,/obj/item/weapon/storage/backpack)) +// back.contaminate() /mob/proc/pl_effects()