diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 7560132e333..5fd09ddc4af 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -3,6 +3,7 @@
////////////////////////////////////////////////////////////////////////////////
#define SYRINGE_DRAW 0
#define SYRINGE_INJECT 1
+#define SYRINGE_BROKEN 2
/obj/item/weapon/reagent_containers/syringe
name = "Syringe"
@@ -27,14 +28,14 @@
update_icon()
attack_self(mob/user as mob)
-/*
+
switch(mode)
if(SYRINGE_DRAW)
mode = SYRINGE_INJECT
if(SYRINGE_INJECT)
mode = SYRINGE_DRAW
-*/
- mode = !mode
+ if(SYRINGE_BROKEN)
+ return
update_icon()
attack_hand()
@@ -51,6 +52,10 @@
afterattack(obj/target, mob/user , flag)
if(!target.reagents) return
+ if(mode == SYRINGE_BROKEN)
+ user << "\red This syringe is broken!"
+ return
+
if (user.a_intent == "hurt" && ismob(target))
if((CLUMSY in user.mutations) && prob(50))
target = user
@@ -190,6 +195,10 @@
return
update_icon()
+ if(mode == SYRINGE_BROKEN)
+ icon_state = "broken"
+ overlays = null //dirty fix
+ return
var/rounded_vol = round(reagents.total_volume,5)
overlays.Cut()
if(ismob(loc))
@@ -206,15 +215,63 @@
if(reagents.total_volume)
var/image/filling = image('icons/obj/reagentfillings.dmi', src, "syringe10")
- switch(rounded_vol)
- if(5) filling.icon_state = "syringe5"
- if(10) filling.icon_state = "syringe10"
- if(15) filling.icon_state = "syringe15"
+ filling.icon_state = "syringe[rounded_vol]"
filling.icon += mix_color_from_reagents(reagents.reagent_list)
overlays += filling
+ /obj/item/weapon/reagent_containers/syringe/proc/syringestab(mob/living/carbon/target as mob, mob/living/carbon/user as mob)
+
+ user.attack_log += "\[[time_stamp()]\] Attacked [target.name] ([target.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])"
+ target.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])"
+
+ log_attack(" [user.name] ([user.ckey]) attacked [target.name] ([target.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])")
+
+ if(istype(target, /mob/living/carbon/human))
+
+ var/target_zone = check_zone(user.zone_sel.selecting, target)
+ var/datum/organ/external/affecting = target:get_organ(target_zone)
+
+ if (!affecting)
+ return
+ if(affecting.status & ORGAN_DESTROYED)
+ user << "What [affecting.display_name]?"
+ return
+ var/hit_area = affecting.display_name
+
+ var/mob/living/carbon/human/H = target
+ if((user != target) && H.check_shields(7, "the [src.name]"))
+ return
+
+ if (target != user && target.getarmor(target_zone, "melee") > 5 && prob(50))
+ for(var/mob/O in viewers(world.view, user))
+ O.show_message(text("\red [user] tries to stab [target] in the [hit_area] with [src.name], but the attack is deflected by armor!"), 1)
+ user.u_equip(src)
+ del(src)
+ return
+
+ for(var/mob/O in viewers(world.view, user))
+ O.show_message(text("\red [user] stabs [target] in the [hit_area] with [src.name]!"), 1)
+
+ if(affecting.take_damage(7))
+ target:UpdateDamageIcon()
+
+ else
+ for(var/mob/O in viewers(world.view, user))
+ O.show_message(text("\red [user] stabs [target] with [src.name]!"), 1)
+ target.take_organ_damage(3)// 7 is the same as crowbar punch
+
+ src.reagents.reaction(target, INGEST)
+ var/syringestab_amount_transferred = rand(0, (reagents.total_volume - 5)) //nerfed by popular demand
+ src.reagents.trans_to(target, syringestab_amount_transferred)
+ src.desc += " It is broken."
+ src.mode = SYRINGE_BROKEN
+ src.add_blood(target)
+ src.add_fingerprint(usr)
+ src.update_icon()
+
+
/obj/item/weapon/reagent_containers/ld50_syringe
name = "Lethal Injection Syringe"
desc = "A syringe used for lethal injections."
@@ -310,56 +367,8 @@
if (reagents.total_volume >= reagents.maximum_volume && mode==SYRINGE_INJECT)
mode = SYRINGE_DRAW
update_icon()
-
return
- /obj/item/weapon/reagent_containers/syringe/proc/syringestab(mob/living/carbon/target as mob, mob/living/carbon/user as mob)
-
- user.attack_log += "\[[time_stamp()]\] Attacked [target.name] ([target.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])"
- target.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])"
-
- log_attack(" [user.name] ([user.ckey]) attacked [target.name] ([target.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])")
-
- if(istype(target, /mob/living/carbon/human))
-
- var/target_zone = check_zone(user.zone_sel.selecting, target)
- var/datum/organ/external/affecting = target:get_organ(target_zone)
-
- if (!affecting)
- return
- if(affecting.status & ORGAN_DESTROYED)
- user << "What [affecting.display_name]?"
- return
- var/hit_area = affecting.display_name
-
- var/mob/living/carbon/human/H = target
- if((user != target) && H.check_shields(7, "the [src.name]"))
- return
-
- if (target != user && target.getarmor(target_zone, "melee") > 5 && prob(50))
- for(var/mob/O in viewers(world.view, user))
- O.show_message(text("\red [user] tries to stab [target] in the [hit_area] with [src.name], but the attack is deflected by armor!"), 1)
- user.u_equip(src)
- del(src)
- return
-
- for(var/mob/O in viewers(world.view, user))
- O.show_message(text("\red [user] stabs [target] in the [hit_area] with [src.name]!"), 1)
-
- if(affecting.take_damage(7))
- target:UpdateDamageIcon()
-
- else
- for(var/mob/O in viewers(world.view, user))
- O.show_message(text("\red [user] stabs [target] with [src.name]!"), 1)
- target.take_organ_damage(7)
-
- src.reagents.reaction(target, INGEST)
- var/syringestab_amount_transferred = rand(0, reagents.total_volume)
- src.reagents.trans_to(target, syringestab_amount_transferred)
- user.u_equip(src)
- del(src)
-
update_icon()
var/rounded_vol = round(reagents.total_volume,50)
@@ -375,6 +384,7 @@
icon_state = "[rounded_vol]"
item_state = "syringe_[rounded_vol]"
+
////////////////////////////////////////////////////////////////////////////////
/// Syringes. END
////////////////////////////////////////////////////////////////////////////////
diff --git a/icons/obj/syringe.dmi b/icons/obj/syringe.dmi
index 9ce4e51c5ab..2adc34b05be 100644
Binary files a/icons/obj/syringe.dmi and b/icons/obj/syringe.dmi differ