diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 4455d7c27aa..b36fc9044df 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -7,6 +7,7 @@ icon_state = "body_m_s" var/list/hud_list = list() var/datum/species/species //Contains icon generation and language information, set during New(). + var/embedded_flag //To check if we've need to roll for damage on movement while an item is imbedded in us. /mob/living/carbon/human/dummy real_name = "Test Dummy" diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index dec63819493..d09fa5b20da 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -251,6 +251,7 @@ if(!istype(W, /obj/item/weapon/butch/meatcleaver)) organ.implants += W visible_message("\The [W] sticks in the wound!") + embedded_flag = 1 src.verbs += /mob/proc/yank_out_object W.add_blood(src) if(ismob(W.loc)) @@ -273,4 +274,4 @@ if(prob(60)) step_rand(H) if(!stat) - src << "Your [H] fell off!" \ No newline at end of file + src << "Your [H] fell off!" diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 8ec602fc0c0..f3575e3bf5d 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -100,6 +100,7 @@ emp_act (SP.loc) = organ organ.implants += SP visible_message("The projectile sticks in the wound!") + embedded_flag = 1 src.verbs += /mob/proc/yank_out_object SP.add_blood(src) return (..(P , def_zone)) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 51a68c4da91..32df867a023 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -6,7 +6,8 @@ if (istype(loc, /turf/space)) return -1 // It's hard to be slowed down in space by... anything - handle_embedded_objects() //Moving with objects stuck in you can cause bad times. + if(embedded_flag) + handle_embedded_objects() //Moving with objects stuck in you can cause bad times. if(reagents.has_reagent("hyperzine")) return -1 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 087018404e0..59c0d5325a4 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -130,7 +130,7 @@ handle_environment(environment) //Status updates, death etc. - handle_regular_status_updates() //TODO: optimise ~Carn + handle_regular_status_updates() //TODO: optimise ~Carn NO SHIT ~Ccomp update_canmove() //Update our name based on whether our face is obscured/disfigured @@ -1146,6 +1146,13 @@ if(halloss > 0) adjustHalLoss(-1) + if(embedded_flag && !(life_tick % 10)) + var/list/E + E = get_visible_implants(0) + if(!E.len) + embedded_flag = 0 + + //Eyes if(sdisabilities & BLIND) //disabled-blind, doesn't get better on its own blinded = 1