diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 04b0e352831..60476f48a26 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -882,7 +882,7 @@ reagents = R R.my_atom = src POWERFLAG = rand(1,10) - Uses = rand(2, 5) + Uses = rand(7, 25) //flags |= NOREACT spawn() diff --git a/code/defines/procs/helpers.dm b/code/defines/procs/helpers.dm index bfc5d79afda..8278f83c9aa 100644 --- a/code/defines/procs/helpers.dm +++ b/code/defines/procs/helpers.dm @@ -218,6 +218,8 @@ return max(low,min(high,num)) /proc/dd_replacetext(text, search_string, replacement_string) + if(!text || !search_string || !replacement_string) + return null var/textList = dd_text2list(text, search_string) return dd_list2text(textList, replacement_string) @@ -1339,7 +1341,7 @@ proc/listclearnulls(list/list) var/y_pos = null var/z_pos = null -/area/proc/move_contents_to(var/area/A, var/turftoleave=null) +/area/proc/move_contents_to(var/area/A, var/turftoleave=null, var/direction = null) //Takes: Area. Optional: turf type to leave behind. //Returns: Nothing. //Notes: Attempts to move the contents of one area to another area. @@ -1398,7 +1400,39 @@ proc/listclearnulls(list/list) X.icon_state = old_icon_state1 X.icon = old_icon1 //Shuttle floors are in shuttle.dmi while the defaults are floors.dmi + /* Quick visual fix for some weird shuttle corner artefacts when on transit space tiles */ + if(direction && findtext(X.icon_state, "swall_s")) + + // Spawn a new shuttle corner object + var/obj/corner = new() + corner.loc = X + corner.density = 1 + corner.anchored = 1 + corner.icon = X.icon + corner.icon_state = dd_replacetext(X.icon_state, "_s", "_f") + corner.tag = "delete me" + corner.name = "wall" + + // Find a new turf to take on the property of + var/turf/nextturf = get_step(corner, direction) + if(!nextturf) + nextturf = get_step(corner, turn(direction, 180)) + + + // Take on the icon of a neighboring scrolling space icon + X.icon = nextturf.icon + X.icon_state = nextturf.icon_state + + for(var/obj/O in T) + + // Reset the shuttle corners + if(O.tag == "delete me") + X.icon = 'shuttle.dmi' + X.icon_state = dd_replacetext(O.icon_state, "_f", "_s") // revert the turf to the old icon_state + X.name = "wall" + del(O) // prevents multiple shuttle corners from stacking + continue if(!istype(O,/obj)) continue O.loc = X for(var/mob/M in T) diff --git a/code/game/machinery/telecomms/logbrowser.dm b/code/game/machinery/telecomms/logbrowser.dm index c56052ef260..e969112a084 100644 --- a/code/game/machinery/telecomms/logbrowser.dm +++ b/code/game/machinery/telecomms/logbrowser.dm @@ -195,7 +195,7 @@ var/newnet = input(usr, "Which network do you want to view?", "Comm Monitor", network) as null|text - if(newnet && (usr in range(1, src) || issilicon(usr))) + if(newnet && ((usr in range(1, src) || issilicon(usr)))) if(length(newnet) > 15) temp = "- FAILED: NETWORK TAG STRING TOO LENGHTLY -" diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index f5f9520d753..27c49bf0800 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -90,14 +90,18 @@ del(src) + attack_ai(var/mob/user as mob) + attack_hand(user) + attack_hand(var/mob/user as mob) - // You need a multitool to use this. - if(user.equipped()) - if(!istype(user.equipped(), /obj/item/device/multitool)) + // You need a multitool to use this, or be silicon + if(!issilicon(user)) + if(user.equipped()) + if(!istype(user.equipped(), /obj/item/device/multitool)) + return + else return - else - return if(stat & (BROKEN|NOPOWER) || !on) return @@ -150,11 +154,12 @@ Topic(href, href_list) - if(usr.equipped()) - if(!istype(usr.equipped(), /obj/item/device/multitool)) + if(!issilicon(usr)) + if(usr.equipped()) + if(!istype(usr.equipped(), /obj/item/device/multitool)) + return + else return - else - return if(stat & (BROKEN|NOPOWER) || !on) return diff --git a/code/game/machinery/telecomms/telemonitor.dm b/code/game/machinery/telecomms/telemonitor.dm index 3567e41f1c3..8faa77779ab 100644 --- a/code/game/machinery/telecomms/telemonitor.dm +++ b/code/game/machinery/telecomms/telemonitor.dm @@ -108,7 +108,7 @@ if(href_list["network"]) var/newnet = input(usr, "Which network do you want to view?", "Comm Monitor", network) as null|text - if(newnet && (usr in range(1, src) || issilicon(usr))) + if(newnet && ((usr in range(1, src) || issilicon(usr)))) if(length(newnet) > 15) temp = "- FAILED: NETWORK TAG STRING TOO LENGHTLY -" diff --git a/code/game/machinery/telecomms/traffic_control.dm b/code/game/machinery/telecomms/traffic_control.dm index 283418fe494..b051d1c4fc3 100644 --- a/code/game/machinery/telecomms/traffic_control.dm +++ b/code/game/machinery/telecomms/traffic_control.dm @@ -189,7 +189,7 @@ var/newnet = input(usr, "Which network do you want to view?", "Comm Monitor", network) as null|text - if(newnet && (usr in range(1, src) || issilicon(usr))) + if(newnet && ((usr in range(1, src) || issilicon(usr)))) if(length(newnet) > 15) temp = "- FAILED: NETWORK TAG STRING TOO LENGHTLY -" diff --git a/code/modules/chemical/Chemistry-Recipes.dm b/code/modules/chemical/Chemistry-Recipes.dm index 476648fa56d..41b5f84b46c 100644 --- a/code/modules/chemical/Chemistry-Recipes.dm +++ b/code/modules/chemical/Chemistry-Recipes.dm @@ -745,7 +745,7 @@ datum if(M:eyecheck() <= 0) flick("e_flash", M.flash) - for(var/i = 1, i <= created_volume, i++) + for(var/i = 1, i <= created_volume + rand(1,2), i++) var/chosen = pick(borks) var/obj/B = new chosen if(B) diff --git a/code/modules/scripting/IDE.dm b/code/modules/scripting/IDE.dm index 8199e9fac81..9427a85d964 100644 --- a/code/modules/scripting/IDE.dm +++ b/code/modules/scripting/IDE.dm @@ -1,7 +1,7 @@ client/verb/tcssave() set hidden = 1 - if(mob.machine) - if(istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && (mob.machine in view(1, mob) || issilicon(mob))) + if(mob.machine || issilicon(mob)) + if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && mob.machine in view(1, mob)) || issilicon(mob)) var/obj/machinery/computer/telecomms/traffic/Machine = mob.machine if(Machine.editingcode != mob) return @@ -23,8 +23,8 @@ client/verb/tcssave() client/verb/tcscompile() set hidden = 1 - if(mob.machine) - if(istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && (mob.machine in view(1, mob) || issilicon(mob))) + if(mob.machine || issilicon(mob)) + if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && mob.machine in view(1, mob)) || issilicon(mob)) var/obj/machinery/computer/telecomms/traffic/Machine = mob.machine if(Machine.editingcode != mob) return @@ -74,8 +74,8 @@ client/verb/tcscompile() client/verb/tcsrun() set hidden = 1 - if(mob.machine) - if(istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && (mob.machine in view(1, mob) || issilicon(mob))) + if(mob.machine || issilicon(mob)) + if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && mob.machine in view(1, mob)) || issilicon(mob)) var/obj/machinery/computer/telecomms/traffic/Machine = mob.machine if(Machine.editingcode != mob) return @@ -140,8 +140,8 @@ client/verb/tcsrun() client/verb/exittcs() set hidden = 1 - if(mob.machine) - if(istype(mob.machine, /obj/machinery/computer/telecomms/traffic)) + if(mob.machine || issilicon(mob)) + if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && mob.machine in view(1, mob)) || issilicon(mob)) var/obj/machinery/computer/telecomms/traffic/Machine = mob.machine if(Machine.editingcode == mob) Machine.storedcode = "[winget(mob, "tcscode", "text")]" @@ -152,8 +152,8 @@ client/verb/exittcs() client/verb/tcsrevert() set hidden = 1 - if(mob.machine) - if(istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && (mob.machine in view(1, mob) || issilicon(mob))) + if(mob.machine || issilicon(mob)) + if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && mob.machine in view(1, mob)) || issilicon(mob)) var/obj/machinery/computer/telecomms/traffic/Machine = mob.machine if(Machine.editingcode != mob) return diff --git a/code/modules/scripting/Implementations/Telecomms.dm b/code/modules/scripting/Implementations/Telecomms.dm index 5801cf2eb45..bc3f8e4bc7b 100644 --- a/code/modules/scripting/Implementations/Telecomms.dm +++ b/code/modules/scripting/Implementations/Telecomms.dm @@ -190,7 +190,7 @@ datum/signal if(istext(address)) var/obj/machinery/telecomms/server/S = data["server"] - if(!value) + if(!value && value != 0) return S.memory[address] else @@ -204,7 +204,7 @@ datum/signal var/obj/machinery/telecomms/server/S = data["server"] var/obj/item/device/radio/hradio - if(!message) + if(!message && message != 0) message = "*beep*" if(!source) source = "[html_encode(uppertext(S.id))]" @@ -215,7 +215,7 @@ datum/signal freq *= 10 // shift the decimal one place if(!job) - job = "None" + job = "?" newsign.data["mob"] = H newsign.data["mobtype"] = H.type diff --git a/code/modules/scripting/Implementations/_Logic.dm b/code/modules/scripting/Implementations/_Logic.dm index e6ae13fdedf..af89de25a70 100644 --- a/code/modules/scripting/Implementations/_Logic.dm +++ b/code/modules/scripting/Implementations/_Logic.dm @@ -53,6 +53,7 @@ if(isobject(e)) if(istype(e, /list)) chosenlist = e + i = 2 else if(chosenlist) chosenlist.Add(e) @@ -66,6 +67,7 @@ if(isobject(e)) if(istype(e, /list)) chosenlist = e + i = 2 else if(chosenlist) chosenlist.Remove(e) @@ -113,7 +115,7 @@ // Clone of copytext() /proc/docopytext(var/string, var/start = 1, var/end = 0) if(istext(string) && isnum(start) && isnum(end)) - if(length(string) >= end && start > 0) + if(start > 0) return copytext(string, start, end) // Clone of length()