diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm
index 0b67aa3e456..2379fbe2185 100644
--- a/code/__defines/mobs.dm
+++ b/code/__defines/mobs.dm
@@ -85,6 +85,10 @@
#define I_GRAB "grab"
#define I_HURT "harm"
+//movement intents
+#define M_WALK "walk"
+#define M_RUN "run"
+
// Limbs and robotic stuff.
#define BP_L_FOOT "l_foot"
#define BP_R_FOOT "r_foot"
diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm
index c0cc156d171..1bb4d6310a8 100644
--- a/code/_onclick/hud/human.dm
+++ b/code/_onclick/hud/human.dm
@@ -127,7 +127,7 @@
if(hud_data.has_m_intent)
using = new /obj/screen/movement_intent()
using.icon = ui_style
- using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
+ using.icon_state = (mymob.m_intent == M_RUN ? "running" : "walking")
using.color = ui_color
using.alpha = ui_alpha
src.adding += using
diff --git a/code/_onclick/hud/morph.dm b/code/_onclick/hud/morph.dm
index b83ccedc5ce..77b56463fb1 100644
--- a/code/_onclick/hud/morph.dm
+++ b/code/_onclick/hud/morph.dm
@@ -5,7 +5,7 @@
var/obj/screen/mov_intent = new /obj/screen/movement_intent()
mov_intent.set_dir(SOUTHWEST)
mov_intent.icon = 'icons/mob/screen/morph.dmi'
- mov_intent.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
+ mov_intent.icon_state = (mymob.m_intent == M_RUN ? "running" : "walking")
move_intent = mov_intent
mymob.healths = new /obj/screen()
diff --git a/code/_onclick/hud/nymph_hud.dm b/code/_onclick/hud/nymph_hud.dm
index e1112618748..70800182756 100644
--- a/code/_onclick/hud/nymph_hud.dm
+++ b/code/_onclick/hud/nymph_hud.dm
@@ -11,7 +11,7 @@
using = new /obj/screen/movement_intent()
using.set_dir(SOUTHWEST)
using.icon = 'icons/mob/screen/alien.dmi'
- using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
+ using.icon_state = (mymob.m_intent == M_RUN ? "running" : "walking")
src.adding += using
move_intent = using
diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index b901089a575..b6e7b6a25f4 100644
--- a/code/_onclick/hud/screen_objects.dm
+++ b/code/_onclick/hud/screen_objects.dm
@@ -417,7 +417,7 @@
user.stamina_bar.update(user.stamina)
- if (user.m_intent == "run")
+ if (user.m_intent == M_RUN)
icon_state = "running"
else
icon_state = "walking"
@@ -435,21 +435,21 @@
if(C.legcuffed)
to_chat(C, "You are legcuffed! You cannot run until you get [C.legcuffed] removed!")
- C.m_intent = "walk" //Just incase
+ C.m_intent = M_WALK //Just incase
C.hud_used.move_intent.icon_state = "walking"
return 1
switch(usr.m_intent)
- if("run")
- usr.m_intent = "walk"
- if("walk")
- usr.m_intent = "run"
+ if(M_RUN)
+ usr.m_intent = M_WALK
+ if(M_WALK)
+ usr.m_intent = M_RUN
else if(istype(usr, /mob/living/simple_animal/hostile/morph))
var/mob/living/simple_animal/hostile/morph/M = usr
switch(usr.m_intent)
- if("run")
- usr.m_intent = "walk"
- if("walk")
- usr.m_intent = "run"
+ if(M_RUN)
+ usr.m_intent = M_WALK
+ if(M_WALK)
+ usr.m_intent = M_RUN
M.update_speed()
update_move_icon(usr)
diff --git a/code/datums/brain_damage/mild.dm b/code/datums/brain_damage/mild.dm
index 002ff6075a3..d301441f497 100644
--- a/code/datums/brain_damage/mild.dm
+++ b/code/datums/brain_damage/mild.dm
@@ -153,7 +153,7 @@
/datum/brain_trauma/mild/muscle_weakness/on_life()
var/fall_chance = 5
- if(owner.m_intent == "run")
+ if(owner.m_intent == M_RUN)
fall_chance += 15
if(prob(fall_chance) && !owner.lying && !owner.buckled)
to_chat(owner, "Your leg gives out!")
diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm
index 715dcde7c75..1aa599898d8 100644
--- a/code/datums/brain_damage/severe.dm
+++ b/code/datums/brain_damage/severe.dm
@@ -79,7 +79,7 @@
if(owner.stat == UNCONSCIOUS || owner.sleeping > 0)
return
var/sleep_chance = 5
- if(owner.m_intent == "run")
+ if(owner.m_intent == M_RUN)
sleep_chance += 15
if(owner.drowsyness)
sleep_chance += owner.drowsyness + 5
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index 70afc8ba8dd..31db9f84adb 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -320,7 +320,7 @@ var/list/mob/living/forced_ambiance_list = new
L.lastarea = get_area(L.loc)
var/area/newarea = get_area(L.loc)
var/area/oldarea = L.lastarea
- if((oldarea.has_gravity() == 0) && (newarea.has_gravity() == 1) && (L.m_intent == "run")) // Being ready when you change areas gives you a chance to avoid falling all together.
+ if((oldarea.has_gravity() == 0) && (newarea.has_gravity() == 1) && (L.m_intent == M_RUN)) // Being ready when you change areas gives you a chance to avoid falling all together.
thunk(L)
L.update_floating( L.Check_Dense_Object() )
@@ -375,7 +375,7 @@ var/list/mob/living/forced_ambiance_list = new
if(H.Check_Shoegrip(FALSE))
return
- if(H.m_intent == "run")
+ if(H.m_intent == M_RUN)
H.AdjustStunned(2)
H.AdjustWeakened(2)
else
diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm
index f12efa31123..a3a9de78022 100644
--- a/code/game/objects/effects/decals/Cleanable/humans.dm
+++ b/code/game/objects/effects/decals/Cleanable/humans.dm
@@ -110,7 +110,7 @@
perp.update_inv_shoes(1)
amount--
- if(amount > 2 && prob(perp.slip_chance(perp.m_intent == "run" ? 20 : 5)))
+ if(amount > 2 && prob(perp.slip_chance(perp.m_intent == M_RUN ? 20 : 5)))
perp.slip(src, 4)
/obj/effect/decal/cleanable/blood/proc/dry()
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 24d0d41fb82..542b646c1de 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -504,7 +504,7 @@
/obj/item/toy/snappop/Crossed(H as mob|obj)
if((ishuman(H))) //i guess carp and shit shouldn't set them off
var/mob/living/carbon/M = H
- if(M.m_intent == "run")
+ if(M.m_intent == M_RUN)
to_chat(M, SPAN_WARNING("You step on the snap pop!"))
do_pop()
diff --git a/code/game/objects/items/weapons/material/caltrops.dm b/code/game/objects/items/weapons/material/caltrops.dm
index 64d02e1b3ad..55724b94202 100644
--- a/code/game/objects/items/weapons/material/caltrops.dm
+++ b/code/game/objects/items/weapons/material/caltrops.dm
@@ -35,7 +35,7 @@
if(H.shoes || H.wear_suit?.body_parts_covered & FEET)
damage_coef -= 0.1
- if (H.m_intent == "run")
+ if (H.m_intent == M_RUN)
damage_coef += 0.4
diff --git a/code/game/objects/items/weapons/policetape.dm b/code/game/objects/items/weapons/policetape.dm
index fcfdb6ca0de..f3ec465eaaf 100644
--- a/code/game/objects/items/weapons/policetape.dm
+++ b/code/game/objects/items/weapons/policetape.dm
@@ -17,9 +17,15 @@ var/list/tape_roll_applications = list()
icon = 'icons/policetape.dmi'
anchored = 1
var/lifted = 0
+ var/list/crumplers
var/crumpled = 0
var/icon_base
+/obj/item/tape/examine(mob/user, distance)
+ . = ..()
+ if(LAZYLEN(crumplers) && Adjacent(user))
+ to_chat(user, SPAN_WARNING("\The [initial(name)] has been crumpled by [english_list(crumplers)]."))
+
/obj/item/tape/New()
..()
if(!hazard_overlays)
@@ -42,6 +48,19 @@ var/list/tape_roll_applications = list()
req_access = list(access_security)
icon_base = "police"
+/obj/item/taperoll/medical
+ name = "medical tape"
+ desc = "A roll of medical tape used to prevent overcrowding of hallways during emergencies."
+ icon_state = "medical_start"
+ tape_type = /obj/item/tape/medical
+ icon_base = "medical"
+
+/obj/item/tape/medical
+ name = "medical tape"
+ desc = "A length of medical tape. Better not cross it."
+ req_one_access = list(access_medical_equip)
+ icon_base = "medical"
+
/obj/item/taperoll/engineering
name = "engineering tape"
desc = "A roll of engineering tape used to block off working areas from the public."
@@ -137,41 +156,50 @@ var/list/tape_roll_applications = list()
tape_roll_applications[F] |= direction
return
-/obj/item/tape/proc/crumple()
+/obj/item/tape/proc/crumple(var/mob/user)
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ var/obj/item/card/id/ID = H.GetIdCard(TRUE)
+ if(ID && ID.registered_name)
+ LAZYDISTINCTADD(crumplers, ID.registered_name)
if(!crumpled)
- crumpled = 1
+ crumpled = TRUE
icon_state = "[icon_state]_c"
name = "crumpled [name]"
/obj/item/tape/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(!lifted && ismob(mover))
var/mob/M = mover
- add_fingerprint(M)
- if (!allowed(M)) //only select few learn art of not crumpling the tape
- to_chat(M, "You are not supposed to go past [src]...")
- crumple()
- return ..(mover)
+ if(!allowed(M)) //only select few learn art of not crumpling the tape
+ if(M.a_intent != I_HURT && M.m_intent != M_RUN)
+ return FALSE
+ to_chat(M, SPAN_WARNING("You aren't supposed to go past the [initial(name)]..."))
+ crumple(mover)
+ return ..()
-/obj/item/tape/attackby(obj/item/W as obj, mob/user as mob)
+/obj/item/tape/attackby(obj/item/W, mob/user)
breaktape(W, user)
-/obj/item/tape/attack_hand(mob/user as mob)
- if (user.a_intent == I_HELP && src.allowed(user))
- user.show_viewers(SPAN_NOTICE("[user] lifts [src], allowing passage."))
- crumple()
- lifted = 1
- spawn(200)
- lifted = 0
+/obj/item/tape/attack_hand(mob/user)
+ if(user.a_intent == I_HELP)
+ lifted = !lifted
+ user.visible_message("[user] [lifted ? "lifts" : "drops"] the [initial(name)], [lifted ? "allowing" : "blocking"] passage.", SPAN_NOTICE("You [lifted ? "lift" : "drop"] the [initial(name)], [lifted ? "allowing" : "blocking"] passage."))
+ var/shake_time = animate_shake()
+ sleep(shake_time)
+ if(!allowed(user))
+ crumple(user)
+ if(lifted)
+ animate(src, 1 SECOND, alpha = 150)
+ else
+ animate(src, 1 SECOND, alpha = initial(alpha))
else
breaktape(null, user)
-
-
/obj/item/tape/proc/breaktape(obj/item/W as obj, mob/user as mob)
if(user.a_intent == I_HELP && ((!can_puncture(W) && src.allowed(user))))
- to_chat(user, "You can't break the [src] with that!")
+ to_chat(user, SPAN_NOTICE("You can't break \the [src] with that!"))
return
- user.show_viewers(SPAN_NOTICE("[user] breaks the [src]!"))
+ user.visible_message(SPAN_NOTICE("[user] breaks \the [src]!"))
var/dir[2]
var/icon_dir = src.icon_state
@@ -193,5 +221,4 @@ var/list/tape_roll_applications = list()
qdel(P)
cur = get_step(cur,dir[i])
- qdel(src)
- return
+ qdel(src)
\ No newline at end of file
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index 868c480acfb..bd1fd47444f 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -223,6 +223,7 @@
var/shake_dir = pick(-1, 1)
animate(src, transform = turn(matrix(), 8*shake_dir), pixel_x = init_px + 2*shake_dir, time = 1)
animate(transform = null, pixel_x = init_px, time = 6, easing = ELASTIC_EASING)
+ return 7 // how long it takes to do this
/obj/proc/rotate(var/mob/user, var/anchored_ignore = FALSE)
if(use_check_and_message(user))
diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm
index 8df97c9a342..b25c6cf30f4 100644
--- a/code/game/turfs/simulated.dm
+++ b/code/game/turfs/simulated.dm
@@ -79,7 +79,7 @@
if(istype(A,/mob/living))
var/mob/living/M = A
if(src.wet_type && src.wet_amount)
- if(M.buckled || (src.wet_type == 1 && M.m_intent == "walk"))
+ if(M.buckled || (src.wet_type == 1 && M.m_intent == M_WALK))
return
//Water
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 339271f7320..051c954fa58 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -254,7 +254,7 @@ var/const/enterloopsanity = 100
if(H.shoes)
var/obj/item/clothing/shoes/S = H.shoes
if(istype(S))
- S.handle_movement(src, H.m_intent == "run" ? TRUE : FALSE)
+ S.handle_movement(src, H.m_intent == M_RUN ? TRUE : FALSE)
if(S.track_footprint)
if(S.blood_DNA)
footprint_DNA = S.blood_DNA
diff --git a/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm b/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm
index bfc02df877a..789c3c7a52d 100644
--- a/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm
+++ b/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm
@@ -76,9 +76,9 @@
/mob/living/carbon/alien/diona/movement_delay()
. = ..()
switch(m_intent)
- if("walk")
+ if(M_WALK)
. += 3
- if("run")
+ if(M_RUN)
species.handle_sprint_cost(src,.+config.walk_speed)
/mob/living/carbon/alien/diona/ex_act(severity)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 3d5a1d006e3..1f55822d256 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -62,7 +62,7 @@
if(src.hydration)
adjustHydrationLoss(hydration_loss*0.1)
- if((FAT in src.mutations) && src.m_intent == "run" && src.bodytemperature <= 360)
+ if((FAT in src.mutations) && src.m_intent == M_RUN && src.bodytemperature <= 360)
src.bodytemperature += 2
// Moving around increases germ_level faster
diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm
index ffc585b1392..fd69006454c 100644
--- a/code/modules/mob/living/carbon/human/human_movement.dm
+++ b/code/modules/mob/living/carbon/human/human_movement.dm
@@ -161,7 +161,7 @@
return
last_x = x
last_y = y
- if (m_intent == "run")
+ if (m_intent == M_RUN)
playsound(src, footsound, 70, 1, required_asfx_toggles = ASFX_FOOTSTEPS)
else
footstep++
diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm
index 09a62fd14ed..bdcdb299881 100644
--- a/code/modules/mob/living/carbon/human/species/species.dm
+++ b/code/modules/mob/living/carbon/human/species/species.dm
@@ -567,7 +567,7 @@
H.flash_pain(H.get_shock())
if ((H.get_shock() + H.getOxyLoss()) >= (exhaust_threshold * 0.8))
- H.m_intent = "walk"
+ H.m_intent = M_WALK
H.hud_used.move_intent.update_move_icon(H)
to_chat(H, SPAN_DANGER("You're too exhausted to run anymore!"))
H.flash_pain(H.get_shock())
diff --git a/code/modules/mob/living/carbon/human/species/station/diona/diona.dm b/code/modules/mob/living/carbon/human/species/station/diona/diona.dm
index 2909ee7e79d..bb74693130e 100644
--- a/code/modules/mob/living/carbon/human/species/station/diona/diona.dm
+++ b/code/modules/mob/living/carbon/human/species/station/diona/diona.dm
@@ -150,7 +150,7 @@
DS.stored_energy = 0
H.adjustHalLoss(remainder*5, 1)
H.updatehealth()
- H.m_intent = "walk"
+ H.m_intent = M_WALK
H.hud_used.move_intent.update_move_icon(H)
to_chat(H, SPAN_DANGER("We have expended our energy reserves, and cannot continue to move at such a pace. We must find light!"))
return 0
diff --git a/code/modules/mob/living/carbon/human/species/station/ipc/ipc.dm b/code/modules/mob/living/carbon/human/species/station/ipc/ipc.dm
index 0cc04f41171..e43a7bc75b4 100644
--- a/code/modules/mob/living/carbon/human/species/station/ipc/ipc.dm
+++ b/code/modules/mob/living/carbon/human/species/station/ipc/ipc.dm
@@ -135,7 +135,7 @@ datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H)
H.adjustNutritionLoss(cost * sprint_charge_factor)
if(H.nutrition <= 0 && H.max_nutrition > 0)
H.Weaken(15)
- H.m_intent = "walk"
+ H.m_intent = M_WALK
H.hud_used.move_intent.update_move_icon(H)
to_chat(H, SPAN_DANGER("ERROR: Power reserves depleted, emergency shutdown engaged. Backup power will come online in approximately 30 seconds, initiate charging as primary directive."))
playsound(H.loc, 'sound/machines/buzz-two.ogg', 100, 0)
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 42fa0577936..80439f2ee54 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -1139,8 +1139,8 @@ There are several things that need to be remembered:
standing = image('icons/mob/mob.dmi', "legcuff1")
overlays_raw[LEGCUFF_LAYER] = standing
- if(m_intent != "walk")
- m_intent = "walk"
+ if(m_intent != M_WALK)
+ m_intent = M_WALK
if(hud_used && hud_used.move_intent)
hud_used.move_intent.icon_state = "walking"
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index ba4797553f4..a412e247d48 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -221,6 +221,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/device/mass_spectrometer(src)
src.modules += new /obj/item/autopsy_scanner(src)
src.modules += new /obj/item/device/breath_analyzer(src)
+ modules += new /obj/item/taperoll/medical(src)
src.modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
src.modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
src.modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
@@ -294,6 +295,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/gripper/chemistry(src)
src.modules += new /obj/item/tank/jetpack/carbondioxide/synthetic(src)
src.modules += new /obj/item/borg/rescue/mobility(src)
+ modules += new /obj/item/taperoll/medical(src)
src.modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
src.modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
src.modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
diff --git a/code/modules/mob/living/simple_animal/hostile/morph.dm b/code/modules/mob/living/simple_animal/hostile/morph.dm
index dbf72fef369..77aad032bd2 100644
--- a/code/modules/mob/living/simple_animal/hostile/morph.dm
+++ b/code/modules/mob/living/simple_animal/hostile/morph.dm
@@ -111,9 +111,9 @@
/mob/living/simple_animal/hostile/morph/proc/update_speed()
switch(m_intent)
- if("run")
+ if(M_RUN)
speed = 1.5
- if("walk")
+ if(M_WALK)
speed = 2.5
/mob/living/simple_animal/hostile/morph/proc/allowed(atom/movable/A)
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index df93a1cd6d3..4df9007f521 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -132,7 +132,7 @@
var/intent = null//Living
var/shakecamera = 0
var/a_intent = I_HELP//Living
- var/m_intent = "walk"//Living
+ var/m_intent = M_WALK //Living
var/lastKnownIP = null
var/obj/buckled = null//Living
var/obj/item/l_hand = null//Living
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index e139ea06ce2..7962fb8805c 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -302,7 +302,7 @@
if (mob_is_human)
var/mob/living/carbon/human/H = mob
//If we're sprinting and able to continue sprinting, then apply the sprint bonus ontop of this
- if (H.m_intent == "run" && (H.status_flags & GODMODE || H.species.handle_sprint_cost(H, tally))) //This will return false if we collapse from exhaustion
+ if (H.m_intent == M_RUN && (H.status_flags & GODMODE || H.species.handle_sprint_cost(H, tally))) //This will return false if we collapse from exhaustion
tally = (tally / (1 + H.sprint_speed_factor)) * config.run_delay_multiplier
else
tally = max(tally * config.walk_delay_multiplier, H.min_walk_delay) //clamp walking speed if its limited
diff --git a/code/modules/tables/interactions.dm b/code/modules/tables/interactions.dm
index 9607c1da3e3..da9f5be361a 100644
--- a/code/modules/tables/interactions.dm
+++ b/code/modules/tables/interactions.dm
@@ -63,7 +63,7 @@
..()
if(ishuman(am))
var/mob/living/carbon/human/H = am
- if(H.a_intent != I_HELP || H.m_intent == "run")
+ if(H.a_intent != I_HELP || H.m_intent == M_RUN)
throw_things(H)
else if(H.is_diona() || H.species.get_bodytype() == BODYTYPE_IPC_INDUSTRIAL)
throw_things(H)
@@ -119,7 +119,7 @@
)
if(ishuman(user))
var/mob/living/carbon/human/H = user
- if(H.a_intent != I_HELP || H.m_intent == "run")
+ if(H.a_intent != I_HELP || H.m_intent == M_RUN)
throw_things(H)
else if(H.is_diona() || H.species.get_bodytype() == BODYTYPE_IPC_INDUSTRIAL)
throw_things(H)
diff --git a/html/changelogs/geeves-medical_tape.yml b/html/changelogs/geeves-medical_tape.yml
new file mode 100644
index 00000000000..264bf9a4f25
--- /dev/null
+++ b/html/changelogs/geeves-medical_tape.yml
@@ -0,0 +1,9 @@
+author: Geeves
+
+delete-after: True
+
+changes:
+ - rscadd: "Added some medical taperolls to the medical sub-level equipment area and EMT room. Also gave medical borgs medical taperolls."
+ - rscadd: "Crumpled tape now stores who crumpled it, provided the crumpler had an ID to track them with."
+ - rscadd: "Tape now physically blocks passage, unless the mover has their intent set to harm, or their move intent set to run."
+ - rscadd: "Lifting tape now actually works as you'd expect it to. It plays a little animation and goes transparent. If you don't have access, it crumples, if you do, it doesn't. People can now pass over without crumpling it or needing intents set."
\ No newline at end of file
diff --git a/icons/policetape.dmi b/icons/policetape.dmi
index 95851cf1c19..7a71bdefed9 100644
Binary files a/icons/policetape.dmi and b/icons/policetape.dmi differ
diff --git a/maps/aurora/aurora-3_sublevel.dmm b/maps/aurora/aurora-3_sublevel.dmm
index af16314cfa5..04a1e5e63dd 100644
--- a/maps/aurora/aurora-3_sublevel.dmm
+++ b/maps/aurora/aurora-3_sublevel.dmm
@@ -21468,6 +21468,22 @@
name = "Station Intercom (General)";
pixel_y = 22
},
+/obj/item/taperoll/medical{
+ pixel_x = -6;
+ pixel_y = 6
+ },
+/obj/item/taperoll/medical{
+ pixel_x = -6;
+ pixel_y = 6
+ },
+/obj/item/taperoll/medical{
+ pixel_x = -6;
+ pixel_y = 6
+ },
+/obj/item/taperoll/medical{
+ pixel_x = -6;
+ pixel_y = 6
+ },
/turf/simulated/floor/tiled,
/area/medical/medbay4)
"aSH" = (
diff --git a/maps/aurora/aurora-4_mainlevel.dmm b/maps/aurora/aurora-4_mainlevel.dmm
index 396a6e3a97a..04cf6c322bc 100644
--- a/maps/aurora/aurora-4_mainlevel.dmm
+++ b/maps/aurora/aurora-4_mainlevel.dmm
@@ -46332,6 +46332,14 @@
pixel_y = 5
},
/obj/effect/floor_decal/corner/white/diagonal,
+/obj/item/taperoll/medical{
+ pixel_x = -6;
+ pixel_y = 6
+ },
+/obj/item/taperoll/medical{
+ pixel_x = -6;
+ pixel_y = 6
+ },
/turf/simulated/floor/tiled,
/area/medical/first_responder)
"bAO" = (