diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 31f3f0cb97b..3d40b556f69 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -87,8 +87,6 @@ for(var/area/RA in related) for(var/obj/machinery/camera/C in RA) C.network.Remove("Atmosphere Alarms") - for (var/obj/machinery/alarm/AA in RA) - AA.update_icon() for(var/mob/living/silicon/aiPlayer in player_list) aiPlayer.cancelAlarm("Atmosphere", src, src) for(var/obj/machinery/computer/station_alert/a in machines) @@ -101,8 +99,6 @@ for(var/obj/machinery/camera/C in RA) cameras += C C.network.Add("Atmosphere Alarms") - for (var/obj/machinery/alarm/AA in RA) - AA.update_icon() for(var/mob/living/silicon/aiPlayer in player_list) aiPlayer.triggerAlarm("Atmosphere", src, cameras, src) for(var/obj/machinery/computer/station_alert/a in machines) @@ -110,6 +106,10 @@ air_doors_close() atmosalm = danger_level + for(var/area/RA in related) + for (var/obj/machinery/alarm/AA in RA) + AA.update_icon() + return 1 return 0 diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm index acc7c3e853d..b75ed7c4587 100644 --- a/code/game/jobs/job/captain.dm +++ b/code/game/jobs/job/captain.dm @@ -5,7 +5,7 @@ faction = "Station" total_positions = 1 spawn_positions = 1 - supervisors = "Nanotrasen officials and Space law" + supervisors = "Nanotrasen officials and Corporate Regulations" selection_color = "#ccccff" idtype = /obj/item/weapon/card/id/gold req_admin_notify = 1 diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index fe868e82b5c..76139556270 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -411,6 +411,12 @@ return 1 /obj/machinery/alarm/proc/apply_mode() + //propagate mode to other air alarms in the area + //TODO: make it so that players can choose between applying the new mode to the room they are in (related area) vs the entire alarm area + for (var/area/RA in alarm_area.related) + for (var/obj/machinery/alarm/AA in RA) + AA.mode = mode + switch(mode) if(AALARM_MODE_SCRUBBING) for(var/device_id in alarm_area.air_scrub_names) diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 2949498ae3f..38985931728 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -253,7 +253,7 @@ switch(href_list["field"]) if("fingerprint") if (istype(src.active1, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input fingerprint hash:", "Med. records", src.active1.fields["fingerprint"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please input fingerprint hash:", "Med. records", src.active1.fields["fingerprint"], null) as text)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) return src.active1.fields["fingerprint"] = t1 @@ -271,55 +271,55 @@ src.active1.fields["age"] = t1 if("mi_dis") if (istype(src.active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) as text)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return src.active2.fields["mi_dis"] = t1 if("mi_dis_d") if (istype(src.active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) as message),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) as message)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return src.active2.fields["mi_dis_d"] = t1 if("ma_dis") if (istype(src.active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) as text)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return src.active2.fields["ma_dis"] = t1 if("ma_dis_d") if (istype(src.active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) as message),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) as message)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return src.active2.fields["ma_dis_d"] = t1 if("alg") if (istype(src.active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) as text)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return src.active2.fields["alg"] = t1 if("alg_d") if (istype(src.active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) as message),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) as message)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return src.active2.fields["alg_d"] = t1 if("cdi") if (istype(src.active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) as text)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return src.active2.fields["cdi"] = t1 if("cdi_d") if (istype(src.active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) as message),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) as message)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return src.active2.fields["cdi_d"] = t1 if("notes") if (istype(src.active2, /datum/data/record)) - var/t1 = copytext(html_encode(input("Please summarize notes:", "Med. records", html_decode(src.active2.fields["notes"]), null) as message),1,MAX_MESSAGE_LEN) + var/t1 = copytext(html_encode(trim(input("Please summarize notes:", "Med. records", html_decode(src.active2.fields["notes"]), null) as message)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return src.active2.fields["notes"] = t1 @@ -334,21 +334,21 @@ src.temp = text("Blood Type:
\n\tA- A+
\n\tB- B+
\n\tAB- AB+
\n\tO- O+
", src, src, src, src, src, src, src, src) if("b_dna") if (istype(src.active1, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input DNA hash:", "Med. records", src.active1.fields["dna"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please input DNA hash:", "Med. records", src.active1.fields["dna"], null) as text)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) return src.active1.fields["dna"] = t1 if("vir_name") var/datum/data/record/v = locate(href_list["edit_vir"]) if (v) - var/t1 = copytext(sanitize(input("Please input pathogen name:", "VirusDB", v.fields["name"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please input pathogen name:", "VirusDB", v.fields["name"], null) as text)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) return v.fields["name"] = t1 if("vir_desc") var/datum/data/record/v = locate(href_list["edit_vir"]) if (v) - var/t1 = copytext(sanitize(input("Please input information about pathogen:", "VirusDB", v.fields["description"], null) as message),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please input information about pathogen:", "VirusDB", v.fields["description"], null) as message)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) return v.fields["description"] = t1 @@ -451,7 +451,7 @@ if (!( istype(src.active2, /datum/data/record) )) return var/a2 = src.active2 - var/t1 = copytext(sanitize(input("Add Comment:", "Med. records", null, null) as message),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Add Comment:", "Med. records", null, null) as message)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return var/counter = 1 diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 58a77c950d4..e7060f75775 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -387,7 +387,7 @@ What a mess.*/ if (!( istype(active2, /datum/data/record) )) return var/a2 = active2 - var/t1 = copytext(sanitize(input("Add Comment:", "Secure. records", null, null) as message),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Add Comment:", "Secure. records", null, null) as message)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2)) return var/counter = 1 @@ -450,19 +450,19 @@ What a mess.*/ switch(href_list["field"]) if("name") if (istype(active1, /datum/data/record)) - var/t1 = input("Please input name:", "Secure. records", active1.fields["name"], null) as text + var/t1 = reject_bad_name(input("Please input name:", "Secure. records", active1.fields["name"], null) as text) if ((!( t1 ) || !length(trim(t1)) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon)))) || active1 != a1) return active1.fields["name"] = t1 if("id") if (istype(active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input id:", "Secure. records", active1.fields["id"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please input id:", "Secure. records", active1.fields["id"], null) as text)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1)) return active1.fields["id"] = t1 if("fingerprint") if (istype(active1, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) as text)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1)) return active1.fields["fingerprint"] = t1 @@ -480,31 +480,31 @@ What a mess.*/ active1.fields["age"] = t1 if("mi_crim") if (istype(active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input minor disabilities list:", "Secure. records", active2.fields["mi_crim"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please input minor disabilities list:", "Secure. records", active2.fields["mi_crim"], null) as text)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2)) return active2.fields["mi_crim"] = t1 if("mi_crim_d") if (istype(active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please summarize minor dis.:", "Secure. records", active2.fields["mi_crim_d"], null) as message),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please summarize minor dis.:", "Secure. records", active2.fields["mi_crim_d"], null) as message)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2)) return active2.fields["mi_crim_d"] = t1 if("ma_crim") if (istype(active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input major diabilities list:", "Secure. records", active2.fields["ma_crim"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please input major diabilities list:", "Secure. records", active2.fields["ma_crim"], null) as text)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2)) return active2.fields["ma_crim"] = t1 if("ma_crim_d") if (istype(active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please summarize major dis.:", "Secure. records", active2.fields["ma_crim_d"], null) as message),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please summarize major dis.:", "Secure. records", active2.fields["ma_crim_d"], null) as message)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2)) return active2.fields["ma_crim_d"] = t1 if("notes") if (istype(active2, /datum/data/record)) - var/t1 = copytext(html_encode(input("Please summarize notes:", "Secure. records", html_decode(active2.fields["notes"]), null) as message),1,MAX_MESSAGE_LEN) + var/t1 = copytext(html_encode(trim(input("Please summarize notes:", "Secure. records", html_decode(active2.fields["notes"]), null) as message)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2)) return active2.fields["notes"] = t1 @@ -531,7 +531,7 @@ What a mess.*/ alert(usr, "You do not have the required rank to do this!") if("species") if (istype(active1, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please enter race:", "General records", active1.fields["species"], null) as message),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please enter race:", "General records", active1.fields["species"], null) as message)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1)) return active1.fields["species"] = t1 diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm index 27360e963e2..bc4d977dad1 100644 --- a/code/game/machinery/computer/skills.dm +++ b/code/game/machinery/computer/skills.dm @@ -325,19 +325,19 @@ What a mess.*/ switch(href_list["field"]) if("name") if (istype(active1, /datum/data/record)) - var/t1 = input("Please input name:", "Secure. records", active1.fields["name"], null) as text + var/t1 = reject_bad_name(input("Please input name:", "Secure. records", active1.fields["name"], null) as text) if ((!( t1 ) || !length(trim(t1)) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon)))) || active1 != a1) return active1.fields["name"] = t1 if("id") if (istype(active1, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input id:", "Secure. records", active1.fields["id"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please input id:", "Secure. records", active1.fields["id"], null) as text)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1)) return active1.fields["id"] = t1 if("fingerprint") if (istype(active1, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) as text)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1)) return active1.fields["fingerprint"] = t1 @@ -366,7 +366,7 @@ What a mess.*/ alert(usr, "You do not have the required rank to do this!") if("species") if (istype(active1, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please enter race:", "General records", active1.fields["species"], null) as message),1,MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Please enter race:", "General records", active1.fields["species"], null) as message)),1,MAX_MESSAGE_LEN) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1)) return active1.fields["species"] = t1 diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm index 73d30015494..b301a77e764 100644 --- a/code/game/objects/items/weapons/manuals.dm +++ b/code/game/objects/items/weapons/manuals.dm @@ -749,7 +749,7 @@ - + diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index c87d375e977..cead05c53e5 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -130,6 +130,10 @@ var/global/normal_ooc_colour = "#002eb8" log_ooc("(LOCAL) [mob.name]/[key] : [msg]") var/list/heard = get_mobs_in_view(7, src.mob) + var/mob/S = src.mob + var/display_name = S.key + if(S.stat != DEAD) + display_name = S.name for(var/mob/M in heard) if(!M.client) continue @@ -138,7 +142,6 @@ var/global/normal_ooc_colour = "#002eb8" continue //they are handled after that if(C.prefs.toggles & CHAT_LOOC) - var/display_name = src.key if(holder) if(holder.fakekey) if(C.holder) @@ -151,4 +154,4 @@ var/global/normal_ooc_colour = "#002eb8" var/prefix = "(R)LOOC" if (C.mob in heard) prefix = "LOOC" - C << "[prefix]: [src.key]: [msg]" \ No newline at end of file + C << "[prefix]: [display_name]: [msg]" \ No newline at end of file diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 167b3183aa7..9c820db0260 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -752,7 +752,7 @@ name = "Robotics labcoat" desc = "A labcoat with a few markings denoting it as the labcoat of roboticist." icon = 'icons/obj/custom_items.dmi' - icon_state = "aeneasrinil_open" + icon_state = "aeneasrinil" /obj/item/clothing/suit/storage/labcoat/fluff/pink //spaceman96: Trenna Seber name = "pink labcoat" diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 1d8f363953f..1a8b76c11c6 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -34,10 +34,10 @@ speech_verb = "mrowls" colour = "tajaran_signlang" key = "y" //only "dfpqxyz" left. - + //need to find a way to resolve possesive macros signlang_verb = list("flicks their left ear", "flicks their right ear", "swivels their ears", "twitches their tail", "curls the end of their tail", "arches their tail", "wiggles the end of their tail", "waves their tail about", "holds up a claw", "gestures with their left hand", "gestures with their right hand", "gestures with their tail", "gestures with their ears") - + flags = WHITELISTED | NONVERBAL /datum/language/skrell @@ -54,7 +54,7 @@ speech_verb = "shrieks" colour = "vox" key = "v" - flags = RESTRICTED + flags = RESTRICTED | UNTRANSLATABLE /datum/language/diona name = "Rootspeak" @@ -62,7 +62,7 @@ speech_verb = "creaks and rustles" colour = "soghun" key = "q" - flags = RESTRICTED + flags = RESTRICTED | UNTRANSLATABLE /datum/language/human name = "Sol Common" @@ -106,7 +106,7 @@ // Can we speak this language, as opposed to just understanding it? /mob/proc/can_speak(datum/language/speaking) - return (universal_speak || speaking in src.languages) + return ((universal_speak && !(speaking.flags & UNTRANSLATABLE)) || speaking in src.languages) //TBD /mob/verb/check_languages() diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 6a965571625..6260a297a1c 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -51,11 +51,6 @@ emp_act return -1 // complete projectile permutation - if(check_shields(P.damage, "the [P.name]")) - P.on_hit(src, 2, def_zone) - handle_suit_punctures(P.damage_type, P.damage) - return 2 - //BEGIN BOOK'S TASER NERF. if(istype(P, /obj/item/projectile/beam/stun)) var/datum/organ/external/select_area = get_organ(def_zone) // We're checking the outside, buddy! @@ -89,6 +84,10 @@ emp_act return //END TASER NERF + if(check_shields(P.damage, "the [P.name]")) + P.on_hit(src, 2, def_zone) + return 2 + var/datum/organ/external/organ = get_organ(check_zone(def_zone)) var/armor = getarmor_organ(organ, "bullet") @@ -190,7 +189,8 @@ emp_act /mob/living/carbon/human/proc/attacked_by(var/obj/item/I, var/mob/living/user, var/def_zone) if(!I || !user) return 0 - var/target_zone = get_zone_with_miss_chance(user.zone_sel.selecting, src) + var/target_zone = def_zone? def_zone : get_zone_with_miss_chance(user.zone_sel.selecting, src) + if(user == src) // Attacking yourself can't miss target_zone = user.zone_sel.selecting if(!target_zone) @@ -229,7 +229,7 @@ emp_act var/armor = run_armor_check(affecting, "melee", "Your armor has protected your [hit_area].", "Your armor has softened hit to your [hit_area].") var/weapon_sharp = is_sharp(I) var/weapon_edge = has_edge(I) - if ((weapon_sharp || weapon_edge) && prob(getarmor(def_zone, "melee"))) + if ((weapon_sharp || weapon_edge) && prob(getarmor(target_zone, "melee"))) weapon_sharp = 0 weapon_edge = 0 diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 8f65ee384e6..95e6dac83e4 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -67,7 +67,7 @@ add_language("Sol Common", 1) add_language("Tradeband", 1) add_language("Gutter", 1) - + //PDA pda = new(src) spawn(5) @@ -81,20 +81,20 @@ ..() usr << browse_rsc('html/paigrid.png') // Go ahead and cache the interface resources as early as possible - + // this function shows the information about being silenced as a pAI in the Status panel /mob/living/silicon/pai/proc/show_silenced() if(src.silence_time) var/timeleft = round((silence_time - world.timeofday)/10 ,1) stat(null, "Communications system reboot in -[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]") - - + + /mob/living/silicon/pai/Stat() ..() statpanel("Status") if (src.client.statpanel == "Status") show_silenced() - + if (proc_holder_list.len)//Generic list for proc_holder objects. for(var/obj/effect/proc_holder/P in proc_holder_list) statpanel("[P.panel]","",P) diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 0811a52cd88..ad6a0408ba1 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -15,7 +15,7 @@ /mob/living/silicon/say_understands(var/other,var/datum/language/speaking = null) //These only pertain to common. Languages are handled by mob/say_understands() if (!speaking) - if (istype(other, /mob/living/carbon/human)) + if (istype(other, /mob/living/carbon)) return 1 if (istype(other, /mob/living/silicon)) return 1 @@ -60,7 +60,7 @@ return var/verb = say_quote(message) - + //parse radio key and consume it var/message_mode = parse_message_mode(message, "general") if (message_mode) @@ -68,19 +68,19 @@ message = trim(copytext(message,2)) else message = trim(copytext(message,3)) - + if(message_mode && bot_type == IS_ROBOT && message_mode != "binary" && !R.is_component_functioning("radio")) src << "\red Your radio isn't functional at this time." return - - + + //parse language key and consume it var/datum/language/speaking = parse_language(message) if (speaking) verb = speaking.speech_verb message = copytext(message,3) - - + + switch(message_mode) if("department") switch(bot_type) diff --git a/code/modules/mob/new_player/skill.dm b/code/modules/mob/new_player/skill.dm index 09de8abffe5..3eb1c6a2460 100644 --- a/code/modules/mob/new_player/skill.dm +++ b/code/modules/mob/new_player/skill.dm @@ -62,7 +62,7 @@ datum/skill/management datum/skill/knowledge/law ID = "law" name = "NanoTrasen Law" - desc = "Your knowledge of NanoTrasen law and procedures. This includes Space Law, as well as general station rulings and procedures. A low level in this skill is typical for security officers, a high level in this skill is typical for captains." + desc = "Your knowledge of NanoTrasen law and procedures. This includes Corporate Regulations, as well as general station rulings and procedures. A low level in this skill is typical for security officers, a high level in this skill is typical for captains." field = "Security" secondary = 1 @@ -232,4 +232,4 @@ mob/living/carbon/human/verb/show_skills() set category = "IC" set name = "Show Own Skills" - show_skill_window(src, src) \ No newline at end of file + show_skill_window(src, src) diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 2c1b41a953d..1a5e93495bf 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -72,11 +72,11 @@ if (src.stat == 2) //Dead return 1 - + //Universal speak makes everything understandable, for obvious reasons. - else if(src.universal_speak || src.universal_understand) + else if((src.universal_speak || src.universal_understand) && !(speaking.flags & UNTRANSLATABLE)) return 1 - + //Languages are handled after. if (!speaking) if(!other) @@ -88,12 +88,12 @@ if (istype(other, src.type) || istype(src, other.type)) return 1 return 0 - + //Language check. for(var/datum/language/L in src.languages) if(speaking.name == L.name) return 1 - + return 0 /mob/proc/say_quote(var/text,var/datum/language/speaking) @@ -156,7 +156,7 @@ if(length(message) >= 2) var/channel_prefix = copytext(message, 1 ,3) return department_radio_keys[channel_prefix] - + return null //parses the language code (e.g. :j) from text, such as that supplied to say. @@ -167,6 +167,6 @@ var/datum/language/L = language_keys[language_prefix] if (can_speak(L)) return L - + return null diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 713de4aef4a..1628361435a 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -91,13 +91,6 @@ brute *= brmod //~2/3 damage for ROBOLIMBS burn *= bumod //~2/3 damage for ROBOLIMBS - //If limb took enough damage, try to cut or tear it off - if(body_part != UPPER_TORSO && body_part != LOWER_TORSO) //as hilarious as it is, getting hit on the chest too much shouldn't effectively gib you. - if(config.limbs_can_break && brute_dam >= max_damage * config.organ_health_multiplier) - if( (edge && prob(5 * brute)) || (brute > 20 && prob(2 * brute)) ) - droplimb(1) - return - // High brute damage or sharp objects may damage internal organs if(internal_organs && ( (sharp && brute >= 5) || brute >= 10) && prob(5)) // Damage an internal organ @@ -162,6 +155,14 @@ // sync the organ's damage with its wounds src.update_damages() + + //If limb took enough damage, try to cut or tear it off + if(body_part != UPPER_TORSO && body_part != LOWER_TORSO) //as hilarious as it is, getting hit on the chest too much shouldn't effectively gib you. + if(config.limbs_can_break && brute_dam >= max_damage * config.organ_health_multiplier) + if( (edge && prob(5 * brute)) || (brute > 20 && prob(2 * brute)) ) + droplimb(1) + return + owner.updatehealth() var/result = update_icon() @@ -804,8 +805,8 @@ Note that amputating the affected organ does in fact remove the infection from t owner.u_equip(c_hand) owner.emote("me", 1, "drops what they were holding, their [hand_name] malfunctioning!") var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() - spark_system.set_up(5, 0, src) - spark_system.attach(src) + spark_system.set_up(5, 0, owner) + spark_system.attach(owner) spark_system.start() spawn(10) del(spark_system) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index e693cc11f13..9ab93680ad6 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -308,7 +308,7 @@ return else - user << "You transfer [MAXCOIL - src.amount ] length\s of cable from one coil to the other." + user << "You transfer [MAXCOIL - C.amount ] length\s of cable from one coil to the other." src.amount -= (MAXCOIL-C.amount) src.updateicon() src.update_wclass() diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index cc38efa29e8..446d7627279 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -15,8 +15,7 @@ /obj/item/projectile/bullet/weakbullet // "rubber" bullets damage = 10 - stun = 5 - weaken = 5 + agony = 40 embed = 0 sharp = 0 @@ -28,8 +27,6 @@ /obj/item/projectile/bullet/midbullet damage = 20 - stun = 5 - weaken = 5 /obj/item/projectile/bullet/midbullet2 damage = 25 @@ -56,8 +53,7 @@ /obj/item/projectile/bullet/stunshot name = "stunshot" damage = 5 - stun = 10 - weaken = 10 + agony = 80 stutter = 10 embed = 0 sharp = 0 @@ -67,4 +63,4 @@ /obj/item/projectile/bullet/chameleon damage = 1 // stop trying to murderbone with a fake gun dumbass!!! - embed = 0 // nope \ No newline at end of file + embed = 0 // nope diff --git a/code/modules/reagents/reagent_containers/food.dm b/code/modules/reagents/reagent_containers/food.dm index 07f98a014e6..99261d81d99 100644 --- a/code/modules/reagents/reagent_containers/food.dm +++ b/code/modules/reagents/reagent_containers/food.dm @@ -6,7 +6,29 @@ volume = 50 //Sets the default container amount for all food items. var/filling_color = "#FFFFFF" //Used by sandwiches. + var/list/center_of_mass = newlist() //Center of mass + /obj/item/weapon/reagent_containers/food/New() - ..() - src.pixel_x = rand(-10.0, 10) //Randomizes postion - src.pixel_y = rand(-10.0, 10) \ No newline at end of file + ..() + if (!pixel_x && !pixel_y) + src.pixel_x = rand(-6.0, 6) //Randomizes postion + src.pixel_y = rand(-6.0, 6) + +/obj/item/weapon/reagent_containers/food/afterattack(atom/A, mob/user, proximity, params) + if(proximity && params && istype(A, /obj/structure/table) && center_of_mass.len) + //Places the item on a grid + var/list/mouse_control = params2list(params) + var/cellnumber = 4 + + var/mouse_x = text2num(mouse_control["icon-x"]) + var/mouse_y = text2num(mouse_control["icon-y"]) + + var/grid_x = round(mouse_x, 32/cellnumber) + var/grid_y = round(mouse_y, 32/cellnumber) + + if(mouse_control["icon-x"]) + var/sign = mouse_x - grid_x != 0 ? sign(mouse_x - grid_x) : -1 //positive if rounded down, else negative + pixel_x = grid_x - center_of_mass["x"] + sign*16/cellnumber //center of the cell + if(mouse_control["icon-y"]) + var/sign = mouse_y - grid_y != 0 ? sign(mouse_y - grid_y) : -1 + pixel_y = grid_y - center_of_mass["y"] + sign*16/cellnumber \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/food/cans.dm b/code/modules/reagents/reagent_containers/food/cans.dm index 2cc1c1ffda8..b83b7623f59 100644 --- a/code/modules/reagents/reagent_containers/food/cans.dm +++ b/code/modules/reagents/reagent_containers/food/cans.dm @@ -32,7 +32,7 @@ return 1 else if( istype(M, /mob/living/carbon/human) ) if (canopened == 0) - user << " You need to open the drink!" + user << "You need to open the drink!" return else if (canopened == 1) @@ -66,6 +66,9 @@ if(!proximity) return if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us. + if (canopened == 0) + user << "You need to open the drink!" + return if(!target.reagents.total_volume) user << "\red [target] is empty." @@ -77,10 +80,19 @@ var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this) user << "\blue You fill [src] with [trans] units of the contents of [target]." - if (canopened == 0) - user << "You need to open the drink!" + else if(target.is_open_container()) //Something like a glass. Player probably wants to transfer TO it. + if (canopened == 0) + user << "You need to open the drink!" + return + + if (istype(target, /obj/item/weapon/reagent_containers/food/drinks/cans)) + var/obj/item/weapon/reagent_containers/food/drinks/cans/cantarget = target + if(cantarget.canopened == 0) + user << "You need to open the drink you want to pour into!" + return + if(!reagents.total_volume) user << "\red [src] is empty." return @@ -135,129 +147,118 @@ name = "Space Cola" desc = "Cola. in space." icon_state = "cola" + center_of_mass = list("x"=16, "y"=10) New() ..() reagents.add_reagent("cola", 30) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle name = "Bottled Water" desc = "Introduced to the vending machines by Skrellian request, this water comes straight from the Martian poles." icon_state = "waterbottle" + center_of_mass = list("x"=15, "y"=8) New() ..() reagents.add_reagent("water", 30) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/cans/beer name = "Space Beer" desc = "Contains only water, malt and hops." icon_state = "beer" + center_of_mass = list("x"=16, "y"=12) New() ..() reagents.add_reagent("beer", 30) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/cans/ale name = "Magm-Ale" desc = "A true dorf's drink of choice." icon_state = "alebottle" item_state = "beer" + center_of_mass = list("x"=16, "y"=10) New() ..() reagents.add_reagent("ale", 30) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind name = "Space Mountain Wind" desc = "Blows right through you like a space wind." icon_state = "space_mountain_wind" + center_of_mass = list("x"=16, "y"=10) New() ..() reagents.add_reagent("spacemountainwind", 30) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/cans/thirteenloko name = "Thirteen Loko" desc = "The CMO has advised crew members that consumption of Thirteen Loko may result in seizures, blindness, drunkeness, or even death. Please Drink Responsibly." icon_state = "thirteen_loko" + center_of_mass = list("x"=16, "y"=8) New() ..() reagents.add_reagent("thirteenloko", 30) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb name = "Dr. Gibb" desc = "A delicious mixture of 42 different flavors." icon_state = "dr_gibb" + center_of_mass = list("x"=16, "y"=10) New() ..() reagents.add_reagent("dr_gibb", 30) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/cans/starkist name = "Star-kist" desc = "The taste of a star in liquid form. And, a bit of tuna...?" icon_state = "starkist" + center_of_mass = list("x"=16, "y"=10) New() ..() reagents.add_reagent("cola", 15) reagents.add_reagent("orangejuice", 15) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/cans/space_up name = "Space-Up" desc = "Tastes like a hull breach in your mouth." icon_state = "space-up" + center_of_mass = list("x"=16, "y"=10) New() ..() reagents.add_reagent("space_up", 30) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/cans/lemon_lime name = "Lemon-Lime" desc = "You wanted ORANGE. It gave you Lemon Lime." icon_state = "lemon-lime" + center_of_mass = list("x"=16, "y"=10) New() ..() reagents.add_reagent("lemon_lime", 30) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea name = "Vrisk Serket Iced Tea" desc = "That sweet, refreshing southern earthy flavor. That's where it's from, right? South Earth?" icon_state = "ice_tea_can" + center_of_mass = list("x"=16, "y"=10) New() ..() reagents.add_reagent("icetea", 30) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice name = "Grapel Juice" desc = "500 pages of rules of how to appropriately enter into a combat with this juice!" icon_state = "purple_can" + center_of_mass = list("x"=16, "y"=10) New() ..() reagents.add_reagent("grapejuice", 30) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/cans/tonic name = "T-Borg's Tonic Water" desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away." icon_state = "tonic" + center_of_mass = list("x"=16, "y"=10) New() ..() reagents.add_reagent("tonic", 50) @@ -266,6 +267,7 @@ name = "Soda Water" desc = "A can of soda water. Still water's more refreshing cousin." icon_state = "sodawater" + center_of_mass = list("x"=16, "y"=10) New() ..() reagents.add_reagent("sodawater", 50) diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index 740d50754b7..dccb59a3e7e 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -12,6 +12,7 @@ icon_state = "emptycondiment" flags = FPRINT | TABLEPASS | OPENCONTAINER possible_transfer_amounts = list(1,5,10) + center_of_mass = list("x"=16, "y"=6) volume = 50 attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -90,37 +91,46 @@ name = "Ketchup" desc = "You feel more American already." icon_state = "ketchup" + center_of_mass = list("x"=16, "y"=6) if("capsaicin") name = "Hotsauce" desc = "You can almost TASTE the stomach ulcers now!" icon_state = "hotsauce" + center_of_mass = list("x"=16, "y"=6) if("enzyme") name = "Universal Enzyme" desc = "Used in cooking various dishes." icon_state = "enzyme" + center_of_mass = list("x"=16, "y"=6) if("soysauce") name = "Soy Sauce" desc = "A salty soy-based flavoring." icon_state = "soysauce" + center_of_mass = list("x"=16, "y"=6) if("frostoil") name = "Coldsauce" desc = "Leaves the tongue numb in its passage." icon_state = "coldsauce" + center_of_mass = list("x"=16, "y"=6) if("sodiumchloride") name = "Salt Shaker" desc = "Salt. From space oceans, presumably." icon_state = "saltshaker" + center_of_mass = list("x"=16, "y"=10) if("blackpepper") name = "Pepper Mill" desc = "Often used to flavor food or make people sneeze." icon_state = "peppermillsmall" + center_of_mass = list("x"=16, "y"=10) if("cornoil") name = "Corn Oil" desc = "A delicious oil used in cooking. Made from corn." icon_state = "oliveoil" + center_of_mass = list("x"=16, "y"=6) if("sugar") name = "Sugar" desc = "Tastey space sugar!" + center_of_mass = list("x"=16, "y"=6) else name = "Misc Condiment Bottle" if (reagents.reagent_list.len==1) @@ -128,10 +138,12 @@ else desc = "A mixture of various condiments. [reagents.get_master_reagent_name()] is one of them." icon_state = "mixedcondiments" + center_of_mass = list("x"=16, "y"=6) else icon_state = "emptycondiment" name = "Condiment Bottle" desc = "An empty condiment bottle." + center_of_mass = list("x"=16, "y"=6) return /obj/item/weapon/reagent_containers/food/condiment/enzyme diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 4117defbbdf..a9aa2340600 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -120,7 +120,7 @@ reagents.add_reagent(refill, trans) user << "Cyborg [src] refilled." - return + return ..() examine() set src in view() @@ -169,11 +169,10 @@ desc = "It's milk. White and nutritious goodness!" icon_state = "milk" item_state = "carton" + center_of_mass = list("x"=16, "y"=9) New() ..() reagents.add_reagent("milk", 50) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) /* Flour is no longer a reagent /obj/item/weapon/reagent_containers/food/drinks/flour @@ -194,63 +193,57 @@ desc = "It's soy milk. White and nutritious goodness!" icon_state = "soymilk" item_state = "carton" + center_of_mass = list("x"=16, "y"=9) New() ..() reagents.add_reagent("soymilk", 50) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/coffee name = "Robust Coffee" desc = "Careful, the beverage you're about to enjoy is extremely hot." icon_state = "coffee" + center_of_mass = list("x"=15, "y"=10) New() ..() reagents.add_reagent("coffee", 30) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/tea name = "Duke Purple Tea" desc = "An insult to Duke Purple is an insult to the Space Queen! Any proper gentleman will fight you, if you sully this tea." icon_state = "teacup" item_state = "coffee" + center_of_mass = list("x"=16, "y"=14) New() ..() reagents.add_reagent("tea", 30) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(0, 20) // the teacup is very low on the 32x32 grid so if it's -y then it clips into the tile below it. /obj/item/weapon/reagent_containers/food/drinks/ice name = "Ice Cup" desc = "Careful, cold ice, do not chew." icon_state = "coffee" + center_of_mass = list("x"=15, "y"=10) New() ..() reagents.add_reagent("ice", 30) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/h_chocolate name = "Dutch Hot Coco" desc = "Made in Space South America." icon_state = "hot_coco" item_state = "coffee" + center_of_mass = list("x"=15, "y"=13) New() ..() reagents.add_reagent("hot_coco", 30) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/dry_ramen name = "Cup Ramen" desc = "Just add 10ml water, self heats! A taste that reminds you of your school years." icon_state = "ramen" + center_of_mass = list("x"=16, "y"=11) New() ..() reagents.add_reagent("dry_ramen", 30) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/sillycup @@ -259,10 +252,9 @@ icon_state = "water_cup_e" possible_transfer_amounts = null volume = 10 + center_of_mass = list("x"=16, "y"=12) New() ..() - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) on_reagent_change() if(reagents.total_volume) icon_state = "water_cup" @@ -281,33 +273,39 @@ icon_state = "shaker" amount_per_transfer_from_this = 10 volume = 100 + center_of_mass = list("x"=17, "y"=10) /obj/item/weapon/reagent_containers/food/drinks/flask name = "Captain's Flask" desc = "A metal flask belonging to the captain" icon_state = "flask" volume = 60 + center_of_mass = list("x"=17, "y"=7) /obj/item/weapon/reagent_containers/food/drinks/flask/detflask name = "Detective's Flask" desc = "A metal flask with a leather band and golden badge belonging to the detective." icon_state = "detflask" volume = 60 + center_of_mass = list("x"=17, "y"=8) /obj/item/weapon/reagent_containers/food/drinks/flask/barflask name = "flask" desc = "For those who can't be bothered to hang out at the bar to drink." icon_state = "barflask" volume = 60 + center_of_mass = list("x"=17, "y"=7) /obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask name = "vacuum flask" desc = "Keeping your drinks at the perfect temperature since 1892." icon_state = "vacuumflask" volume = 60 + center_of_mass = list("x"=15, "y"=4) /obj/item/weapon/reagent_containers/food/drinks/britcup name = "cup" desc = "A cup with the British flag emblazoned on it." icon_state = "britcup" volume = 30 + center_of_mass = list("x"=15, "y"=13) diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm index 93c61ece1cf..35b776af287 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm @@ -138,6 +138,7 @@ name = "Griffeater Gin" desc = "A bottle of high quality gin, produced in the New London Space Station." icon_state = "ginbottle" + center_of_mass = list("x"=16, "y"=4) New() ..() reagents.add_reagent("gin", 100) @@ -146,6 +147,7 @@ name = "Uncle Git's Special Reserve" desc = "A premium single-malt whiskey, gently matured inside the tunnels of a nuclear shelter. TUNNEL WHISKEY RULES." icon_state = "whiskeybottle" + center_of_mass = list("x"=16, "y"=3) New() ..() reagents.add_reagent("whiskey", 100) @@ -154,6 +156,7 @@ name = "Tunguska Triple Distilled" desc = "Aah, vodka. Prime choice of drink AND fuel by Russians worldwide." icon_state = "vodkabottle" + center_of_mass = list("x"=17, "y"=3) New() ..() reagents.add_reagent("vodka", 100) @@ -162,6 +165,7 @@ name = "Caccavo Guaranteed Quality Tequilla" desc = "Made from premium petroleum distillates, pure thalidomide and other fine quality ingredients!" icon_state = "tequillabottle" + center_of_mass = list("x"=16, "y"=3) New() ..() reagents.add_reagent("tequilla", 100) @@ -170,6 +174,7 @@ name = "Bottle of Nothing" desc = "A bottle filled with nothing" icon_state = "bottleofnothing" + center_of_mass = list("x"=17, "y"=5) New() ..() reagents.add_reagent("nothing", 100) @@ -178,6 +183,7 @@ name = "Wrapp Artiste Patron" desc = "Silver laced tequilla, served in space night clubs across the galaxy." icon_state = "patronbottle" + center_of_mass = list("x"=16, "y"=6) New() ..() reagents.add_reagent("patron", 100) @@ -186,6 +192,7 @@ name = "Captain Pete's Cuban Spiced Rum" desc = "This isn't just rum, oh no. It's practically GRIFF in a bottle." icon_state = "rumbottle" + center_of_mass = list("x"=16, "y"=8) New() ..() reagents.add_reagent("rum", 100) @@ -194,6 +201,7 @@ name = "Flask of Holy Water" desc = "A flask of the chaplain's holy water." icon_state = "holyflask" + center_of_mass = list("x"=17, "y"=10) New() ..() reagents.add_reagent("holywater", 100) @@ -202,6 +210,7 @@ name = "Goldeneye Vermouth" desc = "Sweet, sweet dryness~" icon_state = "vermouthbottle" + center_of_mass = list("x"=17, "y"=3) New() ..() reagents.add_reagent("vermouth", 100) @@ -210,6 +219,7 @@ name = "Robert Robust's Coffee Liqueur" desc = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936, HONK" icon_state = "kahluabottle" + center_of_mass = list("x"=17, "y"=3) New() ..() reagents.add_reagent("kahlua", 100) @@ -218,6 +228,7 @@ name = "College Girl Goldschlager" desc = "Because they are the only ones who will drink 100 proof cinnamon schnapps." icon_state = "goldschlagerbottle" + center_of_mass = list("x"=15, "y"=3) New() ..() reagents.add_reagent("goldschlager", 100) @@ -226,6 +237,7 @@ name = "Chateau De Baton Premium Cognac" desc = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. You might as well not scream 'SHITCURITY' this time." icon_state = "cognacbottle" + center_of_mass = list("x"=16, "y"=6) New() ..() reagents.add_reagent("cognac", 100) @@ -234,6 +246,7 @@ name = "Doublebeard Bearded Special Wine" desc = "A faint aura of unease and asspainery surrounds the bottle." icon_state = "winebottle" + center_of_mass = list("x"=16, "y"=4) New() ..() reagents.add_reagent("wine", 100) @@ -242,6 +255,7 @@ name = "Jailbreaker Verte" desc = "One sip of this and you just know you're gonna have a good time." icon_state = "absinthebottle" + center_of_mass = list("x"=16, "y"=6) New() ..() reagents.add_reagent("absinthe", 100) @@ -250,6 +264,7 @@ name = "Emeraldine Melon Liquor" desc = "A bottle of 46 proof Emeraldine Melon Liquor. Sweet and light." icon_state = "alco-green" //Placeholder. + center_of_mass = list("x"=16, "y"=6) New() ..() reagents.add_reagent("melonliquor", 100) @@ -258,6 +273,7 @@ name = "Miss Blue Curacao" desc = "A fruity, exceptionally azure drink. Does not allow the imbiber to use the fifth magic." icon_state = "alco-blue" //Placeholder. + center_of_mass = list("x"=16, "y"=6) New() ..() reagents.add_reagent("bluecuracao", 100) @@ -266,6 +282,7 @@ name = "Briar Rose Grenadine Syrup" desc = "Sweet and tangy, a bar syrup used to add color or flavor to drinks." icon_state = "grenadinebottle" + center_of_mass = list("x"=16, "y"=6) New() ..() reagents.add_reagent("grenadine", 100) @@ -274,6 +291,7 @@ name = "Warlock's Velvet" desc = "What a delightful packaging for a surely high quality wine! The vintage must be amazing!" icon_state = "pwinebottle" + center_of_mass = list("x"=16, "y"=4) New() ..() reagents.add_reagent("pwine", 100) @@ -285,6 +303,7 @@ desc = "Full of vitamins and deliciousness!" icon_state = "orangejuice" item_state = "carton" + center_of_mass = list("x"=16, "y"=7) isGlass = 0 New() ..() @@ -295,6 +314,7 @@ desc = "It's cream. Made from milk. What else did you think you'd find in there?" icon_state = "cream" item_state = "carton" + center_of_mass = list("x"=16, "y"=8) isGlass = 0 New() ..() @@ -305,6 +325,7 @@ desc = "Well, at least it LOOKS like tomato juice. You can't tell with all that redness." icon_state = "tomatojuice" item_state = "carton" + center_of_mass = list("x"=16, "y"=8) isGlass = 0 New() ..() @@ -315,6 +336,7 @@ desc = "Sweet-sour goodness." icon_state = "limejuice" item_state = "carton" + center_of_mass = list("x"=16, "y"=8) isGlass = 0 New() ..() diff --git a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm index 171fcc93356..c2bb90ddb80 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm @@ -1,11 +1,12 @@ - - + + /obj/item/weapon/reagent_containers/food/drinks/drinkingglass name = "glass" desc = "Your standard drinking glass." icon_state = "glass_empty" amount_per_transfer_from_this = 10 volume = 50 + center_of_mass = list("x"=16, "y"=10) on_reagent_change() /*if(reagents.reagent_list.len > 1 ) @@ -22,142 +23,177 @@ icon_state = "beerglass" name = "Beer glass" desc = "A freezing pint of beer" + center_of_mass = list("x"=16, "y"=8) if("beer2") icon_state = "beerglass" name = "Beer glass" desc = "A freezing pint of beer" + center_of_mass = list("x"=16, "y"=8) if("ale") icon_state = "aleglass" name = "Ale glass" desc = "A freezing pint of delicious Ale" + center_of_mass = list("x"=16, "y"=8) if("milk") icon_state = "glass_white" name = "Glass of milk" desc = "White and nutritious goodness!" + center_of_mass = list("x"=16, "y"=10) if("cream") icon_state = "glass_white" name = "Glass of cream" desc = "Ewwww..." + center_of_mass = list("x"=16, "y"=10) if("chocolate") icon_state = "chocolateglass" name = "Glass of chocolate" desc = "Tasty" + center_of_mass = list("x"=16, "y"=10) if("lemonjuice") icon_state = "lemonglass" name = "Glass of lemonjuice" desc = "Sour..." + center_of_mass = list("x"=16, "y"=10) if("cola") icon_state = "glass_brown" name = "Glass of Space Cola" desc = "A glass of refreshing Space Cola" + center_of_mass = list("x"=16, "y"=10) if("nuka_cola") icon_state = "nuka_colaglass" name = "Nuka Cola" desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland" + center_of_mass = list("x"=16, "y"=6) if("orangejuice") icon_state = "glass_orange" name = "Glass of Orange juice" desc = "Vitamins! Yay!" + center_of_mass = list("x"=16, "y"=10) if("tomatojuice") icon_state = "glass_red" name = "Glass of Tomato juf" desc = "Are you sure this is tomato juice?" + center_of_mass = list("x"=16, "y"=10) if("blood") icon_state = "glass_red" name = "Glass of Tomato juice" desc = "Are you sure this is tomato juice?" + center_of_mass = list("x"=16, "y"=10) if("limejuice") icon_state = "glass_green" name = "Glass of Lime juice" desc = "A glass of sweet-sour lime juice." + center_of_mass = list("x"=16, "y"=10) if("whiskey") icon_state = "whiskeyglass" name = "Glass of whiskey" desc = "The silky, smokey whiskey goodness inside the glass makes the drink look very classy." + center_of_mass = list("x"=16, "y"=12) if("gin") icon_state = "ginvodkaglass" name = "Glass of gin" desc = "A crystal clear glass of Griffeater gin." + center_of_mass = list("x"=16, "y"=12) if("vodka") icon_state = "ginvodkaglass" name = "Glass of vodka" desc = "The glass contain wodka. Xynta." + center_of_mass = list("x"=16, "y"=12) if("sake") icon_state = "ginvodkaglass" name = "Glass of Sake" desc = "A glass of Sake." + center_of_mass = list("x"=16, "y"=12) if("goldschlager") icon_state = "ginvodkaglass" name = "Glass of goldschlager" desc = "100 proof that teen girls will drink anything with gold in it." + center_of_mass = list("x"=16, "y"=12) if("wine") icon_state = "wineglass" name = "Glass of wine" desc = "A very classy looking drink." + center_of_mass = list("x"=15, "y"=7) if("cognac") icon_state = "cognacglass" name = "Glass of cognac" desc = "Damn, you feel like some kind of French aristocrat just by holding this." + center_of_mass = list("x"=16, "y"=6) if ("kahlua") icon_state = "kahluaglass" name = "Glass of RR coffee Liquor" desc = "DAMN, THIS THING LOOKS ROBUST" + center_of_mass = list("x"=15, "y"=7) if("vermouth") icon_state = "vermouthglass" name = "Glass of Vermouth" desc = "You wonder why you're even drinking this straight." + center_of_mass = list("x"=16, "y"=12) if("tequilla") icon_state = "tequillaglass" name = "Glass of Tequilla" desc = "Now all that's missing is the weird colored shades!" + center_of_mass = list("x"=16, "y"=12) if("patron") icon_state = "patronglass" name = "Glass of Patron" desc = "Drinking patron in the bar, with all the subpar ladies." + center_of_mass = list("x"=7, "y"=8) if("rum") icon_state = "rumglass" name = "Glass of Rum" desc = "Now you want to Pray for a pirate suit, don't you?" + center_of_mass = list("x"=16, "y"=12) if("gintonic") icon_state = "gintonicglass" name = "Gin and Tonic" desc = "A mild but still great cocktail. Drink up, like a true Englishman." + center_of_mass = list("x"=16, "y"=7) if("whiskeycola") icon_state = "whiskeycolaglass" name = "Whiskey Cola" desc = "An innocent-looking mixture of cola and Whiskey. Delicious." + center_of_mass = list("x"=16, "y"=9) if("whiterussian") icon_state = "whiterussianglass" name = "White Russian" desc = "A very nice looking drink. But that's just, like, your opinion, man." + center_of_mass = list("x"=16, "y"=9) if("screwdrivercocktail") icon_state = "screwdriverglass" name = "Screwdriver" desc = "A simple, yet superb mixture of Vodka and orange juice. Just the thing for the tired engineer." + center_of_mass = list("x"=15, "y"=10) if("bloodymary") icon_state = "bloodymaryglass" name = "Bloody Mary" desc = "Tomato juice, mixed with Vodka and a lil' bit of lime. Tastes like liquid murder." + center_of_mass = list("x"=16, "y"=10) if("martini") icon_state = "martiniglass" name = "Classic Martini" desc = "Damn, the bartender even stirred it, not shook it." + center_of_mass = list("x"=17, "y"=8) if("vodkamartini") icon_state = "martiniglass" name = "Vodka martini" desc ="A bastardisation of the classic martini. Still great." + center_of_mass = list("x"=17, "y"=8) if("gargleblaster") icon_state = "gargleblasterglass" name = "Pan-Galactic Gargle Blaster" desc = "Does... does this mean that Arthur and Ford are on the station? Oh joy." + center_of_mass = list("x"=17, "y"=6) if("bravebull") icon_state = "bravebullglass" name = "Brave Bull" desc = "Tequilla and Coffee liquor, brought together in a mouthwatering mixture. Drink up." + center_of_mass = list("x"=15, "y"=8) if("tequillasunrise") icon_state = "tequillasunriseglass" name = "Tequilla Sunrise" desc = "Oh great, now you feel nostalgic about sunrises back on Terra..." + center_of_mass = list("x"=16, "y"=10) if("phoronspecial") icon_state = "phoronspecialglass" name = "Toxins Special" @@ -166,330 +202,412 @@ icon_state = "beepskysmashglass" name = "Beepsky Smash" desc = "Heavy, hot and strong. Just like the Iron fist of the LAW." + center_of_mass = list("x"=18, "y"=10) if("doctorsdelight") icon_state = "doctorsdelightglass" name = "Doctor's Delight" desc = "A healthy mixture of juices, guaranteed to keep you healthy until the next toolboxing takes place." + center_of_mass = list("x"=16, "y"=8) if("manlydorf") icon_state = "manlydorfglass" name = "The Manly Dorf" desc = "A manly concotion made from Ale and Beer. Intended for true men only." + center_of_mass = list("x"=16, "y"=10) if("irishcream") icon_state = "irishcreamglass" name = "Irish Cream" desc = "It's cream, mixed with whiskey. What else would you expect from the Irish?" + center_of_mass = list("x"=16, "y"=9) if("cubalibre") icon_state = "cubalibreglass" name = "Cuba Libre" desc = "A classic mix of rum and cola." + center_of_mass = list("x"=16, "y"=8) if("b52") icon_state = "b52glass" name = "B-52" desc = "Kahlua, Irish Cream, and congac. You will get bombed." + center_of_mass = list("x"=16, "y"=10) if("atomicbomb") icon_state = "atomicbombglass" name = "Atomic Bomb" desc = "Nanotrasen cannot take legal responsibility for your actions after imbibing." + center_of_mass = list("x"=15, "y"=7) if("longislandicedtea") icon_state = "longislandicedteaglass" name = "Long Island Iced Tea" desc = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only." + center_of_mass = list("x"=16, "y"=8) if("threemileisland") icon_state = "threemileislandglass" name = "Three Mile Island Ice Tea" desc = "A glass of this is sure to prevent a meltdown." + center_of_mass = list("x"=16, "y"=2) if("margarita") icon_state = "margaritaglass" name = "Margarita" desc = "On the rocks with salt on the rim. Arriba~!" + center_of_mass = list("x"=16, "y"=8) if("blackrussian") icon_state = "blackrussianglass" name = "Black Russian" desc = "For the lactose-intolerant. Still as classy as a White Russian." + center_of_mass = list("x"=16, "y"=9) if("vodkatonic") icon_state = "vodkatonicglass" name = "Vodka and Tonic" desc = "For when a gin and tonic isn't russian enough." + center_of_mass = list("x"=16, "y"=7) if("manhattan") icon_state = "manhattanglass" name = "Manhattan" desc = "The Detective's undercover drink of choice. He never could stomach gin..." + center_of_mass = list("x"=17, "y"=8) if("manhattan_proj") icon_state = "proj_manhattanglass" name = "Manhattan Project" desc = "A scienitst drink of choice, for thinking how to blow up the station." + center_of_mass = list("x"=17, "y"=8) if("ginfizz") icon_state = "ginfizzglass" name = "Gin Fizz" desc = "Refreshingly lemony, deliciously dry." + center_of_mass = list("x"=16, "y"=7) if("irishcoffee") icon_state = "irishcoffeeglass" name = "Irish Coffee" desc = "Coffee and alcohol. More fun than a Mimosa to drink in the morning." + center_of_mass = list("x"=15, "y"=10) if("hooch") icon_state = "glass_brown2" name = "Hooch" desc = "You've really hit rock bottom now... your liver packed its bags and left last night." + center_of_mass = list("x"=16, "y"=10) if("whiskeysoda") icon_state = "whiskeysodaglass2" name = "Whiskey Soda" desc = "Ultimate refreshment." + center_of_mass = list("x"=16, "y"=9) if("tonic") icon_state = "glass_clear" name = "Glass of Tonic Water" desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away." + center_of_mass = list("x"=16, "y"=10) if("sodawater") icon_state = "glass_clear" name = "Glass of Soda Water" desc = "Soda water. Why not make a scotch and soda?" + center_of_mass = list("x"=16, "y"=10) if("water") icon_state = "glass_clear" name = "Glass of Water" desc = "The father of all refreshments." + center_of_mass = list("x"=16, "y"=10) if("spacemountainwind") icon_state = "Space_mountain_wind_glass" name = "Glass of Space Mountain Wind" desc = "Space Mountain Wind. As you know, there are no mountains in space, only wind." + center_of_mass = list("x"=16, "y"=10) if("thirteenloko") icon_state = "thirteen_loko_glass" name = "Glass of Thirteen Loko" desc = "This is a glass of Thirteen Loko, it appears to be of the highest quality. The drink, not the glass" + center_of_mass = list("x"=16, "y"=10) if("dr_gibb") icon_state = "dr_gibb_glass" name = "Glass of Dr. Gibb" desc = "Dr. Gibb. Not as dangerous as the name might imply." + center_of_mass = list("x"=16, "y"=10) if("space_up") icon_state = "space-up_glass" name = "Glass of Space-up" desc = "Space-up. It helps keep your cool." + center_of_mass = list("x"=16, "y"=10) if("moonshine") icon_state = "glass_clear" name = "Moonshine" desc = "You've really hit rock bottom now... your liver packed its bags and left last night." + center_of_mass = list("x"=16, "y"=10) if("soymilk") icon_state = "glass_white" name = "Glass of soy milk" desc = "White and nutritious soy goodness!" + center_of_mass = list("x"=16, "y"=10) if("berryjuice") icon_state = "berryjuice" name = "Glass of berry juice" desc = "Berry juice. Or maybe its jam. Who cares?" + center_of_mass = list("x"=16, "y"=10) if("poisonberryjuice") icon_state = "poisonberryjuice" name = "Glass of poison berry juice" desc = "A glass of deadly juice." + center_of_mass = list("x"=16, "y"=10) if("carrotjuice") icon_state = "carrotjuice" name = "Glass of carrot juice" desc = "It is just like a carrot but without crunching." + center_of_mass = list("x"=16, "y"=10) if("banana") icon_state = "banana" name = "Glass of banana juice" desc = "The raw essence of a banana. HONK" + center_of_mass = list("x"=16, "y"=10) if("bahama_mama") icon_state = "bahama_mama" name = "Bahama Mama" desc = "Tropic cocktail" + center_of_mass = list("x"=16, "y"=5) if("singulo") icon_state = "singulo" name = "Singulo" desc = "A blue-space beverage." + center_of_mass = list("x"=17, "y"=4) if("alliescocktail") icon_state = "alliescocktail" name = "Allies cocktail" desc = "A drink made from your allies." + center_of_mass = list("x"=17, "y"=8) if("antifreeze") icon_state = "antifreeze" name = "Anti-freeze" desc = "The ultimate refreshment." + center_of_mass = list("x"=16, "y"=8) if("barefoot") icon_state = "b&p" name = "Barefoot" desc = "Barefoot and pregnant" + center_of_mass = list("x"=17, "y"=8) if("demonsblood") icon_state = "demonsblood" name = "Demons Blood" desc = "Just looking at this thing makes the hair at the back of your neck stand up." + center_of_mass = list("x"=16, "y"=2) if("booger") icon_state = "booger" name = "Booger" desc = "Ewww..." + center_of_mass = list("x"=16, "y"=10) if("snowwhite") icon_state = "snowwhite" name = "Snow White" desc = "A cold refreshment." + center_of_mass = list("x"=16, "y"=8) if("aloe") icon_state = "aloe" name = "Aloe" desc = "Very, very, very good." + center_of_mass = list("x"=17, "y"=8) if("andalusia") icon_state = "andalusia" name = "Andalusia" desc = "A nice, strange named drink." + center_of_mass = list("x"=16, "y"=9) if("sbiten") icon_state = "sbitenglass" name = "Sbiten" desc = "A spicy mix of Vodka and Spice. Very hot." + center_of_mass = list("x"=17, "y"=8) if("red_mead") icon_state = "red_meadglass" name = "Red Mead" desc = "A True Vikings Beverage, though its color is strange." + center_of_mass = list("x"=17, "y"=10) if("mead") icon_state = "meadglass" name = "Mead" desc = "A Vikings Beverage, though a cheap one." + center_of_mass = list("x"=17, "y"=10) if("iced_beer") icon_state = "iced_beerglass" name = "Iced Beer" desc = "A beer so frosty, the air around it freezes." + center_of_mass = list("x"=16, "y"=7) if("grog") icon_state = "grogglass" name = "Grog" desc = "A fine and cepa drink for Space." + center_of_mass = list("x"=16, "y"=10) if("soy_latte") icon_state = "soy_latte" name = "Soy Latte" desc = "A nice and refrshing beverage while you are reading." + center_of_mass = list("x"=15, "y"=9) if("cafe_latte") icon_state = "cafe_latte" name = "Cafe Latte" desc = "A nice, strong and refreshing beverage while you are reading." + center_of_mass = list("x"=15, "y"=9) if("acidspit") icon_state = "acidspitglass" name = "Acid Spit" desc = "A drink from Nanotrasen. Made from live aliens." + center_of_mass = list("x"=16, "y"=7) if("amasec") icon_state = "amasecglass" name = "Amasec" desc = "Always handy before COMBAT!!!" + center_of_mass = list("x"=16, "y"=9) if("neurotoxin") icon_state = "neurotoxinglass" name = "Neurotoxin" desc = "A drink that is guaranteed to knock you silly." + center_of_mass = list("x"=16, "y"=8) if("hippiesdelight") icon_state = "hippiesdelightglass" name = "Hippie's Delight" desc = "A drink enjoyed by people during the 1960's." + center_of_mass = list("x"=16, "y"=8) if("bananahonk") icon_state = "bananahonkglass" name = "Banana Honk" desc = "A drink from Banana Heaven." + center_of_mass = list("x"=16, "y"=8) if("silencer") icon_state = "silencerglass" name = "Silencer" desc = "A drink from mime Heaven." + center_of_mass = list("x"=16, "y"=9) if("nothing") icon_state = "nothing" name = "Nothing" desc = "Absolutely nothing." + center_of_mass = list("x"=16, "y"=10) if("devilskiss") icon_state = "devilskiss" name = "Devils Kiss" desc = "Creepy time!" + center_of_mass = list("x"=16, "y"=8) if("changelingsting") icon_state = "changelingsting" name = "Changeling Sting" desc = "A stingy drink." + center_of_mass = list("x"=16, "y"=10) if("irishcarbomb") icon_state = "irishcarbomb" name = "Irish Car Bomb" desc = "An irish car bomb." + center_of_mass = list("x"=16, "y"=8) if("syndicatebomb") icon_state = "syndicatebomb" name = "Syndicate Bomb" desc = "A syndicate bomb." + center_of_mass = list("x"=16, "y"=4) if("erikasurprise") icon_state = "erikasurprise" name = "Erika Surprise" desc = "The surprise is, it's green!" + center_of_mass = list("x"=16, "y"=9) if("driestmartini") icon_state = "driestmartiniglass" name = "Driest Martini" desc = "Only for the experienced. You think you see sand floating in the glass." + center_of_mass = list("x"=17, "y"=8) if("ice") icon_state = "iceglass" name = "Glass of ice" desc = "Generally, you're supposed to put something else in there too..." + center_of_mass = list("x"=16, "y"=10) if("icecoffee") icon_state = "icedcoffeeglass" name = "Iced Coffee" desc = "A drink to perk you up and refresh you!" + center_of_mass = list("x"=16, "y"=10) if("coffee") icon_state = "glass_brown" name = "Glass of coffee" desc = "Don't drop it, or you'll send scalding liquid and glass shards everywhere." + center_of_mass = list("x"=16, "y"=10) if("bilk") icon_state = "glass_brown" name = "Glass of bilk" desc = "A brew of milk and beer. For those alcoholics who fear osteoporosis." + center_of_mass = list("x"=16, "y"=10) if("fuel") icon_state = "dr_gibb_glass" name = "Glass of welder fuel" desc = "Unless you are an industrial tool, this is probably not safe for consumption." + center_of_mass = list("x"=16, "y"=10) if("brownstar") icon_state = "brownstar" name = "Brown Star" desc = "It's not what it sounds like..." + center_of_mass = list("x"=16, "y"=10) if("grapejuice") icon_state = "grapejuice" name = "Glass of grape juice" desc = "It's grrrrrape!" + center_of_mass = list("x"=16, "y"=10) if("grapesoda") icon_state = "grapesoda" name = "Can of Grape Soda" desc = "Looks like a delicious drank!" + center_of_mass = list("x"=16, "y"=10) if("icetea") icon_state = "icedteaglass" name = "Iced Tea" desc = "No relation to a certain rap artist/ actor." + center_of_mass = list("x"=15, "y"=10) if("grenadine") icon_state = "grenadineglass" name = "Glass of grenadine syrup" desc = "Sweet and tangy, a bar syrup used to add color or flavor to drinks." + center_of_mass = list("x"=17, "y"=6) if("milkshake") icon_state = "milkshake" name = "Milkshake" desc = "Glorious brainfreezing mixture." + center_of_mass = list("x"=16, "y"=7) if("lemonade") icon_state = "lemonadeglass" name = "Lemonade" desc = "Oh the nostalgia..." + center_of_mass = list("x"=16, "y"=10) if("kiraspecial") icon_state = "kiraspecial" name = "Kira Special" desc = "Long live the guy who everyone had mistaken for a girl. Baka!" + center_of_mass = list("x"=16, "y"=12) if("rewriter") icon_state = "rewriter" name = "Rewriter" desc = "The secret of the sanctuary of the Libarian..." + center_of_mass = list("x"=16, "y"=9) if("suidream") icon_state = "sdreamglass" name = "Sui Dream" desc = "A froofy, fruity, and sweet mixed drink. Understanding the name only brings shame." + center_of_mass = list("x"=16, "y"=5) if("melonliquor") icon_state = "emeraldglass" name = "Glass of Melon Liquor" desc = "A relatively sweet and fruity 46 proof liquor." + center_of_mass = list("x"=16, "y"=5) if("bluecuracao") icon_state = "curacaoglass" name = "Glass of Blue Curacao" desc = "Exotically blue, fruity drink, distilled from oranges." + center_of_mass = list("x"=16, "y"=5) if("absinthe") icon_state = "absintheglass" name = "Glass of Absinthe" desc = "Wormwood, anise, oh my." + center_of_mass = list("x"=16, "y"=5) if("pwine") icon_state = "pwineglass" name = "Glass of ???" desc = "A black ichor with an oily purple sheer on top. Are you sure you should drink this?" + center_of_mass = list("x"=16, "y"=5) else icon_state ="glass_brown" name = "Glass of ..what?" desc = "You can't really tell what this is." + center_of_mass = list("x"=16, "y"=10) else icon_state = "glass_empty" name = "Drinking glass" desc = "Your standard drinking glass" + center_of_mass = list("x"=16, "y"=10) return // for /obj/machinery/vending/sovietsoda diff --git a/code/modules/reagents/reagent_containers/food/drinks/jar.dm b/code/modules/reagents/reagent_containers/food/drinks/jar.dm index 6a75c658526..7cca924261b 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/jar.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/jar.dm @@ -7,6 +7,7 @@ desc = "A jar. You're not sure what it's supposed to hold." icon_state = "jar" item_state = "beaker" + center_of_mass = list("x"=15, "y"=8) New() ..() reagents.add_reagent("slime", 50) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 853ee5b149a..29001d9723f 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -9,6 +9,7 @@ var/trash = null var/slice_path var/slices_num + center_of_mass = list("x"=15, "y"=15) //Placeholder for effect that trigger on eating that aren't tied to reagents. /obj/item/weapon/reagent_containers/food/snacks/proc/On_Consume(var/mob/M) @@ -107,7 +108,7 @@ return 0 /obj/item/weapon/reagent_containers/food/snacks/afterattack(obj/target, mob/user, proximity) - return + return ..() /obj/item/weapon/reagent_containers/food/snacks/examine() set src in view() diff --git a/code/modules/surgery/braincore.dm b/code/modules/surgery/braincore.dm index 85f3913195b..b969bca8738 100644 --- a/code/modules/surgery/braincore.dm +++ b/code/modules/surgery/braincore.dm @@ -188,9 +188,12 @@ // SLIME CORE EXTRACTION // ////////////////////////////////////////////////////////////////// -/datum/surgery_step/slime/ +/datum/surgery_step/slime + is_valid_target(mob/living/carbon/slime/target) + return istype(target, /mob/living/carbon/slime/) + can_use(mob/living/user, mob/living/carbon/slime/target, target_zone, obj/item/tool) - return istype(target, /mob/living/carbon/slime/) && target.stat == 2 + return target.stat == 2 /datum/surgery_step/slime/cut_flesh allowed_tools = list( diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 8e94c03ddce..5b0bccbaaab 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -25,8 +25,10 @@ return allowed_tools[T] return 0 - // Checks if this step applies to the mutantrace of the user. - proc/is_valid_mutantrace(mob/living/carbon/human/target) + // Checks if this step applies to the user mob at all + proc/is_valid_target(mob/living/carbon/human/target) + if(!hasorgans(target)) + return 0 if(allowed_species) for(var/species in allowed_species) @@ -40,6 +42,7 @@ return 1 + // checks whether this step can be applied with the given user and target proc/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) return 0 @@ -81,7 +84,7 @@ proc/do_surgery(mob/living/M, mob/living/user, obj/item/tool) return 0 for(var/datum/surgery_step/S in surgery_steps) //check if tool is right or close enough and if this step is possible - if( S.tool_quality(tool) && S.can_use(user, M, user.zone_sel.selecting, tool) && S.is_valid_mutantrace(M)) + if( S.tool_quality(tool) && S.can_use(user, M, user.zone_sel.selecting, tool) && S.is_valid_target(M)) S.begin_step(user, M, user.zone_sel.selecting, tool) //start on it //We had proper tools! (or RNG smiled.) and User did not move or change hands. if( prob(S.tool_quality(tool)) && do_mob(user, M, rand(S.min_duration, S.max_duration))) diff --git a/code/setup.dm b/code/setup.dm index e337d651f2f..691f1552830 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -746,10 +746,11 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse #define IS_SYNTHETIC 16384 //Language flags. -#define WHITELISTED 1 // Language is available if the speaker is whitelisted. -#define RESTRICTED 2 // Language can only be accquired by spawning or an admin. -#define NONVERBAL 4 // Language has a significant non-verbal component. Speech is garbled without line-of-sight -#define SIGNLANG 8 // Language is completely non-verbal. Speech is displayed through emotes for those who can understand. +#define WHITELISTED 1 // Language is available if the speaker is whitelisted. +#define RESTRICTED 2 // Language can only be accquired by spawning or an admin. +#define NONVERBAL 4 // Language has a significant non-verbal component. Speech is garbled without line-of-sight +#define SIGNLANG 8 // Language is completely non-verbal. Speech is displayed through emotes for those who can understand. +#define UNTRANSLATABLE 16 // Language is not translated by universal_speak or universal_understand. //Flags for zone sleeping #define ZONE_ACTIVE 1 @@ -815,4 +816,4 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse #define IS_SKRELL 3 #define IS_UNATHI 4 -#define MAX_GEAR_COST 5 //Used in chargen for loadout limit. \ No newline at end of file +#define MAX_GEAR_COST 5 //Used in chargen for loadout limit. diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 47d928e2d11..311d8494de9 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 9da8b5ecf1c..8ae9ced1f99 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi index 4866a35ec03..cf1e440e45d 100644 Binary files a/icons/obj/food.dmi and b/icons/obj/food.dmi differ