diff --git a/code/game/mecha/components/_component.dm b/code/game/mecha/components/_component.dm index 3d770e0dce0..4058500dd2a 100644 --- a/code/game/mecha/components/_component.dm +++ b/code/game/mecha/components/_component.dm @@ -138,12 +138,26 @@ var/obj/item/stack/nanopaste/NP = W if(integrity < max_integrity) + to_chat(user, "You start to repair damage to \the [src].") while(integrity < max_integrity && NP) - if(do_after(user, 1 SECOND, src) && NP.use(1)) - adjust_integrity(10) + if(do_after(user, 1 SECOND, src)) + NP.use(1) + adjust_integrity(NP.mech_repair) + + if(integrity >= max_integrity) + to_chat(user, "You finish repairing \the [src].") + break + + else if(NP.amount == 0) + to_chat(user, "Insufficient nanopaste to complete repairs!") + break + return + else + to_chat(user, "\The [src] doesn't require repairs.") + return ..() // Various procs to handle different calls by Exosuits. IE, movement actions, damage actions, etc. diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index f5821b18d19..1dd50dc0bfe 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -1567,15 +1567,27 @@ for(var/slot in internal_components) var/obj/item/mecha_parts/component/C = internal_components[slot] - if(C) + if(!C) + to_chat(user, "There are no components installed!") + return - if(C.integrity < C.max_integrity) - while(C.integrity < C.max_integrity && NP && do_after(user, 1 SECOND, src)) - if(NP.use(1)) - C.adjust_integrity(10) + if(C.integrity >= C.max_integrity) + to_chat(user, "\The [C] does not require repairs.") - to_chat(user, "You repair damage to \the [C].") + else if(C.integrity < C.max_integrity) + to_chat(user, "You start to repair damage to \the [C].") + while(C.integrity < C.max_integrity && NP) + if(do_after(user, 1 SECOND, src)) + NP.use(1) + C.adjust_integrity(NP.mech_repair) + if(C.integrity >= C.max_integrity) + to_chat(user, "You finish repairing \the [C].") + break + + else if(NP.amount == 0) + to_chat(user, "Insufficient nanopaste to complete repairs!") + break return else diff --git a/code/game/objects/items/stacks/nanopaste_vr.dm b/code/game/objects/items/stacks/nanopaste_vr.dm index cd39b61fef4..d0bd4e80034 100644 --- a/code/game/objects/items/stacks/nanopaste_vr.dm +++ b/code/game/objects/items/stacks/nanopaste_vr.dm @@ -2,6 +2,7 @@ var/restoration_external = 5 var/restoration_internal = 20 var/repair_external = FALSE + var/mech_repair = 10 /obj/item/stack/nanopaste/advanced name = "advanced nanopaste" @@ -10,4 +11,5 @@ icon = 'icons/obj/stacks_vr.dmi' icon_state = "adv_nanopaste" restoration_external = 10 - repair_external = TRUE \ No newline at end of file + repair_external = TRUE + mech_repair = 20 \ No newline at end of file diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index cbfac3ae02e..9f25d74a027 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -17,7 +17,7 @@ center_of_mass = null var/list/datum/stack_recipe/recipes var/singular_name - VAR_PROTECTED/amount = 1 + var/amount = 1 var/max_amount //also see stack recipes initialisation, param "max_res_amount" must be equal to this max_amount var/stacktype //determines whether different stack types can merge var/build_type = null //used when directly applied to a turf diff --git a/code/modules/client/preference_setup/global/01_ui.dm b/code/modules/client/preference_setup/global/01_ui.dm index 7afc90d082e..c700e2ba93b 100644 --- a/code/modules/client/preference_setup/global/01_ui.dm +++ b/code/modules/client/preference_setup/global/01_ui.dm @@ -14,6 +14,7 @@ S["tgui_fancy"] >> pref.tgui_fancy S["tgui_lock"] >> pref.tgui_lock S["tgui_input_mode"] >> pref.tgui_input_mode + S["tgui_input_lock"] >> pref.tgui_input_lock S["tgui_large_buttons"] >> pref.tgui_large_buttons S["tgui_swapped_buttons"] >> pref.tgui_swapped_buttons @@ -29,6 +30,7 @@ S["tgui_fancy"] << pref.tgui_fancy S["tgui_lock"] << pref.tgui_lock S["tgui_input_mode"] << pref.tgui_input_mode + S["tgui_input_lock"] << pref.tgui_input_lock S["tgui_large_buttons"] << pref.tgui_large_buttons S["tgui_swapped_buttons"] << pref.tgui_swapped_buttons @@ -44,6 +46,7 @@ pref.tgui_fancy = sanitize_integer(pref.tgui_fancy, 0, 1, initial(pref.tgui_fancy)) pref.tgui_lock = sanitize_integer(pref.tgui_lock, 0, 1, initial(pref.tgui_lock)) pref.tgui_input_mode = sanitize_integer(pref.tgui_input_mode, 0, 1, initial(pref.tgui_input_mode)) + pref.tgui_input_lock = sanitize_integer(pref.tgui_input_lock, 0, 1, initial(pref.tgui_input_lock)) pref.tgui_large_buttons = sanitize_integer(pref.tgui_large_buttons, 0, 1, initial(pref.tgui_large_buttons)) pref.tgui_swapped_buttons = sanitize_integer(pref.tgui_swapped_buttons, 0, 1, initial(pref.tgui_swapped_buttons)) @@ -56,9 +59,10 @@ . += "Client FPS: [pref.client_fps]
" . += "Random Ambience Frequency: [pref.ambience_freq]
" . += "Ambience Chance: [pref.ambience_chance]
" - . += "tgui Window Mode: [(pref.tgui_fancy) ? "Fancy (default)" : "Compatible (slower)"]
" - . += "tgui Window Placement: [(pref.tgui_lock) ? "Primary Monitor" : "Free (default)"]
" + . += "TGUI Window Mode: [(pref.tgui_fancy) ? "Fancy (default)" : "Compatible (slower)"]
" + . += "TGUI Window Placement: [(pref.tgui_lock) ? "Primary Monitor" : "Free (default)"]
" . += "TGUI Input Framework: [(pref.tgui_input_mode) ? "Enabled" : "Disabled (default)"]
" + . += "TGUI Input Lock: [(pref.tgui_input_lock) ? "Enabled" : "Disabled (default)"]
" . += "TGUI Large Buttons: [(pref.tgui_large_buttons) ? "Enabled (default)" : "Disabled"]
" . += "TGUI Swapped Buttons: [(pref.tgui_swapped_buttons) ? "Enabled" : "Disabled (default)"]
" if(can_select_ooc_color(user)) @@ -107,14 +111,14 @@ if(pref.client) pref.client.fps = fps_new return TOPIC_REFRESH - + else if(href_list["select_ambience_freq"]) var/ambience_new = tgui_input_number(user, "Input how often you wish to hear ambience repeated! (1-60 MINUTES, 0 for disabled)", "Global Preference", pref.ambience_freq, 60, 0) if(isnull(ambience_new) || !CanUseTopic(user)) return TOPIC_NOACTION if(ambience_new < 0 || ambience_new > 60) return TOPIC_NOACTION pref.ambience_freq = ambience_new return TOPIC_REFRESH - + else if(href_list["select_ambience_chance"]) var/ambience_chance_new = tgui_input_number(user, "Input the chance you'd like to hear ambience played to you (On area change, or by random ambience). 35 means a 35% chance to play ambience. This is a range from 0-100. 0 disables ambience playing entirely. This is also affected by Ambience Frequency.", "Global Preference", pref.ambience_freq, 100, 0) if(isnull(ambience_chance_new) || !CanUseTopic(user)) return TOPIC_NOACTION @@ -125,7 +129,7 @@ else if(href_list["tgui_fancy"]) pref.tgui_fancy = !pref.tgui_fancy return TOPIC_REFRESH - + else if(href_list["tgui_lock"]) pref.tgui_lock = !pref.tgui_lock return TOPIC_REFRESH @@ -134,6 +138,10 @@ pref.tgui_input_mode = !pref.tgui_input_mode return TOPIC_REFRESH + else if(href_list["tgui_input_lock"]) + pref.tgui_input_lock = !pref.tgui_input_lock + return TOPIC_REFRESH + else if(href_list["tgui_large_buttons"]) pref.tgui_large_buttons = !pref.tgui_large_buttons return TOPIC_REFRESH diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index c5e3200a2bf..db1e8fda212 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -29,6 +29,7 @@ var/list/preferences_datums = list() var/tgui_fancy = TRUE var/tgui_lock = FALSE var/tgui_input_mode = FALSE // All the Input Boxes (Text,Number,List,Alert) + var/tgui_input_lock = FALSE var/tgui_large_buttons = TRUE var/tgui_swapped_buttons = FALSE diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm index c3bdad4e4ea..bbf0809bc4b 100644 --- a/code/modules/clothing/head/soft_caps.dm +++ b/code/modules/clothing/head/soft_caps.dm @@ -98,6 +98,7 @@ name = "shipping cap" desc = "It's a ballcap bearing the colors of Major Bill's Shipping." icon_state = "mbillsoft" + item_state_slots = list(slot_r_hand_str = "redsoft", slot_l_hand_str = "redsoft") catalogue_data = list(/datum/category_item/catalogue/information/organization/major_bills) /obj/item/clothing/head/soft/med diff --git a/code/modules/tgui_input/text.dm b/code/modules/tgui_input/text.dm index f115fdde63c..614f9e142ec 100644 --- a/code/modules/tgui_input/text.dm +++ b/code/modules/tgui_input/text.dm @@ -39,6 +39,11 @@ return input(user, message, title, default) as message|null else return input(user, message, title, default) as text|null + + //Client has TGUI input lock on; override whatever prevent_enter was specified beforehand + if(user.client.prefs.tgui_input_lock) + prevent_enter = TRUE + var/datum/tgui_input_text/text_input = new(user, message, title, default, max_length, multiline, encode, timeout, prevent_enter) text_input.tgui_interact(user) text_input.wait() diff --git a/config/alienwhitelist.txt b/config/alienwhitelist.txt index 712a94cfbf0..440e35dbf25 100644 --- a/config/alienwhitelist.txt +++ b/config/alienwhitelist.txt @@ -111,7 +111,9 @@ pastelprincedan - Protean pearlprophet - Protean pemdesos - Protean phoenixx0 - Vox +pontifexminimus - Black-Eyed Shadekin pontifexminimus - Protean +pontifexminimus - Xenochimera qrocakes - Black-Eyed Shadekin radiantaurora - Protean residentcody - Black-Eyed Shadekin diff --git a/icons/inventory/head/mob.dmi b/icons/inventory/head/mob.dmi index aded629d431..9ba1cea1ff2 100644 Binary files a/icons/inventory/head/mob.dmi and b/icons/inventory/head/mob.dmi differ diff --git a/icons/inventory/head/mob_vr_vulpkanin.dmi b/icons/inventory/head/mob_vr_vulpkanin.dmi index 7da329c30a7..d82fece7caf 100644 Binary files a/icons/inventory/head/mob_vr_vulpkanin.dmi and b/icons/inventory/head/mob_vr_vulpkanin.dmi differ diff --git a/maps/groundbase/gb-centcomm.dmm b/maps/groundbase/gb-centcomm.dmm index 1d31b107c56..e078f40080d 100644 --- a/maps/groundbase/gb-centcomm.dmm +++ b/maps/groundbase/gb-centcomm.dmm @@ -4405,12 +4405,6 @@ /obj/item/weapon/book/manual/security_space_law, /turf/simulated/floor/tiled, /area/centcom/security) -"pf" = ( -/obj/structure/bed/chair/shuttle{ - dir = 4 - }, -/turf/simulated/shuttle/floor, -/area/shuttle/escape) "pg" = ( /obj/structure/table/standard, /turf/simulated/floor/carpet, @@ -21031,9 +21025,9 @@ SA tQ tQ Ll -pf -pf -pf +Sc +Sc +Sc jh Sc Sc diff --git a/maps/groundbase/gb-z2.dmm b/maps/groundbase/gb-z2.dmm index 55007f41dba..fd74501e4d0 100644 --- a/maps/groundbase/gb-z2.dmm +++ b/maps/groundbase/gb-z2.dmm @@ -2774,8 +2774,8 @@ }, /obj/machinery/button/remote/blast_door{ dir = 4; - pixel_x = -25; - id = "chem_room" + id = "chem_room"; + pixel_x = -25 }, /turf/simulated/floor/tiled/white, /area/groundbase/medical/Chemistry) @@ -5088,14 +5088,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/requests_console{ - department = "Cargo Bay"; - departmentType = 2; - dir = 8; - pixel_x = 28 - }, -/turf/simulated/floor/wood, -/area/groundbase/cargo/qm) +/turf/simulated/floor/tiled, +/area/groundbase/cargo/storage) "ou" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -7271,7 +7265,13 @@ /turf/simulated/floor/wood, /area/groundbase/civilian/library) "uA" = ( -/obj/structure/closet/secure_closet/cargotech, +/obj/structure/table/standard, +/obj/item/clothing/under/pizzaguy, +/obj/item/clothing/under/pizzaguy, +/obj/item/clothing/under/pizzaguy, +/obj/item/clothing/head/pizzaguy, +/obj/item/clothing/head/pizzaguy, +/obj/item/clothing/head/pizzaguy, /turf/simulated/floor/tiled, /area/groundbase/cargo/storage) "uC" = ( @@ -7777,9 +7777,9 @@ /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor, /obj/machinery/door/blast/regular{ + dir = 4; id = "chem_room"; - name = "Chemistry Shutters"; - dir = 4 + name = "Chemistry Shutters" }, /turf/simulated/floor, /area/groundbase/medical/Chemistry)