diff --git a/code/ATMOSPHERICS/components/omni_devices/filter.dm b/code/ATMOSPHERICS/components/omni_devices/filter.dm
index d9009168c5..074c6c528d 100644
--- a/code/ATMOSPHERICS/components/omni_devices/filter.dm
+++ b/code/ATMOSPHERICS/components/omni_devices/filter.dm
@@ -88,7 +88,7 @@
return 1
/obj/machinery/atmospherics/omni/atmos_filter/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
- usr.set_machine(src)
+ user.set_machine(src)
var/list/data = new()
diff --git a/code/datums/wires/wires.dm b/code/datums/wires/wires.dm
index 009088af34..54a9c79f60 100644
--- a/code/datums/wires/wires.dm
+++ b/code/datums/wires/wires.dm
@@ -117,7 +117,7 @@ var/list/wireColours = list("red", "blue", "green", "darkred", "orange", "brown"
var/obj/item/I = L.get_active_hand()
holder.add_hiddenprint(L)
if(href_list["cut"]) // Toggles the cut/mend status
- if(I.is_wirecutter())
+ if(I?.is_wirecutter())
var/colour = href_list["cut"]
CutWireColour(colour)
playsound(holder, I.usesound, 20, 1)
diff --git a/code/modules/admin/view_variables/topic.dm b/code/modules/admin/view_variables/topic.dm
index 933e63f7fd..c2b7132494 100644
--- a/code/modules/admin/view_variables/topic.dm
+++ b/code/modules/admin/view_variables/topic.dm
@@ -366,7 +366,7 @@
if(istype(H,/mob/living/silicon/ai))
possibleverbs += typesof(/mob/living/silicon/proc,/mob/living/silicon/ai/proc,/mob/living/silicon/ai/verb)
if(istype(H,/mob/living/simple_mob))
- possibleverbs += typesof(/mob/living/simple_mob/proc,/mob/living/simple_mob/verb) //VOREStation edit, Apparently polaris simplemobs have no verbs at all.
+ possibleverbs += typesof(/mob/living/simple_mob/proc)
possibleverbs -= H.verbs
possibleverbs += "Cancel" // ...And one for the bottom
diff --git a/code/modules/client/preference_setup/loadout/loadout.dm b/code/modules/client/preference_setup/loadout/loadout.dm
index 54fdf6667d..ae7826511d 100644
--- a/code/modules/client/preference_setup/loadout/loadout.dm
+++ b/code/modules/client/preference_setup/loadout/loadout.dm
@@ -272,12 +272,12 @@ var/list/gear_datums = list()
/datum/gear/proc/spawn_item(var/location, var/metadata)
var/datum/gear_data/gd = new(path, location)
- for(var/datum/gear_tweak/gt in gear_tweaks)
- if(gear_tweaks.len)
+ if(length(gear_tweaks) && metadata)
+ for(var/datum/gear_tweak/gt in gear_tweaks)
gt.tweak_gear_data(metadata["[gt]"], gd)
var/item = new gd.path(gd.location)
- for(var/datum/gear_tweak/gt in gear_tweaks)
- if(gear_tweaks.len)
+ if(length(gear_tweaks) && metadata)
+ for(var/datum/gear_tweak/gt in gear_tweaks)
gt.tweak_item(item, metadata["[gt]"])
var/mob/M = location
if(istype(M) && exploitable) //Update exploitable info records for the mob without creating a duplicate object at their feet.
diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm
index 097ca2b783..ccd12729c4 100644
--- a/code/modules/hydroponics/seed.dm
+++ b/code/modules/hydroponics/seed.dm
@@ -99,7 +99,7 @@
return
var/datum/reagents/R = new/datum/reagents(100)
- if(chems.len)
+ if(chems && chems.len)
for(var/rid in chems)
var/injecting = min(5,max(1,get_trait(TRAIT_POTENCY)/3))
R.add_reagent(rid,injecting)
@@ -193,7 +193,7 @@
if(!flesh_colour) flesh_colour = get_trait(TRAIT_PRODUCT_COLOUR)
if(flesh_colour) splat.color = get_trait(TRAIT_PRODUCT_COLOUR)
- if(chems)
+ if(chems && chems.len)
for(var/mob/living/M in T.contents)
if(!M.reagents)
continue
diff --git a/code/modules/mob/dead/observer/observer_vr.dm b/code/modules/mob/dead/observer/observer_vr.dm
index 611bbb39a7..2be0c90b80 100644
--- a/code/modules/mob/dead/observer/observer_vr.dm
+++ b/code/modules/mob/dead/observer/observer_vr.dm
@@ -62,7 +62,7 @@
set name = "Notify Transcore"
set desc = "If your past-due backup notification was missed or ignored, you can use this to send a new one."
- if(src.mind.name in SStranscore.backed_up)
+ if(src.mind && src.mind.name in SStranscore.backed_up)
var/datum/transhuman/mind_record/record = SStranscore.backed_up[src.mind.name]
if(!(record.dead_state == MR_DEAD))
to_chat(src, "Your backup is not past-due yet.")
diff --git a/code/modules/mob/living/simple_mob/simple_mob_vr.dm b/code/modules/mob/living/simple_mob/simple_mob_vr.dm
index 127bad2295..257aaff7f2 100644
--- a/code/modules/mob/living/simple_mob/simple_mob_vr.dm
+++ b/code/modules/mob/living/simple_mob/simple_mob_vr.dm
@@ -198,6 +198,10 @@
if(LAZYLEN(vore_organs))
return
+ // Since they have bellies, add verbs to toggle settings on them.
+ verbs |= /mob/living/simple_mob/proc/toggle_digestion
+ verbs |= /mob/living/simple_mob/proc/toggle_fancygurgle
+
//A much more detailed version of the default /living implementation
var/obj/belly/B = new /obj/belly(src)
vore_selected = B
diff --git a/code/modules/vore/eating/simple_animal_vr.dm b/code/modules/vore/eating/simple_animal_vr.dm
index a7aa7c7acd..05e8e84601 100644
--- a/code/modules/vore/eating/simple_animal_vr.dm
+++ b/code/modules/vore/eating/simple_animal_vr.dm
@@ -24,9 +24,9 @@
//
// Simple proc for animals to have their digestion toggled on/off externally
+// Added as a verb in /mob/living/simple_mob/init_vore() if vore is enabled for this mob.
//
-
-/mob/living/simple_mob/verb/toggle_digestion()
+/mob/living/simple_mob/proc/toggle_digestion()
set name = "Toggle Animal's Digestion"
set desc = "Enables digestion on this mob for 20 minutes."
set category = "OOC"
@@ -35,6 +35,9 @@
var/mob/living/carbon/human/user = usr
if(!istype(user) || user.stat) return
+ if(!vore_selected)
+ to_chat(user, "[src] isn't planning on eating anything much less digesting it.")
+ return
if(ai_holder.retaliate || (ai_holder.hostile && faction != user.faction))
to_chat(user, "This predator isn't friendly, and doesn't give a shit about your opinions of it digesting you.")
return
@@ -49,7 +52,8 @@
if(confirm == "Disable")
vore_selected.digest_mode = DM_HOLD
-/mob/living/simple_mob/verb/toggle_fancygurgle()
+// Added as a verb in /mob/living/simple_mob/init_vore() if vore is enabled for this mob.
+/mob/living/simple_mob/proc/toggle_fancygurgle()
set name = "Toggle Animal's Gurgle sounds"
set desc = "Switches between Fancy and Classic sounds on this mob."
set category = "OOC"
@@ -57,6 +61,9 @@
var/mob/living/user = usr //I mean, At least ghosts won't use it.
if(!istype(user) || user.stat) return
+ if(!vore_selected)
+ to_chat(user, "[src] isn't vore capable.")
+ return
vore_selected.fancy_vore = !vore_selected.fancy_vore
to_chat(user, "[src] is now using [vore_selected.fancy_vore ? "Fancy" : "Classic"] vore sounds.")
diff --git a/code/modules/xenoarcheaology/finds/find_spawning.dm b/code/modules/xenoarcheaology/finds/find_spawning.dm
index be86279b08..4c091200ca 100644
--- a/code/modules/xenoarcheaology/finds/find_spawning.dm
+++ b/code/modules/xenoarcheaology/finds/find_spawning.dm
@@ -36,7 +36,7 @@
item_type = "bowl"
if(prob(33))
new_item = new /obj/item/weapon/reagent_containers/glass/replenishing(src.loc)
- new_item.origin_tech[TECH_ARCANE] = 1
+ LAZYSET(new_item.origin_tech, TECH_ARCANE, 1)
else
new_item = new /obj/item/weapon/reagent_containers/glass/beaker(src.loc)
new_item.icon = 'icons/obj/xenoarchaeology.dmi'
@@ -50,7 +50,7 @@
item_type = "urn"
if(prob(33))
new_item = new /obj/item/weapon/reagent_containers/glass/replenishing(src.loc)
- new_item.origin_tech[TECH_ARCANE] = 1
+ LAZYSET(new_item.origin_tech, TECH_ARCANE, 1)
else
new_item = new /obj/item/weapon/reagent_containers/glass/beaker(src.loc)
new_item.icon = 'icons/obj/xenoarchaeology.dmi'
@@ -67,7 +67,7 @@
else
new_item = new /obj/item/weapon/material/kitchen/utensil/spoon(src.loc)
if(prob(60))
- new_item.origin_tech[TECH_ARCANE] = 1
+ LAZYSET(new_item.origin_tech, TECH_ARCANE, 1)
additional_desc = "[pick("It's like no [item_type] you've ever seen before",\
"It's a mystery how anyone is supposed to eat with this",\
"You wonder what the creator's mouth was shaped like")]."
@@ -81,7 +81,7 @@
[pick("performing unspeakable acts","posing heroically","in a fetal position","cheering","sobbing","making a plaintive gesture","making a rude gesture")]."
if(prob(25))
new_item = new /obj/item/weapon/vampiric(src.loc)
- new_item.origin_tech[TECH_ARCANE] = 1
+ LAZYSET(new_item.origin_tech, TECH_ARCANE, 1)
if(5)
name = "instrument"
icon = 'icons/obj/xenoarchaeology.dmi'
@@ -141,7 +141,7 @@
var/storage_amount = 2**(new_box.max_w_class-1)
new_box.max_storage_space = rand(storage_amount, storage_amount * 10)
if(prob(30))
- new_item.origin_tech[TECH_ARCANE] = 1
+ LAZYSET(new_item.origin_tech, TECH_ARCANE, 1)
apply_image_decorations = 1
if(12)
item_type = "[pick("cylinder","tank","chamber")]"
@@ -192,7 +192,7 @@
if(prob(30))
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "pen1"
- new_item.origin_tech[TECH_ARCANE] = 1
+ LAZYSET(new_item.origin_tech, TECH_ARCANE, 1)
apply_image_decorations = 1
if(16)
apply_prefix = 0
@@ -217,7 +217,7 @@
new_item = new /obj/item/device/soulstone(src.loc)
new_item.icon = 'icons/obj/xenoarchaeology.dmi'
new_item.icon_state = icon_state
- new_item.origin_tech[TECH_ARCANE] = 2
+ LAZYSET(new_item.origin_tech, TECH_ARCANE, 2)
if(17)
//cultblade
apply_prefix = 0
@@ -248,14 +248,14 @@
var/new_type = pick(possible_spawns)
new_item = new new_type(src.loc)
- new_item.origin_tech[TECH_ARCANE] = 1
+ LAZYSET(new_item.origin_tech, TECH_ARCANE, 1)
if(21)
//soulstone
apply_prefix = 0
new_item = new /obj/item/device/soulstone(src.loc)
item_type = new_item.name
apply_material_decorations = 0
- new_item.origin_tech[TECH_ARCANE] = 2
+ LAZYSET(new_item.origin_tech, TECH_ARCANE, 2)
if(22)
if(prob(50))
new_item = new /obj/item/weapon/material/shard(src.loc)
@@ -303,10 +303,10 @@
new_gun.power_supply.rigged = 1
if(prob(10))
new_gun.power_supply.maxcharge = 0
- new_gun.origin_tech[TECH_ARCANE] = rand(0, 1)
+ LAZYSET(new_gun.origin_tech, TECH_ARCANE, rand(0, 1))
if(prob(15))
new_gun.power_supply.charge = rand(0, new_gun.power_supply.maxcharge)
- new_gun.origin_tech[TECH_ARCANE] = 1
+ LAZYSET(new_gun.origin_tech, TECH_ARCANE, 1)
else
new_gun.power_supply.charge = 0
@@ -431,7 +431,7 @@
//gas mask
if(prob(25))
new_item = new /obj/item/clothing/mask/gas/poltergeist(src.loc)
- new_item.origin_tech[TECH_ARCANE] = 1
+ LAZYSET(new_item.origin_tech, TECH_ARCANE, 1)
else
new_item = new /obj/item/clothing/mask/gas(src.loc)
if(prob(40))
@@ -465,14 +465,14 @@
var/new_type = pick(alien_stuff)
new_item = new new_type(src.loc)
- new_item.origin_tech[TECH_ARCANE] = 2
- new_item.origin_tech[TECH_PRECURSOR] = 1
+ LAZYSET(new_item.origin_tech, TECH_ARCANE, 2)
+ LAZYSET(new_item.origin_tech, TECH_PRECURSOR, 1)
item_type = new_item.name
if(37)
// Alien boats.
apply_prefix = FALSE
- var/new_boat_mat = pickweight(
+ var/new_boat_mat = pickweight(list(
MAT_WOOD = 100,
MAT_SIFWOOD = 200,
DEFAULT_WALL_MATERIAL = 60,
@@ -489,7 +489,7 @@
MAT_DURASTEEL = 2,
MAT_MORPHIUM = 2,
MAT_SUPERMATTER = 1
- )
+ ))
var/list/alien_stuff = list(
/obj/vehicle/boat,
/obj/vehicle/boat/dragon
@@ -522,7 +522,7 @@
new_item = new /obj/item/weapon/telecube/randomized(src.loc)
if(istype(new_item, /obj/item/weapon/material))
- var/new_item_mat = pickweight(
+ var/new_item_mat = pickweight(list(
DEFAULT_WALL_MATERIAL = 80,
MAT_WOOD = 20,
MAT_SIFWOOD = 40,
@@ -539,7 +539,7 @@
MAT_DURASTEEL = 2,
MAT_MORPHIUM = 2,
MAT_SUPERMATTER = 1
- )
+ ))
var/obj/item/weapon/material/MW = new_item
MW.applies_material_colour = TRUE
MW.set_material(new_item_mat)
@@ -612,8 +612,8 @@
if(talkative)
new_item.talking_atom = new(new_item)
- new_item.origin_tech[TECH_ARCANE] = 1
- new_item.origin_tech[TECH_PRECURSOR] = 1
+ LAZYSET(new_item.origin_tech, TECH_ARCANE, 1)
+ LAZYSET(new_item.origin_tech, TECH_PRECURSOR, 1)
var/turf/simulated/mineral/T = get_turf(new_item)
if(istype(T))
@@ -623,5 +623,5 @@
else if(talkative)
src.talking_atom = new(src)
- new_item.origin_tech[TECH_ARCANE] = 1
- new_item.origin_tech[TECH_PRECURSOR] = 1
+ LAZYSET(new_item.origin_tech, TECH_ARCANE, 1)
+ LAZYSET(new_item.origin_tech, TECH_PRECURSOR, 1)