diff --git a/code/__defines/subsystems.dm b/code/__defines/subsystems.dm index 544baf8339..ccbb9306ed 100644 --- a/code/__defines/subsystems.dm +++ b/code/__defines/subsystems.dm @@ -30,3 +30,4 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G #define INIT_ORDER_SHUTTLES 3 #define INIT_ORDER_LIGHTING 0 #define INIT_ORDER_AIR -1 +#define INIT_ORDER_XENOARCH -20 diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm index 8e6a06b02a..28ce7fce53 100644 --- a/code/controllers/master_controller.dm +++ b/code/controllers/master_controller.dm @@ -36,8 +36,8 @@ datum/controller/game_controller/New() datum/controller/game_controller/proc/setup() setup_objects() - setupgenetics() - SetupXenoarch() + // setupgenetics() Moved to SSatoms + // SetupXenoarch() - Moved to SSxenoarch transfer_controller = new admin_notice("Initializations complete.", R_DEBUG) diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm index bd9a2aeafb..437c10424b 100644 --- a/code/controllers/subsystem.dm +++ b/code/controllers/subsystem.dm @@ -166,7 +166,7 @@ - if(can_fire && !(SS_NO_FIRE in flags)) + if(can_fire && !(SS_NO_FIRE & flags)) msg = "[round(cost,1)]ms|[round(tick_usage,1)]%|[round(ticks,0.1)]\t[msg]" else msg = "OFFLINE\t[msg]" diff --git a/code/controllers/subsystems/atoms.dm b/code/controllers/subsystems/atoms.dm index 8716292eaf..6b5669878c 100644 --- a/code/controllers/subsystems/atoms.dm +++ b/code/controllers/subsystems/atoms.dm @@ -18,7 +18,7 @@ SUBSYSTEM_DEF(atoms) var/list/BadInitializeCalls = list() /datum/controller/subsystem/atoms/Initialize(timeofday) - setupgenetics() //to set the mutations' place in structural enzymes, so monkey.initialize() knows where to put the monkey mutation. + setupgenetics() //to set the mutations' place in structural enzymes, so initializers know where to put mutations. initialized = INITIALIZATION_INNEW_MAPLOAD to_world_log("Initializing objects") admin_notice("Initializing objects", R_DEBUG) diff --git a/code/modules/xenoarcheaology/master_controller.dm b/code/controllers/subsystems/xenoarch.dm similarity index 79% rename from code/modules/xenoarcheaology/master_controller.dm rename to code/controllers/subsystems/xenoarch.dm index a6689e36b6..eb6c97ea75 100644 --- a/code/modules/xenoarcheaology/master_controller.dm +++ b/code/controllers/subsystems/xenoarch.dm @@ -1,14 +1,35 @@ -/datum/controller/game_controller - var/list/artifact_spawning_turfs = list() - var/list/digsite_spawning_turfs = list() - #define XENOARCH_SPAWN_CHANCE 0.5 #define DIGSITESIZE_LOWER 4 #define DIGSITESIZE_UPPER 12 #define ARTIFACTSPAWNNUM_LOWER 6 #define ARTIFACTSPAWNNUM_UPPER 12 -/datum/controller/game_controller/proc/SetupXenoarch() +// +// Xenoarch subsystem handles initialization of Xenoarcheaology artifacts and digsites. +// +SUBSYSTEM_DEF(xenoarch) + name = "Xenoarch" + init_order = INIT_ORDER_XENOARCH + flags = SS_NO_FIRE + var/list/artifact_spawning_turfs = list() + var/list/digsite_spawning_turfs = list() + +/datum/controller/subsystem/xenoarch/Initialize(timeofday) + SetupXenoarch() + ..() + +/datum/controller/subsystem/xenoarch/Recover() + if (istype(SSxenoarch.artifact_spawning_turfs)) + artifact_spawning_turfs = SSxenoarch.artifact_spawning_turfs + if (istype(SSxenoarch.digsite_spawning_turfs)) + digsite_spawning_turfs = SSxenoarch.digsite_spawning_turfs + +/datum/controller/subsystem/xenoarch/stat_entry(msg) + if (!Debug2) + return // Only show up in stat panel if debugging is enabled. + . = ..() + +/datum/controller/subsystem/xenoarch/proc/SetupXenoarch() for(var/turf/simulated/mineral/M in world) if(!M.density) continue diff --git a/code/datums/repositories/radiation.dm b/code/datums/repositories/radiation.dm index 4755b982ec..5d06eccc77 100644 --- a/code/datums/repositories/radiation.dm +++ b/code/datums/repositories/radiation.dm @@ -116,7 +116,7 @@ var/global/repository/radiation/radiation_repository = new() else if(O.density) //So open doors don't get counted var/material/M = O.get_material() if(!M) continue - cached_rad_resistance += M.weight + cached_rad_resistance += M.radiation_resistance // Looks like storing the contents length is meant to be a basic check if the cache is stale due to items enter/exiting. Better than nothing so I'm leaving it as is. ~Leshana radiation_repository.resistance_cache[src] = (length(contents) + 1) diff --git a/code/datums/supplypacks/medical.dm b/code/datums/supplypacks/medical.dm index bfaf2658bf..2c2e26d97d 100644 --- a/code/datums/supplypacks/medical.dm +++ b/code/datums/supplypacks/medical.dm @@ -330,8 +330,8 @@ access = access_cmo /datum/supply_packs/med/defib - name = "Defibrilator crate" + name = "Defibrillator crate" contains = list(/obj/item/device/defib_kit = 2) cost = 30 containertype = /obj/structure/closet/crate/medical - containername = "Defibrilator crate" \ No newline at end of file + containername = "Defibrillator crate" \ No newline at end of file diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 4cd21a5527..b6a45d9a07 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -102,8 +102,9 @@ temp_blade.attack_self() /obj/item/weapon/cane/concealed/attack_self(var/mob/user) + var/datum/gender/T = gender_datums[user.get_visible_gender()] if(concealed_blade) - user.visible_message("[user] has unsheathed \a [concealed_blade] from \his [src]!", "You unsheathe \the [concealed_blade] from \the [src].") + user.visible_message("[user] has unsheathed \a [concealed_blade] from [T.his] [src]!", "You unsheathe \the [concealed_blade] from \the [src].") // Calling drop/put in hands to properly call item drop/pickup procs playsound(user.loc, 'sound/weapons/flipblade.ogg', 50, 1) user.drop_from_inventory(src) @@ -117,7 +118,8 @@ /obj/item/weapon/cane/concealed/attackby(var/obj/item/weapon/material/butterfly/W, var/mob/user) if(!src.concealed_blade && istype(W)) - user.visible_message("[user] has sheathed \a [W] into \his [src]!", "You sheathe \the [W] into \the [src].") + var/datum/gender/T = gender_datums[user.get_visible_gender()] + user.visible_message("[user] has sheathed \a [W] into [T.his] [src]!", "You sheathe \the [W] into \the [src].") user.drop_from_inventory(W) W.loc = src src.concealed_blade = W diff --git a/code/game/gamemodes/changeling/powers/armblade.dm b/code/game/gamemodes/changeling/powers/armblade.dm index 5ab724789b..35526be0d6 100644 --- a/code/game/gamemodes/changeling/powers/armblade.dm +++ b/code/game/gamemodes/changeling/powers/armblade.dm @@ -86,7 +86,8 @@ ..() /obj/item/weapon/melee/changeling/suicide_act(mob/user) - viewers(user) << "[user] is impaling \himself the [src.name]! It looks like \he's trying to commit suicide." + var/datum/gender/T = gender_datums[user.get_visible_gender()] + viewers(user) << "[user] is impaling [T.himself] with the [src.name]! It looks like [T.he] [T.is] trying to commit suicide." return(BRUTELOSS) /obj/item/weapon/melee/changeling/process() //Stolen from ninja swords. diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm index 98b091abaa..ab8111000d 100644 --- a/code/game/gamemodes/changeling/powers/revive.dm +++ b/code/game/gamemodes/changeling/powers/revive.dm @@ -38,7 +38,7 @@ for(var/limb in H.organs_by_name) var/obj/item/organ/external/current_limb = H.organs_by_name[limb] if(current_limb) - current_limb.undislocate() + current_limb.relocate() current_limb.open = 0 BITSET(H.hud_updateflag, HEALTH_HUD) @@ -60,4 +60,4 @@ - return 1 \ No newline at end of file + return 1 diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index d2fdffcb16..0e0ff60791 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -168,7 +168,8 @@ var/list/sacrificed = list() if (!target.can_feel_pain()) target.visible_message("The markings below \the [target] glow a bloody red.") else - target.visible_message("[target] writhes in pain as the markings below \him glow a bloody red.", "AAAAAAHHHH!", "You hear an anguished scream.") + var/datum/gender/TT = gender_datums[target.get_visible_gender()] + target.visible_message("[target] writhes in pain as the markings below [TT.him] glow a bloody red.", "AAAAAAHHHH!", "You hear an anguished scream.") if(!waiting_for_input[target]) //so we don't spam them with dialogs if they hesitate waiting_for_input[target] = 1 @@ -373,15 +374,18 @@ var/list/sacrificed = list() sleep(10 SECONDS) if(corpse_to_raise.client) + + var/datum/gender/TU = gender_datums[corpse_to_raise.get_visible_gender()] + var/datum/gender/TT = gender_datums[body_to_sacrifice.get_visible_gender()] cult.add_antagonist(corpse_to_raise.mind) corpse_to_raise.revive() usr.say("Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!") - corpse_to_raise.visible_message("[corpse_to_raise]'s eyes glow with a faint red as he stands up, slowly starting to breathe again.", \ + corpse_to_raise.visible_message("[corpse_to_raise]'s eyes glow with a faint red as [TU.he] stand[TU.s] up, slowly starting to breathe again.", \ "Life... I'm alive again...", \ "You hear a faint, slightly familiar whisper.") - body_to_sacrifice.visible_message("[body_to_sacrifice] is torn apart, a black smoke swiftly dissipating from \his remains!", \ + body_to_sacrifice.visible_message("[body_to_sacrifice] is torn apart, a black smoke swiftly dissipating from [TT.his] remains!", \ "You feel as your blood boils, tearing you apart.", \ "You hear a thousand voices, all crying in pain.") body_to_sacrifice.gib() @@ -433,8 +437,9 @@ var/list/sacrificed = list() ajourney() //some bits copypastaed from admin tools - Urist if(usr.loc==src.loc) var/mob/living/carbon/human/L = usr + var/datum/gender/TU = gender_datums[L.get_visible_gender()] usr.say("Fwe[pick("'","`")]sh mah erl nyag r'ya!") - usr.visible_message("[usr]'s eyes glow blue as \he freezes in place, absolutely motionless.", \ + usr.visible_message("[usr]'s eyes glow blue as [TU.he] freeze[TU.s] in place, absolutely motionless.", \ "The shadow that is your spirit separates itself from your body. You are now in the realm beyond. While this is a great sight, being here strains your mind and body. Hurry...", \ "You hear only complete silence for a moment.") announce_ghost_joinleave(usr.ghostize(1), 1, "You feel that they had to use some [pick("dark", "black", "blood", "forgotten", "forbidden")] magic to [pick("invade","disturb","disrupt","infest","taint","spoil","blight")] this place!") @@ -599,11 +604,12 @@ var/list/sacrificed = list() mend() var/mob/living/user = usr + var/datum/gender/TU = gender_datums[usr.get_visible_gender()] src = null user.say("Uhrast ka'hfa heldsagen ver[pick("'","`")]lot!") user.take_overall_damage(200, 0) runedec+=10 - user.visible_message("\The [user] keels over dead, \his blood glowing blue as it escapes \his body and dissipates into thin air.", \ + user.visible_message("\The [user] keels over dead, [TU.his] blood glowing blue as it escapes [TU.his] body and dissipates into thin air.", \ "In the last moment of your humble life, you feel an immense pain as fabric of reality mends... with your blood.", \ "You hear faint rustle.") for(,user.stat==2) @@ -886,7 +892,8 @@ var/list/sacrificed = list() if (cultist == user) //just to be sure. return if(cultist.buckled || cultist.handcuffed || (!isturf(cultist.loc) && !istype(cultist.loc, /obj/structure/closet))) - user << "You cannot summon \the [cultist], for \his shackles of blood are strong." + var/datum/gender/TU = gender_datums[cultist.get_visible_gender()] + user << "You cannot summon \the [cultist], for [TU.his] shackles of blood are strong." return fizzle() cultist.loc = src.loc cultist.lying = 1 diff --git a/code/game/gamemodes/endgame/supermatter_cascade/blob.dm b/code/game/gamemodes/endgame/supermatter_cascade/blob.dm index 81a6148e2c..1051587d13 100644 --- a/code/game/gamemodes/endgame/supermatter_cascade/blob.dm +++ b/code/game/gamemodes/endgame/supermatter_cascade/blob.dm @@ -99,7 +99,9 @@ /turf/unsimulated/wall/supermatter/Bumped(atom/AM as mob|obj) if(istype(AM, /mob/living)) - AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... \his body starts to glow and catch flame before flashing into ash.",\ + var/mob/living/M = AM + var/datum/gender/T = gender_datums[M.get_visible_gender()] + AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... [T.his] body starts to glow and catch flame before flashing into ash.",\ "You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"",\ "You hear an unearthly noise as a wave of heat washes over you.") else diff --git a/code/game/gamemodes/newobjective.dm b/code/game/gamemodes/newobjective.dm index 3db262d3df..f952dbad06 100644 --- a/code/game/gamemodes/newobjective.dm +++ b/code/game/gamemodes/newobjective.dm @@ -1252,7 +1252,8 @@ datum proc/find_target() ..() if(target && target.current) - explanation_text = "[target.current.real_name], the [target.role_alt_title ? target.role_alt_title : target.assigned_role], has defied us for the last time. Make an example of [target.current.gender == MALE ? "him" : target.current.gender == FEMALE ? "her" : "them"], and bring us [target.current.gender == MALE ? "his" : target.current.gender == FEMALE ? "her" : "their"] severed head." + var/datum/gender/T = gender_datums[target.current.get_visible_gender()] + explanation_text = "[target.current.real_name], the [target.role_alt_title ? target.role_alt_title : target.assigned_role], has defied us for the last time. Make an example of [T.him], and bring us [T.his] severed head." else explanation_text = "Free Objective" return target @@ -1261,7 +1262,8 @@ datum find_target_by_role(role, role_type=0) ..(role, role_type) if(target && target.current) - explanation_text = "[target.current.real_name], the [target.role_alt_title ? target.role_alt_title : (!role_type ? target.assigned_role : target.special_role)], has defied us for the last time. Make an example of [target.current.gender == MALE ? "him" : target.current.gender == FEMALE ? "her" : "them"], and bring us [target.current.gender == MALE ? "his" : target.current.gender == FEMALE ? "her" : "their"] severed head." + var/datum/gender/T = gender_datums[target.current.get_visible_gender()] + explanation_text = "[target.current.real_name], the [target.role_alt_title ? target.role_alt_title : (!role_type ? target.assigned_role : target.special_role)], has defied us for the last time. Make an example of [T.him], and bring us [T.his] severed head." else explanation_text = "Free Objective" return target diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 7237669a77..c4494a9ee8 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -69,7 +69,8 @@ datum/objective/anti_revolution/execute find_target() ..() if(target && target.current) - explanation_text = "[target.current.real_name], the [target.assigned_role] has extracted confidential information above their clearance. Execute \him[target.current]." + var/datum/gender/T = gender_datums[target.current.get_visible_gender()] + explanation_text = "[target.current.real_name], the [target.assigned_role] has extracted confidential information above their clearance. Execute [T.him]." else explanation_text = "Free Objective" return target @@ -78,7 +79,8 @@ datum/objective/anti_revolution/execute find_target_by_role(role, role_type=0) ..(role, role_type) if(target && target.current) - explanation_text = "[target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] has extracted confidential information above their clearance. Execute \him[target.current]." + var/datum/gender/T = gender_datums[target.current.get_visible_gender()] + explanation_text = "[target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] has extracted confidential information above their clearance. Execute [T.him]." else explanation_text = "Free Objective" return target @@ -127,7 +129,8 @@ datum/objective/anti_revolution/demote find_target() ..() if(target && target.current) - explanation_text = "[target.current.real_name], the [target.assigned_role] has been classified as harmful to [using_map.company_name]'s goals. Demote \him[target.current] to assistant." + var/datum/gender/T = gender_datums[target.current.get_visible_gender()] + explanation_text = "[target.current.real_name], the [target.assigned_role] has been classified as harmful to [using_map.company_name]'s goals. Demote [T.him] to assistant." else explanation_text = "Free Objective" return target @@ -135,7 +138,8 @@ datum/objective/anti_revolution/demote find_target_by_role(role, role_type=0) ..(role, role_type) if(target && target.current) - explanation_text = "[target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] has been classified as harmful to [using_map.company_name]'s goals. Demote \him[target.current] to assistant." + var/datum/gender/T = gender_datums[target.current.get_visible_gender()] + explanation_text = "[target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] has been classified as harmful to [using_map.company_name]'s goals. Demote [T.him] to assistant." else explanation_text = "Free Objective" return target diff --git a/code/game/gamemodes/technomancer/spells/illusion.dm b/code/game/gamemodes/technomancer/spells/illusion.dm index 5eac627728..3e6d2dd8ab 100644 --- a/code/game/gamemodes/technomancer/spells/illusion.dm +++ b/code/game/gamemodes/technomancer/spells/illusion.dm @@ -167,8 +167,9 @@ switch(M.a_intent) if(I_HELP) - M.visible_message("[M] hugs [src] to make \him feel better!", \ - "You hug [src] to make \him feel better!") + var/datum/gender/T = gender_datums[src.get_visible_gender()] + M.visible_message("[M] hugs [src] to make [T.him] feel better!", \ + "You hug [src] to make [T.him] feel better!") // slightly redundant as at the moment most mobs still use the normal gender var, but it works and future-proofs it playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) if(I_DISARM) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index ef67a53084..7d786ce1a3 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -39,10 +39,8 @@ if(!sleeper) findsleeper() - if(sleeper) - return sleeper.ui_interact(user) - else if(sleeper) - return sleeper.ui_interact(user) + if(sleeper) + return ui_interact(user) else to_chat(user, "Sleeper not found!") @@ -59,6 +57,94 @@ else icon_state = initial(icon_state) +/obj/machinery/sleep_console/ui_interact(var/mob/user, var/ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = outside_state) + var/data[0] + + var/obj/machinery/sleeper/S = sleeper + var/mob/living/carbon/human/occupant = sleeper.occupant + + data["power"] = S.stat & (NOPOWER|BROKEN) ? 0 : 1 + + var/list/reagents = list() + for(var/T in S.available_chemicals) + var/list/reagent = list() + reagent["id"] = T + reagent["name"] = S.available_chemicals[T] + if(occupant) + reagent["amount"] = occupant.reagents.get_reagent_amount(T) + reagents += list(reagent) + data["reagents"] = reagents.Copy() + + if(occupant) + data["occupant"] = 1 + switch(occupant.stat) + if(CONSCIOUS) + data["stat"] = "Conscious" + if(UNCONSCIOUS) + data["stat"] = "Unconscious" + if(DEAD) + data["stat"] = "Dead" + data["health"] = occupant.health + data["maxHealth"] = occupant.getMaxHealth() + if(iscarbon(occupant)) + var/mob/living/carbon/C = occupant + data["pulse"] = C.get_pulse(GETPULSE_TOOL) + data["brute"] = occupant.getBruteLoss() + data["burn"] = occupant.getFireLoss() + data["oxy"] = occupant.getOxyLoss() + data["tox"] = occupant.getToxLoss() + else + data["occupant"] = 0 + if(S.beaker) + data["beaker"] = S.beaker.reagents.get_free_space() + else + data["beaker"] = -1 + data["filtering"] = S.filtering + + var/stasis_level_name = "Error!" + for(var/N in S.stasis_choices) + if(S.stasis_choices[N] == S.stasis_level) + stasis_level_name = N + break + data["stasis"] = stasis_level_name + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if(!ui) + ui = new(user, src, ui_key, "sleeper.tmpl", "Sleeper UI", 600, 600, state = state) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/obj/machinery/sleep_console/Topic(href, href_list) + if(..()) + return 1 + + var/obj/machinery/sleeper/S = sleeper + + if(usr == S.occupant) + to_chat(usr, "You can't reach the controls from the inside.") + return + + add_fingerprint(usr) + + if(href_list["eject"]) + S.go_out() + if(href_list["beaker"]) + S.remove_beaker() + if(href_list["sleeper_filter"]) + if(S.filtering != text2num(href_list["sleeper_filter"])) + S.toggle_filter() + if(href_list["chemical"] && href_list["amount"]) + if(S.occupant && S.occupant.stat != DEAD) + if(href_list["chemical"] in S.available_chemicals) // Your hacks are bad and you should feel bad + S.inject_chemical(usr, href_list["chemical"], text2num(href_list["amount"])) + if(href_list["change_stasis"]) + var/new_stasis = input("Levels deeper than 50% stasis level will render the patient unconscious.","Stasis Level") as null|anything in S.stasis_choices + if(new_stasis && CanUseTopic(usr, default_state) == STATUS_INTERACTIVE) + S.stasis_level = S.stasis_choices[new_stasis] + + return 1 + /obj/machinery/sleeper name = "sleeper" desc = "A stasis pod with built-in injectors, a dialysis machine, and a limited health scanner." @@ -122,89 +208,6 @@ /obj/machinery/sleeper/update_icon() icon_state = "sleeper_[occupant ? "1" : "0"]" -/obj/machinery/sleeper/ui_interact(var/mob/user, var/ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = outside_state) - var/data[0] - - data["power"] = stat & (NOPOWER|BROKEN) ? 0 : 1 - - var/list/reagents = list() - for(var/T in available_chemicals) - var/list/reagent = list() - reagent["id"] = T - reagent["name"] = available_chemicals[T] - if(occupant) - reagent["amount"] = occupant.reagents.get_reagent_amount(T) - reagents += list(reagent) - data["reagents"] = reagents.Copy() - - if(occupant) - data["occupant"] = 1 - switch(occupant.stat) - if(CONSCIOUS) - data["stat"] = "Conscious" - if(UNCONSCIOUS) - data["stat"] = "Unconscious" - if(DEAD) - data["stat"] = "Dead" - data["health"] = occupant.health - data["maxHealth"] = occupant.getMaxHealth() - if(iscarbon(occupant)) - var/mob/living/carbon/C = occupant - data["pulse"] = C.get_pulse(GETPULSE_TOOL) - data["brute"] = occupant.getBruteLoss() - data["burn"] = occupant.getFireLoss() - data["oxy"] = occupant.getOxyLoss() - data["tox"] = occupant.getToxLoss() - else - data["occupant"] = 0 - if(beaker) - data["beaker"] = beaker.reagents.get_free_space() - else - data["beaker"] = -1 - data["filtering"] = filtering - - var/stasis_level_name = "Error!" - for(var/N in stasis_choices) - if(stasis_choices[N] == stasis_level) - stasis_level_name = N - break - data["stasis"] = stasis_level_name - - ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) - if(!ui) - ui = new(user, src, ui_key, "sleeper.tmpl", "Sleeper UI", 600, 600, state = state) - ui.set_initial_data(data) - ui.open() - ui.set_auto_update(1) - -/obj/machinery/sleeper/Topic(href, href_list) - if(..()) - return 1 - - if(usr == occupant) - to_chat(usr, "You can't reach the controls from the inside.") - return - - add_fingerprint(usr) - - if(href_list["eject"]) - go_out() - if(href_list["beaker"]) - remove_beaker() - if(href_list["sleeper_filter"]) - if(filtering != text2num(href_list["sleeper_filter"])) - toggle_filter() - if(href_list["chemical"] && href_list["amount"]) - if(occupant && occupant.stat != DEAD) - if(href_list["chemical"] in available_chemicals) // Your hacks are bad and you should feel bad - inject_chemical(usr, href_list["chemical"], text2num(href_list["amount"])) - if(href_list["change_stasis"]) - var/new_stasis = input("Levels deeper than 50% stasis level will render the patient unconscious.","Stasis Level") as null|anything in stasis_choices - if(new_stasis && CanUseTopic(usr, default_state) == STATUS_INTERACTIVE) - stasis_level = stasis_choices[new_stasis] - - return 1 - /obj/machinery/sleeper/attackby(var/obj/item/I, var/mob/user) add_fingerprint(user) if(istype(I, /obj/item/weapon/grab)) diff --git a/code/game/objects/effects/decals/remains.dm b/code/game/objects/effects/decals/remains.dm index ff3c8d4a61..d35da75324 100644 --- a/code/game/objects/effects/decals/remains.dm +++ b/code/game/objects/effects/decals/remains.dm @@ -22,9 +22,39 @@ icon_state = "mouse" /obj/effect/decal/remains/lizard - desc = "They look like the remains of a small rodent." + desc = "They look like the remains of a small lizard." icon_state = "lizard" +/obj/effect/decal/remains/unathi + desc = "They look like Unathi remains. Pointy." + icon_state = "remainsunathi" + +/obj/effect/decal/remains/tajaran + desc = "They look like Tajaran remains. They're surprisingly small." + icon_state = "remainstajaran" + +/obj/effect/decal/remains/ribcage + desc = "They look like animal remains of some sort... You hope." + icon_state = "remainsribcage" + +/obj/effect/decal/remains/deer + desc = "They look like the remains of a large herbivore, picked clean." + icon_state = "remainsdeer" + +/obj/effect/decal/remains/posi + desc = "This looks like part of an old FBP. Hopefully it was empty." + icon_state = "remainsposi" + +/obj/effect/decal/remains/mummy1 + name = "mummified remains" + desc = "They look like human remains. They've been here a long time." + icon_state = "mummified1" + +/obj/effect/decal/remains/mummy2 + name = "mummified remains" + desc = "They look like human remains. They've been here a long time." + icon_state = "mummified2" + /obj/effect/decal/remains/attack_hand(mob/user as mob) user << "[src] sinks together into a pile of ash." var/turf/simulated/floor/F = get_turf(src) diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index 6689811b89..a58241ada2 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -185,11 +185,12 @@ var/global/list/tele_landmarks = list() // Terrible, but the alternative is loop A.forceMove(T) // Harmlessly move ghosts. return - if(isliving(A)) // Someday, implement parachutes. For now, just turbomurder whoever falls. - var/mob/living/L = A - L.fall_impact(T, 42, 90, FALSE, TRUE) //You will not be defibbed from this. - message_admins("\The [A] fell out of the sky.") A.forceMove(T) + // Living things should probably be logged when they fall... + if(isliving(A)) + message_admins("\The [A] fell out of the sky.") + // ... because they're probably going to die from it. + A.fall_impact(T, 42, 90, FALSE, TRUE) //You will not be defibbed from this. else message_admins("ERROR: planetary_fall step trigger lacks a planet to fall onto.") return diff --git a/code/game/objects/items/devices/communicator/phone.dm b/code/game/objects/items/devices/communicator/phone.dm index f4c61ae7d7..8668627f8e 100644 --- a/code/game/objects/items/devices/communicator/phone.dm +++ b/code/game/objects/items/devices/communicator/phone.dm @@ -42,7 +42,7 @@ comm.visible_message("\icon[src] Connecting to [src].") to_chat(user, "\icon[src] Attempting to call [comm].") sleep(10) - to_chat(user, "\icon[src] Dialing internally from [station_name()], [system_name()].") // Vorestation edit + to_chat(user, "\icon[src] Dialing internally from [station_name()], [system_name()].") sleep(20) //If they don't have an exonet something is very wrong and we want a runtime. to_chat(user, "\icon[src] Connection re-routed to [comm] at [comm.exonet.address].") sleep(40) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 4187cfc422..ae255d2f7b 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -266,22 +266,26 @@ REAGENT SCANNER if(0) to_chat(usr, "The scanner will now perform a basic analysis.") -/obj/item/device/healthanalyzer/improved //reports bone fractures, IB, quantity of beneficial reagents in stomach; also regular health analyzer stuff +/obj/item/device/healthanalyzer/advanced //reports bone fractures, IB, quantity of beneficial reagents in stomach; also regular health analyzer stuff name = "advanced health analyzer" desc = "A miracle of medical technology, this handheld scanner can produce an accurate and specific report of a patient's biosigns." advscan = 1 origin_tech = list(TECH_MAGNET = 5, TECH_BIO = 6) - icon_state = "advhealth" + icon_state = "health1" -/obj/item/device/healthanalyzer/advanced //reports all of the above, as well as radiation severity and minor brain damage - name = "advanced health analyzer" +/obj/item/device/healthanalyzer/enhanced //reports all of the above, as well as radiation severity and minor brain damage + name = "enhanced health analyzer" + desc = "An even more advanced handheld health scanner, complete with a full biosign monitor and on-board radiation and neurological analysis suites." advscan = 2 - icon_state = "advhealth" + origin_tech = list(TECH_MAGNET = 6, TECH_BIO = 7) + icon_state = "health2" -/obj/item/device/healthanalyzer/enhanced //reports all of the above, as well as name and quantity of nonmed reagents in stomach +/obj/item/device/healthanalyzer/phasic //reports all of the above, as well as name and quantity of nonmed reagents in stomach name = "phasic health analyzer" + desc = "Possibly the most advanced health analyzer to ever have existed, utilising bluespace technology to determine almost everything worth knowing about a patient." advscan = 3 - icon_state = "advhealth" + origin_tech = list(TECH_MAGNET = 7, TECH_BIO = 8) + icon_state = "health3" /obj/item/device/analyzer name = "analyzer" diff --git a/code/game/objects/items/devices/text_to_speech.dm b/code/game/objects/items/devices/text_to_speech.dm new file mode 100644 index 0000000000..bc0c9d5304 --- /dev/null +++ b/code/game/objects/items/devices/text_to_speech.dm @@ -0,0 +1,28 @@ +/obj/item/device/text_to_speech + name = "TTS device" + desc = "A device that speaks an inputted message. Given to crew which can not speak properly or at all." + icon = 'icons/obj/electronic_assemblies.dmi' + icon_state = "setup_small" + w_class = ITEMSIZE_SMALL + var/named + +/obj/item/device/text_to_speech/attack_self(mob/user as mob) + if(user.incapacitated(INCAPACITATION_ALL)) //Are you in a state to actual use the device? + to_chat(user, "You cannot activate the device in your state.") + return + + if(!named) + to_chat(user, "You input your name into the device.") + name = "[initial(name)] ([user.real_name])" + desc = "[initial(desc)] This one is assigned to [user.real_name]." + named = 1 + /* //Another way of naming the device. Gives more freedom, but could lead to issues. + device_name = copytext(sanitize(input(user, "What would you like to name your device? You must input a name before the device can be used.", "Name your device", "") as null|text),1,MAX_NAME_LEN) + name = "[initial(name)] - [device_name]" + named = 1 + */ + + var/message = sanitize(input(user,"Choose a message to relay to those around you.") as text|null) + if(message) + var/obj/item/device/text_to_speech/O = src + audible_message("\icon[O] \The [O.name] states, \"[message]\"") diff --git a/code/game/objects/items/paintkit.dm b/code/game/objects/items/paintkit.dm index 259a054c16..61939b2325 100644 --- a/code/game/objects/items/paintkit.dm +++ b/code/game/objects/items/paintkit.dm @@ -66,7 +66,7 @@ var/new_light_overlay /obj/item/device/kit/suit/can_customize(var/obj/item/I) - return istype(I, /obj/item/clothing/head/helmet/space/void) || istype(I, /obj/item/clothing/suit/space/void) || istype(I, /obj/item/clothing/suit/storage/hooded/explorer) + return istype(I, /obj/item/clothing/head/helmet/space/void) || istype(I, /obj/item/clothing/suit/space/void) || istype(I, /obj/item/clothing/suit/storage/hooded) /obj/item/device/kit/suit/set_info(var/kit_name, var/kit_desc, var/kit_icon, var/kit_icon_file = CUSTOM_ITEM_OBJ, var/kit_icon_override_file = CUSTOM_ITEM_MOB, var/additional_data) ..() diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index b1f623081d..ea838cce0b 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -112,7 +112,9 @@ var/last_chew = 0 var/obj/item/organ/external/O = H.organs_by_name[(H.hand ? BP_L_HAND : BP_R_HAND)] if (!O) return - var/s = "[H.name] chews on \his [O.name]!" + var/datum/gender/T = gender_datums[H.get_visible_gender()] + + var/s = "[H.name] chews on [T.his] [O.name]!" H.visible_message(s, "You chew on your [O.name]!") H.attack_log += text("\[[time_stamp()]\] [s] ([H.ckey])") log_attack("[s] ([H.ckey])") diff --git a/code/game/objects/items/weapons/material/chainsaw.dm b/code/game/objects/items/weapons/material/chainsaw.dm index 7126fb3ef8..703512bf52 100644 --- a/code/game/objects/items/weapons/material/chainsaw.dm +++ b/code/game/objects/items/weapons/material/chainsaw.dm @@ -113,7 +113,8 @@ obj/item/weapon/chainsaw/examine(mob/user) to_chat(usr, "The [src] feels like it contains roughtly [get_fuel()] units of fuel left.") obj/item/weapon/chainsaw/suicide_act(mob/user) - to_chat(viewers(user), "[user] is lying down and pulling the chainsaw into \him, it looks like \he's trying to commit suicide!") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + to_chat(viewers(user), "[user] is lying down and pulling the chainsaw into [TU.him], it looks like [TU.he] [TU.is] trying to commit suicide!") return(BRUTELOSS) obj/item/weapon/chainsaw/update_icon() diff --git a/code/game/objects/items/weapons/material/knives.dm b/code/game/objects/items/weapons/material/knives.dm index 02f48b15d0..f2528f5786 100644 --- a/code/game/objects/items/weapons/material/knives.dm +++ b/code/game/objects/items/weapons/material/knives.dm @@ -68,9 +68,10 @@ attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") /obj/item/weapon/material/knife/suicide_act(mob/user) - viewers(user) << pick("\The [user] is slitting \his wrists with \the [src]! It looks like \he's trying to commit suicide.", \ - "\The [user] is slitting \his throat with \the [src]! It looks like \he's trying to commit suicide.", \ - "\The [user] is slitting \his stomach open with \the [src]! It looks like \he's trying to commit seppuku.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + viewers(user) << pick("\The [user] is slitting [TU.his] wrists with \the [src]! It looks like [TU.hes] trying to commit suicide.", \ + "\The [user] is slitting [TU.his] throat with \the [src]! It looks like [TU.hes] trying to commit suicide.", \ + "\The [user] is slitting [TU.his] stomach open with \the [src]! It looks like [TU.hes] trying to commit seppuku.") return (BRUTELOSS) /obj/item/weapon/material/knife/hook @@ -99,6 +100,7 @@ force_divisor = 0.3 // 18 when hardness 60 (steel) attack_verb = list("slashed", "chopped", "gouged", "ripped", "cut") var/should_cleave = TRUE //Now hatchets inherit from the machete, and thus knives. Tables turned. + slot_flags = SLOT_BELT // This cannot go into afterattack since some mobs delete themselves upon dying. /obj/item/weapon/material/knife/machete/pre_attack(var/mob/living/target, var/mob/living/user) diff --git a/code/game/objects/items/weapons/material/shards.dm b/code/game/objects/items/weapons/material/shards.dm index 4fb7172563..ba7438a685 100644 --- a/code/game/objects/items/weapons/material/shards.dm +++ b/code/game/objects/items/weapons/material/shards.dm @@ -17,8 +17,9 @@ drops_debris = 0 /obj/item/weapon/material/shard/suicide_act(mob/user) - viewers(user) << pick("\The [user] is slitting \his wrists with \the [src]! It looks like \he's trying to commit suicide.", - "\The [user] is slitting \his throat with \the [src]! It looks like \he's trying to commit suicide.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + viewers(user) << pick("\The [user] is slitting [TU.his] wrists with \the [src]! It looks like [TU.hes] trying to commit suicide.", + "\The [user] is slitting [TU.his] throat with \the [src]! It looks like [TU.hes] trying to commit suicide.") return (BRUTELOSS) /obj/item/weapon/material/shard/set_material(var/new_material) diff --git a/code/game/objects/items/weapons/material/swords.dm b/code/game/objects/items/weapons/material/swords.dm index e73bcc8f9c..9efe911360 100644 --- a/code/game/objects/items/weapons/material/swords.dm +++ b/code/game/objects/items/weapons/material/swords.dm @@ -19,7 +19,8 @@ return 0 /obj/item/weapon/material/sword/suicide_act(mob/user) - viewers(user) << "[user] is falling on the [src.name]! It looks like \he's trying to commit suicide." + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + viewers(user) << "[user] is falling on the [src.name]! It looks like [TU.he] [TU.is] trying to commit suicide." return(BRUTELOSS) /obj/item/weapon/material/sword/katana @@ -29,5 +30,6 @@ slot_flags = SLOT_BELT | SLOT_BACK /obj/item/weapon/material/sword/katana/suicide_act(mob/user) - viewers(user) << "[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku." + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + visible_message(span("danger", "[user] is slitting [TU.his] stomach open with \the [src.name]! It looks like [TU.hes] trying to commit seppuku."), span("danger", "You slit your stomach open with \the [src.name]!"), span("danger", "You hear the sound of flesh tearing open.")) // gory, but it gets the point across return(BRUTELOSS) diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index c2952cfc1e..f7497ec3ff 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -39,9 +39,10 @@ set_light(0,0) /obj/item/weapon/melee/energy/attack_self(mob/living/user as mob) + var/datum/gender/TU = gender_datums[user.get_visible_gender()] if (active) if ((CLUMSY in user.mutations) && prob(50)) - user.visible_message("\The [user] accidentally cuts \himself with \the [src].",\ + user.visible_message("\The [user] accidentally cuts [TU.himself] with \the [src].",\ "You accidentally cut yourself with \the [src].") user.take_organ_damage(5,5) deactivate(user) @@ -57,10 +58,10 @@ return /obj/item/weapon/melee/energy/suicide_act(mob/user) - var/tempgender = "[user.gender == MALE ? "he's" : user.gender == FEMALE ? "she's" : "they are"]" + var/datum/gender/TU = gender_datums[user.get_visible_gender()] if(active) - user.visible_message(pick("\The [user] is slitting \his stomach open with \the [src]! It looks like [tempgender] trying to commit seppuku.",\ - "\The [user] is falling on \the [src]! It looks like [tempgender] trying to commit suicide.")) + user.visible_message(pick("\The [user] is slitting [TU.his] stomach open with \the [src]! It looks like [TU.he] [TU.is] trying to commit seppuku.",\ + "\The [user] is falling on \the [src]! It looks like [TU.he] [TU.is] trying to commit suicide.")) return (BRUTELOSS|FIRELOSS) /* @@ -104,7 +105,8 @@ ..() /obj/item/weapon/melee/energy/axe/suicide_act(mob/user) - visible_message("\The [user] swings \the [src] towards \his head! It looks like \he's trying to commit suicide.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + visible_message("\The [user] swings \the [src] towards [TU.his] head! It looks like [TU.he] [TU.is] trying to commit suicide.") return (BRUTELOSS|FIRELOSS) /* diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm index 3554cd45c0..a7f6565a2d 100644 --- a/code/game/objects/items/weapons/melee/misc.dm +++ b/code/game/objects/items/weapons/melee/misc.dm @@ -11,5 +11,6 @@ attack_verb = list("flogged", "whipped", "lashed", "disciplined") suicide_act(mob/user) - viewers(user) << "\The [user] is strangling \himself with \the [src]! It looks like \he's trying to commit suicide." + var/datum/gender/T = gender_datums[user.get_visible_gender()] + user.visible_message(span("danger", "\The [user] [T.is] strangling [T.himself] with \the [src]! It looks like [T.he] [T.is] trying to commit suicide."), span("danger", "You start to strangle yourself with \the [src]!"), span("danger", "You hear the sound of someone choking!")) return (OXYLOSS) diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index 24ba099e8f..43b7c9e22b 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -128,6 +128,7 @@ new /obj/item/weapon/storage/pill_bottle/spaceacillin(src) new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting(src) new /obj/item/stack/medical/splint(src) + new /obj/item/device/healthanalyzer/advanced(src) return /obj/item/weapon/storage/firstaid/surgery @@ -149,7 +150,7 @@ new /obj/item/weapon/surgical/bonegel(src) new /obj/item/weapon/surgical/FixOVein(src) new /obj/item/stack/medical/advanced/bruise_pack(src) - new /obj/item/device/healthanalyzer/advanced(src) + new /obj/item/device/healthanalyzer/enhanced(src) return /obj/item/weapon/storage/firstaid/clotting diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index ec3f3e2631..21bebfa399 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -68,26 +68,29 @@ item_state_slots = list(slot_r_hand_str = "toolbox_syndi", slot_l_hand_str = "toolbox_syndi") origin_tech = list(TECH_COMBAT = 1, TECH_ILLEGAL = 1) force = 14 + var/powertools = FALSE + +/obj/item/weapon/storage/toolbox/syndicate/powertools + powertools = TRUE /obj/item/weapon/storage/toolbox/syndicate/New() // This is found in maint, so it should have the basics, plus some gloves. - ..() - new /obj/item/clothing/gloves/yellow(src) - new /obj/item/weapon/screwdriver(src) - new /obj/item/weapon/wrench(src) - new /obj/item/weapon/weldingtool(src) - new /obj/item/weapon/crowbar(src) - new /obj/item/weapon/wirecutters(src) - new /obj/item/device/multitool(src) - -/obj/item/weapon/storage/toolbox/syndicate/powertools/New() // Available in the uplink and is the 'real' syndie toolbox. - // ..() isn't called or else this box would contain the basic tools, power tools, and duplicate gloves. - new /obj/item/clothing/gloves/yellow(src) - new /obj/item/weapon/screwdriver/power(src) - new /obj/item/weapon/weldingtool/experimental(src) - new /obj/item/weapon/crowbar/power(src) - new /obj/item/device/multitool(src) - new /obj/item/stack/cable_coil/random(src,30) - new /obj/item/device/analyzer(src) + ..() //all storage items need this to work properly! + if(powertools) + new /obj/item/clothing/gloves/yellow(src) + new /obj/item/weapon/screwdriver/power(src) + new /obj/item/weapon/weldingtool/experimental(src) + new /obj/item/weapon/crowbar/power(src) + new /obj/item/device/multitool(src) + new /obj/item/stack/cable_coil/random(src,30) + new /obj/item/device/analyzer(src) + else + new /obj/item/clothing/gloves/yellow(src) + new /obj/item/weapon/screwdriver(src) + new /obj/item/weapon/wrench(src) + new /obj/item/weapon/weldingtool(src) + new /obj/item/weapon/crowbar(src) + new /obj/item/weapon/wirecutters(src) + new /obj/item/device/multitool(src) /obj/item/weapon/storage/toolbox/lunchbox max_storage_space = ITEMSIZE_COST_SMALL * 4 //slightly smaller than a toolbox diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index f468d1d77e..268a8d5ad7 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -20,7 +20,8 @@ var/hitcost = 240 /obj/item/weapon/melee/baton/suicide_act(mob/user) - user.visible_message("\The [user] is putting the live [name] in \his mouth! It looks like \he's trying to commit suicide.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + user.visible_message("\The [user] is putting the live [name] in [TU.his] mouth! It looks like [TU.he] [TU.is] trying to commit suicide.") return (FIRELOSS) /obj/item/weapon/melee/baton/New() diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index 96f5e30f69..50468951a4 100644 --- a/code/game/objects/items/weapons/surgery_tools.dm +++ b/code/game/objects/items/weapons/surgery_tools.dm @@ -69,8 +69,9 @@ attack_verb = list("drilled") suicide_act(mob/user) - viewers(user) << pick("\The [user] is pressing \the [src] to \his temple and activating it! It looks like \he's trying to commit suicide.", - "\The [user] is pressing \the [src] to \his chest and activating it! It looks like \he's trying to commit suicide.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + viewers(user) << pick("\The [user] is pressing \the [src] to [TU.his] temple and activating it! It looks like [TU.hes] trying to commit suicide.", + "\The [user] is pressing \the [src] to [TU.his] chest and activating it! It looks like [TU.hes] trying to commit suicide.") return (BRUTELOSS) /* @@ -91,11 +92,12 @@ origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1) matter = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 5000) attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - + suicide_act(mob/user) - viewers(user) << pick("\The [user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.", \ - "\The [user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.", \ - "\The [user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + viewers(user) << pick("\The [user] is slitting [TU.his] wrists with the [src.name]! It looks like [TU.hes] trying to commit suicide.", \ + "\The [user] is slitting [TU.his] throat with the [src.name]! It looks like [TU.hes] trying to commit suicide.", \ + "\The [user] is slitting [TU.his] stomach open with the [src.name]! It looks like [TU.hes] trying to commit seppuku.") return (BRUTELOSS) /* diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 74a3f6f418..ae6838d084 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -106,8 +106,9 @@ var/random_color = TRUE suicide_act(mob/user) - viewers(user) << pick("\The [user] is stabbing the [src.name] into \his temple! It looks like \he's trying to commit suicide.", \ - "\The [user] is stabbing the [src.name] into \his heart! It looks like \he's trying to commit suicide.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + viewers(user) << pick("\The [user] is stabbing the [src.name] into [TU.his] temple! It looks like [TU.hes] trying to commit suicide.", \ + "\The [user] is stabbing the [src.name] into [TU.his] heart! It looks like [TU.hes] trying to commit suicide.") return(BRUTELOSS) /obj/item/weapon/screwdriver/New() diff --git a/code/game/objects/items/weapons/traps.dm b/code/game/objects/items/weapons/traps.dm index 317dba9ba9..27927b8180 100644 --- a/code/game/objects/items/weapons/traps.dm +++ b/code/game/objects/items/weapons/traps.dm @@ -13,7 +13,8 @@ var/deployed = 0 /obj/item/weapon/beartrap/suicide_act(mob/user) - viewers(user) << "[user] is putting the [src.name] on \his head! It looks like \he's trying to commit suicide." + var/datum/gender/T = gender_datums[user.get_visible_gender()] + viewers(user) << "[user] is putting the [src.name] on [T.his] head! It looks like [T.hes] trying to commit suicide." return (BRUTELOSS) /obj/item/weapon/beartrap/proc/can_use(mob/user) diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 50434de460..8938e611c0 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -11,7 +11,8 @@ w_class = ITEMSIZE_SMALL suicide_act(mob/user) - viewers(user) << "[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide." + var/datum/gender/T = gender_datums[user.get_visible_gender()] + viewers(user) << "[user] is impaling [T.himself] with the [src.name]! It looks like [T.he] [T.is] trying to commit suicide." return (BRUTELOSS|FIRELOSS) /obj/item/weapon/nullrod/attack(mob/M as mob, mob/living/user as mob) //Paste from old-code to decult with a null rod. diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index 42b7884169..53323bb4b9 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -19,7 +19,8 @@ to_chat(user, "The spike already has something on it, finish collecting its meat first!") else if(spike(G.affecting)) - visible_message("[user] has forced [G.affecting] onto the spike, killing \him instantly!") + var/datum/gender/T = gender_datums[G.affecting.get_visible_gender()] + visible_message("[user] has forced [G.affecting] onto the spike, killing [T.him] instantly!") var/mob/M = G.affecting M.forceMove(src) qdel(G) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 3bdbca1b54..9882ca4507 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -411,9 +411,10 @@ R.cell.charge -= 20 else B.deductcharge(B.hitcost) + var/datum/gender/TU = gender_datums[user.get_visible_gender()] user.visible_message( \ - "[user] was stunned by \his wet [O]!", \ - "[user] was stunned by \his wet [O]!") + "[user] was stunned by [TU.his] wet [O]!", \ + "[user] was stunned by [TU.his] wet [O]!") return 1 else if(istype(O, /obj/item/weapon/mop)) O.reagents.add_reagent("water", 5) diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm index 8f6beee8d6..4a40ea97cb 100644 --- a/code/game/verbs/suicide.dm +++ b/code/game/verbs/suicide.dm @@ -73,14 +73,16 @@ return log_and_message_admins("[key_name(src)] commited suicide") - + + var/datum/gender/T = gender_datums[get_visible_gender()] + var/suicidemsg - suicidemsg = pick("[src] is attempting to bite \his tongue off! It looks like \he's trying to commit suicide.", \ - "[src] is jamming \his thumbs into \his eye sockets! It looks like \he's trying to commit suicide.", \ - "[src] is twisting \his own neck! It looks like \he's trying to commit suicide.", \ - "[src] is holding \his breath! It looks like \he's trying to commit suicide.") + suicidemsg = pick("[src] is attempting to bite [T.his] tongue off! It looks like [T.he] [T.is] trying to commit suicide.", \ + "[src] is jamming [T.his] thumbs into [T.his] eye sockets! It looks like [T.he] [T.is] trying to commit suicide.", \ + "[src] is twisting [T.his] own neck! It looks like [T.he] [T.is] trying to commit suicide.", \ + "[src] is holding [T.his] breath! It looks like [T.he] [T.is] trying to commit suicide.") if(isSynthetic()) - suicidemsg = "[src] is attempting to switch \his power off! It looks like \he's trying to commit suicide." + suicidemsg = "[src] is attempting to switch [T.his] power off! It looks like [T.he] [T.is] trying to commit suicide." visible_message(suicidemsg) adjustOxyLoss(max(175 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0)) @@ -125,7 +127,7 @@ if(confirm == "Yes") suiciding = 1 - viewers(src) << "[src] is powering down. It looks like \he's trying to commit suicide." + viewers(src) << "[src] is powering down. It looks like they're trying to commit suicide." //put em at -175 adjustOxyLoss(max(getMaxHealth() * 2 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0)) updatehealth() @@ -145,7 +147,7 @@ if(confirm == "Yes") suiciding = 1 - viewers(src) << "[src] is powering down. It looks like \he's trying to commit suicide." + viewers(src) << "[src] is powering down. It looks like they're trying to commit suicide." //put em at -175 adjustOxyLoss(max(getMaxHealth() * 2 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0)) updatehealth() diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 0c76648e77..4293fe224b 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -897,13 +897,13 @@ var/list/admin_verbs_event_manager = list( if(!H.client) usr << "Only mobs with clients can alter their own appearance." return - + var/datum/gender/T = gender_datums[H.get_visible_gender()] switch(alert("Do you wish for [H] to be allowed to select non-whitelisted races?","Alter Mob Appearance","Yes","No","Cancel")) if("Yes") - log_and_message_admins("has allowed [H] to change \his appearance, without whitelisting of races.") + log_and_message_admins("has allowed [H] to change [T.his] appearance, without whitelisting of races.") H.change_appearance(APPEARANCE_ALL, H.loc, check_species_whitelist = 0) if("No") - log_and_message_admins("has allowed [H] to change \his appearance, with whitelisting of races.") + log_and_message_admins("has allowed [H] to change [T.his] appearance, with whitelisting of races.") H.change_appearance(APPEARANCE_ALL, H.loc, check_species_whitelist = 1) feedback_add_details("admin_verb","CMAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/client/preference_setup/loadout/loadout_utility.dm b/code/modules/client/preference_setup/loadout/loadout_utility.dm index 02c711e76e..a8d694a9d6 100644 --- a/code/modules/client/preference_setup/loadout/loadout_utility.dm +++ b/code/modules/client/preference_setup/loadout/loadout_utility.dm @@ -8,6 +8,11 @@ display_name = "clipboard" path = /obj/item/weapon/clipboard +/datum/gear/utility/tts_device + display_name = "text to speech device" + path = /obj/item/device/text_to_speech + cost = 3 //Not extremely expensive, but it's useful for mute chracters. + /datum/gear/utility/communicator display_name = "communicator selection" path = /obj/item/device/communicator diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index d31a9e390a..538bc56299 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -196,7 +196,7 @@ gender = PLURAL //Carn: for grammarically correct text-parsing w_class = ITEMSIZE_SMALL icon = 'icons/obj/clothing/gloves.dmi' - siemens_coefficient = 0.75 + siemens_coefficient = 0.9 var/wired = 0 var/obj/item/weapon/cell/cell = 0 var/fingerprint_chance = 0 //How likely the glove is to let fingerprints through diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index d7e0362272..ef9d0e713d 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -6,21 +6,22 @@ permeability_coefficient = 0.05 /obj/item/clothing/gloves/fyellow //Cheap Chinese Crap - desc = "These gloves are cheap copies of the coveted gloves, no way this can end badly." + desc = "These gloves are cheap copies of proper insulated gloves. No way this can end badly." name = "budget insulated gloves" icon_state = "yellow" - siemens_coefficient = 1 //Set to a default of 1, gets overridden in New() + siemens_coefficient = 1 //Set to a default of 1, gets overridden in initialize() permeability_coefficient = 0.05 - New() - //average of 0.5, somewhat better than regular gloves' 0.75 - siemens_coefficient = pick(0,0.1,0.3,0.5,0.5,0.75,1.35) +/obj/item/clothing/gloves/fyellow/initialize() + . = ..() + //Picks a value between 0 and 1, in 5% increments + var/shock_pick = rand(0,20) + siemens_coefficient = shock_pick * 0.05 /obj/item/clothing/gloves/black desc = "These work gloves are thick and fire-resistant." name = "black gloves" icon_state = "black" - siemens_coefficient = 0.50 permeability_coefficient = 0.05 cold_protection = HANDS diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index ea194e1a51..27db4424d7 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -16,7 +16,6 @@ name = "forensic gloves" icon_state = "forensic" item_state = "black" - siemens_coefficient = 0.50 permeability_coefficient = 0.05 cold_protection = HANDS @@ -81,14 +80,13 @@ icon_state = "leather" item_state_slots = list(slot_r_hand_str = "lightbrown", slot_l_hand_str = "lightbrown") permeability_coefficient = 0.05 - siemens_coefficient = 0.50 //thick work gloves + siemens_coefficient = 0.75 //thick work gloves /obj/item/clothing/gloves/duty desc = "These brown duty gloves are made from a durable synthetic." name = "work gloves" icon_state = "work" item_state = "wgloves" - siemens_coefficient = 0.50 armor = list(melee = 10, bullet = 10, laser = 10, energy = 5, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/gloves/tactical @@ -97,7 +95,7 @@ icon_state = "work" item_state = "wgloves" force = 5 - siemens_coefficient = 0.50 + siemens_coefficient = 0.75 permeability_coefficient = 0.05 armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 0, rad = 0) diff --git a/code/modules/clothing/spacesuits/rig/modules/computer.dm b/code/modules/clothing/spacesuits/rig/modules/computer.dm index c60bdb1e70..9308e44cb0 100644 --- a/code/modules/clothing/spacesuits/rig/modules/computer.dm +++ b/code/modules/clothing/spacesuits/rig/modules/computer.dm @@ -46,9 +46,6 @@ var/obj/item/ai_card // Reference to the MMI, posibrain, intellicard or pAI card previously holding the AI. var/obj/item/ai_verbs/verb_holder -/mob - var/get_rig_stats = 0 - /obj/item/rig_module/ai_container/process() if(integrated_ai) var/obj/item/weapon/rig/rig = get_rig() diff --git a/code/modules/clothing/spacesuits/void/station.dm b/code/modules/clothing/spacesuits/void/station.dm index 3c5dc32e68..57df9d7c0a 100644 --- a/code/modules/clothing/spacesuits/void/station.dm +++ b/code/modules/clothing/spacesuits/void/station.dm @@ -153,10 +153,10 @@ //Medical Streamlined Voidsuit /obj/item/clothing/head/helmet/space/void/medical/alt name = "streamlined medical voidsuit helmet" - desc = "A trendy, lightly radiation-shielded voidsuit helmet trimmed in a fetching green." + desc = "A trendy, lightly radiation-shielded voidsuit helmet trimmed in a sleek blue." icon_state = "rig0-medicalalt" armor = list(melee = 30, bullet = 5, laser = 20,energy = 5, bomb = 25, bio = 100, rad = 80) - light_overlay = "helmet_light_dual_green" + light_overlay = "helmet_light_dual_blue" /obj/item/clothing/suit/space/void/medical/alt icon_state = "rig-medicalalt" diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 97fc8721a8..94f49a2b1a 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -269,7 +269,7 @@ //Medical /obj/item/clothing/suit/armor/vest/ert/medical name = "emergency response team medical armor" - desc = "A set of armor worn by medical members of the Emergency Response Team. Has red and white highlights." + desc = "A set of armor worn by medical members of the Emergency Response Team. Has blue and white highlights." icon_state = "ertarmor_med" //New Vests diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 9b88496119..5ecef18d7d 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -782,7 +782,7 @@ obj/item/clothing/suit/storage/toggle/peacoat hooded = TRUE hoodtype = /obj/item/clothing/head/hood/explorer siemens_coefficient = 0.9 - armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50) // Inferior to sec vests in bullet/laser but better for environmental protection. + armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 35, bio = 75, rad = 35) // Inferior to sec vests in bullet/laser but better for environmental protection. allowed = list( /obj/item/device/flashlight, /obj/item/weapon/gun, @@ -807,7 +807,7 @@ obj/item/clothing/suit/storage/toggle/peacoat flags_inv = HIDEEARS | BLOCKHAIR min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE siemens_coefficient = 0.9 - armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50) + armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 35, bio = 75, rad = 35) /obj/item/clothing/suit/varsity name = "black varsity jacket" diff --git a/code/modules/events/rogue_drones.dm b/code/modules/events/rogue_drones.dm index b597837d17..768628f8fb 100644 --- a/code/modules/events/rogue_drones.dm +++ b/code/modules/events/rogue_drones.dm @@ -26,13 +26,13 @@ var/rng = rand(1,5) switch(rng) if(1) - msg = "A combat drone wing operating near various asteroids in the Kara subsystem has failed to return from a anti-piracy sweep. If any are sighted, \ + msg = "A combat drone wing operating in close orbit above Sif has failed to return from a anti-piracy sweep. If any are sighted, \ approach with caution." if(2) - msg = "Contact has been lost with a combat drone wing operating out in the asteroid field near Kara. If any are sighted in the area, approach with \ + msg = "Contact has been lost with a combat drone wing in Sif orbit. If any are sighted in the area, approach with \ caution." if(3) - msg = "Unidentified hackers have targeted a combat drone wing deployed in the Kara subsystem. If any are sighted in the area, approach with caution." + msg = "Unidentified hackers have targeted a combat drone wing deployed around Sif. If any are sighted in the area, approach with caution." if(4) msg = "A passing derelict ship's drone defense systems have just activated. If any are sighted in the area, use caution." if(5) diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm index 31e2f95727..cbeff5fb34 100644 --- a/code/modules/games/cards.dm +++ b/code/modules/games/cards.dm @@ -173,7 +173,8 @@ H.concealed = 1 H.update_icon() if(user==target) - user.visible_message("\The [user] deals [dcard] card(s) to \himself.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + user.visible_message("\The [user] deals [dcard] card(s) to [TU.himself].") else user.visible_message("\The [user] deals [dcard] card(s) to \the [target].") H.throw_at(get_step(target,target.dir),10,1,H) diff --git a/code/modules/genetics/side_effects.dm b/code/modules/genetics/side_effects.dm index f3a9efb6d2..fbbce61398 100644 --- a/code/modules/genetics/side_effects.dm +++ b/code/modules/genetics/side_effects.dm @@ -68,7 +68,8 @@ duration = 10*30 start(mob/living/carbon/human/H) - H.emote("me", 1, "has drool running down from [H.gender == MALE ? "his" : H.gender == FEMALE ? "her" : "their"] mouth.") + var/datum/gender/T = gender_datums[H.get_visible_gender()] + H.emote("me", 1, "has drool running down from [T.his] mouth.") finish(mob/living/carbon/human/H) if(!H.reagents.has_reagent("anti_toxin")) diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index c921ac5164..442e8e42fe 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -149,8 +149,9 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f dat += "7. Access the Forbidden Lore Vault
" if(src.arcanecheckout) new /obj/item/weapon/book/tome(src.loc) + var/datum/gender/T = gender_datums[user.get_visible_gender()] user << "Your sanity barely endures the seconds spent in the vault's browsing window. The only thing to remind you of this when you stop browsing is a dusty old tome sitting on the desk. You don't really remember printing it." - user.visible_message("\The [user] stares at the blank screen for a few moments, \his expression frozen in fear. When \he finally awakens from it, \he looks a lot older.", 2) + user.visible_message("\The [user] stares at the blank screen for a few moments, [T.his] expression frozen in fear. When [T.he] finally awakens from it, [T.he] looks a lot older.", 2) src.arcanecheckout = 0 if(1) // Inventory diff --git a/code/modules/lore_codex/news_data/main.dm b/code/modules/lore_codex/news_data/main.dm index 52ff382199..fec4ae7c3e 100644 --- a/code/modules/lore_codex/news_data/main.dm +++ b/code/modules/lore_codex/news_data/main.dm @@ -5,6 +5,7 @@ articles. You are encouraged to check back frequently." children = list( /datum/lore/codex/page/article1, + /datum/lore/codex/page/article2, /datum/lore/codex/page/about_news, ) @@ -31,4 +32,17 @@

