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()