diff --git a/code/controllers/subsystems/ai.dm b/code/controllers/subsystems/ai.dm
index 9df293f417..41fb3a7e29 100644
--- a/code/controllers/subsystems/ai.dm
+++ b/code/controllers/subsystems/ai.dm
@@ -10,7 +10,7 @@ SUBSYSTEM_DEF(ai)
var/list/currentrun = list()
var/slept_mobs = 0
- var/list/process_z = list()
+ var/list/process_z = list()
/datum/controller/subsystem/ai/stat_entry(msg_prefix)
..("P: [processing.len] | S: [slept_mobs]")
@@ -32,10 +32,13 @@ SUBSYSTEM_DEF(ai)
while(currentrun.len)
var/datum/ai_holder/A = currentrun[currentrun.len]
--currentrun.len
- var/mob/living/L = A.holder //VOREStation Edit Start
- if(!A || QDELETED(A) || !L?.loc || A.busy) // Doesn't exist or won't exist soon or not doing it this tick
+ if(!A || QDELETED(A) || A.busy) // Doesn't exist or won't exist soon or not doing it this tick
continue
-
+
+ var/mob/living/L = A.holder //VOREStation Edit Start
+ if(!L?.loc)
+ continue
+
if(process_z[get_z(L)] || !L.low_priority) //VOREStation Edit End
A.handle_strategicals()
else
diff --git a/code/datums/supplypacks/misc_vr.dm b/code/datums/supplypacks/misc_vr.dm
index c27d43a107..a088257b40 100644
--- a/code/datums/supplypacks/misc_vr.dm
+++ b/code/datums/supplypacks/misc_vr.dm
@@ -169,4 +169,5 @@
access_security,)
one_access = TRUE
- containername = "sword crate"
\ No newline at end of file
+ containername = "sword crate"
+ containertype = /obj/structure/closet/crate/secure/gear
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/chewables.dm b/code/game/objects/items/weapons/chewables.dm
index 93a2df1615..181db77e91 100644
--- a/code/game/objects/items/weapons/chewables.dm
+++ b/code/game/objects/items/weapons/chewables.dm
@@ -254,6 +254,7 @@
desc = "A chocolate-coated biscuit stick."
icon_state = "pockystick"
item_state = "pocky"
+ type_butt = null
/obj/item/clothing/mask/chewable/candy/pocky/process()
chew()
diff --git a/code/game/objects/structures/low_wall.dm b/code/game/objects/structures/low_wall.dm
index 267585a044..f50ea247b5 100644
--- a/code/game/objects/structures/low_wall.dm
+++ b/code/game/objects/structures/low_wall.dm
@@ -99,6 +99,7 @@
if(do_after(user, 40, src))
to_chat(user, "You dissasembled the low wall!")
dismantle()
+ return
// Handle placing things
if(isrobot(user))
@@ -121,7 +122,14 @@
return FALSE
return TRUE
-/obj/structure/low_wall/MouseDrop_T(obj/O, mob/user, src_location, over_location, src_control, over_control, params)
+/obj/structure/low_wall/MouseDrop_T(atom/movable/AM, mob/user, src_location, over_location, src_control, over_control, params)
+ if(AM == user)
+ var/mob/living/H = user
+ if(istype(H) && can_climb(H))
+ do_climb(AM)
+ var/obj/O = AM
+ if(!istype(O))
+ return
if(istype(O, /obj/structure/window))
var/obj/structure/window/W = O
if(Adjacent(W) && !W.anchored)
diff --git a/code/modules/ai/ai_holder.dm b/code/modules/ai/ai_holder.dm
index 86ab848733..8a101decd7 100644
--- a/code/modules/ai/ai_holder.dm
+++ b/code/modules/ai/ai_holder.dm
@@ -131,7 +131,7 @@
IF_VV_OPTION("mass_edit_finish")
if(!check_rights(R_ADMIN))
return
-
+
var/list/before = snapshot //This PROBABLY works, right?
snapshot = null
var/list/after = vars.Copy() //'vars' appears to be special in that vars.Copy produces a flat list of keys with no values. It seems that 'vars[key]' is handled somewhere in the byond engine differently than normal lists.
@@ -183,7 +183,7 @@
found += M
choices["[typechoice] ([found.len])"] = found // Prettified name for the user input below)
searching = found // Now we only search the list we just made, because of the order of our types list, each subsequent list will be a subset of the one we just finished
-
+
var/choice = tgui_input_list(usr,"Based on your AI holder's mob location, we'll edit mobs on Z [levels_working.Join(",")]. What types do you want to alter?", "Types", choices)
if(!choice)
href_list["datumrefresh"] = "\ref[src]"
@@ -201,7 +201,7 @@
L.ai_holder.vars[newvar] = after[newvar]
else
to_chat(usr,"Skipping unavailable var '[newvar]' on: [L] [ADMIN_COORDJMP(L)]")
-
+
to_chat(usr,"Mass AI edit done.")
href_list["datumrefresh"] = "\ref[src]"
@@ -291,6 +291,9 @@
// 'Tactical' processes such as moving a step, meleeing an enemy, firing a projectile, and other fairly cheap actions that need to happen quickly.
/datum/ai_holder/proc/handle_tactics()
+ if(!istype(holder) || QDELETED(holder))
+ qdel(src)
+ return
if(holder.key && !autopilot)
return
handle_special_tactic()
@@ -298,6 +301,9 @@
// 'Strategical' processes that are more expensive on the CPU and so don't get run as often as the above proc, such as A* pathfinding or robust targeting.
/datum/ai_holder/proc/handle_strategicals()
+ if(!istype(holder) || QDELETED(holder))
+ qdel(src)
+ return
if(holder.key && !autopilot)
return
handle_special_strategical()
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 0a27ff8899..815ba3a598 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -1026,6 +1026,8 @@
icontype = module_sprites[1]
else
icontype = tgui_input_list(usr, "Select an icon! [triesleft ? "You have [triesleft] more chance\s." : "This is your last try."]", "Robot Icon", module_sprites)
+ if(!icontype)
+ icontype = module_sprites[1]
if(notransform) //VOREStation edit start: sprite animation
to_chat(src, "Your current transformation has not finished yet!")
choose_icon(icon_selection_tries, module_sprites)
diff --git a/maps/stellardelight/stellar_delight3.dmm b/maps/stellardelight/stellar_delight3.dmm
index f3bc83c4ab..6fcffa8ca6 100644
--- a/maps/stellardelight/stellar_delight3.dmm
+++ b/maps/stellardelight/stellar_delight3.dmm
@@ -13027,6 +13027,9 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/tiled,
/area/stellardelight/deck3/portdock)
"Ve" = (