diff --git a/code/__DEFINES/~skyrat_defines/faction.dm b/code/__DEFINES/~skyrat_defines/faction.dm new file mode 100644 index 00000000000..b1d32d35443 --- /dev/null +++ b/code/__DEFINES/~skyrat_defines/faction.dm @@ -0,0 +1,9 @@ +#define ACCESS_FACTION_PUBLIC 401 +#define ACCESS_FACTION_CREW 402 +#define ACCESS_FACTION_COMMAND 403 + +#define RADIO_CHANNEL_FACTION "Faction" +#define RADIO_KEY_FACTION "f" +#define RADIO_TOKEN_FACTION ":f" + +#define FREQ_FACTION 1335 diff --git a/code/game/communications.dm b/code/game/communications.dm index fe47979c888..8cbf31c09a0 100644 --- a/code/game/communications.dm +++ b/code/game/communications.dm @@ -98,6 +98,7 @@ GLOBAL_LIST_INIT(radiochannels, list( RADIO_CHANNEL_ENGINEERING = FREQ_ENGINEERING, RADIO_CHANNEL_SECURITY = FREQ_SECURITY, RADIO_CHANNEL_CENTCOM = FREQ_CENTCOM, + RADIO_CHANNEL_FACTION = FREQ_FACTION, //SKYRAT EDIT ADDITION - FACTION RADIO_CHANNEL_SYNDICATE = FREQ_SYNDICATE, RADIO_CHANNEL_SUPPLY = FREQ_SUPPLY, RADIO_CHANNEL_SERVICE = FREQ_SERVICE, @@ -114,6 +115,7 @@ GLOBAL_LIST_INIT(reverseradiochannels, list( "[FREQ_ENGINEERING]" = RADIO_CHANNEL_ENGINEERING, "[FREQ_SECURITY]" = RADIO_CHANNEL_SECURITY, "[FREQ_CENTCOM]" = RADIO_CHANNEL_CENTCOM, + "[FREQ_FACTION]" = RADIO_CHANNEL_FACTION, //SKYRAT EDIT ADDITION - FACTION "[FREQ_SYNDICATE]" = RADIO_CHANNEL_SYNDICATE, "[FREQ_SUPPLY]" = RADIO_CHANNEL_SUPPLY, "[FREQ_SERVICE]" = RADIO_CHANNEL_SERVICE, diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index a106b4a8775..28a196dc415 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -263,7 +263,8 @@ var/datum/signal/subspace/vocal/signal = new(src, freq, speaker, language, message, spans, message_mods) // Independent radios, on the CentCom frequency, reach all independent radios - if (independent && (freq == FREQ_CENTCOM || freq == FREQ_CTF_RED || freq == FREQ_CTF_BLUE)) + //if (independent && (freq == FREQ_CENTCOM || freq == FREQ_CTF_RED || freq == FREQ_CTF_BLUE)) //ORIGINAL + if (independent && (freq == FREQ_CENTCOM || freq == FREQ_CTF_RED || freq == FREQ_CTF_BLUE || freq == FREQ_FACTION)) //SKYRAT EDIT CHANGE - FACTION signal.data["compression"] = 0 signal.transmission_method = TRANSMISSION_SUPERSPACE signal.levels = list(0) // reaches all Z-levels diff --git a/code/game/say.dm b/code/game/say.dm index a3a1f9b7e72..7028cb7177c 100644 --- a/code/game/say.dm +++ b/code/game/say.dm @@ -14,6 +14,7 @@ GLOBAL_LIST_INIT(freqtospan, list( "[FREQ_AI_PRIVATE]" = "aiprivradio", "[FREQ_SYNDICATE]" = "syndradio", "[FREQ_CENTCOM]" = "centcomradio", + "[FREQ_FACTION]" = "suppradio", //SKYRAT EDIT ADDITIION - FACTION "[FREQ_CTF_RED]" = "redteamradio", "[FREQ_CTF_BLUE]" = "blueteamradio" )) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 25df1301eee..854e0f5e80b 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -80,6 +80,7 @@ GLOBAL_PROTECT(admin_verbs_admin) /client/proc/resetasaycolor, /client/proc/toggleadminhelpsound, /client/proc/respawn_character, + /client/proc/admin_open_event_spawners_menu, //SKYRAT EDIT ADDITION - EVENTS /datum/admins/proc/toggleaooc, //SKYRAT EDIT ADDITION - ADMIN /datum/admins/proc/togglesooc, //SKYRAT EDIT ADDITION - ADMIN /datum/admins/proc/open_borgopanel @@ -261,6 +262,7 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( /client/proc/toggle_nuke, /client/proc/cmd_display_del_log, /client/proc/toggle_combo_hud, + /client/proc/admin_open_event_spawners_menu, //SKYRAT EDIT ADDITION - EVENTS /client/proc/debug_huds )) GLOBAL_PROTECT(admin_verbs_hideable) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 72e9fb636db..cbd347845cd 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -65,7 +65,8 @@ return if (!sender) - sender = input("Who is the message from?", "Sender") as null|anything in list(RADIO_CHANNEL_CENTCOM,RADIO_CHANNEL_SYNDICATE) + //sender = input("Who is the message from?", "Sender") as null|anything in list(RADIO_CHANNEL_CENTCOM,RADIO_CHANNEL_SYNDICATE) //ORIGINAL + sender = input("Who is the message from?", "Sender") as null|anything in list(RADIO_CHANNEL_CENTCOM,RADIO_CHANNEL_SYNDICATE,RADIO_CHANNEL_FACTION) //SKYRAT EDIT CHANGE if(!sender) return diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm index dbdc55ea16e..2d0a097b262 100644 --- a/code/modules/mob/living/living_say.dm +++ b/code/modules/mob/living/living_say.dm @@ -19,6 +19,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list( // Faction RADIO_KEY_SYNDICATE = RADIO_CHANNEL_SYNDICATE, RADIO_KEY_CENTCOM = RADIO_CHANNEL_CENTCOM, + RADIO_KEY_FACTION = RADIO_CHANNEL_FACTION, //SKYRAT EDIT ADDITION - FACTION // Admin MODE_KEY_ADMIN = MODE_ADMIN, @@ -49,6 +50,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list( // Faction "å" = RADIO_CHANNEL_SYNDICATE, "í" = RADIO_CHANNEL_CENTCOM, + //"a" = RADIO_CHANNEL_FACTION, //SKYRAT EDIT ADDITION - FACTION // Admin "ç" = MODE_ADMIN, diff --git a/modular_skyrat/modules/customization/modules/mob/dead/new_player/preferences_setup.dm b/modular_skyrat/modules/customization/modules/mob/dead/new_player/preferences_setup.dm index 966d8e6ca65..fe163ec2e10 100644 --- a/modular_skyrat/modules/customization/modules/mob/dead/new_player/preferences_setup.dm +++ b/modular_skyrat/modules/customization/modules/mob/dead/new_player/preferences_setup.dm @@ -187,12 +187,14 @@ return items_to_pack //This needs to be a seperate proc because the character could not have the proper backpack during the moment of loadout equip -/datum/preferences/proc/add_packed_items(mob/living/carbon/human/H, list/packed_items) +/datum/preferences/proc/add_packed_items(mob/living/carbon/human/H, list/packed_items, del_on_fail = TRUE) //Here we stick loadout items that couldn't be equipped into a bag. var/obj/item/back_item = H.back for(var/item in packed_items) var/obj/item/ITEM = item if(back_item) ITEM.forceMove(back_item) - else + else if (del_on_fail) qdel(ITEM) + else + ITEM.forceMove(get_turf(H)) diff --git a/modular_skyrat/modules/events/code/__event_defines.dm b/modular_skyrat/modules/events/code/__event_defines.dm new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/modular_skyrat/modules/events/code/__event_defines.dm @@ -0,0 +1 @@ + diff --git a/modular_skyrat/modules/events/code/_event_globalvars.dm b/modular_skyrat/modules/events/code/_event_globalvars.dm new file mode 100644 index 00000000000..2695008446e --- /dev/null +++ b/modular_skyrat/modules/events/code/_event_globalvars.dm @@ -0,0 +1,4 @@ +GLOBAL_VAR_INIT(event_spawner_manager, InitializeEventSpawnManager()) + +/proc/InitializeEventSpawnManager() + return new /datum/event_spawner_manager() diff --git a/modular_skyrat/modules/events/code/event_spawner.dm b/modular_skyrat/modules/events/code/event_spawner.dm new file mode 100644 index 00000000000..6f626fb35b8 --- /dev/null +++ b/modular_skyrat/modules/events/code/event_spawner.dm @@ -0,0 +1,169 @@ +/obj/character_event_spawner + icon = 'modular_skyrat/modules/cryosleep/icons/cryogenics.dmi' + icon_state = "cryopod" + + var/list/species_whitelist + var/list/gender_whitelist + var/list/ckey_whitelist + var/used_outfit = /datum/outfit/centcom/ert/engineer + var/job_name + var/gets_loadout = TRUE + var/access_override + var/headset_override + var/flavor_text = "" + var/list/additional_equipment + var/disappear_after_spawn + + var/used = FALSE + +/obj/character_event_spawner/attack_ghost(mob/user) + TrySpawn(user) + +/obj/character_event_spawner/proc/TrySpawn(mob/dead/observer/user) + if(!user || !user.client) + return + if(used) + return + if(ckey_whitelist && !(lowertext(user.ckey) in ckey_whitelist)) + alert(user, "Sorry, This spawner is not for you!", "", "Ok") + return + var/species_string + if(species_whitelist) + species_string = "" + var/first = TRUE + for(var/spec_key in species_whitelist) + if(!first) + species_string += ", " + species_string += "[spec_key]" + first = FALSE + var/gender_string + if(gender_whitelist) + gender_string = "" + var/first = TRUE + for(var/spec_key in gender_whitelist) + if(!first) + gender_string += ", " + gender_string += "[spec_key]" + first = FALSE + var/warning_string = "WARNING: This spawner will use your currently selected character in prefs ([user.client.prefs.real_name])\nMake sure that the character is not used as a station crew, or would have a good reason to be this role.\nDo you wanna proceed?" + if(species_string) + warning_string += "\nThis role is restricted to those species: [species_string]" + if(gender_string) + warning_string += "\nThis role is restricted to those genders: [gender_string]" + var/action = alert(user, warning_string, "", "Yes", "Yes with Alias", "No") + if(!action || action == "No") + return + var/alias + if(action == "Yes with Alias") + var/msg = reject_bad_name(input(usr, "Set your character's alias for this role", "Alias") as text|null) + if(!msg) + return + alias = msg + if(!user || !user.client) + return + if(species_whitelist && !(user.client.prefs.pref_species.id in species_whitelist)) + alert(user, "Sorry, This spawner is limited to those species: [species_string]. Please switch your character.", "", "Ok") + return + if(gender_whitelist && !(user.client.prefs.gender in gender_whitelist)) + alert(user, "Sorry, This spawner is limited to those genders: [gender_string]. Please switch your character.", "", "Ok") + return + if(used) + return + SpawnPerson(user, alias) + +/obj/character_event_spawner/proc/SpawnPerson(mob/dead/observer/user, alias) + if(!user || !user.client) + return + message_admins("[ADMIN_LOOKUPFLW(user)] spawned as a [job_name] by using a spawner.") + used = TRUE + icon_state = "cryopod-open" + name = "opened cryogenic sleeper" + //Spawn and copify prefs + var/mob/living/carbon/human/H = new(src) + user.client.prefs.copy_to(H) + H.dna.update_dna_identity() + + if(alias) + H.name = alias + H.real_name = alias + + H.forceMove(get_turf(src)) + //Pre-job equips so Voxes dont die + H.dna.species.before_equip_job(null, H) + + if(used_outfit && used_outfit != "Naked") + H.equipOutfit(used_outfit) + + //Override headset here + if(headset_override) + var/obj/item/headset_slot = H.get_item_by_slot(ITEM_SLOT_EARS) + if(headset_slot) + qdel(headset_slot) + var/obj/item/new_headset = new headset_override() + if(new_headset) + if(!H.equip_to_slot_if_possible(new_headset, ITEM_SLOT_EARS, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) + new_headset.forceMove(get_turf(H)) + + var/obj/item/back_item + if(H.back && SEND_SIGNAL(H.back, COMSIG_CONTAINS_STORAGE)) + back_item = H.back + //Spawn our character a backpack if they dont have any + if(!back_item) + var/obj/item/new_bp = new /obj/item/storage/backpack() + if(H.equip_to_appropriate_slot(new_bp)) + back_item = new_bp + else + new_bp.forceMove(get_turf(H)) + if(additional_equipment) + for(var/eq_path in additional_equipment) + var/obj/item/equipped = new eq_path() + if(!H.equip_to_appropriate_slot(equipped)) + if(back_item) + equipped.forceMove(back_item) + else + equipped.forceMove(get_turf(H)) + + var/list/packed_items + if(gets_loadout) + packed_items = user.client.prefs.equip_preference_loadout(H, FALSE, null) + + if(packed_items) + user.client.prefs.add_packed_items(H, packed_items, FALSE) + + //Override access of the ID card here + var/obj/item/card/id/ID + if(length(access_override)) + var/obj/item/id_slot = H.get_item_by_slot(ITEM_SLOT_ID) + if(!id_slot) + var/obj/item/temp_id = new /obj/item/card/id() + if(!H.equip_to_slot_if_possible(temp_id, ITEM_SLOT_ID, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) + qdel(temp_id) + else + id_slot = temp_id + + if(id_slot) + ID = id_slot.GetID() + if(ID) + ID.access = access_override + //Override name and job of the ID card here + if(!ID) + var/obj/item/id_slot = H.get_item_by_slot(ITEM_SLOT_ID) + if(id_slot) + ID = id_slot.GetID() + if(ID) + ID.registered_name = H.real_name + ID.assignment = job_name + ID.update_label() + + H.regenerate_icons() + //Give control + if(user.mind) + user.mind.transfer_to(H, TRUE) + else + H.ckey = user.ckey + + //Greet! + to_chat(H, "You are the [job_name]") + to_chat(H, "[flavor_text]") + if(disappear_after_spawn) + qdel(src) diff --git a/modular_skyrat/modules/events/code/event_spawner_menu.dm b/modular_skyrat/modules/events/code/event_spawner_menu.dm new file mode 100644 index 00000000000..63ad0def4a5 --- /dev/null +++ b/modular_skyrat/modules/events/code/event_spawner_menu.dm @@ -0,0 +1,380 @@ +/datum/event_spawner_instance + var/id + var/list/species_whitelist = list() + var/list/gender_whitelist = list() + var/list/ckey_whitelist = list() + var/used_outfit + var/job_name = "Job Name" + var/gets_loadout = TRUE + var/list/access_override = list() + var/headset_override + var/flavor_text = "Flavor Text to be displayed" + var/list/additional_equipment = list() + var/disappear_after_spawn = FALSE + var/prompt_players = FALSE + + var/show_outfit_equipment = FALSE + +/datum/event_spawner_instance/New(_id, template_id) + id = _id + +/datum/event_spawner_instance/proc/CreateSpawner(turf/spawn_loc) + var/obj/character_event_spawner/CES = new(spawn_loc) + if(length(species_whitelist)) + CES.species_whitelist = species_whitelist.Copy() + if(length(gender_whitelist)) + CES.gender_whitelist = gender_whitelist.Copy() + if(length(ckey_whitelist)) + CES.ckey_whitelist = ckey_whitelist.Copy() + if(length(access_override)) + CES.access_override = access_override.Copy() + if(length(additional_equipment)) + CES.additional_equipment = additional_equipment.Copy() + CES.used_outfit = used_outfit + CES.job_name = job_name + CES.gets_loadout = gets_loadout + CES.headset_override = headset_override + CES.flavor_text = flavor_text + CES.disappear_after_spawn = disappear_after_spawn + CES.name = "[job_name] cryogenic sleeper" + if(prompt_players) + for(var/mob/dead/observer/ghost in GLOB.player_list) + if(length(ckey_whitelist) && !(lowertext(ghost.ckey) in ckey_whitelist)) + continue + ghost.playsound_local(ghost, 'sound/effects/ghost2.ogg', 75, FALSE) + var/turf_link = TURF_LINK(ghost, spawn_loc) + to_chat(ghost, "[turf_link] Event spawner that you can enter has been created. The role is [CES.job_name]. [turf_link]") + +/datum/event_spawner_instance/proc/GetExport() + var/list/blocks = list() + blocks["job_name"] = job_name + blocks["flavor_text"] = flavor_text + blocks["gets_loadout"] = gets_loadout + blocks["used_outfit"] = used_outfit + blocks["access_override"] = access_override.Copy() + blocks["headset_override"] = headset_override + blocks["additional_equipment"] = additional_equipment.Copy() + blocks["species_whitelist"] = species_whitelist.Copy() + blocks["gender_whitelist"] = gender_whitelist.Copy() + blocks["ckey_whitelist"] = ckey_whitelist.Copy() + blocks["disappear_after_spawn"] = disappear_after_spawn + blocks["prompt_players"] = prompt_players + return json_encode(blocks) + +/datum/event_spawner_instance/proc/DoImport(input) + var/list/blocks = json_decode(input) + job_name = blocks["job_name"] + flavor_text = blocks["flavor_text"] + gets_loadout = blocks["gets_loadout"] + used_outfit = text2path(blocks["used_outfit"]) + access_override = blocks["access_override"] + headset_override = text2path(blocks["headset_override"]) + var/list/temp_additional_equipment = blocks["additional_equipment"] + var/list/to_equipment = list() + for(var/string in temp_additional_equipment) + to_equipment += text2path(string) + additional_equipment = to_equipment + species_whitelist = blocks["species_whitelist"] + gender_whitelist = blocks["gender_whitelist"] + ckey_whitelist = blocks["ckey_whitelist"] + disappear_after_spawn = blocks["disappear_after_spawn"] + prompt_players = blocks["prompt_players"] + +/datum/event_spawner_manager + var/next_id = 0 + var/list/managed_instances = list() + var/radio_typecache + +/datum/event_spawner_manager/New() + radio_typecache = typecacheof(/obj/item/radio/headset) + +/datum/event_spawner_manager/proc/ShowPanel(mob/user, panel_id) + if(!user || !user.client) + return + var/list/dat = list("") + if(panel_id) + var/datum/event_spawner_instance/ESI = managed_instances["[panel_id]"] + if(!ESI) + return + dat += "Return ----- Export Import
" + dat += "Job Name: [ESI.job_name]" + dat += "
This will appear on the person's ID" + dat += "
Flavor Text: [ESI.flavor_text]" + dat += "
The player will be greeted with the flavor text. Tell him who his supervisors are, if any." + var/outfit_name + var/datum/outfit/OU + if(ESI.used_outfit) + if(ESI.used_outfit == "Naked") + outfit_name = "Naked" + else + OU = ESI.used_outfit + outfit_name = initial(OU.name) + dat += "
Allow Loadout: [ESI.gets_loadout ? "Yes" : "No"]" + dat += "
Whether loadout from prefs is allowed." + dat += "
Used Outfit: [outfit_name]" + dat += "
Which outfit is used for the spawned player. Below you can preview contents of the selected one." + if(ESI.used_outfit) + dat += "
[ESI.show_outfit_equipment ? "Hide outfit equipment" : "Show outfit equipment"]" + if(OU && ESI.show_outfit_equipment) + dat += "
Outfit equipment:" + var/obj/item/display = initial(OU.uniform) + if(display) + dat += "
Uniform: [initial(display.name)] - ([display])" + display = initial(OU.suit) + if(display) + dat += "
Suit: [initial(display.name)] - ([display])" + display = initial(OU.suit_store) + if(display) + dat += "
Suit Storage: [initial(display.name)] - ([display])" + display = initial(OU.belt) + if(display) + dat += "
Belt: [initial(display.name)] - ([display])" + display = initial(OU.gloves) + if(display) + dat += "
Gloves: [initial(display.name)] - ([display])" + display = initial(OU.head) + if(display) + dat += "
Head: [initial(display.name)] - ([display])" + display = initial(OU.mask) + if(display) + dat += "
Mask: [initial(display.name)] - ([display])" + display = initial(OU.neck) + if(display) + dat += "
Neck: [initial(display.name)] - ([display])" + display = initial(OU.ears) + if(display) + dat += "
Ears: [initial(display.name)] - ([display])" + display = initial(OU.glasses) + if(display) + dat += "
Glasses: [initial(display.name)] - ([display])" + display = initial(OU.id) + if(display) + dat += "
Id: [initial(display.name)] - ([display])" + display = initial(OU.l_pocket) + if(display) + dat += "
Left pocket: [initial(display.name)] - ([display])" + display = initial(OU.r_pocket) + if(display) + dat += "
Right pocket: [initial(display.name)] - ([display])" + display = initial(OU.back) + if(display) + dat += "
Back: [initial(display.name)] - ([display])" + var/list/backpack_cont = initial(OU.backpack_contents) + if(backpack_cont) + dat += "
+Things in the backpack (due to coding limitations, those cant be established. See the code for the outfit to know more.)" + display = initial(OU.l_hand) + if(display) + dat += "
Left hand: [initial(display.name)] - ([display])" + display = initial(OU.r_hand) + if(display) + dat += "
Right hand: [initial(display.name)] - ([display])" + + dat += "
" + dat += "Here you can add extra equipment on top of loadout, if possible those will be auto equipped." + dat += "
You HAVE to add them as typed paths(/obj/item/gun/energy/e_gun). Search in Game Panel to find desired paths." + dat += "
Additional equipment: Add" + for(var/eq in ESI.additional_equipment) + var/obj/item/equip = eq + dat += "
[initial(equip.name)] - ([eq])" + dat += "
" + dat += "Outfits limit on what airlocks can someone access, or what headset and frequences they have. Here you can edit those things" + dat += "
Access overrides: " + for(var/access_key in ESI.access_override) + dat += "[access_key]" + dat += " <- Add" + dat += "
Add access in NUMBERS. If no numbers are in the list, then the access will not be overriden. If you want to remove all access, add only a 0" + dat += "
See '/code/__DEFINES/access.dm' for an access list. (401-Faction Public, 402-Faction Crew, 403-Faction Command)" + dat += "
Headset override: " + if(ESI.headset_override) + var/obj/item/headset = ESI.headset_override + dat += "[initial(headset.name)] - ([ESI.headset_override])" + dat += " <- Set" + dat += "
Here you can override the headset, make sure to pick one which has the proper key with radio frequences for your role" + dat += "
" + dat += "Allowed Species:" + for(var/spec in ESI.species_whitelist) + dat += "[spec]" + dat += " <- Add" + dat += "
If no species are in the list, then any species can join as this role." + dat += "
Allowed Genders:" + for(var/gend in ESI.gender_whitelist) + dat += "[gend]" + dat += " <- Add" + dat += "
If no genders are in the list, then any gender can join as this role." + dat += "
Allowed CKEYs:" + for(var/ckey in ESI.ckey_whitelist) + dat += "[ckey]" + dat += " <- Add" + dat += "
If no ckeys are in the list, then any ckey can join as this role." + dat += "
Spawner disappears after spawn: [ESI.disappear_after_spawn ? "Yes" : "No"]" + dat += "
Prompt players when spawner created: [ESI.prompt_players ? "Yes" : "No"] This will only prompt ckeys which can access the spawner." + dat += "
Create spawner on current location
" + //Buttons for easy override for the faction stuff (for access and headset keys) + + else + dat += "Here you add and configure spawners. People will be able to join to them using their pre-made character in preferences." + dat += "" + dat += "" + var/even = FALSE + for(var/key in managed_instances) + even = !even + var/bc_col = even ? "#13171C" : "#23272C" + var/datum/event_spawner_instance/ESI = managed_instances[key] + var/desc = ESI.flavor_text + if(length(desc) > 40) + desc = "[copytext_char(desc, 1, 57)]..." + dat += "" + dat += "" + dat += "
#[key][ESI.job_name][desc]ConfigureClone
*Create new
" + + winshow(usr, "event_spawn_window", TRUE) + var/datum/browser/popup = new(usr, "event_spawn_window", "
Event Spawners
", 800, 700) + popup.set_content(dat.Join()) + popup.open(FALSE) + onclose(usr, "event_spawn_window", src) + +/datum/event_spawner_manager/Topic(href, href_list) + if(href_list["inst_pref"]) + var/numb = text2num(href_list["id"]) + var/datum/event_spawner_instance/ESI = managed_instances["[numb]"] + if(!ESI) + ShowPanel(usr, null) + return + switch(href_list["inst_pref"]) + if("return") + ShowPanel(usr, null) + return + if("job_name") + var/msg = input(usr, "Set the job name of this spawner.", "Job name", ESI.job_name) as text|null + if(msg) + ESI.job_name = msg + if("flavor_text") + var/msg = input(usr, "Set the flavor text of this spawner.", "Flavor Text", ESI.flavor_text) as message|null + if(msg) + ESI.flavor_text = msg + if("used_outfit") + var/dresscode = usr.client.robust_dress_shop() + if(dresscode) + ESI.used_outfit = dresscode + if("show_outfit_equipment") + ESI.show_outfit_equipment = !ESI.show_outfit_equipment + if("loadout") + ESI.gets_loadout = !ESI.gets_loadout + if("disappear_after_spawn") + ESI.disappear_after_spawn = !ESI.disappear_after_spawn + if("prompt_players") + ESI.prompt_players = !ESI.prompt_players + if("add_ckey") + var/msg = input(usr, "Add allowed CKEY to the spawner.", "Add CKEY", "") as text|null + if(msg) + ESI.ckey_whitelist += lowertext(msg) + if("add_species") + var/result = input(usr, "Select a species", "Add species") as null|anything in GLOB.roundstart_races + if(result) + ESI.species_whitelist += result + if("add_gender") + var/result = input(usr, "Select a gender", "Add Gender") as null|anything in list("male", "female", "plural") + if(result) + ESI.gender_whitelist += result + if("add_access") + var/msg = input(usr, "Add access type to the spawner(as number)", "Add Access", "") as num|null + if(msg != null) + if(!(msg in ESI.access_override)) + ESI.access_override += msg + if("add_equip") + var/msg = input(usr, "Add an equipment piece, as typed path (ex. /obj/item/gun/energy/e_gun).", "Add equipment", "") as text|null + if(!isnull(msg)) + var/typed = text2path(msg) + if(!isnull(typed)) + ESI.additional_equipment += typed + if("set_headset") + var/result = input(usr, "Select a headset", "Set Headset") as null|anything in radio_typecache + if(result) + ESI.headset_override = result + if("remove_ckey") + var/ckey_to_rem = href_list["ckey"] + ESI.ckey_whitelist -= ckey_to_rem + if("remove_species") + var/spec_to_rem = href_list["species"] + ESI.species_whitelist -= spec_to_rem + if("remove_gender") + var/gend_to_rem = href_list["gender"] + ESI.gender_whitelist -= gend_to_rem + if("remove_access") + var/access_to_rem = text2num(href_list["access"]) + ESI.access_override -= access_to_rem + if("remove_headset") + ESI.headset_override = null + if("remove_equip") + var/type_to_rem = text2path(href_list["equip"]) + ESI.additional_equipment -= type_to_rem + if("make_spawner") + var/turfed = get_turf(usr) + ESI.CreateSpawner(turfed) + message_admins("[ADMIN_LOOKUPFLW(usr)] created an event character spawner for [ESI.job_name].") + if("export") + var/output = ESI.GetExport() + usr << browse("[output]", "window=export_spawner;size=500x600;border=1;can_resize=1;can_close=1;can_minimize=1") + return + if("import") + var/input = input(usr, "Input the spawner savefile here.", "Import Spawner") as message|null + if(input) + ESI.DoImport(input) + ShowPanel(usr, numb) + if(href_list["pref"]) + switch(href_list["pref"]) + if("create_new_instance") + var/action = alert(usr, "Create a new instance, or import?", "", "New", "Import") + if(!action) + return + var/import_input + if(action == "Import") + import_input = input(usr, "Input the spawner savefile here.", "Import Spawner") as message|null + if(!import_input) + return + next_id++ + var/datum/event_spawner_instance/ESI = new(next_id) + managed_instances["[next_id]"] = ESI + if(import_input) + ESI.DoImport(import_input) + if("configure_instance") + var/numb = text2num(href_list["id"]) + var/datum/event_spawner_instance/ESI = managed_instances["[numb]"] + if(ESI) + ShowPanel(usr, numb) + return + if("clone_instance") + var/numb = text2num(href_list["id"]) + var/datum/event_spawner_instance/ESI = managed_instances["[numb]"] + next_id++ + var/datum/event_spawner_instance/ESI2 = new(next_id) + managed_instances["[next_id]"] = ESI2 + //Copypasta everything + ESI2.species_whitelist = ESI.species_whitelist.Copy() + ESI2.gender_whitelist = ESI.gender_whitelist.Copy() + ESI2.ckey_whitelist = ESI.ckey_whitelist.Copy() + ESI2.access_override = ESI.access_override.Copy() + ESI2.additional_equipment = ESI.additional_equipment.Copy() + ESI2.used_outfit = ESI.used_outfit + ESI2.job_name = ESI.job_name + ESI2.gets_loadout = ESI.gets_loadout + ESI2.headset_override = ESI.headset_override + ESI2.flavor_text = ESI.flavor_text + ESI2.disappear_after_spawn = ESI.disappear_after_spawn + ESI2.prompt_players = ESI.prompt_players + + ShowPanel(usr, null) + return + +/client/proc/admin_open_event_spawners_menu() + set category = "Admin.Events" + set name = "Event Spawners Menu" + + if(!check_rights(R_ADMIN)) + return + + var/datum/event_spawner_manager/ESM = GLOB.event_spawner_manager + ESM.ShowPanel(usr, null) + + SSblackbox.record_feedback("tally", "admin_verb", 1, "Event Spawner Menu") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + return diff --git a/modular_skyrat/modules/events/code/event_spawner_templates.dm b/modular_skyrat/modules/events/code/event_spawner_templates.dm new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/modular_skyrat/modules/events/code/event_spawner_templates.dm @@ -0,0 +1 @@ + diff --git a/modular_skyrat/modules/faction/code/clothes.dm b/modular_skyrat/modules/faction/code/clothes.dm new file mode 100644 index 00000000000..ac86b7c1792 --- /dev/null +++ b/modular_skyrat/modules/faction/code/clothes.dm @@ -0,0 +1,3 @@ +/obj/item/clothing/head/hos/beret/faction + name = "faction beret" + desc = "A black beret with thick armor padding inside. Stylish and robust. There's an unknown insignia emblazoned on it." diff --git a/modular_skyrat/modules/faction/code/id.dm b/modular_skyrat/modules/faction/code/id.dm new file mode 100644 index 00000000000..e75520632b5 --- /dev/null +++ b/modular_skyrat/modules/faction/code/id.dm @@ -0,0 +1,59 @@ +/obj/item/card/id/faction_guest + name = "guest card" + access = list(ACCESS_FACTION_PUBLIC) + +/obj/item/card/id/faction_crew + name = "crew card" + access = list(ACCESS_FACTION_PUBLIC, ACCESS_FACTION_CREW) + +/obj/item/card/id/faction_command + name = "command card" + access = list(ACCESS_FACTION_PUBLIC, ACCESS_FACTION_CREW, ACCESS_FACTION_COMMAND) + icon_state = "silver" + inhand_icon_state = "silver_id" + +/obj/item/card/faction_access + name = "faction access card" + desc = "A small card, that when used on any ID, will add faction access. This one is empty." + icon_state = "data_1" + var/list/extra_access + +/obj/item/card/faction_access/afterattack(atom/movable/AM, mob/user, proximity) + . = ..() + if(istype(AM, /obj/item/card/id) && proximity) + var/obj/item/card/id/I = AM + if(extra_access) + for(var/acs in extra_access) + I.access |= acs + to_chat(user, "You upgrade [I] with extra access.") + qdel(src) + +/obj/item/card/faction_access/guest + name = "faction guest access card" + desc = "A small card, that when used on any ID, will add guest access, which allows entering halls, living areas, kitchens and bars." + extra_access = list(ACCESS_FACTION_PUBLIC) + +/obj/item/card/faction_access/crew + name = "faction crew access card" + desc = "A small card, that when used on any ID, will add crew access, which allows entering most areas, barring command." + extra_access = list(ACCESS_FACTION_PUBLIC, ACCESS_FACTION_CREW) + color = "#BA7" + +/obj/item/card/faction_access/command + name = "faction command access card" + desc = "A small card, that when used on any ID, will add all faction access." + extra_access = list(ACCESS_FACTION_PUBLIC, ACCESS_FACTION_CREW, ACCESS_FACTION_COMMAND) + color = "#DDF" + +/obj/item/storage/box/faction_access_cards + name = "box of access chips" + desc = "In case you'd want to recruit people. Keep this safe." + +/obj/item/storage/box/faction_access_cards/PopulateContents() + for(var/i in 1 to 3) + new /obj/item/card/faction_access/guest(src) + for(var/i in 1 to 3) + new /obj/item/card/faction_access/crew(src) + new /obj/item/card/faction_access/command(src) + for(var/i in 1 to 4) + new /obj/item/encryptionkey/headset_faction(src) diff --git a/modular_skyrat/modules/faction/code/mapping/areas.dm b/modular_skyrat/modules/faction/code/mapping/areas.dm new file mode 100644 index 00000000000..033ce9a2a27 --- /dev/null +++ b/modular_skyrat/modules/faction/code/mapping/areas.dm @@ -0,0 +1,14 @@ +/area/shuttle/trader/bridge + name = "Trader Ship Bridge" + +/area/shuttle/trader/engine + name = "Trader Ship Engine" + +/area/shuttle/trader/bar + name = "Trader Ship Bar" + +/area/shuttle/trader/crew + name = "Trader Ship Crew Quarters" + +/area/shuttle/trader/cargo + name = "Trader Ship Cargo Bay" diff --git a/modular_skyrat/modules/faction/code/mapping/mapping_helpers.dm b/modular_skyrat/modules/faction/code/mapping/mapping_helpers.dm new file mode 100644 index 00000000000..277ac9a574d --- /dev/null +++ b/modular_skyrat/modules/faction/code/mapping/mapping_helpers.dm @@ -0,0 +1,213 @@ +/obj/machinery/computer/shuttle/trader + name = "trader shuttle console" + shuttleId = "tradership" + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + light_color = COLOR_SOFT_RED + possible_destinations = "tradership;tradership_custom;tradership_away;pirateship_away;pirateship_home;whiteship_away;whiteship_home;whiteship_z4;whiteship_lavaland" + circuit = /obj/item/circuitboard/computer/trader_ship + +/obj/machinery/computer/camera_advanced/shuttle_docker/trader + name = "trader shuttle navigation computer" + desc = "Used to designate a precise transit location for the trade shuttle." + shuttleId = "tradership" + shuttlePortId = "tradership_custom" + view_range = 8 + x_offset = -6 + y_offset = -10 + see_hidden = FALSE + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + jumpto_ports = list("tradership" = 1, "tradership_away" = 1, "tradership_custom" = 1,"whiteship_away" = 1, "whiteship_home" = 1, "whiteship_z4" = 1, "caravantrade1_ambush" = 1, "whiteship_lavaland" = 1) + whitelist_turfs = list(/turf/open/space, /turf/open/floor/plating, /turf/open/lava, /turf/closed/mineral) + lock_override = NONE + +/obj/item/circuitboard/computer/trader_ship + build_path = /obj/machinery/computer/shuttle/trader + +/obj/docking_port/mobile/tradership + name = "trade shuttle" + id = "tradership" + rechargeTime = 2 MINUTES + +/obj/docking_port/stationary/picked/tradership + name = "Deep Space" + id = "tradership_away" + dheight = 0 + dir = 2 + dwidth = 11 + height = 22 + width = 35 + shuttlekeys = list("tradership") + +/obj/structure/closet/crate/tradership_cargo + var/used_preset + +//Generic inventory +/obj/structure/closet/crate/tradership_cargo/PopulateContents() + . = ..() + var/random = used_preset || rand(1,5) + switch(random) + if(1) + for(var/i in 1 to 10) + new /obj/item/food/canned/beans(src) + for(var/i in 1 to 10) + new /obj/item/reagent_containers/food/drinks/waterbottle(src) + if(2) + new /obj/item/stack/sheet/metal/fifty(src) + new /obj/item/stack/rods/fifty(src) + new /obj/item/stack/sheet/glass/fifty(src) + new /obj/item/stack/sheet/mineral/wood/fifty(src) + new /obj/item/stack/cable_coil(src) + if(3) + for(var/i in 1 to 5) + new /obj/item/tank/internals/emergency_oxygen/engi(src) + new /obj/item/tank/internals/oxygen(src) + new /obj/item/tank/internals/nitrogen(src) + new /obj/item/tank/internals/nitrogen/belt/full(src) + new /obj/item/tank/internals/plasma(src) + new /obj/item/tank/internals/plasmaman/belt/full(src) + for(var/i in 1 to 7) + new /obj/item/clothing/mask/breath() + desc = "An internals crate." + name = "internals crate" + icon_state = "o2crate" + if(4) + new /obj/item/storage/firstaid/regular(src) + new /obj/item/storage/firstaid/o2(src) + new /obj/item/storage/firstaid/toxin(src) + new /obj/item/reagent_containers/hypospray/medipen(src) + new /obj/item/reagent_containers/hypospray/medipen/ekit(src) + desc = "A medical crate." + name = "medical crate" + icon_state = "medicalcrate" + if(5) + new /obj/item/storage/toolbox/artistic(src) + new /obj/item/storage/toolbox/electrical(src) + new /obj/item/storage/toolbox/electrical(src) + new /obj/item/storage/toolbox/mechanical(src) + new /obj/item/storage/toolbox/mechanical(src) + new /obj/item/clothing/gloves/color/yellow(src) + new /obj/item/clothing/gloves/color/yellow(src) + name = "engineering crate" + icon_state = "engi_crate" + +/obj/structure/closet/crate/freezer/tradership_cargo_freezer + var/used_preset + +/obj/structure/closet/crate/freezer/tradership_cargo_freezer/PopulateContents() + . = ..() + var/random = used_preset || rand(1,4) + switch(random) + if(1) + new /obj/item/reagent_containers/blood(src) + new /obj/item/reagent_containers/blood(src) + new /obj/item/reagent_containers/blood/a_minus(src) + new /obj/item/reagent_containers/blood/b_minus(src) + new /obj/item/reagent_containers/blood/b_plus(src) + new /obj/item/reagent_containers/blood/o_minus(src) + new /obj/item/reagent_containers/blood/o_plus(src) + new /obj/item/reagent_containers/blood/lizard(src) + new /obj/item/reagent_containers/blood/ethereal(src) + for(var/i in 1 to 3) + new /obj/item/reagent_containers/blood/random(src) + if(2) + new /obj/item/bodypart/l_arm/robot(src) + new /obj/item/bodypart/l_arm/robot(src) + new /obj/item/bodypart/r_arm/robot(src) + new /obj/item/bodypart/r_arm/robot(src) + new /obj/item/bodypart/l_leg/robot(src) + new /obj/item/bodypart/l_leg/robot(src) + new /obj/item/bodypart/r_leg/robot(src) + new /obj/item/bodypart/r_leg/robot(src) + if(3) + for(var/i in 1 to 6) + new /obj/item/storage/box/ingredients/wildcard(src) + if(4) + new /obj/item/food/meat/slab/human/mutant/slime(src) + new /obj/item/food/meat/slab/killertomato(src) + new /obj/item/food/meat/slab/bear(src) + new /obj/item/food/meat/slab/xeno(src) + new /obj/item/food/meat/slab/spider(src) + new /obj/item/food/meat/rawbacon(src) + new /obj/item/food/meat/slab/penguin(src) + new /obj/item/food/spiderleg(src) + new /obj/item/food/carpmeat(src) + new /obj/item/food/meat/slab/human(src) + +/obj/structure/closet/crate/secure/tradership_cargo_valuable + req_access = ACCESS_FACTION_CREW + var/used_preset + +/obj/structure/closet/crate/secure/tradership_cargo_valuable/PopulateContents() + . = ..() + var/random = used_preset || rand(1,5) + switch(random) + if(1) //Random traitor items + new /obj/item/storage/box/syndie_kit/chameleon(src) + new /obj/item/storage/backpack/duffelbag/syndie/c4(src) + new /obj/item/camera_bug(src) + new /obj/item/gun/chem(src) + new /obj/item/card/emag(src) + new /obj/item/card/emag/doorjack(src) + new /obj/item/gun/medbeam(src) + new /obj/item/healthanalyzer/rad_laser(src) + new /obj/item/pen/sleepy(src) + new /obj/item/storage/fancy/cigarettes/cigpack_syndicate(src) + if(2) //Energy weapons + energy knives + new /obj/item/gun/energy/e_gun(src) + new /obj/item/gun/energy/e_gun(src) + new /obj/item/gun/energy/e_gun/mini(src) + new /obj/item/gun/energy/kinetic_accelerator/crossbow(src) + new /obj/item/gun/energy/e_gun/nuclear(src) + new /obj/item/melee/transforming/energy/sword(src) + new /obj/item/melee/transforming/energy/sword(src) + if(3) //Ballistics + knives + new /obj/item/kitchen/knife/combat(src) + new /obj/item/kitchen/knife/combat(src) + new /obj/item/switchblade(src) + new /obj/item/switchblade(src) + new /obj/item/gun/ballistic/automatic/cfa_wildcat(src) + new /obj/item/gun/ballistic/automatic/cfa_wildcat(src) + for(var/i in 1 to 2) + new /obj/item/ammo_box/magazine/smg32(src) + new /obj/item/ammo_box/magazine/smg32/rubber(src) + new /obj/item/gun/ballistic/automatic/assault_rifle/akm(src) + for(var/i in 1 to 2) + new /obj/item/ammo_box/magazine/akm(src) + new /obj/item/gun/ballistic/automatic/submachine_gun/ppsh(src) + for(var/i in 1 to 2) + new /obj/item/ammo_box/magazine/ppsh(src) + new /obj/item/gun/ballistic/automatic/assault_rifle/stg(src) + for(var/i in 1 to 2) + new /obj/item/ammo_box/magazine/stg(src) + + if(4) //Hardsuits + new /obj/item/clothing/suit/space/hardsuit/mining(src) + new /obj/item/clothing/suit/space/hardsuit/engine(src) + new /obj/item/clothing/suit/space/hardsuit/engine/atmos(src) + new /obj/item/clothing/suit/space/hardsuit/rd(src) + new /obj/item/clothing/suit/space/hardsuit/syndi/elite(src) + new /obj/item/clothing/suit/space/hardsuit/syndi(src) + new /obj/item/clothing/suit/space/hardsuit/swat(src) + if(5) //Implants + new /obj/item/storage/box/cyber_implants(src) + new /obj/item/organ/cyberimp/arm/combat(src) + new /obj/item/organ/cyberimp/arm/surgery(src) + new /obj/item/organ/cyberimp/arm/baton(src) + new /obj/item/organ/cyberimp/arm/toolset(src) + new /obj/item/organ/cyberimp/arm/gun/taser(src) + +/obj/structure/closet/crate/secure/tradership_cargo_very_valuable + req_access = ACCESS_FACTION_COMMAND + icon_state = "weaponcrate" + var/used_preset + +/obj/structure/closet/crate/secure/tradership_cargo_very_valuable/PopulateContents() + . = ..() + var/random = used_preset || rand(1,1) + switch(random) + if(1) //45 TC, but no uplink. Better find a cantor + new /obj/item/stack/telecrystal/twenty(src) + new /obj/item/stack/telecrystal/twenty(src) + new /obj/item/stack/telecrystal/five(src) diff --git a/modular_skyrat/modules/faction/code/mapping/ruins.dm b/modular_skyrat/modules/faction/code/mapping/ruins.dm new file mode 100644 index 00000000000..8436445a98c --- /dev/null +++ b/modular_skyrat/modules/faction/code/mapping/ruins.dm @@ -0,0 +1,6 @@ +/datum/map_template/shuttle/tradership + prefix = "modular_skyrat/modules/faction/maps/shuttles/" + suffix = "faction" + can_be_bought = FALSE + name = "Faction Trader Ship" + port_id = "tradership" diff --git a/modular_skyrat/modules/faction/code/outfit.dm b/modular_skyrat/modules/faction/code/outfit.dm new file mode 100644 index 00000000000..c00fdccab98 --- /dev/null +++ b/modular_skyrat/modules/faction/code/outfit.dm @@ -0,0 +1,76 @@ +/datum/outfit/faction_captain + name = "Faction - Captain" + head = /obj/item/clothing/head/hos/beret/faction + uniform = /obj/item/clothing/under/syndicate + suit = /obj/item/clothing/suit/armor/hos/trenchcoat + shoes = /obj/item/clothing/shoes/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated + ears = /obj/item/radio/headset/headset_faction/bowman/captain + glasses = /obj/item/clothing/glasses/sunglasses + belt = /obj/item/gun/energy/e_gun + back = /obj/item/storage/backpack + id = /obj/item/card/id/faction_command + l_pocket = /obj/item/melee/transforming/energy/sword + backpack_contents = list(/obj/item/storage/box/survival/engineer=1,/obj/item/storage/box/faction_access_cards=1, /obj/item/storage/box/zipties,/obj/item/melee/classic_baton/telescopic=1, /obj/item/ammo_box/magazine/m45=2, /obj/item/gun/ballistic/automatic/pistol/m1911=1, /obj/item/stack/spacecash/c10000=1) + +/datum/outfit/faction_goon + name = "Faction - Goon" + mask = /obj/item/clothing/mask/gas/sechailer/swat + head = /obj/item/clothing/head/helmet/swat + uniform = /obj/item/clothing/under/syndicate + suit = /obj/item/clothing/suit/armor/hos/trenchcoat + suit_store = /obj/item/gun/ballistic/automatic/wt550 + shoes = /obj/item/clothing/shoes/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated + ears = /obj/item/radio/headset/headset_faction/bowman + glasses = /obj/item/clothing/glasses/sunglasses + belt = /obj/item/gun/energy/e_gun + back = /obj/item/storage/backpack + id = /obj/item/card/id/faction_crew + l_pocket = /obj/item/melee/transforming/energy/sword + backpack_contents = list(/obj/item/storage/box/survival/engineer=1,/obj/item/ammo_box/magazine/wt550m9=2, /obj/item/ammo_box/magazine/m45=2, /obj/item/melee/classic_baton=1, /obj/item/gun/ballistic/automatic/pistol/m1911=1,/obj/item/stack/spacecash/c1000=1) + +/datum/outfit/faction_medic + name = "Faction - Medic" + head = /obj/item/clothing/head/hos/beret/faction + uniform = /obj/item/clothing/under/syndicate + suit = /obj/item/clothing/suit/armor/hos/trenchcoat + shoes = /obj/item/clothing/shoes/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated + ears = /obj/item/radio/headset/headset_faction/bowman + glasses = /obj/item/clothing/glasses/hud/health + belt = /obj/item/gun/energy/e_gun + back = /obj/item/storage/backpack + id = /obj/item/card/id/faction_crew + l_pocket = /obj/item/melee/transforming/energy/sword + l_hand = /obj/item/storage/backpack/duffelbag/med/surgery + backpack_contents = list(/obj/item/storage/box/survival/engineer=1, /obj/item/storage/firstaid/tactical=1,/obj/item/storage/firstaid/regular=1,/obj/item/storage/firstaid/toxin=1, /obj/item/ammo_box/magazine/m45=2, /obj/item/gun/ballistic/automatic/pistol/m1911=1,/obj/item/healthanalyzer=1,/obj/item/stack/spacecash/c1000=1) + +/datum/outfit/faction_tech + name = "Faction - Tech" + head = /obj/item/clothing/head/hos/beret/faction + uniform = /obj/item/clothing/under/syndicate + suit = /obj/item/clothing/suit/armor/hos/trenchcoat + suit_store = /obj/item/gun/energy/e_gun + shoes = /obj/item/clothing/shoes/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated + ears = /obj/item/radio/headset/headset_faction/bowman + glasses = /obj/item/clothing/glasses/meson/engine + belt = /obj/item/storage/belt/utility/syndicate + back = /obj/item/storage/backpack + id = /obj/item/card/id/faction_crew + l_pocket = /obj/item/melee/transforming/energy/sword + l_hand = /obj/item/storage/part_replacer/bluespace/tier2 + backpack_contents = list(/obj/item/storage/box/survival/engineer=1, /obj/item/stack/sheet/metal/fifty=1, /obj/item/stack/sheet/glass/fifty=1, /obj/item/construction/rcd/combat, /obj/item/ammo_box/magazine/m45=2, /obj/item/gun/ballistic/automatic/pistol/m1911=1,/obj/item/stack/spacecash/c1000=1) + +/datum/outfit/faction_crew + name = "Faction - Crew" + uniform = /obj/item/clothing/under/syndicate + shoes = /obj/item/clothing/shoes/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated + ears = /obj/item/radio/headset/headset_faction + belt = /obj/item/gun/ballistic/automatic/pistol + back = /obj/item/storage/backpack + id = /obj/item/card/id/faction_crew + l_pocket = /obj/item/melee/transforming/energy/sword + backpack_contents = list(/obj/item/storage/box/survival/engineer=1,/obj/item/ammo_box/magazine/m9mm=2,/obj/item/stack/spacecash/c500=1) diff --git a/modular_skyrat/modules/faction/code/radio.dm b/modular_skyrat/modules/faction/code/radio.dm new file mode 100644 index 00000000000..04faac14b16 --- /dev/null +++ b/modular_skyrat/modules/faction/code/radio.dm @@ -0,0 +1,26 @@ +/obj/item/encryptionkey/headset_faction + name = "faction radio encryption key" + icon_state = "cargo_cypherkey" + channels = list(RADIO_CHANNEL_FACTION = 1) + independent = TRUE + +/obj/item/radio/headset/headset_faction + name = "faction radio headset" + desc = "Headset used by the faction." + icon_state = "cargo_headset" + keyslot = new /obj/item/encryptionkey/headset_faction + +/obj/item/radio/headset/headset_faction/bowman + name = "faction bowman headset" + desc = "Headset used by the faction. Protects ears from flashbangs." + icon_state = "com_headset_alt" + inhand_icon_state = "com_headset_alt" + +/obj/item/radio/headset/headset_faction/bowman/ComponentInitialize() + . = ..() + AddComponent(/datum/component/wearertargeting/earprotection, list(ITEM_SLOT_EARS)) + +/obj/item/radio/headset/headset_faction/bowman/captain + name = "faction captain bowman headset" + desc = "The headset of the boss. Protects ears from flashbangs." + command = TRUE diff --git a/modular_skyrat/modules/faction/maps/shuttles/tradership_faction.dmm b/modular_skyrat/modules/faction/maps/shuttles/tradership_faction.dmm new file mode 100644 index 00000000000..de829b6dfdc --- /dev/null +++ b/modular_skyrat/modules/faction/maps/shuttles/tradership_faction.dmm @@ -0,0 +1,3425 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/template_noop) +"ab" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/trader/engine) +"ac" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/trader/engine) +"ad" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/trader/cargo) +"ae" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/bot_white, +/obj/machinery/door/poddoor{ + id = "whiteship_port" + }, +/turf/open/floor/plating, +/area/shuttle/trader/cargo) +"af" = ( +/obj/effect/turf_decal/bot_white, +/obj/machinery/door/poddoor{ + id = "whiteship_port" + }, +/turf/open/floor/plating, +/area/shuttle/trader/cargo) +"ag" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/trader/crew) +"ah" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "401" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/docking_port/mobile{ + callTime = 250; + can_move_docking_ports = 1; + dir = 2; + dwidth = 11; + height = 17; + id = "tradership"; + launch_status = 0; + movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); + name = "Trader Ship"; + port_direction = 8; + preferred_direction = 4; + width = 33 + }, +/turf/open/floor/plating, +/area/shuttle/trader/crew) +"ai" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/trader/crew) +"aj" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/poddoor{ + id = "whiteship_windows" + }, +/turf/open/floor/plating, +/area/shuttle/trader/crew) +"ak" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"al" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/space_heater, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"am" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/poddoor{ + id = "whiteship_windows" + }, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"an" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/trader/cargo) +"ao" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/button/door{ + id = "whiteship_port"; + name = "Port Blast Door Control"; + pixel_x = -24; + pixel_y = 5; + req_access_txt = "403" + }, +/obj/structure/closet/crate/secure/tradership_cargo_valuable{ + used_preset = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"ap" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"aq" = ( +/obj/item/food/canned/beans{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/food/canned/beans{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/food/canned/beans{ + pixel_x = -2 + }, +/obj/item/food/canned/beans{ + pixel_x = 5 + }, +/obj/item/food/canned/beans{ + pixel_x = 1; + pixel_y = -3 + }, +/obj/item/food/canned/beans{ + pixel_x = 8; + pixel_y = -3 + }, +/obj/structure/closet/crate{ + name = "food crate" + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"ar" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate{ + name = "food crate" + }, +/obj/item/vending_refill/cigarette{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/vending_refill/cigarette, +/obj/item/vending_refill/coffee{ + pixel_x = -3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"as" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/button/door{ + id = "whiteship_port"; + name = "Port Blast Door Control"; + pixel_x = 24; + pixel_y = 5; + req_access_txt = "403" + }, +/obj/structure/closet/crate/tradership_cargo, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"at" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = -32 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/trader/crew) +"au" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/airalarm/all_access{ + pixel_y = 24 + }, +/obj/structure/closet/secure_closet/personal, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/crew) +"av" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/bed, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/item/bedsheet/brown, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/button/door{ + id = "CabinT1"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/crew) +"aw" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/bed, +/obj/item/bedsheet/brown, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/crew) +"ax" = ( +/obj/structure/shuttle/engine/propulsion/left{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/trader/engine) +"ay" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/trader/engine) +"az" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/closet/crate/secure/tradership_cargo_valuable{ + used_preset = 5 + }, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"aA" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"aB" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/firecloset/full{ + anchored = 1 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"aC" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/emcloset/anchored, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"aD" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"aE" = ( +/obj/structure/closet/crate{ + name = "food crate" + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large{ + pixel_x = -2 + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large{ + pixel_x = 5 + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large{ + pixel_x = 1; + pixel_y = -3 + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large{ + pixel_x = 8; + pixel_y = -3 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"aF" = ( +/obj/effect/turf_decal/box/white/corners, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"aG" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/firecloset/full{ + anchored = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"aH" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/turf_decal/delivery/white, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/crew) +"aI" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "401" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/shuttle/trader/crew) +"aJ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock{ + id_tag = "CabinT1"; + name = "Cabin 1" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/crew) +"aK" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock{ + id_tag = "CabinT2"; + name = "Cabin 2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/crew) +"aL" = ( +/obj/structure/shuttle/engine/propulsion/right{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/trader/engine) +"aM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"aN" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/remains/human, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"aO" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"aP" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"aQ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock/external{ + req_access_txt = "402" + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"aR" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"aT" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"aU" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"aV" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock/external{ + req_access_txt = "402" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/crew) +"aW" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/stripes/white/line{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/crew) +"aX" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/airalarm/all_access{ + pixel_y = 24 + }, +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/crew) +"aY" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/stripes/white/line{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/crew) +"aZ" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock/glass{ + name = "Crew Quarters"; + req_access_txt = "402" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/crew) +"ba" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/shuttle/trader/crew) +"bb" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/shuttle/trader/crew) +"bc" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/airalarm/all_access{ + pixel_y = 24 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/shuttle/trader/crew) +"be" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/crew) +"bf" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sign/poster/contraband/random{ + pixel_x = 32 + }, +/obj/structure/closet/wardrobe/black, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/trader/crew) +"bg" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"bh" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 4 + }, +/obj/item/flashlight{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"bi" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/airalarm/all_access{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/light/small, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"bj" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"bk" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/rack, +/obj/item/storage/belt/utility, +/obj/item/weldingtool, +/obj/item/clothing/head/welding, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"bm" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"bn" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"bo" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"bp" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/rack, +/obj/item/storage/box/lights/bulbs, +/obj/item/stack/cable_coil{ + pixel_x = 2 + }, +/obj/item/stock_parts/cell/high/plus, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"bq" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/bot_white, +/obj/structure/rack, +/obj/item/storage/belt/utility, +/obj/item/radio/off{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/radio/off, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/crew) +"br" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/crew) +"bs" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/bot_white, +/obj/structure/closet/emcloset/anchored, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/crew) +"bt" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock{ + id_tag = "RestroomT"; + name = "Restroom" + }, +/turf/open/floor/plasteel/freezer, +/area/shuttle/trader/crew) +"bu" = ( +/obj/structure/sign/departments/restroom, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/trader/crew) +"bv" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table, +/obj/structure/bedsheetbin, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/power/apc{ + name = "Salvage Ship Crew Quarters APC"; + pixel_y = -23 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/cafeteria, +/area/shuttle/trader/crew) +"bw" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/washing_machine, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/shuttle/trader/crew) +"bx" = ( +/obj/machinery/porta_turret/centcom_shuttle/weak{ + dir = 4 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/trader/crew) +"by" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock/engineering{ + name = "Engineering"; + req_access_txt = "402" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"bz" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/closet/crate/internals, +/obj/item/tank/internals/oxygen{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/tank/internals/oxygen, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/mask/breath, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"bA" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"bB" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"bC" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, +/obj/structure/closet/crate/secure/tradership_cargo_valuable{ + used_preset = 3 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"bD" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/trader/bar) +"bE" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock/public/glass{ + name = "Bar" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bar) +"bF" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small, +/obj/structure/curtain, +/obj/machinery/shower{ + pixel_y = 15 + }, +/obj/item/soap, +/turf/open/floor/plasteel/freezer, +/area/shuttle/trader/crew) +"bG" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sink{ + dir = 8; + pixel_x = 11 + }, +/obj/structure/toilet{ + dir = 1 + }, +/obj/structure/mirror{ + pixel_x = 28 + }, +/obj/machinery/button/door{ + id = "RestroomT"; + name = "Restroom Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/shuttle/trader/crew) +"bH" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/engine) +"bI" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/engine) +"bJ" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/rack, +/obj/item/storage/belt/utility, +/obj/item/radio/off{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/radio/off, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/engine) +"bK" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"bL" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"bM" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table, +/obj/machinery/microwave, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 + }, +/obj/item/storage/box/donkpockets, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"bN" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table, +/obj/item/trash/plate{ + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/trash/plate{ + pixel_x = -6 + }, +/obj/item/trash/plate{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/trash/plate{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/trash/plate{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/kitchen/fork{ + pixel_x = 12; + pixel_y = 3 + }, +/obj/item/kitchen/fork{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/power/apc{ + dir = 1; + name = "Salvage Ship Bar APC"; + pixel_y = 23 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"bO" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"bP" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/vending/coffee{ + onstation = 0 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sign/poster/contraband/random{ + pixel_x = 32 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bar) +"bQ" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/trader/bridge) +"bR" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/poddoor{ + id = "whiteship_bridge" + }, +/turf/open/floor/plating, +/area/shuttle/trader/bridge) +"bS" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/effect/turf_decal/stripes/white/corner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/engine) +"bT" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/item/stack/rods/twentyfive, +/obj/item/wrench, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/engine) +"bU" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"bV" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"bW" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"bX" = ( +/obj/effect/turf_decal/box/white/corners, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"bY" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/shuttle/trader/bar) +"bZ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/chair, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"ca" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/chair, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"cb" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"cc" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"cd" = ( +/obj/structure/table, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/paper_bin{ + pixel_x = -4 + }, +/obj/item/pen{ + pixel_x = -4 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Salvage Ship Bridge APC"; + pixel_y = 23 + }, +/obj/item/camera{ + pixel_x = 12; + pixel_y = 6 + }, +/obj/item/storage/photo_album{ + pixel_x = 14 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bridge) +"ce" = ( +/obj/structure/table, +/obj/machinery/airalarm/all_access{ + pixel_y = 24 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/folder/blue{ + pixel_x = 6; + pixel_y = 9 + }, +/obj/machinery/recharger, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bridge) +"cf" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/turretid{ + icon_state = "control_kill"; + lethal = 1; + locked = 0; + pixel_y = 28; + req_access = null; + req_access_txt = "402" + }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bridge) +"cg" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bridge) +"ch" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "402" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"ci" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"cj" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "402" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"ck" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/engine) +"cl" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/space_heater, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/engine) +"cm" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"cn" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -8; + pixel_y = 10 + }, +/obj/item/reagent_containers/food/condiment/peppermill{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = 1; + pixel_y = 8 + }, +/obj/item/reagent_containers/food/drinks/soda_cans/cola{ + pixel_x = 6 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"co" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table, +/obj/item/storage/fancy/donut_box{ + pixel_x = -11; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = 6; + pixel_y = 14 + }, +/obj/item/food/chocolatebar{ + pixel_x = 5; + pixel_y = -3 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"cq" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"cr" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock/command{ + name = "Bridge"; + req_access_txt = "403"" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bridge) +"cs" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bridge) +"ct" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bridge) +"cu" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bridge) +"cv" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/computer/shuttle/trader{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bridge) +"cw" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/airalarm/all_access{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/turf_decal/stripes/white/corner{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/engine) +"cx" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stack/cable_coil{ + pixel_x = 2; + pixel_y = 6 + }, +/obj/item/stock_parts/cell/high/plus, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/engine) +"cy" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"cz" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"cA" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"cC" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"cD" = ( +/obj/structure/table, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/radio/off{ + pixel_x = 6; + pixel_y = 7 + }, +/obj/item/megaphone{ + pixel_x = -2; + pixel_y = -4 + }, +/obj/machinery/vending/boozeomat{ + pixel_y = -32; + req_access = null; + req_access_txt = "403" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bridge) +"cE" = ( +/obj/structure/table, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/plus, +/obj/item/storage/toolbox/emergency{ + pixel_x = -12 + }, +/obj/item/wrench{ + pixel_x = -12 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bridge) +"cF" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/button/door{ + id = "whiteship_bridge"; + name = "Bridge Blast Door Control"; + pixel_x = 5; + pixel_y = -24; + req_access_txt = "402" + }, +/obj/machinery/button/door{ + id = "whiteship_windows"; + name = "Windows Blast Door Control"; + pixel_x = -5; + pixel_y = -24; + req_access_txt = "402" + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bridge) +"cG" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/computer/camera_advanced/shuttle_docker/trader{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bridge) +"cH" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/emcloset/anchored, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/engine) +"cI" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/rack, +/obj/item/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = 6 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/clothing/head/welding{ + pixel_x = -2; + pixel_y = 1 + }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/engine) +"cJ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/power/apc{ + dir = 8; + name = "Salvage Ship Cargo APC"; + pixel_x = -25 + }, +/obj/structure/cable, +/obj/structure/closet/crate/secure/tradership_cargo_very_valuable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"cK" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"cL" = ( +/obj/structure/table, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/item/reagent_containers/food/drinks/bottle/vodka{ + pixel_y = 12 + }, +/obj/item/reagent_containers/food/drinks/bottle/whiskey{ + pixel_x = 16; + pixel_y = 12 + }, +/obj/item/reagent_containers/food/drinks/bottle/gin{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/reagent_containers/food/drinks/bottle/cognac{ + pixel_x = 8; + pixel_y = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sign/poster/contraband/random{ + pixel_y = -32 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"cM" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/bottle/wine{ + pixel_y = 12 + }, +/obj/item/reagent_containers/food/drinks/bottle/vermouth{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/reagent_containers/food/drinks/bottle/tequila{ + pixel_x = 8; + pixel_y = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"cN" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"cO" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/vending/cigarette{ + onstation = 0 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sign/poster/contraband/random{ + pixel_x = 32 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bar) +"cP" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/airalarm/all_access{ + dir = 4; + pixel_x = -24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"cQ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate/secure/weapon, +/obj/item/gun/energy/laser/retro, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"cR" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"cS" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"cT" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock/public/glass{ + name = "Bar" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bar) +"cU" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/airalarm/all_access{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/processor, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"cV" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/deepfryer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"cW" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/trader/bar) +"cX" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/power/smes/engineering{ + charge = 1e+006 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/bot, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"cY" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/effect/turf_decal/bot, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stack/cable_coil, +/obj/item/stock_parts/cell/high, +/obj/item/multitool, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"cZ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/airalarm/all_access{ + pixel_y = 24 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"da" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/rack, +/obj/item/reagent_containers/glass/bucket, +/obj/item/mop, +/obj/item/storage/bag/trash{ + pixel_x = 6 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"db" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable, +/obj/structure/closet/crate/tradership_cargo, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"dc" = ( +/obj/effect/turf_decal/box/white/corners, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"dd" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"de" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"df" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/rack, +/obj/item/analyzer, +/obj/item/wrench, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/mask/breath, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"dg" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/bot_white, +/obj/structure/rack, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/storage/toolbox/mechanical, +/obj/item/multitool{ + pixel_x = 7; + pixel_y = -4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bar) +"dh" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bar) +"di" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/bot_white, +/obj/structure/closet/emcloset/anchored, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bar) +"dj" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/secure_closet/freezer/fridge/open, +/obj/item/reagent_containers/food/condiment/flour{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/condiment/flour, +/obj/item/food/meat/slab/synthmeat{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/food/meat/slab/synthmeat, +/obj/item/food/meat/slab/synthmeat{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/cafeteria, +/area/shuttle/trader/bar) +"dk" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/cafeteria, +/area/shuttle/trader/bar) +"dl" = ( +/obj/structure/sign/departments/botany, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/trader/bar) +"dm" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/hydroponics/constructable, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"dn" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/hydroponics/constructable, +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/effect/spawner/lootdrop/space/rareseed, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"do" = ( +/obj/machinery/porta_turret/centcom_shuttle/weak{ + dir = 4 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/trader/bar) +"dp" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"dq" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"dr" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"ds" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"dt" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock/external{ + req_access_txt = "402"" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"dv" = ( +/obj/effect/turf_decal/arrows/white, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"dw" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock/external{ + req_access_txt = "402" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bar) +"dx" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/stripes/white/line{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bar) +"dy" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/airalarm/all_access{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/stripes/white/line, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bar) +"dz" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/stripes/white/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bar) +"dA" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock/glass{ + name = "Kitchen" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bar) +"dB" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/shuttle/trader/bar) +"dC" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plasteel/cafeteria, +/area/shuttle/trader/bar) +"dD" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock/glass{ + name = "Hydroponics" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"dE" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"dF" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"dG" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sign/poster/contraband/random{ + pixel_x = 32 + }, +/obj/machinery/vending/hydroseeds{ + use_power = 0 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"dH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"dI" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"dJ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/power/apc{ + name = "Salvage Ship Engineering APC"; + pixel_y = -23 + }, +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 10 + }, +/obj/effect/turf_decal/bot, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"dK" = ( +/obj/machinery/computer/monitor{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"dL" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"dM" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"dN" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/tank_dispenser/oxygen, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"dO" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/turf_decal/delivery/white, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/bar) +"dP" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "401" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/shuttle/trader/bar) +"dQ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -8; + pixel_y = 10 + }, +/obj/item/reagent_containers/food/condiment/peppermill{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/storage/box/drinkingglasses{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/shuttle/trader/bar) +"dR" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sink{ + dir = 8; + pixel_x = 11 + }, +/obj/effect/decal/cleanable/food/flour, +/turf/open/floor/plasteel/cafeteria, +/area/shuttle/trader/bar) +"dS" = ( +/obj/machinery/smartfridge, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/trader/bar) +"dT" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sink{ + dir = 4; + pixel_x = -12; + pixel_y = 2 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"dU" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/green, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"dV" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table, +/obj/item/storage/bag/plants/portaseeder, +/obj/item/shovel/spade, +/obj/item/cultivator, +/obj/item/plant_analyzer, +/obj/item/reagent_containers/glass/bucket, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"dW" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/bot, +/obj/item/wrench, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"dX" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate, +/obj/item/shovel, +/obj/item/pickaxe, +/obj/item/storage/box/lights/mixed, +/obj/item/mining_scanner, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"dY" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/button/door{ + id = "whiteship_starboard"; + name = "Starboard Blast Door Control"; + pixel_x = -24; + pixel_y = -5; + req_access_txt = "403"" + }, +/obj/structure/closet/crate/secure/tradership_cargo_valuable{ + used_preset = 2 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"dZ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate/medical, +/obj/item/storage/firstaid/fire, +/obj/item/reagent_containers/glass/bottle/morphine, +/obj/item/reagent_containers/syringe, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"ea" = ( +/obj/effect/turf_decal/box/white/corners, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/button/door{ + id = "whiteship_starboard"; + name = "Starboard Blast Door Control"; + pixel_x = 24; + pixel_y = -5; + req_access_txt = "403" + }, +/obj/structure/closet/crate/tradership_cargo, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"eb" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/poddoor{ + id = "whiteship_windows" + }, +/turf/open/floor/plating, +/area/shuttle/trader/bar) +"ec" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = -32 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/trader/bar) +"ed" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table, +/obj/machinery/reagentgrinder{ + pixel_y = 6 + }, +/obj/item/kitchen/rollingpin{ + pixel_x = 8 + }, +/obj/item/kitchen/knife{ + pixel_x = 16 + }, +/obj/item/reagent_containers/food/condiment/sugar{ + pixel_x = -9; + pixel_y = 14 + }, +/obj/item/reagent_containers/food/condiment/enzyme{ + layer = 5; + pixel_x = -5; + pixel_y = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"ee" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"ef" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/hydroponics/constructable, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"eg" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/hydroponics/constructable, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/space/rareseed, +/turf/open/floor/plasteel, +/area/shuttle/trader/bar) +"eh" = ( +/obj/effect/turf_decal/bot_white, +/obj/machinery/door/poddoor{ + id = "whiteship_starboard" + }, +/turf/open/floor/plating, +/area/shuttle/trader/cargo) +"ei" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/bot_white, +/obj/machinery/door/poddoor{ + id = "whiteship_starboard" + }, +/turf/open/floor/plating, +/area/shuttle/trader/cargo) +"ej" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "401" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/shuttle/trader/bar) +"el" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating, +/area/shuttle/trader/engine) +"em" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"fa" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/blood, +/obj/structure/closet/crate/tradership_cargo, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"hv" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"ki" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate/tradership_cargo, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"kO" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate/tradership_cargo, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"nT" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"qY" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/airalarm/all_access{ + pixel_y = 24 + }, +/obj/structure/closet/secure_closet/personal, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/button/door{ + id = "CabinT2"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/crew) +"wM" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/blood, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"zJ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate/secure/tradership_cargo_valuable{ + used_preset = 1 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"Fb" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate/freezer/tradership_cargo_freezer, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) +"Gb" = ( +/obj/effect/turf_decal/box/white/corners, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate/freezer/tradership_cargo_freezer, +/turf/open/floor/plasteel/dark, +/area/shuttle/trader/cargo) + +(1,1,1) = {" +aa +ab +ax +aL +ab +aa +aa +aa +aa +aa +aa +aa +ab +ax +aL +ab +aa +"} +(2,1,1) = {" +ab +ac +ay +ay +ac +ab +aa +aa +aa +aa +aa +ab +ac +ay +ay +ac +ab +"} +(3,1,1) = {" +ac +ak +az +aM +bg +ac +aa +ab +ch +ab +aa +ac +cX +dp +dH +dW +ac +"} +(4,1,1) = {" +ac +al +aA +aN +bh +ac +am +ac +ci +ac +am +ac +cY +el +dI +dX +ac +"} +(5,1,1) = {" +ab +ac +aB +aO +bi +ac +bH +ac +cj +ac +cH +ac +cZ +dr +dJ +ac +ab +"} +(6,1,1) = {" +aa +am +aC +aP +bj +by +bI +bS +ck +cw +bI +by +bj +ds +dK +am +aa +"} +(7,1,1) = {" +aa +ac +ac +aQ +ac +ac +bJ +bT +cl +cx +cI +ac +ac +dt +ac +ac +aa +"} +(8,1,1) = {" +ad +an +aD +aR +bk +ac +ac +bU +bU +bU +ac +ac +da +aR +dL +an +ad +"} +(9,1,1) = {" +ae +ao +aE +aR +fa +bz +bK +Fb +bW +cy +cJ +cP +db +aT +bV +dY +eh +"} +(10,1,1) = {" +ae +ap +ap +aT +bo +bA +ap +aF +bW +bo +ap +cQ +dc +aR +em +bA +ei +"} +(11,1,1) = {" +af +aq +ap +aU +bn +bB +bL +bW +bW +nT +wM +cR +dd +dv +ap +zJ +ei +"} +(12,1,1) = {" +ae +ar +ap +aR +de +ap +ap +dq +bW +hv +ap +ki +bm +aT +ap +dZ +eh +"} +(13,1,1) = {" +af +as +aF +aR +bo +bC +ap +bX +nT +kO +cK +cS +Gb +aR +dM +ea +ei +"} +(14,1,1) = {" +ad +an +aG +aR +bp +bD +bD +bY +bY +bY +bD +bD +df +aT +dN +an +ad +"} +(15,1,1) = {" +aa +ai +ai +aV +ai +bD +bM +bZ +cn +cz +cL +bD +bD +dw +bD +bD +aa +"} +(16,1,1) = {" +aa +aj +aH +aW +bq +bD +bN +ca +co +cA +cM +bD +dg +dx +dO +eb +aa +"} +(17,1,1) = {" +ag +ai +ai +aX +br +bE +bO +cb +cb +bO +cN +cT +dh +dy +bD +bD +cW +"} +(18,1,1) = {" +ah +at +aI +aY +bs +bD +bP +cc +cq +cC +cO +bD +di +dz +dP +ec +ej +"} +(19,1,1) = {" +ai +ai +ai +aZ +ai +ai +bQ +bQ +cr +bQ +bQ +bD +bD +dA +bD +bD +bD +"} +(20,1,1) = {" +ai +au +ai +ba +ai +bF +bQ +cd +cs +cD +bQ +cU +dj +dB +dQ +ed +bD +"} +(21,1,1) = {" +aj +av +aJ +bb +bt +bG +bQ +ce +ct +cE +bQ +cV +dk +dC +dR +ee +eb +"} +(22,1,1) = {" +ai +ai +ai +bc +bu +ai +bQ +cf +cu +cF +bQ +bD +dl +dD +dS +bD +bD +"} +(23,1,1) = {" +aj +aw +aK +bb +bv +ai +bR +cg +cv +cG +bR +bD +dm +dE +dT +ef +eb +"} +(24,1,1) = {" +ai +qY +ai +be +bw +ai +bR +bR +bR +bR +bR +bD +dn +dF +dU +eg +bD +"} +(25,1,1) = {" +ag +ai +ai +bf +ai +ag +aa +aa +aa +aa +aa +cW +bD +dG +dV +bD +cW +"} +(26,1,1) = {" +aa +ag +ai +ai +bx +aa +aa +aa +aa +aa +aa +aa +do +bD +bD +cW +aa +"} diff --git a/modular_skyrat/modules/faction/readme.md b/modular_skyrat/modules/faction/readme.md new file mode 100644 index 00000000000..475f995654b --- /dev/null +++ b/modular_skyrat/modules/faction/readme.md @@ -0,0 +1,27 @@ +## Title: Faction. + +MODULE ID: FACTION + +### Description: + +This adds a set of content introducing a new faction, including their own access, radio frequency, outfits and map prefabs. This is to be used with the Event Spawners Menu for easy event organisation. + +### TG Proc Changes: + +- Please see changed files on PR. Skyrat tags applied. + +### Defines: + +- N/A + +### Master file additions + +- N/A + +### Included files that are not contained in this module: + +- N/A + + +### Credits: +Azarak diff --git a/tgstation.dme b/tgstation.dme index c5d370577fa..bdef56d2cdd 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -136,6 +136,7 @@ #include "code\__DEFINES\~skyrat_defines\ambitions.dm" #include "code\__DEFINES\~skyrat_defines\blueshield.dm" #include "code\__DEFINES\~skyrat_defines\DNA.dm" +#include "code\__DEFINES\~skyrat_defines\faction.dm" #include "code\__DEFINES\~skyrat_defines\jobs.dm" #include "code\__DEFINES\~skyrat_defines\keybindings.dm" #include "code\__DEFINES\~skyrat_defines\logging.dm" @@ -3557,7 +3558,19 @@ #include "modular_skyrat\modules\emotes\code\dna_screams.dm" #include "modular_skyrat\modules\emotes\code\emotes.dm" #include "modular_skyrat\modules\emotes\code\silicon_emotes.dm" +#include "modular_skyrat\modules\events\code\__event_defines.dm" +#include "modular_skyrat\modules\events\code\_event_globalvars.dm" +#include "modular_skyrat\modules\events\code\event_spawner.dm" +#include "modular_skyrat\modules\events\code\event_spawner_menu.dm" +#include "modular_skyrat\modules\events\code\event_spawner_templates.dm" #include "modular_skyrat\modules\events\code\modules\events\meteor_wave.dm" +#include "modular_skyrat\modules\faction\code\clothes.dm" +#include "modular_skyrat\modules\faction\code\id.dm" +#include "modular_skyrat\modules\faction\code\outfit.dm" +#include "modular_skyrat\modules\faction\code\radio.dm" +#include "modular_skyrat\modules\faction\code\mapping\areas.dm" +#include "modular_skyrat\modules\faction\code\mapping\mapping_helpers.dm" +#include "modular_skyrat\modules\faction\code\mapping\ruins.dm" #include "modular_skyrat\modules\gunpoint\code\datum\gunpoint\gunpoint.dm" #include "modular_skyrat\modules\gunpoint\code\datum\gunpoint\gunpoint_datum.dm" #include "modular_skyrat\modules\gunpoint\code\datum\gunpoint\gunpoint_radial.dm"