diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index e1750ce9..e9fbe390 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -151,7 +151,7 @@ var/global/list/autolathe_recipes_hidden = list( \ if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/M = user if(M.h_style == "Floorlength Braid" || M.h_style == "Very Long Hair") - if(prob(25)) + if(prob(10)) M.apply_damage(30, BRUTE, "head") M.apply_damage(45, HALLOSS) M.visible_message("\red [user]'s hair catches in the [src]!", "\red Your hair gets caught in the [src]!") @@ -407,3 +407,42 @@ var/global/list/autolathe_recipes_hidden = list( \ w -= src.shock_wire src.disable_wire = pick(w) w -= src.disable_wire + + MouseDrop_T(mob/living/carbon/human/target as mob, mob/user as mob) + if (!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.stat || istype(user, /mob/living/silicon/ai)) + return + if(target == user) + if(target.h_style == "Floorlength Braid" || target.h_style == "Very Long Hair") + user.visible_message("\blue [user] looks like they're about to feed their own hair into the [src], but think better of it.", "\blue You grasp your hair and are about to feed it into the [src], but stop and come to your sense.") + return + src.add_fingerprint(user) + var/target_loc = target.loc + if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) + if(target.h_style != "Cut Hair" || target.h_style != "Short Hair" || target.h_style != "Skinhead" || target.h_style != "Buzzcut" || target.h_style != "Crewcut" || target.h_style != "Bald" || target.h_style != "Balding Hair") + user.visible_message("\red [user] starts feeding [target]'s hair into the [src]!", "\red You start feeding [target]'s hair into the [src]!") + if(!do_after(usr, 50)) + return + if(target_loc != target.loc) + return + if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) + user.visible_message("\red [user] feeds the [target]'s hair into the [src] and flicks it on!", "\red You turn the [src] on!") + target.apply_damage(30, BRUTE, "head") + target.apply_damage(25, HALLOSS) + target.say("*scream") + + user.attack_log += text("\[[time_stamp()]\] Has fed [target.name]'s ([target.ckey]) hair into a [src].") + target.attack_log += text("\[[time_stamp()]\] Has had their hair fed into [src] by [user.name] ([user.ckey])") + msg_admin_attack("[user] ([user.ckey]) fed [target]'s ([target.ckey]) in a [src]. (JMP)") + else + return + if(!do_after(usr, 35)) + return + if(target_loc != target.loc) + return + if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) + user.visible_message("\red [user] starts tugging on [target]'s head as the [src] keeps running!", "\red You start tugging on [target]'s head!") + target.apply_damage(25, BRUTE, "head") + target.apply_damage(10, HALLOSS) + target.say("*scream") + spawn(10) + user.visible_message("\red [user] stops the [src] and leaves [target] resting as they are.", "\red You turn the [src] off and let go of [target].") \ No newline at end of file diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm index 7d1a54d9..7d2ffc5a 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/game/machinery/kitchen/gibber.dm @@ -82,7 +82,7 @@ if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/M = user if(M.h_style == "Floorlength Braid" || M.h_style == "Very Long Hair") - if(prob(25)) + if(prob(10)) M.apply_damage(30, BRUTE, "head") M.apply_damage(45, HALLOSS) M.visible_message("\red [user]'s hair catches in the [src]!", "\red Your hair gets caught in the [src]!") diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index d8794b83..081d997d 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -555,7 +555,7 @@ if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/M = user if(M.h_style == "Floorlength Braid" || M.h_style == "Very Long Hair") - if(prob(25)) + if(prob(10)) M.apply_damage(30, BRUTE, "head") M.apply_damage(45, HALLOSS) M.visible_message("\red [user]'s hair catches in the [src]!", "\red Your hair gets caught in the [src]!") @@ -850,3 +850,42 @@ else user << "The fabricator cannot hold more [sname]." return + +/obj/machinery/mecha_part_fabricator/MouseDrop_T(mob/living/carbon/human/target as mob, mob/user as mob) + if (!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.stat || istype(user, /mob/living/silicon/ai)) + return + if(target == user) + if(target.h_style == "Floorlength Braid" || target.h_style == "Very Long Hair") + user.visible_message("\blue [user] looks like they're about to feed their own hair into the [src], but think better of it.", "\blue You grasp your hair and are about to feed it into the [src], but stop and come to your sense.") + return + src.add_fingerprint(user) + var/target_loc = target.loc + if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) + if(target.h_style != "Cut Hair" || target.h_style != "Short Hair" || target.h_style != "Skinhead" || target.h_style != "Buzzcut" || target.h_style != "Crewcut" || target.h_style != "Bald" || target.h_style != "Balding Hair") + user.visible_message("\red [user] starts feeding [target]'s hair into the [src]!", "\red You start feeding [target]'s hair into the [src]!") + if(!do_after(usr, 50)) + return + if(target_loc != target.loc) + return + if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) + user.visible_message("\red [user] feeds the [target]'s hair into the [src] and flicks it on!", "\red You turn the [src] on!") + target.apply_damage(30, BRUTE, "head") + target.apply_damage(25, HALLOSS) + target.say("*scream") + + user.attack_log += text("\[[time_stamp()]\] Has fed [target.name]'s ([target.ckey]) hair into a [src].") + target.attack_log += text("\[[time_stamp()]\] Has had their hair fed into [src] by [user.name] ([user.ckey])") + msg_admin_attack("[user] ([user.ckey]) fed [target]'s ([target.ckey]) in a [src]. (JMP)") + else + return + if(!do_after(usr, 35)) + return + if(target_loc != target.loc) + return + if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) + user.visible_message("\red [user] starts tugging on [target]'s head as the [src] keeps running!", "\red You start tugging on [target]'s head!") + target.apply_damage(25, BRUTE, "head") + target.apply_damage(10, HALLOSS) + target.say("*scream") + spawn(10) + user.visible_message("\red [user] stops the [src] and leaves [target] resting as they are.", "\red You turn the [src] off and let go of [target].") \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 520614c2..b43dc1f7 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -1023,7 +1023,7 @@ if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/M = user if(M.h_style == "Floorlength Braid" || M.h_style == "Very Long Hair") - if(prob(25)) + if(prob(10)) M.apply_damage(30, BRUTE, "head") M.apply_damage(45, HALLOSS) M.visible_message("\red [user]'s hair catches in the [src]!", "\red Your hair gets caught in the [src]!") @@ -1278,3 +1278,42 @@ O.reagents.trans_to(beaker, amount) if(!O.reagents.total_volume) remove_object(O) + +/obj/machinery/reagentgrinder/MouseDrop_T(mob/living/carbon/human/target as mob, mob/user as mob) + if (!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.stat || istype(user, /mob/living/silicon/ai)) + return + if(target == user) + if(target.h_style == "Floorlength Braid" || target.h_style == "Very Long Hair") + user.visible_message("\blue [user] looks like they're about to feed their own hair into the [src], but think better of it.", "\blue You grasp your hair and are about to feed it into the [src], but stop and come to your sense.") + return + src.add_fingerprint(user) + var/target_loc = target.loc + if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) + if(target.h_style != "Cut Hair" || target.h_style != "Short Hair" || target.h_style != "Skinhead" || target.h_style != "Buzzcut" || target.h_style != "Crewcut" || target.h_style != "Bald" || target.h_style != "Balding Hair") + user.visible_message("\red [user] starts feeding [target]'s hair into the [src]!", "\red You start feeding [target]'s hair into the [src]!") + if(!do_after(usr, 50)) + return + if(target_loc != target.loc) + return + if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) + user.visible_message("\red [user] feeds the [target]'s hair into the [src] and flicks it on!", "\red You turn the [src] on!") + target.apply_damage(30, BRUTE, "head") + target.apply_damage(25, HALLOSS) + target.say("*scream") + + user.attack_log += text("\[[time_stamp()]\] Has fed [target.name]'s ([target.ckey]) hair into a [src].") + target.attack_log += text("\[[time_stamp()]\] Has had their hair fed into [src] by [user.name] ([user.ckey])") + msg_admin_attack("[user] ([user.ckey]) fed [target]'s ([target.ckey]) in a [src]. (JMP)") + else + return + if(!do_after(usr, 35)) + return + if(target_loc != target.loc) + return + if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) + user.visible_message("\red [user] starts tugging on [target]'s head as the [src] keeps running!", "\red You start tugging on [target]'s head!") + target.apply_damage(25, BRUTE, "head") + target.apply_damage(10, HALLOSS) + target.say("*scream") + spawn(10) + user.visible_message("\red [user] stops the [src] and leaves [target] resting as they are.", "\red You turn the [src] off and let go of [target].") \ No newline at end of file diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 85364608..82a3f9b9 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -235,7 +235,7 @@ if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/M = user if(M.h_style == "Floorlength Braid" || M.h_style == "Very Long Hair") - if(prob(25)) + if(prob(5)) M.apply_damage(30, BRUTE, "head") M.apply_damage(45, HALLOSS) M.visible_message("\red [user]'s hair catches in the [src]!", "\red Your hair gets caught in the [src]!")