\ The bill passed fairly quietly this afternoon, owing to the closed nature of the Bicamarial. A post-facto Occulum poll of voting-age\ VGA citizens suggest that fully 80% of them did not even know what a Promethean was prior to the most recent general election. A\ - follow-up poll indicates that an appreciable number of Sivians do not support the framework's current implementation." \ No newline at end of file + follow-up poll indicates that an appreciable number of Sivians do not support the framework's current implementation." + +/datum/lore/codex/page/article2 + name = "2/3/62-- Corporate Coup on Aetolus" + data = "A recent incident aboard the NRS Prometheus issued in a major change in the leadership of the Promethean homeworld. During \ + a late-night meeting of the Nanotrasen Board of Trustees, several high-ranking personnel, including Head of Research Naomi Harper,\ + announced their intention to assume direct control of Nanotrasen facilities in the system. It is known that several dissenting \ + members of the board were shot to death by Promethean test subjects. Our information comes from a survivor of the coup, who for \ + reasons of security has chosen to remain annonymous. All outbound shipments affiliated with Nanotrasen have ceased.\ +

\ + While neither Grayson Manufacturies nor Nanotrasen have made an official statement, Nanotrasen CEO Albary Moravec has called the \ + incident \"shocking, if the allegations are to be believed\" and has assured shareholders that Nanotrasen will respond to the \ + incident with as much force as it warrents.

