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