diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm
index ce83409aeb2..d6c48800626 100644
--- a/code/__DEFINES/status_effects.dm
+++ b/code/__DEFINES/status_effects.dm
@@ -66,6 +66,8 @@
#define STATUS_EFFECT_SAWBLEED /datum/status_effect/saw_bleed //if the bleed builds up enough, takes a ton of damage
+#define STATUS_EFFECT_TELEPORTSICK /datum/status_effect/teleport_sickness //increasing debuffs as you rapidly teleport.
+
#define STATUS_EFFECT_PACIFIED /datum/status_effect/pacifism //forces the pacifism trait
//#define STATUS_EFFECT_NECROPOLIS_CURSE /datum/status_effect/necropolis_curse
//#define CURSE_BLINDING 1 //makes the edges of the target's screen obscured
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index e8cfdaf96b9..6809f22bc7f 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -137,6 +137,35 @@
else
new /obj/effect/temp_visual/bleed(get_turf(owner))
+/datum/status_effect/teleport_sickness
+ id = "teleportation sickness"
+ duration = 30 SECONDS
+ status_type = STATUS_EFFECT_REFRESH
+ alert_type = /obj/screen/alert/status_effect/teleport_sickness
+ var/teleports = 1
+
+/obj/screen/alert/status_effect/teleport_sickness
+ name = "Teleportation sickness"
+ desc = "You feel like you are going to throw up with all this teleporting."
+ icon_state = "bluespace"
+
+/datum/status_effect/teleport_sickness/refresh()
+ . = ..()
+ if(ishuman(owner))
+ var/mob/living/carbon/human/M = owner
+ teleports++
+ if(teleports < 3)
+ return
+ if(teleports < 6)
+ to_chat(M, "You feel a bit sick!")
+ M.vomit(lost_nutrition = 15, blood = 0, stun = 0, distance = 0, message = 1)
+ M.Weaken(2 SECONDS)
+ else
+ to_chat(M, "You feel really sick!")
+ M.adjustBruteLoss(rand(0, teleports * 2))
+ M.vomit(lost_nutrition = 30, blood = 0, stun = 0, distance = 0, message = 1)
+ M.Weaken(6 SECONDS)
+
/datum/status_effect/pacifism
id = "pacifism_debuff"
alert_type = null
diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm
index 777dbe08a6a..2611669b0f7 100644
--- a/code/modules/hydroponics/plant_genes.dm
+++ b/code/modules/hydroponics/plant_genes.dm
@@ -307,10 +307,12 @@
/datum/plant_gene/trait/teleport/on_squash(obj/item/reagent_containers/food/snacks/grown/G, atom/target)
if(isliving(target))
+ var/mob/living/L = target
var/teleport_radius = max(round(G.seed.potency / 10), 1)
- var/turf/T = get_turf(target)
+ var/turf/T = get_turf(L)
new /obj/effect/decal/cleanable/molten_object(T) //Leave a pile of goo behind for dramatic effect...
- do_teleport(target, T, teleport_radius)
+ do_teleport(L, T, teleport_radius)
+ L.apply_status_effect(STATUS_EFFECT_TELEPORTSICK)
/datum/plant_gene/trait/teleport/on_slip(obj/item/reagent_containers/food/snacks/grown/G, mob/living/carbon/C)
var/teleport_radius = max(round(G.seed.potency / 10), 1)
@@ -319,6 +321,7 @@
to_chat(C, "You slip through spacetime!")
if(prob(50))
do_teleport(G, T, teleport_radius)
+ C.apply_status_effect(STATUS_EFFECT_TELEPORTSICK)
else
new /obj/effect/decal/cleanable/molten_object(T) //Leave a pile of goo behind for dramatic effect...
qdel(G)
diff --git a/code/modules/telesci/bscrystal.dm b/code/modules/telesci/bscrystal.dm
index dd93bf6ba3a..4963c73dd78 100644
--- a/code/modules/telesci/bscrystal.dm
+++ b/code/modules/telesci/bscrystal.dm
@@ -30,6 +30,7 @@
qdel(src)
return
do_teleport(L, get_turf(L), blink_range, asoundin = 'sound/effects/phasein.ogg')
+ L.apply_status_effect(STATUS_EFFECT_TELEPORTSICK)
/obj/item/stack/ore/bluespace_crystal/throw_impact(atom/hit_atom)
..()
diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi
index 70c3fdf8ee3..13e4b43f274 100644
Binary files a/icons/mob/screen_alert.dmi and b/icons/mob/screen_alert.dmi differ