diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm
index f14872a0a4..a0dbc4d9b1 100644
--- a/code/modules/antagonists/wizard/equipment/artefact.dm
+++ b/code/modules/antagonists/wizard/equipment/artefact.dm
@@ -383,7 +383,9 @@
if(!istype(user) || on_cooldown)
return
var/turf/T = get_turf(user)
- if(!T)
+ var/area/A = get_area(user)
+ if(!T || !A || A.noteleport)
+ to_chat(user, "You play \the [src], yet no sound comes out of it... Looks like it won't work here.")
return
on_cooldown = TRUE
last_user = user
diff --git a/code/modules/spells/spell_types/area_teleport.dm b/code/modules/spells/spell_types/area_teleport.dm
index 747a10e769..762c376748 100644
--- a/code/modules/spells/spell_types/area_teleport.dm
+++ b/code/modules/spells/spell_types/area_teleport.dm
@@ -20,8 +20,11 @@
after_cast(targets)
/obj/effect/proc_holder/spell/targeted/area_teleport/before_cast(list/targets)
- var/A = null
-
+ var/area/U = get_area(usr)
+ if(U.noteleport && !istype(U, /area/wizard_station)) // Wizard den special check for those complaining about being unable to tele on station.
+ to_chat(usr, "Unseen forces prevent you from casting this spell in this area")
+ return
+ var/A
if(!randomise_selection)
A = input("Area to teleport to", "Teleport", A) as null|anything in GLOB.teleportlocs
else
@@ -53,12 +56,13 @@
if(target && target.buckled)
target.buckled.unbuckle_mob(target, force=1)
+ var/forcecheck = istype(get_area(target), /area/wizard_station)
var/list/tempL = L
var/attempt = null
var/success = 0
while(tempL.len)
attempt = pick(tempL)
- do_teleport(target, attempt, channel = TELEPORT_CHANNEL_MAGIC)
+ do_teleport(target, attempt, channel = TELEPORT_CHANNEL_MAGIC, forced = forcecheck)
if(get_turf(target) == attempt)
success = 1
break
@@ -66,7 +70,7 @@
tempL.Remove(attempt)
if(!success)
- do_teleport(target, L, forceMove = TRUE, channel = TELEPORT_CHANNEL_MAGIC)
+ do_teleport(target, L, forceMove = TRUE, channel = TELEPORT_CHANNEL_MAGIC, forced = forcecheck)
playsound(get_turf(user), sound2, 50,1)
return