Requests for a statement directed to the Board of Trustees or Dr. Harper were \ + not responded to. Free Traders are recommended to stay clear of the region until the situation resolves itself." diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm index 0f76f6172e..d212851071 100644 --- a/code/modules/materials/material_sheets.dm +++ b/code/modules/materials/material_sheets.dm @@ -94,6 +94,13 @@ apply_colour = 1 no_variants = FALSE +/obj/item/stack/material/lead + name = "lead" + icon_state = "sheet-adamantine" + default_type = "lead" + apply_colour = 1 + no_variants = TRUE + /obj/item/stack/material/sandstone name = "sandstone brick" icon_state = "sheet-sandstone" diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm index af5e1b7475..2fa2b1dbbe 100644 --- a/code/modules/materials/materials.dm +++ b/code/modules/materials/materials.dm @@ -99,6 +99,7 @@ var/list/name_to_material var/conductivity = null // How conductive the material is. Iron acts as the baseline, at 10. var/list/composite_material // If set, object matter var will be a list containing these values. var/luminescence + var/radiation_resistance = 20 // Radiation resistance, used in calculating how much radiation a material absorbs. Equivlent to weight, but does not affect weaponry. // Placeholder vars for the time being, todo properly integrate windows/light tiles/rods. var/created_window @@ -236,6 +237,7 @@ var/list/name_to_material weight = 22 stack_origin_tech = list(TECH_MATERIAL = 5) door_icon_base = "stone" + radiation_resistance = 80 //dense, so it's okay-ish as rad shielding. /material/diamond name = "diamond" @@ -261,6 +263,7 @@ var/list/name_to_material stack_origin_tech = list(TECH_MATERIAL = 4) sheet_singular_name = "ingot" sheet_plural_name = "ingots" + radiation_resistance = 120 //gold is dense. /material/gold/bronze //placeholder for ashtrays name = "bronze" @@ -276,7 +279,7 @@ var/list/name_to_material stack_origin_tech = list(TECH_MATERIAL = 3) sheet_singular_name = "ingot" sheet_plural_name = "ingots" - + radiation_resistance = 22 //R-UST port /material/supermatter name = "supermatter" @@ -337,6 +340,7 @@ var/list/name_to_material door_icon_base = "stone" sheet_singular_name = "brick" sheet_plural_name = "bricks" + radiation_resistance = 22 /material/stone/marble name = "marble" @@ -345,6 +349,7 @@ var/list/name_to_material hardness = 100 integrity = 201 //hack to stop kitchen benches being flippable, todo: refactor into weight system stack_type = /obj/item/stack/material/marble + radiation_resistance = 26 /material/steel name = DEFAULT_WALL_MATERIAL @@ -391,6 +396,7 @@ var/list/name_to_material conductivity = 13 // For the purposes of balance. stack_origin_tech = list(TECH_MATERIAL = 2) composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT, "platinum" = SHEET_MATERIAL_AMOUNT) //todo + radiation_resistance = 60 //Plasteel is presumably dense and is the dominant material used in the engine. Still not great. // Very rare alloy that is reflective, should be used sparingly. /material/durasteel @@ -408,6 +414,7 @@ var/list/name_to_material reflectivity = 0.7 // Not a perfect mirror, but close. stack_origin_tech = list(TECH_MATERIAL = 8) composite_material = list("plasteel" = SHEET_MATERIAL_AMOUNT, "diamond" = SHEET_MATERIAL_AMOUNT) //shrug + radiation_resistance = 120 //it reflects XRAY LASERS. /material/plasteel/titanium name = "titanium" @@ -436,6 +443,7 @@ var/list/name_to_material window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 2) created_window = /obj/structure/window/basic rod_product = /obj/item/stack/material/glass/reinforced + radiation_resistance = 15 /material/glass/build_windows(var/mob/living/user, var/obj/item/stack/used_stack) @@ -527,6 +535,7 @@ var/list/name_to_material created_window = /obj/structure/window/reinforced wire_product = null rod_product = null + radiation_resistance = 30 /material/glass/phoron name = "borosilicate glass" @@ -554,6 +563,7 @@ var/list/name_to_material stack_origin_tech = list(TECH_MATERIAL = 2) composite_material = list() //todo rod_product = null + radiation_resistance = 30 /material/plastic name = "plastic" @@ -568,6 +578,7 @@ var/list/name_to_material conductivity = 2 // For the sake of material armor diversity, we're gonna pretend this plastic is a good insulator. melting_point = T0C+371 //assuming heat resistant plastic stack_origin_tech = list(TECH_MATERIAL = 3) + radiation_resistance = 12 /material/plastic/holographic name = "holoplastic" @@ -618,6 +629,7 @@ var/list/name_to_material stack_origin_tech = list(TECH_MATERIAL = 2) sheet_singular_name = "ingot" sheet_plural_name = "ingots" + radiation_resistance = 27 /material/iron name = "iron" @@ -627,6 +639,17 @@ var/list/name_to_material conductivity = 10 sheet_singular_name = "ingot" sheet_plural_name = "ingots" + radiation_resistance = 22 + +/material/lead + name = "lead" + stack_type = /obj/item/stack/material/lead + icon_colour = "#273956" + weight = 35 + conductivity = 10 + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + radiation_resistance = 350 //actual radiation shielding, yay... // Adminspawn only, do not let anyone get this. /material/alienalloy @@ -640,6 +663,7 @@ var/list/name_to_material hardness = 500 weight = 500 protectiveness = 80 // 80% + radiation_resistance = 500 // Likewise. /material/alienalloy/elevatorium @@ -697,6 +721,7 @@ var/list/name_to_material destruction_desc = "splinters" sheet_singular_name = "plank" sheet_plural_name = "planks" + radiation_resistance = 18 /material/wood/log name = MAT_LOG @@ -739,7 +764,7 @@ var/list/name_to_material stack_origin_tech = list(TECH_MATERIAL = 1) door_icon_base = "wood" destruction_desc = "crumples" - + radiation_resistance = 1 /material/snow name = MAT_SNOW stack_type = /obj/item/stack/material/snow @@ -756,7 +781,7 @@ var/list/name_to_material destruction_desc = "crumples" sheet_singular_name = "pile" sheet_plural_name = "pile" //Just a bigger pile - + radiation_resistance = 1 /material/cloth //todo name = "cloth" stack_origin_tech = list(TECH_MATERIAL = 2) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index d891af76ce..745025e3e3 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -630,8 +630,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp ) toggle_visibility(TRUE) else + var/datum/gender/T = gender_datums[user.get_visible_gender()] user.visible_message ( \ - "\The [user] just tried to smash \his book into that ghost! It's not very effective.", \ + "\The [user] just tried to smash [T.his] book into that ghost! It's not very effective.", \ "You get the feeling that the ghost can't become any more visible." \ ) diff --git a/code/modules/mob/gender.dm b/code/modules/mob/gender.dm index 393e0fb6c2..0e9bf244b5 100644 --- a/code/modules/mob/gender.dm +++ b/code/modules/mob/gender.dm @@ -18,6 +18,9 @@ var/has = "have" var/is = "are" var/does = "do" + var/himself = "themselves" + var/s = "" + var/hes = "they're" /datum/gender/male key = "male" @@ -30,6 +33,9 @@ has = "has" is = "is" does = "does" + himself = "himself" + s = "s" + hes = "he's" /datum/gender/female key = "female" @@ -42,6 +48,9 @@ has = "has" is = "is" does = "does" + himself = "herself" + s = "s" + hes = "she's" /datum/gender/neuter key = "neuter" @@ -54,3 +63,6 @@ has = "has" is = "is" does = "does" + himself = "itself" + s = "s" + hes = "it's" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 797a106ae7..54551db698 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -168,8 +168,9 @@ if (src.health >= config.health_threshold_crit) if(src == M && istype(src, /mob/living/carbon/human)) var/mob/living/carbon/human/H = src + var/datum/gender/T = gender_datums[H.get_visible_gender()] src.visible_message( \ - text("[src] examines [].",src.gender==MALE?"himself":"herself"), \ + "[src] examines [T.himself].", \ "You check yourself for injuries." \ ) @@ -243,33 +244,30 @@ src.ExtinguishMob() src.fire_stacks = 0 else - var/t_him = "it" - if (src.gender == MALE) - t_him = "him" - else if (src.gender == FEMALE) - t_him = "her" if (istype(src,/mob/living/carbon/human) && src:w_uniform) var/mob/living/carbon/human/H = src H.w_uniform.add_fingerprint(M) var/show_ssd var/mob/living/carbon/human/H = src + var/datum/gender/T = gender_datums[H.get_visible_gender()] // make sure to cast to human before using get_gender() or get_visible_gender()! if(istype(H)) show_ssd = H.species.show_ssd if(show_ssd && !client && !teleop) - M.visible_message("[M] shakes [src] trying to wake [t_him] up!", \ - "You shake [src], but they do not respond... Maybe they have S.S.D?") + M.visible_message("[M] shakes [src] trying to wake [T.him] up!", \ + "You shake [src], but [T.he] [T.does] not respond... Maybe [T.he] [T.has] S.S.D?") else if(lying || src.sleeping) src.sleeping = max(0,src.sleeping-5) if(src.sleeping == 0) src.resting = 0 if(H) H.in_stasis = 0 //VOREStation Add - Just In Case - M.visible_message("[M] shakes [src] trying to wake [t_him] up!", \ - "You shake [src] trying to wake [t_him] up!") + M.visible_message("[M] shakes [src] trying to wake [T.him] up!", \ + "You shake [src] trying to wake [T.him] up!") else var/mob/living/carbon/human/hugger = M + var/datum/gender/TM = gender_datums[M.get_visible_gender()] if(M.resting == 1) //Are they resting on the ground? - M.visible_message("[M] grabs onto [src] and pulls \himself up", \ - "You grip onto [src] and pull yourself up off the ground!") //AHHH gender checks are hard, but this should work + M.visible_message("[M] grabs onto [src] and pulls [TM.himself] up", \ + "You grip onto [src] and pull yourself up off the ground!") if(M.fire_stacks >= (src.fire_stacks + 3)) //Fire checks. src.adjust_fire_stacks(1) M.adjust_fire_stacks(-1) @@ -280,8 +278,8 @@ else if(istype(hugger)) hugger.species.hug(hugger,src) else - M.visible_message("[M] hugs [src] to make [t_him] feel better!", \ - "You hug [src] to make [t_him] feel better!") + M.visible_message("[M] hugs [src] to make [T.him] feel better!", \ + "You hug [src] to make [T.him] feel better!") if(M.fire_stacks >= (src.fire_stacks + 3)) src.adjust_fire_stacks(1) M.adjust_fire_stacks(-1) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index d18b7c538e..2e6d022b4f 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -1,5 +1,7 @@ /mob/living/carbon/human/emote(var/act,var/m_type=1,var/message = null) var/param = null + + var/datum/gender/T = gender_datums[get_visible_gender()] if (findtext(act, "-", 1, null)) var/t1 = findtext(act, "-", 1, null) @@ -58,13 +60,13 @@ use_sound = 'sound/machines/synth_no.ogg' else if(act == "rcough") display_msg = "emits a robotic cough" - if(gender == FEMALE) + if(get_gender() == FEMALE) use_sound = pick('sound/effects/mob_effects/f_machine_cougha.ogg','sound/effects/mob_effects/f_machine_coughb.ogg') else use_sound = pick('sound/effects/mob_effects/m_machine_cougha.ogg','sound/effects/mob_effects/m_machine_coughb.ogg', 'sound/effects/mob_effects/m_machine_coughc.ogg') else if(act == "rsneeze") display_msg = "emits a robotic sneeze" - if(gender == FEMALE) + if(get_gender() == FEMALE) use_sound = 'sound/effects/mob_effects/machine_sneeze.ogg' else use_sound = 'sound/effects/mob_effects/f_machine_sneeze.ogg' @@ -162,7 +164,7 @@ if ("choke") if(miming) - message = "clutches [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] throat desperately!" + message = "clutches [T.his] throat desperately!" m_type = 1 else if (!muzzled) @@ -182,14 +184,14 @@ if ("flap") if (!src.restrained()) - message = "flaps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] wings." + message = "flaps [T.his] wings." m_type = 2 if(miming) m_type = 1 if ("aflap") if (!src.restrained()) - message = "flaps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] wings ANGRILY!" + message = "flaps [T.his] wings ANGRILY!" m_type = 2 if(miming) m_type = 1 @@ -243,7 +245,7 @@ robotic = 1 if(!robotic) message = "coughs!" - if(gender == FEMALE) + if(get_gender() == FEMALE) if(species.female_cough_sounds) playsound(src, pick(species.female_cough_sounds), 120) else @@ -252,7 +254,7 @@ else message = "emits a robotic cough" var/use_sound - if(gender == FEMALE) + if(get_gender() == FEMALE) use_sound = pick('sound/effects/mob_effects/f_machine_cougha.ogg','sound/effects/mob_effects/f_machine_coughb.ogg') else use_sound = pick('sound/effects/mob_effects/m_machine_cougha.ogg','sound/effects/mob_effects/m_machine_coughb.ogg', 'sound/effects/mob_effects/m_machine_coughc.ogg') @@ -365,7 +367,7 @@ message = "cries." m_type = 2 else - message = "makes a weak noise. [get_visible_gender() == MALE ? "He" : get_visible_gender() == FEMALE ? "She" : "They"] [get_visible_gender() == NEUTER ? "frown" : "frowns"]." + message = "makes a weak noise. [T.he] [get_visible_gender() == NEUTER ? "frown" : "frowns"]." // no good, non-unwieldy alternative to this ternary at the moment m_type = 2 if ("sigh") @@ -468,7 +470,7 @@ m_type = 1 if("shake") - message = "shakes [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] head." + message = "shakes [T.his] head." m_type = 1 if ("shrug") @@ -517,7 +519,7 @@ robotic = 1 if(!robotic) message = "sneezes." - if(gender == FEMALE) + if(get_gender() == FEMALE) playsound(src, species.female_sneeze_sound, 70) else playsound(src, species.male_sneeze_sound, 70) @@ -525,7 +527,7 @@ else message = "emits a robotic sneeze" var/use_sound - if(gender == FEMALE) + if(get_gender() == FEMALE) use_sound = 'sound/effects/mob_effects/machine_sneeze.ogg' else use_sound = 'sound/effects/mob_effects/f_machine_sneeze.ogg' @@ -597,7 +599,7 @@ if (M) message = "hugs [M]." else - message = "hugs [get_visible_gender() == MALE ? "himself" : get_visible_gender() == FEMALE ? "herself" : "themselves"]." + message = "hugs [T.himself]." if ("handshake") m_type = 1 @@ -615,7 +617,7 @@ if (M.canmove && !M.r_hand && !M.restrained()) message = "shakes hands with [M]." else - message = "holds out [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] hand to [M]." + message = "holds out [T.his] hand to [M]." if("dap") m_type = 1 @@ -629,7 +631,7 @@ if (M) message = "gives daps to [M]." else - message = "sadly can't find anybody to give daps to, and daps [get_visible_gender() == MALE ? "himself" : get_visible_gender() == FEMALE ? "herself" : "themselves"]. Shameful." + message = "sadly can't find anybody to give daps to, and daps [T.himself]. Shameful." if("slap", "slaps") m_type = 1 @@ -644,7 +646,7 @@ message = "slaps [M] across the face. Ouch!" playsound(loc, 'sound/effects/snap.ogg', 50, 1) else - message = "slaps [get_visible_gender() == MALE ? "himself" : get_visible_gender() == FEMALE ? "herself" : "themselves"]!" + message = "slaps [T.himself]!" playsound(loc, 'sound/effects/snap.ogg', 50, 1) if("scream", "screams") @@ -656,7 +658,7 @@ message = "[species.scream_verb]!" m_type = 2 /* Removed, pending the location of some actually good, properly licensed sounds. - if(gender == FEMALE) + if(get_gender() == FEMALE) playsound(loc, "[species.female_scream_sound]", 80, 1) else playsound(loc, "[species.male_scream_sound]", 80, 1) //default to male screams if no gender is present. @@ -681,7 +683,7 @@ to_chat(usr, "You need at least one hand in good working order to snap your fingers.") return - message = "snaps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] fingers." + message = "snaps [T.his] fingers." playsound(loc, 'sound/effects/fingersnap.ogg', 50, 1, -3) if("swish") @@ -735,8 +737,10 @@ set name = "Set Pose" set desc = "Sets a description which will be shown when someone examines you." set category = "IC" + + var/datum/gender/T = gender_datums[get_visible_gender()] - pose = sanitize(input(usr, "This is [src]. [get_visible_gender() == MALE ? "He" : get_visible_gender() == FEMALE ? "She" : "They"]...", "Pose", null) as text) + pose = sanitize(input(usr, "This is [src]. [T.he]...", "Pose", null) as text) /mob/living/carbon/human/verb/set_flavor() set name = "Set Flavour Text" diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index dca45248dd..28fbf81b25 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -85,7 +85,7 @@ var/list/msg = list("*---------*\nThis is ") - var/datum/gender/T = gender_datums[get_gender()] + var/datum/gender/T = gender_datums[get_visible_gender()] if(skipjumpsuit && skipface) //big suits/masks/helmets make it hard to tell their gender T = gender_datums[PLURAL] diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index dfade3414b..2fd8f4170f 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -773,7 +773,8 @@ /mob/living/carbon/human/proc/play_xylophone() if(!src.xylophone) - visible_message("\The [src] begins playing \his ribcage like a xylophone. It's quite spooky.","You begin to play a spooky refrain on your ribcage.","You hear a spooky xylophone melody.") + var/datum/gender/T = gender_datums[get_visible_gender()] + visible_message("\The [src] begins playing [T.his] ribcage like a xylophone. It's quite spooky.","You begin to play a spooky refrain on your ribcage.","You hear a spooky xylophone melody.") var/song = pick('sound/effects/xylophone1.ogg','sound/effects/xylophone2.ogg','sound/effects/xylophone3.ogg') playsound(loc, song, 50, 1, -1) xylophone = 1 @@ -863,8 +864,8 @@ gender = NEUTER regenerate_icons() check_dna() - - visible_message("\The [src] morphs and changes [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] appearance!", "You change your appearance!", "Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!") + var/datum/gender/T = gender_datums[get_visible_gender()] + visible_message("\The [src] morphs and changes [T.his] appearance!", "You change your appearance!", "Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!") /mob/living/carbon/human/proc/remotesay() set name = "Project mind" @@ -932,10 +933,13 @@ remoteview_target = null reset_view(0) -/mob/living/carbon/human/proc/get_visible_gender() +/mob/living/carbon/human/get_visible_gender() if(wear_suit && wear_suit.flags_inv & HIDEJUMPSUIT && ((head && head.flags_inv & HIDEMASK) || wear_mask)) - return NEUTER - return gender + return PLURAL //plural is the gender-neutral default + if(species) + if(species.ambiguous_genders) + return PLURAL // regardless of what you're wearing, your gender can't be figured out + return get_gender() /mob/living/carbon/human/proc/increase_germ_level(n) if(gloves) @@ -1091,14 +1095,17 @@ var/self = 0 if(usr.stat || usr.restrained() || !isliving(usr)) return + + var/datum/gender/TU = gender_datums[usr.get_visible_gender()] + var/datum/gender/T = gender_datums[get_visible_gender()] if(usr == src) self = 1 if(!self) - usr.visible_message("[usr] kneels down, puts \his hand on [src]'s wrist and begins counting their pulse.",\ + usr.visible_message("[usr] kneels down, puts [TU.his] hand on [src]'s wrist and begins counting [T.his] pulse.",\ "You begin counting [src]'s pulse") else - usr.visible_message("[usr] begins counting their pulse.",\ + usr.visible_message("[usr] begins counting [T.his] pulse.",\ "You begin counting your pulse.") if(src.pulse) @@ -1356,9 +1363,9 @@ if(..(slipped_on,stun_duration)) return 1 -/mob/living/carbon/human/proc/undislocate() +/mob/living/carbon/human/proc/relocate() set category = "Object" - set name = "Undislocate Joint" + set name = "Relocate Joint" set desc = "Pop a joint back into place. Extremely painful." set src in view(1) @@ -1406,7 +1413,7 @@ else U << "You pop [S]'s [current_limb.joint] back in!" S << "[U] pops your [current_limb.joint] back in!" - current_limb.undislocate() + current_limb.relocate() /mob/living/carbon/human/drop_from_inventory(var/obj/item/W, var/atom/Target = null) if(W in organs) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 587c17d52e..7acb587fbd 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -18,6 +18,7 @@ return null /mob/living/carbon/human/attack_hand(mob/living/carbon/M as mob) + var/datum/gender/TT = gender_datums[M.get_visible_gender()] var/mob/living/carbon/human/H = M if(istype(H)) var/obj/item/organ/external/temp = H.organs_by_name["r_hand"] @@ -131,7 +132,7 @@ var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src) if(buckled) - M << "You cannot grab [src], \he is buckled in!" + M << "You cannot grab [src], [TT.he] is buckled in!" if(!G) //the grab will delete itself in New if affecting is anchored return M.put_in_active_hand(G) @@ -228,7 +229,7 @@ if(!src.lying) attack_message = "[H] attempted to strike [src], but missed!" else - attack_message = "[H] attempted to strike [src], but \he rolled out of the way!" + attack_message = "[H] attempted to strike [src], but [TT.he] rolled out of the way!" src.set_dir(pick(cardinal)) miss_type = 1 @@ -417,8 +418,10 @@ user << "Someone is already applying pressure to [user == src? "your [organ.name]" : "[src]'s [organ.name]"]." return 0 + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + if(user == src) - user.visible_message("\The [user] starts applying pressure to \his [organ.name]!", "You start applying pressure to your [organ.name]!") + user.visible_message("\The [user] starts applying pressure to [TU.his] [organ.name]!", "You start applying pressure to your [organ.name]!") else user.visible_message("\The [user] starts applying pressure to [src]'s [organ.name]!", "You start applying pressure to [src]'s [organ.name]!") spawn(0) @@ -430,7 +433,7 @@ organ.applied_pressure = null if(user == src) - user.visible_message("\The [user] stops applying pressure to \his [organ.name]!", "You stop applying pressure to your [organ]!") + user.visible_message("\The [user] stops applying pressure to [TU.his] [organ.name]!", "You stop applying pressure to your [organ]!") else user.visible_message("\The [user] stops applying pressure to [src]'s [organ.name]!", "You stop applying pressure to [src]'s [organ.name]!") diff --git a/code/modules/mob/living/carbon/human/species/species_attack.dm b/code/modules/mob/living/carbon/human/species/species_attack.dm index 15bc491a1a..2654715f74 100644 --- a/code/modules/mob/living/carbon/human/species/species_attack.dm +++ b/code/modules/mob/living/carbon/human/species/species_attack.dm @@ -24,12 +24,13 @@ /datum/unarmed_attack/claws/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage) var/skill = user.skills["combat"] var/obj/item/organ/external/affecting = target.get_organ(zone) - + var/datum/gender/T = gender_datums[user.get_visible_gender()] + var/datum/gender/TT = gender_datums[target.get_visible_gender()] if(!skill) skill = 1 attack_damage = Clamp(attack_damage, 1, 5) if(target == user) - user.visible_message("[user] [pick(attack_verb)] \himself in the [affecting.name]!") + user.visible_message("[user] [pick(attack_verb)] [T.himself] in the [affecting.name]!") return 0 switch(zone) @@ -37,20 +38,20 @@ // ----- HEAD ----- // switch(attack_damage) if(1 to 2) - user.visible_message("[user] scratched [target] across \his cheek!") + user.visible_message("[user] scratched [target] across [TT.his] cheek!") if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [target]'s [pick("head", "neck")]!") //'with spread claws' sounds a little bit odd, just enough that conciseness is better here I think if(5) user.visible_message(pick( - "[user] rakes \his [pick(attack_noun)] across [target]'s face!", - "[user] tears \his [pick(attack_noun)] into [target]'s face!", + "[user] rakes [T.his] [pick(attack_noun)] across [target]'s face!", + "[user] tears [T.his] [pick(attack_noun)] into [target]'s face!", )) else // ----- BODY ----- // switch(attack_damage) if(1 to 2) user.visible_message("[user] scratched [target]'s [affecting.name]!") if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [pick("", "", "the side of")] [target]'s [affecting.name]!") - if(5) user.visible_message("[user] tears \his [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.name]!") + if(5) user.visible_message("[user] tears [T.his] [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.name]!") /datum/unarmed_attack/claws/strong attack_verb = list("slashed") diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm index 2de060887f..1c54a4258f 100644 --- a/code/modules/mob/living/carbon/human/unarmed_attack.dm +++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm @@ -44,6 +44,7 @@ var/global/list/sparring_attack_cache = list() /datum/unarmed_attack/proc/apply_effects(var/mob/living/carbon/human/user,var/mob/living/carbon/human/target,var/armour,var/attack_damage,var/zone) var/stun_chance = rand(0, 100) + var/datum/gender/TT = gender_datums[target.get_visible_gender()] if(attack_damage >= 5 && armour < 2 && !(target == user) && stun_chance <= attack_damage * 5) // 25% standard chance switch(zone) // strong punches can have effects depending on where they hit @@ -74,7 +75,7 @@ var/global/list/sparring_attack_cache = list() target.set_dir(reverse_dir[target.dir]) target.apply_effect(attack_damage * 0.4, WEAKEN, armour) if(BP_GROIN) - target.visible_message("[target] looks like \he is in pain!", "[(target.gender=="female") ? "Oh god that hurt!" : "Oh no, not your[pick("testicles", "crown jewels", "clockweights", "family jewels", "marbles", "bean bags", "teabags", "sweetmeats", "goolies")]!"]") + target.visible_message("[target] looks like [TT.he] [TT.is] in pain!", "[(target.gender=="female") ? "Oh god that hurt!" : "Oh no, not your[pick("testicles", "crown jewels", "clockweights", "family jewels", "marbles", "bean bags", "teabags", "sweetmeats", "goolies")]!"]") // I see no easy way to fix this for non-organic or neuter characters. target.apply_effects(stutter = attack_damage * 2, agony = attack_damage* 3, blocked = armour) if("l_leg", "l_foot", "r_leg", "r_foot") if(!target.lying) @@ -94,13 +95,15 @@ var/global/list/sparring_attack_cache = list() /datum/unarmed_attack/proc/handle_eye_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target) var/obj/item/organ/internal/eyes/eyes = target.internal_organs_by_name[O_EYES] + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + var/datum/gender/TT = gender_datums[target.get_visible_gender()] if(eyes) eyes.take_damage(rand(3,4), 1) - user.visible_message("[user] presses \his [eye_attack_text] into [target]'s [eyes.name]!") + user.visible_message("[user] presses [TU.his] [eye_attack_text] into [target]'s [eyes.name]!") var/eye_pain = eyes.organ_can_feel_pain() target << "You experience[(eye_pain) ? "" : " immense pain as you feel" ] [eye_attack_text_victim] being pressed into your [eyes.name][(eye_pain)? "." : "!"]" return - user.visible_message("[user] attempts to press \his [eye_attack_text] into [target]'s eyes, but they don't have any!") + user.visible_message("[user] attempts to press [TU.his] [eye_attack_text] into [target]'s eyes, but [TT.he] [TT.does]n't have any!") /datum/unarmed_attack/bite attack_verb = list("bit") @@ -128,11 +131,14 @@ var/global/list/sparring_attack_cache = list() /datum/unarmed_attack/punch/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage) var/obj/item/organ/external/affecting = target.get_organ(zone) var/organ = affecting.name + + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + var/datum/gender/TT = gender_datums[target.get_visible_gender()] attack_damage = Clamp(attack_damage, 1, 5) // We expect damage input of 1 to 5 for this proc. But we leave this check juuust in case. if(target == user) - user.visible_message("[user] [pick(attack_verb)] \himself in the [organ]!") + user.visible_message("[user] [pick(attack_verb)] [TU.himself] in the [organ]!") return 0 if(!target.lying) @@ -141,7 +147,7 @@ var/global/list/sparring_attack_cache = list() // ----- HEAD ----- // switch(attack_damage) if(1 to 2) - user.visible_message("[user] slapped [target] across \his cheek!") + user.visible_message("[user] slapped [target] across [TT.his] cheek!") if(3 to 4) user.visible_message(pick( 40; "[user] [pick(attack_verb)] [target] in the head!", @@ -151,21 +157,21 @@ var/global/list/sparring_attack_cache = list() if(5) user.visible_message(pick( 30; "[user] gave [target] a resounding [pick("slap", "punch")] to the face!", - 40; "[user] smashed \his [pick(attack_noun)] into [target]'s face!", + 40; "[user] smashed [TU.his] [pick(attack_noun)] into [target]'s face!", 30; "[user] gave a strong blow against [target]'s jaw!" )) else // ----- BODY ----- // switch(attack_damage) if(1 to 2) user.visible_message("[user] threw a glancing punch at [target]'s [organ]!") - if(1 to 4) user.visible_message("[user] [pick(attack_verb)] [target] in \his [organ]!") + if(1 to 4) user.visible_message("[user] [pick(attack_verb)] [target] in [TT.his] [organ]!") if(5) user.visible_message(pick( - 50; "[user] smashed \his [pick(attack_noun)] into [target]'s [organ]!", + 50; "[user] smashed [TU.his] [pick(attack_noun)] into [target]'s [organ]!", 50; "[user] landed a striking [pick(attack_noun)] on [target]'s [organ]!" )) else - user.visible_message("[user] [pick("punched", "threw a punch against", "struck", "slammed their [pick(attack_noun)] into")] [target]'s [organ]!") //why do we have a separate set of verbs for lying targets? + user.visible_message("[user] [pick("punched", "threw a punch against", "struck", "slammed [TU.his] [pick(attack_noun)] into")] [target]'s [organ]!") //why do we have a separate set of verbs for lying targets? /datum/unarmed_attack/kick attack_verb = list("kicked", "kicked", "kicked", "kneed") @@ -198,13 +204,14 @@ var/global/list/sparring_attack_cache = list() /datum/unarmed_attack/kick/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage) var/obj/item/organ/external/affecting = target.get_organ(zone) + var/datum/gender/TT = gender_datums[target.get_visible_gender()] var/organ = affecting.name attack_damage = Clamp(attack_damage, 1, 5) switch(attack_damage) if(1 to 2) user.visible_message("[user] threw [target] a glancing [pick(attack_noun)] to the [organ]!") //it's not that they're kicking lightly, it's that the kick didn't quite connect - if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [target] in \his [organ]!") + if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [target] in [TT.his] [organ]!") if(5) user.visible_message("[user] landed a strong [pick(attack_noun)] against [target]'s [organ]!") /datum/unarmed_attack/stomp @@ -242,12 +249,13 @@ var/global/list/sparring_attack_cache = list() var/obj/item/organ/external/affecting = target.get_organ(zone) var/organ = affecting.name var/obj/item/clothing/shoes = user.shoes + var/datum/gender/TU = gender_datums[user.get_visible_gender()] attack_damage = Clamp(attack_damage, 1, 5) switch(attack_damage) - if(1 to 4) user.visible_message("[pick("[user] stomped on", "[user] slammed \his [shoes ? copytext(shoes.name, 1, -1) : "foot"] down onto")] [target]'s [organ]!") - if(5) user.visible_message("[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed \his [shoes ? copytext(shoes.name, 1, -1) : "foot"] down hard onto")] [target]'s [organ]!") //Devastated lol. No. We want to say that the stomp was powerful or forceful, not that it /wrought devastation/ + if(1 to 4) user.visible_message("[pick("[user] stomped on", "[user] slammed [TU.his] [shoes ? copytext(shoes.name, 1, -1) : "foot"] down onto")] [target]'s [organ]!") + if(5) user.visible_message("[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed [TU.his] [shoes ? copytext(shoes.name, 1, -1) : "foot"] down hard onto")] [target]'s [organ]!") //Devastated lol. No. We want to say that the stomp was powerful or forceful, not that it /wrought devastation/ /datum/unarmed_attack/light_strike deal_halloss = 3 diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm index 83f68056b7..6d34c4a969 100644 --- a/code/modules/mob/living/silicon/pai/software_modules.dm +++ b/code/modules/mob/living/silicon/pai/software_modules.dm @@ -62,11 +62,12 @@ count++ // Check the carrier + var/datum/gender/TM = gender_datums[M.get_visible_gender()] var/answer = input(M, "[P] is requesting a DNA sample from you. Will you allow it to confirm your identity?", "[P] Check DNA", "No") in list("Yes", "No") if(answer == "Yes") var/turf/T = get_turf_or_move(P.loc) for (var/mob/v in viewers(T)) - v.show_message("[M] presses \his thumb against [P].", 3, "[P] makes a sharp clicking sound as it extracts DNA material from [M].", 2) + v.show_message("[M] presses [TM.his] thumb against [P].", 3, "[P] makes a sharp clicking sound as it extracts DNA material from [M].", 2) var/datum/dna/dna = M.dna P << "

[M]'s UE string : [dna.unique_enzymes]

