From 39d01d4310d9a35bf96a29122e52119f9bcdc654 Mon Sep 17 00:00:00 2001 From: Spamcat Date: Sat, 9 Mar 2013 13:51:05 +0400 Subject: [PATCH] Nerfed syringestab, made it produce a broken syringe with fingerprints and stuff, so tater will need to thing about evidence disposal. --- .../reagents/reagent_containers/syringes.dm | 120 ++++++++++-------- icons/obj/syringe.dmi | Bin 3218 -> 3323 bytes 2 files changed, 65 insertions(+), 55 deletions(-) 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 9ce4e51c5abd638ab35ade4a9fceff175dfeedfa..2adc34b05beb1cf42c7b51c403fd7d4242337d32 100644 GIT binary patch literal 3323 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 Rfbp9F%#2XTY6Hi({{W~tFOUEL literal 3218 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