From 0645d461686aa805381497fd2c39291cc5674eb1 Mon Sep 17 00:00:00 2001 From: paprka Date: Tue, 3 Feb 2015 18:34:32 -0800 Subject: [PATCH] iv drip hotfixes --- code/game/machinery/iv_drip.dm | 77 +++++++++++++----- .../objects/items/weapons/storage/firstaid.dm | 1 - code/modules/mob/living/carbon/human/blood.dm | 2 +- .../reagents/reagent_containers/blood_pack.dm | 1 + icons/obj/iv_drip.dmi | Bin 1047 -> 1438 bytes 5 files changed, 59 insertions(+), 22 deletions(-) diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index d14c2de4bf0..4d12edf0437 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -1,23 +1,37 @@ /obj/machinery/iv_drip name = "\improper IV drip" icon = 'icons/obj/iv_drip.dmi' + icon_state = "iv_drip" anchored = 0 density = 1 + var/mob/living/carbon/human/attached = null + var/mode = 1 // 1 is injecting, 0 is taking blood. + var/obj/item/weapon/reagent_containers/beaker = null -/obj/machinery/iv_drip/var/mob/living/carbon/human/attached = null -/obj/machinery/iv_drip/var/mode = 1 // 1 is injecting, 0 is taking blood. -/obj/machinery/iv_drip/var/obj/item/weapon/reagent_containers/beaker = null +/obj/machinery/iv_drip/New() + ..() + update_icon() /obj/machinery/iv_drip/update_icon() - if(src.attached) - icon_state = "hooked" - else - icon_state = "" + overlays.Cut() - overlays = null + if(src.attached) + if(mode) + icon_state = "injecting" + else + icon_state = "donating" + else + if(mode) + icon_state = "injectidle" + else + icon_state = "donateidle" if(beaker) + if(attached) + overlays += "beakeractive" + else + overlays += "beakeridle" var/datum/reagents/reagents = beaker.reagents if(reagents.total_volume) var/image/filling = image('icons/obj/iv_drip.dmi', src, "reagent") @@ -45,9 +59,12 @@ return if(in_range(src, usr) && ishuman(over_object) && get_dist(over_object, src) <= 1) - visible_message("[usr] attaches \the [src] to \the [over_object].") - src.attached = over_object - src.update_icon() + if(src.beaker) + visible_message("[usr] attaches \the [src] to \the [over_object].") + src.attached = over_object + src.update_icon() + else + usr << "There's nothing attached to the IV drip!" /obj/machinery/iv_drip/attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -72,7 +89,7 @@ if(src.attached) if(!(get_dist(src, src.attached) <= 1 && isturf(src.attached.loc))) - attached << ("The IV drip needle is ripped out of you, doesn't that hurt?The IV drip needle is ripped out of you, doesn't that hurt?" src.attached:apply_damage(3, BRUTE, pick("r_arm", "l_arm")) src.attached = null src.update_icon() @@ -122,14 +139,33 @@ beaker.reagents.handle_reactions() update_icon() -/obj/machinery/iv_drip/attack_hand(mob/user as mob) +/obj/machinery/iv_drip/attack_hand(mob/user) + if(src.attached) + visible_message("[src.attached] is detached from \the [src]") + src.attached = null + src.update_icon() + return + else if(src.beaker) + eject_beaker(user) + else + toggle_mode() + +/obj/machinery/iv_drip/verb/eject_beaker(mob/user) + set category = "Object" + set name = "Remove IV Container" + set src in view(1) + + if(!istype(usr, /mob/living)) + usr << "You can't do that." + return + + if(usr.stat) + return + if(src.beaker) src.beaker.loc = get_turf(src) src.beaker = null update_icon() - else - toggle_mode() - /obj/machinery/iv_drip/verb/toggle_mode() set category = "Object" @@ -145,6 +181,7 @@ mode = !mode usr << "The IV drip is now [mode ? "injecting" : "taking blood"]." + update_icon() /obj/machinery/iv_drip/examine() set src in view() @@ -155,10 +192,10 @@ if(beaker) if(beaker.reagents && beaker.reagents.reagent_list.len) - usr << "Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid.Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid." else - usr << "Attached is an empty [beaker].Attached is an empty [beaker]." else - usr << "No chemicals are attached.No chemicals are attached." - usr << "[attached ? attached : "No one"] is attached.[attached ? attached : "No one"] is attached." \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index 38b22179c38..6901e0e41af 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -103,7 +103,6 @@ new /obj/item/weapon/reagent_containers/pill/patch/styptic(src) new /obj/item/stack/medical/gauze(src) new /obj/item/stack/medical/gauze(src) - new /obj/item/weapon/reagent_containers/hypospray/medipen(src) new /obj/item/device/healthanalyzer(src) return diff --git a/code/modules/mob/living/carbon/human/blood.dm b/code/modules/mob/living/carbon/human/blood.dm index 37b4be1fef5..06bfcf41c23 100644 --- a/code/modules/mob/living/carbon/human/blood.dm +++ b/code/modules/mob/living/carbon/human/blood.dm @@ -67,7 +67,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 B.volume += 0.4 reagents.remove_reagent("nutriment", 0.1) if (reagents.has_reagent("iron")) //Hematogen candy anyone? - B.volume += 0.8 + B.volume += 0.4 reagents.remove_reagent("iron", 0.1) //Effects of bloodloss diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index 2196a552aa4..088c6ae2236 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -26,6 +26,7 @@ /obj/item/weapon/reagent_containers/blood/random/New() blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-") + ..() /obj/item/weapon/reagent_containers/blood/APlus blood_type = "A+" diff --git a/icons/obj/iv_drip.dmi b/icons/obj/iv_drip.dmi index daa6d5e9e0f0ad3f674ebaaf48465c53c214c4bd..016513245e1e53da3ade22cb4ec545d230474989 100644 GIT binary patch literal 1438 zcmeAS@N?(olHy`uVBq!ia0vp^3xK$RgAGXbBqvD&sZ&)U5hX6E#mPmP1tppJc?=8{ zbEcl#$k${b!1iEgZ5Q{NV*yiMTsrE&!@Q@-@@3?z2%k)YeS4YJtTJ?N$A0?zKbB{A zQv9_E;i~c{d6#WhNZjjVv0M6S^n?vwmf0s?T=PHu;G(cc$C-+Nb9a=^O(|sd5STMp zCN6W<{d4nHemwT-z0p&jz;^x#3S#nxSEJ|5uaXUx{rlJZtC%h8MdgRBcX+yb&673W zUC0#j{50L#$@kj%1-BD+o^(nTyEBumyz9Za`37x^&MB_<`p5EP!#V4g@aG*23@rVg zE{-7;bKc%H%$6>fIrj0nS6js->y(#5{pKqen->&s6JX&rmG!zN@r#K?w)9xAqQ1fe zo=B(mW3x4CxtF$G_;tW&$pgKu2b*_z$}wGE%C#!lvwZpP>Lr)IGdD#{{2KFN@%_6m zpVT)!{u0q}I{h8*fwbMhPiCL%KX>`%diTW>%jUmjdzvHkbM}<|1x$X2K;kEJ)AQ9k z9!E?PIld7jeYsxW^L^Z2@8>qTX-~|p>mRb*xp|vYZDF^Z`QD4EdzI3k%HRJR^mlLm zmtVCD)@lA-9-__la_zzhWo-iuL|y>-kvqv+>&|@u~SYkBe9CJNLD-uP>-{ zU9#tQ-JfsyS0)Aj3ln*Hy(~KVzps+}zfjJft$mE)2hVaoIWd3UfzsWUjWRzk3-4I5 zRrkRj&XDkbYdB-tD}`6A`x7Z_(Z5x9K{eA(^@2#@jG2Fo)IQu2yI|XRM|j5?&MiK5 zlEM|a+%M)iyyHA$xL_toox$;jw0E3O<{gk>p0!hbLN$~5Q;7-u$_Kib4&gzoK5Tu^ z-OW9B-aM~KyV_2Fd}6M={{lOX&K*6}X(VM_O$ z^knkyD*LZqzt8G?nmv1dHq*QPH~1&11Wr=9RliZ*C$G}ETWNpg&zXIU=g*zHlC@RE zbNck@^8alNYwuUs?E5OZkq4wLQ=BKHb$eohD`O%M9sSj?A*t3OBGrm}UvBM=7svNs zK7W{9iuZrWm&1P(ED8TnUYJ#C)G{-l3Nv%Sr^yb?0D;Kxw)Br|DpWDJbY}K zyYGg{954EleD~*OAou_5J*D}xt?kzzl6Q+}oys^Td-0ji{@edgRjDn98`LjmM zfzSxa13S&QP90=v5fv5)YxQ?}Hkb8!;=RZXx1YEiC}nzZ?)>5pQzrl;cHh4b?N-;- zQ}g`Oq63$#-k!fz)OFgQ$~*QI<#lp0%!j&?5464dw)>#f9>u-exI@-$3jKM|->c&D zzD4K1o77Z^wk>Qs{P524y^{NOPXB7DnQ-{(S0|3c8!mhgbeNKKF=S5bdFHSO+hXG{ zwRhaYa-+Y!uIeoYjbg+q19eoH>z)V^Us%wT7Q1m=ZU_mtT|hwuB{eq_vZ^P zuX~@^FYdrLRm8w^lE2>ctC^QSU(e(Zx#|At?)Bu8-=998`7Z`&XZpbniyFvBw|@NB zTq#^~XZD7RGjJHQDyK8mdKI;Vst0CYaNJOBUy literal 1047 zcmeAS@N?(olHy`uVBq!ia0vp^4M3d0!3HF+R#kZdsd-f)5hX6E#mPmP1tppJc?=8{ zb9&Eg5iG4 zUow7hYaZXy)O6Xg;9K81mVkmc7TglG8n;g#6=Pxb^~iL)UhqsQH9*0#dP41^ZS`;Z z%G{!KDyKNT`4sDrVY_bWvad_0XH~w-PL03&X4ULXyMBsqGw_iD8q5CYe2eO&oL%o2 z7?@2wT^vIy=DeM=Kl`?WM4P?n`=+*YA6Mu~FwNX6opT~&li37&hYJ^Zqc)dl@5p}f zrz~CKRPjM*2j5yD^?wsLpW9UOeILI>)1nt&ZuQ&MEFlFNb8`b<$$s3Ozf2*~%aL)^F9*ZeR>Ow?3M& zXV!uD%<-y|tABp``XO}jWK*Zm{05&w#r+pG7yKqZ{tI`kzfR z{%GUB&MrQ(@M7}x9h2gJw@tX`nxA_jw0wTcekbi`2Y2n5RsTBjz|a2A&l6_;>`u(J zlPW3D-M@|D^2?H!Zij!?>`VE-Dpl`6R^8%irp~_wQXG7&4DCz}&Wr~ZGCT-iD9~WA zXysh+`)^5*UMq({sZ!{(s~c7buiPLRkqj0h3^H5{m_`y7PQE(Xsr$hVYrSf5uU1j)rT`secKFi#3xVH$Y-9Le p!w|=*aslFG!sa7;5Ul!K{9og#0$E#ycLH-dgQu&X%Q~loCIBIq&HexY