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