diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 03ed7b4262e..cb30c830b01 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -70,7 +70,7 @@
#define TRANSITIONEDGE 7 //Distance from edge to move to another z-level
#define BE_CLOSE TRUE //in the case of a silicon, to select if they need to be next to the atom
-#define NO_DEXTERY TRUE //if other mobs (monkeys, aliens, etc) can use this
+#define NO_DEXTERITY TRUE //if other mobs (monkeys, aliens, etc) can use this // I had to change 20+ files because some non-dnd-playing fuckchumbis can't spell "dexterity"
#define NO_TK TRUE
//used by canUseTopic()
diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm
index f5564f99a57..97dd6e008bd 100644
--- a/code/datums/components/rotation.dm
+++ b/code/datums/components/rotation.dm
@@ -127,7 +127,7 @@
after_rotation.Invoke(user,rotation_type)
/datum/component/simple_rotation/proc/default_can_user_rotate(mob/living/user, rotation_type)
- if(!istype(user) || !user.canUseTopic(parent, BE_CLOSE, NO_DEXTERY))
+ if(!istype(user) || !user.canUseTopic(parent, BE_CLOSE, NO_DEXTERITY))
return FALSE
return TRUE
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index 0e8b79f6e23..d2d6b645b31 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -56,7 +56,9 @@
return ..()
/obj/machinery/computer/security/interact(mob/user)
- if(stat)
+ if (stat)
+ return
+ if (ismob(user) && !isliving(user)) // ghosts don't need cameras
return
if (!network)
user.unset_machine()
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index 0877794e8a6..6f78986cc86 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -298,7 +298,7 @@
/obj/AltClick(mob/user)
. = ..()
- if(unique_reskin && !current_skin && user.canUseTopic(src, BE_CLOSE, NO_DEXTERY))
+ if(unique_reskin && !current_skin && user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY))
reskin_obj(user)
/obj/proc/reskin_obj(mob/M)
diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm
index 33767941e2f..58309046187 100644
--- a/code/game/objects/structures.dm
+++ b/code/game/objects/structures.dm
@@ -4,7 +4,7 @@
max_integrity = 300
interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_UI_INTERACT
layer = BELOW_OBJ_LAYER
-
+
var/climb_time = 20
var/climb_stun = 20
var/climbable = FALSE
@@ -46,9 +46,13 @@
. = ..()
if(!climbable)
return
- if(user == O && iscarbon(O))
- var/mob/living/carbon/C = O
- if(C.mobility_flags & MOBILITY_MOVE)
+ if(user == O && isliving(O))
+ var/mob/living/L = O
+ if(isanimal(L))
+ var/mob/living/simple_animal/A = L
+ if (!A.dextrous)
+ return
+ if(L.mobility_flags & MOBILITY_MOVE)
climb_structure(user)
return
if(!istype(O, /obj/item) || user.get_active_held_item() != O)
diff --git a/code/modules/antagonists/devil/true_devil/_true_devil.dm b/code/modules/antagonists/devil/true_devil/_true_devil.dm
index 3c39e91397e..83694e80e97 100644
--- a/code/modules/antagonists/devil/true_devil/_true_devil.dm
+++ b/code/modules/antagonists/devil/true_devil/_true_devil.dm
@@ -93,7 +93,7 @@
visible_message("[src] easily breaks out of [p_their()] handcuffs!", \
"With just a thought your handcuffs fall off.")
-/mob/living/carbon/true_devil/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE)
+/mob/living/carbon/true_devil/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE)
if(incapacitated())
to_chat(src, "You can't do that right now!")
return FALSE
diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm
index ffa6833679c..01c49aaf7b5 100644
--- a/code/modules/antagonists/revenant/revenant.dm
+++ b/code/modules/antagonists/revenant/revenant.dm
@@ -81,7 +81,7 @@
AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/malfunction(null))
random_revenant_name()
-/mob/living/simple_animal/revenant/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE)
+/mob/living/simple_animal/revenant/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE)
return FALSE
/mob/living/simple_animal/revenant/proc/random_revenant_name()
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 31486767c66..15326723722 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -748,7 +748,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
update_icon()
-/mob/dead/observer/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE)
+/mob/dead/observer/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE)
return IsAdminGhost(usr)
/mob/dead/observer/is_literate()
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index fa591b2a528..e1dc3e3abcf 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -55,7 +55,7 @@
/mob/living/carbon/alien/humanoid/Topic(href, href_list)
//strip panel
- if(href_list["pouches"] && usr.canUseTopic(src, BE_CLOSE, NO_DEXTERY))
+ if(href_list["pouches"] && usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY))
visible_message("[usr] tries to empty [src]'s pouches.", \
"[usr] tries to empty your pouches.")
if(do_mob(usr, src, POCKET_STRIP_DELAY * 0.5))
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 14e29c9375f..938a0d86b11 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -209,7 +209,7 @@
/mob/living/carbon/Topic(href, href_list)
..()
//strip panel
- if(href_list["internal"] && usr.canUseTopic(src, BE_CLOSE, NO_DEXTERY))
+ if(href_list["internal"] && usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY))
var/slot = text2num(href_list["internal"])
var/obj/item/ITEM = get_item_by_slot(slot)
if(ITEM && istype(ITEM, /obj/item/tank) && wear_mask && (wear_mask.clothing_flags & MASKINTERNALS))
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index cbed8f9f628..8b0c3c8c09f 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -213,7 +213,7 @@
spreadFire(AM)
/mob/living/carbon/human/Topic(href, href_list)
- if(href_list["embedded_object"] && usr.canUseTopic(src, BE_CLOSE, NO_DEXTERY))
+ if(href_list["embedded_object"] && usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY))
var/obj/item/bodypart/L = locate(href_list["embedded_limb"]) in bodyparts
if(!L)
return
@@ -242,7 +242,7 @@
to_chat(usr, "You can't reach that! Something is covering it.")
return
- if(href_list["pockets"] && usr.canUseTopic(src, BE_CLOSE, NO_DEXTERY)) //TODO: Make it match (or intergrate it into) strippanel so you get 'item cannot fit here' warnings if mob_can_equip fails
+ if(href_list["pockets"] && usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY)) //TODO: Make it match (or intergrate it into) strippanel so you get 'item cannot fit here' warnings if mob_can_equip fails
var/pocket_side = href_list["pockets"]
var/pocket_id = (pocket_side == "right" ? SLOT_R_STORE : SLOT_L_STORE)
var/obj/item/pocket_item = (pocket_id == SLOT_R_STORE ? r_store : l_store)
@@ -698,7 +698,7 @@
remove_atom_colour(TEMPORARY_COLOUR_PRIORITY, "#000000")
cut_overlay(MA)
-/mob/living/carbon/human/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE)
+/mob/living/carbon/human/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE)
if(!(mobility_flags & MOBILITY_UI))
to_chat(src, "You can't do that right now!")
return FALSE
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 0d13da996e5..1c0048a87a6 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -923,14 +923,14 @@
/mob/living/proc/harvest(mob/living/user) //used for extra objects etc. in butchering
return
-/mob/living/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE)
+/mob/living/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE)
if(incapacitated())
to_chat(src, "You can't do that right now!")
return FALSE
if(be_close && !in_range(M, src))
to_chat(src, "You are too far away!")
return FALSE
- if(!no_dextery)
+ if(!no_dexterity)
to_chat(src, "You don't have the dexterity to do this!")
return FALSE
return TRUE
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 2321012a7bc..46f8e8b875e 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -831,7 +831,7 @@
return TRUE
return ..()
-/mob/living/silicon/ai/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE)
+/mob/living/silicon/ai/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE)
if(control_disabled || incapacitated())
to_chat(src, "You can't do that right now!")
return FALSE
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index 8d8defd47d3..89a627ce9e5 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -177,7 +177,7 @@
// See software.dm for Topic()
-/mob/living/silicon/pai/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE)
+/mob/living/silicon/pai/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE)
if(be_close && !in_range(M, src))
to_chat(src, "You are too far away!")
return FALSE
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index f2e99eb5d39..45e39cab415 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -866,7 +866,7 @@
if(DISCONNECT) //Tampering with the wires
to_chat(connected_ai, "
NOTICE - Remote telemetry lost with [name].
")
-/mob/living/silicon/robot/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE)
+/mob/living/silicon/robot/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE)
if(stat || lockcharge || low_power_mode)
to_chat(src, "You can't do that right now!")
return FALSE
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 1c2557a597d..2bfc50f2b58 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -439,14 +439,14 @@
if(target)
return new childspawn(target)
-/mob/living/simple_animal/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE)
+/mob/living/simple_animal/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE)
if(incapacitated())
to_chat(src, "You can't do that right now!")
return FALSE
if(be_close && !in_range(M, src))
to_chat(src, "You are too far away!")
return FALSE
- if(!(no_dextery || dextrous))
+ if(!(no_dexterity || dextrous))
to_chat(src, "You don't have the dexterity to do this!")
return FALSE
return TRUE
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 030b6388746..f401fe5667e 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -616,7 +616,7 @@
show_inv(machine)
- if(href_list["item"] && usr.canUseTopic(src, BE_CLOSE, NO_DEXTERY))
+ if(href_list["item"] && usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY))
var/slot = text2num(href_list["item"])
var/hand_index = text2num(href_list["hand_index"])
var/obj/item/what
@@ -957,7 +957,7 @@
return IsAdminGhost(src) || Adjacent(A)
///Can the mob use Topic to interact with machines
-/mob/proc/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE)
+/mob/proc/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE)
return
///Can this mob use storage
diff --git a/code/modules/modular_computers/computers/item/processor.dm b/code/modules/modular_computers/computers/item/processor.dm
index bbad166c7a4..c634ba7594e 100644
--- a/code/modules/modular_computers/computers/item/processor.dm
+++ b/code/modules/modular_computers/computers/item/processor.dm
@@ -46,7 +46,7 @@
return machinery_computer.update_icon()
// This thing is not meant to be used on it's own, get topic data from our machinery owner.
-//obj/item/modular_computer/processor/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE)
+//obj/item/modular_computer/processor/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE)
// if(!machinery_computer)
// return 0
diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm
index d4a46854ca0..f0ca2985f85 100644
--- a/code/modules/projectiles/guns/ballistic.dm
+++ b/code/modules/projectiles/guns/ballistic.dm
@@ -294,7 +294,7 @@
update_icon()
/obj/item/gun/ballistic/AltClick(mob/user)
- if (unique_reskin && !current_skin && user.canUseTopic(src, BE_CLOSE, NO_DEXTERY))
+ if (unique_reskin && !current_skin && user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY))
reskin_obj(user)
return
if(loc == user)
diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm
index c217128134e..59243fa3465 100644
--- a/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -172,7 +172,7 @@
/obj/item/gun/ballistic/shotgun/doublebarrel/AltClick(mob/user)
. = ..()
- if(unique_reskin && !current_skin && user.canUseTopic(src, BE_CLOSE, NO_DEXTERY))
+ if(unique_reskin && !current_skin && user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY))
reskin_obj(user)
/obj/item/gun/ballistic/shotgun/doublebarrel/sawoff(mob/user)
diff --git a/code/modules/reagents/reagent_containers/chem_pack.dm b/code/modules/reagents/reagent_containers/chem_pack.dm
index ddd0813445b..35fd4a7dd4b 100644
--- a/code/modules/reagents/reagent_containers/chem_pack.dm
+++ b/code/modules/reagents/reagent_containers/chem_pack.dm
@@ -12,7 +12,7 @@
fill_icon_thresholds = list(10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
/obj/item/reagent_containers/chem_pack/AltClick(mob/living/user)
- if(user.canUseTopic(src, BE_CLOSE, NO_DEXTERY) && !sealed)
+ if(user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY) && !sealed)
if(iscarbon(user) && (HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50)))
to_chat(user, "Uh... whoops! You accidentally spill the content of the bag onto yourself.")
SplashReagents(user)
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index 047ff1c1512..e6c3607dd6c 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -392,7 +392,7 @@
"Blue" = "sprayer_med_blue")
/obj/item/reagent_containers/spray/medical/AltClick(mob/user)
- if(unique_reskin && !current_skin && user.canUseTopic(src, BE_CLOSE, NO_DEXTERY))
+ if(unique_reskin && !current_skin && user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY))
reskin_obj(user)
/obj/item/reagent_containers/spray/medical/reskin_obj(mob/M)