diff --git a/README.md b/README.md index 77f9127bf4..cbf74b6b30 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Going to make a Pull Request? Make sure you read the [CONTRIBUTING.md](.github/CONTRIBUTING.md) first! -CHOMPStation is a fork of the Yawn-wider code branch which is a fork of the VOREStation code branch which is a fork of the Polaris code branch, itself a fork of the Baystation12 code branch, for the game Space Station 13. +CHOMPStation was a fork of the Yawn-wider code branch which is a fork of the VOREStation code branch which is a fork of the Polaris code branch, itself a fork of the Baystation12 code branch, but we are now since separated from Yawn-wider code, while keeping some of their features, which is a fork of the VOREStation code branch which is a fork of the Polaris code branch, itself a fork of the Baystation12 code branch, for the game Space Station 13. ![Render Nanomaps](https://github.com/VOREStation/VOREStation/workflows/Render%20Nanomaps/badge.svg) diff --git a/code/__defines/_planes+layers.dm b/code/__defines/_planes+layers.dm index 4e9d7fd6ad..a2e15e6890 100644 --- a/code/__defines/_planes+layers.dm +++ b/code/__defines/_planes+layers.dm @@ -173,6 +173,5 @@ What is the naming convention for planes or layers? plane = initial(plane) layer = initial(layer) - // Check if a mob can "logically" see an atom plane #define MOB_CAN_SEE_PLANE(M, P) (P <= PLANE_WORLD || (P in M.planes_visible)) diff --git a/code/__defines/species_languages_vr.dm b/code/__defines/species_languages_vr.dm index 8909238db2..78054e6ba8 100644 --- a/code/__defines/species_languages_vr.dm +++ b/code/__defines/species_languages_vr.dm @@ -10,6 +10,7 @@ #define LANGUAGE_ENOCHIAN "Enochian" #define LANGUAGE_VESPINAE "Vespinae" #define LANGUAGE_SPACER "Spacer" +#define LANGUAGE_CLOWNISH "Coulrian" #define LANGUAGE_CHIMPANZEE "Chimpanzee" #define LANGUAGE_NEAERA "Neaera" diff --git a/code/_global_vars/lists/misc.dm b/code/_global_vars/lists/misc.dm index e02c99290c..e94aa8d652 100644 --- a/code/_global_vars/lists/misc.dm +++ b/code/_global_vars/lists/misc.dm @@ -5,4 +5,6 @@ GLOBAL_LIST_EMPTY(meteor_list) GLOBAL_LIST_EMPTY(wire_color_directory) // This is an associative list with the `holder_type` as the key, and a list of colors as the value. // Reference list for disposal sort junctions. Filled up by sorting junction's New() -GLOBAL_LIST_EMPTY(tagger_locations) \ No newline at end of file +GLOBAL_LIST_EMPTY(tagger_locations) + +GLOBAL_LIST_INIT(char_directory_tags, list("Pred", "Prey", "Switch", "Non-Vore", "Unset")) \ No newline at end of file diff --git a/code/_helpers/global_lists_ch.dm b/code/_helpers/global_lists_ch.dm index ead50d7b5f..ff5c0a26e4 100644 --- a/code/_helpers/global_lists_ch.dm +++ b/code/_helpers/global_lists_ch.dm @@ -13,4 +13,12 @@ var/global/list/vore_reagent_sounds = list( 'sound/vore/walkslosh10.ogg', "None" = null) -/var/global/list/existing_metroids = list() //Global variable for tracking metroids for the event announcement. Needs to go here for load order. \ No newline at end of file +/var/global/list/existing_metroids = list() //Global variable for tracking metroids for the event announcement. Needs to go here for load order. + +//stuff that only synths can eat +var/global/list/edible_tech = list(/obj/item/weapon/cell, + /obj/item/weapon/circuitboard, + /obj/item/integrated_circuit, + /obj/item/broken_device, + /obj/item/brokenbug, + ) diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm index 7a49e8b387..572f5c874a 100644 --- a/code/_helpers/global_lists_vr.dm +++ b/code/_helpers/global_lists_vr.dm @@ -124,9 +124,13 @@ var/global/list/global_vore_egg_types = list( "Slime glob", "Chicken", "Synthetic", - "Cooking error", + "Bluespace Floppy", + "Bluespace Compressed File", + "Bluespace CD", "Escape pod", + "Cooking error", "Web cocoon", + "Honeycomb", "Bug cocoon", "Rock", "Yellow", @@ -155,9 +159,13 @@ var/global/list/tf_vore_egg_types = list( "Slime glob" = /obj/item/weapon/storage/vore_egg/slimeglob, "Chicken" = /obj/item/weapon/storage/vore_egg/chicken, "Synthetic" = /obj/item/weapon/storage/vore_egg/synthetic, - "Cooking error" = /obj/item/weapon/storage/vore_egg/badrecipe, + "Bluespace Floppy" = /obj/item/weapon/storage/vore_egg/floppy, + "Bluespace Compressed File" = /obj/item/weapon/storage/vore_egg/file, + "Bluespace CD" = /obj/item/weapon/storage/vore_egg/cd, "Escape pod" = /obj/item/weapon/storage/vore_egg/escapepod, + "Cooking error" = /obj/item/weapon/storage/vore_egg/badrecipe, "Web cocoon" = /obj/item/weapon/storage/vore_egg/cocoon, + "Honeycomb" = /obj/item/weapon/storage/vore_egg/honeycomb, "Bug cocoon" = /obj/item/weapon/storage/vore_egg/bugcocoon, "Rock" = /obj/item/weapon/storage/vore_egg/rock, "Yellow" = /obj/item/weapon/storage/vore_egg/yellow, @@ -183,6 +191,7 @@ var/global/list/edible_trash = list(/obj/item/broken_device, /obj/item/device/paicard, /obj/item/device/pda, /obj/item/device/radio/headset, + /obj/item/device/starcaster_news, //chompstation addition /obj/item/inflatable/torn, /obj/item/organ, /obj/item/stack/material/cardboard, @@ -219,7 +228,8 @@ var/global/list/edible_trash = list(/obj/item/broken_device, /obj/item/weapon/storage/fancy/crayons, /obj/item/weapon/storage/fancy/egg_box, /obj/item/weapon/storage/wallet, - /obj/item/weapon/storage/vore_egg) + /obj/item/weapon/storage/vore_egg, + /obj/item/weapon/material/kitchen) //chompstation addition var/global/list/contamination_flavors = list( "Generic" = contamination_flavors_generic, diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index c7b399e4ee..f08b8c64e5 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -1609,6 +1609,46 @@ GLOBAL_REAL_VAR(list/stack_trace_storage) /proc/href(href_src, list/href_params, href_text) return "[href_text]" +// This is a helper for anything that wants to render the map in TGUI +/proc/get_tgui_plane_masters() + . = list() + // 'Utility' planes + . += new /obj/screen/plane_master/fullbright //Lighting system (lighting_overlay objects) + . += new /obj/screen/plane_master/lighting //Lighting system (but different!) + . += new /obj/screen/plane_master/ghosts //Ghosts! + . += new /obj/screen/plane_master{plane = PLANE_AI_EYE} //AI Eye! + + . += new /obj/screen/plane_master{plane = PLANE_CH_STATUS} //Status is the synth/human icon left side of medhuds + . += new /obj/screen/plane_master{plane = PLANE_CH_HEALTH} //Health bar + . += new /obj/screen/plane_master{plane = PLANE_CH_LIFE} //Alive-or-not icon + . += new /obj/screen/plane_master{plane = PLANE_CH_ID} //Job ID icon + . += new /obj/screen/plane_master{plane = PLANE_CH_WANTED} //Wanted status + . += new /obj/screen/plane_master{plane = PLANE_CH_IMPLOYAL} //Loyalty implants + . += new /obj/screen/plane_master{plane = PLANE_CH_IMPTRACK} //Tracking implants + . += new /obj/screen/plane_master{plane = PLANE_CH_IMPCHEM} //Chemical implants + . += new /obj/screen/plane_master{plane = PLANE_CH_SPECIAL} //"Special" role stuff + . += new /obj/screen/plane_master{plane = PLANE_CH_STATUS_OOC} //OOC status HUD + + . += new /obj/screen/plane_master{plane = PLANE_ADMIN1} //For admin use + . += new /obj/screen/plane_master{plane = PLANE_ADMIN2} //For admin use + . += new /obj/screen/plane_master{plane = PLANE_ADMIN3} //For admin use + + . += new /obj/screen/plane_master{plane = PLANE_MESONS} //Meson-specific things like open ceilings. + . += new /obj/screen/plane_master{plane = PLANE_BUILDMODE} //Things that only show up while in build mode + + // Real tangible stuff planes + . += new /obj/screen/plane_master/main{plane = TURF_PLANE} + . += new /obj/screen/plane_master/main{plane = OBJ_PLANE} + . += new /obj/screen/plane_master/main{plane = MOB_PLANE} + . += new /obj/screen/plane_master/cloaked //Cloaked atoms! + + //VOREStation Add - Random other plane masters + . += new /obj/screen/plane_master{plane = PLANE_CH_STATUS_R} //Right-side status icon + . += new /obj/screen/plane_master{plane = PLANE_CH_HEALTH_VR} //Health bar but transparent at 100 + . += new /obj/screen/plane_master{plane = PLANE_CH_BACKUP} //Backup implant status + . += new /obj/screen/plane_master{plane = PLANE_CH_VANTAG} //Vore Antags + . += new /obj/screen/plane_master{plane = PLANE_AUGMENTED} //Augmented reality + //VOREStation Add End /proc/CallAsync(datum/source, proctype, list/arguments) set waitfor = FALSE - return call(source, proctype)(arglist(arguments)) \ No newline at end of file + return call(source, proctype)(arglist(arguments)) diff --git a/code/_helpers/widelists_ch.dm b/code/_helpers/widelists_ch.dm new file mode 100644 index 0000000000..2d447b1110 --- /dev/null +++ b/code/_helpers/widelists_ch.dm @@ -0,0 +1,25 @@ +GLOBAL_LIST_EMPTY(widelists) + +/proc/widelist(var/list/input_list) + var/list_hash = gen_hash_list(input_list) + if(!(list_hash in GLOB.widelists)) + GLOB.widelists[list_hash] = input_list + return GLOB.widelists[list_hash] + +/proc/gen_hash_list(var/list/input_list) + var/string = "" + for(var/item in input_list) + var/p1 = "" + if(islist(item)) + p1 = ">>>::-;[gen_hash_list(item)];-::<<<" + else + p1 = "[item]" + + var/p2 = "" + if(islist(input_list[item])) + p2 = ">>>::-;[gen_hash_list(input_list[item])];-::<<<" + else + p2 = "[input_list[item]]" + + string += "[p1]::--::[p2]::;;;" + return md5(string) \ No newline at end of file diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index d31a64dcda..247d1d3f8b 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -161,6 +161,13 @@ #define ui_ghost_pai "SOUTH: 6,CENTER+2:24" #define ui_ghost_updown "SOUTH: 6,CENTER+3:24" +// NIF Soulcatcher guest ones +#define ui_nifsc_reenter "SOUTH:6,CENTER-3:24" +#define ui_nifsc_arproj "SOUTH:6,CENTER-2:24" +#define ui_nifsc_jumptoowner "SOUTH:6,CENTER-1:24" +#define ui_nifsc_nme "SOUTH:6,CENTER:24" +#define ui_nifsc_nsay "SOUTH:6,CENTER+1:24" + // Rig panel #define ui_rig_deco1 "WEST:-7, SOUTH+5" #define ui_rig_deco2 "WEST:-7, SOUTH+6" diff --git a/code/_onclick/hud/soulcatcher_guest.dm b/code/_onclick/hud/soulcatcher_guest.dm new file mode 100644 index 0000000000..555bcb8eba --- /dev/null +++ b/code/_onclick/hud/soulcatcher_guest.dm @@ -0,0 +1,102 @@ +/obj/screen/nifsc + icon = 'icons/mob/screen_nifsc.dmi' + +/obj/screen/nifsc/MouseEntered(location,control,params) + flick(icon_state + "_anim", src) + openToolTip(usr, src, params, title = name, content = desc) + +/obj/screen/nifsc/MouseExited() + closeToolTip(usr) + +/obj/screen/nifsc/Click() + closeToolTip(usr) + +/obj/screen/nifsc/reenter + name = "Re-enter NIF" + desc = "Return into the NIF" + icon_state = "reenter" + +/obj/screen/nifsc/reenter/Click() + ..() + var/mob/living/carbon/brain/caught_soul/CS = usr + CS.reenter_soulcatcher() + +/obj/screen/nifsc/arproj + name = "AR project" + desc = "Project your form into Augmented Reality for those around your predator with the appearance of your loaded character." + icon_state = "arproj" + +/obj/screen/nifsc/arproj/Click() + ..() + var/mob/living/carbon/brain/caught_soul/CS = usr + CS.ar_project() + +/obj/screen/nifsc/jumptoowner + name = "Jump back to host" + desc = "Jumb back to the Soulcather host" + icon_state = "jump" + +/obj/screen/nifsc/jumptoowner/Click() + ..() + var/mob/living/carbon/brain/caught_soul/CS = usr + CS.jump_to_owner() + +/obj/screen/nifsc/nme + name = "Emote into Soulcatcher" + desc = "Emote into the NIF's Soulcatcher (circumventing AR emoting)" + icon_state = "nme" + +/obj/screen/nifsc/nme/Click() + ..() + var/mob/living/carbon/brain/caught_soul/CS = usr + CS.nme() + +/obj/screen/nifsc/nsay + name = "Speak into Soulcatcher" + desc = "Speak into the NIF's Soulcatcher (circumventing AR speaking)" + icon_state = "nsay" + +/obj/screen/nifsc/nsay/Click() + ..() + var/mob/living/carbon/brain/caught_soul/CS = usr + CS.nsay() + + +/mob/living/carbon/brain/caught_soul/create_mob_hud(datum/hud/HUD, apply_to_client = TRUE) + ..() + + var/list/adding = list() + HUD.adding = adding + + var/obj/screen/using + + using = new /obj/screen/nifsc/reenter() + using.screen_loc = ui_nifsc_reenter + using.hud = src + adding += using + + using = new /obj/screen/nifsc/arproj() + using.screen_loc = ui_nifsc_arproj + using.hud = src + adding += using + + using = new /obj/screen/nifsc/jumptoowner() + using.screen_loc = ui_nifsc_jumptoowner + using.hud = src + adding += using + + using = new /obj/screen/nifsc/nme() + using.screen_loc = ui_nifsc_nme + using.hud = src + adding += using + + using = new /obj/screen/nifsc/nsay() + using.screen_loc = ui_nifsc_nsay + using.hud = src + adding += using + + + if(client && apply_to_client) + client.screen = list() + client.screen += HUD.adding + client.screen += client.void diff --git a/code/controllers/subsystems/shuttles.dm b/code/controllers/subsystems/shuttles.dm index 0bce940385..40039edceb 100644 --- a/code/controllers/subsystems/shuttles.dm +++ b/code/controllers/subsystems/shuttles.dm @@ -4,9 +4,6 @@ // Also handles initialization and processing of overmap sectors. // -// This global variable exists for legacy support so we don't have to rename every shuttle_controller to SSshuttles yet. -var/global/datum/controller/subsystem/shuttles/shuttle_controller - SUBSYSTEM_DEF(shuttles) name = "Shuttles" wait = 2 SECONDS @@ -35,9 +32,6 @@ SUBSYSTEM_DEF(shuttles) var/tmp/list/current_run // Shuttles remaining to process this fire() tick -/datum/controller/subsystem/shuttles/PreInit() - global.shuttle_controller = src // TODO - Remove this! Change everything to point at SSshuttles intead - /datum/controller/subsystem/shuttles/Initialize(timeofday) last_landmark_registration_time = world.time // Find all declared shuttle datums and initailize them. (Okay, queue them for initialization a few lines further down) diff --git a/code/controllers/subsystems/ticker.dm b/code/controllers/subsystems/ticker.dm index fcc076231d..a5ab4d94cb 100644 --- a/code/controllers/subsystems/ticker.dm +++ b/code/controllers/subsystems/ticker.dm @@ -49,10 +49,7 @@ var/global/datum/controller/subsystem/ticker/ticker /datum/controller/subsystem/ticker/Initialize() pregame_timeleft = config.pregame_time send2mainirc("Server lobby is loaded and open at byond://[config.serverurl ? config.serverurl : (config.server ? config.server : "[world.address]:[world.port]")]") - - // Set up the global announcer - GLOB.autospeaker = new (null, null, null, 1) - + GLOB.autospeaker = new (null, null, null, 1) //Set up Global Announcer return ..() /datum/controller/subsystem/ticker/fire(resumed = FALSE) diff --git a/code/datums/supplypacks/recreation.dm b/code/datums/supplypacks/recreation.dm index 9bb6b1a442..eae37c5869 100644 --- a/code/datums/supplypacks/recreation.dm +++ b/code/datums/supplypacks/recreation.dm @@ -51,7 +51,7 @@ /obj/item/weapon/reagent_containers/glass/paint/purple, /obj/item/weapon/reagent_containers/glass/paint/black, /obj/item/weapon/reagent_containers/glass/paint/white, - /obj/item/weapon/contraband/poster, + /obj/item/weapon/contraband/poster/custom, /obj/item/weapon/wrapping_paper = 3 ) cost = 10 diff --git a/code/datums/uplink/tools_vr.dm b/code/datums/uplink/tools_vr.dm index 30b2cd725e..9d0a8e0232 100644 --- a/code/datums/uplink/tools_vr.dm +++ b/code/datums/uplink/tools_vr.dm @@ -36,6 +36,11 @@ item_cost = 10 path = /obj/item/clothing/suit/space/void/autolok +/datum/uplink_item/item/tools/inflatable + name = "Inflatables" + item_cost = 10 + path = /obj/item/weapon/storage/briefcase/inflatable + /datum/uplink_item/item/tools/elitetablet name = "Tablet (Advanced)" item_cost = 15 diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index f0e87cc93a..a826f6e002 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -399,7 +399,7 @@ var/list/mob/living/forced_ambiance_list = new L << chosen_ambiance else L << sound(null, channel = CHANNEL_AMBIENCE_FORCED) - else if(src.ambience.len) + else if(src.ambience && src.ambience.len) var/ambience_odds = L?.client.prefs.ambience_chance if(prob(ambience_odds) && (world.time >= L.client.time_last_ambience_played + 1 MINUTE)) var/sound = pick(ambience) diff --git a/code/game/jobs/access_datum_vr.dm b/code/game/jobs/access_datum_vr.dm index 16038248d0..bd3906f16c 100644 --- a/code/game/jobs/access_datum_vr.dm +++ b/code/game/jobs/access_datum_vr.dm @@ -27,4 +27,22 @@ var/const/access_pilot = 67 /datum/access/entertainment id = access_entertainment desc = "Entertainment Backstage" - region = ACCESS_REGION_GENERAL \ No newline at end of file + region = ACCESS_REGION_GENERAL + +/var/const/access_mime = 138 +/datum/access/mime + id = access_mime + desc = "Mime Office" + region = ACCESS_REGION_GENERAL + +/var/const/access_clown = 136 +/datum/access/clown + id = access_clown + desc = "Clown Office" + region = ACCESS_REGION_GENERAL + +/var/const/access_tomfoolery = 137 +/datum/access/tomfoolery + id = access_tomfoolery + desc = "Tomfoolery Closet" + region = ACCESS_REGION_GENERAL diff --git a/code/game/jobs/job/captain_vr.dm b/code/game/jobs/job/captain_vr.dm index 84333dad13..fc481186d0 100644 --- a/code/game/jobs/job/captain_vr.dm +++ b/code/game/jobs/job/captain_vr.dm @@ -26,13 +26,13 @@ access_all_personal_lockers, access_maint_tunnels, access_bar, access_janitor, access_construction, access_morgue, access_crematorium, access_kitchen, access_cargo, access_cargo_bot, access_mailsorting, access_qm, access_hydroponics, access_lawyer, access_chapel_office, access_library, access_research, access_mining, access_heads_vault, access_mining_station, - access_hop, access_RC_announce, access_keycard_auth) + access_hop, access_RC_announce, access_clown, access_tomfoolery, access_mime, access_keycard_auth) minimal_access = list(access_security, access_sec_doors, access_brig, access_forensics_lockers, access_medical, access_engine, access_change_ids, access_ai_upload, access_eva, access_heads, access_all_personal_lockers, access_maint_tunnels, access_bar, access_janitor, access_construction, access_morgue, access_crematorium, access_kitchen, access_cargo, access_cargo_bot, access_mailsorting, access_qm, access_hydroponics, access_lawyer, access_chapel_office, access_library, access_research, access_mining, access_heads_vault, access_mining_station, - access_hop, access_RC_announce, access_keycard_auth) + access_hop, access_RC_announce, access_clown, access_tomfoolery, access_mime, access_keycard_auth) /datum/alt_title/deputy_director title = "Deputy Director" diff --git a/code/game/jobs/job/special_vr.dm b/code/game/jobs/job/special_vr.dm index 57f0e91d34..1429212e75 100644 --- a/code/game/jobs/job/special_vr.dm +++ b/code/game/jobs/job/special_vr.dm @@ -79,14 +79,14 @@ departments = list(DEPARTMENT_CIVILIAN) department_flag = CIVILIAN faction = "Station" - total_positions = -1 - spawn_positions = -1 + total_positions = -1 //CHOMP Edit: Disable. Change to + integer to enable. + spawn_positions = -1 //CHOMP Edit: Disable. Change to + integer to enable. supervisors = "the spirit of laughter" selection_color = "#515151" economic_modifier = 1 job_description = "A Clown is there to entertain the crew and keep high morale using various harmless pranks and ridiculous jokes!" whitelist_only = 1 - latejoin_only = 1 + latejoin_only = 0 outfit_type = /decl/hierarchy/outfit/job/clown pto_type = PTO_CIVILIAN alt_titles = list("Jester" = /datum/alt_title/jester, "Fool" = /datum/alt_title/fool) @@ -99,9 +99,9 @@ /datum/job/clown/get_access() if(config.assistant_maint) - return list(access_maint_tunnels, access_entertainment) + return list(access_maint_tunnels, access_entertainment, access_clown, access_tomfoolery) else - return list(access_entertainment) + return list(access_entertainment, access_clown, access_tomfoolery) /datum/job/mime title = "Mime" @@ -109,15 +109,15 @@ departments = list(DEPARTMENT_CIVILIAN) department_flag = CIVILIAN faction = "Station" - total_positions = -1 - spawn_positions = -1 + total_positions = -1 //CHOMP Edit: Disable. Change to + integer to enable. + spawn_positions = -1 //CHOMP Edit: Disable. Change to + integer to enable. supervisors = "the spirit of performance" selection_color = "#515151" economic_modifier = 1 job_description = "A Mime is there to entertain the crew and keep high morale using unbelievable performances and acting skills!" alt_titles = list("Poseur" = /datum/alt_title/poseur) whitelist_only = 1 - latejoin_only = 1 + latejoin_only = 0 outfit_type = /decl/hierarchy/outfit/job/mime pto_type = PTO_CIVILIAN @@ -126,6 +126,6 @@ /datum/job/mime/get_access() if(config.assistant_maint) - return list(access_maint_tunnels, access_entertainment) + return list(access_maint_tunnels, access_entertainment, access_tomfoolery, access_mime) else - return list(access_entertainment) + return list(access_entertainment, access_tomfoolery, access_mime) diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm index bc9c199ed2..9d7e5ed958 100644 --- a/code/game/machinery/doors/blast_door.dm +++ b/code/game/machinery/doors/blast_door.dm @@ -29,6 +29,7 @@ var/close_sound = 'sound/machines/door/blastdoorclose.ogg' var/damage = BLAST_DOOR_CRUSH_DAMAGE var/multiplier = 1 // The multiplier for how powerful our YEET is. + var/istransparent = 0 closed_layer = ON_WINDOW_LAYER // Above airlocks when closed var/id = 1.0 @@ -108,10 +109,13 @@ src.density = 1 update_nearby_tiles() src.update_icon() - src.set_opacity(1) + if(src.istransparent) + src.set_opacity(0) + else + src.set_opacity(1) sleep(15) src.operating = 0 - + // Blast door crushing. for(var/turf/turf in locs) for(var/atom/movable/AM in turf) @@ -276,10 +280,11 @@ // Parameters: None // Description: Closes the door. Does necessary checks. /obj/machinery/door/blast/close() + if (src.operating || (stat & BROKEN || stat & NOPOWER)) return - force_close() + force_close() // Proc: repair() // Parameters: None @@ -323,5 +328,52 @@ obj/machinery/door/blast/regular/open icon_state = "shutter1" damage = SHUTTER_CRUSH_DAMAGE +// SUBTYPE: Transparent +// Not technically a blast door but operates like one. Allows air and light. +obj/machinery/door/blast/gate + name = "thick gate" + icon_state_open = "tshutter0" + icon_state_opening = "tshutterc0" + icon_state_closed = "tshutter1" + icon_state_closing = "tshutterc1" + icon_state = "tshutter1" + damage = SHUTTER_CRUSH_DAMAGE + maxhealth = 400 + block_air_zones = 0 + opacity = 0 + istransparent = 1 + +obj/machinery/door/blast/gate/open + icon_state = "tshutter0" + density = 0 + +/obj/machinery/door/blast/gate/thin + name = "thin gate" + icon_state_open = "shutter2_0" + icon_state_opening = "shutter2_c0" + icon_state_closed = "shutter2_1" + icon_state_closing = "shutter2_c1" + icon_state = "shutter2_1" + maxhealth = 200 + opacity = 0 + +/obj/machinery/door/blast/gate/thin/open + icon_state = "shutter2_1" + density = 0 + +/obj/machinery/door/blast/gate/bars + name = "prison bars" + icon_state_open = "bars_0" + icon_state_opening = "bars_c0" + icon_state_closed = "bars_1" + icon_state_closing = "bars_c1" + icon_state = "bars_1" + maxhealth = 600 + opacity = 0 + +/obj/machinery/door/blast/gate/bars/open + icon_state = "bars_1" + density = 0 + #undef BLAST_DOOR_CRUSH_DAMAGE #undef SHUTTER_CRUSH_DAMAGE \ No newline at end of file diff --git a/code/game/machinery/pointdefense.dm b/code/game/machinery/pointdefense.dm index 92f6cd40df..c6945f1e79 100644 --- a/code/game/machinery/pointdefense.dm +++ b/code/game/machinery/pointdefense.dm @@ -376,10 +376,13 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense) /obj/effect/projectile/tracer/pointdefense + icon = 'icons/obj/projectiles_vr.dmi' icon_state = "beam_pointdef" /obj/effect/projectile/muzzle/pointdefense + icon = 'icons/obj/projectiles_vr.dmi' icon_state = "muzzle_pointdef" /obj/effect/projectile/impact/pointdefense + icon = 'icons/obj/projectiles_vr.dmi' icon_state = "impact_pointdef" diff --git a/code/game/machinery/vending_machines_vr.dm b/code/game/machinery/vending_machines_vr.dm index 75e0c9d815..9d65e84432 100644 --- a/code/game/machinery/vending_machines_vr.dm +++ b/code/game/machinery/vending_machines_vr.dm @@ -1157,7 +1157,6 @@ /obj/item/clothing/suit/jacket/puffer/vest = 5, /obj/item/clothing/suit/storage/flannel/red = 5, /obj/item/clothing/suit/unathi/robe = 5, - /obj/item/clothing/suit/storage/hooded/wintercoat/snowsuit = 5, /obj/item/clothing/suit/storage/toggle/internalaffairs = 5, /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket = 5, /obj/item/clothing/suit/storage/toggle/lawyer/purpjacket = 5, @@ -1244,7 +1243,6 @@ /obj/item/clothing/suit/jacket/puffer/vest = 100, /obj/item/clothing/suit/storage/flannel/red = 100, /obj/item/clothing/suit/unathi/robe = 100, - /obj/item/clothing/suit/storage/hooded/wintercoat/snowsuit = 100, /obj/item/clothing/suit/storage/toggle/internalaffairs = 100, /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket = 100, /obj/item/clothing/suit/storage/toggle/lawyer/purpjacket = 100, @@ -1447,7 +1445,7 @@ /obj/item/seeds/riceseed = 3, /obj/item/seeds/rose = 3, /obj/item/seeds/soyaseed = 3, - /obj/item/seeds/spineapple = 3, + /obj/item/seeds/pineapple = 3, /obj/item/seeds/sugarcaneseed = 3, /obj/item/seeds/sunflowerseed = 3, /obj/item/seeds/shandseed = 2, @@ -1617,14 +1615,19 @@ products = list(/obj/item/weapon/card/id/syndicate/station_access = 1, /obj/item/weapon/storage/box/syndie_kit/chameleon = 1, /obj/item/clothing/mask/bandana = 1, + /obj/item/clothing/glasses/sunglasses = 1, /obj/item/device/radio/headset/syndicate/alt = 1, /obj/item/device/pda = 1, /obj/item/device/communicator = 1, /obj/item/weapon/tape_roll = 2, /obj/item/weapon/handcuffs = 4, + /obj/item/weapon/handcuffs/legcuffs = 4, /obj/item/weapon/cell/device/weapon/recharge/alien = 2, /obj/item/device/chameleon = 1, - /obj/item/weapon/storage/mre/menu11 = 2 + /obj/item/weapon/storage/mre/menu11 = 2, + /obj/item/device/flash = 2, + /obj/item/weapon/pen/reagent/paralysis = 4, + /obj/item/device/perfect_tele/alien = 1 ) vend_delay = 15 @@ -2514,7 +2517,6 @@ /obj/item/clothing/suit/jacket/puffer/vest = 5, /obj/item/clothing/suit/storage/flannel/red = 5, /obj/item/clothing/suit/unathi/robe = 5, - /obj/item/clothing/suit/storage/hooded/wintercoat/snowsuit = 5, /obj/item/clothing/suit/storage/toggle/internalaffairs = 5, /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket = 5, /obj/item/clothing/suit/storage/toggle/lawyer/purpjacket = 5, @@ -2601,7 +2603,6 @@ /obj/item/clothing/suit/jacket/puffer/vest = 100, /obj/item/clothing/suit/storage/flannel/red = 100, /obj/item/clothing/suit/unathi/robe = 100, - /obj/item/clothing/suit/storage/hooded/wintercoat/snowsuit = 100, /obj/item/clothing/suit/storage/toggle/internalaffairs = 100, /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket = 100, /obj/item/clothing/suit/storage/toggle/lawyer/purpjacket = 100, @@ -3260,20 +3261,20 @@ /obj/item/clothing/under/rank/trek/command/voy = 5, /obj/item/clothing/under/rank/trek/command/ent = 5, /obj/item/clothing/under/rank/trek/eng = 5, + /obj/item/clothing/under/rank/trek/sec = 5, /obj/item/clothing/under/rank/trek/eng/next = 5, + /obj/item/clothing/under/rank/trek/sec/next = 5, /obj/item/clothing/under/rank/trek/eng/ds9 = 5, + /obj/item/clothing/under/rank/trek/sec/ds9 = 5, /obj/item/clothing/under/rank/trek/eng/voy = 5, + /obj/item/clothing/under/rank/trek/sec/voy = 5, /obj/item/clothing/under/rank/trek/eng/ent = 5, + /obj/item/clothing/under/rank/trek/sec/ent = 5, /obj/item/clothing/under/rank/trek/medsci = 5, /obj/item/clothing/under/rank/trek/medsci/next = 5, /obj/item/clothing/under/rank/trek/medsci/ds9 = 5, /obj/item/clothing/under/rank/trek/medsci/voy = 5, /obj/item/clothing/under/rank/trek/medsci/ent = 5, - /obj/item/clothing/under/rank/trek/sec = 5, - /obj/item/clothing/under/rank/trek/sec/next = 5, - /obj/item/clothing/under/rank/trek/sec/ds9 = 5, - /obj/item/clothing/under/rank/trek/sec/voy = 5, - /obj/item/clothing/under/rank/trek/sec/ent = 5, /obj/item/clothing/under/rank/khi/cmd = 5, /obj/item/clothing/under/rank/khi/eng = 5, /obj/item/clothing/under/rank/khi/med = 5, @@ -3504,7 +3505,6 @@ /obj/item/clothing/suit/jacket/puffer/vest = 5, /obj/item/clothing/suit/storage/flannel/red = 5, /obj/item/clothing/suit/unathi/robe = 5, - /obj/item/clothing/suit/storage/hooded/wintercoat/snowsuit = 5, /obj/item/clothing/suit/storage/toggle/internalaffairs = 5, /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket = 5, /obj/item/clothing/suit/storage/toggle/lawyer/purpjacket = 5, @@ -3943,7 +3943,7 @@ /obj/item/weapon/reagent_containers/food/snacks/slice/mushroompizza = 10, /obj/item/weapon/reagent_containers/food/snacks/slice/orangecake = 10, /obj/item/weapon/reagent_containers/food/snacks/slice/peanutcake = 10, - /obj/item/weapon/reagent_containers/food/snacks/slice/pineapple = 10, + /obj/item/weapon/reagent_containers/food/snacks/pineappleslice = 10, /obj/item/weapon/reagent_containers/food/snacks/slice/plaincake = 10, /obj/item/weapon/reagent_containers/food/snacks/slice/pumpkinpie = 10, /obj/item/weapon/reagent_containers/food/snacks/slice/tofubread = 10, @@ -4407,7 +4407,7 @@ /obj/item/weapon/reagent_containers/food/snacks/slice/mushroompizza = 10, /obj/item/weapon/reagent_containers/food/snacks/slice/orangecake = 10, /obj/item/weapon/reagent_containers/food/snacks/slice/peanutcake = 10, - /obj/item/weapon/reagent_containers/food/snacks/slice/pineapple = 10, + /obj/item/weapon/reagent_containers/food/snacks/pineappleslice = 10, /obj/item/weapon/reagent_containers/food/snacks/slice/plaincake = 10, /obj/item/weapon/reagent_containers/food/snacks/slice/pumpkinpie = 10, /obj/item/weapon/reagent_containers/food/snacks/slice/tofubread = 10, @@ -4579,7 +4579,7 @@ /obj/item/seeds/riceseed = 3, /obj/item/seeds/rose = 3, /obj/item/seeds/soyaseed = 3, - /obj/item/seeds/spineapple = 3, + /obj/item/seeds/pineapple = 3, /obj/item/seeds/sugarcaneseed = 3, /obj/item/seeds/sunflowerseed = 3, /obj/item/seeds/shandseed = 2, diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm index c3716b031c..5286670849 100644 --- a/code/game/objects/effects/decals/contraband.dm +++ b/code/game/objects/effects/decals/contraband.dm @@ -90,6 +90,39 @@ serial_number = given_serial ..(loc) +//Selectable subtype +/obj/item/weapon/contraband/poster/custom + name = "rolled-up poly-poster" + desc = "The poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface. This one is made from some kind of e-paper, and could display almost anything!" + poster_type = /obj/structure/sign/poster/custom + +/obj/item/weapon/contraband/poster/custom/New(turf/loc, var/given_serial = 0) + if(given_serial == 0) + serial_number = 1 //Decidedly unrandom + else + serial_number = given_serial + ..(loc) + +/obj/item/weapon/contraband/poster/custom/verb/select_poster() + set name = "Set Poster type" + set category = "Object" + set desc = "Click to choose a poster to display." + + var/mob/M = usr + var/list/options = list() + for(var/datum/poster/posteroption in poster_designs) + options[posteroption.listing_name] = posteroption + + var/choice = input(M,"Choose a poster!","Customize Poster") in options + if(src && choice && !M.stat && in_range(M,src)) + var serial = poster_designs.Find(options[choice]) + serial_number = serial + name = "rolled-up poly-poster - No.[serial]" + to_chat(M, "The poster is now: [choice].") + return 1 + + + //############################## THE ACTUAL DECALS ########################### /obj/structure/sign/poster @@ -187,6 +220,7 @@ // Description suffix var/desc="" var/icon_state="" + var/listing_name="" // NT poster subtype. /obj/structure/sign/poster/nanotrasen @@ -201,3 +235,8 @@ set_poster(design) ..(newloc, placement_dir, serial, itemtype) + +//Non-Random Posters + +/obj/structure/sign/poster/custom + roll_type = /obj/item/weapon/contraband/poster/custom \ No newline at end of file diff --git a/code/game/objects/effects/decals/posters/bs12.dm b/code/game/objects/effects/decals/posters/bs12.dm index 7aadcb2ead..5c1c32d98b 100644 --- a/code/game/objects/effects/decals/posters/bs12.dm +++ b/code/game/objects/effects/decals/posters/bs12.dm @@ -1,290 +1,348 @@ // baystation12 posters /datum/poster/bay_1 icon_state="bsposter1" - name = "Unlucky Space Explorer" - desc = "This particular one depicts a skeletal form within a space suit." + name = "PSA: Unlucky Space Explorer" + desc = "This grim PSA depicts a skeletal form within a space suit. Thousands die every year as a result of failing to follow EVA safety guidelines." + listing_name = "PSA - EVA Accidents" /datum/poster/bay_2 icon_state="bsposter2" - name = "Positronic Logic Conflicts" - desc = "This particular one depicts the cold, unmoving stare of a particular advanced AI." + name = "PSA: Disobedient Drones" + desc = "This PSA depicts the cold, unmoving stare of a particularly advanced AI. Contact information for the Emergent Intelligence Oversight is included." + listing_name = "PSA - Emergent Drones" /datum/poster/bay_3 icon_state="bsposter3" - name = "Paranoia" - desc = "This particular one warns of the dangers of trusting your co-workers too much." + name = "PSA: Corporate Espionage" + desc = "This PSA warns of the dangers of trusting your co-workers with sensitive department information. They may be spying for a rival corporation, or worse!" + listing_name = "PSA - Corporate Espionage" /datum/poster/bay_4 icon_state="bsposter4" name = "Keep Calm" - desc = "This particular one is of a famous New Earth design, although a bit modified. Someone has scribbled an O over the A on the poster." + desc = "An incredibly vague message, presented in a classic form. Someone has scribbled an O over the A on the poster." + listing_name = "PSA - Keep Calm" /datum/poster/bay_5 icon_state="bsposter5" - name = "Martian Warlord" - desc = "This particular one depicts the cartoony mug of a certain Martial Warmonger." + name = "PSA: Saboteurs!" + desc = "A company PSA reminding employees to keep an eye out for suspicious activity, and report it immediately." + listing_name = "PSA - Saboteur" /datum/poster/bay_6 icon_state="bsposter6" - name = "Technological Singularity" - desc = "This particular one is of the blood-curdling symbol of a long-since defeated enemy of humanity." + name = "Eradicator XV" + desc = "An ad for the fifteenth installment in the Eradicator movie franchise, about a violent robotic uprising hellbent on wiping out humanity." + listing_name = "Ad - Eradicator XV" /datum/poster/bay_7 icon_state="bsposter7" - name = "Wasteland" - desc = "This particular one is of a couple of ragged gunmen, one male and one female, on top of a mound of rubble. The number \"12\" is visible on their blue jumpsuits." + name = "Wasteland: Battle for Earth" + desc = "This action movie ad shows a couple of ragged post-apocalyptic gunmen, one male and one female, on top of a mound of rubble." + listing_name = "Ad - Battle for Earth" /datum/poster/bay_8 icon_state="bsposter8" name = "Pinup Girl Cindy" - desc = "This particular one is of a historical corporate PR girl, Cindy, in a particularly feminine pose." + desc = "This is a vintage 2450s pin-up of NanoTrasen's PR girl, Cindy, in a particularly feminine pose." + listing_name = "Pin-up - Cindi" /datum/poster/bay_9 icon_state="bsposter9" name = "Pinup Girl Amy" - desc = "This particular one is of Amy, the nymphomaniac urban legend of deep space. How this photograph came to be is not known." + desc = "This pin-up is of Amy, one of NanoTrasen's most popular PR models." + listing_name = "Pin-up - Amy" /datum/poster/bay_10 icon_state="bsposter10" name = "Don't Panic" - desc = "This particular one depicts some sort of star in a grimace. The \"Don't Panic\" is written in big, friendly letters." + desc = "This ad for Vey-Medical anxiety pills depicts some sort of star in a grimace. The \"Don't Panic\" is written in big, friendly letters." + listing_name = "Ad - Don't panic." /datum/poster/bay_11 icon_state="bsposter11" - name = "Underwater Laboratory" - desc = "This particular one is of the fabled last crew of a previous Company project." + name = "Underwater Living" + desc = "This immigration poster encourages you to move to Earth;s premiere underwater city, Atlantis. One bedroom apartments start at half your salary." + listing_name = "Ad - Atlantis" /datum/poster/bay_12 icon_state="bsposter12" - name = "Rogue AI" - desc = "This particular one depicts the shell of the infamous AI that catastropically comandeered one of humanity's earliest space stations. Back then, the Company was just known as TriOptimum." + name = "Beware Rogue AI" + desc = "This ad for the Emergent Intelligence Oversight Recruitment Division depicts a menacing AI and asks if you're a bad enough dude to take it on." + listing_name = "Recruitment - EIO" /datum/poster/bay_13 icon_state="bsposter13" - name = "User of the Arcane Arts" - desc = "This particular one depicts a wizard, casting a spell. You can't really make out if it's an actual photograph or a computer-generated image." + name = "Become A User of the Arcane Arts" + desc = "This ad for popular Virtual Reality online game 'Wiz Online' depicts a wizard, casting a spell. You can't really make out if it's an actual photograph or a computer-generated image. Incredible graphics!" + listing_name = "Ad - Wiz Online" /datum/poster/bay_14 icon_state="bsposter14" name = "Levitating Skull" - desc = "This particular one is the portrait of a flying enchanted skull. Its adventures along with its fabled companion are now fading through history..." + desc = "This tacky ad is a portrait of the flying enchanted skull, Bones. Its adventures along with its fabled companion are showing now on a broadcast service near you!" + listing_name = "Ad - Bones Adventures" /datum/poster/bay_15 icon_state="bsposter15" name = "Augmented Legend" - desc = "This particular one is of an obviously augmented individual, gazing towards the sky. The cyber-city in the backround is rather punkish." + desc = "This ad for Ward-Takahashi cybernetic implants shows obviously augmented individual, gazing towards the sky. Is your body augmented?" + listing_name = "Ad - Ward-Takahashi Augments" /datum/poster/bay_16 icon_state="bsposter16" - name = "Dangerous Static" - desc = "This particular one depicts nothing remarkable other than a rather mesmerising pattern of monitor static. There's a tag on the sides of the poster, but it's ripped off." + name = "Snow Crash" + desc = "This particular one depicts nothing remarkable other than a rather mesmerising pattern of monitor static. You think it's an ad for something, but you're not sure what." + listing_name = "Ad - Snow Crash" /datum/poster/bay_17 icon_state="bsposter17" name = "Pinup Girl Val" desc = "Luscious Val McNeil, the vertically challenged Legal Extraordinaire, winner of Miss Space two years running and favoured pinup girl of Lawyers Weekly." + listing_name = "Pin-up - Val" /datum/poster/bay_18 icon_state="bsposter18" name = "Derpman, Enforcer of the State" - desc = "Here to protect and serve... your donuts! A generously proportioned man, he teaches you the value of hiding your snacks." + desc = "An ad for Centauri Provisions donuts. Officer Derpman is here to protect and serve... your donuts! A generously proportioned man, he teaches you the value of hiding your snacks." + listing_name = "Ad - Officer Derpman Donuts" /datum/poster/bay_19 icon_state="bsposter19" name = "Respect an Unathi" - desc = "This poster depicts a well dressed looking Unathi receiving a prestigious award. It appears to espouse greater co-operation and harmony between the two races." + desc = "This poster depicts a sharply dressed Unathi receiving a prestigious award. It appears to espouse greater co-operation and harmony between humanity and the Unathi." + listing_name = "PSA - Unathi" /datum/poster/bay_20 icon_state="bsposter20" - name = "Skrell Twilight" - desc = "This poster depicts a mysteriously inscrutable, alien scene. Numerous Skrell can be seen conversing amidst great, crystalline towers rising above crashing waves" + name = "Skrell Tourism" + desc = "This tourism poster depicts a mysteriously inscrutable, alien scene. Numerous Skrell can be seen conversing amidst great, crystalline towers rising above crashing waves." + listing_name = "Ad - Skrellian Tourism" /datum/poster/bay_21 icon_state="bsposter21" name = "Join the Fuzz!" desc = "It's a nice recruitment poster of a white haired Chinese woman that says; \"Big Guns, Hot Women, Good Times. Security. We get it done.\"" + listing_name = "Recruitment - NanoTrasen Security - Pinup" /datum/poster/bay_22 icon_state="bsposter22" name = "Looking for a career with excitement?" desc = "A recruitment poster starring a dark haired woman with glasses and a purple shirt that has \"Got Brains? Got Talent? Not afraid of electric flying monsters that want to suck the soul out of you? Then Xenobiology could use someone like you!\" written on the bottom." + listing_name = "Recruitment - Xenobiology" /datum/poster/bay_23 icon_state="bsposter23" name = "Safety first: because electricity doesn't wait!" desc = "A safety poster starring a clueless looking redhead with frazzled hair. \"Every year, hundreds of NT employees expose themselves to electric shock. Play it safe. Avoid suspicious doors after electrical storms, and always wear protection when doing electric maintenance.\"" + listing_name = "Safety - Electric Shock" /datum/poster/bay_24 icon_state="bsposter24" name = "Responsible medbay habits, No #259" desc = "A poster with a nervous looking geneticist on it states; \"Friends Tell Friends They're Clones. It can cause severe and irreparable emotional trauma if a person is not properly informed of their recent demise. Always follow your contractual obligation and inform them of their recent rejuvenation.\"" + listing_name = "Medical - Clone Disclosure" /datum/poster/bay_25 icon_state="bsposter25" name = "Irresponsible medbay habits, No #2" desc = "This is a safety poster starring a perverted looking naked doctor. \"Sexual harassment is never okay. REPORT any acts of sexual deviance or harassment that disrupt a healthy working environment.\"" + listing_name = "Medical - Sexual Harassment" /datum/poster/bay_26 icon_state="bsposter26" name = "The Men We Knew" - desc = "This movie poster depicts a group of soldiers fighting a large mech, the movie seems to be a patriotic war movie." + desc = "This movie poster depicts a group of soldiers fighting a large mech, it seems to be some kind of movie set during the Hegemony War." + listing_name = "Ad - Men We Knew" /datum/poster/bay_27 icon_state="bsposter27" name = "Plastic Sheep Can't Scream" - desc = "This is a movie poster for an upcoming horror movie, it features an AI in the front of it." + desc = "This is a movie poster for an upcoming horror movie, featuring a frightening looking robotic creature." + listing_name = "Ad - Plastic Sheep Can't Scream" /datum/poster/bay_28 icon_state="bsposter28" name = "The Stars Know Love" - desc = "This is a movie poster. A bleeding woman is shown drawing a heart in her blood on the window of space ship, it seems to be a romantic Drama." + desc = "This is a movie poster. A bleeding woman is shown drawing a heart in her blood on the window of space ship, it seems to be a romantic drama." + listing_name = "Ad - The Stars Know Love" /datum/poster/bay_29 icon_state="bsposter29" name = "Winter Is Coming" - desc = "On the poster is a frighteningly large wolf, he warns: \"Only YOU can keep the station from freezing during planetary occultation!\"" + desc = "On the poster is a frighteningly large wolf, he warns: \"Only YOU can keep yourself from freezing this winter!\". Below is the logo of NanoThreads clothing." + listing_name = "Ad - Cold-weather Gear" /datum/poster/bay_30 icon_state="bsposter30" name = "Ambrosia Vulgaris" - desc = "Just looking at this poster makes you feel a little bit dizzy." + desc = "It's an ad for getting absolutely shitfaced on psychadelics. Just looking at this poster makes you feel a little bit dizzy. Use responsibly." + listing_name = "Ad - Ambrosia Vulgaris" /datum/poster/bay_31 icon_state="bsposter31" - name = "Donut Corp" - desc = "This is an advertisement for Donut Corp, the new innovation in donut technology!" + name = "Donut Panic" + desc = "This is an advertisement for Donut Panic, the bi-monthly periodical for donut lovers galaxy-wide." + listing_name = "Ad - Donuts Panic" /datum/poster/bay_32 icon_state="bsposter32" name = "Eat!" - desc = "A poster depicting a hamburger. The poster orders you to consume the hamburger." + desc = "A NanoPastures poster depicting a synthmeat hamburger. The poster COMMANDS you to consume the hamburger." + listing_name = "Ad - Hamburger" /datum/poster/bay_33 icon_state="bsposter33" - name = "Tools, tools, tools" - desc = "You can never have enough tools, thats for sure!" + name = "Tools, tools, tools!" + desc = "Xion Manufacturing reminds you: Never trust an off-brand tool. " + listing_name = "Ad - Xion Tools" /datum/poster/bay_34 icon_state="bsposter34" name = "Power Up!" - desc = "High reward, higher risk!" + desc = "NanoTrasen are leaders in Phoron-based supermatter power! High reward, higher risk!" + listing_name = "Ad - Phoron Power" /datum/poster/bay_35 icon_state="bsposter35" - name = "Lamarr" - desc = "This is a poster depicting the pet and mascot of the science department." + name = "Kendrick" + desc = "This is a poster depicting the pet and mascot of the science department, and national corporate ambassador for slime-based science solutions.." + listing_name = "Ad - Slime Science" /datum/poster/bay_36 icon_state="bsposter36" name = "Fancy Borg" - desc = "A poster depicting a cyborg using the service module. 'Fancy Borg' is written on it." + desc = "A poster depicting a cyborg dressed to the nines. An ad for cybernetics enthusiast magazine, Borg Fancy." + listing_name = "Ad - Borg Fancy A" /datum/poster/bay_37 icon_state="bsposter37" name = "Fancier Borg" - desc = "A poster depicting a cyborg using the service module. 'Fancy Borg' is written on it. This is even fancier than the first poster." + desc = "A poster depicting a cyborg dressed to the nines. An ad for cybernetics enthusiast magazine, Borg Fancy. This is even fancier than the other poster." + listing_name = "Ad - Borg Fancy B" /datum/poster/bay_38 icon_state="bsposter38" name = "Toaster Love" - desc = "This is a poster of a toaster containing two slices of bread. The word LOVE is written in big pink letters underneath." + desc = "This is a poster of a toaster containing two slices of bread. The word LOVE is written in big pink letters underneath. An ad for a cybernetics 'enthusiast' magazine. " + listing_name = "Ad - Toaster Love" /datum/poster/bay_39 icon_state="bsposter39" name = "Responsible medbay habits, No #91" desc = "A safety poster with a chemist holding a vial. \"Always wear safety gear while handling dangerous chemicals, even if it concerns only small amounts.\"" + listing_name = "Safety - Chemicals" /datum/poster/bay_40 icon_state="bsposter40" name = "Agreeable work environment" desc = "This poster depicts a young woman in a stylish dress. \"Try to aim for a pleasant atmosphere in the workspace. A friendly word can do more than forms in triplicate.\"" + listing_name = "PSA - Agreeable Work Environment" /datum/poster/bay_41 icon_state="bsposter41" name = "Professional work environment" desc = "A safety poster featuring a green haired woman in a shimmering blue dress. \"As an Internal Affairs Agent, your job is to create a fair and agreeable work environment for the crewmembers, as discreetly and professionally as possible.\"" + listing_name = "Recruitment - Internal Affairs" /datum/poster/bay_42 icon_state="bsposter42" name = "Engineering pinup" desc = "This is pin-up poster. A half-naked girl with white hair, toned muscles and stunning blue eyes looks back at you from the poster. Her welding helmet, tattoos and grey jumpsuit hanging around her waist gives a bit of a rugged feel." + listing_name = "Pin-up - Engineer" /datum/poster/bay_43 icon_state="bsposter43" name = "Responsible medbay habits, No #3" desc = "A safety poster with a purple-haired surgeon. She looks a bit cross. \"Let the surgeons do their work. NEVER replace or remove a surgery tool from where the surgeon put it.\"" + listing_name = "Safety - Surgical Tools" /datum/poster/bay_44 icon_state="bsposter44" name = "Time for a drink?" - desc = "This poster depicts a friendly-looking Tajaran holding a tray of drinks." + desc = "This poster for a brand for \"Tajaran-style\" rum produced by Gilthari Exports depicts a friendly-looking Tajaran holding a tray of drinks." + listing_name = "Ad - Rarkajar Rum" /datum/poster/bay_45 icon_state="bsposter45" name = "Responsible engineering habits, No #1" desc = "A safety poster featuring a blue haired engineer. \"When repairing a machine or construction, always aim for long-term solutions.\"" + listing_name = "Safety - No Shortcut Fixes" /datum/poster/bay_46 icon_state="bsposter46" name = "Inspirational lawyer" - desc = "An inspirational poster depicting a Skrellian lawyer. He seems to be shouting something, while pointing fiercely to the right." + desc = "An inspirational poster depicting a Skrellian lawyer. He seems to be shouting something, while pointing fiercely to the right. It's an ad for a NanoTrasen subsidiary law firm." + listing_name = "Ad - NanoTrasen Law" /datum/poster/bay_47 icon_state="bsposter47" name = "Security pinup" desc = "This is a pin-up poster. A dark skinned white haired girl poses in the sunlight wearing a tank top with her stomach exposed. The text on the poster states \"M, Succubus of Security.\" and a lipstick mark stains the top right corner, as if kissed by the model herself." + listing_name = "Pin-up - Security" /datum/poster/bay_48 icon_state="bsposter48" - name = "Borg pinup?" - desc = "This is a.. pin-up poster? It is a diagram on an old model of cyborg with a note scribbled in marker on the bottom, on the top there is a large XO written in red marker." + name = "Remote Drones 4 U" + desc = "This is an ad for a fairly basic model of drone produced by Grayson Manufactories Ltd. for use in hazardous environments." + listing_name = "Ad - Grayson Drones" /datum/poster/bay_49 icon_state="bsposter49" name = "Engineering recruitment" desc = "This is a poster showing an engineer relaxing by a computer, the text states \"Living the life! Join Engineering today!\"" + listing_name = "Recruitment - Engineering" /datum/poster/bay_50 icon_state="bsposter50" name = "Pinup Girl Cindy Kate" - desc = "This particular one is of Cindy Kate, a seductive performer well known among less savoury circles." + desc = "This particular one is of Cindy Kate, a seductive virtual performer well known among less savoury exonet circles." + listing_name = "Pin-up - Cindi-Kate" /datum/poster/bay_51 icon_state="bsposter51" - name = "space appreciation poster" - desc = "This is a poster produced by the Generic Space Company, as a part of a series of commemorative posters on the wonders of space. One of three." + name = "space tourism poster" + desc = "This is a poster produced by the Visit Space Society. This one is targeted at planet-dwellers, suggesting they generally visit space." + listing_name = "Tourism - Space" /datum/poster/bay_52 icon_state="bsposter52" name = "fire safety poster" desc = "This is a poster reminding you of what you should do if you are on fire, or if you are at a dance party." + listing_name = "Safety - Stop Drop and Roll" /datum/poster/bay_53 icon_state="bsposter53" name = "fire extinguisher poster" desc = "This is a poster reminding you of what you should use to put out a fire." + listing_name = "Safety - Fire Extinguishers" /datum/poster/bay_54 icon_state="bsposter54" name = "firefighter poster" desc = "This is a poster of a particularly stern looking firefighter. The caption reads, \"Only you can prevent space fires.\"" + listing_name = "Safety - Prevent Fires" /datum/poster/bay_55 icon_state="bsposter55" - name = "Earth appreciation poster" - desc = "This is a poster produced by the Generic Space Company, as a part of a series of commemorative posters on the wonders of space. Two of three." + name = "Binma tourism poster" + desc = "This is a poster produced by the Visit Space Society. This one suggests you visit the exotic garden world of Binma, and try not to get eaten." + listing_name = "Tourism - Binma" /datum/poster/bay_56 icon_state="bsposter56" name = "Mars appreciation poster" - desc = "This is a poster produced by the Generic Space Company, as a part of a series of commemorative posters on the wonders of space. Three of three." + desc = "This is a poster produced by the Visit Space Society. This one suggests you visit historic Mars. Come for the domes, stay for the monuments to hubris!" /datum/poster/bay_57 icon_state="bsposter57" name = "space carp warning poster" desc = "This poster tells of the dangers of space carp infestations." + listing_name = "Safety - Carp" /datum/poster/bay_58 icon_state="bsposter58" name = "space carp information poster" - desc = "This poster showcases an old spacer saying on the dangers of migrant space carp." \ No newline at end of file + desc = "This poster showcases an old spacer saying on the dangers of migrant space carp." + listing_name = "Safety - Carp Information" + diff --git a/code/game/objects/effects/decals/posters/polarisposters.dm b/code/game/objects/effects/decals/posters/polarisposters.dm index d40cdd0db0..45cfd8622d 100644 --- a/code/game/objects/effects/decals/posters/polarisposters.dm +++ b/code/game/objects/effects/decals/posters/polarisposters.dm @@ -2,41 +2,49 @@ icon_state="polposter1" name = "Safety!" desc = "A poster advising you to learn how to put on your internals at a moment's notice." + listing_name = "Safety - Internals" /datum/poster/pol_2 icon_state="polposter2" name = "Safety!" desc = "A blue and white colored poster. This one advises you to wear your safety goggles when handling chemicals." + listing_name = "Safety - Goggles" /datum/poster/pol_3 icon_state="polposter3" name = "Safety!" desc = "A safety poster instructing you to comply with the authorities, especially in an emergency." + listing_name = "Safety - Follow Instruction" /datum/poster/pol_4 icon_state="polposter4" name = "Clean Hands Save Lives" desc = "A safety poster reminding you to wash your hands." + listing_name = "Safety - Hand Washing" /datum/poster/pol_5 icon_state="polposter5" name = "Help!" desc = "This poster depicts a man helping another man get up." + listing_name = "Safety - Help Others" /datum/poster/pol_6 icon_state="polposter6" name = "Walk!" desc = "This poster depicts a man walking, presumably to encourage you not to run in the halls." + listing_name = "Safety - No Running" /datum/poster/pol_7 icon_state="polposter7" name = "Place your signs!" desc = "A safety poster reminding custodial staff to place wet floor signs where needed. This reminder's rarely heeded." + listing_name = "Safety - Wet Floor Signs" /datum/poster/pol_8 icon_state="polposter8" name = "Safety!" desc = "An advertisement / safety poster for EVA training and certification. Training is available at your local Central Command." + listing_name = "Safety - EVA Training" /datum/poster/pol_9 icon_state="poster10" //Recycling this icon @@ -44,52 +52,138 @@ desc = "This poster appears to be reference material for maintenance personnel, instructing to always wear insulated gloves, that wirecutters and \ a multitool are the optimal tools to use, and where to find the maintenance panel on most airlocks. Unfortunately, the poster does not mention any \ wire codes." + listing_name = "Safety - Airlock Maintenance" /datum/poster/pol_10 icon_state="polposter9" name = "orchid" desc = "This poster appears strangely familiar, depicting the flower of a tree native to the planet Earth." + listing_name = "General - Orchid" -// A new subset of poster datum for Security posters. +/datum/poster/pol_11 + icon_state="polposter10" + name = "firefighter pinup" + desc = "A buff firefighter with his shirt off. Maybe he's trying to raise awareness about fire safety, but you're a little distracted." + listing_name = "Pin-up - Firefighter" + +/datum/poster/pol_12 + icon_state="polposter11" + name = "CHUCK" + desc = "With the budget Cyber Solutions 'Chuck' model work drone, your days of menial labour are numbered! \"With Cyber Solutions, there's always someone beside you, helping you. You know their face. You know my face.\"" + listing_name = "Ad - Chuck" + +/datum/poster/pol_13 + icon_state="polposter12" + name = "New You" + desc = "An ad for Kaleidoscope Cosmetics. \"The common factor in all your failed relationships is you. Fix it with affordable gene therapy!\"" + listing_name = "Ad - Kaleidoscope" + +/datum/poster/pol_14 + icon_state="polposter13" + name = "Take a Taxi" + desc = "An ad for the Major Bill's Transportation drone-operated taxi service operating in most major cities throughout Solar space." + listing_name = "Ad - Taxi" + +/datum/poster/pol_15 + icon_state="polposter14" + name = "Adopt A Teshpet" + desc = "An ad for definitively racist virtual pet game, Teshpets." + listing_name = "Ad - Teshpets" + +/datum/poster/pol_16 + icon_state="polposter15" + name = "Train and Fight" + desc = "This poster of sweaty, near-naked wrestlers is the most masculine thing you've ever seen. You can barely tell where one man ends and the other begins. Always seek manliness!" + listing_name = "Pinup - Wrestling" + +/datum/poster/nt_3 + icon_state = "ntposter03" + name = "Mechatronic Safety" + desc = "This poster displays three cutting-edge gygaxes standing in line in front of a man in plain clothes.\ + The poster's captions explain the importance of knowing how to operate a mechatronic vehicle safely, especially near other personnel.\ + The image seems important." + listing_name = "Safety - Mech Operation" + +/datum/poster/nt_4 + icon_state = "ntposter04" + name = "Beware Aetotheans" + desc = "This poster displays a distinctly hostile-looking red Promethean in a black coat. The fine-print around the edges warns the reader about the dangers posed by Almachi Prometheans." + listing_name = "Safety - Aetothean Danger" + +/datum/poster/nt_5 + icon_state = "ntposter05" + name = "Promethean" + desc = "This poster displays a friendly-looking green Promethean in a labcoat. The fine-print around the edges talks about the benefits Prometheans give in laboratories." + listing_name = "Safety - Prometheans" + +/datum/poster/nt_6 + icon_state = "ntposter06" + name = "NanoTrasen" + desc = "This poster showcases an NT emblem. There is writing in the ring around the inner points, probably some sort of slogan no one bothers to memorize." + listing_name = "Ad - NanoTrasen" + +/datum/poster/nt_7 + icon_state = "ntposter07" + name = "SolGov" + desc = "This poster showcases an SCG emblem. The outer ring reads,\ + \"NIL MORTALIBUS ARDUI EST\".\ + Solar Confederate Government." + listing_name = "Political - SolGov" + +/datum/poster/nt_8 + icon_state = "ntposter08" + name = "wildlife hazard" + desc = "This SifGov poster warns against attempting to kill a fully grown giant spider or other hostile life-form alone." + listing_name = "Safety - Spiders" + +// A new subset of poster datum for ONLY 'Internal' NanoTrasen posters, given to Security. /datum/poster/nanotrasen icon_state = "polposter1" name = "Safety!" desc = "A poster advising you to learn how to put on your internals at a moment's notice." + listing_name = "Safety - Internals" /datum/poster/nanotrasen/pol_2 icon_state="polposter2" name = "Safety!" desc = "A blue and white colored poster. This one advises you to wear your safety goggles when handling chemicals." + listing_name = "Safety - Goggles" /datum/poster/nanotrasen/pol_3 icon_state="polposter3" name = "Safety!" desc = "A safety poster instructing you to comply with the authorities, especially in an emergency." + listing_name = "Safety - Follow Instruction" /datum/poster/nanotrasen/pol_4 icon_state="polposter4" name = "Clean Hands Save Lives" desc = "A safety poster reminding you to wash your hands." + listing_name = "Safety - Hand Washing" /datum/poster/nanotrasen/pol_5 icon_state="polposter5" name = "Help!" desc = "This poster depicts a man helping another man get up." + listing_name = "Safety - Help Others" /datum/poster/nanotrasen/pol_6 icon_state="polposter6" name = "Walk!" desc = "This poster depicts a man walking, presumably to encourage you not to run in the halls." + listing_name = "Safety - No Running" /datum/poster/nanotrasen/pol_7 icon_state="polposter7" name = "Place your signs!" desc = "A safety poster reminding custodial staff to place wet floor signs where needed. This reminder's rarely heeded." + listing_name = "Safety - Wet Floor Signs" /datum/poster/nanotrasen/pol_8 icon_state="polposter8" name = "Safety!" desc = "An advertisement / safety poster for EVA training and certification. Training is available at your local Central Command." + listing_name = "Safety - EVA Training" /datum/poster/nanotrasen/pol_9 icon_state="poster10" @@ -97,81 +191,97 @@ desc = "This poster appears to be reference material for maintenance personnel, instructing to always wear insulated gloves, that wirecutters and \ a multitool are the optimal tools to use, and where to find the maintenance panel on most airlocks. Unfortunately, the poster does not mention any \ wire codes." + listing_name = "Safety - Airlock Maintenance" /datum/poster/nanotrasen/pol_10 icon_state="polposter9" name = "orchid" desc = "This poster suggests a feeling of peace. It depicts the flower of a tree native to the planet Earth." + listing_name = "General - Orchid" /datum/poster/nanotrasen/bay_9 icon_state="bsposter9" name = "Pinup Girl Amy" desc = "This particular one is of Amy, the nymphomaniac urban legend of deep space. How this photograph came to be is not known." + listing_name = "Pin-up - Amy" /datum/poster/nanotrasen/bay_21 icon_state="bsposter21" name = "Join the Fuzz!" desc = "It's a nice recruitment poster of a white haired Chinese woman that says; \"Big Guns, Hot Women, Good Times. Security. We get it done.\"" + listing_name = "Recruitment - NanoTrasen Security - Pinup" /datum/poster/nanotrasen/bay_22 icon_state="bsposter22" name = "Looking for a career with excitement?" desc = "A recruitment poster starring a dark haired woman with glasses and a purple shirt that has \"Got Brains? Got Talent? Not afraid of electric flying monsters that want to suck the soul out of you? Then Xenobiology could use someone like you!\" written on the bottom." + listing_name = "Recruitment - Xenobiology" /datum/poster/nanotrasen/bay_23 icon_state="bsposter23" name = "Safety first: because electricity doesn't wait!" desc = "A safety poster starring a clueless looking redhead with frazzled hair. \"Every year, hundreds of NT employees expose themselves to electric shock. Play it safe. Avoid suspicious doors after electrical storms, and always wear protection when doing electric maintenance.\"" + listing_name = "Safety - Electric Shock" /datum/poster/nanotrasen/bay_24 icon_state="bsposter24" name = "Responsible medbay habits, No #259" desc = "A poster with a nervous looking geneticist on it states; \"Friends Tell Friends They're Clones. It can cause severe and irreparable emotional trauma if a person is not properly informed of their recent demise. Always follow your contractual obligation and inform them of their recent rejuvenation.\"" + listing_name = "Medical - Clone Disclosure" /datum/poster/nanotrasen/bay_25 icon_state="bsposter25" name = "Irresponsible medbay habits, No #2" desc = "This is a safety poster starring a perverted looking naked doctor. \"Sexual harassment is never okay. REPORT any acts of sexual deviance or harassment that disrupt a healthy working environment.\"" + listing_name = "Medical - Sexual Harassment" /datum/poster/nanotrasen/bay_49 icon_state="bsposter49" name = "Engineering recruitment" desc = "This is a poster showing an engineer relaxing by a computer, the text states \"Living the life! Join Engineering today!\"" + listing_name = "Recruitment - Engineering" /datum/poster/nanotrasen/bay_52 icon_state="bsposter52" name = "fire safety poster" desc = "This is a poster reminding you of what you should do if you are on fire, or if you are at a dance party." + listing_name = "Safety - Stop Drop And Roll" /datum/poster/nanotrasen/bay_53 icon_state="bsposter53" name = "fire extinguisher poster" desc = "This is a poster reminding you of what you should use to put out a fire." + listing_name = "Safety - Extinguishers" /datum/poster/nanotrasen/bay_54 icon_state="bsposter54" name = "firefighter poster" desc = "This is a poster of a particularly stern looking firefighter. The caption reads, \"Only you can prevent space fires.\"" + listing_name = "Safety - Prevent Fires" /datum/poster/nanotrasen/bay_57 icon_state="bsposter57" name = "space carp warning poster" desc = "This poster tells of the dangers of space carp infestations." + listing_name = "Safety - Carp" /datum/poster/nanotrasen/bay_58 icon_state="bsposter58" name = "space carp information poster" desc = "This poster showcases an old spacer saying on the dangers of migrant space carp." + listing_name = "Safety - Carp Information" /datum/poster/nanotrasen/nt_1 icon_state = "ntposter01" name = "Security recruitment" desc = "This poster showcases an NT security guard in an excited pose, with a small blurb about the importance of Security." + listing_name = "Recruitment - NanoTrasen Security - Importance" /datum/poster/nanotrasen/nt_2 icon_state = "ntposter02" name = "Security recruitment" desc = "This poster showcases an NT security guard in an excited pose, with a small blurb about Security Employee benefits." + listing_name = "Recruitment - NanoTrasen Security - Benefits" /datum/poster/nanotrasen/nt_3 icon_state = "ntposter03" @@ -179,6 +289,7 @@ desc = "This poster displays three cutting-edge gygaxes standing in line in front of a man in plain clothes.\ The poster's captions explain the importance of knowing how to operate a mechatronic vehicle safely, especially near other personnel.\ The image seems important." + listing_name = "Safety - Mech Operation" //VOREStation Removal Start TFF 17/12/19 - lore not used in our station's own lore. /* @@ -186,6 +297,7 @@ icon_state = "ntposter04" name = "Beware Aetotheans" desc = "This poster displays a distinctly hostile-looking red Promethean in a black coat. The fine-print around the edges warns the reader about the dangers posed by Almachi Prometheans." + listing_name = "Safety - Aetothean Danger" */ //VOREstation Removal End @@ -193,11 +305,13 @@ icon_state = "ntposter05" name = "Promethean" desc = "This poster displays a friendly-looking green Promethean in a labcoat. The fine-print around the edges talks about the benefits Prometheans give in laboratories." + listing_name = "Safety - Prometheans" /datum/poster/nanotrasen/nt_6 icon_state = "ntposter06" name = "NanoTrasen" desc = "This poster showcases an NT emblem. There is writing in the ring around the inner points, probably some sort of slogan no one bothers to memorize." + listing_name = "Ad - NanoTrasen" /datum/poster/nanotrasen/nt_7 icon_state = "ntposter07" @@ -205,13 +319,16 @@ desc = "This poster showcases an SCG emblem. The outer ring reads,\ \"NIL MORTALIBUS ARDUI EST\".\ Solar Confederate Government." + listing_name = "Political - SolGov" /datum/poster/nanotrasen/nt_8 icon_state = "ntposter08" name = "wildlife hazard" desc = "This poster warns against attempting to kill a fully grown giant spider or other hostile life-form alone." + listing_name = "Safety - Spiders" /datum/poster/nanotrasen/nt_9 icon_state = "ntposter09" name = "Regulations and You" - desc = "This poster showcases an NT security guard reading from her PDA. The blurb advocates for the reader to keep corporate regulations in mind at all times, as an emergency can occur at any time." + desc = "This SifGov poster showcases an NT security guard reading from her PDA. The blurb advocates for the reader to keep corporate regulations in mind at all times, as an emergency can occur at any time." + listing_name = "Safety - Corporate Regulations" diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 1e804bbb26..0ec3f40036 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -33,6 +33,9 @@ would spawn and follow the beaker, even if it is carried or thrown. proc/start() + Destroy() + holder = null + return ..() ///////////////////////////////////////////// // GENERIC STEAM SPREAD SYSTEM diff --git a/code/game/objects/effects/temporary_visuals/projectiles/impact.dm b/code/game/objects/effects/temporary_visuals/projectiles/impact.dm index e48606a2ac..e45664e60d 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/impact.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/impact.dm @@ -74,6 +74,12 @@ light_power = 0.5 light_color = "#8837A3" +/obj/effect/projectile/impact/precursor //CHOMPedit add precursor impact + icon_state = "impact_prec" + light_range = 2 + light_power = 0.7 + light_color = "#FF0099" + /obj/effect/projectile/impact/tungsten icon_state = "impact_mhd_laser" light_range = 4 diff --git a/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm b/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm index a5c70aab2c..0c47f4ebb9 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm @@ -62,6 +62,12 @@ light_power = 0.5 light_color = "#8837A3" +/obj/effect/projectile/muzzle/precursor //CHOMPedit add Precursor muzzle + icon_state = "muzzle_prec" + light_range = 2 + light_power = 0.7 + light_color = "#FF0099" + /obj/effect/projectile/muzzle/inversion icon_state = "muzzle_invert" light_range = 2 diff --git a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm index 4326bc536d..908342e3ea 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm @@ -91,6 +91,12 @@ light_power = 0.5 light_color = "#8837A3" +/obj/effect/projectile/tracer/precursor //CHOMPedit add precursor tracer + icon_state = "prec" + light_range = 2 + light_power = 0.7 + light_color = "#FF0099" + /obj/effect/projectile/tracer/inversion icon_state = "invert" light_range = 2 diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index ff0ff75426..95cd873259 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -612,9 +612,6 @@ var/list/global/slot_flags_enumeration = list( . = ..() if(blood_overlay) overlays.Remove(blood_overlay) - if(istype(src, /obj/item/clothing/gloves)) - var/obj/item/clothing/gloves/G = src - G.transfer_blood = 0 /obj/item/reveal_blood() if(was_bloodied && !fluorescent) diff --git a/code/game/objects/items/devices/communicator/UI_tgui.dm b/code/game/objects/items/devices/communicator/UI_tgui.dm index 8dabf77f42..4745a02488 100644 --- a/code/game/objects/items/devices/communicator/UI_tgui.dm +++ b/code/game/objects/items/devices/communicator/UI_tgui.dm @@ -1,3 +1,103 @@ +// Etc UI-only vars +/obj/item/device/communicator + // Stuff for moving cameras + var/turf/last_camera_turf + // Stuff needed to render the map + var/map_name + var/obj/screen/map_view/cam_screen + var/list/cam_plane_masters + var/obj/screen/background/cam_background + var/obj/screen/skybox/local_skybox + +// Proc: setup_tgui_camera() +// Parameters: None +// Description: This sets up all of the variables above to handle in-UI map windows. +/obj/item/device/communicator/proc/setup_tgui_camera() + map_name = "communicator_[REF(src)]_map" + + // Initialize map objects + cam_screen = new + cam_screen.name = "screen" + cam_screen.assigned_map = map_name + cam_screen.del_on_map_removal = FALSE + cam_screen.screen_loc = "[map_name]:1,1" + + cam_plane_masters = get_tgui_plane_masters() + + for(var/plane in cam_plane_masters) + var/obj/screen/instance = plane + instance.assigned_map = map_name + instance.del_on_map_removal = FALSE + instance.screen_loc = "[map_name]:CENTER" + + local_skybox = new() + local_skybox.assigned_map = map_name + local_skybox.del_on_map_removal = FALSE + local_skybox.screen_loc = "[map_name]:CENTER,CENTER" + cam_plane_masters += local_skybox + + cam_background = new + cam_background.assigned_map = map_name + cam_background.del_on_map_removal = FALSE + +// Proc: update_active_camera_screen() +// Parameters: None +// Description: This refreshes the camera location +/obj/item/device/communicator/proc/update_active_camera_screen() + if(!video_source?.can_use()) + show_static() + return + + var/newturf = get_turf(video_source) + if(!is_on_same_plane_or_station(get_z(newturf), get_z(src))) + show_static() + return + + var/obj/item/device/communicator/communicator = video_source.loc + if(istype(communicator)) + if(communicator.selfie_mode) + var/mob/target = get(communicator, /mob) + if(istype(target)) + cam_screen.vis_contents = list(target) + else + cam_screen.vis_contents = list(communicator) + cam_background.fill_rect(1, 1, 1, 1) + cam_background.icon_state = "clear" + local_skybox.cut_overlays() + return + + // If we're not forcing an update for some reason and the cameras are in the same location, + // we don't need to update anything. + if(last_camera_turf == newturf) + return + + // We get a new turf in case they've moved in the last half decisecond (it's BYOND, it might happen) + last_camera_turf = get_turf(video_source) + + if(!is_on_same_plane_or_station(get_z(last_camera_turf), get_z(src))) + show_static() + return + + var/list/visible_turfs = list() + var/list/visible_things = view(video_range, last_camera_turf) + for(var/turf/visible_turf in visible_things) + visible_turfs += visible_turf + + cam_screen.vis_contents = visible_turfs + cam_background.icon_state = "clear" + cam_background.fill_rect(1, 1, (video_range * 2), (video_range * 2)) + + local_skybox.cut_overlays() + local_skybox.add_overlay(SSskybox.get_skybox(get_z(last_camera_turf))) + local_skybox.scale_to_view(video_range * 2) + local_skybox.set_position("CENTER", "CENTER", (world.maxx>>1) - last_camera_turf.x, (world.maxy>>1) - last_camera_turf.y) + +/obj/item/device/communicator/proc/show_static() + cam_screen.vis_contents.Cut() + cam_background.icon_state = "scanline2" + cam_background.fill_rect(1, 1, (video_range * 2), (video_range * 2)) + local_skybox.cut_overlays() + // Proc: tgui_state() // Parameters: User // Description: This tells TGUI to only allow us to be interacted with while in a mob inventory. @@ -9,7 +109,15 @@ // Description: This proc handles opening the UI. It's basically just a standard stub. /obj/item/device/communicator/tgui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui, datum/tgui_state/custom_state) ui = SStgui.try_update_ui(user, src, ui) + // Update the camera every SStgui tick in case it moves + update_active_camera_screen() if(!ui) + // Register map objects + user.client.register_map_obj(cam_screen) + for(var/plane in cam_plane_masters) + user.client.register_map_obj(plane) + user.client.register_map_obj(cam_background) + // Setup UI ui = new(user, src, "Communicator", name) if(custom_state) ui.set_state(custom_state) @@ -188,6 +296,7 @@ data["target_feed"] = data["feeds"][newsfeed_channel] else data["target_feed"] = null + data["selfie_mode"] = selfie_mode return data @@ -200,6 +309,7 @@ if(data_core) data_core.get_manifest_list() data["manifest"] = PDA_Manifest + data["mapRef"] = map_name return data // Proc: tgui-act() @@ -231,6 +341,9 @@ if("toggle_ringer") ringer = !ringer + if("selfie_mode") + selfie_mode = !selfie_mode + if("add_hex") var/hex = params["add_hex"] add_to_EPv2(hex) @@ -324,3 +437,4 @@ if("newsfeed") newsfeed_channel = text2num(params["newsfeed"]) +#undef DEFAULT_MAP_SIZE \ No newline at end of file diff --git a/code/game/objects/items/devices/communicator/communicator.dm b/code/game/objects/items/devices/communicator/communicator.dm index 358ef3b61b..46c89b0683 100644 --- a/code/game/objects/items/devices/communicator/communicator.dm +++ b/code/game/objects/items/devices/communicator/communicator.dm @@ -28,7 +28,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list() origin_tech = list(TECH_ENGINEERING = 2, TECH_MAGNET = 2, TECH_BLUESPACE = 2, TECH_DATA = 2) matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 10) - var/video_range = 4 + var/video_range = 3 var/obj/machinery/camera/communicator/video_source // Their camera var/obj/machinery/camera/communicator/camera // Our camera @@ -72,6 +72,9 @@ var/global/list/obj/item/device/communicator/all_communicators = list() var/update_ticks = 0 var/newsfeed_channel = 0 + // If you turn this on, it changes the way communicator video works. User configurable option. + var/selfie_mode = FALSE + // Proc: New() // Parameters: None // Description: Adds the new communicator to the global list of all communicators, sorts the list, obtains a reference to the Exonet node, then tries to @@ -86,6 +89,8 @@ var/global/list/obj/item/device/communicator/all_communicators = list() camera.name = "[src] #[rand(100,999)]" camera.c_tag = camera.name + setup_tgui_camera() + //This is a pretty terrible way of doing this. addtimer(CALLBACK(src, .proc/register_to_holder), 5 SECONDS) @@ -124,9 +129,6 @@ var/global/list/obj/item/device/communicator/all_communicators = list() /obj/item/device/communicator/examine(mob/user) . = ..() - if(Adjacent(user) && video_source) - . += "It looks like it's on a video call: \[view\]" - for(var/mob/living/voice/voice in contents) . += "On the screen, you can see a image feed of [voice]." @@ -142,17 +144,6 @@ var/global/list/obj/item/device/communicator/all_communicators = list() else . += "The device doesn't appear to be transmitting any data." -// Proc: Topic() -// Parameters: href, href_list - Data from a link -// Description: Used by the above examine. -/obj/item/device/communicator/Topic(href, href_list) - if(..()) - return 1 - - if(href_list["watchvideo"]) - if(video_source) - watch_video(usr) - // Proc: emp_act() // Parameters: None // Description: Drops all calls when EMPed, so the holder can then get murdered by the antagonist. @@ -234,8 +225,6 @@ var/global/list/obj/item/device/communicator/all_communicators = list() alert_called = 0 update_icon() tgui_interact(user) - if(video_source) - watch_video(user) // Proc: MouseDrop() //Same thing PDAs do @@ -316,6 +305,11 @@ var/global/list/obj/item/device/communicator/all_communicators = list() QDEL_NULL(camera) QDEL_NULL(exonet) + last_camera_turf = null + qdel(cam_screen) + QDEL_LIST(cam_plane_masters) + qdel(cam_background) + return ..() // Proc: update_icon() diff --git a/code/game/objects/items/devices/communicator/phone.dm b/code/game/objects/items/devices/communicator/phone.dm index 7075dbe958..bb25dce953 100644 --- a/code/game/objects/items/devices/communicator/phone.dm +++ b/code/game/objects/items/devices/communicator/phone.dm @@ -332,12 +332,15 @@ if(video_source) //Already in a video to_chat(user, "You are already connected to a video call!") + return if(user.blinded) //User is blinded to_chat(user, "You cannot see well enough to do that!") + return if(!(src in comm.communicating) || !comm.camera) //You called someone with a broken communicator or one that's fake or yourself or something to_chat(user, "[bicon(src)]ERROR: Video failed. Either bandwidth is too low, or the other communicator is malfunctioning.") + return to_chat(user, "[bicon(src)] Attempting to start video over existing call.") sleep(30) @@ -345,42 +348,16 @@ video_source = comm.camera comm.visible_message("[bicon(src)] New video connection from [comm].") - watch_video(user) + update_active_camera_screen() + GLOB.moved_event.register(video_source, src, .proc/update_active_camera_screen) update_icon() -// Proc: watch_video() -// Parameters: user - the mob doing the viewing of video -// Description: Moves a mob's eye to the far end for the duration of viewing the far end -/obj/item/device/communicator/proc/watch_video(mob/user) - if(!Adjacent(user) || !video_source) return - user.set_machine(video_source) - user.reset_view(video_source) - to_chat(user, "Now viewing video session. To leave camera view, close the communicator window OR: OOC -> Cancel Camera View") - to_chat(user, "To return to an active video session, use the communicator in your hand.") - spawn(0) - while(user.machine == video_source && Adjacent(user)) - var/turf/T = get_turf(video_source) - if(!T || !is_on_same_plane_or_station(T.z, user.z) || !video_source.can_use()) - to_chat(user, "The screen bursts into static, then goes black.") - video_cleanup(user) - return - sleep(10) - - video_cleanup(user) - -// Proc: video_cleanup() -// Parameters: user - the mob who doesn't want to see video anymore -// Description: Cleans up mob's client when they stop watching a video -/obj/item/device/communicator/proc/video_cleanup(mob/user) - if(!user) return - - user.reset_view(null) - user.unset_machine() - // Proc: end_video() // Parameters: reason - the text reason to print for why it ended // Description: Ends the video call by clearing video_source /obj/item/device/communicator/proc/end_video(var/reason) + GLOB.moved_event.unregister(video_source, src, .proc/update_active_camera_screen) + show_static() video_source = null . = "[bicon(src)] [reason ? reason : "Video session ended"]." diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index d2511038dc..366853a7bf 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -297,7 +297,8 @@ var/global/list/default_medbay_channels = list( playsound(src, "button", 10) GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer) -/obj/item/device/radio/proc/autosay(var/message, var/from, var/channel, var/list/zlevels) //BS12 EDIT + +/obj/item/device/radio/proc/autosay(var/message, var/from, var/channel, var/list/zlevels) if(!GLOB.autospeaker) return var/datum/radio_frequency/connection = null @@ -308,7 +309,7 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer) else connection = radio_connection channel = null - if (!istype(connection)) + if(!istype(connection)) return if(!LAZYLEN(zlevels)) @@ -507,7 +508,7 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer) else if(adhoc_fallback) //Less huzzah, we have to fallback to_chat(loc, "\The [src] pings as it falls back to local radio transmission.") subspace_transmission = FALSE - + else //Oh well return FALSE @@ -594,7 +595,7 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer) /obj/item/device/radio/examine(mob/user) . = ..() - + if((in_range(src, user) || loc == user)) if(b_stat) . += "\The [src] can be attached and modified!" diff --git a/code/game/objects/items/pizza_voucher_vr.dm b/code/game/objects/items/pizza_voucher_vr.dm index 1d48bc9cda..4c968b55ac 100644 --- a/code/game/objects/items/pizza_voucher_vr.dm +++ b/code/game/objects/items/pizza_voucher_vr.dm @@ -8,6 +8,7 @@ w_class = ITEMSIZE_SMALL /obj/item/pizzavoucher/New() + ..() var/list/descstrings = list("24/7 PIZZA PIE HEAVEN", "WE ALWAYS DELIVER!", "24-HOUR PIZZA PIE POWER!", diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index f828b97b23..cd48a4a78a 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -77,7 +77,7 @@ /obj/item/weapon/lipstick/random, /obj/item/weapon/grenade/smokebomb, /obj/item/weapon/corncob, - /obj/item/weapon/contraband/poster, + /obj/item/weapon/contraband/poster/custom, /obj/item/weapon/book/manual/barman_recipes, /obj/item/weapon/book/manual/chef_recipes, /obj/item/weapon/bikehorn, diff --git a/code/game/objects/items/weapons/shields_vr.dm b/code/game/objects/items/weapons/shields_vr.dm index a9bce1d548..514ecd15c9 100644 --- a/code/game/objects/items/weapons/shields_vr.dm +++ b/code/game/objects/items/weapons/shields_vr.dm @@ -65,7 +65,6 @@ light_applied = 0 update_icon(user) user.update_action_buttons() - light = !light playsound(src, 'sound/weapons/empty.ogg', 15, 1, -3) /obj/item/weapon/shield/riot/explorer/update_icon() @@ -92,4 +91,4 @@ if(on) icon_state = "explorer_shield_P_lighted" else - icon_state = "explorer_shield_P" \ No newline at end of file + icon_state = "explorer_shield_P" diff --git a/code/game/objects/items/weapons/storage/egg_vr.dm b/code/game/objects/items/weapons/storage/egg_vr.dm index 0ea3b673e1..f7849040db 100644 --- a/code/game/objects/items/weapons/storage/egg_vr.dm +++ b/code/game/objects/items/weapons/storage/egg_vr.dm @@ -113,24 +113,44 @@ /obj/item/weapon/storage/vore_egg/synthetic name = "synthetic egg" - desc = "Can robots lay eggs?" + desc = "Smells like Easter morning." icon_state = "egg_synthetic" -/obj/item/weapon/storage/vore_egg/badrecipe - name = "Burned mess" - desc = "Someone didn't cook this egg quite right..." - icon_state = "egg_badrecipe" - /obj/item/weapon/storage/vore_egg/escapepod name = "small escape pod" desc = "Someone left in a hurry." icon_state = "egg_escapepod" +/obj/item/weapon/storage/vore_egg/floppy + name = "blue space floppy disc" + desc = "Probably shouldn't copy THIS floppy." + icon_state = "egg_floppy" + +/obj/item/weapon/storage/vore_egg/cd + name = "blue space cd" + desc = "What could even be on this?!" + icon_state = "egg_cd" + +/obj/item/weapon/storage/vore_egg/file + name = "blue space file" + desc = "Gotta wonder how much is compressed in there." + icon_state = "egg_file" + +/obj/item/weapon/storage/vore_egg/badrecipe + name = "Burned mess" + desc = "Someone didn't cook this egg quite right..." + icon_state = "egg_badrecipe" + /obj/item/weapon/storage/vore_egg/cocoon name = "web cocoon" desc = "It straight up smells like spiders in here." icon_state = "egg_cocoon" +/obj/item/weapon/storage/vore_egg/honeycomb + name = "honeycomb" + desc = "Smells delicious!" + icon_state = "egg_honeycomb" + /obj/item/weapon/storage/vore_egg/bugcocoon name = "bug cocoon" desc = "Metamorphosis!" diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm index 13568c27e6..fdc84aa3c4 100644 --- a/code/game/objects/random/misc.dm +++ b/code/game/objects/random/misc.dm @@ -262,7 +262,7 @@ prob(8);/obj/item/weapon/haircomb, prob(4);/obj/item/weapon/storage/pill_bottle/happy, prob(4);/obj/item/weapon/storage/pill_bottle/zoom, - prob(10);/obj/item/weapon/contraband/poster, + prob(10);/obj/item/weapon/contraband/poster/custom, prob(4);/obj/item/weapon/material/butterfly, prob(6);/obj/item/weapon/material/butterflyblade, prob(6);/obj/item/weapon/material/butterflyhandle, diff --git a/code/game/objects/structures/ghost_pods/ghost_pods_vr.dm b/code/game/objects/structures/ghost_pods/ghost_pods_vr.dm index 2d8f8198c5..08cb7c78ba 100644 --- a/code/game/objects/structures/ghost_pods/ghost_pods_vr.dm +++ b/code/game/objects/structures/ghost_pods/ghost_pods_vr.dm @@ -45,5 +45,5 @@ trigger() /obj/structure/ghost_pod/ghost_activated/Initialize() - ..() + . = ..() ghostpod_startup(spawn_active) \ No newline at end of file diff --git a/code/game/objects/structures/loot_piles.dm b/code/game/objects/structures/loot_piles.dm index 57c9832fde..12f6f45282 100644 --- a/code/game/objects/structures/loot_piles.dm +++ b/code/game/objects/structures/loot_piles.dm @@ -254,8 +254,8 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh /obj/item/stack/material/steel{amount = 5}, /obj/item/stack/material/cardboard{amount = 5}, /obj/item/weapon/contraband/poster, + /obj/item/weapon/contraband/poster/custom, /obj/item/weapon/material/wirerod, - /obj/item/weapon/contraband/poster, /obj/item/weapon/newspaper, /obj/item/weapon/paper/crumpled, /obj/item/weapon/paper/crumpled/bloody diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index f93ceaf0a1..78384b0285 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -321,73 +321,344 @@ desc = "A warning sign which reads XENOBIOLOGY." icon_state = "xenobio3" +//direction signs presented by the order they appear in the dmi /obj/structure/sign/directions name = "direction sign" - desc = "A direction sign, claiming to know the way." + desc = "A direction sign, claiming to know the way to... somewhere?" icon_state = "direction" + icon = 'icons/obj/decals_directions.dmi' + //TODO: set up overlay systems, inc. interactions (e.g. vines clear w/ plantbgone or fire, snow can be brushed off or melted, and so on) +//disabled this proc, it serves no purpose except to overwrite the description that already exists. may have been intended for making your own signs? +//seems to defeat the point of having a generic directional sign that mappers could edit and use in POIs? left it here in case something breaks. +/* /obj/structure/sign/directions/New() ..() - desc = "A direction sign, pointing out which way \the [src] is." - -/obj/structure/sign/directions/science - name = "\improper Science department" - desc = "A direction sign, pointing out which way the Science department is." - icon_state = "direction_sci" + desc = "A direction sign, pointing out the way to \the [src]." +*/ +//engineering signs /obj/structure/sign/directions/engineering - name = "\improper Engineering department" - desc = "A direction sign, pointing out which way the Engineering department is." + name = "\improper Engineering Department" + desc = "A direction sign, pointing out the way to the Engineering Department." icon_state = "direction_eng" +/obj/structure/sign/directions/engineering/reactor + name = "\improper Reactor" + desc = "A direction sign, pointing out the way to the Reactor." + icon_state = "direction_core" + +/obj/structure/sign/directions/engineering/solars + name = "\improper Solar Array" + desc = "A direction sign, pointing out the way to the nearest Solar Array." + icon_state = "direction_solar" + +/obj/structure/sign/directions/engineering/atmospherics + name = "\improper Atmospherics Department" + desc = "A direction sign, pointing out the way to the Atmospherics Department." + icon_state = "direction_atmos" + +/obj/structure/sign/directions/engineering/gravgen + name = "\improper Gravity Generator" + desc = "A direction sign, pointing out the way to the Artificial Gravity Generator." + icon_state = "direction_grav" + +/obj/structure/sign/directions/engineering/engeqp + name = "\improper Engineering Equipment Storage" + desc = "A direction sign, pointing out the way to Engineering Equipment Storage." + icon_state = "direction_engeqp" + +//security signs /obj/structure/sign/directions/security - name = "\improper Security department" - desc = "A direction sign, pointing out which way the Security department is." + name = "\improper Security Department" + desc = "A direction sign, pointing out the way to the Security Department." icon_state = "direction_sec" +/obj/structure/sign/directions/security/armory + name = "\improper Armory" + desc = "A direction sign, pointing out the way to the Armory." + icon_state = "direction_armory" + +/obj/structure/sign/directions/security/brig + name = "\improper Brig" + desc = "A direction sign, pointing out the way to the Brig." + icon_state = "direction_brig" + +/obj/structure/sign/directions/security/seceqp + name = "\improper Security Equipment Storage" + desc = "A direction sign, pointing out the way to Security Equipment Storage." + icon_state = "direction_seceqp" + +/obj/structure/sign/directions/security/internal_affairs + name = "\improper Internal Affairs Office" + desc = "A direction sign, pointing out the way to the Internal Affairs Office." + icon_state = "direction_intaff" + +/obj/structure/sign/directions/security/forensics + name = "\improper Forensics Lab" + desc = "A direction sign, pointing out the way to the Forensics Lab." + icon_state = "direction_forensics" + +/obj/structure/sign/directions/security/forensics/alt + icon_state = "direction_lab" + +/obj/structure/sign/directions/security/interrogation + name = "\improper Interrogations" + desc = "A direction sign, pointing out the way to Interrogations." + icon_state = "direction_interrogation" + +//science signs +/obj/structure/sign/directions/science + name = "\improper Science Department" + desc = "A direction sign, pointing out the way to the Science Department." + icon_state = "direction_sci" + +/obj/structure/sign/directions/science/rnd + name = "\improper Research & Development" + desc = "A direction sign, pointing out the way to Research & Development." + icon_state = "direction_rnd" + +/obj/structure/sign/directions/science/toxins + name = "\improper Toxins Lab" + desc = "A direction sign, pointing out the way to the Toxins Lab." + icon_state = "direction_sci" + +/obj/structure/sign/directions/science/robotics + name = "\improper Robotics Workshop" + desc = "A direction sign, pointing out the way to the Robotics Workshop." + icon_state = "direction_robotics" + +/obj/structure/sign/directions/science/xenoarch + name = "\improper Xenoarchaeology Lab" + desc = "A direction sign, pointing out the way to the Xenoarchaeology Lab." + icon_state = "direction_xenoarch" + +/obj/structure/sign/directions/science/xenobiology + name = "\improper Xenobiology Lab" + desc = "A direction sign, pointing out the way to the Xenobiology Lab." + icon_state = "direction_xbio" + +/obj/structure/sign/directions/science/xenoflora + name = "\improper Xenoflora Lab" + desc = "A direction sign, pointing out the way to the Xenoflora Lab." + icon_state = "direction_xflora" + +/obj/structure/sign/directions/science/exploration + name = "\improper Exploration Department" + desc = "A direction sign, pointing out the way to the Exploration Department." + icon_state = "direction_explo" + +//medical signs /obj/structure/sign/directions/medical name = "\improper Medical Bay" - desc = "A direction sign, pointing out which way the Medical Bay is." + desc = "A direction sign, pointing out the way to the Medical Bay." icon_state = "direction_med" +/obj/structure/sign/directions/medical/chemlab + name = "\improper Chemistry Lab" + desc = "A direction sign, pointing out the way to the Chemistry Lab." + icon_state = "direction_med" + +/obj/structure/sign/directions/medical/surgery + name = "\improper Surgery" + desc = "A direction sign, pointing out the way to Surgery." + icon_state = "direction_surgery" + +/obj/structure/sign/directions/medical/operating_1 + name = "\improper Operating Theatre 1" + desc = "A direction sign, pointing out the way to Operating Theatre 1." + icon_state = "direction_op1" + +/obj/structure/sign/directions/medical/operating_2 + name = "\improper Operating Theatre 2" + desc = "A direction sign, pointing out the way to Operating Theatre 2." + icon_state = "direction_op2" + +/obj/structure/sign/directions/medical/virology + name = "\improper Virology" + desc = "A direction sign, pointing out the way to the Virology Lab." + icon_state = "direction_viro" + +/obj/structure/sign/directions/medical/medeqp + name = "\improper Medical Equipment Storage" + desc = "A direction sign, pointing out the way to Medical Equipment Storage." + icon_state = "direction_medeqp" + +/obj/structure/sign/directions/medical/morgue + name = "\improper Morgue" + desc = "A direction sign, pointing out the way to the Morgue." + icon_state = "direction_morgue" + +/obj/structure/sign/directions/medical/cloning + name = "\improper Cloning Lab" + desc = "A direction sign, pointing out the way to the Cloning Lab." + icon_state = "direction_cloning" + +/obj/structure/sign/directions/medical/resleeving + name = "\improper Resleeving Lab" + desc = "A direction sign, pointing out the way to the Resleeving Lab." + icon_state = "direction_resleeve" + +//special signs /obj/structure/sign/directions/evac name = "\improper Evacuation" - desc = "A direction sign, pointing out which way the Escape Shuttle dock is." + desc = "A direction sign, pointing out the way to the Escape Shuttle Dock." icon_state = "direction_evac" +/obj/structure/sign/directions/eva + name = "\improper Extra-Vehicular Activity" + desc = "A direction sign, pointing out the way to the EVA Bay." + icon_state = "direction_eva" + +//command signs +/obj/structure/sign/directions/ai_core + name = "\improper AI Core" + desc = "A direction sign, pointing out the way to the AI Core." + icon_state = "direction_ai_core" + /obj/structure/sign/directions/bridge name = "\improper Bridge" + desc = "A direction sign, pointing out the way to the Bridge." icon_state = "direction_bridge" +/obj/structure/sign/directions/command + name = "\improper Command" + desc = "A direction sign, pointing out the way to the Command Center." + icon_state = "direction_command" + +/obj/structure/sign/directions/teleporter + name = "\improper Teleporter" + desc = "A direction sign, pointing out the way to the Teleporter." + icon_state = "direction_teleport" + +/obj/structure/sign/directions/telecomms + name = "\improper Telecommunications Hub" + desc = "A direction sign, pointing out the way to the Telecommunications Hub." + icon_state = "direction_tcomms" + +//cargonia signs /obj/structure/sign/directions/cargo - name = "\improper Cargo department" - desc = "A direction sign, pointing out which way the Cargo department is." + name = "\improper Cargo Department" + desc = "A direction sign, pointing out the way to the Cargo Department." icon_state = "direction_crg" -// VOREStation Edit - New signs for us -/obj/structure/sign/directions/command - icon = 'icons/obj/decals_vr.dmi' - name = "\improper Command department" - desc = "A direction sign, pointing out which way the Command department is." - icon_state = "direction_cmd" +/obj/structure/sign/directions/cargo/mining + name = "\improper Mining Department" + desc = "A direction sign, pointing out the way to the Mining Department." + icon_state = "direction_mining" -/obj/structure/sign/directions/elevator - icon = 'icons/obj/decals_vr.dmi' - name = "\improper Space Elevator" - desc = "A direction sign, pointing out which way the Space Elevator is." - icon_state = "direction_elv" -// VOREStation Edit End - -/obj/structure/sign/directions/cryo - name = "\improper Cryogenic Storage" - desc = "A direction sign, pointing out which way cryogenic storage is." - icon_state = "direction_cry" +/obj/structure/sign/directions/cargo/refinery + name = "\improper Refinery" + desc = "A direction sign, pointing out the way to the Refinery." + icon_state = "direction_refinery" +//civilian/misc signs /obj/structure/sign/directions/roomnum name = "room number" desc = "A sign detailing the number of the room beside it." icon_state = "roomnum" +/obj/structure/sign/directions/cryo + name = "\improper Cryogenic Storage" + desc = "A direction sign, pointing out the way to Cryogenic Storage." + icon_state = "direction_cry" + +/obj/structure/sign/directions/elevator + name = "\improper Elevator" + desc = "A direction sign, pointing out the way to the nearest elevator." + icon_state = "direction_elv" + +/obj/structure/sign/directions/bar + name = "\improper Bar" + desc = "A direction sign, pointing out the way to the nearest watering hole." + icon_state = "direction_bar" + +/obj/structure/sign/directions/kitchen + name = "\improper Kitchen" + desc = "A pictographic direction sign with a knife, plate, and fork, pointing out the way to the nearest dining establishment." + icon_state = "direction_kitchen" + +/obj/structure/sign/directions/tram + name = "\improper Public Transit Station" + desc = "A direction sign, pointing out the way to the nearest public transit station." + icon_state = "direction_tram" + +/obj/structure/sign/directions/janitor + name = "\improper Custodial Closet" + desc = "A direction sign, pointing out the way to the Custodial Closet." + icon_state = "direction_janitor" + +/obj/structure/sign/directions/chapel + name = "\improper Chapel" + desc = "A direction sign, pointing out the way to the Chapel." + icon_state = "direction_chapel" + +/obj/structure/sign/directions/dorms + name = "\improper Dormitories" + desc = "A direction sign, pointing out the way to the Dormitories." + icon_state = "direction_dorms" + +/obj/structure/sign/directions/library + name = "\improper Library" + desc = "A direction sign, pointing out the way to the Library." + icon_state = "direction_library" + +/obj/structure/sign/directions/dock + name = "\improper Dock" + desc = "A direction sign, pointing out the way to the nearest docking area." + icon_state = "direction_dock" + +/obj/structure/sign/directions/gym + name = "\improper Gym" + desc = "A direction sign, pointing out the way to the Gym." + icon_state = "direction_gym" + +/obj/structure/sign/directions/pool + name = "\improper Pool" + desc = "A direction sign, pointing out the way to the Pool." + icon_state = "direction_pool" + +/obj/structure/sign/directions/recreation + name = "\improper Recreation Area" + desc = "A direction sign, pointing out the way to the nearest Recreation Area." + icon_state = "direction_recreation" + +/obj/structure/sign/directions/stairwell + name = "\improper Stairwell" + desc = "A direction sign with stairs and a door, pointing out the way to the nearest stairwell." + icon_state = "stairwell" + +/obj/structure/sign/directions/stairs_up + name = "\improper Stairs Up" + desc = "A direction sign with stairs and an upward-slanted arrow, pointing out the way to the nearest set of stairs that go up." + icon_state = "stairs_up" + +/obj/structure/sign/directions/stairs_down + name = "\improper Stairs Down" + desc = "A direction sign with stairs and a downward-slanted arrow, pointing out the way to the nearest set of stairs that go down." + icon_state = "stairs_down" + +/obj/structure/sign/directions/ladderwell + name = "\improper Access Shaft" + desc = "A direction sign with a ladder and a door, pointing out the way to the nearest access shaft." + icon_state = "ladderwell" + +/obj/structure/sign/directions/ladder_up + name = "\improper Ladder Up" + desc = "A direction sign with a ladder and an upward arrow, pointing out the way to the nearest ladder that goes up." + icon_state = "ladder_up" + +/obj/structure/sign/directions/ladder_down + name = "\improper Ladder Down" + desc = "A direction sign with a ladder and a downward arrow, pointing out the way to the nearest ladder that goes down." + icon_state = "ladder_down" + +/obj/structure/sign/directions/exit + name = "\improper Emergency Exit" + desc = "A lurid green sign that unmistakably identifies that the door it's next to as an emergency exit route." + icon_state = "exit_sign" + +//OTHER STUFF /obj/structure/sign/christmas/lights name = "Christmas lights" desc = "Flashy and pretty." diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index a7037105d2..282a10f9e0 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -215,82 +215,14 @@ L.fire_stacks = -20 //Douse ourselves with water to avoid fire more easily if(iscarbon(O)) - var/mob/living/carbon/M = O - if(M.r_hand) - M.r_hand.clean_blood() - if(M.l_hand) - M.l_hand.clean_blood() - if(M.back) - if(M.back.clean_blood()) - M.update_inv_back(0) - //flush away reagents on the skin + var/mob/living/carbon/M = O if(M.touching) var/remove_amount = M.touching.maximum_volume * M.reagent_permeability() //take off your suit first M.touching.remove_any(remove_amount) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/washgloves = 1 - var/washshoes = 1 - var/washmask = 1 - var/washears = 1 - var/washglasses = 1 - - if(H.wear_suit) - washgloves = !(H.wear_suit.flags_inv & HIDEGLOVES) - washshoes = !(H.wear_suit.flags_inv & HIDESHOES) - - if(H.head) - washmask = !(H.head.flags_inv & HIDEMASK) - washglasses = !(H.head.flags_inv & HIDEEYES) - washears = !(H.head.flags_inv & HIDEEARS) - - if(H.wear_mask) - if (washears) - washears = !(H.wear_mask.flags_inv & HIDEEARS) - if (washglasses) - washglasses = !(H.wear_mask.flags_inv & HIDEEYES) - - if(H.head) - if(H.head.clean_blood()) - H.update_inv_head(0) - if(H.wear_suit) - if(H.wear_suit.clean_blood()) - H.update_inv_wear_suit(0) - else if(H.w_uniform) - if(H.w_uniform.clean_blood()) - H.update_inv_w_uniform(0) - if(H.gloves && washgloves) - if(H.gloves.clean_blood()) - H.update_inv_gloves(0) - if(H.shoes && washshoes) - if(H.shoes.clean_blood()) - H.update_inv_shoes(0) - if(H.wear_mask && washmask) - if(H.wear_mask.clean_blood()) - H.update_inv_wear_mask(0) - if(H.glasses && washglasses) - if(H.glasses.clean_blood()) - H.update_inv_glasses(0) - if(H.l_ear && washears) - if(H.l_ear.clean_blood()) - H.update_inv_ears(0) - if(H.r_ear && washears) - if(H.r_ear.clean_blood()) - H.update_inv_ears(0) - if(H.belt) - if(H.belt.clean_blood()) - H.update_inv_belt(0) - H.clean_blood(washshoes) - else - if(M.wear_mask) //if the mob is not human, it cleans the mask without asking for bitflags - if(M.wear_mask.clean_blood()) - M.update_inv_wear_mask(0) - M.clean_blood() - else - O.clean_blood() - + M.clean_blood() + if(isturf(loc)) var/turf/tile = loc for(var/obj/effect/E in tile) diff --git a/code/game/objects/structures/watercloset_vr.dm b/code/game/objects/structures/watercloset_vr.dm new file mode 100644 index 0000000000..7e8790fbcc --- /dev/null +++ b/code/game/objects/structures/watercloset_vr.dm @@ -0,0 +1,41 @@ +//Flushable toilets on station levels. Flushing sends stuff directly to a trashpit landmark without stinking up the cargo office. +//Only on-station toilets are affected and only if the trashpit landmark also exists. Otherwise toilets will stay normal. + +/obj/structure/toilet + var/teleplumbed = FALSE + var/exit_landmark + +/obj/structure/toilet/Initialize() + if(z in global.using_map.map_levels) + teleplumbed = TRUE + exit_landmark = locate(/obj/effect/landmark/teleplumb_exit) + if(teleplumbed && exit_landmark) + desc = "The BS-500, a bluespace rift-rotation-based waste disposal unit for small matter. This one seems remarkably clean." + return ..() + +/obj/structure/toilet/attack_hand(mob/living/user as mob) + if(open && teleplumbed && exit_landmark) + var/list/bowl_contents = list() + for(var/obj/item/I in loc.contents) + if(istype(I) && !I.anchored) + bowl_contents += I + if(bowl_contents.len) + user.visible_message("[user] flushes the toilet.", "You flush the toilet.") + playsound(src, 'sound/vore/death7.ogg', 50, 1) //Got lazy about getting new sound files. Have a sick remix lmao. + playsound(src, 'sound/effects/bubbles.ogg', 50, 1) + playsound(src, 'sound/mecha/powerup.ogg', 30, 1) + for(var/obj/item/F in bowl_contents) + F.forceMove(get_turf(exit_landmark)) + bowl_contents -= F + return + return ..() + +/obj/structure/toilet/attack_ai(mob/user as mob) + if(isrobot(user)) + if(user.client && user.client.eye == user) + return attack_hand(user) + else + return attack_hand(user) + +/obj/effect/landmark/teleplumb_exit + name = "teleplumbing exit" diff --git a/code/game/verbs/character_directory.dm b/code/game/verbs/character_directory.dm index 99f95700b8..13d0120123 100644 --- a/code/game/verbs/character_directory.dm +++ b/code/game/verbs/character_directory.dm @@ -1,61 +1,130 @@ +GLOBAL_DATUM(character_directory, /datum/character_directory) + /client/verb/show_character_directory() set name = "Character Directory" set category = "OOC" set desc = "Shows a listing of all active characters, along with their associated OOC notes, flavor text, and more." - if(mob.next_move >= world.time) //This is primarily to stop malicious users from trying to lag the server by spamming this verb + // This is primarily to stop malicious users from trying to lag the server by spamming this verb + if(!usr.checkMoveCooldown()) + to_chat(usr, "Don't spam character directory refresh.") return + usr.setMoveCooldown(10) - mob.next_move = world.time + 10 + if(!GLOB.character_directory) + GLOB.character_directory = new + GLOB.character_directory.tgui_interact(mob) - var/html = "" - var/curID = 0 +// This is a global singleton. Keep in mind that all operations should occur on usr, not src. +/datum/character_directory +/datum/character_directory/tgui_state(mob/user) + return GLOB.tgui_always_state + +/datum/character_directory/tgui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "CharacterDirectory", "Character Directory") + ui.open() + +/datum/character_directory/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state) + var/list/data = ..() + + data["personalVisibility"] = user?.client?.prefs?.show_in_directory + data["personalTag"] = user?.client?.prefs?.directory_tag + + return data + +/datum/character_directory/tgui_static_data(mob/user, datum/tgui/ui, datum/tgui_state/state) + var/list/data = ..() + + var/list/directory_mobs = list() for(var/client/C in GLOB.clients) - if(C.prefs && !C.prefs.show_in_directory) + // Allow opt-out. + if(!C?.prefs?.show_in_directory) continue + + // These are the three vars we're trying to find + // The approach differs based on the mob the client is controlling + var/name = null + var/ooc_notes = null + var/flavor_text = null + var/tag = C.prefs.directory_tag + var/character_ad = C.prefs.directory_ad + if(ishuman(C.mob)) var/mob/living/carbon/human/H = C.mob if(data_core && data_core.general) if(!find_general_record("name", H.real_name)) if(!find_record("name", H.real_name, data_core.hidden_general)) continue - curID++ - html += "
" - html += "

[H.real_name]


" - if(H.flavor_texts["general"]) - html += "Flavor text" - html += "" - if(H.ooc_notes) - html += "OOC notes" - html += "" - html += "
" + name = H.real_name + ooc_notes = H.ooc_notes + flavor_text = H.flavor_texts["general"] + if(isAI(C.mob)) var/mob/living/silicon/ai/A = C.mob - curID++ - html += "
" - html += "

[A.name] (Artificial Intelligence)


" - if(A.ooc_notes) - html += "OOC notes" - html += "" - html += "
" + name = "[A.name] (Artificial Intelligence)" + ooc_notes = A.ooc_notes + flavor_text = null // No flavor text for AIs :c + if(isrobot(C.mob)) var/mob/living/silicon/robot/R = C.mob if(R.scrambledcodes || (R.module && R.module.hide_on_manifest)) continue - curID++ - html += "
" - html += "

[R.name] ([R.modtype] [R.braintype])


" - if(R.flavor_text) - html += "Flavor text" - html += "" - if(R.ooc_notes) - html += "OOC notes" - html += "" - html += "
" - if(!curID) - html += "

404: Station not found

" + name = "[R.name] ([R.modtype] [R.braintype])" + ooc_notes = R.ooc_notes + flavor_text = R.flavor_text - var/datum/browser/popup = new(mob, "chardir", "Character Directory", 640, 480) - popup.set_content(html) - popup.open() + // It's okay if we fail to find OOC notes and flavor text + // But if we can't find the name, they must be using a non-compatible mob type currently. + if(!name) + continue + + directory_mobs.Add(list(list( + "name" = name, + "ooc_notes" = ooc_notes, + "tag" = tag, + "character_ad" = character_ad, + "flavor_text" = flavor_text, + ))) + + data["directory"] = directory_mobs + + return data + + +/datum/character_directory/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) + . = ..() + if(.) + return + + switch(action) + if("refresh") + // This is primarily to stop malicious users from trying to lag the server by spamming this verb + if(!usr.checkMoveCooldown()) + to_chat(usr, "Don't spam character directory refresh.") + return + usr.setMoveCooldown(10) + update_tgui_static_data(usr, ui) + return TRUE + if("setTag") + var/list/new_tag = input(usr, "Pick a new tag for the character directory", "Character Tag", usr?.client?.prefs?.directory_tag) as null|anything in GLOB.char_directory_tags + if(!new_tag) + return + usr?.client?.prefs?.directory_tag = new_tag + return TRUE + if("setVisible") + usr?.client?.prefs?.show_in_directory = !usr?.client?.prefs?.show_in_directory + to_chat(usr, "You are now [usr.client.prefs.show_in_directory ? "shown" : "not shown"] in the directory.") + return TRUE + if("editAd") + if(!usr?.client?.prefs) + return + + var/current_ad = usr.client.prefs.directory_ad + var/new_ad = sanitize(input(usr, "Change your character ad", "Character Ad", current_ad) as message|null, extra = 0) + if(isnull(new_ad)) + return + usr.client.prefs.directory_ad = new_ad + return TRUE \ No newline at end of file diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 3d169758f5..1a9bb0cdc5 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -948,7 +948,7 @@ var/datum/announcement/minor/admin_min_announcer = new log_admin("[key_name(usr)] toggled persistence to [config.persistence_disabled ? "Off" : "On"].") world.update_status() feedback_add_details("admin_verb","TPD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - + /datum/admins/proc/togglemaploadpersistence() set category = "Server" set desc="Whether mapload persistent data will be saved from now on." diff --git a/code/modules/admin/admin_verb_lists.dm b/code/modules/admin/admin_verb_lists.dm index a33611b459..501132ac91 100644 --- a/code/modules/admin/admin_verb_lists.dm +++ b/code/modules/admin/admin_verb_lists.dm @@ -60,6 +60,7 @@ var/list/admin_verbs_admin = list( /client/proc/check_ai_laws, //shows AI and borg laws, /client/proc/rename_silicon, //properly renames silicons, /client/proc/manage_silicon_laws, // Allows viewing and editing silicon laws. , + /client/proc/shuttle_panel, // Allows controlling all shuttles remotely. /client/proc/check_antagonists, /client/proc/admin_memo, //admin memo system. show/delete/write. +SERVER needed to delete admin memos of others, /client/proc/dsay, //talk in deadchat using our ckey/fakekey, @@ -452,6 +453,7 @@ var/list/admin_verbs_event_manager = list( /client/proc/check_ai_laws, //shows AI and borg laws, /client/proc/rename_silicon, //properly renames silicons, /client/proc/manage_silicon_laws, // Allows viewing and editing silicon laws. , + /client/proc/shuttle_panel, // Allows controlling all shuttles remotely. /client/proc/check_antagonists, /client/proc/admin_memo, //admin memo system. show/delete/write. +SERVER needed to delete admin memos of others, /client/proc/dsay, //talk in deadchat using our ckey/fakekey, diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 6635b07061..d8deb0dce6 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -437,6 +437,17 @@ set_security_level(sec_level) log_admin("[key_name(usr)] changed the security level to code [sec_level].") +/client/proc/shuttle_panel() + set name = "Shuttle Control Panel" + set category = "Admin" + + if(!check_rights(R_ADMIN | R_EVENT)) + return + + var/datum/tgui_module/admin_shuttle_controller/A = new(src) + A.tgui_interact(usr) + log_and_message_admins("has opened the shuttle panel.") + feedback_add_details("admin_verb","SHCP") //---- bs12 verbs ---- @@ -525,4 +536,4 @@ T.spell_list += new S feedback_add_details("admin_verb","GS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] gave [key_name(T)] the spell [S].") - message_admins("[key_name_admin(usr)] gave [key_name(T)] the spell [S].", 1) + message_admins("[key_name_admin(usr)] gave [key_name(T)] the spell [S].", 1) \ No newline at end of file diff --git a/code/modules/admin/verbs/change_appearance.dm b/code/modules/admin/verbs/change_appearance.dm index 2f7166a2c0..94c5170347 100644 --- a/code/modules/admin/verbs/change_appearance.dm +++ b/code/modules/admin/verbs/change_appearance.dm @@ -92,15 +92,7 @@ var/new_gender = alert(usr, "Please select gender.", "Character Generation", "Male", "Female", "Neuter") if (new_gender) - if(new_gender == "Male") - M.gender = MALE - M.dna.SetUIState(DNA_UI_GENDER, FALSE) - else if (new_gender == "Female") - M.gender = FEMALE - M.dna.SetUIState(DNA_UI_GENDER, TRUE) - else - M.gender = NEUTER - M.dna.SetUIState(DNA_UI_GENDER, FALSE) + M.set_gender(new_gender) M.update_dna(M) M.update_hair(FALSE) diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index 6c59499b53..d3d8ec086e 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -157,6 +157,29 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O character.g_synth = pref.g_synth character.b_synth = pref.b_synth character.synth_markings = pref.synth_markings + character.ear_style = ear_styles_list[pref.ear_style] + character.r_ears = pref.r_ears + character.b_ears = pref.b_ears + character.g_ears = pref.g_ears + character.r_ears2 = pref.r_ears2 + character.b_ears2 = pref.b_ears2 + character.g_ears2 = pref.g_ears2 + character.tail_style = tail_styles_list[pref.tail_style] + character.r_tail = pref.r_tail + character.b_tail = pref.b_tail + character.g_tail = pref.g_tail + character.r_tail2 = pref.r_tail2 + character.b_tail2 = pref.b_tail2 + character.g_tail2 = pref.g_tail2 + character.wing_style = wing_styles_list[pref.wing_style] + character.r_wing = pref.r_wing + character.b_wing = pref.b_wing + character.g_wing = pref.g_wing + character.r_wing2 = pref.r_wing2 + character.b_wing2 = pref.b_wing2 + character.g_wing2 = pref.g_wing2 + character.set_gender( pref.biological_gender) + if(pref.species == "Grey")//YWadd START character.wingdings = pref.wingdings @@ -171,7 +194,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O if(pref.haemophilia == 1) character.add_modifier(/datum/modifier/trait/haemophilia) - //YWadd END + //YWadd END // Destroy/cyborgize organs and limbs. for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO)) diff --git a/code/modules/client/preference_setup/loadout/loadout_head.dm b/code/modules/client/preference_setup/loadout/loadout_head.dm index 14f78b6e91..31bd79b6b9 100644 --- a/code/modules/client/preference_setup/loadout/loadout_head.dm +++ b/code/modules/client/preference_setup/loadout/loadout_head.dm @@ -88,6 +88,11 @@ display_name = "cap, grey" path = /obj/item/clothing/head/soft/grey +/datum/gear/head/cap/med + display_name = "cap, medical (Medical)" + path = /obj/item/clothing/head/soft/med + allowed_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Psychiatrist","Paramedic","Search and Rescue") + /datum/gear/head/cap/orange display_name = "cap, orange" path = /obj/item/clothing/head/soft/orange diff --git a/code/modules/client/preference_setup/vore/09_misc.dm b/code/modules/client/preference_setup/vore/09_misc.dm index 2911c8a10d..7f868e7286 100644 --- a/code/modules/client/preference_setup/vore/09_misc.dm +++ b/code/modules/client/preference_setup/vore/09_misc.dm @@ -6,10 +6,14 @@ /datum/category_item/player_setup_item/vore/misc/load_character(var/savefile/S) S["show_in_directory"] >> pref.show_in_directory + S["directory_tag"] >> pref.directory_tag + S["directory_ad"] >> pref.directory_ad S["sensorpref"] >> pref.sensorpref //TFF 5/8/19 - add sensor pref setting to load after saved /datum/category_item/player_setup_item/vore/misc/save_character(var/savefile/S) S["show_in_directory"] << pref.show_in_directory + S["directory_tag"] << pref.directory_tag + S["directory_ad"] << pref.directory_ad S["sensorpref"] << pref.sensorpref //TFF 5/8/19 - add sensor pref setting to be saveable //TFF 5/8/19 - add new datum category to allow for setting multiple settings when this is selected in the loadout. @@ -20,17 +24,30 @@ /datum/category_item/player_setup_item/vore/misc/sanitize_character() pref.show_in_directory = sanitize_integer(pref.show_in_directory, 0, 1, initial(pref.show_in_directory)) + pref.directory_tag = sanitize_inlist(pref.directory_tag, GLOB.char_directory_tags, initial(pref.directory_tag)) pref.sensorpref = sanitize_integer(pref.sensorpref, 1, sensorpreflist.len, initial(pref.sensorpref)) //TFF - 5/8/19 - add santisation for sensor prefs /datum/category_item/player_setup_item/vore/misc/content(var/mob/user) . += "
" . += "Appear in Character Directory: [pref.show_in_directory ? "Yes" : "No"]
" + . += "Character Directory Tag: [pref.directory_tag]
" + . += "Character Directory Advertisement: Set Directory Ad
" . += "Suit Sensors Preference: [sensorpreflist[pref.sensorpref]]
" //TFF 5/8/19 - Allow selection of sensor settings from off, binary, vitals, tracking, or random /datum/category_item/player_setup_item/vore/misc/OnTopic(var/href, var/list/href_list, var/mob/user) if(href_list["toggle_show_in_directory"]) pref.show_in_directory = pref.show_in_directory ? 0 : 1; return TOPIC_REFRESH + else if(href_list["directory_tag"]) + var/new_tag = input(user, "Pick a new tag for the character directory", "Character Tag", pref.directory_tag) as null|anything in GLOB.char_directory_tags + if(!new_tag) + return + pref.directory_tag = new_tag + return TOPIC_REFRESH + else if(href_list["directory_ad"]) + var/msg = sanitize(input(user,"Write your advertisement here!", "Flavor Text", html_decode(pref.directory_ad)) as message, extra = 0) //VOREStation Edit: separating out OOC notes + pref.directory_ad = msg + return TOPIC_REFRESH //TFF 5/8/19 - add new thing so you can choose the sensor setting your character can get. else if(href_list["toggle_sensor_setting"]) var/new_sensorpref = input(user, "Choose your character's sensor preferences:", "Character Preferences", sensorpreflist[pref.sensorpref]) as null|anything in sensorpreflist diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 741033824d..179245a44f 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -83,11 +83,11 @@ datum/preferences //Mob preview var/list/char_render_holders //Should only be a key-value list of north/south/east/west = obj/screen. var/static/list/preview_screen_locs = list( - "1" = "character_preview_map:1,5:-12", - "2" = "character_preview_map:1,3:15", - "4" = "character_preview_map:1:7,2:10", - "8" = "character_preview_map:1:-7,1:5", - "BG" = "character_preview_map:1,1 to 1,5" + "1" = "character_preview_map:2,7", + "2" = "character_preview_map:2,5", + "4" = "character_preview_map:2,3", + "8" = "character_preview_map:2,1", + "BG" = "character_preview_map:1,1 to 3,8" ) //Jobs, uses bitflags @@ -281,7 +281,7 @@ datum/preferences if(!BG) BG = new BG.plane = TURF_PLANE - BG.icon = 'icons/effects/128x48.dmi' + BG.icon = 'icons/effects/setup_backgrounds_vr.dmi' BG.pref = src LAZYSET(char_render_holders, "BG", BG) client.screen |= BG diff --git a/code/modules/client/preferences_vr.dm b/code/modules/client/preferences_vr.dm index 4cb6695985..137e7af82c 100644 --- a/code/modules/client/preferences_vr.dm +++ b/code/modules/client/preferences_vr.dm @@ -1,5 +1,7 @@ /datum/preferences var/show_in_directory = 1 //Show in Character Directory + var/directory_tag = "Unset" //Sorting tag to use in character directory + var/directory_ad = "" //Advertisement stuff to show in character directory. var/sensorpref = 5 //Set character's suit sensor level var/job_talon_high = 0 var/job_talon_med = 0 diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 4b230053d9..1b03300ddd 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -38,7 +38,7 @@ // Aurora forensics port. /obj/item/clothing/clean_blood() - ..() + . = ..() gunshot_residue = null @@ -55,6 +55,12 @@ verbs |= /obj/item/clothing/proc/change_color //VOREStation edit start +/obj/item/clothing/update_icon() + overlays.Cut() //This removes all the overlays on the sprite and then goes down a checklist adding them as required. + if(blood_DNA) + add_blood() + . = ..() + /obj/item/clothing/equipped(var/mob/user,var/slot) ..() if(enables_planes) @@ -366,6 +372,11 @@ return */ +/obj/item/clothing/gloves/clean_blood() + . = ..() + transfer_blood = 0 + update_icon() + /obj/item/clothing/gloves/mob_can_equip(mob/user, slot, disable_warning = FALSE) var/mob/living/carbon/human/H = user @@ -685,9 +696,7 @@ update_icon() /obj/item/clothing/shoes/update_icon() - overlays.Cut() //This removes all the overlays on the sprite and then goes down a checklist adding them as required. - if(blood_DNA) - add_blood() + . = ..() if(holding) overlays += image(icon, "[icon_state]_knife") if(contaminated) @@ -698,7 +707,6 @@ if(ismob(usr)) var/mob/M = usr M.update_inv_shoes() - return ..() /obj/item/clothing/shoes/clean_blood() update_icon() diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm index 5bcec8a56e..c3bdad4e4e 100644 --- a/code/modules/clothing/head/soft_caps.dm +++ b/code/modules/clothing/head/soft_caps.dm @@ -99,3 +99,9 @@ desc = "It's a ballcap bearing the colors of Major Bill's Shipping." icon_state = "mbillsoft" catalogue_data = list(/datum/category_item/catalogue/information/organization/major_bills) + +/obj/item/clothing/head/soft/med + name = "medical cap" + desc = "It's a field cap in white, with a blue cross on the front." + icon_state = "medsoft" + item_state_slots = list(slot_r_hand_str = "mimesoft", slot_l_hand_str = "mimesoft") diff --git a/code/modules/clothing/masks/tesh_synth_facemask.dm b/code/modules/clothing/masks/tesh_synth_facemask.dm index 1f8f241c5b..166c115aac 100644 --- a/code/modules/clothing/masks/tesh_synth_facemask.dm +++ b/code/modules/clothing/masks/tesh_synth_facemask.dm @@ -7,15 +7,27 @@ icon_override = 'icons/mob/species/seromi/synth_facemask.dmi' icon_state = "synth_facemask" origin_tech = list(TECH_ILLEGAL = 1) + var/lstat + var/mob/living/carbon/maskmaster equipped() ..() var/mob/living/carbon/human/H = loc if(istype(H) && H.wear_mask == src) canremove = 0 + maskmaster = H + START_PROCESSING(SSprocessing, src) + dropped() canremove = 1 + maskmaster = null + STOP_PROCESSING(SSprocessing, src) return ..() + + Destroy() + . = ..() + STOP_PROCESSING(SSprocessing, src) + mob_can_equip(var/mob/living/carbon/human/user, var/slot) if (!..()) return 0 @@ -27,12 +39,20 @@ return 0 update_icon() var/mob/living/carbon/human/H = loc - if (H.stat == DEAD) icon_state = "synth_facemask_dead" + if (maskmaster && maskmaster.stat == DEAD) icon_state = "synth_facemask_dead" + else icon_state = "synth_facemask" if(istype(H)) H.update_inv_wear_mask() + process() + if(maskmaster && lstat != maskmaster.stat) + lstat = maskmaster.stat + update_icon() + lstat = maskmaster.stat + + //LOADOUT ITEM /datum/gear/mask/synthface/ - display_name = "Synth Facemask(Tesh)" + display_name = "Synth Facemask (Teshari)" path = /obj/item/clothing/mask/synthfacemask sort_category = "Xenowear" whitelisted = SPECIES_TESHARI diff --git a/code/modules/clothing/spacesuits/void/void_vr.dm b/code/modules/clothing/spacesuits/void/void_vr.dm index f9094e40fb..378c2cee3c 100644 --- a/code/modules/clothing/spacesuits/void/void_vr.dm +++ b/code/modules/clothing/spacesuits/void/void_vr.dm @@ -180,7 +180,7 @@ ) /obj/item/clothing/suit/space/void/autolok/Initialize() - ..() + . = ..() helmet = new /obj/item/clothing/head/helmet/space/void/autolok //autoinstall the helmet //override the attackby screwdriver proc so that people can't remove the helmet diff --git a/code/modules/clothing/under/accessories/accessory_vr.dm b/code/modules/clothing/under/accessories/accessory_vr.dm index cf70eb3ac9..13bf03aa46 100644 --- a/code/modules/clothing/under/accessories/accessory_vr.dm +++ b/code/modules/clothing/under/accessories/accessory_vr.dm @@ -165,7 +165,7 @@ var/datum/radio_frequency/radio_connection /obj/item/clothing/accessory/collar/shock/Initialize() - ..() + . = ..() radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT) // Makes it so you don't need to change the frequency off of default for it to work. /obj/item/clothing/accessory/collar/shock/Destroy() //Clean up your toys when you're done. diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm index 744c2a55c2..f77ec96a54 100644 --- a/code/modules/clothing/under/jobs/medsci.dm +++ b/code/modules/clothing/under/jobs/medsci.dm @@ -164,6 +164,7 @@ desc = "It's made of a special fiber that provides minor protection against biohazards" icon_state = "scrubs" item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") + index = 1 /obj/item/clothing/under/rank/psych desc = "A basic white jumpsuit. It has turqouise markings that denote the wearer as a psychiatrist." diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index fdc73151b0..c9a6bfa30f 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -621,13 +621,13 @@ Uniforms and such */ /obj/item/clothing/under/sundress - name = "flowery white sundress" + name = "sundress" desc = "Makes you want to frolic in a field of daisies." icon_state = "sundress" body_parts_covered = UPPER_TORSO|LOWER_TORSO /obj/item/clothing/under/sundress_white - name = "white sundress" + name = "flowery white sundress" desc = "A white sundress decorated with purple lilies." icon_state = "sundress_white" body_parts_covered = UPPER_TORSO|LOWER_TORSO @@ -637,41 +637,48 @@ Uniforms and such desc = "A cute pink sundress." icon_state = "pinksun" body_parts_covered = UPPER_TORSO|LOWER_TORSO + index = 1 /obj/item/clothing/under/dress/sundress_white name = "white sundress" desc = "A white sundress, it's short." icon_state = "whitesun" body_parts_covered = UPPER_TORSO|LOWER_TORSO + index = 1 /obj/item/clothing/under/dress/sundress_pinkbow name = "bowed pink sundress" desc = "A cute pink sundress with a bow." icon_state = "bowsun" body_parts_covered = UPPER_TORSO|LOWER_TORSO + index = 1 /obj/item/clothing/under/dress/sundress_blue name = "long blue sundress" desc = "A long blue sun dress with white frills towards the bottom." icon_state = "bluesun" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS + index = 1 /obj/item/clothing/under/dress/sundress_pinkshort name = "short pink sundress" desc = "A very short pink sundress, it's more like a chemise." icon_state = "shortpink" body_parts_covered = UPPER_TORSO|LOWER_TORSO + index = 1 /obj/item/clothing/under/dress/twopiece name = "two-piece dress" desc = "A fancy two-piece dress, the pieces are sewn together." icon_state = "twopiece" body_parts_covered = UPPER_TORSO|LOWER_TORSO + index = 1 /obj/item/clothing/under/dress/gothic2 name = "lacey gothic dress" desc = "An elegant gothic dress with lace decorations." icon_state = "gothic2" + index = 1 /obj/item/clothing/under/captainformal name = "site manager's formal uniform" diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index 60c1a6cb14..93aedaee97 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -1760,20 +1760,6 @@ . = ..() bitesize = 2 -/obj/item/weapon/reagent_containers/food/snacks/mashedpotato - name = "Mashed Potato" - desc = "Pillowy mounds of mashed potato." - icon_state = "mashedpotato" - trash = /obj/item/trash/plate - filling_color = "#EDDD00" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 4 - nutriment_desc = list("fluffy mashed potatoes" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/mashedpotato/Initialize() - . = ..() - bitesize = 2 - /obj/item/weapon/reagent_containers/food/snacks/bangersandmash name = "Bangers and Mash" desc = "An English treat." @@ -1892,13 +1878,13 @@ trash = /obj/item/trash/plate filling_color = "#7A3D11" center_of_mass = list("x"=16, "y"=13) + bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/meatsteak/Initialize() . = ..() reagents.add_reagent("protein", 4) reagents.add_reagent("sodiumchloride", 1) reagents.add_reagent("blackpepper", 1) - bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff name = "Spacy Liberty Duff" @@ -1909,11 +1895,11 @@ center_of_mass = list("x"=16, "y"=8) nutriment_amt = 6 nutriment_desc = list("mushroom" = 6) + bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff/Initialize() . = ..() reagents.add_reagent("psilocybin", 6) - bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/amanitajelly name = "Amanita Jelly" @@ -1924,12 +1910,12 @@ center_of_mass = list("x"=16, "y"=5) nutriment_amt = 6 nutriment_desc = list("jelly" = 3, "mushroom" = 3) + bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/amanitajelly/Initialize() . = ..() reagents.add_reagent("amatoxin", 6) reagents.add_reagent("psilocybin", 3) - bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/poppypretzel name = "Poppy pretzel" @@ -1952,24 +1938,24 @@ trash = /obj/item/trash/snack_bowl filling_color = "#785210" center_of_mass = list("x"=16, "y"=8) + bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/meatballsoup/Initialize() . = ..() reagents.add_reagent("protein", 8) reagents.add_reagent("water", 5) - bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/slimesoup name = "slime soup" desc = "If no water is available, you may substitute tears." icon_state = "slimesoup" //nonexistant? - 3/1/2020 FIXED. roro's live on. - 7/14/2020 - The fuck are you smoking, roro's is stupid, name it slimesoup so it's clear wtf it is. filling_color = "#C4DBA0" + bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/slimesoup/Initialize() . = ..() reagents.add_reagent("slimejelly", 5) reagents.add_reagent("water", 10) - bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/bloodsoup name = "Tomato soup" @@ -1977,13 +1963,13 @@ icon_state = "tomatosoup" filling_color = "#FF0000" center_of_mass = list("x"=16, "y"=7) + bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/bloodsoup/Initialize() . = ..() reagents.add_reagent("protein", 2) reagents.add_reagent("blood", 10) reagents.add_reagent("water", 5) - bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/clownstears name = "Clown's Tears" @@ -1993,12 +1979,12 @@ center_of_mass = list("x"=16, "y"=7) nutriment_amt = 4 nutriment_desc = list("salt" = 1, "the worst joke" = 3) + bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/clownstears/Initialize() . = ..() reagents.add_reagent("banana", 5) reagents.add_reagent("water", 10) - bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/vegetablesoup name = "Vegetable soup" @@ -2009,11 +1995,11 @@ center_of_mass = list("x"=16, "y"=8) nutriment_amt = 8 nutriment_desc = list("carrot" = 2, "corn" = 2, "eggplant" = 2, "potato" = 2) + bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/vegetablesoup/Initialize() . = ..() reagents.add_reagent("water", 5) - bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/nettlesoup name = "Nettle soup" @@ -2024,12 +2010,12 @@ center_of_mass = list("x"=16, "y"=7) nutriment_amt = 8 nutriment_desc = list("salad" = 4, "egg" = 2, "potato" = 2) + bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/nettlesoup/Initialize() . = ..() reagents.add_reagent("water", 5) reagents.add_reagent("tricordrazine", 5) - bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/mysterysoup name = "Mystery soup" @@ -2040,6 +2026,7 @@ center_of_mass = list("x"=16, "y"=6) nutriment_amt = 1 nutriment_desc = list("backwash" = 1) + bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/mysterysoup/Initialize() . = ..() @@ -2079,7 +2066,6 @@ reagents.add_reagent("nutriment", 6) reagents.add_reagent("tomatojuice", 5) reagents.add_reagent("imidazoline", 5) - bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/wishsoup name = "Wish Soup" @@ -2088,11 +2074,11 @@ trash = /obj/item/trash/snack_bowl filling_color = "#D1F4FF" center_of_mass = list("x"=16, "y"=11) + bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/wishsoup/Initialize() . = ..() reagents.add_reagent("water", 10) - bitesize = 5 if(prob(25)) src.desc = "A wish come true!" reagents.add_reagent("nutriment", 8, list("something good" = 8)) @@ -2106,13 +2092,13 @@ center_of_mass = list("x"=15, "y"=9) nutriment_amt = 3 nutriment_desc = list("chilli peppers" = 3) + bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/hotchili/Initialize() . = ..() reagents.add_reagent("protein", 3) reagents.add_reagent("capsaicin", 3) reagents.add_reagent("tomatojuice", 2) - bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/coldchili name = "Cold Chili" @@ -2123,13 +2109,13 @@ trash = /obj/item/trash/snack_bowl nutriment_amt = 3 nutriment_desc = list("ice peppers" = 3) + bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/coldchili/Initialize() . = ..() reagents.add_reagent("protein", 3) reagents.add_reagent("frostoil", 3) reagents.add_reagent("tomatojuice", 2) - bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/monkeycube name = "monkey cube" @@ -2233,11 +2219,11 @@ center_of_mass = list("x"=16, "y"=11) nutriment_amt = 4 nutriment_desc = list("buns" = 4) + bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/bigbiteburger/Initialize() . = ..() reagents.add_reagent("protein", 10) - bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/enchiladas name = "Enchiladas" @@ -2248,12 +2234,12 @@ center_of_mass = list("x"=16, "y"=13) nutriment_amt = 2 nutriment_desc = list("tortilla" = 3, "corn" = 3) + bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/enchiladas/Initialize() . = ..() reagents.add_reagent("protein", 6) reagents.add_reagent("capsaicin", 6) - bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/monkeysdelight name = "monkey's Delight" @@ -2262,6 +2248,7 @@ trash = /obj/item/trash/tray filling_color = "#5C3C11" center_of_mass = list("x"=16, "y"=13) + bitesize = 6 /obj/item/weapon/reagent_containers/food/snacks/monkeysdelight/Initialize() . = ..() @@ -2269,7 +2256,6 @@ reagents.add_reagent("banana", 5) reagents.add_reagent("blackpepper", 1) reagents.add_reagent("sodiumchloride", 1) - bitesize = 6 /obj/item/weapon/reagent_containers/food/snacks/baguette name = "Baguette" @@ -2279,12 +2265,12 @@ center_of_mass = list("x"=18, "y"=12) nutriment_amt = 6 nutriment_desc = list("french bread" = 6) + bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/baguette/Initialize() . = ..() reagents.add_reagent("blackpepper", 1) reagents.add_reagent("sodiumchloride", 1) - bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/fishandchips name = "Fish and Chips" @@ -2294,11 +2280,11 @@ center_of_mass = list("x"=16, "y"=16) nutriment_amt = 3 nutriment_desc = list("salt" = 1, "chips" = 3) + bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/fishandchips/Initialize() . = ..() reagents.add_reagent("protein", 3) - bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/sandwich name = "Sandwich" @@ -2309,11 +2295,11 @@ center_of_mass = list("x"=16, "y"=4) nutriment_amt = 3 nutriment_desc = list("bread" = 3, "cheese" = 3) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sandwich/Initialize() . = ..() reagents.add_reagent("protein", 3) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/toastedsandwich name = "Toasted Sandwich" @@ -2324,12 +2310,12 @@ center_of_mass = list("x"=16, "y"=4) nutriment_amt = 3 nutriment_desc = list("toasted bread" = 3, "cheese" = 3) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/toastedsandwich/Initialize() . = ..() reagents.add_reagent("protein", 3) reagents.add_reagent("carbon", 2) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/grilledcheese name = "Grilled Cheese Sandwich" @@ -2339,11 +2325,11 @@ filling_color = "#D9BE29" nutriment_amt = 3 nutriment_desc = list("toasted bread" = 3, "cheese" = 3) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/grilledcheese/Initialize() . = ..() reagents.add_reagent("protein", 4) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/tomatosoup name = "Tomato Soup" @@ -2354,39 +2340,11 @@ center_of_mass = list("x"=16, "y"=7) nutriment_amt = 5 nutriment_desc = list("soup" = 5) + bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/tomatosoup/Initialize() . = ..() reagents.add_reagent("tomatojuice", 10) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/onionsoup - name = "Onion Soup" - desc = "A soup with layers." - icon_state = "onionsoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#E0C367" - center_of_mass = list("x"=16, "y"=7) - nutriment_amt = 5 - nutriment_desc = list("onion" = 2, "soup" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/onionsoup/Initialize() - . = ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/onionrings - name = "Onion Rings" - desc = "Crispy rings." - icon_state = "onionrings" - trash = /obj/item/trash/plate - filling_color = "#E0C367" - center_of_mass = list("x"=16, "y"=7) - nutriment_amt = 5 - nutriment_desc = list("onion" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/onionrings/Initialize() - . = ..() - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/rofflewaffles name = "Roffle Waffles" @@ -2397,11 +2355,11 @@ center_of_mass = list("x"=15, "y"=11) nutriment_amt = 8 nutriment_desc = list("waffle" = 7, "sweetness" = 1) + bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/rofflewaffles/Initialize() . = ..() reagents.add_reagent("psilocybin", 8) - bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/stew name = "Stew" @@ -2413,6 +2371,7 @@ nutriment_desc = list("tomato" = 2, "potato" = 2, "carrot" = 2, "eggplant" = 2, "mushroom" = 2) drop_sound = 'sound/items/drop/shovel.ogg' pickup_sound = 'sound/items/pickup/shovel.ogg' + bitesize = 10 /obj/item/weapon/reagent_containers/food/snacks/stew/Initialize() . = ..() @@ -2420,7 +2379,6 @@ reagents.add_reagent("tomatojuice", 5) reagents.add_reagent("imidazoline", 5) reagents.add_reagent("water", 5) - bitesize = 10 /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast name = "Jellied Toast" @@ -2466,18 +2424,18 @@ reagents.add_reagent("cherryjelly", 5) /obj/item/weapon/reagent_containers/food/snacks/milosoup - name = "Milosoup" + name = "Miso soup" desc = "The universes best soup! Yum!!!" icon_state = "milosoup" trash = /obj/item/trash/snack_bowl center_of_mass = list("x"=16, "y"=7) nutriment_amt = 8 nutriment_desc = list("soy" = 8) + bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/milosoup/Initialize() . = ..() reagents.add_reagent("water", 5) - bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat name = "Stewed Soy Meat" @@ -2543,11 +2501,11 @@ center_of_mass = list("x"=17, "y"=11) nutriment_amt = 16 nutriment_desc = list("rice" = 2, "gauze" = 4, "fish" = 10) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/kudzudonburi/Initialize() . = ..() reagents.add_reagent("protein", 4) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/pastatomato name = "Spaghetti" @@ -2558,11 +2516,11 @@ center_of_mass = list("x"=16, "y"=10) nutriment_amt = 6 nutriment_desc = list("tomato" = 3, "noodles" = 3) + bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/pastatomato/Initialize() . = ..() reagents.add_reagent("tomatojuice", 10) - bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/meatballspagetti name = "Spaghetti & Meatballs" @@ -2573,11 +2531,11 @@ center_of_mass = list("x"=16, "y"=10) nutriment_amt = 4 nutriment_desc = list("noodles" = 4) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/meatballspagetti/Initialize() . = ..() reagents.add_reagent("protein", 4) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/spesslaw name = "Spesslaw" @@ -2587,11 +2545,11 @@ center_of_mass = list("x"=16, "y"=10) nutriment_amt = 4 nutriment_desc = list("noodles" = 4) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/spesslaw/Initialize() . = ..() reagents.add_reagent("protein", 4) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/carrotfries name = "Carrot Fries" @@ -2602,11 +2560,11 @@ center_of_mass = list("x"=16, "y"=11) nutriment_amt = 3 nutriment_desc = list("carrot" = 3, "salt" = 1) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/carrotfries/Initialize() . = ..() reagents.add_reagent("imidazoline", 3) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/superbiteburger name = "Super Bite Burger" @@ -2616,11 +2574,11 @@ center_of_mass = list("x"=16, "y"=3) nutriment_amt = 25 nutriment_desc = list("buns" = 25) + bitesize = 10 /obj/item/weapon/reagent_containers/food/snacks/superbiteburger/Initialize() . = ..() reagents.add_reagent("protein", 25) - bitesize = 10 /obj/item/weapon/reagent_containers/food/snacks/candiedapple name = "Candied Apple" @@ -2709,11 +2667,11 @@ name = "Boiled Slime Core" desc = "A boiled red thing." icon_state = "boiledslimecore" + bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/boiledslimecore/Initialize() . = ..() reagents.add_reagent("slimejelly", 5) - bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/mint name = "mint" @@ -2721,11 +2679,11 @@ icon_state = "mint" filling_color = "#F2F2F2" center_of_mass = list("x"=16, "y"=14) + bitesize = 1 /obj/item/weapon/reagent_containers/food/snacks/mint/Initialize() . = ..() reagents.add_reagent("mint", 1) - bitesize = 1 /obj/item/weapon/reagent_containers/food/snacks/mint/admints desc = "Spearmint, peppermint's non-festive cousin." @@ -2771,6 +2729,7 @@ center_of_mass = list("x"=16, "y"=13) nutriment_amt = 5 nutriment_desc = list("mushroom" = 4) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit/Initialize() . = ..() @@ -2778,10 +2737,8 @@ name = "exceptional plump helmet biscuit" desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!" reagents.add_reagent("nutriment", 8) - bitesize = 2 else reagents.add_reagent("nutriment", 5) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/chawanmushi name = "chawanmushi" @@ -2790,11 +2747,11 @@ trash = /obj/item/trash/snack_bowl filling_color = "#F0F2E4" center_of_mass = list("x"=17, "y"=10) + bitesize = 1 /obj/item/weapon/reagent_containers/food/snacks/chawanmushi/Initialize() . = ..() reagents.add_reagent("protein", 5) - bitesize = 1 /obj/item/weapon/reagent_containers/food/snacks/beetsoup name = "beet soup" @@ -2805,11 +2762,11 @@ center_of_mass = list("x"=15, "y"=8) nutriment_amt = 8 nutriment_desc = list("tomato" = 4, "beet" = 4) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/beetsoup/Initialize() . = ..() name = pick(list("borsch","bortsch","borstch","borsh","borshch","borscht")) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/tossedsalad name = "tossed salad" @@ -2834,11 +2791,11 @@ center_of_mass = list("x"=17, "y"=11) nutriment_amt = 6 nutriment_desc = list("100% real salad") + bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/validsalad/Initialize() . = ..() reagents.add_reagent("protein", 2) - bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/appletart name = "golden apple streusel tart" @@ -2849,11 +2806,11 @@ center_of_mass = list("x"=16, "y"=18) nutriment_amt = 8 nutriment_desc = list("apple" = 8) + bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/appletart/Initialize() . = ..() reagents.add_reagent("gold", 5) - bitesize = 3 /////////////////////////////////////////////////Sliceable//////////////////////////////////////// // All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels @@ -3019,11 +2976,11 @@ center_of_mass = list("x"=16, "y"=10) nutriment_desc = list("cake" = 10, "sweetness" = 10, "carrot" = 15) nutriment_amt = 25 + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake/Initialize() . = ..() reagents.add_reagent("imidazoline", 10) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/slice/carrotcake name = "Carrot Cake slice" @@ -3048,12 +3005,12 @@ center_of_mass = list("x"=16, "y"=10) nutriment_desc = list("cake" = 10, "sweetness" = 10, "slime" = 15) nutriment_amt = 5 + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake/Initialize() . = ..() reagents.add_reagent("protein", 25) reagents.add_reagent("alkysine", 10) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/slice/braincake name = "Brain Cake slice" @@ -3465,32 +3422,35 @@ filled = TRUE /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/pineapple - name = "Hawaiian" - desc = "The accursed wheel from ancient times." - icon_state = "pizzamargherita" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/pineapple + name = "ham & pineapple pizza" + desc = "One of the most debated pizzas in existence." + icon = 'icons/obj/food_syn.dmi' + icon_state = "pineapple_pizza" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/pineappleslice slices_num = 6 center_of_mass = list("x"=16, "y"=11) - nutriment_desc = list("pizza crust" = 5, "tomato" = 5, "cheese" = 5, "pineapple" = 20) - nutriment_amt = 35 + nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "ham" = 10) + nutriment_amt = 30 + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/pineapple/Initialize() . = ..() - reagents.add_reagent("protein", 5) - reagents.add_reagent("pineapplejuice", 6) - bitesize = 2 + reagents.add_reagent("protein", 4) + reagents.add_reagent("cheese", 5) + reagents.add_reagent("tomatojuice", 6) -/obj/item/weapon/reagent_containers/food/snacks/slice/pineapple - name = "Hawaiian slice" - desc = "A slice of the accursed pizza." - icon_state = "pizzamargheritaslice" +/obj/item/weapon/reagent_containers/food/snacks/pineappleslice + name = "ham & pineapple pizza slice" + desc = "A slice of contraband." + icon = 'icons/obj/food_syn.dmi' + icon_state = "pineapple_pizza_slice" filling_color = "#BAA14C" bitesize = 2 - center_of_mass = list("x"=16, "y"=13) - whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/pineapple + center_of_mass = list("x"=18, "y"=13) -/obj/item/weapon/reagent_containers/food/snacks/slice/pineapple/filled - filled = TRUE +/obj/item/weapon/reagent_containers/food/snacks/pineappleslice/filled + nutriment_desc = list("pizza crust" = 5, "tomato" = 5) + nutriment_amt = 5 /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza name = "Meatpizza" @@ -3556,13 +3516,13 @@ center_of_mass = list("x"=16, "y"=11) nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "cheese" = 5, "eggplant" = 5, "carrot" = 5, "corn" = 5) nutriment_amt = 25 + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza/Initialize() . = ..() reagents.add_reagent("protein", 5) reagents.add_reagent("tomatojuice", 6) reagents.add_reagent("imidazoline", 12) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/slice/vegetablepizza name = "Vegetable pizza slice" @@ -3802,9 +3762,6 @@ reagents.add_reagent("radium", 2) bitesize = 2 -/////////////////////////////////////////// -// new old food stuff from bs12 -/////////////////////////////////////////// /obj/item/weapon/reagent_containers/food/snacks/dough name = "dough" desc = "A piece of dough." @@ -4072,12 +4029,12 @@ filling_color = "#5dadcf" center_of_mass = list("x"=16, "y"=12) do_coating_prefix = 0 + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/bellefritter/Initialize() . = ..() reagents.add_reagent("batter", 10) reagents.add_reagent("sugar", 5) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/roastedsunflower name = "sunflower seeds" @@ -4110,11 +4067,11 @@ center_of_mass = list("x"=16, "y"=15) nutriment_amt = 20 nutriment_desc = list("chalk" = 6) + bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/liquidfood/Initialize() . = ..() reagents.add_reagent("iron", 3) - bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/liquidprotein name = "\improper LiquidProtein Ration" @@ -4124,12 +4081,12 @@ filling_color = "#A8A8A8" survivalfood = TRUE center_of_mass = list("x"=16, "y"=15) + bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/liquidprotein/Initialize() . = ..() reagents.add_reagent("protein", 30) reagents.add_reagent("iron", 3) - bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/liquidvitamin name = "\improper VitaPaste Ration" @@ -4139,6 +4096,7 @@ filling_color = "#A8A8A8" survivalfood = TRUE center_of_mass = list("x"=16, "y"=15) + bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/liquidvitamin/Initialize() . = ..() @@ -4147,7 +4105,6 @@ reagents.add_reagent("paracetamol", 5) reagents.add_reagent("enzyme", 1) reagents.add_reagent("iron", 3) - bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/meatcube name = "cubed meat" @@ -4155,11 +4112,11 @@ icon_state = "meatcube" filling_color = "#7a3d11" center_of_mass = list("x"=16, "y"=16) + bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/meatcube/Initialize() . = ..() reagents.add_reagent("protein", 15) - bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/tastybread name = "bread tube" @@ -4204,39 +4161,15 @@ center_of_mass = list("x"=15, "y"=9) drop_sound = 'sound/items/drop/soda.ogg' pickup_sound = 'sound/items/pickup/soda.ogg' + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/unajerky/Initialize() . =..() reagents.add_reagent("protein", 8) reagents.add_reagent("capsaicin", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/croissant - name = "croissant" - desc = "True French cuisine." - filling_color = "#E3D796" - icon_state = "croissant" - nutriment_amt = 6 - nutriment_desc = list("french bread" = 6) - -/obj/item/weapon/reagent_containers/food/snacks/croissant/Initialize() - . = ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/meatbun - name = "meat bun" - desc = "Chinese street food, in neither China nor a street." - filling_color = "#DEDEAB" - icon_state = "meatbun" - nutriment_amt = 4 - -/obj/item/weapon/reagent_containers/food/snacks/meatbun/Initialize() - . = ..() - bitesize = 2 - reagents.add_reagent("protein", 4) /obj/item/weapon/reagent_containers/food/snacks/sashimi - name = "carp sashimi" + name = "sashimi" desc = "Expertly prepared. Hopefully the toxins got removed." filling_color = "#FFDEFE" icon_state = "sashimi" @@ -4352,12 +4285,12 @@ center_of_mass = list("x"=17, "y"=16) nutriment_amt = 8 nutriment_desc = list("egg" = 4, "chili" = 4) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/devilledegg/Initialize() . = ..() reagents.add_reagent("nutriment", 6) reagents.add_reagent("capsaicin", 2) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/fruitsalad name = "fruit salad" @@ -4373,7 +4306,7 @@ bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/flowerchildsalad - name = "flowerchild salad" + name = "flowerchild poppy salad" desc = "A fragrant salad." icon_state = "flowerchildsalad" filling_color = "#FF3867" @@ -4386,18 +4319,18 @@ bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/rosesalad - name = "flowerchild salad" + name = "flowerchild rose salad" desc = "A fragrant salad." icon_state = "rosesalad" filling_color = "#FF3867" nutriment_amt = 5 nutriment_desc = list("bittersweet" = 10, "iron" = 5) + bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/rosesalad/Initialize() . = ..() reagents.add_reagent("nutriment", 10) reagents.add_reagent("stoxin", 2) - bitesize = 4 /obj/item/weapon/reagent_containers/food/snacks/eggbowl name = "egg bowl" @@ -4414,21 +4347,6 @@ reagents.add_reagent("protein", 4) bitesize = 2 -/obj/item/weapon/reagent_containers/food/snacks/porkbowl - name = "pork bowl" - desc = "A bowl of fried rice with cuts of meat." - icon_state = "porkbowl" - trash = /obj/item/trash/snack_bowl - filling_color = "#FFFBDB" - nutriment_amt = 6 - nutriment_desc = list("rice" = 2, "meat" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/porkbowl/Initialize() - . = ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("protein", 4) - bitesize = 2 - /obj/item/weapon/reagent_containers/food/snacks/tortilla name = "tortilla" desc = "The base for all your burritos." @@ -4441,81 +4359,18 @@ reagents.add_reagent("nutriment", 2) bitesize = 2 -/obj/item/weapon/reagent_containers/food/snacks/meatburrito - name = "carne asada burrito" - desc = "The best burrito for meat lovers." - icon_state = "carneburrito" - nutriment_amt = 6 - nutriment_desc = list("tortilla" = 3, "meat" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/meatburrito/Initialize() - . = ..() - reagents.add_reagent("protein", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/cheeseburrito - name = "Cheese burrito" - desc = "It's a burrito filled with cheese." - icon_state = "cheeseburrito" - nutriment_amt = 6 - nutriment_desc = list("tortilla" = 3, "cheese" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/cheeseburrito/Initialize() - . = ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("protein", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/fuegoburrito - name = "fuego phoron burrito" - desc = "A super spicy burrito." - icon_state = "fuegoburrito" - nutriment_amt = 6 - nutriment_desc = list("chili peppers" = 5, "tortilla" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/fuegoburrito/Initialize() - . = ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("capsaicin", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/nachos - name = "nachos" - desc = "Chips from Old Mexico." - icon_state = "nachos" - nutriment_amt = 2 - nutriment_desc = list("salt" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/nachos/Initialize() - . = ..() - reagents.add_reagent("nutriment", 1) - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/cheesenachos - name = "cheesy nachos" - desc = "The delicious combination of nachos and melting cheese." - icon_state = "cheesenachos" - nutriment_amt = 5 - nutriment_desc = list("salt" = 2, "cheese" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/cheesenachos/Initialize() - . = ..() - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("protein", 2) - bitesize = 2 - /obj/item/weapon/reagent_containers/food/snacks/cubannachos name = "cuban nachos" desc = "That's some dangerously spicy nachos." icon_state = "cubannachos" nutriment_amt = 6 nutriment_desc = list("salt" = 1, "cheese" = 2, "chili peppers" = 3) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/cubannachos/Initialize() . = ..() reagents.add_reagent("nutriment", 5) reagents.add_reagent("capsaicin", 4) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/curryrice name = "curry rice" @@ -4523,12 +4378,12 @@ icon_state = "curryrice" nutriment_amt = 6 nutriment_desc = list("salt" = 1, "rice" = 2, "chili peppers" = 3) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/curryrice/Initialize() . = ..() reagents.add_reagent("nutriment", 5) reagents.add_reagent("capsaicin", 4) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/piginblanket name = "pig in a blanket" @@ -4563,11 +4418,11 @@ nutriment_amt = 1 nutriment_desc = list("bugflesh" = 1) w_class = ITEMSIZE_TINY + bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/wormsickly/Initialize() . = ..() reagents.add_reagent("fishbait", 10) - bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/worm name = "strange worm" @@ -4576,11 +4431,11 @@ nutriment_amt = 1 nutriment_desc = list("bugflesh" = 1) w_class = ITEMSIZE_TINY + bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/worm/Initialize() . = ..() reagents.add_reagent("fishbait", 20) - bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/wormdeluxe name = "deluxe worm" @@ -4589,11 +4444,11 @@ nutriment_amt = 5 nutriment_desc = list("bugflesh" = 1) w_class = ITEMSIZE_TINY + bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/wormdeluxe/Initialize() . = ..() reagents.add_reagent("fishbait", 40) - bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/siffruit name = "pulsing fruit" @@ -4624,11 +4479,11 @@ icon_state = "bagelplain" nutriment_amt = 3 nutriment_desc = list("bread" = 1) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/bagelplain/Initialize() . = ..() reagents.add_reagent("nutriment", 3) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/bagelsunflower name = "sunflower seed bagel" @@ -4636,11 +4491,11 @@ icon_state = "bagelsunflower" nutriment_amt = 4 nutriment_desc = list("bread" = 1, "sunflower seeds" = 1) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/bagelsunflower/Initialize() . = ..() reagents.add_reagent("nutriment", 3) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/bagelcheese name = "cheese bagel" @@ -4648,12 +4503,12 @@ icon_state = "bagelcheese" nutriment_amt = 4 nutriment_desc = list("bread" = 1, "cheese" = 1) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/bagelcheese/Initialize() . = ..() reagents.add_reagent("protein", 4) reagents.add_reagent("nutriment", 4) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/bagelraisin name = "cinnamon raisin bagel" @@ -4661,11 +4516,11 @@ icon_state = "bagelraisin" nutriment_amt = 5 nutriment_desc = list("bread" = 1, "sweetness" = 1) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/bagelraisin/Initialize() . = ..() reagents.add_reagent("nutriment", 3) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/bagelpoppy name = "poppy seed bagel" @@ -4673,24 +4528,24 @@ icon_state = "bagelpoppy" nutriment_amt = 5 nutriment_desc = list("bread" = 1, "sweetness" = 1) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/bagelpoppy/Initialize() . = ..() reagents.add_reagent("nutriment", 3) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/bageleverything name = "everything bagel" desc = "Mmm... Immeasurably unfathomable!" icon_state = "bageleverything" - nutriment_amt = 40 + nutriment_amt = 20 nutriment_desc = list("life" = 1, "death" = 1, "entropy" = 1) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/bageleverything/Initialize() . = ..() reagents.add_reagent("phoron", 5) reagents.add_reagent("defective_nanites", 5) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/bageltwo name = "two bagels" @@ -4719,11 +4574,9 @@ center_of_mass = list("x"=16, "y"=16) nutriment_amt = 9 nutriment_desc = list("Cheese" = 5, "pasta" = 4, "happiness" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/macncheese/Initialize() - . = ..() bitesize = 3 + //Code for dipping food in batter /obj/item/weapon/reagent_containers/food/snacks/afterattack(obj/O as obj, mob/user as mob, proximity) if(O.is_open_container() && O.reagents && !(istype(O, /obj/item/weapon/reagent_containers/food)) && proximity) @@ -4928,29 +4781,29 @@ /obj/item/weapon/reagent_containers/food/snacks/chickenkatsu name = "chicken katsu" - desc = "A Terran delicacy consisting of chicken fried in a light beer batter." + desc = "An Earth delicacy consisting of chicken fried in a light beer batter." icon = 'icons/obj/food_syn.dmi' icon_state = "katsu" trash = /obj/item/trash/plate filling_color = "#E9ADFF" center_of_mass = list("x"=16, "y"=16) do_coating_prefix = 0 + bitesize = 1.5 /obj/item/weapon/reagent_containers/food/snacks/chickenkatsu/Initialize() . = ..() reagents.add_reagent("protein", 6) reagents.add_reagent("beerbatter", 2) reagents.add_reagent("oil", 1) - bitesize = 1.5 /obj/item/weapon/reagent_containers/food/snacks/fries nutriment_amt = 4 nutriment_desc = list("fries" = 4) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/fries/Initialize() . = ..() reagents.add_reagent("oil", 1.2)//This is mainly for the benefit of adminspawning - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/microchips name = "micro chips" @@ -4982,14 +4835,6 @@ . = ..() bitesize = 2 -/obj/item/weapon/reagent_containers/food/snacks/meatsteak/Initialize() - . = ..() - reagents.add_reagent("protein", 6) - reagents.add_reagent("triglyceride", 2) - reagents.add_reagent("sodiumchloride", 1) - reagents.add_reagent("blackpepper", 1) - bitesize = 2 - /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/crunch name = "pizza crunch" desc = "This was once a normal pizza, but it has been coated in batter and deep-fried. Whatever toppings it once had are a mystery, but they're still under there, somewhere..." @@ -5109,7 +4954,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bacon_stick name = "eggpop" - desc = "A bacon wrapped boiled egg, conviently skewered on a wooden stick." + desc = "A bacon wrapped boiled egg, conveniently skewered on a wooden stick." icon = 'icons/obj/food_syn.dmi' icon_state = "bacon_stick" @@ -5119,8 +4964,8 @@ reagents.add_reagent("egg", 1) /obj/item/weapon/reagent_containers/food/snacks/chilied_eggs - name = "chilied eggs" - desc = "Three deviled eggs floating in a bowl of meat chili. A popular lunchtime meal for Unathi in Ouerea." + name = "Redeemed eggs" + desc = "Three deviled eggs floating in a bowl of meat chili. A popular lunchtime meal for Unathi, with mild religious undertones." icon_state = "chilied_eggs" trash = /obj/item/trash/snack_bowl @@ -5129,7 +4974,6 @@ reagents.add_reagent("egg", 6) reagents.add_reagent("protein", 2) - /obj/item/weapon/reagent_containers/food/snacks/cheese_cracker name = "supreme cheese toast" desc = "A piece of toast lathered with butter, cheese, spices, and herbs." @@ -5221,7 +5065,7 @@ reagents.add_reagent("protein", 3) /obj/item/weapon/reagent_containers/food/snacks/fish_taco - name = "carp taco" + name = "fish taco" desc = "A questionably cooked fish taco decorated with herbs, spices, and special sauce." icon = 'icons/obj/food_syn.dmi' icon_state = "fish_taco" @@ -5233,8 +5077,8 @@ reagents.add_reagent("seafood",3) /obj/item/weapon/reagent_containers/food/snacks/nt_muffin - name = "\improper NtMuffin" - desc = "A NanoTrasen sponsered biscuit with egg, cheese, and sausage." + name = "breakfast muffin" + desc = "An english muffin with egg, cheese, and sausage, as sold in fast food joints galaxy-wide." icon = 'icons/obj/food_syn.dmi' icon_state = "nt_muffin" nutriment_desc = list("biscuit" = 3) @@ -5246,7 +5090,7 @@ /obj/item/weapon/reagent_containers/food/snacks/pineapple_ring name = "pineapple ring" - desc = "What the hell is this?" + desc = "So retro." icon = 'icons/obj/food_syn.dmi' icon_state = "pineapple_ring" nutriment_desc = list("sweetness" = 2) @@ -5256,36 +5100,6 @@ . = ..() reagents.add_reagent("pineapplejuice",3) -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/pineapple - name = "ham & pineapple pizza" - desc = "One of the most debated pizzas in existence." - icon = 'icons/obj/food_syn.dmi' - icon_state = "pineapple_pizza" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/pineappleslice - slices_num = 6 - center_of_mass = list("x"=16, "y"=11) - nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "ham" = 10) - nutriment_amt = 30 - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/pineapple/Initialize() - . = ..() - reagents.add_reagent("protein", 4) - reagents.add_reagent("cheese", 5) - reagents.add_reagent("tomatojuice", 6) - -/obj/item/weapon/reagent_containers/food/snacks/pineappleslice - name = "ham & pineapple pizza slice" - desc = "A slice of contraband." - icon = 'icons/obj/food_syn.dmi' - icon_state = "pineapple_pizza_slice" - filling_color = "#BAA14C" - bitesize = 2 - center_of_mass = list("x"=18, "y"=13) - -/obj/item/weapon/reagent_containers/food/snacks/pineappleslice/filled - nutriment_desc = list("pizza crust" = 5, "tomato" = 5) - nutriment_amt = 5 /obj/item/weapon/reagent_containers/food/snacks/burger/bacon name = "bacon burger" @@ -5329,17 +5143,6 @@ nutriment_amt = 5 bitesize = 2 -/obj/item/weapon/reagent_containers/food/snacks/berrymuffin - name = "berry muffin" - desc = "A delicious and spongy little cake, with berries." - icon = 'icons/obj/food_syn.dmi' - icon_state = "berrymuffin" - filling_color = "#E0CF9B" - center_of_mass = list("x"=17, "y"=4) - nutriment_amt = 5 - nutriment_desc = list("sweetness" = 1, "muffin" = 2, "berries" = 2) - bitesize = 2 - /obj/item/weapon/reagent_containers/food/snacks/soup/onion name = "onion soup" desc = "A soup with layers." @@ -5691,8 +5494,8 @@ //burritos /obj/item/weapon/reagent_containers/food/snacks/burrito - name = "meat burrito" - desc = "Meat wrapped in a flour tortilla. It's a burrito by definition." + name = "chilli burrito" + desc = "Minced meat wrapped in a flour tortilla. It's a burrito by definition." icon = 'icons/obj/food_syn.dmi' icon_state = "burrito" bitesize = 4 @@ -5719,22 +5522,12 @@ . = ..() reagents.add_reagent("tofu", 6) -/obj/item/weapon/reagent_containers/food/snacks/burrito_spicy - name = "spicy meat burrito" - desc = "Meat and chilis wrapped in a flour tortilla." - icon = 'icons/obj/food_syn.dmi' - icon_state = "burrito_spicy" - bitesize = 4 - center_of_mass = list("x"=16, "y"=16) - nutriment_desc = list("tortilla" = 6) - nutriment_amt = 6 - /obj/item/weapon/reagent_containers/food/snacks/burrito_spicy/Initialize() . = ..() reagents.add_reagent("protein", 6) /obj/item/weapon/reagent_containers/food/snacks/burrito_cheese - name = "meat cheese burrito" + name = "carne queso burrito" desc = "Meat and melted cheese wrapped in a flour tortilla." icon = 'icons/obj/food_syn.dmi' icon_state = "burrito_cheese" @@ -5747,9 +5540,45 @@ . = ..() reagents.add_reagent("protein", 6) +/obj/item/weapon/reagent_containers/food/snacks/burrito_hell + name = "el diablo" + desc = "Meat and an insane amount of chillis packed in a flour tortilla. The Chaplain will see you now." + icon = 'icons/obj/food_syn.dmi' + icon_state = "burrito_hell" + bitesize = 4 + center_of_mass = list("x"=16, "y"=16) + nutriment_desc = list("hellfire" = 6) + nutriment_amt = 24// 10 Chilis is a lot. + +/obj/item/weapon/reagent_containers/food/snacks/meatburrito + name = "carne asada burrito" + desc = "Sliced meat and beans, it's another basic burrito!" + icon_state = "carneburrito" + nutriment_amt = 6 + nutriment_desc = list("tortilla" = 3, "meat" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/meatburrito/Initialize() + . = ..() + reagents.add_reagent("protein", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cheeseburrito + name = "Cheese burrito" + desc = "It's a burrito filled with beans and cheese." + icon_state = "cheeseburrito" + nutriment_amt = 6 + nutriment_desc = list("tortilla" = 3, "cheese" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/cheeseburrito/Initialize() + . = ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 2) + bitesize = 2 + /obj/item/weapon/reagent_containers/food/snacks/burrito_cheese_spicy - name = "spicy cheese meat burrito" - desc = "Meat, melted cheese, and chilis wrapped in a flour tortilla." + name = "spicy cheese burrito" + desc = "Melted cheese, beans and chillis wrapped in a flour tortilla." + icon = 'icons/obj/food_syn.dmi' icon_state = "burrito_cheese_spicy" bitesize = 4 center_of_mass = list("x"=16, "y"=16) @@ -5760,18 +5589,21 @@ . = ..() reagents.add_reagent("protein", 6) -/obj/item/weapon/reagent_containers/food/snacks/burrito_hell - name = "el diablo" - desc = "Meat and an insane amount of chilis packed in a flour tortilla. The Chaplain will see you now." - icon = 'icons/obj/food_syn.dmi' - icon_state = "burrito_hell" - bitesize = 4 - center_of_mass = list("x"=16, "y"=16) - nutriment_desc = list("hellfire" = 6) - nutriment_amt = 24// 10 Chilis is a lot. +/obj/item/weapon/reagent_containers/food/snacks/fuegoburrito + name = "fuego phoron burrito" + desc = "A super spicy vegetarian burrito." + icon_state = "fuegoburrito" + nutriment_amt = 6 + nutriment_desc = list("chilli peppers" = 5, "tortilla" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/fuegoburrito/Initialize() + . = ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("capsaicin", 4) + bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/breakfast_wrap - name = "breakfast wrap" + name = "breakfast burrito" desc = "Bacon, eggs, cheese, and tortilla grilled to perfection." icon = 'icons/obj/food_syn.dmi' icon_state = "breakfast_wrap" @@ -5783,7 +5615,7 @@ /obj/item/weapon/reagent_containers/food/snacks/burrito_hell/Initialize() . = ..() reagents.add_reagent("protein", 9) - reagents.add_reagent("condensedcapsaicin", 20) //what could possibly go wrong + reagents.add_reagent("condensedcapsaicin", 10) //what could possibly go wrong /obj/item/weapon/reagent_containers/food/snacks/burrito_mystery name = "mystery meat burrito" @@ -5809,7 +5641,7 @@ /obj/item/weapon/reagent_containers/food/snacks/red_sun_special name = "red sun special" - desc = "One lousy piece of sausage sitting on melted cheese curds. A cheap meal for the Unathi peasants of Moghes." + desc = "One lousy piece of sausage sitting on melted cheese curds. A popular utilitarian meal for the Unathi of Moghes." icon = 'icons/obj/food_syn.dmi' icon_state = "red_sun_special" trash = /obj/item/trash/plate @@ -5864,8 +5696,8 @@ reagents.add_reagent("egg", 2) /obj/item/weapon/reagent_containers/food/snacks/sliceable/grilled_carp - name = "korlaaskak" - desc = "A well-dressed carp, seared to perfection and adorned with herbs and spices. Can be sliced into proper serving sizes." + name = "Njarir Merana Grill" + desc = "A well-dressed fish, seared to perfection and adorned with herbs and spices in a traditional Nerahni Tajaran style. Can be sliced into proper serving sizes." icon = 'icons/obj/food_syn.dmi' icon_state = "grilled_carp" slice_path = /obj/item/weapon/reagent_containers/food/snacks/grilled_carp_slice @@ -6059,24 +5891,7 @@ name = "chicken noodle soup" gender = PLURAL desc = "A bright bowl of yellow broth with cuts of meat, noodles and carrots." - icon = 'icons/obj/food_custom.dmi' - icon_state = "chickennoodlesoup" - filling_color = "#ead90c" - nutriment_amt = 6 - nutriment_desc = list("warm soup" = 6) - center_of_mass = list("x"=16, "y"=5) - -/obj/item/weapon/reagent_containers/food/snacks/chickennoodlesoup/Initialize() - . = ..() - reagents.add_reagent("protein", 4) - reagents.add_reagent("water", 5) - bitesize = 6 - -/obj/item/weapon/reagent_containers/food/snacks/chickennoodlesoup - name = "chicken noodle soup" - gender = PLURAL - desc = "A bright bowl of yellow broth with cuts of meat, noodles and carrots." - icon = 'icons/obj/food_custom.dmi' + icon = 'icons/obj/food_syn.dmi' icon_state = "chickennoodlesoup" filling_color = "#ead90c" nutriment_amt = 6 @@ -6140,16 +5955,31 @@ bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/meatbun - name = "meat bun" - desc = "A soft, fluffy flour bun also known as baozi. This one is filled with a spiced meat filling." + name = "meat and leaf bun" + desc = "A soft, fluffy flour bun also known as baozi. This one is filled with a meat and cabbage filling." + filling_color = "#DEDEAB" + icon = 'icons/obj/food_syn.dmi' + icon_state = "meatbun" + nutriment_amt = 5 + nutriment_desc = list("fried meat" = 5) + center_of_mass = list("x"=16, "y"=11) + +/obj/item/weapon/reagent_containers/food/snacks/meatbun/Initialize() + . = ..() + bitesize = 2 + reagents.add_reagent("protein", 4) + +/obj/item/weapon/reagent_containers/food/snacks/spicedmeatbun + name = "char sui meat bun" + desc = "A soft, fluffy flour bun also known as baozi. This one is filled with a traditionally spiced meat filling." icon = 'icons/obj/food_syn.dmi' icon_state = "meatbun" filling_color = "#edd7d7" nutriment_amt = 5 - nutriment_desc = list("spice" = 5) + nutriment_desc = list("char sui" = 5) center_of_mass = list("x"=16, "y"=11) -/obj/item/weapon/reagent_containers/food/snacks/meatbun/Initialize() +/obj/item/weapon/reagent_containers/food/snacks/spicedmeatbun/Initialize() . = ..() reagents.add_reagent("protein", 3) bitesize = 5 @@ -6287,7 +6117,7 @@ reagents.add_reagent("honey", 5) bitesize = 4 -// SLICEABLE FOODS - SYNNONO MEME FOOD EXPANSION - Credit to Synnono from Aurorastation (again) +//Sliceables /obj/item/weapon/reagent_containers/food/snacks/sliceable/keylimepie name = "key lime pie" diff --git a/code/modules/food/food/snacks_ch.dm b/code/modules/food/food/snacks_ch.dm index 96c0625057..1fe3189ee7 100644 --- a/code/modules/food/food/snacks_ch.dm +++ b/code/modules/food/food/snacks_ch.dm @@ -248,4 +248,22 @@ nutriment_amt = 1 //Todo - Change numbers. nutriment_desc = list("a precious sweetness that needs protecting" = 2) //This is a WIP flavour, Could keep it if you don't mind the "gotta protect the precious cinnamon roll" joke -//TODO: Maybe butterscotch candies? \ No newline at end of file +//TODO: Maybe butterscotch candies? + +//So what if like yknow, you buy a bread tube and wow you actually get to test the new and improved producct. +/obj/item/weapon/reagent_containers/food/snacks/tastybread/sequel + name = "bread tube 2" + desc = "Bread in a tube. Chewy...and surprisingly tasty. Now with twice the bread to tube!" + filling_color = "#75491c" + nutriment_amt = 12 + nutriment_desc = list("bread" = 4, "sweetness" = 6) + +/obj/item/weapon/reagent_containers/food/snacks/tastybread/New() + ..() + if(prob(1)) + new /obj/item/weapon/reagent_containers/food/snacks/tastybread/sequel(src) + return QDEL_HINT_QUEUE + +/obj/item/weapon/reagent_containers/food/snacks/tastybread/sequel/Initialize() + . = ..() + bitesize = 4 diff --git a/code/modules/food/food/snacks_vr.dm b/code/modules/food/food/snacks_vr.dm index f881d9e43c..d28ea98bef 100644 --- a/code/modules/food/food/snacks_vr.dm +++ b/code/modules/food/food/snacks_vr.dm @@ -1,21 +1,4 @@ //I guess we're not always eating PEOPLE. -/* -/obj/item/weapon/reagent_containers/food/snacks/my_new_food - name = "cheesemeaties" - desc = "The cheese adds a good flavor. Not great. Just good" - icon = 'icons/obj/food_vr.dmi' - icon_state = "cheesemeaties" - trash = /obj/item/trash/plate //What I leave behind when eaten (waffles instead of plate = bigsquareplate) - center_of_mass = list("x"=16, "y"=16) //If your thing is too huge and you don't want it in the center. - nutriment_amt = 5 - nutriment_desc = list("gargonzola" = 2, "burning" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/my_new_food/Initialize() - ..() - reagents.add_reagent("protein", 2) //For meaty things. - bitesize = 3 //How many reagents to transfer per bite? -*/ - /obj/item/weapon/reagent_containers/food/snacks/sliceable/sushi name = "sushi roll" desc = "A whole sushi roll! Slice it up and enjoy with some soy sauce and wasabi." @@ -27,7 +10,7 @@ nutriment_amt = 15 /obj/item/weapon/reagent_containers/food/snacks/sliceable/sushi/Initialize() - ..() + . = ..() reagents.add_reagent("protein", 10) bitesize = 5 @@ -52,7 +35,7 @@ nutriment_desc = list("meat" = 2, "vegetables" = 2, "seasoning" = 5) /obj/item/weapon/reagent_containers/food/snacks/goulash/Initialize() - ..() + . = ..() reagents.add_reagent("protein", 3) //For meaty things. reagents.add_reagent("water", 5) @@ -66,7 +49,7 @@ nutriment_desc = list("vegetables" = 2, "seasoned meat" = 5) /obj/item/weapon/reagent_containers/food/snacks/donerkebab/Initialize() - ..() + . = ..() reagents.add_reagent("protein", 2) //For meaty things. @@ -80,7 +63,7 @@ nutriment_desc = list("cooked meat" = 5) /obj/item/weapon/reagent_containers/food/snacks/roastbeef/Initialize() - ..() + . = ..() reagents.add_reagent("protein", 4) //For meaty things. bitesize = 2 @@ -94,7 +77,7 @@ nutriment_desc = list("chocolate" = 4, "colors" = 2) /obj/item/weapon/reagent_containers/food/snacks/reishicup/Initialize() - ..() + . = ..() reagents.add_reagent("psilocybin", 3) bitesize = 6 @@ -113,8 +96,7 @@ foldable = null /obj/item/weapon/storage/box/wings/Initialize() - ..() - for(var/i=1 to startswith) + . = ..() update_icon() return @@ -126,14 +108,14 @@ /obj/item/weapon/reagent_containers/food/snacks/chickenwing name = "chicken wing" - desc = "What flavor even is this? Buffalo? Barbeque? Or something more exotic?" + desc = "What flavor even is this? Buffalo? Barbecue? Or something more exotic?" icon = 'icons/obj/food_vr.dmi' icon_state = "wing" nutriment_amt = 2 nutriment_desc = list("chicken" = 2, "unplacable flavor sauce" = 4) /obj/item/weapon/reagent_containers/food/snacks/chickenwing/Initialize() - ..() + . = ..() reagents.add_reagent("protein", 1) bitesize = 3 @@ -148,7 +130,7 @@ nutriment_desc = list("spicyness" = 4, "sourness" = 4, "tofu" = 1) /obj/item/weapon/reagent_containers/food/snacks/hotandsoursoup/Initialize() - ..() + . = ..() bitesize = 2 @@ -162,7 +144,7 @@ nutriment_desc = list("fried egg" = 2, "egg noodles" = 4) /obj/item/weapon/reagent_containers/food/snacks/kitsuneudon/Initialize() - ..() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/generalschicken @@ -175,7 +157,7 @@ nutriment_desc = list("sweet and spicy sauce" = 5, "chicken" = 3) /obj/item/weapon/reagent_containers/food/snacks/generalschicken/Initialize() - ..() + . = ..() reagents.add_reagent("protein", 4) bitesize = 2 @@ -187,7 +169,7 @@ center_of_mass = list("x"=16, "y"=10) /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat/Initialize() - ..() + . = ..() reagents.add_reagent("protein", 1) reagents.add_reagent("shockchem", 6) bitesize = 6 @@ -204,7 +186,7 @@ nutriment_desc = list("crunchy shell bits" = 5) /obj/item/weapon/reagent_containers/food/snacks/bugball/Initialize() - ..() + . = ..() reagents.add_reagent("protein", 1) reagents.add_reagent("carbon", 5) bitesize = 7 @@ -219,7 +201,7 @@ nutriment_desc = list("sparkles" = 5, "ancient inca culture" =3) /obj/item/weapon/reagent_containers/food/snacks/pillbug/Initialize() - ..() + . = ..() reagents.add_reagent("protein", 3) reagents.add_reagent("shockchem", 6) bitesize = 6 @@ -233,7 +215,7 @@ nutriment_desc = list("crunchy shell bits" = 5) /obj/item/weapon/reagent_containers/food/snacks/pillbug/Initialize() - ..() + . = ..() reagents.add_reagent("protein", 1) reagents.add_reagent("carbon", 5) bitesize = 3 @@ -248,7 +230,7 @@ nutriment_desc = list("brothy sweet goodness" = 5) /obj/item/weapon/reagent_containers/food/snacks/mammi/Initialize() - ..() + . = ..() bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/makaroni @@ -261,7 +243,7 @@ nutriment_desc = list("Cheese" = 5, "eggs" = 3, "pasta" = 4, "sparkles" = 3) /obj/item/weapon/reagent_containers/food/snacks/makaroni/Initialize() - ..() + . = ..() reagents.add_reagent("protein", 1) reagents.add_reagent("shockchem", 6) bitesize = 7 @@ -274,7 +256,7 @@ nutriment_amt = 5 /obj/item/weapon/reagent_containers/food/snacks/lobster/Initialize() - ..() + . = ..() bitesize = 0.1 /obj/item/weapon/reagent_containers/food/snacks/lobstercooked @@ -287,7 +269,7 @@ nutriment_desc = list("lemon" = 2, "lobster" = 5, "salad" = 2) /obj/item/weapon/reagent_containers/food/snacks/lobstercooked/Initialize() - ..() + . = ..() bitesize = 5 reagents.add_reagent("protein", 20) reagents.add_reagent("tricordrazine", 5) @@ -301,7 +283,7 @@ nutriment_amt = 5 /obj/item/weapon/reagent_containers/food/snacks/cuttlefish/Initialize() - ..() + . = ..() bitesize = 10 /obj/item/weapon/reagent_containers/food/snacks/cuttlefishcooked @@ -313,7 +295,7 @@ nutriment_desc = list("cuttlefish" = 5, "rubber" = 5, "grease" = 1) /obj/item/weapon/reagent_containers/food/snacks/cuttlefishcooked/Initialize() - ..() + . = ..() bitesize = 5 reagents.add_reagent("protein", 10) @@ -329,7 +311,7 @@ trash = /obj/item/weapon/reagent_containers/food/snacks/sliceable/monkfishremains /obj/item/weapon/reagent_containers/food/snacks/sliceable/monkfish/Initialize() - ..() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/monkfishfillet @@ -340,7 +322,7 @@ nutriment_amt = 5 /obj/item/weapon/reagent_containers/food/snacks/monkfishfillet/Initialize() - ..() + . = ..() bitesize = 3 reagents.add_reagent("protein", 1) @@ -354,7 +336,7 @@ trash = /obj/item/trash/fancyplate /obj/item/weapon/reagent_containers/food/snacks/monkfishcooked/Initialize() - ..() + . = ..() bitesize = 4 reagents.add_reagent("protein", 5) @@ -369,7 +351,7 @@ slices_num = 1 /obj/item/weapon/reagent_containers/food/snacks/sliceable/monkfishremains/Initialize() - ..() + . = ..() bitesize = 0.01 //impossible to eat reagents.add_reagent("carbon", 5) @@ -384,7 +366,7 @@ slices_num = 5 /obj/item/weapon/reagent_containers/food/snacks/sliceable/sharkchunk/Initialize() - ..() + . = ..() bitesize = 3 reagents.add_reagent("protein", 20) @@ -397,7 +379,7 @@ toxin_amount = null /obj/item/weapon/reagent_containers/food/snacks/sharkmeat/Initialize() - ..() + . = ..() bitesize = 3 reagents.add_reagent("protein", 2) @@ -411,7 +393,7 @@ nutriment_desc = list("manliness" = 1, "fish oil" = 2, "shark" = 2) /obj/item/weapon/reagent_containers/food/snacks/sharkmeatcooked/Initialize() - ..() + . = ..() bitesize = 3 reagents.add_reagent("protein", 8) @@ -425,7 +407,7 @@ nutriment_desc = list("salt" = 1, "fish oil" = 2, "spicy shark" = 2) /obj/item/weapon/reagent_containers/food/snacks/sharkmeatdip/Initialize() - ..() + . = ..() bitesize = 3 reagents.add_reagent("capsaicin", 4) reagents.add_reagent("protein", 4) @@ -440,7 +422,7 @@ nutriment_desc = list("viking spirit" = 1, "rot" = 2, "fermented sauce" = 2) /obj/item/weapon/reagent_containers/food/snacks/sharkmeatcubes/Initialize() - ..() + . = ..() bitesize = 10 reagents.add_reagent("potatojuice", 30) // for people who want to get fat, FAST. @@ -476,188 +458,6 @@ name = "wolpin cube" monkey_type = "Wolpin" -/* -/obj/item/weapon/reagent_containers/food/snacks/pizza/margfrozen - name = "frozen margherita pizza" - desc = "It's frozen rock solid, better thaw it in a microwave." - icon = 'icons/obj/food_vr.dmi' - icon_state = "margharita_pizza_frozen" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 15 - nutriment_desc = list("ice" = 5, "toothache" = 1, "frozen cheese" = 5, "frozen tomato" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/pizza/margfrozen/Initialize() - ..() - bitesize = 20 - //reagents.add_reagent("frostoil",3) - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margcargo - name = "Margherita" - desc = "The golden standard of pizzas, it looks drowned in tomato sauce." - icon = 'icons/obj/food_vr.dmi' - icon_state = "margharita_pizza_cargo" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/margcargo - slices_num = 6 - center_of_mass = list("x"=16, "y"=11) - nutriment_desc = list("pizza crust" = 10, "tomato" = 15, "cheese" = 5) - nutriment_amt = 10 - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margcargo/Initialize() - ..() - reagents.add_reagent("protein", 2) - reagents.add_reagent("tomatojuice", 10) - bitesize = 2 - //reagents.remove_reagent("frostoil",3) - -/obj/item/weapon/reagent_containers/food/snacks/slice/margcargo - name = "Margherita slice" - desc = "A slice of the classic pizza, it's hard not to spill any tomato juice on yourself." - icon = 'icons/obj/food_vr.dmi' - icon_state = "margharita_pizza_slice_cargo" - filling_color = "#BAA14C" - bitesize = 2 - center_of_mass = list("x"=16, "y"=13) - whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margcargo - -/obj/item/weapon/reagent_containers/food/snacks/slice/margcargo/filled - filled = TRUE - -/obj/item/weapon/reagent_containers/food/snacks/pizza/meatfrozen - name = "frozen meat pizza" - desc = "It's frozen rock solid, better thaw it in a microwave." - icon = 'icons/obj/food_vr.dmi' - icon_state = "meat_pizza_frozen" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 15 - nutriment_desc = list("ice" = 5, "toothache" = 1, "frozen meat" = 5, "frozen cow screams" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/pizza/meatfrozen/Initialize() - ..() - bitesize = 20 - //reagents.add_reagent("frostoil",3) - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatcargo - name = "Meatpizza" - desc = "A pizza with meat topping, some of it suspiciously pink." - icon = 'icons/obj/food_vr.dmi' - icon_state = "meat_pizza_cargo" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/meatcargo - slices_num = 6 - center_of_mass = list("x"=16, "y"=11) - nutriment_desc = list("meat" = 10, "beef" = 10, "squeaky pork" = 15, "longpig" = 5) - nutriment_amt = 10 - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatcargo/Initialize() - ..() - reagents.add_reagent("protein", 20) - reagents.add_reagent("tomatojuice", 6) - bitesize = 2 - //reagents.remove_reagent("frostoil",3) - -/obj/item/weapon/reagent_containers/food/snacks/slice/meatcargo - name = "Meatpizza slice" - desc = "A slice of a meaty pizza, there are some bits of supiciously pink meat." - icon = 'icons/obj/food_vr.dmi' - icon_state = "meat_pizza_slice_cargo" - filling_color = "#BAA14C" - bitesize = 2 - center_of_mass = list("x"=16, "y"=13) - whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatcargo - -/obj/item/weapon/reagent_containers/food/snacks/slice/meatcargo/filled - filled = TRUE - -/obj/item/weapon/reagent_containers/food/snacks/pizza/mushfrozen - name = "frozen mushroom pizza" - desc = "It's frozen rock solid, better thaw it in a microwave." - icon = 'icons/obj/food_vr.dmi' - icon_state = "mushroom_pizza_frozen" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 15 - nutriment_desc = list("ice" = 5, "toothache" = 1, "frozen mushrooms" = 5, "frozen cream" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/pizza/mushfrozen/Initialize() - ..() - bitesize = 20 - //reagents.add_reagent("frostoil",3) - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushcargo - name = "Mushroompizza" - desc = "Very special pizza, it looks to be drowned in cream." - icon = 'icons/obj/food_vr.dmi' - icon_state = "mushroom_pizza_cargo" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/mushcargo - slices_num = 6 - center_of_mass = list("x"=16, "y"=11) - nutriment_desc = list("pizza crust" = 10, "cheese" = 5, "creamy sauce" = 5, "mushroom" = 5) - nutriment_amt = 10 - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushcargo/Initialize() - ..() - reagents.add_reagent("protein", 4) - bitesize = 2 - //reagents.remove_reagent("frostoil",3) - -/obj/item/weapon/reagent_containers/food/snacks/slice/mushcargo - name = "Mushroompizza slice" - desc = "Very special pizza slice, it looks to be drowned in cream." - icon = 'icons/obj/food_vr.dmi' - icon_state = "mushroom_pizza_slice_cargo" - filling_color = "#BAA14C" - bitesize = 2 - center_of_mass = list("x"=16, "y"=13) - whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushcargo - -/obj/item/weapon/reagent_containers/food/snacks/slice/mushcargp/filled - filled = TRUE - -/obj/item/weapon/reagent_containers/food/snacks/pizza/vegfrozen - name = "frozen vegtable pizza" - desc = "It's frozen rock solid, better thaw it in a microwave." - icon = 'icons/obj/food_vr.dmi' - icon_state = "vegetable_pizza_frozen" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 15 - nutriment_desc = list("ice" = 5, "toothache" = 1, "frozen vegtable chunks" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/pizza/vegfrozen/Initialize() - ..() - bitesize = 20 - //reagents.add_reagent("frostoil",3) - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegcargo - name = "Vegetablepizza" - desc = "At least 10 of Tomato Sapiens were harmed during making this pizza." - icon = 'icons/obj/food_vr.dmi' - icon_state = "vegetable_pizza_cargo" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/vegcargo - slices_num = 6 - center_of_mass = list("x"=16, "y"=11) - nutriment_desc = list("pizza crust" = 10, "tomato" = 20, "cheese" = 5, "eggplant" = 5, "carrot" = 5, "corn" = 5) - nutriment_amt = 5 - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegcargo/Initialize() - ..() - reagents.add_reagent("protein", 4) - reagents.add_reagent("tomatojuice", 15) - reagents.add_reagent("imidazoline", 10) - bitesize = 2 - //reagents.remove_reagent("frostoil",3) - -/obj/item/weapon/reagent_containers/food/snacks/slice/vegcargo - name = "Vegtablepizza slice" - desc = "At least 10 of Tomato Sapiens were harmed during making this pizza." - icon = 'icons/obj/food_vr.dmi' - icon_state = "vegetable_pizza_slice_cargo" - filling_color = "#BAA14C" - bitesize = 2 - center_of_mass = list("x"=16, "y"=13) - whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegcargo - -/obj/item/weapon/reagent_containers/food/snacks/slice/vegcargo/filled - filled = TRUE -*/ - // food cubes /obj/item/weapon/reagent_containers/food/snacks/cube name = "protein cube" @@ -700,7 +500,7 @@ nutriment_desc = list("bitter chyme" = 50) /obj/item/weapon/reagent_containers/food/snacks/proteinslab/Initialize() - ..() + . = ..() reagents.add_reagent("protein", 30) /obj/item/weapon/reagent_containers/food/snacks/cube/nutriment @@ -759,3 +559,45 @@ /obj/item/weapon/reagent_containers/food/snacks/bun/Initialize() . = ..() + +//Readded Polaris Foods +/obj/item/weapon/reagent_containers/food/snacks/nachos + name = "nachos" + desc = "Chips from Old Mexico." + icon_state = "nachos" + nutriment_amt = 2 + nutriment_desc = list("salt" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/nachos/Initialize() + . = ..() + reagents.add_reagent("nutriment", 1) + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/cheesenachos + name = "cheesy nachos" + desc = "The delicious combination of nachos and melting cheese." + icon_state = "cheesenachos" + nutriment_amt = 5 + nutriment_desc = list("salt" = 2, "cheese" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/cheesenachos/Initialize() + . = ..() + reagents.add_reagent("nutriment", 5) + reagents.add_reagent("protein", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/onionsoup + name = "Onion Soup" + desc = "A soup with layers." + icon_state = "onionsoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#E0C367" + center_of_mass = list("x"=16, "y"=7) + nutriment_amt = 5 + nutriment_desc = list("onion" = 2, "soup" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/onionsoup/Initialize() + . = ..() + bitesize = 3 + + diff --git a/code/modules/food/kitchen/cooking_machines/oven.dm b/code/modules/food/kitchen/cooking_machines/oven.dm index ddb8372252..d58df7e6f6 100644 --- a/code/modules/food/kitchen/cooking_machines/oven.dm +++ b/code/modules/food/kitchen/cooking_machines/oven.dm @@ -1,156 +1,155 @@ -/obj/machinery/appliance/cooker/oven - name = "oven" - desc = "Cookies are ready, dear." - icon = 'icons/obj/cooking_machines.dmi' - icon_state = "ovenopen" - cook_type = "baked" - appliancetype = OVEN - food_color = "#A34719" - can_burn_food = TRUE - var/datum/looping_sound/oven/oven_loop - circuit = /obj/item/weapon/circuitboard/oven - cooked_sound = 'sound/machines/ding.ogg' - active_power_usage = 6 KILOWATTS - heating_power = 6 KILOWATTS - //Based on a double deck electric convection oven - - resistance = 12 KILOWATTS // Approx. 12 minutes to heat up. - idle_power_usage = 2 KILOWATTS - //uses ~30% power to stay warm - optimal_power = 0.8 // Oven cooks .2 faster than the default speed. - - light_x = 3 - light_y = 4 - max_contents = 5 - container_type = /obj/item/weapon/reagent_containers/cooking_container/oven - - stat = POWEROFF //Starts turned off - - var/open = FALSE // Start closed just so people don't try to preheat with it open, lol. - - output_options = list( - "Pizza" = /obj/item/weapon/reagent_containers/food/snacks/variable/pizza, - "Bread" = /obj/item/weapon/reagent_containers/food/snacks/variable/bread, - "Pie" = /obj/item/weapon/reagent_containers/food/snacks/variable/pie, - "Cake" = /obj/item/weapon/reagent_containers/food/snacks/variable/cake, - "Hot Pocket" = /obj/item/weapon/reagent_containers/food/snacks/variable/pocket, - "Kebab" = /obj/item/weapon/reagent_containers/food/snacks/variable/kebab, - "Waffles" = /obj/item/weapon/reagent_containers/food/snacks/variable/waffles, - "Cookie" = /obj/item/weapon/reagent_containers/food/snacks/variable/cookie, - "Donut" = /obj/item/weapon/reagent_containers/food/snacks/variable/donut, - ) - -/obj/machinery/appliance/cooker/oven/Initialize() - . = ..() - - oven_loop = new(list(src), FALSE) - -/obj/machinery/appliance/cooker/oven/Destroy() - QDEL_NULL(oven_loop) - return ..() - -/obj/machinery/appliance/cooker/oven/update_icon() - if(!open) - if(!stat) - icon_state = "ovenclosed_on" - if(cooking == TRUE) - icon_state = "ovenclosed_cooking" - if(oven_loop) - oven_loop.start(src) - else - icon_state = "ovenclosed_on" - if(oven_loop) - oven_loop.stop(src) - else - icon_state = "ovenclosed_off" - if(oven_loop) - oven_loop.stop(src) - else - icon_state = "ovenopen" - if(oven_loop) - oven_loop.stop(src) - ..() - -/obj/machinery/appliance/cooker/oven/AltClick(var/mob/user) - try_toggle_door(user) - user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) - -/obj/machinery/appliance/cooker/oven/verb/toggle_door() - set src in oview(1) - set category = "Object" - set name = "Open/close oven door" - - try_toggle_door(usr) - -/obj/machinery/appliance/cooker/oven/proc/try_toggle_door(mob/user) - if(!isliving(usr) || isAI(user)) - return - - if(!usr.IsAdvancedToolUser()) - to_chat(user, "You lack the dexterity to do that.") - return - - if(!Adjacent(usr)) - to_chat(user, "You can't reach the [src] from there, get closer!") - return - - if(open) - open = FALSE - loss = (heating_power / resistance) * 0.5 - cooking = TRUE - else - open = TRUE - loss = (heating_power / resistance) * 2 // Halve oven heat loss. - //When the oven door is opened, heat is lost MUCH faster and you stop cooking (because the door is open) - cooking = FALSE - - playsound(src, 'sound/machines/hatch_open.ogg', 20, 1) - to_chat(user, "You [open ? "open" : "close"] the oven door.") - update_icon() - -/obj/machinery/appliance/cooker/oven/proc/manip(var/obj/item/I) - // check if someone's trying to manipulate the machine - - if(I.is_crowbar() || I.is_screwdriver() || istype(I, /obj/item/weapon/storage/part_replacer)) - return TRUE - else - return FALSE - -/obj/machinery/appliance/cooker/oven/can_insert(var/obj/item/I, var/mob/user) - if(!open && !manip(I)) - to_chat(user, "You can't put anything in while the door is closed!") - return 0 - - else - return ..() - - -//If an oven's door is open it will lose heat every proc, even if it also gained it -//But dont call equalize twice in one stack. A return value of -1 from the parent indicates equalize was already called -/obj/machinery/appliance/cooker/oven/heat_up() - .=..() - if(open && . != -1) - var/turf/T = get_turf(src) - if(temperature > T.temperature) - equalize_temperature() - -/obj/machinery/appliance/cooker/oven/can_remove_items(var/mob/user, show_warning = TRUE) - if(!open) - if(show_warning) - to_chat(user, "You can't take anything out while the door is closed!") - return 0 - - else - return ..() - - -//Oven has lots of recipes and combine options. The chance for interference is high, so -//If a combine target is set the oven will do it instead of checking recipes -/obj/machinery/appliance/cooker/oven/finish_cooking(var/datum/cooking_item/CI) - if(CI.combine_target) - CI.result_type = 3//Combination type. We're making something out of our ingredients - visible_message("\The [src] pings!") - combination_cook(CI) - return - else - ..() \ No newline at end of file +/obj/machinery/appliance/cooker/oven + name = "oven" + desc = "Cookies are ready, dear." + icon = 'icons/obj/cooking_machines.dmi' + icon_state = "ovenopen" + cook_type = "baked" + appliancetype = OVEN + food_color = "#A34719" + can_burn_food = TRUE + var/datum/looping_sound/oven/oven_loop + circuit = /obj/item/weapon/circuitboard/oven + active_power_usage = 6 KILOWATTS + heating_power = 6 KILOWATTS + //Based on a double deck electric convection oven + + resistance = 12 KILOWATTS // Approx. 12 minutes to heat up. + idle_power_usage = 2 KILOWATTS + //uses ~30% power to stay warm + optimal_power = 0.8 // Oven cooks .2 faster than the default speed. + + light_x = 3 + light_y = 4 + max_contents = 5 + container_type = /obj/item/weapon/reagent_containers/cooking_container/oven + + stat = POWEROFF //Starts turned off + + var/open = FALSE // Start closed just so people don't try to preheat with it open, lol. + + output_options = list( + "Pizza" = /obj/item/weapon/reagent_containers/food/snacks/variable/pizza, + "Bread" = /obj/item/weapon/reagent_containers/food/snacks/variable/bread, + "Pie" = /obj/item/weapon/reagent_containers/food/snacks/variable/pie, + "Cake" = /obj/item/weapon/reagent_containers/food/snacks/variable/cake, + "Hot Pocket" = /obj/item/weapon/reagent_containers/food/snacks/variable/pocket, + "Kebab" = /obj/item/weapon/reagent_containers/food/snacks/variable/kebab, + "Waffles" = /obj/item/weapon/reagent_containers/food/snacks/variable/waffles, + "Cookie" = /obj/item/weapon/reagent_containers/food/snacks/variable/cookie, + "Donut" = /obj/item/weapon/reagent_containers/food/snacks/variable/donut, + ) + +/obj/machinery/appliance/cooker/oven/Initialize() + . = ..() + + oven_loop = new(list(src), FALSE) + +/obj/machinery/appliance/cooker/oven/Destroy() + QDEL_NULL(oven_loop) + return ..() + +/obj/machinery/appliance/cooker/oven/update_icon() + if(!open) + if(!stat) + icon_state = "ovenclosed_on" + if(cooking == TRUE) + icon_state = "ovenclosed_cooking" + if(oven_loop) + oven_loop.start(src) + else + icon_state = "ovenclosed_on" + if(oven_loop) + oven_loop.stop(src) + else + icon_state = "ovenclosed_off" + if(oven_loop) + oven_loop.stop(src) + else + icon_state = "ovenopen" + if(oven_loop) + oven_loop.stop(src) + ..() + +/obj/machinery/appliance/cooker/oven/AltClick(var/mob/user) + try_toggle_door(user) + user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) + +/obj/machinery/appliance/cooker/oven/verb/toggle_door() + set src in oview(1) + set category = "Object" + set name = "Open/close oven door" + + try_toggle_door(usr) + +/obj/machinery/appliance/cooker/oven/proc/try_toggle_door(mob/user) + if(!isliving(usr) || isAI(user)) + return + + if(!usr.IsAdvancedToolUser()) + to_chat(user, "You lack the dexterity to do that.") + return + + if(!Adjacent(usr)) + to_chat(user, "You can't reach the [src] from there, get closer!") + return + + if(open) + open = FALSE + loss = (heating_power / resistance) * 0.5 + cooking = TRUE + else + open = TRUE + loss = (heating_power / resistance) * 4 + //When the oven door is opened, heat is lost MUCH faster and you stop cooking (because the door is open) + cooking = FALSE + + playsound(src, 'sound/machines/hatch_open.ogg', 20, 1) + to_chat(user, "You [open? "open":"close"] the oven door") + update_icon() + +/obj/machinery/appliance/cooker/oven/proc/manip(var/obj/item/I) + // check if someone's trying to manipulate the machine + + if(I.is_crowbar() || I.is_screwdriver() || istype(I, /obj/item/weapon/storage/part_replacer)) + return TRUE + else + return FALSE + +/obj/machinery/appliance/cooker/oven/can_insert(var/obj/item/I, var/mob/user) + if(!open && !manip(I)) + to_chat(user, "You can't put anything in while the door is closed!") + return 0 + + else + return ..() + + +//If an oven's door is open it will lose heat every proc, even if it also gained it +//But dont call equalize twice in one stack. A return value of -1 from the parent indicates equalize was already called +/obj/machinery/appliance/cooker/oven/heat_up() + .=..() + if(open && . != -1) + var/turf/T = get_turf(src) + if(temperature > T.temperature) + equalize_temperature() + +/obj/machinery/appliance/cooker/oven/can_remove_items(var/mob/user, show_warning = TRUE) + if(!open) + if(show_warning) + to_chat(user, "You can't take anything out while the door is closed!") + return 0 + + else + return ..() + + +//Oven has lots of recipes and combine options. The chance for interference is high, so +//If a combine target is set the oven will do it instead of checking recipes +/obj/machinery/appliance/cooker/oven/finish_cooking(var/datum/cooking_item/CI) + if(CI.combine_target) + CI.result_type = 3//Combination type. We're making something out of our ingredients + visible_message("\The [src] pings!") + combination_cook(CI) + return + else + ..() diff --git a/code/modules/food/recipes_fryer.dm b/code/modules/food/recipes_fryer.dm index 1d739ec69d..ba6884b10b 100644 --- a/code/modules/food/recipes_fryer.dm +++ b/code/modules/food/recipes_fryer.dm @@ -29,10 +29,17 @@ /datum/recipe/bellefritter appliance = FRYER - reagents = list("sugar" = 5, "batter" = 10) + coating = /datum/reagent/nutriment/coating/batter + reagents = list("sugar" = 5) items = list(/obj/item/weapon/reagent_containers/food/snacks/frostbelle) result = /obj/item/weapon/reagent_containers/food/snacks/bellefritter +/datum/recipe/onionrings + appliance = FRYER + coating = /datum/reagent/nutriment/coating/batter + fruit = list("onion" = 1) + result = /obj/item/weapon/reagent_containers/food/snacks/onionrings + //Meaty Recipes //==================== /datum/recipe/cubancarp @@ -86,6 +93,31 @@ reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product result = /obj/item/weapon/reagent_containers/food/snacks/friedmushroom +/datum/recipe/fishfingers + items = list( + /obj/item/weapon/reagent_containers/food/snacks/carpmeat, + ) + coating = /datum/reagent/nutriment/coating/batter + result = /obj/item/weapon/reagent_containers/food/snacks/fishfingers + reagent_mix = RECIPE_REAGENT_REPLACE + +/datum/recipe/corn_dog + appliance = FRYER + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sausage + ) + fruit = list("corn" = 1) + coating = /datum/reagent/nutriment/coating/batter + result = /obj/item/weapon/reagent_containers/food/snacks/corn_dog + +/datum/recipe/sweet_and_sour + appliance = FRYER + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bacon, + /obj/item/weapon/reagent_containers/food/snacks/cutlet + ) + reagents = list("soysauce" = 5, "batter" = 10) + result = /obj/item/weapon/reagent_containers/food/snacks/sweet_and_sour //Sweet Recipes. //================== @@ -145,24 +177,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pisanggoreng coating = /datum/reagent/nutriment/coating/batter -/datum/recipe/corn_dog - appliance = FRYER - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sausage - ) - fruit = list("corn" = 1) - coating = /datum/reagent/nutriment/coating/batter - result = /obj/item/weapon/reagent_containers/food/snacks/corn_dog - -/datum/recipe/sweet_and_sour - appliance = FRYER - items = list( - /obj/item/weapon/reagent_containers/food/snacks/bacon, - /obj/item/weapon/reagent_containers/food/snacks/cutlet - ) - reagents = list("soysauce" = 5, "batter" = 10) - result = /obj/item/weapon/reagent_containers/food/snacks/sweet_and_sour - +//VOREStation Add Start /datum/recipe/generalschicken appliance = FRYER reagents = list("capsaicin" = 2, "sugar" = 2, "batter" = 10) @@ -182,3 +197,4 @@ /obj/item/weapon/reagent_containers/food/snacks/meat ) result = /obj/item/weapon/storage/box/wings //This is kinda like the donut box. +//VOREStation Add End diff --git a/code/modules/food/recipes_fryer_vr.dm b/code/modules/food/recipes_fryer_vr.dm new file mode 100644 index 0000000000..a9a4bb3e71 --- /dev/null +++ b/code/modules/food/recipes_fryer_vr.dm @@ -0,0 +1,19 @@ +/datum/recipe/generalschicken + appliance = FRYER + reagents = list("capsaicin" = 2, "sugar" = 2, "batter" = 10) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/generalschicken + +/datum/recipe/chickenwings + appliance = FRYER + reagents = list("capsaicin" = 5, "batter" = 10) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat + ) + result = /obj/item/weapon/storage/box/wings //This is kinda like the donut box. diff --git a/code/modules/food/recipes_grill.dm b/code/modules/food/recipes_grill.dm index 1198660ee7..e51aca24cc 100644 --- a/code/modules/food/recipes_grill.dm +++ b/code/modules/food/recipes_grill.dm @@ -13,7 +13,7 @@ /obj/item/weapon/reagent_containers/food/snacks/meat //do not place this recipe before /datum/recipe/humanburger ) result = /obj/item/weapon/reagent_containers/food/snacks/monkeyburger - + /datum/recipe/syntiburger appliance = GRILL items = list( @@ -85,7 +85,7 @@ /obj/item/clothing/head/beret ) result = /obj/item/weapon/reagent_containers/food/snacks/mimeburger - + /datum/recipe/mouseburger appliance = GRILL items = list( @@ -93,7 +93,7 @@ /obj/item/weapon/holder/mouse ) result = /obj/item/weapon/reagent_containers/food/snacks/mouseburger - + /datum/recipe/bunbun appliance = GRILL items = list( @@ -109,7 +109,7 @@ /obj/item/weapon/reagent_containers/food/snacks/sausage ) result = /obj/item/weapon/reagent_containers/food/snacks/hotdog - + /datum/recipe/humankabob appliance = GRILL items = list( @@ -127,7 +127,7 @@ /obj/item/weapon/reagent_containers/food/snacks/meat, ) result = /obj/item/weapon/reagent_containers/food/snacks/monkeykabob - + /datum/recipe/monkeykabob appliance = GRILL items = list( @@ -154,7 +154,7 @@ /obj/item/weapon/reagent_containers/food/snacks/tofu, ) result = /obj/item/weapon/reagent_containers/food/snacks/tofukabob - + /datum/recipe/fakespellburger appliance = GRILL items = list( @@ -182,7 +182,7 @@ reagents = list("egg" = 3) reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/weapon/reagent_containers/food/snacks/bigbiteburger - + /datum/recipe/superbiteburger appliance = GRILL fruit = list("tomato" = 1) @@ -195,7 +195,7 @@ /obj/item/weapon/reagent_containers/food/snacks/boiledegg, ) result = /obj/item/weapon/reagent_containers/food/snacks/superbiteburger - + /datum/recipe/slimeburger appliance = GRILL reagents = list("slimejelly" = 5) @@ -211,7 +211,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun ) result = /obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry - + /datum/recipe/bearburger appliance = GRILL items = list( @@ -229,7 +229,17 @@ /obj/item/weapon/reagent_containers/food/snacks/bacon ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/bacon - + +/datum/recipe/omelette + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + ) + reagents = list("egg" = 6) + reagent_mix = RECIPE_REAGENT_REPLACE + result = /obj/item/weapon/reagent_containers/food/snacks/omelette + /datum/recipe/omurice appliance = GRILL reagents = list("rice" = 5, "ketchup" = 5, "egg" = 3) @@ -244,3 +254,75 @@ appliance = GRILL reagents = list("rice" = 5, "ketchup" = 5, "sodiumchloride" = 5, "egg" = 3) result = /obj/item/weapon/reagent_containers/food/snacks/omurice/face + +/datum/recipe/meatsteak + appliance = GRILL + reagents = list("sodiumchloride" = 1, "blackpepper" = 1) + items = list(/obj/item/weapon/reagent_containers/food/snacks/meat) + result = /obj/item/weapon/reagent_containers/food/snacks/meatsteak + +/datum/recipe/honeytoast + appliance = GRILL + reagents = list("honey" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/slice/bread + ) + reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product + result = /obj/item/weapon/reagent_containers/food/snacks/honeytoast + +/datum/recipe/grilled_carp + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/carpmeat, + /obj/item/weapon/reagent_containers/food/snacks/carpmeat, + /obj/item/weapon/reagent_containers/food/snacks/carpmeat, + /obj/item/weapon/reagent_containers/food/snacks/carpmeat, + /obj/item/weapon/reagent_containers/food/snacks/carpmeat, + /obj/item/weapon/reagent_containers/food/snacks/carpmeat + ) + reagents = list("spacespice" = 1) + fruit = list("cabbage" = 1, "lime" = 1) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/grilled_carp + +/datum/recipe/grilledcheese + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/slice/bread, + /obj/item/weapon/reagent_containers/food/snacks/slice/bread, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/grilledcheese + +/datum/recipe/toastedsandwich + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sandwich + ) + result = /obj/item/weapon/reagent_containers/food/snacks/toastedsandwich + +/datum/recipe/cheese_cracker + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/spreads/butter, + /obj/item/weapon/reagent_containers/food/snacks/slice/bread, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + reagents = list("spacespice" = 1) + result = /obj/item/weapon/reagent_containers/food/snacks/cheese_cracker + result_quantity = 4 + +/datum/recipe/bacongrill + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/spreads, + /obj/item/weapon/reagent_containers/food/snacks/rawbacon + ) + result = /obj/item/weapon/reagent_containers/food/snacks/bacon + +/datum/recipe/chickenfillet //Also just combinable, like burgers and hot dogs. + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/chickenkatsu, + /obj/item/weapon/reagent_containers/food/snacks/bun + ) + result = /obj/item/weapon/reagent_containers/food/snacks/chickenfillet diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index 216eb0303c..6780a72fe4 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -43,14 +43,6 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/devilledegg -/datum/recipe/waffles - reagents = list("sugar" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough - ) - result = /obj/item/weapon/reagent_containers/food/snacks/waffles - /datum/recipe/donkpocket items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, @@ -72,15 +64,6 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/donkpocket //SPECIAL -/datum/recipe/omelette - items = list( - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - reagents = list("egg" = 6) - reagent_mix = RECIPE_REAGENT_REPLACE - result = /obj/item/weapon/reagent_containers/food/snacks/omelette - /datum/recipe/muffin reagents = list("milk" = 5, "sugar" = 5) reagent_mix = RECIPE_REAGENT_REPLACE @@ -145,10 +128,6 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/microchips -/datum/recipe/mashedpotato - fruit = list("potato" = 1) - result = /obj/item/weapon/reagent_containers/food/snacks/mashedpotato - /datum/recipe/bangersandmash items = list( /obj/item/weapon/reagent_containers/food/snacks/mashedpotato, @@ -182,25 +161,11 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/fortunecookie -/datum/recipe/meatsteak - reagents = list("sodiumchloride" = 1, "blackpepper" = 1) - items = list(/obj/item/weapon/reagent_containers/food/snacks/meat) - result = /obj/item/weapon/reagent_containers/food/snacks/meatsteak - /datum/recipe/syntisteak reagents = list("sodiumchloride" = 1, "blackpepper" = 1) items = list(/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh) result = /obj/item/weapon/reagent_containers/food/snacks/meatsteak -/datum/recipe/pizzahawaiian - fruit = list("tomato" = 1, "pineapple" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/cutlet, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/pineapple - /datum/recipe/spacylibertyduff reagents = list("water" = 5, "vodka" = 5, "psilocybin" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff @@ -260,12 +225,6 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/sandwich -/datum/recipe/toastedsandwich - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sandwich - ) - result = /obj/item/weapon/reagent_containers/food/snacks/toastedsandwich - /datum/recipe/peanutbutterjellysandwich reagents = list("cherryjelly" = 5, "peanutbutter" = 5) items = list( @@ -274,13 +233,6 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/peanutbutter -/datum/recipe/grilledcheese - items = list( - /obj/item/weapon/reagent_containers/food/snacks/slice/bread, - /obj/item/weapon/reagent_containers/food/snacks/slice/bread, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/grilledcheese /datum/recipe/tomatosoup fruit = list("tomato" = 2) @@ -379,11 +331,6 @@ I said no! reagents = list("water" = 5, "sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/candiedapple -/datum/recipe/applepie - fruit = list("apple" = 1) - items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough) - result = /obj/item/weapon/reagent_containers/food/snacks/applepie - /datum/recipe/twobread reagents = list("wine" = 5) items = list( @@ -439,30 +386,6 @@ I said no! result = /obj/item/weapon/reagent_containers/food/snacks/sausage result_quantity = 2 -/datum/recipe/fishfingers - reagents = list("flour" = 10, "egg" = 3) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/carpmeat, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/fishfingers - reagent_mix = RECIPE_REAGENT_REPLACE - -/datum/recipe/zestfish - fruit = list("lemon" = 1) - reagents = list("sodiumchloride" = 3) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/carpmeat - ) - result = /obj/item/weapon/reagent_containers/food/snacks/zestfish - -/datum/recipe/limezestfish - fruit = list("lime" = 1) - reagents = list("sodiumchloride" = 3) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/carpmeat - ) - result = /obj/item/weapon/reagent_containers/food/snacks/zestfish - /datum/recipe/kudzudonburi fruit = list("kudzu" = 1) reagents = list("rice" = 10) @@ -494,11 +417,7 @@ I said no! /datum/recipe/chawanmushi fruit = list("mushroom" = 1) - reagents = list("water" = 5, "soysauce" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg - ) + reagents = list("water" = 5, "soysauce" = 5, "egg" = 6) result = /obj/item/weapon/reagent_containers/food/snacks/chawanmushi /datum/recipe/beetsoup @@ -545,17 +464,9 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/stuffing -/datum/recipe/tofurkey - items = list( - /obj/item/weapon/reagent_containers/food/snacks/tofu, - /obj/item/weapon/reagent_containers/food/snacks/tofu, - /obj/item/weapon/reagent_containers/food/snacks/stuffing, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/tofurkey - /datum/recipe/mashedpotato items = list( - /obj/item/weapon/reagent_containers/food/snacks/spreads/butter // to prevent conflicts with yellow curry + /obj/item/weapon/reagent_containers/food/snacks/spreads ) fruit = list("potato" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/mashedpotato @@ -574,27 +485,11 @@ I said no! ) result = /obj/item/weapon/ruinedvirusdish -/datum/recipe/onionrings - fruit = list("onion" = 1) - reagents = list("flour" = 5) - result = /obj/item/weapon/reagent_containers/food/snacks/onionrings /datum/recipe/onionsoup fruit = list("onion" = 1) reagents = list("water" = 10) - result = /obj/item/weapon/reagent_containers/food/snacks/onionsoup - -////////////////////////////////////////// -// bs12 food port stuff -////////////////////////////////////////// - -/datum/recipe/taco - items = list( - /obj/item/weapon/reagent_containers/food/snacks/doughslice, - /obj/item/weapon/reagent_containers/food/snacks/cutlet, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge - ) - result = /obj/item/weapon/reagent_containers/food/snacks/taco + result = /obj/item/weapon/reagent_containers/food/snacks/soup/onion /datum/recipe/microwavebun items = list( @@ -643,18 +538,6 @@ I said no! reagents = list("sugar" = 5, "frostoil" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/mint -//////////////////////// -// TGstation food ports -//////////////////////// - -/datum/recipe/meatbun - fruit = list("cabbage" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meatball, - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/meatbun - /datum/recipe/sashimi reagents = list("soysauce" = 5) items = list( @@ -739,53 +622,6 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/porkbowl -/datum/recipe/microwavetortilla - reagents = list("flour" = 5, "water" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough - ) - result = /obj/item/weapon/reagent_containers/food/snacks/tortilla - -/datum/recipe/meatburrito - fruit = list("soybeans" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/tortilla, - /obj/item/weapon/reagent_containers/food/snacks/cutlet, - /obj/item/weapon/reagent_containers/food/snacks/cutlet - ) - result = /obj/item/weapon/reagent_containers/food/snacks/meatburrito - -/datum/recipe/cheeseburrito - fruit = list("soybeans" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/tortilla, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge - ) - result = /obj/item/weapon/reagent_containers/food/snacks/cheeseburrito - -/datum/recipe/fuegoburrito - fruit = list("soybeans" = 1, "chili" = 2) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/tortilla - ) - result = /obj/item/weapon/reagent_containers/food/snacks/fuegoburrito - -/datum/recipe/nachos - reagents = list("sodiumchloride" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/tortilla - ) - result = /obj/item/weapon/reagent_containers/food/snacks/nachos - -/datum/recipe/cheesenachos - reagents = list("sodiumchloride" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/tortilla, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge - ) - result = /obj/item/weapon/reagent_containers/food/snacks/cheesenachos - /datum/recipe/cubannachos fruit = list("chili" = 1) reagents = list("ketchup" = 5) @@ -861,15 +697,10 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/bageltwo -///////////////////////////////////////////////////////////// -//Synnono Meme Foods -// -//Most recipes replace reagents with RECIPE_REAGENT_REPLACE -//to simplify the end product and balance the amount of reagents +//Recipes that use RECIPE_REAGENT_REPLACE will +//simplify the end product and balance the amount of reagents //in some foods. Many require the space spice reagent/condiment //to reduce the risk of future recipe conflicts. -///////////////////////////////////////////////////////////// - /datum/recipe/redcurry reagents = list("cream" = 5, "spacespice" = 2, "rice" = 5) @@ -934,13 +765,6 @@ I said no! reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product result = /obj/item/weapon/reagent_containers/food/snacks/lomein -/datum/recipe/chickenfillet //Also just combinable, like burgers and hot dogs. - items = list( - /obj/item/weapon/reagent_containers/food/snacks/chickenkatsu, - /obj/item/weapon/reagent_containers/food/snacks/bun - ) - result = /obj/item/weapon/reagent_containers/food/snacks/chickenfillet - /datum/recipe/chickennoodlesoup fruit = list("carrot" = 1) reagents = list("water" = 10) @@ -964,45 +788,6 @@ I said no! reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product result = /obj/item/weapon/reagent_containers/food/snacks/chilicheesefries -/datum/recipe/meatbun - reagents = list("spacespice" = 1, "water" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/doughslice, - /obj/item/weapon/reagent_containers/food/snacks/rawcutlet - ) - reagent_mix = RECIPE_REAGENT_REPLACE //Water used up in cooking - result = /obj/item/weapon/reagent_containers/food/snacks/meatbun - -/datum/recipe/custardbun - reagents = list("spacespice" = 1, "water" = 5, "egg" = 3) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/doughslice - ) - reagent_mix = RECIPE_REAGENT_REPLACE //Water, egg used up in cooking - result = /obj/item/weapon/reagent_containers/food/snacks/custardbun - -/datum/recipe/chickenmomo - reagents = list("spacespice" = 2, "water" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/doughslice, - /obj/item/weapon/reagent_containers/food/snacks/doughslice, - /obj/item/weapon/reagent_containers/food/snacks/doughslice, - /obj/item/weapon/reagent_containers/food/snacks/meat/chicken - ) - reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product - result = /obj/item/weapon/reagent_containers/food/snacks/chickenmomo - -/datum/recipe/veggiemomo - reagents = list("spacespice" = 2, "water" = 5) - fruit = list("carrot" = 1, "cabbage" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/doughslice, - /obj/item/weapon/reagent_containers/food/snacks/doughslice, - /obj/item/weapon/reagent_containers/food/snacks/doughslice - ) - reagent_mix = RECIPE_REAGENT_REPLACE //Get that water outta here - result = /obj/item/weapon/reagent_containers/food/snacks/veggiemomo - /datum/recipe/risotto reagents = list("wine" = 5, "rice" = 10, "spacespice" = 1) fruit = list("mushroom" = 1) @@ -1017,32 +802,6 @@ I said no! reagent_mix = RECIPE_REAGENT_REPLACE //Get that water outta here result = /obj/item/weapon/reagent_containers/food/snacks/poachedegg -/datum/recipe/honeytoast - reagents = list("honey" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/slice/bread - ) - reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product - result = /obj/item/weapon/reagent_containers/food/snacks/honeytoast - - -/datum/recipe/donerkebab - fruit = list("tomato" = 1, "cabbage" = 1) - reagents = list("sodiumchloride" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meatsteak, - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough - ) - result = /obj/item/weapon/reagent_containers/food/snacks/donerkebab - - -/datum/recipe/sashimi - reagents = list("soysauce" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/carpmeat - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sashimi - /datum/recipe/nugget reagents = list("flour" = 5) items = list( @@ -1052,12 +811,15 @@ I said no! result = /obj/item/weapon/reagent_containers/food/snacks/nugget // Chip update -/datum/recipe/tortila - reagents = list("flour" = 5,"water" = 5) +/datum/recipe/microwavetortilla + reagents = list("flour" = 5, "water" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough + ) result = /obj/item/weapon/reagent_containers/food/snacks/tortilla reagent_mix = RECIPE_REAGENT_REPLACE //no gross flour or water -/datum/recipe/taconew +/datum/recipe/taco items = list( /obj/item/weapon/reagent_containers/food/snacks/tortilla, /obj/item/weapon/reagent_containers/food/snacks/cutlet, @@ -1119,36 +881,61 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/burrito_vegan -/datum/recipe/burrito_spicy - fruit = list("chili" = 2) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/burrito - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burrito_spicy - /datum/recipe/burrito_cheese items = list( - /obj/item/weapon/reagent_containers/food/snacks/burrito, + /obj/item/weapon/reagent_containers/food/snacks/tortilla, + /obj/item/weapon/reagent_containers/food/snacks/meatball, + /obj/item/weapon/reagent_containers/food/snacks/meatball, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge ) result = /obj/item/weapon/reagent_containers/food/snacks/burrito_cheese /datum/recipe/burrito_cheese_spicy - fruit = list("chili" = 2) + fruit = list("chili" = 2, "soybeans" = 1) items = list( - /obj/item/weapon/reagent_containers/food/snacks/burrito, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + /obj/item/weapon/reagent_containers/food/snacks/tortilla, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, ) result = /obj/item/weapon/reagent_containers/food/snacks/burrito_cheese_spicy /datum/recipe/burrito_hell - fruit = list("chili" = 10) + fruit = list("soybeans" = 1, "chili" = 10) + reagents = list("spacespice" = 1) items = list( - /obj/item/weapon/reagent_containers/food/snacks/burrito_spicy + /obj/item/weapon/reagent_containers/food/snacks/tortilla, + /obj/item/weapon/reagent_containers/food/snacks/meatball, + /obj/item/weapon/reagent_containers/food/snacks/meatball ) + result result = /obj/item/weapon/reagent_containers/food/snacks/burrito_hell reagent_mix = RECIPE_REAGENT_REPLACE //Already hot sauce +/datum/recipe/meatburrito + fruit = list("soybeans" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/tortilla, + /obj/item/weapon/reagent_containers/food/snacks/cutlet, + /obj/item/weapon/reagent_containers/food/snacks/cutlet + ) + result = /obj/item/weapon/reagent_containers/food/snacks/meatburrito + +/datum/recipe/cheeseburrito + fruit = list("soybeans" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/tortilla, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/cheeseburrito + +/datum/recipe/fuegoburrito + fruit = list("soybeans" = 1, "chili" = 2) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/tortilla + ) + result = /obj/item/weapon/reagent_containers/food/snacks/fuegoburrito + /datum/recipe/breakfast_wrap items = list( /obj/item/weapon/reagent_containers/food/snacks/bacon, @@ -1160,18 +947,16 @@ I said no! /datum/recipe/burrito_mystery items = list( - /obj/item/weapon/reagent_containers/food/snacks/burrito, + /obj/item/weapon/reagent_containers/food/snacks/tortilla, /obj/item/weapon/reagent_containers/food/snacks/mysterysoup ) result = /obj/item/weapon/reagent_containers/food/snacks/burrito_mystery -//Ligger food, and also bacon. - -/datum/recipe/bacon +/datum/recipe/baconmicrowave items = list( /obj/item/weapon/reagent_containers/food/snacks/rawbacon ) - result = /obj/item/weapon/reagent_containers/food/snacks/bacon + result = /obj/item/weapon/reagent_containers/food/snacks/bacon/microwave /datum/recipe/chilied_eggs items = list( @@ -1212,9 +997,9 @@ I said no! /datum/recipe/father_breakfast items = list( /obj/item/weapon/reagent_containers/food/snacks/sausage, - /obj/item/weapon/reagent_containers/food/snacks/omelette, /obj/item/weapon/reagent_containers/food/snacks/meatsteak ) + reagents = list("egg" = 6) result = /obj/item/weapon/reagent_containers/food/snacks/father_breakfast /datum/recipe/stuffed_meatball @@ -1229,24 +1014,11 @@ I said no! items = list( /obj/item/weapon/reagent_containers/food/snacks/meatball, /obj/item/weapon/reagent_containers/food/snacks/meatball, - /obj/item/weapon/reagent_containers/food/snacks/meatball, - /obj/item/weapon/reagent_containers/food/snacks/omelette + /obj/item/weapon/reagent_containers/food/snacks/meatball ) + reagents = list("egg" = 6) result = /obj/item/weapon/reagent_containers/food/snacks/egg_pancake -/datum/recipe/grilled_carp - items = list( - /obj/item/weapon/reagent_containers/food/snacks/carpmeat, - /obj/item/weapon/reagent_containers/food/snacks/carpmeat, - /obj/item/weapon/reagent_containers/food/snacks/carpmeat, - /obj/item/weapon/reagent_containers/food/snacks/carpmeat, - /obj/item/weapon/reagent_containers/food/snacks/carpmeat, - /obj/item/weapon/reagent_containers/food/snacks/carpmeat - ) - reagents = list("spacespice" = 1) - fruit = list("cabbage" = 1, "lime" = 1) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/grilled_carp - /datum/recipe/bacon_stick items = list( /obj/item/weapon/reagent_containers/food/snacks/bacon, @@ -1254,16 +1026,6 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/bacon_stick -/datum/recipe/cheese_cracker - items = list( - /obj/item/weapon/reagent_containers/food/snacks/spreads/butter, - /obj/item/weapon/reagent_containers/food/snacks/slice/bread, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge - ) - reagents = list("spacespice" = 1) - result = /obj/item/weapon/reagent_containers/food/snacks/cheese_cracker - result_quantity = 4 - /datum/recipe/bacon_and_eggs items = list( /obj/item/weapon/reagent_containers/food/snacks/bacon, @@ -1298,114 +1060,6 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/blt -/datum/recipe/onionrings - fruit = list("onion" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/doughslice - ) - result = /obj/item/weapon/reagent_containers/food/snacks/onionrings - -/datum/recipe/berrymuffin - reagents = list("milk" = 5, "sugar" = 5) - reagent_mix = RECIPE_REAGENT_REPLACE - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough - ) - fruit = list("berries" = 1) - result = /obj/item/weapon/reagent_containers/food/snacks/muffin - -/datum/recipe/onionsoup - fruit = list("onion" = 1) - reagents = list("water" = 10) - result = /obj/item/weapon/reagent_containers/food/snacks/soup/onion - -/datum/recipe/porkbowl - reagents = list("water" = 5, "rice" = 10) - reagent_mix = RECIPE_REAGENT_REPLACE - items = list( - /obj/item/weapon/reagent_containers/food/snacks/bacon - ) - result = /obj/item/weapon/reagent_containers/food/snacks/porkbowl - -/datum/recipe/sushi - fruit = list("cabbage" = 1) - reagents = list("rice" = 20) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/sushi - -/datum/recipe/goulash - fruit = list("tomato" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/cutlet, - /obj/item/weapon/reagent_containers/food/snacks/spagetti - ) - result = /obj/item/weapon/reagent_containers/food/snacks/goulash - -/datum/recipe/donerkebab - fruit = list("tomato" = 1, "cabbage" = 1) - reagents = list("sodiumchloride" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meatsteak, - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough - ) - result = /obj/item/weapon/reagent_containers/food/snacks/donerkebab - -/datum/recipe/roastbeef - fruit = list("carrot" = 2, "potato" = 2) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat - ) - result = /obj/item/weapon/reagent_containers/food/snacks/roastbeef - -/datum/recipe/reishicup - reagents = list("psilocybin" = 3, "sugar" = 3) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/chocolatebar - ) - result = /obj/item/weapon/reagent_containers/food/snacks/reishicup - -/datum/recipe/hotandsoursoup - fruit = list("cabbage" = 1, "mushroom" = 1) - reagents = list("sodiumchloride" = 2, "blackpepper" = 2, "water" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/tofu - ) - result = /obj/item/weapon/reagent_containers/food/snacks/hotandsoursoup - -/datum/recipe/kitsuneudon - reagents = list("egg" = 3) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/spagetti, - /obj/item/weapon/reagent_containers/food/snacks/tofu - ) - result = /obj/item/weapon/reagent_containers/food/snacks/kitsuneudon - -/datum/recipe/pillbugball - reagents = list("carbon" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat - ) - result = /obj/item/weapon/reagent_containers/food/snacks/bugball - -/datum/recipe/mammi - fruit = list("orange" = 1) - reagents = list("water" = 10, "flour" = 10, "milk" = 5, "sodiumchloride" = 1) - result = /obj/item/weapon/reagent_containers/food/snacks/mammi - -/datum/recipe/makaroni - reagents = list("flour" = 15, "milk" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge - ) - result = /obj/item/weapon/reagent_containers/food/snacks/makaroni - /datum/recipe/gigapuddi reagents = list("milk" = 15) items = list( @@ -1429,25 +1083,3 @@ I said no! /obj/item/weapon/reagent_containers/food/snacks/egg ) result = /obj/item/weapon/reagent_containers/food/snacks/gigapuddi/anger - -/datum/recipe/buchedenoel - fruit = list("berries" = 2) - reagents = list("milk" = 5, "flour" = 15, "cream" = 10, "coco" = 5, "egg" = 6) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/buchedenoel - -/datum/recipe/turkey - fruit = list("carrot" = 2) - reagents = list("sodiumchloride" = 1, "blackpepper" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat/chicken, - /obj/item/weapon/reagent_containers/food/snacks/slice/bread, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/turkey - -/datum/recipe/cinnamonbun - reagents = list("sugar" = 15, "cream" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough - ) - result = /obj/item/weapon/reagent_containers/food/snacks/cinnamonbun - result_quantity = 4 diff --git a/code/modules/food/recipes_microwave_vr.dm b/code/modules/food/recipes_microwave_vr.dm index 8a4d88fc2a..6db92d6b01 100644 --- a/code/modules/food/recipes_microwave_vr.dm +++ b/code/modules/food/recipes_microwave_vr.dm @@ -10,6 +10,85 @@ */ // All of this shit needs to be gone through and reorganized into different recipes per machine - Rykka 7/16/2020 +/datum/recipe/sushi + fruit = list("cabbage" = 1) + reagents = list("rice" = 20) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/sushi + +/datum/recipe/goulash + fruit = list("tomato" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/cutlet, + /obj/item/weapon/reagent_containers/food/snacks/spagetti + ) + result = /obj/item/weapon/reagent_containers/food/snacks/goulash + +/datum/recipe/donerkebab + fruit = list("tomato" = 1, "cabbage" = 1) + reagents = list("sodiumchloride" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meatsteak, + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough + ) + result = /obj/item/weapon/reagent_containers/food/snacks/donerkebab + +/datum/recipe/roastbeef + fruit = list("carrot" = 2, "potato" = 2) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/roastbeef + +/datum/recipe/reishicup + reagents = list("psilocybin" = 3, "sugar" = 3) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/chocolatebar + ) + result = /obj/item/weapon/reagent_containers/food/snacks/reishicup + +/datum/recipe/hotandsoursoup + fruit = list("cabbage" = 1, "mushroom" = 1) + reagents = list("sodiumchloride" = 2, "blackpepper" = 2, "water" = 10) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/tofu + ) + result = /obj/item/weapon/reagent_containers/food/snacks/hotandsoursoup + +/datum/recipe/kitsuneudon + reagents = list("egg" = 3) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/spagetti, + /obj/item/weapon/reagent_containers/food/snacks/tofu + ) + result = /obj/item/weapon/reagent_containers/food/snacks/kitsuneudon + +/datum/recipe/pillbugball + reagents = list("carbon" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/bugball + +/datum/recipe/mammi + fruit = list("orange" = 1) + reagents = list("water" = 10, "flour" = 10, "milk" = 5, "sodiumchloride" = 1) + result = /obj/item/weapon/reagent_containers/food/snacks/mammi + +/datum/recipe/makaroni + reagents = list("flour" = 15, "milk" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat, + /obj/item/weapon/reagent_containers/food/snacks/egg, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/makaroni + /datum/recipe/carpsushi fruit = list("cabbage" = 1) reagents = list("rice" = 20) diff --git a/code/modules/food/recipes_oven.dm b/code/modules/food/recipes_oven.dm index b92f04b09e..e04d437982 100644 --- a/code/modules/food/recipes_oven.dm +++ b/code/modules/food/recipes_oven.dm @@ -5,7 +5,8 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/ovenchips - +//Roasts +//--------------- /datum/recipe/dionaroast appliance = OVEN @@ -15,15 +16,59 @@ result = /obj/item/weapon/reagent_containers/food/snacks/dionaroast reagent_mix = RECIPE_REAGENT_REPLACE //No eating polyacid +/datum/recipe/monkeysdelight + appliance = OVEN + fruit = list("banana" = 1) + reagents = list("sodiumchloride" = 1, "blackpepper" = 1, "flour" = 10) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/monkeycube + ) + result = /obj/item/weapon/reagent_containers/food/snacks/monkeysdelight + reagent_mix = RECIPE_REAGENT_REPLACE -/datum/recipe/ribplate //Putting this here for not seeing a roast section. +/datum/recipe/ribplate appliance = OVEN reagents = list("honey" = 5, "spacespice" = 2, "blackpepper" = 1) items = list(/obj/item/weapon/reagent_containers/food/snacks/meat) reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/weapon/reagent_containers/food/snacks/ribplate +/datum/recipe/turkey + appliance = OVEN + reagents = list("sodiumchloride" = 1, "blackpepper" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat/chicken, + /obj/item/weapon/reagent_containers/food/snacks/stuffing + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/turkey +/datum/recipe/tofurkey + appliance = OVEN + reagents = list("sodiumchloride" = 1, "blackpepper" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/tofu, + /obj/item/weapon/reagent_containers/food/snacks/tofu, + /obj/item/weapon/reagent_containers/food/snacks/stuffing + ) + result = /obj/item/weapon/reagent_containers/food/snacks/tofurkey + +/datum/recipe/zestfish + appliance = OVEN + fruit = list("lemon" = 1) + reagents = list("sodiumchloride" = 3) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/carpmeat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/zestfish + +/datum/recipe/limezestfish + appliance = OVEN + fruit = list("lime" = 1) + reagents = list("sodiumchloride" = 3) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/carpmeat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/zestfish //Predesigned breads @@ -197,7 +242,6 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/cherrypie - /datum/recipe/amanita_pie appliance = OVEN reagents = list("amatoxin" = 5) @@ -210,18 +254,24 @@ items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough) result = /obj/item/weapon/reagent_containers/food/snacks/plump_pie +/datum/recipe/applepie + appliance = OVEN + fruit = list("apple" = 1) + items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough) + result = /obj/item/weapon/reagent_containers/food/snacks/applepie /datum/recipe/pumpkinpie appliance = OVEN fruit = list("pumpkin" = 1) - reagents = list("milk" = 5, "sugar" = 5, "egg" = 3, "flour" = 10) + reagents = list("sugar" = 5) + items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie - reagent_mix = RECIPE_REAGENT_REPLACE //We dont want raw egg in the result /datum/recipe/appletart appliance = OVEN fruit = list("goldapple" = 1) - reagents = list("sugar" = 5, "milk" = 5, "flour" = 10, "egg" = 3) + reagents = list("sugar" = 10) + items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough) result = /obj/item/weapon/reagent_containers/food/snacks/appletart reagent_mix = RECIPE_REAGENT_REPLACE @@ -292,7 +342,20 @@ reagent_mix = RECIPE_REAGENT_REPLACE //No egg or mix in final recipe result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/cosmicbrownies +/datum/recipe/buchedenoel + appliance = OVEN + fruit = list("berries" = 2) + reagents = list("milk" = 5, "flour" = 15, "cream" = 10, "coco" = 5, "egg" = 6) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/buchedenoel +/datum/recipe/cinnamonbun + appliance = OVEN + reagents = list("sugar" = 15, "cream" = 10) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/dough + ) + result = /obj/item/weapon/reagent_containers/food/snacks/cinnamonbun + result_quantity = 4 //Pizzas @@ -366,24 +429,15 @@ //Spicy //================ + /datum/recipe/enchiladas appliance = OVEN - fruit = list("chili" = 2, "corn" = 1) - items = list(/obj/item/weapon/reagent_containers/food/snacks/cutlet) - result = /obj/item/weapon/reagent_containers/food/snacks/enchiladas - -/datum/recipe/monkeysdelight - appliance = OVEN - fruit = list("banana" = 1) - reagents = list("sodiumchloride" = 1, "blackpepper" = 1, "flour" = 10) + fruit = list("chili" = 2) items = list( - /obj/item/weapon/reagent_containers/food/snacks/monkeycube + /obj/item/weapon/reagent_containers/food/snacks/cutlet, + /obj/item/weapon/reagent_containers/food/snacks/tortilla ) - result = /obj/item/weapon/reagent_containers/food/snacks/monkeysdelight - reagent_mix = RECIPE_REAGENT_REPLACE - - - + result = /obj/item/weapon/reagent_containers/food/snacks/enchiladas // Cakes. @@ -485,15 +539,6 @@ reagents = list("milk" = 5, "egg" = 3,"honey" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/honeybun -/datum/recipe/enchiladas_new - appliance = OVEN - fruit = list("chili" = 2) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/cutlet, - /obj/item/weapon/reagent_containers/food/snacks/tortilla - ) - result = /obj/item/weapon/reagent_containers/food/snacks/enchiladas - //Bacon /datum/recipe/bacon_oven appliance = OVEN @@ -558,7 +603,7 @@ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge ) result = /obj/item/weapon/reagent_containers/food/snacks/macncheese - + /datum/recipe/suppermatter appliance = OVEN reagents = list("radium" = 5, "milk" = 5) @@ -576,3 +621,72 @@ ) reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/excitingsuppermatter + +/datum/recipe/waffles + appliance = OVEN + reagents = list("sugar" = 10) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough + ) + result = /obj/item/weapon/reagent_containers/food/snacks/waffles + +/datum/recipe/loadedbakedpotatooven + appliance = OVEN + fruit = list("potato" = 1) + items = list(/obj/item/weapon/reagent_containers/food/snacks/cheesewedge) + result = /obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato + +/datum/recipe/meatbun + appliance = OVEN + fruit = list("cabbage" = 1) + reagents = list("water" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meatball, + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, + ) + reagent_mix = RECIPE_REAGENT_REPLACE //Water used up in cooking + result = /obj/item/weapon/reagent_containers/food/snacks/meatbun + +/datum/recipe/spicedmeatbun + appliance = OVEN + reagents = list("spacespice" = 2, "water" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice, + /obj/item/weapon/reagent_containers/food/snacks/rawcutlet + ) + reagent_mix = RECIPE_REAGENT_REPLACE //Water used up in cooking + result = /obj/item/weapon/reagent_containers/food/snacks/spicedmeatbun + +/datum/recipe/custardbun + appliance = OVEN + reagents = list("spacespice" = 1, "water" = 5, "egg" = 3) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice + ) + reagent_mix = RECIPE_REAGENT_REPLACE //Water, egg used up in cooking + result = /obj/item/weapon/reagent_containers/food/snacks/custardbun + +/datum/recipe/chickenmomo + appliance = OVEN + reagents = list("spacespice" = 2, "water" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice, + /obj/item/weapon/reagent_containers/food/snacks/doughslice, + /obj/item/weapon/reagent_containers/food/snacks/doughslice, + /obj/item/weapon/reagent_containers/food/snacks/meat/chicken + ) + reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product + result = /obj/item/weapon/reagent_containers/food/snacks/chickenmomo + +/datum/recipe/veggiemomo + appliance = OVEN + reagents = list("spacespice" = 2, "water" = 5) + fruit = list("carrot" = 1, "cabbage" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice, + /obj/item/weapon/reagent_containers/food/snacks/doughslice, + /obj/item/weapon/reagent_containers/food/snacks/doughslice + ) + reagent_mix = RECIPE_REAGENT_REPLACE //Get that water outta here + result = /obj/item/weapon/reagent_containers/food/snacks/veggiemomo \ No newline at end of file diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index cecc455328..30b5c69fef 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -219,6 +219,11 @@ new /obj/item/weapon/reagent_containers/food/snacks/carrotfries(get_turf(src)) qdel(src) return + else if(!isnull(seed.chems["pineapplejuice"])) + to_chat(user, "You slice \the [src] into rings.") + new /obj/item/weapon/reagent_containers/food/snacks/pineapple_ring(get_turf(src)) + qdel(src) + return else if(!isnull(seed.chems["soymilk"])) to_chat(user, "You roughly chop up \the [src].") new /obj/item/weapon/reagent_containers/food/snacks/soydope(get_turf(src)) diff --git a/code/modules/hydroponics/seed_packets.dm b/code/modules/hydroponics/seed_packets.dm index 35e84e150d..cb5bb5c68f 100644 --- a/code/modules/hydroponics/seed_packets.dm +++ b/code/modules/hydroponics/seed_packets.dm @@ -320,8 +320,8 @@ GLOBAL_LIST_BOILERPLATE(all_seed_packs, /obj/item/seeds) /obj/item/seeds/eggyplant seed_type = "egg-plant" -/obj/item/seeds/spineapple - seed_type = "spineapple" +/obj/item/seeds/pineapple + seed_type = "pineapple" /obj/item/seeds/durian seed_type = "durian" diff --git a/code/modules/hydroponics/seed_storage.dm b/code/modules/hydroponics/seed_storage.dm index f75d17f63e..96132945b6 100644 --- a/code/modules/hydroponics/seed_storage.dm +++ b/code/modules/hydroponics/seed_storage.dm @@ -127,7 +127,7 @@ /obj/item/seeds/riceseed = 3, /obj/item/seeds/rose = 3, /obj/item/seeds/soyaseed = 3, - /obj/item/seeds/spineapple = 3, + /obj/item/seeds/pineapple = 3, /obj/item/seeds/sugarcaneseed = 3, /obj/item/seeds/sunflowerseed = 3, /obj/item/seeds/shandseed = 2, @@ -185,7 +185,7 @@ /obj/item/seeds/riceseed = 3, /obj/item/seeds/rose = 3, /obj/item/seeds/soyaseed = 3, - /obj/item/seeds/spineapple = 3, + /obj/item/seeds/pineapple = 3, /obj/item/seeds/sugarcaneseed = 3, /obj/item/seeds/sunflowerseed = 3, /obj/item/seeds/shandseed = 2, diff --git a/code/modules/hydroponics/seed_storage_vr.dm b/code/modules/hydroponics/seed_storage_vr.dm index 3ba578e8c8..e50f6ed1a8 100644 --- a/code/modules/hydroponics/seed_storage_vr.dm +++ b/code/modules/hydroponics/seed_storage_vr.dm @@ -33,7 +33,7 @@ /obj/item/seeds/riceseed = 3, /obj/item/seeds/rose = 3, /obj/item/seeds/soyaseed = 3, - /obj/item/seeds/spineapple = 3, + /obj/item/seeds/pineapple = 3, /obj/item/seeds/sugarcaneseed = 3, /obj/item/seeds/sunflowerseed = 3, /obj/item/seeds/shandseed = 2, @@ -92,7 +92,7 @@ /obj/item/seeds/riceseed = 3, /obj/item/seeds/rose = 3, /obj/item/seeds/soyaseed = 3, - /obj/item/seeds/spineapple = 3, + /obj/item/seeds/pineapple = 3, /obj/item/seeds/sugarcaneseed = 3, /obj/item/seeds/sunflowerseed = 3, /obj/item/seeds/shandseed = 2, diff --git a/code/modules/hydroponics/seedtypes/pineapple.dm b/code/modules/hydroponics/seedtypes/pineapple.dm new file mode 100644 index 0000000000..9e14b244dc --- /dev/null +++ b/code/modules/hydroponics/seedtypes/pineapple.dm @@ -0,0 +1,49 @@ +//pineapple and variants + +/datum/seed/pineapple + name = "pineapple" + seed_name = "pineapple" + display_name = "pineapple" + kitchen_tag = "pineapple" + mutants = list("spineapple") + chems = list("nutriment" = list(1,5), "pineapplejuice" = list(1, 20)) + +/datum/seed/pineapple/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,10) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,1) + set_trait(TRAIT_POTENCY,13) + set_trait(TRAIT_PRODUCT_ICON,"pineapple") + set_trait(TRAIT_PRODUCT_COLOUR,"#FFF23B") + set_trait(TRAIT_PLANT_COLOUR,"#87C969") + set_trait(TRAIT_PLANT_ICON,"corn") + set_trait(TRAIT_IDEAL_HEAT, 298) + set_trait(TRAIT_IDEAL_LIGHT, 4) + set_trait(TRAIT_WATER_CONSUMPTION, 8) + +//A pineapple that stings and produces enzymes. + +/datum/seed/spineapple + name = "spineapple" + seed_name = "spineapple" + display_name = "spineapple" + kitchen_tag = "spineapple" + chems = list("nutriment" = list(1,5), "enzyme" = list(1,5), "pineapplejuice" = list(1, 20)) + +/datum/seed/spineapple/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,10) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,1) + set_trait(TRAIT_POTENCY,13) + set_trait(TRAIT_PRODUCT_ICON,"pineapple") + set_trait(TRAIT_PRODUCT_COLOUR,"#FFF23B") + set_trait(TRAIT_PLANT_COLOUR,"#87C969") + set_trait(TRAIT_PLANT_ICON,"corn") + set_trait(TRAIT_IDEAL_HEAT, 298) + set_trait(TRAIT_IDEAL_LIGHT, 4) + set_trait(TRAIT_WATER_CONSUMPTION, 6) + set_trait(TRAIT_STINGS,1) \ No newline at end of file diff --git a/code/modules/hydroponics/seedtypes/spineapple.dm b/code/modules/hydroponics/seedtypes/spineapple.dm deleted file mode 100644 index b8ff58f597..0000000000 --- a/code/modules/hydroponics/seedtypes/spineapple.dm +++ /dev/null @@ -1,22 +0,0 @@ -/datum/seed/spineapple - name = "spineapple" - seed_name = "spineapple" - display_name = "spineapple" - kitchen_tag = "pineapple" - chems = list("nutriment" = list(1,5), "enzyme" = list(1,5), "pineapplejuice" = list(1, 20)) - -/datum/seed/spineapple/New() - ..() - set_trait(TRAIT_HARVEST_REPEAT,1) - set_trait(TRAIT_MATURATION,10) - set_trait(TRAIT_PRODUCTION,6) - set_trait(TRAIT_YIELD,1) - set_trait(TRAIT_POTENCY,13) - set_trait(TRAIT_PRODUCT_ICON,"pineapple") - set_trait(TRAIT_PRODUCT_COLOUR,"#FFF23B") - set_trait(TRAIT_PLANT_COLOUR,"#87C969") - set_trait(TRAIT_PLANT_ICON,"corn") - set_trait(TRAIT_IDEAL_HEAT, 298) - set_trait(TRAIT_IDEAL_LIGHT, 4) - set_trait(TRAIT_WATER_CONSUMPTION, 8) - set_trait(TRAIT_STINGS,1) \ No newline at end of file diff --git a/code/modules/mob/language/station_vr.dm b/code/modules/mob/language/station_vr.dm index a68a94bf25..30b6c0f43a 100644 --- a/code/modules/mob/language/station_vr.dm +++ b/code/modules/mob/language/station_vr.dm @@ -119,6 +119,20 @@ "ver", "stv", "pro", "ski" ) +/datum/language/clownish + name = LANGUAGE_CLOWNISH + desc = "A special elective language course for those studying at the Clown Planet Institute." + speech_verb = "honks" + ask_verb = "seins" + exclaim_verb = "crenks" + whisper_verb = "squeaks" + colour = "#F785F2" // Pink for the clown. + key = "<" + flags = WHITELISTED | CLOWN + syllables = list( + "honk", "knock", "salt", "slip", "lube", "banana", "flower", "pie", "did you hear", "🅱️", "haha", "bully", "going up", + ) + /datum/language/drudakar name = LANGUAGE_DRUDAKAR desc = "The native language of the D'Rudak'Ar, a loosely tied together community of dragons and demi-dragons based in the Diul system. Features include many hard consonants and rolling 'r's." diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index fa55f0c087..d5ee2f52ce 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -465,3 +465,82 @@ clear_alert("handcuffed") update_action_buttons() //some of our action buttons might be unusable when we're handcuffed. update_inv_handcuffed() + +// Clears blood overlays +/mob/living/carbon/clean_blood() + . = ..() + if(src.r_hand) + src.r_hand.clean_blood() + if(src.l_hand) + src.l_hand.clean_blood() + if(src.back) + if(src.back.clean_blood()) + src.update_inv_back(0) + + if(ishuman(src)) + var/mob/living/carbon/human/H = src + var/washgloves = 1 + var/washshoes = 1 + var/washmask = 1 + var/washears = 1 + var/washglasses = 1 + + if(H.wear_suit) + washgloves = !(H.wear_suit.flags_inv & HIDEGLOVES) + washshoes = !(H.wear_suit.flags_inv & HIDESHOES) + + if(H.head) + washmask = !(H.head.flags_inv & HIDEMASK) + washglasses = !(H.head.flags_inv & HIDEEYES) + washears = !(H.head.flags_inv & HIDEEARS) + + if(H.wear_mask) + if (washears) + washears = !(H.wear_mask.flags_inv & HIDEEARS) + if (washglasses) + washglasses = !(H.wear_mask.flags_inv & HIDEEYES) + + if(H.head) + if(H.head.clean_blood()) + H.update_inv_head() + + if(H.wear_suit) + if(H.wear_suit.clean_blood()) + H.update_inv_wear_suit() + + else if(H.w_uniform) + if(H.w_uniform.clean_blood()) + H.update_inv_w_uniform() + + if(H.gloves && washgloves) + if(H.gloves.clean_blood()) + H.update_inv_gloves(0) + + if(H.shoes && washshoes) + if(H.shoes.clean_blood()) + H.update_inv_shoes(0) + + if(H.wear_mask && washmask) + if(H.wear_mask.clean_blood()) + H.update_inv_wear_mask(0) + + if(H.glasses && washglasses) + if(H.glasses.clean_blood()) + H.update_inv_glasses(0) + + if(H.l_ear && washears) + if(H.l_ear.clean_blood()) + H.update_inv_ears(0) + + if(H.r_ear && washears) + if(H.r_ear.clean_blood()) + H.update_inv_ears(0) + + if(H.belt) + if(H.belt.clean_blood()) + H.update_inv_belt(0) + + else + if(src.wear_mask) //if the mob is not human, it cleans the mask without asking for bitflags + if(src.wear_mask.clean_blood()) + src.update_inv_wear_mask(0) diff --git a/code/modules/mob/living/carbon/human/gradient.dm b/code/modules/mob/living/carbon/human/gradient.dm index 7a0e1d37f1..d7513f38f8 100644 --- a/code/modules/mob/living/carbon/human/gradient.dm +++ b/code/modules/mob/living/carbon/human/gradient.dm @@ -2,5 +2,13 @@ GLOBAL_LIST_INIT(hair_gradients, list( "None" = "none", "Fade (Up)" = "fadeup", "Fade (Down)" = "fadedown", - "Vertical Split" = "vsplit" + "Fade Low (Up)" = "fadeup_low", + "Bottom Flat" = "bottomflat", + "Fade Low (Down)" = "fadedown_low", + "Vertical Split" = "vsplit", + "Reflected" = "reflected", + "Reflected (Inverted)" = "reflected_inverse", + "Reflected High" = "reflected_high", + "Reflected High (Inverted)" = "reflected_inverse_high", + "Wavy" = "wavy" )) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index c4480cf5ae..cff2209f4b 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1097,8 +1097,8 @@ if(species.default_language) add_language(species.default_language) - //if(species.icon_scale_x != 1 || species.icon_scale_y != 1) //VOREStation Removal - // update_transform() //VOREStation Removal + if(species.icon_scale_x != 1 || species.icon_scale_y != 1) + update_transform() if(example) //VOREStation Edit begin if(!(example == src)) diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index 831ec542fc..cc48565ff4 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -196,3 +196,11 @@ var/list/all_bits = internal_organs|organs for(var/obj/item/organ/O in all_bits) O.set_dna(dna) + +/mob/living/carbon/human/proc/set_gender(var/g) + if(g != gender) + gender = g + + if(dna.GetUIState(DNA_UI_GENDER) ^ gender == FEMALE) // XOR will catch both cases where they do not match + dna.SetUIState(DNA_UI_GENDER, gender == FEMALE) + sync_organ_dna(dna) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 379dfd4b8f..4a7e731be1 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -215,7 +215,6 @@ This saves us from having to call add_fingerprint() any time something is put in if(slot_back) src.back = W W.equipped(src, slot) - worn_clothing += back update_inv_back() if(slot_wear_mask) src.wear_mask = W @@ -223,7 +222,6 @@ This saves us from having to call add_fingerprint() any time something is put in update_hair() //rebuild hair update_inv_ears() W.equipped(src, slot) - worn_clothing += wear_mask update_inv_wear_mask() if(slot_handcuffed) src.handcuffed = W @@ -243,7 +241,6 @@ This saves us from having to call add_fingerprint() any time something is put in if(slot_belt) src.belt = W W.equipped(src, slot) - worn_clothing += belt update_inv_belt() if(slot_wear_id) src.wear_id = W @@ -272,11 +269,11 @@ This saves us from having to call add_fingerprint() any time something is put in if(slot_glasses) src.glasses = W W.equipped(src, slot) + worn_clothing += glasses update_inv_glasses() if(slot_gloves) src.gloves = W W.equipped(src, slot) - worn_clothing += glasses update_inv_gloves() if(slot_head) src.head = W @@ -287,22 +284,18 @@ This saves us from having to call add_fingerprint() any time something is put in if(istype(W,/obj/item/clothing/head/kitty)) W.update_icon(src) W.equipped(src, slot) - worn_clothing += head update_inv_head() if(slot_shoes) src.shoes = W W.equipped(src, slot) - worn_clothing += shoes update_inv_shoes() if(slot_wear_suit) src.wear_suit = W W.equipped(src, slot) - worn_clothing += wear_suit update_inv_wear_suit() if(slot_w_uniform) src.w_uniform = W W.equipped(src, slot) - worn_clothing += w_uniform update_inv_w_uniform() if(slot_l_store) src.l_store = W @@ -405,4 +398,4 @@ This saves us from having to call add_fingerprint() any time something is put in if(l_hand) . += l_hand if(r_hand) - . += r_hand \ No newline at end of file + . += r_hand diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_ch.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_ch.dm index 97354d7abb..6206b1c978 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_ch.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_ch.dm @@ -169,4 +169,29 @@ var/eggs = 0 layeggs-- return -*/ \ No newline at end of file +*/ + +/mob/living/proc/insect_sting() + set name = "Insect Sting" + set desc = "Sting a target and inject a small amount of toxin" + set category = "Abilities" + + if(last_special > world.time) + return + + var/list/victims = list() + for(var/mob/living/carbon/C in oview(1)) + victims += C + var/mob/living/carbon/T = input(src, "Who will we sting?") as null|anything in victims + + if(!T) + return + if(T.isSynthetic()) + to_chat(src, "We are unable to pierce the outer shell of [T].") + return + + to_chat(src, "You jab your stinger into [T].") + to_chat(T, "You feel a stabbing pain as you are stung!") + src.visible_message("[src] sinks their stinger into [T]!") + T.bloodstr.add_reagent("condensedcapsaicin_v",3) + last_special = world.time + 50 // Many little jabs instead of one big one diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative_ch.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative_ch.dm index 2da688c4cb..e2d9fa355a 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative_ch.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative_ch.dm @@ -228,11 +228,11 @@ /datum/trait/agoraphobia/proc/check_mob_company(var/mob/living/carbon/human/H,var/mob/living/M,var/invis_matters = TRUE) var/list/in_range = list() + if(!istype(M)) + return in_range var/social_check = !istype(M, /mob/living/carbon) && !istype(M, /mob/living/silicon/robot) var/ckey_check = !M.ckey var/overall_checks = M == H || M.stat == DEAD || social_check || ckey_check - if(!istype(M)) - return in_range if(invis_matters && M.invisibility > H.see_invisible) return in_range if(!overall_checks) @@ -286,6 +286,8 @@ H.next_loneliness_time = world.time+500 /datum/trait/lonely/proc/check_mob_company(var/mob/living/carbon/human/H,var/mob/living/M) + if(!istype(M)) + return 0 var/social_check = only_people && !istype(M, /mob/living/carbon) && !istype(M, /mob/living/silicon/robot) var/self_invisible_check = M == H || M.invisibility > H.see_invisible var/ckey_check = only_people && !M.ckey diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm index 709e5f53e3..41dbf2a72b 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm @@ -296,3 +296,100 @@ YW change end */ var_changes = list("alcohol_mod" = 0.25) // 25% as effective if alcohol_mod is set to 1. If it's not 1 in species.dm, update this! // Alcohol Traits End Here. YW CHANGE STOP*/ + +// Body shape traits +/datum/trait/taller + name = "Tall" + desc = "Your body is taller than average." + cost = 0 + custom_only = FALSE + var_changes = list("icon_scale_y" = 1.09) + excludes = list(/datum/trait/tall, /datum/trait/short, /datum/trait/shorter) + +/datum/trait/taller/apply(var/datum/species/S,var/mob/living/carbon/human/H) + ..(S,H) + H.update_transform() + +/datum/trait/tall + name = "Slightly Tall" + desc = "Your body is a bit taller than average." + cost = 0 + custom_only = FALSE + var_changes = list("icon_scale_y" = 1.05) + excludes = list(/datum/trait/taller, /datum/trait/short, /datum/trait/shorter) + +/datum/trait/tall/apply(var/datum/species/S,var/mob/living/carbon/human/H) + ..(S,H) + H.update_transform() + +/datum/trait/short + name = "Slightly Short" + desc = "Your body is a bit shorter than average." + cost = 0 + custom_only = FALSE + var_changes = list("icon_scale_y" = 0.95) + excludes = list(/datum/trait/taller, /datum/trait/tall, /datum/trait/shorter) + +/datum/trait/short/apply(var/datum/species/S,var/mob/living/carbon/human/H) + ..(S,H) + H.update_transform() + +/datum/trait/shorter + name = "Short" + desc = "Your body is shorter than average." + cost = 0 + custom_only = FALSE + var_changes = list("icon_scale_y" = 0.915) + excludes = list(/datum/trait/taller, /datum/trait/tall, /datum/trait/short) + +/datum/trait/shorter/apply(var/datum/species/S,var/mob/living/carbon/human/H) + ..(S,H) + H.update_transform() + +/datum/trait/obese + name = "Very Bulky" + desc = "Your body is much wider than average." + cost = 0 + custom_only = FALSE + var_changes = list("icon_scale_x" = 1.095) + excludes = list(/datum/trait/fat, /datum/trait/thin, /datum/trait/thinner) + +/datum/trait/obese/apply(var/datum/species/S,var/mob/living/carbon/human/H) + ..(S,H) + H.update_transform() + +/datum/trait/fat + name = "Bulky" + desc = "Your body is wider than average." + cost = 0 + custom_only = FALSE + var_changes = list("icon_scale_x" = 1.054) + excludes = list(/datum/trait/obese, /datum/trait/thin, /datum/trait/thinner) + +/datum/trait/fat/apply(var/datum/species/S,var/mob/living/carbon/human/H) + ..(S,H) + H.update_transform() + +/datum/trait/thin + name = "Thin" + desc = "Your body is thinner than average." + cost = 0 + custom_only = FALSE + var_changes = list("icon_scale_x" = 0.945) + excludes = list(/datum/trait/fat, /datum/trait/obese, /datum/trait/thinner) + +/datum/trait/thin/apply(var/datum/species/S,var/mob/living/carbon/human/H) + ..(S,H) + H.update_transform() + +/datum/trait/thinner + name = "Very Thin" + desc = "Your body is much thinner than average." + cost = 0 + custom_only = FALSE + var_changes = list("icon_scale_x" = 0.905) + excludes = list(/datum/trait/fat, /datum/trait/obese, /datum/trait/thin) + +/datum/trait/thinner/apply(var/datum/species/S,var/mob/living/carbon/human/H) + ..(S,H) + H.update_transform() diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral_ch.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral_ch.dm index fa6a83b15b..8e27c6052a 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral_ch.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral_ch.dm @@ -15,7 +15,7 @@ /datum/trait/succubus_bite/apply(var/datum/species/S,var/mob/living/carbon/human/H) ..(S,H) H.verbs |= /mob/living/proc/succubus_bite - + /datum/trait/nutritiongrow name = "Growing" desc = "After you consume enough nutrition, you start to slowly grow while metabolizing nutrition faster." diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive_ch.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive_ch.dm index 09117b09be..286fd874b9 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive_ch.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive_ch.dm @@ -239,3 +239,13 @@ accuracy_dispersion = 25 incoming_hal_damage_percent = 1.75 incoming_oxy_damage_percent = 1.25 + +/datum/trait/insect_sting + name = "Insect Sting" + desc = "Allows you to sting your victim with a smalll amount of poison" + cost = 1 + +/datum/trait/insect_sting/apply(var/datum/species/S,var/mob/living/carbon/human/H) + ..(S,H) + H.verbs |= /mob/living/proc/insect_sting + diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 9b4b4b6fae..337a397df2 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -123,7 +123,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() crash_with("CANARY: Old human update_icons_huds was called.") /mob/living/carbon/human/update_transform() - /* VOREStation Edit START - TODO - Consider switching to icon_scale + /* VOREStation Edit START // First, get the correct size. var/desired_scale_x = icon_scale_x var/desired_scale_y = icon_scale_y @@ -137,8 +137,10 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(!isnull(M.icon_scale_y_percent)) desired_scale_y *= M.icon_scale_y_percent */ - var/desired_scale_x = size_multiplier - var/desired_scale_y = size_multiplier + var/desired_scale_x = size_multiplier * icon_scale_x + var/desired_scale_y = size_multiplier * icon_scale_y + desired_scale_x *= species.icon_scale_x + desired_scale_y *= species.icon_scale_y //VOREStation Edit End // Regular stuff again. @@ -151,14 +153,14 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(lying && !species.prone_icon) //Only rotate them if we're not drawing a specific icon for being prone. M.Turn(90) - M.Scale(desired_scale_x, desired_scale_y) + M.Scale(desired_scale_y, desired_scale_x)//VOREStation Edit if(species.icon_height == 64)//VOREStation Edit M.Translate(13,-22) else M.Translate(1,-6) layer = MOB_LAYER -0.01 // Fix for a byond bug where turf entry order no longer matters else - M.Scale(desired_scale_x, desired_scale_y) + M.Scale(desired_scale_x, desired_scale_y)//VOREStation Edit M.Translate(0, (vis_height/2)*(desired_scale_y-1)) //VOREStation edit layer = MOB_LAYER // Fix for a byond bug where turf entry order no longer matters @@ -234,10 +236,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() //Create a new, blank icon for our mob to use. var/icon/stand_icon = new(species.icon_template ? species.icon_template : 'icons/mob/human.dmi', icon_state = "blank") - var/g = "male" - if(gender == FEMALE) - g = "female" - + var/g = (gender == MALE ? "male" : "female") var/icon_key = "[species.get_race_key(src)][g][s_tone][r_skin][g_skin][b_skin]" if(lip_style) icon_key += "[lip_style]" @@ -488,7 +487,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(head_organ.transparent) //VOREStation Edit. For better slime limbs. face_standing += rgb(,,,120) - + overlays_standing[HAIR_LAYER] = image(face_standing, layer = BODY_LAYER+HAIR_LAYER) apply_layer(HAIR_LAYER) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 358dadddb4..6cf349dff7 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -149,21 +149,21 @@ default behaviour is: if((tmob.mob_always_swap || (tmob.a_intent == I_HELP || tmob.restrained()) && (a_intent == I_HELP || src.restrained())) && tmob.canmove && canmove && !tmob.buckled && !buckled && can_swap && can_move_mob(tmob, 1, 0)) // mutual brohugs all around! var/turf/oldloc = loc //VOREstation Edit - Begin - + //check bumpnom chance, if it's a simplemob that's doing the bumping var/mob/living/simple_mob/srcsimp = src if(istype(srcsimp)) if(srcsimp.tryBumpNom(tmob)) now_pushing = 0 return - + //if it's a simplemob being bumped, and the above didn't make them start getting bumpnommed, they get a chance to bumpnom var/mob/living/simple_mob/tmobsimp = tmob if(istype(tmobsimp)) if(tmobsimp.tryBumpNom(src)) now_pushing = 0 return - + //VOREstation Edit - End forceMove(tmob.loc) //VOREstation Edit - Begin @@ -1282,8 +1282,8 @@ default behaviour is: /mob/living/update_transform() // First, get the correct size. - var/desired_scale_x = size_multiplier //VOREStation edit - var/desired_scale_y = size_multiplier //VOREStation edit + var/desired_scale_x = size_multiplier * icon_scale_x //VOREStation edit + var/desired_scale_y = size_multiplier * icon_scale_y //VOREStation edit // Now for the regular stuff. var/matrix/M = matrix() diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm b/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm index 9e0766ffaf..37082d4ce7 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm @@ -224,7 +224,8 @@ B.water = water src.modules += B - R.icon = 'icons/mob/widerobot_vr.dmi' + R.icon = 'icons/mob/widerobot_sec_vr.dmi' + R.wideborg_dept = 'icons/mob/widerobot_sec_vr.dmi' R.hands.icon = 'icons/mob/screen1_robot_vr.dmi' R.ui_style_vr = TRUE R.pixel_x = -16 @@ -334,6 +335,8 @@ R.icon = 'icons/mob/widerobot_vr.dmi' src.modules += new /obj/item/device/dogborg/pounce_module(src) //Pounce shit test + R.icon = 'icons/mob/widerobot_med_vr.dmi' + R.wideborg_dept = 'icons/mob/widerobot_med_vr.dmi' R.hands.icon = 'icons/mob/screen1_robot_vr.dmi' R.ui_style_vr = TRUE R.pixel_x = -16 @@ -469,7 +472,8 @@ G.recipes += new/datum/stack_recipe("glass sheet", /obj/item/stack/material/glass, 1, 1, 20) src.modules += G - R.icon = 'icons/mob/widerobot_yw.dmi' //YW edit - using yw icon files + R.icon = 'icons/mob/widerobot_jan_vr.dmi' + R.wideborg_dept = 'icons/mob/widerobot_jan_vr.dmi' R.hands.icon = 'icons/mob/screen1_robot_vr.dmi' R.ui_style_vr = TRUE R.pixel_x = -16 @@ -544,7 +548,8 @@ C.synths = list(wire) src.modules += C - R.icon = 'icons/mob/widerobot_vr.dmi' + R.icon = 'icons/mob/widerobot_sci_vr.dmi' + R.wideborg_dept = 'icons/mob/widerobot_sci_vr.dmi' R.hands.icon = 'icons/mob/screen1_robot_vr.dmi' R.ui_style_vr = TRUE R.pixel_x = -16 @@ -696,6 +701,9 @@ src.modules += PS //YW changes end, plasteel manipulator R.icon = 'icons/mob/widerobot_vr.dmi' + + R.icon = 'icons/mob/widerobot_eng_vr.dmi' + R.wideborg_dept = 'icons/mob/widerobot_eng_vr.dmi' R.hands.icon = 'icons/mob/screen1_robot_vr.dmi' R.ui_style_vr = TRUE R.pixel_x = -16 @@ -771,7 +779,8 @@ src.modules += B */ - R.icon = 'icons/mob/widerobot_vr.dmi' + R.icon = 'icons/mob/widerobot_ser_vr.dmi' + R.wideborg_dept = 'icons/mob/widerobot_ser_vr.dmi' R.hands.icon = 'icons/mob/screen1_robot_vr.dmi' R.ui_style_vr = TRUE R.pixel_x = -16 @@ -823,7 +832,8 @@ B.water = water src.modules += B - R.icon = 'icons/mob/widerobot_vr.dmi' + R.icon = 'icons/mob/widerobot_car_vr.dmi' + R.wideborg_dept = 'icons/mob/widerobot_car_vr.dmi' R.hands.icon = 'icons/mob/screen1_robot_vr.dmi' R.ui_style_vr = TRUE R.pixel_x = -16 diff --git a/code/modules/mob/living/silicon/robot/robot_vr.dm b/code/modules/mob/living/silicon/robot/robot_vr.dm index 7cdc39e0d5..570d9cec99 100644 --- a/code/modules/mob/living/silicon/robot/robot_vr.dm +++ b/code/modules/mob/living/silicon/robot/robot_vr.dm @@ -15,6 +15,7 @@ var/sitting = FALSE var/bellyup = FALSE does_spin = FALSE + var/wideborg_dept = 'icons/mob/widerobot_vr.dmi' var/vr_icons = list( "handy-hydro", "handy-service", @@ -145,7 +146,11 @@ return if(wideborg == TRUE) if(icontype== "Drake") // Why, Why can't we have normal nice things + icon = 'icons/mob/drakeborg/drakeborg_vr.dmi' + else + icon = wideborg_dept + return if((!(original_icon == icon)) && (!(icon == 'icons/mob/robots_vr.dmi'))) original_icon = icon if((icon_state in vr_icons) && (icon == 'icons/mob/robots.dmi')) diff --git a/code/modules/mob/living/simple_mob/simple_mob.dm b/code/modules/mob/living/simple_mob/simple_mob.dm index 03fc4e6c47..aaf8f8c0f2 100644 --- a/code/modules/mob/living/simple_mob/simple_mob.dm +++ b/code/modules/mob/living/simple_mob/simple_mob.dm @@ -175,6 +175,10 @@ if(has_eye_glow) add_eyes() + if(!IsAdvancedToolUser()) //CHOMPSTATION edit: Moved here so the verb is useable before initialising vorgans. + verbs |= /mob/living/simple_mob/proc/animal_nom + verbs |= /mob/living/proc/shred_limb + return ..() /mob/living/simple_mob/Destroy() diff --git a/code/modules/mob/living/simple_mob/simple_mob_vr.dm b/code/modules/mob/living/simple_mob/simple_mob_vr.dm index 853848b83d..f843df402d 100644 --- a/code/modules/mob/living/simple_mob/simple_mob_vr.dm +++ b/code/modules/mob/living/simple_mob/simple_mob_vr.dm @@ -54,7 +54,7 @@ /mob/living/simple_mob/Destroy() release_vore_contents() prey_excludes.Cut() - . = ..() + return ..() //For all those ID-having mobs /mob/living/simple_mob/GetIdCard() @@ -86,6 +86,8 @@ icon_state = "[icon_rest]-[vore_fullness]" /mob/living/simple_mob/proc/will_eat(var/mob/living/M) + M.init_vore() + init_vore() if(client) //You do this yourself, dick! //ai_log("vr/wont eat [M] because we're player-controlled", 3) //VORESTATION AI TEMPORARY REMOVAL return 0 @@ -194,10 +196,6 @@ if(!vore_active || no_vore) return - if(!IsAdvancedToolUser()) - verbs |= /mob/living/simple_mob/proc/animal_nom - verbs |= /mob/living/proc/shred_limb - if(LAZYLEN(vore_organs)) return diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish_vr.dm index adb180f9fe..89ccfc3a25 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish_vr.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish_vr.dm @@ -4,7 +4,7 @@ maxHealth = 50 /mob/living/simple_mob/animal/passive/fish/koi/poisonous/Initialize() - ..() + . = ..() create_reagents(60) reagents.add_reagent("toxin", 45) reagents.add_reagent("impedrezene", 15) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/snake_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/snake_vr.dm index 0c8636ddf5..903f4b9ce6 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/space/snake_vr.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/snake_vr.dm @@ -140,7 +140,7 @@ nutriment_desc = list("sugar" = 1) /obj/item/weapon/reagent_containers/food/snacks/snakesnack/Initialize() - ..() + . = ..() if(!snack_colour) snack_colour = pick( list("yellow","green","pink","blue") ) icon_state = "snack_[snack_colour]" diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/mecha.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/mecha.dm index d29981726d..d5ba330c0d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/mecha.dm +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/mecha.dm @@ -57,7 +57,7 @@ return ..() /mob/living/simple_mob/mechanical/mecha/Destroy() - qdel(sparks) + qdel_null(sparks) return ..() /mob/living/simple_mob/mechanical/mecha/death() diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm index 68adaed660..d8f524d733 100644 --- a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm +++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm @@ -439,6 +439,7 @@ /mob/living/simple_mob/slime/xenobio/amber ) +/* VOREStation Edit. We've had enough server crashes. /mob/living/simple_mob/slime/xenobio/amber/handle_special() if(stat != DEAD) feed_aura() @@ -456,6 +457,7 @@ if(H.isSynthetic()) continue H.nutrition = between(0, H.nutrition + rand(15, 25), 800) +*/ /mob/living/simple_mob/slime/xenobio/cerulean desc = "This slime is generally superior in a wide range of attributes, compared to the common slime. The jack of all trades, but master of none." diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes_vr.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes_vr.dm index 8cd74cca4e..8bb23ec36b 100644 --- a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes_vr.dm +++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes_vr.dm @@ -3,5 +3,5 @@ mob_bump_flag = SLIME /mob/living/simple_mob/slime/xenobio/Initialize(mapload, var/mob/living/simple_mob/slime/xenobio/my_predecessor) - ..() + . = ..() Weaken(10) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/xenobio.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/xenobio.dm index ba2d76b39f..dd22ad7fd0 100644 --- a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/xenobio.dm +++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/xenobio.dm @@ -1,280 +1,280 @@ -// These slimes have the mechanics xenobiologists care about, such as reproduction, mutating into new colors, and being able to submit through fear. - -/mob/living/simple_mob/slime/xenobio - desc = "The most basic of slimes. The grey slime has no remarkable qualities, however it remains one of the most useful colors for scientists." - layer = MOB_LAYER + 1 // Need them on top of other mobs or it looks weird when consuming something. - ai_holder_type = /datum/ai_holder/simple_mob/xenobio_slime // This should never be changed for xenobio slimes. - max_nutrition = 1000 - var/is_adult = FALSE // Slimes turn into adults when fed enough. Adult slimes are somewhat stronger, and can reproduce if fed enough. - var/maxHealth_adult = 200 - var/power_charge = 0 // Disarm attacks can shock someone if high/lucky enough. - var/mob/living/victim = null // the person the slime is currently feeding on - var/rainbow_core_candidate = TRUE // If false, rainbow cores cannot make this type randomly. - var/mutation_chance = 25 // Odds of spawning as a new color when reproducing. Can be modified by certain xenobio products. Carried across generations of slimes. - var/list/slime_mutation = list( - /mob/living/simple_mob/slime/xenobio/orange, - /mob/living/simple_mob/slime/xenobio/metal, - /mob/living/simple_mob/slime/xenobio/blue, - /mob/living/simple_mob/slime/xenobio/purple - ) - var/amount_grown = 0 // controls how long the slime has been overfed, if 10, grows or reproduces - var/number = 0 // This is used to make the slime semi-unique for indentification. - var/harmless = FALSE // Set to true when pacified. Makes the slime harmless, not get hungry, and not be able to grow/reproduce. - -/mob/living/simple_mob/slime/xenobio/Initialize(mapload, var/mob/living/simple_mob/slime/xenobio/my_predecessor) - ASSERT(ispath(ai_holder_type, /datum/ai_holder/simple_mob/xenobio_slime)) - number = rand(1, 1000) - update_name() - - . = ..() // This will make the AI and do the other mob constructor things. It will also return the default hint at the end. - - if(my_predecessor) - inherit_information(my_predecessor) - - -/mob/living/simple_mob/slime/xenobio/Destroy() - if(victim) - stop_consumption() // Unbuckle us from our victim. - return ..() - -// Called when a slime makes another slime by splitting. The predecessor slime will be deleted shortly afterwards. -/mob/living/simple_mob/slime/xenobio/proc/inherit_information(var/mob/living/simple_mob/slime/xenobio/predecessor) - if(!predecessor) - return - - var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder - var/datum/ai_holder/simple_mob/xenobio_slime/previous_AI = predecessor.ai_holder - ASSERT(istype(AI)) - ASSERT(istype(previous_AI)) - - // Now to transfer the information. - // Newly made slimes are bit more rebellious than their predecessors, but they also somewhat forget the atrocities the xenobiologist may have done. - AI.discipline = max(previous_AI.discipline - 1, 0) - AI.obedience = max(previous_AI.obedience - 1, 0) - AI.resentment = max(previous_AI.resentment - 1, 0) - AI.rabid = previous_AI.rabid - - -/mob/living/simple_mob/slime/xenobio/update_icon() - icon_living = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_adult ? "adult" : "baby"][victim ? " eating" : ""]" - icon_dead = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_adult ? "adult" : "baby"] dead" - icon_rest = icon_dead - ..() // This will apply the correct icon_state and do the other overlay-related things. - - -/mob/living/simple_mob/slime/xenobio/handle_special() - if(stat != DEAD) - handle_nutrition() - - if(victim) - handle_consumption() - - handle_stuttering() // ?? - - ..() - -/mob/living/simple_mob/slime/xenobio/examine(mob/user) - . = ..() - if(hat) - . += "It is wearing \a [hat]." - - if(stat == DEAD) - . += "It appears to be dead." - else if(incapacitated(INCAPACITATION_DISABLED)) - . += "It appears to be incapacitated." - else if(harmless) - . += "It appears to have been pacified." - else - if(has_AI()) - var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder - if(AI.rabid) - . += "It seems very, very angry and upset." - else if(AI.obedience >= 5) - . += "It looks rather obedient." - else if(AI.discipline) - . += "It has been subjugated by force, at least for now." - -/mob/living/simple_mob/slime/xenobio/proc/make_adult() - if(is_adult) - return - - is_adult = TRUE - melee_damage_lower = round(melee_damage_lower * 2) // 20 - melee_damage_upper = round(melee_damage_upper * 2) // 30 - maxHealth = maxHealth_adult - max_nutrition = 1200 - amount_grown = 0 - update_icon() - update_name() - -/mob/living/simple_mob/slime/xenobio/proc/update_name() - if(harmless) // Docile slimes are generally named, so we shouldn't mess with it. - return - name = "[slime_color] [is_adult ? "adult" : "baby"] [initial(name)] ([number])" - real_name = name - -/mob/living/simple_mob/slime/xenobio/update_mood() - var/old_mood = mood - if(incapacitated(INCAPACITATION_DISABLED)) - mood = "sad" - else if(harmless) - mood = ":33" - else if(has_AI()) - var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder - if(AI.rabid) - mood = "angry" - else if(AI.target) - mood = "mischevous" - else if(AI.discipline) - mood = "pout" - else - mood = ":3" - else - mood = ":3" - - if(old_mood != mood) - update_icon() - -/mob/living/simple_mob/slime/xenobio/proc/enrage() - if(harmless) - return - if(has_AI()) - var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder - AI.enrage() - -/mob/living/simple_mob/slime/xenobio/proc/pacify() - harmless = TRUE - if(has_AI()) - var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder - AI.pacify() - - faction = "neutral" - - // If for whatever reason the mob AI (or player) decides to try to attack something anyways. - melee_damage_upper = 0 - melee_damage_lower = 0 - - update_mood() - - -// These are verbs so that player slimes can evolve/split. -/mob/living/simple_mob/slime/xenobio/verb/evolve() - set category = "Slime" - set desc = "This will let you evolve from baby to adult slime." - - if(stat) - to_chat(src, span("warning", "I must be conscious to do this...")) - return - - if(harmless) - to_chat(src, span("warning", "I have been pacified. I cannot evolve...")) - return - - if(!is_adult) - if(amount_grown >= 10) - make_adult() - else - to_chat(src, span("warning", "I am not ready to evolve yet...")) - else - to_chat(src, span("warning", "I have already evolved...")) - - -/mob/living/simple_mob/slime/xenobio/verb/reproduce() - set category = "Slime" - set desc = "This will make you split into four new slimes." - - if(stat) - to_chat(src, span("warning", "I must be conscious to do this...")) - return - - if(harmless) - to_chat(src, span("warning", "I have been pacified. I cannot reproduce...")) - return - - if(is_adult) - if(amount_grown >= 10) - // Check if there's enough 'room' to split. - var/list/nearby_things = orange(1, src) - var/free_tiles = 0 - for(var/turf/T in nearby_things) - var/free = TRUE - if(T.density) // No walls. - continue - for(var/atom/movable/AM in T) - if(AM.density) - free = FALSE - break - - if(free) - free_tiles++ - - if(free_tiles < 3) // Three free tiles are needed, as four slimes are made and the 4th tile is from the center tile that the current slime occupies. - to_chat(src, span("warning", "It is too cramped here to reproduce...")) - return - - var/list/babies = list() - for(var/i = 1 to 4) - babies.Add(make_new_slime()) - - var/mob/living/simple_mob/slime/new_slime = pick(babies) - new_slime.universal_speak = universal_speak - if(src.mind) - src.mind.transfer_to(new_slime) - else - new_slime.key = src.key - qdel(src) - else - to_chat(src, span("warning", "I am not ready to reproduce yet...")) - else - to_chat(src, span("warning", "I have not evolved enough to reproduce yet...")) - -// Used when reproducing or dying. -/mob/living/simple_mob/slime/xenobio/proc/make_new_slime(var/desired_type) - var/t = src.type - if(desired_type) - t = desired_type - if(prob(mutation_chance / 10)) - t = /mob/living/simple_mob/slime/xenobio/rainbow - else if(prob(mutation_chance) && slime_mutation.len) - t = slime_mutation[rand(1, slime_mutation.len)] - var/mob/living/simple_mob/slime/xenobio/baby = new t(loc, src) - - // Handle 'inheriting' from parent slime. - baby.mutation_chance = mutation_chance - baby.power_charge = round(power_charge / 4) - - if(!istype(baby, /mob/living/simple_mob/slime/xenobio/rainbow)) - baby.unity = unity - baby.faction = faction - baby.friends = friends.Copy() - - step_away(baby, src) - return baby - -/mob/living/simple_mob/slime/xenobio/get_description_interaction() - var/list/results = list() - - if(!stat) - results += "[desc_panel_image("slimebaton")]to stun the slime, if it's being bad." - - results += ..() - - return results - -/mob/living/simple_mob/slime/xenobio/get_description_info() - var/list/lines = list() - var/intro_line = "Slimes are generally the test subjects of Xenobiology, with different colors having different properties. \ - They can be extremely dangerous if not handled properly." - lines.Add(intro_line) - lines.Add(null) // To pad the line breaks. - - var/list/rewards = list() - for(var/potential_color in slime_mutation) - var/mob/living/simple_mob/slime/S = potential_color - rewards.Add(initial(S.slime_color)) - var/reward_line = "This color of slime can mutate into [english_list(rewards)] colors, when it reproduces. It will do so when it has eatten enough." - lines.Add(reward_line) - lines.Add(null) - - lines.Add(description_info) - return lines.Join("\n") +// These slimes have the mechanics xenobiologists care about, such as reproduction, mutating into new colors, and being able to submit through fear. + +/mob/living/simple_mob/slime/xenobio + desc = "The most basic of slimes. The grey slime has no remarkable qualities, however it remains one of the most useful colors for scientists." + layer = MOB_LAYER + 1 // Need them on top of other mobs or it looks weird when consuming something. + ai_holder_type = /datum/ai_holder/simple_mob/xenobio_slime // This should never be changed for xenobio slimes. + max_nutrition = 1000 + var/is_adult = FALSE // Slimes turn into adults when fed enough. Adult slimes are somewhat stronger, and can reproduce if fed enough. + var/maxHealth_adult = 200 + var/power_charge = 0 // Disarm attacks can shock someone if high/lucky enough. + var/mob/living/victim = null // the person the slime is currently feeding on + var/rainbow_core_candidate = TRUE // If false, rainbow cores cannot make this type randomly. + var/mutation_chance = 25 // Odds of spawning as a new color when reproducing. Can be modified by certain xenobio products. Carried across generations of slimes. + var/list/slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/orange, + /mob/living/simple_mob/slime/xenobio/metal, + /mob/living/simple_mob/slime/xenobio/blue, + /mob/living/simple_mob/slime/xenobio/purple + ) + var/amount_grown = 0 // controls how long the slime has been overfed, if 10, grows or reproduces + var/number = 0 // This is used to make the slime semi-unique for indentification. + var/harmless = FALSE // Set to true when pacified. Makes the slime harmless, not get hungry, and not be able to grow/reproduce. + +/mob/living/simple_mob/slime/xenobio/Initialize(mapload, var/mob/living/simple_mob/slime/xenobio/my_predecessor) + ASSERT(ispath(ai_holder_type, /datum/ai_holder/simple_mob/xenobio_slime)) + number = rand(1, 1000) + update_name() + + . = ..() // This will make the AI and do the other mob constructor things. It will also return the default hint at the end. + + if(my_predecessor) + inherit_information(my_predecessor) + + +/mob/living/simple_mob/slime/xenobio/Destroy() + if(victim) + stop_consumption() // Unbuckle us from our victim. + return ..() + +// Called when a slime makes another slime by splitting. The predecessor slime will be deleted shortly afterwards. +/mob/living/simple_mob/slime/xenobio/proc/inherit_information(var/mob/living/simple_mob/slime/xenobio/predecessor) + if(!predecessor) + return + + var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder + var/datum/ai_holder/simple_mob/xenobio_slime/previous_AI = predecessor.ai_holder + ASSERT(istype(AI)) + ASSERT(istype(previous_AI)) + + // Now to transfer the information. + // Newly made slimes are bit more rebellious than their predecessors, but they also somewhat forget the atrocities the xenobiologist may have done. + AI.discipline = max(previous_AI.discipline - 1, 0) + AI.obedience = max(previous_AI.obedience - 1, 0) + AI.resentment = max(previous_AI.resentment - 1, 0) + AI.rabid = previous_AI.rabid + + +/mob/living/simple_mob/slime/xenobio/update_icon() + icon_living = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_adult ? "adult" : "baby"][victim ? " eating" : ""]" + icon_dead = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_adult ? "adult" : "baby"] dead" + icon_rest = icon_dead + ..() // This will apply the correct icon_state and do the other overlay-related things. + + +/mob/living/simple_mob/slime/xenobio/handle_special() + if(stat != DEAD) + handle_nutrition() + + if(victim) + handle_consumption() + + handle_stuttering() // ?? + + ..() + +/mob/living/simple_mob/slime/xenobio/examine(mob/user) + . = ..() + if(hat) + . += "It is wearing \a [hat]." + + if(stat == DEAD) + . += "It appears to be dead." + else if(incapacitated(INCAPACITATION_DISABLED)) + . += "It appears to be incapacitated." + else if(harmless) + . += "It appears to have been pacified." + else + if(has_AI()) + var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder + if(AI.rabid) + . += "It seems very, very angry and upset." + else if(AI.obedience >= 5) + . += "It looks rather obedient." + else if(AI.discipline) + . += "It has been subjugated by force, at least for now." + +/mob/living/simple_mob/slime/xenobio/proc/make_adult() + if(is_adult) + return + + is_adult = TRUE + melee_damage_lower = round(melee_damage_lower * 2) // 20 + melee_damage_upper = round(melee_damage_upper * 2) // 30 + maxHealth = maxHealth_adult + max_nutrition = 1200 + amount_grown = 0 + update_icon() + update_name() + +/mob/living/simple_mob/slime/xenobio/proc/update_name() + if(harmless) // Docile slimes are generally named, so we shouldn't mess with it. + return + name = "[slime_color] [is_adult ? "adult" : "baby"] [initial(name)] ([number])" + real_name = name + +/mob/living/simple_mob/slime/xenobio/update_mood() + var/old_mood = mood + if(incapacitated(INCAPACITATION_DISABLED)) + mood = "sad" + else if(harmless) + mood = ":33" + else if(has_AI()) + var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder + if(AI.rabid) + mood = "angry" + else if(AI.target) + mood = "mischevous" + else if(AI.discipline) + mood = "pout" + else + mood = ":3" + else + mood = ":3" + + if(old_mood != mood) + update_icon() + +/mob/living/simple_mob/slime/xenobio/proc/enrage() + if(harmless) + return + if(has_AI()) + var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder + AI.enrage() + +/mob/living/simple_mob/slime/xenobio/proc/pacify() + harmless = TRUE + if(has_AI()) + var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder + AI.pacify() + + faction = "neutral" + + // If for whatever reason the mob AI (or player) decides to try to attack something anyways. + melee_damage_upper = 0 + melee_damage_lower = 0 + + update_mood() + + +// These are verbs so that player slimes can evolve/split. +/mob/living/simple_mob/slime/xenobio/verb/evolve() + set category = "Slime" + set desc = "This will let you evolve from baby to adult slime." + + if(stat) + to_chat(src, span("warning", "I must be conscious to do this...")) + return + + if(harmless) + to_chat(src, span("warning", "I have been pacified. I cannot evolve...")) + return + + if(!is_adult) + if(amount_grown >= 10) + make_adult() + else + to_chat(src, span("warning", "I am not ready to evolve yet...")) + else + to_chat(src, span("warning", "I have already evolved...")) + + +/mob/living/simple_mob/slime/xenobio/verb/reproduce() + set category = "Slime" + set desc = "This will make you split into four new slimes." + + if(stat) + to_chat(src, span("warning", "I must be conscious to do this...")) + return + + if(harmless) + to_chat(src, span("warning", "I have been pacified. I cannot reproduce...")) + return + + if(is_adult) + if(amount_grown >= 10) + // Check if there's enough 'room' to split. + var/list/nearby_things = orange(1, src) + var/free_tiles = 0 + for(var/turf/T in nearby_things) + var/free = TRUE + if(T.density) // No walls. + continue + for(var/atom/movable/AM in T) + if(AM.density || istype(AM, /mob/living/simple_mob/slime)) + free = FALSE + break + + if(free) + free_tiles++ + + if(free_tiles < 3) // Three free tiles are needed, as four slimes are made and the 4th tile is from the center tile that the current slime occupies. + to_chat(src, span("warning", "It is too cramped here to reproduce...")) + return + + var/list/babies = list() + for(var/i = 1 to 4) + babies.Add(make_new_slime()) + + var/mob/living/simple_mob/slime/new_slime = pick(babies) + new_slime.universal_speak = universal_speak + if(src.mind) + src.mind.transfer_to(new_slime) + else + new_slime.key = src.key + qdel(src) + else + to_chat(src, span("warning", "I am not ready to reproduce yet...")) + else + to_chat(src, span("warning", "I have not evolved enough to reproduce yet...")) + +// Used when reproducing or dying. +/mob/living/simple_mob/slime/xenobio/proc/make_new_slime(var/desired_type) + var/t = src.type + if(desired_type) + t = desired_type + if(prob(mutation_chance / 10)) + t = /mob/living/simple_mob/slime/xenobio/rainbow + else if(prob(mutation_chance) && slime_mutation.len) + t = slime_mutation[rand(1, slime_mutation.len)] + var/mob/living/simple_mob/slime/xenobio/baby = new t(loc, src) + + // Handle 'inheriting' from parent slime. + baby.mutation_chance = mutation_chance + baby.power_charge = round(power_charge / 4) + + if(!istype(baby, /mob/living/simple_mob/slime/xenobio/rainbow)) + baby.unity = unity + baby.faction = faction + baby.friends = friends.Copy() + + step_away(baby, src) + return baby + +/mob/living/simple_mob/slime/xenobio/get_description_interaction() + var/list/results = list() + + if(!stat) + results += "[desc_panel_image("slimebaton")]to stun the slime, if it's being bad." + + results += ..() + + return results + +/mob/living/simple_mob/slime/xenobio/get_description_info() + var/list/lines = list() + var/intro_line = "Slimes are generally the test subjects of Xenobiology, with different colors having different properties. \ + They can be extremely dangerous if not handled properly." + lines.Add(intro_line) + lines.Add(null) // To pad the line breaks. + + var/list/rewards = list() + for(var/potential_color in slime_mutation) + var/mob/living/simple_mob/slime/S = potential_color + rewards.Add(initial(S.slime_color)) + var/reward_line = "This color of slime can mutate into [english_list(rewards)] colors, when it reproduces. It will do so when it has eatten enough." + lines.Add(reward_line) + lines.Add(null) + + lines.Add(description_info) + return lines.Join("\n") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm b/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm new file mode 100644 index 0000000000..e4e58f75dc --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm @@ -0,0 +1,94 @@ +/mob/living/simple_mob/animal/passive/honkpet + name = "Hinkle" + desc = "The Silence into Laughter program mass produces these excessively hardy animals for each member to raise and take care of. They often switch personalities when smacked." + tt_desc = "Coulrian Honkus" + icon = 'icons/mob/animal_vr.dmi' + icon_state = "c_pet" + icon_living = "c_pet" + icon_dead = "c_pet_dead" + + maxHealth = 1500 + health = 1500 + minbodytemp = 175 // Same as Sif mobs. + + response_help = "pokes" + response_disarm = "subverts" + response_harm = "smacks" + + harm_intent_damage = 0 + melee_damage_lower = 0 + melee_damage_upper = 0 + attacktext = list("honked") + + armor = list( + "melee" = 80, + "bullet" = 20, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 0 + ) + armor_soak = list( + "melee" = 80, + "bullet" = 20, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 0 + ) + + has_langs = list("Coulrian") + +/mob/living/simple_mob/animal/passive/honkpet/attack_hand(mob/living/user as mob) + if(user.a_intent == I_DISARM) + return icon_state = pick("c_pet", "m_pet") + .=..() + +/mob/living/simple_mob/animal/passive/mimepet + name = "Dave" + desc = "That's Dave." + tt_desc = "Polypodavesilencia" + icon = 'icons/mob/animal_vr.dmi' + icon_state = "dave1" + icon_living = "dave1" + icon_dead = "dave_dead" + movement_cooldown = 300 + + maxHealth = 1500 + health = 1500 + minbodytemp = 175 // Same as Sif mobs. + + response_help = "pokes" + response_disarm = "shuffles" + response_harm = "smacks" + + harm_intent_damage = 0 + melee_damage_lower = 0 + melee_damage_upper = 0 + attacktext = list("...") + + armor = list( + "melee" = 80, + "bullet" = 20, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 0 + ) + armor_soak = list( + "melee" = 80, + "bullet" = 20, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 0 + ) + +/mob/living/simple_mob/animal/passive/mimepet/attack_hand(mob/living/user as mob) + if(user.a_intent == I_DISARM) + icon_state = pick("dave1", "dave2", "dave3", "dave5" , "dave6" , "dave7" , "dave8" , "dave9" , "dave10") + .=..() \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_abilities_ch.dm b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_abilities_ch.dm index 223366b9d0..62ff6910ae 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_abilities_ch.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_abilities_ch.dm @@ -22,3 +22,27 @@ blood_spawn = world.time return + +/mob/living/simple_mob/vore/demon/verb/toggle_laugh() + set name = "Toggle Auto Laugh" + set desc = "Toggles whether the demon will automatically laugh when interacted with." + set category = "Abilities" + + enable_autolaugh = !enable_autolaugh + if(enable_autolaugh) + to_chat(src,"Autolaugh has been toggled on") + else + to_chat(src,"Autolaugh has been toggled off") + +/mob/living/simple_mob/vore/demon/verb/manual_laugh() + set name = "Laugh" + set desc = "Plays the laugh track." + set category = "Abilities" + + if(!enable_autolaugh) //yeah this is kinda sorta dirty but id rather use a bool over something else here to control this. + enable_autolaugh = !enable_autolaugh + laugh() + enable_autolaugh = !enable_autolaugh + else + laugh() + to_chat(src,"You laugh!") //lets add some fluff response for clicking the feel good button. diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_ch.dm b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_ch.dm index 63595cb684..a815a9bbd1 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_ch.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_ch.dm @@ -55,6 +55,9 @@ var/last_shift = 0 var/blood_spawn = 0 var/is_shifting = FALSE + + var/enable_autolaugh = FALSE //Whether user controlled mob will laugh when interacting automatically. + var/laugh = 'sound/misc/demonlaugh.ogg' //Yknow maybe someone wants a custom laugh, you never know. /mob/living/simple_mob/vore/demon/init_vore() ..() @@ -115,21 +118,26 @@ L.reagents.add_reagent(poison_type, poison_per_bite) /mob/living/simple_mob/vore/demon/death() - playsound(src, 'sound/misc/demondeath.ogg', 50, 1) + laugh() ..() /mob/living/simple_mob/vore/demon/bullet_act() - playsound(src, 'sound/misc/demonlaugh.ogg', 50, 1) - ..() + laugh() + ..() /mob/living/simple_mob/vore/demon/attack_hand() - playsound(src, 'sound/misc/demonlaugh.ogg', 50, 1) - ..() + laugh() + ..() /mob/living/simple_mob/vore/demon/hitby() - playsound(src, 'sound/misc/demonlaugh.ogg', 50, 1) - ..() + laugh() + ..() /mob/living/simple_mob/vore/demon/attackby() - playsound(src, 'sound/misc/demonlaugh.ogg', 50, 1) - ..() \ No newline at end of file + laugh() + ..() +//This below proc could be improved by 1. add a bool for overriding the check (if we directly call the proc for example) +//and possibly adding a switch that checks a string given by the above procs so that we can have uniwue sounds if needed +/mob/living/simple_mob/vore/demon/proc/laugh() + if(!src.ckey || enable_autolaugh) + playsound(src, laugh, 50, 1) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/leopardmander_ch.dm b/code/modules/mob/living/simple_mob/subtypes/vore/leopardmander_ch.dm index d1503a7a47..2add7ca9e2 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/leopardmander_ch.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/leopardmander_ch.dm @@ -64,11 +64,11 @@ movement_cooldown = 2 /mob/living/simple_mob/vore/leopardmander/New() //Set to max nutrition on spawn since heal belly drains nutrition to work. - ..() + ..() src.adjust_nutrition(src.max_nutrition) /mob/living/simple_mob/vore/leopardmander/Initialize() - ..() + ..() src.adjust_nutrition(src.max_nutrition) /mob/living/simple_mob/vore/leopardmander/apply_melee_effects(atom/A) @@ -78,6 +78,7 @@ var/target_zone = pick(BP_TORSO,BP_TORSO,BP_TORSO,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_HEAD) if(L.can_inject(src, null, target_zone)) last_inject = world.time + L.init_vore() if(!L.allowmobvore) //If we can't eat them, stop mauling them. ai_holder.lose_target() //Call this first so the attacks stop if the reagent proc runtimes. L.reagents.add_reagent("bicaridine", venom_dose) //If we can't eat them, give them some bicar to compensate for no heal belly. @@ -86,7 +87,7 @@ L.reagents.add_reagent("myelamine", venom_dose) L.reagents.add_reagent("osteodaxon", venom_dose) - + /mob/living/simple_mob/vore/leopardmander @@ -160,7 +161,7 @@ glow_toggle = TRUE //Glow! glow_range = 2 - glow_color = "#FF006E" + glow_color = "#FF006E" glow_intensity = 1.5 /mob/living/simple_mob/vore/leopardmander/exotic/proc/toggle_glow() @@ -171,7 +172,7 @@ glow_toggle = !glow_toggle /mob/living/simple_mob/vore/leopardmander/exotic/New() - ..() + ..() verbs |= /mob/living/simple_mob/vore/leopardmander/exotic/proc/toggle_glow /mob/living/simple_mob/vore/leopardmander/exotic/init_vore() @@ -205,4 +206,4 @@ /obj/random/mob/leopardmander/item_to_spawn() //Random map spawner return pick(prob(89);/mob/living/simple_mob/vore/leopardmander, prob(10);/mob/living/simple_mob/vore/leopardmander/blue, - prob(1);/mob/living/simple_mob/vore/leopardmander/exotic,) \ No newline at end of file + prob(1);/mob/living/simple_mob/vore/leopardmander/exotic,) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/wolfgirl.dm b/code/modules/mob/living/simple_mob/subtypes/vore/wolfgirl.dm index 4cf5e49ad1..fa4595459a 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/wolfgirl.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/wolfgirl.dm @@ -24,15 +24,6 @@ say_list_type = /datum/say_list/wolfgirl ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative/wolfgirl - var/loopstop = 0 //To prevent circular awoooos. -/* -/mob/living/simple_mob/retaliate/wolfgirl/hear_say() - if(world.time - loopstop < 5 SECONDS) - return - else - loopstop = world.time - ..() -*/ // Activate Noms! /mob/living/simple_mob/vore/wolfgirl vore_active = 1 @@ -59,6 +50,22 @@ if(findtext(message, "Awoo.")) delayed_say(pick("Awoo?"), speaker) + if(findtext(message, "Nice hat")) + delayed_say(pick("Thanks my grandma made it for me."), speaker) + + if(findtext(message, "What's your phone number?")) + delayed_say(pick("Five six seven oh nine! Wait, who are you?"), speaker) + + if(findtext(message, "Are you horny?")) + delayed_say(pick("No! I'm just hyperactive!"), speaker) + + if(findtext(message, "Good girl")) + delayed_say(pick("Aww thanks... Wait, I'm not a dog!"), speaker) + + if(findtext(message, "Fuyu")) + delayed_say(pick("You know my sister?!", "Is she causing problems again?"), speaker) + + /datum/say_list/wolfgirl speak = list("AwoooOOOOoooo!","Awoo~","I'll protect the forest! ... Where's the forest again?","All I need is my sword!","Awoo?","Anyone else smell that?") emote_hear = list("awoooos!","hmms to herself","plays with her sword") diff --git a/code/modules/mob/living/zz_ballistics_ch/bullet_act_ch.dm b/code/modules/mob/living/zz_ballistics_ch/bullet_act_ch.dm index d13391f897..70cb7d8fd8 100644 --- a/code/modules/mob/living/zz_ballistics_ch/bullet_act_ch.dm +++ b/code/modules/mob/living/zz_ballistics_ch/bullet_act_ch.dm @@ -52,14 +52,13 @@ GLOBAL_VAR_INIT(ENERGY_DAMAGE_ORGAN_FACTOR,0.035) var/ballistic_armor = getarmor(def_zone, "bullet") var/melee_armor = getarmor(def_zone, "melee") var/obj/item/organ/external/hit_organ - var/mob/living/carbon/human/H = src - if(istype(H)) - hit_organ = H.get_organ(def_zone) + if(organs.len) + hit_organ = src.get_organ(def_zone) for(var/ext_organ in ballistic_variables["organ_hit_weight"]) var/list/input = list() - var/obj/item/organ/external/ref_ext_organ = H.get_organ(ext_organ) + var/obj/item/organ/external/ref_ext_organ = src.get_organ(ext_organ) for(var/int_organ in ballistic_variables["organ_hit_weight"][ext_organ]) - var/ref_int_organ = H.internal_organs_by_name[int_organ] + var/ref_int_organ = src.internal_organs_by_name[int_organ] if(ref_ext_organ && ref_int_organ && (ref_int_organ in ref_ext_organ.internal_organs)) input[ref_int_organ] = ballistic_variables["organ_hit_weight"][ext_organ][int_organ] if(input.len) @@ -112,12 +111,16 @@ GLOBAL_VAR_INIT(ENERGY_DAMAGE_ORGAN_FACTOR,0.035) /mob/living/proc/organ_handle_ballistics(var/obj/item/projectile/bullet/P,var/obj/item/organ/external/hit_organ,var/energy_dumped_organic,var/internal_loss,var/ballistic_armor,var/list/updated_organ_weight) var/conversion_efficiency = P.hollow_point ? GLOB.HOLLOW_POINT_CONVERSION_EFF : 1 + conversion_efficiency *= ballistic_variables["flesh_factors"]["damage_mult"] + internal_loss *= ballistic_variables["flesh_factors"]["velloss_mult"] var/energy_past var/bone_chance = BONE_HIT_CHANCE_UNENCASED if(hit_organ.encased) bone_chance = BONE_HIT_CHANCE_ENCASED else bone_chance = ballistic_variables["bone_chance_unencased"][hit_organ.organ_tag] + if(hit_organ.cannot_break) + bone_chance = 0 //log_and_message_admins("Bone hit chance is [bone_chance], organ is [hit_organ]") if(prob(bone_chance)) var/energy_to_fracture = max(GLOB.BONE_JOULES_MIN, hit_organ.min_broken_damage * (GAUSSIAN_RANDOM()*GLOB.BONE_JOULES_PERHP_DEV + GLOB.BONE_JOULES_PERHP_AVG)) @@ -192,12 +195,22 @@ GLOBAL_VAR_INIT(ENERGY_DAMAGE_ORGAN_FACTOR,0.035) /mob/living/proc/general_handle_ballistics(var/obj/item/projectile/bullet/P,var/def_zone,var/energy_dumped_organic,var/internal_loss,var/ballistic_armor) var/conversion_efficiency = P.hollow_point ? GLOB.HOLLOW_POINT_CONVERSION_EFF : 1 + conversion_efficiency *= ballistic_variables["flesh_factors"]["damage_mult"] + internal_loss *= ballistic_variables["flesh_factors"]["velloss_mult"] var/energy_past var/bone_chance = BONE_HIT_CHANCE_UNENCASED - //if(def_zone in ballistic_variables["bone_chance_unencased"]) - //bone_chance = ballistic_variables["bone_chance_unencased"][def_zone] + var/bone_strength = 1 + var/est_organ = def_zone + if(!est_organ) + est_organ = BP_TORSO + if(est_organ in list(O_EYES, O_MOUTH)) + est_organ = BP_HEAD + if(est_organ in ballistic_variables["bone_chance_unencased"]) + bone_chance = ballistic_variables["bone_chance_unencased"][est_organ] + if(est_organ in ballistic_variables["bone_strength"]) + bone_strength = ballistic_variables["bone_strength"][est_organ] if(prob(bone_chance)) - var/energy_to_fracture = max(GLOB.BONE_JOULES_MIN, BONE_HP_AVG * (GAUSSIAN_RANDOM()*GLOB.BONE_JOULES_PERHP_DEV + GLOB.BONE_JOULES_PERHP_AVG)) + var/energy_to_fracture = max(GLOB.BONE_JOULES_MIN, BONE_HP_AVG * (GAUSSIAN_RANDOM()*GLOB.BONE_JOULES_PERHP_DEV + GLOB.BONE_JOULES_PERHP_AVG)) * bone_strength if(energy_to_fracture>=P.energy) //We don't have enough energy to get through the bone. This is the end for us! energy_dumped_organic += P.energy/2 //About half of our remaining energy will go into fucking up this boi, the rest is absorbed by the bone P.sub_velocity(P.velocity) @@ -207,22 +220,25 @@ GLOBAL_VAR_INIT(ENERGY_DAMAGE_ORGAN_FACTOR,0.035) P.sub_energy(energy_to_fracture) energy_dumped_organic += P.energy / 3 //About a third of the energy that goes into fracturing the bone also goes into fucking up tissues. - if(prob(HIT_VITAL_ORGAN_CHANCE)) + if((est_organ in ballistic_variables["organ_hit_chance"]) && prob(ballistic_variables["organ_hit_chance"][est_organ])) energy_past = P.energy P.sub_velocity(internal_loss) - energy_dumped_organic += (energy_past - P.energy) * 1.5 + var/energy_mult = 1.5 + if(est_organ in ballistic_variables["organ_multiplier"]) + energy_mult = ballistic_variables["organ_multiplier"][est_organ] + energy_dumped_organic += (energy_past - P.energy) * energy_mult if(!P.velocity) energy_to_damage(energy_dumped_organic * conversion_efficiency,def_zone,P) return 2 energy_past = P.energy P.sub_velocity(internal_loss) energy_dumped_organic += energy_past - P.energy - if(!P.velocity || (def_zone in ballistic_variables["organ_leave_early"]) || prob(PROB_LEAVE_EARLY_SECOND)) + if(!P.velocity || (est_organ in ballistic_variables["organ_leave_early"]) || prob(PROB_LEAVE_EARLY_SECOND)) energy_to_damage(energy_dumped_organic * conversion_efficiency,def_zone,P) return P.velocity ? -1 : 2 if(prob(bone_chance)) - var/energy_to_fracture = max(GLOB.BONE_JOULES_MIN, BONE_HP_AVG * (GAUSSIAN_RANDOM()*GLOB.BONE_JOULES_PERHP_DEV + GLOB.BONE_JOULES_PERHP_AVG)) + var/energy_to_fracture = max(GLOB.BONE_JOULES_MIN, BONE_HP_AVG * (GAUSSIAN_RANDOM()*GLOB.BONE_JOULES_PERHP_DEV + GLOB.BONE_JOULES_PERHP_AVG)) * bone_strength if(energy_to_fracture>=P.energy) //We don't have enough energy to get through the bone. This is the end for us! energy_dumped_organic += P.energy/2 //About half of our remaining energy will go into fucking up this boi, the rest is absorbed by the bone P.sub_velocity(P.velocity) @@ -302,4 +318,17 @@ GLOBAL_VAR_INIT(ENERGY_DAMAGE_ORGAN_FACTOR,0.035) /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ /*Replicant organs*/O_VENTC = 20, \ /*Xeno organs*/ O_EGG = 25) ), \ - "organ_hit_chance" = list(BP_HEAD = 95, BP_TORSO = 90, BP_GROIN = 90) ) \ No newline at end of file + "organ_hit_chance" = list(BP_HEAD = 95, BP_TORSO = 90, BP_GROIN = 90), \ + "bone_strength" = list(BP_HEAD = 1.3, BP_TORSO = 1.15, BP_GROIN = 1, BP_L_FOOT = 0.7, BP_R_FOOT = 0.7, BP_L_LEG = 1.2, BP_R_LEG = 1.2, BP_L_ARM = 1, BP_R_ARM = 1, BP_L_HAND = 0.55, BP_R_HAND = 0.55), \ + "organ_multiplier" = list(BP_HEAD = 2, BP_TORSO = 1.75, BP_GROIN = 1.25)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1)) + +/mob/living/Initialize() + . = ..() + if(islist(ballistic_variables)) + ballistic_variables = widelist(ballistic_variables) + +/mob/living/proc/b_test_proc() + var/nameof = NAMEOF(src,ballistic_variables) + log_world(nameof) + return nameof \ No newline at end of file diff --git a/code/modules/mob/living/zz_ballistics_ch/z_ballistic_overrides_ch.dm b/code/modules/mob/living/zz_ballistics_ch/z_ballistic_overrides_ch.dm new file mode 100644 index 0000000000..d4e9c9a873 --- /dev/null +++ b/code/modules/mob/living/zz_ballistics_ch/z_ballistic_overrides_ch.dm @@ -0,0 +1,563 @@ +//Simple mobs +/mob/living/simple_mob + //These are the basic base settings for simple_mobs that pretty much says "most living things kinda approximate around these values", special cases will be accounted for in following overrides. + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 80, BP_TORSO = 80, BP_GROIN = 20, BP_L_FOOT = 80, BP_R_FOOT = 80, BP_L_LEG = 35, BP_R_LEG = 35, BP_L_ARM = 65, BP_R_ARM = 65, BP_L_HAND = 80, BP_R_HAND = 80), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 95, BP_TORSO = 90, BP_GROIN = 90), \ + "bone_strength" = list(BP_HEAD = 1.3, BP_TORSO = 1.15, BP_GROIN = 1, BP_L_FOOT = 0.7, BP_R_FOOT = 0.7, BP_L_LEG = 1.2, BP_R_LEG = 1.2, BP_L_ARM = 1, BP_R_ARM = 1, BP_L_HAND = 0.55, BP_R_HAND = 0.55), \ + "organ_multiplier" = list(BP_HEAD = 4, BP_TORSO = 3.5, BP_GROIN = 2.5)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1)) + +/mob/living/simple_mob/animal/giant_spider + //Spiders have an exoskeleton and no internal skeleton, so there'll be just 97% chance of hitting bone (3% for stuff like eyes and orifices), but the bone is much easier to punch through. + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 97, BP_TORSO = 97, BP_GROIN = 97, BP_L_FOOT = 97, BP_R_FOOT = 97, BP_L_LEG = 97, BP_R_LEG = 97, BP_L_ARM = 97, BP_R_ARM = 97, BP_L_HAND = 97, BP_R_HAND = 97), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 95, BP_TORSO = 90, BP_GROIN = 90), \ + "bone_strength" = list(BP_HEAD = 0.35, BP_TORSO = 0.3, BP_GROIN = 0.25, BP_L_FOOT = 0.15, BP_R_FOOT = 0.15, BP_L_LEG = 0.2, BP_R_LEG = 0.2, BP_L_ARM = 0.2, BP_R_ARM = 0.2, BP_L_HAND = 0.15, BP_R_HAND = 0.15), \ + "organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1)) + +/mob/living/simple_mob/metroid + //Metroids aren't real but we can make some guesses, and they sure as hell don't have any bones. They also don't have any arms or feet, so we're gonna pretend like those are referring to the parts of the metroid slime that have no organs in them. + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 90, BP_TORSO = 95, BP_GROIN = 95), \ + "bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3.4)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1.175,"velloss_mult" = 1.3)) + +/mob/living/simple_mob/mechanical + //Okay, so my equations weren't really meant for stuff made out of metal, but we should be able to make it work anyways. We'll just make bone represent armor instead. + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 85, BP_TORSO = 90, BP_GROIN = 90, BP_L_FOOT = 95, BP_R_FOOT = 95, BP_L_LEG = 95, BP_R_LEG = 95, BP_L_ARM = 95, BP_R_ARM = 95, BP_L_HAND = 95, BP_R_HAND = 95), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 80, BP_TORSO = 80, BP_GROIN = 80), \ + "bone_strength" = list(BP_HEAD = 2.5, BP_TORSO = 3, BP_GROIN = 2.75, BP_L_FOOT = 1.5, BP_R_FOOT = 1.5, BP_L_LEG = 2, BP_R_LEG = 2, BP_L_ARM = 1.75, BP_R_ARM = 1.75, BP_L_HAND = 1.35, BP_R_HAND = 1.35), \ + "organ_multiplier" = list(BP_HEAD = 3, BP_TORSO = 2.5, BP_GROIN = 2.5)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1)) + +/mob/living/simple_mob/tomato + //Going to copy from metroids, since they're honestly kind of similar, just blob shaped mushy creatures. + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 90, BP_TORSO = 95, BP_GROIN = 95), \ + "bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3.4)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1.175,"velloss_mult" = 1.3)) + +/mob/living/simple_mob/animal/space/tree + //It's uh, a tree? Gonna say here that the bark will act as a shitty equivalent to bones but be 100% encasing + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 100, BP_TORSO = 100, BP_GROIN = 100, BP_L_FOOT = 100, BP_R_FOOT = 100, BP_L_LEG = 100, BP_R_LEG = 100, BP_L_ARM = 100, BP_R_ARM = 100, BP_L_HAND = 100, BP_R_HAND = 100), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 95, BP_TORSO = 90, BP_GROIN = 90), \ + "bone_strength" = list(BP_HEAD = 0.075, BP_TORSO = 0.15, BP_GROIN = 0.2, BP_L_FOOT = 0.075, BP_R_FOOT = 0.075, BP_L_LEG = 0.1, BP_R_LEG = 0.1, BP_L_ARM = 0.075, BP_R_ARM = 0.075, BP_L_HAND = 0.05, BP_R_HAND = 0.05), \ + "organ_multiplier" = list(BP_HEAD = 4, BP_TORSO = 3.5, BP_GROIN = 2.5)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1)) + +/mob/living/simple_mob/slime + //Slimes are also just getting copied from metroids, so scroll up for explanation. + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 90, BP_TORSO = 95, BP_GROIN = 95), \ + "bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3.4)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1.175,"velloss_mult" = 1.3)) + +/mob/living/simple_mob/vore/pitcher_plant + //Uhhh, well, pitcher plants are kinda funny because they're mostly hollow. Gonna pretty much just say that they have no organs and no bones here. Maybe later on we can add a special function for bullets to also act on whatever is inside. + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0), \ + "bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_multiplier" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1)) + +/mob/living/simple_mob/vore/bee + //Bees also have exoskeletons, so copying from spiders pretty much. + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 97, BP_TORSO = 97, BP_GROIN = 97, BP_L_FOOT = 97, BP_R_FOOT = 97, BP_L_LEG = 97, BP_R_LEG = 97, BP_L_ARM = 97, BP_R_ARM = 97, BP_L_HAND = 97, BP_R_HAND = 97), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 95, BP_TORSO = 90, BP_GROIN = 90), \ + "bone_strength" = list(BP_HEAD = 0.35, BP_TORSO = 0.3, BP_GROIN = 0.25, BP_L_FOOT = 0.15, BP_R_FOOT = 0.15, BP_L_LEG = 0.2, BP_R_LEG = 0.2, BP_L_ARM = 0.2, BP_R_ARM = 0.2, BP_L_HAND = 0.15, BP_R_HAND = 0.15), \ + "organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1)) + +/mob/living/simple_mob/vore/aggressive/corrupthound + //These are mechanical, so copying from mechanical. + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 85, BP_TORSO = 90, BP_GROIN = 90, BP_L_FOOT = 95, BP_R_FOOT = 95, BP_L_LEG = 95, BP_R_LEG = 95, BP_L_ARM = 95, BP_R_ARM = 95, BP_L_HAND = 95, BP_R_HAND = 95), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 80, BP_TORSO = 80, BP_GROIN = 80), \ + "bone_strength" = list(BP_HEAD = 2.5, BP_TORSO = 3, BP_GROIN = 2.75, BP_L_FOOT = 1.5, BP_R_FOOT = 1.5, BP_L_LEG = 2, BP_R_LEG = 2, BP_L_ARM = 1.75, BP_R_ARM = 1.75, BP_L_HAND = 1.35, BP_R_HAND = 1.35), \ + "organ_multiplier" = list(BP_HEAD = 3, BP_TORSO = 2.5, BP_GROIN = 2.5)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1)) + +/mob/living/simple_mob/vore/aggressive/frog + //Frogs actually have some interesting anatomy. Giant head, small brain, large holes in the skull for eyes. + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 65, BP_TORSO = 70, BP_GROIN = 20, BP_L_FOOT = 80, BP_R_FOOT = 80, BP_L_LEG = 35, BP_R_LEG = 35, BP_L_ARM = 65, BP_R_ARM = 65, BP_L_HAND = 80, BP_R_HAND = 80), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 50, BP_TORSO = 90, BP_GROIN = 90), \ + "bone_strength" = list(BP_HEAD = 1.3, BP_TORSO = 1.15, BP_GROIN = 1, BP_L_FOOT = 0.7, BP_R_FOOT = 0.7, BP_L_LEG = 1.2, BP_R_LEG = 1.2, BP_L_ARM = 1, BP_R_ARM = 1, BP_L_HAND = 0.55, BP_R_HAND = 0.55), \ + "organ_multiplier" = list(BP_HEAD = 4, BP_TORSO = 3.5, BP_GROIN = 2.9)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1)) + +/mob/living/simple_mob/animal/space/jelly + //Copying from metroids again + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 90, BP_TORSO = 95, BP_GROIN = 95), \ + "bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3.4)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1.175,"velloss_mult" = 1.3)) + +/mob/living/simple_mob/vore/sect_queen + //Exoskeleton, so, gonna copy from spiders and give a small bonus to the bone strength for the sheer size. + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 97, BP_TORSO = 97, BP_GROIN = 97, BP_L_FOOT = 97, BP_R_FOOT = 97, BP_L_LEG = 97, BP_R_LEG = 97, BP_L_ARM = 97, BP_R_ARM = 97, BP_L_HAND = 97, BP_R_HAND = 97), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 95, BP_TORSO = 90, BP_GROIN = 90), \ + "bone_strength" = list(BP_HEAD = 0.45, BP_TORSO = 0.4, BP_GROIN = 0.35, BP_L_FOOT = 0.25, BP_R_FOOT = 0.25, BP_L_LEG = 0.3, BP_R_LEG = 0.3, BP_L_ARM = 0.3, BP_R_ARM = 0.3, BP_L_HAND = 0.25, BP_R_HAND = 0.25), \ + "organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1)) + +/mob/living/simple_mob/vore/oregrub + //They seem mushy and blobby, so gonna copy from metroids. + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 90, BP_TORSO = 95, BP_GROIN = 95), \ + "bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3.4)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1.175,"velloss_mult" = 1.3)) + +/mob/living/simple_mob/vore/solargrub + //Solargrubs also seem mushy and blobby, let's continue copying from metroids. + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 90, BP_TORSO = 95, BP_GROIN = 95), \ + "bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3.4)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1.175,"velloss_mult" = 1.3)) + +/mob/living/simple_mob/vore/slug + //Slugs are also mushy and blobby, gonna copy from metroids as well. + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 90, BP_TORSO = 95, BP_GROIN = 95), \ + "bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3.4)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1.175,"velloss_mult" = 1.3)) + +/mob/living/simple_mob/vore/aggressive/mimic + //Hmm, To be honest I imagine mimics having an exoskeleton, so I'm gonna copy from spiders and make a few changes for organ stuff. + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 97, BP_TORSO = 97, BP_GROIN = 97, BP_L_FOOT = 97, BP_R_FOOT = 97, BP_L_LEG = 97, BP_R_LEG = 97, BP_L_ARM = 97, BP_R_ARM = 97, BP_L_HAND = 97, BP_R_HAND = 97), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 60, BP_TORSO = 80, BP_GROIN = 90), \ + "bone_strength" = list(BP_HEAD = 0.35, BP_TORSO = 0.3, BP_GROIN = 0.25, BP_L_FOOT = 0.15, BP_R_FOOT = 0.15, BP_L_LEG = 0.2, BP_R_LEG = 0.2, BP_L_ARM = 0.2, BP_R_ARM = 0.2, BP_L_HAND = 0.15, BP_R_HAND = 0.15), \ + "organ_multiplier" = list(BP_HEAD = 3.5, BP_TORSO = 3.5, BP_GROIN = 3.5)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1)) + +/mob/living/simple_mob/vore/solarmoth + //Solarmoths are getting directly copied from spiders, again because of exoskeleton + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 97, BP_TORSO = 97, BP_GROIN = 97, BP_L_FOOT = 97, BP_R_FOOT = 97, BP_L_LEG = 97, BP_R_LEG = 97, BP_L_ARM = 97, BP_R_ARM = 97, BP_L_HAND = 97, BP_R_HAND = 97), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 95, BP_TORSO = 90, BP_GROIN = 90), \ + "bone_strength" = list(BP_HEAD = 0.35, BP_TORSO = 0.3, BP_GROIN = 0.25, BP_L_FOOT = 0.15, BP_R_FOOT = 0.15, BP_L_LEG = 0.2, BP_R_LEG = 0.2, BP_L_ARM = 0.2, BP_R_ARM = 0.2, BP_L_HAND = 0.15, BP_R_HAND = 0.15), \ + "organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1)) + +/mob/living/simple_mob/blob + //Apparently these are considered slimes in code, so gonna copy from metroid for them. + ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_HEAD = 90, BP_TORSO = 95, BP_GROIN = 95), \ + "bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3.4)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1.175,"velloss_mult" = 1.3)) + +//Species +/datum/species/shapeshifter/promethean/handle_post_spawn(var/mob/living/carbon/human/H) + .=..() + //Honestly this is mostly for balancing purposes, since prometheans have no bones and weirder organs it fucks with the numbers, so giving them a bit more flesh damage + H.ballistic_variables = list(\ + "bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \ + "organ_hit_weight" = list(\ + BP_HEAD = list(\ + /*Standard organs*/O_BRAIN = 90, O_EYES = 5, \ + /*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \ + /*Replicant organs*/O_VRLINK = 20, \ + /*Xeno organs*/O_ACID = 10, O_RESIN = 10), \ + BP_TORSO = list(\ + /*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \ + /*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \ + /*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \ + /*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \ + /*Replicant organs*/O_AREJECT = 35, \ + /*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \ + BP_GROIN = list(\ + /*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \ + /*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \ + /*Replicant organs*/O_VENTC = 20, \ + /*Xeno organs*/ O_EGG = 25) ), \ + "organ_hit_chance" = list(BP_TORSO = 85), \ + "bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \ + "organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3.4)/*Only used for simple mobs*/, \ + "flesh_factors" = list("damage_mult" = 1.175,"velloss_mult" = 1.3)) + H.ballistic_variables = widelist(H.ballistic_variables) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 7fa2f23b6f..092563280c 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -590,6 +590,7 @@ // Do the initial caching of the player's body icons. new_character.force_update_limbs() new_character.update_icons_body() + new_character.update_transform() //VOREStation Edit new_character.key = key //Manually transfer the key to log them in diff --git a/code/modules/mob/new_player/preferences_setup_vr.dm b/code/modules/mob/new_player/preferences_setup_vr.dm index 134fdb77da..1f01884b60 100644 --- a/code/modules/mob/new_player/preferences_setup_vr.dm +++ b/code/modules/mob/new_player/preferences_setup_vr.dm @@ -4,6 +4,7 @@ mannequin.dna = new /datum/dna(null) mannequin.delete_inventory(TRUE) dress_preview_mob(mannequin) + mannequin.update_transform() mannequin.toggle_tail_vr(setting = TRUE) mannequin.toggle_wing_vr(setting = TRUE) COMPILE_OVERLAYS(mannequin) diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index 74578c8e9a..b5b0c8eaa6 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -64,10 +64,45 @@ flags = HAIR_TIEABLE /datum/sprite_accessory/hair/afro_large - name = "Big Afro" + name = "Afro, Big" icon_state = "hair_bigafro" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/afropuffdouble + name = "Afropuff, Double" + icon_state = "hair_afropuffdouble" + flags = HAIR_TIEABLE + +/datum/sprite_accessory/hair/afropuffleft + name = "Afropuff, Left" + icon_state = "hair_afropuffleft" + flags = HAIR_TIEABLE + +/datum/sprite_accessory/hair/afropuffright + name = "Afropuff, Right" + icon_state = "hair_afropuffright" + flags = HAIR_TIEABLE + +/datum/sprite_accessory/hair/angelique + name = "Angelique" + icon_state = "hair_angelique" + flags = HAIR_TIEABLE + +/datum/sprite_accessory/hair/antonio + name = "Antonio" + icon_state = "hair_antonio" + flags = HAIR_VERY_SHORT + +/datum/sprite_accessory/hair/aradia + name = "Aradia" + icon_state = "hair_aradia" + flags = HAIR_TIEABLE + +/datum/sprite_accessory/hair/messyhair + name = "All Up" + icon_state = "hair_messyhair" + flags = HAIR_VERY_SHORT + /datum/sprite_accessory/hair/amazon name = "Amazon" icon_state = "hair_amazon" @@ -77,6 +112,11 @@ name = "Antenna" icon_state = "hair_antenna" +/datum/sprite_accessory/hair/averagejoe + name = "Average Joe" + icon_state = "hair_averagejoe" + flags = HAIR_VERY_SHORT + /datum/sprite_accessory/hair/bald name = "Bald" icon_state = "bald" @@ -93,6 +133,11 @@ icon_state = "hair_e" flags = HAIR_VERY_SHORT +/datum/sprite_accessory/hair/band + name = "Band" + icon_state = "hair_band" + flags = HAIR_TIEABLE + /datum/sprite_accessory/hair/beachwave name = "Beach Waves" icon_state = "hair_beachwave" @@ -133,6 +178,10 @@ icon_state = "hair_beehive2" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/bieber + name = "Bieber" + icon_state = "hair_bieb" + /datum/sprite_accessory/hair/belenko name = "Belenko" icon_state = "hair_belenko" @@ -143,6 +192,11 @@ icon_state = "hair_belenkotied" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/bigcurls + name = "Big Curls" + icon_state = "hair_bigcurls" + flags = HAIR_TIEABLE + /datum/sprite_accessory/hair/bob name = "Bob" icon_state = "hair_bobcut" @@ -154,6 +208,11 @@ icon_state = "hair_bobcutalt" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/midb + name = "Bob, Mid-length" + icon_state = "hair_midb" + flags = HAIR_TIEABLE + /datum/sprite_accessory/hair/bobcurl name = "Bobcurl" icon_state = "hair_bobcurl" @@ -182,6 +241,16 @@ icon_state = "hair_hbraid" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/longbraid + name = "Braid Long, Alt" + icon_state = "hair_longbraid" + flags = HAIR_TIEABLE + +/datum/sprite_accessory/hair/longbraidalt + name = "Braid Long, Alt 2" + icon_state = "hair_braidalt" + flags = HAIR_TIEABLE + /datum/sprite_accessory/hair/mbraid name = "Braid Medium" icon_state = "hair_shortbraid" @@ -282,6 +351,11 @@ name = "Combover" icon_state = "hair_combover" +/datum/sprite_accessory/hair/cornbun + name = "Cornbun" + icon_state = "hair_cornbun" + flags = HAIR_TIEABLE + /datum/sprite_accessory/hair/country name = "Country" icon_state = "hair_country" @@ -302,6 +376,11 @@ icon_state = "hair_c" flags = HAIR_VERY_SHORT +/datum/sprite_accessory/hair/darcy + name = "Darcy" + icon_state = "hair_darcy" + flags = HAIR_VERY_SHORT + /datum/sprite_accessory/hair/dave name = "Dave" icon_state = "hair_dave" @@ -310,6 +389,11 @@ name = "Devil Lock" icon_state = "hair_devilock" +/datum/sprite_accessory/hair/dirk + name = "Dirk" + icon_state = "hair_dirk" + flags = HAIR_VERY_SHORT + /datum/sprite_accessory/hair/donutbun name = "Donut Bun" icon_state = "hair_donutbun" @@ -319,11 +403,25 @@ icon_state = "hair_dreads" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/dreadslong + name = "Dreads Long" + icon_state = "hair_dreadslong" + flags = HAIR_TIEABLE + +/datum/sprite_accessory/hair/dreadslongalt + name = "Dreads Long, Alt" + icon_state = "hair_dreadlongalt" + flags = HAIR_TIEABLE + /datum/sprite_accessory/hair/mahdrills name = "Drillruru" icon_state = "hair_drillruru" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/elize + name = "Elize" + icon_state = "hair_elize" + /datum/sprite_accessory/hair/emo name = "Emo" icon_state = "hair_emo" @@ -344,11 +442,28 @@ icon_state = "hair_halfshaved" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/halfshavedlong + name = "Emo Half-Shaved Long" + icon_state = "hair_halfshavedL" + +/datum/sprite_accessory/hair/emoright + name = "Emo Mid-length" + icon_state = "hair_emoright" + /datum/sprite_accessory/hair/longemo name = "Emo Long" icon_state = "hair_emolong" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/equius + name = "Equius" + icon_state = "hair_equius" + +/datum/sprite_accessory/hair/fabio + name = "Fabio" + icon_state = "hair_fabio" + flags = HAIR_TIEABLE + /datum/sprite_accessory/hair/highfade name = "Fade High" icon_state = "hair_highfade" @@ -385,11 +500,20 @@ icon_state = "hair_feather" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/feferi + name = "Feferi" + icon_state = "hair_feferi" + flags = HAIR_TIEABLE + /datum/sprite_accessory/hair/flair name = "Flaired Hair" icon_state = "hair_flair" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/flipped + name = "Flipped" + icon_state = "hair_flipped" + /datum/sprite_accessory/hair/sargeant name = "Flat Top" icon_state = "hair_sargeant" @@ -414,6 +538,15 @@ icon_state = "hair_fringetail" flags = HAIR_TIEABLE|HAIR_VERY_SHORT +/datum/sprite_accessory/hair/froofy_long + name = "Froofy Long" + icon_state = "hair_froofy_long" + flags = HAIR_TIEABLE + +/datum/sprite_accessory/hair/gamzee + name = "Gamzee" + icon_state = "hair_gamzee" + /datum/sprite_accessory/hair/gelled name = "Gelled Back" icon_state = "hair_gelled" @@ -429,6 +562,11 @@ icon_state = "hair_gentle2long" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/glammetal + name = "Glam Metal Long" + icon_state = "hair_glammetal" + flags = HAIR_TIEABLE + /datum/sprite_accessory/hair/glossy name = "Glossy" icon_state = "hair_glossy" @@ -471,11 +609,14 @@ icon_state = "hair_jade" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/jane + name = "Jane" + icon_state = "hair_jane" + /datum/sprite_accessory/hair/jensen name = "Jensen" icon_state = "hair_jensen" - /datum/sprite_accessory/hair/jessica name = "Jessica" icon_state = "hair_jessica" @@ -485,11 +626,20 @@ name = "Joestar" icon_state = "hair_joestar" +/datum/sprite_accessory/hair/judge + name = "Judge" + icon_state = "hair_judge" + flags = HAIR_TIEABLE + /datum/sprite_accessory/hair/kagami name = "Kagami" icon_state = "hair_kagami" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/kanaya + name = "Kanaya" + icon_state = "hair_kanaya" + /datum/sprite_accessory/hair/keanu name = "Keanu Hair" icon_state = "hair_keanu" @@ -543,6 +693,15 @@ name = "Mary Sue" icon_state = "hair_marysue" +/datum/sprite_accessory/hair/mia + name = "Mia" + icon_state = "hair_mia" + +/datum/sprite_accessory/hair/mialong + name = "Mia Long" + icon_state = "hair_mialong" + flags = HAIR_TIEABLE + /datum/sprite_accessory/hair/miles name = "Miles Hair" icon_state = "hair_miles" @@ -574,6 +733,10 @@ name = "Mulder" icon_state = "hair_mulder" +/datum/sprite_accessory/hair/nepeta + name = "Nepeta" + icon_state = "hair_nepeta" + /datum/sprite_accessory/hair/newyou name = "New You" icon_state = "hair_newyou" @@ -713,6 +876,16 @@ icon_state = "hair_newyou" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/rockandroll + name = "Rock and Roll" + icon_state = "hair_rockandroll" + flags = HAIR_TIEABLE + +/datum/sprite_accessory/hair/rockstarcurls + name = "Rockstar Curls" + icon_state = "hair_rockstarcurls" + flags = HAIR_TIEABLE + /datum/sprite_accessory/hair/ronin name = "Ronin" icon_state = "hair_ronin" @@ -723,6 +896,10 @@ icon_state = "hair_rosa" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/rose + name = "Rose" + icon_state = "hair_rose" + /datum/sprite_accessory/hair/rows name = "Rows" icon_state = "hair_rows1" @@ -748,6 +925,10 @@ icon_state = "hair_rowbraid" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/roxy + name = "Roxy" + icon_state = "hair_roxy" + /datum/sprite_accessory/hair/sabitsuki name = "Sabitsuki" icon_state = "hair_sabitsuki" @@ -766,6 +947,11 @@ name = "Short Bangs" icon_state = "hair_shortbangs" +/datum/sprite_accessory/hair/shortflip + name = "Short Flip" + icon_state = "hair_shortflip" + flags = HAIR_VERY_SHORT + /datum/sprite_accessory/hair/short name = "Short Hair" // try to capatilize the names please~ icon_state = "hair_a" // you do not need to define _s or _l sub-states, game automatically does this for you @@ -796,6 +982,16 @@ icon_state = "hair_ponytailf" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/sideponytail5 + name = "Side Ponytail 3" + icon_state = "hair_sidetail" + flags = HAIR_TIEABLE + +/datum/sprite_accessory/hair/sideponytail6 + name = "Side Ponytail 4" + icon_state = "hair_sidetail2" + flags = HAIR_TIEABLE + /datum/sprite_accessory/hair/sideponytail2 name = "Shoulder One" icon_state = "hair_oneshoulder" @@ -836,10 +1032,28 @@ icon_state = "hair_straightlong" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/suave + name = "Suave" + icon_state = "hair_suave" + +/datum/sprite_accessory/hair/suavetwo + name = "Suave 2" + icon_state = "hair_suave2" + /datum/sprite_accessory/hair/sweepshave name = "Sweep Shave" icon_state = "hair_sweepshave" +/datum/sprite_accessory/hair/sweptfringe + name = "Swept Fringe" + icon_state = "hair_sweptfringe" + flags = HAIR_TIEABLE + +/datum/sprite_accessory/hair/terezi + name = "Terezi" + icon_state = "hair_terezi" + flags = HAIR_TIEABLE + /datum/sprite_accessory/hair/thinning name = "Thinning" icon_state = "hair_thinning" @@ -877,6 +1091,11 @@ icon_state = "hair_twintail" flags = HAIR_TIEABLE +/datum/sprite_accessory/hair/twinbob + name = "Twinbun Bob" + icon_state = "hair_bunbob" + flags = HAIR_TIEABLE + /datum/sprite_accessory/hair/undercut1 name = "Undercut" icon_state = "hair_undercut1" @@ -895,6 +1114,11 @@ gender = MALE flags = HAIR_VERY_SHORT +/datum/sprite_accessory/hair/longundercut + name = "Undercut Long" + icon_state = "hair_undercutlong" + flags = HAIR_VERY_SHORT + /datum/sprite_accessory/hair/unkept name = "Unkept" icon_state = "hair_unkept" @@ -909,6 +1133,11 @@ name = "Vegeta" icon_state = "hair_toriyama2" +/datum/sprite_accessory/hair/vriska + name = "Vriska" + icon_state = "hair_vriska" + flags = HAIR_TIEABLE + /datum/sprite_accessory/hair/vivi name = "Vivi" icon_state = "hair_vivi" diff --git a/code/modules/multiz/movement_vr.dm b/code/modules/multiz/movement_vr.dm index bbca4eef0d..9c1a8f2994 100644 --- a/code/modules/multiz/movement_vr.dm +++ b/code/modules/multiz/movement_vr.dm @@ -77,6 +77,8 @@ pred.Weaken(8) var/mob/living/prey = src var/fallloc = prey.loc + pred.init_vore() + prey.init_vore() if(pred.can_be_drop_pred && prey.can_be_drop_prey) pred.feed_grabbed_to_self_falling_nom(pred,prey) pred.loc = fallloc diff --git a/code/modules/overmap/ships/computers/engine_control.dm b/code/modules/overmap/ships/computers/engine_control.dm index 5721c6f9c7..267381d9a4 100644 --- a/code/modules/overmap/ships/computers/engine_control.dm +++ b/code/modules/overmap/ships/computers/engine_control.dm @@ -86,7 +86,7 @@ E.set_thrust_limit(limit) . = TRUE - if("toggle") + if("toggle_engine") var/datum/ship_engine/E = locate(params["engine"]) if(istype(E)) E.toggle() diff --git a/code/modules/overmap/ships/computers/sensors.dm b/code/modules/overmap/ships/computers/sensors.dm index bec21e16a3..30c9ed3632 100644 --- a/code/modules/overmap/ships/computers/sensors.dm +++ b/code/modules/overmap/ships/computers/sensors.dm @@ -105,7 +105,7 @@ if(nrange) sensors.set_range(CLAMP(nrange, 1, world.view)) . = TRUE - if("toggle") + if("toggle_sensor") sensors.toggle() . = TRUE diff --git a/code/modules/persistence/filth.dm b/code/modules/persistence/filth.dm index a7aa9e9cd4..2d8e91b5ce 100644 --- a/code/modules/persistence/filth.dm +++ b/code/modules/persistence/filth.dm @@ -5,8 +5,8 @@ icon_state = "mfloor1" random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7") color = "#464f33" - persistent = TRUE anchored = 1 + persistent = TRUE /obj/effect/decal/cleanable/filth/Initialize() . = ..() diff --git a/code/modules/planet/sif.dm b/code/modules/planet/sif.dm index 921142812d..e3f0b31810 100644 --- a/code/modules/planet/sif.dm +++ b/code/modules/planet/sif.dm @@ -278,8 +278,8 @@ var/datum/planet/sif/planet_sif = null transition_messages = list( "The sky is dark, and rain falls down upon you." ) -// outdoor_sounds_type = /datum/looping_sound/weather/rain -// indoor_sounds_type = /datum/looping_sound/weather/rain/indoors + outdoor_sounds_type = /datum/looping_sound/weather/rain + indoor_sounds_type = /datum/looping_sound/weather/rain/indoors /datum/weather/sif/rain/process_effects() ..() @@ -327,8 +327,8 @@ var/datum/planet/sif/planet_sif = null "Loud thunder is heard in the distance.", "A bright flash heralds the approach of a storm." ) -// outdoor_sounds_type = /datum/looping_sound/weather/rain -// indoor_sounds_type = /datum/looping_sound/weather/rain/indoors + outdoor_sounds_type = /datum/looping_sound/weather/rain + indoor_sounds_type = /datum/looping_sound/weather/rain/indoors transition_chances = list( diff --git a/code/modules/planet/virgo3b_vr.dm b/code/modules/planet/virgo3b_vr.dm index 791841aca7..ad24827115 100644 --- a/code/modules/planet/virgo3b_vr.dm +++ b/code/modules/planet/virgo3b_vr.dm @@ -265,6 +265,8 @@ var/datum/planet/virgo3b/planet_virgo3b = null transition_messages = list( "The sky is dark, and rain falls down upon you." ) + outdoor_sounds_type = /datum/looping_sound/weather/rain + indoor_sounds_type = /datum/looping_sound/weather/rain/indoors /datum/weather/virgo3b/rain/process_effects() ..() @@ -310,6 +312,8 @@ var/datum/planet/virgo3b/planet_virgo3b = null "Loud thunder is heard in the distance.", "A bright flash heralds the approach of a storm." ) + outdoor_sounds_type = /datum/looping_sound/weather/rain + indoor_sounds_type = /datum/looping_sound/weather/rain/indoors transition_chances = list( diff --git a/code/modules/projectiles/ammunition/zz_autolathe_ch.dm b/code/modules/projectiles/ammunition/zz_autolathe_ch.dm index b9a0fdb5be..29265a3bbe 100644 --- a/code/modules/projectiles/ammunition/zz_autolathe_ch.dm +++ b/code/modules/projectiles/ammunition/zz_autolathe_ch.dm @@ -95,4 +95,109 @@ /datum/category_item/autolathe/arms/sks_762 name = "SKS Clip (10x 7.62x39 standard)" path = /obj/item/ammo_magazine/clip/sks + hidden = 1 + +/datum/category_item/autolathe/arms/sks_762_ap + name = "SKS Clip (10x 7.62x39 armor-piercing)" + path = /obj/item/ammo_magazine/clip/sks/ap + hidden = 1 + +/datum/category_item/autolathe/arms/mosin_762 + name = "Mosin Nagant Clip (5x 7.62x54mmR standard)" + path = /obj/item/ammo_magazine/clip/mosin + hidden = 1 + +/datum/category_item/autolathe/arms/mosin_762_ap + name = "Mosin Nagant Clip (5x 7.62x54mmR armor-piercing)" + path = /obj/item/ammo_magazine/clip/mosin + hidden = 1 + +/datum/category_item/autolathe/arms/t901_762 + name = "Type-901 magazine (7.62x51mm standard)" + path = /obj/item/ammo_magazine/type901 + hidden = 1 + +/datum/category_item/autolathe/arms/t901_762_ap + name = "Type-901 magazine (7.62x51mm armor-piercing)" + path = /obj/item/ammo_magazine/type901/ap + hidden = 1 + +/datum/category_item/autolathe/arms/awp_338 + name = "AWP magazine (.338 Lapua standard)" + path = /obj/item/ammo_magazine/awp + hidden = 1 + +/datum/category_item/autolathe/arms/awp_338_ap + name = "AWP magazine (.338 Lapua armor-piercing)" + path = /obj/item/ammo_magazine/awp/ap + hidden = 1 + +/datum/category_item/autolathe/arms/hectate_50bmg + name = "Hectate II magazine (.50 BMG standard)" + path = /obj/item/ammo_magazine/hectate + hidden = 1 + +/datum/category_item/autolathe/arms/hectate_50bmg_ap + name = "Hectate II magazine (.50 BMG armor-piercing)" + path = /obj/item/ammo_magazine/hectate/ap + hidden = 1 + +/datum/category_item/autolathe/arms/ppsh_762x25 + name = "PPSH drum Magazine (7.62x25mm Tokarev standard)" + path = /obj/item/ammo_magazine/ppsh + hidden = 1 + +/datum/category_item/autolathe/arms/plamya_9x39 + name = "Plamya drum magazine(9x39mm standard)" + path = /obj/item/ammo_magazine/plamya + hidden = 1 + +/datum/category_item/autolathe/arms/plamya_9x39_ap + name = "Plamya drum magazine(9x39mm armor-piercing)" + path = /obj/item/ammo_magazine/plamya/ap + hidden = 1 + +/datum/category_item/autolathe/arms/strela_12g + name = "Strela magazine (12 gauge buckshot)" + path = /obj/item/ammo_magazine/strela + hidden = 1 + +/datum/category_item/autolathe/arms/strela_12g_slug + name = "Strela magazine (12 gauge slug)" + path = /obj/item/ammo_magazine/strela/slug + hidden = 1 + +/datum/category_item/autolathe/arms/molniya_762 + name = "Molniya magazine box (7.62x51mm standard)" + path = /obj/item/ammo_magazine/molniya + hidden = 1 + +/datum/category_item/autolathe/arms/molniya_762_ap + name = "Molniya magazine box (7.62x51mm armor-piercing)" + path = /obj/item/ammo_magazine/molniya/ap + hidden = 1 + +/datum/category_item/autolathe/arms/ssp4_10mm + name = "SSP4 magazine (10mm standard)" + path = /obj/item/ammo_magazine/ssp4 + hidden = 1 + +/datum/category_item/autolathe/arms/makarov_9x18 + name = "Makarov magazine (9x18mm Makarov standard)" + path = /obj/item/ammo_magazine/makarov + hidden = 1 + +/datum/category_item/autolathe/arms/vp70_9mm + name = "VP70 magazine (18x 9x19mm standard)" + path = /obj/item/ammo_magazine/m9mm/vp70 + hidden = 1 + +/datum/category_item/autolathe/arms/vp70_9mm_ap + name = "VP70 magazine (18x 9x19mm armor-piercing)" + path = /obj/item/ammo_magazine/m9mm/vp70/ap + hidden = 1 + +/datum/category_item/autolathe/arms/vp70_9mm_hp + name = "VP70 magazine (18x 9x19mm hollow-point)" + path = /obj/item/ammo_magazine/m9mm/vp70/hp hidden = 1 \ No newline at end of file diff --git a/code/modules/projectiles/ammunition/zz_magazines_ch.dm b/code/modules/projectiles/ammunition/zz_magazines_ch.dm index 24b1a7775d..bafe42fa04 100644 --- a/code/modules/projectiles/ammunition/zz_magazines_ch.dm +++ b/code/modules/projectiles/ammunition/zz_magazines_ch.dm @@ -40,8 +40,8 @@ /obj/item/ammo_magazine/mp5mag name = "mp5 magazine(9x19mm standard)" - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "smg" + icon = 'icons/obj/ammo_ch.dmi' + icon_state = "mp5mag" max_ammo = 30 mag_type = MAGAZINE caliber = "9mm" @@ -120,6 +120,12 @@ matter = list(DEFAULT_WALL_MATERIAL = 1700) ammo_type = /obj/item/ammo_casing/a556/hp +/obj/item/ammo_magazine/m16/patriot + name = "Patriot magazine (5.56x45mm standard)" + matter = list(DEFAULT_WALL_MATERIAL = 5000) + max_ammo = 100 + icon_state = "patriotmag" + /obj/item/ammo_magazine/m41 name = "M41A magazine (10x24mm standard)" icon = 'icons/obj/ammo_ch.dmi' @@ -132,9 +138,172 @@ ammo_type = /obj/item/ammo_casing/a10x24 /obj/item/ammo_magazine/clip/sks - name = "Ammo clip(7.62x39mm)" + name = "Ammo clip(7.62x39mm standard)" icon_state = "gclip" max_ammo = 10 caliber = "7.62x39mm" + multiple_sprites = 1 matter = list(DEFAULT_WALL_MATERIAL = 400) + ammo_type = /obj/item/ammo_casing/a762x39 +/obj/item/ammo_magazine/clip/sks/ap + name = "Ammo clip(7.62x39mm armor-piercing)" + matter = list(DEFAULT_WALL_MATERIAL = 700) + ammo_type = /obj/item/ammo_casing/a762x39/ap + +/obj/item/ammo_magazine/clip/mosin + name = "Ammo clip(7.62x54mmR standard)" + icon_state = "clip_rifle" + max_ammo = 5 + caliber = "7.62x54mmR" + multiple_sprites = 1 + matter = list(DEFAULT_WALL_MATERIAL = 300) + ammo_type = /obj/item/ammo_casing/a762x54 + +/obj/item/ammo_magazine/clip/mosin/ap + name = "Ammo clip(7.62x54mmR armor-piercing)" + matter = list(DEFAULT_WALL_MATERIAL = 600) + ammo_type = /obj/item/ammo_casing/a762x54/ap + +/obj/item/ammo_magazine/type901 + name = "Type-901 magazine(7.62x51mm standard)" + icon = 'icons/obj/ammo_ch.dmi' + caliber = "7.62mm" + icon_state = "762mag" + max_ammo = 30 + mag_type = MAGAZINE + multiple_sprites = 1 + matter = list(DEFAULT_WALL_MATERIAL = 2400) + ammo_type = /obj/item/ammo_casing/a762 + +/obj/item/ammo_magazine/type901/ap + name = "Type-901 magazine(7.62x51mm armor-piercing)" + matter = list(DEFAULT_WALL_MATERIAL = 3000) + ammo_type = /obj/item/ammo_casing/a762/ap + +/obj/item/ammo_magazine/awp + name = "AWP magazine(.338 Lapua standard)" + icon = 'icons/obj/ammo_ch.dmi' + caliber = ".338" + icon_state = "awp" + max_ammo = 5 + mag_type = MAGAZINE + multiple_sprites = 1 + matter = list(DEFAULT_WALL_MATERIAL = 2400) + ammo_type = /obj/item/ammo_casing/a338 + +/obj/item/ammo_magazine/awp/ap + name = "AWP magazine(.338 Lapua armor-piercing)" + matter = list(DEFAULT_WALL_MATERIAL = 3000) + ammo_type = /obj/item/ammo_casing/a338/ap + +/obj/item/ammo_magazine/hectate + name = "Hectate II magazine(.50 BMG standard)" + icon = 'icons/obj/ammo_ch.dmi' + caliber = ".50 BMG" + icon_state = "hectate" + max_ammo = 7 + mag_type = MAGAZINE + multiple_sprites = 1 + matter = list(DEFAULT_WALL_MATERIAL = 4000) + ammo_type = /obj/item/ammo_casing/a50bmg + +/obj/item/ammo_magazine/hectate/ap + name = "Hectate II magazine(.50 BMG armor-piercing)" + matter = list(DEFAULT_WALL_MATERIAL = 5000) + ammo_type = /obj/item/ammo_casing/a50bmg/ap + +/obj/item/ammo_magazine/ppsh + name = "PPSH-17b drum magazine(7.62x25mm Tokarev standard)" + icon = 'icons/obj/ammo_ch.dmi' + caliber = "7.62x25mm" + icon_state = "ppshmag" + max_ammo = 71 + mag_type = MAGAZINE + multiple_sprites = 1 + matter = list(DEFAULT_WALL_MATERIAL = 1500) + ammo_type = /obj/item/ammo_casing/a762x25 + +/obj/item/ammo_magazine/plamya + name = "Plamya drum magazine(9x39mm standard)" + icon = 'icons/obj/ammo_ch.dmi' + caliber = "9x39mm" + icon_state = "plamyamag" + max_ammo = 50 + mag_type = MAGAZINE + multiple_sprites = 1 + matter = list(DEFAULT_WALL_MATERIAL = 2500) + ammo_type = /obj/item/ammo_casing/a9x39 + +/obj/item/ammo_magazine/plamya/ap + name = "Plamya drum magazine(9x39mm armor-piercing)" + matter = list(DEFAULT_WALL_MATERIAL = 3000) + ammo_type = /obj/item/ammo_casing/a9x39/ap + +/obj/item/ammo_magazine/strela + name = "Strela magazine(12 gauge buckshot)" + icon = 'icons/obj/ammo_ch.dmi' + caliber = "12g" + icon_state = "strelamag" + max_ammo = 7 + mag_type = MAGAZINE + multiple_sprites = 1 + matter = list(DEFAULT_WALL_MATERIAL = 800) + ammo_type = /obj/item/ammo_casing/a12g/pellet + +/obj/item/ammo_magazine/strela/slug + name = "Strela magazine(12 gauge slug)" + ammo_type = /obj/item/ammo_casing/a12g + +/obj/item/ammo_magazine/molniya + name = "Molniya magazine box(7.62x51mm standard)" + icon = 'icons/obj/ammo_ch.dmi' + caliber = "7.62mm" + icon_state = "molniyamag" + max_ammo = 100 + mag_type = MAGAZINE + multiple_sprites = 1 + matter = list(DEFAULT_WALL_MATERIAL = 8000) + ammo_type = /obj/item/ammo_casing/a762 + +/obj/item/ammo_magazine/molniya/ap + name = "Molniya magazine box(7.62x51mm armor-piercing)" + matter = list(DEFAULT_WALL_MATERIAL = 10000) + ammo_type = /obj/item/ammo_casing/a762/ap + +/obj/item/ammo_magazine/ssp4 + name = "SSP4 magazine(10mm standard)" + icon = 'icons/obj/ammo_ch.dmi' + caliber = "10mm" + icon_state = "10mmmag" + max_ammo = 8 + mag_type = MAGAZINE + multiple_sprites = 1 + matter = list(DEFAULT_WALL_MATERIAL = 400) + ammo_type = /obj/item/ammo_casing/a10mm + +/obj/item/ammo_magazine/makarov + name = "Makarov magazine(9x18mm Makarov standard)" + icon = 'icons/obj/ammo_ch.dmi' + caliber = "9x18mm" + icon_state = "9mmmag" + max_ammo = 8 + mag_type = MAGAZINE + multiple_sprites = 1 + matter = list(DEFAULT_WALL_MATERIAL = 400) + ammo_type = /obj/item/ammo_casing/a9x18 + +/obj/item/ammo_magazine/m9mm/vp70 + name = "VP70 magazine (18x 9x19mm standard)" + icon = 'icons/obj/ammo_ch.dmi' + icon_state = "9mmmag" + ammo_type = /obj/item/ammo_casing/a9mm + max_ammo = 18 + +/obj/item/ammo_magazine/m9mm/vp70/ap + name = "VP70 magazine (18x 9x19mm armor-piercing)" + ammo_type = /obj/item/ammo_casing/a9mm/ap + +/obj/item/ammo_magazine/m9mm/vp70/hp + name = "VP70 magazine (18x 9x19mm hollow-point)" + ammo_type = /obj/item/ammo_casing/a9mm/ap \ No newline at end of file diff --git a/code/modules/projectiles/ammunition/zz_rounds_ch.dm b/code/modules/projectiles/ammunition/zz_rounds_ch.dm index 612c116a3d..ce9238e135 100644 --- a/code/modules/projectiles/ammunition/zz_rounds_ch.dm +++ b/code/modules/projectiles/ammunition/zz_rounds_ch.dm @@ -36,6 +36,16 @@ desc = "A rubber 5.7x28mm round" projectile_type = /obj/item/projectile/bullet/pistol/rubber +/obj/item/ammo_casing/a762x25 + desc = "A standard 7.62x25mm Tokarev round" + caliber = "7.62x25mm" + projectile_type = /obj/item/projectile/bullet/a762x25 + +/obj/item/ammo_casing/a9x18 + desc = "A standard 9x18mm Makarov round" + caliber = "9x18mm" + projectile_type = /obj/item/projectile/bullet/a9x18 + /obj/item/ammo_casing/a762x54 desc = "A standard 7.62x54mmR round" caliber = "7.62x54mmR" @@ -46,6 +56,24 @@ desc = "An armor piercing 7.62x54mmR round" projectile_type = /obj/item/projectile/bullet/rifle/a762x54/ap +/obj/item/ammo_casing/a338 + desc = "A standard .338 Lapua round" + caliber = ".338" + projectile_type = /obj/item/projectile/bullet/rifle/a338 + +/obj/item/ammo_casing/a338/ap + desc = "An armor piercing .338 Lapua round" + projectile_type = /obj/item/projectile/bullet/rifle/a338/ap + +/obj/item/ammo_casing/a50bmg + desc = "A standard .50 BMG round" + caliber = ".50 BMG" + projectile_type = /obj/item/projectile/bullet/rifle/a50bmg + +/obj/item/ammo_casing/a50bmg/ap + desc = "An armor piercing .50 BMG round" + projectile_type = /obj/item/projectile/bullet/rifle/a50bmg/ap + /obj/item/ammo_casing/a9x39 desc = "A standard 9x39mm round" caliber = "9x39mm" diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 2095ce1416..96e4a1b42c 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -103,12 +103,12 @@ unlikely.\

\ An interesting note about this weapon, when compared to contemporary energy weapons, is \ - that this gun appears to be inferior to modern laser weapons. The beam fired has less \ - of an ability to harm, and the power consumption appears to be higher than average for \ - a human-made energy side-arm. One possible explaination is that the creators of this \ + that this gun appears to be only slightly superior to modern laser weapons. The beam fired has \ + roughly the same ability to harm, yet the power consumption is higher than average \ + for a human-made energy side-arm. One possible explaination is that the creators of this \ weapon, in their later years, had less of a need to optimize their capability for war, \ - and instead focused on other endeavors. Another explaination is that vast age of the weapon \ - may have caused it to degrade, yet still remain functional at a reduced capability." + and instead focused on other endeavors. Another explanation is that the vast age of the weapon \ + may have caused it to degrade, yet still remain functional at a reduced capability." //CHOMPedit changed description to be accurate with new projectile value = CATALOGUER_REWARD_MEDIUM /obj/item/weapon/gun/energy/alien @@ -117,13 +117,14 @@ catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_pistol) icon_state = "alienpistol" item_state = "alienpistol" - fire_delay = 10 // Handguns should be inferior to two-handed weapons. Even alien ones I suppose. - charge_cost = 480 // Five shots. + fire_delay = 9 //CHOMPedit changed cooldown from 10 to 9. + charge_cost = 380 // CHOMPedit changed from 480 to 380. Aka five shots to six shots. - projectile_type = /obj/item/projectile/beam/cyan + projectile_type = /obj/item/projectile/beam/precursor //CHOMPedit changed beam type cell_type = /obj/item/weapon/cell/device/weapon/recharge/alien // Self charges. origin_tech = list(TECH_COMBAT = 8, TECH_MAGNET = 7) modifystate = "alienpistol" + battery_lock = 1 //CHOMPedit adds battery lock. /obj/item/weapon/gun/energy/captain diff --git a/code/modules/projectiles/guns/energy/laser_ch.dm b/code/modules/projectiles/guns/energy/laser_ch.dm new file mode 100644 index 0000000000..949f3d8350 --- /dev/null +++ b/code/modules/projectiles/guns/energy/laser_ch.dm @@ -0,0 +1,84 @@ +/obj/item/weapon/gun/energy/laser + icon = 'icons/obj/64x32guns_ch.dmi' + icon_state = "lcarbine" + name = "NT LC-525 Laser Rifle" + desc = "A relatively new, mass produced Nanotrasen laser carbine designed to kill with concentrated energy blasts. Just like the G40E, it has two firemodes, standard, and suppressive, which fires more efficent but weaker beams." + icon_expected_width = 64 + var/is64x32 = TRUE + var/is64x32_override = FALSE + var/is_picked_up = FALSE + +/obj/item/weapon/gun/energy/laser/equipped() + . = ..() + is_picked_up = TRUE + update_transform() + +/obj/item/weapon/gun/energy/laser/pickup() + . = ..() + is_picked_up = TRUE + update_transform() + +/obj/item/weapon/gun/energy/laser/dropped() + . = ..() + if(!istype(loc,/mob/living)) + is_picked_up = FALSE + update_transform() + +/obj/item/weapon/gun/energy/laser/Initialize() + . = ..() + if((!(type == /obj/item/weapon/gun/energy/laser)) && !is64x32_override) + is64x32 = FALSE + if(icon_expected_width == 64) + icon_expected_width = 32 + if(icon == 'icons/obj/64x32guns_ch.dmi') + icon = 'icons/obj/gun.dmi' + if(is64x32) + update_transform() + +/obj/item/weapon/gun/energy/laser/update_transform() + . = ..() + if(is64x32) + if(is_picked_up) + transform = transform.Turn(-45) + transform = transform.Translate(-16,0) + +/obj/item/weapon/gun/energy/laser/empty + is64x32_override = TRUE + +/obj/item/weapon/gun/energy/laser/mounted + is64x32_override = TRUE + +/obj/item/weapon/gun/energy/laser/practice + is64x32_override = TRUE + +/obj/item/weapon/gun/energy/laser/vepr + name = "WKHM 'Vepr'" + desc = "The Vepr lasgun, in 40 Watt range. One of the most robust laser rifles out there, but not one that's commonly seen. This piece is WKHM's latest entry into the energy weapon market, competing with the Hephaestus Industries G40E. Uses its own proprietary energy cells. It has three settings, standard, suppressive, and burst. This one bears the 'WKHM Adamant' arkship's production stamp." + description_fluff = "WKHM, is a minor arms company that has been around for quite some time, established in 2408. Known for being one of the many suppliers of weapons to dangerous worlds on the rim, and a part of the FTU. They produce a large variety of firearms, strike craft, and armored vehicles to fufill various their various contracts, and are largely migrant, moving wherever the money is. Found almost entirely on mobile production ships and various escort craft. Identifiable by their logo, a red Omega symbol with a black or white W in the middle. The sheer quantity of their firearms produced ensures they can be found.. just about anywhere, and they are very sought after by pirates for their reliability." + icon_expected_width = 64 + icon_state = "vepr" + firemodes = list( + list(mode_name="normal", fire_delay=8, projectile_type=/obj/item/projectile/beam/midlaser, charge_cost = 240), + list(mode_name="suppressive", fire_delay=5, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 60), + list(mode_name="burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/burstlaser, charge_cost = 200), + ) + force = 8 + w_class = ITEMSIZE_HUGE //Probably gonna make it a rifle sooner or later //CHOMP Edit, and so I did. + slot_flags = SLOT_BELT|SLOT_BACK //CHOMP Edit. Let's make it so that if it doesn't fit in a backpack, it doesn't fit in a holster either. + is64x32_override = TRUE + accept_cell_type = /obj/item/weapon/cell/vepr + cell_type = /obj/item/weapon/cell/vepr + origin_tech = list(TECH_POWER = 4, TECH_COMBAT = 6, TECH_MAGNET = 4, TECH_ILLEGAL = 4) + +/obj/item/weapon/cell/vepr + icon = 'icons/obj/ammo_ch.dmi' + icon_state = "veprcell" + item_state = "egg6" + w_class = ITEMSIZE_SMALL + maxcharge = 7200 + charge_amount = 20 + matter = list("metal" = 350, "glass" = 50) + preserve_item = 1 + overlay_half_state = "veprcell_o1" + overlay_full_state = "veprcell_o2" + origin_tech = list(TECH_POWER = 6) diff --git a/code/modules/projectiles/guns/magnetic/magnetic_railgun_ch.dm b/code/modules/projectiles/guns/magnetic/magnetic_railgun_ch.dm new file mode 100644 index 0000000000..fa3eb3cd85 --- /dev/null +++ b/code/modules/projectiles/guns/magnetic/magnetic_railgun_ch.dm @@ -0,0 +1,43 @@ +/obj/item/weapon/gun/magnetic/railgun + name = "WKHM 'Strzyga' railgun" + desc = "A devastatingly powerful, and very expensive railgun built for long range engagements, and anti vehicle applications. Possibly one of the most powerful handheld weapons to date. Capable of punching a hole clean through a durasteel wall. The last thing the enemy will never see. 'DO NOT TOUCH THE RAILS' is stickered on the receiver. Chambers 16.5x122mm slugs. " + description_fluff = "WKHM, is a minor arms company that has been around for quite some time, established in 2408. Known for being one of the many suppliers of weapons to dangerous worlds on the rim, and a part of the FTU. They produce a large variety of firearms, strike craft, and armored vehicles to fufill various their various contracts, and are largely migrant, moving wherever the money is. Found almost entirely on mobile production ships and various escort craft. Identifiable by their logo, a red Omega symbol with a black or white W in the middle. The sheer quantity of their firearms produced ensures they can be found.. just about anywhere, and they are very sought after by pirates for their reliability." + icon = 'icons/obj/64x32guns_ch.dmi' + icon_state = "railgun-e" + icon_expected_width = 64 + var/is64x32 = TRUE + var/is64x32_override = FALSE + var/is_picked_up = FALSE + +/obj/item/weapon/gun/magnetic/railgun/equipped() + . = ..() + is_picked_up = TRUE + update_transform() + +/obj/item/weapon/gun/magnetic/railgun/pickup() + . = ..() + is_picked_up = TRUE + update_transform() + +/obj/item/weapon/gun/magnetic/railgun/dropped() + . = ..() + is_picked_up = FALSE + update_transform() + +/obj/item/weapon/gun/magnetic/railgun/Initialize() + . = ..() + if((!(type == /obj/item/weapon/gun/magnetic/railgun)) && !is64x32_override) + is64x32 = FALSE + if(icon_expected_width == 64) + icon_expected_width = 32 + if(icon == 'icons/obj/64x32guns_ch.dmi') + icon = 'icons/obj/railgun.dmi' + if(is64x32) + update_transform() + +/obj/item/weapon/gun/magnetic/railgun/update_transform() + . = ..() + if(is64x32) + if(is_picked_up) + transform = transform.Turn(-45) + transform = transform.Translate(-16,0) diff --git a/code/modules/projectiles/guns/projectile/zz_ballistics_ch.dm b/code/modules/projectiles/guns/projectile/zz_ballistics_ch.dm index 918249bfce..64fba106ed 100644 --- a/code/modules/projectiles/guns/projectile/zz_ballistics_ch.dm +++ b/code/modules/projectiles/guns/projectile/zz_ballistics_ch.dm @@ -66,6 +66,9 @@ icon_state = "asval" icon_expected_height = 32 icon_expected_width = 64 + firemodes = list() + var/is_picked_up = FALSE + var/is_long = TRUE /obj/item/weapon/gun/projectile/automatic/serdy/Initialize() . = ..() @@ -73,7 +76,33 @@ /obj/item/weapon/gun/projectile/automatic/serdy/update_transform() . = ..() + if(is_picked_up && is_long) + transform = transform.Turn(-45) transform = transform.Translate(-16,0) + +/obj/item/weapon/gun/projectile/automatic/serdy/equipped() + . = ..() + is_picked_up = TRUE + update_transform() + +/obj/item/weapon/gun/projectile/automatic/serdy/pickup() + . = ..() + is_picked_up = TRUE + update_transform() + +/obj/item/weapon/gun/projectile/automatic/serdy/dropped() + . = ..() + is_picked_up = FALSE + update_transform() + +/obj/item/weapon/gun/projectile/automatic/serdy/update_icon() + . = ..() + if(load_method == MAGAZINE) + icon_state = ammo_magazine ? "[initial(icon_state)]" : "[initial(icon_state)]-e" + else + icon_state = bolt_open ? "[initial(icon_state)]-e" : "[initial(icon_state)]" + + //AK Variants /obj/item/weapon/gun/projectile/automatic/serdy/asval @@ -92,6 +121,7 @@ auto_loading_type = CLOSED_BOLT | LOCK_MANUAL_LOCK muzzle_velocity = 295 w_class = ITEMSIZE_HUGE + one_handed_penalty = 50 /obj/item/weapon/gun/projectile/automatic/serdy/krinkov name = "Krinkov" @@ -108,6 +138,7 @@ load_method = MAGAZINE auto_loading_type = CLOSED_BOLT | LOCK_MANUAL_LOCK muzzle_velocity = 680 + is_long = FALSE /obj/item/weapon/gun/projectile/automatic/serdy/akm name = "AKM" @@ -125,6 +156,7 @@ auto_loading_type = CLOSED_BOLT | LOCK_MANUAL_LOCK muzzle_velocity = 715 w_class = ITEMSIZE_HUGE + one_handed_penalty = 60 /obj/item/weapon/gun/projectile/automatic/serdy/scrapak name = "AKM" @@ -142,6 +174,7 @@ auto_loading_type = CLOSED_BOLT | LOCK_MANUAL_LOCK muzzle_velocity = 700 w_class = ITEMSIZE_HUGE + one_handed_penalty = 70 // AR Variants @@ -179,12 +212,13 @@ load_method = MAGAZINE muzzle_velocity = 910 w_class = ITEMSIZE_HUGE + one_handed_penalty = 50 /obj/item/weapon/gun/projectile/automatic/serdy/patriot name = "Patriot" desc = "I raised you, and loved you, I've given you weapons, taught you techniques, endowed you with knowledge. There's nothing more for me to give you. All that's left for you to take is my life. 'Still in a dream' is stamped into the receiver, and it has no serial number. Chambered in 5.56x45mm." caliber = "5.56x45mm" - magazine_type = /obj/item/ammo_magazine/m16 + magazine_type = /obj/item/ammo_magazine/m16/patriot allowed_magazines = list(/obj/item/ammo_magazine/m16) icon_state="patriot" projectile_type = /obj/item/projectile/bullet/rifle/a556 @@ -196,6 +230,7 @@ load_method = MAGAZINE muzzle_velocity = 960 w_class = ITEMSIZE_HUGE + one_handed_penalty = 40 //Other rifles @@ -205,7 +240,7 @@ caliber = "10x24mm caseless" magazine_type = /obj/item/ammo_magazine/m41 allowed_magazines = list(/obj/item/ammo_magazine/m41) - icon_state="m41ab" + icon_state="m41b" projectile_type = /obj/item/projectile/bullet/rifle/a10x24 firemodes = list( list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), @@ -213,6 +248,8 @@ ) load_method = MAGAZINE muzzle_velocity = 840 + w_class = ITEMSIZE_HUGE + one_handed_penalty = 50 /obj/item/weapon/gun/projectile/automatic/serdy/m41a //This gun is pretty overpowered. Leaving it as an admin spawn. Might even interfere with lore. name = "M41A" @@ -228,6 +265,8 @@ ) load_method = MAGAZINE muzzle_velocity = 840 + w_class = ITEMSIZE_HUGE + one_handed_penalty = 50 /obj/item/weapon/gun/projectile/automatic/serdy/sks //Reminder to myself to make sure this works and also to make sure that people are able to empty the internal mag name = "SKS" @@ -240,7 +279,396 @@ muzzle_velocity = 735 max_shells = 10 ammo_type = /obj/item/ammo_casing/a762x39 + w_class = ITEMSIZE_HUGE + one_handed_penalty = 60 +/obj/item/weapon/gun/projectile/automatic/serdy/mosin + name = "Mosin Nagant" + desc = "A reproduction of some old russian bolt-action rifle from some backwater rimworld. Smells strongly of cosmoline. The inscriptions on it are in pan-slavic. Chambered in 7.62x54mmR." + caliber = "7.62x54mmR" + auto_loading_type = NO_AUTO_LOAD + load_method = SINGLE_CASING|SPEEDLOADER + only_open_load = TRUE + icon_state = "mosin" + projectile_type = /obj/item/projectile/bullet/rifle/a762x54 + muzzle_velocity = 865 + max_shells = 5 + ammo_type = /obj/item/ammo_casing/a762x54 + w_class = ITEMSIZE_HUGE + one_handed_penalty = 70 + bolt_name = "bolt" + sound_eject = 'sound/weapons/ballistics/boltactionopen.ogg' + sound_chamber = 'sound/weapons/ballistics/boltactionclose.ogg' + +/obj/item/weapon/gun/projectile/automatic/serdy/mosin/scoped + name = "Scoped Mosin Nagant" + icon_state = "scopedmosin" + desc = "A reproduction of some old russian bolt-action rifle from some backwater rimworld. Smells strongly of cosmoline. The inscriptions on it are in pan-slavic. This one has a scope attached to it. Chambered in 7.62x54mmR." + action_button_name = "Use Scope" + accuracy = -15 + scoped_accuracy = 50 + one_handed_penalty = 70 + +/obj/item/weapon/gun/projectile/automatic/serdy/mosin/scoped/ui_action_click() + scope() + +/obj/item/weapon/gun/projectile/automatic/serdy/mosin/scoped/verb/scope() + set category = "Object" + set name = "Use Scope" + set popup_menu = 1 + + toggle_scope(2.0) + +/obj/item/weapon/gun/projectile/automatic/serdy/type901 + name = "Type 901 Assault rifle" + desc = "A heavy bullpup assault rifle of unknown make, with a very high muzzle velocity and fair accuracy. A favorite of scum and villainy everywhere due to its complete lack of identification markings. Popularized by the 2541 movie, 'Boarding Party'. Chambered in 7.62x51mm." + caliber = "7.62mm" + auto_loading_type = CLOSED_BOLT | LOCK_OPEN_EMPTY | LOCK_SLAPPABLE + magazine_type = /obj/item/ammo_magazine/type901 + allowed_magazines = list(/obj/item/ammo_magazine/type901) + icon_state = "type901" + projectile_type = /obj/item/projectile/bullet/rifle/a762 + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6)) + ) + load_method = MAGAZINE + muzzle_velocity = 910 + w_class = ITEMSIZE_HUGE + one_handed_penalty = 60 + +/obj/item/weapon/gun/projectile/automatic/serdy/type901/carbine + name = "Type 901-C Carbine" + desc = "A lightweight bullpup assault carbine of unknown make, with a very high muzzle velocity and fair accuracy. A favorite of scum and villainy everywhere due to its complete lack of identification markings. Popularized by the 2541 movie, 'Boarding Party'. This one is smaller and more compact than its larger counterpart. Chambered in 7.62x39mm." + icon_state = "type901b" + muzzle_velocity = 880 + w_class = ITEMSIZE_HUGE + one_handed_penalty = 30 + +/obj/item/weapon/gun/projectile/automatic/serdy/awp + name = "AWP" + desc = "A galaxy-wide favorite for hunting, target shooting, and rushing B. Legend has it, this rifle originated from three guys in a garage. This one is a reproduction. It has 'Scarborough Arms - Per falcis, per pravitas' inscribed on the stock. Chambered in .338 Lapua." + caliber = ".338" + auto_loading_type = NO_AUTO_LOAD + magazine_type = /obj/item/ammo_magazine/awp + allowed_magazines = list(/obj/item/ammo_magazine/awp) + icon_state = "awp" + projectile_type = /obj/item/projectile/bullet/rifle/a338 + load_method = MAGAZINE + muzzle_velocity = 936 + action_button_name = "Use Scope" + accuracy = -30 + scoped_accuracy = 50 + w_class = ITEMSIZE_HUGE + one_handed_penalty = 90 + bolt_name = "bolt" + sound_eject = 'sound/weapons/ballistics/boltactionopen.ogg' + sound_chamber = 'sound/weapons/ballistics/boltactionclose.ogg' + +/obj/item/weapon/gun/projectile/automatic/serdy/awp/ui_action_click() + scope() + +/obj/item/weapon/gun/projectile/automatic/serdy/awp/verb/scope() + set category = "Object" + set name = "Use Scope" + set popup_menu = 1 + + toggle_scope(2.0) + +/obj/item/weapon/gun/projectile/automatic/serdy/hectate + name = "Hectate II" + desc = "An old world anti material rifle. Ideal for dealing with mechs, armored personnel, and space dragons. Chambered in .50 BMG." + caliber = ".50 BMG" + auto_loading_type = NO_AUTO_LOAD + magazine_type = /obj/item/ammo_magazine/hectate + allowed_magazines = list(/obj/item/ammo_magazine/hectate) + icon_state = "hectate" + projectile_type = /obj/item/projectile/bullet/rifle/a50bmg + load_method = MAGAZINE + muzzle_velocity = 825 + action_button_name = "Use Scope" + accuracy = -60 + scoped_accuracy = 15 + w_class = ITEMSIZE_HUGE + one_handed_penalty = 120 + bolt_name = "bolt" + sound_eject = 'sound/weapons/ballistics/boltactionopen.ogg' + sound_chamber = 'sound/weapons/ballistics/boltactionclose.ogg' + + +/obj/item/weapon/gun/projectile/automatic/serdy/hectate/ui_action_click() + scope() + +/obj/item/weapon/gun/projectile/automatic/serdy/hectate/verb/scope() + set category = "Object" + set name = "Use Scope" + set popup_menu = 1 + + toggle_scope(2.0) + +/obj/item/weapon/gun/projectile/automatic/serdy/memegun + name = "Hardbass Special" + desc = "Три полоски, три по три полоски Три полоски, три по три полоски Три полоски, три по три полоски Три полоски, три по три полоски Три полоски, три по три полоски Три полоски, три по три полоски. Chambered in 7.62x39mm" + caliber = "7.62x39mm" + magazine_type = /obj/item/ammo_magazine/akm + allowed_magazines = list(/obj/item/ammo_magazine/akm) + icon_state = "memegun" + projectile_type = /obj/item/projectile/bullet/rifle/a762x39 + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6)) + ) + load_method = MAGAZINE + auto_loading_type = CLOSED_BOLT | LOCK_MANUAL_LOCK + muzzle_velocity = 715 + w_class = ITEMSIZE_HUGE + one_handed_penalty = 40 + +/obj/item/weapon/gun/projectile/automatic/serdy/tkb408 + name = "TKB-408" + desc ="An odd, bullpup, slavic assault rifle from some distant rimworld. Very sturdy, unbeleivably reliable. Chambered in 7.62x39mm." + caliber = "7.62x39mm" + magazine_type = /obj/item/ammo_magazine/akm + allowed_magazines = list(/obj/item/ammo_magazine/akm) + icon_state = "tkb" + projectile_type = /obj/item/projectile/bullet/rifle/a762x39 + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6)) + ) + load_method = MAGAZINE + auto_loading_type = CLOSED_BOLT | LOCK_MANUAL_LOCK + muzzle_velocity = 750 + w_class = ITEMSIZE_HUGE + one_handed_penalty = 60 + +/obj/item/weapon/gun/projectile/automatic/serdy/groza + name = "OTs-14" + desc = "A strangely ergonomic bullpup version of an AK. Commonly found in Pan-slavic speaking regions of space. All of the inscriptions on this thing are in pan-slavic. Chambered in 7.62x39mm." + caliber = "7.62x39mm" + magazine_type = /obj/item/ammo_magazine/akm + allowed_magazines = list(/obj/item/ammo_magazine/akm) + icon_state = "groza" + projectile_type = /obj/item/projectile/bullet/rifle/a762x39 + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6)) + ) + load_method = MAGAZINE + auto_loading_type = CLOSED_BOLT | LOCK_MANUAL_LOCK + muzzle_velocity = 685 + +/obj/item/weapon/gun/projectile/automatic/serdy/plamya + name = "WKHM 'Plamya' Mk. 1" + desc = "The original Plamya assault rifle, produced by WKHM back in the 2330's. Highly sought after for their collectability, and their superb reliability. They don't quite make them like they used to. It may not fire as fast as the newer ones, but these old models haven't survived this long for no reason. This one has a classic walnut thumbhole stock and foregrip. It has a heavy titanium chassis, durasteel bolt, and the original style 'PPSh' heatshield. The gun is dated 2336, and bears the 'WKHM Endurance' arkship's production stamp on the buttstock. 'A light in the dark' is stamped into the receiver. Chambered in 9x39mm." + description_fluff = "WKHM, is a minor arms company that has been around for quite some time, established in 2408. Known for being one of the many suppliers of weapons to dangerous worlds on the rim, and a part of the FTU. They produce a large variety of firearms, strike craft, and armored vehicles to fufill various their various contracts, and are largely migrant, moving wherever the money is. Found almost entirely on mobile production ships and various escort craft. Identifiable by their logo, a red Omega symbol with a black or white W in the middle. The sheer quantity of their firearms produced ensures they can be found.. just about anywhere, and they are very sought after by pirates for their reliability." + caliber = "9x39mm" + magazine_type = /obj/item/ammo_magazine/plamya + allowed_magazines = list(/obj/item/ammo_magazine/plamya) + icon_state = "plamyac" + projectile_type = /obj/item/projectile/bullet/rifle/a9x39 + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="5-round bursts", burst=5, fire_delay=0.5, move_delay=3.5, burst_accuracy=list(0,-10,-15,-20,-25), dispersion=list(0.0, 0.3, 0.6, 0.9, 1.1)) + ) + load_method = MAGAZINE + auto_loading_type = CLOSED_BOLT | LOCK_OPEN_EMPTY | LOCK_SLAPPABLE + muzzle_velocity = 285 + w_class = ITEMSIZE_HUGE + one_handed_penalty = 50 + +/obj/item/weapon/gun/projectile/automatic/serdy/plamya/mk2 + name = "WKHM 'Plamya' Mk. 2" + desc = "An old school assault rifle. A favorite on the rimworld for it's blisteringly high rate of fire. One of the best selling products of W-K Heavy Manufacturing. Virtually impossible to break. The gold standard, with a rosewood thumbhole stock, a full length barrel, and an improved heatshield. The most mass produced firearm in WKHM's lineup. This one bears the 'WKHM Adamant' arkship's production stamp. Chambered in 9x39mm." + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="5-round bursts", burst=5, fire_delay=0.5, move_delay=3.5, burst_accuracy=list(0,-5,-10,-10,-15), dispersion=list(0.0, 0.2, 0.35, 0.5, 0.6)) + ) + muzzle_velocity = 305 + +/obj/item/weapon/gun/projectile/automatic/serdy/plamya/mk3 + name = "WKHM 'Plamya' Mk. 3" + desc = "An old school assault rifle with a modern twist. A favorite on the rimworld for it's blisteringly high rate of fire. One of the best selling products of W-K Heavy Manufacturing. Virtually impossible to break. This is a newer variant, with a fully synthetic stock, and a shorter barrel. The serial number and production stamp has been sanded off. Chambered in 9x39mm." + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="5-round bursts", burst=5, fire_delay=0.5, move_delay=3.5, burst_accuracy=list(0,-7.5,-10,-15,-20), dispersion=list(0.0, 0.2, 0.4, 0.6, 0.7)) + ) + muzzle_velocity = 290 + +//Auto-shotgun, closer to the rifles than anything else though. + +/obj/item/weapon/gun/projectile/automatic/serdy/strela + name = "WKHM 'Strela'" + desc = "A fully automatic, 12 gauge assault shotgun, that goes by many names. The Strela, The Bear, The Mule- The list goes on. If the Plamya is the scalpel, This heavy chunk of forged steel and titanium is the sledgehammer. Bring a shoulder pad and some tramadol. This one has a nice walnut thumbhole stock, and an AK style fore end. It also bears the 'WKHM Endurance' arkship's production stamp. Chambered in 12 gauge." + description_fluff = "WKHM, is a minor arms company that has been around for quite some time, established in 2408. Known for being one of the many suppliers of weapons to dangerous worlds on the rim, and a part of the FTU. They produce a large variety of firearms, strike craft, and armored vehicles to fufill various their various contracts, and are largely migrant, moving wherever the money is. Found almost entirely on mobile production ships and various escort craft. Identifiable by their logo, a red Omega symbol with a black or white W in the middle. The sheer quantity of their firearms produced ensures they can be found.. just about anywhere, and they are very sought after by pirates for their reliability." + caliber = "12g" + magazine_type = /obj/item/ammo_magazine/strela + allowed_magazines = list(/obj/item/ammo_magazine/strela) + icon_state = "strela" + projectile_type = /obj/item/projectile/bullet/shotgun + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="2-round bursts", burst=2, fire_delay=null, move_delay=3, burst_accuracy=list(0,-5), dispersion=list(0.0, 0.2)), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6)) + ) + load_method = MAGAZINE + auto_loading_type = CLOSED_BOLT | LOCK_OPEN_EMPTY | LOCK_SLAPPABLE + muzzle_velocity = 470 + w_class = ITEMSIZE_HUGE + one_handed_penalty = 50 + +//SMGs + +/obj/item/weapon/gun/projectile/automatic/serdy/ppsh + name = "PPSh-17b" + desc = "A cheap remake of the venerable russian PPSh-41. Empties a 71 round magazine in less than 10 seconds. Compensates for poor accuracy with volume of bullet. Every inscription on this thing is in pan-slavic. Chambered in 7.62x25mm Tokarev." + caliber = "7.62x25mm" + magazine_type = /obj/item/ammo_magazine/ppsh + allowed_magazines = list(/obj/item/ammo_magazine/ppsh) + icon_state="ppsh" + projectile_type = /obj/item/projectile/bullet/a762x25 + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6)) + ) + auto_loading_type = OPEN_BOLT + load_method = MAGAZINE + muzzle_velocity = 488 + +/obj/item/weapon/gun/projectile/automatic/serdy/mp5 + name = "MP5" + desc = "A favorite of law enforcement and corporate security across the galaxy for centuries. This old H&K design has survived the test of time. And while in many places it has been replaced long ago, it still stands as a reliable weapon platform. No need to fix what isn't broken. Chambered in 9mm." + caliber = "9mm" + magazine_type = /obj/item/ammo_magazine/mp5mag + allowed_magazines = list(/obj/item/ammo_magazine/mp5mag) + icon_state="mp5" + projectile_type = /obj/item/projectile/bullet/pistol + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6)) + ) + load_method = MAGAZINE + muzzle_velocity = 400 + is_long = FALSE + +/obj/item/weapon/gun/projectile/automatic/serdy/vityaz + name = "WKHM 'Vityaz'" + desc = "A swarm of angry bees. The Plamya's baby brother. With 12 total moving parts, including the trigger mechanism, this gun was built with one purpose. Longevity and reliability. Commonly found in the hands of private security, criminals, and law enforcement alike across many worlds. This one is unmarked. Chambered in 10mm." + description_fluff = "WKHM, is a minor arms company that has been around for quite some time, established in 2408. Known for being one of the many suppliers of weapons to dangerous worlds on the rim, and a part of the FTU. They produce a large variety of firearms, strike craft, and armored vehicles to fufill various their various contracts, and are largely migrant, moving wherever the money is. Found almost entirely on mobile production ships and various escort craft. Identifiable by their logo, a red Omega symbol with a black or white W in the middle. The sheer quantity of their firearms produced ensures they can be found.. just about anywhere, and they are very sought after by pirates for their reliability." + caliber = "10mm" + magazine_type = /obj/item/ammo_magazine/m10mm + allowed_magazines = list(/obj/item/ammo_magazine/m10mm) + icon_state = "vityaz" + projectile_type = /obj/item/projectile/bullet/a10mm + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6)) + ) + load_method = MAGAZINE + auto_loading_type = CLOSED_BOLT | LOCK_OPEN_EMPTY | LOCK_SLAPPABLE + muzzle_velocity = 430 + is_long = FALSE + +//LMGs + +/obj/item/weapon/gun/projectile/automatic/serdy/molniya + name = "WKHM 'Molniya'" + desc = "A light machinegun manufactured by WKHM for various paramilitaries, private security companies, and rimworld governments. Big, heavy, and with a fire rate similar to that of an MG42. Often used in emplacements and on top of armored vehicles, or as a squad support weapon. Nicknamed the 'Pig' or the 'Sawzall', this one has a solid oak stock, and bears the 'WKHM Adamant' arkship's production stamp. If you ever see this gun, there is no doubt shit's about to go down. Chambered in 7.62x51mm." + description_fluff = "WKHM, is a minor arms company that has been around for quite some time, established in 2408. Known for being one of the many suppliers of weapons to dangerous worlds on the rim, and a part of the FTU. They produce a large variety of firearms, strike craft, and armored vehicles to fufill various their various contracts, and are largely migrant, moving wherever the money is. Found almost entirely on mobile production ships and various escort craft. Identifiable by their logo, a red Omega symbol with a black or white W in the middle. The sheer quantity of their firearms produced ensures they can be found.. just about anywhere, and they are very sought after by pirates for their reliability." + caliber = "7.62mm" + magazine_type = /obj/item/ammo_magazine/molniya + allowed_magazines = list(/obj/item/ammo_magazine/molniya) + icon_state = "molniya" + projectile_type = /obj/item/projectile/bullet/rifle/a762 + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-15,-15), dispersion=list(0.0, 0.6, 1.0)), + list(mode_name="short bursts", burst=5, move_delay=6, burst_accuracy = list(0,-15,-15,-30,-30), dispersion = list(0.6, 1.0, 1.0, 1.0, 1.2)) + ) + load_method = MAGAZINE + auto_loading_type = OPEN_BOLT + muzzle_velocity = 860 + one_handed_penalty = 90 + +//Pistols + +/obj/item/weapon/gun/projectile/automatic/serdy/ssp4 + name = "WKHM SSP4" + desc = "A unique, high end service pistol carried by W-K security personnel in the outer rim, and various law enforcement agencies across the galaxy. Features a hidden ejector port, and an integral laser sight. Surprisingly reliable despite its unorthodox design. This one bears the 'WKHM Obsidian' arkship's production stamp. Chambered in 10mm." + description_fluff = "WKHM, is a minor arms company that has been around for quite some time, established in 2408. Known for being one of the many suppliers of weapons to dangerous worlds on the rim, and a part of the FTU. They produce a large variety of firearms, strike craft, and armored vehicles to fufill various their various contracts, and are largely migrant, moving wherever the money is. Found almost entirely on mobile production ships and various escort craft. Identifiable by their logo, a red Omega symbol with a black or white W in the middle. The sheer quantity of their firearms produced ensures they can be found.. just about anywhere, and they are very sought after by pirates for their reliability." + caliber = "10mm" + magazine_type = /obj/item/ammo_magazine/ssp4 + allowed_magazines = list(/obj/item/ammo_magazine/ssp4) + icon_state = "ssp4" + projectile_type = /obj/item/projectile/bullet/a10mm + load_method = MAGAZINE + bolt_name="slide" + bolt_release = "slide release" + auto_loading_type = CLOSED_BOLT | LOCK_OPEN_EMPTY + muzzle_velocity = 405 + is_long = FALSE + +/obj/item/weapon/gun/projectile/automatic/serdy/ssp4/silenced + name = "WKHM SSP4-S" + desc = "A unique, high end service pistol carried by W-K security personnel in the outer rim, and various law enforcement agencies across the galaxy. Features a hidden ejector port, and an integral laser sight. Surprisingly reliable despite its unorthodox design. This one is unmarked and is suppressed. Due to the minimal amount of moving parts, this gun is almost completely silent when used with subsonic ammunition. Chambered in 10mm." + silenced = 1 + icon_state = "ssp4s" + +/obj/item/weapon/gun/projectile/serdy_pistols + icon = 'icons/obj/gun_ch.dmi' + bolt_name="slide" + bolt_release = "slide release" + auto_loading_type = CLOSED_BOLT | LOCK_OPEN_EMPTY + load_method = MAGAZINE + +/obj/item/weapon/gun/projectile/serdy_pistols/makarov + name = "Makarov PM" + desc = "The venerable Makarov. An easily concealable 9x18mm pistol design from Russia. This one is old and worn, but still reliable as ever. Chambered in 9x18mm makarov." + icon_state = "makarov" + caliber = "9x18mm" + magazine_type = /obj/item/ammo_magazine/makarov + allowed_magazines = list(/obj/item/ammo_magazine/makarov) + projectile_type = /obj/item/projectile/bullet/a9x18 + muzzle_velocity = 315 + +/obj/item/weapon/gun/projectile/serdy_pistols/vp70m + name = "VP70M" + desc = "Old Matilda. An ancient design, one of the first, if not the first entirely polymer framed pistols. Can commonly be found in the hands of.. well, anybody with access to a 3d printer. The designs for this pistol are absolutely everywhere, and it's still a favorite to this day, 500 some-odd years later. Chambered in 9mm." + icon_state = "vp70" + caliber = "9mm" + magazine_type = /obj/item/ammo_magazine/m9mm/vp70 + allowed_magazines = list(/obj/item/ammo_magazine/m9mm) + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-20,-40), dispersion=list(0.0, 0.9, 1.8)) + ) + projectile_type = /obj/item/projectile/bullet/pistol + muzzle_velocity = 365 + +/obj/item/weapon/gun/projectile/serdy_pistols/glock71 + name = "Glock 71" + desc = "Following the same design for centuries, the Glock 71 is one of the most reliable sidearms you can buy for cheap these days. These things are everywhere, and for good reason. Chambered in 9mm." + icon_state = "glock" + caliber = "9mm" + magazine_type = /obj/item/ammo_magazine/m9mm/large + allowed_magazines = list(/obj/item/ammo_magazine/m9mm) + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-20,-40), dispersion=list(0.0, 0.9, 1.8)) + ) + projectile_type = /obj/item/projectile/bullet/pistol + muzzle_velocity = 375 + +/obj/item/weapon/gun/projectile/revolver/nagant + name = "nagant revolver" + desc = "A 7 shot, gas-seal revolver designed to have increased muzzle velocity by not allowing excess gasses to escape out of the sides of the cylinder. One of the few revolvers that can be suppressed. Good luck finding a suppressor for one, though. Chambered in .357." + icon = 'icons/obj/gun_ch.dmi' + icon_state = "nagant" + max_shells = 7 + +/obj/item/weapon/gun/projectile/revolver/nagant/skinned + name = "nagant revolver" + icon_state = "nagantb" //Time to give all these existing guns some new properties. //automatic.dm @@ -258,6 +686,22 @@ /obj/item/weapon/gun/projectile/automatic/sts35 muzzle_velocity = 900 //Based off AK-74 + icon = 'icons/obj/64x32guns_ch.dmi' + icon_state = "sts35" + icon_expected_height = 32 + icon_expected_width = 64 + +/obj/item/weapon/gun/projectile/automatic/sts35/update_icon() + . = ..() + icon_state = ammo_magazine ? "[initial(icon_state)]" : "[initial(icon_state)]-e" + +/obj/item/weapon/gun/projectile/automatic/sts35/Initialize() + . = ..() + update_transform() + +/obj/item/weapon/gun/projectile/automatic/sts35/update_transform() + . = ..() + transform = transform.Translate(-16,0) /obj/item/weapon/gun/projectile/automatic/wt550 muzzle_velocity = 375 //Guestimation @@ -317,6 +761,10 @@ //boltaction.dm /obj/item/weapon/gun/projectile/shotgun/pump/rifle muzzle_velocity = 860 //Guestimation + is64x32 = FALSE + icon_expected_height = 32 + icon_expected_width = 32 + icon = 'icons/obj/gun.dmi' //caseless.dm /obj/item/weapon/gun/projectile/caseless @@ -338,6 +786,26 @@ bolt_release = "slide release" auto_loading_type = CLOSED_BOLT | LOCK_OPEN_EMPTY muzzle_velocity = 253 //M1911 + icon = 'icons/obj/gun_ch.dmi' + icon_state = "m1911" + +/obj/item/weapon/gun/projectile/colt/Initialize() + .=..() + update_icon() + +/obj/item/weapon/gun/projectile/colt/update_icon() + if(ammo_magazine) + if(unique_reskin) + icon = 'icons/obj/gun.dmi' + icon_state = unique_reskin + else + icon_state = initial(icon_state) + else + if(unique_reskin) + icon = 'icons/obj/gun.dmi' + icon_state = "[unique_reskin]-e" + else + icon_state = "[initial(icon_state)]-e" /obj/item/weapon/gun/projectile/sec bolt_name="slide" @@ -467,6 +935,7 @@ sound_ejectchamber = 'sound/weapons/ballistics/rifle_ejectchamber.ogg' sound_eject = 'sound/weapons/ballistics/rifle_eject.ogg' sound_chamber = 'sound/weapons/ballistics/rifle_chamber.ogg' + only_open_load = TRUE /obj/item/weapon/gun/projectile/revolvingrifle manual_chamber = FALSE @@ -478,10 +947,53 @@ /obj/item/weapon/gun/projectile/shotgun/pump manual_chamber = FALSE + icon = 'icons/obj/64x32guns_ch.dmi' + icon_state = "winchester" + icon_expected_height = 32 + icon_expected_width = 64 + pump_animation = "winchester-pump" + var/is64x32 = TRUE + var/is_picked_up = FALSE + +/obj/item/weapon/gun/projectile/shotgun/pump/Initialize() + . = ..() + if(is64x32) + update_transform() + +/obj/item/weapon/gun/projectile/shotgun/pump/equipped() + . = ..() + is_picked_up = TRUE + update_transform() + +/obj/item/weapon/gun/projectile/shotgun/pump/pickup() + . = ..() + is_picked_up = TRUE + update_transform() + +/obj/item/weapon/gun/projectile/shotgun/pump/dropped() + . = ..() + is_picked_up = FALSE + update_transform() + +/obj/item/weapon/gun/projectile/shotgun/pump/update_transform() + . = ..() + if(is64x32) + if(is_picked_up) + transform = transform.Turn(-45) + transform = transform.Translate(-16,0) + +/obj/item/weapon/gun/projectile/shotgun/pump/combat + icon = 'icons/obj/64x32guns_ch.dmi' /obj/item/weapon/gun/projectile/shotgun/doublebarrel manual_chamber = FALSE +//shotgun_vr.dm +/obj/item/weapon/gun/projectile/shotgun/pump/USDF + is64x32 = FALSE + icon_expected_height = 32 + icon_expected_width = 32 + //shotgun_yw.dm /obj/item/weapon/gun/projectile/revolvershotgun manual_chamber = FALSE diff --git a/code/modules/projectiles/guns/projectile_ch.dm b/code/modules/projectiles/guns/projectile_ch.dm index 3d878f84a3..c28ba77a72 100644 --- a/code/modules/projectiles/guns/projectile_ch.dm +++ b/code/modules/projectiles/guns/projectile_ch.dm @@ -20,6 +20,7 @@ /obj/item/weapon/gun/projectile var/manual_chamber = TRUE + var/only_open_load = FALSE var/auto_loading_type = CLOSED_BOLT | LOCK_MANUAL_LOCK | LOCK_SLAPPABLE var/bolt_name = "bolt" var/bolt_open = FALSE @@ -69,7 +70,7 @@ if(chambered) chambered.expend() if(!manual_chamber) process_chambered() - if(manual_chamber) + if(manual_chamber && auto_loading_type) bolt_toggle() /obj/item/weapon/gun/projectile/attack_self(mob/user as mob) @@ -84,6 +85,7 @@ /obj/item/weapon/gun/projectile/proc/bolt_handle(mob/user) var/previous_chambered = chambered var/result = bolt_toggle(TRUE) + update_icon() if(!result) to_chat(user,"Nothing happens.") else @@ -159,10 +161,10 @@ else bolt_open = TRUE var/ejected = process_chambered() - var/chambering = chamber_bullet() + var/output = BOLT_OPENED if(ejected) output |= BOLT_CASING_EJECTED - if(chambering) output |= BOLT_CASING_CHAMBERED + //if(chambering) output |= BOLT_CASING_CHAMBERED return output else if(auto_loading_type) @@ -192,7 +194,10 @@ return BOLT_CLOSED else bolt_open = FALSE - return BOLT_CLOSED + var/output = BOLT_CLOSED + var/chambering = chamber_bullet() + if(chambering) output |= BOLT_CASING_CHAMBERED + return output /obj/item/weapon/gun/projectile/process_chambered() @@ -250,6 +255,8 @@ return null /obj/item/weapon/gun/projectile/proc/chamber_bullet() + if(chambered) + return 0 var/obj/item/ammo_casing/to_chamber if(loaded.len) to_chamber = loaded[1] //load next casing. @@ -288,6 +295,9 @@ bolt_toggle() playsound(src, 'sound/weapons/flipblade.ogg', 50, 1) if(SPEEDLOADER) + if(only_open_load && !bolt_open) + to_chat(user, "[src] must have its bolt open to be loaded!") + return if(loaded.len >= max_shells) to_chat(user, "[src] is full!") return @@ -340,6 +350,9 @@ return else return + if(only_open_load && !bolt_open) + to_chat(user, "[src] must have its bolt open to be loaded!") + return if(loaded.len >= max_shells) to_chat(user, "[src] is full.") return @@ -411,11 +424,29 @@ else if(CHECK_BITFIELD(auto_loading_type,CLOSED_BOLT) && bolt_open) to_chat(user,"This is a closed bolt gun! You need to close the bolt before firing it!") return 0 + else if(bolt_open) + to_chat(user,"This is a manual action gun, the bolt or chamber must be closed before firing it!") + return 0 else return 1 else return 1 +/obj/item/weapon/gun/projectile/unload_ammo(mob/user, var/allow_dump=1) + if(manual_chamber && only_open_load && !bolt_open) + to_chat(user,"You must open the bolt to load or unload this gun!") + else + return ..() + +/obj/item/weapon/gun/projectile/handle_click_empty(mob/user) + if (user) + user.visible_message("*click click*", "*click*") + else + src.visible_message("*click click*") + playsound(src, 'sound/weapons/empty.ogg', 100, 1) + if(!manual_chamber) + process_chambered() + /obj/item/weapon/gun/projectile/New(loc, var/starts_loaded = 1) ..() if(manual_chamber) @@ -451,4 +482,4 @@ P.velocity = initial(P.velocity) if(!istype(P)) return - P.sub_velocity(P.velocity - 35) \ No newline at end of file + P.sub_velocity(P.velocity - 35) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index c5fb2aa66b..f65b0b3c9d 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -1,267 +1,280 @@ -/obj/item/projectile/beam - name = "laser" - icon_state = "laser" - fire_sound = 'sound/weapons/Laser.ogg' - pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE - damage = 40 - damage_type = BURN - check_armour = "laser" - eyeblur = 4 - var/frequency = 1 - hitscan = 1 - embed_chance = 0 - invisibility = 99 //beam projectiles are invisible as they are rendered by the effect engine - light_range = 2 - light_power = 0.5 - light_color = "#FF0D00" - hitsound = 'sound/weapons/sear.ogg' - hitsound_wall = 'sound/weapons/effects/searwall.ogg' - - muzzle_type = /obj/effect/projectile/muzzle/laser - tracer_type = /obj/effect/projectile/tracer/laser - impact_type = /obj/effect/projectile/impact/laser - -/obj/item/projectile/beam/practice - name = "laser" - icon_state = "laser" - damage = 0 - damage_type = BURN - check_armour = "laser" - eyeblur = 2 - -/obj/item/projectile/beam/weaklaser - name = "weak laser" - icon_state = "laser" - damage = 15 - -/obj/item/projectile/beam/smalllaser - damage = 25 - -/obj/item/projectile/beam/burstlaser - damage = 30 - armor_penetration = 10 - - -/obj/item/projectile/beam/midlaser - damage = 40 - armor_penetration = 10 - -/obj/item/projectile/beam/heavylaser - name = "heavy laser" - icon_state = "heavylaser" - fire_sound = 'sound/weapons/lasercannonfire.ogg' - damage = 60 - armor_penetration = 30 - light_range = 3 - light_power = 1 - light_color = "#FF0D00" - - muzzle_type = /obj/effect/projectile/muzzle/laser_heavy - tracer_type = /obj/effect/projectile/tracer/laser_heavy - impact_type = /obj/effect/projectile/impact/laser_heavy - -/obj/item/projectile/beam/heavylaser/fakeemitter - name = "emitter beam" - icon_state = "emitter" - fire_sound = 'sound/weapons/emitter.ogg' - light_color = "#00CC33" - excavation_amount = 140 // 2 shots to dig a standard rock turf. Superior due to being a mounted tool beam, to make it actually viable. - - muzzle_type = /obj/effect/projectile/muzzle/emitter - tracer_type = /obj/effect/projectile/tracer/emitter - impact_type = /obj/effect/projectile/impact/emitter - -/obj/item/projectile/beam/heavylaser/cannon - damage = 80 - armor_penetration = 50 - light_color = "#FF0D00" - -/obj/item/projectile/beam/xray - name = "xray beam" - icon_state = "xray" - fire_sound = 'sound/weapons/eluger.ogg' - damage = 25 - armor_penetration = 50 - light_color = "#00CC33" - - muzzle_type = /obj/effect/projectile/muzzle/xray - tracer_type = /obj/effect/projectile/tracer/xray - impact_type = /obj/effect/projectile/impact/xray - -/obj/item/projectile/beam/gamma - name = "gamma beam" - icon_state = "xray" - fire_sound = 'sound/weapons/eluger.ogg' - damage = 12 //CHOMPedit - armor_penetration = 90 - irradiate = 20 - light_color = "#00CC33" - - muzzle_type = /obj/effect/projectile/muzzle/xray - tracer_type = /obj/effect/projectile/tracer/xray - impact_type = /obj/effect/projectile/impact/xray - -/obj/item/projectile/beam/cyan - name = "cyan beam" - icon_state = "cyan" - fire_sound = 'sound/weapons/eluger.ogg' - damage = 40 - light_color = "#00C6FF" - - muzzle_type = /obj/effect/projectile/muzzle/laser_omni - tracer_type = /obj/effect/projectile/tracer/laser_omni - impact_type = /obj/effect/projectile/impact/laser_omni - -/obj/item/projectile/beam/pulse - name = "pulse" - icon_state = "u_laser" - fire_sound='sound/weapons/gauss_shoot.ogg' // Needs a more meaty sound than what pulse.ogg currently is; this will be a placeholder for now. - damage = 100 //Badmin toy, don't care - armor_penetration = 100 - light_color = "#0066FF" - - muzzle_type = /obj/effect/projectile/muzzle/laser_pulse - tracer_type = /obj/effect/projectile/tracer/laser_pulse - impact_type = /obj/effect/projectile/impact/laser_pulse - -/obj/item/projectile/beam/pulse/on_hit(var/atom/target, var/blocked = 0) - if(isturf(target)) - target.ex_act(2) - ..() - -/obj/item/projectile/beam/emitter - name = "emitter beam" - icon_state = "emitter" - fire_sound = 'sound/weapons/emitter.ogg' - damage = 0 // The actual damage is computed in /code/modules/power/singularity/emitter.dm - light_color = "#00CC33" - excavation_amount = 70 // 3 shots to mine a turf - - muzzle_type = /obj/effect/projectile/muzzle/emitter - tracer_type = /obj/effect/projectile/tracer/emitter - impact_type = /obj/effect/projectile/impact/emitter - -/obj/item/projectile/beam/lasertag - name = "lasertag beam" - damage = 0 - eyeblur = 0 - no_attack_log = 1 - damage_type = BURN - check_armour = "laser" - - combustion = FALSE - -/obj/item/projectile/beam/lasertag/blue - icon_state = "bluelaser" - light_color = "#0066FF" - - muzzle_type = /obj/effect/projectile/muzzle/laser_blue - tracer_type = /obj/effect/projectile/tracer/laser_blue - impact_type = /obj/effect/projectile/impact/laser_blue - -/obj/item/projectile/beam/lasertag/blue/on_hit(var/atom/target, var/blocked = 0) - if(ishuman(target)) - var/mob/living/carbon/human/M = target - if(istype(M.wear_suit, /obj/item/clothing/suit/redtag)) - M.Weaken(5) - return 1 - -/obj/item/projectile/beam/lasertag/red - icon_state = "laser" - light_color = "#FF0D00" - -/obj/item/projectile/beam/lasertag/red/on_hit(var/atom/target, var/blocked = 0) - if(ishuman(target)) - var/mob/living/carbon/human/M = target - if(istype(M.wear_suit, /obj/item/clothing/suit/bluetag)) - M.Weaken(5) - return 1 - -/obj/item/projectile/beam/lasertag/omni//A laser tag bolt that stuns EVERYONE - icon_state = "omnilaser" - light_color = "#00C6FF" - - muzzle_type = /obj/effect/projectile/muzzle/laser_omni - tracer_type = /obj/effect/projectile/tracer/laser_omni - impact_type = /obj/effect/projectile/impact/laser_omni - -/obj/item/projectile/beam/lasertag/omni/on_hit(var/atom/target, var/blocked = 0) - if(ishuman(target)) - var/mob/living/carbon/human/M = target - if((istype(M.wear_suit, /obj/item/clothing/suit/bluetag))||(istype(M.wear_suit, /obj/item/clothing/suit/redtag))) - M.Weaken(5) - return 1 - -/obj/item/projectile/beam/sniper - name = "sniper beam" - icon_state = "xray" - fire_sound = 'sound/weapons/gauss_shoot.ogg' - damage = 50 - armor_penetration = 10 - light_color = "#00CC33" - - muzzle_type = /obj/effect/projectile/muzzle/xray - tracer_type = /obj/effect/projectile/tracer/xray - impact_type = /obj/effect/projectile/impact/xray - -/obj/item/projectile/beam/stun - name = "stun beam" - icon_state = "stun" - fire_sound = 'sound/weapons/Taser.ogg' - nodamage = 1 - taser_effect = 1 - agony = 40 - damage_type = HALLOSS - light_color = "#FFFFFF" - hitsound = 'sound/weapons/zapbang.ogg' - - combustion = FALSE - - muzzle_type = /obj/effect/projectile/muzzle/stun - tracer_type = /obj/effect/projectile/tracer/stun - impact_type = /obj/effect/projectile/impact/stun - -/obj/item/projectile/beam/stun/weak - name = "weak stun beam" - icon_state = "stun" - agony = 25 - -/obj/item/projectile/beam/stun/med - name = "stun beam" - icon_state = "stun" - agony = 30 - -/obj/item/projectile/beam/stun/disabler - muzzle_type = /obj/effect/projectile/muzzle/laser_omni - tracer_type = /obj/effect/projectile/tracer/laser_omni - impact_type = /obj/effect/projectile/impact/laser_omni - -/obj/item/projectile/beam/stun/disabler/on_hit(atom/target, blocked = 0, def_zone) - . = ..(target, blocked, def_zone) - - if(. && istype(target, /mob/living/silicon/robot) && prob(agony)) - var/mob/living/silicon/robot/R = target - var/drainamt = agony * (rand(5, 15) / 10) - R.drain_power(0, 0, drainamt) - if(istype(firer, /mob/living/silicon/robot)) // Mischevious sappers, the swarm drones are. - var/mob/living/silicon/robot/A = firer - if(A.cell) - A.cell.give(drainamt * 2) - -/obj/item/projectile/beam/shock - name = "shock beam" - icon_state = "lightning" - damage_type = ELECTROCUTE - - muzzle_type = /obj/effect/projectile/muzzle/lightning - tracer_type = /obj/effect/projectile/tracer/lightning - impact_type = /obj/effect/projectile/impact/lightning - - damage = 30 - agony = 15 - eyeblur = 2 - hitsound = 'sound/weapons/zapbang.ogg' - -/obj/item/projectile/beam/shock/weak - damage = 5 - agony = 10 +/obj/item/projectile/beam + name = "laser" + icon_state = "laser" + fire_sound = 'sound/weapons/Laser.ogg' + pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE + damage = 40 + damage_type = BURN + check_armour = "laser" + eyeblur = 4 + var/frequency = 1 + hitscan = 1 + embed_chance = 0 + invisibility = 99 //beam projectiles are invisible as they are rendered by the effect engine + light_range = 2 + light_power = 0.5 + light_color = "#FF0D00" + hitsound = 'sound/weapons/sear.ogg' + hitsound_wall = 'sound/weapons/effects/searwall.ogg' + + muzzle_type = /obj/effect/projectile/muzzle/laser + tracer_type = /obj/effect/projectile/tracer/laser + impact_type = /obj/effect/projectile/impact/laser + +/obj/item/projectile/beam/practice + name = "laser" + icon_state = "laser" + damage = 0 + damage_type = BURN + check_armour = "laser" + eyeblur = 2 + +/obj/item/projectile/beam/weaklaser + name = "weak laser" + icon_state = "laser" + damage = 15 + +/obj/item/projectile/beam/smalllaser + damage = 25 + +/obj/item/projectile/beam/burstlaser + damage = 30 + armor_penetration = 10 + + +/obj/item/projectile/beam/midlaser + damage = 40 + armor_penetration = 10 + +/obj/item/projectile/beam/heavylaser + name = "heavy laser" + icon_state = "heavylaser" + fire_sound = 'sound/weapons/lasercannonfire.ogg' + damage = 60 + armor_penetration = 30 + light_range = 3 + light_power = 1 + light_color = "#FF0D00" + + muzzle_type = /obj/effect/projectile/muzzle/laser_heavy + tracer_type = /obj/effect/projectile/tracer/laser_heavy + impact_type = /obj/effect/projectile/impact/laser_heavy + +/obj/item/projectile/beam/heavylaser/fakeemitter + name = "emitter beam" + icon_state = "emitter" + fire_sound = 'sound/weapons/emitter.ogg' + light_color = "#00CC33" + excavation_amount = 140 // 2 shots to dig a standard rock turf. Superior due to being a mounted tool beam, to make it actually viable. + + muzzle_type = /obj/effect/projectile/muzzle/emitter + tracer_type = /obj/effect/projectile/tracer/emitter + impact_type = /obj/effect/projectile/impact/emitter + +/obj/item/projectile/beam/heavylaser/cannon + damage = 80 + armor_penetration = 50 + light_color = "#FF0D00" + +/obj/item/projectile/beam/xray + name = "xray beam" + icon_state = "xray" + fire_sound = 'sound/weapons/eluger.ogg' + damage = 25 + armor_penetration = 50 + light_color = "#00CC33" + + muzzle_type = /obj/effect/projectile/muzzle/xray + tracer_type = /obj/effect/projectile/tracer/xray + impact_type = /obj/effect/projectile/impact/xray + +/obj/item/projectile/beam/gamma + name = "gamma beam" + icon_state = "xray" + fire_sound = 'sound/weapons/eluger.ogg' + damage = 12 //CHOMPedit + armor_penetration = 90 + irradiate = 20 + light_color = "#00CC33" + + muzzle_type = /obj/effect/projectile/muzzle/xray + tracer_type = /obj/effect/projectile/tracer/xray + impact_type = /obj/effect/projectile/impact/xray + +/obj/item/projectile/beam/cyan + name = "cyan beam" + icon_state = "cyan" + fire_sound = 'sound/weapons/eluger.ogg' + damage = 40 + light_color = "#00C6FF" + + muzzle_type = /obj/effect/projectile/muzzle/laser_omni + tracer_type = /obj/effect/projectile/tracer/laser_omni + impact_type = /obj/effect/projectile/impact/laser_omni + +/obj/item/projectile/beam/pulse + name = "pulse" + icon_state = "u_laser" + fire_sound='sound/weapons/gauss_shoot.ogg' // Needs a more meaty sound than what pulse.ogg currently is; this will be a placeholder for now. + damage = 100 //Badmin toy, don't care + armor_penetration = 100 + light_color = "#0066FF" + + muzzle_type = /obj/effect/projectile/muzzle/laser_pulse + tracer_type = /obj/effect/projectile/tracer/laser_pulse + impact_type = /obj/effect/projectile/impact/laser_pulse + +/obj/item/projectile/beam/pulse/on_hit(var/atom/target, var/blocked = 0) + if(isturf(target)) + target.ex_act(2) + ..() + +/obj/item/projectile/beam/emitter + name = "emitter beam" + icon_state = "emitter" + fire_sound = 'sound/weapons/emitter.ogg' + damage = 0 // The actual damage is computed in /code/modules/power/singularity/emitter.dm + light_color = "#00CC33" + excavation_amount = 70 // 3 shots to mine a turf + + muzzle_type = /obj/effect/projectile/muzzle/emitter + tracer_type = /obj/effect/projectile/tracer/emitter + impact_type = /obj/effect/projectile/impact/emitter + +/obj/item/projectile/beam/lasertag + name = "lasertag beam" + damage = 0 + eyeblur = 0 + no_attack_log = 1 + damage_type = BURN + check_armour = "laser" + + combustion = FALSE + +/obj/item/projectile/beam/lasertag/blue + icon_state = "bluelaser" + light_color = "#0066FF" + + muzzle_type = /obj/effect/projectile/muzzle/laser_blue + tracer_type = /obj/effect/projectile/tracer/laser_blue + impact_type = /obj/effect/projectile/impact/laser_blue + +/obj/item/projectile/beam/lasertag/blue/on_hit(var/atom/target, var/blocked = 0) + if(ishuman(target)) + var/mob/living/carbon/human/M = target + if(istype(M.wear_suit, /obj/item/clothing/suit/redtag)) + M.Weaken(5) + return 1 + +/obj/item/projectile/beam/lasertag/red + icon_state = "laser" + light_color = "#FF0D00" + +/obj/item/projectile/beam/lasertag/red/on_hit(var/atom/target, var/blocked = 0) + if(ishuman(target)) + var/mob/living/carbon/human/M = target + if(istype(M.wear_suit, /obj/item/clothing/suit/bluetag)) + M.Weaken(5) + return 1 + +/obj/item/projectile/beam/lasertag/omni//A laser tag bolt that stuns EVERYONE + icon_state = "omnilaser" + light_color = "#00C6FF" + + muzzle_type = /obj/effect/projectile/muzzle/laser_omni + tracer_type = /obj/effect/projectile/tracer/laser_omni + impact_type = /obj/effect/projectile/impact/laser_omni + +/obj/item/projectile/beam/lasertag/omni/on_hit(var/atom/target, var/blocked = 0) + if(ishuman(target)) + var/mob/living/carbon/human/M = target + if((istype(M.wear_suit, /obj/item/clothing/suit/bluetag))||(istype(M.wear_suit, /obj/item/clothing/suit/redtag))) + M.Weaken(5) + return 1 + +/obj/item/projectile/beam/sniper + name = "sniper beam" + icon_state = "xray" + fire_sound = 'sound/weapons/gauss_shoot.ogg' + damage = 50 + armor_penetration = 10 + light_color = "#00CC33" + + muzzle_type = /obj/effect/projectile/muzzle/xray + tracer_type = /obj/effect/projectile/tracer/xray + impact_type = /obj/effect/projectile/impact/xray + +/obj/item/projectile/beam/stun + name = "stun beam" + icon_state = "stun" + fire_sound = 'sound/weapons/Taser.ogg' + nodamage = 1 + taser_effect = 1 + agony = 40 + damage_type = HALLOSS + light_color = "#FFFFFF" + hitsound = 'sound/weapons/zapbang.ogg' + + combustion = FALSE + + muzzle_type = /obj/effect/projectile/muzzle/stun + tracer_type = /obj/effect/projectile/tracer/stun + impact_type = /obj/effect/projectile/impact/stun + +/obj/item/projectile/beam/stun/weak + name = "weak stun beam" + icon_state = "stun" + agony = 25 + +/obj/item/projectile/beam/stun/med + name = "stun beam" + icon_state = "stun" + agony = 30 + +/obj/item/projectile/beam/stun/disabler + muzzle_type = /obj/effect/projectile/muzzle/laser_omni + tracer_type = /obj/effect/projectile/tracer/laser_omni + impact_type = /obj/effect/projectile/impact/laser_omni + +/obj/item/projectile/beam/stun/disabler/on_hit(atom/target, blocked = 0, def_zone) + . = ..(target, blocked, def_zone) + + if(. && istype(target, /mob/living/silicon/robot) && prob(agony)) + var/mob/living/silicon/robot/R = target + var/drainamt = agony * (rand(5, 15) / 10) + R.drain_power(0, 0, drainamt) + if(istype(firer, /mob/living/silicon/robot)) // Mischevious sappers, the swarm drones are. + var/mob/living/silicon/robot/A = firer + if(A.cell) + A.cell.give(drainamt * 2) + +/obj/item/projectile/beam/shock + name = "shock beam" + icon_state = "lightning" + damage_type = ELECTROCUTE + + muzzle_type = /obj/effect/projectile/muzzle/lightning + tracer_type = /obj/effect/projectile/tracer/lightning + impact_type = /obj/effect/projectile/impact/lightning + + damage = 30 + agony = 15 + eyeblur = 2 + hitsound = 'sound/weapons/zapbang.ogg' + +/obj/item/projectile/beam/shock/weak + damage = 5 + agony = 10 + +/obj/item/projectile/beam/precursor //CHOMPedit added Precursor beam + name = "precursor beam" + icon_state = "alien beam" + fire_sound = 'sound/weapons/MediumLaser.ogg' + light_color = "#FF0099" + + muzzle_type = /obj/effect/projectile/muzzle/precursor + tracer_type = /obj/effect/projectile/tracer/precursor + impact_type = /obj/effect/projectile/impact/precursor + + damage = 48 + armor_penetration = 10 \ No newline at end of file diff --git a/code/modules/projectiles/projectile/bullets_ch.dm b/code/modules/projectiles/projectile/bullets_ch.dm index f44b8ea67a..e5ef0bb8a5 100644 --- a/code/modules/projectiles/projectile/bullets_ch.dm +++ b/code/modules/projectiles/projectile/bullets_ch.dm @@ -126,6 +126,18 @@ only use the hollow_point and armor_penetration values.*/ hollow_point = TRUE armor_penetration = -50 +/obj/item/projectile/bullet/a762x25 + fire_sound = 'sound/weapons/gunshot2.ogg' + diam = 7.92 + grains = 85 + velocity = 469 + +/obj/item/projectile/bullet/a9x18 + fire_sound = 'sound/weapons/gunshot2.ogg' + diam = 9.27 + grains = 95 + velocity = 319 + /obj/item/projectile/bullet/a10mm fire_sound = 'sound/weapons/gunshot2.ogg' diam = 10.17 @@ -322,6 +334,30 @@ only use the hollow_point and armor_penetration values.*/ /obj/item/projectile/bullet/rifle/a762x54/ap armor_penetration = 50 +/obj/item/projectile/bullet/rifle/a338 + fire_sound = 'sound/weapons/ballistics/a762x54.ogg' + damage = 45 + diam = 8.61 + grains = 250 + velocity = 921 + hitscan = 1 + penetrating = 2 + +/obj/item/projectile/bullet/rifle/a338/ap + armor_penetration = 50 + +/obj/item/projectile/bullet/rifle/a50bmg + fire_sound = 'sound/weapons/ballistics/a145.ogg' + damage = 65 + diam = 13 + grains = 750 + velocity = 860 + hitscan = 1 + penetrating = 2 + +/obj/item/projectile/bullet/rifle/a50bmg/ap + armor_penetration = 50 + //NOTE: Ammo casings and magazines used to be in this part of the file. They have been moved to respective files in the projectiles/ammunition folder. //Various "We're not dealing with this shit because of how bad it is" (Some of these may be implemented into the new system with later updates) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index 5185e5a8f4..1e02bcd7ff 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -427,7 +427,7 @@ color = "#c07c40" /datum/reagent/nutriment/soysauce - name = "Soysauce" + name = "Soy Sauce" id = "soysauce" description = "A salty sauce made from the soy plant." taste_description = "umami" @@ -445,6 +445,15 @@ nutriment_factor = 5 color = "#731008" +/datum/reagent/nutriment/barbecue + name = "Barbeque Sauce" + id = "barbecue" + description = "Barbecue sauce for barbecues and long shifts." + taste_description = "barbeque" + reagent_state = LIQUID + nutriment_factor = 5 + color = "#4F330F" + /datum/reagent/nutriment/rice name = "Rice" id = "rice" @@ -1507,14 +1516,14 @@ /datum/reagent/drink/soda/pineappleade name = "Pineappleade" id = "pineappleade" - description = "Spineapple, juiced up." + description = "Pineapple, juiced up." taste_description = "sweet`n`sour pineapples" nutriment_factor = 5 //CHOMPStation addition color = "#FFFF00" adj_temp = -5 glass_name = "pineappleade" - glass_desc = "Spineapple, juiced up." + glass_desc = "Pineapple, juiced up." glass_special = list(DRINK_FIZZ) /datum/reagent/drink/soda/kiraspecial diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm index 9f4ae5d150..7c63381900 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm @@ -373,6 +373,11 @@ color = "#A5F0EE" touch_met = 50 +/datum/reagent/space_cleaner/touch_mob(var/mob/M) + if(iscarbon(M)) + var/mob/living/carbon/C = M + C.clean_blood() + /datum/reagent/space_cleaner/touch_obj(var/obj/O) O.clean_blood() diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 7f6f9dbba7..0db705b730 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -1292,6 +1292,13 @@ required_reagents = list("tomatojuice" = 2, "water" = 1, "sugar" = 1) result_amount = 4 +/datum/chemical_reaction/food/barbecue + name = "Barbeque Sauce" + id = "barbecue" + result = "barbecue" + required_reagents = list("tomatojuice" = 2, "applejuice" = 1, "sugar" = 1, "spacespice" = 1) + result_amount = 4 + /datum/chemical_reaction/food/peanutbutter name = "Peanut Butter" id = "peanutbutter" diff --git a/code/modules/reagents/reagent_containers/hypospray_vr.dm b/code/modules/reagents/reagent_containers/hypospray_vr.dm index ff2586c528..e0556a27d2 100644 --- a/code/modules/reagents/reagent_containers/hypospray_vr.dm +++ b/code/modules/reagents/reagent_containers/hypospray_vr.dm @@ -23,14 +23,11 @@ desc = "Contains emergency autoinjectors." icon_state = "syringe" max_storage_space = ITEMSIZE_COST_SMALL * 7 // 14 - -/obj/item/weapon/storage/box/traumainjectors/Initialize() - ..() - for (var/i = 1 to 4) - new /obj/item/weapon/reagent_containers/hypospray/autoinjector/trauma(src) - for (var/i = 1 to 2) - new /obj/item/weapon/reagent_containers/hypospray/autoinjector/detox(src) - new /obj/item/weapon/reagent_containers/hypospray/autoinjector/burn(src) + starts_with = list( + /obj/item/weapon/reagent_containers/hypospray/autoinjector/trauma = 4, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/detox = 2, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/burn = 1 + ) /obj/item/weapon/reagent_containers/hypospray var/prototype = 0 diff --git a/code/modules/reagents/reagent_containers/pill_vr.dm b/code/modules/reagents/reagent_containers/pill_vr.dm index bb445cde4c..b7789b18ce 100644 --- a/code/modules/reagents/reagent_containers/pill_vr.dm +++ b/code/modules/reagents/reagent_containers/pill_vr.dm @@ -4,7 +4,7 @@ icon_state = "pill10" /obj/item/weapon/reagent_containers/pill/nutriment/Initialize() - ..() + . = ..() reagents.add_reagent("nutriment", 30) /obj/item/weapon/reagent_containers/pill/protein @@ -13,7 +13,7 @@ icon_state = "pill24" /obj/item/weapon/reagent_containers/pill/protein/Initialize() - ..() + . = ..() reagents.add_reagent("protein", 30) /obj/item/weapon/reagent_containers/pill/rezadone @@ -22,7 +22,7 @@ icon_state = "pill2" /obj/item/weapon/reagent_containers/pill/rezadone/Initialize() - ..() + . = ..() reagents.add_reagent("rezadone", 5) color = reagents.get_color() @@ -32,7 +32,7 @@ icon_state = "pill10" /obj/item/weapon/reagent_containers/pill/peridaxon/Initialize() - ..() + . = ..() reagents.add_reagent("peridaxon", 10) /obj/item/weapon/reagent_containers/pill/carthatoline @@ -41,7 +41,7 @@ icon_state = "pill4" /obj/item/weapon/reagent_containers/pill/carthatoline/Initialize() - ..() + . = ..() reagents.add_reagent("carthatoline", 15) color = reagents.get_color() @@ -51,7 +51,7 @@ icon_state = "pill3" /obj/item/weapon/reagent_containers/pill/alkysine/Initialize() - ..() + . = ..() reagents.add_reagent("alkysine", 10) color = reagents.get_color() @@ -61,7 +61,7 @@ icon_state = "pill3" /obj/item/weapon/reagent_containers/pill/imidazoline/Initialize() - ..() + . = ..() reagents.add_reagent("imidazoline", 15) color = reagents.get_color() @@ -71,7 +71,7 @@ icon_state = "pill2" /obj/item/weapon/reagent_containers/pill/osteodaxon/Initialize() - ..() + . = ..() reagents.add_reagent("osteodaxon", 15) reagents.add_reagent("inaprovaline", 10) color = reagents.get_color() @@ -82,7 +82,7 @@ icon_state = "pill1" /obj/item/weapon/reagent_containers/pill/myelamine/Initialize() - ..() + . = ..() reagents.add_reagent("myelamine", 15) reagents.add_reagent("inaprovaline", 10) color = reagents.get_color() @@ -93,7 +93,7 @@ icon_state = "pill4" /obj/item/weapon/reagent_containers/pill/hyronalin/Initialize() - ..() + . = ..() reagents.add_reagent("hyronalin", 15) color = reagents.get_color() @@ -103,7 +103,7 @@ icon_state = "pill2" /obj/item/weapon/reagent_containers/pill/arithrazine/Initialize() - ..() + . = ..() reagents.add_reagent("arithrazine", 5) color = reagents.get_color() @@ -113,7 +113,7 @@ icon_state = "pill2" /obj/item/weapon/reagent_containers/pill/corophizine/Initialize() - ..() + . = ..() reagents.add_reagent("corophizine", 5) color = reagents.get_color() @@ -123,7 +123,7 @@ icon_state = "pill1" /obj/item/weapon/reagent_containers/pill/vermicetol/Initialize() - ..() + . = ..() reagents.add_reagent("vermicetol", 15) color = reagents.get_color() @@ -133,7 +133,7 @@ icon_state = "pill1" /obj/item/weapon/reagent_containers/pill/healing_nanites/Initialize() - ..() + . = ..() reagents.add_reagent("healing_nanites", 30) color = reagents.get_color() @@ -144,7 +144,7 @@ icon_state = "pill3" /obj/item/weapon/reagent_containers/pill/sleevingcure/Initialize() - ..() + . = ..() reagents.add_reagent("sleevingcure", 1) color = reagents.get_color() */ //CHOMPStation removal end diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 1d41d2003f..a7280e2b01 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -260,24 +260,24 @@ /obj/machinery/disposal/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) if(..()) - return TRUE - - if(usr.loc == src && !issilicon(usr)) + return + + if(usr.loc == src) to_chat(usr, "You cannot reach the controls from inside.") return TRUE if(mode==-1 && action != "eject") // If the mode is -1, only allow ejection to_chat(usr, "The disposal units power is disabled.") - return TRUE - + return + if(stat & BROKEN) - return TRUE - + return + add_fingerprint(usr) if(flushing) return - + if(isturf(loc)) if(action == "pumpOn") mode = 1 @@ -295,9 +295,9 @@ if(action == "eject") eject() - + return TRUE - + // src.add_fingerprint(user) // if(stat & BROKEN) @@ -394,7 +394,7 @@ // flush handle if(flush) - overlays += image('icons/obj/pipes/disposal.dmi', "dispover-handle") + overlays += image(src.icon, "[initial(icon_state)]-handle") // only handle is shown if no power if(stat & NOPOWER || mode == -1) @@ -402,13 +402,13 @@ // check for items in disposal - occupied light if(contents.len > 0) - overlays += image('icons/obj/pipes/disposal.dmi', "dispover-full") + overlays += image(src.icon, "[initial(icon_state)]-full") // charging and ready light if(mode == 1) - overlays += image('icons/obj/pipes/disposal.dmi', "dispover-charge") + overlays += image(src.icon, "[initial(icon_state)]-charge") else if(mode == 2) - overlays += image('icons/obj/pipes/disposal.dmi', "dispover-ready") + overlays += image(src.icon, "[initial(icon_state)]-ready") // timed process // charge the gas reservoir and perform flush if ready @@ -541,6 +541,35 @@ else return ..(mover, target) +/obj/machinery/disposal/wall + name = "inset disposal unit" + icon_state = "wall" + + density = FALSE + +/obj/machinery/disposal/wall/Initialize() + ..() + + spawn(1 SECOND) // Fixfix for weird interaction with buildmode or other late-spawning. + update() + +/obj/machinery/disposal/wall/update() + ..() + + switch(dir) + if(1) + pixel_x = 0 + pixel_y = -32 + if(2) + pixel_x = 0 + pixel_y = 32 + if(4) + pixel_x = -32 + pixel_y = 0 + if(8) + pixel_x = 32 + pixel_y = 0 + // virtual disposal object // travels through pipes in lieu of actual items // contents will be items flushed by the disposal diff --git a/code/modules/shuttles/shuttles_web.dm b/code/modules/shuttles/shuttles_web.dm index acc7dc3461..ea11f21d48 100644 --- a/code/modules/shuttles/shuttles_web.dm +++ b/code/modules/shuttles/shuttles_web.dm @@ -131,14 +131,14 @@ return autopilot = TRUE autopilot_delay = initial(autopilot_delay) - shuttle_controller.process_shuttles |= src + SSshuttles.process_shuttles |= src if(process_state == IDLE_STATE) process_state = DO_AUTOPILOT else if(!autopilot) return autopilot = FALSE - shuttle_controller.process_shuttles -= src + SSshuttles.process_shuttles -= src if (process_state == DO_AUTOPILOT) process_state = initial(process_state) @@ -196,7 +196,7 @@ log_shuttle("[my_area] shuttle computer couldn't find [lost] sensor!") /obj/machinery/computer/shuttle_control/web/attackby(obj/I, mob/user) - var/datum/shuttle/autodock/web_shuttle/shuttle = shuttle_controller.shuttles[shuttle_tag] + var/datum/shuttle/autodock/web_shuttle/shuttle = SSshuttles.shuttles[shuttle_tag] if(shuttle && istype(I,/obj/item/clothing/head/pilot)) var/obj/item/clothing/head/pilot/H = I H.shuttle_comp = src @@ -418,7 +418,7 @@ // This is called whenever a shuttle is initialized. If its our shuttle, do our thing! /obj/shuttle_connector/proc/setup_routes(var/new_shuttle) - var/datum/shuttle/autodock/web_shuttle/ES = shuttle_controller.shuttles[shuttle_name] + var/datum/shuttle/autodock/web_shuttle/ES = SSshuttles.shuttles[shuttle_name] if(ES != new_shuttle) return // Its not our shuttle! Ignore! if(destinations && istype(ES)) diff --git a/code/modules/tgui/modules/_base.dm b/code/modules/tgui/modules/_base.dm index 7cece1c097..52891ab18d 100644 --- a/code/modules/tgui/modules/_base.dm +++ b/code/modules/tgui/modules/_base.dm @@ -78,52 +78,11 @@ Code is pretty much ripped verbatim from nano modules, but with un-needed stuff return TRUE // Just a nice little default interact in case the subtypes don't need any special behavior here -/datum/tgui_module/tgui_interact(mob/user, datum/tgui/ui = null) +/datum/tgui_module/tgui_interact(mob/user, datum/tgui/ui = null, datum/tgui/parent_ui = null) ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user, src, tgui_id, name) + ui = new(user, src, tgui_id, name, parent_ui) ui.open() -// This is a helper for anything that wants to render the map. -/datum/tgui_module/proc/get_plane_masters() - . = list() - // 'Utility' planes - . += new /obj/screen/plane_master/fullbright //Lighting system (lighting_overlay objects) - . += new /obj/screen/plane_master/lighting //Lighting system (but different!) - . += new /obj/screen/plane_master/ghosts //Ghosts! - . += new /obj/screen/plane_master{plane = PLANE_AI_EYE} //AI Eye! - - . += new /obj/screen/plane_master{plane = PLANE_CH_STATUS} //Status is the synth/human icon left side of medhuds - . += new /obj/screen/plane_master{plane = PLANE_CH_HEALTH} //Health bar - . += new /obj/screen/plane_master{plane = PLANE_CH_LIFE} //Alive-or-not icon - . += new /obj/screen/plane_master{plane = PLANE_CH_ID} //Job ID icon - . += new /obj/screen/plane_master{plane = PLANE_CH_WANTED} //Wanted status - . += new /obj/screen/plane_master{plane = PLANE_CH_IMPLOYAL} //Loyalty implants - . += new /obj/screen/plane_master{plane = PLANE_CH_IMPTRACK} //Tracking implants - . += new /obj/screen/plane_master{plane = PLANE_CH_IMPCHEM} //Chemical implants - . += new /obj/screen/plane_master{plane = PLANE_CH_SPECIAL} //"Special" role stuff - . += new /obj/screen/plane_master{plane = PLANE_CH_STATUS_OOC} //OOC status HUD - - . += new /obj/screen/plane_master{plane = PLANE_ADMIN1} //For admin use - . += new /obj/screen/plane_master{plane = PLANE_ADMIN2} //For admin use - . += new /obj/screen/plane_master{plane = PLANE_ADMIN3} //For admin use - - . += new /obj/screen/plane_master{plane = PLANE_MESONS} //Meson-specific things like open ceilings. - . += new /obj/screen/plane_master{plane = PLANE_BUILDMODE} //Things that only show up while in build mode - - // Real tangible stuff planes - . += new /obj/screen/plane_master/main{plane = TURF_PLANE} - . += new /obj/screen/plane_master/main{plane = OBJ_PLANE} - . += new /obj/screen/plane_master/main{plane = MOB_PLANE} - . += new /obj/screen/plane_master/cloaked //Cloaked atoms! - - //VOREStation Add - Random other plane masters - . += new /obj/screen/plane_master{plane = PLANE_CH_STATUS_R} //Right-side status icon - . += new /obj/screen/plane_master{plane = PLANE_CH_HEALTH_VR} //Health bar but transparent at 100 - . += new /obj/screen/plane_master{plane = PLANE_CH_BACKUP} //Backup implant status - . += new /obj/screen/plane_master{plane = PLANE_CH_VANTAG} //Vore Antags - . += new /obj/screen/plane_master{plane = PLANE_AUGMENTED} //Augmented reality - //VOREStation Add End - /datum/tgui_module/proc/relaymove(mob/user, direction) return FALSE diff --git a/code/modules/tgui/modules/admin_shuttle_controller.dm b/code/modules/tgui/modules/admin_shuttle_controller.dm new file mode 100644 index 0000000000..20e5c47367 --- /dev/null +++ b/code/modules/tgui/modules/admin_shuttle_controller.dm @@ -0,0 +1,102 @@ +/* This is an admin tool to control all shuttles, including overmap & classic. */ + +/datum/tgui_module/admin_shuttle_controller + name = "Admin Shuttle Controller" + tgui_id = "AdminShuttleController" + +/datum/tgui_module/admin_shuttle_controller/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state) + var/list/data = ..() + + var/list/shuttles = list() + for(var/shuttle_name in SSshuttles.shuttles) + var/datum/shuttle/S = SSshuttles.shuttles[shuttle_name] + shuttles.Add(list(list( + "name" = shuttle_name, + "ref" = REF(S), + "current_location" = S.get_location_name(), + "status" = S.moving_status, + ))) + data["shuttles"] = shuttles + + var/list/overmap_ships = list() + for(var/ship in SSshuttles.ships) + var/obj/effect/overmap/visitable/ship/S = ship + overmap_ships.Add(list(list( + "name" = S.scanner_name || S.name, + "ref" = REF(S), + ))) + data["overmap_ships"] = overmap_ships + + return data + +/datum/tgui_module/admin_shuttle_controller/tgui_state(mob/user) + return GLOB.tgui_admin_state + +/datum/tgui_module/admin_shuttle_controller/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) + if(..()) + return + + switch(action) + if("adminobserve") + var/datum/shuttle/S = locate(params["ref"]) + if(istype(S)) + var/client/C = usr.client + if(!isobserver(usr)) + C.admin_ghost() + spawn(2) + C.jumptoturf(get_turf(S.current_location)) + else if(istype(S, /obj/effect/overmap/visitable)) + var/obj/effect/overmap/visitable/V = S + var/client/C = usr.client + if(!isobserver(usr)) + C.admin_ghost() + spawn(2) + var/atom/target + if(LAZYLEN(V.generic_waypoints)) + target = V.generic_waypoints[1] + else if(LAZYLEN(V.restricted_waypoints)) + target = V.restricted_waypoints[1] + else + to_chat(C, "Unable to jump to [V].") + return FALSE + var/turf/T = get_turf(target) + if(!istype(T)) + to_chat(C, "Unable to jump to [V].") + return FALSE + C.jumptoturf(T) + return TRUE + if("classicmove") + var/datum/shuttle/S = locate(params["ref"]) + if(istype(S, /datum/shuttle/autodock/multi)) + var/datum/shuttle/autodock/multi/shuttle = S + var/dest_key = input("Choose shuttle destination", "Shuttle Destination") as null|anything in shuttle.get_destinations() + if(dest_key) + shuttle.set_destination(dest_key, usr) + shuttle.launch(src) + else if(istype(S, /datum/shuttle/autodock/overmap)) + var/datum/shuttle/autodock/overmap/shuttle = S + var/list/possible_d = shuttle.get_possible_destinations() + var/D + if(!LAZYLEN(possible_d)) + to_chat(usr, "There are no possible destinations for [shuttle] ([shuttle.type])") + return FALSE + D = input("Choose shuttle destination", "Shuttle Destination") as null|anything in possible_d + if(D) + shuttle.set_destination(possible_d[D]) + shuttle.launch() + else if(istype(S, /datum/shuttle/autodock)) + var/datum/shuttle/autodock/shuttle = S + if(alert(usr, "Are you sure you want to launch [shuttle]?", "Launching Shuttle", "Yes", "No") == "Yes") + shuttle.launch(src) + else + to_chat(usr, "The shuttle control panel isn't quite sure how to move [S] ([S?.type]).") + return FALSE + to_chat(usr, "Launching shuttle [S].") + return TRUE + if("overmap_control") + var/obj/effect/overmap/visitable/ship/V = locate(params["ref"]) + if(istype(V)) + var/datum/tgui_module/ship/fullmonty/F = new(src, V) + F.tgui_interact(usr, null, ui) + + return TRUE diff --git a/code/modules/tgui/modules/appearance_changer.dm b/code/modules/tgui/modules/appearance_changer.dm index ab75e1d67c..180e63ec7d 100644 --- a/code/modules/tgui/modules/appearance_changer.dm +++ b/code/modules/tgui/modules/appearance_changer.dm @@ -20,10 +20,8 @@ var/list/cam_plane_masters var/obj/screen/background/cam_background var/obj/screen/skybox/local_skybox - // Needed for moving camera support - var/camera_diff_x = -1 - var/camera_diff_y = -1 - var/camera_diff_z = -1 + // Stuff for moving cameras + var/turf/last_camera_turf var/list/valid_earstyles = list() var/list/valid_tailstyles = list() @@ -45,7 +43,7 @@ cam_screen.del_on_map_removal = FALSE cam_screen.screen_loc = "[map_name]:1,1" - cam_plane_masters = get_plane_masters() + cam_plane_masters = get_tgui_plane_masters() for(var/plane in cam_plane_masters) var/obj/screen/instance = plane @@ -62,14 +60,18 @@ cam_background = new cam_background.assigned_map = map_name cam_background.del_on_map_removal = FALSE - reload_cameraview() + update_active_camera_screen() owner = H + if(owner) + GLOB.moved_event.register(owner, src, .proc/update_active_camera_screen) check_whitelist = check_species_whitelist whitelist = species_whitelist blacklist = species_blacklist /datum/tgui_module/appearance_changer/Destroy() + GLOB.moved_event.unregister(owner, src, .proc/update_active_camera_screen) + last_camera_turf = null qdel(cam_screen) QDEL_LIST(cam_plane_masters) qdel(cam_background) @@ -286,8 +288,8 @@ return ui = SStgui.try_update_ui(user, src, ui) + update_active_camera_screen() if(!ui) - reload_cameraview() // Register map objects user.client.register_map_obj(cam_screen) for(var/plane in cam_plane_masters) @@ -332,7 +334,7 @@ /datum/tgui_module/appearance_changer/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state) var/list/data = ..() - differential_check() + generate_data(check_whitelist, whitelist, blacklist) var/mob/living/carbon/human/target = owner if(customize_usr) @@ -402,26 +404,15 @@ data["mapRef"] = map_name return data -/datum/tgui_module/appearance_changer/proc/differential_check() - var/turf/T = get_turf(customize_usr ? tgui_host() : owner) - if(T) - var/new_x = T.x - var/new_y = T.y - var/new_z = T.z - if((new_x != camera_diff_x) || (new_y != camera_diff_y) || (new_z != camera_diff_z)) - reload_cameraview() - -/datum/tgui_module/appearance_changer/proc/reload_cameraview() - var/turf/camTurf = get_turf(customize_usr ? tgui_host() : owner) - if(!camTurf) +/datum/tgui_module/appearance_changer/proc/update_active_camera_screen() + var/turf/newturf = get_turf(customize_usr ? tgui_host() : owner) + if(newturf == last_camera_turf) return - camera_diff_x = camTurf.x - camera_diff_y = camTurf.y - camera_diff_z = camTurf.z + last_camera_turf = newturf var/list/visible_turfs = list() - for(var/turf/T in range(1, camTurf)) + for(var/turf/T in range(1, newturf)) visible_turfs += T cam_screen.vis_contents = visible_turfs @@ -429,9 +420,9 @@ cam_background.fill_rect(1, 1, 3, 3) local_skybox.cut_overlays() - local_skybox.add_overlay(SSskybox.get_skybox(get_z(camTurf))) + local_skybox.add_overlay(SSskybox.get_skybox(get_z(newturf))) local_skybox.scale_to_view(3) - local_skybox.set_position("CENTER", "CENTER", (world.maxx>>1) - camTurf.x, (world.maxy>>1) - camTurf.y) + local_skybox.set_position("CENTER", "CENTER", (world.maxx>>1) - newturf.x, (world.maxy>>1) - newturf.y) /datum/tgui_module/appearance_changer/proc/update_dna() var/mob/living/carbon/human/target = owner diff --git a/code/modules/tgui/modules/appearance_changer_vr.dm b/code/modules/tgui/modules/appearance_changer_vr.dm index 93ee4cfdf2..d5ace1b7e7 100644 --- a/code/modules/tgui/modules/appearance_changer_vr.dm +++ b/code/modules/tgui/modules/appearance_changer_vr.dm @@ -10,7 +10,7 @@ return STATUS_CLOSE return ..() -/datum/tgui_module/appearance_changer/vore/reload_cameraview() +/datum/tgui_module/appearance_changer/vore/update_active_camera_screen() cam_screen.vis_contents = list(owner) cam_background.icon_state = "clear" cam_background.fill_rect(1, 1, 1, 1) @@ -42,4 +42,4 @@ to_chat(O, "You tingle as you make noticeable changes to your captive's body.") if(APPEARANCECHANGER_CHANGED_EYES) to_chat(M, "You feel lightheaded and drowsy...") - to_chat(O, "You feel warm as you make subtle changes to your captive's body.") \ No newline at end of file + to_chat(O, "You feel warm as you make subtle changes to your captive's body.") diff --git a/code/modules/tgui/modules/camera.dm b/code/modules/tgui/modules/camera.dm index dbb3c7ae97..86eb923c1c 100644 --- a/code/modules/tgui/modules/camera.dm +++ b/code/modules/tgui/modules/camera.dm @@ -18,10 +18,8 @@ var/obj/screen/background/cam_background var/obj/screen/background/cam_foreground var/obj/screen/skybox/local_skybox - // Needed for moving camera support - var/camera_diff_x = -1 - var/camera_diff_y = -1 - var/camera_diff_z = -1 + // Stuff for moving cameras + var/turf/last_camera_turf /datum/tgui_module/camera/New(host, list/network_computer) . = ..() @@ -37,7 +35,7 @@ cam_screen.del_on_map_removal = FALSE cam_screen.screen_loc = "[map_name]:1,1" - cam_plane_masters = get_plane_masters() + cam_plane_masters = get_tgui_plane_masters() for(var/plane in cam_plane_masters) var/obj/screen/instance = plane @@ -70,6 +68,10 @@ cam_foreground.add_overlay(noise) /datum/tgui_module/camera/Destroy() + if(active_camera) + GLOB.moved_event.unregister(active_camera, src, .proc/update_active_camera_screen) + active_camera = null + last_camera_turf = null qdel(cam_screen) QDEL_LIST(cam_plane_masters) qdel(cam_background) @@ -106,7 +108,6 @@ var/list/data = list() data["activeCamera"] = null if(active_camera) - differential_check() data["activeCamera"] = list( name = active_camera.c_tag, status = active_camera.status, @@ -139,9 +140,12 @@ var/c_tag = params["name"] var/list/cameras = get_available_cameras(usr) var/obj/machinery/camera/C = cameras["[ckey(c_tag)]"] + if(active_camera) + GLOB.moved_event.unregister(active_camera, src, .proc/update_active_camera_screen) active_camera = C + GLOB.moved_event.register(active_camera, src, .proc/update_active_camera_screen) playsound(tgui_host(), get_sfx("terminal_type"), 25, FALSE) - reload_cameraview() + update_active_camera_screen() return TRUE if(action == "pan") @@ -163,36 +167,34 @@ target = C if(target) + if(active_camera) + GLOB.moved_event.unregister(active_camera, src, .proc/update_active_camera_screen) active_camera = target + GLOB.moved_event.register(active_camera, src, .proc/update_active_camera_screen) playsound(tgui_host(), get_sfx("terminal_type"), 25, FALSE) - reload_cameraview() + update_active_camera_screen() . = TRUE -/datum/tgui_module/camera/proc/differential_check() - var/turf/T = get_turf(active_camera) - if(T) - var/new_x = T.x - var/new_y = T.y - var/new_z = T.z - if((new_x != camera_diff_x) || (new_y != camera_diff_y) || (new_z != camera_diff_z)) - reload_cameraview() - -/datum/tgui_module/camera/proc/reload_cameraview() +/datum/tgui_module/camera/proc/update_active_camera_screen() // Show static if can't use the camera if(!active_camera?.can_use()) show_camera_static() return TRUE - var/turf/camTurf = get_turf(active_camera) + // If we're not forcing an update for some reason and the cameras are in the same location, + // we don't need to update anything. + // Most security cameras will end here as they're not moving. + var/turf/newturf = get_turf(active_camera) + if(newturf == last_camera_turf) + return - camera_diff_x = camTurf.x - camera_diff_y = camTurf.y - camera_diff_z = camTurf.z + // Cameras that get here are moving, and are likely attached to some moving atom such as cyborgs. + last_camera_turf = get_turf(active_camera) var/list/visible_turfs = list() for(var/turf/T in (active_camera.isXRay() \ - ? range(active_camera.view_range, camTurf) \ - : view(active_camera.view_range, camTurf))) + ? range(active_camera.view_range, newturf) \ + : view(active_camera.view_range, newturf))) visible_turfs += T var/list/bbox = get_bbox_of_atoms(visible_turfs) @@ -206,9 +208,9 @@ cam_foreground.fill_rect(1, 1, size_x, size_y) local_skybox.cut_overlays() - local_skybox.add_overlay(SSskybox.get_skybox(get_z(camTurf))) + local_skybox.add_overlay(SSskybox.get_skybox(get_z(newturf))) local_skybox.scale_to_view(size_x) - local_skybox.set_position("CENTER", "CENTER", (world.maxx>>1) - camTurf.x, (world.maxy>>1) - camTurf.y) + local_skybox.set_position("CENTER", "CENTER", (world.maxx>>1) - newturf.x, (world.maxy>>1) - newturf.y) // Returns the list of cameras accessible from this computer // This proc operates in two distinct ways depending on the context in which the module is created. @@ -271,6 +273,8 @@ user.client.clear_map(map_name) // Turn off the console if(length(concurrent_users) == 0 && is_living) + if(active_camera) + GLOB.moved_event.unregister(active_camera, src, .proc/update_active_camera_screen) active_camera = null playsound(tgui_host(), 'sound/machines/terminal_off.ogg', 25, FALSE) diff --git a/code/modules/tgui/modules/overmap.dm b/code/modules/tgui/modules/overmap.dm index 3b157fc0c2..2e566e1267 100644 --- a/code/modules/tgui/modules/overmap.dm +++ b/code/modules/tgui/modules/overmap.dm @@ -52,7 +52,7 @@ /datum/tgui_module/ship/proc/look(var/mob/user) if(linked) - user.set_machine(tgui_host()) + user.set_machine(src) user.reset_view(linked) user.set_viewsize(world.view + extra_view) GLOB.moved_event.register(user, src, /datum/tgui_module/ship/proc/unlook) @@ -134,4 +134,327 @@ return TRUE /datum/tgui_module/ship/nav/ntos - ntos = TRUE \ No newline at end of file + ntos = TRUE + +// Full monty control computer +/datum/tgui_module/ship/fullmonty + name = "Full Monty Overmap Control" + tgui_id = "OvermapFull" + // HELM + var/autopilot = 0 + var/autopilot_disabled = TRUE + var/list/known_sectors = list() + var/dx //desitnation + var/dy //coordinates + var/speedlimit = 1/(20 SECONDS) //top speed for autopilot, 5 + var/accellimit = 0.001 //manual limiter for acceleration + // SENSORS + var/obj/machinery/shipsensors/sensors + +/datum/tgui_module/ship/fullmonty/tgui_state(mob/user) + return GLOB.tgui_admin_state + +/datum/tgui_module/ship/fullmonty/New(host, obj/effect/overmap/visitable/ship/new_linked) + . = ..() + if(!istype(new_linked)) + CRASH("Warning, [new_linked] is not an overmap ship! Something went horribly wrong for [usr]!") + return + linked = new_linked + name = initial(name) + " ([linked.name])" + // HELM + var/area/overmap/map = locate() in world + for(var/obj/effect/overmap/visitable/sector/S in map) + if(S.known) + var/datum/computer_file/data/waypoint/R = new() + R.fields["name"] = S.name + R.fields["x"] = S.x + R.fields["y"] = S.y + known_sectors[S.name] = R + // SENSORS + for(var/obj/machinery/shipsensors/S in global.machines) + if(linked.check_ownership(S)) + sensors = S + break + +/datum/tgui_module/ship/fullmonty/relaymove(var/mob/user, direction) + if(viewing_overmap(user) && linked) + direction = turn(direction,pick(90,-90)) + linked.relaymove(user, direction, accellimit) + return 1 + return ..() + +// Beware ye eyes. This holds all of the data from helm, engine, and sensor control all at once. +/datum/tgui_module/ship/fullmonty/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state) + var/list/data = ..() + + // HELM + var/turf/T = get_turf(linked) + var/obj/effect/overmap/visitable/sector/current_sector = locate() in T + + data["sector"] = current_sector ? current_sector.name : "Deep Space" + data["sector_info"] = current_sector ? current_sector.desc : "Not Available" + data["landed"] = linked.get_landed_info() + data["s_x"] = linked.x + data["s_y"] = linked.y + data["dest"] = dy && dx + data["d_x"] = dx + data["d_y"] = dy + data["speedlimit"] = speedlimit ? speedlimit*1000 : "Halted" + data["accel"] = min(round(linked.get_acceleration()*1000, 0.01),accellimit*1000) + data["heading"] = linked.get_heading_degrees() + data["autopilot_disabled"] = autopilot_disabled + data["autopilot"] = autopilot + data["manual_control"] = viewing_overmap(user) + data["canburn"] = linked.can_burn() + data["accellimit"] = accellimit*1000 + + var/speed = round(linked.get_speed()*1000, 0.01) + var/speed_color = null + if(linked.get_speed() < SHIP_SPEED_SLOW) + speed_color = "good" + if(linked.get_speed() > SHIP_SPEED_FAST) + speed_color = "average" + data["speed"] = speed + data["speed_color"] = speed_color + + if(linked.get_speed()) + data["ETAnext"] = "[round(linked.ETA()/10)] seconds" + else + data["ETAnext"] = "N/A" + + var/list/locations[0] + for (var/key in known_sectors) + var/datum/computer_file/data/waypoint/R = known_sectors[key] + var/list/rdata[0] + rdata["name"] = R.fields["name"] + rdata["x"] = R.fields["x"] + rdata["y"] = R.fields["y"] + rdata["reference"] = "\ref[R]" + locations.Add(list(rdata)) + + data["locations"] = locations + + // ENGINES + data["global_state"] = linked.engines_state + data["global_limit"] = round(linked.thrust_limit*100) + var/total_thrust = 0 + + var/list/enginfo = list() + for(var/datum/ship_engine/E in linked.engines) + var/list/rdata = list() + rdata["eng_type"] = E.name + rdata["eng_on"] = E.is_on() + rdata["eng_thrust"] = E.get_thrust() + rdata["eng_thrust_limiter"] = round(E.get_thrust_limit()*100) + var/list/status = E.get_status() + if(!islist(status)) + log_runtime(EXCEPTION("Warning, ship [E.name] (\ref[E]) for [linked.name] returned a non-list status!")) + status = list("Error") + rdata["eng_status"] = status + rdata["eng_reference"] = "\ref[E]" + total_thrust += E.get_thrust() + enginfo.Add(list(rdata)) + + data["engines_info"] = enginfo + data["total_thrust"] = total_thrust + + // SENSORS + data["viewing"] = viewing_overmap(user) + data["on"] = 0 + data["range"] = "N/A" + data["health"] = 0 + data["max_health"] = 0 + data["heat"] = 0 + data["critical_heat"] = 0 + data["status"] = "MISSING" + data["contacts"] = list() + + if(sensors) + data["on"] = sensors.use_power + data["range"] = sensors.range + data["health"] = sensors.health + data["max_health"] = sensors.max_health + data["heat"] = sensors.heat + data["critical_heat"] = sensors.critical_heat + if(sensors.health == 0) + data["status"] = "DESTROYED" + else if(!sensors.powered()) + data["status"] = "NO POWER" + else if(!sensors.in_vacuum()) + data["status"] = "VACUUM SEAL BROKEN" + else + data["status"] = "OK" + var/list/contacts = list() + for(var/obj/effect/overmap/O in view(7,linked)) + if(linked == O) + continue + if(!O.scannable) + continue + var/bearing = round(90 - ATAN2(O.x - linked.x, O.y - linked.y),5) + if(bearing < 0) + bearing += 360 + contacts.Add(list(list("name"=O.name, "ref"="\ref[O]", "bearing"=bearing))) + data["contacts"] = contacts + + + return data + +// Beware ye eyes. This holds all of the ACTIONS from helm, engine, and sensor control all at once. +/datum/tgui_module/ship/fullmonty/tgui_act(action, params) + if(..()) + return TRUE + + switch(action) + /* HELM */ + if("add") + var/datum/computer_file/data/waypoint/R = new() + var/sec_name = input("Input navigation entry name", "New navigation entry", "Sector #[known_sectors.len]") as text + if(!sec_name) + sec_name = "Sector #[known_sectors.len]" + R.fields["name"] = sec_name + if(sec_name in known_sectors) + to_chat(usr, "Sector with that name already exists, please input a different name.") + return TRUE + switch(params["add"]) + if("current") + R.fields["x"] = linked.x + R.fields["y"] = linked.y + if("new") + var/newx = input("Input new entry x coordinate", "Coordinate input", linked.x) as num + var/newy = input("Input new entry y coordinate", "Coordinate input", linked.y) as num + R.fields["x"] = CLAMP(newx, 1, world.maxx) + R.fields["y"] = CLAMP(newy, 1, world.maxy) + known_sectors[sec_name] = R + . = TRUE + + if("remove") + var/datum/computer_file/data/waypoint/R = locate(params["remove"]) + if(R) + known_sectors.Remove(R.fields["name"]) + qdel(R) + . = TRUE + + if("setcoord") + if(params["setx"]) + var/newx = input("Input new destiniation x coordinate", "Coordinate input", dx) as num|null + if(newx) + dx = CLAMP(newx, 1, world.maxx) + + if(params["sety"]) + var/newy = input("Input new destiniation y coordinate", "Coordinate input", dy) as num|null + if(newy) + dy = CLAMP(newy, 1, world.maxy) + . = TRUE + + if("setds") + dx = text2num(params["x"]) + dy = text2num(params["y"]) + . = TRUE + + if("reset") + dx = 0 + dy = 0 + . = TRUE + + if("speedlimit") + var/newlimit = input("Input new speed limit for autopilot (0 to brake)", "Autopilot speed limit", speedlimit*1000) as num|null + if(newlimit) + speedlimit = CLAMP(newlimit/1000, 0, 100) + . = TRUE + + if("accellimit") + var/newlimit = input("Input new acceleration limit", "Acceleration limit", accellimit*1000) as num|null + if(newlimit) + accellimit = max(newlimit/1000, 0) + . = TRUE + + if("move") + var/ndir = text2num(params["dir"]) + ndir = turn(ndir,pick(90,-90)) + linked.relaymove(usr, ndir, accellimit) + . = TRUE + + if("brake") + linked.decelerate() + . = TRUE + + if("apilot") + if(autopilot_disabled) + autopilot = FALSE + else + autopilot = !autopilot + . = TRUE + + if("apilot_lock") + autopilot_disabled = !autopilot_disabled + autopilot = FALSE + . = TRUE + + if("manual") + viewing_overmap(usr) ? unlook(usr) : look(usr) + . = TRUE + /* END HELM */ + /* ENGINES */ + if("global_toggle") + linked.engines_state = !linked.engines_state + for(var/datum/ship_engine/E in linked.engines) + if(linked.engines_state == !E.is_on()) + E.toggle() + . = TRUE + + if("set_global_limit") + var/newlim = input("Input new thrust limit (0..100%)", "Thrust limit", linked.thrust_limit*100) as num + linked.thrust_limit = clamp(newlim/100, 0, 1) + for(var/datum/ship_engine/E in linked.engines) + E.set_thrust_limit(linked.thrust_limit) + . = TRUE + + if("global_limit") + linked.thrust_limit = clamp(linked.thrust_limit + text2num(params["global_limit"]), 0, 1) + for(var/datum/ship_engine/E in linked.engines) + E.set_thrust_limit(linked.thrust_limit) + . = TRUE + + if("set_limit") + var/datum/ship_engine/E = locate(params["engine"]) + var/newlim = input("Input new thrust limit (0..100)", "Thrust limit", E.get_thrust_limit()) as num + var/limit = clamp(newlim/100, 0, 1) + if(istype(E)) + E.set_thrust_limit(limit) + . = TRUE + + if("limit") + var/datum/ship_engine/E = locate(params["engine"]) + var/limit = clamp(E.get_thrust_limit() + text2num(params["limit"]), 0, 1) + if(istype(E)) + E.set_thrust_limit(limit) + . = TRUE + + if("toggle_engine") + var/datum/ship_engine/E = locate(params["engine"]) + if(istype(E)) + E.toggle() + . = TRUE + /* END ENGINES */ + /* SENSORS */ + if("range") + var/nrange = input("Set new sensors range", "Sensor range", sensors.range) as num|null + if(nrange) + sensors.set_range(CLAMP(nrange, 1, world.view)) + . = TRUE + if("toggle_sensor") + sensors.toggle() + . = TRUE + if("viewing") + if(usr && !isAI(usr)) + viewing_overmap(usr) ? unlook(usr) : look(usr) + . = TRUE + /* END SENSORS */ + +// We don't want these to do anything. +/datum/tgui_module/ship/fullmonty/sync_linked() + return +/datum/tgui_module/ship/fullmonty/attempt_hook_up_recursive() + return +/datum/tgui_module/ship/fullmonty/attempt_hook_up() + return \ No newline at end of file diff --git a/code/modules/tgui/states/admin.dm b/code/modules/tgui/states/admin.dm index 6d1c680927..7009f6f884 100644 --- a/code/modules/tgui/states/admin.dm +++ b/code/modules/tgui/states/admin.dm @@ -7,6 +7,6 @@ GLOBAL_DATUM_INIT(tgui_admin_state, /datum/tgui_state/admin_state, new) /datum/tgui_state/admin_state/can_use_topic(src_object, mob/user) - if(check_rights_for(user.client, R_ADMIN)) + if(check_rights_for(user.client, R_ADMIN|R_EVENT)) return STATUS_INTERACTIVE return STATUS_CLOSE diff --git a/code/modules/virus2/items_devices.dm b/code/modules/virus2/items_devices.dm index a69cd8179e..49d5ef211f 100644 --- a/code/modules/virus2/items_devices.dm +++ b/code/modules/virus2/items_devices.dm @@ -37,7 +37,7 @@ /obj/item/weapon/virusdish name = "virus dish" icon = 'icons/obj/items.dmi' - icon_state = "implantcase-b" + icon_state = "virussample" var/datum/disease2/disease/virus2 = null var/growth = 0 var/basic_info = null @@ -81,7 +81,7 @@ /obj/item/weapon/ruinedvirusdish name = "ruined virus sample" icon = 'icons/obj/items.dmi' - icon_state = "implantcase-b" + icon_state = "virussample-ruined" desc = "The bacteria in the dish are completely dead." /obj/item/weapon/ruinedvirusdish/attackby(var/obj/item/weapon/W as obj,var/mob/living/carbon/user as mob) diff --git a/code/modules/vore/appearance/sprite_accessories_ch.dm b/code/modules/vore/appearance/sprite_accessories_ch.dm index 7992902b8d..9cc62fd860 100644 --- a/code/modules/vore/appearance/sprite_accessories_ch.dm +++ b/code/modules/vore/appearance/sprite_accessories_ch.dm @@ -38,6 +38,25 @@ do_colouration = 1 color_blend_mode = ICON_MULTIPLY +/datum/sprite_accessory/ears/teshbeeantenna + name = "Teshari bee antenna" + icon = 'icons/mob/vore/ears_ch.dmi' + icon_state = "teshbee" + +/datum/sprite_accessory/ears/teshantenna + name = "Teshari antenna, colorable" + icon = 'icons/mob/vore/ears_ch.dmi' + icon_state = "teshantenna" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/curlyteshantenna + name = "Teshari curly antenna, colorable" + icon = 'icons/mob/vore/ears_ch.dmi' + icon_state = "curly_bug_tesh" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + //TAILS /datum/sprite_accessory/tail/alien_slug name = "Alien slug tail" @@ -77,6 +96,100 @@ extra_overlay = "valetail_mark" extra_overlay_w = "valetail_mark_w" +/datum/sprite_accessory/tail/teshbeethorax + name = "Teshari bee thorax" + desc = "" + icon = 'icons/mob/vore/tails_ch.dmi' + icon_state = "beethorax_tesh" + +/datum/sprite_accessory/tail/teshbuggo + name = "Teshari bug abdomen, colorable" + desc = "" + icon = 'icons/mob/vore/tails_ch.dmi' + icon_state = "teshbug_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/teshbuggobee + name = "Teshari bug abdomen, bee top, dual-colorable" + desc = "" + icon = 'icons/mob/vore/tails_ch.dmi' + icon_state = "teshbug_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "teshbee_markings" + +/datum/sprite_accessory/tail/teshbeefull + name = "Teshari bug abdomen, bee full, dual-colorable" + desc = "" + icon = 'icons/mob/vore/tails_ch.dmi' + icon_state = "teshbug_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "teshbeefull_markings" + +/datum/sprite_accessory/tail/teshbuggounder + name = "Teshari bug abdomen, underside, dual-colorable" + desc = "" + icon = 'icons/mob/vore/tails_ch.dmi' + icon_state = "teshbug_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "teshunder_markings" + +/datum/sprite_accessory/tail/teshbuggofirefly + name = "Teshari bug abdomen, firefly, dual-colorable" + desc = "" + icon = 'icons/mob/vore/tails_ch.dmi' + icon_state = "teshbug_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "teshfirefly_markings" + +/datum/sprite_accessory/tail/fatteshbuggo + name = "Teshari fat bug abdomen, colorable" + desc = "" + icon = 'icons/mob/vore/tails_ch.dmi' + icon_state = "teshbugfat_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/fatteshbuggobee + name = "Teshari fat bug abdomen, bee top, dual-colorable" + desc = "" + icon = 'icons/mob/vore/tails_ch.dmi' + icon_state = "teshbugfat_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "teshfatbee_markings" + +/datum/sprite_accessory/tail/fatteshbeefull + name = "Teshari fat bug abdomen, bee full, dual-colorable" + desc = "" + icon = 'icons/mob/vore/tails_ch.dmi' + icon_state = "teshbugfat_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "teshfatbeefull_markings" + +/datum/sprite_accessory/tail/fatteshbuggounder + name = "Teshari fat bug abdomen, underside, dual-colorable" + desc = "" + icon = 'icons/mob/vore/tails_ch.dmi' + icon_state = "teshbugfat_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "teshfatunder_markings" + +/datum/sprite_accessory/tail/fatteshbuggofirefly + name = "Teshari fat bug abdomen, firefly, dual-colorable" + desc = "" + icon = 'icons/mob/vore/tails_ch.dmi' + icon_state = "teshbugfat_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "teshfatfirefly_markings" + //WINGS /datum/sprite_accessory/wing/snagc @@ -86,6 +199,18 @@ icon_state = "csnag-backplate" do_colouration = 1 +/datum/sprite_accessory/wing/teshbee + name = "Teshari bee wings" + desc = "" + icon = 'icons/mob/vore/wings_ch.dmi' + icon_state = "beewings_tesh" + +/datum/sprite_accessory/wing/teshdragonfly + name = "Teshari dragonfly wings" + desc = "" + icon = 'icons/mob/vore/wings_ch.dmi' + icon_state = "dragonfly_tesh" + /datum/sprite_accessory/wing/snail //We should some day make a variable to make some wings not be able to fly name = "Snail shell" desc = "" diff --git a/code/modules/vore/appearance/sprite_accessories_taur_vr.dm b/code/modules/vore/appearance/sprite_accessories_taur_vr.dm index 0c40c24f29..649cdf76a9 100644 --- a/code/modules/vore/appearance/sprite_accessories_taur_vr.dm +++ b/code/modules/vore/appearance/sprite_accessories_taur_vr.dm @@ -603,6 +603,28 @@ name = "Shadekin Long Tail" icon_state = "shadekin_long_s" +/datum/sprite_accessory/tail/taur/pawcow // this grabs suit sprites from the normal cow, the outline is the same except for the tail + name = "Cow w/ paws (Taur)" + icon_state = "pawcow_s" + extra_overlay = "pawcow_markings" + suit_sprites = 'icons/mob/taursuits_cow_vr.dmi' + icon_sprite_tag = "pawcow" + + msg_owner_disarm_run = "You quickly push %prey to the ground with your paw!" + msg_prey_disarm_run = "%owner pushes you down to the ground with their paw!" + + msg_owner_disarm_walk = "You firmly push your paw down on %prey, painfully but harmlessly pinning them to the ground!" + msg_prey_disarm_walk = "%owner firmly pushes their paw down on you, quite painfully but harmlessly pinning you to the ground!" + + msg_owner_harm_walk = "You methodically place your paw down upon %prey's body, slowly applying pressure, crushing them against the floor below!" + msg_prey_harm_walk = "%owner methodically places their paw upon your body, slowly applying pressure, crushing you against the floor below!" + + msg_owner_grab_success = "You pin %prey to the ground before scooping them up with your paws!" + msg_prey_grab_success = "%owner pins you to the ground before scooping you up with their paws!" + + msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!" + msg_prey_grab_fail = "%owner steps down and squishes you with their paw, forcing you down to the ground!" + // Special snowflake tails/taurhalves //spoopylizz: Roiz Lizden diff --git a/code/modules/vore/appearance/sprite_accessories_vr.dm b/code/modules/vore/appearance/sprite_accessories_vr.dm index 8b317fc4cc..ceaa97b718 100644 --- a/code/modules/vore/appearance/sprite_accessories_vr.dm +++ b/code/modules/vore/appearance/sprite_accessories_vr.dm @@ -42,6 +42,13 @@ // Ears avaliable to anyone +/datum/sprite_accessory/ears/alt_ram_horns + name = "Solid ram horns" + desc = "" + icon_state = "ram_horns_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + /datum/sprite_accessory/ears/hyena name = "hyena ears, dual-color" desc = "" @@ -631,6 +638,77 @@ color_blend_mode = ICON_MULTIPLY extra_overlay = "succu-horns_b" +/datum/sprite_accessory/ears/chorns_nubbydogs + name = "Nubby Chorns" + desc = "" + icon_state = "chorn_nubby" + do_colouration = 0 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/chorns_herk + name = "Herk Chorns" + desc = "" + icon_state = "chorn_herk" + do_colouration = 0 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/chorns_bork + name = "Bork Chorns" + desc = "" + icon_state = "chorn_bork" + do_colouration = 0 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/chorns_bull + name = "Bull Chorns" + desc = "" + icon_state = "chorn_bull" + do_colouration = 0 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/chorns_bicarrot + name = "Bicarrot Chorns" + desc = "" + icon_state = "chorn_bicarrot" + do_colouration = 0 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/chorns_longcarrot + name = "Long Carrot Chorns" + desc = "" + icon_state = "chorn_longcarrot" + do_colouration = 0 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/chorns_shortcarrot + name = "Short Carrot Chorns" + desc = "" + icon_state = "chorn_shortcarrot" + do_colouration = 0 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/chorns_scorp + name = "Scorp Chorns" + desc = "" + icon_state = "chorn_scorp" + do_colouration = 0 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/chorns_ocean + name = "Ocean Chorns" + desc = "" + icon_state = "chorn_ocean" + do_colouration = 0 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/chorns_chub + name = "Chub Chorns" + desc = "" + icon_state = "chorn_chub" + do_colouration = 0 + color_blend_mode = ICON_MULTIPLY + + /* @@ -1990,9 +2068,9 @@ //////////////////////////// */ -// Yes, I have to add all of this just to make some glowy hair. -// No, this isn't a character creation option, but... I guess in the future it could be, if anyone wants that? - +// Yes, I have to add all of this just to make some glowy hair. +// No, this isn't a character creation option, but... I guess in the future it could be, if anyone wants that? + /datum/sprite_accessory/hair_accessory name = "You should not see this..." icon = 'icons/mob/vore/hair_accessories_vr.dmi' diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index f8abbb477a..69a637a027 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -39,7 +39,7 @@ var/is_wet = TRUE // Is this belly's insides made of slimy parts? var/wet_loop = TRUE // Does the belly have a fleshy loop playing? var/obj/item/weapon/storage/vore_egg/ownegg // Is this belly creating an egg? - var/egg_type = "egg" // Default egg type and path. + var/egg_type = "Egg" // Default egg type and path. var/egg_path = /obj/item/weapon/storage/vore_egg //I don't think we've ever altered these lists. making them static until someone actually overrides them somewhere. @@ -187,7 +187,8 @@ "fullness3_messages", "fullness4_messages", "fullness5_messages", - "vorespawn_blacklist" //CHOMP end of variables from CHOMP + "vorespawn_blacklist", //CHOMP end of variables from CHOMP + "egg_type" ) /*These have been pulled from the above list as these were chomp edits for liquid belly stuff. This needs to be ported back in for TGUI port @@ -821,6 +822,7 @@ dupe.belly_fullscreen = belly_fullscreen dupe.disable_hud = disable_hud + dupe.egg_type = egg_type //// Object-holding variables //struggle_messages_outside - strings diff --git a/code/modules/vore/eating/bellymodes_datum_vr.dm b/code/modules/vore/eating/bellymodes_datum_vr.dm index 6d97729767..2ddf31c52d 100644 --- a/code/modules/vore/eating/bellymodes_datum_vr.dm +++ b/code/modules/vore/eating/bellymodes_datum_vr.dm @@ -179,8 +179,7 @@ GLOBAL_LIST_INIT(digest_modes, list()) egg_contents += E if(egg_contents.len) if(!B.ownegg) - if(B.owner.vore_egg_type in tf_vore_egg_types) - B.egg_type = B.owner.vore_egg_type + if(B.egg_type in tf_vore_egg_types) B.egg_path = tf_vore_egg_types[B.egg_type] B.ownegg = new B.egg_path(B) for(var/atom/movable/C in egg_contents) diff --git a/code/modules/vore/eating/human_ch.dm b/code/modules/vore/eating/human_ch.dm new file mode 100644 index 0000000000..cdcc049993 --- /dev/null +++ b/code/modules/vore/eating/human_ch.dm @@ -0,0 +1,19 @@ +/* +init_vore() was moved to only be called when vore organs are needed. This is also responsible for loading vore prefs. +This file is here to make vore prefs default to off so that someone who hasn't opened their vore panel during a round +won't accidentally be prefbroken. + +Also, these should've been defaulted to off in the first place. +*/ +/mob/living/carbon/human + digestable = FALSE + devourable = FALSE + feeding = FALSE + absorbable = FALSE + digest_leave_remains = FALSE + allowmobvore = FALSE + showvoreprefs = FALSE + permit_healbelly = FALSE + can_be_drop_prey = FALSE + can_be_drop_pred = FALSE + show_vore_fx = FALSE \ No newline at end of file diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 1cb18f9f65..fac9a1dee4 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -49,11 +49,6 @@ M.verbs += /mob/living/proc/insidePanel M.verbs += /mob/living/proc/vore_transfer_reagents //CHOMP If mob doesnt have bellies it cant use this verb for anything - //Tries to load prefs if a client is present otherwise gives freebie stomach - spawn(2 SECONDS) - if(M) - M.init_vore() - //return TRUE to hook-caller return TRUE @@ -102,6 +97,7 @@ //Has to be aggressive grab, has to be living click-er and non-silicon grabbed if(G.state >= GRAB_AGGRESSIVE && (isliving(user) && !issilicon(G.affecting))) var/mob/living/attacker = user // Typecast to living + G.affecting.init_vore() // src is the mob clicked on and attempted predator @@ -157,6 +153,10 @@ var/mob/living/attacker = user // Typecast to living if(is_vore_predator(src)) for(var/mob/living/M in H.contents) + M.init_vore() + if(!M.devourable) + to_chat(user, "[M] isn't able to be devoured.") + return FALSE if(attacker.eat_held_mob(attacker, M, src)) if(H.held_mob == M) H.held_mob = null @@ -615,7 +615,7 @@ to_chat(src, "You are not allowed to eat this.") return - if(is_type_in_list(I,edible_trash) | adminbus_trash) + if(is_type_in_list(I,edible_trash) | adminbus_trash || is_type_in_list(I,edible_tech) && isSynthetic()) //chompstation add synth check if(I.hidden_uplink) to_chat(src, "You really should not be eating this.") message_admins("[key_name(src)] has attempted to ingest an uplink item. ([src ? ADMIN_JMP(src) : "null"])") @@ -701,6 +701,15 @@ else if (istype(I,/obj/item/clothing/accessory/collar)) visible_message("[src] demonstrates their voracious capabilities by swallowing [I] whole!") to_chat(src, "You can taste the submissiveness in the wearer of [I]!") + //kcin2000 1/29/21 - lets you eat the news digitally and adds a text for the paper news + else if(istype(I,/obj/item/device/starcaster_news)) + to_chat(src, "You can taste the dry flavor of digital garbage, oh wait its just the news.") + else if(istype(I,/obj/item/weapon/newspaper)) + to_chat(src, "You can taste the dry flavor of garbage, oh wait its just the news.") + //kcin2001 1/29/21 - Adding some special synth trash eat + else if (istype(I,/obj/item/weapon/cell)) + visible_message("[src] sates their electric appeite with a [I]!") + to_chat(src, "You can taste the spicy flavor of electrolytes, yum.") else to_chat(src, "You can taste the flavor of garbage. Delicious.") return diff --git a/code/modules/vore/eating/simple_animal_vr.dm b/code/modules/vore/eating/simple_animal_vr.dm index eda82b1c9a..02a3a77868 100644 --- a/code/modules/vore/eating/simple_animal_vr.dm +++ b/code/modules/vore/eating/simple_animal_vr.dm @@ -13,6 +13,8 @@ if(stat != CONSCIOUS) return + init_vore() + T.init_vore() // Verbs are horrifying. They don't call overrides. So we're stuck with this. if(istype(src, /mob/living/simple_mob/animal/passive/mouse) && !T.ckey) // Mice can't eat logged out players! diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm index e0cf4d22fb..3626c2e353 100644 --- a/code/modules/vore/eating/vore_vr.dm +++ b/code/modules/vore/eating/vore_vr.dm @@ -80,6 +80,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE // Check if an object is capable of eating things, based on vore_organs // /proc/is_vore_predator(mob/living/O) + O.init_vore() if(istype(O,/mob/living)) if(O.vore_organs.len > 0) return TRUE diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index 0b902e82bc..e19c230833 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -18,6 +18,7 @@ if(!vorePanel) log_debug("[src] ([type], \ref[src]) didn't have a vorePanel and tried to use the verb.") vorePanel = new(src) + init_vore() //Returns if the organs already exist anyway. vorePanel.tgui_interact(src) @@ -150,6 +151,7 @@ "release_sound" = selected.release_sound, // "messages" // TODO "can_taste" = selected.can_taste, + "egg_type" = selected.egg_type, "nutrition_percent" = selected.nutrition_percent, "digest_brute" = selected.digest_brute, "digest_burn" = selected.digest_burn, @@ -165,6 +167,7 @@ if(selected.mode_flags & selected.mode_flag_list[flag_name]) data["selected"]["addons"].Add(flag_name) + data["selected"]["egg_type"] = selected.egg_type data["selected"]["contaminates"] = selected.contaminates data["selected"]["contaminate_flavor"] = null data["selected"]["contaminate_color"] = null @@ -696,6 +699,13 @@ host.vore_selected.contamination_color = new_color host.vore_selected.items_preserved.Cut() //To re-contaminate for new color . = TRUE + if("b_egg_type") + var/list/menu_list = global_vore_egg_types.Copy() + var/new_egg_type = input("Choose Egg Type (currently [host.vore_selected.egg_type])") as null|anything in menu_list + if(!new_egg_type) + return FALSE + host.vore_selected.egg_type = new_egg_type + . = TRUE if("b_desc") var/new_desc = html_encode(input(usr,"Belly Description ([BELLIES_DESC_MAX] char limit):","New Description",host.vore_selected.desc) as message|null) @@ -929,7 +939,6 @@ qdel(host.vore_selected) host.vore_selected = host.vore_organs[1] . = TRUE - if("b_vorespawn_blacklist") //CHOMP Addition host.vore_selected.vorespawn_blacklist = !host.vore_selected.vorespawn_blacklist . = TRUE diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index 2c2427c9ce..776e7dad2e 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -1228,7 +1228,7 @@ desc = "A standard vacuum-flask filled with good and expensive drink." /obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask/fluff/viktor/Initialize() - ..() + . = ..() reagents.add_reagent("pwine", 60) //RadiantAurora: Tiemli Kroto diff --git a/code/modules/vore/resizing/resize_vr.dm b/code/modules/vore/resizing/resize_vr.dm index ea7ec4c5cd..ea7572fc3a 100644 --- a/code/modules/vore/resizing/resize_vr.dm +++ b/code/modules/vore/resizing/resize_vr.dm @@ -41,7 +41,7 @@ var/const/RESIZE_A_SMALLTINY = (RESIZE_SMALL + RESIZE_TINY) / 2 . = ..() ASSERT(!ishuman(src)) var/matrix/M = matrix() - M.Scale(size_multiplier) + M.Scale(size_multiplier * icon_scale_x, size_multiplier * icon_scale_y) M.Translate(0, (vis_height/2)*(size_multiplier-1)) transform = M @@ -70,7 +70,7 @@ var/const/RESIZE_A_SMALLTINY = (RESIZE_SMALL + RESIZE_TINY) / 2 var/change = new_size - size_multiplier var/duration = (abs(change)+0.25) SECONDS var/matrix/resize = matrix() // Defines the matrix to change the player's size - resize.Scale(new_size) //Change the size of the matrix + resize.Scale(new_size * icon_scale_x, new_size * icon_scale_y) //Change the size of the matrix resize.Translate(0, (vis_height/2) * (new_size - 1)) //Move the player up in the tile so their feet align with the bottom animate(src, transform = resize, time = duration) //Animate the player resizing diff --git a/html/changelogs/woodrat - WR_shutters.yml b/html/changelogs/woodrat - WR_shutters.yml new file mode 100644 index 0000000000..4e8a24e018 --- /dev/null +++ b/html/changelogs/woodrat - WR_shutters.yml @@ -0,0 +1,37 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Woodrat + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Added new shutters ported from World." + - tweak: "Replaced lightswitch, request console, newscaster sprite with one from Virgo." \ No newline at end of file diff --git a/icons/_nanomaps/tether_nanomap_z7.png b/icons/_nanomaps/tether_nanomap_z7.png index c404e1da35..0fa79b686d 100644 Binary files a/icons/_nanomaps/tether_nanomap_z7.png and b/icons/_nanomaps/tether_nanomap_z7.png differ diff --git a/icons/effects/setup_backgrounds_vr.dmi b/icons/effects/setup_backgrounds_vr.dmi new file mode 100644 index 0000000000..66818f57a9 Binary files /dev/null and b/icons/effects/setup_backgrounds_vr.dmi differ diff --git a/icons/mob/animal_vr.dmi b/icons/mob/animal_vr.dmi index 801f3ddf33..fee4625fc5 100644 Binary files a/icons/mob/animal_vr.dmi and b/icons/mob/animal_vr.dmi differ diff --git a/icons/mob/drakeborg/drakeborg_vr.dmi b/icons/mob/drakeborg/drakeborg_vr.dmi index c1ec3f92b0..1be714814b 100644 Binary files a/icons/mob/drakeborg/drakeborg_vr.dmi and b/icons/mob/drakeborg/drakeborg_vr.dmi differ diff --git a/icons/mob/hair_gradients.dmi b/icons/mob/hair_gradients.dmi index 0f40b098e9..1a3c330355 100644 Binary files a/icons/mob/hair_gradients.dmi and b/icons/mob/hair_gradients.dmi differ diff --git a/icons/mob/screen_nifsc.dmi b/icons/mob/screen_nifsc.dmi new file mode 100644 index 0000000000..ec94dbb8e9 Binary files /dev/null and b/icons/mob/screen_nifsc.dmi differ diff --git a/icons/mob/taursuits_cow_vr.dmi b/icons/mob/taursuits_cow_vr.dmi index ce592d5edb..5ca5ebda39 100644 Binary files a/icons/mob/taursuits_cow_vr.dmi and b/icons/mob/taursuits_cow_vr.dmi differ diff --git a/icons/mob/vore/ears_ch.dmi b/icons/mob/vore/ears_ch.dmi index ea822a9e4b..d885310f65 100644 Binary files a/icons/mob/vore/ears_ch.dmi and b/icons/mob/vore/ears_ch.dmi differ diff --git a/icons/mob/vore/ears_vr.dmi b/icons/mob/vore/ears_vr.dmi index 344da6e557..6c259ad558 100644 Binary files a/icons/mob/vore/ears_vr.dmi and b/icons/mob/vore/ears_vr.dmi differ diff --git a/icons/mob/vore/tails_ch.dmi b/icons/mob/vore/tails_ch.dmi index 4b78302b94..b30793a048 100644 Binary files a/icons/mob/vore/tails_ch.dmi and b/icons/mob/vore/tails_ch.dmi differ diff --git a/icons/mob/vore/tails_vr.dmi b/icons/mob/vore/tails_vr.dmi index eab6611c9c..0ef22dd9ef 100644 Binary files a/icons/mob/vore/tails_vr.dmi and b/icons/mob/vore/tails_vr.dmi differ diff --git a/icons/mob/vore/taurs_vr.dmi b/icons/mob/vore/taurs_vr.dmi index a724ddd57d..a00d6bb489 100644 Binary files a/icons/mob/vore/taurs_vr.dmi and b/icons/mob/vore/taurs_vr.dmi differ diff --git a/icons/mob/vore/wings_ch.dmi b/icons/mob/vore/wings_ch.dmi index 5bdeecb3b9..5b90a078d5 100644 Binary files a/icons/mob/vore/wings_ch.dmi and b/icons/mob/vore/wings_ch.dmi differ diff --git a/icons/mob/widerobot_car_vr.dmi b/icons/mob/widerobot_car_vr.dmi new file mode 100644 index 0000000000..01e6ea41b5 Binary files /dev/null and b/icons/mob/widerobot_car_vr.dmi differ diff --git a/icons/mob/widerobot_eng_vr.dmi b/icons/mob/widerobot_eng_vr.dmi new file mode 100644 index 0000000000..b5c55b53c8 Binary files /dev/null and b/icons/mob/widerobot_eng_vr.dmi differ diff --git a/icons/mob/widerobot_jan_vr.dmi b/icons/mob/widerobot_jan_vr.dmi new file mode 100644 index 0000000000..23ec7272b2 Binary files /dev/null and b/icons/mob/widerobot_jan_vr.dmi differ diff --git a/icons/mob/widerobot_med_vr.dmi b/icons/mob/widerobot_med_vr.dmi new file mode 100644 index 0000000000..809bed1be0 Binary files /dev/null and b/icons/mob/widerobot_med_vr.dmi differ diff --git a/icons/mob/widerobot_sci_vr.dmi b/icons/mob/widerobot_sci_vr.dmi new file mode 100644 index 0000000000..9b2592fcc0 Binary files /dev/null and b/icons/mob/widerobot_sci_vr.dmi differ diff --git a/icons/mob/widerobot_sec_vr.dmi b/icons/mob/widerobot_sec_vr.dmi new file mode 100644 index 0000000000..5cf9850300 Binary files /dev/null and b/icons/mob/widerobot_sec_vr.dmi differ diff --git a/icons/mob/widerobot_ser_vr.dmi b/icons/mob/widerobot_ser_vr.dmi new file mode 100644 index 0000000000..14c8d35469 Binary files /dev/null and b/icons/mob/widerobot_ser_vr.dmi differ diff --git a/icons/obj/64x32guns_ch.dmi b/icons/obj/64x32guns_ch.dmi index 9f5057370a..f898a25a64 100644 Binary files a/icons/obj/64x32guns_ch.dmi and b/icons/obj/64x32guns_ch.dmi differ diff --git a/icons/obj/ammo_ch.dmi b/icons/obj/ammo_ch.dmi index 86114de902..7a835019bb 100644 Binary files a/icons/obj/ammo_ch.dmi and b/icons/obj/ammo_ch.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index 3c252b8d35..7b397d3ead 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/clothing/uniforms_1.dmi b/icons/obj/clothing/uniforms_1.dmi index 9478ef888d..446758ab5a 100644 Binary files a/icons/obj/clothing/uniforms_1.dmi and b/icons/obj/clothing/uniforms_1.dmi differ diff --git a/icons/obj/contraband.dmi b/icons/obj/contraband.dmi index 019e008e41..344ea5b357 100644 Binary files a/icons/obj/contraband.dmi and b/icons/obj/contraband.dmi differ diff --git a/icons/obj/decals.dmi b/icons/obj/decals.dmi index c7b1fe5787..3f1fd1b792 100644 Binary files a/icons/obj/decals.dmi and b/icons/obj/decals.dmi differ diff --git a/icons/obj/decals_directions.dmi b/icons/obj/decals_directions.dmi new file mode 100644 index 0000000000..6b6ddf5283 Binary files /dev/null and b/icons/obj/decals_directions.dmi differ diff --git a/icons/obj/doors/rapid_pdoor.dmi b/icons/obj/doors/rapid_pdoor.dmi index 66027d65fd..01ab429f32 100644 Binary files a/icons/obj/doors/rapid_pdoor.dmi and b/icons/obj/doors/rapid_pdoor.dmi differ diff --git a/icons/obj/egg_new_vr.dmi b/icons/obj/egg_new_vr.dmi index b9804d69ba..20f5b01fd3 100644 Binary files a/icons/obj/egg_new_vr.dmi and b/icons/obj/egg_new_vr.dmi differ diff --git a/icons/obj/egg_open_vr.dmi b/icons/obj/egg_open_vr.dmi index e3faabb4dc..2e21e6039d 100644 Binary files a/icons/obj/egg_open_vr.dmi and b/icons/obj/egg_open_vr.dmi differ diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi index af15334c11..b0f581a18b 100644 Binary files a/icons/obj/food.dmi and b/icons/obj/food.dmi differ diff --git a/icons/obj/food_custom.dmi b/icons/obj/food_custom.dmi index e8be40f76d..ee26eb7777 100644 Binary files a/icons/obj/food_custom.dmi and b/icons/obj/food_custom.dmi differ diff --git a/icons/obj/food_syn.dmi b/icons/obj/food_syn.dmi index f186b53089..9c8787e529 100644 Binary files a/icons/obj/food_syn.dmi and b/icons/obj/food_syn.dmi differ diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index ddb2a72503..80b4217be1 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ diff --git a/icons/obj/gun_ch.dmi b/icons/obj/gun_ch.dmi index c511b9b210..4f69350c57 100644 Binary files a/icons/obj/gun_ch.dmi and b/icons/obj/gun_ch.dmi differ diff --git a/icons/obj/pipes/disposal.dmi b/icons/obj/pipes/disposal.dmi index 4a3037b7de..21ecaf5280 100644 Binary files a/icons/obj/pipes/disposal.dmi and b/icons/obj/pipes/disposal.dmi differ diff --git a/icons/obj/power.dmi b/icons/obj/power.dmi index c806ec99be..e982df9b9f 100644 Binary files a/icons/obj/power.dmi and b/icons/obj/power.dmi differ diff --git a/icons/obj/projectiles_impact.dmi b/icons/obj/projectiles_impact.dmi index 19f6d1db96..b2c5fc51ca 100644 Binary files a/icons/obj/projectiles_impact.dmi and b/icons/obj/projectiles_impact.dmi differ diff --git a/icons/obj/projectiles_muzzle.dmi b/icons/obj/projectiles_muzzle.dmi index 6c9d8cf694..aaad45f920 100644 Binary files a/icons/obj/projectiles_muzzle.dmi and b/icons/obj/projectiles_muzzle.dmi differ diff --git a/icons/obj/projectiles_tracer.dmi b/icons/obj/projectiles_tracer.dmi index 935e3afd21..7a495a4a28 100644 Binary files a/icons/obj/projectiles_tracer.dmi and b/icons/obj/projectiles_tracer.dmi differ diff --git a/icons/obj/projectiles_vr.dmi b/icons/obj/projectiles_vr.dmi index ecc3445c92..7cdadb1a0e 100644 Binary files a/icons/obj/projectiles_vr.dmi and b/icons/obj/projectiles_vr.dmi differ diff --git a/icons/obj/terminals.dmi b/icons/obj/terminals.dmi index 659b22ff7a..a375136543 100644 Binary files a/icons/obj/terminals.dmi and b/icons/obj/terminals.dmi differ diff --git a/icons/obj/xenoarchaeology.dmi b/icons/obj/xenoarchaeology.dmi index b4179bcb3a..d5b0a684d7 100644 Binary files a/icons/obj/xenoarchaeology.dmi and b/icons/obj/xenoarchaeology.dmi differ diff --git a/maps/offmap_vr/om_ships/abductor.dm b/maps/offmap_vr/om_ships/abductor.dm index 77ab5d3b5d..fa5b017527 100644 --- a/maps/offmap_vr/om_ships/abductor.dm +++ b/maps/offmap_vr/om_ships/abductor.dm @@ -1,98 +1,101 @@ -// Compile in the map for CI testing if we're testing compileability of all the maps -#if MAP_TEST -#include "abductor.dmm" -#endif - -// Map template for spawning the shuttle -/datum/map_template/om_ships/abductor - name = "OM Ship - Abductor Ship (New Z)" - desc = "A ship for spooky aliens to kidnap farmers and unfortunate spacemen." - mappath = 'abductor.dmm' - -/area/abductor - requires_power = 0 - icon_state = "purple" - -/area/abductor/ - name = "Abductor Ship" - flags = RAD_SHIELDED | BLUE_SHIELDED - -/area/abductor/exterior - name = "Abductor Ship Exterior" - has_gravity = 0 - -// The 'Abductor Ship' -/obj/effect/overmap/visitable/ship/abductor - name = "spacecraft" - desc = "Spacefaring vessel." - icon_state = "shuttle" - moving_state = "shuttle" - scanner_name = "unknown vessel" - scanner_desc = @{"[i]Registration[/i]: Unknown -[i]Class[/i]: Corvette -[i]Transponder[/i]: No transponder detected." -[b]Notice[/b]: Deep scans detect unknown power signatures, and onboard transporter technology."} - color = "#11414c" //STEALTH - vessel_mass = 8000 - vessel_size = SHIP_SIZE_SMALL - initial_generic_waypoints = list("abductor_port", "abductor_starboard") - fore_dir = NORTH - -/obj/item/weapon/paper/alien/abductor - name = "Read Me" - info = {"((Just to state the obvious here, but make sure you're reading OOC notes and all that. This role does not give you any special protections from the rules. Only abduct people who seem like they'd be cool with it.))

- -Your mission is to travel out into space to retrieve individuals to experiment upon.

- -Just what experiments you do are up to you, thought it should be noted, we can't do experiments on corpses, so you should be careful not to kill anyone in the process of acquiring your subject. Needless killing is grounds for termination from the organization.

- -The experimentation process however can be fatal if necessary, so long as we get good data. ((And the person's cool with it OOCly))

- -You will find that the ship is equipped with transporter technology. There are teleporters to the outside world on both the port and starboard sides. Each of the experimentation chambers is also outfitted with an advanced translocator device that is linked to its given room. You will want to ensure that you take a translocator device with you BEFORE you leave the ship, as there will be no other way for you to return without assistance.

- -Your translocator device is arguably your most critical piece of equipment, and it is imperative that you not lose it, as possessing it would allow outsiders access to the ship.

- -The center of the ship sports the shield generator, as well as the chemical and resleeving labs. It would be wise to ensure that if your experiments are fatal, to scan the mind and body of your subject before you proceed, so we can ensure that we can return the subjects to where we find them.

- -To the starboard and port sides you will find a total of six experimentation rooms, and two transporter rooms, as well as two engine rooms at the aft.

- -The aft center of the ship is the common equipment room. The items here are limited in quantity, so only take what you intend to use in your given task.

- -At the fore of the vessel are the briefing rooms, and the bridge.

- -Lastly, there are camera uplink consoles scattered around the ship. It is recommended that you take stock of where potential targets are before you depart.

- -You will find a dispenser within the room you started in which contains some basic equipment that you may wish to take with you. Please do not loot the dispensers from other rooms unless the one assigned to it is okay with it.

- -And finally, to leave this room, you will want to put your ID on the table, and pray to the corporate overlords to add access 777 to it."} - -/obj/machinery/porta_turret/alien/abductor - name = "anti-personnel turret" - installation = /obj/item/weapon/gun/energy/gun/taser - lethal = FALSE - health = 500 // Sturdier turrets, non-lethal, for capturing people alive - maxhealth = 500 - req_one_access = list(777) // The code I've been using for events, same as the doors - -/obj/machinery/porta_turret/alien/abductor/ion - name = "anti-personnel turret" - installation = /obj/item/weapon/gun/energy/ionrifle/weak - lethal = TRUE - -/obj/item/device/perfect_tele/frontier/unknown/abductor/one - loc_network = "abd1" -/obj/item/device/perfect_tele/frontier/unknown/abductor/two - loc_network = "abd2" -/obj/item/device/perfect_tele/frontier/unknown/abductor/three - loc_network = "abd3" -/obj/item/device/perfect_tele/frontier/unknown/abductor/four - loc_network = "abd4" -/obj/item/device/perfect_tele/frontier/unknown/abductor/five - loc_network = "abd5" -/obj/item/device/perfect_tele/frontier/unknown/abductor/six - loc_network = "abd6" - -/obj/machinery/power/rtg/abductor/built/abductor - name = "Void Core" - power_gen = 5000000 - +// Compile in the map for CI testing if we're testing compileability of all the maps +#if MAP_TEST +#include "abductor.dmm" +#endif + +// Map template for spawning the shuttle +/datum/map_template/om_ships/abductor + name = "OM Ship - Abductor Ship (New Z)" + desc = "A ship for spooky aliens to kidnap farmers and unfortunate spacemen." + mappath = 'abductor.dmm' + +/area/abductor + requires_power = 0 + icon_state = "purple" + +/area/abductor/ + name = "Abductor Ship" + flags = RAD_SHIELDED | BLUE_SHIELDED + +/area/abductor/interior + name = "Abductor Ship Interior" + +/area/abductor/exterior + name = "Abductor Ship Exterior" + has_gravity = 0 + +// The 'Abductor Ship' +/obj/effect/overmap/visitable/ship/abductor + name = "spacecraft" + desc = "Spacefaring vessel." + icon_state = "shuttle" + moving_state = "shuttle" + scanner_name = "unknown vessel" + scanner_desc = @{"[i]Registration[/i]: Unknown +[i]Class[/i]: Corvette +[i]Transponder[/i]: No transponder detected." +[b]Notice[/b]: Deep scans detect unknown power signatures, and onboard transporter technology."} + color = "#11414c" //STEALTH + vessel_mass = 8000 + vessel_size = SHIP_SIZE_SMALL + initial_generic_waypoints = list("abductor_port", "abductor_starboard") + fore_dir = NORTH + +/obj/item/weapon/paper/alien/abductor + name = "Read Me" + info = {"((Just to state the obvious here, but make sure you're reading OOC notes and all that. This role does not give you any special protections from the rules. Only abduct people who seem like they'd be cool with it.))

+ +Your mission is to travel out into space to retrieve individuals to experiment upon.

+ +Just what experiments you do are up to you, thought it should be noted, we can't do experiments on corpses, so you should be careful not to kill anyone in the process of acquiring your subject. Needless killing is grounds for termination from the organization.

+ +The experimentation process however can be fatal if necessary, so long as we get good data. ((And the person's cool with it OOCly))

+ +You will find that the ship is equipped with transporter technology. There are teleporters to the outside world on both the port and starboard sides. Each of the experimentation chambers is also outfitted with an advanced translocator device that is linked to its given room. You will want to ensure that you take a translocator device with you BEFORE you leave the ship, as there will be no other way for you to return without assistance.

+ +Your translocator device is arguably your most critical piece of equipment, and it is imperative that you not lose it, as possessing it would allow outsiders access to the ship.

+ +The center of the ship sports the shield generator, as well as the chemical and resleeving labs. It would be wise to ensure that if your experiments are fatal, to scan the mind and body of your subject before you proceed, so we can ensure that we can return the subjects to where we find them.

+ +To the starboard and port sides you will find a total of six experimentation rooms, and two transporter rooms, as well as two engine rooms at the aft.

+ +The aft center of the ship is the common equipment room. The items here are limited in quantity, so only take what you intend to use in your given task.

+ +At the fore of the vessel are the briefing rooms, and the bridge.

+ +Lastly, there are camera uplink consoles scattered around the ship. It is recommended that you take stock of where potential targets are before you depart.

+ +You will find a dispenser within the room you started in which contains some basic equipment that you may wish to take with you. Please do not loot the dispensers from other rooms unless the one assigned to it is okay with it.

+ +And finally, to leave this room, you will want to put your ID on the table, and pray to the corporate overlords to add access 777 to it."} + +/obj/machinery/porta_turret/alien/abductor + name = "anti-personnel turret" + installation = /obj/item/weapon/gun/energy/gun/taser + lethal = FALSE + health = 500 // Sturdier turrets, non-lethal, for capturing people alive + maxhealth = 500 + req_one_access = list(777) // The code I've been using for events, same as the doors + +/obj/machinery/porta_turret/alien/abductor/ion + name = "anti-personnel turret" + installation = /obj/item/weapon/gun/energy/ionrifle/weak + lethal = TRUE + +/obj/item/device/perfect_tele/frontier/unknown/abductor/one + loc_network = "abd1" +/obj/item/device/perfect_tele/frontier/unknown/abductor/two + loc_network = "abd2" +/obj/item/device/perfect_tele/frontier/unknown/abductor/three + loc_network = "abd3" +/obj/item/device/perfect_tele/frontier/unknown/abductor/four + loc_network = "abd4" +/obj/item/device/perfect_tele/frontier/unknown/abductor/five + loc_network = "abd5" +/obj/item/device/perfect_tele/frontier/unknown/abductor/six + loc_network = "abd6" + +/obj/machinery/power/rtg/abductor/built/abductor + name = "Void Core" + power_gen = 5000000 + diff --git a/maps/southern_cross/overmap/sectors.dm b/maps/southern_cross/overmap/sectors.dm index 96cdabcbba..58b234f308 100644 --- a/maps/southern_cross/overmap/sectors.dm +++ b/maps/southern_cross/overmap/sectors.dm @@ -66,7 +66,7 @@ "d2_near_sw", "d3_near_w", "d3_near_se", - "stargazer_dock" + "baby_mammoth_dock" ) /obj/effect/overmap/visitable/planet/Sif/Initialize() diff --git a/maps/southern_cross/southern_cross-2.dmm b/maps/southern_cross/southern_cross-2.dmm index be1d1c8dc2..4eb92dfd3b 100644 --- a/maps/southern_cross/southern_cross-2.dmm +++ b/maps/southern_cross/southern_cross-2.dmm @@ -53,7 +53,7 @@ "aba" = (/obj/structure/table/standard,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/industrial/outline/grey,/obj/item/device/binoculars{pixel_y = 5},/turf/simulated/floor/tiled/dark,/area/security/armoury) "abb" = (/obj/structure/table/standard,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/storage/box/handcuffs{pixel_x = 8; pixel_y = 6},/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/armoury) "abc" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/security/armoury) -"abd" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock{name = "Unisex Restrooms"},/turf/space,/turf/simulated/floor/tiled/steel_grid,/area/crew_quarters/barrestroom) +"abd" = (/turf/space,/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock{name = "Unisex Restrooms"},/turf/simulated/floor/tiled/steel_grid,/area/crew_quarters/barrestroom) "abe" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/dark,/area/security/tactical) "abf" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/obj/structure/table/steel,/obj/item/weapon/storage/firstaid/combat,/turf/simulated/floor/tiled/dark,/area/security/tactical) "abg" = (/obj/effect/landmark{name = "carpspawn"},/obj/structure/lattice,/obj/machinery/shield_diffuser,/turf/space,/area/space) @@ -174,6 +174,7 @@ "adr" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor/tiled,/area/security/main) "ads" = (/obj/structure/table/standard,/obj/item/weapon/folder/red,/obj/item/clothing/glasses/hud/security,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/red,/area/security/main) "adt" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor/tiled,/area/security/main) +"adu" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/obj/machinery/newscaster{pixel_y = 30},/obj/machinery/libraryscanner,/turf/simulated/floor/wood,/area/library) "adv" = (/obj/structure/bed/padded,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/obj/machinery/flasher{id = "Cell 2"; pixel_x = -28},/turf/simulated/floor/tiled,/area/security/brig) "adw" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/security/brig) "adx" = (/obj/structure/closet/secure_closet/brig{id = "Cell 2"; name = "Cell 2 Locker"},/obj/machinery/camera/network/prison{c_tag = "SEC - Brig Cell 2"; dir = 8},/obj/item/device/radio/headset,/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/red/border{dir = 4},/turf/simulated/floor/tiled,/area/security/brig) @@ -330,6 +331,7 @@ "ags" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 6},/turf/simulated/floor/tiled,/area/security/security_hallway) "agt" = (/obj/structure/lattice,/obj/structure/grille/broken,/obj/item/stack/rods,/turf/space,/area/space) "agu" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/security/security_hallway) +"agv" = (/obj/structure/bookcase/bookcart,/turf/simulated/floor/wood,/area/library) "agw" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/extinguisher_cabinet{pixel_y = 30},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 4},/turf/simulated/floor/tiled,/area/security/security_hallway) "agx" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/turf/simulated/floor/tiled,/area/security/security_hallway) "agy" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/corner/red/bordercorner{dir = 4},/turf/simulated/floor/tiled,/area/security/security_hallway) @@ -7117,7 +7119,6 @@ "xlF" = (/turf/simulated/wall/r_wall,/area/medical/patient_b) "xnj" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/airlock/glass_external{frequency = null; icon_state = "door_locked"; locked = 1; name = "Dock One Internal Airlock"; req_access = list(13)},/obj/effect/map_helper/airlock/door/int_door,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D1) "xom" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/obj/machinery/camera/network/medbay{c_tag = "MED - Patient Hallway Starboard"; dir = 8},/turf/simulated/floor/tiled/white,/area/medical/patient_wing) -"xoy" = (/obj/structure/bookcase/bookcart,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/obj/machinery/newscaster{pixel_y = 30},/turf/simulated/floor/wood,/area/library) "xqf" = (/obj/effect/floor_decal/industrial/warning/cee{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1},/obj/machinery/airlock_sensor{dir = 1; id_tag = null; pixel_y = -27},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "d2_w1_c_airlock"; pixel_y = 27; req_one_access = list(13)},/obj/effect/map_helper/airlock/sensor/chamber_sensor,/obj/effect/map_helper/airlock/atmos/chamber_pump,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "xqV" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/firealarm{pixel_y = 24},/obj/machinery/light{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/paleblue/border{dir = 4},/turf/simulated/floor/tiled,/area/medical/surgeryobs) "xrx" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/chapel/main) @@ -7291,8 +7292,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaabYZcNBgtwemneGFhyffMShyfhyfwQEqTWeuBgLDmoHmaCokunMnpPUrAmmKsgmIvbqfIxcsmmYLmnKcsnkLllgmabdcspcsqcsrctBcsYcsYcsYcsYcsYcsYcsYcsYcsYcsYcoJctactbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaafaafaafqSAsfvcqYiJTpnBlzdhBtfVAvVVnTMlKQlLjuRkjiLvPrfoFhKFqnAdmmlbWpPcctxsiqpAGcsLcsMgNteHGcsNctBuAZcsOcsPctBcsYcsYcsYcsYcsYcsYcsYcsYcsYcsYcsZctactbaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaabYZfGWqmtiJTlcelzddUesAHiKnkttlzdnSdiJTcKudywrAKrAKrAKrAKrAKrAKrAKqBgnZyctuctxctxctxctxddHctBctBctActBctMctMctMctMctMctMctMctJctKctLctMctNcvjaaaaafaafaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaabYZiKAcdMiJTiFylzdhIhxDllzdxPelzdsCEiJTiImtZCwLhjjVxoyrAKvjZfAHrAKopMpAGjIMcuYcurnAIcGMcuncuocGMcuqcurcuscutcuucuvgVltkzcuscuwcuxcuycuzcuAcvjaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaagaaaaaaaaaaaabYZqxacaiiJTfDfnDHnDHsfilzdtwonDHwfViJTuqRuwjduUuwjpVGidPmqZjnXrAKcsMvDlmNUcuYcGMjnlcumliqdlPcwOcwPcGMcuscvbcvccvdcvecvfcuscvgviVcvhiKCcvicvjaaaaaaaaaaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaabYZiKAcdMiJTiFylzdhIhxDllzdxPelzdsCEiJTiImtZCwLhjjVadurAKvjZfAHrAKopMpAGjIMcuYcurnAIcGMcuncuocGMcuqcurcuscutcuucuvgVltkzcuscuwcuxcuycuzcuAcvjaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaagaaaaaaaaaaaabYZqxacaiiJTfDfnDHnDHsfilzdtwonDHwfViJTuqRuwjduUagvpVGidPmqZjnXrAKcsMvDlmNUcuYcGMjnlcumliqdlPcwOcwPcGMcuscvbcvccvdcvecvfcuscvgviVcvhiKCcvicvjaaaaaaaaaaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabguZKaafaafaafaafaafqSAqxajiSiJTdEoiJTiJTuRkePpuRkdEoiJTiJTgkhuwjgsPsPiwLntfikVLgPhtficNkvIXcvwczDcvyrRDuxrcuncuncvzrpncGMcwVcvBcvCcvDtYkbXwcusbXAcvGcvHtkacvIcvjaaaaaaaaaaaaaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaagaaaaaaaaaqSAqSAqxarAKubUhMBpOMhTsuETuwjpISiCyqzurPKuwjuwjiniuhsitKrAKtfitfirAKftvvDlwzPczDcwjoJicwjcuntdJcwjvzxcwkpcDcwocwocwncwocwpcuscwqcwrcwslICcwtcvjaaaaaaaaaaaaaaaaagaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaqSAkoFqxarAKiAwiGfjlKxchuADuwjxteuwjuwjuwjuwjuwjuwjrBvkGfkLouwjnpfkYAncmvDlvIjcuYcGMjnlcumclNcuncwOcwPcvNcuscwVcwVcwTcwVcwVcusczDczDczDcuzcwZcxbcxbcxbaafaafaafaafuZKaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/submaps/admin_use_vr/kk_mercship.dmm b/maps/submaps/admin_use_vr/kk_mercship.dmm index b5279064be..47817bb21f 100644 --- a/maps/submaps/admin_use_vr/kk_mercship.dmm +++ b/maps/submaps/admin_use_vr/kk_mercship.dmm @@ -276,10 +276,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/armoury_st) -"bg" = ( -/turf/space, -/turf/space, -/area/space) "bh" = ( /obj/effect/floor_decal/techfloor{ dir = 8 @@ -562,7 +558,7 @@ /turf/simulated/floor/reinforced, /area/ship/manta/hangar) "ch" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/holding) "cl" = ( /obj/effect/shuttle_landmark/premade/manta_ship_near_aft, @@ -628,7 +624,7 @@ /area/ship/manta/bridge) "cA" = ( /obj/machinery/atmospherics/pipe/simple/visible, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/radiator_star) "cG" = ( /obj/structure/cable/orange{ @@ -818,7 +814,7 @@ /turf/simulated/floor/reinforced, /area/ship/manta/hangar) "dl" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/med) "dn" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -963,7 +959,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ dir = 8 }, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/shuttle/manta_ship_boat) "ee" = ( /obj/effect/floor_decal/techfloor{ @@ -1126,13 +1122,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/hallways_port) -"fh" = ( -/obj/item/device/perfect_tele_beacon/stationary{ - tele_name = "Mercenary Cruiser Teleporter Room"; - tele_network = "syndicate" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/manta/teleporter) "fj" = ( /obj/effect/floor_decal/techfloor{ dir = 4 @@ -1141,7 +1130,7 @@ /area/ship/manta/teleporter) "fp" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/fuel, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/shuttle/manta_ship_boat) "fr" = ( /obj/item/modular_computer/console/preset/mercenary{ @@ -1322,7 +1311,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/recreation) "ge" = ( -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/barracks/bed_1) "gf" = ( /obj/effect/floor_decal/techfloor/corner{ @@ -1429,7 +1418,7 @@ /obj/structure/sign/department/telecoms{ name = "TELEPORTER" }, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/bridge) "gJ" = ( /obj/effect/floor_decal/techfloor{ @@ -1556,7 +1545,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/bridge) "ht" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/hallways_port) "hu" = ( /obj/structure/catwalk, @@ -1687,6 +1676,9 @@ /obj/machinery/light/no_nightshift{ dir = 8 }, +/obj/item/weapon/gun/projectile/automatic/c20r, +/obj/item/ammo_magazine/m10mm, +/obj/item/ammo_magazine/m10mm, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/armoury_st) "hV" = ( @@ -2028,7 +2020,7 @@ /turf/simulated/floor/reinforced, /area/shuttle/manta_ship_boat) "je" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/shuttle/manta_ship_boat) "jg" = ( /obj/machinery/power/apc/hyper{ @@ -2436,35 +2428,36 @@ /obj/effect/floor_decal/techfloor{ dir = 8 }, +/obj/item/weapon/gun/projectile/automatic/c20r, +/obj/item/ammo_magazine/m10mm, +/obj/item/ammo_magazine/m10mm, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/armoury_st) "lk" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 9 }, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/radiator_port) "lm" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/recreation) "lo" = ( -/obj/structure/table/rack, -/obj/item/weapon/gun/projectile/silenced, -/obj/item/weapon/gun/projectile/silenced, -/obj/item/ammo_magazine/m45, -/obj/item/ammo_magazine/m45, -/obj/item/ammo_magazine/m45/ap, -/obj/item/ammo_magazine/m45/hp, -/obj/item/ammo_magazine/m45/rubber, /obj/effect/floor_decal/techfloor{ dir = 4 }, -/obj/item/weapon/gun/projectile/sec/wood, -/obj/item/weapon/gun/projectile/sec/wood, +/obj/structure/table/rack, +/obj/item/weapon/gun/projectile/automatic/sts35, +/obj/item/weapon/gun/projectile/automatic/sts35, +/obj/item/ammo_magazine/m545, +/obj/item/ammo_magazine/m545, +/obj/item/ammo_magazine/m545, +/obj/item/ammo_magazine/m545, +/obj/item/ammo_magazine/m545/ap, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/armoury_st) "lq" = ( -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/recreation) "lw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ @@ -2768,7 +2761,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/bridge) "mT" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/hallways_star) "mW" = ( /obj/structure/cable{ @@ -2796,7 +2789,7 @@ /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 10 }, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/radiator_port) "na" = ( /obj/structure/catwalk, @@ -2887,7 +2880,7 @@ /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 6 }, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/radiator_star) "nu" = ( /obj/structure/cable{ @@ -3056,7 +3049,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/bridge) "oc" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/mech_bay) "oe" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -3123,7 +3116,7 @@ /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 4 }, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/radiator_port) "ot" = ( /obj/structure/catwalk, @@ -3296,7 +3289,7 @@ /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 4 }, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/radiator_star) "oY" = ( /obj/machinery/scale, @@ -3340,7 +3333,7 @@ /turf/simulated/floor/plating, /area/ship/manta/radiator_port) "py" = ( -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/barracks/bed_2) "pA" = ( /obj/structure/bed/chair/bay/shuttle{ @@ -3359,7 +3352,7 @@ /obj/machinery/atmospherics/pipe/simple/visible{ dir = 5 }, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/radiator_port) "pD" = ( /obj/machinery/atmospherics/pipe/simple/visible{ @@ -3460,7 +3453,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ dir = 4 }, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/shuttle/manta_ship_boat) "qg" = ( /obj/machinery/atmospherics/unary/engine{ @@ -3558,7 +3551,7 @@ /obj/machinery/atmospherics/pipe/simple/visible{ dir = 9 }, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/radiator_star) "qH" = ( /obj/machinery/alarm/alarms_hidden{ @@ -3614,7 +3607,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/hallways_aft) "qQ" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/radiator_star) "qR" = ( /obj/machinery/bodyscanner{ @@ -3718,7 +3711,7 @@ /turf/simulated/floor/plating, /area/ship/manta/radiator_port) "rA" = ( -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/radiator_port) "rC" = ( /obj/structure/cable/orange{ @@ -3771,7 +3764,7 @@ /turf/simulated/floor/plating, /area/ship/manta/atmos) "rJ" = ( -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/dock_star) "rK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -3781,7 +3774,7 @@ /turf/simulated/floor/plating, /area/ship/manta/atmos) "rM" = ( -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/med) "rQ" = ( /obj/structure/bed/chair/bay/comfy/red, @@ -3888,7 +3881,7 @@ /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 5 }, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/radiator_star) "su" = ( /obj/structure/bed/chair/comfy/black{ @@ -3950,7 +3943,7 @@ /turf/simulated/floor/plating, /area/ship/manta/radiator_port) "sN" = ( -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/bridge) "sS" = ( /obj/structure/cable/orange{ @@ -3980,7 +3973,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/engineering) "sY" = ( /obj/effect/floor_decal/techfloor{ @@ -4210,13 +4203,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/manta_ship_boat) -"ui" = ( -/obj/item/device/perfect_tele_beacon/stationary{ - tele_name = "Mercenary Boarding Craft"; - tele_network = "syndicate" - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/manta_ship_boat) "uk" = ( /obj/machinery/door/firedoor/border_only, /obj/structure/grille, @@ -4278,7 +4264,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/radiator_port) "uC" = ( /obj/effect/floor_decal/industrial/warning/corner{ @@ -4946,7 +4932,7 @@ /area/ship/manta/engineering) "xc" = ( /obj/structure/sign/nosmoking_1, -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/engine) "xd" = ( /obj/machinery/atmospherics/pipe/tank/air{ @@ -5561,7 +5547,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/hallways_port) "zl" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/armoury_as) "zm" = ( /obj/machinery/door/airlock/vault{ @@ -5613,9 +5599,6 @@ "zv" = ( /obj/structure/table/rack, /obj/item/weapon/gun/energy/plasmastun, -/obj/item/weapon/gun/energy/plasmastun, -/obj/item/weapon/gun/energy/plasmastun, -/obj/item/weapon/gun/energy/plasmastun, /obj/effect/floor_decal/techfloor{ dir = 8 }, @@ -5627,6 +5610,9 @@ /obj/item/weapon/cell/device/weapon, /obj/item/weapon/cell/device/weapon, /obj/item/weapon/cell/device/weapon, +/obj/item/weapon/gun/energy/netgun, +/obj/item/weapon/gun/energy/netgun, +/obj/item/weapon/gun/energy/plasmastun, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/armoury_st) "zx" = ( @@ -5685,7 +5671,7 @@ /area/ship/manta/armoury_st) "zE" = ( /obj/machinery/atmospherics/pipe/simple/visible, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/radiator_port) "zH" = ( /obj/structure/table/rack, @@ -5722,7 +5708,7 @@ /turf/simulated/floor/plating, /area/ship/manta/engine) "zR" = ( -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/engineering) "zS" = ( /obj/structure/bed/chair/comfy/black{ @@ -5980,7 +5966,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/atmos) "Bw" = ( /obj/effect/floor_decal/techfloor{ @@ -6309,7 +6295,7 @@ /obj/machinery/atmospherics/pipe/simple/visible{ dir = 5 }, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/dock_port) "Dg" = ( /obj/structure/table/rack, @@ -6407,10 +6393,6 @@ /area/ship/manta/radiator_star) "Du" = ( /obj/structure/table/rack, -/obj/item/weapon/gun/energy/netgun, -/obj/item/weapon/gun/energy/netgun, -/obj/item/weapon/gun/energy/netgun, -/obj/item/weapon/gun/energy/netgun, /obj/effect/floor_decal/techfloor{ dir = 8 }, @@ -6525,7 +6507,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/hallways_star) "DY" = ( -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/teleporter) "DZ" = ( /obj/structure/flora/pottedplant/large, @@ -6555,7 +6537,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ dir = 6 }, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/shuttle/manta_ship_boat) "Eh" = ( /obj/effect/floor_decal/techfloor, @@ -6638,7 +6620,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/hallways_aft) "EA" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/hallways_aft) "EE" = ( /obj/structure/table/rack, @@ -7033,7 +7015,7 @@ /obj/machinery/atmospherics/pipe/simple/visible{ dir = 9 }, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/dock_star) "Ha" = ( /obj/machinery/door/airlock/external, @@ -7311,7 +7293,7 @@ /area/ship/manta/bridge) "IE" = ( /obj/machinery/atmospherics/pipe/manifold/visible, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/dock_port) "IF" = ( /obj/machinery/computer/ship/engines{ @@ -7396,7 +7378,7 @@ /turf/simulated/floor/wood, /area/ship/manta/barracks) "IV" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/commander) "Jb" = ( /obj/structure/table/rack, @@ -7620,9 +7602,6 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/bridge) "Kd" = ( -/mob/living/simple_mob/animal/passive/fox/syndicate{ - name = "Rick" - }, /obj/structure/dogbed, /obj/machinery/alarm/alarms_hidden{ pixel_y = 26 @@ -7630,6 +7609,9 @@ /obj/machinery/light/no_nightshift{ dir = 1 }, +/mob/living/simple_mob/animal/passive/fox/syndicate{ + name = "Rick" + }, /turf/simulated/floor/wood, /area/ship/manta/commander) "Ki" = ( @@ -7713,7 +7695,7 @@ /obj/machinery/atmospherics/pipe/simple/visible{ dir = 6 }, -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/dock_star) "KA" = ( /obj/structure/table/rack/shelf/steel, @@ -7769,7 +7751,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/dock_port) "KJ" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/teleporter) "KL" = ( /obj/effect/floor_decal/techfloor{ @@ -7882,7 +7864,7 @@ /area/ship/manta/bridge) "Lm" = ( /obj/machinery/atmospherics/pipe/manifold/visible, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/dock_star) "Lp" = ( /obj/effect/floor_decal/industrial/warning/corner{ @@ -8017,7 +7999,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/dock_star) "LZ" = ( -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/hallways_star) "Mb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -8052,7 +8034,7 @@ /area/ship/manta/hallways_aft) "Mg" = ( /obj/structure/sign/nosmoking_1, -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/engineering) "Mh" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ @@ -8379,7 +8361,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/engineering) "NQ" = ( -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/barracks) "NT" = ( /obj/effect/floor_decal/techfloor/corner{ @@ -8440,7 +8422,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/armoury_st) "Oq" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/radiator_port) "Or" = ( /obj/machinery/chemical_dispenser/bar_coffee/full{ @@ -8453,6 +8435,9 @@ /turf/simulated/floor/wood, /area/ship/manta/barracks) "Ou" = ( +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, /obj/structure/table/rack, /obj/item/device/camera_film, /obj/item/device/camera_film, @@ -8466,9 +8451,6 @@ /obj/item/device/camera, /obj/item/device/camera, /obj/item/device/camera, -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/armoury_st) "Ox" = ( @@ -8530,7 +8512,7 @@ /area/ship/manta/holding) "OO" = ( /obj/structure/sign/warning/radioactive, -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/engineering) "OP" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ @@ -8655,7 +8637,7 @@ /turf/simulated/floor/tiled/dark, /area/ship/manta/holding) "Pn" = ( -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/hangar) "Py" = ( /obj/machinery/door/blast/shutters{ @@ -8691,7 +8673,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/hallways_aft) "PK" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/dock_star) "PL" = ( /obj/machinery/door/blast/shutters{ @@ -8942,7 +8924,7 @@ /turf/simulated/floor/reinforced/airless, /area/ship/manta/radiator_star) "QT" = ( -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/radiator_star) "QU" = ( /obj/effect/floor_decal/industrial/warning{ @@ -9448,6 +9430,9 @@ /obj/effect/floor_decal/techfloor{ dir = 4 }, +/obj/item/weapon/plastique, +/obj/item/weapon/plastique, +/obj/item/weapon/plastique, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/recreation) "Tn" = ( @@ -9602,7 +9587,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/dock_star) "Ue" = ( -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/engine) "Ug" = ( /obj/machinery/vending/wallmed1/public{ @@ -9795,7 +9780,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ dir = 10 }, -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/shuttle/manta_ship_boat) "Va" = ( /obj/machinery/atmospherics/pipe/tank/phoron, @@ -9839,25 +9824,33 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/armoury_as) "Vp" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/hangar) "Vr" = ( /obj/structure/table/rack, -/obj/item/ammo_magazine/m545, -/obj/item/ammo_magazine/m545, -/obj/item/ammo_magazine/m545, -/obj/item/ammo_magazine/m545, -/obj/item/ammo_magazine/m545, -/obj/item/ammo_magazine/m545, -/obj/item/ammo_magazine/m545/ap, -/obj/item/ammo_magazine/m545/ap, -/obj/item/ammo_magazine/m545/ap, -/obj/item/ammo_magazine/m545/ap, -/obj/item/weapon/gun/projectile/automatic/sts35, -/obj/item/weapon/gun/projectile/automatic/sts35, /obj/effect/floor_decal/techfloor{ dir = 4 }, +/obj/item/weapon/gun/projectile/automatic/bullpup, +/obj/item/weapon/gun/projectile/automatic/bullpup, +/obj/item/weapon/gun/projectile/automatic/bullpup, +/obj/item/weapon/gun/projectile/automatic/bullpup, +/obj/item/ammo_magazine/m762m, +/obj/item/ammo_magazine/m762m, +/obj/item/ammo_magazine/m762m, +/obj/item/ammo_magazine/m762m, +/obj/item/ammo_magazine/m762m, +/obj/item/ammo_magazine/m762m, +/obj/item/ammo_magazine/m762m, +/obj/item/ammo_magazine/m762m, +/obj/item/ammo_magazine/m762m/ap, +/obj/item/ammo_magazine/m762m/ap, +/obj/item/ammo_magazine/m762m/ap, +/obj/item/ammo_magazine/m762m/ap, +/obj/item/ammo_magazine/m762m, +/obj/item/ammo_magazine/m762m, +/obj/item/ammo_magazine/m762m, +/obj/item/ammo_magazine/m762m, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/armoury_as) "Vx" = ( @@ -9942,7 +9935,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/radiator_star) "VL" = ( /obj/structure/table/rack, @@ -10080,7 +10073,7 @@ /turf/simulated/floor/wood, /area/ship/manta/barracks) "WF" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/dock_port) "WN" = ( /obj/machinery/door/firedoor/multi_tile, @@ -10240,7 +10233,7 @@ /obj/machinery/atmospherics/pipe/simple/visible{ dir = 10 }, -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/dock_port) "Xx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ @@ -10316,7 +10309,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/barracks) "XE" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/engine) "XF" = ( /obj/structure/cable/orange{ @@ -10669,7 +10662,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/teleporter) "Zr" = ( -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/hallways_aft) "Zv" = ( /obj/machinery/door/firedoor, @@ -10688,7 +10681,7 @@ /turf/simulated/floor/tiled/dark, /area/ship/manta/holding) "Zy" = ( -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/dock_port) "Zz" = ( /obj/machinery/atmospherics/pipe/manifold/visible/black{ @@ -10778,7 +10771,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/recreation) "ZQ" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/bridge) "ZS" = ( /obj/structure/catwalk, @@ -10788,10 +10781,10 @@ /turf/simulated/floor/plating, /area/ship/manta/radiator_port) "ZT" = ( -/turf/simulated/wall/rplastihull, +/turf/simulated/wall/rshull, /area/ship/manta/armoury_st) "ZU" = ( -/turf/simulated/wall/plastihull, +/turf/simulated/wall/shull, /area/ship/manta/atmos) "ZV" = ( /obj/structure/table/woodentable, @@ -16633,10 +16626,10 @@ yz yz yz yz -bg -bg -bg -bg +yz +yz +yz +yz yz yz yz @@ -16910,10 +16903,6 @@ yz yz yz yz -bg -bg -bg -bg yz yz yz @@ -16924,10 +16913,14 @@ yz yz yz yz -bg -bg -bg -bg +yz +yz +yz +yz +yz +yz +yz +yz yz yz yz @@ -19703,7 +19696,7 @@ bR HS DY RO -fh +Fd QU uc KJ @@ -20824,7 +20817,7 @@ jE lZ pH pH -ui +pH pH AD En diff --git a/maps/submaps/engine_submaps/engine.dm b/maps/submaps/engine_submaps/engine.dm index 02cbd71ebb..74db547fb2 100644 --- a/maps/submaps/engine_submaps/engine.dm +++ b/maps/submaps/engine_submaps/engine.dm @@ -18,7 +18,7 @@ /obj/effect/landmark/engine_loader/proc/annihilate_bounds() var/deleted_atoms = 0 - admin_notice("Annihilating objects in engine loading locatation.", R_DEBUG) + admin_notice("Annihilating objects in engine loading location.", R_DEBUG) var/list/turfs_to_clean = get_turfs_to_clean() if(turfs_to_clean.len) for(var/x in 1 to 2) // Requires two passes to get everything. @@ -26,4 +26,4 @@ for(var/atom/movable/AM in T) ++deleted_atoms qdel(AM) - admin_notice("Annihilated [deleted_atoms] objects.", R_DEBUG) \ No newline at end of file + admin_notice("Annihilated [deleted_atoms] objects.", R_DEBUG) diff --git a/maps/tether/tether-01-surface1.dmm b/maps/tether/tether-01-surface1.dmm index 4dc24bf59a..63369690f2 100644 --- a/maps/tether/tether-01-surface1.dmm +++ b/maps/tether/tether-01-surface1.dmm @@ -5790,6 +5790,7 @@ /obj/random/junk, /obj/random/junk, /obj/random/tool, +/obj/effect/landmark/teleplumb_exit, /turf/simulated/floor/plating, /area/maintenance/lower/trash_pit) "ajS" = ( @@ -8132,6 +8133,12 @@ dir = 4 }, /obj/random/junk, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/plating, /area/maintenance/lowmedbaymaint) "anG" = ( @@ -9631,13 +9638,6 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/plating, /area/maintenance/lower/vacant_site) -"aqk" = ( -/obj/structure/catwalk, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/turf/simulated/floor/plating, -/area/maintenance/lower/vacant_site) "aql" = ( /obj/structure/catwalk, /turf/simulated/floor/plating, @@ -16096,14 +16096,14 @@ /obj/effect/floor_decal/corner/paleblue/bordercorner2{ dir = 6 }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, /obj/machinery/power/apc{ name = "south bump"; pixel_y = -28; req_access = list(67) }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, /obj/structure/cable/green{ d2 = 8; icon_state = "0-8" @@ -16434,7 +16434,11 @@ /turf/simulated/floor/plating, /area/maintenance/lower/research) "aAG" = ( -/turf/simulated/mineral, +/obj/structure/railing, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, /area/maintenance/lowmedbaymaint) "aAH" = ( /obj/structure/cable/green{ @@ -16442,8 +16446,13 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, /turf/simulated/floor/plating, /area/maintenance/lowmedbaymaint) "aAI" = ( @@ -16576,15 +16585,18 @@ d2 = 4; icon_state = "2-4" }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_y = 28 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, /turf/simulated/floor, /area/maintenance/lowmedbaymaint) "aAX" = ( -/obj/structure/cable/green{ - icon_state = "16-0" - }, -/obj/structure/cable/green{ - icon_state = "0-8" - }, /obj/structure/cable/green{ d1 = 1; d2 = 8; @@ -16686,12 +16698,17 @@ d2 = 8; icon_state = "2-8" }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, /area/maintenance/lowmedbaymaint) "aBi" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, +/obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor/plating, /area/maintenance/lowmedbaymaint) "aBj" = ( @@ -16763,24 +16780,41 @@ icon_state = "4-8" }, /turf/simulated/floor/plating, -/area/maintenance/lowmedbaymaint) +/area/maintenance/lower/trash_pit) "aBp" = ( /obj/structure/cable{ icon_state = "4-8" }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, /turf/simulated/floor/plating, -/area/maintenance/lowmedbaymaint) +/area/maintenance/lower/trash_pit) "aBq" = ( /obj/structure/cable{ d1 = 1; d2 = 8; icon_state = "1-8" }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 }, /turf/simulated/floor/plating, -/area/maintenance/lowmedbaymaint) +/area/maintenance/lower/trash_pit) "aBr" = ( /obj/structure/cable{ icon_state = "1-8" @@ -30181,11 +30215,13 @@ /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "bbI" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 4 +/obj/item/weapon/tool/wrench{ + desc = "The lower jaw seems to keep jiggling..."; + name = "loose wrench"; + toolspeed = 3 }, /turf/simulated/floor/plating, -/area/maintenance/substation/SurfMedsubstation) +/area/maintenance/lowmedbaymaint) "bbJ" = ( /obj/structure/cable/green, /obj/structure/cable/green{ @@ -30226,11 +30262,9 @@ /turf/simulated/floor, /area/maintenance/substation/SurfMedsubstation) "bbM" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 4 - }, +/obj/random/cigarettes, /turf/simulated/floor/plating, -/area/maintenance/substation/SurfMedsubstation) +/area/maintenance/lowmedbaymaint) "bbN" = ( /obj/structure/cable/green{ d1 = 4; @@ -30346,6 +30380,10 @@ name = "Powernet Sensor - SurfMed Subgrid"; name_tag = "SurfMed Subgrid" }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25 + }, /turf/simulated/floor, /area/maintenance/substation/SurfMedsubstation) "bbW" = ( @@ -30374,10 +30412,6 @@ d2 = 8; icon_state = "1-8" }, -/obj/machinery/alarm{ - dir = 1; - pixel_y = -25 - }, /obj/machinery/firealarm{ dir = 4; pixel_x = 26 @@ -30385,15 +30419,7 @@ /turf/simulated/floor, /area/maintenance/substation/SurfMedsubstation) "bbZ" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "east bump"; - pixel_x = 24 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, +/obj/random/junk, /turf/simulated/floor/plating, /area/maintenance/lowmedbaymaint) "bca" = ( @@ -31221,9 +31247,19 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"biK" = ( +/obj/structure/barricade/cutout/mime, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) "bqI" = ( /turf/simulated/wall, /area/tether/surfacebase/security/brig/storage) +"bwr" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) "byn" = ( /obj/effect/floor_decal/steeldecal/steel_decals6, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -31289,6 +31325,8 @@ dir = 8; pixel_x = -24 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, /area/maintenance/lowmedbaymaint) "bJz" = ( @@ -31372,6 +31410,28 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) +"bPH" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "bSx" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /obj/effect/floor_decal/steeldecal/steel_decals4{ @@ -31383,6 +31443,27 @@ /obj/effect/landmark/tram, /turf/simulated/floor/tiled, /area/tether/surfacebase/tram) +"bTt" = ( +/obj/structure/table/rack, +/obj/item/weapon/weldingtool/mini{ + desc = "It says 'keychain welder' on the side, but there's no bail to hook it on."; + name = "keychain welder"; + toolspeed = 5 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"bTE" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) +"bWg" = ( +/obj/machinery/vending/loadout/costume{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) "bZC" = ( /turf/simulated/floor/looking_glass, /area/looking_glass/lg_1) @@ -31452,6 +31533,13 @@ }, /turf/simulated/floor/tiled/monofloor, /area/crew_quarters/locker/laundry_arrival) +"cqg" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "cqZ" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -31567,6 +31655,12 @@ }, /turf/simulated/floor/tiled, /area/rnd/hallway) +"cNL" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "cOq" = ( /obj/random/cutout, /turf/simulated/floor/plating, @@ -31608,6 +31702,26 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/lowernorthhall) +"cUh" = ( +/obj/item/weapon/storage/belt/utility{ + desc = "It's full of holes and tears."; + name = "raggedy tool-belt" + }, +/obj/structure/closet/crate/trashcart, +/obj/random/junk, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) +"cUB" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/clownoffice) +"cWJ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) "cWS" = ( /obj/item/device/radio/beacon, /turf/simulated/floor/tiled, @@ -31626,6 +31740,22 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/locker/laundry_arrival) +"cZF" = ( +/obj/structure/catwalk, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/vacant_site) +"cZL" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/random/junk, +/obj/fiftyspawner/glass, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) "ddU" = ( /obj/structure/cable/green{ d1 = 1; @@ -31711,6 +31841,12 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) +"dtz" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) "dxY" = ( /obj/structure/table/rack, /obj/item/clothing/mask/gas, @@ -31818,6 +31954,13 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/lowerhall) +"dNP" = ( +/obj/machinery/door/airlock/silver{ + name = "Clown's Office"; + req_one_access = list(136) + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/clownoffice) "dPC" = ( /obj/structure/sink{ dir = 8; @@ -31828,6 +31971,15 @@ /obj/item/weapon/mop, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/brig) +"dSg" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "dYd" = ( /obj/machinery/firealarm{ layer = 3.3; @@ -31904,6 +32056,13 @@ /obj/item/weapon/soap/nanotrasen, /turf/simulated/floor/tiled/freezer, /area/tether/surfacebase/security/brig/bathroom) +"emK" = ( +/mob/living/simple_mob/animal/passive/mimepet, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) "eow" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -31988,6 +32147,9 @@ }, /turf/simulated/floor/tiled/freezer, /area/tether/surfacebase/security/brig/bathroom) +"eAt" = ( +/turf/simulated/mineral, +/area/maintenance/lower/trash_pit) "eBd" = ( /obj/machinery/cryopod, /obj/effect/floor_decal/corner/lightorange{ @@ -32097,6 +32259,11 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) +"eWR" = ( +/obj/structure/table/rack, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) "fcT" = ( /turf/simulated/floor/looking_glass{ dir = 8 @@ -32107,6 +32274,9 @@ dir = 10 }, /area/looking_glass/lg_1) +"fkx" = ( +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) "fmY" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, @@ -32133,12 +32303,36 @@ /obj/machinery/door/firedoor, /turf/simulated/floor/tiled/freezer, /area/tether/surfacebase/security/brig/bathroom) +"fvL" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) "fyp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 1 }, /turf/simulated/floor/tiled, /area/crew_quarters/locker/laundry_arrival) +"fAv" = ( +/obj/machinery/door/airlock/silver{ + name = "Tomfoolery Closet"; + req_one_access = list(137) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) "fAW" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -32192,6 +32386,35 @@ /obj/machinery/door/firedoor, /turf/simulated/floor, /area/tether/surfacebase/security/gasstorage) +"fFb" = ( +/obj/machinery/fitness/punching_bag/clown, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/clownoffice) +"fFT" = ( +/obj/item/clothing/mask/gas/sexyclown, +/obj/item/toy/figure/clown, +/obj/item/clothing/under/sexyclown, +/obj/item/clothing/shoes/clown_shoes, +/obj/item/weapon/bedsheet/clown, +/obj/item/weapon/cartridge/clown, +/obj/item/weapon/stamp/clown, +/obj/item/weapon/storage/backpack/clown, +/obj/item/weapon/bananapeel, +/obj/item/weapon/reagent_containers/food/snacks/pie, +/obj/item/weapon/pen/crayon/marker/rainbow, +/obj/item/weapon/pen/crayon/rainbow, +/obj/structure/closet/secure_closet{ + desc = "Where the Clown keeps their hooliganisms."; + name = "funny locker"; + req_one_access = list(136) + }, +/turf/simulated/floor/carpet/gaycarpet, +/area/tether/surfacebase/funny/clownoffice) +"fKm" = ( +/obj/random/junk, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "fLB" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 5 @@ -32218,6 +32441,26 @@ }, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/weaponsrange) +"fRJ" = ( +/obj/structure/closet{ + desc = "Dents and old flaky paint blanket this old storage unit."; + name = "old locker" + }, +/obj/item/weapon/storage/toolbox/lunchbox/mars/filled, +/obj/item/weapon/storage/belt/fannypack/red, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) +"fVG" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) +"fWT" = ( +/turf/simulated/wall, +/area/tether/surfacebase/funny/hideyhole) "geO" = ( /obj/machinery/alarm{ dir = 8; @@ -32388,6 +32631,12 @@ /obj/item/weapon/beach_ball/holoball, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/brig/storage) +"guO" = ( +/obj/machinery/vending/sovietsoda{ + dir = 4 + }, +/turf/simulated/floor/carpet/gaycarpet, +/area/tether/surfacebase/funny/clownoffice) "guV" = ( /obj/structure/closet, /obj/random/drinkbottle, @@ -32464,6 +32713,22 @@ "gCa" = ( /turf/simulated/wall/r_wall, /area/tether/surfacebase/security/lowerhall) +"gEn" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/carpet/gaycarpet, +/area/tether/surfacebase/funny/clownoffice) +"gIt" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) "gJK" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -32500,17 +32765,41 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) -"gYx" = ( +"gVF" = ( /obj/machinery/light/small{ dir = 4 }, /turf/simulated/floor/plating, /area/maintenance/lowmedbaymaint) +"gWO" = ( +/obj/structure/table/rack, +/obj/effect/floor_decal/rust, +/obj/item/toy/crossbow, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) +"gYx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "gZN" = ( /turf/simulated/floor/looking_glass{ dir = 9 }, /area/looking_glass/lg_1) +"haw" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) "hco" = ( /obj/machinery/atmospherics/pipe/simple/hidden/green{ dir = 9 @@ -32672,6 +32961,11 @@ /obj/effect/landmark/looking_glass, /turf/simulated/floor/looking_glass/center, /area/looking_glass/lg_1) +"hGe" = ( +/obj/item/toy/plushie/lizardplushie/resh, +/obj/item/toy/syndicateballoon, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/clownoffice) "hMu" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 6 @@ -32834,6 +33128,18 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/tether/surfacebase/lowernortheva) +"iaI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) "icB" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 8 @@ -32856,6 +33162,40 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/rnd/hallway) +<<<<<<< HEAD +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +"iee" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/grey/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/visitor_laundry) +======= +"idk" = ( +/obj/item/weapon/tool/wirecutters{ + desc = "It gets jammed a lot."; + name = "janky wirecutters"; + toolspeed = 2 + }, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) +"iee" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/grey/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/visitor_laundry) +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices "igw" = ( /turf/simulated/floor/tiled, /area/tether/surfacebase/lowernorthhall) @@ -32907,6 +33247,10 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/locker/laundry_arrival) +"iwQ" = ( +/obj/item/weapon/stool, +/turf/simulated/floor/carpet/gaycarpet, +/area/tether/surfacebase/funny/clownoffice) "ixF" = ( /obj/structure/cable/green{ d1 = 1; @@ -32969,6 +33313,10 @@ }, /turf/simulated/floor/tiled/freezer, /area/tether/surfacebase/security/brig/bathroom) +"iWa" = ( +/obj/structure/bed/chair/bar_stool, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) "iWx" = ( /obj/effect/floor_decal/corner/lightorange{ dir = 5 @@ -32993,6 +33341,15 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/public_garden_maintenence) +"jcT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "jio" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -33042,6 +33399,25 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) +"jnN" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) +"joK" = ( +/obj/structure/table/standard{ + name = "plastic table frame" + }, +/obj/item/device/flashlight/lamp/green, +/turf/simulated/floor/carpet/gaycarpet, +/area/tether/surfacebase/funny/clownoffice) "jva" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -33051,6 +33427,21 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/tether/surfacebase/tram) +"jvS" = ( +/obj/effect/floor_decal/rust, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -25 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) "jzW" = ( /obj/structure/bed/chair{ dir = 8 @@ -33127,6 +33518,11 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/lowerhall) +"jOI" = ( +/turf/simulated/wall{ + can_open = 1 + }, +/area/maintenance/lowmedbaymaint) "jPk" = ( /obj/structure/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, @@ -33181,6 +33577,16 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/lowerhall) +"jXR" = ( +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 25 + }, +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/turf/simulated/floor/carpet/gaycarpet, +/area/tether/surfacebase/funny/clownoffice) "kbZ" = ( /obj/effect/floor_decal/borderfloor{ dir = 9 @@ -33281,12 +33687,41 @@ "kmb" = ( /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/brig) +"ksA" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) +"ksK" = ( +/obj/structure/railing, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "kuB" = ( /obj/effect/floor_decal/industrial/warning, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/weaponsrange) +"kuT" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/mimeoffice) "kwN" = ( /obj/effect/floor_decal/borderfloor/shifted{ dir = 1 @@ -33378,6 +33813,15 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/lowerhall) +"kAn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/clownoffice) "kAG" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -33522,6 +33966,42 @@ }, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/brig) +<<<<<<< HEAD +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +"laR" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/grey/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/visitor_laundry) +======= +"laR" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/grey/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/visitor_laundry) +"lbd" = ( +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices "lbu" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, @@ -33607,14 +34087,8 @@ /turf/simulated/floor/plating, /area/maintenance/lower/mining_eva) "lry" = ( -/obj/structure/catwalk, -/obj/structure/closet, -/obj/random/maintenance/clean, -/obj/random/maintenance/cargo, -/obj/random/maintenance/cargo, -/obj/random/drinkbottle, -/turf/simulated/floor/plating, -/area/maintenance/lower/vacant_site) +/turf/simulated/wall, +/area/tether/surfacebase/funny/mimeoffice) "lwL" = ( /obj/machinery/door/airlock/glass_security{ id_tag = "brigouter"; @@ -33673,6 +34147,30 @@ /obj/machinery/holoposter, /turf/simulated/wall, /area/hallway/lower/first_west) +"lBO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) +"lCH" = ( +/obj/structure/table/standard{ + name = "plastic table frame" + }, +/obj/item/inflatable/door, +/obj/machinery/alarm{ + pixel_y = 25 + }, +/turf/simulated/floor/carpet/gaycarpet, +/area/tether/surfacebase/funny/clownoffice) "lDW" = ( /obj/structure/catwalk, /obj/structure/cable{ @@ -33781,6 +34279,10 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) +"lPQ" = ( +/obj/item/stack/cable_coil/random_belt, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "lQu" = ( /obj/item/weapon/reagent_containers/glass/bucket, /obj/structure/table/steel, @@ -33868,6 +34370,12 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/lowernorthhall) +"lVt" = ( +/obj/machinery/vending/coffee{ + dir = 1 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) "lWT" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -33886,10 +34394,26 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"lXE" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) +"meS" = ( +/turf/simulated/floor/carpet/gaycarpet, +/area/tether/surfacebase/funny/clownoffice) "mhu" = ( /obj/structure/closet/secure_closet/brig, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/brig/storage) +"miP" = ( +/obj/item/weapon/bananapeel, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/clownoffice) +"mnN" = ( +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) "mon" = ( /obj/effect/floor_decal/borderfloor{ dir = 6 @@ -33906,6 +34430,10 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) +"mrj" = ( +/obj/machinery/gear_painter, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) "mrO" = ( /obj/effect/floor_decal/corner/lightorange{ dir = 5 @@ -33966,6 +34494,14 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/lowerhall) +"mxi" = ( +/obj/structure/table/alien/blue{ + desc = "Is this imported?"; + name = "obscure table" + }, +/obj/random/drinkbottle, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) "mAR" = ( /obj/structure/cable/green{ d1 = 1; @@ -34186,6 +34722,20 @@ "naC" = ( /turf/simulated/wall/r_wall, /area/medical/virologyisolation) +"naO" = ( +/obj/structure/table/rack, +/obj/effect/floor_decal/rust, +/obj/item/weapon/soap/syndie, +/obj/item/weapon/bananapeel, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) +"nbj" = ( +/obj/machinery/door/airlock/engineering{ + name = "Medbay Substation"; + req_one_access = list(11,24,5) + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/SurfMedsubstation) "ndH" = ( /obj/structure/cable/green{ d1 = 1; @@ -34264,6 +34814,27 @@ /obj/random/trash_pile, /turf/simulated/floor/plating, /area/maintenance/lower/vacant_site) +"nlO" = ( +/obj/machinery/door/airlock/silver{ + name = "Clown's Office"; + req_one_access = list(136) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/clownoffice) +"nlT" = ( +/turf/simulated/wall/r_wall, +/area/tether/surfacebase/funny/hideyhole) +"nmb" = ( +/obj/structure/closet/crate/bin, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) "nmf" = ( /obj/structure/cable/green{ d1 = 4; @@ -34287,6 +34858,18 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/brig) +"nmA" = ( +/obj/machinery/door/airlock/silver{ + name = "Mime's Office"; + req_one_access = list(138) + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/mimeoffice) "nmD" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -34441,6 +35024,15 @@ }, /turf/simulated/floor/tiled/techmaint, /area/maintenance/lower/vacant_site) +"nMH" = ( +/obj/structure/closet{ + desc = "Dents and old flaky paint blanket this old storage unit."; + name = "old locker" + }, +/obj/item/weapon/storage/toolbox/lunchbox/filled, +/obj/random/plushielarge, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "nOB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -34467,6 +35059,27 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/lowerhall) +"nUG" = ( +/obj/structure/table/rack, +/obj/item/weapon/tool/prybar/red{ + desc = "Haven't I seen this before?"; + name = "old red crowbar"; + toolspeed = 3 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"nZj" = ( +/obj/structure/undies_wardrobe, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) "ocx" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ @@ -34478,6 +35091,10 @@ "odn" = ( /turf/simulated/wall, /area/tether/surfacebase/security/lowerhall) +"oeB" = ( +/obj/structure/closet/crate, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) "ofS" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/mauve/border, @@ -34534,6 +35151,19 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) +"ojM" = ( +/obj/effect/floor_decal/rust, +/obj/structure/table/standard{ + name = "plastic table frame" + }, +/obj/item/clothing/head/caphat/formal/fedcover/fedcoversec{ + desc = "An officer's cap shamelessly bootlegged by the Clown College's security force."; + name = "Clown Officer's Cap" + }, +/obj/item/clothing/mask/smokable/pipe/cobpipe, +/obj/item/weapon/flame/lighter/zippo/ironic, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/clownoffice) "okO" = ( /obj/machinery/door/airlock{ name = "Visitation"; @@ -34542,6 +35172,13 @@ /obj/machinery/door/firedoor, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/brig) +"okP" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) "oli" = ( /obj/machinery/light, /obj/effect/floor_decal/borderfloor, @@ -34623,6 +35260,10 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) +"oto" = ( +/obj/item/pizzavoucher, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "ovG" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -34685,6 +35326,18 @@ }, /turf/simulated/floor/tiled/freezer, /area/tether/surfacebase/security/brig/bathroom) +"oId" = ( +/obj/structure/closet{ + desc = "Dents and old flaky paint blanket this old storage unit."; + name = "old locker" + }, +/obj/item/weapon/storage/toolbox/lunchbox/heart, +/obj/random/plushie, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) +"oKn" = ( +/turf/simulated/mineral, +/area/tether/surfacebase/funny/clownoffice) "oKY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -34705,6 +35358,27 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) +"oMv" = ( +/obj/structure/table/alien/blue{ + desc = "Is this imported?"; + name = "obscure table" + }, +/obj/random/action_figure, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) +"oMC" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/carpet/gaycarpet, +/area/tether/surfacebase/funny/clownoffice) +"oPH" = ( +/obj/random/pizzabox, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "oQm" = ( /obj/effect/floor_decal/borderfloor/corner, /obj/structure/cable{ @@ -34827,6 +35501,15 @@ "pCj" = ( /turf/simulated/wall/r_wall, /area/tether/surfacebase/security/brig) +"pIG" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) "pKE" = ( /obj/structure/cable/green{ d1 = 4; @@ -34838,10 +35521,48 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/brig) +"pKR" = ( +/obj/random/junk, +/obj/random/junk, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"pUI" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/random/junk, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"pVp" = ( +/obj/machinery/alarm{ + alarm_id = "pen_nine"; + breach_detection = 0; + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "pZb" = ( /obj/structure/closet/wardrobe/orange, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/brig/storage) +"qaa" = ( +/obj/structure/closet{ + desc = "Dents and old flaky paint blanket this old storage unit."; + name = "old locker" + }, +/obj/item/weapon/storage/toolbox/lunchbox/syndicate, +/obj/item/clothing/head/cakehat, +/obj/random/mech_toy, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) +"qbw" = ( +/obj/structure/bed/chair/bar_stool, +/obj/machinery/alarm{ + pixel_y = 25 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) "qfJ" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/effect/floor_decal/steeldecal/steel_decals4{ @@ -34851,6 +35572,26 @@ /obj/effect/landmark/tram, /turf/simulated/floor/tiled, /area/tether/surfacebase/tram) +"qhk" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/alarm{ + alarm_id = "pen_nine"; + breach_detection = 0; + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "qhq" = ( /obj/structure/cable/green{ d1 = 1; @@ -34862,6 +35603,17 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) +"qhr" = ( +/obj/random/junk, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"qhs" = ( +/obj/structure/table/rack, +/obj/item/toy/crossbow, +/obj/item/weapon/coin/silver, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) "qjE" = ( /obj/effect/floor_decal/borderfloor/shifted{ dir = 1 @@ -34884,6 +35636,13 @@ /obj/structure/disposalpipe/trunk, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/brig) +"qnZ" = ( +/obj/structure/table/rack, +/obj/item/toy/tennis/yellow, +/obj/item/toy/tennis/green, +/obj/item/toy/tennis/blue, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) "qor" = ( /obj/structure/catwalk, /turf/simulated/floor/plating, @@ -34939,6 +35698,10 @@ }, /turf/simulated/wall, /area/maintenance/substation/cargostoresubstation) +"qJl" = ( +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) "qJT" = ( /obj/structure/table/reinforced, /obj/item/clothing/glasses/gglasses{ @@ -35002,6 +35765,12 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled, /area/crew_quarters/locker) +"qPs" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) "qPR" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/green{ dir = 1 @@ -35058,6 +35827,25 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) +"qSJ" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"qVi" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "qWk" = ( /obj/machinery/light, /obj/structure/disposalpipe/segment{ @@ -35130,6 +35918,18 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/tram) +"rse" = ( +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/mimedouble, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) +"ruj" = ( +/obj/machinery/door/airlock/silver{ + name = "Mime's Office"; + req_one_access = list(138) + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/mimeoffice) "rww" = ( /obj/structure/stairs/south, /obj/structure/railing{ @@ -35161,6 +35961,11 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) +"rxD" = ( +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/clowndouble, +/turf/simulated/floor/carpet/gaycarpet, +/area/tether/surfacebase/funny/clownoffice) "rxG" = ( /obj/effect/floor_decal/industrial/warning, /obj/machinery/alarm{ @@ -35169,6 +35974,16 @@ }, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/weaponsrange) +"rzF" = ( +/obj/structure/table/rack, +/obj/effect/floor_decal/rust, +/obj/item/toy/bouquet/fake, +/obj/item/weapon/reagent_containers/spray/waterflower, +/obj/machinery/alarm{ + pixel_y = 25 + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) "rzZ" = ( /obj/structure/cable/green{ d1 = 1; @@ -35225,6 +36040,16 @@ }, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/weaponsrange) +"rIU" = ( +/obj/effect/landmark/start{ + name = "Mime" + }, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) +"rNu" = ( +/obj/random/cutout, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) "rOh" = ( /obj/machinery/disposal, /turf/simulated/floor/tiled/dark, @@ -35376,6 +36201,10 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) +"saF" = ( +/mob/living/simple_mob/animal/passive/honkpet, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/clownoffice) "sbD" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 9 @@ -35497,6 +36326,15 @@ dir = 6 }, /area/looking_glass/lg_1) +"sJX" = ( +/obj/structure/catwalk, +/obj/structure/closet, +/obj/random/maintenance/clean, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/drinkbottle, +/turf/simulated/floor/plating, +/area/maintenance/lower/vacant_site) "sLi" = ( /obj/structure/catwalk, /obj/structure/cable{ @@ -35546,6 +36384,9 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/brig) +"tdg" = ( +/turf/simulated/mineral, +/area/maintenance/lowmedbaymaint) "tdh" = ( /turf/simulated/floor/tiled, /area/tether/surfacebase/security/brig) @@ -35638,6 +36479,12 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining_eva) +"tHb" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) "tLx" = ( /obj/effect/floor_decal/industrial/warning, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -35697,6 +36544,9 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) +"tOe" = ( +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/clownoffice) "tQH" = ( /obj/machinery/camera/network/security{ dir = 10 @@ -35726,6 +36576,15 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/lowernorthhall) +"tRD" = ( +/obj/machinery/alarm{ + alarm_id = "pen_nine"; + breach_detection = 0; + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) "tRJ" = ( /obj/effect/floor_decal/spline/plain{ dir = 10 @@ -35783,6 +36642,20 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) +"tXi" = ( +/obj/structure/table/rack, +/obj/item/toy/stickhorse, +/obj/item/toy/katana, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) +"uaa" = ( +/obj/structure/plushie/beepsky, +/obj/item/clothing/shoes/galoshes{ + desc = "These feel light and shitty."; + name = "budget galoshes" + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/mimeoffice) "ubK" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -35849,6 +36722,11 @@ /obj/random/maintenance/research, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/xenoflora) +"utQ" = ( +/obj/fiftyspawner/steel, +/obj/random/junk, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "uuu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -35861,6 +36739,15 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/locker) +"uwD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "uxF" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass{ @@ -36059,6 +36946,9 @@ dir = 4 }, /area/tether/surfacebase/surface_one_hall) +"uVK" = ( +/turf/simulated/wall, +/area/tether/surfacebase/funny/clownoffice) "vfy" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -36098,6 +36988,15 @@ /obj/effect/floor_decal/steeldecal/steel_decals4, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/brig) +"vkL" = ( +/obj/machinery/power/apc{ + pixel_y = -25 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) "vlJ" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -36126,10 +37025,45 @@ }, /turf/simulated/floor/tiled, /area/rnd/hallway) +"vuO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) +"vBy" = ( +/obj/machinery/vending/cigarette{ + dir = 1 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) "vCb" = ( /obj/machinery/portable_atmospherics/powered/pump/filled, /turf/simulated/floor/plating, /area/maintenance/lower/mining_eva) +"vCn" = ( +/obj/item/weapon/pen/crayon/mime, +/obj/item/weapon/pen/crayon/marker/mime, +/obj/item/weapon/cartridge/mime, +/obj/item/weapon/bedsheet/mime, +/obj/item/toy/figure/mime, +/obj/item/clothing/under/sexymime, +/obj/item/clothing/shoes/mime, +/obj/item/clothing/mask/gas/sexymime, +/obj/item/clothing/head/soft/mime, +/obj/structure/closet/secure_closet{ + desc = "..."; + name = "silent storage"; + req_one_access = list(138) + }, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) "vDb" = ( /obj/effect/floor_decal/borderfloor, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -36155,6 +37089,19 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) +"vEc" = ( +/obj/machinery/light/small, +/turf/simulated/floor/carpet/gaycarpet, +/area/tether/surfacebase/funny/clownoffice) +"vHE" = ( +/obj/structure/closet{ + desc = "Dents and old flaky paint blanket this old storage unit."; + name = "old locker" + }, +/obj/item/weapon/storage/toolbox/lunchbox/cat/filled, +/obj/item/clothing/head/chefhat, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "vHP" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -36285,6 +37232,20 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/brig) +"wvv" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) +"wvV" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/maintenance/lowmedbaymaint) "wwm" = ( /obj/effect/floor_decal/corner/lightorange{ dir = 5 @@ -36373,12 +37334,27 @@ }, /turf/simulated/floor/plating, /area/maintenance/lower/mining_eva) +"wOK" = ( +/obj/effect/floor_decal/rust, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/clownoffice) "wQS" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 5 }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/brig) +"wRb" = ( +/obj/structure/table/alien/blue{ + desc = "Is this imported?"; + name = "obscure table" + }, +/obj/random/mre, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) "wRe" = ( /obj/structure/stairs/south, /obj/structure/railing{ @@ -36439,6 +37415,35 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/brig) +<<<<<<< HEAD +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +"wXW" = ( +/obj/effect/shuttle_landmark{ + base_area = /area/tether/surfacebase/tram; + base_turf = /turf/simulated/floor/tiled/techfloor/grid; + docking_controller = null; + landmark_tag = "escape_station"; + name = "Tether Surface Base" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/tether/surfacebase/tram) +======= +"wWK" = ( +/obj/structure/table/rack, +/obj/fiftyspawner/wood, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"wXW" = ( +/obj/effect/shuttle_landmark{ + base_area = /area/tether/surfacebase/tram; + base_turf = /turf/simulated/floor/tiled/techfloor/grid; + docking_controller = null; + landmark_tag = "escape_station"; + name = "Tether Surface Base" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/tether/surfacebase/tram) +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices "xdV" = ( /obj/structure/cable/green{ d1 = 4; @@ -36505,6 +37510,12 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) +"xts" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/carpet/gaycarpet, +/area/tether/surfacebase/funny/clownoffice) "xtS" = ( /obj/machinery/power/apc{ dir = 4; @@ -36516,6 +37527,12 @@ }, /turf/simulated/floor/tiled/freezer, /area/tether/surfacebase/security/brig/bathroom) +"xtV" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/carpet/gaycarpet, +/area/tether/surfacebase/funny/clownoffice) "xzn" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 9 @@ -36558,6 +37575,24 @@ }, /turf/simulated/floor/tiled/techmaint, /area/looking_glass/lg_1) +"xQi" = ( +/obj/effect/floor_decal/rust, +/obj/structure/barricade/cutout/clown, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/clownoffice) +"xRP" = ( +/obj/effect/floor_decal/rust, +/obj/effect/landmark/start{ + name = "Clown" + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/clownoffice) +"xSF" = ( +/obj/structure/table/rack, +/obj/effect/floor_decal/rust, +/obj/item/toy/bouquet, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) "xVX" = ( /obj/structure/railing{ dir = 8 @@ -36581,6 +37616,19 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/brig) +"xZq" = ( +/obj/structure/table/rack, +/obj/item/clothing/gloves/fyellow{ + desc = "These are what qualifies as a quality product these days?"; + name = "insulted gloves" + }, +/obj/item/weapon/card/id/gold{ + access = list(746); + desc = "Did someone spraypaint this card?"; + name = "captians id card" + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) "yaU" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -36610,6 +37658,18 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/brig) +"yey" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + dir = 4; + pixel_x = -25 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/surfacebase/funny/mimeoffice) "ygY" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -36637,6 +37697,10 @@ }, /turf/simulated/floor/tiled, /area/rnd/hallway) +"ylH" = ( +/obj/machinery/fitness/punching_bag/clown, +/turf/simulated/floor/carpet/gaycarpet, +/area/tether/surfacebase/funny/clownoffice) (1,1,1) = {" aaa @@ -50445,22 +51509,30 @@ uHS awF axM aeU -aah -aah -aah -aah +bbI +fKm +lPQ +bTE akA +<<<<<<< HEAD aah aah +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +aAG +aah +======= +aAG +tdg +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices aef aEZ aFP aGw aHi aef -aah -aah -aah +eAt +eAt +eAt agM agM aoa @@ -50587,6 +51659,7 @@ atO awC axN aeU +<<<<<<< HEAD aah aah aah @@ -50594,15 +51667,32 @@ aah akA aah aah +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +aah +aah +aah +aah +akA +aAG +aah +======= +bbM +lbd +aAI +cqg +jcT +ksK +tdg +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices aef aFa aFQ aGw aHk aef -aah -aah -aah +eWR +mnN +oeB ahx anI aob @@ -50729,22 +51819,30 @@ atO awC axO aeU -aah -aah -aah -aah +bbZ +utQ +lbd +qVi anF +<<<<<<< HEAD aah aah +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +aAG +aah +======= +ksK +tdg +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices aef aFb aFZ aGJ aHq aef -aah -aah -aah +nUG +mnN +wWK ahx ait aoc @@ -50871,6 +51969,7 @@ atO awG aed aeU +<<<<<<< HEAD aah aah aah @@ -50878,15 +51977,32 @@ aah akA aah aah -aef -aef -aef -aef -aef -aef +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices aah aah aah +aah +akA +aAG +aah +======= +oPH +idk +bbZ +bTE +vuO +ksK +tdg +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +aef +aef +aef +aef +aef +aef +mrj +mnN +bTt ahx anJ aod @@ -51017,6 +52133,7 @@ axP axP axP axP +<<<<<<< HEAD akA aah aah @@ -51029,6 +52146,33 @@ aah aah aah aah +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +akA +aAI +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +======= +vuO +ksK +oKn +oKn +oKn +ylH +oMC +guO +aaU +rNu +mnN +oeB +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices ahx ahx ahx @@ -51160,6 +52304,7 @@ ayZ aAc aAi asT +<<<<<<< HEAD aah aah aah @@ -51177,6 +52322,43 @@ aah aah aah aah +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +aAI +adK +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +======= +pVp +uVK +oKn +fFb +meS +meS +meS +aaU +aaU +qJl +aaU +aaU +bwr +bwr +cZL +haw +pKR +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices apF aqP apF @@ -51301,6 +52483,7 @@ ayC aza aAd axP +<<<<<<< HEAD awB aah aah @@ -51319,6 +52502,45 @@ aah aah aah aah +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +aAz +aAI +adK +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +======= +aAz +aAI +uVK +jXR +xtV +tOe +xRP +meS +dNP +ahk +ahk +ahk +ahk +ahk +ahk +ahk +okP +tRD +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices apF aqQ arl @@ -51443,6 +52665,7 @@ ayC azE axP axP +<<<<<<< HEAD axI aah aah @@ -51451,16 +52674,35 @@ aah aah aah aah -aaU -aaU -aaU -aaU -aaU -aaU -aaU +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +axK +aAI +adK aah aah aah +aah +aah +======= +bPH +ksA +nlO +gEn +kAn +miP +saF +cUB +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +aaU +aaU +aaU +aaU +aaU +aaU +aaU +ahk +qPs +qhr apF aqP arl @@ -51586,6 +52828,7 @@ azF axP aeF axK +<<<<<<< HEAD aah aah aah @@ -51593,6 +52836,23 @@ aah aah aah aah +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +aAI +adK +aah +aah +aah +aah +aah +======= +aAI +uVK +joK +xts +meS +tOe +xQi +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices aaU agQ ahp @@ -51600,9 +52860,9 @@ ahC akI anf aaU -aah -aah -aah +ahk +pUI +mnN apF abQ arj @@ -51727,6 +52987,7 @@ axP axP axP aeJ +<<<<<<< HEAD azK aah aah @@ -51735,6 +52996,25 @@ aah aah aah aah +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +aAz +aAI +adK +aah +aah +aah +aah +aah +======= +aAz +aAI +uVK +lCH +iwQ +tOe +meS +vEc +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices aaU agS ahq @@ -51742,7 +53022,7 @@ ajP akY anq aaU -aaU +qJl aaU aaU aaU @@ -51864,19 +53144,47 @@ aff auo adG ayf +<<<<<<< HEAD ayD azb azG adr +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +aff +aAI +aAI +aAD +======= +aff +oto +aAI +jOI +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices afy azT aAa +<<<<<<< HEAD aah aah aah bbj bbj bbj +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +adK +aah +aah +bbj +bbj +bbj +======= +uVK +ojM +cUB +wOK +fFT +rxD +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices bbj agT ahr @@ -52013,23 +53321,31 @@ azV azV azV aAb +<<<<<<< HEAD aah aah +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +adK +aah +======= +aAD +uVK +bbj +bbj +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices bbj bbj -bbI -bbM bbj ahg ahz ajZ alD anL -aaU -aaU -aaU -aaU -aaU +lry +ruj +lry +lry +lry aql arl apF @@ -52154,9 +53470,19 @@ azH azW aAe aeE +<<<<<<< HEAD aAz aah aah +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +aAz +adK +aah +======= +qhk +aAD +hGe +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices bbj bbx bbJ @@ -52167,11 +53493,11 @@ ahA ahk ahA aop -aaU -aah -aah -aah -apF +lry +fkx +yey +nmb +lry aql arl apF @@ -52297,8 +53623,16 @@ azX aAg aeE aAz +<<<<<<< HEAD aah aah +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +adK +aah +======= +aAD +uVK +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices bbj bby bbK @@ -52309,11 +53643,11 @@ aaU aaU aaU aBo -aaU -aah -aah -aah -apF +lry +tHb +emK +vkL +lry aql arl apF @@ -52439,23 +53773,29 @@ azY aAh aeE aAz +<<<<<<< HEAD aah +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +adK +======= +aAD +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices aAW bbr bbz bbL bbY -bbj -aAG -aAG -aAG -aAG +nbj +mnN +mnN +mnN +qSJ aBp -aAD -aah -aah -apF -apF +nmA +fvL +jnN +nZj +lry aql nlo apF @@ -52587,16 +53927,16 @@ bbj bbA bbj bbj -bbj -aAG -aAG -aAG -aAI -aBp -aAD -aah -aah -apF +aaU +aaU +aaU +aaU +aaU +iaI +lry +qbw +cWJ +lVt lry aql aql @@ -52723,25 +54063,25 @@ azW aAe aeE aAI -aAI -aAI -aAI +dSg +wvV +fVG aBh -aBi -aBi +fVG +fVG bHK -aBi -aBi -aBi -aBi +fVG +fVG +fVG +pIG aBq -aAD -aah -aah -apF -aqk +lry +mxi +fkx +vBy +lry aqj -aql +cZF apF aah aah @@ -52864,26 +54204,26 @@ azJ azX aAg aeE -aAI -aAI +cUh +uwD gYx pdo -aAI -aAI -aAI -aAI -aAI -aAI -aAI -aAI -bbZ +gVF aAD -aah -aah -apF -aql -aql +aBi +aAD +aAD +aAD +aAD +lry +lry +lry +oMv +rIU +biK +lry aql +sJX apF aah aah @@ -53006,24 +54346,24 @@ azH azY aAh aeE -aAD -aAD -aAD -aAD -aAD -aAD -aAD -aAD -aAD -aAD -aAD -aAD -aAD -aAD -aah -aah -apF -apF +fWT +fWT +fAv +fWT +fWT +fWT +aAI +aAI +aAI +cNL +aAI +lry +uaa +lry +wRb +fkx +vCn +lry apF apF apF @@ -53147,25 +54487,25 @@ aeE aeE aeE aeE -aeE -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +nlT +naO +jvS +lBO +dtz +qnZ +fWT +nMH +oId +fRJ +qaa +vHE +lry +lry +lry +iWa +fkx +rse +lry aah aah aah @@ -53289,25 +54629,25 @@ azA naC aah aah +fWT +rzF +lXE +gIt +wvv +tXi +fWT +aAD +aAD +aAD +aAD +aAD +aAD aah -aah -aah -aah -aah -aah -aah -aah -aah -aad -aah -aah -aad -aad -aah -aah -aah -aah -aah +lry +kuT +kuT +lry +lry aah aah aah @@ -53431,13 +54771,13 @@ azB naC aah aah -aah -aah -aah -aah -aah -aah -aah +fWT +qhs +xZq +bWg +xSF +gWO +fWT aah aah aad @@ -53445,9 +54785,9 @@ aad aad aad aad +aah +aad aad -aah -aah aah aah aah @@ -53573,13 +54913,13 @@ azC naC aah aah -aah -aah -aah -aah -aad -aad -aad +fWT +fWT +fWT +fWT +fWT +fWT +fWT aad aad aad diff --git a/maps/tether/tether-02-surface2.dmm b/maps/tether/tether-02-surface2.dmm index 00dbdd7bf5..c764f9653a 100644 --- a/maps/tether/tether-02-surface2.dmm +++ b/maps/tether/tether-02-surface2.dmm @@ -34445,6 +34445,22 @@ /obj/machinery/vending/snack, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/breakroom) +"etU" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + req_one_access = list(746) + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) +"eKn" = ( +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) +"frf" = ( +/obj/item/weapon/paper{ + info = "I finally got them. The last pair of Shitty Tim's Shitty Timbs. I waited in line at the cargo shop for what seemed like hours. It probably was hours quite frankly. Well after I got my box, someone ran by and jacked my heels! Well I needed shoes so I snuck inside and stole what they had left. Just a pair of NT worshoes. But atleast I'm not walking away barefooted. If only I wasn't caught by a security. I feel like I've been in this hole for days. Good thing I managed to pilfer some provisions on the way here."; + name = "Pilferer's note" + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) "fxr" = ( /obj/machinery/light{ dir = 8 @@ -34456,6 +34472,23 @@ /obj/structure/table/glass, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/breakroom) +"gwn" = ( +/obj/item/trash/snack_bowl, +/obj/item/trash/sosjerky, +/obj/item/trash/sosjerky, +/obj/item/trash/sosjerky, +/obj/item/trash/unajerky, +/obj/item/trash/waffles, +/obj/structure/closet/crate/trashcart, +/obj/item/trash/cheesie, +/obj/item/trash/cheesie, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) +"jCz" = ( +/turf/simulated/wall{ + can_open = 1 + }, +/area/tether/surfacebase/public_garden_two) "kPb" = ( /obj/structure/cable{ icon_state = "4-8" @@ -34515,6 +34548,38 @@ }, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/surface_two_hall) +<<<<<<< HEAD +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +"mUP" = ( +/obj/structure/bed/padded, +/obj/effect/floor_decal/techfloor, +/obj/machinery/firealarm{ + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/bar) +"mWq" = ( +/obj/structure/catwalk, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/south) +======= +"mCl" = ( +/obj/machinery/floodlight, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) +"mUP" = ( +/obj/structure/bed/padded, +/obj/effect/floor_decal/techfloor, +/obj/machinery/firealarm{ + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/bar) +"mWq" = ( +/obj/structure/catwalk, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/south) +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices "nFT" = ( /obj/structure/cable{ icon_state = "4-8" @@ -34530,6 +34595,7 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/breakroom) <<<<<<< HEAD +<<<<<<< HEAD "oXI" = ( /obj/structure/railing{ dir = 1; @@ -34577,6 +34643,16 @@ /area/maintenance/lower/north) ======= >>>>>>> 7ed3f13340... Merge pull request #9546 from Detective-Google/map-fixes +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +======= +"olc" = ( +/obj/item/weapon/grenade/chem_grenade/cleaner{ + pixel_x = -10 + }, +/obj/item/weapon/grenade/anti_photon, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices "pah" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock{ @@ -34630,6 +34706,55 @@ }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/breakroom) +<<<<<<< HEAD +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +"sVf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/button/windowtint{ + dir = 1; + id = "chaplainpet"; + name = "interior window tint"; + pixel_x = -4; + pixel_y = 30 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +======= +"shd" = ( +/obj/item/weapon/storage/rollingpapers, +/obj/item/clothing/mask/smokable/cigarette/joint, +/obj/item/clothing/mask/smokable/cigarette/joint, +/obj/item/clothing/mask/smokable/cigarette/cigar/cohiba, +/obj/item/clothing/mask/smokable/cigarette/cigar/cohiba, +/obj/item/weapon/flame/lighter/zippo/moff, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) +"sVf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/button/windowtint{ + dir = 1; + id = "chaplainpet"; + name = "interior window tint"; + pixel_x = -4; + pixel_y = 30 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices "sZp" = ( /obj/structure/cable{ icon_state = "4-8" @@ -34692,6 +34817,23 @@ /obj/structure/catwalk, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining) +<<<<<<< HEAD +||||||| parent of 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices +"tPB" = ( +/turf/simulated/floor/grass, +/area/chapel/main) +======= +"tPB" = ( +/turf/simulated/floor/grass, +/area/chapel/main) +"uay" = ( +/obj/item/clothing/shoes/syndigaloshes{ + desc = "A pair of Nanotrasen Saf-T-Stride brown, nonslip, shoes."; + name = "NT nonslips" + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) +>>>>>>> 7c76d267c9... Merge pull request #9645 from SweetBlueSylveon/The-Clime-Offices "unM" = ( /obj/effect/floor_decal/corner/paleblue/diagonal, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -34699,6 +34841,13 @@ /obj/structure/table/glass, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/breakroom) +"uHy" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/effect/decal/remains/human, +/turf/simulated/floor/plating, +/area/tether/surfacebase/funny/hideyhole) "uKv" = ( /obj/effect/floor_decal/corner/paleblue/diagonal, /obj/machinery/light{ @@ -39153,9 +39302,9 @@ adt adt adt adt -adt -adt -adt +frf +shd +uHy adt adt adt @@ -39295,9 +39444,9 @@ adt adt adt adt -adt -adt -adt +olc +eKn +eKn adt adt adt @@ -39433,12 +39582,12 @@ adt adt adt adt -adt -adt -adt -adt -adt -adt +eKn +eKn +etU +etU +eKn +uay adt adt adt @@ -39574,13 +39723,13 @@ adt adt adt adt +eKn +eKn adt adt adt -adt -adt -adt -adt +gwn +mCl adt adt adt @@ -39711,12 +39860,12 @@ apn anf aro asr -akX -akX -adt -adt -adt -adt +jCz +jCz +eKn +eKn +eKn +eKn adt adt adt diff --git a/maps/tether/tether-07-station3.dmm b/maps/tether/tether-07-station3.dmm index 3dd41f4e75..e3dce2f509 100644 --- a/maps/tether/tether-07-station3.dmm +++ b/maps/tether/tether-07-station3.dmm @@ -457,9 +457,9 @@ /obj/machinery/atmospherics/unary/engine{ dir = 1 }, -/turf/simulated/floor/reinforced, +/turf/space, /turf/simulated/shuttle/plating/airless/carry, -/area/shuttle/excursion/cargo) +/area/shuttle/excursion/general) "aaS" = ( /obj/structure/catwalk, /obj/structure/cable{ @@ -511,15 +511,27 @@ /turf/simulated/floor, /area/maintenance/station/ai) "aaX" = ( -/obj/structure/table, -/turf/simulated/floor, -/area/maintenance/station/ai) -"aaY" = ( -/obj/item/stack/material/steel{ - amount = 6 +/obj/item/weapon/stool, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 }, -/turf/simulated/floor, -/area/maintenance/station/ai) +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration/pilot_office) +"aaY" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + dir = 1 + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "shuttle blast"; + name = "Shuttle Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/shuttle/excursion/general) "aaZ" = ( /obj/structure/railing{ dir = 4 @@ -913,15 +925,9 @@ /turf/simulated/floor/tiled, /area/security/hallwayaux) "abL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/floor/tiled/monotile, -/area/tether/exploration) +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/cargo) "abM" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, @@ -3100,8 +3106,11 @@ /turf/simulated/floor/tiled, /area/security/eva) "agy" = ( -/turf/simulated/wall, -/area/maintenance/station/ai) +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/general) "agJ" = ( /turf/simulated/mineral/vacuum, /area/maintenance/station/ai) @@ -3758,13 +3767,14 @@ /turf/simulated/floor, /area/maintenance/station/ai) "aiK" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "shuttle_outbound" +/obj/machinery/disposal/deliveryChute{ + dir = 4 }, -/obj/structure/plasticflaps, -/turf/simulated/floor/tiled/techfloor/grid, -/area/shuttle/excursion/cargo) +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/shuttle/excursion/general) "aiQ" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, @@ -3793,17 +3803,34 @@ /turf/simulated/wall, /area/maintenance/cargo) "aiX" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 6; + icon_state = "intact-fuel" }, /turf/simulated/wall/rshull, -/area/shuttle/excursion/cargo) +/area/shuttle/excursion/general) "aiY" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 8; + icon_state = "intact-fuel" }, -/turf/simulated/wall/rshull, -/area/shuttle/excursion/cargo) +/obj/machinery/shuttle_sensor{ + dir = 5; + id_tag = "shuttlesens_exp_int"; + pixel_y = -24 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/structure/handrail{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/general) "ajf" = ( /obj/structure/disposalpipe/segment, /obj/effect/floor_decal/steeldecal/steel_decals6{ @@ -4240,14 +4267,26 @@ /turf/simulated/floor, /area/maintenance/station/sec_upper) "akx" = ( -/obj/item/device/radio/intercom{ - pixel_y = -24 +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 8; + icon_state = "intact-fuel" }, -/obj/machinery/light, -/obj/structure/bed/chair/shuttle{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/hatch{ + req_one_access = list() + }, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) "akz" = ( /obj/effect/floor_decal/borderfloorblack{ @@ -5649,8 +5688,18 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4; + icon_state = "map-scrubbers" + }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) "anC" = ( @@ -6082,9 +6131,18 @@ /turf/simulated/floor, /area/maintenance/station/ai) "aoU" = ( -/obj/structure/table/bench, -/turf/simulated/floor, -/area/maintenance/station/ai) +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration/pilot_office) "aoV" = ( /obj/item/weapon/stool, /turf/simulated/floor, @@ -17692,11 +17750,6 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /obj/machinery/camera/network/exploration{ dir = 9; icon_state = "camera" @@ -18462,6 +18515,9 @@ /area/quartermaster/storage) "aQz" = ( /obj/structure/railing, +/obj/item/stack/material/steel{ + amount = 6 + }, /turf/simulated/floor, /area/maintenance/cargo) "aQA" = ( @@ -18554,13 +18610,13 @@ /turf/simulated/floor, /area/tether/exploration) "aQL" = ( -/obj/machinery/alarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 +/obj/machinery/conveyor{ + dir = 4; + id = "shuttle_inbound" }, -/turf/simulated/floor/tiled/monotile, -/area/tether/exploration) +/obj/structure/plasticflaps, +/turf/simulated/floor/plating, +/area/shuttle/excursion/general) "aQN" = ( /obj/machinery/light/small{ dir = 1 @@ -18630,9 +18686,18 @@ /turf/simulated/floor/tiled, /area/security/hallway) "aQX" = ( -/obj/structure/railing, -/turf/simulated/floor, -/area/maintenance/station/ai) +/obj/machinery/shipsensors{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8; + icon_state = "warning" + }, +/turf/simulated/floor/plating, +/area/shuttle/excursion/general) "aQY" = ( /obj/structure/railing{ dir = 8 @@ -18777,11 +18842,16 @@ /turf/simulated/mineral/vacuum, /area/quartermaster/office) "aRv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 10; + icon_state = "intact-fuel" + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6; + icon_state = "intact" }, /turf/simulated/wall/rshull, -/area/shuttle/excursion/cargo) +/area/shuttle/excursion/general) "aRw" = ( /obj/structure/catwalk, /obj/machinery/light/small{ @@ -18923,14 +18993,9 @@ /turf/simulated/floor, /area/maintenance/station/elevator) "aRQ" = ( -/obj/structure/closet/crate, -/obj/random/drinkbottle, -/obj/random/contraband, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/effect/floor_decal/rust, -/turf/simulated/floor, -/area/maintenance/station/ai) +/obj/structure/closet/secure_closet/personal, +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration/pilot_office) "aRT" = ( /obj/structure/catwalk, /obj/structure/cable{ @@ -18943,22 +19008,31 @@ dir = 8 }, /obj/random/junk, +/obj/structure/closet/secure_closet/pilot, /turf/simulated/floor, /area/maintenance/cargo) "aRX" = ( -/obj/effect/floor_decal/rust, -/turf/simulated/floor, -/area/maintenance/station/ai) +/obj/structure/table/rack/shelf, +/obj/item/weapon/tank/oxygen, +/obj/item/device/suit_cooling_unit, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/suit/space/void/pilot, +/obj/item/clothing/head/helmet/space/void/pilot, +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration/pilot_office) "aRY" = ( /obj/structure/railing, /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/cargo) "aRZ" = ( -/obj/structure/railing, -/obj/random/junk, -/turf/simulated/floor, -/area/maintenance/station/ai) +/obj/machinery/conveyor{ + dir = 8; + id = "shuttle_outbound" + }, +/obj/structure/plasticflaps, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/cargo) "aSa" = ( /obj/structure/cable/green{ d1 = 4; @@ -18974,11 +19048,23 @@ /turf/simulated/floor/tiled, /area/maintenance/station/sec_upper) "aSb" = ( -/obj/structure/railing, -/obj/random/trash, -/obj/effect/floor_decal/rust, -/turf/simulated/floor, -/area/maintenance/station/ai) +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/handrail{ + dir = 4 + }, +/obj/structure/closet/emergsuit_wall{ + pixel_y = 32 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/general) "aSd" = ( /obj/structure/railing, /obj/structure/railing{ @@ -19049,13 +19135,14 @@ /turf/simulated/open, /area/tether/exploration) "aSq" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -24 +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 6; + icon_state = "intact-fuel" }, -/turf/simulated/floor/tiled/monotile, -/area/tether/exploration) +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) "aSr" = ( /obj/structure/railing, /obj/structure/table/rack{ @@ -19129,19 +19216,19 @@ /turf/simulated/floor, /area/maintenance/cargo) "aSx" = ( -/obj/structure/catwalk, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" }, -/obj/machinery/alarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 }, -/turf/simulated/floor, -/area/maintenance/station/ai) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration) "aSy" = ( /obj/effect/landmark/start{ name = "Cargo Technician" @@ -19749,18 +19836,23 @@ /turf/simulated/floor/plating, /area/quartermaster/belterdock/refinery) "aUf" = ( -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 8; - frequency = 1380; - id_tag = "expshuttle_docker_pump_out_external" +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/obj/structure/handrail{ +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/effect/floor_decal/industrial/warning/full, -/obj/effect/map_helper/airlock/atmos/pump_out_external, -/turf/simulated/floor/plating, -/area/shuttle/excursion/cargo) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 8; + icon_state = "intact-aux" + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) "aUg" = ( /obj/machinery/firealarm{ dir = 1; @@ -19789,10 +19881,27 @@ /turf/simulated/floor/tiled, /area/quartermaster/belterdock) "aUl" = ( -/obj/machinery/light, -/obj/structure/stasis_cage, -/turf/simulated/floor/tiled/monotile, -/area/tether/exploration) +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 8; + icon_state = "intact-aux" + }, +/obj/machinery/door/airlock/hatch{ + req_one_access = list() + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) "aUn" = ( /obj/structure/cable/green{ d1 = 4; @@ -19949,12 +20058,18 @@ /turf/simulated/floor/tiled/asteroid_steel/airless, /area/quartermaster/belterdock) "aUJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5; + icon_state = "intact-scrubbers" }, -/turf/simulated/wall/rshull, -/area/shuttle/excursion/cargo) +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/cockpit) "aUN" = ( /obj/effect/floor_decal/industrial/warning{ dir = 5; @@ -19976,12 +20091,14 @@ /turf/simulated/floor/tiled, /area/quartermaster/belterdock) "aUR" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 6; - icon_state = "intact" +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 }, -/turf/simulated/wall/rshull, -/area/shuttle/excursion/cargo) +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/general) "aUS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -20042,11 +20159,13 @@ /turf/simulated/floor/tiled/asteroid_steel/airless, /area/quartermaster/belterdock) "aVi" = ( -/obj/machinery/shuttle_sensor{ - dir = 2; - id_tag = "shuttlesens_exp_psg" +/obj/machinery/portable_atmospherics/canister/phoron, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/atmospherics/portables_connector/fuel{ + dir = 8; + icon_state = "map_connector-fuel" }, -/turf/simulated/wall/rshull, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "aVj" = ( /obj/structure/cable/green{ @@ -20232,12 +20351,17 @@ /turf/simulated/floor/airless, /area/shuttle/medivac/engines) "aVQ" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden{ - dir = 8; - icon_state = "map" +/obj/machinery/atmospherics/portables_connector{ + dir = 8 }, -/turf/simulated/wall/rshull, -/area/shuttle/excursion/cargo) +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/floor_decal/industrial/outline/blue, +/obj/item/device/radio/intercom{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/general) "aVS" = ( /obj/structure/bed/chair/shuttle{ dir = 4 @@ -20352,16 +20476,29 @@ /turf/simulated/floor, /area/maintenance/station/cargo) "aWn" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/shuttle_sensor{ - dir = 5; - id_tag = "shuttlesens_exp_int" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/turf/simulated/wall/rshull, -/area/shuttle/excursion/cargo) +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/cockpit) "aWp" = ( -/turf/simulated/wall/rshull, -/area/shuttle/excursion/cargo) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) "aWq" = ( /obj/effect/floor_decal/industrial/warning/corner{ dir = 1; @@ -20382,9 +20519,21 @@ /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) "aWs" = ( -/obj/machinery/atmospherics/pipe/simple/hidden, -/turf/simulated/wall/rshull, -/area/shuttle/excursion/cargo) +/obj/machinery/airlock_sensor{ + pixel_y = 28 + }, +/obj/structure/handrail, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) "aWv" = ( /obj/machinery/alarm{ dir = 4; @@ -20434,14 +20583,15 @@ /turf/simulated/floor/plating, /area/crew_quarters/medical_restroom) "aWG" = ( -/obj/machinery/disposal/deliveryChute{ - dir = 8 +/obj/machinery/computer/shuttle_control/explore/excursion{ + dir = 1; + icon_state = "computer" }, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/obj/item/device/radio/intercom{ + pixel_y = -24 }, -/turf/simulated/floor/plating, -/area/shuttle/excursion/cargo) +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/cockpit) "aWI" = ( /turf/simulated/floor/tiled, /area/quartermaster/belterdock/refinery) @@ -20470,11 +20620,16 @@ /turf/simulated/floor/tiled, /area/quartermaster/belterdock/refinery) "aWL" = ( -/obj/machinery/shipsensors{ - dir = 1 +/obj/structure/bed/chair/shuttle{ + dir = 4 }, -/obj/effect/floor_decal/industrial/warning/full, -/turf/simulated/floor/reinforced, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "aWO" = ( /obj/machinery/conveyor{ @@ -20577,11 +20732,28 @@ /turf/simulated/floor/tiled, /area/quartermaster/belterdock/gear) "aXb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 }, -/turf/simulated/wall/rshull, -/area/shuttle/excursion/cargo) +/obj/machinery/power/apc{ + alarms_hidden = 1; + name = "south bump"; + pixel_y = -28; + req_access = list(); + req_one_access = list(11,67) + }, +/obj/structure/cable/cyan, +/obj/machinery/button/remote/blast_door{ + dir = 8; + id = "shuttle blast"; + name = "Shuttle Blast Doors"; + pixel_x = -25; + pixel_y = -25; + req_access = list(67) + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/cockpit) "aXe" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -20644,10 +20816,6 @@ /obj/structure/stasis_cage, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"aXr" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/yellow, -/turf/simulated/wall/rshull, -/area/shuttle/excursion/cargo) "aXs" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -20701,19 +20869,25 @@ /turf/simulated/floor/tiled, /area/quartermaster/belterdock/refinery) "aXC" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 5; + icon_state = "intact-fuel" + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" }, /turf/simulated/wall/rshull, -/area/shuttle/excursion/cargo) +/area/shuttle/excursion/general) "aXD" = ( -/obj/structure/table/rack/shelf, -/obj/item/weapon/tank/oxygen, -/obj/item/device/suit_cooling_unit, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/suit/space/void/pilot, -/obj/item/clothing/head/helmet/space/void/pilot, -/turf/simulated/floor/tiled/eris/techmaint_perforated, +/obj/structure/bed/chair/shuttle{ + dir = 8 + }, +/obj/structure/closet/emergsuit_wall{ + dir = 4; + pixel_x = 32 + }, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "aXH" = ( /obj/machinery/shipsensors{ @@ -20776,11 +20950,15 @@ /turf/space, /area/space) "aXS" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/plating, -/area/shuttle/excursion/cargo) +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/item/device/radio/intercom{ + dir = 1; + pixel_y = 24; + req_access = list() + }, +/obj/structure/handrail, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/general) "aXT" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -20892,13 +21070,27 @@ /turf/simulated/floor/tiled, /area/quartermaster/belterdock/gear) "aYw" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "shuttle blast"; + name = "Shuttle Blast Doors"; + opacity = 0 + }, +/obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d1 = 4; d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/reinforced, -/area/tether/exploration) +/turf/simulated/floor/plating, +/area/shuttle/excursion/general) "aYz" = ( /obj/structure/window/reinforced, /obj/structure/grille, @@ -20915,18 +21107,12 @@ /turf/space, /area/space) "aYD" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/industrial/danger{ - dir = 8 - }, /obj/structure/cable/green{ d1 = 4; d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/tiled/monotile, +/turf/simulated/floor/reinforced, /area/tether/exploration) "aYE" = ( /obj/structure/closet/crate, @@ -21091,14 +21277,11 @@ /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) "aZy" = ( -/obj/structure/disposaloutlet{ - dir = 8 +/obj/structure/bed/chair/bay/shuttle{ + dir = 1 }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/shuttle/excursion/cargo) +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/cockpit) "aZA" = ( /obj/structure/table/steel, /obj/item/stack/flag/yellow{ @@ -21135,11 +21318,11 @@ /turf/simulated/floor/plating, /area/quartermaster/belterdock/refinery) "aZD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ dir = 9 }, /turf/simulated/wall/rshull, -/area/shuttle/excursion/cargo) +/area/shuttle/excursion/general) "aZH" = ( /obj/machinery/conveyor{ dir = 8; @@ -21573,6 +21756,24 @@ }, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) +"brK" = ( +/obj/machinery/button/remote/blast_door{ + dir = 8; + id = "shuttle_hatch"; + name = "Shuttle Rear Hatch"; + pixel_x = -25 + }, +/obj/machinery/door/blast/regular{ + dir = 4; + id = "shuttle_hatch"; + name = "Shuttle Rear Hatch" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/general) "btu" = ( /obj/structure/cable{ d1 = 4; @@ -21598,8 +21799,20 @@ /turf/simulated/mineral/vacuum, /area/mine/explored/upper_level) "bDD" = ( -/obj/machinery/sleep_console, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 5; + icon_state = "intact-fuel" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) "bFB" = ( /obj/structure/lattice, @@ -21609,14 +21822,14 @@ /turf/space, /area/space) "bFX" = ( -/obj/machinery/power/port_gen/pacman/mrs, -/obj/structure/cable/yellow{ - d2 = 2; - icon_state = "0-2" +/obj/structure/disposaloutlet{ + dir = 8 }, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, -/area/shuttle/excursion/general) +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/cargo) "bHX" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -21669,22 +21882,19 @@ /turf/simulated/floor/tiled/eris/techmaint_cargo, /area/shuttle/securiship/general) "bRO" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 4 +/obj/effect/floor_decal/borderfloor{ + dir = 8 }, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 1; - icon_state = "pdoor0"; - id = "shuttle blast"; - name = "Shuttle Blast Doors"; - opacity = 0 +/obj/effect/floor_decal/industrial/danger{ + dir = 8 }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/plating/eris/under, -/area/shuttle/excursion/general) +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration) "bTM" = ( /turf/simulated/floor/tiled/eris/dark/violetcorener, /area/shuttle/securiship/general) @@ -21753,7 +21963,14 @@ /turf/simulated/floor/tiled/eris/steel/gray_perforated, /area/shuttle/securiship/general) "cgm" = ( -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/machinery/atmospherics/binary/pump/fuel, +/obj/structure/fuel_port{ + dir = 4; + pixel_x = 29 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) "ciI" = ( /obj/structure/cable/green{ @@ -21762,9 +21979,11 @@ /turf/simulated/floor/tiled/eris/dark/techfloor_grid, /area/shuttle/securiship/engines) "ckU" = ( -/obj/effect/floor_decal/industrial/hatch/yellow, -/turf/simulated/floor/tiled/eris/dark/gray_perforated, -/area/shuttle/excursion/cargo) +/obj/effect/floor_decal/industrial/outline/red, +/obj/structure/closet/secure_closet/guncabinet/excursion, +/obj/item/weapon/pickaxe, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/general) "coc" = ( /obj/machinery/computer/ship/helm{ req_one_access = list(67,58) @@ -21772,19 +21991,14 @@ /turf/simulated/floor/tiled/eris/dark/techfloor_grid, /area/shuttle/securiship/cockpit) "cow" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" +/obj/machinery/disposal/deliveryChute{ + dir = 8 }, -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/machinery/alarm{ - dir = 4; - icon_state = "alarm0"; - pixel_x = -22 +/obj/structure/disposalpipe/trunk{ + dir = 4 }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, -/area/shuttle/excursion/general) +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/cargo) "crE" = ( /obj/structure/cable{ icon_state = "4-8" @@ -21865,15 +22079,13 @@ /turf/simulated/floor/tiled/eris/dark/techfloor, /area/shuttle/medivac/engines) "cQa" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + dir = 1; + icon_state = "map-fuel" + }, /obj/structure/shuttle/engine/heater, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{ - dir = 1 - }, -/turf/simulated/floor/plating/eris/under, -/area/shuttle/excursion/cargo) +/turf/simulated/floor/plating, +/area/shuttle/excursion/general) "cTI" = ( /obj/machinery/door/airlock/glass_external, /obj/effect/map_helper/airlock/door/ext_door, @@ -21900,36 +22112,44 @@ /turf/simulated/floor/tiled/eris/steel/cyancorner, /area/shuttle/medivac/cockpit) "dhq" = ( -/obj/machinery/airlock_sensor{ +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + cycle_to_external_air = 1; + frequency = 1380; + id_tag = "expshuttle_docker"; pixel_y = 28 }, /obj/structure/handrail, -/obj/machinery/light/small{ - dir = 4; - pixel_y = 0 - }, -/obj/effect/map_helper/airlock/sensor/chamber_sensor, -/obj/effect/map_helper/airlock/atmos/pump_out_internal, -/obj/machinery/atmospherics/unary/vent_pump/high_volume, -/turf/simulated/floor/tiled/eris/dark/danger, -/area/shuttle/excursion/cargo) +/obj/machinery/atmospherics/pipe/manifold4w/hidden, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) "dhW" = ( -/obj/effect/floor_decal/industrial/outline/blue, -/obj/machinery/atmospherics/portables_connector, -/obj/machinery/portable_atmospherics/canister/air, -/obj/machinery/alarm{ - pixel_y = 22 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) "dln" = ( /obj/structure/bed/padded, /turf/simulated/floor/tiled/eris/dark/violetcorener, /area/shuttle/medivac/general) "doD" = ( -/obj/machinery/computer/ship/sensors, -/turf/simulated/floor/tiled/eris/white/bluecorner, -/area/shuttle/excursion/cockpit) +/obj/effect/floor_decal/industrial/warning/corner, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/handrail, +/obj/item/device/radio/intercom{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/cargo) "dvH" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -21981,24 +22201,22 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "dFx" = ( -/obj/structure/cable/cyan{ - d1 = 4; +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 2; d2 = 8; - icon_state = "4-8" + icon_state = "2-8" }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/structure/handrail{ - dir = 1 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, -/area/shuttle/excursion/general) +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration) +"dIM" = ( +/obj/structure/table/steel, +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration/pilot_office) "dLI" = ( /obj/structure/disposalpipe/segment, /turf/simulated/wall, @@ -22051,33 +22269,34 @@ /turf/simulated/floor/tiled, /area/security/hallway) "efQ" = ( -/obj/structure/cable/cyan, /obj/structure/handrail{ dir = 1 }, -/obj/effect/map_helper/airlock/atmos/chamber_pump, -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/dark/danger, -/area/shuttle/excursion/cargo) -"egf" = ( -/obj/machinery/atmospherics/binary/pump, -/obj/machinery/firealarm{ +/obj/machinery/oxygen_pump{ dir = 1; - pixel_x = 0; - pixel_y = -26 + pixel_y = -32 }, -/obj/item/weapon/tank/phoron{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/weapon/tank/phoron{ - pixel_x = 6; - pixel_y = -6 - }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/effect/map_helper/airlock/atmos/pump_out_internal, +/obj/machinery/atmospherics/unary/vent_pump/high_volume, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) +"egf" = ( +/obj/effect/floor_decal/industrial/outline, +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/general) +"ehc" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/maintenance/station/ai) "ehI" = ( /obj/machinery/atm{ pixel_y = 30 @@ -22099,21 +22318,40 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "ejd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ - dir = 6 +/obj/machinery/atmospherics/portables_connector{ + dir = 1 }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/canister/empty, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "elB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/universal{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/obj/machinery/light/small{ + dir = 8 }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 8; - icon_state = "1-8" +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24; + pixel_y = 0 }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/general) +"eof" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration) +"esH" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/turf/simulated/wall/rshull, /area/shuttle/excursion/general) "esK" = ( /obj/machinery/door/firedoor/glass/hidden/steel{ @@ -22122,34 +22360,48 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "eug" = ( -/obj/structure/disposaloutlet{ - dir = 4 +/obj/machinery/computer/ship/engines{ + dir = 1 }, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 }, -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/turf/simulated/floor/tiled/eris/techmaint_perforated, -/area/shuttle/excursion/cargo) +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/cockpit) "evl" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 9; - icon_state = "intact" +/obj/machinery/light/small, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/closet/crate/secure/phoron{ + name = "fuel crate"; + req_one_access = list(67) + }, +/obj/item/weapon/tank/phoron{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/item/weapon/tank/phoron{ + pixel_x = -5; + pixel_y = 5 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 + dir = 9 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 + dir = 9; + pixel_y = 0 }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/item/device/radio/intercom{ + dir = 4; + pixel_x = 24 }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "ewT" = ( /obj/machinery/atmospherics/portables_connector/fuel{ @@ -22160,6 +22412,20 @@ /obj/effect/floor_decal/industrial/outline/red, /turf/simulated/floor/tiled/eris/dark/techfloor_grid, /area/shuttle/securiship/engines) +"eAm" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration) "eBO" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -22175,13 +22441,7 @@ opacity = 0 }, /obj/machinery/door/firedoor/glass, -/turf/simulated/floor/plating/eris/under, -/area/shuttle/excursion/general) -"eKK" = ( -/obj/machinery/sleeper{ - dir = 8 - }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/turf/simulated/floor/plating, /area/shuttle/excursion/general) "eLO" = ( /obj/structure/window/reinforced{ @@ -22194,14 +22454,26 @@ /turf/simulated/floor/tiled/eris/dark/violetcorener, /area/shuttle/securiship/general) "eQX" = ( -/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/structure/cable/cyan{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor/tiled/eris/white/bluecorner, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "shuttle blast"; + name = "Shuttle Blast Doors"; + opacity = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/hatch{ + req_one_access = list() + }, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "eVj" = ( /obj/structure/cable/cyan{ @@ -22289,27 +22561,10 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "feb" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/light/small{ - dir = 1; - icon_state = "bulb1" - }, -/obj/structure/cable/cyan{ - d2 = 2; - icon_state = "0-2" - }, -/obj/machinery/power/apc{ - alarms_hidden = 1; - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 28 - }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/turf/simulated/wall/rshull, /area/shuttle/excursion/general) "fkB" = ( /obj/machinery/door/airlock/glass_external, @@ -22330,6 +22585,13 @@ /obj/machinery/door/firedoor/glass/hidden/steel, /turf/simulated/floor/tiled, /area/hallway/station/upper) +"fmc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6; + icon_state = "intact" + }, +/turf/simulated/wall/rshull, +/area/shuttle/excursion/general) "fox" = ( /obj/structure/cable{ icon_state = "1-2" @@ -22395,19 +22657,15 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "fQo" = ( -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, +/obj/effect/floor_decal/industrial/hatch/yellow, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, -/turf/simulated/floor/tiled/eris/white/bluecorner, -/area/shuttle/excursion/cockpit) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/cargo) "fZo" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden{ @@ -22421,11 +22679,12 @@ /turf/simulated/floor/tiled/eris/techmaint_panels, /area/shuttle/medivac/engines) "gde" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/plating/eris/under, -/area/shuttle/excursion/cargo) +/obj/machinery/sleep_console, +/obj/item/device/radio/intercom{ + pixel_y = -24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/general) "gdk" = ( /obj/machinery/light/small, /obj/machinery/atmospherics/portables_connector{ @@ -22436,9 +22695,12 @@ /turf/simulated/floor/tiled/eris/dark/techfloor, /area/shuttle/medivac/engines) "geP" = ( -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/eris/dark/gray_perforated, -/area/shuttle/excursion/cargo) +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/hatch{ + req_one_access = list(67) + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/cockpit) "gfw" = ( /obj/structure/cable{ d1 = 4; @@ -22452,6 +22714,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/hallway/station/upper) +"ghy" = ( +/obj/structure/stasis_cage, +/obj/machinery/light, +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration) "gqZ" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; @@ -22464,17 +22731,16 @@ /turf/simulated/floor/tiled, /area/security/security_processing) "gsT" = ( -/obj/machinery/embedded_controller/radio/airlock/docking_port{ - cycle_to_external_air = 1; - frequency = 1380; - id_tag = "expshuttle_docker"; - pixel_y = 28 - }, /obj/structure/handrail, /obj/effect/map_helper/airlock/atmos/chamber_pump, -/obj/machinery/atmospherics/unary/vent_pump/high_volume, -/turf/simulated/floor/tiled/eris/dark/danger, -/area/shuttle/excursion/cargo) +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4 + }, +/obj/structure/closet/emergsuit_wall{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) "gvu" = ( /obj/structure/bed/chair/shuttle{ dir = 4 @@ -22486,12 +22752,13 @@ /turf/simulated/floor/tiled/eris/white, /area/shuttle/medivac/general) "gAZ" = ( -/obj/machinery/atmospherics/portables_connector{ +/obj/structure/handrail{ dir = 1 }, -/obj/effect/floor_decal/industrial/outline/red, -/obj/machinery/portable_atmospherics/canister/phoron, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) "gBb" = ( /obj/effect/floor_decal/borderfloor{ @@ -22585,27 +22852,28 @@ /turf/simulated/floor/tiled/eris/steel/gray_perforated, /area/shuttle/medivac/general) "gNy" = ( -/obj/machinery/door/airlock/glass_external, -/obj/machinery/airlock_sensor/airlock_exterior/shuttle{ - dir = 6; - frequency = 1380; - id_tag = "expshuttle_exterior_sensor"; - master_tag = "expshuttle_docker"; - pixel_x = 4; - pixel_y = 28 +/obj/effect/shuttle_landmark{ + base_area = /area/tether/exploration; + base_turf = /turf/simulated/floor/reinforced; + docking_controller = "expshuttle_dock"; + landmark_tag = "tether_excursion_hangar"; + name = "Excursion Shuttle Dock" }, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 9; - icon_state = "intact" - }, -/obj/effect/floor_decal/industrial/warning{ +/obj/effect/overmap/visitable/ship/landable/excursion, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ dir = 8; - icon_state = "warning" + icon_state = "intact-fuel" }, -/obj/effect/map_helper/airlock/door/ext_door, -/obj/effect/map_helper/airlock/sensor/ext_sensor, -/turf/simulated/floor/tiled/eris/techmaint_panels, -/area/shuttle/excursion/cargo) +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 8; + icon_state = "intact-aux" + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) "gQS" = ( /obj/effect/landmark{ name = "morphspawn" @@ -22669,21 +22937,40 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) +"hkB" = ( +/obj/structure/catwalk, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor, +/area/maintenance/station/ai) "hpj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/obj/structure/bed/chair/shuttle{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4; - icon_state = "intact-scrubbers" +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/structure/closet/emergsuit_wall{ + dir = 8; + pixel_x = -32 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "hsy" = ( -/obj/effect/floor_decal/industrial/outline, -/obj/machinery/atmospherics/portables_connector, -/obj/machinery/portable_atmospherics/canister/air, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/machinery/sleeper{ + dir = 8 + }, +/obj/machinery/shuttle_sensor{ + id_tag = "shuttlesens_exp_psg"; + pixel_x = -25 + }, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "htW" = ( /obj/effect/floor_decal/borderfloor{ @@ -22706,28 +22993,15 @@ /turf/simulated/wall/rshull, /area/shuttle/securiship/engines) "hyH" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 +/obj/structure/bed/chair/shuttle{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4; - icon_state = "intact-scrubbers" - }, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, -/area/shuttle/excursion/general) -"hGJ" = ( -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/effect/floor_decal/industrial/warning/corner{ +/obj/structure/closet/emergsuit_wall{ dir = 1; - icon_state = "warningcorner" + pixel_y = -32 }, -/turf/simulated/floor/tiled/eris/dark/gray_perforated, -/area/shuttle/excursion/cargo) +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/general) "hIb" = ( /obj/machinery/light/small{ dir = 1 @@ -22742,12 +23016,9 @@ /turf/simulated/floor/tiled/eris/dark/techfloor, /area/shuttle/medivac/engines) "hNx" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/eris/dark/gray_perforated, -/area/shuttle/excursion/cargo) +/obj/machinery/mineral/equipment_vendor/survey, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/general) "hPJ" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, @@ -22759,11 +23030,13 @@ /turf/simulated/floor/tiled, /area/security/hallway) "hTW" = ( -/obj/structure/bed/chair/shuttle, -/obj/machinery/light{ - dir = 1 +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/canister/phoron, +/obj/machinery/atmospherics/portables_connector/fuel{ + dir = 8; + icon_state = "map_connector-fuel" }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "hZs" = ( /obj/effect/floor_decal/borderfloor{ @@ -22797,19 +23070,46 @@ /turf/simulated/floor/tiled, /area/security/hallway) "ijU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5; - icon_state = "intact-supply" +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4; - icon_state = "intact-scrubbers" +/obj/structure/cable/yellow, +/obj/machinery/power/port_gen/pacman/mrs{ + anchored = 1 }, -/obj/structure/handrail{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/white/bluecorner, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) +"ikk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 8; + icon_state = "intact-fuel" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 8; + icon_state = "intact-aux" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) +"imZ" = ( +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/structure/catwalk, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor, +/area/maintenance/station/ai) "inX" = ( /obj/structure/cable{ icon_state = "4-8" @@ -22841,35 +23141,25 @@ /turf/simulated/wall/rshull, /area/shuttle/securiship/general) "isN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4; - icon_state = "intact-scrubbers" +/obj/structure/bed/chair/shuttle{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + dir = 8; + pixel_x = 30 + }, +/obj/machinery/light{ dir = 4 }, -/obj/machinery/door/airlock/hatch{ - req_one_access = list(67) - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/eris/techmaint_panels, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "iCh" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1; - icon_state = "warning" - }, -/obj/machinery/recharge_station, -/turf/simulated/floor/tiled/eris/techmaint_perforated, -/area/shuttle/excursion/cargo) +/obj/machinery/computer/ship/sensors, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/cockpit) "iDH" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, @@ -22895,23 +23185,17 @@ /turf/simulated/floor/tiled/eris/dark/techfloor, /area/shuttle/medivac/engines) "iEV" = ( -/obj/machinery/atmospherics/pipe/manifold/visible{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 8; + icon_state = "intact-fuel" }, -/obj/effect/shuttle_landmark{ - base_area = /area/tether/exploration; - base_turf = /turf/simulated/floor/reinforced; - docking_controller = "expshuttle_dock"; - landmark_tag = "tether_excursion_hangar"; - name = "Excursion Shuttle Dock" +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 8; + icon_state = "intact-aux" }, -/obj/effect/overmap/visitable/ship/landable/excursion, -/turf/simulated/floor/tiled/eris/dark/danger, -/area/shuttle/excursion/cargo) -"iFx" = ( -/obj/structure/table/steel, -/turf/simulated/floor/tiled/eris/white/bluecorner, -/area/shuttle/excursion/cockpit) +/obj/machinery/atmospherics/pipe/manifold/hidden, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) "iJs" = ( /obj/machinery/conveyor{ dir = 4; @@ -22921,15 +23205,13 @@ /turf/simulated/floor, /area/quartermaster/storage) "iJT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 6; + icon_state = "intact-fuel" + }, /obj/structure/shuttle/engine/heater, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ - dir = 6 - }, -/turf/simulated/floor/plating/eris/under, -/area/shuttle/excursion/cargo) +/turf/simulated/floor/plating, +/area/shuttle/excursion/general) "iOI" = ( /obj/structure/cable{ d1 = 4; @@ -22953,26 +23235,23 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "iPK" = ( -/obj/structure/closet/emergsuit_wall{ - pixel_x = -32 - }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/machinery/suit_cycler/exploration, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "iQS" = ( /obj/structure/bed/padded, /obj/item/weapon/bedsheet/brown, /obj/structure/curtain/open/bed, -/turf/simulated/floor/tiled/eris/techmaint_perforated, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "iUO" = ( /obj/structure/barricade, /turf/simulated/floor, /area/maintenance/station/sec_upper) "iWG" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/plating/eris/under, +/obj/machinery/recharge_station, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "iXe" = ( /obj/machinery/light{ @@ -23003,11 +23282,9 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "jcr" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 9; - icon_state = "intact" - }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/structure/cable/cyan, +/obj/machinery/power/smes/buildable/point_of_interest, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "jfu" = ( /obj/machinery/newscaster{ @@ -23048,12 +23325,19 @@ /turf/simulated/floor/tiled/eris/steel/gray_perforated, /area/shuttle/securiship/general) "jsf" = ( -/obj/machinery/disposal/deliveryChute{ - dir = 4 +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/structure/disposalpipe/trunk, -/turf/simulated/floor/plating/eris/under, -/area/shuttle/excursion/cargo) +/obj/machinery/door/airlock/hatch{ + req_one_access = list(67) + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) "jxg" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/maintenance/sec{ @@ -23091,13 +23375,17 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "jQx" = ( -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 4; - icon_state = "1-4" +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 }, -/turf/simulated/floor/tiled/eris/dark/gray_perforated, -/area/shuttle/excursion/cargo) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5; + icon_state = "intact-scrubbers" + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) "jRD" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; @@ -23137,12 +23425,9 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "kgD" = ( -/obj/structure/fuel_port{ - pixel_x = 0; - pixel_y = 3 - }, -/turf/simulated/floor/tiled/eris/techmaint, -/area/shuttle/excursion/cargo) +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/wall/rshull, +/area/shuttle/excursion/general) "khf" = ( /obj/structure/window/reinforced{ dir = 8; @@ -23154,6 +23439,14 @@ }, /turf/simulated/floor/tiled/eris/steel/gray_perforated, /area/shuttle/securiship/general) +"kkg" = ( +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration/pilot_office) "knm" = ( /obj/structure/cable{ icon_state = "1-4" @@ -23174,6 +23467,21 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) +"krj" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock{ + name = "Pilot's Office"; + req_one_access = list(67) + }, +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration) "krV" = ( /obj/machinery/light, /obj/structure/cable/green{ @@ -23185,19 +23493,9 @@ /turf/simulated/floor/tiled/eris/dark/techfloor_grid, /area/shuttle/securiship/engines) "kCz" = ( -/obj/machinery/door/airlock/hatch{ - req_one_access = list(67) - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4; - icon_state = "intact-scrubbers" - }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/eris/techmaint_panels, -/area/shuttle/excursion/general) +/obj/machinery/computer/ship/helm, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/cockpit) "kDC" = ( /obj/structure/bed/chair/bay/chair/padded/blue{ dir = 4; @@ -23247,11 +23545,17 @@ /turf/simulated/floor/tiled/eris/dark/techfloor, /area/shuttle/medivac/engines) "kPW" = ( -/obj/structure/handrail{ +/obj/machinery/door/blast/regular{ + dir = 4; + id = "shuttle_hatch"; + name = "Shuttle Rear Hatch" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, -/turf/simulated/floor/tiled/eris/dark/danger, -/area/shuttle/excursion/cargo) +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/general) "kSC" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; @@ -23278,28 +23582,43 @@ /turf/simulated/floor/tiled, /area/security/hallway) "kTn" = ( -/obj/item/device/radio/intercom{ - dir = 1; - pixel_y = 24; - req_access = list() +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) +"kUK" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/closet/emergsuit_wall{ + pixel_y = 32 }, /obj/structure/handrail, -/turf/simulated/floor/tiled/eris/dark/gray_perforated, -/area/shuttle/excursion/cargo) -"kUK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow, -/obj/effect/floor_decal/industrial/outline/red, -/obj/structure/closet/secure_closet/guncabinet/excursion, -/obj/item/weapon/pickaxe, -/turf/simulated/floor/tiled/eris/dark/gray_perforated, -/area/shuttle/excursion/cargo) +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/general) "kVs" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/handrail{ + dir = 4 + }, /obj/structure/cable/cyan{ d1 = 1; - d2 = 2; - icon_state = "1-2" + d2 = 4; + icon_state = "1-4" }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -28; + req_access = list(); + req_one_access = list(11,67) + }, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) "lad" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -23322,17 +23641,11 @@ /turf/simulated/floor/tiled/eris/steel/cyancorner, /area/shuttle/medivac/cockpit) "lfJ" = ( -/obj/effect/floor_decal/industrial/hatch/yellow, -/obj/machinery/alarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 - }, -/obj/structure/handrail{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/dark/gray_perforated, -/area/shuttle/excursion/cargo) +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/shuttle/excursion/cockpit) "lnp" = ( /obj/machinery/door/airlock/glass_external, /obj/structure/cable/green{ @@ -23408,6 +23721,15 @@ /obj/machinery/door/window/brigdoor/eastleft, /turf/simulated/floor/tiled/eris/dark/violetcorener, /area/shuttle/securiship/general) +"lLA" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/maintenance/station/ai) "lOS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -23427,14 +23749,14 @@ /area/hallway/station/upper) "lSD" = ( /obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + d1 = 2; + d2 = 8; + icon_state = "2-8" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/eris/white/bluecorner, -/area/shuttle/excursion/cockpit) +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/cargo) "meu" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, @@ -23472,16 +23794,24 @@ /turf/simulated/floor/tiled/eris/dark/techfloor, /area/shuttle/securiship/general) "mnk" = ( -/obj/machinery/door/airlock/hatch{ - req_one_access = list(67) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 }, /obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + d1 = 2; + d2 = 8; + icon_state = "2-8" }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/eris/techmaint_panels, +/obj/structure/closet/emergsuit_wall{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/binary/pump/aux{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) "mqv" = ( /obj/structure/disposalpipe/segment{ @@ -23565,6 +23895,12 @@ /obj/effect/floor_decal/techfloor/hole/right, /turf/simulated/floor/tiled/techfloor, /area/tether/station/stairs_three) +"mUI" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration/pilot_office) "ndd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ dir = 5; @@ -23595,13 +23931,30 @@ /turf/simulated/floor/tiled/eris/white, /area/shuttle/medivac/general) "nlw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/universal, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -24; - pixel_y = 0 +/obj/machinery/door/airlock/glass_external, +/obj/machinery/airlock_sensor/airlock_exterior/shuttle{ + dir = 6; + frequency = 1380; + id_tag = "expshuttle_exterior_sensor"; + master_tag = "expshuttle_docker"; + pixel_x = 4; + pixel_y = 28 }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/effect/floor_decal/industrial/warning{ + dir = 8; + icon_state = "warning" + }, +/obj/effect/map_helper/airlock/door/ext_door, +/obj/effect/map_helper/airlock/sensor/ext_sensor, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 8; + icon_state = "intact-fuel" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 8; + icon_state = "intact-aux" + }, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "nlX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux{ @@ -23694,40 +24047,27 @@ /turf/simulated/floor/tiled/eris/dark/techfloor_grid, /area/shuttle/securiship/engines) "nwM" = ( +/obj/structure/disposaloutlet{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/shuttle/excursion/general) +"nzo" = ( +/obj/machinery/power/terminal{ + dir = 1; + icon_state = "term" + }, /obj/structure/cable/green{ icon_state = "0-4" }, /obj/structure/cable/yellow{ - d2 = 8; - icon_state = "0-8" + d2 = 2; + icon_state = "0-2" }, -/obj/machinery/power/terminal, -/obj/machinery/cell_charger, -/obj/structure/table/steel, -/obj/machinery/firealarm{ - dir = 2; - layer = 3.3; - pixel_x = 0; - pixel_y = 26 - }, -/obj/random/powercell, -/obj/item/stack/material/tritium{ - amount = 5 - }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, -/area/shuttle/excursion/general) -"nzo" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ - dir = 10 - }, -/obj/machinery/light/small{ - dir = 4; - pixel_y = 0 - }, -/obj/structure/closet/crate/freezer/rations, -/obj/item/weapon/storage/mre/menu11, -/obj/item/weapon/storage/mre/menu10, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "nzs" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -23738,6 +24078,15 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) +"nEe" = ( +/obj/structure/closet/crate, +/obj/random/drinkbottle, +/obj/random/contraband, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/effect/floor_decal/rust, +/turf/simulated/floor, +/area/maintenance/station/ai) "nRt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 10 @@ -23816,24 +24165,12 @@ /turf/simulated/floor/tiled/eris/dark/techfloor_grid, /area/shuttle/securiship/cockpit) "opv" = ( -/obj/machinery/firealarm{ - dir = 2; - layer = 3.3; - pixel_x = 0; - pixel_y = 26 +/obj/structure/handrail{ + dir = 8 }, -/obj/effect/floor_decal/industrial/warning{ - dir = 8; - icon_state = "warning" - }, -/obj/machinery/conveyor_switch/oneway{ - id = "shuttle_outbound" - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/dark/gray_perforated, -/area/shuttle/excursion/cargo) +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/general) "opL" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -23872,20 +24209,41 @@ /turf/simulated/floor/tiled/eris/steel/cyancorner, /area/shuttle/medivac/cockpit) "oqg" = ( -/obj/structure/bed/chair/shuttle, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + dir = 8 + }, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4; + icon_state = "map-scrubbers" + }, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) "owc" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/clothing/suit/space/emergency, +/obj/item/clothing/suit/space/emergency, +/obj/item/clothing/suit/space/emergency, +/obj/item/clothing/suit/space/emergency, +/obj/item/clothing/head/helmet/space/emergency, +/obj/item/clothing/head/helmet/space/emergency, +/obj/item/clothing/head/helmet/space/emergency, +/obj/item/clothing/head/helmet/space/emergency, +/obj/structure/closet/emcloset/legacy, +/obj/machinery/light{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4; - icon_state = "intact-scrubbers" - }, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/eris/dark/gray_perforated, -/area/shuttle/excursion/cargo) +/obj/effect/floor_decal/industrial/outline/blue, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/general) "owU" = ( /obj/effect/floor_decal/borderfloor{ dir = 9 @@ -23910,6 +24268,13 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) +"ozS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/wall/rshull, +/area/shuttle/excursion/general) "oDi" = ( /obj/machinery/door/window/brigdoor/northleft{ req_access = list(5) @@ -23917,13 +24282,23 @@ /turf/simulated/floor/tiled/eris/dark/violetcorener, /area/shuttle/medivac/general) "oDB" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 8; + icon_state = "intact-fuel" }, -/obj/structure/bed/chair/shuttle{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/handrail, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) "oGF" = ( /obj/machinery/door/airlock/glass_external, @@ -23938,24 +24313,10 @@ /turf/simulated/wall/rshull, /area/shuttle/securiship/general) "oNI" = ( -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/weapon/tank/emergency/oxygen/engi, -/obj/item/weapon/tank/emergency/oxygen/engi, -/obj/item/weapon/tank/emergency/oxygen/engi, -/obj/item/weapon/tank/emergency/oxygen/engi, -/obj/item/clothing/suit/space/emergency, -/obj/item/clothing/suit/space/emergency, -/obj/item/clothing/suit/space/emergency, -/obj/item/clothing/suit/space/emergency, -/obj/item/clothing/head/helmet/space/emergency, -/obj/item/clothing/head/helmet/space/emergency, -/obj/item/clothing/head/helmet/space/emergency, -/obj/item/clothing/head/helmet/space/emergency, -/obj/structure/closet/emcloset/legacy, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "oPK" = ( /obj/structure/window/reinforced{ @@ -23972,20 +24333,6 @@ }, /turf/simulated/floor/tiled/eris/dark/techfloor_grid, /area/shuttle/securiship/engines) -"oUa" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4; - icon_state = "intact-scrubbers" - }, -/obj/machinery/light, -/obj/item/device/radio/intercom{ - pixel_y = -24 - }, -/turf/simulated/floor/tiled/eris/white/bluecorner, -/area/shuttle/excursion/general) "oWx" = ( /obj/structure/cable/cyan{ d1 = 1; @@ -23996,29 +24343,21 @@ /turf/simulated/floor/tiled/eris/steel/gray_perforated, /area/shuttle/securiship/general) "oYj" = ( -/obj/machinery/alarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/obj/machinery/button/remote/blast_door{ - dir = 8; - id = "shuttle blast"; - name = "Shuttle Blast Doors"; - pixel_x = -25; - pixel_y = -21; - req_access = list(67) - }, -/obj/structure/bed/chair/bay/comfy/blue{ - dir = 1; - icon_state = "bay_comfychair_preview"; - pixel_y = 5 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/handrail{ dir = 4 }, -/turf/simulated/floor/tiled/eris/white/bluecorner, -/area/shuttle/excursion/cockpit) +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/cargo) "peF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -24066,17 +24405,24 @@ /turf/simulated/wall/rshull, /area/shuttle/securiship/engines) "pwj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/structure/handrail{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +/obj/machinery/light/small{ dir = 4; - icon_state = "intact-scrubbers" + pixel_y = 0 }, -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/plating/eris/under, +/obj/effect/map_helper/airlock/atmos/pump_out_internal, +/obj/machinery/oxygen_pump{ + dir = 1; + pixel_y = -32 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume, +/obj/item/device/radio/intercom{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) "pOc" = ( /obj/structure/disposalpipe/segment, @@ -24088,12 +24434,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"pPy" = ( -/obj/machinery/atmospherics/pipe/manifold/visible{ - dir = 4 - }, -/turf/simulated/floor/tiled/eris/dark/danger, -/area/shuttle/excursion/cargo) "pQE" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -24157,19 +24497,23 @@ /turf/simulated/floor/plating, /area/shuttle/securiship/general) "qcm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/button/remote/blast_door{ + dir = 8; + id = "shuttle_hatch"; + name = "Shuttle Rear Hatch"; + pixel_x = -25 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/door/airlock/hatch{ + req_one_access = list() }, -/obj/structure/closet/emergsuit_wall{ - pixel_x = 32 - }, -/turf/simulated/floor/tiled/eris/dark/gray_perforated, -/area/shuttle/excursion/cargo) +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) "qgj" = ( /obj/structure/cable{ icon_state = "1-2" @@ -24183,17 +24527,17 @@ /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) "qmq" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ dir = 5; - icon_state = "intact" + icon_state = "intact-aux" }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/eris/dark/gray_perforated, -/area/shuttle/excursion/cargo) +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) "qxW" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -24209,20 +24553,19 @@ opacity = 0 }, /obj/machinery/door/firedoor/glass, -/turf/simulated/floor/plating/eris/under, +/turf/simulated/floor/plating, /area/shuttle/excursion/general) "qEn" = ( -/obj/machinery/computer/ship/helm, -/turf/simulated/floor/tiled/eris/white/bluecorner, -/area/shuttle/excursion/cockpit) +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/handrail, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/cargo) "qJK" = ( -/obj/machinery/suit_cycler/pilot, -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -26 +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 8; + icon_state = "intact-fuel" }, -/turf/simulated/floor/tiled/eris/techmaint_perforated, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "qLc" = ( /obj/effect/floor_decal/industrial/warning, @@ -24274,22 +24617,37 @@ /turf/simulated/floor/tiled/eris/techmaint_panels, /area/shuttle/medivac/engines) "qPS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/blast/regular{ + density = 0; dir = 4; - icon_state = "intact-scrubbers" + icon_state = "pdoor0"; + id = "shuttle blast"; + name = "Shuttle Blast Doors"; + opacity = 0 }, -/turf/simulated/floor/tiled/eris/white/bluecorner, +/turf/simulated/floor/plating, /area/shuttle/excursion/general) "qTB" = ( -/obj/machinery/computer/ship/engines{ - dir = 1; - icon_state = "computer" +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -28; + req_access = list(); + req_one_access = list(11,67) }, -/turf/simulated/floor/tiled/eris/white/bluecorner, -/area/shuttle/excursion/cockpit) +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/cargo) "qYJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 1 @@ -24300,24 +24658,45 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "reu" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/firedoor/glass, /obj/structure/cable/cyan{ d1 = 1; - d2 = 2; - icon_state = "1-2" + d2 = 4; + icon_state = "1-4" }, -/obj/machinery/door/airlock/hatch{ - req_one_access = list(67) +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" }, -/turf/simulated/floor/tiled/eris/techmaint_panels, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 6; + icon_state = "intact-aux" + }, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) "rhv" = ( -/obj/structure/bed/chair/shuttle{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 8; + icon_state = "intact-fuel" }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) "rju" = ( /obj/structure/foamedmetal, @@ -24423,12 +24802,16 @@ /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) "rFo" = ( -/obj/effect/floor_decal/industrial/hatch/yellow, -/obj/structure/handrail{ - dir = 1 +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 }, -/turf/simulated/floor/tiled/eris/dark/gray_perforated, -/area/shuttle/excursion/cargo) +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) "rIS" = ( /obj/machinery/door/airlock/glass_mining{ name = "Delivery Office"; @@ -24448,27 +24831,60 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/delivery) +"rJm" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration/pilot_office) "rLd" = ( -/obj/machinery/door/airlock/glass_external, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 +/obj/machinery/airlock_sensor{ + dir = 8; + pixel_x = 26; + pixel_y = -27 }, -/obj/effect/floor_decal/industrial/warning{ - dir = 4 +/obj/effect/map_helper/airlock/sensor/int_sensor, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 8; + icon_state = "intact-fuel" }, -/obj/effect/map_helper/airlock/door/int_door, -/turf/simulated/floor/tiled/eris/techmaint_panels, -/area/shuttle/excursion/cargo) +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 8; + icon_state = "intact-aux" + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) "rUl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 10; + icon_state = "intact-fuel" + }, /obj/structure/shuttle/engine/heater, -/obj/structure/window/reinforced{ - dir = 1 +/turf/simulated/floor/plating, +/area/shuttle/excursion/general) +"scI" = ( +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 }, -/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ - dir = 10 +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/turf/simulated/floor/plating/eris/under, -/area/shuttle/excursion/cargo) +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration) "sdI" = ( /obj/machinery/power/apc{ alarms_hidden = 1; @@ -24484,42 +24900,9 @@ /turf/simulated/floor/tiled/eris/white, /area/shuttle/medivac/general) "shd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ - dir = 4 - }, -/obj/machinery/door/airlock/glass_external{ - icon_state = "door_locked"; - id_tag = "expshuttle_door_cargo"; - locked = 1; - req_one_access = list() - }, -/obj/machinery/button/remote/airlock{ - desiredstate = 1; - dir = 4; - icon_state = "doorctrl0"; - id = "expshuttle_door_cargo"; - name = "hatch bolt control"; - pixel_x = -32; - req_one_access = list(19,43,67); - specialfunctions = 4 - }, -/turf/simulated/floor/tiled/eris/techmaint_panels, -/area/shuttle/excursion/cargo) -"slB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/eris/dark/gray_perforated, -/area/shuttle/excursion/cargo) +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) "sqj" = ( /obj/structure/cable/green{ dir = 1; @@ -24532,11 +24915,10 @@ /turf/simulated/floor/tiled/eris/dark/techfloor_grid, /area/shuttle/securiship/engines) "sFS" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{ +/obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/meter, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) "sHL" = ( /obj/structure/cable/green{ @@ -24565,14 +24947,10 @@ /obj/effect/map_helper/airlock/door/ext_door, /turf/simulated/floor/tiled/eris/techmaint_panels, /area/shuttle/securiship/general) -"sTT" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "shuttle_inbound" - }, -/obj/structure/plasticflaps, -/turf/simulated/floor/plating/eris/under, -/area/shuttle/excursion/cargo) +"tmE" = ( +/obj/machinery/suit_cycler/pilot, +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration/pilot_office) "tnc" = ( /obj/structure/cable/cyan{ d1 = 1; @@ -24644,22 +25022,15 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "tEV" = ( -/obj/machinery/oxygen_pump{ - pixel_y = -32 - }, /obj/structure/handrail{ dir = 1 }, -/obj/machinery/light/small{ - dir = 4; - pixel_y = 0 +/obj/structure/closet/emergsuit_wall{ + dir = 1; + pixel_y = -32 }, -/obj/effect/map_helper/airlock/atmos/pump_out_internal, -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/dark/danger, -/area/shuttle/excursion/cargo) +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) "tTA" = ( /obj/effect/floor_decal/corner/blue{ dir = 10; @@ -24723,16 +25094,19 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "uqh" = ( -/obj/machinery/light{ - dir = 1 +/obj/structure/handrail, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 }, -/obj/structure/table/rack/shelf, -/obj/item/weapon/tank/oxygen, -/obj/item/device/suit_cooling_unit, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/suit/space/void/pilot, -/obj/item/clothing/head/helmet/space/void/pilot, -/turf/simulated/floor/tiled/eris/techmaint_perforated, +/obj/structure/closet/emergsuit_wall{ + pixel_y = 32 + }, +/obj/item/device/radio/intercom{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) "urb" = ( /obj/machinery/portable_atmospherics/canister/air, @@ -24756,12 +25130,14 @@ /turf/simulated/floor/tiled/eris/dark/techfloor_grid, /area/shuttle/securiship/cockpit) "utX" = ( -/obj/machinery/computer/shuttle_control/explore/excursion{ - dir = 1; - icon_state = "computer" +/obj/machinery/conveyor_switch/oneway{ + id = "shuttle_outbound" }, -/turf/simulated/floor/tiled/eris/white/bluecorner, -/area/shuttle/excursion/cockpit) +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/cargo) "uzs" = ( /obj/machinery/shipsensors{ dir = 1 @@ -24782,16 +25158,11 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "uGF" = ( -/obj/item/device/radio/intercom{ - dir = 1; - pixel_y = 24; - req_access = list() - }, -/obj/structure/handrail, -/obj/effect/map_helper/airlock/atmos/chamber_pump, -/obj/machinery/atmospherics/unary/vent_pump/high_volume, -/turf/simulated/floor/tiled/eris/dark/danger, -/area/shuttle/excursion/cargo) +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/shuttle/excursion/general) "uIH" = ( /obj/structure/cable/green{ dir = 1; @@ -24805,6 +25176,18 @@ }, /turf/simulated/floor/tiled/eris/steel/gray_perforated, /area/shuttle/securiship/general) +"uQo" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration/pilot_office) "uRY" = ( /obj/machinery/atmospherics/portables_connector{ dir = 1 @@ -24834,14 +25217,18 @@ /turf/simulated/floor/plating/eris/under, /area/shuttle/medivac/general) "uVS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5; - icon_state = "intact-scrubbers" +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 8; + icon_state = "intact-fuel" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 +/obj/structure/extinguisher_cabinet{ + dir = 8; + pixel_x = 30 }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/structure/table/steel, +/obj/machinery/recharger, +/obj/machinery/light, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "uZd" = ( /obj/structure/bed/chair/bay/chair/padded/beige{ @@ -24867,36 +25254,38 @@ /turf/simulated/floor/tiled/eris/dark/techfloor, /area/shuttle/securiship/general) "vpU" = ( -/obj/machinery/light{ +/obj/effect/floor_decal/industrial/warning{ dir = 4 }, -/obj/machinery/power/apc{ - dir = 4; - name = "east bump"; - pixel_x = 28 - }, -/obj/structure/cable/cyan{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/bed/chair/bay/comfy/blue{ - dir = 1; - icon_state = "bay_comfychair_preview"; - pixel_y = 5 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, -/turf/simulated/floor/tiled/eris/white/bluecorner, -/area/shuttle/excursion/cockpit) +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/cargo) "vqZ" = ( /turf/simulated/wall/rshull, /area/shuttle/securiship/cockpit) "vre" = ( -/obj/machinery/atmospherics/portables_connector, -/obj/effect/floor_decal/industrial/outline/blue, -/obj/machinery/portable_atmospherics/canister/air, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/structure/extinguisher_cabinet{ + dir = 8; + pixel_x = 30 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/table/steel, +/obj/machinery/cell_charger, +/obj/random/powercell, +/obj/item/stack/material/tritium{ + amount = 5 + }, +/turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "vux" = ( /obj/structure/cable/green{ @@ -24923,20 +25312,23 @@ /turf/simulated/floor, /area/maintenance/station/sec_upper) "vFT" = ( -/obj/machinery/door/airlock/hatch{ - req_one_access = newlist() - }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/firedoor/glass, -/obj/machinery/atmospherics/pipe/simple/hidden, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) +"vJd" = ( +/obj/effect/floor_decal/industrial/warning/full, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "expshuttle_docker_pump_out_external" }, -/turf/simulated/floor/tiled/eris/techmaint_panels, -/area/shuttle/excursion/cargo) +/obj/effect/map_helper/airlock/atmos/pump_out_external, +/obj/structure/handrail, +/turf/simulated/floor/plating, +/area/shuttle/excursion/general) "vQT" = ( /obj/structure/bed/chair/bay/chair/padded/beige{ dir = 4; @@ -24980,23 +25372,23 @@ /turf/simulated/floor/tiled/eris/steel/cyancorner, /area/shuttle/medivac/cockpit) "wiE" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/firealarm{ - dir = 4; - layer = 3.3; - pixel_x = 26 +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 10; + icon_state = "intact-fuel" }, -/obj/structure/handrail{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, /obj/structure/cable/cyan{ d1 = 1; - d2 = 2; - icon_state = "1-2" + d2 = 8; + icon_state = "1-8" }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) "wls" = ( /obj/machinery/status_display{ @@ -25067,84 +25459,114 @@ /turf/simulated/floor/tiled/eris/dark/techfloor_grid, /area/shuttle/securiship/engines) "wJy" = ( -/obj/item/device/radio/intercom{ - dir = 4; - pixel_x = 24 - }, -/obj/machinery/atmospherics/unary/vent_pump/on, -/turf/simulated/floor/tiled/eris/white/bluecorner, -/area/shuttle/excursion/general) -"wOI" = ( -/obj/machinery/atmospherics/portables_connector{ +/obj/structure/handrail{ dir = 1 }, -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/portable_atmospherics/canister/empty, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, -/area/shuttle/excursion/general) -"wPw" = ( -/obj/machinery/atmospherics/pipe/manifold4w/visible, -/turf/simulated/floor/tiled/eris/dark/danger, -/area/shuttle/excursion/cargo) -"wPF" = ( -/obj/structure/bed/chair/shuttle, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, -/area/shuttle/excursion/general) -"wRt" = ( -/obj/machinery/mineral/equipment_vendor/survey, -/turf/simulated/floor/tiled/eris/techmaint_perforated, -/area/shuttle/excursion/cargo) -"wRy" = ( -/obj/machinery/door/airlock/glass_external, -/obj/effect/map_helper/airlock/door/ext_door, -/turf/simulated/floor/tiled/eris/techmaint_panels, -/area/shuttle/medivac/general) -"wSA" = ( -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 6; - icon_state = "intact" - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, -/area/shuttle/excursion/general) -"wUW" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, /obj/machinery/alarm{ dir = 1; icon_state = "alarm0"; pixel_y = -22 }, -/turf/simulated/floor/tiled/eris/white/bluecorner, -/area/shuttle/excursion/general) -"wWn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/handrail{ +/obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) +"wMg" = ( +/obj/machinery/light, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/tether/exploration) +"wOI" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/shuttle/excursion/general) +"wPw" = ( +/obj/machinery/door/airlock/glass_external, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/map_helper/airlock/door/int_door, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 8; + icon_state = "intact-fuel" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 8; + icon_state = "intact-aux" + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) +"wPF" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/turf/simulated/wall/rshull, +/area/shuttle/excursion/general) +"wRt" = ( +/obj/structure/bed/chair/bay/shuttle{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/cockpit) +"wRy" = ( +/obj/machinery/door/airlock/glass_external, +/obj/effect/map_helper/airlock/door/ext_door, +/turf/simulated/floor/tiled/eris/techmaint_panels, +/area/shuttle/medivac/general) +"wSA" = ( /obj/structure/cable/cyan{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) +"wUW" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/hatch{ + req_one_access = list(67) + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) +"wWn" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) "wXX" = ( /obj/effect/floor_decal/borderfloor{ @@ -25194,9 +25616,8 @@ /turf/simulated/wall/rshull, /area/shuttle/securiship/engines) "xeA" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/cyan, -/obj/machinery/meter, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) "xir" = ( /obj/machinery/airlock_sensor{ @@ -25211,12 +25632,10 @@ /turf/simulated/floor/tiled/eris/white, /area/shuttle/medivac/general) "xiw" = ( -/obj/structure/cable/cyan{ - d2 = 8; - icon_state = "0-8" +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 }, -/obj/machinery/power/smes/buildable/point_of_interest, -/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/turf/simulated/wall/rshull, /area/shuttle/excursion/general) "xnm" = ( /obj/structure/cable/green{ @@ -25246,18 +25665,13 @@ /turf/simulated/wall/rshull, /area/shuttle/securiship/engines) "xvO" = ( -/obj/machinery/oxygen_pump{ - pixel_y = -32 +/obj/machinery/airlock_sensor{ + dir = 8; + pixel_x = 26; + pixel_y = -27 }, -/obj/structure/handrail{ - dir = 1 - }, -/obj/effect/map_helper/airlock/atmos/chamber_pump, -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/dark/danger, -/area/shuttle/excursion/cargo) +/turf/simulated/wall/rshull, +/area/shuttle/excursion/general) "xwM" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -25281,26 +25695,11 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "xAb" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 4 +/obj/machinery/conveyor_switch/oneway{ + id = "shuttle_inbound" }, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 1; - icon_state = "pdoor0"; - id = "shuttle blast"; - name = "Shuttle Blast Doors"; - opacity = 0 - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating/eris/under, +/obj/effect/floor_decal/industrial/warning/full, +/turf/simulated/floor/plating, /area/shuttle/excursion/general) "xBW" = ( /obj/structure/disposalpipe/segment{ @@ -25327,26 +25726,11 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "xCq" = ( -/obj/machinery/recharger, -/obj/structure/table/steel, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/yellow, -/obj/machinery/power/apc{ - alarms_hidden = 1; - dir = 2; - name = "south bump"; - pixel_y = -28; - req_access = list(67) - }, -/obj/structure/cable/cyan{ - d2 = 8; - icon_state = "0-8" - }, -/turf/simulated/floor/tiled/eris/dark/gray_perforated, -/area/shuttle/excursion/cargo) +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/general) "xLC" = ( /obj/structure/cable/green{ dir = 1; @@ -25359,25 +25743,32 @@ /turf/simulated/wall, /area/quartermaster/office) "ydg" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "shuttle_inbound" +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 }, -/obj/effect/floor_decal/industrial/warning/full, -/turf/simulated/floor/plating/eris/under, -/area/shuttle/excursion/cargo) +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "shuttle blast"; + name = "Shuttle Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/shuttle/excursion/general) "ydG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 +/obj/machinery/atmospherics/binary/pump/fuel{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/yellow, -/obj/machinery/airlock_sensor{ +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ dir = 8; - pixel_x = 26; - pixel_y = -27 + icon_state = "intact-aux" }, -/obj/effect/map_helper/airlock/sensor/int_sensor, -/turf/simulated/floor/tiled/eris/dark/gray_perforated, -/area/shuttle/excursion/cargo) +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/general) "ydR" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, @@ -36125,20 +36516,20 @@ abY acE acK acK +adj +adj +adj acK acK acK acK acK -acK -acK -acK -acK -acK +adj ydg -sTT -aWp -aWp +ydg +ydg +adj +acK acK ams aOz @@ -36267,20 +36658,20 @@ akS acE acK acK +aaY +aQX adj adj eBO adj eBO adj -eBO -aWp -aWp -aWp +adj +kCz aZy aWG -aWp -aWp +adj +adj acK ams aOz @@ -36408,20 +36799,20 @@ abe abX acE acK -aWL +acK adj -aXD -qJK adj +adj +aSb oNI iPK -eKK +rFo aWp jsf aWn aUJ aXb -aWp +adj iJT aaR ams @@ -36554,16 +36945,16 @@ afh adj uqh wUW -adj +aSq oqg cgm bDD -aWp -aiK +evl +adj iCh wRt eug -aWp +adj cQa aaR ams @@ -36695,21 +37086,21 @@ acK qxW iQS wJy -ijU +adj aVi hTW -cgm +adj akx -aWp -opv -hGJ +adj +adj +lfJ geP lfJ aiX aZD acK ams -aUl +aXq abe aoS aoS @@ -36837,21 +37228,21 @@ adj adj adj adj -kCz adj -wPF -uVS +adj +adj +adj oDB -aWp -kTn +hsy +adj hNx -geP +kTn ckU aiY -aWp -acK +fmc +vJd ams -aXq +ghy abe abe abe @@ -36975,22 +37366,22 @@ aaa abe acs acF -qxW +adj qEn oYj qTB qPS iWG -oqg +aWL hpj rhv gde -kgD +adj owc -geP -rFo -aiY -aWp +kTn +agy +qJK +brK acK ams amq @@ -37117,8 +37508,8 @@ aaa abe abY acE -qxW -iFx +adj +qEn fQo lSD eQX @@ -37128,7 +37519,7 @@ wSA wiE vFT qcm -slB +vFT qmq jQx shd @@ -37259,22 +37650,22 @@ aaa abe acA acG -qxW +adj doD vpU utX -oUa -adj -adj +qPS +aUf +aXD isN +aXD +hyH adj -aWp -aiX kUK ydG xCq -aXr -aWp +qJK +kPW acK ams amq @@ -37282,8 +37673,8 @@ aQb aOx aOx abe -aSi -agJ +ehc +hkB aiV abn apt @@ -37403,29 +37794,29 @@ abX acE adj adj +abL +aRZ +adj +aUl adj adj -pwj adj -hsy -evl -nlw wOI -aiY +adj aXS rLd -aWp -aiY -aWp -acK +opv +uVS +esH +vJd ams -amq +eof abe abe abe abe +adV aSi -agJ aiV apy apY @@ -37544,16 +37935,16 @@ abe abX acE acK -qxW +adj bFX cow -hyH +adj mnk kVs elB ejd egf -aZD +adj uGF wPw xvO @@ -37561,13 +37952,13 @@ aRv aXC acK ams -anz +amq abe aRQ -agK -aQX +dIM +aRQ +adV aSi -agJ aiV aiV aiV @@ -37687,33 +38078,33 @@ abX acE acK afh -adj feb -dFx +feb adj +aUR dhW xeA sFS gAZ -aWp +adj gsT -pPy +ikk efQ -aWp +wPF cQa aaR ams -amq -abe -aoU +aSx +krj +rJm aaX -aRZ +uQo +adV aSi agJ agJ agJ agJ -agJ aqr arN asz @@ -37829,29 +38220,29 @@ abX acE acK acK -adj +aiK nwM -xiw adj +aVQ vre jcr nzo -gAZ -aWp +ijU +kgD dhq iEV tEV -aWp +xiw rUl aaR ams -aQL +eAm abe aoU -aaY -agK +mUI +kkg +adV aSi -aRt aaF aeM ahs @@ -37971,33 +38362,33 @@ akS acE acK acK -adj +aQL xAb adj adj adj -bRO adj -aUR -aVQ +aYw +adj +adj aWs gNy -aWp -aWp -aWp +pwj +ozS +adj acK ams -aSq +eAm abe -agK aRX -aSb +tmE +aRX +adV aSi -aRt aib aib aib -agJ +nEe aqu arP asB @@ -38114,28 +38505,28 @@ acE acK acK acK -aYw acK acK acK acK acK -aUf -aUf +aYD acK +adj +adj +nlw +adj +adj acK acK -aWp -aWp -acK ams -amq +scI abe abe abe abe -aSx -agy +adV +aSi abj aib aib @@ -38256,12 +38647,12 @@ acH adb adk adF -aYD +adF adF adF adF adb -adF +bRO adk adF adF @@ -38271,14 +38662,14 @@ adF adk adb amt -anz +wMg abe awE aQK abe -aSi -agJ -agJ +lLA +imZ +adV agJ aib agJ @@ -38398,12 +38789,12 @@ acC adc adl adH -abL -aWk -aWk -aWk +acC +acC +acC +acC aNk -aVI +dFx aYQ aSK aWk diff --git a/maps/tether/tether_areas.dm b/maps/tether/tether_areas.dm index 1f004c4b17..7ed327bf89 100644 --- a/maps/tether/tether_areas.dm +++ b/maps/tether/tether_areas.dm @@ -495,6 +495,22 @@ name = "\improper Entertainment Stage" icon_state = "library" +/area/tether/surfacebase/funny/clownoffice + name = "\improper Clown's Office" + icon_state = "library" + +/area/tether/surfacebase/funny/mimeoffice + name = "\improper Mime's Office" + icon_state = "library" + +/area/tether/surfacebase/funny/tomfoolery + name = "\improper Tomfoolery Closet" + icon_state = "library" + +/area/tether/surfacebase/funny/hideyhole + name = "\improper Pilferer's Hole" + icon_state = "library" + /area/tether/surfacebase/entertainment/backstage name = "\improper Entertainment Backstage" icon_state = "library" @@ -1299,6 +1315,11 @@ sound_env = SMALL_ENCLOSED ambience = AMBIENCE_GENERIC +/area/tether/exploration/pilot_office + name = "\improper Pilot's Office" + sound_env = STANDARD_STATION + ambience = AMBIENCE_GENERIC + /area/shuttle/excursion requires_power = 1 icon_state = "shuttle2" diff --git a/sound/weapons/ballistics/boltactionclose.ogg b/sound/weapons/ballistics/boltactionclose.ogg new file mode 100644 index 0000000000..00779e44fd Binary files /dev/null and b/sound/weapons/ballistics/boltactionclose.ogg differ diff --git a/sound/weapons/ballistics/boltactionopen.ogg b/sound/weapons/ballistics/boltactionopen.ogg new file mode 100644 index 0000000000..bed09a15e1 Binary files /dev/null and b/sound/weapons/ballistics/boltactionopen.ogg differ diff --git a/tgui/packages/tgui/interfaces/AdminShuttleController.js b/tgui/packages/tgui/interfaces/AdminShuttleController.js new file mode 100644 index 0000000000..24e498e8d3 --- /dev/null +++ b/tgui/packages/tgui/interfaces/AdminShuttleController.js @@ -0,0 +1,89 @@ +import { sortBy } from 'common/collections'; +import { Fragment } from 'inferno'; +import { useBackend } from "../backend"; +import { Box, Button, Flex, Icon, LabeledList, ProgressBar, Section, Table } from "../components"; +import { Window } from "../layouts"; + +export const AdminShuttleController = (props, context) => { + const { act, data } = useBackend(context); + + return ( + + + + + + ); +}; + +export const ShuttleList = (props, context) => { + const { act, data } = useBackend(context); + + const { + shuttles, + overmap_ships, + } = data; + + return ( +
+
+ + {sortBy(f => f.name)(shuttles).map(shuttle => ( + + +
+
+
+ + {sortBy(f => f.name?.toLowerCase() || f.name || f.ref)(overmap_ships).map(ship => ( + + +
+
+
+ ); +}; + +/* Helpers */ +const shuttleStatusToWords = status => { + switch (status) { + case 0: + return "Idle"; + case 1: + return "Warmup"; + case 2: + return "Transit"; + default: + return "UNK"; + } +}; \ No newline at end of file diff --git a/tgui/packages/tgui/interfaces/CharacterDirectory.js b/tgui/packages/tgui/interfaces/CharacterDirectory.js new file mode 100644 index 0000000000..35dcb133f1 --- /dev/null +++ b/tgui/packages/tgui/interfaces/CharacterDirectory.js @@ -0,0 +1,186 @@ +import { round } from 'common/math'; +import { Fragment } from 'inferno'; +import { useBackend, useLocalState } from "../backend"; +import { Box, Button, Flex, Icon, LabeledList, Modal, ProgressBar, Section, Table } from "../components"; +import { Window } from "../layouts"; + +const getTagColor = tag => { + switch (tag) { + case "Unset": + return "label"; + case "Pred": + return "red"; + case "Prey": + return "blue"; + case "Switch": + return "purple"; + case "Non-Vore": + return "green"; + } +}; + +export const CharacterDirectory = (props, context) => { + const { act, data } = useBackend(context); + + const { + personalVisibility, + personalTag, + } = data; + + const [overlay, setOverlay] = useLocalState(context, "overlay", null); + + return ( + + + {overlay && ( + + ) || ( + +
+ + +
+ +
+ )} +
+
+ ); +}; + +const ViewCharacter = (props, context) => { + const [overlay, setOverlay] = useLocalState(context, "overlay", null); + + return ( +
setOverlay(null)} /> + }> +
+ + {overlay.tag} + +
+
+ + {overlay.character_ad ? overlay.character_ad.split("\n").map((c, i) => {c}) : "Unset."} + +
+
+ + {overlay.ooc_notes ? overlay.ooc_notes.split("\n").map((c, i) => {c}) : "Unset."} + +
+
+ + {overlay.flavor_text ? overlay.flavor_text.split("\n").map((c, i) => {c}) : "Unset."} + +
+
+ ); +}; + +const CharacterDirectoryList = (props, context) => { + const { act, data } = useBackend(context); + + const { + directory, + } = data; + + const [sortId, _setSortId] = useLocalState(context, "sortId", "name"); + const [sortOrder, _setSortOrder] = useLocalState(context, "sortOrder", "name"); + const [overlay, setOverlay] = useLocalState(context, "overlay", null); + + return ( +
act("refresh")} /> + }> + + + Name + Tag + View + + {directory + .sort((a, b) => { + const i = sortOrder ? 1 : -1; + return a[sortId].localeCompare(b[sortId]) * i; + }) + .map((character, i) => ( + + {character.name} + {character.tag} + +
+
+ ); +}; + +const SortButton = (props, context) => { + const { act, data } = useBackend(context); + + const { + id, + children, + } = props; + + // Hey, same keys mean same data~ + const [sortId, setSortId] = useLocalState(context, "sortId", "name"); + const [sortOrder, setSortOrder] = useLocalState(context, "sortOrder", "name"); + + return ( + + + + ); +}; \ No newline at end of file diff --git a/tgui/packages/tgui/interfaces/Communicator.js b/tgui/packages/tgui/interfaces/Communicator.js index 90a52fe578..cc566e70d5 100644 --- a/tgui/packages/tgui/interfaces/Communicator.js +++ b/tgui/packages/tgui/interfaces/Communicator.js @@ -2,7 +2,7 @@ import { filter } from 'common/collections'; import { decodeHtmlEntities, toTitleCase } from 'common/string'; import { Fragment } from 'inferno'; import { useBackend, useLocalState } from "../backend"; -import { Box, Button, Flex, Icon, LabeledList, Input, ProgressBar, Section, Table } from "../components"; +import { Box, ByondUi, Button, Flex, Icon, LabeledList, Input, ProgressBar, Section, Table } from "../components"; import { Window } from "../layouts"; import { CrewManifestContent } from './CrewManifest'; @@ -24,23 +24,151 @@ export const Communicator = (props, context) => { const { currentTab, + video_comm, + mapRef, } = data; + /* 0: Fullscreen Video + * 1: Popup Video + * 2: Minimized Video + */ + const [videoSetting, setVideoSetting] = useLocalState(context, 'videoSetting', 0); + return ( - - - {TabToTemplate[currentTab] || } - - + {video_comm && } + {(!video_comm || videoSetting !== 0) && ( + + + + {TabToTemplate[currentTab] || } + + + + )} ); }; +const VideoComm = (props, context) => { + const { act, data } = useBackend(context); + + const { + video_comm, + mapRef, + } = data; + + const { + videoSetting, + setVideoSetting, + } = props; + + if (videoSetting === 0) { + return ( + + + + + + + + + + - - - - - - - - ))} - - - + + + ))} + + ); }; \ No newline at end of file diff --git a/tgui/packages/tgui/interfaces/OvermapFull.js b/tgui/packages/tgui/interfaces/OvermapFull.js new file mode 100644 index 0000000000..758a0fd18d --- /dev/null +++ b/tgui/packages/tgui/interfaces/OvermapFull.js @@ -0,0 +1,39 @@ +import { round } from 'common/math'; +import { Fragment } from 'inferno'; +import { useBackend, useLocalState } from "../backend"; +import { Box, Button, Flex, Icon, LabeledList, ProgressBar, Section, Table, AnimatedNumber, Tabs } from "../components"; +import { Window } from "../layouts"; +import { OvermapEnginesContent } from './OvermapEngines'; +import { OvermapHelmContent } from './OvermapHelm'; +import { OvermapShipSensorsContent } from './OvermapShipSensors'; + +export const OvermapFull = (props, context) => { + const [tab, setTab] = useLocalState(context, 'overmapFullState', 0); + + return ( + + + + setTab(0)}> + Engines + + setTab(1)}> + Helm + + setTab(2)}> + Sensors + + + {tab === 0 && } + {tab === 1 && } + {tab === 2 && } + + + ); +}; \ No newline at end of file diff --git a/tgui/packages/tgui/interfaces/OvermapHelm.js b/tgui/packages/tgui/interfaces/OvermapHelm.js index 0ddd5112d6..0895a7a93e 100644 --- a/tgui/packages/tgui/interfaces/OvermapHelm.js +++ b/tgui/packages/tgui/interfaces/OvermapHelm.js @@ -6,27 +6,34 @@ import { Window } from "../layouts"; import { OvermapFlightData, OvermapPanControls } from './common/Overmap'; export const OvermapHelm = (props, context) => { - const { act, data } = useBackend(context); return ( - - - - - - - - - - - - + ); }; +export const OvermapHelmContent = (props, context) => { + return ( + + + + + + + + + + + + + + + ); +}; + export const OvermapFlightDataWrap = (props, context) => { const { act, data } = useBackend(context); diff --git a/tgui/packages/tgui/interfaces/OvermapShipSensors.js b/tgui/packages/tgui/interfaces/OvermapShipSensors.js index 980b27446e..a5377ba621 100644 --- a/tgui/packages/tgui/interfaces/OvermapShipSensors.js +++ b/tgui/packages/tgui/interfaces/OvermapShipSensors.js @@ -5,6 +5,16 @@ import { Box, Button, Flex, Icon, LabeledList, ProgressBar, Section } from "../c import { Window } from "../layouts"; export const OvermapShipSensors = (props, context) => { + return ( + + + + + + ); +}; + +export const OvermapShipSensorsContent = (props, context) => { const { act, data } = useBackend(context); const { viewing, @@ -19,93 +29,91 @@ export const OvermapShipSensors = (props, context) => { } = data; return ( - - -
+ +
+ + + + )}> + + + {status} + + - - - )}> - - - {status} - - - - - - - {health} / {max_health} - - - - - {heat < critical_heat * 0.5 && ( - Temperature low. - ) || heat < critical_heat * 0.75 && ( - Sensor temperature high! - ) || ( - TEMPERATURE CRITICAL: Disable or reduce power immediately! - )} - - - + + + + {health} / {max_health} + + + + + {heat < critical_heat * 0.5 && ( + Temperature low. + ) || heat < critical_heat * 0.75 && ( + Sensor temperature high! + ) || ( + TEMPERATURE CRITICAL: Disable or reduce power immediately! + )} + + + +
+
+ {contacts.length && contacts.map(alien => ( + + )) || ( + + No contacts on sensors. + + )} +
+ {data.status === "MISSING" && ( +
+
-
- {contacts.length && contacts.map(alien => ( - - )) || ( - - No contacts on sensors. - - )} -
- {data.status === "MISSING" && ( -
- -
- ) || null} - - + ) || null} +
); }; \ No newline at end of file diff --git a/tgui/packages/tgui/interfaces/VorePanel.js b/tgui/packages/tgui/interfaces/VorePanel.js index e6621c491b..7fc5d66541 100644 --- a/tgui/packages/tgui/interfaces/VorePanel.js +++ b/tgui/packages/tgui/interfaces/VorePanel.js @@ -221,6 +221,7 @@ const VoreSelectedBelly = (props, context) => { contaminates, contaminate_flavor, contaminate_color, + egg_type, escapable, interacts, contents, @@ -400,6 +401,12 @@ const VoreSelectedBelly = (props, context) => { selected={can_taste} content={can_taste ? "Yes" : "No"} /> + +