diff --git a/_maps/map_files/RandomZLevels/fileList.txt b/_maps/map_files/RandomZLevels/fileList.txt
index 3c9f8928dc1..4b12cdc0fe4 100644
--- a/_maps/map_files/RandomZLevels/fileList.txt
+++ b/_maps/map_files/RandomZLevels/fileList.txt
@@ -7,9 +7,9 @@
#Do NOT tick the maps during compile -- the game uses this list to decide which map to load. Ticking the maps will result in them ALL being loaded at once.
#DO tick the associated code file for the away mission you are enabling. Otherwise, the map will be trying to reference objects which do not exist, which will cause runtime errors!
-#_maps/map_files/map_files/RandomZLevels/academy.dmm
-_maps/map_files/map_files/RandomZLevels/beach.dmm
-#_maps/map_files/map_files/RandomZLevels/blackmarketpackers.dmm
+#_maps/map_files/RandomZLevels/academy.dmm
+_maps/map_files/RandomZLevels/beach.dmm
+#_maps/map_files/RandomZLevels/blackmarketpackers.dmm
_maps/map_files/RandomZLevels/challenge.dmm
#_maps/map_files/RandomZLevels/centcomAway.dmm
#_maps/map_files/RandomZLevels/clownplanet.dmm
diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index 329edef72f6..b0abf1bb4f8 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -158,6 +158,10 @@ var/last_chew = 0
else
user << "You fail to handcuff [C]."
+/obj/item/weapon/restraints/handcuffs/cable/zipties/used
+ desc = "A pair of broken zipties."
+ icon_state = "cuff_white_used"
+
/obj/item/weapon/restraints/handcuffs/cable/zipties/used/attack()
return
diff --git a/code/game/objects/items/weapons/lighters.dm b/code/game/objects/items/weapons/lighters.dm
index 04dccdc4da1..acb4adbe1c7 100644
--- a/code/game/objects/items/weapons/lighters.dm
+++ b/code/game/objects/items/weapons/lighters.dm
@@ -193,4 +193,21 @@
item_state = "cigoff"
name = "burnt match"
desc = "A match. This one has seen better days."
- return ..()
\ No newline at end of file
+ processing_objects.Remove(src)
+ return ..()
+
+/obj/item/weapon/match/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
+ if(!isliving(M))
+ return ..()
+ if(lit == 1) M.IgniteMob()
+ if(!istype(M, /mob))
+ return ..()
+
+ if(istype(M.wear_mask, /obj/item/clothing/mask/cigarette) && user.zone_sel.selecting == "mouth" && lit == 1)
+ var/obj/item/clothing/mask/cigarette/cig = M.wear_mask
+ if(M == user)
+ cig.attackby(src, user)
+ else
+ cig.light("[user] holds the [name] out for [M], and lights the [cig.name].")
+ else
+ ..()
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_teleport.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_teleport.dm
index 254be3f3d09..7302523d2af 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_teleport.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_teleport.dm
@@ -14,7 +14,7 @@
sparks.set_up(3, 0, get_turf(user))
sparks.start()
//
- user.loc = pick(orange(get_turf(holder), 50))
+ user.forceMove(pick(trange(50, get_turf(holder))))
sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(3, 0, get_turf(user))
sparks.start()
@@ -33,7 +33,7 @@
sparks.set_up(3, 0, get_turf(M))
sparks.start()
//
- M.loc = pick(orange(get_turf(T), 50))
+ M.forceMove(pick(trange(50, T)))
sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(3, 0, get_turf(M))
sparks.start()
@@ -52,7 +52,7 @@
sparks.set_up(3, 0, get_turf(M))
sparks.start()
//
- M.loc = pick(orange(get_turf(T), 50))
+ M.forceMove(pick(trange(50, T)))
sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(3, 0, get_turf(M))
sparks.start()