From ca98c642c7236cfb9e64ae64f05477328916cffb Mon Sep 17 00:00:00 2001 From: Heroman Date: Tue, 9 Nov 2021 05:50:16 +1000 Subject: [PATCH 01/26] Adds cooking oil, replaces usages of corn oil --- code/modules/economy/vending_machines.dm | 4 +-- code/modules/food/food/condiment.dm | 13 ++++++-- code/modules/food/food/snacks.dm | 2 +- .../food/kitchen/cooking_machines/fryer.dm | 30 +++++++++---------- code/modules/food/recipes_microwave.dm | 19 +++++++++++- .../machinery/dispenser/reagent_tank.dm | 2 +- .../reagents/reactions/instant/drinks.dm | 10 +++---- .../reagents/reactions/instant/food.dm | 18 ++++++++++- code/modules/reagents/reagents/food_drinks.dm | 6 ++++ 9 files changed, 75 insertions(+), 29 deletions(-) diff --git a/code/modules/economy/vending_machines.dm b/code/modules/economy/vending_machines.dm index f3680e13e73..0228a4c87b0 100644 --- a/code/modules/economy/vending_machines.dm +++ b/code/modules/economy/vending_machines.dm @@ -57,7 +57,7 @@ /obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/cognac = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/grenadine = 5, - /obj/item/weapon/reagent_containers/food/condiment/cornoil = 5, + /obj/item/weapon/reagent_containers/food/condiment/cookingoil = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/peppermintschnapps = 5, @@ -587,7 +587,7 @@ icon_state = "dinnerware" products = list( /obj/item/weapon/reagent_containers/food/condiment/yeast = 5, - /obj/item/weapon/reagent_containers/food/condiment/cornoil = 5, + /obj/item/weapon/reagent_containers/food/condiment/cookingoil = 5, /obj/item/weapon/tray = 8, /obj/item/weapon/material/kitchen/utensil/fork = 6, /obj/item/weapon/material/knife/plastic = 6, diff --git a/code/modules/food/food/condiment.dm b/code/modules/food/food/condiment.dm index abf4f89b373..5b137957db7 100644 --- a/code/modules/food/food/condiment.dm +++ b/code/modules/food/food/condiment.dm @@ -101,9 +101,9 @@ desc = "Often used to flavor food or make people sneeze." icon_state = "peppermillsmall" center_of_mass = list("x"=17, "y"=11) - if("cornoil") - name = "Corn Oil" - desc = "A delicious oil used in cooking. Made from corn." + if("cookingoil") + name = "Cooking Oil" + desc = "A delicious oil used in cooking. General purpose." icon_state = "oliveoil" center_of_mass = list("x"=16, "y"=6) if("sugar") @@ -175,6 +175,13 @@ . = ..() reagents.add_reagent("capsaicin", 50) +/obj/item/weapon/reagent_containers/food/condiment/cookingoil + name = "Cooking Oil" + +/obj/item/weapon/reagent_containers/food/condiment/cookingoil/Initialize() + . = ..() + reagents.add_reagent("cookingoil", 50) + /obj/item/weapon/reagent_containers/food/condiment/cornoil name = "Corn Oil" diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index 8e87f8d71d0..51ec3d82e65 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -3361,7 +3361,7 @@ . = ..() reagents.add_reagent("blackpepper", 1) reagents.add_reagent("sodiumchloride", 1) - reagents.add_reagent("cornoil", 1) + reagents.add_reagent("cookingoil", 1) /obj/item/weapon/reagent_containers/food/snacks/turkeyslice name = "turkey drumstick" diff --git a/code/modules/food/kitchen/cooking_machines/fryer.dm b/code/modules/food/kitchen/cooking_machines/fryer.dm index 6c2e0d9b71c..bcaad4e6939 100644 --- a/code/modules/food/kitchen/cooking_machines/fryer.dm +++ b/code/modules/food/kitchen/cooking_machines/fryer.dm @@ -13,13 +13,13 @@ appliancetype = FRYER active_power_usage = 12 KILOWATTS heating_power = 12 KILOWATTS - + light_y = 15 - + min_temp = 140 + T0C // Same as above, increasing this to just under 2x to make the % increase on efficiency not quite so painful as it would be at 80. optimal_temp = 400 + T0C // Increasing this to be 2x Oven to allow for a much higher/realistic frying temperatures. Doesn't really do anything but make heating the fryer take a bit longer. optimal_power = 0.95 // .35 higher than the default to give fryers faster cooking speed. - + idle_power_usage = 3.6 KILOWATTS // Power used to maintain temperature once it's heated. // Going with 25% of the active power. This is a somewhat arbitrary value. @@ -33,11 +33,11 @@ var/datum/reagents/oil var/optimal_oil = 9000 //90 litres of cooking oil - + /obj/machinery/appliance/cooker/fryer/Initialize() . = ..() fry_loop = new(list(src), FALSE) - + oil = new/datum/reagents(optimal_oil * 1.25, src) var/variance = rand()*0.15 // Fryer is always a little below full, but its usually negligible @@ -45,18 +45,18 @@ if(prob(20)) // Sometimes the fryer will start with much less than full oil, significantly impacting efficiency until filled variance = rand()*0.5 - oil.add_reagent("cornoil", optimal_oil*(1 - variance)) + oil.add_reagent("cookingoil", optimal_oil*(1 - variance)) /obj/machinery/appliance/cooker/fryer/Destroy() QDEL_NULL(fry_loop) QDEL_NULL(oil) return ..() - + /obj/machinery/appliance/cooker/fryer/examine(var/mob/user) . = ..() if(Adjacent(user)) to_chat(user, "Oil Level: [oil.total_volume]/[optimal_oil]") - + /obj/machinery/appliance/cooker/fryer/update_icon() // We add our own version of the proc to use the special fryer double-lights. cut_overlays() var/image/light @@ -69,7 +69,7 @@ light.pixel_x = light_x light.pixel_y = light_y add_overlay(light) - + /obj/machinery/appliance/cooker/fryer/heat_up() if (..()) //Set temperature of oil reagent @@ -102,7 +102,7 @@ cooking_power *= oil_efficiency - + /obj/machinery/appliance/cooker/fryer/update_icon() if(!stat) ..() @@ -119,7 +119,7 @@ if(fry_loop) fry_loop.stop(src) ..() - + //Fryer gradually infuses any cooked food with oil. Moar calories //This causes a slow drop in oil levels, encouraging refill after extended use /obj/machinery/appliance/cooker/fryer/do_cooking_tick(var/datum/cooking_item/CI) @@ -177,13 +177,13 @@ return // user.visible_message("\The [user] starts pushing \the [victim] into \the [src]!") - + //Removed delay on this action in favour of a cooldown after it //If you can lure someone close to the fryer and grab them then you deserve success. //And a delay on this kind of niche action just ensures it never happens //Cooldown ensures it can't be spammed to instakill someone user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN*3) - + fry_loop.start(src) if(!do_mob(user, victim, 20)) @@ -239,9 +239,9 @@ //Coat the victim in some oil oil.trans_to(victim, 40) - + fry_loop.stop() - + /obj/machinery/appliance/cooker/fryer/attackby(var/obj/item/I, var/mob/user) if(istype(I, /obj/item/weapon/reagent_containers/glass) && I.reagents) if (I.reagents.total_volume <= 0 && oil) diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index c909c29fc51..34f4146159c 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -522,13 +522,20 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/cutlet -/datum/recipe/roastedsunflowerseeds +/datum/recipe/roastedcornsunflowerseeds reagents = list("sodiumchloride" = 1, "cornoil" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/rawsunflower ) result = /obj/item/weapon/reagent_containers/food/snacks/roastedsunflower +/datum/recipe/roastedsunflowerseeds + reagents = list("sodiumchloride" = 1, "cookingoil" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/rawsunflower + ) + result = /obj/item/weapon/reagent_containers/food/snacks/roastedsunflower + /datum/recipe/roastedpeanutsunflowerseeds reagents = list("sodiumchloride" = 1, "peanutoil" = 1) items = list( @@ -537,10 +544,20 @@ I said no! result = /obj/item/weapon/reagent_containers/food/snacks/roastedsunflower /datum/recipe/roastedpeanuts + fruit = list("peanut" = 2) + reagents = list("sodiumchloride" = 2, "cookingoil" = 1) + result = /obj/item/weapon/reagent_containers/food/snacks/roastedpeanuts + +/datum/recipe/roastedpeanutscorn fruit = list("peanut" = 2) reagents = list("sodiumchloride" = 2, "cornoil" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/roastedpeanuts +/datum/recipe/roastedpeanutspeanut + fruit = list("peanut" = 2) + reagents = list("sodiumchloride" = 2, "peanutoil" = 1) + result = /obj/item/weapon/reagent_containers/food/snacks/roastedpeanuts + /datum/recipe/mint reagents = list("sugar" = 5, "frostoil" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/mint diff --git a/code/modules/reagents/machinery/dispenser/reagent_tank.dm b/code/modules/reagents/machinery/dispenser/reagent_tank.dm index cfa809b2afe..097ee924e97 100644 --- a/code/modules/reagents/machinery/dispenser/reagent_tank.dm +++ b/code/modules/reagents/machinery/dispenser/reagent_tank.dm @@ -461,7 +461,7 @@ /obj/structure/reagent_dispensers/cookingoil/New() ..() - reagents.add_reagent("cornoil",5000) + reagents.add_reagent("cookingoil",5000) /obj/structure/reagent_dispensers/cookingoil/bullet_act(var/obj/item/projectile/Proj) if(Proj.get_structure_damage()) diff --git a/code/modules/reagents/reactions/instant/drinks.dm b/code/modules/reagents/reactions/instant/drinks.dm index efb58fe90c3..abd16b22797 100644 --- a/code/modules/reagents/reactions/instant/drinks.dm +++ b/code/modules/reagents/reactions/instant/drinks.dm @@ -141,7 +141,7 @@ name = "Space Beer" id = "spacebeer" result = "beer" - required_reagents = list("cornoil" = 10) + required_reagents = list("cornoil" = 5, "flour" = 5) catalysts = list("enzyme" = 5) result_amount = 10 @@ -907,7 +907,7 @@ name = "Debugger" id = "debugger" result = "debugger" - required_reagents = list("fuel" = 1, "sugar" = 2, "cornoil" = 2) + required_reagents = list("fuel" = 1, "sugar" = 2, "cookingoil" = 2) result_amount = 5 /decl/chemical_reaction/instant/drinks/spacersbrew @@ -1205,14 +1205,14 @@ name = "Oil Slick" id = "oilslick" result = "oilslick" - required_reagents = list("cornoil" = 2, "honey" = 1) + required_reagents = list("cookingoil" = 2, "honey" = 1) result_amount = 3 /decl/chemical_reaction/instant/drinks/slimeslam name = "Slick Slime Slammer" id = "slimeslammer" result = "slimeslammer" - required_reagents = list("cornoil" = 2, "peanutbutter" = 1) + required_reagents = list("cookingoil" = 2, "peanutbutter" = 1) result_amount = 3 /decl/chemical_reaction/instant/drinks/virginsexonthebeach @@ -1254,7 +1254,7 @@ name = "Soda Oil" id = "sodaoil" result = "sodaoil" - required_reagents = list("cornoil" = 4, "sodawater" = 1, "carbon" = 1, "tricordrazine" = 1) + required_reagents = list("cookingoil" = 4, "sodawater" = 1, "carbon" = 1, "tricordrazine" = 1) result_amount = 6 /decl/chemical_reaction/instant/drinks/fusionnaire diff --git a/code/modules/reagents/reactions/instant/food.dm b/code/modules/reagents/reactions/instant/food.dm index 952af8014b4..da16f251734 100644 --- a/code/modules/reagents/reactions/instant/food.dm +++ b/code/modules/reagents/reactions/instant/food.dm @@ -52,6 +52,22 @@ new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location) return +/decl/chemical_reaction/instant/food/cookingoilcorn + name = "Cooking Oil" + id = "cookingoilcorn" + result = "cookingoil" + required_reagents = list("cornoil" = 10) + catalysts = list("enzyme" = 5) + result_amount = 10 + +/decl/chemical_reaction/instant/food/cookingoilpeanut + name = "Cooking Oil" + id = "cookingoilpeanut" + result = "cookingoil" + required_reagents = list("peanutoil" = 10) + catalysts = list("enzyme" = 5) + result_amount = 10 + /decl/chemical_reaction/instant/food/soysauce name = "Soy Sauce" id = "soysauce" @@ -85,7 +101,7 @@ name = "mayonnaise" id = "mayo" result = "mayo" - required_reagents = list("egg" = 9, "cornoil" = 5, "lemonjuice" = 5, "sodiumchloride" = 1) + required_reagents = list("egg" = 9, "cookingoil" = 5, "lemonjuice" = 5, "sodiumchloride" = 1) result_amount = 15 /decl/chemical_reaction/instant/food/cheesewheel diff --git a/code/modules/reagents/reagents/food_drinks.dm b/code/modules/reagents/reagents/food_drinks.dm index 1ddc24bfc93..8de9abd0b35 100644 --- a/code/modules/reagents/reagents/food_drinks.dm +++ b/code/modules/reagents/reagents/food_drinks.dm @@ -234,6 +234,12 @@ to_chat(M, "Searing hot oil burns you, wash it off quick!") lastburnmessage = world.time +/datum/reagent/nutriment/triglyceride/oil/cooking + name = "Cooking Oil" + id = "cookingoil" + description = "A general-purpose cooking oil." + reagent_state = LIQUID + /datum/reagent/nutriment/triglyceride/oil/corn name = "Corn Oil" id = "cornoil" From d1771b1e1dda355652ec8356497f8d3430c8ef76 Mon Sep 17 00:00:00 2001 From: Verkister Date: Sat, 13 Nov 2021 14:51:27 +0200 Subject: [PATCH 02/26] Adds vorepanel save doublecheck for non-slot chars Makes the vorepanel save button also do the double check it gives for simplemobs when the user is playing a character whose real_name doesn't match their client prefs, such as during body swap shenanigans etc. --- code/modules/vore/eating/vorepanel_vr.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index eebcb40214f..73e2601d138 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -304,7 +304,7 @@ return set_attr(usr, params) if("saveprefs") - if(!ishuman(host) && !issilicon(host)) + if(host.real_name != host.client.prefs.real_name || !ishuman(host) && !issilicon(host)) var/choice = tgui_alert(usr, "Warning: Saving your vore panel while playing what is very-likely not your normal character will overwrite whatever character you have loaded in character setup. Maybe this is your 'playing a simple mob' slot, though. Are you SURE you want to overwrite your current slot with these vore bellies?", "WARNING!", list("No, abort!", "Yes, save.")) if(choice != "Yes, save.") return TRUE From 675313a91b437e46128e0418d359eb77900b55c2 Mon Sep 17 00:00:00 2001 From: Heroman Date: Sun, 14 Nov 2021 09:10:07 +1000 Subject: [PATCH 03/26] Adds facility_type map var for the announcement messages --- code/modules/events/aurora_caelus.dm | 6 +++--- code/modules/events/ian_storm_vr.dm | 2 +- code/modules/events/prison_break.dm | 2 +- code/modules/events/radiation_storm.dm | 4 ++-- code/modules/events/rogue_drones.dm | 2 +- code/modules/events/solar_storm.dm | 6 +++--- code/modules/events/supply_demand_vr.dm | 2 +- code/modules/events/wallrot.dm | 2 +- code/modules/events/wormholes.dm | 2 +- maps/stellardelight/stellar_delight_defines.dm | 1 + maps/tether/tether_defines.dm | 1 + maps/~map_system/maps.dm | 1 + 12 files changed, 17 insertions(+), 14 deletions(-) diff --git a/code/modules/events/aurora_caelus.dm b/code/modules/events/aurora_caelus.dm index 2e4d9d84cf9..0af166fe230 100644 --- a/code/modules/events/aurora_caelus.dm +++ b/code/modules/events/aurora_caelus.dm @@ -5,13 +5,13 @@ endWhen = 126 /datum/event/aurora_caelus/announce() - command_announcement.Announce("[station_name()]: A harmless cloud of ions is approaching your station, and will exhaust their energy battering the hull. \ + command_announcement.Announce("[station_name()]: A harmless cloud of ions is approaching your [using_map.facility_type], and will exhaust their energy battering the hull. \ Nanotrasen has approved a short break for all employees to relax and observe this very rare event. \ During this time, starlight will be bright but gentle, shifting between quiet green and blue colors. \ Any staff who would like to view these lights for themselves may proceed to the area nearest to them with viewing ports to open space. \ You will have approximately two minutes before the ions begin to reach the hull. \ We hope you enjoy the lights.", "Nanotrasen Meteorology Division", new_sound = 'sound/AI/aurora.ogg') //VOREStation Edit - + /datum/event/aurora_caelus/start() affecting_z -= global.using_map.sealed_levels // Space levels only please! for(var/mob/M in player_list) @@ -31,6 +31,6 @@ Please return to your workplace and continue work as normal. \ Have a pleasant shift, [station_name()], and thank you for watching with us.", "Nanotrasen Meteorology Division", new_sound = 'sound/AI/aurora_end.ogg') //VOREStation Edit ..() - + /datum/event/aurora_caelus/overmap/announce() return diff --git a/code/modules/events/ian_storm_vr.dm b/code/modules/events/ian_storm_vr.dm index 8e654cff437..dc9aee617d4 100644 --- a/code/modules/events/ian_storm_vr.dm +++ b/code/modules/events/ian_storm_vr.dm @@ -4,7 +4,7 @@ endWhen = 3 /datum/event/ianstorm/announce() - command_announcement.Announce("It has come to our attention that the station passed through an ion storm. Please monitor all electronic equipment for malfunctions.", "Anomaly Alert", 'sound/AI/ian_storm.ogg') + command_announcement.Announce("It has come to our attention that the [using_map.facility_type] passed through an ion storm. Please monitor all electronic equipment for malfunctions.", "Anomaly Alert", 'sound/AI/ian_storm.ogg') spawn(7 SECONDS) command_announcement.Announce("Wait. No, thats wrong. The station passed through an IAN storm!.", "Ian Alert") diff --git a/code/modules/events/prison_break.dm b/code/modules/events/prison_break.dm index f2675a0ede1..2575873aae2 100644 --- a/code/modules/events/prison_break.dm +++ b/code/modules/events/prison_break.dm @@ -37,7 +37,7 @@ /datum/event/prison_break/announce() if(areas && areas.len > 0) - command_announcement.Announce("[pick("Gr3y.T1d3 virus","Malignant trojan")] detected in [station_name()] [(eventDept == "Security")? "imprisonment":"containment"] subroutines. Secure any compromised areas immediately. Station AI involvement is recommended.", "[eventDept] Alert") + command_announcement.Announce("[pick("Gr3y.T1d3 virus","Malignant trojan")] detected in [station_name()] [(eventDept == "Security")? "imprisonment":"containment"] subroutines. Secure any compromised areas immediately. Involvement of [using_map.facility_type] AI is recommended.", "[eventDept] Alert") /datum/event/prison_break/start() diff --git a/code/modules/events/radiation_storm.dm b/code/modules/events/radiation_storm.dm index 13f853dd3c2..a8668e561a4 100644 --- a/code/modules/events/radiation_storm.dm +++ b/code/modules/events/radiation_storm.dm @@ -16,7 +16,7 @@ /datum/event/radiation_storm/tick() if(activeFor == enterBelt) - command_announcement.Announce("The station has entered the radiation belt. Please remain in a sheltered area until we have passed the radiation belt.", "Anomaly Alert") + command_announcement.Announce("The [using_map.facility_type] has entered the radiation belt. Please remain in a sheltered area until we have passed the radiation belt.", "Anomaly Alert") radiate() if(activeFor >= enterBelt && activeFor <= leaveBelt) @@ -27,7 +27,7 @@ radiate() else if(activeFor == leaveBelt) - command_announcement.Announce("The station has passed the radiation belt. Please allow for up to one minute while radiation levels dissipate, and report to medbay if you experience any unusual symptoms. Maintenance will lose all access again shortly.", "Anomaly Alert") + command_announcement.Announce("The [using_map.facility_type] has passed the radiation belt. Please allow for up to one minute while radiation levels dissipate, and report to medbay if you experience any unusual symptoms. Maintenance will lose all access again shortly.", "Anomaly Alert") /datum/event/radiation_storm/proc/radiate() var/radiation_level = rand(15, 35) for(var/z in using_map.station_levels) diff --git a/code/modules/events/rogue_drones.dm b/code/modules/events/rogue_drones.dm index f6ac58b1e41..b7e9f37552a 100644 --- a/code/modules/events/rogue_drones.dm +++ b/code/modules/events/rogue_drones.dm @@ -35,7 +35,7 @@ if(4) msg = "A passing derelict ship's drone defense systems have just activated. If any are sighted in the area, use caution." if(5) - msg = "We're detecting a swarm of small objects approaching your station. Most likely a bunch of drones. Please exercise caution if you see any." + msg = "We're detecting a swarm of small objects approaching your [using_map.facility_type]. Most likely a bunch of drones. Please exercise caution if you see any." //VOREStation Edit End command_announcement.Announce(msg, "Rogue drone alert") diff --git a/code/modules/events/solar_storm.dm b/code/modules/events/solar_storm.dm index a8d4b92a3c0..33c2c477edf 100644 --- a/code/modules/events/solar_storm.dm +++ b/code/modules/events/solar_storm.dm @@ -9,7 +9,7 @@ endWhen = startWhen + rand(30,90) + rand(30,90) //2-6 minute duration /datum/event/solar_storm/announce() - command_announcement.Announce("A solar storm has been detected approaching \the [station_name()]. Please halt all EVA activites immediately and return to the interior of the station.", "Anomaly Alert", new_sound = 'sound/AI/radiation.ogg') + command_announcement.Announce("A solar storm has been detected approaching \the [station_name()]. Please halt all EVA activites immediately and return to the interior of the [using_map.facility_type].", "Anomaly Alert", new_sound = 'sound/AI/radiation.ogg') adjust_solar_output(1.5) /datum/event/solar_storm/proc/adjust_solar_output(var/mult = 1) @@ -18,7 +18,7 @@ /datum/event/solar_storm/start() - command_announcement.Announce("The solar storm has reached the station. Please refrain from EVA and remain inside the station until it has passed.", "Anomaly Alert") + command_announcement.Announce("The solar storm has reached the [using_map.facility_type]. Please refrain from EVA and remain inside the station until it has passed.", "Anomaly Alert") adjust_solar_output(5) @@ -40,7 +40,7 @@ L.rad_act(rand(15, 30)) /datum/event/solar_storm/end() - command_announcement.Announce("The solar storm has passed the station. It is now safe to resume EVA activities. Please report to medbay if you experience any unusual symptoms. ", "Anomaly Alert") + command_announcement.Announce("The solar storm has passed the [using_map.facility_type]. It is now safe to resume EVA activities. Please report to medbay if you experience any unusual symptoms. ", "Anomaly Alert") adjust_solar_output() diff --git a/code/modules/events/supply_demand_vr.dm b/code/modules/events/supply_demand_vr.dm index 6e229e1b483..f61d4744c44 100644 --- a/code/modules/events/supply_demand_vr.dm +++ b/code/modules/events/supply_demand_vr.dm @@ -63,7 +63,7 @@ send_console_message(message, dpt); // Also announce over main comms so people know to look - command_announcement.Announce("An order for the station to deliver supplies to [command_name()] has been delivered to all supply Request Consoles", my_department) + command_announcement.Announce("An order for the [using_map.facility_type] to deliver supplies to [command_name()] has been delivered to all supply Request Consoles", my_department) /datum/event/supply_demand/tick() if(required_items.len == 0) diff --git a/code/modules/events/wallrot.dm b/code/modules/events/wallrot.dm index e09cc50d2f5..311003a05ea 100644 --- a/code/modules/events/wallrot.dm +++ b/code/modules/events/wallrot.dm @@ -15,7 +15,7 @@ /datum/event/wallrot/announce() if(center) - command_announcement.Announce("Harmful fungi detected on \the [station_name()] nearby [center.loc.name]. Station structures may be contaminated.", "Biohazard Alert") + command_announcement.Announce("Harmful fungi detected on \the [station_name()] and [using_map.facility_type] structures nearby [center.loc.name] may be contaminated.", "Biohazard Alert") /datum/event/wallrot/start() spawn() diff --git a/code/modules/events/wormholes.dm b/code/modules/events/wormholes.dm index a9581341c5d..3ff2cf6b7b3 100644 --- a/code/modules/events/wormholes.dm +++ b/code/modules/events/wormholes.dm @@ -6,4 +6,4 @@ wormhole_event() /datum/event/wormholes/end() - command_announcement.Announce("There are no more space-time anomalies detected on the station.", "Anomaly Alert") + command_announcement.Announce("There are no more space-time anomalies detected on the [using_map.facility_type].", "Anomaly Alert") diff --git a/maps/stellardelight/stellar_delight_defines.dm b/maps/stellardelight/stellar_delight_defines.dm index 8e3ac822f66..fdcba1a49aa 100644 --- a/maps/stellardelight/stellar_delight_defines.dm +++ b/maps/stellardelight/stellar_delight_defines.dm @@ -54,6 +54,7 @@ */ station_name = "NRV Stellar Delight" station_short = "Stellar Delight" + facility_type = "ship" dock_name = "Virgo-3B Colony" dock_type = "surface" boss_name = "Central Command" diff --git a/maps/tether/tether_defines.dm b/maps/tether/tether_defines.dm index 3b6e851daf9..9e8f0004d46 100644 --- a/maps/tether/tether_defines.dm +++ b/maps/tether/tether_defines.dm @@ -68,6 +68,7 @@ station_name = "NSB Adephagia" station_short = "Tether" + facility_type = "station" dock_name = "Virgo-3B Colony" dock_type = "surface" boss_name = "Central Command" diff --git a/maps/~map_system/maps.dm b/maps/~map_system/maps.dm index 48a8963e367..3b23df5507c 100644 --- a/maps/~map_system/maps.dm +++ b/maps/~map_system/maps.dm @@ -81,6 +81,7 @@ var/list/all_maps = list() var/station_name = "BAD Station" var/station_short = "Baddy" + var/facility_type = "facility" var/dock_name = "THE PirateBay" var/dock_type = "station" //VOREStation Edit - for a list of valid types see the switch block in air_traffic.dm at line 148 var/boss_name = "Captain Roger" From 8a450d3d249e360d61878c8fd7a9be9e91b05af1 Mon Sep 17 00:00:00 2001 From: Heroman Date: Sun, 14 Nov 2021 09:44:36 +1000 Subject: [PATCH 04/26] Another attempt to curb the accursed active edges on Virgo 4 --- maps/expedition_vr/beach/submaps/BlastMine1.dmm | 2 +- maps/expedition_vr/beach/submaps/SupplyDrop1.dmm | 2 +- maps/expedition_vr/beach/submaps/SwordCave.dmm | 2 +- maps/expedition_vr/beach/submaps/deadspy.dmm | 2 +- maps/expedition_vr/beach/submaps/excavation1.dmm | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/maps/expedition_vr/beach/submaps/BlastMine1.dmm b/maps/expedition_vr/beach/submaps/BlastMine1.dmm index 388018e9402..ca21c8d481f 100644 --- a/maps/expedition_vr/beach/submaps/BlastMine1.dmm +++ b/maps/expedition_vr/beach/submaps/BlastMine1.dmm @@ -1,4 +1,4 @@ -"a" = (/turf/simulated/mineral,/area/submap/cave/BlastMine1) +"a" = (/turf/simulated/mineral/cave,/area/submap/cave/BlastMine1) "b" = (/turf/simulated/mineral/floor/ignore_mapgen/cave,/area/submap/cave/BlastMine1) "c" = (/obj/structure/sign/warning/bomb_range,/turf/simulated/wall/sandstone,/area/submap/cave/BlastMine1) "d" = (/obj/structure/table/rack,/obj/item/weapon/syndie/c4explosive,/turf/simulated/mineral/floor/ignore_mapgen/cave,/area/submap/cave/BlastMine1) diff --git a/maps/expedition_vr/beach/submaps/SupplyDrop1.dmm b/maps/expedition_vr/beach/submaps/SupplyDrop1.dmm index 2ac5a64f9ec..cbc92c28d8e 100644 --- a/maps/expedition_vr/beach/submaps/SupplyDrop1.dmm +++ b/maps/expedition_vr/beach/submaps/SupplyDrop1.dmm @@ -1,4 +1,4 @@ -"a" = (/turf/simulated/mineral,/area/submap/cave/SupplyDrop1) +"a" = (/turf/simulated/mineral/cave,/area/submap/cave/SupplyDrop1) "b" = (/turf/template_noop,/area/template_noop) "c" = (/turf/simulated/mineral/floor/ignore_mapgen/cave,/area/submap/cave/SupplyDrop1) "d" = (/turf/simulated/wall/titanium,/area/submap/cave/SupplyDrop1) diff --git a/maps/expedition_vr/beach/submaps/SwordCave.dmm b/maps/expedition_vr/beach/submaps/SwordCave.dmm index a67cccdcb8e..f14417c7827 100644 --- a/maps/expedition_vr/beach/submaps/SwordCave.dmm +++ b/maps/expedition_vr/beach/submaps/SwordCave.dmm @@ -3,7 +3,7 @@ /turf/template_noop, /area/template_noop) "b" = ( -/turf/simulated/mineral, +/turf/simulated/mineral/cave, /area/submap/cave/swordcave) "c" = ( /turf/simulated/mineral/floor/ignore_mapgen/cave, diff --git a/maps/expedition_vr/beach/submaps/deadspy.dmm b/maps/expedition_vr/beach/submaps/deadspy.dmm index 5f3da504c79..5410d8ab2f9 100644 --- a/maps/expedition_vr/beach/submaps/deadspy.dmm +++ b/maps/expedition_vr/beach/submaps/deadspy.dmm @@ -19,7 +19,7 @@ "s" = (/obj/item/weapon/card/emag_broken,/turf/simulated/mineral/floor/ignore_mapgen/cave,/area/submap/deadspy) "t" = (/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel,/obj/random/landmine,/turf/simulated/mineral/floor/ignore_mapgen/cave,/area/submap/deadspy) "u" = (/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel,/obj/effect/decal/cleanable/ash,/turf/simulated/mineral/floor/ignore_mapgen/cave,/area/submap/deadspy) -"v" = (/turf/simulated/mineral,/area/submap/deadspy) +"v" = (/turf/simulated/mineral/cave,/area/submap/deadspy) (1,1,1) = {" abbbbvv diff --git a/maps/expedition_vr/beach/submaps/excavation1.dmm b/maps/expedition_vr/beach/submaps/excavation1.dmm index 3cacccb2ebb..ed191c4c2ee 100644 --- a/maps/expedition_vr/beach/submaps/excavation1.dmm +++ b/maps/expedition_vr/beach/submaps/excavation1.dmm @@ -1,4 +1,4 @@ -"a" = (/turf/simulated/mineral,/area/template_noop) +"a" = (/turf/simulated/mineral/cave,/area/template_noop) "b" = (/turf/simulated/mineral/floor/ignore_mapgen/cave,/area/template_noop) "c" = (/turf/simulated/mineral/floor/ignore_mapgen/cave,/area/submap/Excavation) "d" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 9},/turf/simulated/mineral/floor/ignore_mapgen/cave,/area/submap/Excavation) From 735d70f728d1b1c8f3b13e63b3fb41fad0ef524f Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Mon, 15 Nov 2021 20:25:06 -0600 Subject: [PATCH 05/26] booster gaming --- code/__defines/is_helpers.dm | 2 + .../objects/items/weapons/storage/belt.dm | 3 +- code/modules/research/designs/engineering.dm | 9 +++++ code/modules/telesci/quantum_pad.dm | 38 +++++++++++++++++- icons/obj/device_vr.dmi | Bin 14283 -> 14574 bytes 5 files changed, 50 insertions(+), 2 deletions(-) diff --git a/code/__defines/is_helpers.dm b/code/__defines/is_helpers.dm index 9a1b3871df6..07c25a40ab5 100644 --- a/code/__defines/is_helpers.dm +++ b/code/__defines/is_helpers.dm @@ -21,6 +21,8 @@ #define isstorage(A) istype(A, /obj/item/weapon/storage) +#define ismecha(A) istype(A, /obj/mecha) + //--------------- //#define isarea(D) istype(D, /area) //Built in diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 1c92c3e94e8..00647f37f37 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -158,7 +158,8 @@ /obj/item/stack/nanopaste, /obj/item/weapon/cell, //this is a bigger belt, might as well make it hold bigger cells too /obj/item/weapon/pipe_dispenser, //bigger belt for bigger tools - /obj/item/weapon/rcd //see above + /obj/item/weapon/rcd, //see above + /obj/item/device/quantum_pad_booster ) diff --git a/code/modules/research/designs/engineering.dm b/code/modules/research/designs/engineering.dm index 5c496fdc4fa..bf55cdd7885 100644 --- a/code/modules/research/designs/engineering.dm +++ b/code/modules/research/designs/engineering.dm @@ -40,6 +40,15 @@ build_path = /obj/item/weapon/pipe_dispenser sort_string = "NAAAD" +/datum/design/item/tool/qpad_booster + name = "Quantum Pad Particle Booster" + desc = "A deceptively simple interface for increasing the mass of objects a quantum pad is capable of teleporting, at the cost of increased power draw." + id = "qpad_booster" + req_tech = list(TECH_ENGINEERING = 7, TECH_MATERIAL = 7, TECH_BLUESPACE = 6) + materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_VERDANTIUM = 1000) + build_path = /obj/item/device/quantum_pad_booster + sort_string = "NAAAF" + // Other devices /datum/design/item/engineering/AssembleDesignName() diff --git a/code/modules/telesci/quantum_pad.dm b/code/modules/telesci/quantum_pad.dm index 6f1381a1915..a7aa2f69a05 100644 --- a/code/modules/telesci/quantum_pad.dm +++ b/code/modules/telesci/quantum_pad.dm @@ -13,6 +13,7 @@ var/last_teleport //to handle the cooldown var/teleporting = 0 //if it's in the process of teleporting var/power_efficiency = 1 + var/boosted = 0 // do we teleport mecha? var/obj/machinery/power/quantumpad/linked_pad //mapping @@ -32,6 +33,18 @@ mapped_quantum_pads -= map_pad_id return ..() +/obj/machinery/power/quantumpad/examine(mob/user) + . = ..() + . += "It is [linked_pad ? "currently" : "not"] linked to another pad." + if(world.time < last_teleport + teleport_cooldown) + . += "[src] is recharging power. A timer on the side reads [round((last_teleport + teleport_cooldown - world.time)/10)] seconds." + if(boosted) + . += SPAN_NOTICE("There appears to be a booster haphazardly jammed into the side of [src]. That looks unsafe.") + if(!panel_open) + . += "The panel is screwed in, obstructing the linking device." + else + . += "The linking device is now able to be scanned with a multitool." + /obj/machinery/power/quantumpad/RefreshParts() var/E = 0 for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) @@ -64,6 +77,14 @@ to_chat(user, "You link [src] to the one in [I]'s buffer.") update_icon() return 1 + + if(istype(I, /obj/item/device/quantum_pad_booster)) + var/obj/item/device/quantum_pad_booster/booster = I + visible_message("[user] violently jams [booster] into the side of [src]. [src] beeps, quietly.", \ + "You hear the sound of a device being improperly installed in sensitive machinery, then subsequent beeping.", runemessage = "beep!") + playsound(src, 'sound/items/rped.ogg', 25, 1) + boosted = TRUE + qdel(I) if(default_part_replacement(user, I)) return @@ -213,6 +234,8 @@ // Otherwise we'll need a powernet var/power_to_use = 10000 / power_efficiency + if(boosted) + power_to_use * 5 if(draw_power(power_to_use) != power_to_use) return FALSE return TRUE @@ -220,7 +243,10 @@ /obj/machinery/power/quantumpad/proc/transport_objects(turf/destination) for(var/atom/movable/ROI in get_turf(src)) // if is anchored, don't let through - if(ROI.anchored) + if(ROI.anchored && !ismecha(ROI)) + if(ismecha(ROI)) + if(boosted) + continue if(isliving(ROI)) var/mob/living/L = ROI if(L.buckled) @@ -262,3 +288,13 @@ to_chat(user, "You feel yourself pulled in different directions, before ending up not far from where you started.") flick("qpad-beam-out", src) transport_objects(get_turf(dest)) + +/obj/item/device/quantum_pad_booster + icon = 'icons/obj/device_vr.dmi' + name = "quantum pad particle booster" + desc = "A deceptively simple interface for increasing the mass of objects a quantum pad is capable of teleporting, at the cost of increased power draw." + description_info = "The three prongs at the base of the tool are not, in fact, for show." + force = 9 + sharp = TRUE + item_state = "analyzer" + icon_state = "hacktool" \ No newline at end of file diff --git a/icons/obj/device_vr.dmi b/icons/obj/device_vr.dmi index b75163e8810aece5cefdc54b7791e727c10bc2f4..3c4a3c5d09c444912ad886dbfa838a5de1c8b664 100644 GIT binary patch literal 14574 zcmbVzXH*njvu+PLh=52&Ku`gR0um)>$&!>bBqa(+lrZEZ8Bvg&gJeO10z(o(h8!hl z$sjO87?|NU?|05w-&yONweGz?dJVn1dv|s1s;8c+UA)uLQXwN@AOQe?Oifks82~_7 z!2=*707t0!%NxKGMPL2r9*QsBt=;ThJ?vea0pM+B(R)qjP63MWsb5^mHQ{AC#$SFF z;~4NPk&IYqQ<3&qPv10fL-TP4-b#vl=;E}MAvz@FawBJ_df=wvtY*Ny4QfVCi^HRI zTbZX33?y$eHeP6!m33_`;}V46DEqy9{*@t%Wj#%QPytf+)yjS>6;`s zO20Y$k_t}Y43QXJjZS!yT=*pv=T9=?Thj8+e4;}yj;h<~Qon5cmk@~Z^69mG)B8LT z#ujtaEUDYOu~$9x2zZ>R)pX>tb| zoF9Aj>Eq(Zbg0Q>`^G8zMsIZF={xB%!fgA=2AI)h5mq+%Fa!AP%6dY zw0c9UmF~vSlZNQi*~d`|7Ly8bJv9rJ7WMOMZ33^~vApJ~sRjU6Kuu9j|83@8mY@Ia ziTNv;3_p?6L`J1s5H&m}IpTCPa#JUL22ayL9(u1Wv@TvP6vRg z>I|m5G0|{F(|aMTHgv889|F+gRYx%oJouylpf@UxxY^i)gI2%hmyPQPQAnadZn_0+ z;Ny>^IK$tNfS{FiA|+$!$d?gSGjF`9r!-=*d@OPlgE#1Kzn_(VHpMnN;{%t6W7?MX z&cQ|B@NLsgAV8OLPXxmY=@3@5AZxlsifGB3^V7NLLc+Q;`oIlMJL3Sj(Rn4OdEc)A zXzQgx>VVic)LiAN3ubPv<&cm(g<13|l&mmtbvH2CP?Swt!uAU*cK?JdV8`W4i+J2c zf}ir;J-TyuPuTkP{HS-Y{i({*&7oQJ?>o%X@6t#zSl- z+=tTg70|x!P>%3aiDeqKT?jumdLluD8Xp=M$RJ#5D#z8ag&7cD0SnlONg0aMwkgWQ z->!7{2}3j~=ZLW4CodABmeZnId>ChVWN?5&f0x@Su)h-T+e8V9_c2WqhQ)pU0IP%u z$ugy74fZ^zscX6YoRA~8Yb3tu_uDyP;TNj3%#;LxokIg;$@`gYB(ANNneuB*-e;rF zT>S=Jf%e*$h^EJmlWz;J+Feeq-1Kh;Tn=ZYZw8)BUpeD19W71OVXJvB7At`Uh8I_% zgz6iMy(kr6KQQ5js*{Ac_-f)weO_m6I)Axttvlh*g*O}|%sKNtxk!P+Dbf;Gm%X&m z(pd9jNKicKEMzXcs~SUPBGVdM5`fCG_a#x>Q7??8NEJ5Q$**;rCF)|a z2%@HWkHeM;Ao{6y{Ib5Lq880vctfpwi%P{6{eyCCEw*d9tHdKF+WdK9&;3uqFUWU0 zO;`vZMDi-@F2k4SqHpr7ZU?=p?%$YJ;!ijCT^G+=piH9dtgR+fSBz}+_T6d9fB+2< zH-B&(ZT?SXF(p#Mq0Hc{?lyt0!m2&@_Dsg-Q^d#XP^r8TYm`HCi`wK=fU#Xcr~KZw4H>5Hbwf;&cp%Ir;JVU zE-O|_xFJofm)lGCc`hfQt)sq&)Ahw1IsWg}pFWj0QcsQf&{0}mzH^=(boPVj21{1d zasgGim(Y?AUT!3u<0=TZ9_zr)DutAKC+%E_;rFA*j)=#6<0{YY7(D*?sR1>`IsFY6 z_}k~$*52IaOZGUBNcrc`zS6{DXlbh(b-hs)8;5P?Fpv7hjLx|Ki#TwVlahsQmS{6| zd~>&*m{=gQIwmIjBcmHSQ)4sR_U21I1bBPwGbVX#>9o)?t#4#Rc*w!UMXaW#CZGQO zyF_edb?$_44@7fYv(f=oiN~6PH$MP%^fSgY|#b z+Xr)>k8RWkE(&8c-tn6u%&muu+L;Avql3Oqo_fqWRZOGhfKygLTAN{^_6MZZs7EXjP4*8|_CA)EN(4|epY93Szm)zm(jGEB3jy4n z5uN#&Jb2#9=iUB4_J<_a#=pxf`Qhb;!}&RYiA8T1^o9jEF>$xnrgx)@z`Fz7nO2t^ zwf%itE>JjwQ5$by4Hw)A;n1$`T` z&)wA6m<=HEj&v9yTq%dAXaZ$z8)##ZV6^r1!sy<(`_Q=iYT=^Ok@Ky;$WyQVVWe)% zZbqZK>{437*-^oq7Tpsbh`s$gE%GDCj5+?1A+)@l74r?dpeSp+<;MuIFS@p>@{(m# zz~D}Uqt9GI%E{c;jn#q3`Kxvv5+&a%F88R11d}*&2={{DUP| z#l<;m&V~?qi!z!qhp>L-upoKV) zB5>pXd)W0tYm>TL{oAMCoIGa8{O!~bFbY3xk&raTyS&IbYBAv8^t{JaX*vB3gV=JkGf9};m&5LwM zq&wL;#Nz;BPW8V}7MKB@%m`dCP>QF8r9>fcv+4_dmB(|CYJsdfhH`Eoe zg=;aiCV5*AN!C1lx4sgVw`ABgwhjZ(~k+FB{fOneRUsOKlq)lX2)__H4 zJ&hniNc#36N5YhD%-1Kr4!^ecc&9@z)$|04mLT1pefy(T8gA&SfSt-Ai`k$%QC45) zINZ>BB+Rbg$dL;mb!p2+8P#2(7O+7g7oZ3}V`())deCe?9SY;l0!uvY@s0D#|$J*St(k8|s)tlXAN% zEE_F*(2y#5j>+TaQ()b{!Y4QgtVfqgbksbFLm2dc|hBwU`&VYz^?I}Z`Jr`y+dZZ4k zyu;Xf6*npBd*PRVggC6e^RInTd0l3HCU{Kh%?>%DjaTgJ~Ua{ zQspgbc$?9@(J%~oZjA8MfHuJv!cQ|=IA zkZs?dX!));M_7sO-7|aN&31=`hrd~nAFmxV+e29A+t#AT9B2%Sr9IGGr$8yB0sZjb zk$0P4C5NaIMnB2eN2}y#vy~ihfh2S0Ho-okpeW@%Gh@-Sy@t~w4P}?W`!MZ>;7N2g z^Of-qcbwV*KTKP9)M$cG-={clsD%rkoHcOtc6XdBr~Ld9a$&n!K^?~RFE49sv`Ij` zCI?=6Z#80y6z~va^c5x2p|5ej-3>)aW9RN%`MLyp7nj&xyB_EPH+nM$*FN#=RjE4W zvAm9-EE9wE6_li8W~T?je-ID0!MKt|XBTtOZX5+E7x#vD_-z5@DQG1e%o`-(0qDC4 zQzLqT0}S=-lD_8um|kJ;ogmO_Cn_`+z%NIwvoUiS?Lo_CuxJDQDCd0hr^VSgCpnih5<14#YL@P(a8R;Gq z@3++~FM>R8;>=7zwV)NYVF4gIYI)MGlEY-r&rVaNLs9tnGuRyX7WMA4yz0K7wZxMs zT-h4c2lqz;jo#5IZ!zi`U`C0Z{EQ1kx^cBeNg_CV+`S=2W+-c~;+3Sn)D z_hbF}q+;+Gvvys0w5 z^`cB{w|wRAzMqMv8%skbeUjFVu}25kT$$WlX;xx~0@7BEcJS6u=X1~&#M&U;^$era zVYME8jcuFcoFLsujT%tdlkiPX9C&3y%ffQSSb4n1558KEm3X$VbDraf?RDS??P}b) zfQLvP2Phwz<0NCHOd>1pdjW5a5Hbu6!R4p{ zV{FTzsw2#+b`TUsUG0zdS*9x1CIY7K(wQq^^Xe6e4EMu_K|5-lE?W{S{$^=%=1P1< z=|01i*hBn_Ae^Nw0gF~#Sz>{JF`Gs-PvDp0vIlgG>+%C8hcD27qXaBfjmjsYUm{X` zV6149w#v$hb;Q>@HwkBEjKdex($Y*{zpnf{3o4w?3>BctR)D&|9V^k^U_SrReWc~cO85n{h2(W&Be&q<%bB05Sl}jAm#n*V_BQ^?p?ze$l1PJ}jXJ3Lp6fZ9= zMpsV^KfzAgdf%!0JR>ZUq3L?EHFh3|F*`=*z(2iyxhyT3^R-u@uK-*xV0dPRl1 z%pv|)%z6C6H%tb_(%c>I4X;`1lIqh;AV1v|gq;R&WtuWT$+Zel-F73tDm_)i9RmV% z&-uaP%fVmGBo~bI?O$p^^;LZ@j~`Q@UWBp6-v-4_6o}dx8yC#*(~P<+k|V7tRG9m% z$WWIM*k@dM@)G@Vhy|a-cjHcvGzZoD?Yd(6f?Fz&F4u`e;FUbkx^+wywZmY|g?-sVVts1)<$6o;AmrwtKUVOTCqjn;_Oz{5BBwee1DoVK#ct z%uH)6F;NG&e4ueV?wI-3Et2wj0{X3j;or{_Vv)Kv#*U`NsR(G6^pLNvr|Ax&#JdO# zSrG|ZiX~<~K44^n{pq$z3t9-!Rm>=uQ1vO|j}%2O4}HK{X{dkdi-wB*v&8FkNA)Ja z--!IlFy?HDQ0pDF>hW_NZa)(f?#avWILU>mhK3u8N=m0&nNti>C?l;5XEb(@TwLU} z^JgXbPEICi|L3ZDe)VQ{(l5#wl9HrJQp)N&kE-@LOOQ?3VSiHUYR_Zp6O7N-%PU<+ zZDCTedF9Fl)8W`*g96<+q0R%)Zo5XuE^lqL&5$??E>`ZC;UTwF{4NxqJi8_c!g;4p z`_msgs2F-wR}=7}CIob};~N?b6_tEWH}X_qvopq)j%6K-$%2%Ow4r~BX?~~k0HXk) zt2z}$Nsh<~bdk}{r-3ioG2enkyM*T$bs-)&Q9#wt zmqeapV{6@LciKXtW3Thlt4JC6#Ku_*_X-_$B8fNi$BHU0@8u7sG*(F&kq7v3aVU9d z>i3hO`r5wu8ZNLe*;5C&Rxkmp5TyyCn5e%ZjtR(an5-4%gW?d|1E93BQt8#J2OGc4 zeykuC;n_^aTaKP?V0g}l!)cO|7WNQmw6W>N*H)6B+ke->@GKXq5NO7PHWcHXj@}y* z?}XxKDL@N#w+V5QC_0~?H>10ABF=E91E|8UfU6K(ujqU+{k#yShf0R9f+p2os+$Vq zoVRPs`iXcW<>Y?`N#U$#D~xCV+P!kQs~~;r??MmO*p3;k{{7iuO^YX;wD|tu56i-xw`k3)g0SxMXQStflhC5L65<%0w zCmM+LADnmd_MxjhILR9RkFtQBz1vdX5|?vM_tWo9lGjPeeKC^@@A_}tjw zQx0qw2oQ&F>}wuRER71$cN&yt_}$bp(Tfu>@OuoB73UrH%~J`5W6%G11ZJ-7C+X$+SYm+8?!4{4y|e z>0NfsE#kV32rNE%I6D7ax8=iFr+@6^De~RX$;m5#LJR9#K4C9?Wd?KawZmlSt>(RE zpAiLv5v7b6S$wfqUO?#kWXN+1k)F66sl^H}o;VL~*3WcXyXAe}yfC9;d4K@#Am8TpcQN z($c===I2`_8?LhxaoNa*v4J7})KFjla(>f|0+-g8LpYBpjXY2EKQA$u5m;F$5GZoW zQ&L=y{@1S1zh|NUt(c&~)?rNw!SZfwxydeGBE>8(XO zv=8++Q~N)1R6^iB)w@d~!1cGZnrhEai$IAA+uNhJ#NsCS%t|If-qYIp>&KCI$rZ-F zPE2HBN^I;32he)6hy#>7S}H>CzRpUyx%Fd}a~~&MmeNXmko2W5?82_>4V$@_Q~4CTk9ab zTR?l5&C-Oow|kQmtxw~Io7xf~jSW!}GXRF#U%%`-vG!n;1DE1?<>T6|7t%hB#~7LF zfSQbqzjl1XgZ$)g8X;djWQ)iwkT-MDdYGc)wDTG&V&KZeM&1hcN*Xq1f=A_M3s5l+ zD482Vai1S7X*1?dkK!$w{WY-WHWPqgOHw0riPS9wwzs=;_Gem|Hao7+Tj7R34 z#d!I#^BCABB?=IMLENrUH2+%>je=2}*HbX)*>qgKfOD5k&&bi`m0hry}a0-JelKyfsy)}g<8n`Bt@<9Z{}?XUT!y-IxF3Vwo~g~z7z}c zo?0c%6b))p(EJWzV=vIbgxKIBd9J!x76sKjpG$z%T-ou1F+!xI7-~xuWme=}G=vWO zjob=(QuRoX5eVZ{@XhC@4|;pe334Jabd#wc(hDULSto}yfa?g%LnZNE=@UEEu(Qjq z5Ez1$&H{{nJkl5LRD))U;B9)|6PZ9jiX?9Q^P&Wp56wuBETd!$LaJRUPl|Q|YtNz29MWY1 zr3nF(1}9xpTkPd|X7l>~Q6lX2DyXCqZbOj<*gpu}N}2TkRpY1aPZR1X=^!Sa0t=X7q|R*^uT+FlmFd=$yWOw%_oE{=9bV*a zCtqJH*2>y;JMa6*U48MH^Lecev2ES-?bKN(5i?Cyau~R!;M$RcMRIh%dx=tTxeTWmRJw9^P=xH?B%sV*pWOCAQOmG`_g@p*Di@X1Eoo#dxg|v5ulYX0Z zZYHCoq@&nuy#~xD}qT`%j!fXBR4S?X6#qT+=(8d-Gd1@;`#C#!GdZ{LcmBnWdt~ z$Mxsj5WHt=$=Vc*j4_1FZ-JLDUw*f@RZ&?rHDT1kfHr0EYt->@5*^VT40) z#JKI_Dn(XG#F}MS;^TlPwLcS7j%qBUwA2;2dwePmm>|@E7_sHw#*-66VdM?2(ZR#2 z2X`V2HT)!Vlw0DbndT)wnQCJlh{A~admog7A{sAJ*S#88d7zaU^`hql;Ds^E7O78mD( zH;;YiGMt?VhbJYNGQf0_8%xl4We=jFR`5X#j*3(3xK8rV|Cb~`IPQZmm_&mWfm2EY zrnJKo(<jAmoygUC-y(EBW0ddB()_x_^3ENTB z*49!m^=EXno-V{FMBZHf{l$7o>}FcpWofAIC!O5@$@Hro5(iiO`(pF9^cv_>udkEi zxzs_Z6{VbG5=hWR1k#LxF*&4fBSC`vaSTlB!4Haz1b1`+9rh?py6b!2*1Hj29Cw9W zx?Eip`E8iDzP`R)dJcnxghV1JOJCnpaI1b5X^&lN3&2Q-#ZwjA+uLt$ZVngS;L6LB zHKNTY=Uj6UynA2xcBRDQu21l0;q1-G>sZgqA9Il7g9@EzYA3Jwc^!^L05FkG%*=eC zs5-z~->b@kUtX^)B8AwPAou!DR-m*F%=nQ~a#GSg1#Gt8;+(84mOK&sS?Gwl@2kAy zrvN5S1mw)I)o?UPC?WaJj!;6_ufh9|A3qig#6AHm)_RjvwY60Y45&xP&SkhxTFc5v zHimLkG&SSOcUx9MaS1h^rnYr|m0(JTLdNvkh74*>m?KGviK+iQ60$t5ye0&%UrASu z#vFevDskC_4*`mYbWG4i?Ad~9J73GXk+De zp1{L^lQ1auD3xh=${&v2=3e{r$7(2BD%*BDq_b1Ls;CH`T_s-8(2yoQJ)Htv`?9i! zd1>8!db+y7O-*94OybY%Ze_~^nvcEuO-Ok2li`6(e;mC8o;`aV#VJ|9@6F;s7Nvo6 zw+{x;j_3<>hPXf3 zf$r)C?1G~z;&E|O9usyIJ@m_`pru=GiJx7Qls??1(PTo+@>#cUzuw~}Dk)dPXGL+S z(j|0ggWrwCu-6bL{2@uoX2ME9if(^AP0>C;x1sl)t9mnc3T5u5E$%->8!NT*T!FVq zD78CSYVv>>|}h6L)LNj-9-{Ozlo{ER6Wk{H)sxYd3B@Nk>3`5W=CK24p731eKa=yc7roGK#0 zLR9~sO=%9+t}VRV>(%-$tvl6U@0f0JE44pGSFu@mUvyCOY$pokfY#-gRn5J!vO+;c z6`I7ZvI2e!XlO0T%TaAPGJ(uJ@prm;qIUhV(UwPYSHo8>E(g~k$=9B`6 zz3vof?mD;&d;0N<*Bt+(f9YKz4DsH}@1#jL`(cnceXtRM6}uZf6>!^H*VL~#Fmu>ti9 zs^xtp)gGPfk2gt|#;a(-GwP7=RMAfLc4t>tIOjdE-~;BdBh%CGz=BT+vi}Ly?j@w_ zD3v=>M!Wrq>o65w!{QI-mhyJ*w|opVoMbgMHB~h=sncIx zdkyIMC;Rg;ySq*xn6GS4lxt}Uwc5e?Z=HQ|856ylqF(2=mbjIbLJ-u(bHJ-ba4%k? z;&qGtzsS~UyTCtW>r?)y6l*X=FytqFkZI)CDpcwwedPi1qeqW8A3p5-?z!WtK4eV} zjinFG&u8N?Y3QGIdO6+nrr_-ouCc49<-ibzuwNl;g-hc<@vGvA_Z_Q(m~*r zB#72J=H^uhcgtAedl0~3DPLPbg^m53s6UlZ#wG{fHBKw<#ogiT># zc(mqod?h9(miK)erLAGcCg9Bh-#lvJ_Xsn*N)eMJ3_;ckF8aNP&u{pK#b43KeAk0xuaEne@i;5lptKU%@$zS< zSq)(UyG{YhYy^zk;6na2`th4=GOay{9i15q@{YOTJcVUfF${?eSx3sQ+PjF-&&lfzDGqyCFyMpf^`d5BkT-i64{fVG~QBtTouzdFt87x?w{8T@J&lFMZm$8 zIzX3|Gcn2d`%Lf+RYh|%nJoKTShbE7DLuC;(g3i<1w{vZbWkN;CP(PfQmTx;`g<-VE` z;%lcJ3~V^+V!s~xw^RV!$pVMF*>T-GkNn>MG>M($Ad)wE@|_BOlIb_{TrXU-!FdD7 z_1*9S+J}2K0Kgf3{_0+#4|YEjo3Bj~)=&zkOv*wk4e=5JAD}f$!wRPmV1J>N~65W0|P6A%kryE>;1%l!j4K+hKfd79;oK8bMK6 zrA3tA`1m`;7Nb-73@ir|Xxviy4%wTXr@tkehdLsFW-tVmu- zZwFs|Ew!t_!L0VqZ^t#KZQ54Lb3Ua|>()FZxCO4fQ@1BWfs}F%sWdT(-R3z@_P6sP zc+Sw8ZjrHgS%mP=mPSzxAiEhqe7ii8JkZx@t1HBN(G{_LylfKg(`YaVZm_)r8=rD_ z{A^@THPG;}mg71W0EnIY(qoUcWx>eN;vSVqyZgxn&KgDqHd`&f+g(8Ii$#bwyhfd| zf`y|tN~FOlgf~;P=SP*|qcXo@BN?{^0<2nE^KlD}W zPG8)^_(qxi3jGrc?-{;Q3^nRn-8 zCcnxH6t&r+`i=_*Up)W^XhQF(17~*Xs}lCX9QWKe!3wI5M8%yxO7qEg3(e)YAF(n2Top|3ISwSulqb0MeRSY~n=EbfOK z>7sY=bhOZG*^9k{Dy-G(;-Qp};GiR>XvPZc4QT@_@;@i{OrHdC(+(~_-NH(X;{3#Y zyV@zPRjs~+oow^l6$9Gy-Vpx%Ia2BT>@;0(^7orgt-tuQvCk&Z;xFhq4@OcX#aiTE zW73$*n+;1p%Z$B3ff5aCESh1uXDYCDEIvBPugROL+VmNLpJ$)3ZZiwpRdI@%z*70d$BAVFr^Jk%u>?p6}5j*On2AwV1^@X&fV#NL_ z_coFbN0@E~ogpA2lt1vHHu!WwEM9r&QiFJ90ufUEc64&^qO6w>KeN zJW@+0>L`XbZiGb+UC8nq%}j>qk_bWYKmUu~veIuICI(cY)bUEzsqCN{s>nm4Q8M$5 zj72$@_(0<6-T`aikwW?o|BJexKy?P)Buqvbm#WyD(xct*K`**zTTc@{_WX}5Aqt7{F zu+v6qISTmdN63qe-I{E%$X!|)e8AtU4x5ya8F2PT^ex6k>!=*OXJ+ZJfNo{u%UX8# z=&_Q;Ke)pe_oT{` zwm5`P;>pYK!dsT~@$pfn?a<-G`CnUAS$-i9V;-t&jKpBU>F+H;=Eb{UUn~Fb z!xPClur!sFn%aZ081xrp=f55&p9aTGe`CbFboFSz=eeD+IvQ64dh-pk&a#WZ61&nJ z6V6%s_3MXNo%?(&%Ja4EB^1wU1Je$@7e0RquvH@l-`%y*<=2x0uXM|vy1H&$Qr<>< zS>5w)YT8s?@Ne4iqy1$56P)J@IN@6>Sy8Yc5KT#O(P-K7)_bw43LY`)X> zSR-dU(0Xd|4slK+$s!{vnSQuQICr~k97iaqybX>QBm;~(e5mb}b9xuSTukNeOcD?WYR zA4az;nNd9v%v!=>XI_XZFC_Xh7T}-UNN6kDu46k9v4Oz+On%$aV0zIjW5JP1L4JP zS($d;pGOirj3&?rE&t{_`R6BoTh`>?d!3&EOSUQj{Z~v7CJ78HNP3V>7XMgdvjP+3 zeviruEu)CVwgS0*mC*1T9}eXE$Br%AI+96e@BU)qBV1NDz_udKmtbXlQ57csn_9r0 zg+eHIzS(;$YnWMfHH0#Zu%_GsRFT%Pc9ukVh6_B6x%)50wJ#^$acN^`Ov9W6HoWy` z8IE(773QOpd)vE9pOE%j?_l)v$jcptgNXX6@(z0A5MipEMj=1gL{2_U|c`1m|lTmUjOj zeEDGh+K`zRZDiZqDaw~F*oSxF*FQ$zceL9`6dicvNS?Zd?4x`&9WD0h@H@qFiI+G1 z6yjBSAj{k;XMsxmOEGD`Cb`&FDbT_Kshm6fqEI~UL5>o*kc z2=4qvsJVM|;FqFaqB@vMH>U$N=n6@`zN6PtMm=VX-Swh~pI{~Lh_&YQVLKhxj4V!tVdp_u3$??-J>`81>=&$bN*aQDU7E*k ziCnXug?vD&GQv|Z1mkeEU|Z>&@W34Q;4S@&9spnmRG&W4^-9`K_VuG1o5jl}`aaf^ zcc4?fa+{{)>K!W^n0lZVn^oz{EJj;`JU(_=h<)iBI_)6#T&lQN52~O>C43^ohWUdT zH^_^qvS&6%0MhF-SKPW+f7WbsCpJmJ)%(pogvuoAB+JT3QO8>q$f;y;SDCfml`@p; zs*5^3Jv}=~pg^ENCYc;{TQnIH^%LrlCqz%FgI+&nGy$Z$a45^_@0&M(Cd?MM-g05z z5D`N-I|&m}GQqoK@3?}~tg9wHl!U-fTH1`_xVi3NddJ61#=?Q@x5@LlC$m!r=34+a zKFP4ZZCA{BxXp~;NC}OzwO1S{KFsVP+4QqVTj(dbavc$O!Sj2$I@SdpU)7!9h`@W zRqRKr(6rVA>Cr}CO54xz0AO*0eu0V&7DRuP+I)~5Ums`tZc1q92aWZ*n|P47ppFI5 zv?7t%>8^}mnsc0MC)4wjAi<3C-@R)L%m?K_v@KyTiSg`nxR7yKy5mL^P3)u-V>?2I z`vF-TsRlfQMljQb+V{}IO}~K{P{FV2KY$-ws+_HQCHPRzzw*t#e@GB;(kAw_^J()@ z4t$<6o{WJtAxbkIq8i>^ZT<9n>_Z9eYrx>J4ROjcd-KnMpWgj0%Lknc3epO$an~|h)o`S7HfMfIe&LoFS5RfpTEHD3~<623Y*^x~$!bLm)0S3Vs|JYi~CcmEDdmF zsnq`!&x3-zGnS3kM^3BDI!WT*bfB=#%U#y985wH~^ezg$O*3bnOMS;JKu~(wYP{9O zalCV>&x3$hjlFB%?(ip=`kfl2&k2?aw*2IeQh$;%fmgqp{f>s)UY=C>P+ckO|)h79|CanOD5*aq&*KpdHzp+(FK-PfpXd zN>A3{`)XUkmgC=2ycS6xiipt9+Rw5+56MhVPd`4RzMa!%Hd;*=bu*r`Jdps!1xTY| zr^GCU7(Hf!jr3hLv@_Q>e5z*;G;0n~7-nSBJ)P)L)dk^7od+Rc>W|^^+FC=lV9%V) z@h7IEDPlobUOgT7%Kd{wo@;$Sd-=C@4VMQb$L1vwr-zW_|PKO@Z`M8rqx8`z?>Q)RQ$& zfBA(2=R>HU?;^Vs8;}}65eD|IWDHzf!B?ntEN?m^LEnS>EkOd5ckdIvf(%GqaQ!;p z)Y_XIcAxYfDC>esFynV8;LVS;@Lff+Dl-otCqE2wFjDGoMpSeiy;gox_U_$dDmw zLI#xQ;>i~FY?wH!q5(N=YI~tQi)VFwD&<TJQT83c2jRY?EvEE(ZJ|> zfq`BaKt4+K<-I9hj>0T$0!pd~!L};1)o3skT0bt!B>}(A_f#I3i6RDUv{>XpeIETq zvBip)_@^ce9hP{nNx4BGH;n=M!X=hn_-C*~m67T#gecLSIM|5WTn ziGVH~g{iP3q-eWbm`p}_-SY4F`rT7Ko%8j#U%Pcq3UYN)&^A<6c>sI6Fae)UVwdYy>AU<{vSP<@m7CN}C=9t=b=}nZ0ri!1 zX%1VtD^JM%iTWhdNdpo1WpL(OLX3GLJy+d{$RUH!sEDGP0Q!AM5 zyIua&n03AI&e)?2T$UF0g8_7`+DybUQNYjqTEq{{Q1PiNp~)|jSY@g^a;{+^yjmq@ zJ|mI4$NHYGKS|+Z>A3U^$59*=JuI`TaR}>U2Y*Qt9U(P4n+*y z{Vp*}ePNc7#a3v~p3{i*L+;Iz!2aO>*g;;x}IaNaV5zGuGEc%N}-A8x|;4D#nM zD8jOqZFB=5hY-5+=EI*L^l2uxZnsWvY;dYV!1IJOk4&{Mcr} zX3#6O>bslIv`FV(=9}4szt+36ERe6>JRD!(D{$P1j?gZ_w7-jOUB6(Xr_Hp*%^fuw z!ayXVu}(iLIs4KWDE|ZNo^uS$&PF@(Dh*(niyYB7Q80>b??&RZ8qY)&s=ybJ8YKx? z=8Zc+qh!wB=<)w#Klcf3tSeeqT+;VP34VEO0>E9(7rrACN%r!KgI3kX566Oa$atyF zigV)h2Xe8WL3@1#LlP~!)C`Va52u$kEjXy1o7D%c_w6D-axQm6#KqbhG|-X5m`V%} zY?!SVYnmFuLlQVh=EK4Cf06V5#<4_$2<&I7b#O&G5MwnyrTB2PD%5(4;x*{BLEQh% zb-iF*i@$%qGnRkD636HL1d}-SDvpmrR^JPo|>XqW|KCTY1RM?~oq`GG3xxuk-(xwjgFb}LAU9TjU z%;!;F-a!BuAAv5D$d;&LeUk!LbYe(B@us{X=RnSqFVD29o^{&ucwFyw{@M|!(FsH7 zOWML!JK7M0`jes2jTV(J&qi8_Cr)&m-=`sUQ_PytS()#DYvA*jjzkUdO42y_cV}Da z$ln1<(P~fPM_?&lUpg}KMqt-5^x`n6wP(5Q3q~(~M4aI>AGk_L3=vQbCzlr#@S%}Y|S`v{Cx;&ATlE+9-%?U8T@UmCA$GXLXIhtv zI?keC|6k&!1&e52M2ew{j}7khId>hNGD{t2hd0~oNscny`K*m>Od?=3fmdMtmF4D6 z7QYdL!9wez!geg?@4D|lruUiC6QGG+4zKIdx+u>H=tjl_gnyEcrMCoy{41d^Nt*D7fK1 z;LI)DpYmLx1lhM;Xk~I7CFa&ewh( z$a7k((y^u|Jp)kW0sT4g6mGnWKIeKD(3g?daJ_l>ldX;FP#I2Xi@6>jJud2Vc9wxZ z?u5R`-mRdz%YAPODfzJ?quH)mbw|PPy8rX9IK>^Pl}b?u_}e&2A|i68QJ6QfT*}8* z6*D>$p6~umB^8Ys)uShmA{;RSUpSbic zdGR)wRg6%&Iyy8erzC;w=OLylO5h&)|05ER-~IIYGtXQX_5(#N?H>q&PPV_s_@SGp zCjr38l}STSA6)eto_ET{ke-WdTRQZAa7Gym-8peo=usq>I`?NAG+X26wQzR)x*I2* zj{EuM#&Lzv>AMe#P)djCRu({v<-k$WtVe@vZoJ5@yStlq+vCi-{(#E;qFG7%yBV{n z!>C)DOg*MPc^=9;ZIA7VFsL2twt|UQ+f%uo*^2)~uI!CZPpiAIRVFcg)QlPx+pBGzsK&O-e<_>vO_qfI3KfBY^__%d(^>T zE-nZB75$!R>r{`s0&d$OqmEL#5akd>Xq4<~>)=!ntCptb<3a<+a-3Npxk}6VzDaG? zt-Dyr)w)@S-`(AU!$EEnsgHbhSvebfhfDw9T@Pt42q2Jy0oNS8)8Y=ERmHj1SLz^4Len;Wc zejdX-JUp&baKk18*2&d)QpO^F?%19SAI~pvpD{`;4J2S^7o8tW5l3Z7TWqIO)r;O4)Wn|hWyhQz3yL|oF~+#RR1H@ zS0K{^EzHX&?NF-GK78dDCnLfAjB$9(qU`nQ!HPdySo8Sqy4CTCkUePZF)AJ zdQd3;dFAx>4=p5C_V&jiEabgGnT0bI+{#!qDg~=)NenbCSSi1t9UN_gdy4&$F76x- zo1j@^h`^e1rS;#CG&EcSfLSo~qxujOS;Emo_*Z^KA*-a7GId)C8e>07r?&&k2EMoB zw{}eh_R#I19Z*)EW+}2hXT9g21PM4g@(AN9OlG(a$Q?_zSB%F;sz0b$i%p1)*-ZZo z(ll;_6E7B=%3JL;S29^c1Y}uBY~@5w+-q;vnc3zZ=JPOo6SzQ0Pgwr^{8;Nl>rjkp zV$Q;qqqiT-8>Uzgw2?&&m8v5d-W~ z0Zbz-lD6@zE%5m0zNqxvblo&M`pnYV#hOrBEP9+FQ<0}?{MJh0>8Wa;ECJBd*e|Ns za4@Zsl}%U~Vupp<2^4#-qOQ^zn{M3rBW`NOQl7l@6m9#R<5rP9CPD&mLOC7Z z8$o*SFlx_;?p`^n`xdL4D$>U&A{GM5cLTlRrYq8{|3c}v^6u^n5kpR(+?N#PH-^${ z&~v@`E6X?EAl?6Wf7$YG^0{@MftBN0MI2n3xTi7YgRCe*+0Z5~mRlF2aO;(akpkbd z-9EXEdZv@^bl$GhjkOYy(Ux&--ci@IjmCo=R!ynxjSV6o3r$(t`{QvUy@jh3sPe&? z84|T^@r1tplBvR<8wN7N=k4m6OKW9$UeW=(Td%!F;(st~MY=P}D9Sz8fBF*ywO|I_ zt^5mOUBQM56^$eRjh^VfqTmMPfM6+(VWXK8kQH~kny7W`?FagT9YqC45x)iKsFec= zeFROC@bhS`6`x#BX}M``M#*Nl?qIZ1B89@p@ZMR^M}U1)14+P%8TEAYtkdA)Ye590S*2-ZHY@`DyP}}p|aQ^Ej?hdvf`P~8MIoCN;4C)!iWnt0`@{O#)DYD3nsqZ zQbmqlCFJ#0R+b#ceT$Zyi;9V{Yin;m-b$LdDUH$VOL~VLFFqD~Y;RxC8O!k&q^M{( zG%j9-4*LBZeat0k`v6pF(8{c|v%`k7G<}i%n)xAvEnC@s&&1^Xj{&R?BiAd0LILpw zO+jZmrDZVc(tNY4PVe-?qbX*D8;m9zN!CFOjsX+D-+u20t0$fy8&e&ra8 zn|;1>D?QKO<0;?ww};?@hjA!8f1M{C`nRw&3}LHm{*)ynGc(vi+hbf`jAeU$b5q{U zP1vd4(cjgT3l+aCwWG7!L~r&^6Qx@yYkgQQlUz-Q#4e(r!}2K8S^^v*k^(Zi6;GCb zE50@b6)%s991T-SYzWew(C+WbPv)%k9`hhHSD! z58_<>ne4Br-IHIut75pRZ#+qDiz*QN^EMXAryl-q^tn8Uu2 zZbT8cVa?itBJ*kJX_p+wWi}$u0@|<}_Zk${0c|K0k(9*JA72;N9^VL&7B3&3*j!%U z*^z(yR{G7`i|P32XiRm#wJ&|t*g|->LXdYI|CXav^SGl&Fc;5Xy8c=R1<*o!OBKvV z?)B|%Y;;uT!ZWAnDd!ElHqXrE*yKXIF3hCzs9Z&uGyeMZ-63AH!L(E+6CcAT|OYif{7icnCW+%m!PR%S6ggI@VYPC7&;@E2y&*=L})rocMk^*|l+?Fe^Fx z;%B18cXWd{j=yVT+lnn_8)+Du^d+w%>NS@6H?KMw!^363Y-_wIV%l+`B{->SW$r-0 z5Va+lt{2C*^!(A{;P_(8*ViNUGLc_>thF3$lvr&34a*ozP3wntKMbnCYI2glYMzH$ z^savTEcDv3ba5o7EVw{h^q4j2=thCSOJ5NXtbj--DFvyA`FhzegR{@cUDD}I3KJMP z2Cd3o4^t9Po-b#q`yHL~OyY5@eLc7AE{2DP{muKSyY&2B5ki+5V=LS6 zwg|R@`Up2saBHQ!}fFs4>ydsPRT|E~Y<^Ga#*CHasX% zuQp_nzXgdvroAWCCH8uM)Ha9o> z48J1Svp`T9vAn!IV`O4-A)49qgxqvJc`%66TqbDl-;ZqFn8KPVn5ff96y^SD{eS0= z9)NJ=niaXY$ks@i*%g|ME{Z9TwO;ErZ4*zv)fF=z>iQF%3+F5FN}ik)^Sb|`ljJTV zrOMU_w!GoI7DN>(_a81_UJW9y#hX+{og07m^2me7uCk11YW2v2@n;!9bf63Y1AMSn zs|49in+INhg=FpZEuD=Xn(|2VsojP2K%?GVp?g5A8;DlLD~<3MKAgYrLisI$0Fd+l zdj_2PzsWd#tiY972fIDJQ-^JtKF2OW}FQ|Zd;bVHh zi5X&=KQLE$&onfe?Ffu3_X>88Q84D_|b0G*d^6leJvQzJZDzB96BbMv5!~1n>*uWbWLUwJV6rWCelO|PO zXPSN|H&RGemYx#jB=UvC%4~$@d_RNwlj?EI=U`ey79a{yXZmJY)_Zm>6+ z)Zop$C)nXot*nEedBJw9mWs8j)Ps4*M`)>A06VANqQEhFhlo7~0(>3`(3|_yx^P5D zH)q0`Po79HlakQgIu6fu!D#0=f}&X#!P^1a?mQJR)iRK-)$; zk+$JjPAj=wu0qw>-9Q=|7!pH2agUSp`s2ixjAzN#zRz}5dDJI?-JOL=U1O&-q>vq? zBqn=xRY~7wpxG{FcP)TC4k3o`w%+-A{DZ$Z_9o2PhYy{H6E(eP58Hysy+Xb4al{5# zLa5hx9s|HnB6f{kRbn7!D&XZK%Wpv1A|2beipsG=ZX?QtM{h7<<&|Tt3w9yk(uI&S zT?6ruSW=%AnBv36mS%>v{zz#Ez~grFzm=(X+GQN5l6CwrluQ$b-%CM%^$7UXFhfc5 zG<6fcGzN{TmI2H$(%HvxvX25p9y`&;DEx3FV0jckG0C6BTA z!lJ?y+}z5|TK?J?=;<+lnR|9vR8*7`v=oJ;PVe-&OOr4SfsW`j6-6zPRSU&5k`wRk z_`LaeMnvtIt12pIXUDRc5^onUx6+7jP2|p_R8z)gu|;4numS!QRWi5o8gkGnXoFPh zM46YyT_T;U1Oe3VRJ7dgK&S^C9UPVqome|V4z7LHCBEK<6;}v=d#sZ71jU%stWI(` zi6x%(X{oC)G@$5RS;qRDMi_FU0W3?n2F67$kMhGmW=aeF9z`L>oyA-4oIQNy$}3mK z%Od_d$7$T1nUjYq2M zawWYhZinzA0pN!8Wi5aJp!Fp#?x>El+W*4mv)i{BsSTk!bg5S#`CNtrR2NpxiM+{5 zsv)Lz{ZeW;*A|Lo@GJm4#3%RR;{0E6kgN%!j;3-SXs@SmKsZULX8g~#S>ut0758)3 z28XlN=qZLqerk{LTt4ef5NusKcvQ7INzd8y%u0t7!U~qe1*#gx!~qdir5Y5)HHRR4@c`$?UD+*_X_aE!v==-b7Kv zbm`krQs4%^Y45DZw0&53cyqP$5;YACLC#3{)&z3t{PYk6XiD$i-Fa;PC+k#jKohH@ zqoWcYA^*7t_LuE3@`op`j+n~EkfoJ4C|VtgcDY_g&;^R&a{<* z(t`_Z>ztl;A4580*iH&NR^)$mFPAkKv1z{+k@Y{kBoff&56ms26>(PVaA8@Z>u17+ zWohXhft?QzM?&0hRIMz!507}!USC7rs7z_RQrj>DQiGWj$8DdrWSB-_M$ezO5Cn9a z%NrZB43CVwF4f~K zD)wh+R5B~(@rqdGOHJh!bO7QuUMGVj;@0w{cd=T>zd1pAL`9B zHRnJeDJiLyt!-5CgW+k$QD0A7TCi5p%#?&4BAgGNOzlR4JdnoW3k6F{9-&8% zbY8sp04{x!cx&qU1QJTz>D(gx=n-vla&qk#4r!t5>pM#4PlC@ixU-a%GE8zT7)Ord zIv6fUfP^F>y48b=N0<26dXClld~2VIPxi!t%*;6VfxNL4XDwqumRpSzMXKPC^QymjriBtpOF zm2tHb0U%(}%V_@YU3z8Z4FiMoRJt=$Bcn)g%K)m==XXEC-F$#5dAJ$1;Q9(yDK#UeEaZ_2T9l($8dws5=MV&@e`veM;7*c^^J9 zp~5M^0au0U<|YL!c4^0Bd7q}()pc#yG7*%Wx1UWh_+v*>UF6`0r{{+QI@;O+^}fg0 zlssb4_Npr@A4f4gBC4sWv9h*)^8ERA8(Z68iyORJ?(QO=K7G0rK3&yoq2;PZ;_F>j zDJw(Qc@k0oHYf9#ZpGpFlh>I>ICt`KvX{Aqb%9@xSGLB9MigWTFG0q&PL3A~+gE2U z5d-QEhIIl|FUU~6h8&TFD;Khcj?cke)$AXEbVhA-v^0o6?3xS~jM?UV$XT z{VUZGFGAIAC9YLle}cp+Dj|Q3$r93jm(XSaCmqRE0)i@%k0~t85(L>_USYm!?P41b z##xI;jpu*Jibtb%o?#6Yn;zi7Zqxb%GHKTt?LN}%Gow4e*kB$3YN=Pd6DVxya~Hrh|`@Bgmzt?st| zt)U wNbLInaKVNubR=f0E{u6~WQu?rrA5eIttRdX1RNjz?_3^B1ePY?JPqU7&eAC>d3c4EMp?pYi3h|lKM%io zm-^)=?|AoYly<4ye4o50NLX-4{l2L5{o9Wzx?sh}U@CX+3~99tL+(0X>Kq0t;u@DH zz%V1MLyJ!6gVmVQ2=stt&IPBL$oV|6tUzC~Wc=sIAoM20#@d>oiFpWiJR2GpcY~wl zrjK)3Az3BWC+Wf|uv8Nk_70We>Q9eHwr3wU4>KGo0J?g5 zWEw)!$cS)?-0bYDOiWDjWp<#BySlrZ8(?R#@$sQiQRK$;K4V4JKNyOR+X>nB?6Kqc z+6=#U>dK3c9ue%tuUxeE1%TW{(Ff6J;iUKNc{o-^C6J7=yZ%DAmiRUur$Cb!Bz7xy zyaIP!8r+C;aBvW0XJ_j-`b#@(!2T|L-e1x&G>ibV^jTujgT%-7LSMgpaRS{|%m;mU zr~cR!9G;$!58Q2-R69LcXC@2)MLOShgey2WJj~C}ck_N2^)Xx*2%u-h3cKBY9EWHk z^xjiAGAN-~q5ly~#^3^!xNp5`r>F)2UjMXjRNI`8R$iQl+U8K2KJ(&D-b-xUf-)~9=*k@uBSee3aCiAyO zVqQFd4xnda*AWeit+_^34kBOU;#|P#IrIf%wk8sRwDR&V%tGcQ&(ze!_obZwa43Y3 zY>ctX2)c(i{YpN`=sB!S3NU3=6ueJJK@StTefu^EiodNidP6z%(=!nIn7={zu}H3N zU=fm?F}Fsxhp0O^SjHatB85dnt|oZc z5ZrU{_bi;2M;IY-8GMZ#YOd-bO%**oMZqo1$E2jF$w~bMgA&_`;^qyv7Kf_Lf&#LS zA3t_=bv5y%`ej(N#a5GkVP%>+Go&p8C9#Br#3de0@L@Y&7NcBPSO|-Z`~c3--2C<>RNY@xoF!L@ zF}oT23PibW0SX%?a*n_DLsofARaHsjzka=wprNi#Zv2qp&-C=rtS_gMk`kwk3@aE} zT0Z2mbb|Tq)nS3zoWsFLj~{wC$5WmbLMa{9K?`~t2^E#{)2CNJ34-E3g(sSUfanso z>gzN5`1m+&fA`SCwUw-u?j#DeZyOXsh^aQQED5InfbFYCbCx%*639IbI?Edw8R7C< z6Dx-DRJ&0-7M=$-XdLae=!xfSc`I?BpEg;`(@qfG zssB%apx; z7B);}C)wWb4w&r5FH0W28~L?A=mGp9U4Jd7p873{Zr??SJ&*+E=g)}g_FP?BKh%p2 z*Ime-40WP=B|P6fc6gO`I1;n*rD# zu0de7RcvBBmaW!xOZ@uqMvF4r*eDu2Rwk}%&`KVB$-wtLYd=0e^2Ti*?z<1QG}Q-n z@grKcg1f$vHCnPO${w?|whUEXI6^=CsB9^Ce{f19D}DC$@q?5`z{qoZ7=1126Amv6 zzaF{9-_(GY32r}RNOLaQ4jBfIznO~$D)DB6$2Fvt{w7SDE-P9GG%u&jtU=qh_g>0j z9g*H&rV<`uaMWHs_`LJ$h2TZ;fy;6XOE?_yhr73~$l^T;uYOtdWP;*>)LL#<&8(Vu z{q+Z$5|VvqSK;TlU3bAWv&~0U4CpGy4<}VTH&T1IjCNy|ykKXKQ>h5SLM-MdPOp61&>kM>l_o+|j^{jmyf4GArjl@Uon6+#k$DJsJBp@_oG^Pj-Z; z9EF?P>G`ZqjBFewTcf0@H_VKy;B)>k8i#gwL+uy`d5JJ+G6rYtSL(t zggzYO%8turraTv))>5uERR!<Wne=#cK=TD(|8Fna!mzP(^eO1__;etm43!INx zvJF$E;6C0b13Q);Zp)IUnr*P<{UpH_?)2sJ{z}niy$2HnU?m_ll>+X z@H?cm&c~V!nP+W7nZPg42gEiKHfYoo#^~jr_i@2!RTLCf0dJBq34t~iMvAkyW zrCYk*PjZO%p;XIvbhM{sZ7->+v@V9aZ(OI0lvg?OovLEnE4d+Saf(3rLlaz2dLg;B zZrzL*L!f`97wwLeNELEbgDWU2`6A@cS{(ow6l9i~w_IBW)qr`TU5ZmaJ5F0{m4yJ; z8nNzl8ot`D7ujH~zPs&N_ZO<*T~A>cJ(3T)qv!pv=rWKz$d)RFD8JpX@m3K6u#>e0 zzw_Z5_moJ!h_eoFl%&+x#DYWL-}ALv6=nSs!=pFA(6BXi`k<3m3)i&mTY@1CBw=YJ z?;2kW+FtfvuHT~p=9dyN2)|`?X4S9$Ex5OhHrQv7D3z_9S{8BV_(5C>KjEXxz-qs5 zYj+|-9OHDX@hvcmUxTPgHqw25{)tH{gzU~`oNl&+xJ1g`9(Y55Rc8NJF7S_zGQ|G9 z*6Za(c>pXEB!F7gfCk^(#9nz~^#Q6Okp0>@kRHZZq(vR{_~ac}+D2_SuSXljP9jfs z-azw_od^;f9IV8!5E8=49>`Aqfjo?zq!p|lA!!ll`iJ2H1N#5ej1c8?@LLj{p-N4% zfAb=Mt-N7#_zoBYNjG$@0UtOAY*_Sp>L43}2)&V0k#Jn!ZtU_~066c5O2G-@yv1FVW7-;(G0|Kwqdvk${67^(<2lNLQHnzWlZ_NhnC)qH+;(_7&mnfa zZb=OMcHi2ESdiyr1e18jVkzlS`;XB5#(R!$JF+?j-}%Y_^B}Z-X?_;nfb=|pR*NHG z42^TAysek?wZ{c0hLxNe3Dd39_g*=+?ts^@-teo4nDSA*;kdJ+(1uTyUQ9sx zy~5Cj=h7e2cdeOi^R(6xoh0i+i*L$}ORw2Gi?`v$!1$Oe;c9qti_|mgLl8m zwyJ(^6vgxVo^SI)bfCZfDiz|*hI!D+Ljm~@O-ko5TTpB+J1eU@;_wyi0%Go#lT7U;nKN^gmUXb>Io=rc@LHDn*#VKj{IgikeT0<;?>B4_iGJ AO8@`> From 32f410acfd30c13e94a18ab75cea32337eb71b4a Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Mon, 15 Nov 2021 20:28:01 -0600 Subject: [PATCH 06/26] the --- code/modules/telesci/quantum_pad.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/telesci/quantum_pad.dm b/code/modules/telesci/quantum_pad.dm index a7aa2f69a05..21110a459ee 100644 --- a/code/modules/telesci/quantum_pad.dm +++ b/code/modules/telesci/quantum_pad.dm @@ -43,7 +43,7 @@ if(!panel_open) . += "The panel is screwed in, obstructing the linking device." else - . += "The linking device is now able to be scanned with a multitool." + . += "The linking device is now able to be scanned with a multitool." /obj/machinery/power/quantumpad/RefreshParts() var/E = 0 From 2516a17bd4d64c7d07ed47303b31d43150f8490d Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 16 Nov 2021 01:40:24 -0500 Subject: [PATCH 07/26] SD QOL update Fixes a few map issues. --- code/game/objects/random/mapping.dm | 190 + .../animal/alien animals/jellyfish.dm | 171 + .../animal/alien animals/spookyghost.dm | 219 + .../animal/alien animals/startreader.dm | 175 + .../subtypes/animal/alien animals/teppi.dm | 2 +- .../projectiles/guns/energy/pummeler_vr.dm | 10 + .../modules/projectiles/projectile/special.dm | 7 +- icons/mob/alienanimals_x32.dmi | Bin 6436 -> 43439 bytes icons/obj/food_vr.dmi | Bin 29938 -> 30802 bytes maps/stellardelight/stellar_delight1.dmm | 300 +- maps/stellardelight/stellar_delight2.dmm | 203 +- maps/stellardelight/stellar_delight_areas.dm | 5 + .../stellardelight/stellar_delight_defines.dm | 79 +- .../stellar_delight_shuttle_defs.dm | 3 + maps/submaps/space_rocks/pois/bittynest1.dmm | 145 + maps/submaps/space_rocks/pois/bittynest2.dmm | 145 + maps/submaps/space_rocks/pois/bittynest3.dmm | 145 + maps/submaps/space_rocks/pois/bittynest4.dmm | 145 + maps/submaps/space_rocks/pois/clearing.dmm | 148 + maps/submaps/space_rocks/pois/seventemple.dmm | 498 + .../space_rocks/pois/spacecrystals.dmm | 471 + maps/submaps/space_rocks/pois/tunnel1.dmm | 251 + maps/submaps/space_rocks/pois/tunnel2.dmm | 275 + maps/submaps/space_rocks/space_rocks.dm | 88 + maps/submaps/space_rocks/space_rocks.dmm | 19911 ++++++++++++++++ maps/submaps/space_rocks/space_rocks_pois.dm | 96 + .../underdark_pois/underdark_things.dm | 187 - vorestation.dme | 4 + 28 files changed, 23515 insertions(+), 358 deletions(-) create mode 100644 code/modules/mob/living/simple_mob/subtypes/animal/alien animals/jellyfish.dm create mode 100644 code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spookyghost.dm create mode 100644 code/modules/mob/living/simple_mob/subtypes/animal/alien animals/startreader.dm create mode 100644 maps/submaps/space_rocks/pois/bittynest1.dmm create mode 100644 maps/submaps/space_rocks/pois/bittynest2.dmm create mode 100644 maps/submaps/space_rocks/pois/bittynest3.dmm create mode 100644 maps/submaps/space_rocks/pois/bittynest4.dmm create mode 100644 maps/submaps/space_rocks/pois/clearing.dmm create mode 100644 maps/submaps/space_rocks/pois/seventemple.dmm create mode 100644 maps/submaps/space_rocks/pois/spacecrystals.dmm create mode 100644 maps/submaps/space_rocks/pois/tunnel1.dmm create mode 100644 maps/submaps/space_rocks/pois/tunnel2.dmm create mode 100644 maps/submaps/space_rocks/space_rocks.dm create mode 100644 maps/submaps/space_rocks/space_rocks.dmm create mode 100644 maps/submaps/space_rocks/space_rocks_pois.dm diff --git a/code/game/objects/random/mapping.dm b/code/game/objects/random/mapping.dm index a98edbf5983..c67b06d8401 100644 --- a/code/game/objects/random/mapping.dm +++ b/code/game/objects/random/mapping.dm @@ -1456,3 +1456,193 @@ return pick(prob(5);/turf/simulated/floor/lava, prob(3);/turf/simulated/floor/outdoors/rocks/caves, prob(1);/turf/simulated/mineral) + +//VOREStation Add Start - Underdark stuff that would be cool if existed if the underdark doesn't. + +/obj/random/underdark + name = "random underdark loot" + desc = "Random loot for Underdark." + icon = 'icons/obj/items.dmi' + icon_state = "spickaxe" + +/obj/random/underdark/item_to_spawn() + return pick(prob(3);/obj/random/multiple/underdark/miningdrills, + prob(3);/obj/random/multiple/underdark/ores, + prob(2);/obj/random/multiple/underdark/treasure, + prob(1);/obj/random/multiple/underdark/mechtool) + +/obj/random/underdark/uncertain + icon_state = "upickaxe" + spawn_nothing_percentage = 65 //only 33% to spawn loot + +/obj/random/multiple/underdark/miningdrills + name = "random underdark mining tool loot" + desc = "Random mining tool loot for Underdark." + icon = 'icons/obj/items.dmi' + icon_state = "spickaxe" + +/obj/random/multiple/underdark/miningdrills/item_to_spawn() + return pick( + prob(10);list(/obj/item/weapon/pickaxe/silver), + prob(8);list(/obj/item/weapon/pickaxe/drill), + prob(6);list(/obj/item/weapon/pickaxe/jackhammer), + prob(5);list(/obj/item/weapon/pickaxe/gold), + prob(4);list(/obj/item/weapon/pickaxe/plasmacutter), + prob(2);list(/obj/item/weapon/pickaxe/diamond), + prob(1);list(/obj/item/weapon/pickaxe/diamonddrill) + ) + +/obj/random/multiple/underdark/ores + name = "random underdark mining ore loot" + desc = "Random mining utility loot for Underdark." + icon = 'icons/obj/mining.dmi' + icon_state = "satchel" + +/obj/random/multiple/underdark/ores/item_to_spawn() + return pick( + prob(9);list( + /obj/item/weapon/storage/bag/ore, + /obj/item/weapon/shovel, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/hydrogen, + /obj/item/weapon/ore/hydrogen, + /obj/item/weapon/ore/hydrogen, + /obj/item/weapon/ore/hydrogen, + /obj/item/weapon/ore/hydrogen, + /obj/item/weapon/ore/hydrogen + ), + prob(7);list( + /obj/item/weapon/storage/bag/ore, + /obj/item/weapon/pickaxe, + /obj/item/weapon/ore/osmium, + /obj/item/weapon/ore/osmium, + /obj/item/weapon/ore/osmium, + /obj/item/weapon/ore/osmium, + /obj/item/weapon/ore/osmium, + /obj/item/weapon/ore/osmium, + /obj/item/weapon/ore/osmium, + /obj/item/weapon/ore/osmium, + /obj/item/weapon/ore/osmium, + /obj/item/weapon/ore/osmium + ), + prob(4);list( + /obj/item/clothing/suit/radiation, + /obj/item/clothing/head/radiation, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium), + prob(2);list( + /obj/item/device/flashlight/lantern, + /obj/item/clothing/glasses/material, + /obj/item/weapon/ore/diamond, + /obj/item/weapon/ore/diamond, + /obj/item/weapon/ore/diamond, + /obj/item/weapon/ore/diamond, + /obj/item/weapon/ore/diamond, + /obj/item/weapon/ore/diamond, + /obj/item/weapon/ore/diamond, + /obj/item/weapon/ore/diamond, + /obj/item/weapon/ore/diamond, + /obj/item/weapon/ore/diamond + ), + prob(1);list( + /obj/item/weapon/mining_scanner, + /obj/item/weapon/shovel/spade, + /obj/item/weapon/ore/verdantium, + /obj/item/weapon/ore/verdantium, + /obj/item/weapon/ore/verdantium, + /obj/item/weapon/ore/verdantium, + /obj/item/weapon/ore/verdantium + ) + ) + +/obj/random/multiple/underdark/treasure + name = "random underdark treasure" + desc = "Random treasure loot for Underdark." + icon = 'icons/obj/storage.dmi' + icon_state = "cashbag" + +/obj/random/multiple/underdark/treasure/item_to_spawn() + return pick( + prob(5);list( + /obj/random/coin, + /obj/random/coin, + /obj/random/coin, + /obj/random/coin, + /obj/random/coin, + /obj/item/clothing/head/pirate + ), + prob(4);list( + /obj/item/weapon/storage/bag/cash, + /obj/item/weapon/spacecash/c500, + /obj/item/weapon/spacecash/c100, + /obj/item/weapon/spacecash/c50 + ), + prob(3);list( + /obj/item/clothing/head/hardhat/orange, + /obj/item/stack/material/gold, + /obj/item/stack/material/gold, + /obj/item/stack/material/gold, + /obj/item/stack/material/gold, + /obj/item/stack/material/gold, + /obj/item/stack/material/gold, + /obj/item/stack/material/gold, + /obj/item/stack/material/gold, + /obj/item/stack/material/gold, + /obj/item/stack/material/gold), + prob(1);list( + /obj/item/stack/material/phoron, + /obj/item/stack/material/phoron, + /obj/item/stack/material/phoron, + /obj/item/stack/material/phoron, + /obj/item/stack/material/diamond, + /obj/item/stack/material/diamond, + /obj/item/stack/material/diamond + ) + ) + +/obj/random/multiple/underdark/mechtool + name = "random underdark mech equipment" + desc = "Random mech equipment loot for Underdark." + icon = 'icons/mecha/mecha_equipment.dmi' + icon_state = "mecha_clamp" + +/obj/random/multiple/underdark/mechtool/item_to_spawn() + return pick( + prob(12);list(/obj/item/mecha_parts/mecha_equipment/tool/drill), + prob(10);list(/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp), + prob(8);list(/obj/item/mecha_parts/mecha_equipment/generator), + prob(7);list(/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot/rigged), + prob(6);list(/obj/item/mecha_parts/mecha_equipment/repair_droid), + prob(3);list(/obj/item/mecha_parts/mecha_equipment/gravcatapult), + prob(2);list(/obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser), + prob(2);list(/obj/item/mecha_parts/mecha_equipment/weapon/energy/flamer/rigged), + prob(1);list(/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill), + ) +//VOREStation Add End \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/jellyfish.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/jellyfish.dm new file mode 100644 index 00000000000..3347494b4ef --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/jellyfish.dm @@ -0,0 +1,171 @@ +GLOBAL_VAR_CONST(max_jellyfish, 50) +GLOBAL_VAR_INIT(jellyfish_count, 0) + + +/datum/category_item/catalogue/fauna/space_jellyfish + name = "Alien Wildlife - Space Jellyfish" + desc = "A hostile space predator. \ + This space jellyfish uses hypnotic patterns to lure in prey, which it then wraps in tentacles to leech energy from.\ + It is somewhat weak, but uses unknown means to stun prey. It uses the energy of its prey to replicate itself. \ + These creatures can quickly grow out of control if left to feed and reproduce unchecked. \ + Notable weakness to rapid cooling from ice based weaponry.\ + The flesh is typically non-toxic and quite delicious. Their cores are considered a delicacy in many regions." + value = CATALOGUER_REWARD_EASY + + +/mob/living/simple_mob/vore/alienanimals/space_jellyfish + name = "space jellyfish" + desc = "A semi-translucent space creature, possessing of tentacles and a hypnotizing, flashing bio-luminescent display." + tt_desc = "Semaeostomeae Stellarus" + catalogue_data = list(/datum/category_item/catalogue/fauna/space_jellyfish) + + icon = 'icons/mob/alienanimals_x32.dmi' + icon_state = "space_jellyfish" + icon_living = "space_jellyfish" + icon_dead = "space_jellyfish_dead" + has_eye_glow = TRUE + hovering = TRUE + + + faction = "jellyfish" + maxHealth = 100 + health = 100 + nutrition = 150 + pass_flags = PASSTABLE + movement_cooldown = 3.25 + + see_in_dark = 10 + + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "punches" + + harm_intent_damage = 1 + melee_damage_lower = 1 + melee_damage_upper = 2 + attack_sharp = FALSE + attack_sound = 'sound/weapons/tap.ogg' + attacktext = list("drained", "bludgeoned", "wraped", "tentacle whipped") + + ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive/jellyfish + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + maxbodytemp = 900 + + speak_emote = list("thrumms") + + meat_amount = 0 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/jellyfishcore + + say_list_type = /datum/say_list/jellyfish + + vore_active = 1 + vore_capacity = 1 + vore_bump_chance = 25 + vore_ignores_undigestable = 0 + vore_default_mode = DM_DRAIN + vore_icons = SA_ICON_LIVING + vore_stomach_name = "internal chamber" + vore_default_contamination_flavor = "Wet" + vore_default_contamination_color = "grey" + vore_default_item_mode = IM_DIGEST + + var/reproduction_cooldown = 0 + +/datum/say_list/jellyfish + emote_see = list("flickers", "flashes", "looms","pulses","sways","shimmers hypnotically") + + +/mob/living/simple_mob/vore/alienanimals/space_jellyfish/init_vore() + ..() + var/obj/belly/B = vore_selected + B.name = "internal chamber" + B.desc = "It's smooth and translucent. You can see the world around you distort and wobble with the movement of the space jellyfish. It floats casually, while the delicate flesh seems to form to you. It's surprisingly cool, and flickers with its own light. You're on display for all to see, trapped within the confines of this strange space alien!" + B.mode_flags = 40 + B.digest_brute = 0.5 + B.digest_burn = 0.5 + B.digestchance = 0 + B.absorbchance = 0 + B.escapechance = 15 + + +/mob/living/simple_mob/vore/alienanimals/space_jellyfish/apply_melee_effects(var/atom/A) + if(isliving(A)) + var/mob/living/L = A + var/leech = rand(1,100) + if(L.nutrition) + L.adjust_nutrition(-leech) + adjust_nutrition(leech) + if(prob(25)) + L.adjustHalLoss(leech) + +/mob/living/simple_mob/vore/alienanimals/space_jellyfish/New(newloc, jellyfish) + GLOB.jellyfish_count ++ + var/mob/living/simple_mob/vore/alienanimals/space_jellyfish/parent = jellyfish + if(parent) + parent.faction = faction + ..() + +/mob/living/simple_mob/vore/alienanimals/space_jellyfish/death() + . = ..() + new /obj/item/weapon/reagent_containers/food/snacks/jellyfishcore(loc, nutrition) + GLOB.jellyfish_count -- + qdel(src) + +/mob/living/simple_mob/vore/alienanimals/space_jellyfish/Life() + . = ..() + if(client) + return + reproduce() + +/mob/living/simple_mob/vore/alienanimals/space_jellyfish/proc/reproduce() + if(reproduction_cooldown > 0) + reproduction_cooldown -- + return + if(GLOB.jellyfish_count >= GLOB.max_jellyfish) + return + if(nutrition < 500) + return + if(prob(10)) + new /mob/living/simple_mob/vore/alienanimals/space_jellyfish(loc, src) + adjust_nutrition(-400) + reproduction_cooldown = 60 + +/mob/living/simple_mob/vore/alienanimals/space_jellyfish/Process_Spacemove(var/check_drift = 0) + return TRUE + +/datum/ai_holder/simple_mob/melee/evasive/jellyfish + hostile = TRUE + cooperative = FALSE + retaliate = TRUE + speak_chance = 2 + wander = TRUE + unconscious_vore = TRUE + +/obj/item/weapon/reagent_containers/food/snacks/jellyfishcore + name = "jellyfish core" + icon = 'icons/obj/food_vr.dmi' + icon_state = "jellyfish_core" + desc = "The pulsing core of a space jellyfish! ... It smells delicious." + nutriment_amt = 50 + bitesize = 1000 + nutriment_desc = list("heavenly space meat" = 100) + + var/inherited_nutriment = 0 + +/obj/item/weapon/reagent_containers/food/snacks/jellyfishcore/New(newloc, inherit) + inherited_nutriment = inherit + . = ..() + +/obj/item/weapon/reagent_containers/food/snacks/jellyfishcore/Initialize() + nutriment_amt += inherited_nutriment + . = ..() + reagents.add_reagent("nutriment", nutriment_amt, nutriment_desc) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spookyghost.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spookyghost.dm new file mode 100644 index 00000000000..3963cec0b66 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spookyghost.dm @@ -0,0 +1,219 @@ +/datum/category_item/catalogue/fauna/space_ghost + name = "Alien Wildlife - Space Ghost" + desc = "A mysterious and unknown creature made of radical energy.\ + This creature's energy interferes the nervous system in many kinds of creatures, which may result in hallucinations.\ + This creature's lack of a physical form leaves it quite resistant to physical damage.\ + Smaller variants of this creature seem to be vulnerable to bright light.\ + While both variants are quite vulnerable to laser and energy weapons." + value = CATALOGUER_REWARD_EASY + + +/mob/living/simple_mob/vore/alienanimals/space_ghost + name = "space ghost" + desc = "A pulsing mass of darkness that seems to have gained sentience." + tt_desc = "?????" + catalogue_data = list(/datum/category_item/catalogue/fauna/space_ghost) + + icon = 'icons/mob/alienanimals_x32.dmi' + icon_state = "space_ghost" + icon_living = "space_ghost" + icon_dead = "space_ghost_dead" + has_eye_glow = TRUE + hovering = TRUE + pass_flags = PASSTABLE + + faction = "space ghost" + maxHealth = 50 + health = 50 + movement_cooldown = 3.25 + + see_in_dark = 10 + + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "punches" + + harm_intent_damage = 0 + melee_damage_lower = 1 + melee_damage_upper = 1 + attack_sharp = FALSE + attacktext = list("spooked", "startled", "jumpscared", "screamed at") + + ai_holder_type = /datum/ai_holder/simple_mob/melee/space_ghost + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + maxbodytemp = 999999 + + armor = list( + "melee" = 100, + "bullet" = 100, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 100) + + armor_soak = list( + "melee" = 100, + "bullet" = 100, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 100 + ) + + speak_emote = list("rumbles") + + loot_list = list(/obj/item/weapon/ore/diamond) + + vore_active = 0 + + projectiletype = /mob/living/simple_mob/vore/alienanimals/spooky_ghost + projectilesound = null + projectile_accuracy = 0 + projectile_dispersion = 0 + + needs_reload = TRUE + reload_max = 1 + reload_count = 0 + reload_time = 7 SECONDS + + +/datum/ai_holder/simple_mob/ranged/kiting/space_ghost + hostile = TRUE + retaliate = TRUE + destructive = TRUE + violent_breakthrough = TRUE + speak_chance = 0 + +/mob/living/simple_mob/vore/alienanimals/space_ghost/apply_melee_effects(var/atom/A) + var/mob/living/L = A + L.hallucination += 50 + +/mob/living/simple_mob/vore/alienanimals/space_ghost/shoot(atom/A) //We're shooting ghosts at people and need them to have the same faction as their parent, okay? + if(!projectiletype) + return + if(A == get_turf(src)) + return + face_atom(A) + if(reload_count >= reload_max) + return + var/mob/living/simple_mob/P = new projectiletype(loc, src) + + if(!P) + return + if(needs_reload) + reload_count++ + + P.faction = faction + playsound(src, projectilesound, 80, 1) + +/mob/living/simple_mob/vore/alienanimals/space_ghost/death(gibbed, deathmessage = "fades away!") + . = ..() + qdel(src) + +/mob/living/simple_mob/vore/alienanimals/spooky_ghost + name = "space ghost" + desc = "A pulsing mass of darkness that seems to have gained sentience." + tt_desc = "?????" + catalogue_data = list(/datum/category_item/catalogue/fauna/space_ghost) + + icon = 'icons/mob/alienanimals_x32.dmi' + icon_state = "spookyghost-1" + icon_living = "spookyghost-1" + icon_dead = "space_ghost_dead" + hovering = TRUE + pass_flags = PASSTABLE + + faction = "space ghost" + maxHealth = 5 + health = 5 + movement_cooldown = 1 + + see_in_dark = 10 + alpha = 128 + + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "punches" + + harm_intent_damage = 0 + melee_damage_lower = 1 + melee_damage_upper = 1 + attack_sharp = FALSE + attacktext = list("spooked", "startled", "jumpscared", "screamed at") + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + maxbodytemp = 999999 + + armor = list( + "melee" = 100, + "bullet" = 100, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 100) + + armor_soak = list( + "melee" = 100, + "bullet" = 100, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 100 + ) + + speak_emote = list("rumbles") + + vore_active = 0 + + ai_holder_type = /datum/ai_holder/simple_mob/melee/space_ghost + +/mob/living/simple_mob/vore/alienanimals/spooky_ghost/Initialize() + . = ..() + icon_living = "spookyghost-[rand(1,2)]" + icon_state = icon_living + addtimer(CALLBACK(src, .proc/death), 2 MINUTES) + update_icon() + +/datum/ai_holder/simple_mob/melee/space_ghost + hostile = TRUE + retaliate = TRUE + destructive = TRUE + violent_breakthrough = TRUE + speak_chance = 0 + +/mob/living/simple_mob/vore/alienanimals/spooky_ghost/death(gibbed, deathmessage = "fades away!") + . = ..() + qdel(src) + +/mob/living/simple_mob/vore/alienanimals/spooky_ghost/apply_melee_effects(var/atom/A) + var/mob/living/L = A + L.hallucination += rand(1,50) + +/mob/living/simple_mob/vore/alienanimals/spooky_ghost/Life() + . = ..() + var/turf/T = get_turf(src) + if(!T) + return + if(T.get_lumcount() >= 0.5) + adjustBruteLoss(1) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/startreader.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/startreader.dm new file mode 100644 index 00000000000..362232bd8e0 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/startreader.dm @@ -0,0 +1,175 @@ +/datum/category_item/catalogue/fauna/startreader + name = "Alien Wildlife - Star Treader" + desc = "A hard shelled creature that lives on asteroids.\ + It is quite durable and very opportunistic in its feeding habits.\ + It is vulnerable to extreme vibrations, and from the bottom." + value = CATALOGUER_REWARD_EASY + + +/mob/living/simple_mob/vore/alienanimals/startreader + name = "asteroid star treader" + desc = "A slow, hard shelled creature that stalks asteroids." + tt_desc = "Testudines Stellarus" + catalogue_data = list(/datum/category_item/catalogue/fauna/startreader) + + icon = 'icons/mob/alienanimals_x32.dmi' + icon_state = "startreader" + icon_living = "startreader" + icon_dead = "startreader_dead" + + faction = "space turtle" + maxHealth = 1000 + health = 1000 + movement_cooldown = 20 + + see_in_dark = 10 + + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "punches" + + harm_intent_damage = 1 + melee_damage_lower = 1 + melee_damage_upper = 10 + attack_sharp = FALSE + attacktext = list("chomped", "bashed", "monched", "bumped") + + ai_holder_type = /datum/ai_holder/simple_mob/melee/startreader + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + maxbodytemp = 900 + + loot_list = list(/obj/random/underdark/uncertain) + + armor = list( + "melee" = 100, + "bullet" = 100, + "laser" = 100, + "energy" = 100, + "bomb" = 0, + "bio" = 100, + "rad" = 100) + + armor_soak = list( + "melee" = 30, + "bullet" = 30, + "laser" = 10, + "energy" = 10, + "bomb" = 0, + "bio" = 100, + "rad" = 100 + ) + + speak_emote = list("rumbles") + + say_list_type = /datum/say_list/startreader + + vore_active = 1 + vore_capacity = 2 + vore_bump_chance = 25 + vore_ignores_undigestable = 0 + vore_default_mode = DM_DRAIN + vore_icons = SA_ICON_LIVING + vore_stomach_name = "gastric sac" + vore_default_contamination_flavor = "Wet" + vore_default_contamination_color = "grey" + vore_default_item_mode = IM_DIGEST + + var/flipped = FALSE + var/flip_cooldown = 0 + +/datum/say_list/startreader + emote_see = list("bobs", "digs around","gnashes at something","yawns","snaps at something") + emote_hear = list("thrumms","clicks","rattles","groans","burbles") + + +/mob/living/simple_mob/vore/alienanimals/startreader/init_vore() + ..() + var/obj/belly/B = vore_selected + B.name = "gastric sac" + B.desc = "It's cramped and hot! You're forced into a small ball as your shape is squeezed into the slick, wet chamber. Despite being swallowed into the creature, you find that you actually stretch out of the top a ways, and can JUST BARELY wiggle around..." + B.mode_flags = 40 + B.digest_brute = 0.5 + B.digest_burn = 0.5 + B.digestchance = 10 + B.absorbchance = 0 + B.escapechance = 15 + +/datum/ai_holder/simple_mob/melee/startreader + hostile = TRUE + retaliate = TRUE + destructive = TRUE + violent_breakthrough = TRUE + +/mob/living/simple_mob/vore/alienanimals/startreader/apply_melee_effects(var/atom/A) + if(prob(25)) + var/mob/living/L = A + if(isliving(A)) + visible_message("\The [src] trips \the [L]!!") + L.weakened += rand(1,10) + +/mob/living/simple_mob/vore/alienanimals/startreader/Life() + . = ..() + if(flip_cooldown == 1) + flip_cooldown = 0 + flipped = FALSE + handle_flip() + visible_message("\The [src] rights itself!!!") + return + if(flip_cooldown) + flip_cooldown -- + SetStunned(2) + +/mob/living/simple_mob/vore/alienanimals/startreader/proc/handle_flip() + if(flipped) + armor = list( + "melee" = 0, + "bullet" = 0, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 0) + + armor_soak = list( + "melee" = 0, + "bullet" = 0, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 0 + ) + icon_living = "startreader_flipped" + AdjustStunned(flip_cooldown) + else + armor = list( + "melee" = 100, + "bullet" = 100, + "laser" = 100, + "energy" = 100, + "bomb" = 0, + "bio" = 100, + "rad" = 100) + + armor_soak = list( + "melee" = 30, + "bullet" = 30, + "laser" = 10, + "energy" = 10, + "bomb" = 0, + "bio" = 100, + "rad" = 100 + ) + icon_living = "startreader" + SetStunned(0) + + update_icon() \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm index 1d45bf84897..2735256b159 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm @@ -687,7 +687,7 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have? amount_grown -= rand(100,250) if(not_hungy) do_breeding() - if(prob(0.5)) + if(!client && prob(0.5)) teppi_sound() /mob/living/simple_mob/vore/alienanimals/teppi/proc/do_breeding() diff --git a/code/modules/projectiles/guns/energy/pummeler_vr.dm b/code/modules/projectiles/guns/energy/pummeler_vr.dm index 75563208f27..b4dd9ad472d 100644 --- a/code/modules/projectiles/guns/energy/pummeler_vr.dm +++ b/code/modules/projectiles/guns/energy/pummeler_vr.dm @@ -45,4 +45,14 @@ L.Confuse(1) L.throw_at(get_edge_target_turf(L, throwdir), rand(3,6), 10) + //VOREStation Add Start + if(istype(L, /mob/living/simple_mob/vore/alienanimals/startreader)) + var/mob/living/simple_mob/vore/alienanimals/startreader/S = L + if(!S.flipped) + S.adjustBruteLoss(100) + S.visible_message("\The [S] is flipped over!!!") + S.flipped = TRUE + S.flip_cooldown = 10 + S.handle_flip() + //VOREStation Add End return 1 diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index ee75074cc73..187ae883344 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -87,7 +87,12 @@ new_temperature = round(new_temperature * temp_factor) L.bodytemperature = new_temperature - + //VOREStation Add Start - The last metroid has escaped from captivity, the galaxy is no longer safe. + if(istype(L, /mob/living/simple_mob/vore/alienanimals/space_jellyfish) && target_temperature <= T0C) + var/mob/living/simple_mob/vore/alienanimals/space_jellyfish/J = L + J.adjustFireLoss(75) + J.movement_cooldown *= 2 + //VOREStation Add End return 1 /obj/item/projectile/temp/hot diff --git a/icons/mob/alienanimals_x32.dmi b/icons/mob/alienanimals_x32.dmi index f3cb748708fbb860ae890dfb47fb6ee83c427e70..ca7a825c23f59883602c5067a1ceb1a0e607b79d 100644 GIT binary patch literal 43439 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 HnFs$Lsy2Rx literal 6436 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 diff --git a/maps/stellardelight/stellar_delight1.dmm b/maps/stellardelight/stellar_delight1.dmm index 3517a361a90..c8ca2ee5f54 100644 --- a/maps/stellardelight/stellar_delight1.dmm +++ b/maps/stellardelight/stellar_delight1.dmm @@ -8,6 +8,7 @@ "ac" = ( /obj/structure/table/steel_reinforced, /obj/machinery/power/apc/angled{ + cell_type = /obj/item/weapon/cell/super; dir = 1; name = "night shift APC"; nightshift_setting = 2 @@ -3113,8 +3114,9 @@ dir = 4 }, /obj/machinery/power/apc/angled{ + cell_type = /obj/item/weapon/cell/super; dir = 8; - req_access = list(31) + req_access = list(31,5) }, /obj/structure/cable/yellow, /obj/machinery/light/floortube{ @@ -3933,7 +3935,11 @@ }, /obj/machinery/recharger/wallcharger{ pixel_x = 4; - pixel_y = 28 + pixel_y = 29 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 4; + pixel_y = 38 }, /turf/simulated/floor/tiled/dark, /area/security/security_cell_hallway) @@ -4212,6 +4218,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, +/obj/machinery/station_map{ + pixel_y = 32 + }, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/aft) "iT" = ( @@ -4251,6 +4260,15 @@ /obj/structure/flora/pottedplant/stoutbush, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/starboard) +"iX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/stellardelight/deck1/fore) "iY" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 @@ -4585,6 +4603,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 6 }, +/obj/machinery/hologram/holopad, /turf/simulated/floor/tiled/eris/steel/cargo, /area/stellardelight/deck1/mining) "jG" = ( @@ -4828,6 +4847,17 @@ }, /turf/simulated/floor/lino, /area/chapel/office) +"kl" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/milspec/color/emerald/half{ + dir = 4 + }, +/obj/machinery/station_map{ + dir = 8; + pixel_x = 32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/stellardelight/deck1/aft) "km" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -5971,6 +6001,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, +/obj/machinery/station_map{ + pixel_y = 32 + }, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/starboard) "mF" = ( @@ -6120,6 +6153,15 @@ }, /turf/simulated/floor/tiled/steel_ridged, /area/stellardelight/deck1/starboard) +"mT" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/stellardelight/deck1/fore) "mU" = ( /obj/structure/closet/emcloset, /turf/simulated/floor/tiled/dark, @@ -7958,6 +8000,9 @@ }, /turf/simulated/floor/tiled/steel_ridged, /area/stellardelight/deck1/resleeving) +"qX" = ( +/turf/space/internal_edge/right, +/area/stellardelight/deck1/starboard) "qY" = ( /obj/effect/floor_decal/milspec/color/orange/half, /turf/simulated/floor/tiled/dark, @@ -8145,6 +8190,11 @@ }, /turf/simulated/floor, /area/maintenance/stellardelight/substation/security) +"rt" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/folder/blue, +/turf/simulated/floor/tiled/milspec, +/area/stellardelight/deck1/explobriefing) "ru" = ( /obj/machinery/light_switch{ dir = 4; @@ -9572,6 +9622,9 @@ }, /turf/simulated/floor/carpet/purcarpet, /area/stellardelight/deck1/dorms/dorm2) +"uw" = ( +/turf/space/internal_edge/left, +/area/stellardelight/deck1/starboard) "ux" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ @@ -9678,6 +9731,10 @@ /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 9 }, +/obj/structure/closet/emergsuit_wall{ + dir = 8; + pixel_x = -27 + }, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/port) "uH" = ( @@ -10756,6 +10813,9 @@ /obj/structure/filingcabinet/chestdrawer, /turf/simulated/floor/tiled/dark, /area/security/security_processing) +"xe" = ( +/turf/simulated/wall/bay/r_wall/brown, +/area/stellardelight/deck1/starboard) "xf" = ( /obj/machinery/door/firedoor/glass, /obj/structure/window/bay/reinforced, @@ -10975,15 +11035,12 @@ /turf/simulated/floor/tiled/eris/steel/cargo, /area/stellardelight/deck1/oreprocessing) "xE" = ( -/obj/machinery/power/apc/angled{ - dir = 1 - }, -/obj/structure/cable/green{ - icon_state = "0-2" - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, +/obj/machinery/station_map{ + pixel_y = 32 + }, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/fore) "xF" = ( @@ -11200,8 +11257,9 @@ dir = 8 }, /obj/machinery/power/apc/angled{ + cell_type = /obj/item/weapon/cell/super; dir = 4; - req_access = list(19,43,67) + req_access = list(19,43,67,66,5) }, /obj/structure/cable/green{ color = "#42038a" @@ -14042,6 +14100,9 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_cell_hallway) +"Ef" = ( +/turf/space/internal_edge/top, +/area/stellardelight/deck1/starboard) "Eg" = ( /obj/structure/cable/green{ icon_state = "1-2" @@ -14215,6 +14276,18 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/xenobiology) +"EA" = ( +/obj/effect/floor_decal/milspec/color/red/half{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 10 + }, +/obj/machinery/firealarm/angled{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/stellardelight/deck1/fore) "EB" = ( /obj/machinery/door/window/eastright{ dir = 8; @@ -14263,6 +14336,18 @@ pixel_x = 4; pixel_y = 5 }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 4; + pixel_y = 20 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 4; + pixel_y = 28 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 4; + pixel_y = 36 + }, /turf/simulated/floor/tiled, /area/stellardelight/deck1/explobriefing) "EG" = ( @@ -14424,6 +14509,9 @@ }, /turf/simulated/floor/tiled/dark, /area/chapel/main) +"EZ" = ( +/turf/space/internal_edge/bottomright, +/area/stellardelight/deck1/starboard) "Fa" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 10 @@ -16004,18 +16092,19 @@ /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) "Iu" = ( -/obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/angled_bay/external/glass{ dir = 4; door_color = "#525252"; name = "Exploration Shuttle"; - req_one_access = list(19,43,67,66); + req_one_access = list(19,43,67,66,5); stripe_color = "#408f3b" }, /obj/structure/cable/green{ color = "#42038a"; icon_state = "4-8" }, +/obj/machinery/atmospheric_field_generator/perma, +/obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/tiled/steel_ridged, /area/stellardelight/deck1/exploshuttle) "Iw" = ( @@ -16243,6 +16332,9 @@ }, /turf/simulated/floor, /area/maintenance/stellardelight/deck1/portcent) +"IT" = ( +/turf/space/internal_edge/bottom, +/area/stellardelight/deck1/starboard) "IU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/white, @@ -17664,17 +17756,18 @@ /turf/simulated/wall/bay/r_wall/steel, /area/stellardelight/deck1/exploration) "Ma" = ( -/obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/angled_bay/external/glass{ dir = 4; door_color = "#a88860"; name = "Mining Shuttle"; - req_access = list(31); + req_access = list(31,5); stripe_color = "#69461a" }, /obj/structure/cable/yellow{ icon_state = "4-8" }, +/obj/machinery/atmospheric_field_generator/perma, +/obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/tiled/steel_ridged, /area/stellardelight/deck1/miningshuttle) "Mb" = ( @@ -17744,6 +17837,9 @@ /obj/structure/low_wall/bay/reinforced/purple, /turf/simulated/floor, /area/rnd/workshop) +"Mh" = ( +/turf/space/internal_edge/topleft, +/area/stellardelight/deck1/starboard) "Mi" = ( /obj/structure/table/standard, /obj/item/weapon/stock_parts/matter_bin, @@ -18465,6 +18561,9 @@ /area/assembly/robotics) "NN" = ( /obj/structure/table/steel_reinforced, +/obj/machinery/recharger{ + pixel_y = 5 + }, /turf/simulated/floor/tiled/dark, /area/security/lobby) "NP" = ( @@ -18496,6 +18595,9 @@ }, /turf/simulated/floor, /area/stellardelight/deck1/mining) +"NT" = ( +/turf/space/internal_edge/topright, +/area/stellardelight/deck1/starboard) "NV" = ( /obj/structure/cable/green{ color = "#42038a"; @@ -19556,7 +19658,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/firealarm/angled, +/obj/machinery/station_map{ + pixel_y = 32 + }, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/fore) "Qp" = ( @@ -20233,6 +20337,9 @@ }, /turf/simulated/floor/tiled/eris/white/bluecorner, /area/medical/exam_room) +"RI" = ( +/turf/space/internal_edge/bottomleft, +/area/stellardelight/deck1/starboard) "RJ" = ( /obj/machinery/light{ dir = 4 @@ -20332,7 +20439,7 @@ }, /obj/machinery/recharger/wallcharger{ pixel_x = 4; - pixel_y = 28 + pixel_y = 29 }, /obj/machinery/recharger/wallcharger{ pixel_x = 4; @@ -20341,14 +20448,24 @@ /obj/effect/floor_decal/milspec/color/red/half{ dir = 4 }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 4; + pixel_y = 38 + }, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) "RX" = ( -/obj/structure/cable/green{ - icon_state = "4-8" +/obj/effect/floor_decal/milspec/color/red/half{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 9 + }, +/obj/machinery/power/apc/angled{ + dir = 8 }, /obj/structure/cable/green{ - icon_state = "1-8" + icon_state = "0-2" }, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/fore) @@ -21318,6 +21435,8 @@ /obj/machinery/alarm/angled{ dir = 4 }, +/obj/item/paint_palette, +/obj/item/paint_brush, /turf/simulated/floor/wood, /area/library) "TW" = ( @@ -21613,6 +21732,7 @@ /area/rnd/research) "UB" = ( /obj/machinery/power/apc/angled{ + cell_type = /obj/item/weapon/cell/super; dir = 1; name = "night shift APC"; nightshift_setting = 2 @@ -22217,7 +22337,10 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, -/obj/structure/ore_box, +/obj/structure/table/standard, +/obj/machinery/recharger{ + pixel_y = 5 + }, /turf/simulated/floor/tiled/eris/steel/cargo, /area/stellardelight/deck1/mining) "VF" = ( @@ -23424,6 +23547,7 @@ /obj/machinery/camera/network/mining{ dir = 8 }, +/obj/structure/ore_box, /turf/simulated/floor/tiled/eris/steel/cargo, /area/stellardelight/deck1/mining) "Yi" = ( @@ -23573,7 +23697,9 @@ /area/security/tactical) "Yy" = ( /obj/structure/table/steel_reinforced, -/obj/machinery/recharger, +/obj/machinery/recharger{ + pixel_y = 5 + }, /obj/structure/sign/vacuum{ pixel_y = 32 }, @@ -23911,7 +24037,9 @@ /area/stellardelight/deck1/miningequipment) "Zh" = ( /obj/structure/table/woodentable, -/obj/item/weapon/folder/blue, +/obj/machinery/recharger{ + pixel_y = 5 + }, /turf/simulated/floor/tiled/milspec, /area/stellardelight/deck1/explobriefing) "Zi" = ( @@ -24093,7 +24221,14 @@ /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/aft) "ZC" = ( -/obj/machinery/firealarm/angled, +/obj/machinery/recharger/wallcharger{ + pixel_x = 4; + pixel_y = 20 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 4; + pixel_y = 29 + }, /turf/simulated/floor/tiled/eris/steel/cargo, /area/stellardelight/deck1/mining) "ZD" = ( @@ -24156,6 +24291,9 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, +/obj/machinery/firealarm/angled{ + dir = 8 + }, /turf/simulated/floor/tiled/eris/steel/cargo, /area/stellardelight/deck1/mining) "ZK" = ( @@ -24189,9 +24327,9 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/structure/closet/emergsuit_wall{ - dir = 8; - pixel_x = -27 +/obj/machinery/station_map{ + dir = 4; + pixel_x = -32 }, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/aft) @@ -31231,7 +31369,7 @@ Rz TC oZ Zh -zZ +rt OB Rz ny @@ -33157,7 +33295,7 @@ Zy SQ Yv xE -RX +zW xZ MA Zt @@ -33439,9 +33577,9 @@ Xk OD ZR QG -XC -IF -zW +RX +iX +mT Ku Ku Ku @@ -33742,13 +33880,13 @@ rW lC HT ER -uq -uq -uq -uq -uq -uq -uq +EZ +qX +qX +qX +qX +qX +NT vu Br AP @@ -33884,13 +34022,13 @@ SH jD PI IZ -uq -uq -uq -uq -uq -uq -uq +IT +xe +xe +xe +xe +xe +Ef AT Aq WE @@ -34026,13 +34164,13 @@ zg aj Wl IZ -uq -uq -uq -uq -uq -uq -uq +IT +xe +xe +xe +xe +xe +Ef AT Qd VH @@ -34168,13 +34306,13 @@ bi bi bi bi -uq -uq -uq -uq -uq -uq -uq +IT +xe +xe +xe +xe +xe +Ef IC IC IC @@ -34310,13 +34448,13 @@ Si gK LX wE -uq -uq -uq -uq -uq -uq -uq +IT +xe +xe +xe +xe +xe +Ef PA da dc @@ -34452,13 +34590,13 @@ KG sn kL wE -uq -uq -uq -uq -uq -uq -uq +IT +xe +xe +xe +xe +xe +Ef PA Wk iT @@ -34594,13 +34732,13 @@ HX Gu JB bi -uq -uq -uq -uq -uq -uq -uq +RI +uw +uw +uw +uw +uw +Mh IC RM De @@ -34859,7 +34997,7 @@ HN Tg Vr Hs -zb +EA zc zW Ku @@ -35751,7 +35889,7 @@ Wj MH xx xF -XJ +kl CV kv jg diff --git a/maps/stellardelight/stellar_delight2.dmm b/maps/stellardelight/stellar_delight2.dmm index 259e61b0d3a..24015009790 100644 --- a/maps/stellardelight/stellar_delight2.dmm +++ b/maps/stellardelight/stellar_delight2.dmm @@ -628,6 +628,9 @@ pixel_x = 32; pixel_y = 18 }, +/obj/structure/railing/grey{ + dir = 4 + }, /turf/simulated/floor/tiled/monotile, /area/stellardelight/deck2/aftport) "bn" = ( @@ -695,6 +698,9 @@ pixel_x = -32; pixel_y = 18 }, +/obj/structure/railing/grey{ + dir = 8 + }, /turf/simulated/floor/tiled/monotile, /area/stellardelight/deck2/aftstarboard) "bs" = ( @@ -2113,9 +2119,6 @@ /area/stellardelight/deck2/aftport) "eE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/portsolars) "eF" = ( @@ -2948,6 +2951,12 @@ }, /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos/monitoring) +"gA" = ( +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/stellardelight/deck2/fore) "gB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -2992,10 +3001,10 @@ /area/engineering/storage) "gF" = ( /obj/structure/cable/orange{ - icon_state = "2-8" + icon_state = "1-2" }, /obj/structure/cable/orange{ - icon_state = "1-2" + icon_state = "2-8" }, /turf/simulated/floor/airless, /area/stellardelight/deck2/exterior) @@ -3168,9 +3177,6 @@ /obj/machinery/alarm/angled{ dir = 8 }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/starboardsolars) "hb" = ( @@ -4149,13 +4155,15 @@ /turf/simulated/floor/tiled, /area/stellardelight/deck2/fore) "jz" = ( -/obj/machinery/firealarm/angled, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 1 }, +/obj/machinery/station_map{ + pixel_y = 32 + }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/aftstarboard) "jA" = ( @@ -5085,6 +5093,10 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos/monitoring) "lu" = ( @@ -5460,6 +5472,16 @@ }, /turf/simulated/floor/airless, /area/stellardelight/deck2/exterior) +"mb" = ( +/obj/effect/floor_decal/milspec/color/blue/half{ + dir = 4 + }, +/obj/machinery/station_map{ + dir = 8; + pixel_x = 32 + }, +/turf/simulated/floor/tiled, +/area/stellardelight/deck2/port) "md" = ( /obj/effect/floor_decal/industrial/outline, /obj/effect/floor_decal/steeldecal/steel_decals9, @@ -5512,14 +5534,15 @@ /area/stellardelight/deck2/port) "mj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal, -/obj/structure/cable{ - icon_state = "0-2" - }, /obj/machinery/power/apc/angled{ + cell_type = /obj/item/weapon/cell/super; dir = 4; name = "night shift APC"; nightshift_setting = 2 }, +/obj/structure/cable{ + icon_state = "0-8" + }, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/starboardsolars) "mk" = ( @@ -5771,6 +5794,10 @@ /obj/effect/floor_decal/milspec/color/silver/corner{ dir = 4 }, +/obj/machinery/station_map{ + dir = 8; + pixel_x = 32 + }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/fore) "mO" = ( @@ -6022,6 +6049,10 @@ /obj/effect/floor_decal/milspec/color/orange/half{ dir = 8 }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/aftport) "nx" = ( @@ -6694,6 +6725,9 @@ /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 1 }, +/obj/machinery/station_map{ + pixel_y = 32 + }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/fore) "pb" = ( @@ -6802,9 +6836,6 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/structure/cable{ - icon_state = "1-8" - }, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/portsolars) "pl" = ( @@ -7154,12 +7185,13 @@ /turf/simulated/floor/tiled/techfloor, /area/stellardelight/deck2/o2production) "pZ" = ( -/obj/machinery/firealarm/angled{ - dir = 4 - }, /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 4 }, +/obj/machinery/station_map{ + dir = 8; + pixel_x = 32 + }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/fore) "qa" = ( @@ -7220,6 +7252,9 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-4" + }, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/starboardsolars) "qi" = ( @@ -7608,6 +7643,9 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/portsolars) "qZ" = ( @@ -8691,9 +8729,6 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/structure/cable{ - icon_state = "1-4" - }, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/starboardsolars) "ty" = ( @@ -8704,6 +8739,7 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos/monitoring) "tz" = ( @@ -10375,6 +10411,10 @@ /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 1 }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/aftport) "xy" = ( @@ -11258,12 +11298,13 @@ dir = 4 }, /obj/machinery/power/apc/angled{ + cell_type = /obj/item/weapon/cell/super; dir = 8; name = "night shift APC"; nightshift_setting = 2 }, -/obj/structure/cable{ - icon_state = "0-2" +/obj/structure/cable/green{ + icon_state = "0-4" }, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/portsolars) @@ -12126,6 +12167,12 @@ /obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/plating, /area/engineering/storage) +"BA" = ( +/obj/structure/railing/grey{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/stellardelight/deck2/fore) "BB" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -12537,6 +12584,9 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos/monitoring) "CA" = ( @@ -12965,6 +13015,15 @@ "DB" = ( /turf/simulated/floor, /area/maintenance/stellardelight/deck2/atmos) +"DC" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 4 + }, +/obj/machinery/firealarm/angled{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/stellardelight/deck2/fore) "DD" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /obj/machinery/alarm/freezer{ @@ -13089,9 +13148,13 @@ /turf/simulated/floor/tiled/freezer/cold, /area/crew_quarters/kitchen) "DQ" = ( -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/sortjunction/flipped{ + dir = 1; + name = "Atmospherics"; + sortType = "Atmospherics" + }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/aftport) "DR" = ( @@ -14548,6 +14611,7 @@ /obj/machinery/power/terminal{ dir = 8 }, +/obj/structure/cable, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/portsolars) "GP" = ( @@ -14930,6 +14994,10 @@ /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 8 }, +/obj/machinery/station_map{ + dir = 4; + pixel_x = -32 + }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/aftport) "HH" = ( @@ -15218,6 +15286,7 @@ }, /obj/random/vendordrink, /obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/firealarm/angled, /turf/simulated/floor/tiled, /area/stellardelight/deck2/aftstarboard) "Il" = ( @@ -15336,6 +15405,16 @@ /obj/machinery/recharger, /turf/simulated/floor/tiled/eris/white/bluecorner, /area/stellardelight/deck2/triage) +"Iv" = ( +/obj/effect/floor_decal/milspec/color/blue/half{ + dir = 8 + }, +/obj/machinery/station_map{ + dir = 4; + pixel_x = -32 + }, +/turf/simulated/floor/tiled, +/area/stellardelight/deck2/starboard) "Iw" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -17241,7 +17320,9 @@ /area/crew_quarters/bar) "MM" = ( /obj/structure/table/standard, -/obj/machinery/recharger, +/obj/machinery/recharger{ + pixel_y = 5 + }, /obj/machinery/light/floortube{ pixel_y = -4 }, @@ -17943,6 +18024,7 @@ /area/medical/surgery2) "Oq" = ( /obj/machinery/power/apc/angled{ + cell_type = /obj/item/weapon/cell/super; dir = 8 }, /obj/structure/cable/cyan{ @@ -18181,6 +18263,10 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos/monitoring) "OU" = ( @@ -21553,6 +21639,9 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/tiled/steel_ridged, /area/engineering/atmos/monitoring) "WB" = ( @@ -21862,9 +21951,6 @@ /obj/machinery/alarm/angled{ dir = 4 }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/portsolars) "Xo" = ( @@ -21896,9 +21982,6 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/hidden, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/starboardsolars) "Xs" = ( @@ -30170,8 +30253,8 @@ UG cv cv cv -ZG -Jh +CP +SO Jh Jh Jh @@ -30312,6 +30395,7 @@ Zt qM Vm mq +Wb ZG Jh Jh @@ -30332,7 +30416,6 @@ Jh Jh Jh Jh -Jh "} (52,1,1) = {" Jh @@ -30454,6 +30537,7 @@ LG AV Vm Vm +Wb ZG Jh Jh @@ -30474,7 +30558,6 @@ Jh Jh Jh Jh -Jh "} (53,1,1) = {" Jh @@ -30596,8 +30679,8 @@ yg AV cv cv -ZG -Jh +Ds +kL Jh Jh Jh @@ -30880,8 +30963,8 @@ MP PB cv cv -ZG -Jh +CP +SO Jh Jh Jh @@ -31022,6 +31105,7 @@ ay wm Vm mq +Wb ZG Jh Jh @@ -31042,7 +31126,6 @@ Jh Jh Jh Jh -Jh "} (57,1,1) = {" Jh @@ -31164,6 +31247,7 @@ DR AV Vm Vm +Wb ZG Jh Jh @@ -31184,7 +31268,6 @@ Jh Jh Jh Jh -Jh "} (58,1,1) = {" Jh @@ -31306,8 +31389,8 @@ eg tk cv cv -ZG -Jh +Ds +kL Jh Jh Jh @@ -31682,7 +31765,7 @@ VP bA bA bA -bA +mb bA BP wF @@ -32094,7 +32177,7 @@ nt Rq Rq lQ -aA +gA Jq Xi kF @@ -33798,7 +33881,7 @@ nt Rq Rq lY -aA +BA Jq IK kF @@ -34238,7 +34321,7 @@ Ru nL WL WL -iu +Iv iu ec YX @@ -34500,7 +34583,7 @@ Zr Zr vj pZ -Zr +DC Zr OV Zr @@ -34714,8 +34797,8 @@ uo BN nq nq -ZG -Jh +CP +SO Jh Jh Jh @@ -34856,6 +34939,7 @@ cF Jk VJ Dw +Wb ZG Jh Jh @@ -34876,7 +34960,6 @@ Jh Jh Jh Jh -Jh "} (84,1,1) = {" Jh @@ -34998,6 +35081,7 @@ Nt Lw VJ VJ +Wb ZG Jh Jh @@ -35018,7 +35102,6 @@ Jh Jh Jh Jh -Jh "} (85,1,1) = {" Jh @@ -35140,8 +35223,8 @@ lk Lw nq nq -ZG -Jh +Ds +kL Jh Jh Jh @@ -35424,8 +35507,8 @@ jA Lw nq nq -ZG -Jh +CP +SO Jh Jh Jh @@ -35566,6 +35649,7 @@ lX yA VJ Dw +Wb ZG Jh Jh @@ -35586,7 +35670,6 @@ Jh Jh Jh Jh -Jh "} (89,1,1) = {" Jh @@ -35708,6 +35791,7 @@ nO nq VJ VJ +Wb ZG Jh Jh @@ -35728,7 +35812,6 @@ Jh Jh Jh Jh -Jh "} (90,1,1) = {" Jh @@ -35850,8 +35933,8 @@ SG rT rT rT -ZG -Jh +Ds +kL Jh Jh Jh diff --git a/maps/stellardelight/stellar_delight_areas.dm b/maps/stellardelight/stellar_delight_areas.dm index b1afbf617ce..47bb681c0a8 100644 --- a/maps/stellardelight/stellar_delight_areas.dm +++ b/maps/stellardelight/stellar_delight_areas.dm @@ -129,6 +129,7 @@ soundproofed = TRUE limit_mob_size = FALSE block_suit_sensors = TRUE + forbid_events = TRUE /area/stellardelight/deck1/dorms/dorm1 name = "Dormitory One" @@ -277,6 +278,10 @@ /area/stellardelight/deck3/readingroom name = "Reading Rooms" sound_env = SMALL_SOFTFLOOR + flags = RAD_SHIELDED| BLUE_SHIELDED |AREA_FLAG_IS_NOT_PERSISTENT + soundproofed = TRUE + block_suit_sensors = TRUE + forbid_events = TRUE /area/stellardelight/deck3/portdock name = "Port Dock" diff --git a/maps/stellardelight/stellar_delight_defines.dm b/maps/stellardelight/stellar_delight_defines.dm index 8e3ac822f66..0eef4582e53 100644 --- a/maps/stellardelight/stellar_delight_defines.dm +++ b/maps/stellardelight/stellar_delight_defines.dm @@ -4,15 +4,16 @@ #define Z_LEVEL_SHIP_HIGH 3 #define Z_LEVEL_CENTCOM 4 #define Z_LEVEL_MISC 5 -#define Z_LEVEL_BEACH 6 -#define Z_LEVEL_BEACH_CAVE 7 -#define Z_LEVEL_AEROSTAT 8 -#define Z_LEVEL_AEROSTAT_SURFACE 9 -#define Z_LEVEL_DEBRISFIELD 10 -#define Z_LEVEL_FUELDEPOT 11 -#define Z_LEVEL_OVERMAP 12 -#define Z_LEVEL_OFFMAP1 13 -#define Z_LEVEL_GATEWAY 14 +#define Z_LEVEL_SPACE_ROCKS 6 +#define Z_LEVEL_BEACH 7 +#define Z_LEVEL_BEACH_CAVE 8 +#define Z_LEVEL_AEROSTAT 9 +#define Z_LEVEL_AEROSTAT_SURFACE 10 +#define Z_LEVEL_DEBRISFIELD 11 +#define Z_LEVEL_FUELDEPOT 12 +#define Z_LEVEL_OVERMAP 13 +#define Z_LEVEL_OFFMAP1 14 +#define Z_LEVEL_GATEWAY 15 //Camera networks #define NETWORK_HALLS "Halls" @@ -46,12 +47,12 @@ lobby_screens = list("youcanttaketheskyfromme") id_hud_icons = 'icons/mob/hud_jobs_vr.dmi' -/* + holomap_smoosh = list(list( - Z_LEVEL_SURFACE_LOW, - Z_LEVEL_SURFACE_MID, - Z_LEVEL_SURFACE_HIGH)) -*/ + Z_LEVEL_SHIP_LOW, + Z_LEVEL_SHIP_MID, + Z_LEVEL_SHIP_HIGH)) + station_name = "NRV Stellar Delight" station_short = "Stellar Delight" dock_name = "Virgo-3B Colony" @@ -126,6 +127,7 @@ lateload_z_levels = list( list("Ship - Central Command"), list("Ship - Misc"), //Shuttle transit zones, holodeck templates, etc + list("V3b Asteroid Field"), list("Desert Planet - Z1 Beach","Desert Planet - Z2 Cave"), list("Remmi Aerostat - Z1 Aerostat","Remmi Aerostat - Z2 Surface"), list("Debris Field - Z1 Space"), @@ -177,17 +179,13 @@ . += "As an employee or contractor of NanoTrasen, operators of the Adephagia and one of the galaxy's largest corporations, you're probably just here to do a job." return jointext(., "
") -/* + /datum/map/stellar_delight/perform_map_generation() - new /datum/random_map/automata/cave_system/no_cracks(null, 1, 1, Z_LEVEL_SURFACE_MINE, world.maxx, world.maxy) // Create the mining Z-level. - new /datum/random_map/noise/ore(null, 1, 1, Z_LEVEL_SURFACE_MINE, 64, 64) // Create the mining ore distribution map. - - new /datum/random_map/automata/cave_system/no_cracks(null, 1, 1, Z_LEVEL_SOLARS, world.maxx, world.maxy) // Create the mining Z-level. - new /datum/random_map/noise/ore(null, 1, 1, Z_LEVEL_SOLARS, 64, 64) // Create the mining ore distribution map. - + new /datum/random_map/automata/cave_system/no_cracks(null, 1, 1, Z_LEVEL_SPACE_ROCKS, world.maxx, world.maxy) // Create the mining Z-level. + new /datum/random_map/noise/ore(null, 1, 1, Z_LEVEL_SPACE_ROCKS, 64, 64) // Create the mining ore distribution map. return 1 -*/ + /datum/skybox_settings/stellar_delight icon_state = "space5" @@ -200,12 +198,6 @@ Z_LEVEL_BEACH ) -// For making the 6-in-1 holomap, we calculate some offsets -#define SHIP_MAP_SIZE 140 // Width and height of compiled in tether z levels. -#define SHIP_HOLOMAP_CENTER_GUTTER 40 // 40px central gutter between columns -#define SHIP_HOLOMAP_MARGIN_X ((HOLOMAP_ICON_SIZE - (2*TETHER_MAP_SIZE) - TETHER_HOLOMAP_CENTER_GUTTER) / 2) // 80 -#define SHIP_HOLOMAP_MARGIN_Y ((HOLOMAP_ICON_SIZE - (2*TETHER_MAP_SIZE)) / 2) // 30 - /obj/effect/landmark/map_data/stellar_delight height = 3 @@ -241,6 +233,11 @@ return cached_skybox_image.add_overlay("glow") +// For making the 6-in-1 holomap, we calculate some offsets +#define SHIP_MAP_SIZE 140 // Width and height of compiled in tether z levels. +#define SHIP_HOLOMAP_CENTER_GUTTER 40 // 40px central gutter between columns +#define SHIP_HOLOMAP_MARGIN_X ((HOLOMAP_ICON_SIZE - (2*SHIP_MAP_SIZE) - SHIP_HOLOMAP_CENTER_GUTTER) / 2) // 80 +#define SHIP_HOLOMAP_MARGIN_Y ((HOLOMAP_ICON_SIZE - (2*SHIP_MAP_SIZE)) / 2) // 30 // We have a bunch of stuff common to the station z levels /datum/map_z_level/stellar_delight @@ -253,18 +250,24 @@ name = "Deck 1" base_turf = /turf/space transit_chance = 33 + holomap_offset_x = SHIP_HOLOMAP_MARGIN_X + holomap_offset_y = SHIP_HOLOMAP_MARGIN_Y /datum/map_z_level/stellar_delight/deck_two z = Z_LEVEL_SHIP_MID name = "Deck 2" base_turf = /turf/simulated/open transit_chance = 33 + holomap_offset_x = SHIP_HOLOMAP_MARGIN_X + holomap_offset_y = SHIP_HOLOMAP_MARGIN_Y + SHIP_MAP_SIZE /datum/map_z_level/stellar_delight/deck_three z = Z_LEVEL_SHIP_HIGH name = "Deck 3" base_turf = /turf/simulated/open transit_chance = 33 + holomap_offset_x = HOLOMAP_ICON_SIZE - SHIP_HOLOMAP_MARGIN_X - SHIP_MAP_SIZE + holomap_offset_y = SHIP_HOLOMAP_MARGIN_Y + SHIP_MAP_SIZE /datum/map_template/ship_lateload allow_duplicates = FALSE @@ -307,6 +310,26 @@ name = "Misc" flags = MAP_LEVEL_ADMIN|MAP_LEVEL_SEALED|MAP_LEVEL_CONTACT|MAP_LEVEL_XENOARCH_EXEMPT +#include "../submaps/space_rocks/space_rocks.dm" +/datum/map_template/ship_lateload/space_rocks + name = "V3b Asteroid Field" + desc = "Space debris is common in V3b's orbit due to the proximity of Virgo 3" + mappath = 'maps/submaps/space_rocks/space_rocks.dmm' + + associated_map_datum = /datum/map_z_level/ship_lateload/space_rocks + +/datum/map_template/ship_lateload/space_rocks/on_map_loaded(z) + . = ..() + seed_submaps(list(Z_LEVEL_SPACE_ROCKS), 60, /area/sdmine/unexplored, /datum/map_template/space_rocks) + new /datum/random_map/automata/cave_system/no_cracks(null, 3, 3, Z_LEVEL_SPACE_ROCKS, world.maxx - 4, world.maxy - 4) + new /datum/random_map/noise/ore/spacerocks(null, 1, 1, Z_LEVEL_SPACE_ROCKS, 64, 64) + +/datum/map_z_level/ship_lateload/space_rocks + z = Z_LEVEL_SPACE_ROCKS + name = "V3b Asteroid Field" + base_turf = /turf/space + + /datum/map_template/ship_lateload/overmap name = "Overmap" desc = "Overmap lives here :3" diff --git a/maps/stellardelight/stellar_delight_shuttle_defs.dm b/maps/stellardelight/stellar_delight_shuttle_defs.dm index 453c6562b18..fc7add9b0bb 100644 --- a/maps/stellardelight/stellar_delight_shuttle_defs.dm +++ b/maps/stellardelight/stellar_delight_shuttle_defs.dm @@ -250,8 +250,11 @@ skybox_pixel_x = 0 skybox_pixel_y = 0 + initial_generic_waypoints = list("sr-c","sr-n","sr-s") initial_restricted_waypoints = list("Central Command Shuttlepad" = list("cc_shuttlepad")) + extra_z_levels = list(Z_LEVEL_SPACE_ROCKS) + /////SD Starts at V3b to pick up crew refuel and repair (And to make sure it doesn't spawn on hazards) /obj/effect/overmap/visitable/sector/virgo3b/Initialize() . = ..() diff --git a/maps/submaps/space_rocks/pois/bittynest1.dmm b/maps/submaps/space_rocks/pois/bittynest1.dmm new file mode 100644 index 00000000000..9d73c9b765d --- /dev/null +++ b/maps/submaps/space_rocks/pois/bittynest1.dmm @@ -0,0 +1,145 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"L" = ( +/obj/random/underdark/uncertain, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/bittynest1) +"P" = ( +/turf/simulated/mineral/vacuum/sdmine, +/area/submap/space_rocks/bittynest1) +"W" = ( +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/bittynest1) +"Y" = ( +/obj/tether_away_spawner/asteroidbaddies, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/bittynest1) + +(1,1,1) = {" +a +a +a +a +P +P +a +a +a +a +"} +(2,1,1) = {" +a +a +a +P +P +P +P +W +a +a +"} +(3,1,1) = {" +a +a +P +P +W +W +W +W +P +a +"} +(4,1,1) = {" +a +P +P +W +W +P +P +P +P +a +"} +(5,1,1) = {" +P +P +W +W +W +W +W +Y +P +P +"} +(6,1,1) = {" +P +P +W +W +W +L +W +W +W +P +"} +(7,1,1) = {" +P +P +W +W +W +W +W +W +W +P +"} +(8,1,1) = {" +a +P +P +Y +W +W +W +W +P +P +"} +(9,1,1) = {" +a +a +P +P +P +P +P +P +P +a +"} +(10,1,1) = {" +a +a +a +a +a +P +P +a +a +a +"} diff --git a/maps/submaps/space_rocks/pois/bittynest2.dmm b/maps/submaps/space_rocks/pois/bittynest2.dmm new file mode 100644 index 00000000000..cb840bd5a47 --- /dev/null +++ b/maps/submaps/space_rocks/pois/bittynest2.dmm @@ -0,0 +1,145 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"v" = ( +/turf/simulated/mineral/vacuum/sdmine, +/area/submap/space_rocks/bittynest2) +"B" = ( +/obj/tether_away_spawner/asteroidbaddies, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/bittynest2) +"R" = ( +/obj/random/underdark/uncertain, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/bittynest2) +"W" = ( +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/bittynest2) + +(1,1,1) = {" +a +a +a +a +v +v +a +v +v +a +"} +(2,1,1) = {" +a +a +v +v +v +v +v +v +v +a +"} +(3,1,1) = {" +a +v +v +v +v +W +R +v +v +v +"} +(4,1,1) = {" +a +v +v +v +W +W +B +W +v +v +"} +(5,1,1) = {" +v +v +v +W +W +W +W +W +v +a +"} +(6,1,1) = {" +v +v +W +W +W +W +W +v +v +v +"} +(7,1,1) = {" +v +v +R +B +W +W +W +W +v +a +"} +(8,1,1) = {" +v +v +v +W +W +v +v +W +a +a +"} +(9,1,1) = {" +a +v +v +v +v +v +v +W +a +a +"} +(10,1,1) = {" +a +a +a +v +v +a +a +a +a +a +"} diff --git a/maps/submaps/space_rocks/pois/bittynest3.dmm b/maps/submaps/space_rocks/pois/bittynest3.dmm new file mode 100644 index 00000000000..7f845fd0c99 --- /dev/null +++ b/maps/submaps/space_rocks/pois/bittynest3.dmm @@ -0,0 +1,145 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"p" = ( +/obj/tether_away_spawner/asteroidbaddies, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/bittynest3) +"N" = ( +/obj/random/underdark/uncertain, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/bittynest3) +"Q" = ( +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/bittynest3) +"Z" = ( +/turf/simulated/mineral/vacuum/sdmine, +/area/submap/space_rocks/bittynest3) + +(1,1,1) = {" +a +a +Q +a +Z +Z +Z +Z +a +a +"} +(2,1,1) = {" +a +Z +Q +Q +Q +Z +Z +Z +Z +a +"} +(3,1,1) = {" +a +Z +Z +Q +Q +p +Q +Z +Z +Z +"} +(4,1,1) = {" +Z +Z +Z +Z +Z +Q +Q +Q +Z +Z +"} +(5,1,1) = {" +Z +Z +Z +p +Q +Z +Q +Q +Z +a +"} +(6,1,1) = {" +Z +Z +Q +Q +Q +Q +Q +Z +Z +a +"} +(7,1,1) = {" +Z +Z +Q +N +Q +Q +Q +Z +Z +a +"} +(8,1,1) = {" +a +Z +Z +Q +Q +Z +Z +Z +Z +a +"} +(9,1,1) = {" +a +a +Z +Z +Z +Z +Z +Z +a +a +"} +(10,1,1) = {" +a +a +a +Z +Z +Z +a +a +a +a +"} diff --git a/maps/submaps/space_rocks/pois/bittynest4.dmm b/maps/submaps/space_rocks/pois/bittynest4.dmm new file mode 100644 index 00000000000..2c4f1339517 --- /dev/null +++ b/maps/submaps/space_rocks/pois/bittynest4.dmm @@ -0,0 +1,145 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"m" = ( +/obj/tether_away_spawner/asteroidbaddies, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/bittynest4) +"x" = ( +/obj/random/underdark/uncertain, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/bittynest4) +"P" = ( +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/bittynest4) +"V" = ( +/turf/simulated/mineral/vacuum/sdmine, +/area/submap/space_rocks/bittynest4) + +(1,1,1) = {" +a +a +V +V +V +P +V +V +a +a +"} +(2,1,1) = {" +a +V +V +V +P +P +P +V +V +a +"} +(3,1,1) = {" +V +V +P +P +P +x +V +V +V +V +"} +(4,1,1) = {" +V +V +P +P +V +V +V +V +V +V +"} +(5,1,1) = {" +a +V +P +V +V +m +P +x +V +V +"} +(6,1,1) = {" +V +V +P +V +P +P +P +P +P +V +"} +(7,1,1) = {" +V +V +P +P +P +P +V +V +P +V +"} +(8,1,1) = {" +V +V +V +P +V +V +V +P +P +V +"} +(9,1,1) = {" +a +V +V +V +V +V +P +m +V +V +"} +(10,1,1) = {" +a +a +V +V +V +P +P +V +V +a +"} diff --git a/maps/submaps/space_rocks/pois/clearing.dmm b/maps/submaps/space_rocks/pois/clearing.dmm new file mode 100644 index 00000000000..3ffa6ed0850 --- /dev/null +++ b/maps/submaps/space_rocks/pois/clearing.dmm @@ -0,0 +1,148 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"v" = ( +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/clearing) +"y" = ( +/obj/random/contraband/nofail, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/clearing) +"P" = ( +/obj/random/underdark/uncertain, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/clearing) +"W" = ( +/obj/tether_away_spawner/asteroidbaddies, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/clearing) + +(1,1,1) = {" +a +a +a +a +v +v +a +a +a +a +"} +(2,1,1) = {" +a +a +v +v +v +v +v +v +a +a +"} +(3,1,1) = {" +a +v +v +v +v +v +v +v +v +a +"} +(4,1,1) = {" +a +v +v +v +v +v +v +v +v +a +"} +(5,1,1) = {" +v +v +v +v +P +v +v +v +v +v +"} +(6,1,1) = {" +v +v +v +W +v +y +v +v +v +v +"} +(7,1,1) = {" +a +v +v +v +v +v +v +v +v +a +"} +(8,1,1) = {" +a +v +v +v +v +v +v +v +v +a +"} +(9,1,1) = {" +a +a +v +v +v +v +v +v +a +a +"} +(10,1,1) = {" +a +a +a +a +v +v +a +a +a +a +"} diff --git a/maps/submaps/space_rocks/pois/seventemple.dmm b/maps/submaps/space_rocks/pois/seventemple.dmm new file mode 100644 index 00000000000..1c5162c6761 --- /dev/null +++ b/maps/submaps/space_rocks/pois/seventemple.dmm @@ -0,0 +1,498 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/obj/structure/loot_pile/surface/alien/medical, +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/submap/space_rocks/seventemple) +"f" = ( +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/seventemple) +"h" = ( +/obj/structure/loot_pile/surface/alien/end, +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/submap/space_rocks/seventemple) +"m" = ( +/turf/simulated/shuttle/floor/alien, +/area/submap/space_rocks/seventemple) +"p" = ( +/obj/structure/loot_pile/surface/bones, +/turf/simulated/shuttle/floor/alien/blue, +/area/submap/space_rocks/seventemple) +"q" = ( +/obj/random/underdark/uncertain, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/seventemple) +"t" = ( +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/submap/space_rocks/seventemple) +"w" = ( +/obj/structure/loot_pile/surface/alien/security, +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/submap/space_rocks/seventemple) +"y" = ( +/obj/structure/loot_pile/surface/drone, +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/submap/space_rocks/seventemple) +"F" = ( +/turf/simulated/shuttle/floor/alien/blue, +/area/submap/space_rocks/seventemple) +"J" = ( +/turf/simulated/wall/eris/r_wall, +/area/submap/space_rocks/seventemple) +"R" = ( +/obj/tether_away_spawner/asteroidbaddies, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/seventemple) +"Y" = ( +/obj/structure/loot_pile/surface/alien/engineering, +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/submap/space_rocks/seventemple) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +J +a +a +a +a +f +J +J +J +f +a +a +a +a +J +a +a +a +"} +(3,1,1) = {" +a +J +J +J +a +a +f +J +J +t +J +J +f +a +a +J +J +J +a +a +"} +(4,1,1) = {" +a +a +J +f +f +f +f +J +Y +t +t +J +f +f +f +f +J +a +a +a +"} +(5,1,1) = {" +a +a +a +f +R +f +f +J +t +t +t +J +f +f +f +f +a +a +a +a +"} +(6,1,1) = {" +a +a +f +f +f +f +f +J +t +y +t +J +f +f +R +f +f +a +a +a +"} +(7,1,1) = {" +a +f +f +f +f +f +J +J +t +m +t +J +J +f +f +f +f +f +a +a +"} +(8,1,1) = {" +a +f +f +f +f +J +J +m +t +t +t +m +J +J +f +f +f +f +a +a +"} +(9,1,1) = {" +a +f +q +f +J +J +t +t +t +F +t +t +t +J +J +f +f +f +a +a +"} +(10,1,1) = {" +J +f +f +f +J +w +t +t +F +p +F +t +t +h +J +f +f +f +J +a +"} +(11,1,1) = {" +a +f +f +f +J +J +t +t +t +F +t +t +t +J +J +f +f +f +a +a +"} +(12,1,1) = {" +a +f +f +f +f +J +J +m +t +t +t +m +J +J +f +f +f +f +a +a +"} +(13,1,1) = {" +a +f +f +f +f +f +J +J +t +m +t +J +J +f +f +f +q +f +a +a +"} +(14,1,1) = {" +a +a +f +f +f +f +f +J +t +y +t +J +f +f +f +f +f +a +a +a +"} +(15,1,1) = {" +a +a +a +f +R +f +f +J +t +t +t +J +f +f +R +f +a +a +a +a +"} +(16,1,1) = {" +a +a +J +f +f +f +f +J +b +t +t +J +f +f +f +f +J +a +a +a +"} +(17,1,1) = {" +a +J +J +J +a +a +f +J +J +t +J +J +f +a +a +J +J +J +a +a +"} +(18,1,1) = {" +a +a +J +a +a +a +a +f +J +J +J +f +a +a +a +a +J +a +a +a +"} +(19,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(20,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/submaps/space_rocks/pois/spacecrystals.dmm b/maps/submaps/space_rocks/pois/spacecrystals.dmm new file mode 100644 index 00000000000..6d799f7a1c3 --- /dev/null +++ b/maps/submaps/space_rocks/pois/spacecrystals.dmm @@ -0,0 +1,471 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"c" = ( +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/spacecrystals) +"j" = ( +/obj/random/underdark/uncertain, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/spacecrystals) +"W" = ( +/turf/simulated/mineral/vacuum/sdmine, +/area/submap/space_rocks/spacecrystals) +"X" = ( +/obj/tether_away_spawner/asteroidbaddies, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/spacecrystals) +"Z" = ( +/obj/machinery/crystal, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/spacecrystals) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +a +W +W +W +W +W +W +a +a +a +a +a +a +a +a +a +a +"} +(5,1,1) = {" +a +a +a +W +W +c +c +c +c +W +W +a +a +a +a +a +a +a +a +a +"} +(6,1,1) = {" +a +a +a +W +c +c +c +c +c +c +W +a +a +a +a +a +a +a +a +a +"} +(7,1,1) = {" +a +a +W +W +X +j +c +c +c +c +W +W +W +W +W +W +a +a +a +a +"} +(8,1,1) = {" +a +a +W +c +c +c +c +c +c +Z +c +c +c +c +W +W +a +a +a +a +"} +(9,1,1) = {" +a +a +W +c +c +c +c +Z +c +c +c +Z +c +c +c +W +W +a +a +a +"} +(10,1,1) = {" +a +a +W +W +c +c +c +c +c +c +c +c +c +j +c +c +W +a +a +a +"} +(11,1,1) = {" +a +a +a +W +W +W +c +c +c +Z +c +c +c +c +c +c +W +a +a +a +"} +(12,1,1) = {" +a +a +a +a +a +W +c +c +c +c +c +c +c +c +c +c +W +a +a +a +"} +(13,1,1) = {" +a +a +a +a +W +W +c +Z +c +c +c +Z +c +c +X +W +W +a +a +a +"} +(14,1,1) = {" +a +a +a +W +W +c +c +c +c +Z +c +c +W +W +W +W +a +a +a +a +"} +(15,1,1) = {" +a +a +a +W +c +c +j +X +c +c +c +W +W +a +a +a +a +a +a +a +"} +(16,1,1) = {" +a +a +a +W +c +c +c +c +c +c +W +W +a +a +a +a +a +a +a +a +"} +(17,1,1) = {" +a +a +a +W +c +c +c +c +c +W +W +a +a +a +a +a +a +a +a +a +"} +(18,1,1) = {" +a +a +a +W +W +c +W +c +W +W +a +a +a +a +a +a +a +a +a +a +"} +(19,1,1) = {" +a +a +a +a +W +W +W +W +W +a +a +a +a +a +a +a +a +a +a +a +"} +(20,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/submaps/space_rocks/pois/tunnel1.dmm b/maps/submaps/space_rocks/pois/tunnel1.dmm new file mode 100644 index 00000000000..ac611ad185d --- /dev/null +++ b/maps/submaps/space_rocks/pois/tunnel1.dmm @@ -0,0 +1,251 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/simulated/mineral/vacuum/sdmine, +/area/template_noop) +"b" = ( +/turf/simulated/floor/airless, +/area/submap/space_rocks/tunnel1) +"k" = ( +/obj/tether_away_spawner/asteroidbaddies, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/tunnel1) +"l" = ( +/turf/simulated/wall, +/area/submap/space_rocks/tunnel1) +"x" = ( +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/tunnel1) +"L" = ( +/turf/simulated/mineral/vacuum/sdmine, +/area/submap/space_rocks/tunnel1) +"Z" = ( +/obj/random/underdark/uncertain, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/tunnel1) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +L +l +L +L +L +L +l +x +L +L +L +L +l +x +x +L +L +L +l +L +"} +(4,1,1) = {" +L +b +L +L +Z +L +b +x +x +L +L +x +b +L +x +x +x +x +b +L +"} +(5,1,1) = {" +x +b +b +x +k +x +b +b +x +x +x +x +b +b +x +x +L +x +b +b +"} +(6,1,1) = {" +x +b +b +x +x +x +b +b +x +x +x +x +b +b +x +Z +k +x +b +b +"} +(7,1,1) = {" +L +b +L +k +x +L +b +x +x +x +x +x +b +x +x +L +x +x +b +L +"} +(8,1,1) = {" +L +l +x +x +L +L +l +L +x +x +L +L +l +L +L +L +L +L +l +L +"} +(9,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(10,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/submaps/space_rocks/pois/tunnel2.dmm b/maps/submaps/space_rocks/pois/tunnel2.dmm new file mode 100644 index 00000000000..9de921541c6 --- /dev/null +++ b/maps/submaps/space_rocks/pois/tunnel2.dmm @@ -0,0 +1,275 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/simulated/mineral/vacuum/sdmine, +/area/template_noop) +"f" = ( +/obj/tether_away_spawner/asteroidbaddies, +/turf/simulated/floor/airless, +/area/submap/space_rocks/tunnel2) +"i" = ( +/turf/simulated/floor/airless, +/area/submap/space_rocks/tunnel2) +"l" = ( +/obj/random/underdark/uncertain, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/tunnel2) +"q" = ( +/turf/simulated/wall, +/area/submap/space_rocks/tunnel2) +"z" = ( +/obj/tether_away_spawner/asteroidbaddies, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/tunnel2) +"C" = ( +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/submap/space_rocks/tunnel2) +"L" = ( +/turf/simulated/mineral/vacuum/sdmine, +/area/submap/space_rocks/tunnel2) + +(1,1,1) = {" +a +a +L +L +C +C +L +L +a +a +"} +(2,1,1) = {" +a +a +q +i +i +i +i +q +a +a +"} +(3,1,1) = {" +a +a +L +C +f +i +L +L +a +a +"} +(4,1,1) = {" +a +a +L +C +C +C +L +L +a +a +"} +(5,1,1) = {" +a +a +L +C +C +C +L +L +a +a +"} +(6,1,1) = {" +a +a +L +L +L +C +l +L +a +a +"} +(7,1,1) = {" +a +a +q +i +i +i +i +q +a +a +"} +(8,1,1) = {" +a +a +L +C +i +i +L +L +a +a +"} +(9,1,1) = {" +a +a +L +C +C +C +C +L +a +a +"} +(10,1,1) = {" +a +a +C +C +C +C +L +L +a +a +"} +(11,1,1) = {" +a +a +C +C +C +C +C +L +a +a +"} +(12,1,1) = {" +a +a +L +C +C +L +C +L +a +a +"} +(13,1,1) = {" +a +a +q +i +i +i +i +q +a +a +"} +(14,1,1) = {" +a +a +L +L +i +i +L +L +a +a +"} +(15,1,1) = {" +a +a +L +L +C +C +C +L +a +a +"} +(16,1,1) = {" +a +a +L +l +C +C +C +L +a +a +"} +(17,1,1) = {" +a +a +L +z +C +C +C +L +a +a +"} +(18,1,1) = {" +a +a +L +L +L +C +C +L +a +a +"} +(19,1,1) = {" +a +a +q +i +i +i +i +q +a +a +"} +(20,1,1) = {" +a +a +L +L +i +i +L +L +a +a +"} diff --git a/maps/submaps/space_rocks/space_rocks.dm b/maps/submaps/space_rocks/space_rocks.dm new file mode 100644 index 00000000000..cad5e3d2b64 --- /dev/null +++ b/maps/submaps/space_rocks/space_rocks.dm @@ -0,0 +1,88 @@ +/turf/simulated/mineral/vacuum/sdmine/make_ore(var/rare_ore) + if(mineral) + return + var/mineral_name + if(rare_ore) + mineral_name = pickweight(list( + "marble" = 3, + "uranium" = 10, + "platinum" = 10, + "hematite" = 20, + "carbon" = 5, + "diamond" = 1, + "gold" = 8, + "silver" = 8, + "phoron" = 18, + "lead" = 2, + "verdantium" = 1)) + else + mineral_name = pickweight(list( + "marble" = 2, + "uranium" = 5, + "platinum" = 5, + "hematite" = 35, + "carbon" = 5, + "gold" = 3, + "silver" = 3, + "phoron" = 25, + "lead" = 1)) + + if(mineral_name && (mineral_name in GLOB.ore_data)) + mineral = GLOB.ore_data[mineral_name] + UpdateMineral() + update_icon() + +/datum/random_map/noise/ore/spacerocks + descriptor = "asteroid field ore distribution map" + deep_val = 0.2 + rare_val = 0.1 + +/datum/random_map/noise/ore/spacerocks/check_map_sanity() + return 1 //Totally random, but probably beneficial. + +/area/sdmine/ + ambience = list('sound/ambience/ambimine.ogg', 'sound/ambience/song_game.ogg') + base_turf = /turf/simulated/mineral/floor/vacuum +/area/sdmine/unexplored + name = "asteroid field" + icon_state = "unexplored" +/area/sdmine/explored + name = "asteroid field" + icon_state = "explored" + + +/obj/effect/overmap/visitable/sector/virgo3b/generate_skybox(zlevel) + var/static/image/smallone = image(icon = 'icons/skybox/virgo3b.dmi', icon_state = "small") + + if(zlevel == Z_LEVEL_SPACE_ROCKS) + return smallone + +/////LANDING LANDMARKS +/obj/effect/shuttle_landmark/premade/spacerocks/center + name = "asteroid field center" + landmark_tag = "sr-c" + +/obj/effect/shuttle_landmark/premade/spacerocks/north + name = "asteroid field north" + landmark_tag = "sr-n" + +/obj/effect/shuttle_landmark/premade/spacerocks/south + name = "asteroid field south" + landmark_tag = "sr-s" + +/obj/tether_away_spawner/asteroidbaddies + name = "Asteroid Mob Spawner" + faction = "space_rock" + atmos_comp = TRUE + prob_spawn = 100 + prob_fall = 40 + //guard = 20 + mobs_to_pick_from = list( + /mob/living/simple_mob/animal/space/bats = 5, + /mob/living/simple_mob/vore/alienanimals/space_jellyfish = 10, + /mob/living/simple_mob/vore/alienanimals/startreader = 10, + /mob/living/simple_mob/vore/alienanimals/space_ghost = 3, + /mob/living/simple_mob/vore/oregrub = 1, + /obj/tether_away_spawner/debrisfield/carp = 2, + /obj/tether_away_spawner/debrisfield/carp/hard = 1 + ) diff --git a/maps/submaps/space_rocks/space_rocks.dmm b/maps/submaps/space_rocks/space_rocks.dmm new file mode 100644 index 00000000000..13f3f7d605e --- /dev/null +++ b/maps/submaps/space_rocks/space_rocks.dmm @@ -0,0 +1,19911 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/space, +/area/space) +"b" = ( +/obj/effect/shuttle_landmark/premade/spacerocks/north, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/sdmine/explored) +"v" = ( +/obj/effect/shuttle_landmark/premade/spacerocks/south, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/sdmine/explored) +"y" = ( +/obj/effect/shuttle_landmark/premade/spacerocks/center, +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/sdmine/explored) +"D" = ( +/turf/simulated/mineral/floor/vacuum{ + ignore_cavegen = 1 + }, +/area/sdmine/explored) +"J" = ( +/turf/simulated/mineral/vacuum/sdmine, +/area/sdmine/unexplored) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(5,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(6,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(7,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(8,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(9,1,1) = {" +a +a +a +a +a +a +a +a +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(10,1,1) = {" +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(11,1,1) = {" +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +"} +(12,1,1) = {" +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +"} +(13,1,1) = {" +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +"} +(14,1,1) = {" +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +"} +(15,1,1) = {" +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +"} +(16,1,1) = {" +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +"} +(17,1,1) = {" +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +"} +(18,1,1) = {" +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +"} +(19,1,1) = {" +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +"} +(20,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +a +a +a +a +a +a +a +a +"} +(21,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(22,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(23,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(24,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(25,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +"} +(26,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +"} +(27,1,1) = {" +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +"} +(28,1,1) = {" +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +a +J +J +J +J +a +J +J +J +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +"} +(29,1,1) = {" +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +"} +(30,1,1) = {" +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +"} +(31,1,1) = {" +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +"} +(32,1,1) = {" +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +"} +(33,1,1) = {" +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +"} +(34,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +"} +(35,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +"} +(36,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +"} +(37,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +D +a +a +a +a +a +a +"} +(38,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +D +a +a +a +a +a +a +"} +(39,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +D +D +D +D +J +J +J +J +J +J +J +J +J +D +D +a +a +a +a +a +a +"} +(40,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +a +a +D +D +D +D +D +D +D +D +J +J +J +J +J +D +D +D +D +a +a +a +a +a +a +"} +(41,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +"} +(42,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +"} +(43,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +"} +(44,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +"} +(45,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +"} +(46,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +"} +(47,1,1) = {" +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +"} +(48,1,1) = {" +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +"} +(49,1,1) = {" +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +"} +(50,1,1) = {" +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +"} +(51,1,1) = {" +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +v +D +D +D +D +D +D +a +a +a +a +a +a +a +a +"} +(52,1,1) = {" +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +"} +(53,1,1) = {" +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +"} +(54,1,1) = {" +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +"} +(55,1,1) = {" +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +"} +(56,1,1) = {" +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +"} +(57,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +"} +(58,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +D +D +D +a +a +a +a +a +"} +(59,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +a +a +a +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +D +a +a +a +a +a +"} +(60,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +a +a +a +a +a +"} +(61,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +"} +(62,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +"} +(63,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +"} +(64,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +"} +(65,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +"} +(66,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +"} +(67,1,1) = {" +a +a +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +"} +(68,1,1) = {" +a +a +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +"} +(69,1,1) = {" +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +"} +(70,1,1) = {" +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +"} +(71,1,1) = {" +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +"} +(72,1,1) = {" +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +"} +(73,1,1) = {" +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +"} +(74,1,1) = {" +a +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +"} +(75,1,1) = {" +a +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +"} +(76,1,1) = {" +a +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +"} +(77,1,1) = {" +a +a +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +"} +(78,1,1) = {" +a +a +a +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +"} +(79,1,1) = {" +a +a +a +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +"} +(80,1,1) = {" +a +a +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +"} +(81,1,1) = {" +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +y +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +"} +(82,1,1) = {" +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +"} +(83,1,1) = {" +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +b +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +"} +(84,1,1) = {" +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +"} +(85,1,1) = {" +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +"} +(86,1,1) = {" +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +"} +(87,1,1) = {" +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +D +D +D +J +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +"} +(88,1,1) = {" +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +D +D +D +D +D +D +J +J +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +"} +(89,1,1) = {" +a +a +a +a +a +a +a +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +"} +(90,1,1) = {" +a +a +a +a +a +a +a +a +D +D +D +D +J +J +J +J +J +J +J +D +D +D +D +D +D +D +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +"} +(91,1,1) = {" +a +a +a +a +a +a +a +a +D +D +D +J +J +J +J +J +J +J +J +J +J +J +D +D +D +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +"} +(92,1,1) = {" +a +a +a +a +a +a +a +a +D +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +D +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +"} +(93,1,1) = {" +a +a +a +a +a +a +a +a +a +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(94,1,1) = {" +a +a +a +a +a +a +a +a +D +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(95,1,1) = {" +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(96,1,1) = {" +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(97,1,1) = {" +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(98,1,1) = {" +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(99,1,1) = {" +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(100,1,1) = {" +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(101,1,1) = {" +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(102,1,1) = {" +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(103,1,1) = {" +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(104,1,1) = {" +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(105,1,1) = {" +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(106,1,1) = {" +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(107,1,1) = {" +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(108,1,1) = {" +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(109,1,1) = {" +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(110,1,1) = {" +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(111,1,1) = {" +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(112,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +"} +(113,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +"} +(114,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +"} +(115,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +"} +(116,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +"} +(117,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +"} +(118,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +"} +(119,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +"} +(120,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +"} +(121,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(122,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(123,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(124,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(125,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(126,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(127,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +a +J +J +a +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(128,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(129,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(130,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(131,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(132,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(133,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(134,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(135,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(136,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(137,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(138,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(139,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(140,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/submaps/space_rocks/space_rocks_pois.dm b/maps/submaps/space_rocks/space_rocks_pois.dm new file mode 100644 index 00000000000..8db8639c896 --- /dev/null +++ b/maps/submaps/space_rocks/space_rocks_pois.dm @@ -0,0 +1,96 @@ +#if MAP_TEST +#include "bittynest1.dmm" +#include "bittynest2.dmm" +#include "bittynest3.dmm" +#include "bittynest4.dmm" +#include "clearing.dmm" +#include "seventemple.dmm" +#include "spacecrystals.dmm" +#include "tunnel1.dmm" +#include "tunnel2.dmm" +#endif + +/area/submap/space_rocks + name = "POI - Space Rocks" + ambience = AMBIENCE_FOREBODING + +/area/submap/space_rocks/bittynest1 + name = "POI - Bittynest1" + +/datum/map_template/space_rocks/bittynest1 + name = "Bittynest1" + desc = "A smol nest for smol badguys" + mappath = 'pois/bittynest1.dmm' + cost = 5 + +/area/submap/space_rocks/bittynest2 + name = "POI - Bittynest2" + +/datum/map_template/space_rocks/bittynest2 + name = "Bittynest2" + desc = "A smol nest for smol badguys" + mappath = 'pois/bittynest2.dmm' + cost = 5 + +/area/submap/space_rocks/bittynest3 + name = "POI - Bittynest3" + +/datum/map_template/space_rocks/bittynest3 + name = "Bittynest3" + desc = "A smol nest for smol badguys" + mappath = 'pois/bittynest3.dmm' + cost = 5 + +/area/submap/space_rocks/bittynest4 + name = "POI - Bittynest4" + +/datum/map_template/space_rocks/bittynest4 + name = "Bittynest4" + desc = "A smol nest for smol badguys" + mappath = 'pois/bittynest4.dmm' + cost = 5 + +/area/submap/space_rocks/tunnel1 + name = "POI - Tunnel1" + +/datum/map_template/space_rocks/tunnel1 + name = "Tunnel1" + desc = "A tunnel left behind!" + mappath = 'pois/tunnel1.dmm' + cost = 10 + +/area/submap/space_rocks/tunnel2 + name = "POI - Tunnel2" + +/datum/map_template/space_rocks/tunnel2 + name = "Tunnel2" + desc = "A tunnel left behind!" + mappath = 'pois/tunnel2.dmm' + cost = 10 + +/area/submap/space_rocks/spacecrystals + name = "POI - Space Crystals" + +/datum/map_template/space_rocks/tunnel2 + name = "Space Crystals" + desc = "Some crystals living in space!" + mappath = 'pois/spacecrystals.dmm' + cost = 10 + +/area/submap/space_rocks/clearing + name = "POI - Clearing" + +/datum/map_template/space_rocks/clearing + name = "Clearing" + desc = "A clear spot for mischief to happen." + mappath = 'pois/clearing.dmm' + cost = 10 + +/area/submap/space_rocks/seventemple + name = "POI - Temple of the Seven" + +/datum/map_template/space_rocks/seventemple + name = "Temple of the Seven" + desc = "A mysterious space!" + mappath = 'pois/seventemple.dmm' + cost = 25 diff --git a/maps/tether/submaps/underdark_pois/underdark_things.dm b/maps/tether/submaps/underdark_pois/underdark_things.dm index b080985940c..22dd2e4e5ea 100644 --- a/maps/tether/submaps/underdark_pois/underdark_things.dm +++ b/maps/tether/submaps/underdark_pois/underdark_things.dm @@ -81,193 +81,6 @@ /mob/living/simple_mob/vore/aggressive/dragon = 1 ) -/obj/random/underdark - name = "random underdark loot" - desc = "Random loot for Underdark." - icon = 'icons/obj/items.dmi' - icon_state = "spickaxe" - -/obj/random/underdark/item_to_spawn() - return pick(prob(3);/obj/random/multiple/underdark/miningdrills, - prob(3);/obj/random/multiple/underdark/ores, - prob(2);/obj/random/multiple/underdark/treasure, - prob(1);/obj/random/multiple/underdark/mechtool) - -/obj/random/underdark/uncertain - icon_state = "upickaxe" - spawn_nothing_percentage = 65 //only 33% to spawn loot - -/obj/random/multiple/underdark/miningdrills - name = "random underdark mining tool loot" - desc = "Random mining tool loot for Underdark." - icon = 'icons/obj/items.dmi' - icon_state = "spickaxe" - -/obj/random/multiple/underdark/miningdrills/item_to_spawn() - return pick( - prob(10);list(/obj/item/weapon/pickaxe/silver), - prob(8);list(/obj/item/weapon/pickaxe/drill), - prob(6);list(/obj/item/weapon/pickaxe/jackhammer), - prob(5);list(/obj/item/weapon/pickaxe/gold), - prob(4);list(/obj/item/weapon/pickaxe/plasmacutter), - prob(2);list(/obj/item/weapon/pickaxe/diamond), - prob(1);list(/obj/item/weapon/pickaxe/diamonddrill) - ) - -/obj/random/multiple/underdark/ores - name = "random underdark mining ore loot" - desc = "Random mining utility loot for Underdark." - icon = 'icons/obj/mining.dmi' - icon_state = "satchel" - -/obj/random/multiple/underdark/ores/item_to_spawn() - return pick( - prob(9);list( - /obj/item/weapon/storage/bag/ore, - /obj/item/weapon/shovel, - /obj/item/weapon/ore/glass, - /obj/item/weapon/ore/glass, - /obj/item/weapon/ore/glass, - /obj/item/weapon/ore/glass, - /obj/item/weapon/ore/glass, - /obj/item/weapon/ore/glass, - /obj/item/weapon/ore/glass, - /obj/item/weapon/ore/glass, - /obj/item/weapon/ore/glass, - /obj/item/weapon/ore/glass, - /obj/item/weapon/ore/hydrogen, - /obj/item/weapon/ore/hydrogen, - /obj/item/weapon/ore/hydrogen, - /obj/item/weapon/ore/hydrogen, - /obj/item/weapon/ore/hydrogen, - /obj/item/weapon/ore/hydrogen - ), - prob(7);list( - /obj/item/weapon/storage/bag/ore, - /obj/item/weapon/pickaxe, - /obj/item/weapon/ore/osmium, - /obj/item/weapon/ore/osmium, - /obj/item/weapon/ore/osmium, - /obj/item/weapon/ore/osmium, - /obj/item/weapon/ore/osmium, - /obj/item/weapon/ore/osmium, - /obj/item/weapon/ore/osmium, - /obj/item/weapon/ore/osmium, - /obj/item/weapon/ore/osmium, - /obj/item/weapon/ore/osmium - ), - prob(4);list( - /obj/item/clothing/suit/radiation, - /obj/item/clothing/head/radiation, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium, - /obj/item/weapon/ore/uranium), - prob(2);list( - /obj/item/device/flashlight/lantern, - /obj/item/clothing/glasses/material, - /obj/item/weapon/ore/diamond, - /obj/item/weapon/ore/diamond, - /obj/item/weapon/ore/diamond, - /obj/item/weapon/ore/diamond, - /obj/item/weapon/ore/diamond, - /obj/item/weapon/ore/diamond, - /obj/item/weapon/ore/diamond, - /obj/item/weapon/ore/diamond, - /obj/item/weapon/ore/diamond, - /obj/item/weapon/ore/diamond - ), - prob(1);list( - /obj/item/weapon/mining_scanner, - /obj/item/weapon/shovel/spade, - /obj/item/weapon/ore/verdantium, - /obj/item/weapon/ore/verdantium, - /obj/item/weapon/ore/verdantium, - /obj/item/weapon/ore/verdantium, - /obj/item/weapon/ore/verdantium - ) - ) - -/obj/random/multiple/underdark/treasure - name = "random underdark treasure" - desc = "Random treasure loot for Underdark." - icon = 'icons/obj/storage.dmi' - icon_state = "cashbag" - -/obj/random/multiple/underdark/treasure/item_to_spawn() - return pick( - prob(5);list( - /obj/random/coin, - /obj/random/coin, - /obj/random/coin, - /obj/random/coin, - /obj/random/coin, - /obj/item/clothing/head/pirate - ), - prob(4);list( - /obj/item/weapon/storage/bag/cash, - /obj/item/weapon/spacecash/c500, - /obj/item/weapon/spacecash/c100, - /obj/item/weapon/spacecash/c50 - ), - prob(3);list( - /obj/item/clothing/head/hardhat/orange, - /obj/item/stack/material/gold, - /obj/item/stack/material/gold, - /obj/item/stack/material/gold, - /obj/item/stack/material/gold, - /obj/item/stack/material/gold, - /obj/item/stack/material/gold, - /obj/item/stack/material/gold, - /obj/item/stack/material/gold, - /obj/item/stack/material/gold, - /obj/item/stack/material/gold), - prob(1);list( - /obj/item/stack/material/phoron, - /obj/item/stack/material/phoron, - /obj/item/stack/material/phoron, - /obj/item/stack/material/phoron, - /obj/item/stack/material/diamond, - /obj/item/stack/material/diamond, - /obj/item/stack/material/diamond - ) - ) - -/obj/random/multiple/underdark/mechtool - name = "random underdark mech equipment" - desc = "Random mech equipment loot for Underdark." - icon = 'icons/mecha/mecha_equipment.dmi' - icon_state = "mecha_clamp" - -/obj/random/multiple/underdark/mechtool/item_to_spawn() - return pick( - prob(12);list(/obj/item/mecha_parts/mecha_equipment/tool/drill), - prob(10);list(/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp), - prob(8);list(/obj/item/mecha_parts/mecha_equipment/generator), - prob(7);list(/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot/rigged), - prob(6);list(/obj/item/mecha_parts/mecha_equipment/repair_droid), - prob(3);list(/obj/item/mecha_parts/mecha_equipment/gravcatapult), - prob(2);list(/obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser), - prob(2);list(/obj/item/mecha_parts/mecha_equipment/weapon/energy/flamer/rigged), - prob(1);list(/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill), - ) - //POI STUFF VIRGO3B_TURF_CREATE(/turf/simulated/mineral/ignore_oregen) VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor/ignore_oregen) diff --git a/vorestation.dme b/vorestation.dme index 49ca4c06856..32d48414f54 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2954,6 +2954,9 @@ #include "code\modules\mob\living\simple_mob\taming.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\animal.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\alien animals\catslug.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\alien animals\jellyfish.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\alien animals\spookyghost.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\alien animals\startreader.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\alien animals\teppi.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer_captive.dm" @@ -4084,6 +4087,7 @@ #include "maps\submaps\engine_submaps\engine.dm" #include "maps\submaps\engine_submaps\engine_areas.dm" #include "maps\submaps\engine_submaps_vr\tether\_engine_submaps.dm" +#include "maps\submaps\space_rocks\space_rocks_pois.dm" #include "maps\submaps\space_submaps\space.dm" #include "maps\submaps\space_submaps\debrisfield\debrisfield.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness.dm" From 6b7f935633dda34e1bdb6f5f1526c3333e7a0ba1 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 16 Nov 2021 01:46:08 -0500 Subject: [PATCH 08/26] This one too --- maps/stellardelight/stellar_delight3.dmm | 40 ++++++++++++++++++------ 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/maps/stellardelight/stellar_delight3.dmm b/maps/stellardelight/stellar_delight3.dmm index 2e3ee98230c..619926bec2a 100644 --- a/maps/stellardelight/stellar_delight3.dmm +++ b/maps/stellardelight/stellar_delight3.dmm @@ -51,6 +51,9 @@ /obj/structure/sign/directions/cargo{ pixel_x = 32 }, +/obj/structure/railing/grey{ + dir = 4 + }, /turf/simulated/floor/tiled/monotile, /area/stellardelight/deck3/aft) "ai" = ( @@ -78,6 +81,9 @@ /obj/structure/sign/directions/cargo{ pixel_x = -32 }, +/obj/structure/railing/grey{ + dir = 8 + }, /turf/simulated/floor/tiled/monotile, /area/stellardelight/deck3/aft) "al" = ( @@ -2188,12 +2194,6 @@ /area/stellardelight/deck3/cryo) "iE" = ( /obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/angled_bay/hatch{ - door_color = "#e6ab22"; - name = "Shield Generator"; - req_access = list(11,24); - stripe_color = "#e6ab22" - }, /obj/machinery/door/airlock/angled_bay/hatch{ door_color = "#e6ab22"; name = "Shield Generator"; @@ -2483,6 +2483,13 @@ }, /turf/simulated/floor/tiled/techfloor, /area/crew_quarters/heads/hor) +"jO" = ( +/obj/machinery/station_map{ + dir = 4; + pixel_x = -32 + }, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/stellardelight/deck3/commandhall) "jP" = ( /obj/machinery/alarm/angled, /obj/effect/floor_decal/steeldecal/steel_decals5{ @@ -6021,10 +6028,12 @@ /area/ai_cyborg_station) "wP" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/machinery/camera/network/halls, /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 1 }, +/obj/machinery/station_map{ + pixel_y = 32 + }, /turf/simulated/floor/tiled, /area/stellardelight/deck3/aft) "wQ" = ( @@ -9151,6 +9160,9 @@ "HR" = ( /obj/structure/table/steel, /obj/random/contraband, +/obj/machinery/chemical_dispenser/bar_coffee/full{ + pixel_y = 8 + }, /turf/simulated/floor, /area/maintenance/stellardelight/deck3/foreportrooma) "HS" = ( @@ -9788,6 +9800,9 @@ dir = 1 }, /obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/machinery/camera/network/halls{ + dir = 1 + }, /turf/simulated/floor/tiled, /area/stellardelight/deck3/aft) "Kg" = ( @@ -11394,6 +11409,9 @@ dir = 1 }, /obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/machinery/camera/network/halls{ + dir = 1 + }, /turf/simulated/floor/tiled, /area/stellardelight/deck3/aft) "PB" = ( @@ -12394,6 +12412,7 @@ }, /obj/structure/disposalpipe/segment, /obj/machinery/power/apc/angled{ + cell_type = /obj/item/weapon/cell/super; dir = 8; name = "night shift APC"; nightshift_setting = 2 @@ -12634,10 +12653,12 @@ /area/stellardelight/deck3/exterior) "Uy" = ( /obj/machinery/atmospherics/unary/vent_pump/on, -/obj/machinery/camera/network/halls, /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 1 }, +/obj/machinery/station_map{ + pixel_y = 32 + }, /turf/simulated/floor/tiled, /area/stellardelight/deck3/aft) "UA" = ( @@ -13340,6 +13361,7 @@ /area/lawoffice) "WQ" = ( /obj/machinery/power/apc/angled{ + cell_type = /obj/item/weapon/cell/super; dir = 4; name = "night shift APC"; nightshift_setting = 2 @@ -23878,7 +23900,7 @@ BK aQ aQ sf -aQ +jO aQ BK aQ From 6e975d2b4c64e4291f50c958e3ad989c727d0e0d Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 16 Nov 2021 02:08:38 -0500 Subject: [PATCH 09/26] Wow! You can't put spawners in mob spawners SILLY! --- maps/submaps/space_rocks/space_rocks.dm | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/maps/submaps/space_rocks/space_rocks.dm b/maps/submaps/space_rocks/space_rocks.dm index cad5e3d2b64..9e5c5d5a816 100644 --- a/maps/submaps/space_rocks/space_rocks.dm +++ b/maps/submaps/space_rocks/space_rocks.dm @@ -78,11 +78,12 @@ prob_fall = 40 //guard = 20 mobs_to_pick_from = list( - /mob/living/simple_mob/animal/space/bats = 5, - /mob/living/simple_mob/vore/alienanimals/space_jellyfish = 10, - /mob/living/simple_mob/vore/alienanimals/startreader = 10, - /mob/living/simple_mob/vore/alienanimals/space_ghost = 3, + /mob/living/simple_mob/animal/space/bats = 10, + /mob/living/simple_mob/vore/alienanimals/space_jellyfish = 15, + /mob/living/simple_mob/vore/alienanimals/startreader = 15, + /mob/living/simple_mob/vore/alienanimals/space_ghost = 6, /mob/living/simple_mob/vore/oregrub = 1, - /obj/tether_away_spawner/debrisfield/carp = 2, - /obj/tether_away_spawner/debrisfield/carp/hard = 1 + /mob/living/simple_mob/animal/space/carp = 3, + /mob/living/simple_mob/animal/space/carp/large = 1, + /mob/living/simple_mob/animal/space/carp/large/huge = 1 ) From 5203987469aa900a563e13f90cc66c21d229c3ec Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 16 Nov 2021 02:16:57 -0500 Subject: [PATCH 10/26] Yeah this too! --- maps/submaps/space_rocks/space_rocks_pois.dm | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/maps/submaps/space_rocks/space_rocks_pois.dm b/maps/submaps/space_rocks/space_rocks_pois.dm index 8db8639c896..8d2380d659a 100644 --- a/maps/submaps/space_rocks/space_rocks_pois.dm +++ b/maps/submaps/space_rocks/space_rocks_pois.dm @@ -1,13 +1,13 @@ #if MAP_TEST -#include "bittynest1.dmm" -#include "bittynest2.dmm" -#include "bittynest3.dmm" -#include "bittynest4.dmm" -#include "clearing.dmm" -#include "seventemple.dmm" -#include "spacecrystals.dmm" -#include "tunnel1.dmm" -#include "tunnel2.dmm" +#include "pois/bittynest1.dmm" +#include "pois/bittynest2.dmm" +#include "pois/bittynest3.dmm" +#include "pois/bittynest4.dmm" +#include "pois/clearing.dmm" +#include "pois/seventemple.dmm" +#include "pois/spacecrystals.dmm" +#include "pois/tunnel1.dmm" +#include "pois/tunnel2.dmm" #endif /area/submap/space_rocks From 1ba0f9d68f9c10f5064f050406dfd7a1fc586fe8 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 16 Nov 2021 02:26:40 -0500 Subject: [PATCH 11/26] Okay lets make it more like the other thing --- .../space_rocks/{pois => }/bittynest1.dmm | 0 .../space_rocks/{pois => }/bittynest2.dmm | 0 .../space_rocks/{pois => }/bittynest3.dmm | 0 .../space_rocks/{pois => }/bittynest4.dmm | 0 .../space_rocks/{pois => }/clearing.dmm | 0 .../space_rocks/{pois => }/seventemple.dmm | 0 maps/submaps/space_rocks/space_rocks_pois.dm | 36 +++++++++---------- .../space_rocks/{pois => }/spacecrystals.dmm | 0 .../space_rocks/{pois => }/tunnel1.dmm | 0 .../space_rocks/{pois => }/tunnel2.dmm | 0 10 files changed, 18 insertions(+), 18 deletions(-) rename maps/submaps/space_rocks/{pois => }/bittynest1.dmm (100%) rename maps/submaps/space_rocks/{pois => }/bittynest2.dmm (100%) rename maps/submaps/space_rocks/{pois => }/bittynest3.dmm (100%) rename maps/submaps/space_rocks/{pois => }/bittynest4.dmm (100%) rename maps/submaps/space_rocks/{pois => }/clearing.dmm (100%) rename maps/submaps/space_rocks/{pois => }/seventemple.dmm (100%) rename maps/submaps/space_rocks/{pois => }/spacecrystals.dmm (100%) rename maps/submaps/space_rocks/{pois => }/tunnel1.dmm (100%) rename maps/submaps/space_rocks/{pois => }/tunnel2.dmm (100%) diff --git a/maps/submaps/space_rocks/pois/bittynest1.dmm b/maps/submaps/space_rocks/bittynest1.dmm similarity index 100% rename from maps/submaps/space_rocks/pois/bittynest1.dmm rename to maps/submaps/space_rocks/bittynest1.dmm diff --git a/maps/submaps/space_rocks/pois/bittynest2.dmm b/maps/submaps/space_rocks/bittynest2.dmm similarity index 100% rename from maps/submaps/space_rocks/pois/bittynest2.dmm rename to maps/submaps/space_rocks/bittynest2.dmm diff --git a/maps/submaps/space_rocks/pois/bittynest3.dmm b/maps/submaps/space_rocks/bittynest3.dmm similarity index 100% rename from maps/submaps/space_rocks/pois/bittynest3.dmm rename to maps/submaps/space_rocks/bittynest3.dmm diff --git a/maps/submaps/space_rocks/pois/bittynest4.dmm b/maps/submaps/space_rocks/bittynest4.dmm similarity index 100% rename from maps/submaps/space_rocks/pois/bittynest4.dmm rename to maps/submaps/space_rocks/bittynest4.dmm diff --git a/maps/submaps/space_rocks/pois/clearing.dmm b/maps/submaps/space_rocks/clearing.dmm similarity index 100% rename from maps/submaps/space_rocks/pois/clearing.dmm rename to maps/submaps/space_rocks/clearing.dmm diff --git a/maps/submaps/space_rocks/pois/seventemple.dmm b/maps/submaps/space_rocks/seventemple.dmm similarity index 100% rename from maps/submaps/space_rocks/pois/seventemple.dmm rename to maps/submaps/space_rocks/seventemple.dmm diff --git a/maps/submaps/space_rocks/space_rocks_pois.dm b/maps/submaps/space_rocks/space_rocks_pois.dm index 8d2380d659a..3c42dc57d64 100644 --- a/maps/submaps/space_rocks/space_rocks_pois.dm +++ b/maps/submaps/space_rocks/space_rocks_pois.dm @@ -1,13 +1,13 @@ #if MAP_TEST -#include "pois/bittynest1.dmm" -#include "pois/bittynest2.dmm" -#include "pois/bittynest3.dmm" -#include "pois/bittynest4.dmm" -#include "pois/clearing.dmm" -#include "pois/seventemple.dmm" -#include "pois/spacecrystals.dmm" -#include "pois/tunnel1.dmm" -#include "pois/tunnel2.dmm" +#include "bittynest1.dmm" +#include "bittynest2.dmm" +#include "bittynest3.dmm" +#include "bittynest4.dmm" +#include "clearing.dmm" +#include "seventemple.dmm" +#include "spacecrystals.dmm" +#include "tunnel1.dmm" +#include "tunnel2.dmm" #endif /area/submap/space_rocks @@ -20,7 +20,7 @@ /datum/map_template/space_rocks/bittynest1 name = "Bittynest1" desc = "A smol nest for smol badguys" - mappath = 'pois/bittynest1.dmm' + mappath = 'bittynest1.dmm' cost = 5 /area/submap/space_rocks/bittynest2 @@ -29,7 +29,7 @@ /datum/map_template/space_rocks/bittynest2 name = "Bittynest2" desc = "A smol nest for smol badguys" - mappath = 'pois/bittynest2.dmm' + mappath = 'bittynest2.dmm' cost = 5 /area/submap/space_rocks/bittynest3 @@ -38,7 +38,7 @@ /datum/map_template/space_rocks/bittynest3 name = "Bittynest3" desc = "A smol nest for smol badguys" - mappath = 'pois/bittynest3.dmm' + mappath = 'bittynest3.dmm' cost = 5 /area/submap/space_rocks/bittynest4 @@ -47,7 +47,7 @@ /datum/map_template/space_rocks/bittynest4 name = "Bittynest4" desc = "A smol nest for smol badguys" - mappath = 'pois/bittynest4.dmm' + mappath = 'bittynest4.dmm' cost = 5 /area/submap/space_rocks/tunnel1 @@ -56,7 +56,7 @@ /datum/map_template/space_rocks/tunnel1 name = "Tunnel1" desc = "A tunnel left behind!" - mappath = 'pois/tunnel1.dmm' + mappath = 'tunnel1.dmm' cost = 10 /area/submap/space_rocks/tunnel2 @@ -65,7 +65,7 @@ /datum/map_template/space_rocks/tunnel2 name = "Tunnel2" desc = "A tunnel left behind!" - mappath = 'pois/tunnel2.dmm' + mappath = 'tunnel2.dmm' cost = 10 /area/submap/space_rocks/spacecrystals @@ -74,7 +74,7 @@ /datum/map_template/space_rocks/tunnel2 name = "Space Crystals" desc = "Some crystals living in space!" - mappath = 'pois/spacecrystals.dmm' + mappath = 'spacecrystals.dmm' cost = 10 /area/submap/space_rocks/clearing @@ -83,7 +83,7 @@ /datum/map_template/space_rocks/clearing name = "Clearing" desc = "A clear spot for mischief to happen." - mappath = 'pois/clearing.dmm' + mappath = 'clearing.dmm' cost = 10 /area/submap/space_rocks/seventemple @@ -92,5 +92,5 @@ /datum/map_template/space_rocks/seventemple name = "Temple of the Seven" desc = "A mysterious space!" - mappath = 'pois/seventemple.dmm' + mappath = 'seventemple.dmm' cost = 25 diff --git a/maps/submaps/space_rocks/pois/spacecrystals.dmm b/maps/submaps/space_rocks/spacecrystals.dmm similarity index 100% rename from maps/submaps/space_rocks/pois/spacecrystals.dmm rename to maps/submaps/space_rocks/spacecrystals.dmm diff --git a/maps/submaps/space_rocks/pois/tunnel1.dmm b/maps/submaps/space_rocks/tunnel1.dmm similarity index 100% rename from maps/submaps/space_rocks/pois/tunnel1.dmm rename to maps/submaps/space_rocks/tunnel1.dmm diff --git a/maps/submaps/space_rocks/pois/tunnel2.dmm b/maps/submaps/space_rocks/tunnel2.dmm similarity index 100% rename from maps/submaps/space_rocks/pois/tunnel2.dmm rename to maps/submaps/space_rocks/tunnel2.dmm From abec61335db90b9d1261527066630e94cd3b7459 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 16 Nov 2021 02:54:15 -0500 Subject: [PATCH 12/26] Okay! --- maps/submaps/space_rocks/space_rocks.dm | 36 +++---------------- maps/submaps/space_rocks/space_rocks_stuff.dm | 30 ++++++++++++++++ vorestation.dme | 1 - 3 files changed, 34 insertions(+), 33 deletions(-) create mode 100644 maps/submaps/space_rocks/space_rocks_stuff.dm diff --git a/maps/submaps/space_rocks/space_rocks.dm b/maps/submaps/space_rocks/space_rocks.dm index 9e5c5d5a816..3951d511718 100644 --- a/maps/submaps/space_rocks/space_rocks.dm +++ b/maps/submaps/space_rocks/space_rocks.dm @@ -1,3 +1,6 @@ +#include "space_rocks_pois.dm" +#include "space_rocks_stuff.dm" + /turf/simulated/mineral/vacuum/sdmine/make_ore(var/rare_ore) if(mineral) return @@ -55,35 +58,4 @@ var/static/image/smallone = image(icon = 'icons/skybox/virgo3b.dmi', icon_state = "small") if(zlevel == Z_LEVEL_SPACE_ROCKS) - return smallone - -/////LANDING LANDMARKS -/obj/effect/shuttle_landmark/premade/spacerocks/center - name = "asteroid field center" - landmark_tag = "sr-c" - -/obj/effect/shuttle_landmark/premade/spacerocks/north - name = "asteroid field north" - landmark_tag = "sr-n" - -/obj/effect/shuttle_landmark/premade/spacerocks/south - name = "asteroid field south" - landmark_tag = "sr-s" - -/obj/tether_away_spawner/asteroidbaddies - name = "Asteroid Mob Spawner" - faction = "space_rock" - atmos_comp = TRUE - prob_spawn = 100 - prob_fall = 40 - //guard = 20 - mobs_to_pick_from = list( - /mob/living/simple_mob/animal/space/bats = 10, - /mob/living/simple_mob/vore/alienanimals/space_jellyfish = 15, - /mob/living/simple_mob/vore/alienanimals/startreader = 15, - /mob/living/simple_mob/vore/alienanimals/space_ghost = 6, - /mob/living/simple_mob/vore/oregrub = 1, - /mob/living/simple_mob/animal/space/carp = 3, - /mob/living/simple_mob/animal/space/carp/large = 1, - /mob/living/simple_mob/animal/space/carp/large/huge = 1 - ) + return smallone \ No newline at end of file diff --git a/maps/submaps/space_rocks/space_rocks_stuff.dm b/maps/submaps/space_rocks/space_rocks_stuff.dm new file mode 100644 index 00000000000..cacb70e3879 --- /dev/null +++ b/maps/submaps/space_rocks/space_rocks_stuff.dm @@ -0,0 +1,30 @@ +/////LANDING LANDMARKS +/obj/effect/shuttle_landmark/premade/spacerocks/center + name = "asteroid field center" + landmark_tag = "sr-c" + +/obj/effect/shuttle_landmark/premade/spacerocks/north + name = "asteroid field north" + landmark_tag = "sr-n" + +/obj/effect/shuttle_landmark/premade/spacerocks/south + name = "asteroid field south" + landmark_tag = "sr-s" + +/obj/tether_away_spawner/asteroidbaddies + name = "Asteroid Mob Spawner" + faction = "space_rock" + atmos_comp = TRUE + prob_spawn = 100 + prob_fall = 40 + //guard = 20 + mobs_to_pick_from = list( + /mob/living/simple_mob/animal/space/bats = 10, + /mob/living/simple_mob/vore/alienanimals/space_jellyfish = 15, + /mob/living/simple_mob/vore/alienanimals/startreader = 15, + /mob/living/simple_mob/vore/alienanimals/space_ghost = 6, + /mob/living/simple_mob/vore/oregrub = 1, + /mob/living/simple_mob/animal/space/carp = 3, + /mob/living/simple_mob/animal/space/carp/large = 1, + /mob/living/simple_mob/animal/space/carp/large/huge = 1 + ) diff --git a/vorestation.dme b/vorestation.dme index 32d48414f54..eab65fc9dba 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4087,7 +4087,6 @@ #include "maps\submaps\engine_submaps\engine.dm" #include "maps\submaps\engine_submaps\engine_areas.dm" #include "maps\submaps\engine_submaps_vr\tether\_engine_submaps.dm" -#include "maps\submaps\space_rocks\space_rocks_pois.dm" #include "maps\submaps\space_submaps\space.dm" #include "maps\submaps\space_submaps\debrisfield\debrisfield.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness.dm" From 58146d2fe264447d8a8d45039fa70e2daf7621ac Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 16 Nov 2021 08:33:20 -0500 Subject: [PATCH 13/26] Fix mining shuttle access! I messed it up! --- maps/stellardelight/stellar_delight1.dmm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/maps/stellardelight/stellar_delight1.dmm b/maps/stellardelight/stellar_delight1.dmm index c8ca2ee5f54..c2cd7916c49 100644 --- a/maps/stellardelight/stellar_delight1.dmm +++ b/maps/stellardelight/stellar_delight1.dmm @@ -17760,7 +17760,8 @@ dir = 4; door_color = "#a88860"; name = "Mining Shuttle"; - req_access = list(31,5); + req_access = null; + req_one_access = list(31,5); stripe_color = "#69461a" }, /obj/structure/cable/yellow{ From b7225eb7eebe3581b74bede10d3ac487e1ded299 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 16 Nov 2021 11:03:22 -0500 Subject: [PATCH 14/26] yes! --- maps/stellardelight/stellar_delight_defines.dm | 2 +- maps/stellardelight/stellar_delight_shuttle_defs.dm | 7 +++++-- vorestation.dme | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/maps/stellardelight/stellar_delight_defines.dm b/maps/stellardelight/stellar_delight_defines.dm index 0eef4582e53..e95d9813d71 100644 --- a/maps/stellardelight/stellar_delight_defines.dm +++ b/maps/stellardelight/stellar_delight_defines.dm @@ -328,7 +328,7 @@ z = Z_LEVEL_SPACE_ROCKS name = "V3b Asteroid Field" base_turf = /turf/space - + flags = MAP_LEVEL_PLAYER|MAP_LEVEL_CONTACT|MAP_LEVEL_CONSOLES /datum/map_template/ship_lateload/overmap name = "Overmap" diff --git a/maps/stellardelight/stellar_delight_shuttle_defs.dm b/maps/stellardelight/stellar_delight_shuttle_defs.dm index fc7add9b0bb..e83c05be9e3 100644 --- a/maps/stellardelight/stellar_delight_shuttle_defs.dm +++ b/maps/stellardelight/stellar_delight_shuttle_defs.dm @@ -240,7 +240,7 @@ [i]Transponder[/i]: Transmitting (CIV), NanoTrasen IFF [b]Notice[/b]: NanoTrasen Base, authorized personnel only"} known = TRUE - in_space = FALSE + in_space = TRUE icon = 'icons/obj/overmap_vr.dmi' icon_state = "virgo3b" @@ -281,4 +281,7 @@ //For ships, it's safe to assume they're big enough to not be sneaky else if(istype(AM, /obj/effect/overmap/visitable/ship)) - atc.msg(message) \ No newline at end of file + atc.msg(message) + +/obj/effect/overmap/visitable/sector/virgo3b/get_space_zlevels() + return list(Z_LEVEL_SPACE_ROCKS) diff --git a/vorestation.dme b/vorestation.dme index eab65fc9dba..44411ac86ae 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -3241,6 +3241,7 @@ #include "code\modules\multiz\ladder_assembly_vr.dm" #include "code\modules\multiz\ladders.dm" #include "code\modules\multiz\ladders_vr.dm" +#include "code\modules\multiz\misc.dm" #include "code\modules\multiz\movement.dm" #include "code\modules\multiz\movement_vr.dm" #include "code\modules\multiz\pipes.dm" From 6e890abe534790aef624a28cea8131ffb70aec88 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 16 Nov 2021 11:44:14 -0500 Subject: [PATCH 15/26] hide the ar fields --- code/game/machinery/atm_ret_field.dm | 9 ++++++++- maps/stellardelight/stellar_delight1.dmm | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/atm_ret_field.dm b/code/game/machinery/atm_ret_field.dm index 9e9a2af168e..bcf78539a79 100644 --- a/code/game/machinery/atm_ret_field.dm +++ b/code/game/machinery/atm_ret_field.dm @@ -230,4 +230,11 @@ desc = "A shimmering forcefield that keeps the good air inside and the bad air outside. It seems fairly solid, almost like it's made out of some kind of hardened light.

Note: prolonged immersion in active atmospheric retention fields may have negative long-term health consequences." icon = 'icons/obj/atm_fieldgen.dmi' icon_state = "arfg_field" - density = TRUE \ No newline at end of file + density = TRUE + +/obj/machinery/atmospheric_field_generator/perma/underdoors + field_type = /obj/structure/atmospheric_retention_field/underdoors + +/obj/structure/atmospheric_retention_field/underdoors + plane = OBJ_PLANE + layer = UNDER_JUNK_LAYER diff --git a/maps/stellardelight/stellar_delight1.dmm b/maps/stellardelight/stellar_delight1.dmm index c2cd7916c49..72f8ffb1dcf 100644 --- a/maps/stellardelight/stellar_delight1.dmm +++ b/maps/stellardelight/stellar_delight1.dmm @@ -16103,7 +16103,7 @@ color = "#42038a"; icon_state = "4-8" }, -/obj/machinery/atmospheric_field_generator/perma, +/obj/machinery/atmospheric_field_generator/perma/underdoors, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/tiled/steel_ridged, /area/stellardelight/deck1/exploshuttle) @@ -17767,7 +17767,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/atmospheric_field_generator/perma, +/obj/machinery/atmospheric_field_generator/perma/underdoors, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/tiled/steel_ridged, /area/stellardelight/deck1/miningshuttle) From c3ede024fdd6fa660d8e0c1ef6b9a55934e4decb Mon Sep 17 00:00:00 2001 From: Heroman Date: Wed, 17 Nov 2021 04:59:05 +1000 Subject: [PATCH 16/26] Fixes teshari not having soft landing --- code/modules/mob/living/carbon/human/species/station/teshari.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/human/species/station/teshari.dm b/code/modules/mob/living/carbon/human/species/station/teshari.dm index cd4bc0b1e9c..6f243418895 100644 --- a/code/modules/mob/living/carbon/human/species/station/teshari.dm +++ b/code/modules/mob/living/carbon/human/species/station/teshari.dm @@ -55,6 +55,7 @@ gluttonous = 1 blood_volume = 400 hunger_factor = 0.2 + soft_landing = TRUE ambiguous_genders = TRUE From dcb714d1c678f1a1b727f2b64dab069e001366e4 Mon Sep 17 00:00:00 2001 From: Anthony Rodriguez Date: Tue, 16 Nov 2021 14:38:52 -0800 Subject: [PATCH 17/26] Changes Vines to now check for landmarks versus an area --- code/game/objects/effects/landmarks.dm | 6 ++ code/game/objects/effects/landmarks_vr.dm | 2 +- code/global_vr.dm | 2 + .../hydroponics/spreading/spreading.dm | 11 +--- maps/stellardelight/stellar_delight1.dmm | 29 ++++++++- maps/stellardelight/stellar_delight2.dmm | 21 +++++++ maps/stellardelight/stellar_delight3.dmm | 62 +++++++++++++++++-- 7 files changed, 117 insertions(+), 16 deletions(-) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 51ee1430f5f..7ff7638995f 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -77,6 +77,12 @@ endgame_exits += loc delete_me = 1 return + //VOREStation Add Start + if("vinestart") + vinestart += loc + delete_me = 1 + return + //VORE Station Add End landmarks_list += src return 1 diff --git a/code/game/objects/effects/landmarks_vr.dm b/code/game/objects/effects/landmarks_vr.dm index b9dd81e9673..da406c8043b 100644 --- a/code/game/objects/effects/landmarks_vr.dm +++ b/code/game/objects/effects/landmarks_vr.dm @@ -39,4 +39,4 @@ /obj/effect/landmark/late_antag/raider name = "Raider - Lateload" - antag_id = MODE_RAIDER \ No newline at end of file + antag_id = MODE_RAIDER diff --git a/code/global_vr.dm b/code/global_vr.dm index 1187b4a5dcc..8709577507c 100644 --- a/code/global_vr.dm +++ b/code/global_vr.dm @@ -1,3 +1,5 @@ +var/list/vinestart = list() + var/list/awayabductors = list() // List of scatter landmarks for Abductors in Gateways var/list/eventdestinations = list() // List of scatter landmarks for VOREStation event portals var/list/eventabductors = list() // List of scatter landmarks for VOREStation abductor portals diff --git a/code/modules/hydroponics/spreading/spreading.dm b/code/modules/hydroponics/spreading/spreading.dm index e55bb448bd3..393089ebff0 100644 --- a/code/modules/hydroponics/spreading/spreading.dm +++ b/code/modules/hydroponics/spreading/spreading.dm @@ -3,15 +3,8 @@ /proc/spacevine_infestation(var/potency_min=70, var/potency_max=100, var/maturation_min=5, var/maturation_max=15) spawn() //to stop the secrets panel hanging - var/list/turf/simulated/floor/turfs = list() //list of all the empty floor turfs in the hallway areas - for(var/areapath in typesof(/area/hallway)) - var/area/A = locate(areapath) - for(var/turf/simulated/floor/F in A.contents) - if(!F.check_density()) - turfs += F - - if(turfs.len) //Pick a turf to spawn at if we can - var/turf/simulated/floor/T = pick(turfs) + if(vinestart.len) //Pick a turf to spawn at if we can + var/turf/simulated/floor/T = pick(vinestart) var/datum/seed/seed = SSplants.create_random_seed(1) seed.set_trait(TRAIT_SPREAD,2) // So it will function properly as vines. seed.set_trait(TRAIT_POTENCY,rand(potency_min, potency_max)) // 70-100 potency will help guarantee a wide spread and powerful effects. diff --git a/maps/stellardelight/stellar_delight1.dmm b/maps/stellardelight/stellar_delight1.dmm index 72f8ffb1dcf..353763ac027 100644 --- a/maps/stellardelight/stellar_delight1.dmm +++ b/maps/stellardelight/stellar_delight1.dmm @@ -655,6 +655,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/catwalk_plated/dark, +/obj/effect/landmark{ + name = "vinestart" + }, /turf/simulated/floor, /area/stellardelight/deck1/port) "bx" = ( @@ -1305,6 +1308,9 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, +/obj/effect/landmark{ + name = "vinestart" + }, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/starboard) "cV" = ( @@ -4713,6 +4719,15 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/eris/steel/cargo, /area/stellardelight/deck1/pathfinder) +"jT" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/landmark{ + name = "vinestart" + }, +/turf/simulated/floor/tiled/techmaint, +/area/stellardelight/deck1/aft) "jV" = ( /obj/machinery/power/terminal{ dir = 4 @@ -7147,6 +7162,9 @@ dir = 8 }, /obj/effect/catwalk_plated/dark, +/obj/effect/landmark{ + name = "vinestart" + }, /turf/simulated/floor, /area/stellardelight/deck1/starboard) "ph" = ( @@ -10778,6 +10796,9 @@ /obj/effect/floor_decal/milspec/color/red/half{ dir = 1 }, +/obj/effect/landmark{ + name = "vinestart" + }, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/fore) "xa" = ( @@ -14160,6 +14181,9 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, +/obj/effect/landmark{ + name = "vinestart" + }, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/port) "Eq" = ( @@ -21198,6 +21222,9 @@ /obj/structure/closet/crate/bin{ anchored = 1 }, +/obj/effect/landmark{ + name = "vinestart" + }, /turf/simulated/floor/tiled/milspec, /area/stellardelight/deck1/exploration) "TB" = ( @@ -33486,7 +33513,7 @@ MK qR CG iS -KX +jT dl QK pV diff --git a/maps/stellardelight/stellar_delight2.dmm b/maps/stellardelight/stellar_delight2.dmm index 24015009790..5ad6a31faac 100644 --- a/maps/stellardelight/stellar_delight2.dmm +++ b/maps/stellardelight/stellar_delight2.dmm @@ -5496,6 +5496,9 @@ }, /obj/machinery/vending/loadout/loadout_misc, /obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/landmark{ + name = "vinestart" + }, /turf/simulated/floor/holofloor/tiled/dark, /area/crew_quarters/locker) "me" = ( @@ -5511,6 +5514,9 @@ "mg" = ( /obj/random/vendordrink, /obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/landmark{ + name = "vinestart" + }, /turf/simulated/floor/tiled/steel_ridged, /area/stellardelight/deck2/port) "mh" = ( @@ -7967,6 +7973,9 @@ dir = 4; pixel_x = 24 }, +/obj/effect/landmark{ + name = "vinestart" + }, /turf/simulated/floor/tiled/techmaint, /area/storage/primary) "rF" = ( @@ -9142,6 +9151,9 @@ "us" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/machinery/recharge_station, +/obj/effect/landmark{ + name = "vinestart" + }, /turf/simulated/floor/tiled/steel_ridged, /area/stellardelight/deck2/starboard) "ut" = ( @@ -10330,6 +10342,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark{ + name = "vinestart" + }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/central) "xo" = ( @@ -16341,6 +16356,9 @@ /obj/item/paint_palette, /obj/item/paint_brush, /obj/item/paint_brush, +/obj/effect/landmark{ + name = "vinestart" + }, /turf/simulated/floor/tiled, /area/storage/art) "KD" = ( @@ -18213,6 +18231,9 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, +/obj/effect/landmark{ + name = "vinestart" + }, /turf/simulated/floor/tiled/eris/steel/brown_platform, /area/quartermaster/storage) "OQ" = ( diff --git a/maps/stellardelight/stellar_delight3.dmm b/maps/stellardelight/stellar_delight3.dmm index 619926bec2a..294faa22e83 100644 --- a/maps/stellardelight/stellar_delight3.dmm +++ b/maps/stellardelight/stellar_delight3.dmm @@ -228,6 +228,13 @@ }, /turf/simulated/floor/tiled, /area/stellardelight/deck3/aft) +"ba" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/landmark{ + name = "vinestart" + }, +/turf/simulated/open, +/area/stellardelight/deck2/fore) "bb" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 8 @@ -6408,6 +6415,9 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, +/obj/effect/landmark{ + name = "vinestart" + }, /turf/simulated/floor/tiled/monotile, /area/stellardelight/deck3/commandhall) "yc" = ( @@ -9328,6 +9338,15 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/heads/chief) +"ID" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/landmark{ + name = "vinestart" + }, +/turf/simulated/open, +/area/stellardelight/deck2/fore) "IG" = ( /obj/structure/cable/blue{ icon_state = "4-8" @@ -10253,6 +10272,9 @@ dir = 4; pixel_x = 27 }, +/obj/effect/landmark{ + name = "vinestart" + }, /turf/simulated/floor/tiled, /area/stellardelight/deck3/starboarddock) "LR" = ( @@ -10430,6 +10452,15 @@ /obj/random/maintenance, /turf/simulated/floor, /area/maintenance/stellardelight/deck3/starboardfore) +"Mv" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/landmark{ + name = "vinestart" + }, +/turf/simulated/open, +/area/stellardelight/deck2/fore) "Mw" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 1 @@ -10636,6 +10667,15 @@ }, /turf/simulated/floor/tiled/techfloor, /area/stellardelight/deck3/cryo) +"Nd" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/landmark{ + name = "vinestart" + }, +/turf/simulated/open, +/area/stellardelight/deck2/port) "Ne" = ( /obj/structure/cable{ icon_state = "1-8" @@ -11275,6 +11315,15 @@ "OX" = ( /turf/simulated/floor, /area/maintenance/stellardelight/deck3/portcent) +"OY" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/landmark{ + name = "vinestart" + }, +/turf/simulated/open, +/area/stellardelight/deck2/starboard) "Pa" = ( /obj/structure/lattice, /turf/simulated/open, @@ -12807,6 +12856,9 @@ dir = 8; pixel_x = -27 }, +/obj/effect/landmark{ + name = "vinestart" + }, /turf/simulated/floor/tiled, /area/stellardelight/deck3/portdock) "UX" = ( @@ -21655,7 +21707,7 @@ CS oW oW oW -QF +Nd oW oW oW @@ -22486,7 +22538,7 @@ Cp qF qF qF -Cb +Mv qF qF qF @@ -23464,7 +23516,7 @@ qp NF qp Qp -Hf +ba Ie tV cb @@ -25601,7 +25653,7 @@ qF qF qF qF -KF +ID qF qF qF @@ -26492,7 +26544,7 @@ ow ow ow ow -ZC +OY yP ow ZM From c2dada040f402f8d57a44de2c1df132e78477728 Mon Sep 17 00:00:00 2001 From: Heroman Date: Wed, 17 Nov 2021 15:41:36 +1000 Subject: [PATCH 18/26] Fixes bugs related to weaversilk structures --- code/modules/ai/ai_holder_combat.dm | 9 +++++++-- .../human/species/station/traits_vr/weaver_objs.dm | 6 ++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/code/modules/ai/ai_holder_combat.dm b/code/modules/ai/ai_holder_combat.dm index 29c58e56706..e21d8de5b28 100644 --- a/code/modules/ai/ai_holder_combat.dm +++ b/code/modules/ai/ai_holder_combat.dm @@ -310,15 +310,20 @@ // Kill common obstacle in the way like tables. var/obj/structure/obstacle = locate(/obj/structure, problem_turf) - if(istype(obstacle, /obj/structure/window) || istype(obstacle, /obj/structure/closet) || istype(obstacle, /obj/structure/table) || istype(obstacle, /obj/structure/grille) || istype(obstacle, /obj/effect/weaversilk/wall)) //VOREStation Edit: spdr + if(istype(obstacle, /obj/structure/window) || istype(obstacle, /obj/structure/closet) || istype(obstacle, /obj/structure/table) || istype(obstacle, /obj/structure/grille)) ai_log("destroy_surroundings() : Attacking generic structure.", AI_LOG_INFO) return melee_attack(obstacle) + var/obj/effect/weaversilk/web = locate(/obj/effect/weaversilk, problem_turf) + if(istype(web, /obj/effect/weaversilk/wall)) //VOREStation Edit: spdr + ai_log("destroy_surroundings() : Attacking weaversilk effect.", AI_LOG_INFO) + return melee_attack(web) + for(var/obj/machinery/door/D in problem_turf) // Required since firelocks take up the same turf. if(D.density) ai_log("destroy_surroundings() : Attacking closed door.", AI_LOG_INFO) return melee_attack(D) - + // Should always be last thing attempted if(!problem_turf.opacity) ai_log("destroy_surroundings() : Attacking a transparent (window?) turf.", AI_LOG_INFO) diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/weaver_objs.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/weaver_objs.dm index 45aeefc2b56..fef1206c66a 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/weaver_objs.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/weaver_objs.dm @@ -89,6 +89,7 @@ desc = "A silky, yet firm trap. Be careful not to step into it! Or don't..." icon_state = "trap" var/trap_active = TRUE + can_buckle = TRUE /obj/effect/weaversilk/trap/Crossed(atom/movable/AM as mob|obj) if(AM.is_incorporeal()) @@ -106,17 +107,18 @@ "You hear a squishy noise!" ) set_dir(L.dir) - can_buckle = TRUE buckle_mob(L) L.Stun(1) to_chat(L, "The sticky fibers of \the [src] ensnare, trapping you in place!") trap_active = FALSE - can_buckle = initial(can_buckle) desc += " Actually, it looks like it's been all spent." ..() +/obj/effect/weaversilk/trap/MouseDrop_T(atom/movable/AM,mob/user) + return + // Items // TODO: Spidersilk clothing and actual bindings, once sprites are ready. From 34bf86a38c5d72df665d0e0510186370d45fc5bb Mon Sep 17 00:00:00 2001 From: Heroman Date: Thu, 18 Nov 2021 06:12:27 +1000 Subject: [PATCH 19/26] Blast doors now properly resist fire --- code/game/machinery/doors/door_vr.dm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/doors/door_vr.dm b/code/game/machinery/doors/door_vr.dm index 6583b841b85..1a504065cc3 100644 --- a/code/game/machinery/doors/door_vr.dm +++ b/code/game/machinery/doors/door_vr.dm @@ -101,7 +101,19 @@ /obj/machinery/door/blast/regular/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) return // blast doors are immune to fire completely. -/obj/machinery/door/blast/regular/ +/obj/machinery/door/blast/regular + heat_proof = 1 //just so repairing them doesn't try to fireproof something that never takes fire damage + +/obj/machinery/door/blast/angled/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + return // blast doors are immune to fire completely. + +/obj/machinery/door/blast/angled + heat_proof = 1 //just so repairing them doesn't try to fireproof something that never takes fire damage + +/obj/machinery/door/blast/puzzle/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + return // blast doors are immune to fire completely. + +/obj/machinery/door/blast/puzzle heat_proof = 1 //just so repairing them doesn't try to fireproof something that never takes fire damage /obj/machinery/door/proc/toggle() From 2430e62baa42f30b804ec758bb0ef3413ce28e16 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Wed, 17 Nov 2021 19:40:52 -0500 Subject: [PATCH 20/26] Corrects a couple of variable errors --- maps/gateway_vr/variable/arynthilake_a.dmm | 2 +- maps/gateway_vr/variable/arynthilake_b.dmm | 2 +- maps/gateway_vr/variable/arynthilakeunderground_a.dmm | 2 +- maps/gateway_vr/variable/arynthilakeunderground_b.dmm | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/maps/gateway_vr/variable/arynthilake_a.dmm b/maps/gateway_vr/variable/arynthilake_a.dmm index 24a790b1772..4ff82692516 100644 --- a/maps/gateway_vr/variable/arynthilake_a.dmm +++ b/maps/gateway_vr/variable/arynthilake_a.dmm @@ -2098,7 +2098,7 @@ check_arrest = 0; check_down = 0; check_records = 0; - control_area = /area/gateway/grasslands/underground/maintenance; + control_area = /area/gateway/arynthilake/underground/maintenance; desc = "A firewall prevents AIs from interacting with this device."; lethal = 1; locked = 0; diff --git a/maps/gateway_vr/variable/arynthilake_b.dmm b/maps/gateway_vr/variable/arynthilake_b.dmm index 06169e3a6ba..f3be0775bf1 100644 --- a/maps/gateway_vr/variable/arynthilake_b.dmm +++ b/maps/gateway_vr/variable/arynthilake_b.dmm @@ -503,7 +503,7 @@ check_arrest = 0; check_down = 0; check_records = 0; - control_area = /area/gateway/grasslands/underground/maintenance; + control_area = /area/gateway/arynthilake/underground/maintenance; desc = "A firewall prevents AIs from interacting with this device."; lethal = 1; locked = 0; diff --git a/maps/gateway_vr/variable/arynthilakeunderground_a.dmm b/maps/gateway_vr/variable/arynthilakeunderground_a.dmm index 121b0fac96c..54d03f71a61 100644 --- a/maps/gateway_vr/variable/arynthilakeunderground_a.dmm +++ b/maps/gateway_vr/variable/arynthilakeunderground_a.dmm @@ -85,7 +85,7 @@ "lM" = ( /obj/effect/map_effect/perma_light/gateway{ light_color = "#0c6ba6"; - light_power = .3; + light_power = 0.3; light_range = 5 }, /turf/simulated/floor/beach/sand/desert, diff --git a/maps/gateway_vr/variable/arynthilakeunderground_b.dmm b/maps/gateway_vr/variable/arynthilakeunderground_b.dmm index 75fa807ad5a..ca1b2d01c9a 100644 --- a/maps/gateway_vr/variable/arynthilakeunderground_b.dmm +++ b/maps/gateway_vr/variable/arynthilakeunderground_b.dmm @@ -136,7 +136,7 @@ "ng" = ( /obj/effect/map_effect/perma_light/gateway{ light_color = "#0c6ba6"; - light_power = .3; + light_power = 0.3; light_range = 5 }, /turf/simulated/floor/beach/sand/desert, From 6f5ee57f5e8f60c7a38f7df94572eb8fa5103485 Mon Sep 17 00:00:00 2001 From: Anthony Rodriguez Date: Wed, 17 Nov 2021 21:35:14 -0800 Subject: [PATCH 21/26] Oh god landmarks and everything else hhhhh --- code/game/objects/effects/landmarks.dm | 4 - code/game/objects/effects/landmarks_vr.dm | 6 + code/global_vr.dm | 1 + code/modules/events/carp_migration.dm | 2 +- code/modules/events/drone_pod_vr.dm | 2 +- code/modules/events/event_container_vr.dm | 22 +-- code/modules/events/infestation.dm | 152 ++++++++------------- code/modules/events/jellyfish_migration.dm | 102 ++++++++++++++ maps/stellardelight/stellar_delight1.dmm | 91 ++++++------ maps/stellardelight/stellar_delight2.dmm | 101 ++++++++------ maps/stellardelight/stellar_delight3.dmm | 104 +++++++------- vorestation.dme | 1 + 12 files changed, 348 insertions(+), 240 deletions(-) create mode 100644 code/modules/events/jellyfish_migration.dm diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 7ff7638995f..93f4319d5ee 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -61,10 +61,6 @@ prisonsecuritywarp += loc delete_me = 1 return - if("blobstart") - blobstart += loc - delete_me = 1 - return if("xeno_spawn") xeno_spawn += loc delete_me = 1 diff --git a/code/game/objects/effects/landmarks_vr.dm b/code/game/objects/effects/landmarks_vr.dm index da406c8043b..e436447109d 100644 --- a/code/game/objects/effects/landmarks_vr.dm +++ b/code/game/objects/effects/landmarks_vr.dm @@ -1,6 +1,12 @@ /obj/effect/landmark var/abductor = 0 +/obj/effect/landmark/vines + name = "vinestart" + +/obj/effect/landmark/vermin + name = "verminstart" + /obj/effect/landmark/late_antag name = "Antag Latespawn" var/antag_id diff --git a/code/global_vr.dm b/code/global_vr.dm index 8709577507c..6ed3403aaf7 100644 --- a/code/global_vr.dm +++ b/code/global_vr.dm @@ -1,4 +1,5 @@ var/list/vinestart = list() +var/list/verminstart = list() var/list/awayabductors = list() // List of scatter landmarks for Abductors in Gateways var/list/eventdestinations = list() // List of scatter landmarks for VOREStation event portals diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index d4fb6faa973..7f991b44fc2 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -26,7 +26,7 @@ if(activeFor % 5 != 0) return // Only process every 10 seconds. if(count_spawned_carps() < carp_cap) - spawn_fish(rand(1, severity * 2) - 1, severity, severity * 2) + spawn_fish(rand(3, 3 + severity * 2) - 1, 1, severity + 2) /datum/event/carp_migration/proc/spawn_fish(var/num_groups, var/group_size_min, var/group_size_max, var/dir) if(isnull(dir)) diff --git a/code/modules/events/drone_pod_vr.dm b/code/modules/events/drone_pod_vr.dm index 54ddd7bdba9..c93911e7779 100644 --- a/code/modules/events/drone_pod_vr.dm +++ b/code/modules/events/drone_pod_vr.dm @@ -22,7 +22,7 @@ qdel(target_spot) /datum/event/drone_pod_drop/announce() - command_announcement.Announce("An unidentified drone pod has been detected landing near the surface facilty. Open and examine at your own risk.", "NanoTrasen Orbital Monitoring") + command_announcement.Announce("An unidentified drone pod has been detected on a collision course towards the [location_name()]. Open and examine at your own risk.", "[location_name()] Sensor Network") /datum/event/drone_pod_drop/start() if(!land_target) diff --git a/code/modules/events/event_container_vr.dm b/code/modules/events/event_container_vr.dm index e82fa420d4f..7b429f94477 100644 --- a/code/modules/events/event_container_vr.dm +++ b/code/modules/events/event_container_vr.dm @@ -84,7 +84,8 @@ new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grub Infestation", /datum/event/grub_infestation, 0, list(ASSIGNMENT_SECURITY = 10, ASSIGNMENT_ENGINEER = 30), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Drone Pod Drop", /datum/event/drone_pod_drop, 10, list(ASSIGNMENT_SCIENTIST = 40), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_SECURITY = 30, ASSIGNMENT_SCIENTIST = 10), 1), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 75, list(ASSIGNMENT_SECURITY = 40), 0) + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 75, list(ASSIGNMENT_SECURITY = 40), 0), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_ANY = 1, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1), ) add_disabled_events(list( new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1), @@ -97,17 +98,18 @@ /datum/event_container/major/New() available_events = list( - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 3600), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Atmos Leak", /datum/event/atmos_leak, 30, list(ASSIGNMENT_ENGINEER = 25), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 20, list(ASSIGNMENT_ENGINEER = 7), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station,0, list(ASSIGNMENT_ANY = 5), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 3600), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Atmos Leak", /datum/event/atmos_leak, 30, list(ASSIGNMENT_ENGINEER = 25), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 20, list(ASSIGNMENT_ENGINEER = 7), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ANY = 5), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_ANY = 1, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1), ) add_disabled_events(list( - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 10, list(ASSIGNMENT_ENGINEER = 60), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 15), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 10, list(ASSIGNMENT_ENGINEER = 60), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), )) #undef ASSIGNMENT_ANY diff --git a/code/modules/events/infestation.dm b/code/modules/events/infestation.dm index 985518067bf..d0d221d5fd1 100644 --- a/code/modules/events/infestation.dm +++ b/code/modules/events/infestation.dm @@ -1,120 +1,78 @@ -#define LOC_KITCHEN 0 -#define LOC_ATMOS 1 -#define LOC_CHAPEL 2 -#define LOC_LIBRARY 3 -#define LOC_HYDRO 4 -#define LOC_CONSTR 5 -#define LOC_TECH 6 -#define LOC_GARDEN 7 -#define LOC_STEMNGR 8 -#define LOC_RESEARCH 9 - #define VERM_MICE 0 #define VERM_LIZARDS 1 -#define VERM_SPIDERS 2 /datum/event/infestation announceWhen = 10 endWhen = 11 - var/location var/locstring var/vermin var/vermstring + var/list/spawned_vermin = list() + var/spawn_types + var/num_groups + var/prep_size_min + var/prep_size_max + var/vermin_cap = 40 + var/list/spawn_locations = list() /datum/event/infestation/start() - - location = rand(0,9) - var/list/turf/simulated/floor/turfs = list() - var/spawn_area_type - switch(location) - if(LOC_KITCHEN) - spawn_area_type = /area/crew_quarters/kitchen - locstring = "the kitchen" - if(LOC_ATMOS) - spawn_area_type = /area/engineering/atmos - locstring = "atmospherics" - if(LOC_CHAPEL) - spawn_area_type = /area/chapel/main - locstring = "the chapel" - if(LOC_LIBRARY) - spawn_area_type = /area/library - locstring = "the library" - if(LOC_HYDRO) - spawn_area_type = /area/hydroponics - locstring = "hydroponics" - if(LOC_CONSTR) - spawn_area_type = /area/construction - locstring = "the construction area" - if(LOC_TECH) - spawn_area_type = /area/storage/tech - locstring = "technical storage" - if(LOC_GARDEN) - spawn_area_type = /area/hydroponics/garden - locstring = "the public garden" - if(LOC_STEMNGR) - spawn_area_type = /area/crew_quarters/captain - locstring = "the site manager's office" - if(LOC_RESEARCH) - spawn_area_type = /area/rnd/research - locstring = "the research division" - - for(var/areapath in typesof(spawn_area_type)) - var/area/A = locate(areapath) - for(var/turf/simulated/floor/F in A.contents) - //VOREStation Edit - Fixes event - var/blocked = FALSE - for(var/atom/movable/AM in F) - if(AM.density) - blocked = TRUE - if(!blocked) - turfs += F - //VOREStation Edit - Fixes event - - var/list/spawn_types = list() - var/max_number - vermin = rand(0,2) + vermin = rand(0,1) switch(vermin) if(VERM_MICE) - spawn_types = list(/mob/living/simple_mob/animal/passive/mouse/gray, /mob/living/simple_mob/animal/passive/mouse/brown, /mob/living/simple_mob/animal/passive/mouse/white) - max_number = 12 + spawn_types = /mob/living/simple_mob/animal/passive/mouse/gray + prep_size_min = 1 + prep_size_max = 4 vermstring = "mice" if(VERM_LIZARDS) - spawn_types = list(/mob/living/simple_mob/animal/passive/lizard) - max_number = 6 + spawn_types = /mob/living/simple_mob/animal/passive/lizard + prep_size_min = 1 + prep_size_max = 3 vermstring = "lizards" - if(VERM_SPIDERS) - spawn_types = list(/obj/effect/spider/spiderling) - max_number = 3 - vermstring = "spiders" + // Check if any landmarks exist! + for(var/obj/effect/landmark/C in landmarks_list) + if(C.name == "verminstart") + spawn_locations.Add(C.loc) - spawn(0) - var/num = rand(2,max_number) - while(turfs.len > 0 && num > 0) - var/turf/simulated/floor/T = pick(turfs) - turfs.Remove(T) - num-- - if(vermin == VERM_SPIDERS) - var/obj/effect/spider/spiderling/S = new(T) - S.amount_grown = -1 - else - var/spawn_type = pick(spawn_types) - new spawn_type(T) +/datum/event/infestation/tick() + if(activeFor % 5 != 0) + return // Only process every 10 seconds. + if(count_spawned_vermin() < vermin_cap) + spawn_vermin(rand(4,10), prep_size_min, prep_size_max) + +/datum/event/infestation/proc/spawn_vermin(var/num_groups, var/group_size_min, var/group_size_max) + if(spawn_locations.len) // Okay we've got landmarks, lets use those! + shuffle_inplace(spawn_locations) + num_groups = min(num_groups, spawn_locations.len) + for (var/i = 1, i <= num_groups, i++) + var/group_size = rand(group_size_min, group_size_max) + for (var/j = 0, j < group_size, j++) + spawn_one_vermin(spawn_locations[i]) + return + +// Spawn a single vermin at given location. +/datum/event/infestation/proc/spawn_one_vermin(var/loc) + var/mob/living/simple_mob/animal/M = new spawn_types(loc) + GLOB.destroyed_event.register(M, src, .proc/on_vermin_destruction) + spawned_vermin.Add(M) + return M + +// Counts living vermin spawned by this event. +/datum/event/infestation/proc/count_spawned_vermin() + . = 0 + for(var/mob/living/simple_mob/animal/M as anything in spawned_vermin) + if(!QDELETED(M) && M.stat != DEAD) + . += 1 + +// If vermin is kill, remove it from the list. +/datum/event/infestation/proc/on_vermin_destruction(var/mob/M) + spawned_vermin -= M + GLOB.destroyed_event.unregister(M, src, .proc/on_vermin_destruction) + /datum/event/infestation/announce() - command_announcement.Announce("Bioscans indicate that [vermstring] have been breeding in [locstring]. Clear them out, before this starts to affect productivity.", "Vermin infestation") - -#undef LOC_KITCHEN -#undef LOC_ATMOS -#undef LOC_CHAPEL -#undef LOC_LIBRARY -#undef LOC_HYDRO -#undef LOC_TECH -#undef LOC_GARDEN -#undef LOC_STEMNGR -#undef LOC_RESEARCH + command_announcement.Announce("Bioscans indicate that [vermstring] have been breeding all over the facility. Clear them out, before this starts to affect productivity.", "Vermin infestation") #undef VERM_MICE -#undef VERM_LIZARDS -#undef VERM_SPIDERS +#undef VERM_LIZARDS \ No newline at end of file diff --git a/code/modules/events/jellyfish_migration.dm b/code/modules/events/jellyfish_migration.dm new file mode 100644 index 00000000000..7498539ae14 --- /dev/null +++ b/code/modules/events/jellyfish_migration.dm @@ -0,0 +1,102 @@ +/datum/event/jellyfish_migration + startWhen = 0 // Start immediately + announceWhen = 45 // Adjusted by setup + endWhen = 75 // Adjusted by setup + var/jellyfish_cap = 20 + var/list/spawned_jellyfish = list() + +/datum/event/jellyfish_migration/setup() + announceWhen = rand(30, 60) // 1 to 2 minutes + endWhen += severity * 25 + jellyfish_cap = 2 + 3 ** severity // No more than this many at once regardless of waves. (5, 11, 29) + +/datum/event/jellyfish_migration/start() + affecting_z -= global.using_map.sealed_levels // Space levels only please! + ..() + +/datum/event/jellyfish_migration/announce() + var/announcement = "" + if(severity == EVENT_LEVEL_MAJOR) + announcement = "Massive migration of unknown biological entities has been detected near [location_name()], please stand-by." + else + announcement = "Unknown biological [spawned_jellyfish.len == 1 ? "entity has" : "entities have"] been detected near [location_name()], please stand-by." + command_announcement.Announce(announcement, "Lifesign Alert") + +/datum/event/jellyfish_migration/tick() + if(activeFor % 5 != 0) + return // Only process every 10 seconds. + if(count_spawned_jellyfish() < jellyfish_cap) + spawn_fish(rand(3, 3 + severity * 2) - 1, 1, severity + 2) + +/datum/event/jellyfish_migration/proc/spawn_fish(var/num_groups, var/group_size_min, var/group_size_max, var/dir) + if(isnull(dir)) + dir = (victim && prob(80)) ? victim.fore_dir : pick(GLOB.cardinal) + + // Check if any landmarks exist! These will use the carp spawn since they already would spawn in these similar spots. + var/list/spawn_locations = list() + for(var/obj/effect/landmark/C in landmarks_list) + if(C.name == "carpspawn" && (C.z in affecting_z)) + spawn_locations.Add(C.loc) + if(spawn_locations.len) // Okay we've got landmarks, lets use those! + shuffle_inplace(spawn_locations) + num_groups = min(num_groups, spawn_locations.len) + for (var/i = 1, i <= num_groups, i++) + var/group_size = rand(group_size_min, group_size_max) + for (var/j = 0, j < group_size, j++) + spawn_one_jellyfish(spawn_locations[i]) + return + + // Okay we did *not* have any landmarks, so lets do our best! + var/i = 1 + while (i <= num_groups) + var/Z = pick(affecting_z) + var/group_size = rand(group_size_min, group_size_max) + var/turf/map_center = locate(round(world.maxx/2), round(world.maxy/2), Z) + var/turf/group_center = pick_random_edge_turf(dir, Z, TRANSITIONEDGE + 2) + var/list/turfs = getcircle(group_center, 2) + for (var/j = 0, j < group_size, j++) + var/mob/living/simple_mob/animal/M = spawn_one_jellyfish(turfs[(i % turfs.len) + 1]) + // Ray trace towards middle of the map to find where they can stop just outside of structure/ship. + var/turf/target + for(var/turf/T in getline(get_turf(M), map_center)) + if(!T.is_space()) + break; + target = T + if(target) + M.ai_holder?.give_destination(target) // Ask jellyfish to swim towards the middle of the map + i++ + +// Spawn a single jellyfish at given location. +/datum/event/jellyfish_migration/proc/spawn_one_jellyfish(var/loc) + var/mob/living/simple_mob/animal/M = new /mob/living/simple_mob/vore/alienanimals/space_jellyfish(loc) + GLOB.destroyed_event.register(M, src, .proc/on_jellyfish_destruction) + spawned_jellyfish.Add(M) + return M + +// Counts living jellyfish spawned by this event. +/datum/event/jellyfish_migration/proc/count_spawned_jellyfish() + . = 0 + for(var/mob/living/simple_mob/animal/M as anything in spawned_jellyfish) + if(!QDELETED(M) && M.stat != DEAD) + . += 1 + +// If jellyfish is bomphed, remove it from the list. +/datum/event/jellyfish_migration/proc/on_jellyfish_destruction(var/mob/M) + spawned_jellyfish -= M + GLOB.destroyed_event.unregister(M, src, .proc/on_jellyfish_destruction) + +/datum/event/jellyfish_migration/end() + . = ..() + // Clean up jellyfish that died in space for some reason. + spawn(0) + for(var/mob/living/simple_mob/SM in spawned_jellyfish) + if(SM.stat == DEAD) + var/turf/T = get_turf(SM) + if(istype(T, /turf/space)) + if(prob(75)) + qdel(SM) + CHECK_TICK + +// Overmap version +/datum/event/jellyfish_migration/overmap/announce() + return diff --git a/maps/stellardelight/stellar_delight1.dmm b/maps/stellardelight/stellar_delight1.dmm index 353763ac027..7056bbc6aa1 100644 --- a/maps/stellardelight/stellar_delight1.dmm +++ b/maps/stellardelight/stellar_delight1.dmm @@ -655,9 +655,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/catwalk_plated/dark, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/floor, /area/stellardelight/deck1/port) "bx" = ( @@ -1308,9 +1306,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/starboard) "cV" = ( @@ -2045,6 +2041,12 @@ }, /turf/simulated/floor/tiled/techfloor, /area/stellardelight/deck1/researchserver) +"et" = ( +/obj/effect/landmark{ + name = "droppod_landing" + }, +/turf/space, +/area/space) "eu" = ( /obj/structure/cable/green{ color = "#42038a"; @@ -4723,9 +4725,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/aft) "jV" = ( @@ -6906,6 +6906,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/dark, /area/security/security_cell_hallway) "oC" = ( @@ -7162,9 +7163,7 @@ dir = 8 }, /obj/effect/catwalk_plated/dark, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/floor, /area/stellardelight/deck1/starboard) "ph" = ( @@ -8810,6 +8809,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/dark, /area/chapel/main) "sC" = ( @@ -10476,6 +10476,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, +/obj/effect/landmark/vermin, /turf/simulated/floor/carpet/bcarpet, /area/stellardelight/deck1/starboard) "wo" = ( @@ -10796,9 +10797,7 @@ /obj/effect/floor_decal/milspec/color/red/half{ dir = 1 }, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/fore) "xa" = ( @@ -11889,6 +11888,7 @@ dir = 4 }, /obj/effect/floor_decal/milspec/color/black, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/dark, /area/security/armoury) "zq" = ( @@ -12944,6 +12944,7 @@ /obj/effect/floor_decal/milspec/color/red/half{ dir = 1 }, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/fore) "BB" = ( @@ -13043,6 +13044,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/milspec, /area/stellardelight/deck1/exploration) "BI" = ( @@ -14181,9 +14183,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/port) "Eq" = ( @@ -16456,6 +16456,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/steel_grid, /area/rnd/research) "Jd" = ( @@ -19899,6 +19900,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /obj/machinery/alarm/angled, /obj/effect/floor_decal/milspec/color/black, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/dark, /area/security/armoury) "QQ" = ( @@ -21222,9 +21224,7 @@ /obj/structure/closet/crate/bin{ anchored = 1 }, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/floor/tiled/milspec, /area/stellardelight/deck1/exploration) "TB" = ( @@ -21830,6 +21830,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, +/obj/effect/landmark/vermin, /turf/simulated/floor/reinforced, /area/stellardelight/deck1/shuttlebay) "UK" = ( @@ -22185,6 +22186,7 @@ /obj/item/weapon/book/manual/supermatter_engine, /obj/item/weapon/book/manual/tesla_engine, /obj/item/weapon/book/manual/virology, +/obj/effect/landmark/vermin, /turf/simulated/floor/wood, /area/library) "Vq" = ( @@ -22942,6 +22944,7 @@ /obj/item/weapon/tank/jetpack/carbondioxide, /obj/item/weapon/tank/jetpack/carbondioxide, /obj/item/weapon/tank/jetpack/carbondioxide, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/eris/white/gray_platform, /area/gateway) "WU" = ( @@ -24044,6 +24047,12 @@ /obj/machinery/recharge_station, /turf/simulated/floor/bluegrid, /area/assembly/robotics) +"Zd" = ( +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/space, +/area/space) "Ze" = ( /obj/machinery/door/firedoor/glass, /obj/structure/window/bay/reinforced, @@ -27549,7 +27558,7 @@ uq uq uq uq -uq +Zd uq uq uq @@ -28089,7 +28098,7 @@ uq uq uq uq -uq +Zd uq uq uq @@ -28271,7 +28280,7 @@ uq uq uq uq -uq +Zd uq uq uq @@ -28336,7 +28345,7 @@ uq uq uq uq -uq +Zd uq uq uq @@ -28713,7 +28722,7 @@ uq uq uq uq -uq +Zd uq uq uq @@ -29070,7 +29079,7 @@ uq uq uq uq -uq +Zd uq uq uq @@ -29741,7 +29750,7 @@ uq uq uq uq -uq +Zd uq uq uq @@ -30841,7 +30850,7 @@ RF RF uq uq -uq +et uq uq uq @@ -32265,7 +32274,7 @@ uq uq uq uq -uq +Zd uq uq uq @@ -32438,7 +32447,7 @@ uq uq uq uq -uq +Zd uq uq uq @@ -34710,7 +34719,7 @@ uq uq uq uq -uq +Zd uq uq uq @@ -37799,7 +37808,7 @@ EG RF uq uq -uq +et uq uq uq @@ -38262,7 +38271,7 @@ uq uq uq uq -uq +Zd uq uq uq @@ -38371,7 +38380,7 @@ uq uq uq uq -uq +Zd uq uq uq @@ -39007,7 +39016,7 @@ uq uq uq uq -uq +Zd uq uq uq @@ -39419,7 +39428,7 @@ uq uq uq uq -uq +Zd uq uq uq @@ -39727,7 +39736,7 @@ uq uq uq uq -uq +Zd uq uq uq @@ -40200,7 +40209,7 @@ uq uq uq uq -uq +Zd uq uq uq @@ -40597,7 +40606,7 @@ uq uq uq uq -uq +Zd uq uq uq @@ -41613,7 +41622,7 @@ uq uq uq uq -uq +Zd uq uq uq diff --git a/maps/stellardelight/stellar_delight2.dmm b/maps/stellardelight/stellar_delight2.dmm index 5ad6a31faac..8338ab1098f 100644 --- a/maps/stellardelight/stellar_delight2.dmm +++ b/maps/stellardelight/stellar_delight2.dmm @@ -2433,6 +2433,7 @@ /obj/machinery/light{ dir = 4 }, +/obj/effect/landmark/vermin, /turf/simulated/floor/wood, /area/crew_quarters/captain) "fp" = ( @@ -2588,6 +2589,7 @@ "fL" = ( /obj/machinery/computer/arcade/battle, /obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/eris/dark/cargo, /area/crew_quarters/recreation_area) "fN" = ( @@ -3114,6 +3116,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/techmaint, /area/storage/primary) "gS" = ( @@ -5496,9 +5499,7 @@ }, /obj/machinery/vending/loadout/loadout_misc, /obj/machinery/atmospherics/unary/vent_pump/on, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/floor/holofloor/tiled/dark, /area/crew_quarters/locker) "me" = ( @@ -5514,9 +5515,7 @@ "mg" = ( /obj/random/vendordrink, /obj/machinery/atmospherics/unary/vent_pump/on, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/floor/tiled/steel_ridged, /area/stellardelight/deck2/port) "mh" = ( @@ -5751,6 +5750,7 @@ /obj/machinery/light{ dir = 1 }, +/obj/effect/landmark/vermin, /turf/simulated/floor/wood, /area/stellardelight/deck2/briefingroom) "mI" = ( @@ -5846,6 +5846,9 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, +/obj/effect/landmark{ + name = "verminstart" + }, /turf/simulated/floor/grass, /area/hydroponics) "mT" = ( @@ -6232,6 +6235,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, +/obj/effect/landmark/vermin, /turf/simulated/floor/lino, /area/crew_quarters/bar) "nR" = ( @@ -7236,6 +7240,7 @@ icon_state = "2-4" }, /obj/structure/closet/secure_closet/engineering_personal, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/eris/dark/orangecorner, /area/engineering/locker_room) "qe" = ( @@ -7370,6 +7375,7 @@ /obj/machinery/newscaster{ pixel_y = 28 }, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled, /area/storage/art) "qt" = ( @@ -7973,9 +7979,7 @@ dir = 4; pixel_x = 24 }, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/floor/tiled/techmaint, /area/storage/primary) "rF" = ( @@ -9151,9 +9155,7 @@ "us" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/machinery/recharge_station, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/floor/tiled/steel_ridged, /area/stellardelight/deck2/starboard) "ut" = ( @@ -9755,6 +9757,7 @@ dir = 4; icon_state = "pipe-c" }, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/monotile, /area/hydroponics) "vQ" = ( @@ -10009,6 +10012,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/eris/white/bluecorner, /area/stellardelight/deck2/triage) "wy" = ( @@ -12706,6 +12710,7 @@ /obj/structure/cable/orange{ icon_state = "1-8" }, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos/monitoring) "CO" = ( @@ -12959,6 +12964,7 @@ dir = 1 }, /obj/structure/undies_wardrobe, +/obj/effect/landmark/vermin, /turf/simulated/floor/holofloor/tiled/dark, /area/crew_quarters/locker) "Dv" = ( @@ -14263,6 +14269,7 @@ /obj/effect/floor_decal/milspec/color/silver/corner{ dir = 8 }, +/obj/effect/landmark/vines, /turf/simulated/floor/tiled, /area/stellardelight/deck2/fore) "Gb" = ( @@ -14771,6 +14778,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/eris/steel/cargo, /area/quartermaster/storage) "Hf" = ( @@ -15302,6 +15310,7 @@ /obj/random/vendordrink, /obj/machinery/atmospherics/unary/vent_pump/on, /obj/machinery/firealarm/angled, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled, /area/stellardelight/deck2/aftstarboard) "Il" = ( @@ -15345,6 +15354,7 @@ }, /obj/structure/table/steel_reinforced, /obj/item/device/retail_scanner/command, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/eris/dark/monofloor, /area/bridge) "Ip" = ( @@ -16356,9 +16366,7 @@ /obj/item/paint_palette, /obj/item/paint_brush, /obj/item/paint_brush, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/floor/tiled, /area/storage/art) "KD" = ( @@ -16547,6 +16555,7 @@ /obj/machinery/camera/network/medbay{ dir = 8 }, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/eris/white/bluecorner, /area/medical/chemistry) "La" = ( @@ -17951,6 +17960,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/wood, /area/stellardelight/deck2/barbackroom) +"Oh" = ( +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/space, +/area/space) "Oi" = ( /obj/machinery/firealarm/angled, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -18134,6 +18149,9 @@ /obj/machinery/status_display{ pixel_y = 32 }, +/obj/effect/landmark{ + name = "verminstart" + }, /turf/simulated/floor/tiled/eris/cafe, /area/crew_quarters/kitchen) "OB" = ( @@ -18231,9 +18249,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/floor/tiled/eris/steel/brown_platform, /area/quartermaster/storage) "OQ" = ( @@ -18495,6 +18511,12 @@ }, /turf/simulated/floor/tiled/steel_ridged, /area/stellardelight/deck2/starboard) +"Pp" = ( +/obj/effect/landmark{ + name = "droppod_landing" + }, +/turf/space, +/area/space) "Pq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/red{ dir = 9 @@ -20251,6 +20273,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/eris/white/bluecorner, /area/medical/cmostore) "Tn" = ( @@ -21913,6 +21936,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 4 }, +/obj/effect/landmark/vines, /turf/simulated/floor/tiled, /area/stellardelight/deck2/fore) "Xf" = ( @@ -22713,6 +22737,7 @@ "YW" = ( /obj/random/vendordrink, /obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/steel_ridged, /area/stellardelight/deck2/starboard) "YX" = ( @@ -25832,7 +25857,7 @@ Jh Jh Jh Jh -Jh +Oh Jh Jh Jh @@ -26237,7 +26262,7 @@ Jh Jh Jh Jh -Jh +Oh Jh Jh Jh @@ -26637,7 +26662,7 @@ Jh Jh Jh Jh -Jh +Oh Jh Jh Jh @@ -26858,7 +26883,7 @@ Jh Jh Jh Jh -Jh +Oh Jh Jh Jh @@ -27807,7 +27832,7 @@ Jh Jh Jh Jh -Jh +Oh Jh Jh Jh @@ -28779,7 +28804,7 @@ Jh Jh Jh Jh -Jh +Pp Jh Jh Jh @@ -28890,7 +28915,7 @@ Jh Jh Jh Jh -Jh +Oh Jh Jh Jh @@ -30574,7 +30599,7 @@ Jh Jh Jh Jh -Jh +Oh Jh Jh Jh @@ -31869,7 +31894,7 @@ Jh Jh Jh Jh -Jh +Oh Jh Jh Jh @@ -33124,7 +33149,7 @@ Jh Jh Jh Jh -Jh +Oh Jh Jh Jh @@ -34994,7 +35019,7 @@ Jh Jh Jh Jh -Jh +Oh Jh Jh Jh @@ -36393,7 +36418,7 @@ Jh Jh Jh Jh -Jh +Oh Jh Jh Jh @@ -36888,7 +36913,7 @@ bw Jh Jh Jh -Jh +Oh Jh Jh Jh @@ -37301,7 +37326,7 @@ Jh Jh Jh Jh -Jh +Pp Jh Jh Jh @@ -37379,7 +37404,7 @@ NL NL Jh Jh -Jh +Pp Jh Jh Jh @@ -37701,7 +37726,7 @@ Jh Jh Jh Jh -Jh +Oh Jh Jh Jh @@ -38292,7 +38317,7 @@ Jh Jh Jh Jh -Jh +Oh Jh Jh Jh @@ -39457,6 +39482,7 @@ Jh Jh Jh Jh +Oh Jh Jh Jh @@ -39501,8 +39527,7 @@ Jh Jh Jh Jh -Jh -Jh +Oh Jh Jh Jh @@ -40187,7 +40212,7 @@ Jh Jh Jh Jh -Jh +Oh Jh Jh Jh diff --git a/maps/stellardelight/stellar_delight3.dmm b/maps/stellardelight/stellar_delight3.dmm index 294faa22e83..629b2e2a2a6 100644 --- a/maps/stellardelight/stellar_delight3.dmm +++ b/maps/stellardelight/stellar_delight3.dmm @@ -230,9 +230,7 @@ /area/stellardelight/deck3/aft) "ba" = ( /obj/machinery/atmospherics/unary/vent_pump/on, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/open, /area/stellardelight/deck2/fore) "bb" = ( @@ -501,6 +499,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, +/obj/effect/landmark/vines, /turf/simulated/open, /area/crew_quarters/bar) "cb" = ( @@ -5885,6 +5884,13 @@ /obj/structure/low_wall/bay/reinforced/steel, /turf/simulated/floor, /area/stellardelight/deck2/port) +"wc" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/landmark/vermin, +/turf/simulated/open, +/area/stellardelight/deck2/starboard) "wd" = ( /obj/structure/table/standard, /obj/item/weapon/aiModule/oxygen, @@ -6296,6 +6302,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 4 }, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled, /area/stellardelight/deck3/starboarddock) "xE" = ( @@ -6415,9 +6422,6 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, -/obj/effect/landmark{ - name = "vinestart" - }, /turf/simulated/floor/tiled/monotile, /area/stellardelight/deck3/commandhall) "yc" = ( @@ -6732,6 +6736,12 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload) +"zk" = ( +/obj/effect/landmark{ + name = "droppod_landing" + }, +/turf/space, +/area/space) "zm" = ( /obj/structure/cable/blue{ icon_state = "4-8" @@ -7664,6 +7674,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, +/obj/effect/landmark/vermin, /turf/simulated/open, /area/stellardelight/deck2/fore) "Cc" = ( @@ -8229,6 +8240,12 @@ /obj/random/trash_pile, /turf/simulated/floor, /area/maintenance/stellardelight/deck3/portcent) +"El" = ( +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/space, +/area/space) "En" = ( /obj/effect/floor_decal/industrial/warning/corner{ dir = 1 @@ -8475,6 +8492,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 1 }, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled, /area/stellardelight/deck3/aft) "Fg" = ( @@ -9342,9 +9360,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/open, /area/stellardelight/deck2/fore) "IG" = ( @@ -10272,9 +10288,7 @@ dir = 4; pixel_x = 27 }, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/floor/tiled, /area/stellardelight/deck3/starboarddock) "LR" = ( @@ -10456,9 +10470,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/open, /area/stellardelight/deck2/fore) "Mw" = ( @@ -10671,9 +10683,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/open, /area/stellardelight/deck2/port) "Ne" = ( @@ -11319,9 +11329,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/open, /area/stellardelight/deck2/starboard) "Pa" = ( @@ -12580,6 +12588,7 @@ /area/ai_server_room) "TO" = ( /obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/landmark/vermin, /turf/simulated/floor/tiled/monotile, /area/stellardelight/deck3/commandhall) "TP" = ( @@ -12856,9 +12865,7 @@ dir = 8; pixel_x = -27 }, -/obj/effect/landmark{ - name = "vinestart" - }, +/obj/effect/landmark/vines, /turf/simulated/floor/tiled, /area/stellardelight/deck3/portdock) "UX" = ( @@ -13483,6 +13490,7 @@ /obj/structure/cable/green{ icon_state = "1-2" }, +/obj/effect/landmark/vermin, /turf/simulated/open, /area/crew_quarters/bar) "Xd" = ( @@ -16918,7 +16926,7 @@ Jh Jh Jh Jh -Jh +El Jh Jh Jh @@ -17451,7 +17459,7 @@ Jh Jh Jh Jh -Jh +El Jh Jh Jh @@ -18322,7 +18330,7 @@ Jh Jh Jh Jh -Jh +El Jh Jh Jh @@ -18386,6 +18394,7 @@ Jh Jh Jh Jh +El Jh Jh Jh @@ -18421,8 +18430,7 @@ Jh Jh Jh Jh -Jh -Jh +El Jh Jh Jh @@ -19160,7 +19168,7 @@ Jh Jh Jh Jh -Jh +zk Jh Jh Jh @@ -19256,7 +19264,7 @@ Jh Jh Jh Jh -Jh +El Jh Jh Jh @@ -19630,7 +19638,7 @@ NL NL Jh Jh -Jh +zk Jh Jh Jh @@ -20416,7 +20424,7 @@ Jh Jh Jh Jh -Jh +El Jh Jh Jh @@ -21473,7 +21481,7 @@ NL Jh Jh Jh -Jh +El Jh Jh Jh @@ -21906,7 +21914,7 @@ Jh Jh Jh Jh -Jh +El Jh Jh Jh @@ -22209,7 +22217,7 @@ Jh Jh Jh Jh -Jh +El Jh Jh Jh @@ -25669,7 +25677,7 @@ qF hC aJ ow -ZC +wc ow yP Ks @@ -27153,7 +27161,7 @@ NL Jh Jh Jh -Jh +El Jh Jh Jh @@ -27720,7 +27728,7 @@ NL NL Jh Jh -Jh +zk Jh Jh Jh @@ -27941,7 +27949,7 @@ Jh Jh Jh Jh -Jh +El Jh Jh Jh @@ -28204,7 +28212,7 @@ Jh Jh Jh Jh -Jh +zk Jh Jh Jh @@ -28683,7 +28691,7 @@ Jh Jh Jh Jh -Jh +zk Jh Jh Jh @@ -29192,7 +29200,7 @@ Jh Jh Jh Jh -Jh +El Jh Jh Jh @@ -29926,6 +29934,7 @@ Jh Jh Jh Jh +El Jh Jh Jh @@ -29972,8 +29981,7 @@ Jh Jh Jh Jh -Jh -Jh +El Jh Jh Jh @@ -30022,6 +30030,7 @@ Jh Jh Jh Jh +El Jh Jh Jh @@ -30138,8 +30147,7 @@ Jh Jh Jh Jh -Jh -Jh +El Jh Jh Jh @@ -30670,7 +30678,7 @@ Jh Jh Jh Jh -Jh +El Jh Jh Jh diff --git a/vorestation.dme b/vorestation.dme index 44411ac86ae..1b67797a293 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2193,6 +2193,7 @@ #include "code\modules\events\ian_storm_vr.dm" #include "code\modules\events\infestation.dm" #include "code\modules\events\ion_storm.dm" +#include "code\modules\events\jellyfish_migration.dm" #include "code\modules\events\maintenance_predator_vr.dm" #include "code\modules\events\meteor_strike_vr.dm" #include "code\modules\events\meteors.dm" From 3c20e7172c59186a714d039602f0f40bab62fad8 Mon Sep 17 00:00:00 2001 From: Anthony Rodriguez Date: Wed, 17 Nov 2021 21:37:42 -0800 Subject: [PATCH 22/26] Whoops removed bleb landmark proc --- code/game/objects/effects/landmarks.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 93f4319d5ee..7ff7638995f 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -61,6 +61,10 @@ prisonsecuritywarp += loc delete_me = 1 return + if("blobstart") + blobstart += loc + delete_me = 1 + return if("xeno_spawn") xeno_spawn += loc delete_me = 1 From 4924592b91ab8d12e0b2c2429025ca7ddd1ad535 Mon Sep 17 00:00:00 2001 From: Casey Date: Thu, 18 Nov 2021 01:03:38 -0500 Subject: [PATCH 23/26] Update code/modules/vore/eating/vorepanel_vr.dm Co-authored-by: Aronai Sieyes --- code/modules/vore/eating/vorepanel_vr.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index 73e2601d138..5ac97d74aff 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -304,7 +304,7 @@ return set_attr(usr, params) if("saveprefs") - if(host.real_name != host.client.prefs.real_name || !ishuman(host) && !issilicon(host)) + if(host.real_name != host.client.prefs.real_name || (!ishuman(host) && !issilicon(host))) var/choice = tgui_alert(usr, "Warning: Saving your vore panel while playing what is very-likely not your normal character will overwrite whatever character you have loaded in character setup. Maybe this is your 'playing a simple mob' slot, though. Are you SURE you want to overwrite your current slot with these vore bellies?", "WARNING!", list("No, abort!", "Yes, save.")) if(choice != "Yes, save.") return TRUE From c8ecd7a8c1b4c55da3d666515f4adcd72b7de813 Mon Sep 17 00:00:00 2001 From: Verkister Date: Thu, 18 Nov 2021 16:11:54 +0200 Subject: [PATCH 24/26] Makes mob renaming not exclusive to vore subtype Only a fraction of voremobs are actually vore subtype and the verbs can be just as useful for even non-voremobs. --- .../mob/living/simple_mob/subtypes/vore/vore.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm index 178dee3cee2..8e0225168da 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm @@ -3,12 +3,12 @@ mob_bump_flag = 0 var/nameset -/mob/living/simple_mob/vore/Login() +/mob/living/simple_mob/Login() . = ..() - verbs |= /mob/living/simple_mob/vore/proc/set_name - verbs |= /mob/living/simple_mob/vore/proc/set_desc + verbs |= /mob/living/simple_mob/proc/set_name + verbs |= /mob/living/simple_mob/proc/set_desc -/mob/living/simple_mob/vore/proc/set_name() +/mob/living/simple_mob/proc/set_name() set name = "Set Name" set desc = "Sets your mobs name. You only get to do this once." set category = "Abilities" @@ -22,7 +22,7 @@ voice_name = newname nameset = 1 -/mob/living/simple_mob/vore/proc/set_desc() +/mob/living/simple_mob/proc/set_desc() set name = "Set Description" set desc = "Set your description." set category = "Abilities" @@ -32,4 +32,4 @@ desc = newdesc /mob/living/simple_mob/vore/aggressive - mob_bump_flag = HEAVY \ No newline at end of file + mob_bump_flag = HEAVY From 18069ef4bc6803b48a6635cedd1d9d0267acd72f Mon Sep 17 00:00:00 2001 From: Verkister Date: Thu, 18 Nov 2021 16:15:17 +0200 Subject: [PATCH 25/26] Update vore.dm --- code/modules/mob/living/simple_mob/subtypes/vore/vore.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm index 8e0225168da..de87f366930 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm @@ -1,6 +1,8 @@ /mob/living/simple_mob/vore mob_class = MOB_CLASS_ANIMAL mob_bump_flag = 0 + +/mob/living/simple_mob var/nameset /mob/living/simple_mob/Login() From 1c7825b553be330be1c6b3cb3476962b49f11ffb Mon Sep 17 00:00:00 2001 From: Verkister Date: Thu, 18 Nov 2021 16:18:26 +0200 Subject: [PATCH 26/26] Adds a var toggle to allow multiple name changes --- code/modules/mob/living/simple_mob/subtypes/vore/vore.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm index de87f366930..b15a7e0e188 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm @@ -4,6 +4,7 @@ /mob/living/simple_mob var/nameset + var/limit_renames = TRUE /mob/living/simple_mob/Login() . = ..() @@ -14,7 +15,7 @@ set name = "Set Name" set desc = "Sets your mobs name. You only get to do this once." set category = "Abilities" - if(nameset) + if(limit_renames && nameset) to_chat(src, "You've already set your name. Ask an admin to toggle \"nameset\" to 0 if you really must.") return var/newname