diff --git a/code/__defines/admin.dm b/code/__defines/admin.dm index 1e64ed8a1b..5f9ada5e98 100644 --- a/code/__defines/admin.dm +++ b/code/__defines/admin.dm @@ -36,7 +36,7 @@ #define R_SOUNDS 0x800 #define R_SPAWN 0x1000 #define R_MOD 0x2000 -#define R_MENTOR 0x4000 +#define R_EVENT 0x4000 #define R_HOST 0x8000 //higher than this will overflow #define R_MAXPERMISSION 0x8000 // This holds the maximum value for a permission. It is used in iteration, so keep it updated. \ No newline at end of file diff --git a/code/_helpers/type2type.dm b/code/_helpers/type2type.dm index 975e65e3ec..0316e1d186 100644 --- a/code/_helpers/type2type.dm +++ b/code/_helpers/type2type.dm @@ -148,7 +148,7 @@ if (rights & R_SOUNDS) . += "[seperator]+SOUND" if (rights & R_SPAWN) . += "[seperator]+SPAWN" if (rights & R_MOD) . += "[seperator]+MODERATOR" - if (rights & R_MENTOR) . += "[seperator]+MENTOR" + if (rights & R_EVENT) . += "[seperator]+EVENT" return . // Converts a hexadecimal color (e.g. #FF0050) to a list of numbers for red, green, and blue (e.g. list(255,0,80) ). diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index b985c5680b..b80652d6d6 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -67,7 +67,7 @@ var/list/gamemode_cache = list() var/kick_inactive = 0 //force disconnect for inactive players after this many minutes, if non-0 var/show_mods = 0 var/show_devs = 0 - var/show_mentors = 0 + var/show_event_managers = 0 var/mods_can_tempban = 0 var/mods_can_job_tempban = 0 var/mod_tempban_max = 1440 @@ -511,8 +511,8 @@ var/list/gamemode_cache = list() if("show_devs") config.show_devs = 1 - if("show_mentors") - config.show_mentors = 1 + if("show_event_managers") + config.show_event_managers = 1 if("mods_can_tempban") config.mods_can_tempban = 1 diff --git a/code/datums/ghost_query.dm b/code/datums/ghost_query.dm index 25fcbd6c7b..c06013105a 100644 --- a/code/datums/ghost_query.dm +++ b/code/datums/ghost_query.dm @@ -92,6 +92,13 @@ question = "An Alien has just been created on the facility. Would you like to play as them?" be_special_flag = BE_ALIEN +/datum/ghost_query/syndicate_drone + role_name = "Mercenary Drone" + question = "A team of dubious mercenaries have purchased a powerful drone, and they are attempting to activate it. Would you like to play as the drone?" + be_special_flag = BE_AI + check_bans = list("AI", "Cyborg", "Syndicate") + cutoff_number = 1 + // Surface stuff. /datum/ghost_query/lost_drone role_name = "Lost Drone" diff --git a/code/datums/outfits/_defines.dm b/code/datums/outfits/_defines.dm index d105fc0ebc..ae07595c50 100644 --- a/code/datums/outfits/_defines.dm +++ b/code/datums/outfits/_defines.dm @@ -1,3 +1,7 @@ #define OUTFIT_HAS_JETPACK 1 #define OUTFIT_HAS_BACKPACK 2 #define OUTFIT_EXTENDED_SURVIVAL 4 + +#define OUTFIT_JOB_NAME(job_name) ("Job - " + job_name) +#define OUTFIT_MILITARY(job_name) ("Military Uniform - " + job_name) +#define OUTFIT_COSTUME(job_name) ("Costume - " + job_name) \ No newline at end of file diff --git a/code/datums/outfits/costumes/costume.dm b/code/datums/outfits/costumes/costume.dm new file mode 100644 index 0000000000..2e6167ee73 --- /dev/null +++ b/code/datums/outfits/costumes/costume.dm @@ -0,0 +1,2 @@ +/decl/hierarchy/outfit/costume + undress = 0 \ No newline at end of file diff --git a/code/datums/outfits/costumes/halloween.dm b/code/datums/outfits/costumes/halloween.dm index d4ad8fa8f9..36659e2141 100644 --- a/code/datums/outfits/costumes/halloween.dm +++ b/code/datums/outfits/costumes/halloween.dm @@ -1,5 +1,5 @@ -/decl/hierarchy/outfit/h_masked_killer - name = "Costume - Masked Killer" +/decl/hierarchy/outfit/costume/masked_killer + name = OUTFIT_COSTUME("Masked Killer") uniform = /obj/item/clothing/under/overalls shoes = /obj/item/clothing/shoes/white gloves = /obj/item/clothing/gloves/sterile/latex @@ -8,20 +8,20 @@ suit = /obj/item/clothing/suit/storage/apron r_hand = /obj/item/weapon/material/twohanded/fireaxe/foam -/decl/hierarchy/outfit/masked_killer/post_equip(var/mob/living/carbon/human/H) +/decl/hierarchy/outfit/costume/masked_killer/post_equip(var/mob/living/carbon/human/H) var/victim = get_mannequin(H.ckey) for(var/obj/item/carried_item in H.get_equipped_items(TRUE)) carried_item.add_blood(victim) //Oh yes, there will be blood.. just not blood from the killer because that's odd. //If I knew how to make fake blood, I would -/decl/hierarchy/outfit/h_professional - name = "Costume - Professional" +/decl/hierarchy/outfit/costume/professional + name = OUTFIT_COSTUME("Professional") uniform = /obj/item/clothing/under/suit_jacket{ starting_accessories=list(/obj/item/clothing/accessory/wcoat) } shoes = /obj/item/clothing/shoes/black gloves = /obj/item/clothing/gloves/black glasses = /obj/item/clothing/glasses/fakesunglasses l_pocket = /obj/item/toy/sword -/decl/hierarchy/outfit/h_professional/post_equip(var/mob/living/carbon/human/H) +/decl/hierarchy/outfit/costume/professional/post_equip(var/mob/living/carbon/human/H) var/obj/item/weapon/storage/briefcase/new_briefcase = new(H) for(var/obj/item/briefcase_item in new_briefcase) qdel(briefcase_item) @@ -30,9 +30,9 @@ new_briefcase.contents += new /obj/item/clothing/mask/gas/clown_hat H.equip_to_slot_or_del(new_briefcase, slot_l_hand) -/decl/hierarchy/outfit/h_horrorcop - name = "Costume - Slasher Movie Cop" - uniform = /obj/item/clothing/under/pcrc{ starting_accessories=list(/obj/item/clothing/accessory/holster) } +/decl/hierarchy/outfit/costume/horrorcop + name = OUTFIT_COSTUME("Slasher Movie Cop") + uniform = /obj/item/clothing/under/pcrc{ starting_accessories=list(/obj/item/clothing/accessory/holster/hip) } shoes = /obj/item/clothing/shoes/black gloves = /obj/item/clothing/gloves/black glasses = /obj/item/clothing/glasses/fakesunglasses @@ -40,7 +40,7 @@ head = /obj/item/clothing/head/beret r_hand = /obj/item/weapon/gun/projectile/revolver/capgun -/decl/hierarchy/outfit/h_horrorcop/post_equip(var/mob/living/carbon/human/H) +/decl/hierarchy/outfit/costume/horrorcop/post_equip(var/mob/living/carbon/human/H) var/obj/item/clothing/under/U = H.w_uniform if(U.accessories.len) for(var/obj/item/clothing/accessory/A in U.accessories) @@ -48,16 +48,16 @@ var/obj/item/clothing/accessory/holster/O = A O.holster_verb() -/decl/hierarchy/outfit/h_cowboy - name = "Costume - Cowboy" - uniform = /obj/item/clothing/under/pants{ starting_accessories=list(/obj/item/clothing/accessory/holster) } +/decl/hierarchy/outfit/costume/cowboy + name = OUTFIT_COSTUME("Cowboy") + uniform = /obj/item/clothing/under/pants{ starting_accessories=list(/obj/item/clothing/accessory/holster/hip) } shoes = /obj/item/clothing/shoes/boots/cowboy head = /obj/item/clothing/head/cowboy_hat gloves = /obj/item/clothing/gloves/fingerless suit = /obj/item/clothing/accessory/poncho r_hand = /obj/item/weapon/gun/projectile/revolver/capgun -/decl/hierarchy/outfit/h_cowboy/post_equip(var/mob/living/carbon/human/H) +/decl/hierarchy/outfit/costume/cowboy/post_equip(var/mob/living/carbon/human/H) var/obj/item/clothing/under/U = H.w_uniform if(U.accessories.len) for(var/obj/item/clothing/accessory/A in U.accessories) @@ -65,8 +65,8 @@ var/obj/item/clothing/accessory/holster/O = A O.holster_verb() -/decl/hierarchy/outfit/h_lumberjack - name = "Costume - Lumberjack" +/decl/hierarchy/outfit/costume/lumberjack + name = OUTFIT_COSTUME("Lumberjack") uniform = /obj/item/clothing/under/pants{ starting_accessories=list(/obj/item/clothing/accessory/sweater/blackneck) } shoes = /obj/item/clothing/shoes/boots/workboots head = /obj/item/clothing/head/beanie @@ -74,8 +74,8 @@ suit = /obj/item/clothing/suit/storage/flannel/red r_hand = /obj/item/weapon/material/twohanded/fireaxe/foam -/decl/hierarchy/outfit/h_firefighter - name = "Costume - Firefighter" +/decl/hierarchy/outfit/costume/firefighter + name = OUTFIT_COSTUME("Firefighter") uniform = /obj/item/clothing/under/pants shoes = /obj/item/clothing/shoes/boots/workboots head = /obj/item/clothing/head/hardhat/red @@ -83,22 +83,22 @@ suit = /obj/item/clothing/suit/fire/firefighter mask = /obj/item/clothing/mask/gas -/decl/hierarchy/outfit/h_highlander - name = "Costume - Highlander" +/decl/hierarchy/outfit/costume/highlander + name = OUTFIT_COSTUME("Highlander") uniform = /obj/item/clothing/under/kilt shoes = /obj/item/clothing/shoes/boots/jackboots head = /obj/item/clothing/head/beret r_hand = /obj/item/weapon/material/sword/foam -/decl/hierarchy/outfit/h_vampire - name = "Costume - Vampire" +/decl/hierarchy/outfit/costume/vampire + name = OUTFIT_COSTUME("Vampire") uniform = /obj/item/clothing/under/suit_jacket/really_black shoes = /obj/item/clothing/shoes/dress gloves = /obj/item/clothing/gloves/white r_hand = /obj/item/weapon/bedsheet/red -/decl/hierarchy/outfit/h_vampire_hunter - name = "Costume - Vampire Hunter" +/decl/hierarchy/outfit/costume/vampire_hunter + name = OUTFIT_COSTUME("Vampire Hunter") uniform = /obj/item/clothing/under/pants/tan suit = /obj/item/clothing/suit/storage/toggle/brown_jacket/sleeveless shoes = /obj/item/clothing/shoes/boots/jackboots @@ -106,10 +106,18 @@ l_pocket = /obj/item/toy/crossbow r_pocket = /obj/item/device/flashlight/color/red -/decl/hierarchy/outfit/h_pirate - name = "Costume - Pirate" +/decl/hierarchy/outfit/costume/pirate + name = OUTFIT_COSTUME("Pirate") uniform = /obj/item/clothing/under/pirate shoes = /obj/item/clothing/shoes/brown - head = /obj/item/clothing/head/helmet/space + head = /obj/item/clothing/head/pirate suit = /obj/item/clothing/suit/pirate - glasses = /obj/item/clothing/glasses/eyepatch \ No newline at end of file + glasses = /obj/item/clothing/glasses/eyepatch + +/decl/hierarchy/outfit/costume/whiteout + name = OUTFIT_COSTUME("Snow Ghost") + uniform = /obj/item/clothing/under/color/white{ starting_accessories=list(/obj/item/clothing/accessory/scarf/white) } + shoes = /obj/item/clothing/shoes/white + suit = /obj/item/clothing/suit/storage/hooded/chaplain_hoodie/whiteout + gloves = /obj/item/clothing/gloves/white + mask = /obj/item/clothing/mask/surgical \ No newline at end of file diff --git a/code/datums/outfits/jobs/_defines.dm b/code/datums/outfits/jobs/_defines.dm deleted file mode 100644 index e4bdd05fbb..0000000000 --- a/code/datums/outfits/jobs/_defines.dm +++ /dev/null @@ -1,2 +0,0 @@ -#define OUTFIT_JOB_NAME(job_name) ("Job - " + job_name) -#define OUTFIT_MILITARY(job_name) ("Military Uniform - " + job_name) \ No newline at end of file diff --git a/code/datums/outfits/outfit.dm b/code/datums/outfits/outfit.dm index 93ea518df1..e69e9eb705 100644 --- a/code/datums/outfits/outfit.dm +++ b/code/datums/outfits/outfit.dm @@ -57,6 +57,8 @@ var/list/outfits_decls_by_type_ var/flags // Specific flags + var/undress = 1 //Does the outfit undress the mob upon equp? + /decl/hierarchy/outfit/New() ..() diff --git a/code/datums/uplink/backup.dm b/code/datums/uplink/backup.dm new file mode 100644 index 0000000000..40f2a468f6 --- /dev/null +++ b/code/datums/uplink/backup.dm @@ -0,0 +1,35 @@ +/********* +* Back up * +**********/ +/datum/uplink_item/item/backup + category = /datum/uplink_category/backup + blacklisted = 1 + +/datum/uplink_item/item/backup/syndicate_drone_protector + name = "Drone (Protector)" + desc = "A miniature teleport which will bring a powerful and loyal drone to you. \ + This type comes with a directional shield projector, a supressive fire energy weapon, \ + a stunbaton, handcuffs, an agent ID, energy sword, pinpointer, and a jetpack." + item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 1.5 + antag_roles = list("mercenary") + path = /obj/item/weapon/antag_spawner/syndicate_drone/protector + +/datum/uplink_item/item/backup/syndicate_drone_combat_medic + name = "Drone (Combat Medic)" + desc = "A miniature teleport which will bring a powerful and loyal drone to you. \ + This type comes with standard medical equipment, full set of surgery tools, \ + a powerful hypospray that can create many potent chemicals, an agent ID, energy \ + sword, pinpointer, and a jetpack." + item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 1.5 + antag_roles = list("mercenary") + path = /obj/item/weapon/antag_spawner/syndicate_drone/combat_medic + +/datum/uplink_item/item/backup/syndicate_drone_mechanist + name = "Drone (Mechanist)" + desc = "A miniature teleport which will bring a powerful and loyal drone to you. \ + This type comes with a full set of tools, an RCD, the ability to unlock other bound synthetics, \ + a cryptographic sequencer, an AI detector, the ability to analyze and repair full-body prosthetics, \ + a set of construction materials, an ionic rapier, an agent ID, energy sword, pinpointer, and a jetpack." + item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 1.5 + antag_roles = list("mercenary") + path = /obj/item/weapon/antag_spawner/syndicate_drone/mechanist \ No newline at end of file diff --git a/code/datums/uplink/uplink_categories.dm b/code/datums/uplink/uplink_categories.dm index 7c65747f0b..2776085594 100644 --- a/code/datums/uplink/uplink_categories.dm +++ b/code/datums/uplink/uplink_categories.dm @@ -49,4 +49,7 @@ datum/uplink_category/ammunition name = "Highly Visible and Dangerous Weapons" /datum/uplink_category/telecrystals - name = "Telecrystals" \ No newline at end of file + name = "Telecrystals" + +/datum/uplink_category/backup + name = "Backup" \ No newline at end of file diff --git a/code/datums/uplink/visible_weapons.dm b/code/datums/uplink/visible_weapons.dm index f7d79c5b6a..ce4e205f64 100644 --- a/code/datums/uplink/visible_weapons.dm +++ b/code/datums/uplink/visible_weapons.dm @@ -112,6 +112,12 @@ path = /obj/item/weapon/storage/secure/briefcase/rifle antag_roles = list("traitor", "autotraitor", "infiltrator") +/datum/uplink_item/item/visible_weapons/fuelrodcannon + name = "Fuel-Rod Cannon" + desc = "An incredibly bulky weapon whose devastating firepower is only matched by its severe need for expensive, and rare, ammunition. This device will likely require extra preparation to use, you are warned." + item_cost = DEFAULT_TELECRYSTAL_AMOUNT + path = /obj/item/weapon/storage/secure/briefcase/fuelrod + /datum/uplink_item/item/visible_weapons/tommygun name = "Tommygun (.45)" // We're keeping this because it's CLASSY. -Spades item_cost = 60 diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index 5d67b6eece..bd140c3061 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -9,6 +9,7 @@ throw_speed = 4 throw_range = 20 matter = list(DEFAULT_WALL_MATERIAL = 500) + preserve_item = 1 var/obj/item/weapon/disk/nuclear/the_disk = null var/active = 0 @@ -263,3 +264,57 @@ icon_state = "pinonfar" spawn(5) .() + + +// This one only points to the ship. Useful if there is no nuking to occur today. +/obj/item/weapon/pinpointer/shuttle + var/shuttle_comp_id = null + var/obj/machinery/computer/shuttle_control/our_shuttle = null + +/obj/item/weapon/pinpointer/shuttle/attack_self(mob/user as mob) + if(!active) + active = TRUE + find_shuttle() + to_chat(user, "Shuttle Locator active.") + else + active = FALSE + icon_state = "pinoff" + to_chat(user, "You deactivate the pinpointer.") + +/obj/item/weapon/pinpointer/shuttle/proc/find_shuttle() + if(!active) + return + + if(!our_shuttle) + for(var/obj/machinery/computer/shuttle_control/S in machines) + if(S.shuttle_tag == shuttle_comp_id) // Shuttle tags are used so that it will work if the computer path changes, as it does on the southern cross map. + our_shuttle = S + break + + if(!our_shuttle) + icon_state = "pinonnull" + return + + if(loc.z != our_shuttle.z) //If you are on a different z-level from the shuttle + icon_state = "pinonnull" + else + set_dir(get_dir(src, our_shuttle)) + switch(get_dist(src, our_shuttle)) + if(0) + icon_state = "pinondirect" + if(1 to 8) + icon_state = "pinonclose" + if(9 to 16) + icon_state = "pinonmedium" + if(16 to INFINITY) + icon_state = "pinonfar" + + spawn(5) + .() + + +/obj/item/weapon/pinpointer/shuttle/merc + shuttle_comp_id = "Mercenary" + +/obj/item/weapon/pinpointer/shuttle/heist + shuttle_comp_id = "Skipjack" \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/assistance/assistance.dm b/code/game/gamemodes/technomancer/assistance/assistance.dm index db9e98a266..0e550a08b2 100644 --- a/code/game/gamemodes/technomancer/assistance/assistance.dm +++ b/code/game/gamemodes/technomancer/assistance/assistance.dm @@ -10,90 +10,6 @@ cost = 300 obj_path = /obj/item/weapon/antag_spawner/technomancer_apprentice -/obj/item/weapon/antag_spawner - w_class = ITEMSIZE_TINY - var/used = 0 - var/ghost_query_type = null - -/obj/item/weapon/antag_spawner/proc/spawn_antag(client/C, turf/T) - return - -/obj/item/weapon/antag_spawner/proc/equip_antag(mob/target) - return - -/obj/item/weapon/antag_spawner/proc/request_player() - if(!ghost_query_type) - return - - var/datum/ghost_query/Q = new ghost_query_type() - var/list/winner = Q.query() - if(winner.len) - var/mob/observer/dead/D = winner[1] - spawn_antag(D.client, get_turf(src)) - else - reset_search() - return - -/obj/item/weapon/antag_spawner/proc/reset_search() - return - -/obj/item/weapon/antag_spawner/technomancer_apprentice - name = "apprentice teleporter" - desc = "A teleportation device, which will bring a less potent manipulator of space to you." - icon = 'icons/obj/objects.dmi' - icon_state = "oldshieldoff" - ghost_query_type = /datum/ghost_query/apprentice - var/searching = 0 - var/datum/effect/effect/system/spark_spread/sparks - -/obj/item/weapon/antag_spawner/technomancer_apprentice/New() - ..() - sparks = new /datum/effect/effect/system/spark_spread() - sparks.set_up(5, 0, src) - sparks.attach(loc) - -/obj/item/weapon/antag_spawner/technomancer_apprentice/Destroy() - qdel(sparks) - return ..() - -/obj/item/weapon/antag_spawner/technomancer_apprentice/attack_self(mob/user) - user << "Teleporter attempting to lock on to your apprentice." - request_player() - -/obj/item/weapon/antag_spawner/technomancer_apprentice/request_player() - searching = 1 - icon_state = "oldshieldon" - ..() - -/obj/item/weapon/antag_spawner/technomancer_apprentice/reset_search() - searching = 0 - if(!used) - icon_state = "oldshieldoff" - visible_message("The teleporter failed to find the apprentice. Perhaps another attempt could be made later?") - -/obj/item/weapon/antag_spawner/technomancer_apprentice/spawn_antag(client/C, turf/T) - sparks.start() - var/mob/living/carbon/human/H = new/mob/living/carbon/human(T) - C.prefs.copy_to(H) - H.key = C.key - - H << "You are the Technomancer's apprentice! Your goal is to assist them in their mission at the [station_name()]." - H << "Your service has not gone unrewarded, however. Studying under them, you have learned how to use a Manipulation Core \ - of your own. You also have a catalog, to purchase your own functions and equipment as you see fit." - H << "It would be wise to speak to your master, and learn what their plans are for today." - - spawn(1) - technomancers.add_antagonist(H.mind, 0, 1, 0, 0, 0) - equip_antag(H) - used = 1 - qdel(src) - - -/obj/item/weapon/antag_spawner/technomancer_apprentice/equip_antag(mob/technomancer_mob) - var/datum/antagonist/technomancer/antag_datum = all_antag_types[MODE_TECHNOMANCER] - antag_datum.equip_apprentice(technomancer_mob) - - /* // For when no one wants to play support. /datum/technomancer/assistance/golem diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index e02309abd4..d3936ca7c0 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -226,24 +226,6 @@ var/last_no_computer_message = 0 var/applies_stasis = 1 - // These items are preserved when the process() despawn proc occurs. - var/list/preserve_items = list( - /obj/item/weapon/hand_tele, - /obj/item/weapon/card/id/captains_spare, - /obj/item/device/aicard, - /obj/item/device/paicard, - /obj/item/weapon/gun, - /obj/item/weapon/cell/device, - /obj/item/ammo_magazine, - /obj/item/ammo_casing, - /obj/item/weapon/pinpointer, - /obj/item/clothing/suit, - /obj/item/clothing/shoes/magboots, - /obj/item/blueprints, - /obj/item/clothing/head/helmet/space, - /obj/item/weapon/storage/internal - ) - /obj/machinery/cryopod/robot name = "robotic storage unit" desc = "A storage unit for robots." @@ -407,12 +389,10 @@ for(var/obj/item/W in items) - var/preserve = null + var/preserve = 0 - for(var/T in preserve_items) - if(istype(W,T)) - preserve = 1 - break + if(W.preserve_item) + preserve = 1 if(istype(W,/obj/item/weapon/implant/health)) for(var/obj/machinery/computer/cloning/com in world) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 6455fa6430..d8ad21eb21 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -120,6 +120,17 @@ obj/machinery/recharger update_use_power(1) return + if(istype(charging, /obj/item/weapon/gun/magnetic)) + var/obj/item/weapon/gun/magnetic/M = charging + if(!M.cell.fully_charged()) + icon_state = icon_state_charging + M.cell.give(active_power_usage*CELLRATE) + update_use_power(2) + else + icon_state = icon_state_charged + update_use_power(1) + return + if(istype(charging, /obj/item/weapon/melee/baton)) var/obj/item/weapon/melee/baton/B = charging if(B.bcell) @@ -226,7 +237,7 @@ obj/machinery/recharger icon = 'icons/obj/stationobjs.dmi' icon_state = "wrecharger0" active_power_usage = 25000 //25 kW , It's more specialized than the standalone recharger (guns, batons, and flashlights only) so make it more powerful - allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/device/flashlight, /obj/item/weapon/cell/device) + allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/gun/magnetic, /obj/item/weapon/melee/baton, /obj/item/device/flashlight, /obj/item/weapon/cell/device) icon_state_charged = "wrecharger2" icon_state_charging = "wrecharger1" icon_state_idle = "wrecharger0" diff --git a/code/game/objects/effects/decals/Cleanable/fuel.dm b/code/game/objects/effects/decals/Cleanable/fuel.dm index 85e68c31af..d9e9baabf6 100644 --- a/code/game/objects/effects/decals/Cleanable/fuel.dm +++ b/code/game/objects/effects/decals/Cleanable/fuel.dm @@ -52,11 +52,17 @@ /obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/New(newLoc, amt = 1, d = 0) set_dir(d) //Setting this direction means you won't get torched by your own flamethrower. + if(istype(newLoc, /turf/simulated)) + var/turf/simulated/T = newLoc + T.hotspot_expose((T20C*2) + 380,500) //Ignite the fuel. . = ..() /obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/Spread() //The spread for flamethrower fuel is much more precise, to create a wide fire pattern. - if(amount < 0.1) return + if(amount <= 0.1) + if(amount < 0.025) //Hopefully stops fuel spreading into unburnable puddles. + qdel(src) + return var/turf/simulated/S = loc if(!istype(S)) return @@ -65,7 +71,12 @@ if(locate(/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel) in O) continue if(O.CanPass(null, S, 0, 0) && S.CanPass(null, O, 0, 0)) - new/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(O,amount*0.25,d) + var/new_pool_amount = amount * 0.25 + if(new_pool_amount > 0.1) + var/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/F = new(O, new_pool_amount, d) + if(F.amount < 0.025) //Safety. + qdel(F) + return O.hotspot_expose((T20C*2) + 380,500) //Light flamethrower fuel on fire immediately. amount *= 0.25 diff --git a/code/game/objects/items/antag_spawners.dm b/code/game/objects/items/antag_spawners.dm new file mode 100644 index 0000000000..ce358bc1ee --- /dev/null +++ b/code/game/objects/items/antag_spawners.dm @@ -0,0 +1,135 @@ +/obj/item/weapon/antag_spawner + w_class = ITEMSIZE_TINY + var/used = 0 + var/ghost_query_type = null + var/searching = FALSE + var/datum/effect/effect/system/spark_spread/sparks + +/obj/item/weapon/antag_spawner/New() + ..() + sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(5, 0, src) + sparks.attach(loc) + +/obj/item/weapon/antag_spawner/Destroy() + qdel(sparks) + return ..() + +/obj/item/weapon/antag_spawner/proc/spawn_antag(client/C, turf/T) + return + +/obj/item/weapon/antag_spawner/proc/equip_antag(mob/target) + return + +/obj/item/weapon/antag_spawner/proc/request_player() + if(!ghost_query_type) + return + if(searching) + return // Already searching. + searching = TRUE + + var/datum/ghost_query/Q = new ghost_query_type() + var/list/winner = Q.query() + if(winner.len) + var/mob/observer/dead/D = winner[1] + spawn_antag(D.client, get_turf(src)) + else + reset_search() + return + +/obj/item/weapon/antag_spawner/proc/reset_search() + searching = FALSE + return + +/obj/item/weapon/antag_spawner/technomancer_apprentice + name = "apprentice teleporter" + desc = "A teleportation device, which will bring a less potent manipulator of space to you." + icon = 'icons/obj/objects.dmi' + icon_state = "oldshieldoff" + ghost_query_type = /datum/ghost_query/apprentice + +/obj/item/weapon/antag_spawner/technomancer_apprentice/attack_self(mob/user) + user << "Teleporter attempting to lock on to your apprentice." + request_player() + +/obj/item/weapon/antag_spawner/technomancer_apprentice/request_player() + icon_state = "oldshieldon" + ..() + +/obj/item/weapon/antag_spawner/technomancer_apprentice/reset_search() + ..() + if(!used) + icon_state = "oldshieldoff" + visible_message("The teleporter failed to find the apprentice. Perhaps another attempt could be made later?") + +/obj/item/weapon/antag_spawner/technomancer_apprentice/spawn_antag(client/C, turf/T) + sparks.start() + var/mob/living/carbon/human/H = new/mob/living/carbon/human(T) + C.prefs.copy_to(H) + H.key = C.key + + H << "You are the Technomancer's apprentice! Your goal is to assist them in their mission at the [station_name()]." + H << "Your service has not gone unrewarded, however. Studying under them, you have learned how to use a Manipulation Core \ + of your own. You also have a catalog, to purchase your own functions and equipment as you see fit." + H << "It would be wise to speak to your master, and learn what their plans are for today." + + spawn(1) + technomancers.add_antagonist(H.mind, 0, 1, 0, 0, 0) + equip_antag(H) + used = 1 + qdel(src) + +/obj/item/weapon/antag_spawner/technomancer_apprentice/equip_antag(mob/technomancer_mob) + var/datum/antagonist/technomancer/antag_datum = all_antag_types[MODE_TECHNOMANCER] + antag_datum.equip_apprentice(technomancer_mob) + + + + +/obj/item/weapon/antag_spawner/syndicate_drone + name = "drone teleporter" + desc = "A teleportation device, which will bring a powerful and loyal drone to you." + icon = 'icons/obj/objects.dmi' + icon_state = "oldshieldoff" + ghost_query_type = /datum/ghost_query/syndicate_drone + var/drone_type = null + +/obj/item/weapon/antag_spawner/syndicate_drone/attack_self(mob/user) + to_chat(user, "Teleporter attempting to lock on to an available unit.") + request_player() + +/obj/item/weapon/antag_spawner/syndicate_drone/request_player() + icon_state = "oldshieldon" + ..() + +/obj/item/weapon/antag_spawner/syndicate_drone/reset_search() + ..() + if(!used) + icon_state = "oldshieldoff" + visible_message("The teleporter failed to find any available. Perhaps another attempt could be made later?") + +/obj/item/weapon/antag_spawner/syndicate_drone/spawn_antag(client/C, turf/T) + sparks.start() + var/mob/living/silicon/robot/R = new drone_type(T) + + // Put this text here before ckey change so that their laws are shown below it, since borg login() shows it. + to_chat(C, "You are a Mercenary Drone, activated to serve your team.") + to_chat(C, "Be sure to examine your currently loaded lawset closely. It would be wise \ + to speak with your team, and learn what their plan is for today.") + + R.key = C.key +// R.Namepick() // Apparnetly making someone a merc lets them pick a name, so this isn't needed. + + spawn(1) + mercs.add_antagonist(R.mind, FALSE, TRUE, FALSE, FALSE, FALSE) + //add_antagonist(var/datum/mind/player, var/ignore_role, var/do_not_equip, var/move_to_spawn, var/do_not_announce, var/preserve_appearance) + qdel(src) + +/obj/item/weapon/antag_spawner/syndicate_drone/protector + drone_type = /mob/living/silicon/robot/syndicate/protector + +/obj/item/weapon/antag_spawner/syndicate_drone/combat_medic + drone_type = /mob/living/silicon/robot/syndicate/combat_medic + +/obj/item/weapon/antag_spawner/syndicate_drone/mechanist + drone_type = /mob/living/silicon/robot/syndicate/mechanist \ No newline at end of file diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index 0577fee4a7..56a0a6cbc6 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/items.dmi' icon_state = "blueprints" attack_verb = list("attacked", "bapped", "hit") + preserve_item = 1 var/const/AREA_ERRNONE = 0 var/const/AREA_STATION = 1 var/const/AREA_SPACE = 2 diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index 5a7a028054..ab893415ac 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -7,6 +7,7 @@ w_class = ITEMSIZE_NORMAL slot_flags = SLOT_BELT show_messages = 0 + preserve_item = 1 var/flush = null origin_tech = list(TECH_DATA = 4, TECH_MATERIAL = 4) diff --git a/code/game/objects/items/devices/defib.dm b/code/game/objects/items/devices/defib.dm index b9b8af0c0d..decb40d807 100644 --- a/code/game/objects/items/devices/defib.dm +++ b/code/game/objects/items/devices/defib.dm @@ -11,6 +11,7 @@ slot_flags = SLOT_BACK force = 5 throwforce = 6 + preserve_item = 1 w_class = ITEMSIZE_LARGE origin_tech = list(TECH_BIO = 4, TECH_POWER = 2) action_button_name = "Remove/Replace Paddles" @@ -542,6 +543,13 @@ var/mob/living/silicon/robot/R = src.loc return (R.cell && R.cell.checked_use(charge_amt)) +/obj/item/weapon/shockpaddles/robot/combat + name = "combat defibrillator paddles" + desc = "A pair of advanced shockpaddles powered by a robot's internal power cell, able to penetrate thick clothing. This version \ + appears to be optimized for combat situations, foregoing the safety inhabitors in favor of a faster charging time." + safety = 0 + chargetime = (1 SECONDS) + /* Shockpaddles that are linked to a base unit */ diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index 8e1803ad40..2cf67da30c 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -7,6 +7,7 @@ slot_flags = SLOT_BELT origin_tech = list(TECH_DATA = 2) show_messages = 0 + preserve_item = 1 var/obj/item/device/radio/radio var/looking_for_personality = 0 diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index f113e5f153..9a56cf94a7 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -177,8 +177,9 @@ if(M.brainmob.mind) for(var/mob/observer/dead/G in player_list) if(G.can_reenter_corpse && G.mind == M.brainmob.mind) - ghost_can_reenter = 1 - break + ghost_can_reenter = 1 //May come in use again at another point. + to_chat(user, "\The [W] is completely unresponsive; though it may be able to auto-resuscitate.") //Jamming a ghosted brain into a borg is likely detrimental, and may result in some problems. + return if(!ghost_can_reenter) user << "\The [W] is completely unresponsive; there's no point." return diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index 60a847a4d6..5c0f43e139 100755 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -18,6 +18,7 @@ AI MODULES throw_speed = 3 throw_range = 15 origin_tech = list(TECH_DATA = 3) + preserve_item = 1 var/datum/ai_laws/laws = null /obj/item/weapon/aiModule/proc/install(var/atom/movable/AM, var/mob/living/user) diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index d79f584e2f..df744d1df3 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -15,6 +15,7 @@ w_class = ITEMSIZE_NORMAL origin_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 2) matter = list(DEFAULT_WALL_MATERIAL = 50000) + preserve_item = 1 var/datum/effect/effect/system/spark_spread/spark_system var/stored_matter = 0 var/max_stored_matter = 30 @@ -178,6 +179,9 @@ /obj/item/weapon/rcd/borg canRwall = 1 +/obj/item/weapon/rcd/borg/lesser + canRwall = FALSE + /obj/item/weapon/rcd/borg/useResource(var/amount, var/mob/user) if(isrobot(user)) var/mob/living/silicon/robot/R = user diff --git a/code/game/objects/items/weapons/id cards/station_ids.dm b/code/game/objects/items/weapons/id cards/station_ids.dm index 68d969a6b5..21121215a9 100644 --- a/code/game/objects/items/weapons/id cards/station_ids.dm +++ b/code/game/objects/items/weapons/id cards/station_ids.dm @@ -138,6 +138,7 @@ desc = "A golden card which shows power and might." icon_state = "gold" item_state = "gold_id" + preserve_item = 1 /obj/item/weapon/card/id/gold/captain/New() assignment = "Colony Director" @@ -145,18 +146,12 @@ access = get_all_station_access() ..() -/obj/item/weapon/card/id/captains_spare +/obj/item/weapon/card/id/gold/captain/spare name = "colony director's spare ID" desc = "The spare ID of the High Lord himself." - icon_state = "gold" - item_state = "gold_id" registered_name = "Colony Director" assignment = "Colony Director" -/obj/item/weapon/card/id/captains_spare/New() - access = get_all_station_access() - ..() - /obj/item/weapon/card/id/synthetic name = "\improper Synthetic ID" desc = "Access module for NanoTrasen Synthetics" @@ -171,7 +166,7 @@ /obj/item/weapon/card/id/centcom name = "\improper CentCom. ID" desc = "An ID straight from Central Command." - icon_state = "centcom" + icon_state = "nanotrasen" registered_name = "Central Command" assignment = "General" @@ -186,6 +181,7 @@ /obj/item/weapon/card/id/centcom/ERT name = "\improper Emergency Response Team ID" assignment = "Emergency Response Team" + icon_state = "centcom" /obj/item/weapon/card/id/centcom/ERT/New() ..() diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm index 3a2373c696..2b63fb79bd 100644 --- a/code/game/objects/items/weapons/power_cells.dm +++ b/code/game/objects/items/weapons/power_cells.dm @@ -34,6 +34,7 @@ throw_range = 7 maxcharge = 480 matter = list("metal" = 350, "glass" = 50) + preserve_item = 1 /obj/item/weapon/cell/device/weapon name = "weapon power cell" diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index 5e3c96c8a0..814592a890 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -32,6 +32,7 @@ /obj/item/weapon/shield name = "shield" var/base_block_chance = 50 + preserve_item = 1 item_icons = list( slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi', slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi', diff --git a/code/game/objects/items/weapons/storage/internal.dm b/code/game/objects/items/weapons/storage/internal.dm index 1f1a5f6963..6fbbedf069 100644 --- a/code/game/objects/items/weapons/storage/internal.dm +++ b/code/game/objects/items/weapons/storage/internal.dm @@ -1,6 +1,7 @@ //A storage item intended to be used by other items to provide storage functionality. //Types that use this should consider overriding emp_act() and hear_talk(), unless they shield their contents somehow. /obj/item/weapon/storage/internal + preserve_item = 1 var/obj/item/master_item /obj/item/weapon/storage/internal/New(obj/item/MI) diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index 770ecd169b..e52ad4d812 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -9,6 +9,7 @@ max_w_class = ITEMSIZE_NORMAL max_storage_space = ITEMSIZE_COST_NORMAL * 4 //The sum of the w_classes of all the items in this storage item. req_access = list(access_armory) + preserve_item = 1 var/locked = 1 var/broken = 0 var/icon_locked = "lockbox+l" diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 0c7ec20167..cd3aca0f37 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -295,3 +295,22 @@ for(var/i = 1 to 4) new /obj/item/ammo_casing/a145(src) + +/obj/item/weapon/storage/secure/briefcase/fuelrod + name = "heavy briefcase" + desc = "A heavy, locked briefcase." + description_fluff = "The container, upon opening, looks to have a few oddly shaped indentations in its packing." + description_antag = "This case will likely contain a charged fuel rod gun, and a few fuel rods to go with it. It can only hold the fuel rod gun, fuel rods, batteries, a screwdriver, and stock machine parts." + force = 12 //Anti-rad lined i.e. Lead, probably gonna hurt a bit if you get bashed with it. + can_hold = list(/obj/item/weapon/gun/magnetic/fuelrod, /obj/item/weapon/fuel_assembly, /obj/item/weapon/cell, /obj/item/weapon/stock_parts, /obj/item/weapon/screwdriver) + + +/obj/item/weapon/storage/secure/briefcase/fuelrod/New() + ..() + new /obj/item/weapon/gun/magnetic/fuelrod(src) + new /obj/item/weapon/fuel_assembly/deuterium(src) + new /obj/item/weapon/fuel_assembly/deuterium(src) + new /obj/item/weapon/fuel_assembly/tritium(src) + new /obj/item/weapon/fuel_assembly/tritium(src) + new /obj/item/weapon/fuel_assembly/phoron(src) + new /obj/item/weapon/screwdriver(src) diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm index e0e11a6285..b991db0510 100644 --- a/code/game/objects/items/weapons/teleportation.dm +++ b/code/game/objects/items/weapons/teleportation.dm @@ -129,6 +129,7 @@ Frequency: throw_range = 5 origin_tech = list(TECH_MAGNET = 1, TECH_BLUESPACE = 3) matter = list(DEFAULT_WALL_MATERIAL = 10000) + preserve_item = 1 /obj/item/weapon/hand_tele/attack_self(mob/user as mob) var/turf/current_location = get_turf(user)//What turf is the user on? diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index a3f77757f2..84f9f88602 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -12,6 +12,7 @@ var/damtype = "brute" var/armor_penetration = 0 var/show_messages + var/preserve_item = 0 //whether this object is preserved when its owner goes into cryo-storage, gateway, etc /obj/Destroy() processing_objects -= src diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index f79b6be0ae..c15b454878 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -973,7 +973,7 @@ var/list/multi_point_spawns /obj/random_multi/single_item/captains_spare_id name = "Multi Point - Captain's Spare" id = "Captain's spare id" - item_path = /obj/item/weapon/card/id/captains_spare + item_path = /obj/item/weapon/card/id/gold/captain/spare //Multiple Object Spawn diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index 8b50dfb095..06402a90a4 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -70,16 +70,16 @@ var/msg = "" var/modmsg = "" var/devmsg = "" - var/mentmsg = "" + var/eventMmsg = "" var/num_mods_online = 0 var/num_admins_online = 0 var/num_devs_online = 0 - var/num_mentors_online = 0 + var/num_event_managers_online = 0 if(holder) for(var/client/C in admins) - if(R_ADMIN & C.holder.rights || (!R_MOD & C.holder.rights && !R_MENTOR & C.holder.rights)) //Used to determine who shows up in admin rows + if(R_ADMIN & C.holder.rights || (!R_MOD & C.holder.rights && !R_EVENT & C.holder.rights)) //Used to determine who shows up in admin rows - if(C.holder.fakekey && (!R_ADMIN & holder.rights && !R_MOD & holder.rights)) //Mentors can't see stealthmins + if(C.holder.fakekey && (!R_ADMIN & holder.rights && !R_MOD & holder.rights)) //Event Managerss can't see stealthmins continue msg += "\t[C] is a [C.holder.rank]" @@ -102,7 +102,7 @@ msg += "\n" num_admins_online++ - else if(R_MOD & C.holder.rights) //Who shows up in mod/mentor rows. + else if(R_MOD & C.holder.rights) //Who shows up in mod rows. modmsg += "\t[C] is a [C.holder.rank]" if(isobserver(C.mob)) @@ -137,26 +137,26 @@ devmsg += "\n" num_devs_online++ - else if(R_MENTOR & C.holder.rights) - mentmsg += "\t[C] is a [C.holder.rank]" + else if(R_EVENT & C.holder.rights) + eventMmsg += "\t[C] is a [C.holder.rank]" if(isobserver(C.mob)) - mentmsg += " - Observing" + eventMmsg += " - Observing" else if(istype(C.mob,/mob/new_player)) - mentmsg += " - Lobby" + eventMmsg += " - Lobby" else - mentmsg += " - Playing" + eventMmsg += " - Playing" if(C.is_afk()) var/seconds = C.last_activity_seconds() - mentmsg += " (AFK - " - mentmsg += "[round(seconds / 60)] minutes, " - mentmsg += "[seconds % 60] seconds)" - mentmsg += "\n" - num_mentors_online++ + eventMmsg += " (AFK - " + eventMmsg += "[round(seconds / 60)] minutes, " + eventMmsg += "[seconds % 60] seconds)" + eventMmsg += "\n" + num_event_managers_online++ else for(var/client/C in admins) - if(R_ADMIN & C.holder.rights || (!R_MOD & C.holder.rights && !R_MENTOR & C.holder.rights)) + if(R_ADMIN & C.holder.rights || (!R_MOD & C.holder.rights && !R_EVENT & C.holder.rights)) if(!C.holder.fakekey) msg += "\t[C] is a [C.holder.rank]\n" num_admins_online++ @@ -166,9 +166,9 @@ else if (R_SERVER & C.holder.rights) devmsg += "\t[C] is a [C.holder.rank]\n" num_devs_online++ - else if (R_MENTOR & C.holder.rights) - mentmsg += "\t[C] is a [C.holder.rank]\n" - num_mentors_online++ + else if (R_EVENT & C.holder.rights) + eventMmsg += "\t[C] is a [C.holder.rank]\n" + num_event_managers_online++ if(config.admin_irc) src << "Adminhelps are also sent to IRC. If no admins are available in game try anyway and an admin on IRC may see it and respond." @@ -180,7 +180,7 @@ if(config.show_devs) msg += "\n Current Developers ([num_devs_online]):\n" + devmsg - if(config.show_mentors) - msg += "\n Current Mentors ([num_mentors_online]):\n" + mentmsg + if(config.show_event_managers) + msg += "\n Current Event Managers ([num_event_managers_online]):\n" + eventMmsg src << msg diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 9e4a5a6344..121e355d22 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -860,7 +860,7 @@ proc/admin_notice(var/message, var/rights) set desc="Delay the game start/end" set name="Delay" - if(!check_rights(R_SERVER)) return + if(!check_rights(R_SERVER|R_EVENT)) return if (!ticker || ticker.current_state != GAME_STATE_PREGAME) ticker.delay_end = !ticker.delay_end log_admin("[key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].") @@ -1225,16 +1225,16 @@ proc/admin_notice(var/message, var/rights) /* - helper proc to test if someone is a mentor or not. Got tired of writing this same check all over the place. + helper proc to test if someone is an event manager or not. Got tired of writing this same check all over the place. */ -/proc/is_mentor(client/C) +/proc/is_eventM(client/C) if(!istype(C)) return 0 if(!C.holder) return 0 - if(C.holder.rights == R_MENTOR) + if(C.holder.rights == R_EVENT) return 1 return 0 @@ -1266,7 +1266,7 @@ proc/admin_notice(var/message, var/rights) var/ref_mob = "\ref[M]" return "[key_name(C, link, name, highlight_special)](VV)([admin_jump_link(M, src)]) (TAKE)" - if(4) //Mentors + if(4) //Event Managers var/ref_mob = "\ref[M]" return "[key_name(C, link, name, highlight_special)] (?) (PP) (VV) (SM) ([admin_jump_link(M, src)]) (TAKE)" diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index 3652237454..12c00aa708 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -37,11 +37,11 @@ var/list/admin_ranks = list() //list of all ranks with associated rights if("stealth") rights |= R_STEALTH if("rejuv","rejuvinate") rights |= R_REJUVINATE if("varedit") rights |= R_VAREDIT - if("everything","host","all") rights |= (R_HOST | R_BUILDMODE | R_ADMIN | R_BAN | R_FUN | R_SERVER | R_DEBUG | R_PERMISSIONS | R_POSSESS | R_STEALTH | R_REJUVINATE | R_VAREDIT | R_SOUNDS | R_SPAWN | R_MOD| R_MENTOR) + if("everything","host","all") rights |= (R_HOST | R_BUILDMODE | R_ADMIN | R_BAN | R_FUN | R_SERVER | R_DEBUG | R_PERMISSIONS | R_POSSESS | R_STEALTH | R_REJUVINATE | R_VAREDIT | R_SOUNDS | R_SPAWN | R_MOD| R_EVENT) if("sound","sounds") rights |= R_SOUNDS if("spawn","create") rights |= R_SPAWN if("mod") rights |= R_MOD - if("mentor") rights |= R_MENTOR + if("event") rights |= R_EVENT admin_ranks[rank] = rights previous_rights = rights diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 761193eb33..2503c73abb 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -8,7 +8,7 @@ var/list/admin_verbs_default = list( /client/proc/debug_variables, //allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify, // /client/proc/check_antagonists, //shows all antags, // /client/proc/cmd_mod_say, - /client/proc/cmd_mentor_check_new_players, + /client/proc/cmd_eventM_check_new_players, // /client/proc/deadchat //toggles deadchat on/off, // /client/proc/toggle_ahelp_sound, ) @@ -186,7 +186,7 @@ var/list/admin_verbs_debug = list( /client/proc/cmd_debug_tog_aliens, /client/proc/air_report, /client/proc/reload_admins, - /client/proc/reload_mentors, + /client/proc/reload_eventMs, /client/proc/restart_controller, /datum/admins/proc/restart, /client/proc/print_random_map, @@ -327,19 +327,53 @@ var/list/admin_verbs_mod = list( /client/proc/getserverlog, //allows us to fetch server logs (diary) for other days, /datum/admins/proc/view_txt_log, //shows the server log (diary) for today, /datum/admins/proc/view_atk_log //shows the server combat-log, doesn't do anything presently, - - ) -var/list/admin_verbs_mentor = list( +var/list/admin_verbs_event_manager = list( /client/proc/cmd_admin_pm_context, /client/proc/cmd_admin_pm_panel, /datum/admins/proc/PlayerNotes, /client/proc/admin_ghost, /client/proc/cmd_mod_say, /datum/admins/proc/show_player_info, -// /client/proc/dsay, - /client/proc/cmd_admin_subtle_message + /client/proc/dsay, + /client/proc/cmd_admin_subtle_message, + /client/proc/debug_variables, + /client/proc/check_antagonists, + /client/proc/aooc, + /datum/admins/proc/paralyze_mob, + /client/proc/cmd_admin_direct_narrate, + /client/proc/allow_character_respawn, + /datum/admins/proc/sendFax, + /client/proc/respawn_character, + /proc/possess, + /proc/release, + /client/proc/callproc, + /client/proc/callproc_target, + /client/proc/debug_controller, + /client/proc/show_gm_status, + /datum/admins/proc/change_weather, + /datum/admins/proc/change_time, + /client/proc/admin_give_modifier, + /client/proc/Jump, + /client/proc/jumptomob, + /client/proc/jumptocoord, + /client/proc/cmd_admin_delete, + /datum/admins/proc/delay, + /client/proc/Set_Holiday, + /client/proc/make_sound, + /client/proc/toggle_random_events, + /datum/admins/proc/cmd_admin_dress, + /client/proc/cmd_admin_gib_self, + /client/proc/drop_bomb, + /client/proc/cmd_admin_add_freeform_ai_law, + /client/proc/cmd_admin_add_random_ai_law, + /client/proc/make_sound, + /client/proc/toggle_random_events, + /client/proc/editappear, + /client/proc/roll_dices, + /datum/admins/proc/call_supply_drop, + /datum/admins/proc/call_drop_pod ) /client/proc/add_admin_verbs() @@ -361,7 +395,7 @@ var/list/admin_verbs_mentor = list( if(holder.rights & R_SOUNDS) verbs += admin_verbs_sounds if(holder.rights & R_SPAWN) verbs += admin_verbs_spawn if(holder.rights & R_MOD) verbs += admin_verbs_mod - if(holder.rights & R_MENTOR) verbs += admin_verbs_mentor + if(holder.rights & R_EVENT) verbs += admin_verbs_event_manager /client/proc/remove_admin_verbs() verbs.Remove( @@ -424,12 +458,10 @@ var/list/admin_verbs_mentor = list( if(istype(mob,/mob/observer/dead)) //re-enter var/mob/observer/dead/ghost = mob - if(!is_mentor(usr.client)) - ghost.can_reenter_corpse = 1 if(ghost.can_reenter_corpse) ghost.reenter_corpse() else - ghost << "Error: Aghost: Can't reenter corpse, mentors that use adminHUD while aghosting are not permitted to enter their corpse again" + ghost << "Error: Aghost: Can't reenter corpse, event managers that use adminHUD while aghosting are not permitted to enter their corpse again" return feedback_add_details("admin_verb","P") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index ece5f068d7..1531790268 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -367,7 +367,7 @@ if(usr.client) var/client/C = usr.client - if(is_mentor(C)) + if(is_eventM(C)) dat += {" N/A "} else switch(is_special_character(M)) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 350bfe9a24..71069be22e 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -237,7 +237,7 @@ href_list["secretsadmin"] = "check_antagonist" else if(href_list["delay_round_end"]) - if(!check_rights(R_SERVER)) return + if(!check_rights(R_SERVER|R_EVENT)) return ticker.delay_end = !ticker.delay_end log_admin("[key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].") @@ -1194,7 +1194,7 @@ show_player_panel(M) else if(href_list["adminplayerobservejump"]) - if(!check_rights(R_MENTOR|R_MOD|R_ADMIN|R_SERVER)) return + if(!check_rights(R_EVENT|R_MOD|R_ADMIN|R_SERVER|R_EVENT)) return var/mob/M = locate(href_list["adminplayerobservejump"]) @@ -1204,7 +1204,7 @@ C.jumptomob(M) else if(href_list["adminplayerobservefollow"]) - if(!check_rights(R_MENTOR|R_MOD|R_ADMIN|R_SERVER)) + if(!check_rights(R_EVENT|R_MOD|R_ADMIN|R_SERVER|R_EVENT)) return var/mob/M = locate(href_list["adminplayerobservefollow"]) @@ -1224,14 +1224,14 @@ if(ismob(M)) var/take_msg = "ADMINHELP: [key_name(usr.client)] is attending to [key_name(M)]'s adminhelp, please don't dogpile them." for(var/client/X in admins) - if((R_ADMIN|R_MOD|R_MENTOR) & X.holder.rights) + if((R_ADMIN|R_MOD|R_EVENT) & X.holder.rights) to_chat(X, take_msg) to_chat(M, "Your adminhelp is being attended to by [usr.client]. Thanks for your patience!") else to_chat(usr, "Unable to locate mob.") else if(href_list["adminplayerobservecoodjump"]) - if(!check_rights(R_ADMIN|R_SERVER|R_MOD)) return + if(!check_rights(R_ADMIN|R_SERVER|R_MOD|R_EVENT)) return var/x = text2num(href_list["X"]) var/y = text2num(href_list["Y"]) @@ -1843,7 +1843,7 @@ vsc.SetDefault(usr) else if(href_list["toglang"]) - if(check_rights(R_SPAWN)) + if(check_rights(R_SPAWN|R_EVENT)) var/mob/M = locate(href_list["toglang"]) if(!istype(M)) usr << "[M] is illegal type, must be /mob!" diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 5f3206b6df..766473e010 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -88,24 +88,20 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," if(ai_found) ai_cl = " (CL)" - //Options bar: mob, details ( admin = 2, dev = 3, mentor = 4, character name (0 = just ckey, 1 = ckey and character name), link? (0 no don't make it a link, 1 do so), + //Options bar: mob, details ( admin = 2, dev = 3, event manager = 4, character name (0 = just ckey, 1 = ckey and character name), link? (0 no don't make it a link, 1 do so), // highlight special roles (0 = everyone has same looking name, 1 = antags / special roles get a golden name) - var/mentor_msg = "Request for Help: [get_options_bar(mob, 4, 1, 1, 0)][ai_cl]: [msg]" msg = "Request for Help: [get_options_bar(mob, 2, 1, 1)][ai_cl] [msg]" var/admin_number_afk = 0 for(var/client/X in admins) - if((R_ADMIN|R_MOD|R_MENTOR|R_SERVER) & X.holder.rights) + if((R_ADMIN|R_MOD|R_EVENT|R_SERVER) & X.holder.rights) if(X.is_afk()) admin_number_afk++ + X << msg if(X.is_preference_enabled(/datum/client_preference/holder/play_adminhelp_ping)) X << 'sound/effects/adminhelp.ogg' - if(X.holder.rights == R_MENTOR) - X << mentor_msg // Mentors won't see coloring of names on people with special_roles (Antags, etc.) - else - X << msg //show it to the person adminhelping too src << "PM to-Staff : [original_msg]" diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index bcb87f06d8..dcaa745485 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -112,7 +112,7 @@ //check client/X is an admin and isn't the sender or recipient if(X == C || X == src) continue - if(X.key != key && X.key != C.key && (X.holder.rights & R_ADMIN|R_MOD|R_MENTOR)) + if(X.key != key && X.key != C.key && (X.holder.rights & R_ADMIN|R_MOD|R_EVENT)) X << "" + create_text_tag("pm_other", "PM:", X) + " [key_name(src, X, 0)] to [key_name(C, X, 0)]: [msg]" /client/proc/cmd_admin_irc_pm(sender) diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index b4e60fbd62..63209f84b4 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -23,7 +23,7 @@ set name = "Msay" set hidden = 1 - if(!check_rights(R_ADMIN|R_MOD|R_MENTOR|R_SERVER)) + if(!check_rights(R_ADMIN|R_MOD|R_SERVER)) return msg = sanitize(msg) @@ -45,7 +45,7 @@ set name = "Esay" set hidden = 1 - if(!check_rights(R_ADMIN|R_MOD|R_MENTOR|R_SERVER)) + if(!check_rights(R_ADMIN|R_MOD|R_EVENT|R_SERVER)) return msg = sanitize(msg) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 24f5669618..981d5c7b7b 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -408,10 +408,10 @@ feedback_add_details("admin_verb","SEQ") dressup_human(H, outfit, 1) -/proc/dressup_human(var/mob/living/carbon/human/H, var/decl/hierarchy/outfit/outfit, var/undress = 1) +/proc/dressup_human(var/mob/living/carbon/human/H, var/decl/hierarchy/outfit/outfit) if(!H || !outfit) return - if(undress) + if(outfit.undress) H.delete_inventory() outfit.equip(H) log_and_message_admins("changed the equipment of [key_name(H)] to [outfit.name].") diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm index b78b473e65..595675ea80 100644 --- a/code/modules/admin/verbs/diagnostics.dm +++ b/code/modules/admin/verbs/diagnostics.dm @@ -108,13 +108,13 @@ load_admins() feedback_add_details("admin_verb","RLDA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/reload_mentors() - set name = "Reload Mentors" +/client/proc/reload_eventMs() + set name = "Reload Event Managers" set category = "Debug" if(!check_rights(R_SERVER)) return - message_admins("[usr] manually reloaded Mentors") + message_admins("[usr] manually reloaded Event Managers") world.load_mods() diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index fcf4a5db0c..c14c74edd1 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -65,7 +65,7 @@ message_admins("SubtleMessage: [key_name_admin(usr)] -> [key_name_admin(M)] : [msg]", 1) feedback_add_details("admin_verb","SMS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/cmd_mentor_check_new_players() //Allows mentors / admins to determine who the newer players are. +/client/proc/cmd_eventM_check_new_players() //Allows event managers / admins to determine who the newer players are. set category = "Admin" set name = "Check new Players" if(!holder) @@ -82,7 +82,7 @@ var/msg = "" var/highlight_special_characters = 1 - if(is_mentor(usr.client)) + if(is_eventM(usr.client)) highlight_special_characters = 0 for(var/client/C in clients) @@ -610,7 +610,7 @@ Traitors and the like can also be revived with the previous role mostly intact. set category = "Special Verbs" set name = "Explosion" - if(!check_rights(R_DEBUG|R_FUN)) return + if(!check_rights(R_DEBUG|R_FUN|R_EVENT)) return var/devastation = input("Range of total devastation. -1 to none", text("Input")) as num|null if(devastation == null) return @@ -638,7 +638,7 @@ Traitors and the like can also be revived with the previous role mostly intact. set category = "Special Verbs" set name = "EM Pulse" - if(!check_rights(R_DEBUG|R_FUN)) return + if(!check_rights(R_DEBUG|R_FUN|R_EVENT)) return var/heavy = input("Range of heavy pulse.", text("Input")) as num|null if(heavy == null) return @@ -664,7 +664,7 @@ Traitors and the like can also be revived with the previous role mostly intact. set category = "Special Verbs" set name = "Gib" - if(!check_rights(R_ADMIN|R_FUN)) return + if(!check_rights(R_ADMIN|R_FUN|R_EVENT)) return var/confirm = alert(src, "You sure?", "Confirm", "Yes", "No") if(confirm != "Yes") return @@ -820,7 +820,7 @@ Traitors and the like can also be revived with the previous role mostly intact. if ((!( ticker ) || !emergency_shuttle.location())) return - if(!check_rights(R_ADMIN)) return + if(!check_rights(R_ADMIN|R_EVENT)) return var/confirm = alert(src, "You sure?", "Confirm", "Yes", "No") if(confirm != "Yes") return @@ -849,7 +849,7 @@ Traitors and the like can also be revived with the previous role mostly intact. set category = "Admin" set name = "Cancel Shuttle" - if(!check_rights(R_ADMIN)) return + if(!check_rights(R_ADMIN|R_EVENT)) return if(alert(src, "You sure?", "Confirm", "Yes", "No") != "Yes") return @@ -870,7 +870,7 @@ Traitors and the like can also be revived with the previous role mostly intact. if (!ticker) return - if(!check_rights(R_ADMIN)) return + if(!check_rights(R_ADMIN|R_EVENT)) return emergency_shuttle.deny_shuttle = !emergency_shuttle.deny_shuttle @@ -926,7 +926,7 @@ Traitors and the like can also be revived with the previous role mostly intact. set name = "Toggle random events on/off" set desc = "Toggles random events such as meteors, black holes, blob (but not space dust) on/off" - if(!check_rights(R_SERVER)) return + if(!check_rights(R_SERVER|R_EVENT)) return if(!config.allow_random_events) config.allow_random_events = 1 diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index e8ec514e56..33dccdaf2e 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -548,6 +548,7 @@ var/blood_overlay_type = "suit" siemens_coefficient = 0.9 w_class = ITEMSIZE_NORMAL + preserve_item = 1 sprite_sheets = list( "Teshari" = 'icons/mob/species/seromi/suit.dmi', diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index 4a53a24405..2c91f7c7db 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -7,6 +7,7 @@ force = 3 overshoes = 1 shoes_under_pants = -1 //These things are huge + preserve_item = 1 var/magpulse = 0 var/icon_base = "magboots" action_button_name = "Toggle Magboots" diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 855aa49c7e..7903136a63 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -24,6 +24,7 @@ siemens_coefficient = 0.2 permeability_coefficient = 0.1 unacidable = 1 + preserve_item = 1 var/interface_path = "hardsuit.tmpl" var/ai_interface_path = "hardsuit.tmpl" diff --git a/code/modules/clothing/spacesuits/spacesuits.dm b/code/modules/clothing/spacesuits/spacesuits.dm index 159957bddb..52f6a9103f 100644 --- a/code/modules/clothing/spacesuits/spacesuits.dm +++ b/code/modules/clothing/spacesuits/spacesuits.dm @@ -15,6 +15,7 @@ min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE siemens_coefficient = 0.9 species_restricted = list("exclude","Diona") + preserve_item = 1 var/obj/machinery/camera/camera var/list/camera_networks @@ -59,6 +60,7 @@ min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE siemens_coefficient = 0.9 species_restricted = list("exclude","Diona") + preserve_item = 1 var/list/supporting_limbs //If not-null, automatically splints breaks. Checked when removing the suit. diff --git a/code/modules/clothing/spacesuits/void/merc.dm b/code/modules/clothing/spacesuits/void/merc.dm index 101f7bb657..b9aca8d29c 100644 --- a/code/modules/clothing/spacesuits/void/merc.dm +++ b/code/modules/clothing/spacesuits/void/merc.dm @@ -18,4 +18,22 @@ w_class = ITEMSIZE_NORMAL armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 60) allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs) - siemens_coefficient = 0.6 \ No newline at end of file + siemens_coefficient = 0.6 + +/obj/item/clothing/head/helmet/space/void/merc/fire + icon_state = "rig0-firebug" + name = "soot-covered voidsuit helmet" + desc = "A blackened helmet that has had many of its protective plates coated in or replaced with high-grade thermal insulation, to protect against incineration. Property of Gorlex Marauders." + armor = list(melee = 40, bullet = 40, laser = 60, energy = 20, bomb = 50, bio = 100, rad = 50) + max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE + siemens_coefficient = 0.7 + light_overlay = "helmet_light_fire" + +/obj/item/clothing/suit/space/void/merc/fire + icon_state = "rig-firebug" + name = "soot-covered voidsuit" + desc = "A blackened suit that has had many of its protective plates coated in or replaced with high-grade thermal insulation, to protect against incineration. Property of Gorlex Marauders." + armor = list(melee = 40, bullet = 40, laser = 60, energy = 20, bomb = 50, bio = 100, rad = 50) + max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/material/twohanded/fireaxe,/obj/item/weapon/flamethrower) + siemens_coefficient = 0.7 diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 64893a973b..83bf724607 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -310,7 +310,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(!client) return - var/mentor = is_mentor(usr.client) + var/mentor = is_eventM(usr.client) if(!config.antag_hud_allowed && (!client.holder || mentor)) src << "Admins have disabled this for this round." return diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 896c699777..286596ba04 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -174,9 +174,11 @@ if ("clap") if (!src.restrained()) message = "claps." + playsound(src.loc, 'sound/misc/clapping.ogg') m_type = 2 if(miming) m_type = 1 + if ("flap") if (!src.restrained()) message = "flaps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] wings." @@ -700,6 +702,20 @@ vomit() return + if("whistle" || "whistles") + if(!muzzled) + message = "whistles a tune." + playsound(loc, 'sound/misc/longwhistle.ogg') //praying this doesn't get abused + else + message = "makes a light spitting noise, a poor attempt at a whistle." + + if("qwhistle") + if(!muzzled) + message = "whistles quietly." + playsound(loc, 'sound/misc/shortwhistle.ogg') + else + message = "makes a light spitting noise, a poor attempt at a whistle." + if ("help") src << "blink, blink_r, blush, bow-(none)/mob, burp, choke, chuckle, clap, collapse, cough, cry, custom, deathgasp, drool, eyebrow, fastsway/qwag, \ frown, gasp, giggle, glare-(none)/mob, grin, groan, grumble, handshake, hug-(none)/mob, laugh, look-(none)/mob, moan, mumble, nod, pale, point-atom, \ diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 3cd3d0c96e..1ea7c15464 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1241,7 +1241,7 @@ W.message = message W.add_fingerprint(src) -/mob/living/carbon/human/can_inject(var/mob/user, var/error_msg, var/target_zone) +/mob/living/carbon/human/can_inject(var/mob/user, var/error_msg, var/target_zone, var/ignore_thickness = FALSE) . = 1 if(!target_zone) @@ -1261,10 +1261,10 @@ else switch(target_zone) if(BP_HEAD) - if(head && head.item_flags & THICKMATERIAL) + if(head && (head.item_flags & THICKMATERIAL) && !ignore_thickness) . = 0 else - if(wear_suit && wear_suit.item_flags & THICKMATERIAL) + if(wear_suit && (wear_suit.item_flags & THICKMATERIAL) && !ignore_thickness) . = 0 if(!. && error_msg && user) if(!fail_msg) diff --git a/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm b/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm index 2def8149ff..f769cb29ab 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm @@ -26,12 +26,13 @@ ) var/id +// All syndie modules get these, and the base borg items (flash, crowbar, etc). /obj/item/weapon/robot_module/robot/syndicate/New(var/mob/living/silicon/robot/R) ..() loc = R + src.modules += new /obj/item/weapon/pinpointer/shuttle/merc(src) src.modules += new /obj/item/weapon/melee/energy/sword(src) - src.modules += new /obj/item/weapon/gun/energy/pulse_rifle/destroyer(src) - src.modules += new /obj/item/weapon/card/emag(src) + var/jetpack = new/obj/item/weapon/tank/jetpack/carbondioxide(src) src.modules += jetpack R.internals = jetpack @@ -43,3 +44,141 @@ src.modules -= id id = null return ..() + +// Gets a big shield and a gun that shoots really fast to scare the opposing force. +/obj/item/weapon/robot_module/robot/syndicate/protector + name = "protector robot module" + sprites = list( + "Cerberus - Treaded" = "syndie_treadhound", + "Cerberus" = "syndie_bloodhound", + "Ares" = "squats", + "XI-ALP" = "syndi-heavy" + ) + +/obj/item/weapon/robot_module/robot/syndicate/protector/New(var/mob/living/silicon/robot/R) + ..() + src.modules += new /obj/item/shield_projector/rectangle/weak(src) + src.modules += new /obj/item/weapon/gun/energy/dakkalaser(src) + src.modules += new /obj/item/weapon/handcuffs/cyborg(src) + src.modules += new /obj/item/weapon/melee/baton/robot(src) + +// 95% engi-borg and 15% roboticist. +/obj/item/weapon/robot_module/robot/syndicate/mechanist + name = "mechanist robot module" + sprites = list( + "XI-GUS" = "spidersyndi", + "WTOperator" = "sleekhos" + ) + +/obj/item/weapon/robot_module/robot/syndicate/mechanist/New(var/mob/living/silicon/robot/R) + ..() + // General engineering/hacking. + src.modules += new /obj/item/borg/sight/meson(src) + src.modules += new /obj/item/weapon/weldingtool/electric/mounted/cyborg(src) + src.modules += new /obj/item/weapon/screwdriver/cyborg(src) + src.modules += new /obj/item/weapon/wrench/cyborg(src) + src.modules += new /obj/item/weapon/wirecutters/cyborg(src) + src.modules += new /obj/item/device/multitool/ai_detector(src) + src.modules += new /obj/item/weapon/pickaxe/plasmacutter(src) + src.modules += new /obj/item/weapon/rcd/borg/lesser(src) // Can't eat rwalls to prevent AI core cheese. + src.modules += new /obj/item/weapon/melee/energy/sword/ionic_rapier(src) + + // FBP repair. + src.modules += new /obj/item/device/robotanalyzer(src) + src.modules += new /obj/item/weapon/shockpaddles/robot/jumper(src) + src.modules += new /obj/item/weapon/gripper/no_use/organ/robotics(src) + + // Hacking other things. + src.modules += new /obj/item/weapon/card/robot(src) + src.modules += new /obj/item/weapon/card/emag(src) + + // Materials. + var/datum/matter_synth/nanite = new /datum/matter_synth/nanite(10000) + synths += nanite + var/datum/matter_synth/wire = new /datum/matter_synth/wire() + synths += wire + var/datum/matter_synth/metal = new /datum/matter_synth/metal(40000) + synths += metal + var/datum/matter_synth/glass = new /datum/matter_synth/glass(40000) + synths += glass + + var/obj/item/stack/nanopaste/N = new /obj/item/stack/nanopaste(src) + N.uses_charge = 1 + N.charge_costs = list(1000) + N.synths = list(nanite) + src.modules += N + + var/obj/item/stack/material/cyborg/steel/M = new (src) + M.synths = list(metal) + src.modules += M + + var/obj/item/stack/material/cyborg/glass/G = new (src) + G.synths = list(glass) + src.modules += G + + var/obj/item/stack/rods/cyborg/rods = new /obj/item/stack/rods/cyborg(src) + rods.synths = list(metal) + src.modules += rods + + var/obj/item/stack/cable_coil/cyborg/C = new /obj/item/stack/cable_coil/cyborg(src) + C.synths = list(wire) + src.modules += C + + var/obj/item/stack/material/cyborg/glass/reinforced/RG = new (src) + RG.synths = list(metal, glass) + src.modules += RG + + + + +// Mediborg optimized for on-the-field healing, but can also do surgery if needed. +/obj/item/weapon/robot_module/robot/syndicate/combat_medic + name = "combat medic robot module" + sprites = list( + "Telemachus" = "toiletbotantag" + ) + +/obj/item/weapon/robot_module/robot/syndicate/combat_medic/New(var/mob/living/silicon/robot/R) + ..() + src.modules += new /obj/item/borg/sight/hud/med(src) + src.modules += new /obj/item/device/healthanalyzer(src) + src.modules += new /obj/item/weapon/reagent_containers/borghypo/merc(src) + + // Surgery things. + src.modules += new /obj/item/weapon/surgical/scalpel/cyborg(src) + src.modules += new /obj/item/weapon/surgical/hemostat/cyborg(src) + src.modules += new /obj/item/weapon/surgical/retractor/cyborg(src) + src.modules += new /obj/item/weapon/surgical/cautery/cyborg(src) + src.modules += new /obj/item/weapon/surgical/bonegel/cyborg(src) + src.modules += new /obj/item/weapon/surgical/FixOVein/cyborg(src) + src.modules += new /obj/item/weapon/surgical/bonesetter/cyborg(src) + src.modules += new /obj/item/weapon/surgical/circular_saw/cyborg(src) + src.modules += new /obj/item/weapon/surgical/surgicaldrill/cyborg(src) + src.modules += new /obj/item/weapon/gripper/no_use/organ(src) + + // General healing. + src.modules += new /obj/item/weapon/gripper/medical(src) + src.modules += new /obj/item/weapon/shockpaddles/robot/combat(src) + src.modules += new /obj/item/weapon/reagent_containers/dropper(src) // Allows borg to fix necrosis apparently + src.modules += new /obj/item/weapon/reagent_containers/syringe(src) + src.modules += new /obj/item/roller_holder(src) + + // Materials. + var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(15000) + synths += medicine + + var/obj/item/stack/medical/advanced/ointment/O = new /obj/item/stack/medical/advanced/ointment(src) + var/obj/item/stack/medical/advanced/bruise_pack/B = new /obj/item/stack/medical/advanced/bruise_pack(src) + var/obj/item/stack/medical/splint/S = new /obj/item/stack/medical/splint(src) + O.uses_charge = 1 + O.charge_costs = list(1000) + O.synths = list(medicine) + B.uses_charge = 1 + B.charge_costs = list(1000) + B.synths = list(medicine) + S.uses_charge = 1 + S.charge_costs = list(1000) + S.synths = list(medicine) + src.modules += O + src.modules += B + src.modules += S diff --git a/code/modules/mob/living/silicon/robot/subtypes/gravekeeper.dm b/code/modules/mob/living/silicon/robot/subtypes/gravekeeper.dm index 9cc09b286a..d722027ad3 100644 --- a/code/modules/mob/living/silicon/robot/subtypes/gravekeeper.dm +++ b/code/modules/mob/living/silicon/robot/subtypes/gravekeeper.dm @@ -6,6 +6,7 @@ lawchannel = "State" braintype = "Drone" idcard_type = /obj/item/weapon/card/id + icon_selected = FALSE /mob/living/silicon/robot/gravekeeper/init() aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src) diff --git a/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm b/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm index ba6890e835..281e158a92 100644 --- a/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm +++ b/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm @@ -6,6 +6,7 @@ lawchannel = "State" braintype = "Drone" idcard_type = /obj/item/weapon/card/id + icon_selected = FALSE /mob/living/silicon/robot/lost/init() aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src) diff --git a/code/modules/mob/living/silicon/robot/subtypes/syndicate.dm b/code/modules/mob/living/silicon/robot/subtypes/syndicate.dm new file mode 100644 index 0000000000..76496f4d4c --- /dev/null +++ b/code/modules/mob/living/silicon/robot/subtypes/syndicate.dm @@ -0,0 +1,46 @@ +/mob/living/silicon/robot/syndicate + lawupdate = 0 + scrambledcodes = 1 + icon_state = "syndie_bloodhound" + modtype = "Syndicate" + lawchannel = "State" + braintype = "Drone" + idcard_type = /obj/item/weapon/card/id/syndicate + icon_selected = FALSE + +/mob/living/silicon/robot/syndicate/init() + aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src) + + mmi = new /obj/item/device/mmi/digital/robot(src) // Explicitly a drone. + overlays.Cut() + init_id() + + updatename("Syndicate") + + if(!cell) + cell = new /obj/item/weapon/cell/high(src) // 15k cell, because Antag. + + laws = new /datum/ai_laws/syndicate_override() + + radio.keyslot = new /obj/item/device/encryptionkey/syndicate(radio) + radio.recalculateChannels() + + playsound(loc, 'sound/mecha/nominalsyndi.ogg', 75, 0) + +/mob/living/silicon/robot/syndicate/protector/init() + ..() + module = new /obj/item/weapon/robot_module/robot/syndicate/protector(src) + updatename("Protector") + +/mob/living/silicon/robot/syndicate/mechanist/init() + ..() + module = new /obj/item/weapon/robot_module/robot/syndicate/mechanist(src) + updatename("Mechanist") + +/mob/living/silicon/robot/syndicate/combat_medic/init() + ..() + module = new /obj/item/weapon/robot_module/robot/syndicate/combat_medic(src) + updatename("Combat Medic") + +/mob/living/silicon/robot/syndicate/speech_bubble_appearance() + return "synthetic_evil" \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/aliens/alien.dm b/code/modules/mob/living/simple_animal/aliens/alien.dm index f756b31798..dbe990e366 100644 --- a/code/modules/mob/living/simple_animal/aliens/alien.dm +++ b/code/modules/mob/living/simple_animal/aliens/alien.dm @@ -66,6 +66,19 @@ projectiletype = /obj/item/projectile/energy/neurotoxin/toxic projectilesound = 'sound/weapons/pierce.ogg' +/mob/living/simple_animal/hostile/alien/sentinel/praetorian + name = "alien praetorian" + icon = 'icons/mob/64x64.dmi' + icon_state = "prat_s" + icon_living = "prat_s" + icon_dead = "prat_dead" + move_to_delay = 5 + maxHealth = 200 + health = 200 + + pixel_x = -16 + old_x = -16 + meat_amount = 5 /mob/living/simple_animal/hostile/alien/queen name = "alien queen" @@ -83,15 +96,36 @@ rapid = 1 status_flags = 0 -/mob/living/simple_animal/hostile/alien/queen/large +/mob/living/simple_animal/hostile/alien/queen/empress name = "alien empress" - icon = 'icons/mob/alienqueen.dmi' + icon = 'icons/mob/64x64.dmi' icon_state = "queen_s" icon_living = "queen_s" icon_dead = "queen_dead" move_to_delay = 4 maxHealth = 400 health = 400 + meat_amount = 5 + speed = 1 + + pixel_x = -16 + old_x = -16 + +/mob/living/simple_animal/hostile/alien/queen/empress/mother + name = "alien mother" + icon = 'icons/mob/96x96.dmi' + icon_state = "empress_s" + icon_living = "empress_s" + icon_dead = "empress_dead" + maxHealth = 600 + health = 600 + meat_amount = 10 + melee_damage_lower = 15 + melee_damage_upper = 25 + speed = 2 + + pixel_x = -32 + old_x = -32 /mob/living/simple_animal/hostile/alien/death() ..() diff --git a/code/modules/mob/living/simple_animal/animals/carp.dm b/code/modules/mob/living/simple_animal/animals/carp.dm index ff626e5eab..9126642197 100644 --- a/code/modules/mob/living/simple_animal/animals/carp.dm +++ b/code/modules/mob/living/simple_animal/animals/carp.dm @@ -36,6 +36,43 @@ meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat +/mob/living/simple_animal/hostile/carp/large + name = "elder carp" + desc = "An older, more matured carp. Few survive to this age due to their aggressiveness." + icon = 'icons/mob/64x32.dmi' + icon_state = "shark" + icon_living = "shark" + icon_dead = "shark_dead" + turns_per_move = 2 + move_to_delay = 2 + mob_size = MOB_LARGE + + pixel_x = -16 + old_x = -16 + + health = 50 + maxHealth = 50 + + +/mob/living/simple_animal/hostile/carp/large/huge + name = "great white carp" + desc = "A very rare breed of carp- and a very aggressive one." + icon = 'icons/mob/64x64.dmi' + icon_dead = "megacarp_dead" + icon_living = "megacarp" + icon_state = "megacarp" + maxHealth = 230 + health = 230 + attack_same = 1 + speed = 1 + + meat_amount = 10 + + melee_damage_lower = 15 + melee_damage_upper = 25 + old_y = -16 + pixel_y = -16 + /mob/living/simple_animal/hostile/carp/Process_Spacemove(var/check_drift = 0) return 1 //No drifting in space for space carp! //original comments do not steal @@ -50,4 +87,5 @@ if(istype(L)) if(prob(15)) L.Weaken(3) - L.visible_message("\the [src] knocks down \the [L]!") \ No newline at end of file + L.visible_message("\the [src] knocks down \the [L]!") + diff --git a/code/modules/mob/living/simple_animal/animals/giant_spider.dm b/code/modules/mob/living/simple_animal/animals/giant_spider.dm index a087d4429a..1ff5605946 100644 --- a/code/modules/mob/living/simple_animal/animals/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/animals/giant_spider.dm @@ -74,6 +74,27 @@ var/atom/cocoon_target var/egg_inject_chance = 5 +/mob/living/simple_animal/hostile/giant_spider/nurse/queen + desc = "Absolutely gigantic, this creature is horror itself." + icon = 'icons/mob/64x64.dmi' + icon_state = "spider_queen" + icon_living = "spider_queen" + icon_dead = "spider_queen_dead" + + maxHealth = 320 + health = 320 + + melee_damage_lower = 15 + melee_damage_upper = 25 + poison_per_bite = 10 + + egg_inject_chance = 10 + + pixel_x = -16 + pixel_y = -16 + old_x = -16 + old_y = -16 + //hunters have the most poison and move the fastest, so they can find prey /mob/living/simple_animal/hostile/giant_spider/hunter desc = "Furry and black, it makes you shudder to look at it. This one has sparkling purple eyes." diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 0d4b3ad085..56104d34f4 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -400,7 +400,7 @@ proc/is_blind(A) return // Can't talk in deadchat if you can't see it. for(var/mob/M in player_list) - if(M.client && ((!istype(M, /mob/new_player) && M.stat == DEAD) || (M.client.holder && !is_mentor(M.client))) && M.is_preference_enabled(/datum/client_preference/show_dsay)) + if(M.client && ((!istype(M, /mob/new_player) && M.stat == DEAD) || (M.client.holder && !is_eventM(M.client))) && M.is_preference_enabled(/datum/client_preference/show_dsay)) var/follow var/lname if(M.forbid_seeing_deadchat && !M.client.holder) diff --git a/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm b/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm index 469f32135f..97afe227c4 100644 --- a/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm +++ b/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm @@ -25,9 +25,9 @@ thing.reagents.remove_reagent(R.id, R.volume) user.put_in_hands(F) - else if(istype(thing, /obj/machinery/power/supermatter/shard)) + else if(istype(thing, /obj/machinery/power/supermatter)) var/obj/item/weapon/fuel_assembly/F = new(get_turf(src), "supermatter") - visible_message("\The [src] compresses the \[thing] into a new fuel assembly.") + visible_message("\The [src] compresses \the [thing] into a new fuel assembly.") qdel(thing) user.put_in_hands(F) return 1 diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 60078127ad..b28c8f2993 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -7,6 +7,7 @@ slot_flags = SLOT_BELT | SLOT_EARS throwforce = 1 w_class = ITEMSIZE_TINY + preserve_item = 1 var/leaves_residue = 1 var/caliber = "" //Which kind of guns it can be loaded into @@ -75,6 +76,7 @@ w_class = ITEMSIZE_SMALL throw_speed = 4 throw_range = 10 + preserve_item = 1 var/list/stored_ammo = list() var/mag_type = SPEEDLOADER //ammo_magazines can only be used with compatible guns. This is not a bitflag, the load_method var on guns is. diff --git a/code/modules/projectiles/ammunition/magnetic.dm b/code/modules/projectiles/ammunition/magnetic.dm index fc299adf0b..b3e9c3a7c8 100644 --- a/code/modules/projectiles/ammunition/magnetic.dm +++ b/code/modules/projectiles/ammunition/magnetic.dm @@ -7,6 +7,7 @@ matter = list(DEFAULT_WALL_MATERIAL = 1800) origin_tech = list(TECH_COMBAT = 1) var/remaining = 9 + preserve_item = 1 /obj/item/weapon/magnetic_ammo/examine(mob/user) . = ..() diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 1bce0e00b7..16a7c1d07b 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -46,6 +46,7 @@ throw_speed = 4 throw_range = 5 force = 5 + preserve_item = 1 origin_tech = list(TECH_COMBAT = 1) attack_verb = list("struck", "hit", "bashed") zoomdevicename = "scope" diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 46988c9934..d613f1f206 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -177,4 +177,24 @@ obj/item/weapon/gun/energy/staff/focus charge_cost = 200 user << "The [src.name] will now strike only a single person." projectile_type = "/obj/item/projectile/forcebolt" - */ \ No newline at end of file + */ + +/obj/item/weapon/gun/energy/dakkalaser + name = "suppression gun" + desc = "A massive weapon, designed to pressure the opposition by raining down a torrent of energy pellets." + icon_state = "dakkalaser" + item_state = "dakkalaser" + fire_sound = 'sound/weapons/Laser.ogg' + w_class = ITEMSIZE_HUGE + charge_cost = 24 // 100 shots, it's a spray and pray (to RNGesus) weapon. + projectile_type = /obj/item/projectile/energy/blue_pellet + self_recharge = 1 + accuracy = 5 // Suppressive weapons don't work too well if there's no risk of being hit. + burst_delay = 1 // Burst faster than average. + origin_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 6, TECH_ILLEGAL = 6) + + firemodes = list( + list(mode_name="single shot", burst = 1, burst_accuracy = list(5), dispersion = list(0), charge_cost = 24), + list(mode_name="five shot burst", burst = 5, burst_accuracy = list(5,5,5,5,5), dispersion = list(1,1,1,1,1)), + list(mode_name="ten shot burst", burst = 10, burst_accuracy = list(5,5,5,5,5,5,5,5,5,5), dispersion = list(2,2,2,2,2,2,2,2,2,2)), + ) \ No newline at end of file diff --git a/code/modules/projectiles/guns/magnetic/magnetic.dm b/code/modules/projectiles/guns/magnetic/magnetic.dm index 130f4410df..ae45454a42 100644 --- a/code/modules/projectiles/guns/magnetic/magnetic.dm +++ b/code/modules/projectiles/guns/magnetic/magnetic.dm @@ -4,7 +4,7 @@ icon_state = "coilgun" item_state = "coilgun" icon = 'icons/obj/railgun.dmi' -// one_hand_penalty = 1 +// one_handed_penalty = 1 origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 4, TECH_ILLEGAL = 2, TECH_MAGNET = 4) w_class = ITEMSIZE_LARGE @@ -193,3 +193,66 @@ qdel(src) return new projectile_type(src) + +/obj/item/weapon/gun/magnetic/fuelrod + name = "Fuel-Rod Cannon" + desc = "A bulky weapon designed to fire reactor core fuel rods at absurd velocities... who thought this was a good idea?!" + description_antag = "This device is capable of firing reactor fuel assemblies, acquired from a R-UST fuel compressor and an appropriate fueltype. Be warned, Supermatter rods may have unforseen consequences." + description_fluff = "Morpheus' second entry into the arms manufacturing field, the Morpheus B.F.G, or 'Big Fuel-rod Gun' made some noise when it was initially sent to the market. By noise, they mean it was rapidly declared 'incredibly dangerous to the wielder and civilians within a mile radius alike'." + icon_state = "fuelrodgun" + item_state = "coilgun" + icon = 'icons/obj/railgun.dmi' + origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_PHORON = 4, TECH_ILLEGAL = 5, TECH_MAGNET = 4) + w_class = ITEMSIZE_LARGE + + removable_components = TRUE + gun_unreliable = 0 + + load_type = /obj/item/weapon/fuel_assembly + projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod + + power_cost = 500 + +/obj/item/weapon/gun/magnetic/fuelrod/consume_next_projectile() + if(!check_ammo() || !capacitor || capacitor.charge < power_cost) + return + + if(loaded) //Safety. + if(istype(loaded, /obj/item/weapon/fuel_assembly)) + var/obj/item/weapon/fuel_assembly/rod = loaded + if(rod.fuel_type == "composite" || rod.fuel_type == "deuterium") //Safety check for rods spawned in without a fueltype. + projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod + else if(rod.fuel_type == "tritium") + projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod/tritium + else if(rod.fuel_type == "phoron") + projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod/phoron + else if(rod.fuel_type == "supermatter") + projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod/supermatter + visible_message("The barrel of \the [src] glows a blinding white!") + spawn(5) + visible_message("\The [src] begins to rattle, its acceleration chamber collapsing in on itself!") + removable_components = FALSE + spawn(15) + audible_message("\The [src]'s power supply begins to overload as the device crumples!") //Why are you still holding this? + playsound(loc, 'sound/effects/grillehit.ogg', 10, 1) + var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() + var/turf/T = get_turf(src) + sparks.set_up(2, 1, T) + sparks.start() + spawn(15) + visible_message("\The [src] explodes in a blinding white light!") + explosion(src.loc, -1, 1, 2, 3) + qdel(src) + else + projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod + + use_ammo() + capacitor.use(power_cost) + update_icon() + + return new projectile_type(src) + +/obj/item/weapon/gun/magnetic/fuelrod/New() + cell = new /obj/item/weapon/cell/high + capacitor = new /obj/item/weapon/stock_parts/capacitor + . = ..() diff --git a/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm b/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm index d731512bfa..fe9aa576ef 100644 --- a/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm +++ b/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm @@ -67,9 +67,9 @@ w_class = ITEMSIZE_NO_CONTAINER firemodes = list( - list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, one_hand_penalty=1, burst_accuracy=null, dispersion=null), - list(mode_name="short bursts", burst=3, fire_delay=null, move_delay=5, one_hand_penalty=2, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0)), - list(mode_name="long bursts", burst=6, fire_delay=null, move_delay=10, one_hand_penalty=2, burst_accuracy=list(0,-1,-1,-1,-2), dispersion=list(0.6, 0.6, 1.0, 1.0, 1.2)), + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, one_handed_penalty=1, burst_accuracy=null, dispersion=null), + list(mode_name="short bursts", burst=3, fire_delay=null, move_delay=5, one_handed_penalty=2, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0)), + list(mode_name="long bursts", burst=6, fire_delay=null, move_delay=10, one_handed_penalty=2, burst_accuracy=list(0,-1,-1,-1,-2), dispersion=list(0.6, 0.6, 1.0, 1.0, 1.2)), ) /obj/item/weapon/gun/magnetic/railgun/automatic/examine(var/mob/user) @@ -94,8 +94,8 @@ fire_sound = 'sound/weapons/rapidslice.ogg' firemodes = list( - list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, one_hand_penalty=1, burst_accuracy=null, dispersion=null), - list(mode_name="short bursts", burst=3, fire_delay=null, move_delay=5, one_hand_penalty=2, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0)), + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, one_handed_penalty=1, burst_accuracy=null, dispersion=null), + list(mode_name="short bursts", burst=3, fire_delay=null, move_delay=5, one_handed_penalty=2, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0)), ) /obj/item/weapon/gun/magnetic/railgun/flechette/out_of_ammo() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 5e599230cf..fdc5a445b9 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -333,9 +333,11 @@ else if(!bumped) tracer_effect(effect_transform) - if(incendiary >= 2) - var/trail_volume = (flammability * 0.10) - new /obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(src.loc, trail_volume, src.dir) + if(incendiary >= 2) //This should cover the bases of 'Why is there fuel here?' in a much cleaner way than previous. + if(src && src.loc) //Safety. + if(!src.loc.density) + var/trail_volume = (flammability * 0.20) + new /obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(src.loc, trail_volume, src.dir) if(!hitscan) sleep(step_delay) //add delay between movement iterations if it's not a hitscan weapon diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 5b95ee6639..283e487272 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -272,6 +272,7 @@ flammability = 4 agony = 30 kill_count = 4 + vacuum_traversal = 0 /obj/item/projectile/bullet/incendiary/flamethrower/large damage = 15 diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 42be84f2ac..dbc54fc432 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -182,4 +182,17 @@ /obj/item/projectile/energy/plasmastun/on_hit(var/atom/target) bang(target) - . = ..() \ No newline at end of file + . = ..() + +/obj/item/projectile/energy/blue_pellet + name = "suppressive pellet" + icon_state = "blue_pellet" + damage = 5 + armor_penetration = 75 + pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE + damage_type = BURN + check_armour = "energy" + light_color = "#0000FF" + + embed_chance = 0 + muzzle_type = /obj/effect/projectile/pulse/muzzle \ No newline at end of file diff --git a/code/modules/projectiles/projectile/magnetic.dm b/code/modules/projectiles/projectile/magnetic.dm index 35f98833ef..b4a60a55d7 100644 --- a/code/modules/projectiles/projectile/magnetic.dm +++ b/code/modules/projectiles/projectile/magnetic.dm @@ -18,4 +18,100 @@ name = "flechette" icon_state = "flechette" damage = 20 - armor_penetration = 100 \ No newline at end of file + armor_penetration = 100 + +/obj/item/projectile/bullet/magnetic/fuelrod + name = "fuel rod" + icon_state = "fuel-deuterium" + damage = 30 + stun = 1 + weaken = 0 + agony = 30 + incendiary = 1 + flammability = 0 //Deuterium and Tritium are both held in water, but the object moving so quickly will ignite the target. + penetrating = 2 + embed_chance = 0 + armor_penetration = 40 + kill_count = 20 + + var/searing = 0 //Does this fuelrod ignore shields? + var/detonate_travel = 0 //Will this fuelrod explode when it reaches maximum distance? + var/detonate_mob = 0 //Will this fuelrod explode when it hits a mob? + var/energetic_impact = 0 //Does this fuelrod cause a bright flash on impact with a mob? + +/obj/item/projectile/bullet/magnetic/fuelrod/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) //Future-proofing. Special effects for impact. + if(istype(target,/mob/living)) + var/mob/living/V = target + if(detonate_mob) + if(V.loc) + explosion(V.loc, -1, -1, 2, 3) + + if(energetic_impact) + var/eye_coverage = 0 + for(var/mob/living/carbon/M in viewers(world.view, location)) + eye_coverage = 0 + if(iscarbon(M)) + eye_coverage = M.eyecheck() + if(eye_coverage < 2) + M.flash_eyes() + M.Stun(2) + M.Weaken(10) + + if(searing) + if(blocked) + blocked = 0 + + return ..(target, blocked, def_zone) + +/obj/item/projectile/bullet/magnetic/fuelrod/on_impact(var/atom/A) //Future-proofing, again. In the event new fuel rods are introduced, and have special effects for when they stop flying. + if(src.loc) + if(detonate_travel && detonate_mob) + visible_message("\The [src] shatters in a violent explosion!") + explosion(src.loc, 1, 1, 3, 4) + else if(detonate_travel) + visible_message("\The [src] explodes in a shower of embers!") + explosion(src.loc, -1, 1, 2, 3) + ..(A) + +/obj/item/projectile/bullet/magnetic/fuelrod/tritium + icon_state = "fuel-tritium" + damage = 40 + flammability = -1 + armor_penetration = 50 + penetrating = 3 + +/obj/item/projectile/bullet/magnetic/fuelrod/phoron + name = "blazing fuel rod" + icon_state = "fuel-phoron" + damage = 35 + incendiary = 2 + flammability = 2 + armor_penetration = 60 + penetrating = 5 + irradiate = 20 + detonate_mob = 1 + +/obj/item/projectile/bullet/magnetic/fuelrod/supermatter + name = "painfully incandescent fuel rod" + icon_state = "fuel-supermatter" + damage = 15 + incendiary = 2 + flammability = 4 + weaken = 2 + armor_penetration = 100 + penetrating = 100 //Theoretically, this shouldn't stop flying for a while, unless someone lines it up with a wall or fires it into a mountain. + irradiate = 120 + kill_count = 75 + searing = 1 + detonate_travel = 1 + detonate_mob = 1 + energetic_impact = 1 + +/obj/item/projectile/bullet/magnetic/fuelrod/supermatter/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) //You cannot touch the supermatter without disentigrating. Assumedly, this is true for condensed rods of it flying at relativistic speeds. + if(istype(target,/turf/simulated/wall) || istype(target,/mob/living)) + target.visible_message("The [src] burns a perfect hole through \the [target] with a blinding flash!") + playsound(target.loc, 'sound/effects/teleport.ogg', 40, 0) + return ..(target, blocked, def_zone) + +/obj/item/projectile/bullet/magnetic/fuelrod/supermatter/check_penetrate() + return 1 \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index 8cfb75e20c..8d09b903b6 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -691,4 +691,21 @@ else if(world.time > data + ANTIDEPRESSANT_MESSAGE_DELAY) data = world.time - to_chat(M, "You feel invigorated and calm.") \ No newline at end of file + to_chat(M, "You feel invigorated and calm.") + +// This exists to cut the number of chemicals a merc borg has to juggle on their hypo. +/datum/reagent/healing_nanites + name = "Restorative Nanites" + id = "healing_nanites" + description = "Miniature medical robots that swiftly restore bodily damage." + taste_description = "metal" + reagent_state = SOLID + color = "#555555" + metabolism = REM * 4 // Nanomachines gotta go fast. + scannable = 1 + +/datum/reagent/healing_nanites/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + M.heal_organ_damage(2 * removed, 2 * removed) + M.adjustOxyLoss(-4 * removed) + M.adjustToxLoss(-2 * removed) + M.adjustCloneLoss(-2 * removed) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index 5c4a6bdce6..d0cd3cf9e6 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -12,6 +12,7 @@ var/charge_cost = 50 var/charge_tick = 0 var/recharge_time = 5 //Time it takes for shots to recharge (in seconds) + var/bypass_protection = FALSE // If true, can inject through things like spacesuits and armor. var/list/reagent_ids = list("tricordrazine", "inaprovaline", "anti_toxin", "tramadol", "dexalin" ,"spaceacillin") var/list/reagent_volumes = list() @@ -26,6 +27,13 @@ /obj/item/weapon/reagent_containers/borghypo/lost reagent_ids = list("tricordrazine", "bicaridine", "dexalin", "anti_toxin", "tramadol", "spaceacillin") +/obj/item/weapon/reagent_containers/borghypo/merc + name = "advanced cyborg hypospray" + desc = "An advanced nanite and chemical synthesizer and injection system, designed for heavy-duty medical equipment. This type is capable of safely bypassing \ + thick materials that other hyposprays would struggle with." + bypass_protection = TRUE // Because mercs tend to be in spacesuits. + reagent_ids = list("healing_nanites", "hyperzine", "tramadol", "oxycodone", "spaceacillin", "peridaxon", "osteodaxon", "myelamine") + /obj/item/weapon/reagent_containers/borghypo/New() ..() @@ -72,7 +80,7 @@ user << "You cannot inject a robotic limb." return - if (M.can_inject(user, 1)) + if(M.can_inject(user, 1, ignore_thickness = bypass_protection)) user << "You inject [M] with the injector." M << "You feel a tiny prick!" diff --git a/code/modules/reagents/reagent_containers/drinkingglass/drinkingglass.dm b/code/modules/reagents/reagent_containers/drinkingglass/drinkingglass.dm index 1aae5b4a94..d4c8389a51 100644 --- a/code/modules/reagents/reagent_containers/drinkingglass/drinkingglass.dm +++ b/code/modules/reagents/reagent_containers/drinkingglass/drinkingglass.dm @@ -157,8 +157,7 @@ user << "You splash the solution onto [target]." reagents.splash(target, reagents.total_volume) return 1 - else - return + ..() /obj/item/weapon/reagent_containers/food/drinks/glass2/standard_feed_mob(var/mob/user, var/mob/target) if(afterattack(target, user)) //Check to see if harm intent & splash. diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 1c3151fee9..5c5d0cc3a6 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -14,6 +14,7 @@ possible_transfer_amounts = null flags = OPENCONTAINER slot_flags = SLOT_BELT + preserve_item = 1 var/reusable = 1 var/used = 0 var/filled = 0 @@ -70,6 +71,7 @@ reusable = 0 filled = 1 filled_reagents = list("inaprovaline" = 5) + preserve_item = 0 /obj/item/weapon/reagent_containers/hypospray/autoinjector/on_reagent_change() ..() diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index c34f8d9454..708cc4e081 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -639,6 +639,13 @@ other types of metals and chemistry for reagents). build_path = /obj/item/ammo_casing/chemdart sort_string = "TACAF" +/datum/design/item/weapon/fuelrod + id = "fuelrod_gun" + req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_PHORON = 4, TECH_ILLEGAL = 5, TECH_MAGNET = 5) + materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 2000, "gold" = 500, "silver" = 500, "uranium" = 1000, "phoron" = 3000, "diamond" = 1000) + build_path = /obj/item/weapon/gun/magnetic/fuelrod + sort_string = "TACBA" + /datum/design/item/weapon/flora_gun id = "flora_gun" req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3, TECH_POWER = 3) diff --git a/code/stylesheet.dm b/code/stylesheet.dm index b376f13aeb..5b3cb80b15 100644 --- a/code/stylesheet.dm +++ b/code/stylesheet.dm @@ -73,6 +73,7 @@ h1.alert, h2.alert {color: #000000;} .disarm {color: #990000;} .passive {color: #660000;} +.critical {color: #ff0000; font-weight: bold; font-size: 150%;} .danger {color: #ff0000; font-weight: bold;} .warning {color: #ff0000; font-style: italic;} .rose {color: #ff5050;} diff --git a/config/example/config.txt b/config/example/config.txt index 52892bc14a..74a80dc88e 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -93,7 +93,7 @@ SHOW_DEVS SHOW_MODS ##Show mentors on staffwho -SHOW_MENTORS +SHOW_EVENT ## Chooses whether mods have the ability to tempban or not MODS_CAN_TEMPBAN diff --git a/icons/mecha/mech_bay.dmi b/icons/mecha/mech_bay.dmi index e696042ecd..19ca94f3b9 100644 Binary files a/icons/mecha/mech_bay.dmi and b/icons/mecha/mech_bay.dmi differ diff --git a/icons/mob/64x32.dmi b/icons/mob/64x32.dmi new file mode 100644 index 0000000000..615fd87a01 Binary files /dev/null and b/icons/mob/64x32.dmi differ diff --git a/icons/mob/64x64.dmi b/icons/mob/64x64.dmi new file mode 100644 index 0000000000..a829ee2c6f Binary files /dev/null and b/icons/mob/64x64.dmi differ diff --git a/icons/mob/96x96.dmi b/icons/mob/96x96.dmi new file mode 100644 index 0000000000..7368d30bb1 Binary files /dev/null and b/icons/mob/96x96.dmi differ diff --git a/icons/mob/alienqueen.dmi b/icons/mob/alienqueen.dmi deleted file mode 100644 index 1562152023..0000000000 Binary files a/icons/mob/alienqueen.dmi and /dev/null differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 1469c3e3ba..ee8dbd807d 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/light_overlays.dmi b/icons/mob/light_overlays.dmi index 9f1232ff95..e54ec778cd 100644 Binary files a/icons/mob/light_overlays.dmi and b/icons/mob/light_overlays.dmi differ diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi index d32d479e3f..35e6df449f 100644 Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index c4a79cf924..9db8ef1fc5 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi index 7d917849b1..833e9b99cf 100644 Binary files a/icons/obj/card.dmi and b/icons/obj/card.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 7b1b1b4085..fa9ea15dc7 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 382f19e8e1..52ae865f92 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index 1550d6bf4b..e037ce6f9b 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index 61cb6a6a8f..90d6dcd1ea 100644 Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ diff --git a/icons/obj/radio.dmi b/icons/obj/radio.dmi index 3452ac3524..86e39f0c58 100644 Binary files a/icons/obj/radio.dmi and b/icons/obj/radio.dmi differ diff --git a/icons/obj/railgun.dmi b/icons/obj/railgun.dmi index 0b00e7a156..404aa1ea60 100644 Binary files a/icons/obj/railgun.dmi and b/icons/obj/railgun.dmi differ diff --git a/maps/northern_star/polaris-1.dmm b/maps/northern_star/polaris-1.dmm index 4f8aedb853..9204eb5c68 100644 --- a/maps/northern_star/polaris-1.dmm +++ b/maps/northern_star/polaris-1.dmm @@ -5177,7 +5177,7 @@ "bVC" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bVD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bVE" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/secure/safe{pixel_x = 5; pixel_y = 28},/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor/wood,/area/crew_quarters/captain) -"bVF" = (/obj/machinery/computer/card,/obj/item/weapon/card/id/captains_spare,/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bVF" = (/obj/machinery/computer/card,/obj/item/weapon/card/id/gold/captain/spare,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bVG" = (/obj/machinery/computer/communications,/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bVH" = (/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = 24},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bVI" = (/obj/structure/table/rack,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/clothing/mask/gas,/obj/item/clothing/suit/armor/captain,/obj/item/clothing/head/helmet/space/capspace,/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/captain) diff --git a/maps/northern_star/polaris-2.dmm b/maps/northern_star/polaris-2.dmm index e2a422d04c..0adca3afa9 100644 --- a/maps/northern_star/polaris-2.dmm +++ b/maps/northern_star/polaris-2.dmm @@ -1329,7 +1329,7 @@ "zD" = (/obj/structure/bed/chair{dir = 8},/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) "zE" = (/obj/machinery/door/airlock/centcom{name = "Bridge"; opacity = 1; req_access = list(109)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) "zF" = (/obj/structure/table/reinforced,/obj/item/device/pda/captain,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"zG" = (/obj/structure/table/reinforced,/obj/item/weapon/card/id/captains_spare,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"zG" = (/obj/structure/table/reinforced,/obj/item/weapon/card/id/gold/captain/spare,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) "zH" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) "zI" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) "zJ" = (/turf/simulated/shuttle/wall,/area/shuttle/transport1/centcom) diff --git a/maps/southern_cross/shuttles/crew_shuttles.dm b/maps/southern_cross/shuttles/crew_shuttles.dm index 764c7bccd7..202284bd1d 100644 --- a/maps/southern_cross/shuttles/crew_shuttles.dm +++ b/maps/southern_cross/shuttles/crew_shuttles.dm @@ -32,7 +32,6 @@ destination_class = /datum/shuttle_destination/shuttle2 starting_destination = /datum/shuttle_destination/shuttle2/root - /datum/shuttle_destination/shuttle1/root name = "Southern Cross Hangar One" my_area = /area/shuttle/shuttle1/start diff --git a/maps/southern_cross/southern_cross-1.dmm b/maps/southern_cross/southern_cross-1.dmm index fabe801bd4..d3dbd4ed29 100644 --- a/maps/southern_cross/southern_cross-1.dmm +++ b/maps/southern_cross/southern_cross-1.dmm @@ -1124,7 +1124,7 @@ "avF" = (/obj/machinery/status_display,/turf/simulated/wall,/area/medical/first_aid_station/firstdeck) "avG" = (/obj/turbolift_map_holder/southern_cross/center,/turf/unsimulated/mask,/area/hallway/primary/firstdeck/elevator) "avH" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/item/weapon/stock_parts/subspace/transmitter,/turf/simulated/floor,/area/tcomm/tcomstorage) -"avI" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/tcomm/tcomstorage) +"avI" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/sub_filter,/obj/item/weapon/stock_parts/subspace/sub_filter,/obj/item/weapon/stock_parts/subspace/sub_filter,/obj/item/weapon/stock_parts/subspace/sub_filter,/obj/item/weapon/stock_parts/subspace/sub_filter,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/tcomm/tcomstorage) "avJ" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/tcomm/tcomstorage) "avK" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/dark,/area/hallway/primary/starboard) "avL" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{req_access = null; req_one_access = list(5,12,25,27,28,35)},/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftstarboard) @@ -3223,9 +3223,9 @@ "bjY" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "co2_in"; name = "Carbon Dioxide Supply Control"; output_tag = "co2_out"; sensors = list("co2_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/engineering/atmos) "bjZ" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/meter,/turf/simulated/floor/tiled,/area/engineering/atmos) "bka" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/binary/pump{dir = 2; name = "N2 to Mixing"},/turf/simulated/floor/tiled,/area/engineering/atmos) -"bkb" = (/obj/machinery/atmospherics/omni/filter{tag_east = 2; tag_north = 4; tag_south = 1; tag_west = 5; use_power = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/engineering/atmos) +"bkb" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 2; tag_north = 4; tag_south = 1; tag_west = 5; use_power = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/engineering/atmos) "bkc" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos) -"bkd" = (/obj/machinery/atmospherics/omni/filter{tag_east = 2; tag_north = 3; tag_south = 0; tag_west = 1; use_power = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/engineering/atmos) +"bkd" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 2; tag_north = 3; tag_south = 0; tag_west = 1; use_power = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/engineering/atmos) "bke" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/binary/pump{dir = 2; name = "O2 to Mixing"},/turf/simulated/floor/tiled,/area/engineering/atmos) "bkf" = (/obj/machinery/atmospherics/pipe/manifold/visible/red{tag = "icon-map (NORTH)"; icon_state = "map"; dir = 1},/turf/simulated/floor/tiled,/area/engineering/atmos) "bkg" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos) @@ -3365,7 +3365,7 @@ "bmK" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1441; icon_state = "map_injector"; id = "tox_in"; pixel_y = 1; use_power = 1},/obj/effect/floor_decal/corner/purple/diagonal,/obj/effect/floor_decal/corner/orange{dir = 4},/turf/simulated/floor/reinforced/phoron,/area/engineering/atmos) "bmL" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "tox_in"; name = "Phoron Supply Control"; output_tag = "tox_out"; sensors = list("tox_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/engineering/atmos) "bmM" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor/tiled,/area/engineering/atmos) -"bmN" = (/obj/machinery/atmospherics/omni/filter{tag_east = 0; tag_north = 2; tag_south = 1; tag_west = 6; use_power = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/engineering/atmos) +"bmN" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 0; tag_north = 2; tag_south = 1; tag_west = 6; use_power = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/engineering/atmos) "bmO" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/turf/simulated/floor/tiled,/area/engineering/atmos) "bmP" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 8; icon_state = "map"; tag = "icon-map (EAST)"},/obj/machinery/meter,/turf/simulated/floor/tiled,/area/engineering/atmos) "bmQ" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Waste to Port"},/turf/simulated/floor/tiled,/area/engineering/atmos) @@ -3561,7 +3561,7 @@ "bqy" = (/obj/effect/floor_decal/corner/white{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1441; icon_state = "map_injector"; id = "n2o_in"; pixel_y = 1; use_power = 1},/turf/simulated/floor/reinforced/n20,/area/engineering/atmos) "bqz" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "atmoslockdown"; name = "Atmospherics Lockdown"; opacity = 0},/turf/simulated/floor/plating,/area/engineering/atmos) "bqA" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2o_in"; name = "Nitrous Oxide Supply Control"; output_tag = "n2o_out"; sensors = list("n2o_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/engineering/atmos) -"bqB" = (/obj/machinery/atmospherics/omni/filter{tag_east = 1; tag_north = 2; tag_south = 0; tag_west = 7; use_power = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/engineering/atmos) +"bqB" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 1; tag_north = 2; tag_south = 0; tag_west = 7; use_power = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/engineering/atmos) "bqC" = (/obj/machinery/atmospherics/pipe/manifold/visible/red,/turf/simulated/floor/tiled,/area/engineering/atmos) "bqD" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/tiled,/area/engineering/atmos) "bqE" = (/obj/machinery/atmospherics/pipe/manifold/visible/red{tag = "icon-map (NORTH)"; icon_state = "map"; dir = 1},/obj/machinery/meter,/turf/simulated/floor/tiled,/area/engineering/atmos) @@ -4979,7 +4979,7 @@ "bRM" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/rnd/mixing) "bRN" = (/obj/machinery/atmospherics/omni/mixer{tag_east = 2; tag_east_con = null; tag_north = 1; tag_north_con = 0.5; tag_south = 0; tag_south_con = null; tag_west = 1; tag_west_con = 0.5; use_power = 0},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/tiled,/area/rnd/mixing) "bRO" = (/obj/machinery/atmospherics/pipe/manifold/visible,/obj/machinery/meter,/obj/machinery/camera/network/research{c_tag = "SCI - Toxins Lab 2"; dir = 1},/turf/simulated/floor/tiled,/area/rnd/mixing) -"bRP" = (/obj/machinery/atmospherics/omni/filter{tag_east = 2; tag_north = 6; tag_south = 0; tag_west = 1; use_power = 0},/turf/simulated/floor/tiled,/area/rnd/mixing) +"bRP" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 2; tag_north = 6; tag_south = 0; tag_west = 1; use_power = 0},/turf/simulated/floor/tiled,/area/rnd/mixing) "bRQ" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/rnd/mixing) "bRR" = (/obj/machinery/light,/turf/simulated/floor/tiled,/area/rnd/mixing) "bRS" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/black,/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) @@ -4990,9 +4990,9 @@ "bRX" = (/obj/machinery/atmospherics/pipe/cap/visible{dir = 1},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor,/area/engineering/engine_room) "bRY" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/engineering/engine_room) "bRZ" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor,/area/engineering/engine_room) -"bSa" = (/obj/machinery/atmospherics/omni/filter{tag_east = 0; tag_north = 2; tag_south = 4; tag_west = 1; use_power = 0},/obj/effect/floor_decal/industrial/outline/blue,/obj/structure/sign/warning/nosmoking_2{pixel_x = 32},/obj/effect/engine_setup/filter,/turf/simulated/floor/plating,/area/engineering/engine_room) +"bSa" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 0; tag_north = 2; tag_south = 4; tag_west = 1; use_power = 0},/obj/effect/floor_decal/industrial/outline/blue,/obj/structure/sign/warning/nosmoking_2{pixel_x = 32},/obj/effect/engine_setup/atmo_filter,/turf/simulated/floor/plating,/area/engineering/engine_room) "bSb" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/turf/simulated/floor,/area/engineering/engine_room) -"bSc" = (/obj/machinery/atmospherics/omni/filter{tag_east = 1; tag_north = 2; tag_south = 4; tag_west = 0; use_power = 0},/obj/effect/floor_decal/industrial/outline/blue,/obj/effect/engine_setup/filter,/turf/simulated/floor/plating,/area/engineering/engine_room) +"bSc" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 1; tag_north = 2; tag_south = 4; tag_west = 0; use_power = 0},/obj/effect/floor_decal/industrial/outline/blue,/obj/effect/engine_setup/atmo_filter,/turf/simulated/floor/plating,/area/engineering/engine_room) "bSd" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "bSe" = (/obj/effect/landmark{name = "JoinLateCyborg"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "bSf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/engineering/hallway/engineer_hallway) @@ -8777,7 +8777,7 @@ "dmO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/sign/dock/two,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/dockhallway) "dmP" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/tiled/dark,/area/hallway/primary/seconddeck/dockhallway) "dmQ" = (/obj/machinery/ai_status_display{pixel_y = -32},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/dockhallway) -"dmR" = (/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Dock Hallway Four"; dir = 1},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/dockhallway) +"dmR" = (/obj/machinery/light,/obj/machinery/embedded_controller/radio/docking_port_multi{child_names_txt = "Airlock One;Airlock Two"; child_tags_txt = "arrivals_dock_north_airlock;arrivals_dock_south_airlock"; frequency = 1380; id_tag = "arrivals_dock"; pixel_x = 0; pixel_y = -25; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/dockhallway) "dmS" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/dockhallway) "dmT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/sign/dock/three,/obj/machinery/alarm{dir = 8; pixel_x = 22; pixel_y = 0},/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Dock Hallway Five"; dir = 8},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/dockhallway) "dmU" = (/turf/simulated/wall/r_wall,/area/hallway/secondary/entry/D1) @@ -8831,8 +8831,8 @@ "dnQ" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dnR" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dnS" = (/obj/machinery/alarm{dir = 8; pixel_x = 22; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"dnT" = (/turf/simulated/shuttle/wall,/area/shuttle/arrival/station) -"dnU" = (/obj/structure/shuttle/window,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/arrival/station) +"dnT" = (/turf/space,/area/shuttle/arrival/station) +"dnU" = (/obj/machinery/door/firedoor/border_only,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D2) "dnV" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "dnW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "dnX" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "centcom_dock_airlock"; name = "interior access button"; pixel_x = 28; pixel_y = -26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) @@ -8846,8 +8846,8 @@ "dof" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dog" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "doh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) -"doi" = (/turf/simulated/shuttle/wall/hard_corner,/area/shuttle/arrival/station) -"doj" = (/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) +"doi" = (/obj/machinery/door/firedoor/border_only,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D3) +"doj" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/airlock/glass_external{frequency = 1380; icon_state = "door_locked"; id_tag = "arrivals_dock_north_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D2) "dok" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "dol" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "dom" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) @@ -8855,19 +8855,19 @@ "doo" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D3) "dop" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D3) "doq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) -"dor" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) -"dos" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) +"dor" = (/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "arrivals_dock_north_airlock"; master_tag = "arrivals_dock"; pixel_y = 30; req_one_access = list(13); tag_airlock_mech_sensor = "arrivals_dock_north_mech"; tag_airpump = "arrivals_dock_north_pump"; tag_chamber_sensor = "arrivals_dock_north_sensor"; tag_exterior_door = "arrivals_dock_north_outer"; tag_interior_door = "arrivals_dock_north_inner"; tag_shuttle_mech_sensor = "shuttle_dock_north_mech"},/obj/effect/floor_decal/industrial/loading{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) +"dos" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "escape_dock_north_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dot" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "dou" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Dock One Fore"; dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dov" = (/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Dock Two Fore"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"dow" = (/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) +"dow" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "arrivals_dock_north_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/shield_diffuser,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D2) "dox" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Dock Three Fore"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "doy" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "doz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "doA" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "doB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "doC" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"doD" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) +"doD" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "escape_dock_north_starboard_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "doE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "doF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "doG" = (/obj/structure/sign/warning/docking_area,/turf/simulated/wall/r_wall,/area/hallway/secondary/entry/D1) @@ -8883,9 +8883,9 @@ "doQ" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "doR" = (/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "doS" = (/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D2) -"doT" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/station) -"doU" = (/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) -"doV" = (/obj/effect/wingrille_spawn/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D3) +"doT" = (/obj/effect/floor_decal/industrial/loading{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "escape_dock_snorth_airlock"; master_tag = "escape_dock"; pixel_y = 30; req_one_access = list(13); tag_airlock_mech_sensor = "escape_dock_north_starboard_mech"; tag_airpump = "escape_dock_north_starboard_pump"; tag_chamber_sensor = "escape_dock_north_starboard_sensor"; tag_exterior_door = "escape_dock_north_starboard_outer"; tag_interior_door = "escape_dock_north_starboard_inner"; tag_shuttle_mech_sensor = "shuttle_dock_north_starboard_mech"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) +"doU" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_starboard_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = 19},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/shield_diffuser,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D3) +"doV" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/airlock/glass_external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_starboard_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D3) "doW" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "doX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "doY" = (/obj/structure/sign/warning/docking_area,/turf/simulated/wall/r_wall,/area/hallway/secondary/entry/D3) @@ -8901,14 +8901,14 @@ "dpi" = (/obj/machinery/door/airlock/glass_external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_starboard_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D2) "dpj" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_north_starboard_airlock"; name = "interior access button"; pixel_x = -26; pixel_y = 26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dpk" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"dpl" = (/obj/machinery/door/airlock/glass_external,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D2) -"dpm" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"dpn" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 5},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D2) -"dpo" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D2) -"dpp" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D3) -"dpq" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D3) -"dpr" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 5},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) -"dps" = (/obj/machinery/door/airlock/glass_external,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D3) +"dpl" = (/obj/machinery/light/small,/obj/effect/floor_decal/industrial/loading{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) +"dpm" = (/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_north_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "escape_dock_north_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) +"dpn" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/shield_diffuser,/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "arrivals_dock_north_outer"; locked = 1; name = "Arrivals Airlock"; req_access = list(13)},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "arrivals_dock_north_airlock"; name = "exterior access button"; pixel_x = 4; pixel_y = -26; req_one_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "arrival_dock_north_mech"; pixel_y = -19},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D2) +"dpo" = (/obj/effect/floor_decal/industrial/loading{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "escape_dock_north_starboard_pump"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_north_starboard_sensor"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) +"dpp" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/machinery/light/small,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) +"dpq" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/airlock/glass_external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_starboard_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D3) +"dpr" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D2) +"dps" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/airlock/glass_external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D2) "dpt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "dpu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/ai_status_display{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "dpv" = (/turf/space,/area/shuttle/shuttle2/arrivals_dock) @@ -8920,12 +8920,12 @@ "dpB" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1380; id_tag = "escape_dock_north_starboard_pump"},/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_north_starboard_sensor"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D2) "dpC" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1380; id_tag = "escape_dock_north_starboard_pump"},/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dpD" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"dpE" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"dpF" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D2) -"dpG" = (/obj/structure/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/station) -"dpH" = (/obj/structure/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/station) -"dpI" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D3) -"dpJ" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) +"dpE" = (/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "arrivals_dock_south_airlock"; master_tag = "escape_dock"; pixel_y = 30; req_one_access = list(13); tag_airlock_mech_sensor = "escape_dock_north_mech"; tag_airpump = "escape_dock_north_pump"; tag_chamber_sensor = "escape_dock_north_sensor"; tag_exterior_door = "escape_dock_north_outer"; tag_interior_door = "escape_dock_north_inner"; tag_shuttle_mech_sensor = "shuttle_dock_north_mech"},/obj/effect/floor_decal/industrial/loading{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) +"dpF" = (/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_south_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "escape_dock_south_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) +"dpG" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "escape_dock_south_airlock"; name = "exterior access button"; pixel_x = 4; pixel_y = 26; req_one_access = list(13)},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/shield_diffuser,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D2) +"dpH" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "escape_dock_south_starboard_pump"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_south_starboard_sensor"; pixel_x = 0; pixel_y = 25},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) +"dpI" = (/obj/effect/floor_decal/industrial/loading{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) +"dpJ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_starboard_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "escape_dock_south_starboard_airlock"; name = "exterior access button"; pixel_x = -4; pixel_y = 26; req_one_access = list(13)},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/shield_diffuser,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D3) "dpK" = (/turf/space,/area/shuttle/response_ship/arrivals_dock) "dpL" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dpM" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) @@ -8936,10 +8936,10 @@ "dpR" = (/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dpS" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dpT" = (/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"dpU" = (/turf/simulated/shuttle/wall/no_join,/area/shuttle/arrival/station) -"dpV" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/station) -"dpW" = (/obj/effect/landmark/start,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) -"dpX" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/station) +"dpU" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/airlock/glass_external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_starboard_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D3) +"dpV" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/airlock/glass_external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D2) +"dpW" = (/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "escape_dock_south_airlock"; master_tag = "escape_dock"; pixel_y = -30; req_one_access = list(13); tag_airlock_mech_sensor = "escape_dock_south_mech"; tag_airpump = "escape_dock_south_pump"; tag_chamber_sensor = "escape_dock_south_sensor"; tag_exterior_door = "escape_dock_south_outer"; tag_interior_door = "escape_dock_south_inner"; tag_shuttle_mech_sensor = "shuttle_dock_south_mech"},/obj/effect/floor_decal/industrial/loading{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) +"dpX" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "escape_dock_south_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dpY" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "dpZ" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "dqa" = (/obj/effect/wingrille_spawn/reinforced,/obj/structure/sign/warning/airlock,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D1) @@ -8949,10 +8949,9 @@ "dqe" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dqf" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dqg" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"dqh" = (/obj/structure/bed/chair{dir = 4},/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/station) -"dqi" = (/obj/structure/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/station) -"dqj" = (/obj/structure/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/station) -"dqk" = (/obj/structure/bed/chair{dir = 8},/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/station) +"dqh" = (/obj/effect/floor_decal/industrial/loading{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "escape_dock_south_starboard_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) +"dqi" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "escape_dock_ssouth_airlock"; master_tag = "escape_dock"; pixel_y = -30; req_one_access = list(13); tag_airlock_mech_sensor = "escape_dock_south_starboard_mech"; tag_airpump = "escape_dock_south_starboard_pump"; tag_chamber_sensor = "escape_dock_south_starboard_sensor"; tag_exterior_door = "escape_dock_south_starboard_outer"; tag_interior_door = "escape_dock_south_starboard_inner"; tag_shuttle_mech_sensor = "shuttle_dock_south_starboard_mech"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) +"dqj" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/airlock/glass_external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_starboard_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D3) "dql" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "dqm" = (/obj/effect/floor_decal/industrial/warning/corner,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "dqn" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D3) @@ -8966,9 +8965,7 @@ "dqv" = (/obj/structure/closet/emcloset,/obj/structure/extinguisher_cabinet{pixel_x = -28; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dqw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dqx" = (/obj/machinery/alarm{dir = 8; pixel_x = 22; pixel_y = 0},/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"dqy" = (/obj/structure/bed/chair{dir = 4},/obj/effect/landmark{name = "JoinLate"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/station) "dqz" = (/obj/effect/landmark{name = "carpspawn"},/turf/space,/area/ninja_dojo/arrivals_dock) -"dqA" = (/obj/structure/bed/chair{dir = 8},/obj/effect/landmark{name = "JoinLate"},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/station) "dqB" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "dqC" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "s2s_dock_airlock"; name = "interior access button"; pixel_x = 28; pixel_y = -26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "dqD" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/airlock/glass_external{frequency = 1380; icon_state = "door_locked"; id_tag = "s2s_dock_inner"; locked = 1; name = "Dock Three Internal Airlock"; req_access = list(13)},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D3) @@ -9000,8 +8997,6 @@ "drd" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "escape_dock_south_starboard_pump"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 5},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dre" = (/obj/machinery/door/airlock/glass_external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_starboard_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D2) "drf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"drg" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"drh" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 5},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "dri" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "drj" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_south_airlock"; name = "interior access button"; pixel_x = 26; pixel_y = -26; req_one_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "drk" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1380; id_tag = "escape_dock_south_pump"},/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/light/small,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) @@ -9011,8 +9006,6 @@ "dro" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1380; id_tag = "escape_dock_south_starboard_pump"},/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "escape_dock_ssouth_airlock"; master_tag = "escape_dock"; pixel_y = -30; req_one_access = list(13); tag_airlock_mech_sensor = "escape_dock_south_starboard_mech"; tag_airpump = "escape_dock_south_starboard_pump"; tag_chamber_sensor = "escape_dock_south_starboard_sensor"; tag_exterior_door = "escape_dock_south_starboard_outer"; tag_interior_door = "escape_dock_south_starboard_inner"; tag_shuttle_mech_sensor = "shuttle_dock_south_starboard_mech"},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D2) "drp" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1380; id_tag = "escape_dock_south_starboard_pump"},/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/light/small,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "drq" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_south_starboard_airlock"; name = "interior access button"; pixel_x = -26; pixel_y = -26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"drr" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/light/small,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"drs" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/light/small,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "drt" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Dock One Aft"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dru" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "drv" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Dock Two Aft"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) @@ -9024,15 +9017,12 @@ "drB" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "drC" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "drD" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"drE" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/shuttle/arrival/station) "drF" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "drG" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = 28; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "drH" = (/obj/effect/floor_decal/sign/dock/one,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "drI" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "drJ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "drK" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/sign/dock/two,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"drL" = (/turf/space,/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/arrival/station) -"drM" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating/airless,/area/shuttle/arrival/station) "drN" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "drO" = (/obj/effect/floor_decal/sign/dock/three,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "drP" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D1) @@ -10107,7 +10097,6 @@ "dMs" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 4},/obj/effect/landmark{name = "carpspawn"},/turf/space,/area/space) "dMt" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 4},/obj/structure/lattice,/obj/effect/landmark{name = "carpspawn"},/turf/space,/area/space) "dMu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/effect/landmark{name = "Observer-Start"},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/dockhallway) -"dMv" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "dMw" = (/obj/effect/landmark{name = "carpspawn"},/turf/space,/area/shuttle/shuttle2/arrivals_dock) "dMx" = (/obj/effect/landmark{name = "carpspawn"},/turf/space,/area/shuttle/response_ship/thirddeck) "dMy" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/shutters{dir = 2; id = "Skynet_launch"; name = "Mech Bay"},/turf/simulated/floor/tiled/dark,/area/assembly/chargebay) @@ -10571,25 +10560,25 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlNdlNdlNdlNdlNdlNdlNaaaaaadlOdlOdlOdlOdlOdlOdlOdlOdlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlkdlkdlkdlkdlkdlkdlkaaaaaaaaaaaaaaadmUdnhdnidnjaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaadnkdnldnmdnndnkaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaadnodnpdnqdneaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlNdlNdlNdlNdlNdlNdlNaaaaaadlOdlOdlOdlOdlOdlOdlOdlOdlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlkdlkdlkdlkdlkdlkdlkdlkdlkaaaaaaaaadnjdmUdnrdnidnsaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaadntdnldnmdnndntaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaadnudnpdnvdnednoaaaaaaaaadnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlNdlNdlNdlNdlNdlNdlNdlNdlNaaaaaadlOdlOdlOdlOdlOdlOdlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlkdlkdlkdlkdlkdlkdlkdlkdlkdnxdnydnjdnjdnzdnAdnBdnjaaaaaaaafaaaaaadnCdnCdnCdnCdnCdnCdnCaaaaaaaafaaaaaadnkdnldnDdnEdnkaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaadnodnFdnGdnHdnodnodnIdnJdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlNdlNdlNdlNdlNdlNdlNdlNdlNaaaaaadlOdlOdlOdlOdlOdlOdlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlkdlkdlkdlkdlkdlkdlkdlkdlkdnKdnLdMBdnNdnOdnPdnQdmUaaaaaaaafaaadnCdnCdnCdnCdnCdnCdnCdnCdnCaaaaafaaaaaadmYdnRdnmdnSdmYaaaaaaaafaaaaaadnTdnUdnUdnUdnUdnUdnTaaaaaaaafaaaaaadnednVdnWdnXdnYdnZdoadobdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlNdlNdlNdlNdlNdlNdlNdlNdlNaaaaaadlOdlOdlOdlOdlOdlOdlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlkdlkdlkdlkdlkdlkdlkdlkdlkdnydocdoddoedofdogdohdnjaaaaaaaafaafdnCdnCdnCdnCdnCdnCdnCdnCdnCaafaafaaaaaadnkdnndnmdnndnkaaaaaaaafaafdnTdoidojdojdojdojdojdoidnTaafaafaaaaaadnodokdoldomdondoodopdnIdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlNdlNdlNdlNdlNdlNdlNdlNdlNaaaaaadlOdlOdlOdlOdlOdlOdlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlkdlkdlkdlkdlkdlkdlkdlkdlkaaaaaaaaadnjdnjdnhdoqdnjaaaaaadMqaaadnCdnCdnCdnCdnCdnCdnCdnCdnCaaadMqaaaaaadnkdnndnmdnndnkaaaaaadMqaaadnUdordosdosdojdosdosdordnUaaadMqaaaaaadnodotdnqdnodnoaaaaaaaaadnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlNdlNdlNdlNdlNdlNdlNdlNdlNaaaaaadlOdlOdlOdlOdlOdlOdlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlkdlkdlkaaaaaaaaadlkdlkdlkaaaaaaaaaaaadnjdnhdoudnjaaaaaaaafaaadnCdnCdnCdnCdnCdnCdnCdnCdnCaaaaafaaaaaadnkdovdnmdnndnkaaaaaaaafaaadnTdojdowdojdojdojdowdojdnTaaaaafaaaaaadnodoxdnqdnoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlNdlNdlNaaaaaaaaadlNdlNdlNaaaaaadlOdlOdlOdlOdlOdlOdlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlkdlkaaaaaaaaaaaaaaadlkdlkaaaaaaaaaaaadmUdoydozdmUaaaaaaaaadnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCaaaaaaaaadmYdoAdoBdoCdmYaaaaaaaaadnTdoidnTdnTdnTdoDdnTdnTdnTdoidnTaaaaaaaaadnedoEdoFdneaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlNdlNaaaaaaaaaaaaaaadlNdlNaaaaaaaaadlOdlOdlOdlOdlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaadoGdmUdmUdmUdmUdoHdoIdoedoJdoKdnxdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdoLdoMdoNdoOdoPdoQdoRdnkdnkdoSdoLdnTdoTdojdoUdojdojdojdoUdojdoTdnTdnJdnIdoVdnodoWdoXdnednednednedoYaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmUdoZdpadpbdpcdpddpednCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdpfdpgdphdpidpjdnmdpkdpldpmdpndpodoDdojdojdojdojdojdojdojdojdojdoDdppdpqdprdpsdptdpudneaaaaaaaaaaaadpvdpvaaaaaaaaaaaaaaadpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnjdnhdpwdpbdpxdpydpzdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdpAdpBdpCdpidpDdnmdpkdpldpEdpFdpodoDdojdojdpGdpHdojdpGdpHdojdojdoDdppdpIdpJdpsdptdnqdnoaaaaaaaaaaaadpvdpvdpvaaaaaaaaadpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdpKaaaaaaaaaaaadnjdnjdpLdpMdoedpNdpOdnydnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdoSdpPdpQdoOdpRdpSdpTdnkdnkdoSdoSdpUdpVdojdpGdpHdpWdpGdpHdojdpXdpUdnIdnIdoVdnodpYdpZdnodnoaaaaaaaaadpvdpvdpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdqadqbdqcdoedqddogdohdqednjaaaaaadnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCaaaaaadnkdqfdnndnmdnndqgdnkaaaaaadnUdqhdojdpGdqidojdqjdpHdojdqkdnUaaaaaadnodqldokdoldqmdondqndqodnIdpvdpvdpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdqpdqqdqrdqsdqtdnPdoqdqudmUaaaaaadnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCaaaaaadmYdqvdnndqwdnndqxdmYaaaaaadnUdqydojdpGdqidMvdqjdpHdojdqAdnUaaaaaadnedqBdotdnWdqCdqDdMCdqFdqGdpvdpvdpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdnydnydnjdnjdqHdqIdqJdqednjaaaaaadnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCaaaaaadnkdqfdnndqKdqLdqgdnkaaaaaadnUdqhdojdpGdqidojdqjdpHdojdqkdnUaaaaaadnodqldqMdqNdqOdnodnodnIdnJdpvdpvdpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdpKaaaaaaaaaaaadnjdnjdqPdqQdoedoJdoKdnydnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdoSdoMdoNdoOdqRdqSdqTdnkdnkdoSdoSdpUdpVdojdpGdpHdojdpGdpHdojdpXdpUdnIdnIdoVdnodqUdqVdnodnoaaaaaaaaadpvdpvdpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnjdnhdqWdqXdqYdqZdradnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdrbdrcdrddredpDdrfdpkdpldrgdpndpodoDdojdojdpGdpHdojdpGdpHdojdojdoDdppdpqdrhdpsdridnqdnoaaaaaaaaaaaaaaadpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmUdnhdrjdqXdrkdrldrmdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdrndrodrpdredrqdrfdpkdpldrrdpFdpodoDdojdojdojdojdojdojdojdojdojdoDdppdpIdrsdpsdridnqdneaaaaaaaaaaaaaaadpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaadoGdmUdmUdmUdmUdrtdrudoedpNdpOdnxdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdoLdpPdpQdoOdrvdqSdrwdnkdnkdoSdoLdnTdoTdojdowdojdojdojdowdojdoTdnTdnJdnIdoVdnodrxdrydnednednednedoYaaadpvdMwdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmUdrzdrAdmUaaaaaaaaadnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCaaaaaaaaadmYdrBdrCdrDdmYaaaaaaaaadnTdrEdrEdoidnTdnTdnTdoidrEdrEdnTaaaaaaaaadnedrFdrGdneaaaaaaaaaaaaaaadpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnjdrHdrIdnjaaaaaaaaadnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCaaaaaaaaadntdrJdrKdnndntaaaaaaaaadnTdrLdrLdnTdrMdrMdrMdnTdrLdrLdnTaaaaaaaaadnodrNdrOdnoaaaaaaaaaaaaaaadpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrPdrQdrRdrSaaaaaaaabdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCaabaaaaaadnkdoRdrTdrUdnkaaaaaaaabaaaaaaaaadnTdrLdrLdrLdnTaaaaaaaaaaabaaaaaadrVdrWdrXdrYaaaaaaaabaaaaaadpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlNdlNdlNdlNdlNdlNdlNdlNdlNaaaaaadlOdlOdlOdlOdlOdlOdlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlkdlkdlkdlkdlkdlkdlkdlkdlkdnKdnLdMBdnNdnOdnPdnQdmUaaaaaaaafaaadnCdnCdnCdnCdnCdnCdnCdnCdnCaaaaafaaaaaadmYdnRdnmdnSdmYaaaaaaaafaaaaaaaaadnTdnTdnTdnTdnTaaaaaaaaaaafaaaaaadnednVdnWdnXdnYdnZdoadobdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlNdlNdlNdlNdlNdlNdlNdlNdlNaaaaaadlOdlOdlOdlOdlOdlOdlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlkdlkdlkdlkdlkdlkdlkdlkdlkdnydocdoddoedofdogdohdnjaaaaaaaafaafdnCdnCdnCdnCdnCdnCdnCdnCdnCaafaafaaaaaadnkdnndnmdnndnkaaaaaaaafaaaaaadnTdnTdnTdnTdnTdnTdnTaaaaaaaafaaaaaadnodokdoldomdondoodopdnIdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlNdlNdlNdlNdlNdlNdlNdlNdlNaaaaaadlOdlOdlOdlOdlOdlOdlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlkdlkdlkdlkdlkdlkdlkdlkdlkaaaaaaaaadnjdnjdnhdoqdnjaaaaaadMqaaadnCdnCdnCdnCdnCdnCdnCdnCdnCaaadMqaaaaaadnkdnndnmdnndnkaaaaaadMqaaaaaadnTdnTdnTdnTdnTdnTdnTaaaaaadMqaaaaaadnodotdnqdnodnoaaaaaaaaadnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwdnwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlNdlNdlNdlNdlNdlNdlNdlNdlNaaaaaadlOdlOdlOdlOdlOdlOdlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlkdlkdlkaaaaaaaaadlkdlkdlkaaaaaaaaaaaadnjdnhdoudnjaaaaaaaafaaadnCdnCdnCdnCdnCdnCdnCdnCdnCaaaaafaaaaaadnkdovdnmdnndnkaaaaaaaafaaadnTdnTdnTdnTdnTdnTdnTdnTdnTaaaaafaaaaaadnodoxdnqdnoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlNdlNdlNaaaaaaaaadlNdlNdlNaaaaaadlOdlOdlOdlOdlOdlOdlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlkdlkaaaaaaaaaaaaaaadlkdlkaaaaaaaaaaaadmUdoydozdmUaaaaaaaaadnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCaaaaaaaaadmYdoAdoBdoCdmYaaaaaaaaadnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTaaaaaaaaadnedoEdoFdneaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlNdlNaaaaaaaaaaaaaaadlNdlNaaaaaaaaadlOdlOdlOdlOdlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaadoGdmUdmUdmUdmUdoHdoIdoedoJdoKdnxdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdoLdoMdoNdoOdoPdoQdoRdnkdnkdnkdnUdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdoidnodnodnodoWdoXdnednednednedoYaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmUdoZdpadpbdpcdpddpednCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdpfdpgdphdpidpjdnmdpkdojdordosdowdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdoUdoDdoTdoVdptdpudneaaaaaaaaaaaadpvdpvaaaaaaaaaaaaaaadpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnjdnhdpwdpbdpxdpydpzdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdpAdpBdpCdpidpDdnmdpkdojdpldpmdpndnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdpndpodppdpqdptdnqdnoaaaaaaaaaaaadpvdpvdpvaaaaaaaaadpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdpKaaaaaaaaaaaadnjdnjdpLdpMdoedpNdpOdnydnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdoSdpPdpQdoOdpRdpSdpTdoOdprdnkdnkdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdnodnodnodnIdpYdpZdnodnoaaaaaaaaadpvdpvdpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdqadqbdqcdoedqddogdohdqednjaaaaaadnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCaaaaaadnkdqfdnndnmdnndqgdnkaaaaaadnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTaaaaaadnodqldokdoldqmdondqndqodnIdpvdpvdpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdqpdqqdqrdqsdqtdnPdoqdqudmUaaaaaadnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCaaaaaadmYdqvdnndqwdnndqxdmYaaaaaadnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTaaaaaadnedqBdotdnWdqCdqDdMCdqFdqGdpvdpvdpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdnydnydnjdnjdqHdqIdqJdqednjaaaaaadnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCaaaaaadnkdqfdnndqKdqLdqgdnkaaaaaadnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTaaaaaadnodqldqMdqNdqOdnodnodnIdnJdpvdpvdpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpKdpKdpKdpKdpKdpKdpKdpKdpKdpKdpKaaaaaaaaaaaadnjdnjdqPdqQdoedoJdoKdnydnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdoSdoMdoNdoOdqRdqSdqTdnkdnkdnkdnkdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdnodnodnodnodqUdqVdnodnoaaaaaaaaadpvdpvdpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnjdnhdqWdqXdqYdqZdradnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdrbdrcdrddredpDdrfdpkdpsdpEdpFdpGdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdpJdpHdpIdpUdridnqdnoaaaaaaaaaaaaaaadpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmUdnhdrjdqXdrkdrldrmdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdrndrodrpdredrqdrfdpkdpVdpWdpXdpndnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdpndqhdqidqjdridnqdneaaaaaaaaaaaaaaadpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaadoGdmUdmUdmUdmUdrtdrudoedpNdpOdnxdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdoLdpPdpQdoOdrvdqSdrwdnkdnkdnkdnUdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdoidnodnodnodrxdrydnednednednedoYaaadpvdMwdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmUdrzdrAdmUaaaaaaaaadnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCaaaaaaaaadmYdrBdrCdrDdmYaaaaaaaaadnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTaaaaaaaaadnedrFdrGdneaaaaaaaaaaaaaaadpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnjdrHdrIdnjaaaaaaaaadnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCaaaaaaaaadntdrJdrKdnndntaaaaaaaaadnTdnTdnTdnTdnTdnTdnTdnTdnTdnTdnTaaaaaaaaadnodrNdrOdnoaaaaaaaaaaaaaaadpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrPdrQdrRdrSaaaaaaaabdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCaabaaaaaadnkdoRdrTdrUdnkaaaaaaaabaaaaaaaaadnTdnTdnTdnTdnTaaaaaaaaaaabaaaaaadrVdrWdrXdrYaaaaaaaabaaaaaadpvdpvdpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrZdsadsbdrZaaaaaaaaadnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCaaaaaaaaadmYdnkdscdmYdmYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsddsedsedsdaaaaaaaaaaaaaaaaaadpvdpvdpvdpvdpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsfdsgdshdsiaaaaaaaaadnCdnCdnCdnCdnCdnCdnCdnCdnCdnCdnCaaaaaaaaadnkdsjdskdsldnkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsmdsndsodspaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadocdsqdsrdpOaaaaaaaaaaaaaaaaaadnCdnCdnCdnCdnCaaaaaaaaaaaaaaaaaadoSdssdstdsudoSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsvdswdsxdopaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/southern_cross/southern_cross-3.dmm b/maps/southern_cross/southern_cross-3.dmm index 678996cf3e..3b59c4c35d 100644 --- a/maps/southern_cross/southern_cross-3.dmm +++ b/maps/southern_cross/southern_cross-3.dmm @@ -271,7 +271,7 @@ "fk" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) "fl" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/power/emitter{anchored = 1; dir = 1; state = 2},/obj/structure/window/reinforced,/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) "fm" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"fn" = (/obj/machinery/atmospherics/omni/filter{tag_east = 1; tag_north = 2; tag_south = 0; tag_west = 3},/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"fn" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 1; tag_north = 2; tag_south = 0; tag_west = 3},/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) "fo" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) "fp" = (/turf/simulated/wall/r_wall,/area/surface/outpost/mining_main/firstaid) "fq" = (/turf/simulated/wall,/area/surface/outpost/mining_main/firstaid) @@ -709,8 +709,8 @@ "nG" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/machinery/portable_atmospherics/powered/scrubber,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) "nH" = (/obj/machinery/atmospherics/binary/pump/on{dir = 4},/obj/machinery/portable_atmospherics/powered/pump/filled{pixel_x = 0},/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) "nI" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/meter,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) -"nJ" = (/obj/machinery/atmospherics/omni/filter{tag_east = 2; tag_north = 7; tag_west = 1},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) -"nK" = (/obj/machinery/atmospherics/omni/filter{tag_east = 2; tag_north = 5; tag_south = 6; tag_west = 1},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) +"nJ" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 2; tag_north = 5; tag_south = 6; tag_west = 1},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) +"nK" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 2; tag_north = 7; tag_west = 1},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) "nL" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) "nM" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) "nN" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) @@ -950,7 +950,7 @@ "sn" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/surface/outpost/main) "so" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/highsecurity{name = "Telecommunication Hub"; req_one_access = list(10,48,65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/dark,/area/surface/outpost/main/telecomms) "sp" = (/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) -"sq" = (/obj/machinery/atmospherics/omni/filter{tag_east = 7; tag_north = 2; tag_south = 1; tag_west = 0},/obj/machinery/light/small{dir = 8; pixel_x = 0},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) +"sq" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 7; tag_north = 2; tag_south = 1; tag_west = 0},/obj/machinery/light/small{dir = 8; pixel_x = 0},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) "sr" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) "ss" = (/obj/machinery/atmospherics/pipe/tank/nitrous_oxide{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) "st" = (/obj/effect/zone_divider,/turf/simulated/floor/water,/area/surface/center) @@ -968,7 +968,7 @@ "sF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) "sG" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) "sH" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/power/port_gen/pacman,/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) -"sI" = (/obj/machinery/atmospherics/omni/filter{tag_east = 5; tag_north = 2; tag_south = 1; tag_west = 0},/obj/machinery/camera/network/main_outpost{c_tag = "MO - Engineering Section"; dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) +"sI" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 5; tag_north = 2; tag_south = 1; tag_west = 0},/obj/machinery/camera/network/main_outpost{c_tag = "MO - Engineering Section"; dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) "sJ" = (/obj/machinery/atmospherics/pipe/tank/carbon_dioxide{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) "sK" = (/turf/simulated/floor/plating/sif/planetuse,/area/shuttle/shuttle2/planet) "sL" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/bed/padded,/obj/item/weapon/bedsheet/red,/obj/machinery/alarm{dir = 4; pixel_x = -22; pixel_y = 0},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/carpet,/area/surface/outpost/main/crew_quarters) @@ -985,7 +985,7 @@ "sW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/structure/cable/blue,/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/machinery/power/sensor{long_range = 1; name_tag = "Asteroid Main Grid"},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) "sX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) "sY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) -"sZ" = (/obj/machinery/atmospherics/omni/filter{tag_east = 6; tag_north = 2; tag_south = 1; tag_west = 0},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) +"sZ" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 6; tag_north = 2; tag_south = 1; tag_west = 0},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) "ta" = (/obj/machinery/atmospherics/pipe/tank/phoron{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) "tb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -36},/obj/structure/cable/blue,/turf/simulated/floor/tiled,/area/surface/outpost/main/crew_quarters) "tc" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/main/crew_quarters) @@ -1792,7 +1792,7 @@ aaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagkOagag aaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagkOagagagkOagagagagagagagagagagagagagagagagagagagagagagfUaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqanananaqkQkQlVlulWlXlYlZmamblumchththththththtaqaqaqaqaqaqaqanananaqmdmdmemememfldmgfGmhmimjmkmlmmmlmlmnmomkmpmpmpmpaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqakakakakakakakajajajajajajajajajajajajajajajaiaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoap aaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagkOkOkOkOkOagagagagagagagagagagagagagagagagagagagagagagfUaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqanananaqaqkQmqlumrlumsmtmumvmwmxmymzmAmAlukQaqaqaqaqaqaqaqaqanananaqmdmBmCmDmEmFmGmHglmImJmKmomLmMmNmOmPmQmRmSmTmUmpaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqakakakakakakakajajajajajajajajajajajajajajajaiaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoap aaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagkOkOkOkOkOkOkOkOkOagagagagagagagagagagagagagagagagagagagagfUaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqkPananaqaqkQmVlumrlumWmXmYmZnanbncncndnenfkQaqaqaqaqaqaqaqaqanananaqmdngnhnimenjnknlnmnnnonpnmnqnrnsntnunvnwnxnynzmpaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqakakakakakakakajajajajajajajajajajajajajajajaiaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoap -aaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagkOkOkOkOkOkOkOkOkOkOkOagagagagagagagagagagagagagagagagagagagfUaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqkPananaqaqkQnAnBnCnDlunEnFnGnHnInJnKnLnMnNkQaqaqaqaqaqaqaqaqanananaqmdnOnPnQmenRnSnTbAbAnUbBbAnVnWnXnYnZoanZmSobocmpaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqakakakakakakakajajajajajajajajajajajajajajajaiaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoap +aaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagkOkOkOkOkOkOkOkOkOkOkOagagagagagagagagagagagagagagagagagagagfUaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqkPananaqaqkQnAnBnCnDlunEnFnGnHnInKnJnLnMnNkQaqaqaqaqaqaqaqaqanananaqmdnOnPnQmenRnSnTbAbAnUbBbAnVnWnXnYnZoanZmSobocmpaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqakakakakakakakajajajajajajajajajajajajajajajaiaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoap aaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagkOkOkOkOkOkOkOkOkOkOkOagagagagagagagagagagagagagagagagagagagfUaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqanananaqaqkQkQodoeodofkQogohkQkQoiojokokkQkQaqaqaqaqaqaqaqaqanananaqmdmdolommeonooopbAoqorosbAotouovowoxoyozmSoAmpmpaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqajajajajajajajajajajajajajajajajajajajajajajaiaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoap aaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagkOkOkOkOkOkOkOkOkOkOkOagagagagagagagagagagagagagagagagagagagfUaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqanananaqaqaqkQkQkQkQkQkQoBoCoDkQkQkQkQkQkQaqaqaqaqaqaqaqaqaqanananaqaqmdmdmdmdoEoFoEbAoGcEoHbAmkmlmkmkmlmkmkmpmpmpaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqajajajajajajajajajajajajajajajajajajajajajajaiaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoap aaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagkOkOkOkOkOkOkOkOkOkOkOagagagagagagagagagagagagagagagagagagagfUaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqananananaqaqaqaqaqaqaqaqaqoIoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoKaqbAbAoLbBbAaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqajajajajajajajajajajajajajajajajajajajajajajaiaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoap diff --git a/maps/southern_cross/southern_cross-7.dmm b/maps/southern_cross/southern_cross-7.dmm index 9b1384c2f5..d3cf67b594 100644 --- a/maps/southern_cross/southern_cross-7.dmm +++ b/maps/southern_cross/southern_cross-7.dmm @@ -87,6 +87,41 @@ "bI" = (/turf/space/transit/north,/area/shuttle/shuttle2/transit) "bJ" = (/turf/space/transit/north,/turf/space/transit/south,/area/shuttle/shuttle1/transit) "bK" = (/turf/space,/area/shuttle/shuttle1/orbit) +"bL" = (/turf/simulated/shuttle/wall,/area/shuttle/arrival/pre_game) +"bM" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "arrivals_shuttle"; pixel_x = 0; pixel_y = 25; req_one_access = list(13); tag_door = "arrivals_shuttle_hatch"},/turf/simulated/shuttle/floor{tag = "icon-floor_red"; icon_state = "floor_red"},/area/shuttle/arrival/pre_game) +"bN" = (/turf/simulated/shuttle/floor{tag = "icon-floor_red"; icon_state = "floor_red"},/area/shuttle/arrival/pre_game) +"bO" = (/obj/structure/showcase{desc = "So that's how the shuttle moves on its own."; icon = 'icons/mob/AI.dmi'; icon_state = "ai-red"; name = "Arrivals Announcement Computer"},/turf/simulated/shuttle/floor{tag = "icon-floor_red"; icon_state = "floor_red"},/area/shuttle/arrival/pre_game) +"bP" = (/obj/machinery/light,/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{tag = "icon-floor_red"; icon_state = "floor_red"},/area/shuttle/arrival/pre_game) +"bQ" = (/obj/machinery/computer/shuttle_control/arrivals,/turf/simulated/shuttle/floor{tag = "icon-floor_red"; icon_state = "floor_red"},/area/shuttle/arrival/pre_game) +"bR" = (/obj/machinery/light,/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{tag = "icon-floor_red"; icon_state = "floor_red"},/area/shuttle/arrival/pre_game) +"bS" = (/obj/structure/table/steel,/obj/structure/flora/pottedplant{icon_state = "plant-09"; name = "Dave"; pixel_y = 15; tag = "icon-plant-09"},/turf/simulated/shuttle/floor{tag = "icon-floor_red"; icon_state = "floor_red"},/area/shuttle/arrival/pre_game) +"bT" = (/obj/structure/sign/warning/secure_area,/turf/simulated/shuttle/wall,/area/shuttle/arrival/pre_game) +"bU" = (/obj/machinery/status_display,/turf/simulated/shuttle/wall,/area/shuttle/arrival/pre_game) +"bV" = (/obj/machinery/door/airlock/silver{icon_state = "door_locked"; locked = 1; name = "Employees Only"; secured_wires = 1},/turf/simulated/shuttle/floor,/area/shuttle/arrival/pre_game) +"bW" = (/obj/machinery/ai_status_display,/turf/simulated/shuttle/wall,/area/shuttle/arrival/pre_game) +"bX" = (/turf/simulated/shuttle/floor,/area/shuttle/arrival/pre_game) +"bY" = (/turf/simulated/shuttle/wall/hard_corner,/area/shuttle/arrival/pre_game) +"bZ" = (/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/arrival/pre_game) +"ca" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/pre_game) +"cb" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "arrivals_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/arrival/pre_game) +"cc" = (/obj/structure/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/pre_game) +"cd" = (/obj/structure/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/pre_game) +"ce" = (/turf/simulated/shuttle/wall/no_join,/area/shuttle/arrival/pre_game) +"cf" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/pre_game) +"cg" = (/obj/effect/landmark/start,/turf/simulated/shuttle/floor,/area/shuttle/arrival/pre_game) +"ch" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/pre_game) +"ci" = (/obj/structure/shuttle/window,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/arrival/pre_game) +"cj" = (/obj/structure/bed/chair{dir = 4},/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/pre_game) +"ck" = (/obj/structure/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/pre_game) +"cl" = (/obj/structure/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/pre_game) +"cm" = (/obj/structure/bed/chair{dir = 8},/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/pre_game) +"cn" = (/obj/structure/bed/chair{dir = 4},/obj/effect/landmark{name = "JoinLate"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/pre_game) +"co" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor,/area/shuttle/arrival/pre_game) +"cp" = (/obj/structure/bed/chair{dir = 8},/obj/effect/landmark{name = "JoinLate"},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/shuttle/floor/white,/area/shuttle/arrival/pre_game) +"cq" = (/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/arrival/pre_game) +"cr" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/shuttle/arrival/pre_game) +"cs" = (/turf/space,/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/arrival/pre_game) +"ct" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating/airless,/area/shuttle/arrival/pre_game) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababab @@ -160,38 +195,38 @@ ahajajajajajajalalalalalalalajajajajajajahajajajajajajalalalalalalalajajajajajaj ahajajajajajajalaAaAaAaAaAalajajajajajajahajajajajajajalaBaBaBaBaBalajajajajajajaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaaapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ahajajajajajajalaAaAaAaAaAalajajajajajajahajajajajajajalaBaBaBaBaBalajajajajajajaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ahajajajajajajalaAaAaAaAaAalajajajajajajahajajajajajajalaBaBaBaBaBalajajajajajajaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahaaaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajalalalalalalalajajajajajajahajajajajajajalalalalalalalajajajajajajaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajaDaDaDaDaDaDaDaDaDaDaDaDaDajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaEaEaEaEaEaEaEaEaEaEaEaEaEaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajajajahajajalalalalalalalalalalalalalajajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajaDaFaFaFaFaFaFaFaFaFaFaFaDaDajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaEaGaGaGaGaGaGaGaGaGaGaGaEaEaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajajajahajajalaHaHaHaHaHaHaHaHaHaHaHalalajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajaDaFaFaFaFaFaFaFaFaFaFaFaFaDajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaEaGaGaGaGaGaGaGaGaGaGaGaGaEaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajajajahajajalaHaHaHaHaHaHaHaHaHaHaHaHalajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajaDaFaFaFaFaFaFaFaFaFaFaFaFaDajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaEaGaGaGaGaGaGaGaGaGaGaGaGaEaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajajajahajajalaHaHaHaHaHaHaHaHaHaHaHaHalajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajaIaFaFaFaFaFaFaFaFaFaFaFaFaIajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaJaGaGaGaGaGaGaGaGaGaGaGaGaJaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajajajahajajalaHaHaHaHaHaHaHaHaHaHaHaHalajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajaIaFaFaFaFaFaFaFaFaFaFaFaIaIajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaJaGaGaGaGaGaGaGaGaGaGaGaJaJaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajalalalalalalalalalajajajajajajahajajalaHaHaHaHaHaHaHaHaHaHaHalalajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajaIaIaIaIaIaIaIaIaIaIaIaIaIajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaJaJaJaJaJaJaJaJaJaJaJaJaJaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajalaKaKaKaKaKaKaKalajajajajajajahajajalalalalalalalalalalalalalajajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajalaKaKaKaKaKaKaKalajajajajajajahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajalaKaKaKaKaKaKaKalajajajajajajahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajalaKaKaKaKaKaKaKalajajajajajajahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajalaKaKaKaKaKaKaKalajajajajajajahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajalaKaKaKaKaKaKaKalajajajajajajahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajalaKaKaKaKaKaKaKalajajajajajajahajajajalalalalalalalalalalalalalajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajalaKaKaKaKaKaKaKalajajajajajajahajajalalaLaLaLaLaLaLaLaLaLaLaLalajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajalalalalalalalalalajajajajajajahajajalaLaLaLaLaLaLaLaLaLaLaLaLalajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaaaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajajajahajajalaLaLaLaLaLaLaLaLaLaLaLaLalajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajajajahajajalaLaLaLaLaLaLaLaLaLaLaLaLalajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaaaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajajajahajajalalaLaLaLaLaLaLaLaLaLaLaLalajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaMaaaNaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajajajahajajajalalalalalalalalalalalalalajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaMaaaNaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaMaaaNaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaMaaaNaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahahahahahahahahahahahahahahahahahahahahahahahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaMaaaNaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaMaaaNaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajalalalalalalalajajajajajajahajajajajajajalalalalalalalajajajajajajaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaagacacacacacacacacacacacacacacacacacacacacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaagacacacacacacacacacacacacacacacacacacacacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaagacacacacacacacacacacacacacacacacacacacacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaagacacacacacacacacacacacacacacacacacacacacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaagacacacacacacacacacacabababababababacacacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacacacacacacababbLbLbLbLbLababacacacacacacacacacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaabacacacacacacacacacabbLbLbMbObNbLbLabacacacacacacacacacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacacababbLbQbPbNbRbSbLababacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajaDaDaDaDaDaDaDaDaDaDaDaDaDajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaEaEaEaEaEaEaEaEaEaEaEaEaEaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajajajahajajalalalalalalalalalalalalalajajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacababbLbLbUbTbVbLbWbLbLababacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajaDaFaFaFaFaFaFaFaFaFaFaFaDaDajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaEaGaGaGaGaGaGaGaGaGaGaGaEaEaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajajajahajajalaHaHaHaHaHaHaHaHaHaHaHalalajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacabbLbYbXbZbXbXbXbZbXbYbLabacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajaDaFaFaFaFaFaFaFaFaFaFaFaFaDajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaEaGaGaGaGaGaGaGaGaGaGaGaGaEaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajajajahajajalaHaHaHaHaHaHaHaHaHaHaHaHalajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacabbLcabXbXbXbXbXbXbXcabLabacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajaDaFaFaFaFaFaFaFaFaFaFaFaFaDajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaEaGaGaGaGaGaGaGaGaGaGaGaGaEaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajajajahajajalaHaHaHaHaHaHaHaHaHaHaHaHalajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacabcbbXbXbXbXbXbXbXbXbXcbabacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajaIaFaFaFaFaFaFaFaFaFaFaFaFaIajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaJaGaGaGaGaGaGaGaGaGaGaGaGaJaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajajajahajajalaHaHaHaHaHaHaHaHaHaHaHaHalajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacabcbbXbXcdccbXcdccbXbXcbabacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajaIaFaFaFaFaFaFaFaFaFaFaFaIaIajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaJaGaGaGaGaGaGaGaGaGaGaGaJaJaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajalalalalalalalalalajajajajajajahajajalaHaHaHaHaHaHaHaHaHaHaHalalajajajajajajahaaaaaaaaaaaaaaaaaaabacacacacacacacabcecfbXcdcccgcdccbXchceabacacacacacacacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajaIaIaIaIaIaIaIaIaIaIaIaIaIajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaJaJaJaJaJaJaJaJaJaJaJaJaJaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajalaKaKaKaKaKaKaKalajajajajajajahajajalalalalalalalalalalalalalajajajajajajajahaaaaaaaaaaaaaaaaaaabacacacacacacacabcicjbXcdckbXclccbXcmciabacacacacacacacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajalaKaKaKaKaKaKaKalajajajajajajahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacabcicnbXcdckcoclccbXcpciabacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajalaKaKaKaKaKaKaKalajajajajajajahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacabcicjbXcdckbXclccbXcmciabacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajalaKaKaKaKaKaKaKalajajajajajajahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacabcecfbXcdccbXcdccbXchceabacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajalaKaKaKaKaKaKaKalajajajajajajahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacabcbbXbXcdccbXcdccbXbXcbabacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajalaKaKaKaKaKaKaKalajajajajajajahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacabcbbXbXbXbXbXbXbXbXbXcbabacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajalaKaKaKaKaKaKaKalajajajajajajahajajajalalalalalalalalalalalalalajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacabbLcabXcqbXbXbXcqbXcabLabacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajalaKaKaKaKaKaKaKalajajajajajajahajajalalaLaLaLaLaLaLaLaLaLaLaLalajajajajajajahaaaaaaaaaaaaaaaaaaabacacacacacacacabbLcrcrbYbLbLbLbYcrcrbLabacacacacacacacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajalalalalalalalalalajajajajajajahajajalaLaLaLaLaLaLaLaLaLaLaLaLalajajajajajajahaaaaaaaaaaaaaaaaaaabacacacacacacacabbLcscsbLctctctbLcscsbLabacacacacacacacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaaaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajajajahajajalaLaLaLaLaLaLaLaLaLaLaLaLalajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacababababbLcscscsbLababababacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajajajahajajalaLaLaLaLaLaLaLaLaLaLaLaLalajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacacacacabababababababacacacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaaaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajajajahajajalalaLaLaLaLaLaLaLaLaLaLaLalajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacacacacacacacacacacacacacacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaMaaaNaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajajajahajajajalalalalalalalalalalalalalajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacacacacacacacacacacacacacacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaMaaaNaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacacacacacacacacacacacacacacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaMaaaNaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaabacacacacacacacacacacacacacacacacacacacacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaMaaaNaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahahahahahahahahahahahahahahahahahahahahahahahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaabacacacacacacacacacacacacacacacacacacacacacacacacacacacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaMaaaNaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaMaaaNaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaOaMaaaNaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMaOaOaOaOaOaOaOaQaQaQaQaQaQaOaQaQaQaOaOaOaQaQaQaOaQaQaQaQaQaQaOaOaOaOaOaOaOaMaaaNaPaPaPaPaPaPaPaRaRaRaRaRaRaPaRaRaRaPaPaPaRaRaRaPaRaRaRaRaRaRaPaPaPaPaPaPaPaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahahahahahahahahahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMaOaOaOaOaOaOaOaQaSaSaSaSaQaOaQaSaQaQaQaQaQaSaQaOaQaSaSaSaSaQaOaOaOaOaOaOaOaMaaaNaPaPaPaPaPaPaPaRaTaTaTaTaRaPaRaTaRaRaRaRaRaTaRaPaRaTaTaTaTaRaPaPaPaPaPaPaPaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -345,3 +380,4 @@ aabDbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbDaaaCaaaaaaaaaaaaaaaaaaaaaaaa aabDbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbDaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvbvbvbvbvbvbvbvbvbvbvbvbvbvbvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaaabababababababababababababababababababababababababaa aabDbDbDbDbDbDbDbDbDbDbDbDbDbDbDbDbDbDbDbDbDbDbDbDbDaaaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} + diff --git a/polaris.dme b/polaris.dme index 5f12fb4565..551c3d2775 100644 --- a/polaris.dme +++ b/polaris.dme @@ -234,8 +234,8 @@ #include "code\datums\outfits\spec_op.dm" #include "code\datums\outfits\tournament.dm" #include "code\datums\outfits\wizardry.dm" +#include "code\datums\outfits\costumes\costume.dm" #include "code\datums\outfits\costumes\halloween.dm" -#include "code\datums\outfits\jobs\_defines.dm" #include "code\datums\outfits\jobs\cargo.dm" #include "code\datums\outfits\jobs\civilian.dm" #include "code\datums\outfits\jobs\command.dm" @@ -279,6 +279,7 @@ #include "code\datums\uplink\ammunition.dm" #include "code\datums\uplink\announcements.dm" #include "code\datums\uplink\armor.dm" +#include "code\datums\uplink\backup.dm" #include "code\datums\uplink\badassery.dm" #include "code\datums\uplink\grenades.dm" #include "code\datums\uplink\hardsuit_modules.dm" @@ -795,6 +796,7 @@ #include "code\game\objects\effects\decals\posters\polarisposters.dm" #include "code\game\objects\effects\spawners\bombspawner.dm" #include "code\game\objects\effects\spawners\gibspawner.dm" +#include "code\game\objects\items\antag_spawners.dm" #include "code\game\objects\items\apc_frame.dm" #include "code\game\objects\items\blueprints.dm" #include "code\game\objects\items\bodybag.dm" @@ -1775,7 +1777,6 @@ #include "code\modules\mob\living\silicon\robot\robot_damage.dm" #include "code\modules\mob\living\silicon\robot\robot_items.dm" #include "code\modules\mob\living\silicon\robot\robot_movement.dm" -#include "code\modules\mob\living\silicon\robot\syndicate.dm" #include "code\modules\mob\living\silicon\robot\drone\drone.dm" #include "code\modules\mob\living\silicon\robot\drone\drone_abilities.dm" #include "code\modules\mob\living\silicon\robot\drone\drone_console.dm" @@ -1788,6 +1789,7 @@ #include "code\modules\mob\living\silicon\robot\robot_modules\syndicate.dm" #include "code\modules\mob\living\silicon\robot\subtypes\gravekeeper.dm" #include "code\modules\mob\living\silicon\robot\subtypes\lost_drone.dm" +#include "code\modules\mob\living\silicon\robot\subtypes\syndicate.dm" #include "code\modules\mob\living\simple_animal\corpse.dm" #include "code\modules\mob\living\simple_animal\simple_animal.dm" #include "code\modules\mob\living\simple_animal\aliens\alien.dm" diff --git a/sound/misc/clapping.ogg b/sound/misc/clapping.ogg new file mode 100644 index 0000000000..4ecdc2aa22 Binary files /dev/null and b/sound/misc/clapping.ogg differ diff --git a/sound/misc/longwhistle.ogg b/sound/misc/longwhistle.ogg new file mode 100644 index 0000000000..0a2e822515 Binary files /dev/null and b/sound/misc/longwhistle.ogg differ diff --git a/sound/misc/shortwhistle.ogg b/sound/misc/shortwhistle.ogg new file mode 100644 index 0000000000..82ef01af3d Binary files /dev/null and b/sound/misc/shortwhistle.ogg differ