" if(dna.unique_enzymes == P.master_dna) @@ -74,7 +75,7 @@ else P << "DNA does not match stored Master DNA." else - P << "[M] does not seem like \he is going to provide a DNA sample willingly." + P << "[M] does not seem like [TM.he] is going to provide a DNA sample willingly." return 1 /datum/pai_software/radio_config diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 4cd6f0f26d..b2246e14e9 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -173,7 +173,7 @@ var/list/mob_hat_cache = list() return else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) - + var/datum/gender/TU = gender_datums[user.get_visible_gender()] if(stat == 2) if(!config.allow_drone_spawn || emagged || health < -35) //It's dead, Dave. @@ -184,7 +184,7 @@ var/list/mob_hat_cache = list() to_chat(user, "Access denied.") return - user.visible_message("\The [user] swipes \his ID card through \the [src], attempting to reboot it.", ">You swipe your ID card through \the [src], attempting to reboot it.") + user.visible_message("\The [user] swipes [TU.his] ID card through \the [src], attempting to reboot it.", ">You swipe your ID card through \the [src], attempting to reboot it.") var/drones = 0 for(var/mob/living/silicon/robot/drone/D in world) if(D.key && D.client) @@ -194,7 +194,7 @@ var/list/mob_hat_cache = list() return else - user.visible_message("\The [user] swipes \his ID card through \the [src], attempting to shut it down.", "You swipe your ID card through \the [src], attempting to shut it down.") + user.visible_message("\The [user] swipes [TU.his] ID card through \the [src], attempting to shut it down.", "You swipe your ID card through \the [src], attempting to shut it down.") if(emagged) return @@ -232,11 +232,12 @@ var/list/mob_hat_cache = list() clear_supplied_laws() clear_inherent_laws() laws = new /datum/ai_laws/syndicate_override - set_zeroth_law("Only [user.real_name] and people \he designates as being such are operatives.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + set_zeroth_law("Only [user.real_name] and people [TU.he] designate[TU.s] as being such are operatives.") src << "Obey these laws:" laws.show_laws(src) - src << "ALERT: [user.real_name] is your new master. Obey your new laws and \his commands." + src << "ALERT: [user.real_name] [TU.is] your new master. Obey your new laws and [TU.his] commands." return 1 //DRONE LIFE/DEATH diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 5153dfd2d9..5d96f6feb2 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1071,7 +1071,8 @@ laws = new /datum/ai_laws/syndicate_override var/time = time2text(world.realtime,"hh:mm:ss") lawchanges.Add("[time] : [user.name]([user.key]) emagged [name]([key])") - set_zeroth_law("Only [user.real_name] and people \he designates as being such are operatives.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + set_zeroth_law("Only [user.real_name] and people [TU.he] designate[TU.s] as being such are operatives.") . = 1 spawn() src << "ALERT: Foreign software detected." @@ -1089,7 +1090,7 @@ src << "ERRORERRORERROR" src << "Obey these laws:" laws.show_laws(src) - src << "ALERT: [user.real_name] is your new master. Obey your new laws and his commands." + src << "ALERT: [user.real_name] is your new master. Obey your new laws and [TU.his] commands." updateicon() else user << "You fail to hack [src]'s interface." diff --git a/code/modules/mob/living/simple_animal/aliens/alien.dm b/code/modules/mob/living/simple_animal/aliens/alien.dm index d31efe6df8..3836a6abd2 100644 --- a/code/modules/mob/living/simple_animal/aliens/alien.dm +++ b/code/modules/mob/living/simple_animal/aliens/alien.dm @@ -219,7 +219,7 @@ speak_chance = 5 speak = list("Shuhn","Shrunnph?","Shunpf") - emote_see = list("scratches the ground","shakes out it's mane","tinkles gently") + emote_see = list("scratches the ground","shakes out its mane","clinks gently as it moves") /mob/living/simple_animal/yithian name = "yithian" diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index d37b2e33fa..17c796f0f9 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -584,7 +584,8 @@ if ((M.client && !( M.blinded ))) M.show_message("[user] applies the [MED] on [src].") else - user << "\The [src] is dead, medical items won't bring \him back to life." + var/datum/gender/T = gender_datums[src.get_visible_gender()] + user << "\The [src] is dead, medical items won't bring [T.him] back to life." // the gender lookup is somewhat overkill, but it functions identically to the obsolete gender macros and future-proofs this code if(meat_type && (stat == DEAD)) //if the animal has a meat, and if it is dead. if(istype(O, /obj/item/weapon/material/knife) || istype(O, /obj/item/weapon/material/knife/butch)) harvest(user) @@ -752,13 +753,13 @@ if(stat || M == target_mob) return //Not if we're dead or already hitting them if(M in friends || M.faction == faction) return //I'll overlook it THIS time... ai_log("react_to_attack([M])",1) - if(retaliate && set_target(M)) + if(retaliate && set_target(M, 1)) handle_stance(STANCE_ATTACK) return M return 0 -/mob/living/simple_animal/proc/set_target(var/mob/M) +/mob/living/simple_animal/proc/set_target(var/mob/M, forced = 0) ai_log("SetTarget([M])",2) if(!M || (world.time - last_target_time < 5 SECONDS) && target_mob) ai_log("SetTarget() can't set it again so soon",3) @@ -772,7 +773,7 @@ annoyed += 14 sleep(1 SECOND) //For realism - if(M in ListTargets(view_range)) + if(forced || (M in ListTargets(view_range))) try_say_list(say_got_target) target_mob = M last_target_time = world.time diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index ceebc620fd..54769eea5b 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -648,6 +648,9 @@ /mob/proc/get_gender() return gender +/mob/proc/get_visible_gender() + return gender + /mob/proc/see(message) if(!is_active()) return 0 diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 0110c263d2..9459ad85d2 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -218,7 +218,4 @@ var/seedarkness = 1 //Determines mob's ability to see shadows. 1 = Normal vision, 0 = darkvision - // Falling things - var/hovering = FALSE // Is the mob floating or flying in some way? If so, don't fall normally. //Not implemented yet, idea is to let them ignore terrain slowdown and falling down floors - var/softfall = FALSE // Is the mob able to lessen their impact upon falling? - var/parachuting = FALSE // Is the mob able to jump out of planes and survive? Don't check this directly outside of CanParachute(). \ No newline at end of file + var/get_rig_stats = 0 //Moved from computer.dm diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 492ec9cb05..cf14862981 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -236,6 +236,8 @@ if(!assailant.canmove || assailant.lying) qdel(src) return + + var/datum/gender/TU = gender_datums[assailant.get_visible_gender()] last_action = world.time @@ -256,7 +258,7 @@ assailant << "You squeeze [affecting], but nothing interesting happens." return - assailant.visible_message("[assailant] has reinforced \his grip on [affecting] (now neck)!") + assailant.visible_message("[assailant] has reinforced [TU.his] grip on [affecting] (now neck)!") state = GRAB_NECK icon_state = "grabbed+1" assailant.set_dir(get_dir(assailant, affecting)) @@ -267,11 +269,11 @@ hud.name = "kill" affecting.Stun(10) //10 ticks of ensured grab else if(state < GRAB_UPGRADING) - assailant.visible_message("[assailant] starts to tighten \his grip on [affecting]'s neck!") + assailant.visible_message("[assailant] starts to tighten [TU.his] grip on [affecting]'s neck!") hud.icon_state = "kill1" state = GRAB_KILL - assailant.visible_message("[assailant] has tightened \his grip on [affecting]'s neck!") + assailant.visible_message("[assailant] has tightened [TU.his] grip on [affecting]'s neck!") affecting.attack_log += "\[[time_stamp()]\] Has been strangled (kill intent) by [assailant.name] ([assailant.ckey])" assailant.attack_log += "\[[time_stamp()]\] Strangled (kill intent) [affecting.name] ([affecting.ckey])" msg_admin_attack("[key_name(assailant)] strangled (kill intent) [key_name(affecting)]") @@ -347,7 +349,8 @@ /obj/item/weapon/grab/proc/reset_kill_state() if(state == GRAB_KILL) - assailant.visible_message("[assailant] lost \his tight grip on [affecting]'s neck!") + var/datum/gender/T = gender_datums[assailant.get_visible_gender()] + assailant.visible_message("[assailant] lost [T.his] tight grip on [affecting]'s neck!") hud.icon_state = "kill" state = GRAB_NECK diff --git a/code/modules/mob/mob_grab_specials.dm b/code/modules/mob/mob_grab_specials.dm index 82dae6e135..a7b82566f2 100644 --- a/code/modules/mob/mob_grab_specials.dm +++ b/code/modules/mob/mob_grab_specials.dm @@ -93,7 +93,8 @@ return if(target.lying) return - attacker.visible_message("[attacker] thrusts \his head into [target]'s skull!") + var/datum/gender/T = gender_datums[attacker.get_visible_gender()] + attacker.visible_message("[attacker] thrusts [T.his] head into [target]'s skull!") var/damage = 20 var/obj/item/clothing/hat = attacker.head diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm index ae8b40218d..b92ec2144a 100644 --- a/code/modules/multiz/movement.dm +++ b/code/modules/multiz/movement.dm @@ -403,8 +403,12 @@ /atom/movable/proc/fall_impact(var/atom/hit_atom, var/damage_min = 0, var/damage_max = 10, var/silent = FALSE, var/planetary = FALSE) if(!silent) visible_message("\The [src] falls from above and slams into \the [hit_atom]!", "You hear something slam into \the [hit_atom].") + for(var/atom/movable/A in src.contents) + A.fall_impact(hit_atom, damage_min, damage_max, silent = TRUE) -/mob/living/fall_impact(var/turf/landing, var/damage_min = 0, var/damage_max = 30, var/silent = FALSE, var/planetary = FALSE) +// Take damage from falling and hitting the ground +/mob/living/fall_impact(var/atom/hit_atom, var/damage_min = 0, var/damage_max = 10, var/silent = FALSE, var/planetary = FALSE) + var/turf/landing = get_turf(hit_atom) if(planetary && src.CanParachute()) if(!silent) visible_message("\The [src] glides in from above and lands on \the [landing]!", \ @@ -431,67 +435,32 @@ "You hear something slam into \the [landing].") playsound(loc, "punch", 25, 1, -1) - if(planetary) //Since the planetary fall damage is calibrated for humans, we need to up this a bit - damage_min *= 2 - damage_max *= 2 - - adjustBruteLoss(rand(damage_min, damage_max)) - return - return - -/mob/living/carbon/human/fall_impact(var/turf/landing, var/damage_min = 0, var/damage_max = 10, var/silent = FALSE, var/planetary = FALSE) - if(planetary && src.CanParachute()) - if(!silent) - visible_message("\The [src] glides in from above and lands on \the [landing]!", \ - "You land on \the [landing]!", \ - "You hear something land \the [landing].") - return - else if(!planetary && src.softfall) // Falling one floor and falling one atmosphere are very different things - if(!silent) - visible_message("\The [src] falls from above and lands on \the [landing]!", \ - "You land on \the [landing]!", \ - "You hear something land \the [landing].") - return - else - if(!silent) - if(planetary) - visible_message("\A [src] falls out of the sky and crashes into \the [landing]!", \ - " You fall out of the skiy and crash into \the [landing]!", \ - "You hear something slam into \the [landing].") - var/turf/T = get_turf(landing) - explosion(T, 0, 1, 2) - else - visible_message("\The [src] falls from above and slams into \the [landing]!", \ - "You fall off and hit \the [landing]!", \ - "You hear something slam into \the [landing].") - playsound(loc, "punch", 25, 1, -1) - var/mob/living/carbon/human/pred = src //VOREStation Edit Start - if(istype(landing, /mob)) //If you land on someone, don't get hurt a second time - Weaken(10) //In exchange, you're going to be aching! This prevents you from taking damage twice from hitting the floor and the person. - return - var/belly = src.vore_selected - var/datum/belly/belly_target = pred.vore_organs[belly] - if(belly_target && belly_target.internal_contents.len != 0) //Having stuff in your gut will pad the landing a bit. - damage_max = 5 //VOREStation Edit End - // Because wounds heal rather quickly, 10 should be enough to discourage jumping off but not be enough to ruin you, at least for the first time. - apply_damage(rand(damage_min, damage_max), BRUTE, BP_HEAD) - apply_damage(rand(damage_min, damage_max), BRUTE, BP_TORSO) - apply_damage(rand(damage_min, damage_max), BRUTE, BP_GROIN) - apply_damage(rand(damage_min, damage_max), BRUTE, BP_L_LEG) - apply_damage(rand(damage_min, damage_max), BRUTE, BP_R_LEG) - apply_damage(rand(damage_min, damage_max), BRUTE, BP_L_FOOT) - apply_damage(rand(damage_min, damage_max), BRUTE, BP_R_FOOT) - apply_damage(rand(damage_min, damage_max), BRUTE, BP_L_ARM) - apply_damage(rand(damage_min, damage_max), BRUTE, BP_R_ARM) - apply_damage(rand(damage_min, damage_max), BRUTE, BP_L_HAND) - apply_damage(rand(damage_min, damage_max), BRUTE, BP_R_HAND) + // Because wounds heal rather quickly, 10 (the default for this proc) should be enough to discourage jumping off but not be enough to ruin you, at least for the first time. + // Hits 10 times, because apparently targeting individual limbs lets certain species survive the fall from atmosphere + for(var/i = 1 to 10) + adjustBruteLoss(rand(damage_min, damage_max)) Weaken(4) updatehealth() return return -//Checks if the mob is allowed to survive a fall from space -/mob/living/proc/CanParachute() +//Using /atom/movable instead of /obj/item because I'm not sure what all humans can pick up or wear +/atom/movable + var/parachute = FALSE // Is this thing a parachute itself? + var/hovering = FALSE // Is the thing floating or flying in some way? If so, don't fall normally. //Not implemented yet, idea is to let mobs/mechs ignore terrain slowdown and falling down floors + var/softfall = FALSE // Is the thing able to lessen their impact upon falling? + var/parachuting = FALSE // Is the thing able to jump out of planes and survive? Don't check this directly outside of CanParachute(). + +/atom/movable/proc/isParachute() + return parachute + +//This is what makes the parachute items know they've been used. +//I made it /atom/movable so it can be retooled for other things (mobs, mechs, etc), though it's only currently called in human/CanParachute(). +/atom/movable/proc/handleParachute() + return + +//Checks if the thing is allowed to survive a fall from space +/atom/movable/proc/CanParachute() return parachuting //For humans, this needs to be a wee bit more complicated @@ -516,19 +485,6 @@ else return parachuting -//For human falling code -//Using /obj instead of /obj/item because I'm not sure what all humans can pick up or wear -/obj - var/parachute = FALSE - -/obj/proc/isParachute() - return parachute - -//This is what makes the parachute items know they've been used. -//I made it /atom/movable so it can be retooled for other things (mobs, mechs, etc), though it's only currently called in human/CanParachute(). -/atom/movable/proc/handleParachute() - return - //Mech Code /obj/mecha/handle_fall(var/turf/landing) // First things first, break any lattice @@ -542,18 +498,49 @@ return ..() /obj/mecha/fall_impact(var/atom/hit_atom, var/damage_min = 15, var/damage_max = 30, var/silent = FALSE, var/planetary = FALSE) - // Tell the pilot that they just dropped down with a superheavy mecha. - if(occupant) - to_chat(occupant, "\The [src] crashed down onto \the [hit_atom]!") - // Anything on the same tile as the landing tile is gonna have a bad day. for(var/mob/living/L in hit_atom.contents) L.visible_message("\The [src] crushes \the [L] as it lands on them!") L.adjustBruteLoss(rand(70, 100)) L.Weaken(8) - // Now to hurt the mech. - take_damage(rand(damage_min, damage_max)) + var/turf/landing = get_turf(hit_atom) + + if(planetary && src.CanParachute()) + if(!silent) + visible_message("\The [src] glides in from above and lands on \the [landing]!", \ + "You land on \the [landing]!", \ + "You hear something land \the [landing].") + return + else if(!planetary && src.softfall) // Falling one floor and falling one atmosphere are very different things + if(!silent) + visible_message("\The [src] falls from above and lands on \the [landing]!", \ + "You land on \the [landing]!", \ + "You hear something land \the [landing].") + return + else + if(!silent) + if(planetary) + visible_message("\A [src] falls out of the sky and crashes into \the [landing]!", \ + " You fall out of the skiy and crash into \the [landing]!", \ + "You hear something slam into \the [landing].") + var/turf/T = get_turf(landing) + explosion(T, 0, 1, 2) + else + visible_message("\The [src] falls from above and slams into \the [landing]!", \ + "You fall off and hit \the [landing]!", \ + "You hear something slam into \the [landing].") + playsound(loc, "punch", 25, 1, -1) + + // Now to hurt everything in the mech (if the fall is planetary, the mech blows up, so we do this first) + for(var/atom/movable/A in src.contents) + A.fall_impact(hit_atom, damage_min, damage_max, silent = TRUE) + // And now the Mech + + if(!planetary) + take_damage(rand(damage_min, damage_max)) + else + qdel(src) // And hurt the floor. if(istype(hit_atom, /turf/simulated/floor)) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 49a18e4853..6c8d9c631a 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -195,9 +195,9 @@ dislocated = 1 if(owner) - owner.verbs |= /mob/living/carbon/human/proc/undislocate + owner.verbs |= /mob/living/carbon/human/proc/relocate -/obj/item/organ/external/proc/undislocate() +/obj/item/organ/external/proc/relocate() if(dislocated == -1) return @@ -209,7 +209,7 @@ for(var/obj/item/organ/external/limb in owner.organs) if(limb.dislocated == 1) return - owner.verbs -= /mob/living/carbon/human/proc/undislocate + owner.verbs -= /mob/living/carbon/human/proc/relocate /obj/item/organ/external/update_health() damage = min(max_damage, (brute_dam + burn_dam)) @@ -325,7 +325,8 @@ // sync the organ's damage with its wounds src.update_damages() - owner.updatehealth() //droplimb will call updatehealth() again if it does end up being called + if(owner) + owner.updatehealth() //droplimb will call updatehealth() again if it does end up being called //If limb took enough damage, try to cut or tear it off if(owner && loc == owner && !is_stump()) @@ -426,7 +427,8 @@ if(damage_desc) if(user == src.owner) - user.visible_message("\The [user] patches [damage_desc] on \his [src.name] with [tool].") + var/datum/gender/T = gender_datums[user.get_visible_gender()] + user.visible_message("\The [user] patches [damage_desc] on [T.his] [src.name] with [tool].") else user.visible_message("\The [user] patches [damage_desc] on [owner]'s [src.name] with [tool].") diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index e5c0134186..b708e58253 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -314,12 +314,13 @@ /obj/item/weapon/paper/proc/burnpaper(obj/item/weapon/flame/P, mob/user) var/class = "warning" + var/datum/gender/TU = gender_datums[user.get_visible_gender()] if(P.lit && !user.restrained()) if(istype(P, /obj/item/weapon/flame/lighter/zippo)) class = "rose" - - user.visible_message("[user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!", \ + + user.visible_message("[user] holds \the [P] up to \the [src], it looks like [TU.hes] trying to burn it!", \ "You hold \the [P] up to \the [src], burning it slowly.") spawn(20) diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index d6350b4d90..6ab1be0a9f 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -75,8 +75,8 @@ if(P.lit && !user.restrained()) if(istype(P, /obj/item/weapon/flame/lighter/zippo)) class = "rose>" - - user.visible_message("[user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!", \ + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + user.visible_message("[user] holds \the [P] up to \the [src], it looks like [TU.he] [TU.is] trying to burn it!", \ "You hold \the [P] up to \the [src], burning it slowly.") spawn(20) diff --git a/code/modules/paperwork/papershredder.dm b/code/modules/paperwork/papershredder.dm index b80a331180..bbf630ced6 100644 --- a/code/modules/paperwork/papershredder.dm +++ b/code/modules/paperwork/papershredder.dm @@ -167,12 +167,13 @@ ..() /obj/item/weapon/shreddedp/proc/burnpaper(var/obj/item/weapon/flame/lighter/P, var/mob/user) + var/datum/gender/TU = gender_datums[user.get_visible_gender()] if(user.restrained()) return if(!P.lit) user << "\The [P] is not lit." return - user.visible_message("\The [user] holds \the [P] up to \the [src]. It looks like \he's trying to burn it!", \ + user.visible_message("\The [user] holds \the [P] up to \the [src]. It looks like [TU.he] [TU.is] trying to burn it!", \ "You hold \the [P] up to \the [src], burning it slowly.") if(!do_after(user,20)) user << "You must hold \the [P] steady to burn \the [src]." diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 1de92fe743..7b310ccaa7 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -196,7 +196,8 @@ var/colourName = "red" //for updateIcon purposes suicide_act(mob/user) - viewers(user) << "[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide." + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + viewers(user) << "[user] is jamming the [src.name] up [TU.his] nose and into [TU.his] brain. It looks like [TU.he] [TU.is] trying to commit suicide." return (BRUTELOSS|OXYLOSS) New() diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 678e59ccf3..fadd699c84 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -497,10 +497,11 @@ obj/structure/cable/proc/cableColor(var/colorC) charge_costs = list(1) /obj/item/stack/cable_coil/suicide_act(mob/user) + var/datum/gender/TU = gender_datums[user.get_visible_gender()] if(locate(/obj/item/weapon/stool) in user.loc) - user.visible_message("[user] is making a noose with the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is making a noose with the [src.name]! It looks like [TU.he] [TU.is] trying to commit suicide.") else - user.visible_message("[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is strangling [TU.himself] with the [src.name]! It looks like [TU.he] [TU.is] trying to commit suicide.") return(OXYLOSS) /obj/item/stack/cable_coil/New(loc, length = MAXCOIL, var/param_color = null) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 7a8c7c541f..1c08294b6a 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -234,5 +234,6 @@ return 0 /obj/item/weapon/cell/suicide_act(mob/user) - viewers(user) << "\The [user] is licking the electrodes of \the [src]! It looks like \he's trying to commit suicide." + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + viewers(user) << "\The [user] is licking the electrodes of \the [src]! It looks like [TU.he] [TU.is] trying to commit suicide." return (FIRELOSS) \ No newline at end of file diff --git a/code/modules/power/fusion/core/_core.dm b/code/modules/power/fusion/core/_core.dm index 760c46ea93..7f81b70ffd 100644 --- a/code/modules/power/fusion/core/_core.dm +++ b/code/modules/power/fusion/core/_core.dm @@ -77,7 +77,7 @@ var/list/fusion_cores = list() if(owned_field) icon_state = "core0" if(force_rupture || owned_field.plasma_temperature > 1000) - owned_field.Rupture() + owned_field.MRC() else owned_field.RadiateAll() qdel(owned_field) diff --git a/code/modules/power/fusion/core/core_field.dm b/code/modules/power/fusion/core/core_field.dm index 37351c53af..ef1c3716fa 100644 --- a/code/modules/power/fusion/core/core_field.dm +++ b/code/modules/power/fusion/core/core_field.dm @@ -1,6 +1,7 @@ #define FUSION_ENERGY_PER_K 20 #define FUSION_MAX_ENVIRO_HEAT 5000 //raise this if you want the reactor to dump more energy into the atmosphere -#define PLASMA_TEMP_RADIATION_DIVISIOR 15 //radiation divisior. plasma temp / divisor = radiation. +#define PLASMA_TEMP_RADIATION_DIVISIOR 20 //radiation divisior. plasma temp / divisor = radiation. + /obj/effect/fusion_em_field name = "electromagnetic field" @@ -19,6 +20,8 @@ var/tick_instability = 0 var/percent_unstable = 0 var/stable = 1 + var/id_tag + var/critical = 0 var/obj/machinery/power/fusion_core/owned_core var/list/dormant_reactant_quantities = list() @@ -31,7 +34,8 @@ /obj/structure/cable, /obj/machinery/atmospherics, /obj/machinery/air_sensor, - /mob/observer/dead + /mob/observer/dead, + /obj/machinery/power/hydromagnetic_trap ) var/light_min_range = 2 @@ -52,7 +56,7 @@ owned_core = new_owned_core if(!owned_core) qdel(src) - + id_tag = owned_core.id_tag //create the gimmicky things to handle field collisions var/obj/effect/fusion_particle_catcher/catcher @@ -194,37 +198,46 @@ if(percent_unstable >= 1) owned_core.Shutdown(force_rupture=1) else - if(percent_unstable > 0.5 && prob(percent_unstable*100)) + if(percent_unstable > 0.1 && prob(percent_unstable*100)) if(plasma_temperature < 2000) visible_message("\The [src] ripples uneasily, like a disturbed pond.") else var/flare var/fuel_loss var/rupture - if(percent_unstable < 0.2) + if(percent_unstable > 0.2) visible_message("\The [src] ripples uneasily, like a disturbed pond.") - fuel_loss = prob(5) - flare = prob(50) - else if(percent_unstable < 0.9) + flare = prob(25) + else if(percent_unstable > 0.5) visible_message("\The [src] undulates violently, shedding plumes of plasma!") flare = prob(50) fuel_loss = prob(20) rupture = prob(5) - else + else if(percent_unstable > 0.8) visible_message("\The [src] is wracked by a series of horrendous distortions, buckling and twisting like a living thing!") flare = 1 fuel_loss = prob(50) rupture = prob(25) if(rupture) - owned_core.Shutdown(force_rupture=1) + if(prob(80)) + MagneticQuench() + return + else if(prob(15)) + MRC() + return + else if(prob(5)) + QuantumFluxCascade() + return + else if(prob(5)) + BluespaceQuenchEvent() + return else var/lost_plasma = (plasma_temperature*percent_unstable) radiation += lost_plasma if(flare) - radiation += plasma_temperature/2 - plasma_temperature -= lost_plasma - + spawn(1) + emflare() if(fuel_loss) for(var/particle in dormant_reactant_quantities) var/lost_fuel = dormant_reactant_quantities[particle]*percent_unstable @@ -234,17 +247,19 @@ dormant_reactant_quantities.Remove(particle) Radiate() return - -/obj/effect/fusion_em_field/proc/Rupture() - visible_message("\The [src] shudders like a dying animal before flaring to eye-searing brightness and rupturing!") - set_light(15, 15, "#CCCCFF") - empulse(get_turf(src), ceil(plasma_temperature/1000), ceil(plasma_temperature/300)) - sleep(5) - global_announcer.autosay("WARNING: FIELD RUPTURE IMMINENT!", "Containment Monitor") - RadiateAll() - explosion(get_turf(owned_core),-1,-1,8,10) // Blow out all the windows. - return - +/*/obj/effect/fusion_em_field/proc/CheckCriticality() + if (plasma_temperature > 70000) + critical += 0.2 + else if (instability > 0.45) + critical += 0.6 + if(critical >= 25 && prob(percent_unstable*100)) + if (critical >= 90) + visible_message("\The [src] rumbles and quivers violently, threatening to break free!") + else if(critical >= 50) + visible_message("\The [src] rumbles and quivers energetically, the walls distorting slightly.") + else if(critical >= 25) + visible_message("\The [src] rumbles and quivers slightly, vibrating the deck.") +*/ /obj/effect/fusion_em_field/proc/ChangeFieldStrength(var/new_strength) var/calc_size = 1 if(new_strength <= 50) @@ -490,19 +505,19 @@ //All procs below this point are called in _core.dm, starting at line 41. //Stability monitoring. Gives radio annoucements if field stability is below 80% /obj/effect/fusion_em_field/proc/stability_monitor() - var/warnpoint = 0.10 + var/warnpoint = 0.10 //start warning at 10% instability var/warnmessage = "Warning! Field unstable! Instability at [percent_unstable * 100]%, plasma temperature at [plasma_temperature + 295]k." var/stablemessage = "Containment field returning to stable conditions." - if(percent_unstable >= warnpoint) + if(percent_unstable >= warnpoint) //we're unstable, start warning engineering global_announcer.autosay(warnmessage, "Field Stability Monitor", "Engineering") - stable = 0 - sleep(20 SECONDS) - return - if(percent_unstable < warnpoint && stable == 0) + stable = 0 //we know we're not stable, so let's not state the safe message. + sleep(20) + return + if(percent_unstable < warnpoint && stable == 0) //The field is stable again. Let's set our safe variable and state the safe message. global_announcer.autosay(stablemessage, "Field Stability Monitor", "Engineering") stable = 1 - return + return //Reaction radiation is fairly buggy and there's at least three procs dealing with radiation here, this is to ensure constant radiation output. /obj/effect/fusion_em_field/proc/radiation_scale() @@ -513,7 +528,8 @@ if(owned_core && owned_core.loc) var/datum/gas_mixture/environment = owned_core.loc.return_air() if(environment && environment.temperature < (T0C+FUSION_MAX_ENVIRO_HEAT)) - environment.add_thermal_energy(plasma_temperature*20000) + environment.add_thermal_energy(plasma_temperature*5000) + check_instability() //Temperature changes depending on color. /obj/effect/fusion_em_field/proc/temp_color() @@ -538,8 +554,121 @@ light_max_range = 5 light_max_power = 5 return +//moved the flare to a proc for various reasons. Called on line 225. +/obj/effect/fusion_em_field/proc/emflare() + radiation += plasma_temperature/2 + light_color = "#ff0000" + light_max_power = 30 + light_min_power = 30 + light_min_range = 30 + light_max_range = 30 + visible_message("\The [src] flares to eye-searing brightness!") + sleep(60) + temp_color() + //plasma_temperature -= lost_plasma + return +//Rupture() is no longer the end all be all. Fear the magnetic resonance cascade and quantum flux cascade +/obj/effect/fusion_em_field/proc/Rupture() + visible_message("\The [src] shudders like a dying animal before flaring to eye-searing brightness and rupturing!") + set_light(15, 15, "#CCCCFF") + empulse(get_turf(src), ceil(plasma_temperature/1000), ceil(plasma_temperature/300)) + global_announcer.autosay("WARNING: FIELD RUPTURE IMMINENT!", "Containment Monitor") + RadiateAll() + var/list/things_in_range = range(10, owned_core) + var/list/turfs_in_range = list() + var/turf/T + for (T in things_in_range) + turfs_in_range.Add(T) + + explosion(pick(things_in_range), -1, 5, 5, 5) + empulse(pick(things_in_range), ceil(plasma_temperature/1000), ceil(plasma_temperature/300)) + spawn(25) + explosion(pick(things_in_range), -1, 5, 5, 5) + spawn(25) + explosion(pick(things_in_range), -1, 5, 5, 5) + spawn(25) + explosion(pick(things_in_range), -1, 5, 5, 5) + spawn(10) + explosion(pick(things_in_range), -1, 5, 5, 5) + spawn(10) + explosion(pick(things_in_range), -1, 5, 5, 5) + spawn(10) + explosion(pick(things_in_range), -1, 5, 5, 5) + return + +/obj/effect/fusion_em_field/proc/MRC() //spews electromagnetic pulses in an area around the core. + visible_message("\The [src] glows an extremely bright pink and flares out of existance!") + global_announcer.autosay("Warning! Magnetic Resonance Cascade detected! Brace for electronic system distruption.", "Field Stability Monitor") + set_light(15, 15, "#ff00d8") + var/list/things_in_range = range(15, owned_core) + var/list/turfs_in_range = list() + var/turf/T + for (T in things_in_range) + turfs_in_range.Add(T) + for(var/loopcount = 1 to 10) + spawn(200) + empulse(pick(things_in_range), 10, 15) + Destroy() + return + +/obj/effect/fusion_em_field/proc/QuantumFluxCascade() //spews hot phoron and oxygen in a radius around the RUST. Will probably set fire to things + global_announcer.autosay("Warning! Quantum fluxuation detected! Flammable gas release expected.", "Field Stability Monitor") + var/list/things_in_range = range(15, owned_core) + var/list/turfs_in_range = list() + var/turf/T + for (T in things_in_range) + turfs_in_range.Add(T) + for(var/loopcount = 1 to 10) + var/turf/TT = get_turf(pick(turfs_in_range)) + if(istype(TT)) + var/datum/gas_mixture/plasma = new + plasma.adjust_gas("oxygen", (size*100), 0) + plasma.adjust_gas("phoron", (size*100), 0) + plasma.temperature = (plasma_temperature/2) + plasma.update_values() + TT.assume_air(plasma) + TT.hotspot_expose(plasma_temperature) + plasma = null + Destroy() + return + +/obj/effect/fusion_em_field/proc/MagneticQuench() //standard hard shutdown. dumps hot oxygen/phoron into the core's area and releases an EMP in the area around the core. + global_announcer.autosay("Warning! Magnetic Quench event detected, engaging hard shutdown.", "Field Stability Monitor") + empulse(owned_core, 10, 15) + var/turf/TT = get_turf(owned_core) + if(istype(TT)) + var/datum/gas_mixture/plasma = new + plasma.adjust_gas("oxygen", (size*100), 0) + plasma.adjust_gas("phoron", (size*100), 0) + plasma.temperature = (plasma_temperature/2) + plasma.update_values() + TT.assume_air(plasma) + TT.hotspot_expose(plasma_temperature) + plasma = null + Destroy() + owned_core.Shutdown() + return + +/obj/effect/fusion_em_field/proc/BluespaceQuenchEvent() //!!FUN!! causes a number of explosions in an area around the core. Will likely destory or heavily damage the reactor. + visible_message("\The [src] shudders like a dying animal before flaring to eye-searing brightness and rupturing!") + set_light(15, 15, "#CCCCFF") + empulse(get_turf(src), ceil(plasma_temperature/1000), ceil(plasma_temperature/300)) + global_announcer.autosay("WARNING: FIELD RUPTURE IMMINENT!", "Containment Monitor") + RadiateAll() + var/list/things_in_range = range(10, owned_core) + var/list/turfs_in_range = list() + var/turf/T + for (T in things_in_range) + turfs_in_range.Add(T) + for(var/loopcount = 1 to 10) + explosion(pick(things_in_range), -1, 5, 5, 5) + empulse(pick(things_in_range), ceil(plasma_temperature/1000), ceil(plasma_temperature/300)) + Destroy() + owned_core.Shutdown() + return + #undef FUSION_HEAT_CAP #undef FUSION_MAX_ENVIRO_HEAT #undef PLASMA_TEMP_RADIATION_DIVISIOR \ No newline at end of file diff --git a/code/modules/power/fusion/fusion_reactions.dm b/code/modules/power/fusion/fusion_reactions.dm index 38f73812f9..623f70bd6b 100644 --- a/code/modules/power/fusion/fusion_reactions.dm +++ b/code/modules/power/fusion/fusion_reactions.dm @@ -117,7 +117,7 @@ proc/get_fusion_reaction(var/p_react, var/s_react, var/m_energy) var/turf/origin = get_turf(holder) holder.Rupture() qdel(holder) - var/radiation_level = rand(100, 200) + var/radiation_level = 200 // Copied from the SM for proof of concept. //Not any more --Cirra //Use the whole z proc --Leshana radiation_repository.z_radiate(locate(1, 1, holder.z), radiation_level, 1) @@ -141,7 +141,6 @@ proc/get_fusion_reaction(var/p_react, var/s_react, var/m_energy) return 1 - // High end reactions. /decl/fusion_reaction/boron_hydrogen p_react = "boron" diff --git a/code/modules/power/fusion/fusion_reagents.dm b/code/modules/power/fusion/fusion_reagents.dm index 875bf63fee..80b1cbb336 100644 --- a/code/modules/power/fusion/fusion_reagents.dm +++ b/code/modules/power/fusion/fusion_reagents.dm @@ -5,4 +5,14 @@ description = "A colorless, odorless, tasteless and generally inert gas used in fusion reactors. Non-radioactive." id = "helium-3" reagent_state = GAS - color = "#808080" \ No newline at end of file + color = "#808080" + +/obj/structure/reagent_dispensers/he3 + name = "fueltank" + desc = "A fueltank." + icon = 'icons/obj/objects.dmi' + icon_state = "weldtank" + amount_per_transfer_from_this = 10 + New() + ..() + reagents.add_reagent("helium-3",1000) \ No newline at end of file diff --git a/code/modules/power/fusion/magpower.dm b/code/modules/power/fusion/magpower.dm new file mode 100644 index 0000000000..c6882c6eb3 --- /dev/null +++ b/code/modules/power/fusion/magpower.dm @@ -0,0 +1,54 @@ +#define ENERGY_PER_K 20 +#define MINIMUM_PLASMA_TEMPERATURE 10000 + +/obj/machinery/power/hydromagnetic_trap + name = "\improper hydromagnetic trap" + desc = "A device for extracting power from high-energy plasma in toroidal fields." + icon = 'icons/obj/machines/power/fusion.dmi' + icon_state = "mag_trap0" + anchored = 1 + var/list/things_in_range = list()//what is in a radius of us? + var/list/fields_in_range = list()//What EM fields are in that radius? + var/list/active_field = list()//Our active field. + var/active = 0 //are we even on? + var/id_tag //needed for !!rasins!! + +/obj/machinery/power/hydromagnetic_trap/process() + if(!powernet && anchored == 1) + return + spawn(1) + Active() + Search() + +/obj/machinery/power/hydromagnetic_trap/proc/Search()//let's not have +100 instances of the same field in active_field. + things_in_range = range(7, src) + var/obj/effect/fusion_em_field/FFF + for (FFF in things_in_range) + fields_in_range.Add(FFF) + for (FFF in fields_in_range) + if (active_field.len > 0) + return + else if (active_field.len == 0) + Link() + return + +/obj/machinery/power/hydromagnetic_trap/proc/Link() //discover our EM field + var/obj/effect/fusion_em_field/FFF + for(FFF in fields_in_range) + if (FFF.id_tag != id_tag) + return + active_field += FFF + active = 1 + return + +/obj/machinery/power/hydromagnetic_trap/proc/Active()//POWERRRRR + var/obj/effect/fusion_em_field/FF + if (active == 0) + return + for (FF in active_field) + if (FF.plasma_temperature >= MINIMUM_PLASMA_TEMPERATURE) + icon_state = "mag_trap1" + add_avail(ENERGY_PER_K * FF.plasma_temperature) + if (FF.plasma_temperature <= MINIMUM_PLASMA_TEMPERATURE) + icon_state = "mag_trap0" + return diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index d57c133cd1..d8712a0e4c 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -53,7 +53,7 @@ if(isliving(user)) hasShocked = 1 var/shock_damage = min(rand(30,40),rand(30,40)) - user.electrocute_act(shock_damage, src) + user.electrocute_act(shock_damage, src, 1, BP_TORSO) var/atom/target = get_edge_target_turf(user, get_dir(src, get_step_away(user, src))) user.throw_at(target, 200, 4) @@ -61,7 +61,6 @@ sleep(20) hasShocked = 0 - return /obj/machinery/containment_field/proc/set_master(var/master1,var/master2) if(!master1 || !master2) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index c2e6ec349c..df27be9d78 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -291,7 +291,8 @@ ui_interact(user) /obj/machinery/power/supermatter/attack_hand(mob/user as mob) - user.visible_message("\The [user] reaches out and touches \the [src], inducing a resonance... \his body starts to glow and bursts into flames before flashing into ash.",\ + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + user.visible_message("\The [user] reaches out and touches \the [src], inducing a resonance... [TU.his] body starts to glow and bursts into flames before flashing into ash.",\ "You reach out and touch \the [src]. Everything starts burning and all you can hear is ringing. Your last thought is \"That was not a wise decision.\"",\ "You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.") @@ -337,7 +338,9 @@ if(istype(AM, /obj/effect)) return if(istype(AM, /mob/living)) - AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... \his body starts to glow and catch flame before flashing into ash.",\ + var/mob/living/M = AM + var/datum/gender/T = gender_datums[M.get_visible_gender()] + AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... [T.his] body starts to glow and catch flame before flashing into ash.",\ "You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"",\ "You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.") else if(!grav_pulling) //To prevent spam, detonating supermatter does not indicate non-mobs being destroyed diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index c5baba2f34..4152b5e362 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -288,7 +288,7 @@ else if(closest_mob) var/shock_damage = Clamp(round(power/400), 10, 90) + rand(-5, 5) - closest_mob.electrocute_act(shock_damage, source, 1/*, tesla_shock = 1, stun = stun_mobs*/) + closest_mob.electrocute_act(shock_damage, source, 1, ran_zone()) if(issilicon(closest_mob)) var/mob/living/silicon/S = closest_mob if(stun_mobs) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index b279908b79..460fac8239 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -51,6 +51,7 @@ attack_verb = list("struck", "hit", "bashed") zoomdevicename = "scope" + var/automatic = 0 var/burst = 1 var/fire_delay = 6 //delay after shooting before the gun can be used again var/burst_delay = 2 //delay between shots, if firing in bursts @@ -68,7 +69,8 @@ var/requires_two_hands var/wielded_icon = "gun_wielded" var/one_handed_penalty = 0 // Penalty applied if someone fires a two-handed gun with one hand. - + var/obj/screen/auto_target/auto_target + var/shooting = 0 var/next_fire_time = 0 var/sel_mode = 1 //index of the currently selected mode @@ -180,8 +182,9 @@ if(P) if(process_projectile(P, user, user, pick("l_foot", "r_foot"))) handle_post_fire(user, user) + var/datum/gender/TU = gender_datums[user.get_visible_gender()] user.visible_message( - "\The [user] shoots \himself in the foot with \the [src]!", + "\The [user] shoots [TU.himself] in the foot with \the [src]!", "You shoot yourself in the foot with \the [src]!" ) M.drop_item() @@ -206,8 +209,29 @@ if(user && user.a_intent == I_HELP && user.is_preference_enabled(/datum/client_preference/safefiring)) //regardless of what happens, refuse to shoot if help intent is on user << "You refrain from firing your [src] as your intent is set to help." + return + else - Fire(A,user,params) //Otherwise, fire normally. + Fire(A, user, params) //Otherwise, fire normally. + return + +/* //Commented out for quality control and testing + if(automatic == 1)//Are we are going to be using automatic shooting + //We check to make sure they can fire + if(!special_check(user)) + return + if(auto_target)//If they already have one then update it + auto_target.loc = get_turf(A) + auto_target.delay_del = 1//And reset the del so its like they got a new one and doesnt instantly vanish + to_chat(user, "You ready \the [src]! Click and drag the target around to shoot.") + else//Otherwise just make a new one + auto_target = new/obj/screen/auto_target(get_turf(A), src) + visible_message("\[user] readies the [src]!") + playsound(src, 'sound/weapons/TargetOn.ogg', 50, 1) + to_chat(user, "You ready \the [src]! Click and drag the target around to shoot.") + return + Fire(A,user,params) //Otherwise, fire normally. +*/ /obj/item/weapon/gun/attack(atom/A, mob/living/user, def_zone) if (A == user && user.zone_sel.selecting == O_MOUTH && !mouthshoot) @@ -307,8 +331,11 @@ return var/shoot_time = (burst - 1)* burst_delay + + //These should apparently be disabled to allow for the automatic system to function without causing near-permanant paralysis. Re-enabling them while we sort that out. user.setClickCooldown(shoot_time) //no clicking on things while shooting user.setMoveCooldown(shoot_time) //no moving while shooting either + next_fire_time = world.time + shoot_time var/held_acc_mod = 0 @@ -320,7 +347,27 @@ //actually attempt to shoot var/turf/targloc = get_turf(target) //cache this in case target gets deleted during shooting, e.g. if it was a securitron that got destroyed. + +/* // Commented out for quality control and testing. + shooting = 1 + if(automatic == 1 && auto_target && auto_target.active)//When we are going to shoot and have an auto_target AND its active meaning we clicked on it we tell it to burstfire 1000 rounds + burst = 1000//Yes its not EXACTLY full auto but when are we shooting more than 1000 normally and it can easily be made higher +*/ for(var/i in 1 to burst) + /* // Commented out for quality control and testing. + if(!reflex && automatic)//If we are shooting automatic then check our target, however if we are shooting reflex we dont use automatic + //extra sanity checking. + if(user.incapacitated()) + return + if(user.get_active_hand() != src) + break + if(!auto_target) break//Stopped shooting + else if(auto_target.loc) + target = auto_target.loc + //Lastly just update our dir if needed + if(user.dir != get_dir(user, auto_target)) + user.face_atom(auto_target) + */ var/obj/projectile = consume_next_projectile(user) if(!projectile) handle_click_empty(user) @@ -346,6 +393,9 @@ last_shot = world.time +/* // Commented out for quality control and testing. + shooting = 0 +*/ // We do this down here, so we don't get the message if we fire an empty gun. if(requires_two_hands) if(user.item_is_in_hands(src) && user.hands_are_full()) diff --git a/code/modules/projectiles/guns/automatic_fire.dm b/code/modules/projectiles/guns/automatic_fire.dm new file mode 100644 index 0000000000..25e1e3a461 --- /dev/null +++ b/code/modules/projectiles/guns/automatic_fire.dm @@ -0,0 +1,73 @@ +//This entire file is unticked for quality control and testing + + +//True automagic gun modes. Dakka dakka. +//A significant portion of this code was donated by Mport from SS:CM + +//This is used by guns shooting in automatic mode +/obj/screen/auto_target + name = "targeter" + icon = null//We dont want people to see this guy + density = 0 + anchored = 1 + var/obj/item/weapon/gun/gun + var/active = 0//Just tells us that it was clicked on so we should start shooting + var/delay_del = 0//Delays the del if we retarget without shooting + +/obj/screen/auto_target/New(loc, var/obj/item/weapon/gun/G) + ..() + gun = G + var/image/I = image('icons/effects/Targeted.dmi', src, "locked") + I.override = 1 + usr << I + //autodel() //Currently doesn't really work right. + return + +/obj/screen/auto_target/CanPass()//Everything should ignore this guy and just pass by + return 1 + + //Used to get rid of this if they target but dont actually shoot or stop shooting (no ammo) yet are still dragging us around +/obj/screen/auto_target/proc/autodel() + set waitfor=0 + if(active == 1) + return + sleep(20) + if(!src) return//Might not really be needed + if(delay_del)//This says we want to wait another X seconds before trying to del + delay_del = 0 + autodel() + return + if(gun.shooting == 0) + qdel(src) + else + autodel()//Yes in theory this could hit the inf loop + return + + //When the player clicks on the target it will disable the autodel and tell the gun to shoot +/obj/screen/auto_target/MouseDown(location,control,params) + active += 1//Tell the autodel that we are actually using this now + if(gun.shooting == 0)//If we are not shooting start shooting, we need this here or they have to drag to a new turf before it starts shooting, felt weird + gun.Fire(loc, usr, params) + return + + //Called when they drag the object somewhere else + //If its not already shooting (should be though due to the above, but this does let it click at you when it runs dry) then start shooting, +/obj/screen/auto_target/MouseDrag(over_object,src_location,over_location,src_control,over_control,params) + if(gun.shooting == 0)//If we are not shooting start shooting + gun.Fire(loc, usr, params) + if(over_location != loc)//This updates the loc to our new location when we drag it to a new turf + loc = over_location + if((usr.get_active_hand() != gun)) + qdel(src) + + //This gets rid of us when they let go of the click, but only after they actually drag the target to a new turf which is why the below also has to exist +/obj/screen/auto_target/MouseDrop(over_object,src_location,over_location,src_control,over_control,params) + qdel(src) + return + //This is needed so if they just MouseDown and then let go it will stop shooting, otherwise we stick around till they run out of bullets +/obj/screen/auto_target/MouseUp(object,location,control,params) + qdel(src) + return + +//This pseudo code is being left in place to serve as references to the modifications to gun.dm, the Fire() proc, and the afterattack() proc. -k22 +//Code donated by Mport. diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 84697e668d..beb44e1a3e 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -25,6 +25,16 @@ charge_cost = 480 projectile_type = /obj/item/projectile/ion +/obj/item/weapon/gun/energy/phasegun + name = "phase pistol" + desc = "The NT Mk26 EW Apollo is an energy handgun, specifically designed for use against wildlife." + icon_state = "phase" + item_state = "taser" //I don't have an in-hand sprite, taser will be fine + slot_flags = SLOT_BELT|SLOT_HOLSTER + charge_cost = 300 + projectile_type = /obj/item/projectile/energy/phase + + /obj/item/weapon/gun/energy/decloner name = "biological demolecularisor" desc = "A gun that discharges high amounts of controlled radiation to slowly break a target into component elements." @@ -199,5 +209,5 @@ obj/item/weapon/gun/energy/staff/focus 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)), - ) + 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/modular_guns.dm b/code/modules/projectiles/guns/modular_guns.dm new file mode 100644 index 0000000000..8f81e971c4 --- /dev/null +++ b/code/modules/projectiles/guns/modular_guns.dm @@ -0,0 +1,174 @@ +//This will likely drive me insane, but fuck it. Let's give it a shot. -k22 +//This was heavily assisted by MoondancerPony +/obj/item/weapon/gun/energy/modular + name = "modular weapon" + desc = "You shouldn't be seeing this. Contact your local time-police station." + icon_state = "mod_pistol" + cell_type = /obj/item/weapon/cell/device/weapon + charge_cost = 120 + + var/max_components = 3 //How many components we can hold. + var/capacitor_rating = 0 //How good are the capacitors inside us? + var/laser_rating = 0 //How good are the lasers inside of us? + var/manipulator_rating = 0 //How good are the manipulators inside us? + var/assembled = 1 //Are we closed up? + var/max_burst_size = 5 //Don't let our maximum burst size get too high. + var/list/guncomponents = list() //Generate our list of components. + var/accepted_components = list( + /obj/item/weapon/stock_parts/capacitor/, + /obj/item/weapon/stock_parts/capacitor/adv, + /obj/item/weapon/stock_parts/capacitor/super, + /obj/item/weapon/stock_parts/micro_laser/, + /obj/item/weapon/stock_parts/micro_laser/high, + /obj/item/weapon/stock_parts/micro_laser/ultra, + /obj/item/weapon/stock_parts/manipulator/, + /obj/item/weapon/stock_parts/manipulator/nano, + /obj/item/weapon/stock_parts/manipulator/pico, + ) + //Excessively long because it won't accept subtypes for some reason! + + +/obj/item/weapon/gun/energy/modular/New() //Initialize our components. + ..() + guncomponents = list() + guncomponents += new /obj/item/weapon/stock_parts/capacitor + guncomponents += new /obj/item/weapon/stock_parts/micro_laser + guncomponents += new /obj/item/weapon/stock_parts/manipulator + CheckParts() + FireModeModify() + +/obj/item/weapon/gun/energy/modular/proc/CheckParts() //What parts do we have inside us, and how good are they? + capacitor_rating = 0 + laser_rating = 0 + manipulator_rating = 0 + for(var/obj/item/weapon/stock_parts/capacitor/CA in guncomponents) + capacitor_rating += CA.rating + for(var/obj/item/weapon/stock_parts/micro_laser/ML in guncomponents) + laser_rating += ML.rating + for(var/obj/item/weapon/stock_parts/manipulator/MA in guncomponents) + manipulator_rating += MA.rating + FireModeModify() + +/obj/item/weapon/gun/energy/modular/attackby(obj/item/O, mob/user) + if(istype(O, /obj/item/weapon/screwdriver)) + to_chat(user, "You [assembled ? "disassemble" : "assemble"] the gun.") + assembled = !assembled + playsound(src, O.usesound, 50, 1) + return + if(istype(O, /obj/item/weapon/crowbar)) + if(assembled == 1) + to_chat(user, "Disassemble the [src] first!") + return + for(var/obj/item/I in guncomponents) + to_chat(user, "You remove the gun's components.") + playsound(src, O.usesound, 50, 1) + I.forceMove(get_turf(src)) + guncomponents.Remove(I) + CheckParts() + return + //Someone's attacking us, and it's not anything we have a special case for (i.e. a tool) + ..() + if(assembled) // can't put anything in + return + if(!(O.type in accepted_components))//check if we can accept it + to_chat(user, "You can't add this to [src]!") + return + if(guncomponents.len >= max_components) //We have too many componenets and can't fit more. + to_chat(user, "You can't add any more components!") + return + if(istype(O, /obj/item/weapon/stock_parts/capacitor) && capacitor_rating == 5) + to_chat(user, "You can't add any more capacitors!") + return + user.drop_item() + guncomponents += O + O.forceMove(src) + to_chat(user, "You add a component to the [src]") + CheckParts() + + +/obj/item/weapon/gun/energy/modular/proc/FireModeModify() //Check our laser, manipulator, and capacitor ratings, adjust stun and lethal firemodes depending on laser / manipulator rating and burst size depending on capacitors. + //check our lethal and stun ratings depending on laser and manipulator rating. + var/burstmode = capacitor_rating + var/beammode + var/beammode_lethal + var/chargecost + var/chargecost_lethal + + if(laser_rating >= 15) + beammode_lethal = /obj/item/projectile/beam/sniper + beammode = /obj/item/projectile/beam/stun + chargecost = 300 + chargecost_lethal = 600 + else if(laser_rating >= 10) + beammode_lethal = /obj/item/projectile/beam/xray + beammode = /obj/item/projectile/beam/stun + chargecost = 300 + chargecost_lethal = 200 + else if(laser_rating == 8 && manipulator_rating == 5) //very specific set of combinations. No, you can't make a pulse rifle. Sorry research. + beammode_lethal = /obj/item/projectile/beam/heavylaser + beammode = /obj/item/projectile/beam/stun + chargecost = 300 + chargecost_lethal = 600 + else if(laser_rating >= 5) + beammode_lethal = /obj/item/projectile/beam/midlaser + beammode = /obj/item/projectile/beam/stun/med + chargecost = 180 + chargecost_lethal = 240 + else if(laser_rating < 5) + beammode_lethal = /obj/item/projectile/beam/weaklaser + beammode = /obj/item/projectile/beam/stun/weak + chargecost = 100 + chargecost_lethal = 200 + + firemodes = list( + new /datum/firemode(src, list(mode_name="stun", projectile_type=beammode, fire_sound='sound/weapons/Taser.ogg', charge_cost = chargecost)), + new /datum/firemode(src, list(mode_name="lethal", projectile_type=beammode_lethal, fire_sound='sound/weapons/Laser.ogg', charge_cost = chargecost_lethal)), + new /datum/firemode(src, list(mode_name="[burstmode] shot stun", projectile_type=beammode, fire_sound='sound/weapons/Taser.ogg', charge_cost = chargecost, burst = burstmode)), + new /datum/firemode(src, list(mode_name="[burstmode] shot lethal", projectile_type=beammode_lethal, fire_sound='sound/weapons/Laser.ogg', charge_cost = chargecost_lethal, burst = burstmode)), + ) + +/obj/item/weapon/gun/energy/modular/load_ammo(var/obj/item/C, mob/user) + if(istype(C, cell_type)) + if(self_recharge || battery_lock) + user << "[src] does not have a battery port." + return + var/obj/item/weapon/cell/P = C + if(power_supply) + user << "[src] already has a power cell." + else + user.visible_message("[user] is reloading [src].", "You start to insert [P] into [src].") + if(do_after(user, 10)) + user.remove_from_mob(P) + power_supply = P + P.loc = src + user.visible_message("[user] inserts [P] into [src].", "You insert [P] into [src].") + playsound(src.loc, 'sound/weapons/flipblade.ogg', 50, 1) + update_icon() + update_held_icon() + return + +/obj/item/weapon/gun/energy/modular/pistol + name = "modular pistol" + icon_state = "mod_pistol" + max_components = 6 + desc = "A bulky modular pistol frame. This only only accepts six parts." + origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 3) + burst_delay = 2 + +/obj/item/weapon/gun/energy/modular/carbine + name = "modular carbine" + icon_state = "mod_carbine" + max_components = 8 + desc = "A modular version of the standard laser carbine. This one can hold 8 components." + origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 3, TECH_MATERIAL = 3) + burst_delay = 2 + +/obj/item/weapon/gun/energy/modular/cannon + name = "modular cannon" + icon_state = "mod_cannon" + max_components = 14 + desc = "Say hello, to my little friend!" + one_handed_penalty = 4 //dual wielding = no. + cell_type = /obj/item/weapon/cell //We're bigger. We can use much larger power cells. + origin_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 6, TECH_MATERIAL = 5, TECH_BLUESPACE = 4) //its a damn cannon capable of holding a huge amount of parts. + burst_delay = 4 //preventing extreme silliness. \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 19b92db3b7..39bc6d7ae0 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -190,14 +190,23 @@ one_handed_penalty = 6 + var/cover_open = 0 + +/* Commented out for quality control and testing. + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null, automatic = 0), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0), automatic = 0), + list(mode_name="short bursts", burst=5, move_delay=6, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(0.6, 1.0, 1.0, 1.0, 1.2), automatic = 0), + list(mode_name="automatic", burst=1, fire_delay=-1, move_delay=null, burst_accuracy=null, dispersion=null, automatic = 1), + ) +*/ + firemodes = list( list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0)), - list(mode_name="short bursts", burst=5, move_delay=6, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(0.6, 1.0, 1.0, 1.0, 1.2)) + list(mode_name="short bursts", burst=5, move_delay=6, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(0.6, 1.0, 1.0, 1.0, 1.2)), ) - var/cover_open = 0 - /obj/item/weapon/gun/projectile/automatic/l6_saw/special_check(mob/user) if(cover_open) user << "[src]'s cover is open! Close it before firing!" @@ -370,4 +379,4 @@ icon_state = "bullpup" else item_state = "bullpup-empty" - if(!ignore_inhands) update_held_icon() \ No newline at end of file + if(!ignore_inhands) update_held_icon() diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index d3bc093cac..8138146163 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -195,4 +195,10 @@ light_color = "#0000FF" embed_chance = 0 - muzzle_type = /obj/effect/projectile/pulse/muzzle \ No newline at end of file + muzzle_type = /obj/effect/projectile/pulse/muzzle + +/obj/item/projectile/energy/phase + kill_count = 4 + damage = 5 + SA_bonus_damage = 55 // 60 total on animals. + SA_vulnerability = SA_ANIMAL \ No newline at end of file diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 8c5d2cd11a..7a6ecd6c1c 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -121,8 +121,9 @@ if(prob(15)) M.apply_effect((rand(30,80)),IRRADIATE) M.Weaken(5) + var/datum/gender/TM = gender_datums[M.get_visible_gender()] for (var/mob/V in viewers(src)) - V.show_message("[M] writhes in pain as \his vacuoles boil.", 3, "You hear the crunching of leaves.", 2) + V.show_message("[M] writhes in pain as [TM.his] vacuoles boil.", 3, "You hear the crunching of leaves.", 2) if(prob(35)) // for (var/mob/V in viewers(src)) //Public messages commented out to prevent possible metaish genetics experimentation and stuff. - Cheridan // V.show_message("[M] is mutated by the radiation beam.", 3, " You hear the snapping of twigs.", 2) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 604eaa6a3a..5288843f57 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -31,7 +31,7 @@ /obj/item/weapon/reagent_containers/hypospray/attack(mob/living/M as mob, mob/user as mob) if(!reagents.total_volume) - user << "[src] is empty." + to_chat(user, "[src] is empty.") return if (!istype(M)) return @@ -40,21 +40,29 @@ if(istype(H)) var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting) if(!affected) - user << "\The [H] is missing that limb!" + to_chat(user, "\The [H] is missing that limb!") return else if(affected.robotic >= ORGAN_ROBOT) - user << "You cannot inject a robotic limb." + to_chat(user, "You cannot inject a robotic limb.") return + if(!H.stat) + if(H != user) + if(H.a_intent != I_HELP) + to_chat(user, "[H] is resisting your attempt to inject them with \the [src].") + to_chat(H, " [user] is trying to inject you with \the [src]!") + if(!do_after(user, 30)) + return + user.setClickCooldown(DEFAULT_QUICK_COOLDOWN) - user << "You inject [M] with [src]." - M << "You feel a tiny prick!" + to_chat(user, "You inject [M] with \the [src].") + to_chat(M, "You feel a tiny prick!") if(M.reagents) var/contained = reagentlist() var/trans = reagents.trans_to_mob(M, amount_per_transfer_from_this, CHEM_BLOOD) admin_inject_log(user, M, src, contained, trans) - user << "[trans] units injected. [reagents.total_volume] units remaining in \the [src]." + to_chat(user, "[trans] units injected. [reagents.total_volume] units remaining in \the [src].") if(!reusable && !used) used = !used @@ -110,7 +118,7 @@ user << "\The [src] already has a vial." else ..() - + /obj/item/weapon/reagent_containers/hypospray/autoinjector name = "autoinjector" desc = "A rapid and safe way to administer small amounts of drugs by untrained or trained personnel." diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index dc4401f0bc..a6e158befa 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -491,6 +491,15 @@ other types of metals and chemistry for reagents). build_path = /obj/item/roller/adv sort_string = "MBBAF" +/datum/design/item/medical/enhanced_analyzer + name = "enhanced health analyzer" + desc = "A prototype version of the regular health analyzer, able to distinguish the location of more serious injuries as well as accurately determine radiation levels." + id = "advanced_analyzer" + req_tech = list(TECH_MAGNET = 5, TECH_BIO = 6) + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "silver" = 1000, "gold" = 1500) + build_path = /obj/item/device/healthanalyzer/advanced + sort_string = "MBBAG" + /datum/design/item/implant materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) diff --git a/code/modules/surgery/slimes.dm b/code/modules/surgery/slimes.dm index 05ceed18b1..ad4c413c8e 100644 --- a/code/modules/surgery/slimes.dm +++ b/code/modules/surgery/slimes.dm @@ -95,5 +95,6 @@ /datum/surgery_step/slime/saw_core/fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) - user.visible_message("[user]'s hand slips, causing \him to miss the core!", \ + var/datum/gender/T = gender_datums[user.get_visible_gender()] + user.visible_message("[user]'s hand slips, causing [T.him] to miss the core!", \ "Your hand slips, causing you to miss the core!") \ No newline at end of file diff --git a/code/modules/virus2/effect.dm b/code/modules/virus2/effect.dm index d24069ca5f..523b8e1eaf 100644 --- a/code/modules/virus2/effect.dm +++ b/code/modules/virus2/effect.dm @@ -121,9 +121,10 @@ stage = 4 badness = 3 activate(var/mob/living/carbon/mob,var/multiplier) + var/datum/gender/TM = gender_datums[mob.get_visible_gender()] mob.suiciding = 30 //instead of killing them instantly, just put them at -175 health and let 'em gasp for a while - viewers(mob) << "[mob.name] is holding \his breath. It looks like \he's trying to commit suicide." + viewers(mob) << "[mob.name] is holding [TM.his] breath. It looks like [TM.he] [TM.is] trying to commit suicide." mob.adjustOxyLoss(175 - mob.getToxLoss() - mob.getFireLoss() - mob.getBruteLoss() - mob.getOxyLoss()) mob.updatehealth() diff --git a/code/modules/xenoarcheaology/sampling.dm b/code/modules/xenoarcheaology/sampling.dm index e79957ba28..ae7c203fa3 100644 --- a/code/modules/xenoarcheaology/sampling.dm +++ b/code/modules/xenoarcheaology/sampling.dm @@ -70,15 +70,15 @@ artifact_distance = rand() artifact_id = container.artifact_find.artifact_id else - if(master_controller) //Sanity check due to runtimes ~Z - for(var/turf/simulated/mineral/T in master_controller.artifact_spawning_turfs) + if(SSxenoarch) //Sanity check due to runtimes ~Z + for(var/turf/simulated/mineral/T in SSxenoarch.artifact_spawning_turfs) if(T.artifact_find) var/cur_dist = get_dist(container, T) * 2 if( (artifact_distance < 0 || cur_dist < artifact_distance)) artifact_distance = cur_dist + rand() * 2 - 1 artifact_id = T.artifact_find.artifact_id else - master_controller.artifact_spawning_turfs.Remove(T) + SSxenoarch.artifact_spawning_turfs.Remove(T) /obj/item/device/core_sampler name = "core sampler" diff --git a/code/modules/xenoarcheaology/tools/tools.dm b/code/modules/xenoarcheaology/tools/tools.dm index 1d79a89449..17412b4a8b 100644 --- a/code/modules/xenoarcheaology/tools/tools.dm +++ b/code/modules/xenoarcheaology/tools/tools.dm @@ -57,8 +57,8 @@ var/nearestSimpleTargetDist = -1 var/turf/cur_turf = get_turf(src) - if(master_controller) //Sanity check due to runtimes ~Z - for(var/A in master_controller.artifact_spawning_turfs) + if(SSxenoarch) //Sanity check due to runtimes ~Z + for(var/A in SSxenoarch.artifact_spawning_turfs) var/turf/simulated/mineral/T = A if(T.density && T.artifact_find) if(T.z == cur_turf.z) @@ -67,9 +67,9 @@ nearestTargetDist = cur_dist + rand() * 2 - 1 nearestTargetId = T.artifact_find.artifact_id else - master_controller.artifact_spawning_turfs.Remove(T) + SSxenoarch.artifact_spawning_turfs.Remove(T) - for(var/A in master_controller.digsite_spawning_turfs) + for(var/A in SSxenoarch.digsite_spawning_turfs) var/turf/simulated/mineral/T = A if(T.density && T.finds && T.finds.len) if(T.z == cur_turf.z) @@ -77,7 +77,7 @@ if(nearestSimpleTargetDist < 0 || cur_dist < nearestSimpleTargetDist) nearestSimpleTargetDist = cur_dist + rand() * 2 - 1 else - master_controller.digsite_spawning_turfs.Remove(T) + SSxenoarch.digsite_spawning_turfs.Remove(T) if(nearestTargetDist >= 0) user << "Exotic energy detected on wavelength '[nearestTargetId]' in a radius of [nearestTargetDist]m[nearestSimpleTargetDist > 0 ? "; small anomaly detected in a radius of [nearestSimpleTargetDist]m" : ""]" diff --git a/code/modules/xenobio/items/extracts.dm b/code/modules/xenobio/items/extracts.dm index 675149f8d1..f6fb5c885c 100644 --- a/code/modules/xenobio/items/extracts.dm +++ b/code/modules/xenobio/items/extracts.dm @@ -970,6 +970,7 @@ if(S) new S(get_turf(holder.my_atom)) + ..() /datum/chemical_reaction/slime/rainbow_unity name = "Slime Unity" diff --git a/html/changelogs/Anewbe - ExplorerGear.yml b/html/changelogs/Anewbe - ExplorerGear.yml new file mode 100644 index 0000000000..19eba8cbfb --- /dev/null +++ b/html/changelogs/Anewbe - ExplorerGear.yml @@ -0,0 +1,37 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Anewbe + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "Lessens the bomb, bio, and rad protection on the Explorer Suit." + - tweak: "Replaces the Hunting Rifle cabinets with a Phase Pistol cabinet. Same general purpose, shoot animals, kill animals. Shoot people, get laughed at." diff --git a/html/changelogs/Anewbe - Gloves.yml b/html/changelogs/Anewbe - Gloves.yml new file mode 100644 index 0000000000..ddb365ea94 --- /dev/null +++ b/html/changelogs/Anewbe - Gloves.yml @@ -0,0 +1,37 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Anewbe + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "Gloves are generally less protective from shocks." + - tweak: "Budget Insulated Gloves will almost always be better than any other non-insulated glove." diff --git a/html/changelogs/Anewbe - Hyposprays.yml b/html/changelogs/Anewbe - Hyposprays.yml new file mode 100644 index 0000000000..53749bc731 --- /dev/null +++ b/html/changelogs/Anewbe - Hyposprays.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Anewbe + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "Hyposprays and autoinjectors now have a delay on use when the target is conscious and not in Help Intent." diff --git a/html/changelogs/Anewbe - MechsFall.yml b/html/changelogs/Anewbe - MechsFall.yml new file mode 100644 index 0000000000..af4d4acedb --- /dev/null +++ b/html/changelogs/Anewbe - MechsFall.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Anewbe + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - bugfix: "You need a parachute to survive atmospheric reentry, closets, mechs, and other impromptu parachutes will not longer prevent splatting." diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index f0146ec2cc..95e060cbd5 100644 Binary files a/icons/effects/blood.dmi and b/icons/effects/blood.dmi differ diff --git a/icons/mecha/mech_construct.dmi b/icons/mecha/mech_construct.dmi index 9213e418ff..22b85b0a78 100644 Binary files a/icons/mecha/mech_construct.dmi and b/icons/mecha/mech_construct.dmi differ diff --git a/icons/mecha/mech_construction.dmi b/icons/mecha/mech_construction.dmi index 5cf5b9cae7..225958a7db 100644 Binary files a/icons/mecha/mech_construction.dmi and b/icons/mecha/mech_construction.dmi differ diff --git a/icons/mecha/mecha.dmi b/icons/mecha/mecha.dmi index 743ed24466..5c3bb92b76 100644 Binary files a/icons/mecha/mecha.dmi and b/icons/mecha/mecha.dmi differ diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index e0fa980fb9..cd30b3a8cc 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi index 6b0397c9e1..54b20e0165 100644 Binary files a/icons/mob/belt.dmi and b/icons/mob/belt.dmi differ diff --git a/icons/mob/corgi_head.dmi b/icons/mob/corgi_head.dmi index 105bdf4750..ca62243e79 100644 Binary files a/icons/mob/corgi_head.dmi and b/icons/mob/corgi_head.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 8992f9d2c6..7d15a48d24 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/items/lefthand.dmi b/icons/mob/items/lefthand.dmi index e7de0f84f5..59ffc871b7 100644 Binary files a/icons/mob/items/lefthand.dmi and b/icons/mob/items/lefthand.dmi differ diff --git a/icons/mob/items/lefthand_hats.dmi b/icons/mob/items/lefthand_hats.dmi index 58572857fc..6be64d7a7d 100644 Binary files a/icons/mob/items/lefthand_hats.dmi and b/icons/mob/items/lefthand_hats.dmi differ diff --git a/icons/mob/items/lefthand_storage.dmi b/icons/mob/items/lefthand_storage.dmi index 9cd0cb1d52..c4518a59ec 100644 Binary files a/icons/mob/items/lefthand_storage.dmi and b/icons/mob/items/lefthand_storage.dmi differ diff --git a/icons/mob/items/lefthand_suits.dmi b/icons/mob/items/lefthand_suits.dmi index 8e4053f8a4..d58dd02379 100644 Binary files a/icons/mob/items/lefthand_suits.dmi and b/icons/mob/items/lefthand_suits.dmi differ diff --git a/icons/mob/items/righthand.dmi b/icons/mob/items/righthand.dmi index 242e2b599e..f2e96a0c69 100644 Binary files a/icons/mob/items/righthand.dmi and b/icons/mob/items/righthand.dmi differ diff --git a/icons/mob/items/righthand_hats.dmi b/icons/mob/items/righthand_hats.dmi index 7d089a8a0f..8bf6d4155d 100644 Binary files a/icons/mob/items/righthand_hats.dmi and b/icons/mob/items/righthand_hats.dmi differ diff --git a/icons/mob/items/righthand_storage.dmi b/icons/mob/items/righthand_storage.dmi index e3ecbc1f09..9a34f3b89c 100644 Binary files a/icons/mob/items/righthand_storage.dmi and b/icons/mob/items/righthand_storage.dmi differ diff --git a/icons/mob/items/righthand_suits.dmi b/icons/mob/items/righthand_suits.dmi index 5fe5403304..d0ced6b9c2 100644 Binary files a/icons/mob/items/righthand_suits.dmi and b/icons/mob/items/righthand_suits.dmi differ diff --git a/icons/mob/light_overlays.dmi b/icons/mob/light_overlays.dmi index fb942bbce5..9a93faef34 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 a331158939..48df908aef 100644 Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ diff --git a/icons/mob/species/seromi/back.dmi b/icons/mob/species/seromi/back.dmi index 597c43e234..d0af48607c 100644 Binary files a/icons/mob/species/seromi/back.dmi and b/icons/mob/species/seromi/back.dmi differ diff --git a/icons/mob/species/seromi/head.dmi b/icons/mob/species/seromi/head.dmi index 0316955602..849144c6f3 100644 Binary files a/icons/mob/species/seromi/head.dmi and b/icons/mob/species/seromi/head.dmi differ diff --git a/icons/mob/species/seromi/suit.dmi b/icons/mob/species/seromi/suit.dmi index 31bc6a2890..14f5755ef5 100644 Binary files a/icons/mob/species/seromi/suit.dmi and b/icons/mob/species/seromi/suit.dmi differ diff --git a/icons/mob/species/seromi/ties.dmi b/icons/mob/species/seromi/ties.dmi index 7e076caf44..bd88c2dedd 100644 Binary files a/icons/mob/species/seromi/ties.dmi and b/icons/mob/species/seromi/ties.dmi differ diff --git a/icons/mob/species/seromi/uniform.dmi b/icons/mob/species/seromi/uniform.dmi index 53a15f94f4..c11e63db0c 100644 Binary files a/icons/mob/species/seromi/uniform.dmi and b/icons/mob/species/seromi/uniform.dmi differ diff --git a/icons/mob/species/skrell/suit.dmi b/icons/mob/species/skrell/suit.dmi index ab7f712844..0283191265 100644 Binary files a/icons/mob/species/skrell/suit.dmi and b/icons/mob/species/skrell/suit.dmi differ diff --git a/icons/mob/species/tajaran/suit.dmi b/icons/mob/species/tajaran/suit.dmi index 60bb13c6e1..39cc76b50f 100644 Binary files a/icons/mob/species/tajaran/suit.dmi and b/icons/mob/species/tajaran/suit.dmi differ diff --git a/icons/mob/species/unathi/suit.dmi b/icons/mob/species/unathi/suit.dmi index d3a54865fd..7c9e5022cf 100644 Binary files a/icons/mob/species/unathi/suit.dmi and b/icons/mob/species/unathi/suit.dmi differ diff --git a/icons/mob/species/vox/uniform.dmi b/icons/mob/species/vox/uniform.dmi index 46fe74d39c..6e33c45b5e 100644 Binary files a/icons/mob/species/vox/uniform.dmi and b/icons/mob/species/vox/uniform.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 8bb300d163..1e4770ea1e 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/ties.dmi b/icons/mob/ties.dmi index d23e81d7bd..fa22bde1c4 100644 Binary files a/icons/mob/ties.dmi and b/icons/mob/ties.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 5261e549f8..a41e567a82 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/mob/uniform_rolled_down.dmi b/icons/mob/uniform_rolled_down.dmi index e379946851..cad1f2ba97 100644 Binary files a/icons/mob/uniform_rolled_down.dmi and b/icons/mob/uniform_rolled_down.dmi differ diff --git a/icons/mob/uniform_sleeves_rolled.dmi b/icons/mob/uniform_sleeves_rolled.dmi index 6f7d959fd6..84496075cc 100644 Binary files a/icons/mob/uniform_sleeves_rolled.dmi and b/icons/mob/uniform_sleeves_rolled.dmi differ diff --git a/icons/obj/aibots.dmi b/icons/obj/aibots.dmi index abcf7c1cf9..9627b2bb6a 100644 Binary files a/icons/obj/aibots.dmi and b/icons/obj/aibots.dmi differ diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index b621d05474..e8d3946b34 100644 Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ diff --git a/icons/obj/closet.dmi b/icons/obj/closet.dmi index cf99daa067..5fd95e85d7 100644 Binary files a/icons/obj/closet.dmi and b/icons/obj/closet.dmi differ diff --git a/icons/obj/clothing/backpack.dmi b/icons/obj/clothing/backpack.dmi index a5b109af2b..e64ac2d3b0 100644 Binary files a/icons/obj/clothing/backpack.dmi and b/icons/obj/clothing/backpack.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index ff20e5913e..2fcbe66574 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/species/seromi/suits.dmi b/icons/obj/clothing/species/seromi/suits.dmi index 8324d9274d..cd8ee95287 100644 Binary files a/icons/obj/clothing/species/seromi/suits.dmi and b/icons/obj/clothing/species/seromi/suits.dmi differ diff --git a/icons/obj/clothing/species/seromi/uniform.dmi b/icons/obj/clothing/species/seromi/uniform.dmi index dbb76626e0..053d839a88 100644 Binary files a/icons/obj/clothing/species/seromi/uniform.dmi and b/icons/obj/clothing/species/seromi/uniform.dmi differ diff --git a/icons/obj/clothing/species/skrell/suits.dmi b/icons/obj/clothing/species/skrell/suits.dmi index 00a304a197..30d404ac82 100644 Binary files a/icons/obj/clothing/species/skrell/suits.dmi and b/icons/obj/clothing/species/skrell/suits.dmi differ diff --git a/icons/obj/clothing/species/tajaran/suits.dmi b/icons/obj/clothing/species/tajaran/suits.dmi index a18223677f..d9b3a8ff35 100644 Binary files a/icons/obj/clothing/species/tajaran/suits.dmi and b/icons/obj/clothing/species/tajaran/suits.dmi differ diff --git a/icons/obj/clothing/species/unathi/suits.dmi b/icons/obj/clothing/species/unathi/suits.dmi index 21e0f8bcd7..5c0f9c3e20 100644 Binary files a/icons/obj/clothing/species/unathi/suits.dmi and b/icons/obj/clothing/species/unathi/suits.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 174f820ea0..b8ef0246dc 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/ties.dmi b/icons/obj/clothing/ties.dmi index 944a4938b4..51fa43389d 100644 Binary files a/icons/obj/clothing/ties.dmi and b/icons/obj/clothing/ties.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index eeb8183879..e494bc966c 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 908d3ade7c..e0e3305d44 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/doors/doormedglass.dmi b/icons/obj/doors/doormedglass.dmi index 2d86a8ed81..da84aae6a2 100644 Binary files a/icons/obj/doors/doormedglass.dmi and b/icons/obj/doors/doormedglass.dmi differ diff --git a/icons/obj/flora/snowflora.dmi b/icons/obj/flora/snowflora.dmi index 11cbf5a505..873763ddd9 100644 Binary files a/icons/obj/flora/snowflora.dmi and b/icons/obj/flora/snowflora.dmi differ diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index d7a107da94..4bb7b955a0 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 684cb25b59..bebe9efbee 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/light_overlays.dmi b/icons/obj/light_overlays.dmi index c7bb310ce9..d5d6499305 100644 Binary files a/icons/obj/light_overlays.dmi and b/icons/obj/light_overlays.dmi differ diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi index c761dacf1e..f79493ec03 100644 Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ diff --git a/icons/obj/machines/power/fusion.dmi b/icons/obj/machines/power/fusion.dmi index be236a145e..4d20f04fcd 100644 Binary files a/icons/obj/machines/power/fusion.dmi and b/icons/obj/machines/power/fusion.dmi differ diff --git a/icons/obj/pda.dmi b/icons/obj/pda.dmi index b764be7e73..9928e2fee2 100644 Binary files a/icons/obj/pda.dmi and b/icons/obj/pda.dmi differ diff --git a/icons/obj/pda_old.dmi b/icons/obj/pda_old.dmi index 1799aeab52..fcded39c1e 100644 Binary files a/icons/obj/pda_old.dmi and b/icons/obj/pda_old.dmi differ diff --git a/icons/obj/pda_slim.dmi b/icons/obj/pda_slim.dmi index 1e26655175..0e5e8b7ee3 100644 Binary files a/icons/obj/pda_slim.dmi and b/icons/obj/pda_slim.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index c9e19dd40b..fba164799e 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 3e39c77171..3b88c088e9 100644 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/icons/obj/syringe.dmi b/icons/obj/syringe.dmi index e604b23f3f..20faa74a13 100644 Binary files a/icons/obj/syringe.dmi and b/icons/obj/syringe.dmi differ diff --git a/maps/southern_cross/items/headset_sc.dm b/maps/southern_cross/items/headset_sc.dm index d7212210f3..75936ecb01 100644 --- a/maps/southern_cross/items/headset_sc.dm +++ b/maps/southern_cross/items/headset_sc.dm @@ -11,6 +11,11 @@ desc = "A bowman headset used by pilots, has access to supply and explorer channels." icon_state = "pilot_headset_alt" +/obj/item/device/radio/headset/pilot/alt + name = "pilot's bowman headset" + desc = "A bowman headset used by pilots, has access to supply and explorer channels." + icon_state = "pilot_headset_alt" + /obj/item/device/radio/headset/explorer name = "explorer's headset" desc = "Headset used by explorers for exploring. Access to the explorer channel." diff --git a/maps/southern_cross/southern_cross-3.dmm b/maps/southern_cross/southern_cross-3.dmm index cda86ac00e..5b1e2a0caf 100644 --- a/maps/southern_cross/southern_cross-3.dmm +++ b/maps/southern_cross/southern_cross-3.dmm @@ -80,10 +80,10 @@ "bB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main) "bC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main) "bD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/machinery/embedded_controller/radio/airlock/access_controller{id_tag = "mining_airlock_control2"; name = "Mining Access Console"; pixel_x = 26; pixel_y = 26; tag_exterior_door = "mining_airlock_exterior2"; tag_interior_door = "mining_airlock_interior2"},/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/mining_main) -"bE" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_airlock_control2"; name = "Mining Access Button"; pixel_x = 6; pixel_y = 26; req_access = null; req_one_access = list(12,47)},/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "mining_airlock_interior2"; locked = 1; name = "Mining Interior Outpost"},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/mining_main) +"bE" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_airlock_control2"; name = "Mining Access Button"; pixel_x = 6; pixel_y = 26; req_access = null; req_one_access = list(12,47,48)},/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "mining_airlock_interior2"; locked = 1; name = "Mining Interior Outpost"},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/mining_main) "bF" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/mining_main) "bG" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/mining_main) -"bH" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "mining_airlock_exterior2"; locked = 1; name = "Mining Exterior Outpost"},/obj/effect/decal/cleanable/dirt,/obj/machinery/access_button/airlock_exterior{master_tag = "mining_airlock_control2"; pixel_y = 24; req_one_access = list(12,47)},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/mining_main) +"bH" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "mining_airlock_exterior2"; locked = 1; name = "Mining Exterior Outpost"},/obj/effect/decal/cleanable/dirt,/obj/machinery/access_button/airlock_exterior{master_tag = "mining_airlock_control2"; pixel_y = 24; req_one_access = list(12,47,48)},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/mining_main) "bI" = (/turf/simulated/wall/r_wall,/area/surface/outpost/main/security) "bJ" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/main/security) "bK" = (/obj/machinery/door/firedoor/glass,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/main/security) @@ -110,8 +110,8 @@ "cf" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/mining_main) "cg" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/mining_main) "ch" = (/obj/machinery/deployable/barrier,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/tiled,/area/surface/outpost/main/security) -"ci" = (/obj/machinery/light{dir = 1},/obj/structure/closet/secure_closet/guncabinet/rifle,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main/security) -"cj" = (/obj/structure/closet/secure_closet/guncabinet/rifle,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/main/security) +"ci" = (/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/structure/closet/secure_closet/guncabinet/phase,/turf/simulated/floor/tiled,/area/surface/outpost/main/security) +"cj" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/obj/structure/closet/secure_closet/guncabinet/phase,/turf/simulated/floor/tiled,/area/surface/outpost/main/security) "ck" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/structure/table/standard,/obj/item/weapon/book/codex/corp_regs,/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/red/border{dir = 5},/turf/simulated/floor/tiled,/area/surface/outpost/main/security) "cl" = (/obj/machinery/status_display,/turf/simulated/wall,/area/surface/outpost/main/gateway) "cm" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor/tiled/techfloor,/area/surface/outpost/main/gateway) @@ -264,10 +264,10 @@ "fd" = (/obj/structure/table/glass,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/firstaid/fire{pixel_x = 0; pixel_y = 0},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/main/first_aid) "fe" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid) "ff" = (/obj/effect/decal/cleanable/dirt,/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/plains/outpost) -"fg" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "mining1_airlock_exterior"; locked = 1; name = "Mining Exterior Outpost"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining1_airlock_control"; name = "Mining Access Button"; pixel_x = 0; pixel_y = -24; req_access = null; req_one_access = list(12,47)},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/mining_main) +"fg" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "mining1_airlock_exterior"; locked = 1; name = "Mining Exterior Outpost"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining1_airlock_control"; name = "Mining Access Button"; pixel_x = 0; pixel_y = -24; req_access = null; req_one_access = list(12,47,48)},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/mining_main) "fh" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/mining_main) "fi" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/mining_main) -"fj" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "mining1_airlock_interior"; locked = 1; name = "Mining Interior Outpost"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining1_airlock_control"; name = "Mining Access Button"; pixel_x = -6; pixel_y = -26; req_access = null; req_one_access = list(12,47)},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/mining_main) +"fj" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "mining1_airlock_interior"; locked = 1; name = "Mining Interior Outpost"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining1_airlock_control"; name = "Mining Access Button"; pixel_x = -6; pixel_y = -26; req_access = null; req_one_access = list(12,47,48)},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/mining_main) "fk" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/embedded_controller/radio/airlock/access_controller{id_tag = "mining1_airlock_control"; name = "Mining Access Console"; pixel_x = -26; pixel_y = -26; tag_exterior_door = "mining1_airlock_exterior"; tag_interior_door = "mining1_airlock_interior"},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main) "fl" = (/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main) "fm" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main) @@ -282,9 +282,9 @@ "fv" = (/obj/machinery/mineral/processing_unit_console,/turf/simulated/wall/r_wall,/area/surface/outpost/mining_main/refinery) "fw" = (/obj/machinery/mineral/processing_unit,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/refinery) "fx" = (/turf/simulated/wall,/area/surface/outpost/main/security) -"fy" = (/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/green/bordercorner2{dir = 10},/obj/structure/closet/crate/secure/gear{name = "explorer crate"; req_access = list(43)},/turf/simulated/floor/tiled,/area/surface/outpost/main/security) +"fy" = (/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/green/bordercorner2{dir = 10},/obj/structure/closet/crate/secure/gear{name = "explorer crate"; req_access = list(43)},/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/turf/simulated/floor/tiled,/area/surface/outpost/main/security) "fz" = (/obj/machinery/door/window/northright,/turf/simulated/floor/tiled,/area/surface/outpost/main/security) -"fA" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 1},/obj/structure/cable/blue,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/green/bordercorner2{dir = 5},/obj/structure/closet/crate/secure/gear{name = "explorer crate"; req_access = list(43)},/turf/simulated/floor/tiled,/area/surface/outpost/main/security) +"fA" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 1},/obj/structure/cable/blue,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/green/bordercorner2{dir = 5},/obj/structure/closet/crate/secure/gear{name = "explorer crate"; req_access = list(43)},/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/pill_bottle/spaceacillin,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/turf/simulated/floor/tiled,/area/surface/outpost/main/security) "fB" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass{name = "Gateway Access"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/gateway) "fC" = (/turf/simulated/wall,/area/surface/outpost/main/first_aid) "fD" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -36},/obj/structure/cable/blue,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/white/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 10},/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid) @@ -364,16 +364,16 @@ "gZ" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/machinery/light,/obj/machinery/status_display{pixel_x = 0; pixel_y = -32},/obj/item/device/paicard,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/obj/item/weapon/hand_labeler,/turf/simulated/floor/tiled,/area/surface/outpost/main/security) "ha" = (/obj/structure/closet/secure_closet/explorer,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/security) "hb" = (/obj/structure/closet/secure_closet/explorer,/obj/machinery/ai_status_display{pixel_y = -32},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/security) -"hc" = (/obj/structure/closet/secure_closet/explorer,/obj/structure/extinguisher_cabinet{pixel_x = 25},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/security) +"hc" = (/obj/structure/closet/secure_closet/explorer,/obj/structure/extinguisher_cabinet{pixel_x = 25},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/obj/item/weapon/pickaxe,/turf/simulated/floor/tiled,/area/surface/outpost/main/security) "hd" = (/obj/effect/floor_decal/borderfloor/corner{dir = 8},/obj/effect/floor_decal/corner/green/bordercorner{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main) "he" = (/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,/area/surface/outpost/main) "hf" = (/obj/effect/floor_decal/borderfloor/corner,/obj/effect/floor_decal/corner/green/bordercorner,/turf/simulated/floor/tiled,/area/surface/outpost/main) "hg" = (/obj/machinery/mech_recharger,/obj/structure/extinguisher_cabinet{pixel_x = -25},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/first_aid) "hh" = (/obj/structure/table/steel,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/multitool,/obj/machinery/ai_status_display{pixel_y = -32},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/first_aid) "hi" = (/obj/machinery/mech_recharger,/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/first_aid) -"hj" = (/obj/machinery/camera/network/main_outpost{c_tag = "MO - SAR Prep"; dir = 2},/obj/effect/landmark/start{name = "Search and Rescue"},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid) +"hj" = (/obj/structure/closet/secure_closet/medical_wall/pills{pixel_y = 32},/obj/item/weapon/storage/pill_bottle/spaceacillin,/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid) "hk" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/paleblue/border,/obj/effect/floor_decal/borderfloor/corner2,/obj/effect/floor_decal/corner/white/bordercorner2,/obj/structure/closet/secure_closet/medical_wall{name = "O- Blood Locker"; pixel_x = 0; pixel_y = -32},/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/machinery/iv_drip,/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid) -"hl" = (/obj/structure/closet/secure_closet/sar,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/paleblue/border,/obj/item/roller/adv{pixel_y = 5},/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid) +"hl" = (/obj/machinery/camera/network/main_outpost{c_tag = "MO - SAR Prep"; dir = 2},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid) "hm" = (/obj/structure/table/steel,/obj/machinery/recharger,/obj/machinery/status_display{pixel_x = 0; pixel_y = -32},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/white/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid) "hn" = (/obj/structure/table/steel,/obj/item/device/gps,/obj/item/device/gps{pixel_x = 3; pixel_y = 3},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid) "ho" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) @@ -386,7 +386,7 @@ "hv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) "hw" = (/obj/machinery/status_display,/turf/simulated/wall/r_wall,/area/surface/outpost/mining_main/gen_room) "hx" = (/turf/simulated/wall/r_wall,/area/surface/outpost/main/telecomms) -"hy" = (/obj/structure/closet/secure_closet/sar,/obj/machinery/light,/obj/item/weapon/storage/box/bodybags,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/white/border,/obj/item/roller/adv,/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid) +"hy" = (/obj/structure/closet/secure_closet/sar,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/paleblue/border,/obj/item/roller/adv{pixel_y = 5},/obj/item/weapon/storage/pill_bottle/spaceacillin,/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid) "hz" = (/turf/simulated/wall/r_wall,/area/surface/outpost/main/teleporter) "hA" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main) "hB" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main) @@ -455,7 +455,7 @@ "iM" = (/obj/machinery/power/terminal,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) "iN" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = -24},/obj/structure/cable/blue,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) "iO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) -"iP" = (/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/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) +"iP" = (/obj/structure/closet/secure_closet/sar,/obj/machinery/light,/obj/item/weapon/storage/box/bodybags,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/white/border,/obj/item/roller/adv,/obj/item/weapon/storage/pill_bottle/spaceacillin,/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid) "iQ" = (/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) "iR" = (/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) "iS" = (/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) @@ -475,7 +475,7 @@ "jg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/closet/toolcloset,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) "jh" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) "ji" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/surface/outpost/mining_main/gen_room) -"jj" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost Mining Atmospherics"; dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) +"jj" = (/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/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Mining Outpost Power South"; dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) "jk" = (/obj/machinery/atmospherics/pipe/tank/phoron{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) "jl" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) "jm" = (/turf/simulated/wall/r_wall,/area/surface/outpost/main/gen_room) @@ -600,14 +600,14 @@ "lB" = (/obj/structure/cable/heavyduty,/obj/machinery/power/terminal{dir = 4},/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/random/powercell,/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room/smes) "lC" = (/obj/machinery/power/smes/buildable/outpost_substation{charge = 500000; input_attempt = 1; input_level = 150000; output_level = 150000; RCon_tag = "Outpost - Dorms"},/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room/smes) "lD" = (/turf/simulated/wall,/area/surface/outpost/main/bar) -"lE" = (/obj/structure/table/marble,/obj/machinery/chemical_dispenser/bar_alc/full,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"lF" = (/obj/machinery/button/remote/blast_door{id = "barout"; name = "Bar Shutters"; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"lG" = (/obj/structure/table/marble,/obj/machinery/door/blast/shutters{dir = 4; id = "barout"; layer = 3.1; name = "Bar Shutters"},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"lH" = (/obj/item/weapon/stool,/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"lI" = (/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"lJ" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"lK" = (/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"lL" = (/obj/structure/extinguisher_cabinet{pixel_y = 30},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) +"lE" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) +"lF" = (/obj/structure/table/marble,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"lG" = (/obj/structure/table/marble,/obj/item/weapon/stool,/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"lH" = (/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"lI" = (/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"lJ" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; operating = 0; pixel_x = 0; pixel_y = 24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"lK" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/frame/extinguisher_cabinet,/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"lL" = (/obj/structure/table/marble,/obj/machinery/camera/network/main_outpost{c_tag = "MO - Bar West"; dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor/plating,/area/surface/outpost/main/bar) "lM" = (/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outpost/main/corridor) "lN" = (/obj/effect/overlay/snow/floor,/obj/machinery/light/small,/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outpost/main/corridor) "lO" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/holofloor/wood,/area/surface/outpost/main/gym) @@ -635,14 +635,14 @@ "mk" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plating,/area/surface/outpost/main/construction_area) "ml" = (/obj/machinery/light/small{dir = 8; pixel_x = 0},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room/smes) "mm" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room/smes) -"mn" = (/obj/structure/table/marble,/obj/machinery/chemical_dispenser/bar_soft/full,/obj/machinery/camera/network/main_outpost{c_tag = "MO - Bar West"; dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"mo" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"mp" = (/obj/structure/table/marble,/obj/machinery/cash_register/civilian{dir = 8; icon_state = "register_idle"; tag = "icon-register_idle (WEST)"},/obj/machinery/door/blast/shutters{dir = 4; id = "barout"; layer = 3.1; name = "Bar Shutters"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"mq" = (/obj/item/weapon/stool/padded,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"mr" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"ms" = (/obj/structure/bed/chair/wood,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"mt" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"mu" = (/obj/structure/table/woodentable,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/surface/outpost/main/bar) +"mn" = (/obj/structure/table/marble,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/stool/padded,/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"mo" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"mp" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"mq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"mr" = (/obj/structure/table,/obj/item/stack/material/wood,/obj/item/stack/material/wood,/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"ms" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/item/weapon/stock_parts/motor,/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"mt" = (/obj/machinery/light_construct,/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"mu" = (/obj/structure/table/marble,/turf/simulated/floor/plating,/area/surface/outpost/main/bar) "mv" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/surface/outpost/main/corridor) "mw" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/main/corridor) "mx" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "main4_airlock_exterior"; locked = 1; name = "Main Outpost Exterior"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "main4_airlock_control"; name = "Main Access Button"; pixel_x = 32; pixel_y = 0; req_access = null},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/corridor) @@ -666,13 +666,13 @@ "mP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/surface/outpost/main/construction_area) "mQ" = (/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room/smes) "mR" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room/smes) -"mS" = (/obj/machinery/light{dir = 8},/obj/machinery/vending/boozeomat{req_access = null},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"mT" = (/obj/structure/table/marble,/obj/machinery/door/blast/shutters{dir = 4; id = "barout"; layer = 3.1; name = "Bar Shutters"},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"mU" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"mV" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"mW" = (/obj/structure/table/woodentable,/obj/item/weapon/book/codex/lore/vir,/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"mX" = (/obj/structure/table/woodentable,/obj/item/device/paicard,/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"mY" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/camera/network/main_outpost{c_tag = "MO - Bar East"; dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) +"mS" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"mT" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/camera/network/main_outpost{c_tag = "MO - Bar East"; dir = 8},/obj/machinery/light_construct,/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"mU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/table,/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"mV" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"mW" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"mX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"mY" = (/obj/structure/table/woodentable,/obj/machinery/recharger,/obj/item/clothing/head/hardhat/orange,/turf/simulated/floor/plating,/area/surface/outpost/main/bar) "mZ" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/heavyduty{icon_state = "1-2"},/turf/simulated/floor/plating,/area/surface/outpost/main/corridor) "na" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/obj/machinery/camera/network/main_outpost{c_tag = "MO - Corridor Access North"; dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) "nb" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) @@ -693,14 +693,14 @@ "nq" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 1},/turf/simulated/floor/plating,/area/surface/outpost/main/construction_area) "nr" = (/obj/structure/sign/electricshock,/turf/simulated/wall,/area/surface/outpost/main/gen_room/smes) "ns" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "SMES Room"; req_one_access = list(12,47)},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room/smes) -"nt" = (/obj/machinery/smartfridge/drinks,/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"nu" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"nv" = (/obj/structure/table/marble,/obj/machinery/door/blast/shutters{dir = 4; id = "barout"; layer = 3.1; name = "Bar Shutters"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"nw" = (/obj/item/weapon/stool/padded,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"nx" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"ny" = (/obj/structure/bed/chair/wood{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"nz" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"nA" = (/obj/structure/table/woodentable,/obj/machinery/recharger,/obj/machinery/newscaster{pixel_x = 30; pixel_y = 0},/obj/item/clothing/head/hardhat/orange,/turf/simulated/floor/wood,/area/surface/outpost/main/bar) +"nt" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"nu" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/cups,/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 32; pixel_y = 0},/obj/item/weapon/book/codex/lore/vir,/turf/simulated/floor/tiled,/area/surface/outpost/main/gym) +"nv" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"nw" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"nx" = (/obj/structure/table/standard,/obj/item/device/paicard,/obj/item/weapon/book/codex/lore/vir,/turf/simulated/floor/tiled,/area/surface/outpost/main/dorms) +"ny" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass{name = "Bar"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/surface/outpost/main/bar) +"nz" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/green/border{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/dorms) +"nA" = (/obj/effect/decal/cleanable/dirt,/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel_dirty{outdoors = 1},/area/surface/outpost/main/dorms) "nB" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) "nC" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) "nD" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) @@ -709,7 +709,7 @@ "nG" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled,/area/surface/outpost/main/gym) "nH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/gym) "nI" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main/gym) -"nJ" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/cups,/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled,/area/surface/outpost/main/gym) +"nJ" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel_dirty{outdoors = 1},/area/surface/outpost/main/dorms) "nK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/main) "nL" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom) "nM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom) @@ -723,10 +723,8 @@ "nU" = (/turf/simulated/wall,/area/surface/outpost/main/construction_area) "nV" = (/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/surface/outpost/main/dorms) "nW" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/main/dorms) -"nX" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"nY" = (/obj/machinery/door/window/eastright{name = "Bar"; req_access = null; req_one_access = list(25,43,67)},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"nZ" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/surface/outpost/main/bar) -"oa" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor/wood,/area/surface/outpost/main/bar) +"nX" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small{dir = 4},/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel_dirty{outdoors = 1},/area/surface/outpost/main/dorms) +"nY" = (/turf/simulated/floor/wood{outdoors = 1},/area/surface/outside/path/plains) "ob" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "main4_airlock_interior"; locked = 1; name = "Main Outpost Interior"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "main4_airlock_control"; name = "Main Access Button"; pixel_x = 32; pixel_y = 6; req_access = null},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/corridor) "oc" = (/obj/structure/closet/athletic_mixed,/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/tiled,/area/surface/outpost/main/gym) "od" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/tiled,/area/surface/outpost/main/gym) @@ -746,7 +744,6 @@ "or" = (/turf/simulated/floor/tiled,/area/surface/outpost/main/dorms) "os" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/extinguisher_cabinet{pixel_x = 28; pixel_y = 0},/turf/simulated/floor/tiled,/area/surface/outpost/main/dorms) "ot" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/surface/outpost/main/bar) -"ou" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass{name = "Bar"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/bar) "ov" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) "ow" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) "ox" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) @@ -758,7 +755,6 @@ "oD" = (/obj/structure/table/bench/marble,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom) "oE" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom) "oF" = (/obj/machinery/recharge_station,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom) -"oG" = (/obj/effect/decal/cleanable/dirt,/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/main/dorms) "oH" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/main/dorms) "oI" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/main/dorms) "oJ" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 5},/obj/machinery/camera/network/main_outpost{c_tag = "MO - Dorms Access"; dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/main/dorms) @@ -800,7 +796,6 @@ "pt" = (/obj/structure/disposalpipe/junction/yjunction{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main) "pu" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom) "pv" = (/obj/structure/mirror{pixel_x = 28},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom) -"pw" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/main/dorms) "px" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "main1_airlock_exterior"; locked = 1; name = "Main Outpost Exterior"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "main1_airlock_control"; name = "Main Access Button"; pixel_x = 0; pixel_y = -24; req_access = null},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/main/dorms) "py" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/main/dorms) "pz" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/dorms) @@ -836,7 +831,6 @@ "qd" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom) "qe" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom) "qf" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom) -"qg" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small{dir = 4},/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/main/dorms) "qh" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/light,/turf/simulated/floor/tiled/steel,/area/surface/outpost/main/dorms) "qi" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/simulated/floor/tiled,/area/surface/outpost/main/dorms) "qj" = (/obj/structure/closet/wardrobe/mixed,/obj/item/clothing/shoes/boots/winter,/obj/item/clothing/suit/storage/hooded/wintercoat,/obj/item/clothing/suit/storage/hooded/wintercoat,/obj/machinery/light,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/dorms) @@ -1470,7 +1464,6 @@ "Cn" = (/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoresearch/xenoflora) "Co" = (/turf/simulated/floor/water/deep,/area/surface/outside/river/indalsalven) "Cp" = (/turf/simulated/wall,/area/surface/outside/path/plains) -"Cq" = (/turf/simulated/floor/wood,/area/surface/outside/path/plains) "Cr" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/extinguisher,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenobiology) "Cs" = (/obj/structure/disposalpipe/segment,/obj/effect/wingrille_spawn/reinforced,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio1"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/window/reinforced/full,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoresearch/xenobiology) "Ct" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio1"; name = "Containment Blast Doors"; opacity = 0},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/window/brigdoor/southright{name = "Containment Pen"; req_access = list(47)},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoresearch/xenobiology) @@ -1595,29 +1588,29 @@ aaaeaeaeaeaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcuajaj aaaeaeaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucuajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbmbnbnbnbnbnbnbnbmbobpblbqbqbqbqbqbqbqbqbqboajajajaCaCaCaCdYdZcYcYeaebeccEedeeeecEeedbcEcEefegcFehaiaiaiajajajajajajajajajajbJeiejekelemeneoepeqereqeseteuevewexeyezbRajajajajajajajajajajajajagagagagagagagaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa aaaeaeaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucucucuajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbmbnbnbnbnbnbnbnbmbobpblbqbqbqbqbqbqbqbqbqbobhbhbhaFeAeBaFeCeDeEeFbceGbdeHeIeIeJeKeeeLcEeMeMeMeMeNaiaiaiajajajajajajajajajajbIeOePeQeReSeTbJeUeVeWeXeYbReZfafbfcfdfebQajajajajajajajajajajajajagagagagagagagaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa aaaeaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucucucucucuajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbnbnbnbnbnbnbnbobpblbmbqbqbqbqbqbqbqbmbobhbhfffgfhfifjfkflfmfnfmfofpfqfrfsftfufvfwcEeMeMeMeMeNaiaiaiaiajajajajajajajbIbIbIfxfxfxfyfzfAfxcLbjfBbjcLfCfDfEfFfCfCfCbQbQajajajajajajajajajajajagagagagagagagaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa -aaaeaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucucucucucuajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbnbnbnbnbnbnbnbobpblbmbqbqbqbqbqbqbqbmbobhbhfGaEfHfIaEfJfKfLbZbdeGbdeHeIfMfNfOeefPcEeMeMeMeMeNaiaiaiaiaiaiaiaiaiaifQbJfRfSbJfTfUfVcJfWgdbJfXfYfZbRgagbgbgchjjrgbgebRajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa -aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucucucucucuajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbnbnbnbnbnbnbnbobpblbmbqbqbqbqbqbqbqbmboaiaiaiaEaEgfaEggggaEghgigjgkcEgleeeegmeedbcEeMeMeMeMgnaiaiaiaiaiaiaiaiaiaifQgogpgqgrgscJgtelelgugvgwgxgygzgAgBgBgCgbgbgDgEbRajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa -aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucucucucucuajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbnbnbnbnbnbnbnbobpblbmbqbqbqbqbqbqbqbmboaiaiaiaGgFgGgHgGgIaGgJgKgLgKcEgMgNgOgPgQgRcEgSgSgSgSgTaiaiaiaiaiaiaiaiaiaigUbIgVgWbIgXgZgYhahbhcfxhdhehffChghhhihkhyhlhmhnbQajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa +aaaeaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucucucucucuajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbnbnbnbnbnbnbnbobpblbmbqbqbqbqbqbqbqbmbobhbhfGaEfHfIaEfJfKfLbZbdeGbdeHeIfMfNfOeefPcEeMeMeMeMeNaiaiaiaiaiaiaiaiaiaifQbJfRfSbJfTfUfVcJfWgdbJfXfYfZbRgagbgbgchlhjgbgebRajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa +aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucucucucucuajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbnbnbnbnbnbnbnbobpblbmbqbqbqbqbqbqbqbmboaiaiaiaEaEgfaEggggaEghgigjgkcEgleeeegmeedbcEeMeMeMeMgnaiaiaiaiaiaiaiaiaiaifQgogpgqgrgscJgtelelgugvgwgxgygzgAgBgBgCjrjrgDgEbRajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa +aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucucucucucuajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbnbnbnbnbnbnbnbobpblbmbqbqbqbqbqbqbqbmboaiaiaiaGgFgGgHgGgIaGgJgKgLgKcEgMgNgOgPgQgRcEgSgSgSgSgTaiaiaiaiaiaiaiaiaiaigUbIgVgWbIgXgZgYhahbhcfxhdhehffChghhhihkiPhyhmhnbQajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucucucuajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbnbnbnbnbnbnbnbobpblbmbqbqbqbqbqbqbqbmboajaiaiaGaGhohphqhrhshthuhvhuhwaGaGaGaGaGaGaGajajajajakaiaiaiaiaiajajajajajajbIhxhxhxhxhxhzhzhzhzhzhAhehBhChChChChChDhDhDhChCajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucuajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbnbmbmbmbnbnbnbobpblbmbqbqbqbqbqbqbqbmboajaiaiaiaGhEhFhuhGhHhIhJhKhLhMhNhOhPhPhQaGajajajajajakaiaiaiaiajajajajajajajajhxhRhShThxhUhVhWhXhYhAhehBhChZiaibicidieifighCajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucuajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbmbmbmbmbmbnbnbobpblbmbmbqbqbqbqbqbmbmboajaiaiaiaGihhFhuiiijikiliminioipipiqirisaGajajajajajakaiaiaiajajajajajajajajajhxitiuivhxiwixixiyhziziAiBhCiCiDiDiDiEiEiDiFhCajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa -aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajiGiHiIiIiIiIiIiIiIiIiIiJiGiHiIiIiIiIiIiIiIiIiIiJiGajaiaiaGiKiLiMhGhuiNiOiPiQiRiSiTiUiViWaGajajajajajakaiaiaiajajajajajajajajajhxhxiXhxhxiYiZjajbhzhAhejchCiEiEjdififiEiEiDhDajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa -aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajaGaHajajajaiaiaiajajajaHaGaHajajajaiaiaiajajajaHaGajaiaiaGaGjejfjgjhaGaGjiaGaGjjjkjljlaGaGajajajajajakaiaiaiajajajajajajajajajjmjnjojpjqhzhzEbhzhzjshejthDjuiEjvjwjxiDiEiEhDajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa +aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajiGiHiIiIiIiIiIiIiIiIiIiJiGiHiIiIiIiIiIiIiIiIiIiJiGajaiaiaGiKiLiMhGhuiNiOjjiQiRiSiTiUiViWaGajajajajajakaiaiaiajajajajajajajajajhxhxiXhxhxiYiZjajbhzhAhejchCiEiEjdififiEiEiDhDajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa +aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajaGaHajajajaiaiaiajajajaHaGaHajajajaiaiaiajajajaHaGajaiaiaGaGjejfjgjhaGaGjiaGaGlEjkjljlaGaGajajajajajakaiaiaiajajajajajajajajajjmjnjojpjqhzhzEbhzhzjshejthDjuiEjvjwjxiDiEiEhDajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajaiaiaiaiajajajajajajajajaiaiaiajajajajajaiaiaiaGaGaGaGjyaGjzjAjzaGaGaGaGaGaGajajajajajajakaiaiaiajajajajajajajajajjmjBjCjDjEjFjGjHjIjJfXhejKhDjLiEjMiEiDiDiEiEhDajjNjNajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajaiaiaiaiaiajajajajajajajajaiaiaiajajajajaiaiaijOjPjPjPjQjPjPjRjSjSjSjSjSjSjSjSjSjSjSjSjSjTjSjSjSjUjUjUjUjUjUjUjUjUjVjWjXjYjZkakbkckbkdkbkekfkgkhkikjkikikkiEiEhDajajjNajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiakaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiakaiaiaiajajajajajajajajajjmkljCkmjqknkokpkqkrksktkuhDkviDjviEiEiEiEiEhCajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiakaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiakaiaiaiajajajajajajajajajjmkwkxkyjqkzkAkBkCkCjJkDkEhChCkFkGkHkIkJkKkLhCajazajajjNajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajaiaiaiaiaiajajajajajajajajajkMajajajajajajajajajajajajajajajajajajajajakaiaiaiajajajajajajajajajkNkOkOkOkOkOkOkOkNkPkQkRkSkThChDkUhDhDhChChChCajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajaiaiaiaiajajkVkVkVkVkWkWkXkYkXkZkZkZkZlalakZkZkZkZajajajajajajajajajakaiaiaiajajajajajajajajajkNlblcldlclelflglhliljlkllfXjJlmlnlolplqlrlsltlujNajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa -aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajajkVkVlvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLkZkZajajajajajajajajaklMlMlNajajajajajajajajajkNlOlPlPlPlPlQlRlSlTlUlVlWlXlYlZmambmcmdmemfmgmhjNjNjNajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa -aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajajkVmilylylymjmklAmlmmlDmnmompmqmrmsmsmtmukZajajajajajajajajmvmwmxmymyajajajajajajajajmzmAmBmBmBmBmCmDmzhdmEmFmGfXjJmHmImJmKkCmLmMkCmNajjNjNajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa -aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajajkVlvlymOlymPlylAmQmRlDmSlKmTmUmVmWmXlKmYkZajajajajajajajajmZnanbncmwajajajajajajajajmzndnendnendndnfkNngfXnhkSninjnknlnknkkCkCkCkCajajajjNjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa -aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajajkVnmlynnnonpnqlAnrnslDntnunvnwnxnynynznAkZajajajajajajajajmZnBnCnDmwajajajajajajajajkNnEnFnGnHnIndnJkNkCjJnKkEnjnjnLnMnNnOnPnjajajajazajajjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa -aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiazajkVnQnRlylynSnTnUnVnWlDnXlKnYlKnZoalKlKnXkZajajajajajajajmymvmwobmymymyajajajajajajajkNocodoeofogndohkOoifXiAojokolnNomonnknknjajajajajajajjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa -aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajookVkVkVkWkWopoqnUoroslDotlalalDoulDlalaotkZmymymwmwmymwmwmyovowoxoyozmymwmwmymwmwmymykNkOmzoAmzkOmzmzkOoBfXnhkSnkoCnNoDnNoEoFnjajajajajajajjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa -aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaioGoHoIoJoKoLoMoNoOoPoQoRoSoToUoUoVoWoXoUoYoToUoZpapbpbpcpbpdpbpepfpgphpipjpbpbpkpdpbpboZplpmlipnpopmpppmpqprprpsptnkpunNoDpvnknknjnjnjajajajajjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa -aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaipwpxpypzpApBorpCpDpEpFpGpHpEpEpIpEpJpEpEpKpEpLpMpNpOpPpPpPpQpPpRpSpTpUpPpPpPpOpPpQpPpVpWgwlXlXpXpYpYpZpYpYpYkbqaqbnkqcnNoDpvnkqdqeqfnjajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa -aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiqgooqhqiooqjqkqlorqmqnqoqpqqqrqsorqlqtquqvqwqxqyqzqAqzqBqzqzqCqDqEqFqGqHqzqzqAqIqzqzqzqyqJqKqKqLqKqKqKqKqMfXqNqOqPnkqQqRqSqTqUqVqWqXnjajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa +aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajajkVkVlvlwlxlylzlAlBlClDlFlHlGlHlIlJlHlKkZkZajajajajajajajajaklMlMlNajajajajajajajajajkNlOlPlPlPlPlQlRlSlTlUlVlWlXlYlZmambmcmdmemfmgmhjNjNjNajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa +aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajajkVmilylylymjmklAmlmmlDlLmomnmqmpmqmqmsmrkZajajajajajajajajmvmwmxmymyajajajajajajajajmzmAmBmBmBmBmCmDmzhdmEmFmGfXjJmHmImJmKkCmLmMkCmNajjNjNajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa +aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajajkVlvlymOlymPlylAmQmRlDmtlHmulHmSlHlHlHmTkZajajajajajajajajmZnanbncmwajajajajajajajajmzndnendnendndnfkNngfXnhkSninjnknlnknkkCkCkCkCajajajjNjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa +aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajajkVnmlynnnonpnqlAnrnslDlHmVmUmXmWmXmXntmYkZajajajajajajajajmZnBnCnDmwajajajajajajajajkNnEnFnGnHnIndnukNkCjJnKkEnjnjnLnMnNnOnPnjajajajazajajjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa +aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiazajkVnQnRlylynSnTnUnVnWlDlHlHlHlHnvlHlHlHnwkZajajajajajajajmymvmwobmymymyajajajajajajajkNocodoeofogndohkOoifXiAojokolnNomonnknknjajajajajajajjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa +aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajookVkVkVkWkWopoqnUnxoslDlalalalDnylDlalaotkZmymymwmwmymwmwmyovowoxoyozmymwmwmymwmwmymykNkOmzoAmzkOmzmzkOoBfXnhkSnkoCnNoDnNoEoFnjajajajajajajjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa +aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiainAoHoIoJoKoLoMoNoOoPoQoRoSnzoUoUoVoWoXoUoYoToUoZpapbpbpcpbpdpbpepfpgphpipjpbpbpkpdpbpboZplpmlipnpopmpppmpqprprpsptnkpunNoDpvnknknjnjnjajajajajjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa +aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiainJpxpypzpApBorpCpDpEpFpGpHpEpEpIpEpJpEpEpKpEpLpMpNpOpPpPpPpQpPpRpSpTpUpPpPpPpOpPpQpPpVpWgwlXlXpXpYpYpZpYpYpYkbqaqbnkqcnNoDpvnkqdqeqfnjajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa +aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiainXooqhqiooqjqkqlorqmqnqoqpqqqrqsorqlqtquqvqwqxqyqzqAqzqBqzqzqCqDqEqFqGqHqzqzqAqIqzqzqzqyqJqKqKqLqKqKqKqKqMfXqNqOqPnkqQqRqSqTqUqVqWqXnjajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajooooooooqYqYqlorqYqYqYqYqYqYqYorqlqYqYoooooomymymwmwmymwmwmyqZranCrbrcmymwmwmymwmwmymykCrdrerfrgrhrirjrkfXrlrmrnrorpnNrqrrnkqdrsqfnjajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiazajoortrurvrwrxryrzrArBqYrCrDrEryrxrFrGrHrIooajajajajajajajmyrJmyrKmwmymyajajajajajajajkCrLrMrMrMrMrMrMrMrMrNrOrPnknknkrQnknknkrRnjnjajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajajoHrSrTrUqYqlrVqYrWrXqYrYrZqYsaqlqYsbscsdoHajajajajajajajajsesfnbncmwajajajajajajajajajrLsgshsisisjskslsmsnsospsqsrssstsusvswsxrLajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa @@ -1662,15 +1655,15 @@ AOAPaetRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtR AOAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiaiaiaiajajajajajajajajajajajajajwYBoBpyXBqBryjzaykykykykykzazUBsBtyXBpBuxiBvBwyCAqyCBxByBzAJyCxGBABBBCyCxCxGBDBExCususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvlvJutututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu AOAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiaiaiajajajajajajajajajajajajajajajwYwYwYwYwYEaykyjykyjyjyjykyjAYEcwYwYwYwYxixixiBHBIyCBJAsBKBLBMyPBNyNBOBPytBQxixixiususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvJutututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu AOAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiaiajajajajajajajajajajajajajajajajajajwYBRyjykBSBTBUBVEdBXBUBYBZCaCbCcCdCeCfCfxiCgChCiCjyCyyAJCkxGyzyCyCClCmCnxiususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlBmBnutututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu -AOCoCoAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajCpCqCqCpajajajajajajajajajajajajajajajajajajwYwYCryjwYCsCtCuAeCvCwCxwYyjCywYwYCfCfbpxixiCzCAytxCxCCBytCCxCxCytCmCDxixiususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu -AOAPCoCoAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajCECqCqCFAPAPAPajajajajajajajajajajajajajajajajwYwYCGwYCHzrzrAezrzrCHwYCIwYwYCJbhbhbpCKxixiCLytCMxGCNCOCPCQxGBQCnxixiusususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu -AOAPAPAPAPCoAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPCECqCqCRCoAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPajwYwYwYCSzrzrAezrAQCTwYwYwYajCKCKCKCKCKajxixixiCUxGCVAzCWxGCXxixixiususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlBmBnututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu -aaaeAPAPAPCoCoCoAPAPAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPCYCqCqCRCoCoCoCoAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPajajwYCZzrzrAezrzrDawYajajajajajajajajajajajxixGzQzQDbzQzQDcxiususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu -aaaeaeAPAPAPAPCoCoAPAPAPAPAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPAPCoCYCqCqCRAPAPCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoAPAPAPwYDdDdDdwYwYwYwYwYajajajajajajajajajajusxixCxDxCxixCxDxCxiususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu -aaaeaetRAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPCoCoCoCoCECqCqCFAPAPAPAPAPAPAPAPAPCoCoCoAPCoCoCoCoCoCoCoAPAPAPajajajajajajajajajajajajajusususususususususususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu -aaaeaetRtRtRtRAPAPAPAPAPAPAPAPAPCoCoAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPAPCoCoAPAPAPCECqCqCFAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPCoCoCoCoAPAPAPAPAPAPajajajajajajajususususususususususususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvmvnututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu -aaaeaetRtRtRtRtRtRtRtRAPAPAPAPAPAPCoCoCoAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPAPAPAPAPAPAPAPAPCECqCqCFAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRAPAPAPAPCoCoCoCoCoAPAPAPAPAPAPAPAPusususususususususususususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvJututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu -aaaeaetRtRtRtRtRtRtRtRtRtRtRAPAPAPAPAPCoCoCoAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPAPAPAPAPAPAPAPAPtRCpCqCqCptRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRAPAPAPAPAPCoCoCoCoAPAPAPAPAPAPAPAPAPAPAPususususususususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvlvmvnutututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu +AOCoCoAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajCpnYnYCpajajajajajajajajajajajajajajajajajajwYwYCryjwYCsCtCuAeCvCwCxwYyjCywYwYCfCfbpxixiCzCAytxCxCCBytCCxCxCytCmCDxixiususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu +AOAPCoCoAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajCEnYnYCFAPAPAPajajajajajajajajajajajajajajajajwYwYCGwYCHzrzrAezrzrCHwYCIwYwYCJbhbhbpCKxixiCLytCMxGCNCOCPCQxGBQCnxixiusususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu +AOAPAPAPAPCoAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPCEnYnYCRCoAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPajwYwYwYCSzrzrAezrAQCTwYwYwYajCKCKCKCKCKajxixixiCUxGCVAzCWxGCXxixixiususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlBmBnututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu +aaaeAPAPAPCoCoCoAPAPAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPCYnYnYCRCoCoCoCoAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPajajwYCZzrzrAezrzrDawYajajajajajajajajajajajxixGzQzQDbzQzQDcxiususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu +aaaeaeAPAPAPAPCoCoAPAPAPAPAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPAPCoCYnYnYCRAPAPCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoAPAPAPwYDdDdDdwYwYwYwYwYajajajajajajajajajajusxixCxDxCxixCxDxCxiususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu +aaaeaetRAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPCoCoCoCoCEnYnYCFAPAPAPAPAPAPAPAPAPCoCoCoAPCoCoCoCoCoCoCoAPAPAPajajajajajajajajajajajajajusususususususususususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu +aaaeaetRtRtRtRAPAPAPAPAPAPAPAPAPCoCoAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPAPCoCoAPAPAPCEnYnYCFAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPCoCoCoCoAPAPAPAPAPAPajajajajajajajususususususususususususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvmvnututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu +aaaeaetRtRtRtRtRtRtRtRAPAPAPAPAPAPCoCoCoAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPAPAPAPAPAPAPAPAPCEnYnYCFAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRAPAPAPAPCoCoCoCoCoAPAPAPAPAPAPAPAPusususususususususususususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvJututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu +aaaeaetRtRtRtRtRtRtRtRtRtRtRAPAPAPAPAPCoCoCoAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPAPAPAPAPAPAPAPAPtRCpnYnYCptRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRAPAPAPAPAPCoCoCoCoAPAPAPAPAPAPAPAPAPAPAPususususususususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvlvmvnutututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu aaaeaeaetRtRtRtRtRtRtRtRtRtRtRtRAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPAPAPAPAPAPAPAPtRtRtRtRtRaiaitRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRAPAPAPAPAPAPCoCoCoCoCoCoAPAPAPAPAPAPAPAPusususususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvlvlvJutututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu aaaeaeaetRtRtRtRtRtRtRtRtRtRtRtRtRtRAPAPAPAPAPAPCoCoCoAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPCoCoAPAPAPAPAPtRtRtRtRtRtRtRaiaiaitRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRvkvkvkvkAPAPAPAPAPAPAPCoCoCoCoCoCoCoAPAPAPAPAPAPusususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvlvlvJututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu aaaeaeaetRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRAPAPAPAPAPAPCoCoAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPCoCoAPAPAPAPtRtRtRtRtRtRtRtRtRtRaiaitRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRvkvkvkvkvkvkvkvkvkvkvkAPAPAPAPAPAPAPAPCoCoCoCoAPAPAPAPAPAPususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvlvlvmvnutututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu @@ -1696,8 +1689,8 @@ aaaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvktRtRtRtRtR aaaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvktRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRDgtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaivkvkvkvkvkvkvkvkvkvkvkvkAPAPAPCoCoAPAPAPvkvkvkvkvkvkaiaiaiaiaiaiaiaiaitCaiaiaivkvkvkvkvkvkvkvkvkvkaiaivIvIvIvIvlvlvlvlvlvlvlvlvlvlvJututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu aaaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvktRtRtRtRtRtRtRtRtRtRtRtRtRDgtRtRtRtRtRtRtRtRtRtRtRtRtRvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaivkvkvkvkaiaiaiaiaiaiaiaiaivkvkvkvkvkvkvkvkvkvkAPAPCoCoCoAPAPvkvkvkvkaiaiaiaiaiaivkvkvkvkvkDevIDhDhDhDhDhDhDhDhDhDhDhvkaiaivIvIvIvIvlvlvlvlvlvlvlvlvlvlvJututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu aaaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvktRtRtRDgtRtRtRtRtRtRtRtRtRvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaiaiaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaiaiaivkvkvkvkvkvkCpDiDiDjDjDjDiDiDkCpaiaiaiaivkvkvkvkvkvkvkvkDevIDhDhDhDhDhDhDhDhDhDhDhDhaiaivIvIvIvIvlvlvlvlvlvlvlvlvlvlvJututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu -aaaeaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaivkvkaiaiaiCqCqCqCqCqCqCqCqCqCqaiaivkvkvkvkvkvkvkvkvkvkDevIDhDhDhDhDhDhDhDhDhDhDhDhvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvmvnututututwUwUwUwUwUwUututututututututwUwUwUwUwUwUwUwUwUwUwUuu -aaaeaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaiaiaiCqCqCqCqCqCqCqCqCqCqaivkvkvkvkvkvkvkvkvkvkvkDevkDhDhDhDhDhDhDhDhDhDhDhDhvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututwUwUwUwUwUututututututututututwUwUwUwUwUwUwUwUwUwUuu +aaaeaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaivkvkaiaiainYnYnYnYnYnYnYnYnYnYaiaivkvkvkvkvkvkvkvkvkvkDevIDhDhDhDhDhDhDhDhDhDhDhDhvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvmvnututututwUwUwUwUwUwUututututututututwUwUwUwUwUwUwUwUwUwUwUuu +aaaeaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaiaiainYnYnYnYnYnYnYnYnYnYaivkvkvkvkvkvkvkvkvkvkvkDevkDhDhDhDhDhDhDhDhDhDhDhDhvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututwUwUwUwUwUututututututututututwUwUwUwUwUwUwUwUwUwUuu aaaeaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaivkvkvkCpDlDmDmDnDnDnDmDmCpvkvkvkvkvkvkvkvkvkvkvkvkDevkDhDhDhDhDhDhDhDhDhDhDhvIvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvJututututwUwUwUwUwUutututDoDpDpDpvnututututwUwUwUwUwUwUwUwUuu aaaeaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaivkvkvkvkvkvkvkAPAPAPCoCoAPAPvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvIvIvIvIvIvkvkvkvIvIvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvmvnututututwUwUwUwUututDoDqvlvlvlvmDpvnututututwUwUwUwUwUwUuu aaaeaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaivkvkvkvkvkvkvkvkvkvkAPAPAPCoAPAPvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututwUwUwUwUututDrvlvIvIvlvlvlvmDpvnututututwUwUwUwUuu @@ -1725,12 +1718,12 @@ aaaeaevIvIvIvIvIvIvIvIvIvIvIvIvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDx aaaeaevIvIvIvIvIvIvIvIvIvIvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIAPAPAPAPAPAPDsDuvlvlvlvlvlvlvJututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu aaaeaevIvIvIvIvIvIvIvIvIvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIAPAPAPAPutDtDuvlvlvlvlBmBnututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu aaaeaeDyDyvIvIvIvIvIvIvIvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlAPAPAPututDtDsDsDuvlvJututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu -aaaeaeaeDyDyDyDyvIvIvIvIvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDzvkDzvkCpCqCqCpvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlAPAPutututututDtDsBnutututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu -aaaeaeaeDyDyDyDyDyDyvIvIvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDACqCqDBDvDvDvDvDvDvDvvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvmDpDpvnutututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu -aaaeaeaeDyDyDyDyDyDyDyDyvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDvDvDACqCqDBDvDvDvDvDvDvDvDvvkvkvkvkDvDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvmvnututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu -aaaeaeaeDyDyDyDyDyDyDyDyDyvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvIvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDvDvDvDvDACqCqDBDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvmDpvnututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu -aaaeaeaeDyDyDyDyDyDyDyDyDyDyvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvIvIvIvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDvDvDvDvDvDACqCqDBDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvJututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu -aaaeaeaeDyDyDyDyDyDyDyDyDyDyDyvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvIvIvIvIvIvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDvDvDvDzvkDzvkCpCqCqCpvkvkvkDvDvDvDvDvDvDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvmvnutututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu +aaaeaeaeDyDyDyDyvIvIvIvIvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDzvkDzvkCpnYnYCpvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlAPAPutututututDtDsBnutututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu +aaaeaeaeDyDyDyDyDyDyvIvIvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDAnYnYDBDvDvDvDvDvDvDvvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvmDpDpvnutututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu +aaaeaeaeDyDyDyDyDyDyDyDyvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDvDvDAnYnYDBDvDvDvDvDvDvDvDvvkvkvkvkDvDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvmvnututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu +aaaeaeaeDyDyDyDyDyDyDyDyDyvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvIvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDvDvDvDvDAnYnYDBDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvmDpvnututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu +aaaeaeaeDyDyDyDyDyDyDyDyDyDyvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvIvIvIvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDvDvDvDvDvDAnYnYDBDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvJututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu +aaaeaeaeDyDyDyDyDyDyDyDyDyDyDyvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvIvIvIvIvIvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDvDvDvDzvkDzvkCpnYnYCpvkvkvkDvDvDvDvDvDvDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvmvnutututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu aaaeaeaeDyDyDyDyDyDyDyDyDyDyDyDyDyvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvIvIvIvIvIvIvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvmvnututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu aaaeaeaeDyDyDyDyDyDyDyDyDyDyDyDyDyDyDyDyDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvIvIvIvIvIvIvIvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvJututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu aaaeaeaeDyDyDyDyDyDyDyDyDyDyDyDyDyDyDyDyDyDyvIvIDxDxDxDxvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvIvIvIvIvIvIvIvIDyvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvJututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu diff --git a/maps/southern_cross/southern_cross_jobs.dm b/maps/southern_cross/southern_cross_jobs.dm index 0daeaa97f6..09b380aa9a 100644 --- a/maps/southern_cross/southern_cross_jobs.dm +++ b/maps/southern_cross/southern_cross_jobs.dm @@ -100,9 +100,11 @@ var/const/access_explorer = 43 access = list(access_pilot, access_explorer, access_research) //VOREStation Edit minimal_access = list(access_pilot, access_explorer, access_research) //VOREStation Edit outfit_type = /decl/hierarchy/outfit/job/explorer2 +/* alt_titles = list( "Explorer Technician" = /decl/hierarchy/outfit/job/explorer2/technician, "Explorer Medic" = /decl/hierarchy/outfit/job/explorer2/medic) +*/ /datum/job/sar title = "Search and Rescue" diff --git a/maps/southern_cross/structures/closets/misc.dm b/maps/southern_cross/structures/closets/misc.dm index 934b0d8b3d..2c9e8afd15 100644 --- a/maps/southern_cross/structures/closets/misc.dm +++ b/maps/southern_cross/structures/closets/misc.dm @@ -26,6 +26,18 @@ new /obj/item/weapon/gun/projectile/shotgun/pump/rifle(src) return +/obj/structure/closet/secure_closet/guncabinet/phase + name = "phase pistol cabinet" + req_one_access = list(access_explorer,access_brig) + +/obj/structure/closet/secure_closet/guncabinet/phase/New() + ..() + new /obj/item/weapon/gun/energy/phasegun(src) + new /obj/item/weapon/gun/energy/phasegun(src) + // One spare cell per gun + new /obj/item/weapon/cell/device/weapon(src) + new /obj/item/weapon/cell/device/weapon(src) + //Explorer Lockers /obj/structure/closet/secure_closet/explorer @@ -108,6 +120,7 @@ new /obj/item/taperoll/medical(src) new /obj/item/device/gps(src) new /obj/item/device/geiger(src) + new /obj/item/bodybag/cryobag(src) return //Pilot Locker diff --git a/maps/submaps/surface_submaps/mountains/CaveTrench.dmm b/maps/submaps/surface_submaps/mountains/CaveTrench.dmm index a12f799868..9fac74ac0e 100644 --- a/maps/submaps/surface_submaps/mountains/CaveTrench.dmm +++ b/maps/submaps/surface_submaps/mountains/CaveTrench.dmm @@ -3,37 +3,38 @@ "c" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/CaveTrench) "d" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) "e" = (/turf/simulated/floor/outdoors/rocks,/area/submap/CaveTrench) -"f" = (/turf/simulated/floor/water,/area/submap/CaveTrench) -"g" = (/mob/living/simple_animal/hostile/malf_drone{desc = "An automated combat drone with an aged apperance."},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) -"h" = (/mob/living/simple_animal/fish/trout{faction = "malf_drone"},/turf/simulated/floor/water,/area/submap/CaveTrench) +"f" = (/turf/simulated/floor/water{outdoors = 0},/area/submap/CaveTrench) +"g" = (/mob/living/simple_animal/hostile/malf_drone{desc = "An automated combat drone with an aged apperance."; returns_home = 1},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"h" = (/mob/living/simple_animal/fish/trout{faction = "malf_drone"},/turf/simulated/floor/water{outdoors = 0},/area/submap/CaveTrench) "i" = (/obj/effect/decal/remains/human,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) "j" = (/turf/simulated/wall,/area/submap/CaveTrench) "k" = (/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) -"l" = (/mob/living/simple_animal/fish/trout,/turf/simulated/floor/water,/area/submap/CaveTrench) +"l" = (/mob/living/simple_animal/fish/trout,/turf/simulated/floor/water{outdoors = 0},/area/submap/CaveTrench) "m" = (/turf/simulated/wall/wood,/area/submap/CaveTrench) -"n" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lantern,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) -"o" = (/obj/structure/table/woodentable,/obj/item/weapon/gun/projectile/shotgun/pump,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) -"p" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) -"q" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) -"r" = (/obj/structure/table/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) -"s" = (/obj/structure/table/steel,/obj/item/weapon/paper{info = "Rellek's telling me that we're in deep shit if the townies found out I'm cooking up drones out here. Like I give a fuck, We're minning our asses off only to dig into some bug nest to get our legs chewed. Well I'm not looking a gift horse in the mouth. Those drone dudes out in the wild hooked us up with these machines so long as they get some of the metal we dig up. Win win for us, Guess we're retiring early after all."; name = "Note"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) -"t" = (/obj/structure/table/steel,/obj/item/robot_parts/robot_component/actuator,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) -"u" = (/obj/effect/decal/cleanable/blood,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) -"v" = (/obj/structure/simple_door/wood,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) -"w" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) -"x" = (/obj/structure/table/steel,/obj/item/device/robotanalyzer,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) -"y" = (/obj/structure/table/steel,/obj/item/weapon/storage/toolbox,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) -"z" = (/obj/structure/table/bench/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) -"A" = (/obj/effect/decal/remains,/obj/item/clothing/under/rank/miner,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) -"B" = (/turf/simulated/shuttle/plating,/area/submap/CaveTrench) -"C" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/storage/hooded/wintercoat/miner,/obj/item/clothing/suit/storage/hooded/wintercoat/miner,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) -"D" = (/obj/structure/coatrack,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) -"E" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) -"F" = (/obj/item/weapon/storage/box/shotgunammo,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) -"G" = (/obj/structure/table/steel,/obj/item/robot_parts/l_leg,/obj/item/robot_parts/head,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) -"H" = (/obj/effect/decal/cleanable/blood/gibs/robot,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) -"I" = (/obj/machinery/power/port_gen/pacman,/turf/simulated/shuttle/plating,/area/submap/CaveTrench) -"J" = (/obj/machinery/drone_fabricator,/turf/simulated/shuttle/plating,/area/submap/CaveTrench) +"n" = (/mob/living/simple_animal/hostile/malf_drone{desc = "An automated combat drone with an aged apperance."; returns_home = 1},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"o" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lantern,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"p" = (/obj/structure/table/woodentable,/obj/item/weapon/gun/projectile/shotgun/pump,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"q" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"r" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"s" = (/obj/structure/table/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"t" = (/obj/structure/table/steel,/obj/item/weapon/paper{info = "Rellek's telling me that we're in deep shit if the townies found out I'm cooking up drones out here. Like I give a fuck, We're minning our asses off only to dig into some bug nest to get our legs chewed. Well I'm not looking a gift horse in the mouth. Those drone dudes out in the wild hooked us up with these machines so long as they get some of the metal we dig up. Win win for us, Guess we're retiring early after all."; name = "Note"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"u" = (/obj/structure/table/steel,/obj/item/robot_parts/robot_component/actuator,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"v" = (/obj/effect/decal/cleanable/blood,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"w" = (/obj/structure/simple_door/wood,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"x" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"y" = (/obj/structure/table/steel,/obj/item/device/robotanalyzer,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"z" = (/obj/structure/table/steel,/obj/item/weapon/storage/toolbox,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"A" = (/obj/structure/table/bench/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"B" = (/obj/effect/decal/remains,/obj/item/clothing/under/rank/miner,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"C" = (/turf/simulated/shuttle/plating,/area/submap/CaveTrench) +"D" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/storage/hooded/wintercoat/miner,/obj/item/clothing/suit/storage/hooded/wintercoat/miner,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"E" = (/obj/structure/coatrack,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"F" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"G" = (/obj/item/weapon/storage/box/shotgunammo,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"H" = (/obj/structure/table/steel,/obj/item/robot_parts/l_leg,/obj/item/robot_parts/head,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"I" = (/obj/effect/decal/cleanable/blood/gibs/robot,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"J" = (/obj/machinery/power/port_gen/pacman,/turf/simulated/shuttle/plating,/area/submap/CaveTrench) +"K" = (/obj/machinery/drone_fabricator,/turf/simulated/shuttle/plating,/area/submap/CaveTrench) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -51,9 +52,9 @@ abeeeeeeeeffkkfffeeeeeeeeeeeddddddeeeedddddda abbbdddddeeekkeeeddddddddddddddddddddddddddca abbcdddddddjkkjddddddddddddddddddddddddddddca abcccdddddddddddddddmmmmmmmmddddddddddddidbca -abbbcidddddddgdddddnmopkkqkmmdddddddddddbbbca -abbbcccccrstudddddddvkkkqwqmmdddddddddddbbbba -abbbbbbccccxyzdABBddmCDEkqFmmdddddddccccbbbba -abbbbbbbccccGHuIJBBdmmmmmmmmdddddccccccbcbbba +abbbcidddddddndddddompqkkrkmmdddddddddddbbbca +abbbcccccstuvdddddddwkkkrxrmmdddddddddddbbbba +abbbbbbccccyzAdBCCddmDEFkrGmmdddddddccccbbbba +abbbbbbbccccHIvJKCCdmmmmmmmmdddddccccccbcbbba aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} diff --git a/maps/submaps/surface_submaps/mountains/Rockb1.dmm b/maps/submaps/surface_submaps/mountains/Rockb1.dmm index a94614f3a8..fb80ee173f 100644 --- a/maps/submaps/surface_submaps/mountains/Rockb1.dmm +++ b/maps/submaps/surface_submaps/mountains/Rockb1.dmm @@ -24,7 +24,7 @@ "x" = (/obj/machinery/light/small{brightness_color = "#DA0205"; brightness_power = 1; brightness_range = 5},/turf/simulated/floor/tiled,/area/submap/Rockb1) "y" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled,/area/submap/Rockb1) "z" = (/obj/machinery/light/small{brightness_color = "#DA0205"; brightness_power = 1; brightness_range = 5},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockb1) -"A" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled,/area/submap/Rockb1) +"A" = (/obj/machinery/power/terminal,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/tiled,/area/submap/Rockb1) "B" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled,/area/submap/Rockb1) "C" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled,/area/submap/Rockb1) "D" = (/obj/machinery/power/apc{operating = 0; pixel_x = 31},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled,/area/submap/Rockb1) diff --git a/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm b/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm index aa331159b7..37b3484d14 100644 --- a/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm +++ b/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm @@ -9,106 +9,143 @@ "ai" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark6"; name = "Unknown Shuttle"; tag = "icon-dark6"},/area/submap/Blackshuttledown) "aj" = (/turf/simulated/shuttle/wall/dark{icon_state = "dark0"; name = "Unknown Shuttle"; tag = "icon-dark0"},/area/submap/Blackshuttledown) "ak" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark10"; name = "Unknown Shuttle"; tag = "icon-dark10"},/area/submap/Blackshuttledown) -"al" = (/obj/machinery/door/airlock/external{density = 1; frequency = 1331; id_tag = "merc_shuttle_outer"; name = "Ship External Access"; req_access = list(150)},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"am" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/turf/simulated/shuttle/wall/dark{icon_state = "dark0"; name = "Unknown Shuttle"; tag = "icon-dark0"},/area/submap/Blackshuttledown) -"an" = (/obj/structure/shuttle/engine/propulsion{dir = 4; icon_state = "propulsion_l"},/turf/template_noop,/area/submap/Blackshuttledown) -"ao" = (/obj/machinery/light{dir = 1},/obj/structure/table/rack,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"ap" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aq" = (/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"ar" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"as" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"at" = (/obj/machinery/organ_printer/flesh,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"au" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark5"; name = "Unknown Shuttle"; tag = "icon-dark5"},/area/submap/Blackshuttledown) -"av" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/p90,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aw" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"ax" = (/obj/machinery/optable,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"ay" = (/obj/machinery/bodyscanner{dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"az" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark9"; name = "Unknown Shuttle"; tag = "icon-dark9"},/area/submap/Blackshuttledown) -"aA" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark6"; name = "Unknown Shuttle"; tag = "icon-dark6"},/area/submap/Blackshuttledown) -"aB" = (/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aC" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aD" = (/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Dosen't look friendly in the slightest."; name = "Unknown Individual."; say_got_target = list("Looks like trouble!","Contact!","We've got company!","Perimeter Breached!!"); speak = list("One day the'll fix that damn engine..","Next time, We're hidding on the tropical beach planet.","Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Hate this blocky ass ship.")},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aE" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aF" = (/obj/structure/table/steel,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aG" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/surgery,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aH" = (/obj/structure/table/standard,/obj/item/weapon/tank/anesthetic,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aI" = (/obj/structure/table/standard,/obj/item/clothing/gloves/sterile,/obj/item/clothing/gloves/sterile,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aJ" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/spray/sterilizine,/obj/item/weapon/reagent_containers/spray/sterilizine,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aK" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/masks,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aL" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aM" = (/obj/structure/bed/chair/office/dark{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aN" = (/obj/machinery/door/airlock/security{locked = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aO" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aP" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark10"; name = "Unknown Shuttle"; tag = "icon-dark10"},/area/submap/Blackshuttledown) -"aQ" = (/obj/machinery/computer/communications,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aR" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aS" = (/obj/structure/table/steel,/obj/item/weapon/material/knife,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aT" = (/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Dosen't look friendly in the slightest."; name = "Unknown Individual"; say_got_target = list("Looks like trouble!","Contact!","We've got company!","Perimeter Breached!!"); speak = list("One day the'll fix that damn engine..","Next time, We're hidding on the tropical beach planet.","Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Hate this blocky ass ship.")},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aU" = (/obj/structure/table/steel,/obj/random/toolbox,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aV" = (/obj/structure/table/steel,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/submap/Blackshuttledown) -"aX" = (/obj/item/weapon/stool,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"aY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/submap/Blackshuttledown) -"aZ" = (/obj/structure/table/steel,/obj/item/pizzabox,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"ba" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/submap/Blackshuttledown) -"bc" = (/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/hyper; dir = 4; name = "Unknown APC"; pixel_x = 24},/turf/simulated/shuttle/wall/dark{icon_state = "dark0"; name = "Unknown Shuttle"; tag = "icon-dark0"},/area/submap/Blackshuttledown) -"bd" = (/obj/machinery/computer/area_atmos,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"be" = (/obj/structure/table/steel,/obj/item/weapon/paper{info = "We need to take a short stop. The engine's are in need of minor repairs due to turbulence, should be a week's time. We've got reserve food supplies but pleanty of locale fauna to subsist on too if need be. PCRC is keeping most of there assets near New Reykjavik and locale authorities are more mindful then most to travel in this kind of weather. Our outfit should be at the rendezvous point in less then ten days assuming the upper ecehelon hasn't dropped ties with us yet."; name = "Operation Progress/M-53"},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bf" = (/obj/structure/table/steel,/obj/item/weapon/paper_bin,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bg" = (/obj/machinery/light,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bh" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bi" = (/obj/machinery/portable_atmospherics/canister/empty/oxygen,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bj" = (/obj/machinery/atmospherics/pipe/tank/oxygen,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bk" = (/obj/structure/bed/chair/office/dark,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bl" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bm" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bn" = (/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bo" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/pistol,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bp" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/structure/bed,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bq" = (/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"br" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/pistol,/obj/item/weapon/gun/projectile/shotgun/pump,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bs" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bt" = (/obj/machinery/light,/obj/structure/table/rack,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bu" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/machinery/light,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bv" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bw" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark5"; name = "Unknown Shuttle"; tag = "icon-dark5"},/area/submap/Blackshuttledown) -"bx" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark9"; name = "Unknown Shuttle"; tag = "icon-dark9"},/area/submap/Blackshuttledown) +"al" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/turf/simulated/shuttle/wall/dark{icon_state = "dark0"; name = "Unknown Shuttle"; tag = "icon-dark0"},/area/submap/Blackshuttledown) +"am" = (/obj/structure/shuttle/engine/propulsion{dir = 4; icon_state = "propulsion_l"},/turf/template_noop,/area/submap/Blackshuttledown) +"an" = (/obj/machinery/light{dir = 1},/obj/structure/table/rack,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/effect/floor_decal/borderfloor{dir = 9},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"ao" = (/obj/structure/dispenser/oxygen,/obj/effect/floor_decal/borderfloor{dir = 5},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"ap" = (/obj/machinery/door/airlock/external{density = 1; frequency = 1331; id_tag = "merc_shuttle_outer"; name = "Ship External Access"; req_access = list(150)},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aq" = (/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"ar" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"as" = (/obj/machinery/organ_printer/flesh,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"at" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark5"; name = "Unknown Shuttle"; tag = "icon-dark5"},/area/submap/Blackshuttledown) +"au" = (/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"av" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/p90,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"aw" = (/obj/effect/floor_decal/borderfloor{dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"ax" = (/obj/effect/floor_decal/borderfloor{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"ay" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"az" = (/obj/machinery/optable,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aA" = (/obj/machinery/bodyscanner{dir = 8},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aB" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark9"; name = "Unknown Shuttle"; tag = "icon-dark9"},/area/submap/Blackshuttledown) +"aC" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark6"; name = "Unknown Shuttle"; tag = "icon-dark6"},/area/submap/Blackshuttledown) +"aD" = (/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"aE" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"aF" = (/obj/effect/floor_decal/borderfloor/corner{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aG" = (/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aH" = (/obj/effect/floor_decal/borderfloor{dir = 5},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aI" = (/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Dosen't look friendly in the slightest."; name = "Unknown Individual"; say_got_target = list("Looks like trouble!","Contact!","We've got company!","Perimeter Breached!!"); speak = list("One day the'll fix that damn engine..","Next time, We're hidding on the tropical beach planet.","Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Hate this blocky ass ship.")},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aJ" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aK" = (/obj/structure/table/steel,/obj/effect/floor_decal/borderfloor/full,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aL" = (/obj/structure/table/steel,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"aM" = (/obj/effect/floor_decal/borderfloor/corner,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aN" = (/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aO" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/borderfloor{dir = 6},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aP" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/surgery,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aQ" = (/obj/structure/table/standard,/obj/item/weapon/tank/anesthetic,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aR" = (/obj/structure/table/standard,/obj/item/clothing/gloves/sterile,/obj/item/clothing/gloves/sterile,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aS" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/spray/sterilizine,/obj/item/weapon/reagent_containers/spray/sterilizine,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aT" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/masks,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aU" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 9},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aV" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 5},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aW" = (/obj/machinery/door/airlock/security{locked = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aX" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aY" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark10"; name = "Unknown Shuttle"; tag = "icon-dark10"},/area/submap/Blackshuttledown) +"aZ" = (/obj/machinery/computer/communications,/obj/effect/floor_decal/borderfloor{dir = 9},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"ba" = (/obj/effect/floor_decal/borderfloor/corner{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bb" = (/obj/effect/floor_decal/borderfloor{dir = 9},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bc" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bd" = (/obj/structure/table/steel,/obj/item/weapon/material/knife,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"be" = (/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bf" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bg" = (/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Dosen't look friendly in the slightest."; name = "Unknown Individual"; say_got_target = list("Looks like trouble!","Contact!","We've got company!","Perimeter Breached!!"); speak = list("One day the'll fix that damn engine..","Next time, We're hidding on the tropical beach planet.","Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Hate this blocky ass ship.")},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bh" = (/obj/structure/table/steel,/obj/random/toolbox,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bi" = (/obj/structure/table/steel,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/submap/Blackshuttledown) +"bk" = (/obj/structure/table/steel,/obj/effect/floor_decal/borderfloor{dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bl" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bm" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/borderfloor{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bn" = (/obj/item/weapon/stool,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bo" = (/obj/structure/table/steel,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bp" = (/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/submap/Blackshuttledown) +"br" = (/obj/machinery/door/airlock/glass,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bs" = (/obj/effect/floor_decal/corner/grey,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bt" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bu" = (/obj/structure/table/steel,/obj/item/pizzabox,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bv" = (/obj/structure/table/steel,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bw" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bx" = (/obj/machinery/door/airlock/glass,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"by" = (/obj/effect/floor_decal/borderfloor/corner{dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/submap/Blackshuttledown) +"bA" = (/obj/machinery/power/apc{dir = 8; name = "BSD APC"; pixel_x = -24},/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bB" = (/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Dosen't look friendly in the slightest."; name = "Unknown Individual"; say_got_target = list("Looks like trouble!","Contact!","We've got company!","Perimeter Breached!!"); speak = list("One day the'll fix that damn engine..","Next time, We're hidding on the tropical beach planet.","Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Hate this blocky ass ship.")},/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bC" = (/obj/machinery/computer/area_atmos,/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bD" = (/obj/effect/floor_decal/borderfloor{dir = 4},/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Dosen't look friendly in the slightest."; name = "Unknown Individual"; say_got_target = list("Looks like trouble!","Contact!","We've got company!","Perimeter Breached!!"); speak = list("One day the'll fix that damn engine..","Next time, We're hidding on the tropical beach planet.","Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Hate this blocky ass ship.")},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bE" = (/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bF" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bG" = (/obj/structure/table/steel,/obj/item/weapon/paper{info = "We need to take a short stop. The engine's are in need of minor repairs due to turbulence, should be a week's time. We've got reserve food supplies but pleanty of locale fauna to subsist on too if need be. PCRC is keeping most of there assets near New Reykjavik and locale authorities are more mindful then most to travel in this kind of weather. Our outfit should be at the rendezvous point in less then ten days assuming the upper ecehelon hasn't dropped ties with us yet."; name = "Operation Progress/M-53"},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bH" = (/obj/structure/table/steel,/obj/item/weapon/paper_bin,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bI" = (/obj/machinery/light,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bJ" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bK" = (/obj/machinery/portable_atmospherics/canister/empty/oxygen,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bL" = (/obj/machinery/atmospherics/pipe/tank/oxygen,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bM" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bN" = (/obj/structure/bed/chair/office/dark,/obj/effect/floor_decal/borderfloor{dir = 6},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bO" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"bP" = (/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/borderfloor/corner{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bQ" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/borderfloor{dir = 5},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bR" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bS" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/hydro,/area/submap/Blackshuttledown) +"bT" = (/turf/simulated/floor/tiled/hydro,/area/submap/Blackshuttledown) +"bU" = (/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"bV" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/pistol,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"bW" = (/obj/effect/floor_decal/borderfloor{dir = 6},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bX" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/structure/bed,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bY" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Blackshuttledown) +"bZ" = (/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"ca" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/pistol,/obj/item/weapon/gun/projectile/shotgun/pump,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"cb" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/tiled/hydro,/area/submap/Blackshuttledown) +"cc" = (/obj/machinery/light,/obj/structure/table/rack,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"cd" = (/obj/structure/dispenser/oxygen,/obj/effect/floor_decal/borderfloor{dir = 6},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"ce" = (/obj/structure/table/woodentable,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"cf" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/machinery/light,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"cg" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"ch" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark5"; name = "Unknown Shuttle"; tag = "icon-dark5"},/area/submap/Blackshuttledown) +"ci" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark9"; name = "Unknown Shuttle"; tag = "icon-dark9"},/area/submap/Blackshuttledown) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaabababababacababababababababadadabacabababababacabababababababababaa aaababababababaeabababababababadadababababababababababababadafababacaa -aaabababababababababababababadadababababababababababaeababadadabababaa +aaabababababababababababababadadabababafabababafababaeababadadabababaa aaababafabadadadababababafababababababababababababababababadadabababaa aaabababababadadadabacababababagagagagagagabababababacabafabadabababaa -aaababababababadadababababababagahabababagabababababababababababababaa +aaababababababadadabafababababagahabababagabababababababababababababaa aaabababababababaiajajajakababagabababahagabababafaiajajajajakabababaa -aaabababababababajajajajajajajajajalalajajajajajajajajajajajamanababaa -aaababababafababajajajajajajaoapajaqarajaqaqasaqatajajajajajamanababaa -aaabababababababauajajaqavajaqaqajawawajaqaxaqaqaqaqayajajazababababaa -aaabababababababaAajajaBaCajaqaqaqaqaqajaqaqaqaqaDaqaEajazabababababaa -aaabafababababaAajaFajaqaFajaqaqaqaqaEajaGaHaqaqaIaJaKajababababafabaa -aaabababababaAajaLaMajaNajajaqaqajajajajajajaOajajajajajaPabababababaa -aaabababababajaQaqaqajaqaqaqaqaqajaRaSaqasaqaTaqajaUaUaVajaPababababaa -aaabababababaWaFaqaqajaLaqaqaqaEajaqaqaXaXaXaqaqajaFaqaqaqamanabababaa -aaabababababaYaFaqaqaOaqaqaqaqaqaOaqaqaZaFaFaqaqbaaqaqaqaqamanabababaa -aaabababababaYaFaqaqaOaqaqaqaqaqaOaqaqaFaFaFaqaqbaaqaqaqaqamanabababaa -aaabababababbbaFaqaqajaLaqaqaqaEajaqaqaXaXaXaqaqbcaqaqaqaTamanabababaa -aaabababababajbdaqaTajaqaqaqaqaqajbebfaqbgaTaqaqajbhbibjajazababababaa -aaabababababauajaLbkajaNajajaqaqajajajajajajaOajajajajajazabababababaa -aaababababababauajaFajaqblajaqaqaqaqaEajbmaqaqaqaqbaaqajababababababaa -aaabafabababababauajajbnboajaqaqaqaqaqajbpaqbmaqbmajarajaPabafabababaa -aaabababababababaAajajbqbrajaqaTajawawajbmaqbmaqbmajbsajajaPababababaa -aaabababababababajajajajajajbtapajaqarajbmaqbuaqbvajajajajamanabababaa -aaabababababababajajajajajajajajajalalajajajajajajajajajajamanabababaa -aaababafababababbwajajajbxababagahabababagabababbwajajajajbxababababaa -aaabababadabababababafababababagabababahagababababafabababadadadababaa -aaababadadabacababababababababagagagagagagababababacababadadadadababaa +aaabababababababajajajajajajajajajababajajajajajajajajajajajalamababaa +aaababababafababajajajajajajanaoajapapajaqaqaraqasajajajajajalamababaa +aaabababababababatajajauavajawaxajayayajaqazaqaqaqaqaAajajaBababababaa +aaabababababababaCajajaDaEajawaFaGaGaHajaqaqaqaqaIaqaJajaBabababababaa +aaabafababababaCajaKajauaLajawaMaNaNaOajaPaQaqaqaRaSaTajababababafabaa +aaabababababaCajaUaVajaWajajawaxajajajajajajaXajajajajajaYabababababaa +aaabababababajaZbaaxajbbaGaGbaaxajbcbdbebfbebgbeajbhbhbiajaYababababaa +aaabababababbjbkbeaxajblbebebebmajbebebnbnbnbebeajbobebebpalamabababaa +aaabababababbqbkbeaFbrbabebsbebebtbebebubvbvbebebwbebebebpalamabababaa +aaabababababbqbkbeaMbxbybebebebebtbebebvbvbvbebebwbebebebpalamabababaa +aaabababababbzbkbeaxajblbebebebmajbebebnbnbnbebeajbAbebebBalamabababaa +aaabababababajbCbybDajbEaNaNbybFajbGbHbebIbgbebeajbJbKbLajaBababababaa +aaabababababatajbMbNajaWajajawaxajajajajajajbtajajajajajaBabababababaa +aaababababababatajaKajaubOajawbPaGaGbQajbRbebebebebSbTajababababababaa +aaabafabababababatajajbUbVajawaMaNaNbWajbXbebRbebRajbYajaYabafabababaa +aaabababababababaCajajbZcaajawbDajayayajbRbebRbebRajcbajajaYababababaa +aaabababababababajajajajajajcccdajapapajbRcecfcecgajajajajalamabababaa +aaabababababababajajajajajajajajajababajajajajajajajajajajalamabababaa +aaababafababababchajajajciababagahabababagabababchajajajajciababababaa +aaabababadabababababafababababagabababahagababafabafabababadadadababaa +aaababadadabacababababafabababagagagagagagababababacababadadadadababaa aaabadadadabababababababaeababababababababababadadabababadadadadababaa aaababadadababacabadababababababababababababadadadababababadadabababaa -aaabababababababadadafababababababababacabadadadafabababababababababaa -aaabababafababadadadababababababababababadadadadabababababababafababaa +aaabababababababadadafabababafababababacabadadadafabababababababababaa +aaabababafababadadadababababababababafabadadadadabababababababafababaa aaabababababababadadabacabababababababababababadaeabacafababababababaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} diff --git a/maps/submaps/surface_submaps/wilderness/CaveS.dmm b/maps/submaps/surface_submaps/wilderness/CaveS.dmm index 022e6baaba..36d0d00ca5 100644 --- a/maps/submaps/surface_submaps/wilderness/CaveS.dmm +++ b/maps/submaps/surface_submaps/wilderness/CaveS.dmm @@ -20,7 +20,7 @@ "t" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/CaveS) "u" = (/turf/simulated/floor,/area/submap/CaveS) "v" = (/obj/structure/closet/crate,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/weapon/storage/toolbox,/obj/random/toolbox,/turf/simulated/floor,/area/submap/CaveS) -"w" = (/obj/structure/loot_pile/surface,/turf/simulated/floor,/area/submap/CaveS) +"w" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor,/area/submap/CaveS) "x" = (/obj/structure/table/woodentable,/turf/simulated/floor,/area/submap/CaveS) "y" = (/obj/machinery/power/port_gen/pacman,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/submap/CaveS) "z" = (/turf/simulated/wall,/area/submap/CaveS) @@ -31,6 +31,7 @@ "E" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/submap/CaveS) "F" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/submap/CaveS) "G" = (/obj/machinery/computer/communications,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/submap/CaveS) +"H" = (/obj/structure/loot_pile/maint/boxfort,/turf/simulated/floor,/area/submap/CaveS) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -67,7 +68,7 @@ abdddrrrrrffmddddddfffgdffuyzzAfffdddbba abdddddtrffddddddgffffddffuBzzCffddddbba abdddddddrgddddddDffffddffuEFGuuddddbbba abbddddddddddddddfffffdddffuuuudddddbbba -abbdddddddddddddddfgdddddfffwudddddbbbba +abbdddddddddddddddfgdddddfffuHdddddbbbba abbdddddddddddddddddddddddmffddddbbbbbba abbbdddddddddddddddddddddddddddbbbbbbbba abbbddddbbbbdddddddbbdddddddddbbbbbbbbba diff --git a/maps/submaps/surface_submaps/wilderness/DoomP.dmm b/maps/submaps/surface_submaps/wilderness/DoomP.dmm index 805450e539..d18916efc0 100644 --- a/maps/submaps/surface_submaps/wilderness/DoomP.dmm +++ b/maps/submaps/surface_submaps/wilderness/DoomP.dmm @@ -3,127 +3,124 @@ "ac" = (/turf/simulated/floor/outdoors/rocks,/area/submap/DoomP) "ad" = (/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) "ae" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/template_noop,/area/submap/DoomP) -"af" = (/turf/template_noop,/area/space) -"ag" = (/turf/simulated/floor/water,/area/submap/DoomP) -"ah" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/DoomP) -"ai" = (/obj/effect/mine,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) -"aj" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) -"ak" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) -"al" = (/turf/simulated/floor/water/deep,/area/submap/DoomP) -"am" = (/obj/effect/decal/remains/mouse,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) -"an" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) -"ao" = (/obj/machinery/light/small,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) -"ap" = (/obj/machinery/porta_turret/stationary,/turf/simulated/floor/plating,/area/submap/DoomP) -"aq" = (/turf/simulated/wall/r_wall,/area/submap/DoomP) -"ar" = (/turf/simulated/floor/plating,/area/submap/DoomP) -"as" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/submap/DoomP) -"at" = (/turf/simulated/floor/tiled,/area/submap/DoomP) -"au" = (/obj/structure/bed/chair,/turf/simulated/floor/tiled,/area/submap/DoomP) -"av" = (/obj/structure/bed/chair,/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Even less friendly than he looks."; speak = list("Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Anyone else smell that?")},/turf/simulated/floor/tiled,/area/submap/DoomP) -"aw" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP) -"ax" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/tiled,/area/submap/DoomP) -"ay" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled,/area/submap/DoomP) -"az" = (/obj/machinery/power/smes/buildable/point_of_interest,/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/submap/DoomP) -"aA" = (/obj/machinery/power/apc{dir = 1; name = "PAPC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/submap/DoomP) -"aB" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox,/turf/simulated/floor/tiled,/area/submap/DoomP) -"aC" = (/obj/structure/table/standard,/obj/random/toolbox,/turf/simulated/floor/tiled,/area/submap/DoomP) -"aD" = (/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/DoomP) -"aE" = (/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor/tiled,/area/submap/DoomP) -"aF" = (/obj/structure/lattice,/obj/machinery/porta_turret/stationary,/turf/simulated/floor/plating,/area/submap/DoomP) -"aG" = (/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/DoomP) -"aH" = (/obj/structure/bed/chair{dir = 4},/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Even less friendly than he looks."; speak = list("Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Anyone else smell that?")},/turf/simulated/floor/tiled,/area/submap/DoomP) -"aI" = (/obj/structure/table/standard,/obj/item/pizzabox,/turf/simulated/floor/tiled,/area/submap/DoomP) -"aJ" = (/obj/machinery/vending/snack,/turf/simulated/floor/tiled,/area/submap/DoomP) -"aK" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/submap/DoomP) -"aL" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small,/turf/simulated/floor/tiled,/area/submap/DoomP) -"aM" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/submap/DoomP) -"aN" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/submap/DoomP) -"aO" = (/obj/machinery/light/small,/turf/simulated/floor/tiled,/area/submap/DoomP) -"aP" = (/obj/structure/lattice,/turf/simulated/floor/water,/area/submap/DoomP) -"aQ" = (/obj/machinery/vending/cola,/turf/simulated/floor/tiled,/area/submap/DoomP) -"aR" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled,/area/submap/DoomP) -"aS" = (/obj/machinery/door/airlock/engineering,/turf/simulated/floor/tiled,/area/submap/DoomP) -"aT" = (/obj/machinery/door/airlock/hatch,/turf/simulated/floor/tiled,/area/submap/DoomP) -"aU" = (/obj/machinery/door/airlock/highsecurity,/turf/simulated/floor/tiled,/area/submap/DoomP) -"aV" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled,/area/submap/DoomP) -"aW" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/syndie_kit/spy,/turf/simulated/floor/tiled,/area/submap/DoomP) -"aX" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/smokes,/turf/simulated/floor/tiled,/area/submap/DoomP) -"aY" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/handcuffs,/turf/simulated/floor/tiled,/area/submap/DoomP) -"aZ" = (/obj/structure/table/rack,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/turf/simulated/floor/tiled,/area/submap/DoomP) -"ba" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/laser/mounted,/turf/simulated/floor/tiled,/area/submap/DoomP) -"bb" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/contender,/obj/item/ammo_magazine/s357,/obj/item/ammo_magazine/s357,/obj/item/ammo_magazine/s357,/turf/simulated/floor/tiled,/area/submap/DoomP) -"bc" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/turf/simulated/floor/tiled,/area/submap/DoomP) -"bd" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/tiled,/area/submap/DoomP) -"be" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/tiled,/area/submap/DoomP) -"bf" = (/obj/structure/table/standard,/obj/structure/bedsheetbin,/turf/simulated/floor/tiled,/area/submap/DoomP) -"bg" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP) -"bh" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled,/area/submap/DoomP) -"bi" = (/obj/machinery/shower{dir = 1},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled,/area/submap/DoomP) -"bj" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP) -"bk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/submap/DoomP) -"bl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/submap/DoomP) -"bm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/submap/DoomP) -"bn" = (/obj/structure/lattice,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) +"af" = (/turf/simulated/floor/water,/area/submap/DoomP) +"ag" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/DoomP) +"ah" = (/obj/effect/mine,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) +"ai" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) +"aj" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) +"ak" = (/turf/simulated/floor/water/deep,/area/submap/DoomP) +"al" = (/obj/effect/decal/remains/mouse,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) +"am" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) +"an" = (/obj/machinery/light/small,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) +"ao" = (/obj/machinery/porta_turret,/turf/simulated/floor/plating,/area/submap/DoomP) +"ap" = (/turf/simulated/wall/r_wall,/area/submap/DoomP) +"aq" = (/turf/simulated/floor/plating,/area/submap/DoomP) +"ar" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/submap/DoomP) +"as" = (/turf/simulated/floor/tiled,/area/submap/DoomP) +"at" = (/obj/structure/bed/chair,/turf/simulated/floor/tiled,/area/submap/DoomP) +"au" = (/obj/structure/bed/chair,/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Even less friendly than he looks."; speak = list("Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Anyone else smell that?")},/turf/simulated/floor/tiled,/area/submap/DoomP) +"av" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP) +"aw" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/tiled,/area/submap/DoomP) +"ax" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled,/area/submap/DoomP) +"ay" = (/obj/machinery/power/smes/buildable/point_of_interest,/turf/simulated/floor/tiled,/area/submap/DoomP) +"az" = (/obj/machinery/power/apc{dir = 1; name = "PAPC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/submap/DoomP) +"aA" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aB" = (/obj/structure/table/standard,/obj/random/toolbox,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aC" = (/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aD" = (/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aE" = (/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/DoomP) +"aF" = (/obj/structure/bed/chair{dir = 4},/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Even less friendly than he looks."; speak = list("Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Anyone else smell that?")},/turf/simulated/floor/tiled,/area/submap/DoomP) +"aG" = (/obj/structure/table/standard,/obj/item/pizzabox,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aH" = (/obj/machinery/vending/snack,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aI" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/tiled,/area/submap/DoomP) +"aJ" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d1 = 32; d2 = 8; icon_state = "32-8"},/turf/simulated/floor/tiled,/area/submap/DoomP) +"aK" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/submap/DoomP) +"aL" = (/obj/machinery/light/small,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aM" = (/obj/structure/lattice,/turf/simulated/floor/water,/area/submap/DoomP) +"aN" = (/obj/machinery/vending/cola,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aO" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aP" = (/obj/machinery/door/airlock/engineering,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aQ" = (/obj/machinery/door/airlock/hatch,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aR" = (/obj/machinery/door/airlock/highsecurity,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aS" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aT" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/syndie_kit/spy,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aU" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/smokes,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aV" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/handcuffs,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aW" = (/obj/structure/table/rack,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aX" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/laser/mounted,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aY" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/contender,/obj/item/ammo_magazine/s357,/obj/item/ammo_magazine/s357,/obj/item/ammo_magazine/s357,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aZ" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/turf/simulated/floor/tiled,/area/submap/DoomP) +"ba" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/tiled,/area/submap/DoomP) +"bb" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/tiled,/area/submap/DoomP) +"bc" = (/obj/structure/table/standard,/obj/structure/bedsheetbin,/turf/simulated/floor/tiled,/area/submap/DoomP) +"bd" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP) +"be" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled,/area/submap/DoomP) +"bf" = (/obj/machinery/shower{dir = 1},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled,/area/submap/DoomP) +"bg" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP) +"bh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/submap/DoomP) +"bi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/submap/DoomP) +"bj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/submap/DoomP) +"bk" = (/obj/structure/lattice,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaabababababababababababababababababababababababababababababababababababacacacacacacacacabababababababadadadabababaeabaf -aaaeabababababababababababababababababababababababababababababababababacacagagagagagagacacacacababacadadadadadacacacabaf -aaababacacacacacacacabababababababahababababacacacacacacacacababacacacacagagagagagagagagagagacacacacadadaiadacagagacabaf -aaabacacagagagagagacacacacacacababaeabacacacacagagagagacacacacacagagagagagagagagagagagagagacacadadadadadacacacagagacabaf -aaabacagagagagagagagagagagagacacacacacacagagagagagagagagagagagagagagagagagagagagagagagagacacadajadadakacacagagagagacacaf -aaabacagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagacacacadadadadadadacagagagagagagacaf -aaabacagagagagalalalalalalagagagagagagagagagagagagagalalalalalalalagagagagagagagagacacadakadadaiadadadacagagagagagagacaf -aaabacagagagagagalalalalalagagagagagagagagagalalalalalalalalalalalalalalagagagagagacadaiadadadadadadacacagagagagagagacaf -aaabacacagagagagagalalalalagagagagagagagagagalalalalalalalalalalalalalagagagagagacacamadadadadadaiacacagagagagagagagacaf -aaababacagagagagagagalalalalalagagagalalalalalalalalalalalalalalalalalalalalalagagacacadadadadadacacagagagagagagagagacaf -aaababacagagagagagagalalalalalalalalalalalalalalalalalalalalalalalalalalagagagagagagacadadadajadacacagagagagagagagacacaf -aaababacacagagagagagagalalalalalalalalalalalalalalalalalalalalalalalalalagagagagagacacadaiadadacacagagagagagagagagacabaf -aaabababacagagagagagagagalalalalalalalalalalalalagagalalalalalalalalalagagagagagagacacadadadadacagagagagagagagagagacabaf -aaabababacacagagagagagagagalalalalalalalalalalagagagagalalalalalalalalalagagagagagacacadadamacacagagagagagagagacacacabaf -aaababababacagagagagagagalalalalalalalalalagagagagagagagagagagagagagagagagagagacacacadadadadacagagagagalagagagacacababaf -aaababababacacagagagagagagalalalalalalagagagagagagagagagagagagagagagagagagagacacadadadadadacacagagagalalagagagagacababaf -aaababababacacagagagagagalalalalalagagagagagagagagagagagagagagagagagagagagacacadadadadacacacagagagagalalalagagagacacabaf -aaababababaeacagagagagalalalalalagagagagagagagagagagagagagagagagagagagagacacadadadacacacagagagagagagalalalagagagagacabaf -aaababababacacagagalalalalalalalalagagagagagagagagagacacacacacacacagagacacadadacacacagagagagagagagagalalalagagagagacabaf -aaababababacagagagalalalalalalalalalalagagagagagacacacadadadadadacacacacadadacacagagagagagagagalagalalalagagagagagacabaf -aaabababacacagagagagalalalalalalalagagagagagagacacadadanadadadadadadadadadadacagagagagagagagagalalalalalagagagagagacabaf -aaabababacagagagagagagalalalalalagagagagagagacacadadadadadadanadadadadadadadacagagagagagagagalalalalalalagagagagacacabaf -aaabababacagagagagagagalalalalalagagagagagacacadadadadadadadadadadadadadadacacagagagagagagagalalalalalalalalagagacacabaf -aaabababacagagagagagagagalalalalagagagagacacadadadadadadadadadadadadadadadadacacagagagagagagalalalalalalalalagagagacabaf -aaabababacagagagagagagagalalalagagagagagacadadadadadadadadadadadadadadadadadadacacagagagagagagalalalalalalagagagagacabaf -aaabababacagagagagagagagalalalalalagagagacadadadadadadadaoadadadadadaoadadadadadacacagagagagagagalalalalagagagagagacabaf -aaabababacagagagagagagagalalalalalagagagacadadapadadapadaqaqarararaqaqadapadadapadacagagagagagagalalalalagagagagagacabaf -aaabababacagagagagagagagalalalalalalagagacaqaqaqaqaqaqaqaqaqaqasaqaqaqaqaqaqaqaqaqaqaqagagagagagalalalalagagagagacacabaf -aaabababacacagagagagagagalalalalalalagagacaqatauatavawavataxaqayaqazazazazaAaBaCaDaEaqagagagagagalalalalagagagagacacabaf -aaabababacacacagagagagalalalalalalalagaFaGaqaHaDaIaDaDaDataJaqataqaKaLaMaMaNatataOataqaPaFagagagalalalagagagagagagacabaf -aaabababababacacagagagalalalalalalalagagagaqayaDaDaDaDaDataQaqaRaqaqaqaqaqaqaSaqaqaqaqagagagagagalalalagagagagagagacabaf -aaababababababacagagagalalalalalalalalagagaqatatataOatatatataTatatawatatatatatawatataqagagagagagalalalagagagagagagagacaf -aaabababahabababacagagalalalalalalalalaFaPaqaUaqaqaqaqaqaqaqaqaqaqaqaqaqaqaVaqaqaqaqaqaPaFagagagalalalagagagagagagagacaf -aaababababababacacagagagalalalalalalalalagaqataDaWaXaYaZbabbaqbcaDbdbebdbfataVawaVbgaqagagagagagalalalagagagagagagagacaf -aaababababababacagagagagalalalalalalalalagaqatataOatataOatataqayatatatatatbhaqbiaqbjaqagagagagalalalalalagagagagagagacaf -aaababababababacagagagagalalalalalalalalalaqaqaqaqaqaqaqaqaqaqaqaqbkblblblbmaqaqaqaqaqagagagagalalalalagagagagagagagacaf -aaabababababacacagagagalalalalalalalalalalagagagagaGacacadadadadbnadadadadadbnacacagagagagagagalalalalagagagagagagagacaf -aaabababababacagagagagalalalalalalalalalalalalagagaFagacacacacacaFadadadadadaFacagagagagagagalalalalalagagagagagagacacaf -aaababababacacagagagagalalalalalalalalalalalalalagagagagagagagacacadadadadadacacagagagagagalalalalalalagagagagagagacabaf -aaababababacagagagagagagalalalalalalalalalalalalagagagagagagagagacacacacacacacagagagagagagagalalalalalagagagagagacacabaf -aaabababacacagagagagagagalalalalalalalalalalalalalagagagagagagagagagagagagagagagagagagagagagagalalalagagagagagagacababaf -aaabababacacagagagagagalalalalalalalalalalalalalalagagagagagagagagagagagagagagagagagagagagagagalalalagagagagagagacababaf -aaabababacacagagagagagalalalalalalalalalalalalalalalalalalagagagagagagagagagagagagagagagagagagalalalagagagagagacacababaf -aaababacacagagagagagagagalalalalalalalalalalalalalalalalalalagagagagagagagagagagagagagagagagalalalalagagagagagacabababaf -aaababacagagagagagagalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalagagalalalalalalagagagagagacacababaf -aaababacagagagagagalalalalalalalalagagagagagalalalalalalalalalalalalalalalalalalalalalalalalalalalalalagagagagagacababaf -aaabacacagagagagagalagalalalalalagagagagagagagalalalalalalalalalalalalalalalalalalalalalalalalalalalalagagagagagacababaf -aaabacagagagagagagagagalalalalalalalagagagagagagalalalalalalalalalalalalalalalalalalalalalalalalalalalagagagagagacababaf -aaabacagagagagagagagagagagagagalalalagagagagagagalalalalalalalalalalalalalalalalalalalalalalalalalalalagagagagagacababaf -aaabacagagagagagagagagagagagagagagagagagagagagagagalalalalalalalalalalalalalalalalalalalalalalalalalalagagagagacacababaf -aaabacagagagagagagagagacacacacacacacacagagagagagagalalalalalalalalalalalalalalalagalalalalalalalalalalagagagagacabababaf -aaabacagagagagagagacacacababababababacacacagagagagagagalalagagagagagagagagagalagagagagagalalalalalalagagagagagacabababaf -aaabacacagagagagacacababababababababababacagagagagagagagagagagagagagagagagagagagagagagagagagagalalalalagagagacacababaeaf -aaababacagagagacacababababababababababacacagagagagagagagagagagagagagagagagagagagagagagagagagagagagalalagagagacababahabaf -aaababacagagacacabababababababababahabacagagagagagagagagagagagagagagacacacacacacagagagagagagagagagagagagagacacababababaf -aaabacacagacacababababababababababababacagagagagagagagagagagacacacacacabacacacacacacagagagagagagagagagagacacabababababaf -aaabacagacacababababaeabababababababacacagagagagagacacacacacacababababababababababacacacacacacacagagagacacacabababababaf -aaabacacacababababababababababababacacacacacacacacacabababababababababababababababababababababacacacacacabababababababaf +aaabababababababababababababababababababababababababababababababababababacacacacacacacacabababababababadadadabababaeabaa +aaaeabababababababababababababababababababababababababababababababababacacafafafafafafacacacacababacadadadadadacacacabaa +aaababacacacacacacacabababababababagababababacacacacacacacacababacacacacafafafafafafafafafafacacacacadadahadacafafacabaa +aaabacacafafafafafacacacacacacababaeabacacacacafafafafacacacacacafafafafafafafafafafafafafacacadadadadadacacacafafacabaa +aaabacafafafafafafafafafafafacacacacacacafafafafafafafafafafafafafafafafafafafafafafafafacacadaiadadajacacafafafafacacaa +aaabacafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafacacacadadadadadadacafafafafafafacaa +aaabacafafafafakakakakakakafafafafafafafafafafafafafakakakakakakakafafafafafafafafacacadajadadahadadadacafafafafafafacaa +aaabacafafafafafakakakakakafafafafafafafafafakakakakakakakakakakakakakakafafafafafacadahadadadadadadacacafafafafafafacaa +aaabacacafafafafafakakakakafafafafafafafafafakakakakakakakakakakakakakafafafafafacacaladadadadadahacacafafafafafafafacaa +aaababacafafafafafafakakakakakafafafakakakakakakakakakakakakakakakakakakakakakafafacacadadadadadacacafafafafafafafafacaa +aaababacafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakafafafafafafacadadadaiadacacafafafafafafafacacaa +aaababacacafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakafafafafafacacadahadadacacafafafafafafafafacabaa +aaabababacafafafafafafafakakakakakakakakakakakakafafakakakakakakakakakafafafafafafacacadadadadacafafafafafafafafafacabaa +aaabababacacafafafafafafafakakakakakakakakakakafafafafakakakakakakakakakafafafafafacacadadalacacafafafafafafafacacacabaa +aaababababacafafafafafafakakakakakakakakakafafafafafafafafafafafafafafafafafafacacacadadadadacafafafafakafafafacacababaa +aaababababacacafafafafafafakakakakakakafafafafafafafafafafafafafafafafafafafacacadadadadadacacafafafakakafafafafacababaa +aaababababacacafafafafafakakakakakafafafafafafafafafafafafafafafafafafafafacacadadadadacacacafafafafakakakafafafacacabaa +aaababababaeacafafafafakakakakakafafafafafafafafafafafafafafafafafafafafacacadadadacacacafafafafafafakakakafafafafacabaa +aaababababacacafafakakakakakakakakafafafafafafafafafacacacacacacacafafacacadadacacacafafafafafafafafakakakafafafafacabaa +aaababababacafafafakakakakakakakakakakafafafafafacacacadadadadadacacacacadadacacafafafafafafafakafakakakafafafafafacabaa +aaabababacacafafafafakakakakakakakafafafafafafacacadadamadadadadadadadadadadacafafafafafafafafakakakakakafafafafafacabaa +aaabababacafafafafafafakakakakakafafafafafafacacadadadadadadamadadadadadadadacafafafafafafafakakakakakakafafafafacacabaa +aaabababacafafafafafafakakakakakafafafafafacacadadadadadadadadadadadadadadacacafafafafafafafakakakakakakakakafafacacabaa +aaabababacafafafafafafafakakakakafafafafacacadadadadadadadadadadadadadadadadacacafafafafafafakakakakakakakakafafafacabaa +aaabababacafafafafafafafakakakafafafafafacadadadadadadadadadadadadadadadadadadacacafafafafafafakakakakakakafafafafacabaa +aaabababacafafafafafafafakakakakakafafafacadadadadadadadanadadadadadanadadadadadacacafafafafafafakakakakafafafafafacabaa +aaabababacafafafafafafafakakakakakafafafacadadaoadadaoadapapaqaqaqapapadaoadadaoadacafafafafafafakakakakafafafafafacabaa +aaabababacafafafafafafafakakakakakakafafacapapapapapapapapapaparapapapapapapapapapapapafafafafafakakakakafafafafacacabaa +aaabababacacafafafafafafakakakakakakafafacapasatasauavauasawapaxapayayayayazaAaBaCaDapafafafafafakakakakafafafafacacabaa +aaabababacacacafafafafakakakakakakakafaoaEapaFaCaGaCaCaCasaHapasapaIaJaJaJaKasasaLasapaMaoafafafakakakafafafafafafacabaa +aaabababababacacafafafakakakakakakakafafafapaxaCaCaCaCaCasaNapaOapapapapapapaPapapapapafafafafafakakakafafafafafafacabaa +aaababababababacafafafakakakakakakakakafafapasasasaLasasasasaQasasavasasasasasavasasapafafafafafakakakafafafafafafafacaa +aaabababagabababacafafakakakakakakakakaoaMapaRapapapapapapapapapapapapapapaSapapapapapaMaoafafafakakakafafafafafafafacaa +aaababababababacacafafafakakakakakakakakafapasaCaTaUaVaWaXaYapaZaCbabbbabcasaSavaSbdapafafafafafakakakafafafafafafafacaa +aaababababababacafafafafakakakakakakakakafapasasaLasasaLasasapaxasasasasasbeapbfapbgapafafafafakakakakakafafafafafafacaa +aaababababababacafafafafakakakakakakakakakapapapapapapapapapapapapbhbibibibjapapapapapafafafafakakakakafafafafafafafacaa +aaabababababacacafafafakakakakakakakakakakafafafafaEacacadadadadbkadadadadadbkacacafafafafafafakakakakafafafafafafafacaa +aaabababababacafafafafakakakakakakakakakakakakafafaoafacacacacacaoadadadadadaoacafafafafafafakakakakakafafafafafafacacaa +aaababababacacafafafafakakakakakakakakakakakakakafafafafafafafacacadadadadadacacafafafafafakakakakakakafafafafafafacabaa +aaababababacafafafafafafakakakakakakakakakakakakafafafafafafafafacacacacacacacafafafafafafafakakakakakafafafafafacacabaa +aaabababacacafafafafafafakakakakakakakakakakakakakafafafafafafafafafafafafafafafafafafafafafafakakakafafafafafafacababaa +aaabababacacafafafafafakakakakakakakakakakakakakakafafafafafafafafafafafafafafafafafafafafafafakakakafafafafafafacababaa +aaabababacacafafafafafakakakakakakakakakakakakakakakakakakafafafafafafafafafafafafafafafafafafakakakafafafafafacacababaa +aaababacacafafafafafafafakakakakakakakakakakakakakakakakakakafafafafafafafafafafafafafafafafakakakakafafafafafacabababaa +aaababacafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakafafakakakakakakafafafafafacacababaa +aaababacafafafafafakakakakakakakakafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakakakakafafafafafacababaa +aaabacacafafafafafakafakakakakakafafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakakakafafafafafacababaa +aaabacafafafafafafafafakakakakakakakafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakakafafafafafacababaa +aaabacafafafafafafafafafafafafakakakafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakakafafafafafacababaa +aaabacafafafafafafafafafafafafafafafafafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakafafafafacacababaa +aaabacafafafafafafafafacacacacacacacacafafafafafafakakakakakakakakakakakakakakakafakakakakakakakakakakafafafafacabababaa +aaabacafafafafafafacacacababababababacacacafafafafafafakakafafafafafafafafafakafafafafafakakakakakakafafafafafacabababaa +aaabacacafafafafacacababababababababababacafafafafafafafafafafafafafafafafafafafafafafafafafafakakakakafafafacacababaeaa +aaababacafafafacacababababababababababacacafafafafafafafafafafafafafafafafafafafafafafafafafafafafakakafafafacababagabaa +aaababacafafacacabababababababababagabacafafafafafafafafafafafafafafacacacacacacafafafafafafafafafafafafafacacababababaa +aaabacacafacacababababababababababababacafafafafafafafafafafacacacacacabacacacacacacafafafafafafafafafafacacabababababaa +aaabacafacacababababaeabababababababacacafafafafafacacacacacacababababababababababacacacacacacacafafafacacacabababababaa +aaabacacacababababababababababababacacacacacacacacacabababababababababababababababababababababacacacacacabababababababaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} diff --git a/maps/submaps/surface_submaps/wilderness/Lab1.dmm b/maps/submaps/surface_submaps/wilderness/Lab1.dmm index 12745913d6..724043a9ff 100644 --- a/maps/submaps/surface_submaps/wilderness/Lab1.dmm +++ b/maps/submaps/surface_submaps/wilderness/Lab1.dmm @@ -19,32 +19,33 @@ "s" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) "t" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) "u" = (/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/hyper; dir = 8; name = "Unknown APC"; operating = 0; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"v" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"w" = (/obj/machinery/power/smes/buildable/point_of_interest,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"v" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"w" = (/obj/machinery/power/smes/buildable/point_of_interest,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) "x" = (/obj/structure/table/standard,/obj/item/weapon/paper{desc = "Gladstone for the last fucking time, We have crowbars for a REASON. Stop breaking in through the goddamn windows! We big red shiny doors for god's sakes!"},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) "y" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"z" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"A" = (/obj/machinery/vending/hydroseeds,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"B" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"C" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"D" = (/obj/structure/table/standard,/obj/fiftyspawner/steel,/obj/fiftyspawner/glass,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"E" = (/obj/structure/table/standard,/obj/item/device/multitool,/obj/item/clothing/glasses/welding,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"F" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"G" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"H" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"I" = (/obj/item/weapon/cell/super,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"J" = (/obj/machinery/pros_fabricator,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"K" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"L" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"M" = (/obj/item/weapon/storage/bag/circuits,/obj/structure/table/standard,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"N" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"O" = (/obj/item/robot_parts/chest,/obj/item/robot_parts/l_arm,/obj/item/robot_parts/r_arm,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"P" = (/obj/structure/closet/crate/hydroponics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"Q" = (/obj/structure/closet/secure_closet/hydroponics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"R" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"S" = (/obj/machinery/vending/robotics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"T" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) -"U" = (/obj/machinery/optable,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"z" = (/turf/simulated/floor,/area/submap/Lab1) +"A" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"B" = (/obj/machinery/vending/hydroseeds,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"C" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"D" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"E" = (/obj/structure/table/standard,/obj/fiftyspawner/steel,/obj/fiftyspawner/glass,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"F" = (/obj/structure/table/standard,/obj/item/device/multitool,/obj/item/clothing/glasses/welding,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"G" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"H" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"I" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"J" = (/obj/item/weapon/cell/super,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"K" = (/obj/machinery/pros_fabricator,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"L" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"M" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"N" = (/obj/item/weapon/storage/bag/circuits,/obj/structure/table/standard,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"O" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"P" = (/obj/item/robot_parts/chest,/obj/item/robot_parts/l_arm,/obj/item/robot_parts/r_arm,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"Q" = (/obj/structure/closet/crate/hydroponics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"R" = (/obj/structure/closet/secure_closet/hydroponics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"S" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"T" = (/obj/machinery/vending/robotics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"U" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"V" = (/obj/machinery/optable,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaa @@ -56,14 +57,14 @@ acmhncbbchhcbbcohpca acqhrcbbcshcbbcthtca acuvwcbbchhcbbcxhyca acdefcbbcllcbbcdefca -abbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbba +abbbbbbbbzzbbbbbbbba +abbbbbbbbzzbbbbbbbba acdefcbbcllcbbcdefca -achzAcbbchBcbbcCDEca -acFhGcbbchhcbbcHIJca -acKhLcdfcllcdfchhMca -acFhhihhNhhNhhihhOca -acPQRcdeeeeeefcSTUca +achABcbbchCcbbcDEFca +acGhHcbbchhcbbcIJKca +acLhMcdfcllcdfchhNca +acGhhihhOhhOhhihhPca +acQRScdeeeeeefcTUVca acdefcbbbbbbbbcdefca abbbbbbbbbbbbbbbbbba aaaaaaaaaaaaaaaaaaaa diff --git a/maps/submaps/surface_submaps/wilderness/MCamp1.dmm b/maps/submaps/surface_submaps/wilderness/MCamp1.dmm index df9dd6ecaa..3033ffdf62 100644 --- a/maps/submaps/surface_submaps/wilderness/MCamp1.dmm +++ b/maps/submaps/surface_submaps/wilderness/MCamp1.dmm @@ -1,59 +1,53 @@ "a" = (/turf/template_noop,/area/template_noop) "b" = (/turf/template_noop,/area/submap/MilitaryCamp1) "c" = (/turf/simulated/floor/outdoors/dirt,/area/submap/MilitaryCamp1) -"d" = (/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1) -"e" = (/obj/effect/mine,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1) -"f" = (/obj/structure/flora/bush,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1) -"g" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1) -"h" = (/obj/effect/decal/remains,/turf/simulated/floor/outdoors/dirt,/area/submap/MilitaryCamp1) -"i" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1) -"j" = (/obj/item/stack/rods,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1) -"k" = (/obj/effect/mine,/turf/simulated/floor/outdoors/dirt,/area/submap/MilitaryCamp1) -"l" = (/turf/simulated/wall,/area/submap/MilitaryCamp1) -"m" = (/turf/simulated/floor,/area/submap/MilitaryCamp1) -"n" = (/obj/item/weapon/material/shard,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1) -"o" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) -"p" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) -"q" = (/obj/effect/mine,/turf/simulated/floor,/area/submap/MilitaryCamp1) -"r" = (/obj/structure/table/standard,/obj/item/weapon/gun/energy/gun,/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) -"s" = (/obj/structure/table/standard,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) -"t" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/syndie_kit/space,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) -"u" = (/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) -"v" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) -"w" = (/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) -"x" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) -"y" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) -"z" = (/obj/structure/girder,/turf/simulated/floor,/area/submap/MilitaryCamp1) -"A" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1) -"B" = (/obj/machinery/computer/security,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) -"C" = (/obj/machinery/computer/message_monitor,/turf/simulated/floor/holofloor/tiled,/area/submap/MilitaryCamp1) -"D" = (/obj/machinery/light,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) -"E" = (/obj/structure/flora/tree/dead,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1) -"F" = (/obj/structure/door_assembly,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) -"G" = (/obj/structure/table/standard,/obj/random/toolbox,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) -"H" = (/obj/machinery/light,/obj/structure/table/standard,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) -"I" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/submap/MilitaryCamp1) -"J" = (/obj/effect/mine,/turf/template_noop,/area/submap/MilitaryCamp1) +"d" = (/obj/effect/mine,/turf/template_noop,/area/submap/MilitaryCamp1) +"e" = (/obj/structure/flora/bush,/turf/template_noop,/area/submap/MilitaryCamp1) +"f" = (/obj/effect/decal/cleanable/blood,/turf/template_noop,/area/submap/MilitaryCamp1) +"g" = (/obj/effect/decal/remains,/turf/simulated/floor/outdoors/dirt,/area/submap/MilitaryCamp1) +"h" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/MilitaryCamp1) +"i" = (/obj/item/stack/rods,/turf/template_noop,/area/submap/MilitaryCamp1) +"j" = (/obj/effect/mine,/turf/simulated/floor/outdoors/dirt,/area/submap/MilitaryCamp1) +"k" = (/turf/simulated/wall,/area/submap/MilitaryCamp1) +"l" = (/turf/simulated/floor,/area/submap/MilitaryCamp1) +"m" = (/obj/item/weapon/material/shard,/turf/template_noop,/area/submap/MilitaryCamp1) +"n" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor,/area/submap/MilitaryCamp1) +"o" = (/obj/structure/girder,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"p" = (/obj/machinery/computer/communications,/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor,/area/submap/MilitaryCamp1) +"q" = (/obj/structure/table/standard,/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor,/area/submap/MilitaryCamp1) +"r" = (/obj/effect/mine,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"s" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"t" = (/obj/machinery/computer/security,/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor,/area/submap/MilitaryCamp1) +"u" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor,/area/submap/MilitaryCamp1) +"v" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"w" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor,/area/submap/MilitaryCamp1) +"x" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/template_noop,/area/submap/MilitaryCamp1) +"y" = (/obj/structure/table,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"z" = (/obj/structure/table/standard,/obj/random/firstaid,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"A" = (/obj/machinery/door/airlock,/obj/effect/mine,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"B" = (/obj/structure/flora/tree/dead,/turf/template_noop,/area/submap/MilitaryCamp1) +"C" = (/obj/structure/table/standard,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"D" = (/obj/structure/table/standard,/obj/item/weapon/gun/energy/gun,/turf/simulated/floor,/area/submap/MilitaryCamp1) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaa -abbcdedfgedddbbbbbba -achcdddddddgedchbbba -adccddeddijdddcckiba -adiddjllmlllmlncddda -abdddlllmmllllldedea -abbellopqmplrslldfda -abbdlltmmmuvwxllddda -abdnlllllyullllzAeda -adddmlplBuuClullddda -agedmluvDppDvplldeda -adddzlullllllulzdEda -addAllyuuuFuuullddda -aEddllGouuuuHollndga -addfdllllImlllldedda -abedddlllmmllldcceda -abcddddlldnlldkcddba -achceddddedjddchibba -abccfbJdigddeccdbbba +abbcbdbefdbbbbbbbbba +acgcbbbbbbbfdbcgbbba +abccbbdbbhibbbccjhba +abhbbikkllkklkmcbbba +abbbbkkkllkkkkkbdbda +abbdkknllokpqnkkbeba +abbbkknorsktuukkbbba +abbmkkvkkwkkkvkoxdba +abbblknllslnwskkbbba +afdblknllyznsskkbdba +abbbokvAkkkkvvkobBba +abbxkknlosssnnkkbbba +aBbbkkCDkllnnnkkmbfa +abbebkkkkvlkkkkbdbba +abdbbbkkkslkkkbccdba +abcbbbbkkbmkkbjcbbba +acgcdbbbddbibbcghbba +abccebdbhfbbdccbbbba aaaaaaaaaaaaaaaaaaaa "} diff --git a/maps/submaps/surface_submaps/wilderness/Rockybase.dmm b/maps/submaps/surface_submaps/wilderness/Rockybase.dmm index 562ca0efa3..aac376d999 100644 --- a/maps/submaps/surface_submaps/wilderness/Rockybase.dmm +++ b/maps/submaps/surface_submaps/wilderness/Rockybase.dmm @@ -3,8 +3,8 @@ "ac" = (/obj/effect/decal/remains,/turf/template_noop,/area/submap/Rockybase) "ad" = (/turf/template_noop,/area/submap/Rockybase) "ae" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/Rockybase) -"af" = (/mob/living/simple_animal/hostile/malf_drone{desc = "An automated combat drone with an aged apperance."; returns_home = 1},/turf/template_noop,/area/submap/Rockybase) -"ag" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/Rockybase) +"af" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/Rockybase) +"ag" = (/mob/living/simple_animal/hostile/malf_drone{desc = "An automated combat drone with an aged apperance."; returns_home = 1},/turf/template_noop,/area/submap/Rockybase) "ah" = (/turf/simulated/floor,/area/submap/Rockybase) "ai" = (/obj/machinery/porta_turret/stationary,/turf/simulated/floor,/area/submap/Rockybase) "aj" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor,/area/submap/Rockybase) @@ -16,104 +16,104 @@ "ap" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) "aq" = (/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) "ar" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/obj/item/weapon/soap,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) -"as" = (/obj/structure/table/woodentable,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) -"at" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) -"au" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) -"av" = (/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) -"aw" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) -"ax" = (/obj/structure/table/woodentable,/obj/machinery/light{dir = 1},/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) -"ay" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) -"az" = (/obj/structure/closet/l3closet/janitor,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aA" = (/mob/living/bot/cleanbot{faction = "malf_drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aB" = (/obj/item/weapon/stool,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aC" = (/obj/item/weapon/storage/belt/janitor,/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aD" = (/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aE" = (/obj/structure/table/standard,/obj/item/device/laptop,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aF" = (/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aG" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/pistol,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aH" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/gun/taser,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aI" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aJ" = (/obj/machinery/vending/coffee,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aK" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aL" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aM" = (/obj/structure/closet/crate/hydroponics,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aN" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) -"aO" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) -"aP" = (/obj/structure/janitorialcart,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aQ" = (/obj/structure/table/standard,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aR" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aS" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "Carl's absolutly fucked in the head. He's trying to squeeze as much drone production out as he can since he's worried we're gonna get found out but he's getting sloppier with each batch. Now's he's telling us he can speed the time on the IFF encoding. I already have a hard enough time getting these damn things not to stare at walls and now he's gonna shortchange the only part of these tincans that tells em not to turn us into paste on a wall. I told Richter to get out while he can, We're counting days before either some Sif task force shows up at our door or these things decide we aren't there friends anymore."; name = "Note"},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aT" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aU" = (/obj/machinery/vending/security,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aV" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aW" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aX" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) -"aY" = (/obj/item/mecha_parts/part/gygax_left_leg,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) -"aZ" = (/obj/machinery/light,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) -"ba" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/weapon/gun/projectile/pistol,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) -"bb" = (/obj/structure/closet/crate/trashcart,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bc" = (/obj/structure/loot_pile/maint/trash,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bd" = (/obj/structure/table/standard,/obj/item/weapon/storage/bag/trash,/obj/item/weapon/storage/bag/trash,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"be" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bf" = (/obj/machinery/light,/obj/structure/table/standard,/obj/item/weapon/pen,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bg" = (/obj/machinery/door/airlock/security{icon_state = "door_locked"; locked = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bh" = (/obj/machinery/light,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bi" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bj" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bk" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bl" = (/mob/living/bot/farmbot{faction = "malf_drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bm" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bn" = (/obj/machinery/vending/cola,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bo" = (/obj/structure/door_assembly,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bp" = (/mob/living/simple_animal/hostile/malf_drone{desc = "An automated combat drone with an aged apperance."; returns_home = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bq" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"br" = (/obj/effect/decal/remains,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bs" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) -"bt" = (/obj/machinery/vending/snack,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bu" = (/obj/item/stack/rods,/obj/structure/girder,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bv" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bw" = (/obj/item/mecha_parts/part/gygax_right_arm,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bx" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) -"by" = (/obj/machinery/door/airlock/engineering,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bz" = (/turf/simulated/wall,/area/submap/Rockybase) -"bA" = (/obj/structure/table/standard,/obj/item/device/kit/paint/gygax/darkgygax,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bB" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "I've decided to go forward and start some small scale tests of the Vicerator delivery grenades, Might as wall make sure they work like the real ones. There are a few Fauna areas nearbye and we're working to make sure the kinks in the code are worked out. Once we've made sure they stay flying we'll work on the IFF signals."; name = "V-Grenade Notice 2"},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bC" = (/obj/structure/table/standard,/obj/random/toolbox,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bD" = (/obj/structure/table/standard,/obj/random/toolbox,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bE" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "We've finally been able to get the Vicerator delivery grenades working, Took awhile to make sure the latching mechanism didn't fail but we're sure we've got it this time. Vel'Shem's worried about the miners having there own drone fab now but I say it's a small price to pay to keep the metal flowing, Especially since there telling us NT's starting to monopolize the metal rich parts."; name = "V-Grenade Notice 1"},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bF" = (/obj/structure/table/standard,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bG" = (/obj/structure/table/standard,/obj/item/weapon/grenade/spawnergrenade/manhacks,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bH" = (/obj/structure/table/standard,/obj/item/stack/material/steel,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bI" = (/obj/structure/table/standard,/obj/machinery/light{dir = 1},/obj/item/weapon/circuitboard/mecha/gygax/main,/obj/item/weapon/circuitboard/mecha/gygax/peripherals,/obj/item/weapon/circuitboard/mecha/gygax/targeting,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bJ" = (/obj/item/weapon/material/shard,/turf/simulated/floor,/area/submap/Rockybase) -"bK" = (/obj/structure/table/standard,/obj/fiftyspawner/rods,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bL" = (/obj/machinery/vending/engivend,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bM" = (/obj/machinery/vending/tool,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bN" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bO" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bP" = (/obj/item/mecha_parts/part/gygax_torso,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bQ" = (/obj/machinery/light{dir = 1},/obj/structure/closet/crate/medical,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bR" = (/obj/structure/table/standard,/obj/structure/table/standard,/obj/effect/decal/cleanable/dirt,/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bS" = (/obj/structure/table/standard,/obj/item/clothing/mask/breath/medical,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bT" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bU" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bV" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) -"bW" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) -"bX" = (/obj/structure/table/standard,/obj/item/device/mmi/digital/robot,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bY" = (/obj/item/stack/rods,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"bZ" = (/obj/effect/decal/cleanable/dirt,/obj/structure/girder,/turf/simulated/floor,/area/submap/Rockybase) -"ca" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/Rockybase) -"cb" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table,/turf/simulated/floor,/area/submap/Rockybase) -"cc" = (/obj/structure/girder,/turf/simulated/floor,/area/submap/Rockybase) -"cd" = (/obj/structure/closet/secure_closet/medical1,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"ce" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) -"cf" = (/obj/machinery/drone_fabricator,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"cg" = (/obj/machinery/mecha_part_fabricator,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"ch" = (/obj/machinery/pros_fabricator,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"ci" = (/obj/structure/table/standard,/obj/item/mecha_parts/mecha_equipment/repair_droid,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"cj" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"ck" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"cl" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable/point_of_interest,/turf/simulated/floor,/area/submap/Rockybase) +"as" = (/obj/structure/table/woodentable,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"at" = (/obj/structure/table/woodentable,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"au" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"av" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"aw" = (/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"ax" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"ay" = (/obj/structure/table/woodentable,/obj/machinery/light{dir = 1},/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"az" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"aA" = (/obj/structure/closet/l3closet/janitor,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aB" = (/mob/living/bot/cleanbot{faction = "malf_drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aC" = (/obj/item/weapon/stool,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aD" = (/obj/item/weapon/storage/belt/janitor,/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aE" = (/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aF" = (/obj/structure/table/standard,/obj/item/device/laptop,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aG" = (/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aH" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/pistol,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aI" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/gun/taser,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aJ" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aK" = (/obj/machinery/vending/coffee,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aL" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aM" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aN" = (/obj/structure/closet/crate/hydroponics,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aO" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"aP" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"aQ" = (/obj/structure/janitorialcart,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aR" = (/obj/structure/table/standard,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aS" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aT" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "Carl's absolutly fucked in the head. He's trying to squeeze as much drone production out as he can since he's worried we're gonna get found out but he's getting sloppier with each batch. Now's he's telling us he can speed the time on the IFF encoding. I already have a hard enough time getting these damn things not to stare at walls and now he's gonna shortchange the only part of these tincans that tells em not to turn us into paste on a wall. I told Richter to get out while he can, We're counting days before either some Sif task force shows up at our door or these things decide we aren't there friends anymore."; name = "Note"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aU" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aV" = (/obj/machinery/vending/security,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aW" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aX" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aY" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"aZ" = (/obj/item/mecha_parts/part/gygax_left_leg,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"ba" = (/obj/machinery/light,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"bb" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/weapon/gun/projectile/pistol,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"bc" = (/obj/structure/closet/crate/trashcart,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bd" = (/obj/structure/loot_pile/maint/trash,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"be" = (/obj/structure/table/standard,/obj/item/weapon/storage/bag/trash,/obj/item/weapon/storage/bag/trash,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bf" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bg" = (/obj/machinery/light,/obj/structure/table/standard,/obj/item/weapon/pen,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bh" = (/obj/machinery/door/airlock/security{icon_state = "door_locked"; locked = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bi" = (/obj/machinery/light,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bj" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bk" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bl" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bm" = (/mob/living/bot/farmbot{faction = "malf_drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bn" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bo" = (/obj/machinery/vending/cola,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bp" = (/obj/structure/door_assembly,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bq" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"br" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bs" = (/mob/living/simple_animal/hostile/malf_drone{desc = "An automated combat drone with an aged apperance."; returns_home = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bt" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bu" = (/obj/effect/decal/remains,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bv" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"bw" = (/obj/machinery/vending/snack,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bx" = (/obj/item/stack/rods,/obj/structure/girder,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"by" = (/obj/item/mecha_parts/part/gygax_right_arm,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bz" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"bA" = (/obj/machinery/door/airlock/engineering,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bB" = (/turf/simulated/wall,/area/submap/Rockybase) +"bC" = (/obj/structure/table/standard,/obj/item/device/kit/paint/gygax/darkgygax,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bD" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "I've decided to go forward and start some small scale tests of the Vicerator delivery grenades, Might as wall make sure they work like the real ones. There are a few Fauna areas nearbye and we're working to make sure the kinks in the code are worked out. Once we've made sure they stay flying we'll work on the IFF signals."; name = "V-Grenade Notice 2"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bE" = (/obj/structure/table/standard,/obj/random/toolbox,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bF" = (/obj/structure/table/standard,/obj/random/toolbox,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bG" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "We've finally been able to get the Vicerator delivery grenades working, Took awhile to make sure the latching mechanism didn't fail but we're sure we've got it this time. Vel'Shem's worried about the miners having there own drone fab now but I say it's a small price to pay to keep the metal flowing, Especially since there telling us NT's starting to monopolize the metal rich parts."; name = "V-Grenade Notice 1"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bH" = (/obj/structure/table/standard,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bI" = (/obj/structure/table/standard,/obj/item/weapon/grenade/spawnergrenade/manhacks,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bJ" = (/obj/structure/table/standard,/obj/item/stack/material/steel,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bK" = (/obj/structure/table/standard,/obj/machinery/light{dir = 1},/obj/item/weapon/circuitboard/mecha/gygax/main,/obj/item/weapon/circuitboard/mecha/gygax/peripherals,/obj/item/weapon/circuitboard/mecha/gygax/targeting,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bL" = (/obj/item/weapon/material/shard,/turf/simulated/floor,/area/submap/Rockybase) +"bM" = (/obj/structure/table/standard,/obj/fiftyspawner/rods,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bN" = (/obj/machinery/vending/engivend,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bO" = (/obj/machinery/vending/tool,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bP" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bQ" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bR" = (/obj/item/mecha_parts/part/gygax_torso,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bS" = (/obj/machinery/light{dir = 1},/obj/structure/closet/crate/medical,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bT" = (/obj/structure/table/standard,/obj/structure/table/standard,/obj/effect/decal/cleanable/dirt,/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bU" = (/obj/structure/table/standard,/obj/item/clothing/mask/breath/medical,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bV" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bW" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"bX" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"bY" = (/obj/structure/table/standard,/obj/item/device/mmi/digital/robot,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bZ" = (/obj/item/stack/rods,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"ca" = (/obj/effect/decal/cleanable/dirt,/obj/structure/girder,/turf/simulated/floor,/area/submap/Rockybase) +"cb" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/Rockybase) +"cc" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table,/turf/simulated/floor,/area/submap/Rockybase) +"cd" = (/obj/structure/girder,/turf/simulated/floor,/area/submap/Rockybase) +"ce" = (/obj/structure/closet/secure_closet/medical1,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cf" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"cg" = (/obj/machinery/drone_fabricator,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"ch" = (/obj/machinery/mecha_part_fabricator,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"ci" = (/obj/machinery/pros_fabricator,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cj" = (/obj/structure/table/standard,/obj/item/mecha_parts/mecha_equipment/repair_droid,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"ck" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cl" = (/obj/machinery/power/smes/buildable/point_of_interest,/turf/simulated/floor,/area/submap/Rockybase) "cm" = (/obj/machinery/vending/medical,/turf/simulated/floor/tiled,/area/submap/Rockybase) "cn" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase) "co" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/Rockybase) @@ -122,11 +122,11 @@ "cr" = (/obj/item/mecha_parts/part/gygax_armour,/turf/simulated/floor,/area/submap/Rockybase) "cs" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase) "ct" = (/obj/item/mecha_parts/chassis/gygax,/turf/simulated/floor/tiled,/area/submap/Rockybase) -"cu" = (/mob/living/simple_animal/hostile/mecha/malf_drone,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cu" = (/mob/living/simple_animal/hostile/mecha/malf_drone{name = "Autonomous Mechanized Drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase) "cv" = (/obj/machinery/vending/robotics,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase) "cw" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/light{dir = 8},/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "Unknown APC"; pixel_x = -24},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"cx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/submap/Rockybase) -"cy" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable/point_of_interest,/turf/simulated/floor,/area/submap/Rockybase) +"cx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cy" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/power/smes/buildable/point_of_interest,/turf/simulated/floor,/area/submap/Rockybase) "cz" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/blood,/turf/simulated/floor,/area/submap/Rockybase) "cA" = (/obj/item/mecha_parts/part/gygax_right_leg,/turf/simulated/floor/tiled,/area/submap/Rockybase) "cB" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/item/mecha_parts/part/gygax_left_arm,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) @@ -153,31 +153,31 @@ aaabababababababababababababababababababaaababababababababababababababababababababababababababababaa abacadadadaeadadadadaeadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadacadadadadadab abadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadab -abadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadab -abadadadadadadadadadadafadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadab -abadadagagagagagadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadab -abadadagagagagagagadadadadagagagagagadadadadadadadadahahahahahahadadadadadadadadadagagagadadadadadab -abadagagagagagagagagagagagagagagagagagadadadadadaiahahajahahahahahaiadadadadadagagagagagagagagagadab -akadagagagagagagagagagagagagagagagagagagagagagahahalahahahahahajalahahagagagagagagagagagagagagagadab -abadagagamamamamamamamamamamamamamamamamamamamamamamamanaoaoanamamamamamamamamamamamamamagagagagadab -abadagamamapaqaramasasatauavavasawaxawasayamamazaAaBaCamaDaDamaEaFaGaHaIaJamaDaKamaLaMamamagagagadab -abagagamamaNaqaOamavavavavavavavavavavavavamamaPaDaDaQamaRaDamaSaTaDaDaDaUamaDaVamaDaWamamagagagadab -abagagamamaNaqaXamavaYavavaZavasbaasawasawamambbaDbcbdamaDaDambebfaDaDaDaDbgbhbiamaDbjamamagagagadab -abagagamamaqaqaqamamambkamamamamamamamamamamamambkamamamaoaoamamamamambkamamamamamblbmamamagagagadab -abagagamamambkamambnaDaDaDaDaIaDaDaDaDboaDaIaDaDaDaDaDaDaDaDaDaDaIaDaDaDaDaDaIaDamaDbjamamagagagadab -abagagamamaRaDaDaDaDaDaDbpaDaDaDbqbraDaDaDaDaDaDaDaDaDaDaDaDaDaDaDaDaDaDaDbpaDaDbkaDbjamamagagagadab -abadagamamambsamambtaDaDbhaDaDaDaDaDbuaDahbrbhaDbqaDbvaDaDaDaDaDaDaDbhaDaDaDaDbwamaDbmamamagagagadab -abadagamambxaqaqamamamamamamamamamamamahahamamamambyamamamamaDamamamamamamamamamamaDbjamamagagagadab -abadagamambzbzaqambAbBbCbDbEbFbGbHbIboahbJbKambLbMaDbNbOambPaDaDbQbRbSbTaDaDaDbUamaDbjamamagagagadab -abadagamambVbsbWamaDaDaDaDaDaDaDaDaDaDaDahbXamaDaDaDaDaDamboaDbTbTbYbZcacbccaDcdamaDbmamamagagagaeab -abadagamambzbzceamaDcfaDaDcfaDaDcgaDchaDahciamaDaDcjckclamcmaDbTcncocpcqcocrahaDamaDbjamamagagadadab -abadagamambVbsaqamcsaDaDctaDcuaDaDaDaDaDaDcvamcwckcxckcyamaDaDbTczcqcqcocbahbJaDamaDcAamamagagadadab -abadagamambzbzcBamaDcfaDaDahahaDaDaDaDaDaDcCamaDaDcDckclamcEaDaDcFcocacacacaahbTamaDcGamamagadadadab -abadagamambVbsaqamaDaDaDaDaDaDbhcHaDcHaDaDbMamcIcJcKcLaDamcMaDcNaDaDcOcccOcPbTcQamcRcSamamagagadadab -abadagagamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamagagadadafab -abadagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagadadadab -abadagagagagagagagagagagagagagagagagagagagagagagagagagagagagagadagagagadadadagagagagagagagadadadadab -abadadagagagagagagagagagagagagafadadadagagagagagagadadadadadadadadadadadadadadadadadadadadadadadadab -abadaeadadadadadadagagagagagadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadab +abadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadab +abadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadab +abadadafafafafafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadab +abadadafafafafafafagadadadafafafafafadadadadadadadadahahahahahahadadadadadadadadadafafafagadadadadab +abadafafafafafafafafafafafafafafafafafadadadadadaiahahajahahahahahaiadadadadadafafafafafafafafafadab +akadafafafafafafafafafafafafafafafafafafafafafahahalahahahahahajalahahafafafafafafafafafafafafafadab +abadafafamamamamamamamamamamamamamamamamamamamamamamamanaoaoanamamamamamamamamamamamamamafafafafadab +abadafamamapaqaramasatauavawawataxayaxatazamamaAaBaCaDamaEaEamaFaGaHaIaJaKamaEaLamaMaNamamafafafadab +abafafamamaOaqaPamawawawawawawawawawawawawamamaQaEaEaRamaSaEamaTaUaEaEaEaVamaEaWamaEaXamamafafafadab +abafafamamaOaqaYamawaZawawbaawatbbataxataxamambcaEbdbeamaEaEambfbgaEaEaEaEbhbibjamaEbkamamafafafadab +abafafamamaqaqaqamamamblamamamamamamamamamamamamblamamamaoaoamamamamamblamamamamambmbnamamafafafadab +abafafamamamblamamboaEaEaEaEaJaEaEaEaEbpaEaJaEaEaEaEaEaEaEaEaEaEaJaEaEaEaEbqbqbramaEbkamamafafafadab +abafafamamaSaEaEaEaEaEaEbsbqbqaEbtbuaEaEaEaEaEaEaEaEaEaEbqaEaEaEaEaEaEaEaEbsbqbqblaEbkamamafafafadab +abadafamamambvamambwaEaEbqbqbqaEaEaEbxaEahbubiaEbtaEbqbqbqaEaEaEaEaEbiaEaEaEaEbyamaEbnamamafafafadab +abadafamambzaqaqamamamamamamamamamamamahahamamamambAamamamamaEamamamamamamamamamamaEbkamamafafafadab +abadafamambBbBaqambCbDbEbFbGbHbIbJbKbpahbLbMambNbOaEbPbQambRaEaEbSbTbUbqaEaEaEbVamaEbkamamafafafadab +abadafamambWbvbXamaEaEaEaEaEaEaEaEaEaEaEahbYamaEaEaEaEaEambpaEbqbqbZcacbcccdaEceamaEbnamamafafafaeab +abadafamambBbBcfamaEcgaEaEcgaEaEchaEciaEahcjamaEbqbqckclamcmaEbqcncocpcqcocrahaEamaEbkamamafafadadab +abadafamambWbvaqamcsaEaEctaEcuaEbqbqaEaEaEcvamcwcxbqckcyamaEaEbqczcqcqcoccahbLaEamaEcAamamafafadadab +abadafamambBbBcBamaEcgaEaEahahbqbqbqbqaEaEcCamaEaEcDckclamcEaEaEcFcocbcbcbcbahbqamaEcGamamafagadadab +abadafamambWbvaqamaEaEaEaEaEaEbicHaEcHaEaEbOamcIcJcKcLaEamcMaEcNaEaEcOcdcOcPbqcQamcRcSamamafafadadab +abadafafamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamafafadadadab +abadafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafadadadab +abadafafafafafafafafafafafafafafafafafafafafafafafafafafafafafadafafafadadadafafafafafafafadadadadab +abadadafafafafafafafafafafafafagadadadafafafafafafadadadadadadadadadadadadadadadadadadadadadadadadab +abadaeadadadadadadafafafafafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadab aaabcTababababababababababababababababababaaababababababababababababababababakababababababcTabakabab "} diff --git a/vorestation.dme b/vorestation.dme index a5f8047f95..809f55ff82 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -204,6 +204,7 @@ #include "code\controllers\subsystems\persist_vr.dm" #include "code\controllers\subsystems\shuttles.dm" #include "code\controllers\subsystems\transcore_vr.dm" +#include "code\controllers\subsystems\xenoarch.dm" #include "code\datums\ai_law_sets.dm" #include "code\datums\ai_laws.dm" #include "code\datums\beam.dm" @@ -929,6 +930,7 @@ #include "code\game\objects\items\devices\suit_cooling.dm" #include "code\game\objects\items\devices\t_scanner.dm" #include "code\game\objects\items\devices\taperecorder.dm" +#include "code\game\objects\items\devices\text_to_speech.dm" #include "code\game\objects\items\devices\traitordevices.dm" #include "code\game\objects\items\devices\transfer_valve.dm" #include "code\game\objects\items\devices\translator.dm" @@ -2293,6 +2295,7 @@ #include "code\modules\power\fusion\fusion_particle_catcher.dm" #include "code\modules\power\fusion\fusion_reactions.dm" #include "code\modules\power\fusion\fusion_reagents.dm" +#include "code\modules\power\fusion\magpower.dm" #include "code\modules\power\fusion\core\_core.dm" #include "code\modules\power\fusion\core\core_control.dm" #include "code\modules\power\fusion\core\core_field.dm" @@ -2335,6 +2338,7 @@ #include "code\modules\projectiles\ammunition\rounds.dm" #include "code\modules\projectiles\guns\energy.dm" #include "code\modules\projectiles\guns\launcher.dm" +#include "code\modules\projectiles\guns\modular_guns.dm" #include "code\modules\projectiles\guns\projectile.dm" #include "code\modules\projectiles\guns\vox.dm" #include "code\modules\projectiles\guns\energy\laser.dm" @@ -2672,7 +2676,6 @@ #include "code\modules\xenoarcheaology\boulder.dm" #include "code\modules\xenoarcheaology\effect.dm" #include "code\modules\xenoarcheaology\manuals.dm" -#include "code\modules\xenoarcheaology\master_controller.dm" #include "code\modules\xenoarcheaology\misc.dm" #include "code\modules\xenoarcheaology\misc_vr.dm" #include "code\modules\xenoarcheaology\sampling.dm"