From 60920fb44998d96608e4e73553106714e917d0cc Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sat, 6 Apr 2019 20:05:10 -0500 Subject: [PATCH 001/469] Synthetics blood and greyscale blood effects --- code/__DEFINES/misc.dm | 6 +++ .../effects/decals/cleanable/aliens.dm | 45 +++++++----------- .../effects/decals/cleanable/humans.dm | 18 ++++++- code/modules/mob/living/blood.dm | 20 ++++---- .../chemistry/reagents/other_reagents.dm | 9 +++- .../reagents/reagent_containers/blood_pack.dm | 7 ++- icons/effects/blood.dmi | Bin 112991 -> 110085 bytes icons/effects/footprints.dmi | Bin 3946 -> 2389 bytes .../modules/reagents/reagents/cit_reagents.dm | 8 ++++ 9 files changed, 71 insertions(+), 42 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 709a4daeba..f71620d562 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -177,6 +177,12 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache) #define BLOOD_STATE_NOT_BLOODY "no blood whatsoever" #define BLOOD_AMOUNT_PER_DECAL 20 +//Blood Decal Colors +#define BLOOD_COLOR_HUMAN "#C80000" +#define BLOOD_COLOR_XENO "#94a83c" +#define BLOOD_COLOR_OIL "#000000" +#define BLOOD_COLOR_SYNTHETIC "#0b0730" + //suit sensors: sensor_mode defines #define SENSOR_OFF 0 diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index ca2a8ccaff..aa9a4757c8 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -1,31 +1,21 @@ // Note: BYOND is object oriented. There is no reason for this to be copy/pasted blood code. -/obj/effect/decal/cleanable/xenoblood +/obj/effect/decal/cleanable/blood/xenoblood name = "xeno blood" desc = "It's green and acidic. It looks like... blood?" icon = 'icons/effects/blood.dmi' - icon_state = "xfloor1" - random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7") - bloodiness = BLOOD_AMOUNT_PER_DECAL blood_state = BLOOD_STATE_XENO + color = BLOOD_COLOR_XENO -/obj/effect/decal/cleanable/xenoblood/Initialize() +/obj/effect/decal/cleanable/blood/xenoblood/Initialize() . = ..() add_blood_DNA(list("UNKNOWN DNA" = "X*")) -/obj/effect/decal/cleanable/xenoblood/xsplatter - random_icon_states = list("xgibbl1", "xgibbl2", "xgibbl3", "xgibbl4", "xgibbl5") - -/obj/effect/decal/cleanable/xenoblood/xgibs +/obj/effect/decal/cleanable/blood/xenoblood/gibs name = "xeno gibs" desc = "Gnarly..." - icon = 'icons/effects/blood.dmi' - icon_state = "xgib1" - layer = LOW_OBJ_LAYER - random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6") - mergeable_decal = FALSE -/obj/effect/decal/cleanable/xenoblood/xgibs/proc/streak(list/directions) +/obj/effect/decal/cleanable/blood/xenoblood/xgibs/proc/streak(list/directions) set waitfor = 0 var/direction = pick(directions) for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) @@ -35,37 +25,36 @@ if(!step_to(src, get_step(src, direction), 0)) break -/obj/effect/decal/cleanable/xenoblood/xgibs/ex_act() +/obj/effect/decal/cleanable/blood/xenoblood/xgibs/ex_act() return -/obj/effect/decal/cleanable/xenoblood/xgibs/up +/obj/effect/decal/cleanable/blood/xenoblood/gibs/up random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1") -/obj/effect/decal/cleanable/xenoblood/xgibs/down +/obj/effect/decal/cleanable/blood/xenoblood/gibs/down random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibdown1","xgibdown1","xgibdown1") -/obj/effect/decal/cleanable/xenoblood/xgibs/body +/obj/effect/decal/cleanable/blood/xenoblood/gibs/body random_icon_states = list("xgibhead", "xgibtorso") -/obj/effect/decal/cleanable/xenoblood/xgibs/torso +/obj/effect/decal/cleanable/blood/xenoblood/gibs/torso random_icon_states = list("xgibtorso") -/obj/effect/decal/cleanable/xenoblood/xgibs/limb +/obj/effect/decal/cleanable/blood/xenoblood/gibs/limb random_icon_states = list("xgibleg", "xgibarm") -/obj/effect/decal/cleanable/xenoblood/xgibs/core +/obj/effect/decal/cleanable/blood/xenoblood/gibs/core random_icon_states = list("xgibmid1", "xgibmid2", "xgibmid3") -/obj/effect/decal/cleanable/xenoblood/xgibs/larva +/obj/effect/decal/cleanable/blood/xenoblood/gibs/larva random_icon_states = list("xgiblarva1", "xgiblarva2") -/obj/effect/decal/cleanable/xenoblood/xgibs/larva/body +/obj/effect/decal/cleanable/blood/xenoblood/gibs/larva/body random_icon_states = list("xgiblarvahead", "xgiblarvatorso") -/obj/effect/decal/cleanable/blood/xtracks - icon_state = "xtracks" - random_icon_states = null +/obj/effect/decal/cleanable/blood/xenoblood/tracks + color = BLOOD_COLOR_XENO -/obj/effect/decal/cleanable/blood/xtracks/Initialize() +/obj/effect/decal/cleanable/blood/xenoblood/tracks/Initialize() . = ..() add_blood_DNA(list("Unknown DNA" = "X*")) diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index f1a1655fb4..6996e107ba 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -3,8 +3,9 @@ desc = "It's red and gooey. Perhaps it's the chef's cooking?" icon = 'icons/effects/blood.dmi' icon_state = "floor1" - random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7") + random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7") blood_state = BLOOD_STATE_HUMAN + color = BLOOD_COLOR_HUMAN bloodiness = BLOOD_AMOUNT_PER_DECAL /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) @@ -50,6 +51,7 @@ layer = LOW_OBJ_LAYER random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") mergeable_decal = FALSE + var/fleshcolor = "#FFFFFF" /obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) . = ..() @@ -58,6 +60,20 @@ /obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) return +/obj/effect/decal/cleanable/blood/gibs/update_icon() + var/image/giblets = new(base_icon, "[icon_state]_flesh", dir) + if(!fleshcolor || fleshcolor == "rainbow") + fleshcolor = "#[skintone2hex[random_skin_tone()]]" + giblets.color = fleshcolor + + var/icon/blood = new(base_icon,"[icon_state]",dir) + if(basecolor == "rainbow") basecolor = "#[skintone2hex[random_skin_tone()]]" + blood.Blend(basecolor,ICON_MULTIPLY) + + icon = blood + overlays.Cut() + overlays += giblets + /obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L) if(istype(L) && has_gravity(loc)) playsound(loc, 'sound/effects/gib_step.ogg', L.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 71a12e9ff4..325683df6e 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -231,16 +231,16 @@ return var/static/list/bloodtypes_safe = list( - "A-" = list("A-", "O-"), - "A+" = list("A-", "A+", "O-", "O+"), - "B-" = list("B-", "O-"), - "B+" = list("B-", "B+", "O-", "O+"), - "AB-" = list("A-", "B-", "O-", "AB-"), - "AB+" = list("A-", "A+", "B-", "B+", "O-", "O+", "AB-", "AB+"), - "O-" = list("O-"), - "O+" = list("O-", "O+"), - "L" = list("L"), - "U" = list("A-", "A+", "B-", "B+", "O-", "O+", "AB-", "AB+", "L", "U") + "A-" = list("A-", "O-", "SY"), + "A+" = list("A-", "A+", "O-", "O+", "SY"), + "B-" = list("B-", "O-", "SY"), + "B+" = list("B-", "B+", "O-", "O+", "SY"), + "AB-" = list("A-", "B-", "O-", "AB-", "SY"), + "AB+" = list("A-", "A+", "B-", "B+", "O-", "O+", "AB-", "AB+", "SY"), + "O-" = list("O-","SY"), + "O+" = list("O-", "O+","SY"), + "L" = list("L","SY"), + "U" = list("A-", "A+", "B-", "B+", "O-", "O+", "AB-", "AB+", "L", "U","SY") ) var/safe = bloodtypes_safe[bloodtype] diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 15a2ef1cba..a4a0bed102 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1,5 +1,5 @@ /datum/reagent/blood - data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_color"=color, "blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Blood" id = "blood" color = "#C80000" // rgb: 200, 0, 0 @@ -88,6 +88,13 @@ if(data["blood_DNA"]) B.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) +/datum/reagent/blood/synthetics + data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_color"=color, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + name = "Synthetic Blood" + id = "syntheticblood" + color = "#0b0730" // rgb: 11, 7, 48 + + /datum/reagent/liquidgibs name = "Liquid gibs" id = "liquidgibs" diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index 31e893aa3a..95e3be1849 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -10,7 +10,7 @@ /obj/item/reagent_containers/blood/Initialize() . = ..() if(blood_type != null) - reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=blood_type,"resistances"=null,"trace_chem"=null)) + reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_colour"=color, "blood_type"=blood_type,"resistances"=null,"trace_chem"=null)) update_icon() /obj/item/reagent_containers/blood/on_reagent_change(changetype) @@ -45,7 +45,7 @@ /obj/item/reagent_containers/blood/random/Initialize() icon_state = "bloodpack" - blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-", "L") + blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-", "L", "SY") return ..() /obj/item/reagent_containers/blood/APlus @@ -72,6 +72,9 @@ /obj/item/reagent_containers/blood/universal blood_type = "U" +/obj/item/reagent_containers/blood/synthetics + blood_type = "SY" + /obj/item/reagent_containers/blood/attackby(obj/item/I, mob/user, params) if (istype(I, /obj/item/pen) || istype(I, /obj/item/toy/crayon)) if(!user.is_literate()) diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index dce76f58b522a1be781ad6b42e3c1d6bce2a0ef0..49000e246e5034b4e946ae7ae13757c26c040aee 100644 GIT binary patch literal 110085 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≀9JX?P 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 z zr0<%n&XutTJ4j^2yT9#Ho$-x{)squix}U^{XJiW^!7>&D-$rFHW@%F#@gDTn!yEx8 zNFJ6YNZ11BWep^vdfVlA#j{?aF$uq#N*wD{z$6n4{&C6mGOQ#5fMbKt1p5w~q)3t^ z*$i2(S_;FH1mW|vp1NCzbmYVMMJ=6X7sO0_1+q#a6F z?H-#;5Sm7SQ;CLb8VRHIwoCj+L4OCWvxyD@-!=={{_&A`>1j(_uqrdRv)D zG^Ru_4TPpcX;VE|*2=R%)DFoN#f9#LBob1nQ&KaA&~*P;id2OZy~vsrAa{lu5Ts3| zyzFWJnm^sKOhHD5O=Mw!$z?prRDMaw-#-C7;)TBd*wfp+DZFZjd3oG+#R#aJr~@%M z#FE!lOSk%D|NFt_*gi(G{-0)Q!ox!lgYox2l@fR>@G?aQR%Et$7a|Q5y!^Zqt6KW% zPaC@Y2cV)f2PciHndXk;kY{~WN{t7Z2kq9sHX;dF%R7=bP;o1TT+D?W`dONnHuLg7 zO%|UC8-a>$_)YI*xnvLhd>u9;#Y|4%vveCu2V4jD>;WIQ5Bal(5;heP5&}ONMLD2> z?E#ht0N!QQWqUqAek21fgB;dKAqmt(xOiLVs|WUis;&|-0Ew_BiJJe{o!~lMJrn?Q z2ttSIlt2@2!|8)0qz=g*yjvpfKsSm!Uubol&P3BqlOYC&JbQs>QrDdJ0OU>=o7{!L zfdgY>kiU`=g!Y652Z+}!{X^!v@b1U&rdn^L(o7xJ0)J0HdNSi=xi$0@_+=M5ULg#B zM@h8f@0oJx`DhV|-UNWNXO-}vEF<<=P-Ykm?ZACZC-va>TPFME|9UcX{7zB~Dt&ML zMxe{!8-0+l$>Vm5ej;_iNDPpt(HZo=e9*O;%YpZxt+;FJrd6W~I=rX{#48Fxj8?OE z3dGp9tzr<%v$R6g!#Cw^A^qaq{lPqZ)I_h-Cp^K{CIOrFH%q@?@mF`#2QJLmTC$az{1u=cEH4V0+4EfX^p25d7{9NR)qS3-o;b zod+CiQ^4Ko3-ZAqha|9fX0gMl6{)VRY~SG@Pv`2-`W@~8B{wikx=8vU z1V*LC{mHHZMSgS&)7;{oM@edI^uyp`43xmS$*g~{%p5f!Ac!J`cqf$jZ_g43^R4s8!uLmEYgiT7^ z86ripOMtXAo_OFzZ}}%@sAzCSIlk|@&_8Rs_!2xa2e_@-!JRm4OE**N6x%A)Gzj- za}DwQKf%Y7ZWd}V_R)CrV}0KQO7Ji(fn}~j+C(+sDF$>!)+yTJrgJsP!q=j}bNSYl`xL+Ds?~_Qd(tzX)2Z>0(I2-v7lpe8lqhrd z?hM>ppF{KSPaQ_PKGjJ%MfE}xBvV9`VI`pR$e!O&k?qr2drCvZ8Gw!eYTJz^>YOf* z&^fXOQ<-y0A|Tt30;vLKP=;H?H{2u}Pr&cb_xl33|DR@cH9a-}@bO*%@e9?$EkVP; z3jT?kvRh;RyrPTL^-qA7%@4SL0DL@){m6F;t1C=Q34`O%tnLKHsfiIumot|Wg?Wbsr)VlL>tzh;<3BHxvWAT_uU%YZ{h@8?w|}|wwkB}s9TA6LPaM`y zY6IHP2d{=CEtK0{Ibv!lkhcO98rP>z!%Yq?MtbY1T{t4M@%P4-irp* z8^!qmqTX`Xrwm148>Qvw420n$tn#n^t@quu64KH}3xC&H3QJF=qk6jmB@kcwU(_uE zNLwJ=Q;hX1@CqU_{nbcAfuzzBG}8wIaO&-W_%yGNUsbm6IdHO#ZdeBIPA@qi%HpJb z1npRJXyWTE{#|P@(Q;NtOcqhHoQY>1 z&3E}#fz%lpdg)5=H{Yd^ItELd)o<6P(Tyt{*|p|GH$l_?kUH68WYqFq>U~@xT}VNl|)`GZVGFh zxf7OTJ&KEfC>U)}1Vh z@);kY6}L5(6cL=6e<1Oe?I9G#YKvRO<9`M5WAMo;3YvvK86bHRb_2Q|5733rn#D7@ zHE_Pp{rj-1;t5phMTDCSLVs7zbJ&A#nbQW5 z$vF1ymnOPQU%(B<19^pQ@K7iD0{N=}u&xVelb=`5bJkgwF3#JoWLM81s zCeyI#(f2Cq4qyJrO;=`td#`IwS(vJFl6d-pz0!%{Cr2Al0(yw?$EN%`A6$G5wyAv`;; zgPQ{#&Qt7FU%1&&ySGY4{0-HaBX#Ap6zxt3Qhh#ln)>E<|BwTD7mB-K zYqJ)0LsE7Gg@te3Kiwy+#T;X%)*16}By$+h*dB5NfcbA%XCK2wtG};oB@UvIbisGz zW#_n`TIs^TXEfh1M(lFG~8sRMvrc+ z?@+y#elcJVIDUv&S~;?bpAdU5=pf-B3z1&gKD0O0Lt zZqT~RnGfBRvSm`cB!bnu(LgF!IhJ{0RsvHDx}Hr_xs`tA-dr$c2)rv5KWMq89&h%qXCItg0tOC*=>f+$bj||U=ih+et@PYN9%ccCV4F6(lRo*VlV9lYh9{SctL1rKRCF0AkZFz!zdy5 z9K%nX6SCVSIA;!l&F&)RbO*^$!PPwByIn1*@9ZEiQ^*H2{w|hIp$!KcVc6aq2@v4} zHoXdb&%siV+n8oU@Ufhs+t(nKkN7Ky1V;*Wy1@+8mzc~G+GXREa*6=$V`YBHo5U+D zcaGaj$*oM`SFj1su#!9%TdBk^wF>QyHEGFuw9J#oXNokky|CdboSg}BROCX$-^Uyqo4 zgqtme(fxm{P8^sOvl}jw6e*n0(bf}jxdQPO$yohTQJXE^q>bJ=UF?ydkvDTHT(DrU z&LZK-7v0L%45X3@c?%Fo29O6+wJTdh>VrZ#YD3?qtG;mMdbixsJK7Isxed2z8Ig1LyUOcgJ^acv zor-(hKusk%PNY zi;r%;<5;*c^gj^~$7zN`pFB z?YLvZ-x82Wv3zNW&ibyrCxvQL3ps7VQt{9DhHNS43GMC<`W??6E#8W>N=W7@>~QRa zUi1={FmApEm>rW(kt8TgNG71fvCOr_P;g+lRoPPa6 zUI%1JzEWu-pF|h)bH@}-#;FH!H!($Qn=eVq=Ttz8#f8{_ldk+DBj+KdQr^8y!8F>HPmsHZ~hWZ~eN`s=4I zji*hJU{IVb`RIVGj!1@RN?|k=O4Aw`QmWse!l&Ca5qxOvKCDX7CO8|Yp&fTu=&jz> z|N4u>v{-0@8+=h8(%`Ui&vBdE-r&q+pGbAg+0+O`$>Bg&mUolWsQcoqp{CQ{QPp(i z;T_^m6`ET9E`SAIL(@nNvX^ooMqKN^?N!=0oWq?>8Io9&`AjdLUK2%~SAg)D`oY}5TZUAYPsOL>K%=8LOQT6xkVKoDFh z=?>d>btTM2?`xZ}9a&ocsP!YXa>&4Y2Dh_JN4CZ)<%j485#1{^VG^R1*BY9@e2Xfo z6bRwJDrsJw7g1_E`d5V=f>uu+w(T9dJ(UC*tAI_@bzA6Oztg*)5UE|lTi!_}+Tc_W z`}n4~bD-(M3GLY`*r-o8KgH#8@NoJx9KR2BK*R_x>@h*I{CYCaVbC71ckDd;ksD6| zw}`ztW%iD~Qa<;XDRk*cB73_8KH^hgjz1;F8iQEq-R9tu$x#&f~Cw*HBy?bhiw0A#EdY?%tdkn0Xvvsx$aQ*mC_zBin8En9A)xnFJ05^R%w@| zHov)3ErL;Py#XcC{L6M_Wl@E@S%r%Z@jDLggzq_i8sojngDc$^X9ip;V(&xxDjt!+ zA#yHE{ziqy*#awnC7s%d-(w^&aAuBw`oI>0&KyLqhAbFOi=q6F&U#u!u;!hFFh;a1 z=tqaPPWqcKX)*dGx7G552YX7%jBgQctlWqwGG>|dIh{N3A!K>N_4SSwvTK9!EI>Ti%IkB38xuzO{a zib;|pPi!{7-w>}`NE&fv+Il=Gu~@@vlqaj`bWi_fLO0DDqJMP1tP_^n9GX6#)v=$QG(VgBDJb{hz??y#XGbG=Q>J4n+8XrwN%dvqP3jPJrvl8D(#9yTlqa;>_k%zCMZ^u< zEcnaYN0DKsy-yBqqoIx^!QH$;C7J;*1fCL7lhFwHS|jS;{xM6o#hJBs(UwM{zQ-c6 ztDhCfq}7BrVl?|?>|HWb7s*h9Z>zWH>}!XQ`ID6C{1o}sR;z}v^3q>ih+wCBFtcAE zfaAou_jOGcg7LZ}c~L*EAmq?Cz~{M?-jh<`m4i!nn9mm7kD9oPhTj);BPXJo5N^{A z6N7apMv5;!{~Hfv`0HP6y#q}Cl#$JR`oE1a;+rj8?~6vN#TO@Y+lRG1WN_W ziGt*XPY{nD&QlljA6M@`A*hJG)QlgDD(QY_k}OS!C|BnYppYipFnr2F*-=^47{O6} z!2U0+)GGKJo+r+zn)044)VTWIV636ex4O-RT*n2-#`pG*Zomi&%i&R@qLdnRc)ma}a zsZ$b!|DE>zf|+$~2fF+c;$+A0NX5SU@*i9M z?4?aZZQ>nW3g6^qy0Rx@(-3|EOZWF|d*aCtiP-WDA8nzjXo9tJVeP&|Hswc?p@Xr8?RU7?C<-3uUAxSs# za{tUlan_I=w<&pK{=NI~(qS0IEepQS-|gKUY=br`J4;z74Y@u;u9`{3cCO^%(8`RC zI&FQ*WPkdj-v|~k?t0M?_I|qGc3DjO5s5`D=v!C8O#cjx@<}zhFT~y)xL|%@S&i&V zmwABPzzYhR@~+bo9j?h`a1S(CS`L6D-lmBWqzry}C8}r7UJEQe%e{k&PsqMIY%4o% zq5E=FXN*a!$Js;e{fOu<=|1q~Wy)8Dc)PWR-XA2x!F9!res19ns80Tqud2%Tej!+T zce1el5H$+4ImX_rPHZ43!FCpiPDHW)0PXL)vQauqVg7-VH)v;LAGJBfkN|=R_uwqT z8{x7jjbmaY=$d662BzEVg?fHHTi>)9GWk{T1uy>`YduTT zn5zJ#aLA(sv{iN8MZ|J&0GpuW@5DeBwH{12np}2CT)7QN|A^4-Tw|uHFrLD?{5FFv zTZ>l-92C$ptqpn7UjP1$CLd?B%01@rD|44HgFcWYRQDEtGcxdWAIcv8N zO(0pIL7@8)eQjSY>^GhKQQMC6SC8{^gcm$`$u`Na>AJG?ld$EW*=?Nd-s*L%V;r82 z8f#-e?LSFbu;Cd&<(tCG&2`i|5C0P2H7>$q8whhq%)B{tZpYVK3>f(lIP{c^lj1Gb z;~1*abhSdu4C>1Khl&`)V%&bo60lq|3`^EU*+2*%&fvGEcC%CWj$O%QsY)NZE_ zRkD}|4F1UR+x!A7T%t%2)o8|WapEd@^8`WfPv{o>V3CynGJP%K(fb>Mv>0kBI-4Fg zGK$I`r>w@h)H<^8%WdZDUIY|`J^28o;8opF5*BZzs0)j*%1c!~RR*61XT~@&q7kWw zz{hN!&4OXq0JSj-2Hv2U5u8R4n^Hj{8lADHY2NXNhlnCA^)Q$*|2wt0C{Y+7ogK<$PG3=E@aFo$@{z3u@XSsR35)(RUaD?CT4jv4v;2 zazaA*?GhhEPurqmelP{e+;p-N=@!nBQqPL)zao+^n0o-L(IC~YV*JJ{sQH9d&=y4e z3_H{`i7#;5zha+9DuB!xPT%W{4L>L;RQZNCA%wqGuL7>fBfIKQV0#1CerY*JYJh&U+#y87-w25PQZ47_Ap_^ zA$-Y#wE5fO&753#fagS>4~@~2{_YGDa;60MuJ_}23akPQ8K>5kfxz?A80*eV>|w%*RnzPSa(bko^?IK&n_96!=QE>OjEE=gFPs^p`s$Q`&5 zUpjJrd*pf%I7C;u0l@yVnp4r@s@8CAHX`pr03Am}MDXzOnc-n$TL|C*dfrm5__#r{ z!x(PI-JnsWUMIba&qqbjOOjX)UR|ZZ(%_sBNF?f53Mhf_LqF2mnH0|2ReNRV8PG9` zp732X0OEx+sEXY$8-Th2&cmm_Ztr(ibzWz=G}yScCfkTe@)hKR^N+|a_xe2uQ8##> z!S)ByS7f)@e6eLYn#Pn8j4We4Wo9cz^kx`aa_E1fNHpms9XMYl6bw9&gJXf9QOY5eVQ9*&A)OVWYjb`!@M4{?I*gY0ONy0tjiuv1kIDo- z<>c?^b=JBJu>s}Jqe?`MgM%{{0T$zR!1(o#C_|BwG>7KP7H##1&6|Qqy>YmHa zyT+R2tc>N#_y|fa+FUE=qmI-`2bboiwpHUl+mN)M2bGNhNKYS?ma<^u;CyTeo+hIl z8ECh?Mg@9sH3rTp=86I`fmZv1!j_1sMo`4~_glJ#`I2`>bAJ9S($l-O2kExc$0El} zkG%rBAe7dzXNWk-R@lGcc9{~KMe%&sM*m%eLqmT!X4@Lht&;md9}9z+-(Rh+4h|lB zs%C4w@ln^L_0ms2t?6uSd3KZwl_#mQXfp;N!CUp7W(B6FwHNHRjDR=2n zq_O4a3s`2$X_q_Q;Z{|%L*I!Z)MP8vG1v?_R1bl%J!r=^2X&7LZQGVw^IL2V>QF6m zxL_OGgcZgQXa~!7Wetieds)Vq7oX_|&mB%Oo0-;|z+*TSR6t-+R#vudu)d4m(!%1F zVW~?n&abzqx$b}p(ig^5| ziT@VM>9io9vtLjr$cFxleW(M*?DN`clC^OQAUgU2Lw0se3ki2;S23}+Mvnzw@dEP! zVdBV_>}NLV`Yb8b-08OVqiv4k13}LumkAAY2EZ^^3U-1Bn4gLxWC(lz)yl!bS5N;Yj(k zG))2U?U57Xnc0==n=jD2%$K$qorkgv%;RC@VOaQ+`18kQYK5Q zHad@m2^)ZEOipzX0F47VEq7bIyb7&BQLEmsZ#o;E{h6=G#_lAXT(2}Nm9JXwaB{=Y zN+#&8FQD70M9DOj{>IUhF0q=JicOz*r?WrR^M!Xruv_N?uz|fp1KbYIEz-3(X);k= zGjukR0t#AE&B=7L)D)6iL^+IXFr4fnkz6nhUG7?MR>1igvqNZLm0$^lqWJR}o=FKu ze-!4XY^J-jcVX)dQrK}c+D} zqYQ^Lc3+(pYxq3O*iEUKg9A0dsoL@>HW@M!3)tlY&{hx#m?JoXt6megsEI!_IQr7F zsXfmsvo6i{WGEG)9+S$xec#rhH}*Zum{W8Vi(dGRH3*iC1~;7eV;6Gz8L@vX;0Suj zrC5y}T3O<4KulkQwH`eBm#XHLY1&zMDn#la^J*vw%7Vq68M3j0cyq@@IvBDw$K|bG zd6Owxvy~R2(^a1DB%V0_WVZik#@6R>?_~GD6#H!BGVwN*TGnD_B65dh=|XawWE5k- zD!H$VmAbcKD6h6$ZcSJ`!Cz7396CY2AZbW_r6(8Oj*qRin2Jb7?W)S5h1!xW#skjm z+Ulc@A=<(nEKvnENNL-JY$;|$q@?2J|4287NqiY=CfxW ze*?cb1*ppAI{DcBqt3f`TPjOkb{_uX5@0cdYmrr6e;>!b)R(7^7uzEf+cu`h{~A9p zUiH+S{UZL`d6+j7ogbYM_vOpqr5lyl<%~hYZi_b7%g*nFDecjYu=NuR7yU_#K{U6w zfRD3xUXbw%FQ$@c zzi|0eKlx)MD*Mvk-6pRCneZ8ZP4eYTrE!}=8SoyMawmN@l)K2Zv_27@B)#%T!sEM@> z3Mpyb7ID8B$&BU%^N+qMvU6tDi-c;tos*i`5?4Avb)H5=X=aH?Qf||G%EPPQ=o_p0 z>|+D~{y-VGWpVqj{-%a2c<%=XRg8Tfy%ZO{shjN$o>qO~$H(Na|LI3WLeku5WJK>H zh49t7k~!J23Z#M9R-^BX2n4dE%Unbu>NE$@^@`V+(oBbRJbw^-Lf4o(P(d|T!wPIW z7|9NQx>Zr}T=>yx)gB&}F$9#^#7JIaB^qepHc!|D=}Xmfv@ap&NVgdU!%QWQ2dYlJ zbic^e@RQssZ%PUHd8Li~#{7SsN8tc=?zJVS=@PKNKm(D^%|4j`)-gyyK>>K*toP6N zXf^ixa&Sqo8Tpek4D>}G1_Vfk?Ds>QK}Mmk2G;j~aETS^v4>Ex{o-tXybb3+l+&Z} zQUf6G2Fay5Zg?cK%AYvc=7JKK^E=1lpgar#{z)sx>>?zD*I)cf7 zwv%%Ght2>^m+s5Ap)m$pWFsxn6Y}9rxvUY;^F=W0`NpejWUG=O&z=JC^LuY$pfcJ) z=0M3W?Lou`eVp$VXj(xQkj?aVtzZ}YK$`k(OXuO7nNwk> zQj=}T6LBoMJP3U+6qtrcC`rR_?ahqXrHVAaJ*HjBzV?#w8^fjUX-F z?H-8kfc4$+$u9r81ikz zfZ7INm?$jfppTf-xZRZ(oTDmWi0keYvS;XQvSnrZsGh}taM8JtH|Rf1&PMbGwef$t zpxO-C|4D@ZzrPY7wow}Kk^^EOfTM|0Ubww4ds~vOt*mu>OqwlbA!2+s0|eSVGF@XI~PXMET*;omzMo0;v$A|CjzMzf-B!(hYyh zOD@%4^PJ@VEryLto5wSb(uh46zIL4=CZINCF7t;V8uVh}IqV$+*=Cy)rb&J}0MfH% zEd%O@8^N>8$%Nxz&Gu%zSy1A3PH3bU?mR~4uab-&(Rxw`KxFI38JX6i{iq{Ef#Z-@ zZ^kE>)^94kNf*Bj-g$g??()A$w%n=!uVkfR1Cj#TM?txZ`33WZSW;FGr{N|NE=GIe;bOkvN4mXW0E(?`9BfjRKxGNOF(E z8g4Vp!@vI}R_xKndeXbGS!iBrs^z7;N%937kvszrP=DO`+4k4WLd$i+FfH7W;<*V{ zg4`g`Gp+#*y^*BmuJW@(nM#|QJ;ZKmc2}wVKoLc2?Aq12^|Rv0&>qL@Y;?@|UKGj8 z@AsX^*|(qpEXw1wZ#EuKXxA4!u{+$|YH_qf?gt(c?$5uJ)}CAR{MYk;X}vC}-2zX? zp4(;hGPKA;@)83Q>IF=DPzi0qIOmtEj40Y*LJgajGs5!f7RW3?4ZR3CxWfGVI-Av< zO|Hu?ngO)+JY>%=Hvn<#k@RRAFDJy|b%hr{MS?({D{fLULlr1vgaq{^7@mQ~cjB|J zCoa$5>?Ndh&4TsbR70oN$h-fY5F9;it^D;ILpW;R0eLjODN#_;N-tfw((9<@B}9CC zch)gIp0d|j{7^FpZa(pU@qFv499UTKxxW;!IfOi3Fpu@3<@upi`Q}r>17xAbmhYvt zffGzTjeNX`pQx_Se@Lld@eizF&fL7SrYeG1;Cy~1Y;XFZ+49uZt{cfXCm5|uh*8}U zpFovsqPhun^0xV2w&K;c)_hHo9{w#E8O`G&fWiI;9G|H`EzovQcedlvz%zSWNv8&l z=JIn1B^dyQz3OMq-L%|6TcNcUlztP}a#)J>N=wh%QAHlf?|MNKvB^Wo5-5c*sFNS) z{Cvz-CS!5-BMFR3@`Mknb^H_TJmvZM3_SuhnB7z2bh~}m&v%UzZ4v;cfSC;%b?#DQ zFCBa)(*uUh5q3ok3X)nH+yuL#ZafdY_9~UiH<&Pj?+&d;v4!qd{SmoXl5Vyr|4-c0 z04qEaD$!_D%FMP;ymLz)EH0HC%0K6gZ%ma8f0FgVZ*ZSK_JsUIi~KbAE$bMWTp;is z^XR^KrDbzTvF2IPbwHTCDd*R7k;Amq!N6JwGljG>n z_xSpC^6k-^3j

d4r{BXxo=KQ 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 H9z^{gi+$5= diff --git a/icons/effects/footprints.dmi b/icons/effects/footprints.dmi index a98344abe41ee0f33fe3caad7c46d4230a345cae..61658e5ea7063a2d430abcef454c14892eaa823f 100644 GIT binary patch literal 2389 zcmV-b399yqP)hVmV=>fQks4l$=A1Q6N=>%_=EM%*-i{ zM>5U=uRH1f<Z6tc*o(AH!TaM4zsJ9Ez5zd3K_^`%uXC*;k&bIzP|=FFKh-@WfK=1sM}870~& z`epdaJv0wULjzA?U=Ms_unELPzl;*q+Wj(oTAgOpaIdfL2f|$dC%|V+#MJdN6Q8Q7P@Mm{Q=oS3t134pk3I z>wu&MtC>*spp*$k4+c=6J*ZBhs(_dRMUGXd^=4;kC`R2=K}@+!YW9_jW4}q%1)+j_ zPNF6rQ_K*VY*54Q54N4LM3P0j$R+vOGv-3cUOzXb&>Ek_W}`&@sruU5dfLdEipxn2>B8`9&kRoA0*Oi&RGQER(2uP@M$f0feg( z150@AF`yUBH%}Zys`1sogQ^FYxAHQ8^Qw! zRwV|O;M!wAQ6I~@l?hv!@IcA`U5A}`qTB5RKP37q)JzBi25wQRU zJ(~oO{Dne-omx{^n^?|s4~3IPK`6JMHnd0N#V8eb-YLB@O+gR>A(l^hA$4Jjs*v@F+?5j@)Q9Qb^#YY;6LC+ zVi)kn2Mr@o42laMgebm0bILJ=hccdTUeWN|2Ok_y&~K@!J|&+Y zBr@UaN}Crxz*LK+VICx>o2ZY4<6ih6z;(KTJ}{}G_hoZ69d^Jn z6zp}(9Dth8J`b(3Filp83O-;jLYtp1?{QRD@B!Kq^cbrr6@1Vqkq==`%cb_d&-qQn z2Lf7Gc^4ET(aq7sF_3(&1jZ=A4)DQrjc|cq)$Jr@0H^j2C9tBK2K6Q^fs2Ebf_dHK zieH{WRKQ6<3H6*>SBwGuYz@UWCIp61K{q5O*;XUtal(aqq8+UNM$TbF2~fv;6M#qk zn+ZaK|E@k)>`YU5f;Hk`iG#mYJ1=ZsR7cr^$5|>BBVD;CrbM9|PQ0H?$16pCHvSmQ zzI(kOF{uqUO-D<0WHOi_V=Xv**3YL*Q}!EL?*b0tQ7Oz#Sl{hqAhD`;!x*Byv5mB! z=N_#_4$J!ma~tY$VSG;e8eLM!{?Z0iU0t>LW&FaEi*!MvJB4{FI1&SX5uIpS=e1>X>Z&*-Fsxj@ywM!S#v6 zRVoG(Y;h@ME7E@J>+h1;c{YjVf7cQh3uhAyolKxveno52_rbc<7kw*gKa1wo@g02e ziyxQPTHWVN{&jg*KA7k5W}KaFNNQ3m@QaI+qZ9 z>?iSo7T~`ME7t=b0PQFGo%jHkk22uG2LgW+L;do(o@hH1K8QrKw~H=(P)}OvNKPOO zH$Di&q&i@x#Y&N(C+vX_0<|y08@$Aafo^;N;ol1nY2`iT#s^RW<-l776AgXm#s|0^ z!|VmKqHW5c8y{p&>)mA1q1jPP4}5?MYD#i0!rxqX)z79p@ImnyIDf4n^e^=EsyOjM zm@BWTpHVmHOv|{)7}of*4?Z}tnw!e8btd>9>!YpiXu_JGz2<`t7CX66%uUJiFxMS< z`}Ay^wZ4oz@B!9DuHHwe2d9Jb4E;O}M8ZArfjqEvtMGve=)8=+0^q_6AE3sTR&STXjE34W`00000NkvXX Hu0mjf`tDwO literal 3946 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 Ef-YQ~`v3p{ diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index ae77fbcfc0..4a18c0d9b4 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -230,3 +230,11 @@ required_reagents = list("anaphro" = 5, "acetone" = 1) required_temp = 300 mix_message = "The mixture thickens and heats up slighty..." + +//Mutation toxin stuff +/datum/reagent/mutationtoxin/mammal + name = "Mammilan Mutation Toxin" + id = "mammalmutationtoxin" + color = "#5EFF3B" //RGB: 94, 255, 59 + race = /datum/species/mammal + mutationtext = "The pain subsides. You feel... like a single furry." \ No newline at end of file From 03a174d21f0247ca5dbbf6998e19c5dfda57aa28 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 7 Apr 2019 08:54:05 -0500 Subject: [PATCH 002/469] compile fixes except we're memes still why yes, I'm making the bloods all subtypes of each other at this point. I should probably change the way stuff is colored. but, meh. effort. --- code/game/gamemodes/meteor/meteors.dm | 2 +- .../effects/decals/cleanable/aliens.dm | 8 ++---- .../effects/decals/cleanable/humans.dm | 22 +++++++++------- .../objects/effects/spawners/gibspawner.dm | 26 +++++++++++++++---- code/modules/mob/living/blood.dm | 3 ++- code/modules/mob/living/bloodcrawl.dm | 2 +- code/modules/mob/living/carbon/alien/alien.dm | 2 +- .../mob/living/simple_animal/bot/cleanbot.dm | 4 +-- .../hostile/mining_mobs/gutlunch.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 14 +++++++--- 10 files changed, 53 insertions(+), 32 deletions(-) diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 426d23b4ab..36e363df25 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -317,7 +317,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event /obj/effect/meteor/meaty/xeno/ram_turf(turf/T) if(!isspaceturf(T)) - new /obj/effect/decal/cleanable/xenoblood(T) + new /obj/effect/decal/cleanable/blood/xenoblood(T) //Station buster Tunguska /obj/effect/meteor/tunguska diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index aa9a4757c8..6dee6b5e7b 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -3,7 +3,6 @@ /obj/effect/decal/cleanable/blood/xenoblood name = "xeno blood" desc = "It's green and acidic. It looks like... blood?" - icon = 'icons/effects/blood.dmi' blood_state = BLOOD_STATE_XENO color = BLOOD_COLOR_XENO @@ -15,19 +14,16 @@ name = "xeno gibs" desc = "Gnarly..." -/obj/effect/decal/cleanable/blood/xenoblood/xgibs/proc/streak(list/directions) +/obj/effect/decal/cleanable/blood/xenoblood/gibs/proc/streak(list/directions) set waitfor = 0 var/direction = pick(directions) for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) sleep(2) if(i > 0) - new /obj/effect/decal/cleanable/xenoblood/xsplatter(loc) + new /obj/effect/decal/cleanable/blood/splatter(loc) if(!step_to(src, get_step(src, direction), 0)) break -/obj/effect/decal/cleanable/blood/xenoblood/xgibs/ex_act() - return - /obj/effect/decal/cleanable/blood/xenoblood/gibs/up random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1") diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 6996e107ba..2c4575f247 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -46,12 +46,11 @@ /obj/effect/decal/cleanable/blood/gibs name = "gibs" desc = "They look bloody and gruesome." - icon = 'icons/effects/blood.dmi' icon_state = "gibbl5" layer = LOW_OBJ_LAYER random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") mergeable_decal = FALSE - var/fleshcolor = "#FFFFFF" + var/fleshcolor /obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) . = ..() @@ -61,18 +60,21 @@ return /obj/effect/decal/cleanable/blood/gibs/update_icon() - var/image/giblets = new(base_icon, "[icon_state]_flesh", dir) - if(!fleshcolor || fleshcolor == "rainbow") - fleshcolor = "#[skintone2hex[random_skin_tone()]]" + var/generic_skin = random_skin_tone() + var/ethnicity = "#[skintone2hex(generic_skin)]" + + var/image/giblets = image(icon, "[icon_state]_flesh", dir) + if(!fleshcolor) + fleshcolor = ethnicity giblets.color = fleshcolor - var/icon/blood = new(base_icon,"[icon_state]",dir) - if(basecolor == "rainbow") basecolor = "#[skintone2hex[random_skin_tone()]]" - blood.Blend(basecolor,ICON_MULTIPLY) + for(var/datum/reagent/blood/B in reagents) + var/image/blood/goop = image(icon,"[icon_state]",dir) + goop.Blend(B.color,ICON_MULTIPLY) - icon = blood + icon = goop overlays.Cut() - overlays += giblets + add_overlay(giblets) /obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L) if(istype(L) && has_gravity(loc)) diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index e99a2fcbc6..bc62ae95c0 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -5,6 +5,8 @@ var/list/gibtypes = list() //typepaths of the gib decals to spawn var/list/gibamounts = list() //amount to spawn for each gib decal type we'll spawn. var/list/gibdirections = list() //of lists of possible directions to spread each gib decal type towards. + var/fleshcolor + var/bloodcolor /obj/effect/gibspawner/Initialize(mapload, datum/dna/MobDNA, list/datum/disease/diseases) . = ..() @@ -13,6 +15,9 @@ to_chat(world, "Gib list length mismatch!") return + if(fleshcolor) src.fleshcolor = fleshcolor + if(bloodcolor) src.bloodcolor = bloodcolor + var/obj/effect/decal/cleanable/blood/gibs/gib = null if(sparks) @@ -25,13 +30,24 @@ for(var/j = 1, j<= gibamounts[i], j++) var/gibType = gibtypes[i] gib = new gibType(loc, diseases) + if(iscarbon(loc)) var/mob/living/carbon/digester = loc digester.stomach_contents += gib if(MobDNA) + var/list/blood_dna = MobDNA.get_blood_dna_list() + gib.add_blood_DNA(blood_dna) - else if(istype(src, /obj/effect/gibspawner/generic)) // Probably a monkey + // Apply human species colouration to masks. + if(fleshcolor) + gib.fleshcolor = fleshcolor + if(bloodcolor) + gib.color = bloodcolor + + gib.update_icon() + + if(istype(src, /obj/effect/gibspawner/generic)) // Probably a monkey gib.add_blood_DNA(list("Non-human DNA" = "A+")) var/list/directions = gibdirections[i] if(isturf(loc)) @@ -72,7 +88,7 @@ /obj/effect/gibspawner/xeno - gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/up, /obj/effect/decal/cleanable/xenoblood/xgibs/down, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/body, /obj/effect/decal/cleanable/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/xenoblood/xgibs/core) + gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/gibs/up, /obj/effect/decal/cleanable/blood/xenoblood/gibs/down, /obj/effect/decal/cleanable/blood/xenoblood/gibs, /obj/effect/decal/cleanable/blood/xenoblood/gibs, /obj/effect/decal/cleanable/blood/xenoblood/gibs/body, /obj/effect/decal/cleanable/blood/xenoblood/gibs/limb, /obj/effect/decal/cleanable/blood/xenoblood/gibs/core) gibamounts = list(1,1,1,1,1,1,1) /obj/effect/gibspawner/xeno/Initialize() @@ -82,7 +98,7 @@ /obj/effect/gibspawner/xenobodypartless //only the gibs that don't look like actual full bodyparts (except torso). - gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/torso) + gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/gibs, /obj/effect/decal/cleanable/blood/xenoblood/gibs/core, /obj/effect/decal/cleanable/blood/xenoblood/gibs, /obj/effect/decal/cleanable/blood/xenoblood/gibs/core, /obj/effect/decal/cleanable/blood/xenoblood/gibs, /obj/effect/decal/cleanable/blood/xenoblood/gibs/torso) gibamounts = list(1, 1, 1, 1, 1, 1) @@ -92,7 +108,7 @@ . = ..() /obj/effect/gibspawner/larva - gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body) + gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/gibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/gibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/gibs/larva/body, /obj/effect/decal/cleanable/blood/xenoblood/gibs/larva/body) gibamounts = list(1, 1, 1, 1) /obj/effect/gibspawner/larva/Initialize() @@ -101,7 +117,7 @@ . = ..() /obj/effect/gibspawner/larvabodypartless - gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva) + gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/gibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/gibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/gibs/larva) gibamounts = list(1, 1, 1) /obj/effect/gibspawner/larvabodypartless/Initialize() diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 325683df6e..e62e9160aa 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -190,6 +190,7 @@ if(!suiciding) blood_data["cloneable"] = 1 blood_data["blood_type"] = copytext(dna.blood_type,1,0) + blood_data["bloodcolor"] = blood_id.color blood_data["gender"] = gender blood_data["real_name"] = real_name blood_data["features"] = dna.features @@ -289,7 +290,7 @@ /mob/living/carbon/alien/add_splatter_floor(turf/T, small_drip) if(!T) T = get_turf(src) - var/obj/effect/decal/cleanable/xenoblood/B = locate() in T.contents + var/obj/effect/decal/cleanable/blood/xenoblood/B = locate() in T.contents if(!B) B = new(T) B.add_blood_DNA(list("UNKNOWN DNA" = "X*")) diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index 2a5fdeaa33..3fec41ad58 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -144,7 +144,7 @@ playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1) //Makes the mob have the color of the blood pool it came out of var/newcolor = rgb(149, 10, 10) - if(istype(B, /obj/effect/decal/cleanable/xenoblood)) + if(istype(B, /obj/effect/decal/cleanable/blood/xenoblood)) newcolor = rgb(43, 186, 0) add_atom_colour(newcolor, TEMPORARY_COLOUR_PRIORITY) // but only for a few seconds diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 10fddfcb20..5ebfaf663b 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -20,7 +20,7 @@ var/heat_protection = 0.5 var/leaping = 0 - gib_type = /obj/effect/decal/cleanable/xenoblood/xgibs + gib_type = /obj/effect/decal/cleanable/blood/xenoblood/gibs unique_name = 1 var/static/regex/alien_name_regex = new("alien (larva|sentinel|drone|hunter|praetorian|queen)( \\(\\d+\\))?") diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index bc8dd0c3ab..d576ebddbf 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -155,7 +155,7 @@ else shuffle = TRUE //Shuffle the list the next time we scan so we dont both go the same way. path = list() - + if(!path || path.len == 0) //No path, need a new one //Try to produce a path to the target, and ignore airlocks to which it has access. path = get_path_to(src, target.loc, /turf/proc/Distance_cardinal, 0, 30, id=access_card) @@ -191,7 +191,7 @@ ) if(blood) - target_types += /obj/effect/decal/cleanable/xenoblood + target_types += /obj/effect/decal/cleanable/blood/xenoblood target_types += /obj/effect/decal/cleanable/blood target_types += /obj/effect/decal/cleanable/trail_holder diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm index c2d0a214b4..c4ef1253f7 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm @@ -39,7 +39,7 @@ animal_species = /mob/living/simple_animal/hostile/asteroid/gutlunch childtype = list(/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck = 45, /mob/living/simple_animal/hostile/asteroid/gutlunch/guthen = 55) - wanted_objects = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/gibs/) + wanted_objects = list(/obj/effect/decal/cleanable/blood/xenoblood/gibs, /obj/effect/decal/cleanable/blood/gibs/) var/obj/item/udder/gutlunch/udder = null /mob/living/simple_animal/hostile/asteroid/gutlunch/Initialize() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index a4a0bed102..ec7cd265f1 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1,8 +1,8 @@ /datum/reagent/blood - data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_color"=color, "blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"bloodcolor"= BLOOD_COLOR_HUMAN, "blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Blood" id = "blood" - color = "#C80000" // rgb: 200, 0, 0 + color = BLOOD_COLOR_HUMAN // rgb: 200, 0, 0 metabolization_rate = 5 //fast rate so it disappears fast. taste_description = "iron" taste_mult = 1.3 @@ -87,13 +87,19 @@ B = new(T) if(data["blood_DNA"]) B.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) + B.color = data["bloodcolor"] /datum/reagent/blood/synthetics - data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_color"=color, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"bloodcolor"=BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Synthetic Blood" id = "syntheticblood" - color = "#0b0730" // rgb: 11, 7, 48 + color = BLOOD_COLOR_SYNTHETIC // rgb: 11, 7, 48 +/datum/reagent/blood/xenomorph + data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"bloodcolor"=BLOOD_COLOR_XENO, "blood_type"="X*","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + name = "Xenomorph Blood" + id = "xenoblood" + color = BLOOD_COLOR_XENO // greenish yellow ooze /datum/reagent/liquidgibs name = "Liquid gibs" From 33c41e80c0a11dce89a7d849bf11b72d8cbb6f5a Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sat, 13 Apr 2019 04:33:40 -0500 Subject: [PATCH 003/469] pretty sure I'm onto it --- .../effects/decals/cleanable/humans.dm | 23 ++++++++++++------ icons/effects/blood.dmi | Bin 110085 -> 108909 bytes 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 2c4575f247..4352baa7ca 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -5,8 +5,9 @@ icon_state = "floor1" random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7") blood_state = BLOOD_STATE_HUMAN - color = BLOOD_COLOR_HUMAN + var/basecolor = BLOOD_COLOR_HUMAN bloodiness = BLOOD_AMOUNT_PER_DECAL + var/drytime /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) C.add_blood_DNA(return_blood_DNA()) @@ -15,6 +16,10 @@ C.bloodiness += bloodiness return ..() +/obj/effect/decal/cleanable/blood/update_icon() + if(basecolor == "rainbow") basecolor = "#[get_random_colour(1)]" + color = basecolor + /obj/effect/decal/cleanable/blood/old name = "dried blood" desc = "Looks like it's been here a while. Eew." @@ -33,12 +38,13 @@ desc = "They look like tracks left by wheels." random_icon_states = null -/obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose +/obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose so that it shows up even on regular splatters name = "blood" - icon_state = "ltrails_1" + icon_state = "trails_1" desc = "Your instincts say you shouldn't be following these." random_icon_states = null var/list/existing_dirs = list() + var/basecolor = BLOOD_COLOR_HUMAN //We'll still need to make sure we're colored at least. /obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in() return TRUE @@ -68,13 +74,13 @@ fleshcolor = ethnicity giblets.color = fleshcolor - for(var/datum/reagent/blood/B in reagents) - var/image/blood/goop = image(icon,"[icon_state]",dir) - goop.Blend(B.color,ICON_MULTIPLY) + var/icon/blood = new(base_icon,"[icon_state]",dir) + if(basecolor == "rainbow") basecolor = "#[random_short_color()]" + blood.Blend(basecolor,ICON_MULTIPLY) - icon = goop + icon = blood overlays.Cut() - add_overlay(giblets) + overlays += giblets /obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L) if(istype(L) && has_gravity(loc)) @@ -154,6 +160,7 @@ var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes if(S && S.bloody_shoes[blood_state]) + S.blood_color = basecolor S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(entered_dirs & H.dir)) diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index 49000e246e5034b4e946ae7ae13757c26c040aee..5ed0c244a6f58825d4b00a1103560dd8dd03ca0a 100644 GIT binary patch literal 108909 zcmaI71z1#F+cvyumF^J`P!SN2PC*8g5=jXW3F(mT9uNU(5do#+rlm_7r38cl2PKA* za7gK9X1?Y9KF|NZ|M4BiKLH&&h)>$wX^ZWz$to?JVYozis` z_SiJ--u=G$XIr?pi}r!+M))u+Lxt>Z*mr*WI;+?u3Hp~CKeL1GxfaJnw5$S+iz{1hOkDTNbeR0{8-s34 zNZ9NGh5ny~Z!crW>>7Eao^1&bO!#e-4Q`aCOW!++MiqScbnWYwcjfLk+SdjD_fz~5 z-`Kgt-ti!ipcxh$(P2bmS8!j#e6A2aK}5b zfQ+p@YV@apQJL`*i)cqv@1&xQx{Q3F6$2?3rpzdpS^p}w$; z@Q7e`>!bU>|GXxdjIdWqVu^p=eaUC7Xp@jTsNA*kDwLdzfJ`N<@SqWY`d=BSCJp($KHOgmtOH#U<}U}zUAB5YC>;| z{qk%7I1LtdWM;39yd_xh6%ssq_xk`dZd$N=uX!QXyDNErwHZ$kB3^$GeE;(&2;zhuDklR94ead+gK`q5W; zXMdY+s&3mU;?zfz5elJi++;3u@z7jqenXyVqQ?2=-V7nz{Yi5VIzmj7!X^I@E*efL z!mw9PbYBI-sx9iC_6@~7`EI=4V4Wx~YnIsW@-Vn`p5uG@?PIk@t_{oWag6`Pq)X{} zaBEA;2HLgVpjR66MvaRuTIoiTT4coclVQj{p5y25RtkknU0k6sjNGRo_o;iwGXtQ`pou9_cN*sP`60s({^@xk^A)J$d1$qvhP(p~wlX)alr~yO* zQA0+qP7@Ft*#dMT1;GgyeDTZLxSkhQ`%dO^X=+?=uh-SrAIQe!w@o!}U3~xkou8YV zo85~ILozfpgcs*J-_~JRiEnhq&w^vg;Mm+B>5)C~coAjMd9Bw{6u}Icg6ciO^|t-2?PbV?Xvb{c zogLbN2e=!8JyB7X&%p<9(Vg-_vMli(JZx0(U~lh3y=)BjlGWyiW|Kdiq)zzx8%baL z37nJ*#*mTSzZ!o0_#xz%Ej0w=U-4+3XZr^`Yh-HLemiYwR?1!$oYDaXWRN zA zt-lJ@r6-uyiLCut48%@&^7ZKGh#m+x+Y)`m6q->mwu z;vx!_>hm2AYX!emJ5z2pVXqT-G1ur!sxUt{Codx+;vVjd&gl&W0{JKB7|(d~$5pFm zWo6kv#hu@Z9H~}rgmA3C{EpNkXsh@ku2s2#qYW*9igcLMNv+~q4z-D3M8ady;lS`b zXkPbPnvZ#7ecAd?mH1KuWI~yZQ@yD%7xT~zTy1x%8gF1afgf~d<4;j9gxb1lKR(Lb z=L_8t?y>7mOue7zSy}wJbU)nw)!*5d>aWXTOt$-YqW>}P0gE%8=x6KqcLkTF43!la zIzy^tU0i@OB{PD9xszpD>g&Zr&JNaI5VUzYIIJNb6@E`9b?f1w4N{L6bVXTD;Lh(Ip;=%okKJh44|HBRbnJ@g7!Jiifqb-T}+hwMw^j z^z_`<7lzH;4L&=Vm6~zumKE2OWr|m+P~+PBbbYE*5JnMDtes=l`74qYr-7=cAG05i zSGsZYk%Oq_eiZaPBm`$p<{azvMl;&l=zWoYy*^*?O&A5P3RSHAf}WmUXhPiiHcNa! zlG^gM?w#v&(HH*WEDaKx!IEHbK&k$jJ4*Z+$rZAZkUt1_cAed=S&|)f zX#2rEyL~c9?s5gm29>_SN?BRQsP}A!3pP{?Om%%jLjxmK zl&cs;_iW%Xt}Z7q$)MbTiGs8M+9YQd)K9o3%Y9U;3VkDxCRlj6B<-MyDl19!gU6n| zd$gs)0%wDK*`i*glR|E$Pjn4_JlL3d{4nhuFa@9rRd#h##XwVBM* z-O>A?5lN)Lo$UW87Fl@GcI9>dQbyt9HH2;56wmvj53r&Wr^$J~6!kDC$@26fnd`k6 zx3AWsom30=^K>Rf2ocWCTla-wa(3yz(?}iW#fR}cFbcuSii&HDP0Uv!^dOu-@_+{L zg56PY$2x2pnRB4fv#p>Fsrb)s?=v$qkK}}&mFnX>U_R06g@h>a28(GnhAS93!UblX z9F{fXZsChBqeMCm7q3|Gu8<$YR@xTBuM%p@Gm&wgG7iI%mhFEYmp+3ynPRar&irXZ zRWB}PF63EO}%lwOxNzXSnk zZWnKX=a0Lmv1D7_igs^o+};dIu_xl^?Zxj}z*O9oj<)pqR#+lyM6R4aVV!b1y7~F} zn~j!`sErm+AX*71Q^xZ*6>{HkV`Ia{bOLV7m-6T8E9~Ra13uu8e1e0qw8;IF4`O!r zq37wpJxwP}C%m!IpP%pi1`f58%z^^~p(2@J<{2-83sX~7MMXP5jG{;r1$?g)eUU?m zJoq&6^XJ?x7uORn*Y5tXx9Wv$Mgm1j1!GaryU5wY*-`snk4wehW+Fqr$RRVV;_ii> z5$|r3?2v3`K91HQ=z)T+c+;LeE79(?Mll2T83@d4wTXZ;<}5Q;ar|bnq#*KYz`}sF zC_mT;vG`7o_c=LmlJQ<12pEJc3*lLps6=)<=Cj6w+)GA{c5jR0~i{wwrXD z`|e^dSagfNU|J$jFY+(G^L9^v##z9sBsKR*A}xZN%|q&Ux4h%w7|WW;3^IpD)&8=f zHo0a;-PI4R>!u1a_sQdGtTOj=?Basod4>>lkzp_xgw6YoxOA1L6b%$$e>ezFY-%p_ zO2^N#W!1Uv)z;U08KUZ?R$D?gzZX72T#Z)xS^i@^4J=MWoCO=w?~WVtp7r2mIOEYo z$v-XCmj|Y3emvCSkgkpLZeNxjacnTo0=7RcK0G@!lL=x)3C_2}wg^s|OAOwo6Z|PLq`9`RzNV2(nf;F-SZ+v4O8$`#xj0#Z+Qfj> zHsmx$1JP?j+X2f-s_dEX-+!_J$RRJ8M;liTew~zN+Ew+Q zVLq%px(O}X!|#2^5CmQB>V`TX|5NZO#jH2j10fHH# z{OmvwYV-7mM{`hS2QU*CF^Z)hln63;5pMye)`IJV+w?uFUG|fow5w&sSzd1FK_TIu zIMKeztjv8(uKZHBZ{*sL;&UaNooi6eN+!J6;@svz_3h>>BAWXc4b%lcu!E0f>;C=j zS}Hea8M_bw&rwHp|3a9XnqoQwc`WCdj8?V2Wq7ow7;cCUY3<5uD67AI;2+#YwoL_|9TL< zT~gLk)6o%9mCrjd)o5yJY^<)Op&<-Z;lYG=uX|=I!Mihil=c94$J&Uqvb218=gys5 z&ge?M7?0Vrv$OWHGM5FuASMn&28fy9V;*~wTv$LzF$d+L%UNuRZvi~?tVDaloeli@ zRfyw<_?B#0nLNs!O=P`KmpO}BhqqNnuWK+`MdszGZ}6}}V?O%w${Y<-qBs)H-FhJtB1 z6ymJ~+eD*CGMZOb-8mi#gl+Rj7e=Xv6n~|RL2c!`68+90xDXDN89DVWkXJ(z3+syn z(Etm^PhJ{aNQkWXdjJG4gwrL-TTgh9dIpE#b#--!g_b`_0NpmVR-P008F>R8RfZB? zq&F7vs?&9$lLwYxRc;8C7?x{KPfrIRO7*9o$UfmqF$1C3JI}Zxd(<0C1_o6@)r`tl z&$G8rv&jgE0R+z0=Ve%|+)%NzvzuRP`7^n>xtV5QfTbRP!m~+UR%YhGMwX=Zil{n& zY&F77+QiJ%^xlg9Tr$k+qha~1d8z)~PoazuzLY_%KG4 zMD0NdPT(XzC#P@TY<8ADK9V`Zw%Qb5I{v|rzCOkiJs@zmUgqy0qX5* zL=d{gmz8N%7`BpkZRjwUFu(l#-0#JU@{NY1V}ALEer5>lVO&UGe}5otjxfbiFyxYt zXC=gpIY|ckS}D8*d5^1IoT;0sZ%oG%fPZwse+|d(?P-RHl(MoM?ZU@)0z>Ii6x|Y< zVqVK%X_>nuK#Vn-wBtQ}|H>i#JYbSt|JjXrlkQ|F`wQ%xe>`HM3A&IBO#`^Fpmhrm zv$3}sl|C9`ZR{Yqjk`tkk8#Cs(+MngcXzjn=x|EK%M=bW=mC8`?>nJ(Pg5lZWOATt z+QfcWBB*bYRYEgRwZRx09z3lLOl<_#N(wFRo~S}>OPT!wL&gxzqr%5B{q6}MuIULd z$&x`!OH1w(-W9+Yng~2f^&J~b1hqx`vH@)BDB)H20alw1v>?02S$3=CPd6ojeD&u~ zAZxw4iI6(-hY^q=u z+cG($(EcL3Kv3O#oQ%OhheOS}phNvTT_|BFT-mfb7&^QqC3ZaHiM%N_ALOZOO3TmB z&jtyawv02x)mP~0s?Qe(pV4aG0{$Q6CVk;O&J&LP+^3KOcfQCLp|Hv=KoaDd2;yJc zJdFm2eW9NOAW4gb@*^!w*y^!90zyLbGE!2n6SALws3P1 z7{O@K4H;hXJLz=Lput?UF?#3uQ*;gKM&<1n1(u*2vzyZu6qXYL1u&t)4uH+rW9Q- zbdZ#$B-NCmvqAgAftA@x-@bhl)(v_rUdKxCus=6g?Uhdp-USAt%1~{G?bB3xs;DOb z(DQ?^==k9M+;?i$Ydhi~r6A^Hi0zdG7%S2OW-@WO5oO(Z3nZlnR%5AO!RF;ihQOua zaOC6C@w--=QP2hU2d{isfWF^*o6+jsncbWj^dppWr-HFhH4F^F)c+7>6IJ(_mF{9p}UH)+9+{t7Z(@Xm!EU}L9Pt2 zQS`aE=DDFb%N^w#Nf_$yjer*O4*?$?(vK?s9t8>LJz5IVVep7^Nau-KiL%C@^ybC3 zxW(lPiX-T{(g@nFg)T~KksO98nJWd?U${fA#Lqhby~L(^&-l!8e1EACnq+0o($-VG zzq>hAXA&2beJ?PzX>iTSH}0=LZ%%{}Y(>%h@W!fi3*)}jerytN>Dzv>d~2?Lq9fRH zN?emEwl~%O0f4k-a_k&mFFdn^tqBs`q=SY^T7D6`Yr ze-j015c2O=^$a<0b%o{ST>u*2APiIBO&j{*Wr`S?oSZz)f+KK6`g}i*6?1L?(_OhZ z-PgXx%8CLmB4=ntk|?apNSwu>zrP#u9Qfhd+F{s**GcEF(c%EiU!DyK(SOe&98b zEH{^AbdXKrn#p-0LMyq^y_UYOx_{Z7OUiav-}x?W2MvcQcGE2=1cw@U3cp<)%KZSg zz;fw$`?PUhMu3BgubY?X>Bw8%FR%>s%uEpQ`?K47C?uPe@GUIE$XDk~H>Ce4>ja!%{-#Zfte{=G8%FM_-sb zMg#HZ^PLebUxO}n2^GxU5&ELboRa~dzC^e1iR}F8NW#rTJ7o3>&?cZk7a*Ou7CUN~ z^jKtXs`$^zxzZRgH*=9?ncK){{9l3qlI4!zkY0>=+Rd;)nHo%ZQmwIZD@lz?B-Q2) z31L_#CKGQf&SFYNLmAawRcctCNYx$EU`z=%(wx}MRGj77QYPM?lg6khf19G1Z>|lRiU!Thq7$@A$3^1VVt-z!7 z0&jg=S+_Q>hNov~7lHD=HzI>~lV%GU6b`x+)vf(I69K%9jvPC@9~R3SV+nX$S8!Tb zWdIqJYSSF1(6yL}0F>`th&%Fj7eTIZg**$`QljTKz;~JZu4IG+L$x3C1fy?H!MPN! zu6wfj+#KQSPq;>&FYn7s-!f$Y(RK?n)YIf7EY%M)W`6i!!LY_f+gw}wr8U}k6;u5yz~pETBaBU; zL~+S^jQ`vK*z7!u6P;515afQ_(x;gv{Riz?lz_-*rkDyOE}DiU$EYhQ;$8R_Ov~kkZ&T`IVVgpG5=$hrYN8l`c2dx#AASX8ag`I z$HlkYp^%1}(-pw}Q*WWag?NJ5F+zziF7PaxD5jqi6Nyv~w?1*MzfAi*-3C^jmni2t z*;ci??buzsP>p@FNxjk&O%LEU)k2jn^Lr^GnCgZ-FOi#2s2$`-wN9u{Bpis+lp=9^ znu`++g+B=XzG}DRkSq72Fg0p!Y{mjK0((Do5(k-a3jei3*w$Kpamma!}RH z5o7x#&=sZL{d*?A0o{u`_nu+Ga%C7rkCB8HNu_)AnZ@T}{!6AH5ZN;Q+QFy|&@h?2e4 zN*@0av&Vy|8!?tOMtKpg9-IlFC`56oTUZbTNZeazwCjiLY+T%qZkP9L0Wj}A&Mj>% ztq!F3>}3dky*$~Lvw}wbcN$mqoq=cTM zkDf3pm$Kgr7-wnZc#F-0Aghlr1EkMil#uu25bbb{@5?CvA#=OAe#46~H2REXcb;@d z9+Em&X?qsG{n%qiE;JAdqB^{txoN0%+KLXOjX#g~X)H(?ZB5U2@6OySc}7+13M|G= z59D<%mGdMEbNBOh`s+<64%3~{8xi*{a+7NS+4sx|&5rWMeyrY-gmS)nV}-~gzSJmA zlZArdjzKqK*Voq8s;*?9N#ByHp?)7696VvY5oDkI>(N>GCkBjJNr_OCKkcEv0)q9+ zxNO2wkTFV}tgC!_6G7}vaDHdPd%m=6-8bOK_}}8%fX;1(EA!;fsk-Wli;K5@|MQM+KqrY% z|39aQ>Icx}_FB3dmCOIPQpj%Qbw|Ooc_z5Lyj+U%3m~cfXZBV(l_Vwkywoq!C0)~h zvy%RL^WU0bjb=Ye7$j;-85tQAAR$u^M&bQIQ6;w55{>owU$a}fWG}~#;7U=?!enk# z$fqsp{bw5AFW=Kv0#~KJ8oApme}3~nYw(Xl?Tc%q7q!>tB>Z=Jl~e&txzS3CnDe#Q zO5ZORIW$sCWfYy3Kd7Gl9tqe!aeMT?OO{K01C~!k2@v-LfrdAF{28T0%-f3l2_IH-dz>-6} zOtBn3Y?vl5)6PEk%qocYL(%C?Y^^icH0Tq`JrnWMd)A!|a~#{dNKK?5nbH1G_g&P) z#037K!H-yo@6n@210hpK^c18*Yb`iNl(;Kx6LV~DQ&m+J{Nu*iYfO z?rtsmfDxc>#Sa*}@43N$%g6)2RR7Me7fc*1vC7L7UtLy)xz;ZOG(;c5GsdgH+uGVL z<^c6&z9YA-8CO$bTwx1vT~p-!Jdgzj41{cfOe8r^hxZAHSFMKSSQaa%+5I-wCr_Td z0EOLtz^*tzpVheX?&cCcjdSLp&X!?Cp#bVmzbYy!I4TXxrPf<;-vAxv z0wsZGN=+0yMa2E-zP^Ow=eqyx1yFemCNA!JRSQWzy=uiy$7er%gUaw{(p3>@PE@3 z3Ia^$z&rK>jk^pn3!0qVffh2gp-DjAG!Z~noAJO;6c|_FKFd3iNoby{_Dwqf8-B?- zM`U=={RCa^nSdO`)5P}vAqoXq#HWpxV}tS^UPzv~NU)SwB9ef}iy${gS;ZZ{f0g?%HaS;Um?HKsC6i>`Zd#WdHu(Y%kL-8F4m`bv%R_0lmnHT&h z@f<+aO#mTxXJf9B6BBBSP%L@=#TbBE;O={$u3k6?rw9aI=}xAnFQ|q2k~!G9yC-qT zcr24AEX{<>dQSv9ziB)hctCycKtmHX7X->2%<$c4ZELLD5%19QXEKh9@g?@-Pfw^& zwoM0hK~z>))*}fP>#K~hy)(_8nER>;Z2sDuG^2oY?`}T=)c6yCxe(uhhmmt%?BS=6 zR@$qcc3nax10>TFy!}qc;bE1}(RswLT zuHK#+R|!(sSipsELHI@gxkL#Z{t9H2nnJLn$#NBb30U?WNPe`M1XLACp=`|TmFGUN zMU?ok?>P>^1OXc{;i8j~us>G#+eFb2G%~p_VY~Y+Y9kkQ4coE96gU#5I4gW zWheC9x-|#7u_=KAj{C6GpEwV=^Y*Bz5Y`-S?M&&si2Hd~jn1mZL30z#bL|PvXdfU2Or3o@>XWcz4Qe?vmrw$0O*`0o^oy$;61tjTtRZUF| z>(Z`Ye^UG7(w?TKrfqHRhA2nQHMQ{?GnkI zq|FH6nSltkiD_)(vY6pkals!Smj>DEEYd^Z`f!lKG4xF~$fMn%e){Mh{0sC^2AK^9 z1oq3ad@H>u>j}fk38yp2R6R^k_4^g_FE9oF;;$QjgBtm9>d?xQimIx=p3i$X+)qxP zfD_a-vf;c-5%+&FLFAyy-|zS!z37^$x%mX3;mSe(3GX>HO0xif1)RslE)HuA9%#zR6+sv z@r4vX^VFaFd2iHLbsv9M`?bdALM>&pND|fo<9Qv z0}X(!#ej08321#Nuz8AT29t_ZoF)nF?Nw&KM4WwP;k^6Tj%R9W>L(rCe?$~`qu2tp zx%~TyBBhab)a!0=gs5|a<_&*=8ylT}g%?oBvDItg;;Dg}K^->|dRbV6dDjjjEd;CE z{RDC{ta-?4aORqa+m3f9!e0v@qI1IadH%F)RHk;+qvy0s*pB!TwWed+CpTbOXQEdq zx+nK9&a;VHs;j&9PA|f4Q=r6~{oIc{^O%^JjARY)Mt8Ga7EMH-JO6(D>RpgeX!Y` zTWhIacZZK-ZoH)?TMOALGTWRcnXlYA;u{A@D>Xu7Gvlkcrdfqy1~X5V*1py}@AUPu zGXSxE`<@>*q8=7*ymJ`}96vhO6q?9^8DKeVuxQF%3)!z5>fSVyc%q=m*B$h@a|ay^ zs%mL)Z#!Nw4ORUI4qx+1Z=z#pHc8+~e%M%B`+aX8J6X_~JYYR!$1+uf@BZc1`K{@o z;Kxx)3S%Yj){<|LgGaaUWJvZ9Ko;MG;~EvoARPu0P=shzQH;_xzY;+x#1zYBkC-*C z+2G{j>ybZ^5?{6S&yIR7{Mxu8^11M({!%2>_|~Zxzj4pDPhHh(hjbH^I1uTzl&X~N zEvEy=bI!?mYHS;hEDx8MkBeVFQOeUH%?&a#GI|bn0o_P>76@CJO#sVvK}!NY)YvRm@m;i^2HxA;%c@2h|1mwO?;FxUbIAK;X0*U|eqpxByiOOj`g(;ZyPL_(l$LyMz-k2^5pqylQ69 z7XnmOZ(J}*4Kx$H(clL8?<*hSKDFDo}HwBWLj+U0Am)}K79(^>fcp>qx0pOiV1U2Y{>AGj&>&3pRIeWW{56 zl|5Q#4DOx-gq})ku{-UZOuB-10m>ee-?iUnD`QjlbOaV&Rz_3sg-b4QE3&vn>;Ahz z*$*0`1_qyD4gpCu1&bcS7|PeLr=x{{*BJ4yt#m;E*zUgRL@$$qWhL0<3K6#f2# zdq^Tokh#$E!N)^iXJ3yFoT$^`%n<_4MrH2q0=$D>hLnUv@2d2{1>?RVI%O#2>xzf0 zSwN4+E%Tp0e@g2hq8WxVjv55YUA^mcc-;&PbW8Qqw={+Nn{N>E`7A}p%Li)>W?unj zC3!r1=j{7%bnLt-@Dvq2WI9y>Ezno(vnROpWN*HE)pmhLGQ5Tu;1{g0)>BeVXLN#5&vuwZNmgZAcXAaobA^g%I z2h0>~o88DMqbn-zN9WJMPP4hTwXlb##my#_r*EDxkO03MCqfErd2dhD9L#0$QK(<0 zi?i>dl=3Zo17{yykT6^er&GIF_K?vU`((y}vutjZg||?jjdgw9n;)ni%7OjBVpIj5 z#V8SO738EB0R{u~U|el%ZwC(6=O0&ZB4yfV&aS?uN*75l?i#jkD2*BJPJ-XR`nu$Y z<5$f7Oyia<@nc;E;CcJqpFjPn@K_X>Z=FE7LsX?IFvdpbn>k2NM+`6_U!|<%0j>;C zEeMRC-X`sX@lIZ!^94Cax#G7wtqWLGJ1Db?d;aQ)xn$z<&l)M$SqhO|IyVwn2aPym z?UMARi2J}Pd=sVsh%j9y^netEf0#k47ESO`EH|Dt!Y>Rox%he!q2_Thqqk%7#a&(K z!WIul#VL8Tv#sq$G99kmY7qo1UR!H>QhIU*Tj^o`~6RW4ErvSs1t=07p zSy}Ct2fHD;q$zVdV9JlUljD?Vl&_ggkX*iA#$(wH+||=68KW(h5)gH5xn7yMz^v4` zlb;-L-w_g$DtO&Wxw!TYgz#r8>`bxBa}Qs^(}ukDnQAYdiGAFgkGGgX+&Ea=@HZ19 ziOsI5s03&qROCK;n?l}-%$JDMz0022ziM?z53;o_^3Q%ptv>(am{1A10enLO>ASNC zp2NxyMFT>nEyN=-B|}-+b-<&1YjoyH9tbPS*Kz#dj2=ExMTzUA$zj+)F7sbfdCnSKwwJ=A(yDRZz6}YY6{1Ru2r=a?rI`1qYF=BSa>zn8_nwZZ! zOm@fWqraw_-{^xU^{O&PSjSw<@89n&V8dzII=uA-7KRKYK_DS6YX~yiVcyPT@{`J!Rl6cVOp6N+7;hkaA+Su54 zd%h)^K&^`%C9GQ+`+ljet?e6Fkk4|)Nvoo7L2{{c54pN)8u2|pU@bTCUqdPk(Rq7y zQv%e)gy(};hWP+l8LD`Se-vfgwc;0qP(B#mkWS+YN!7}L?53)H_Cjp92UgVpudHH# zzZ9@^h-SLk5v}x6Hvqt1`_v@AIF~)wHAPu5v2L}K*ZHqOzBZTQeE z@6eVfFB({+F**i}KO7rAJla4G{L^N^7b|8rvIF`lB|RBhozHt)Fvz+CZORomm8no! z_pBL_$d)4r$UtRHCn7+cmMlzWJI87aj1P1yhdZRtG&=Lfd}pIshDVtN*{gz(2awgS zUz`6mFH_ee9iO|GN}Y+{wTNYyJDFSnk%GCoppO#Pd;xQrK0mvqY1edxSMuPWT>5C@ zf+nHqv>vk4%O*@5YhJ;NCc9hZPkNHl(u=~1&S>X3c^~s+OI@zUPLug$bLb#9_S1xJ zbs~p{MfzX@Lyo5^b3++B!do2wY`|mAw(S@Wk%;)OjqqCKX0@)B$oFQp1_oOW2e)Zic<Y|yku--#BF92V{ z>*nQTfgrMH?*D!#3EG^8`(CxYv~MI9aZG+e@qDd_!gx!_=k)Qx3y`#dPI3Ms#ohDv z96JSmJodDGITluv$1$kA*=Kt<*#9?~$QQ+aVjsyP;C`a@h}=hHW8~`}q~h&|5busT zG;6hFvKgKh{F(K68MF6tZ6$O)uB=S+mkPnl+4V5kEk?4RI*AD&ybu!(+f~hTh`i)4 zdhHc}vz&^hRpRsQ+|E)`j0QKY45>?JXi?e>>QwiT`-Tx?!+t!IFpl58oHLYp7w9T^m%8*jJopw|%5$7Pn zdteS=zs=M0^_R39D)qzg1*KQ)&_UOh1o8Iv;-R*P(!=e=16akTmuEN|*Le?bC0?-% zUr>hF%3X6VIZt6B-j#XlL?NH2l5Uv4UQe6*l)@g7?k2}@MS|?>?Us9y92oRbO*+Rmk*Gm zKKw*U3*2n|YbU4k>Op4_7?&HOX{~L>dOSxh5tX{FB~`p;*!y0cHyBFD#~d44tlo@; zpi@mf75@6asBRGB<5;}UG`@8f{82@GKBmLcvN|9}Ui-=IDvtl5jGBAx;IU{1dSYj} zx>i;nxBBz0;mw5Z&RV}CQ}evnc-~>3Gsk}HDHityr`UokD8b(-s6@Pi=d%LsoOJ~% zva;{5HS1YVm-6YNw5&|__uE-=JfBpE2*G%PTch&>RK2a$jPpMY*DQmN)587C7IP`^ ztJ)ycvL8RDR{F*DJ15Dsj2Yai0oqpi&0Zaa3*g665&Y(n{&-q0xy$L(S0+!L@_p`q zODx{Aj8mLA{JngbMSNRr^f5NyA_?i1%n zDyaIIcmCV_4<4;Ivs;&A`|XcaG^uZjOwG9F@cjzOS77)>KhNoeR^eqJ#9YLzjIC0> zZ&5rFyWD};GcWu0F30}q&xC=+Fq}N3>Wp|df#)1YJQqLImOD0_NM?bh&qe0f9|+L4 zDk__|>?&renat$mdye<2qQyRF>?;nzTEA>#W8926t|`>X-997By&dvZ$oX~c1cfXzQtT(e1 zMS-(d@}E2IyD75)?8kvFxEGpY*GEeN(T%$W~5b$K#yA%$o#26rV6mly%q+F)F9TfXIL+!){GnOcE=P!3w2`O*6V zj~Ck!Z>Vl15=|y0j!{Nh2-gIH+a_pQO%%R7$y-i{@#nf=k^!U=l!9Q?$fkq>AaIXQNq zn`Jn<3Y!!_M;SQfe3%8Gr0GQO(UFhm+>{1)w}F8&@VGwIF|;g6W`Q^Cb1&Z;UCX97 z?hYqR+&`yXuuSoNemGtLctoVh~I+sVR)TyP4ItH7c>HIyVM_bo~Z=^Q<$21Ng#aS!L_cq5Us}vc-!8 zqu-|J3Y0Au1BzD`s>r>ZZ=cBng6HP79z;mHQt*Y&15O_dT}9EtuF$K|a?|@J4$1<0 zF@(Ba8TsaMB2LcEikoE{Kd7JL3hp41bY~FDt(}3*KYT;8h-RvNmGuk(p%IO z2|Vn@^yvB$NC!cxw@n{f)J1n)1l%u}F=mWz%ouwz;*ToE#%Qy=zEva*?q3wqMENXJ zB*O}ia?vHZypn6umJIKLK4fHAEt8#coqgvAd=T>$5_w5U(xKY)a3n8s+I#l5gzGKw z;-aGTjqlsaj|kNF-$$GJ)>BT({AzMY&)ggBVSPmxi=dsb^qWg$094-2D#pHt~y_flaik_OM zwX?FeUjL6}C-#siAK1h3Z8^(4myu>@8CpKj6Ke30cV|qH?h#Rkg&JFzTBf=8%GTD_Nc4mC`L$5RlX(v;zwYaSu7ltjH(uIi)(o65esj}lU(@7U zYp%o?w)}7$;FINe6&{~h-j1Fn*@U{Ad#ebe^Mbdn6_f67wwlm(unENYA^1yVk=wnl zqHCzjpx0yL1`A$nx~yMcK9V zXUQTy$`fLDKC9(xYxp`y^-hEoAVRE9sXH!Iz41wYgl@{df+-b#@_=N~{Pi#i9^i9I z@}gL$CqCiPms*3_T>DQamI{j>ImAS{k{_zrs7<`&o+?&+EN*iZ(>8TZmfOtKYV*`o zxf>7&bpqtgXQ73*e6g_CoEh)v?uT94t3jW-qSn0Xid}$r9NPvsQj3VZw6bB4vUtC+ zQ?{KNeMP6G+5VN-Ed-J5{@_=db^@K1Va)!MkCWduE$YuT=*140(65ON$$T}C!GuIqI$QikUK$uslZn~uLhQt71Q z0KLiyi4nS+3da_tbhi717oygFU(^ot%RPjsU!kVJ;0inr zG1$gOc{^#It?Zd*$c&Z-&_P=b8b(1682ZREx?S6nGd~Rz&k+-%rL8ShfaH=dO&E>6 zr~ILG$VB7zM&lN(-Ys6g`~8JswqDs>R1aT$&#eYo%uh{*chijStSkD-C-nm4VG6k) zeAjb+m!*Y1LMy5*%0=M_D2Xc+`L!NY&#%GnDz+)$+ENXPp0*4G=e=^>4N_AmM5U#L z7gT?8M$3NL5NGTKiYS(pUL^Q`i24tBs{i+Y96w}chENJoMzTsa2W4chvS-WQdyiy= z$|`##Bs2TqC`7zulW`mw*?Sz@@ACfqzqfz46wW!%=i~W!T#swquj{%$vKL)_V%}7V z*F51Nq=?cQ=OpqziPVCWf$^E4ES0EX98+_wgNpOj!V^mTg~8+iXNQ(pPGf_FSv5P2qs%eFyc=8d_^<0+;Ef0wuiH);*-t z$qi}EB3c_%#~i)A>%>MDp~yY`jvxbtkj76 zZiC%Q2M(chDGzICNp)o1>dho%XV5nam)ntJ+Q*ZCB<2sXwBqs5$&YKWs~&lL8+?qs zl6WHfe;`hH-f84%)T7hWyIFjyJ`(v8H=^iQ^ZkzZS$rBL?Qqf9aMMoxiEvZ5*2~Wq z0z;&s&O@SA5t)45VJ?-$;53x~>`4>l;i>K8*Xbnson~};WMicy6RWN?4VImcQI7-b zcSBp5r8G!4^8)#uvCFshPi0=6-Bb3=5+CKG?o$!CInPwL9+-Vs?HgpXoy2Iyy4;)O zf}&{kby~oVrC4AC6f|Cc514!%=|PAx%F9J_;}0!A+X-O8D7YTo5LU1bM7#N(P+6WQ z#cW?XmfG?Nhg9lLv6>q0=^$~Te`?)z_E-Mfh%pY3g>cRKb~x6SbL^HX&XXT^>$`A{4k{@OxH&SBU5 zh}_SljyGB)Vn=@6U(crkoHNbO>bWn7#(ED5fJ&aR&~TQ34>~5JU8cw}WJNq+>}OYJ zx4oONzK*5hnLYE66H>-@RuylC_U=a^g|;@z&UR)#TY0{*Fe%mg!}4<%*|8hgJF-^( z?5K=1tbMHRIuT3hPuJ!A_4Fnu^26uPdfOd$??ojaG?vIC$G$w7zvViE>3!9SL09D@lx%KQNgD>n^XCQQibNx88ySjx8xvSG{3&*tm9W= zyP6)|)FZ11Ug4*b+(0k{#=UP+HE`(=wVUH#M@BxYC6~k(zbz{sack=4ds){HS7p&< zq9k&;m-E%rEoCrht$on~+uL2}d-dFBEpBIzZic5fk!U*e8l;q^R@Ypm?x#v^tVli4 zI^w9S&nAgMU%IA{tMnr)an)n*k$&&#^cgYUmZD_%$>E=pJ7f0wE|+s1i#v6b0$-AU zIc{5jGkqGbRHAUmCS&cbFx5%8B>(!pWzl%z(}=Jz!eQlC)#Cx0-1O0YA5NJ+SBP2d zGu1r7Y1~efwF~LC6`vW}kH~wG-IwT~j5zA`!C;}z9mrYqs<${HIRXYP$xqiCL;=a8#cueW0+Ctq{fQAKsI^%>lu_l5!rNY7~6MFmDbw@vxi z@lSyreSEr#^IDC?@V63a+uba@L9itE>2YOV`o=Y6Qg-H3pA{+rsj z6EDKw)&e8`(4f7smo*(9%rv9sM%Eb5ebYBvEW78UEQV1&$kyC;Jfmo=t{!fXg?1O! z0m!_%AOP6EfV%N$S<5k(SvmEM$LE-y3gKEm{ zpVm~+6liK1+!cb=SYF{%C^`22O?T;2Pa&BXQo1s#X_elauC2!uvNlj2gcKM%(qOAI zTr>>2`ue+)E=`&%BY;qAb|b)oWIxID`9? z1)#`t6MhM4o){<5H;`9&Cv6O3Afoo|%7H5Q?!ViGx`XF}4%yQHR0iPo(Q%(=M^AvM z@0l3Pk0@h4V$=?XRYO#Q%)|x1#==_GHWBA5|E%ke@ zhv!MaYq2w|AmdJ=6P4^^^lfWd>;d4!12SiIPB3zf7=Rn!4C2E}@<@57Bf`;JQEhDb z3>1NGWtmWqr>5Tb~^|fu*!(2c8p zA)3OO=SJ_km8QgvzYJHWJN4$p^vXWTg(t|m4)MUArjge`ZC z187k0L2u*;P@@b$?Vw2gXiYAOmC#kpCi;(n4qb=yHG!XyQNPv>2`h<*#{APdZypZW z+$RYAemygO|Lc$qEM}GA>Q*GT^1x>+k^e15(kTPWSS1#SlPG29Yv$IMsE9%(ju#Xk z3PEH{7<=AcS;DIsrwU<;e$voHX(n3)^-FPTLgy+&dxv#ThGWy`O49@D4^Rz*>RJ9= znBZ!?qQ|1K-(Ehe%Y5hLtm}Y!-HoiMVc9D%N~C5AIKu)^$I^%?W;rEEs4afn8pq~5 zeV{Yzgq(g^({u7eX+nbz=_@aG(w;CEI2w+TW_fr}Qz7`@QR#IchETkU#!5uYs89+M z|2+ierxEzdhc7yNXfH4$4svMY?9E1`11Z@@ok!y!lOMi(=~l8}rMB`2*HM4LFV~8u zlD`agzzix^hHNeaP?*I9eX(k?|3oQ4yQWCfUnFz@EQbJJFGBk;lSsWU?X#_|t)HD8 zdF%{A=H4OcAbSIR3Rng74GgTM3r^nk1kBy2riqW85kg^teXioW>rl!0Jt=xzTQW}f zA%{ZQgql6v($uO{vlEZhktV>B4rbgxDzSkLjeilH5S6T0+6~=OJzF0k-U>Zk`!xP7kqSl1c_~n&IPf;h z*guBAXAkH&gwEyyej6p7Idz?}VglLbTs{Jsg$dIVbkUh|tFok4qE2s0J}v)qJ*Hqm z83;q3BK9)L%twK43{eXJrK53!S2136BsS5*m6uhUjSHiu{lc{d z7m(u9^=Yw~^p>`a_jvIvhrPpicapa|lb+4WA5_wckJ|7%`HMUH3D19&-|3=5G)+w) zMX7eC%!x|xA(W)CJujsZ|K`$OQVQHdO3sV*a5H|I8_L8xr6#!8__*pKYa^djlSb(S z27)TD3^)Gw>4?8_p=5Xx!PHTtE4{ZO+_OnvfYom#;c1N|hqj?|z&BNYd5c z(-Zepes2>RcHRtlSS(tqz1=oFJOvVuNhpT?P#Jwo`E0OwJ=>2L~bHmmeIVGT00}!4?2r8}tvJ$Axe@w}s8YJNfvhCnk(d(>Oed z_1LAMtUVvhyrGeitDq;8JM_|y)l^l@ky_G(epDqAne@sncb@s#P7kA!}5ru|h4o}qvRuSvpXpbKS@8*?p(DrTzWd9Hj85ov@=OV|JV>j%M=T zHHYz)l{?jTqn3lySE_v%#@waGq=IZ$FS;#Ff5ORR^?0vpf?4P~-yE{*p+)pn3dR9RZ1Z)8F(BriZl{p*;O=ZmZzyR&7 zO@sf~Z{IQ5Sx2UJuR-5fnM53fI);4z{vf=6?_NA=K`G+BrVCBzoXmwc z9pjIv-1&akaAWP=j0$+UP7@wlRc)4ClaSSM5b-YFy`6Wl{wTQU29bvae$}AjIvB&+ z_KyMIVD7!0lRV~)?8!?8oEs=<=KQD`gN(nH87-DYxtDHiJzfk}GFS`2C)v-;v1HAwahyM4{hBzTz@d)6+2xuurJ^ z_MmjR9q*WVIcb$(<4IwymWB1y&Ixpmepy>{XzA3Ft_(Oi)Ic^Kd~YtZyut zb8N~`O+2gk#s8RPsl1y{|C-vFN12dYaNl?~@1JWgnfG>JD#h}Gr;Y3w+IbaAKEh&w zOS|-h=+`rsb0Nuw2YOlmw zw|vk}e?uzpE$|Rf+gVpB?_m7Qk2Rccn9sQOE$Y(yaGRN*F$&3izcE}XnAdV|jn6-rHgjb8NDVWGb8qiSk=BWWKt=(rIx1wuc z+D&{KXUd6lgE7l;&qYb?l)jF(FwFOCkEd{ON73q@8)UA_3`o6@9s=F&4p;G{d}kNs zmQU+?2L?lwIMwl(Bu=WYO=g8IUEUF6QUu<1*MdTJq=wRR)9pQ;CvGV}j>2#)S>{Ho zv{63^F~RXS)}-3>7fSQD7F42ftJwcW%n|}AFLw%o!B}`@1 z`v)KQ27wgKbSCl;PAc-(f{fI=%w1ghfe30_vz(OwI^!1W;gl@SU?82z&p&eOukK4; zC#}mQ1Xgs+h*`D9PTDqL*U~$gfBNDDhhrrYC#o&A^W`OBfru`$CUX3dsqvU26xMxp zIk0-kS^CE0@VW`XTZY$U@iu?kB@){jwTFiDeKBs|AK&?@kx##w8^@aY;X_As%j|^^ zH^*xX0uC1gQ8iSj^zp&L zgq-TadF>U?^|oE$Kq&!IrtQw_*RMa`QI5u(=H})SwkLht*m5)4S>4GPc_1vBIHOyF znYY|qp3`$J@v#4|Cz5|K!((;IO}+nArSv3v^yl*K(xI#2=luMWv3cQ|&ZNA9WQD*p z*sqSB`skYeiZALd&r&`EyxB`Tpl6h{_A5sV=W)a^KFoEys%GNSk`IF%i#(hMdvyBr+>X}Z(5Fv*%fuI@jA!xsSNVtC zjlS}&^|@?48_i?<;vsOeCVni!^FTXw#C5RFf#vMZ>N-WY&j~3{DscY-En}0-w}4WH zd#snsbAh^3eZw7Es9(ute;p81PZ%OB^|aSX-kzAaR$%mw2(5dM1ZjkNhLe(b~O`g&UhiqgX*Mvh_-Gz;l$qYaoYux0uOuj>0Cw!4wmG- zQpY2a@m)?5ggK}5a*TC~ef_>FN4z6MPQYI5t&w-G`~93^o(CC%*DzPTbKvKV-?c1+ z;2}j_OYrlr6AW_zR*;mB9}B%-vt)ZfOS8+jLBw9J=OSLa)cxZd`oAt1#-Rq5r!rR+ z2)Cc^hI?>#@Vp35ofK&#-)b0*A(%I zbbAB>|6c?Sdc4o@fk}92JTb|@85Z%bwY9bLt@3(J=9rFyw(P!zp;!loi9G#&dlSTl z?3E!B0@Tya>z7P^Ej;sYOg3q6i{)gBim5N*>_3eb`f{>bFb~f?r&(IE4{Id|tFsBK zbJg#eU!CqPnM4=Pwzry6yL4GlrK<&|((t{>->!GsIz0Us;-ZP0D4p6L%sx}B%MdjA zia3}K59A9sWLfi=&i~jJ0*_*qw5&mmVEw4N27Tw8SM3$=CrDXH3BL`oMEMH>JG<(kR%xxVIwPe<-1crB~OBmyMu{A-$qe-71)sgyqLYKac(qdE~|?Yab=ajiEh~w&1zC6&_J>Ws;dt zzxrt@vhhi)T37j2$mdIw{HR6xWZM4Is&5IUNLef4)(f{uH` zNkUjjx;t+mj;`9jnv!OdA(W*ikhOZU_Iw@PC%{86V$IVS{l7QKVWx7n9qdyhdY^}o zXr8}|I^`V-Z>7qBpUv%xrU&!?{VwSaE@?8)+KJ|aZ#kE8a(^8OWdyPA`MZ;lo-<#{ zZ2tvI-Q=qy!H@-g{^&|jWX6YhL_cmH+Ek)r)DsS4v2LjLm+ zc4g*CrW~8zkxC7tQ6m4}sP8xer6NOvbdFyk>$K|?Hj@o_Ur3qXjm^S14m49Y6Y=e@ zh}H{+H^7meDLai7AM|gwIJs21Oiyn;i*p>>4ix{2HH$kWl-1W3jnt57&F?jT81$rh ze}5mi-abONrAgDIPIm4L_@!pxnvZf<_x*Kv;1*fTQzhOG0}e)!Pw zTkQH-BlKnRduyFRE9FT5`YaHl^Ud~AyC;nsKggsJK%dzN?g#^1v>G1E6F4)EgBi|; ze@B%3(bGyx;N8A`HRg%CYG5F;fj*l}rpp{coHXl{>j3M%gZ6JhL=lvOumMlnlMxe7 zOcT(7SHNupAnqhX07EY903d=*#ydU%5;7dz2mU+GOapeT5j+_BG_=_zB}1d%J{4Th z5nl;tsq4p!>%-(>KKw}$5I(Y>KMD)@Cyu%6fvaOxoc}bQ-hK4{Y60fw(F?dEG!ltK zQ#2bn1e~4o?5-jLfa@%ApCzAD8$h4BrEn_d6m0W<;K?nEOGsoA_mNIhP^`FakUmL%CDOO(b%&%c$%K>o*pxUDw`osL_^WHZ`&$x=hB9)&JrN3 zV}XW3AqffJ2jb~Xlk?jr=5XUxhd%<)SnLX}O`>}KJtzdr6d|9fvJ)OZzr7tLAbD_m zv@7)RQx+Rmbpov@7Ak=bUt`w;e+zX}rF=fX6S1RCi3fASiwN}>j#^nGjiEP#UQ9CO z!nZy1M+8BEUp!A>#^ZqL_Xq}mX3M@*ilE76lhz}d{RQYhA}AvxqhgJUot-^ntnCt> zVH#;>4^A;v*uEY~cM-#MF)YBH@CiQOCi586CK<<&{ z)&rlv0~f=xi2c}3C?tQ-cx7E-+h&WZmDSY&o)F^Tpvu9|8@^eGrWZzF%FTyfh#hCv z^&>qD1|tIZ_zs)`lfWg4P6JvWIo?Dl0>L8h-P=B=(|iO=Q;I^NauNRw4Gl|1%b&JK zBgD^J&0~SKpakyxTP;=C-vP8h%K0~?RaLvz2nkz9d|A$qs!doQ|FU-;078pE414X! zc;wUX^T~xmx4YCNui(*fO9mn{qqfkZo;h4 z?43Jz8vFq`0kO1&^%)%N@4uU(oWfbH5X>Ni#>IW>0in1dqhka2K;HjB4RAF~Utf7$ z#_lPHx<h%SS2ADNsyJvCf%6aZ&KUSC;P`~x)G z7oMI5@T+y+&~bheWS!CuMrh5^+FERL*vN6!5aq!ODGc>e!>Xlp#4rSh8dB$6C!$u2 zKR0)mN6x?w zfX~(f=yE#Pa1 zbQ8dUh1szao4=m*1DDZ2r9DhgRZUHxJM04VZ(wGwhDDIAxb;z0TEED1Sg3nghLsvx z9m3!LA2h2!9&p|$rp^)1a`Tch82#g{ni|}1o8=7fSwh{!PevyvO`ig7f)VI5G$e}Y z!8QocUG(<=4S(8|%+GQm=)Udn1W*P6Sx%reu=bz#(^oz3N|GKB5<%47hxdLPJCu-+ zKn4KGiAJ$e&6*M797rR;5B66sjB9|04o75xL171af%!!3m!QaxV0r_dgMv8YNLNSe z+MiIoa(S)%b>VJS3S;j>w(PHbzCf24RlimwE17i}rrP72ObIiGJ2C^if`b{z$MX}T zCeih8;SGm9B!Nesr(NjWmDJ8_G)Z9|AEB|{hdu*YRZP_GF`#NTG4*UzQ&pWHnOcYR zomgH18Vp|dI?fC@h1c=R3|n8GeE9gWE+8O4nsW<6QGQ@cnQX(sM1FjB*I-vFDO!(D z8ZQfl8vj%4JQJRvjdK{Sm}@j9L9t55K+_j=15H_+?v z;2U0%(~RD)^g@ASa~0tR&K7Mm-+<5&V*mVDm9?cM9|8oZclCzT!)3Gt=$L#^<0r5l zk>FElfSb4tgGJd=2kM@E24CdV+{0rp9L#N?1>?`uWPY=N2?6r>B{VoC!Qi0~gN8uR+u31E{A~Y)5FE+=(a}0oP0a}4xwc>V zM$wdD6U~4>GKJ`RVh%_OacSe;SP?jkBDQ-CO+LFzL#D&L#?RsZBQWmk){c&5B4T3R zHSlQ5=XQj}6h3?eJ?v5^HJ}H4*Q!QLkLuu+&oJ9)VR&mDh=0oO-@k`J(V+i5$MB>- zyE~es$}wJyYee*d`Z8yG7hwQLHesBr`KN~92*Y)r5=Hq`wM(gpmfmH=Mp+rqd=?fI8nRV1m@Bak{6J5SSZ)z z5+a(?0R>S5efXHjxRss4XD;R zSxq(`3knKux`CmxZ?aaEYT?`znJkTbAD?@r_@{ml*1#{*(@-2X>oHpzI zJ>89Kn?X;2Qh}~{2><+a2$)G;h0Vg{x1r2|)1~Bs?h=s^-iOEsu zIW-cPS!ZB}T9xoWth5a|_uo|jphAjBNi~Y3tK)z==gbnI^&Y(vV*?PnaQLuF!znxy zEq}wt5ACg`YZV5Z(>euYY%)B}OYaZw1R%+28CL|ZT-zmG7z z?jxK!q+k-hmXewpf5l017ScHF7lLKJfCIez+M*KtAODGU9M$c-fZNn0gKf)~fYsx6 z-s#{v?x?=L-t<2C)5j_*(N}=hL^ANyFV{t|LTS;*m_XG$ZGJOop*d0=X!w

URhi` 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

S<9wA}(dHk#n=^#zKY`OM)9Pu~1N${~2{x_o6 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 literal 110085 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 lxiyvG Date: Sun, 14 Apr 2019 04:58:20 -0500 Subject: [PATCH 004/469] greyscale digi shoe blood --- modular_citadel/icons/mob/digishoes.dmi | Bin 23250 -> 23218 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/modular_citadel/icons/mob/digishoes.dmi b/modular_citadel/icons/mob/digishoes.dmi index a499db6262c016787dd7df6e84b804756569815b..a533195c150fe2035b2fedcf3d79f871491a3bcc 100644 GIT binary patch delta 4155 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 From a772f532c31c2de1dfe88817f15eb79211ebf534 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Tue, 16 Apr 2019 04:28:04 -0500 Subject: [PATCH 005/469] Synthetic and RNG blood --- code/datums/components/decals/blood.dm | 18 ++-- code/datums/mutable_appearance.dm | 3 +- code/game/atoms.dm | 27 ++++++ .../effects/decals/cleanable/humans.dm | 86 ++++++++++-------- .../objects/effects/spawners/gibspawner.dm | 23 +---- .../temporary_visuals/miscellaneous.dm | 4 +- code/game/objects/items.dm | 2 + code/modules/clothing/gloves/_gloves.dm | 2 +- code/modules/clothing/head/_head.dm | 2 +- code/modules/clothing/masks/_masks.dm | 2 +- code/modules/clothing/shoes/_shoes.dm | 12 ++- code/modules/clothing/suits/_suits.dm | 4 +- code/modules/clothing/under/_under.dm | 2 +- code/modules/mob/living/blood.dm | 6 +- code/modules/mob/mob_helpers.dm | 15 +++ .../chemistry/reagents/other_reagents.dm | 17 +++- .../reagents/reagent_containers/blood_pack.dm | 3 + icons/effects/blood.dmi | Bin 108909 -> 94711 bytes 18 files changed, 148 insertions(+), 80 deletions(-) diff --git a/code/datums/components/decals/blood.dm b/code/datums/components/decals/blood.dm index 7fae975678..451fdabaf0 100644 --- a/code/datums/components/decals/blood.dm +++ b/code/datums/components/decals/blood.dm @@ -9,6 +9,8 @@ /datum/component/decal/blood/generate_appearance(_icon, _icon_state, _dir, _layer, _color) var/obj/item/I = parent + if(!I.blood_DNA.len) + return if(!_icon) _icon = 'icons/effects/blood.dmi' if(!_icon_state) @@ -19,17 +21,11 @@ // It's something which takes on the look of other items, probably icon = I.icon icon_state = I.icon_state - var/static/list/blood_splatter_appearances = list() - //try to find a pre-processed blood-splatter. otherwise, make a new one - var/index = "[REF(icon)]-[icon_state]" - pic = blood_splatter_appearances[index] - - if(!pic) - var/icon/blood_splatter_icon = icon(initial(I.icon), initial(I.icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object - blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) - blood_splatter_icon.Blend(icon(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant - pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state)) - blood_splatter_appearances[index] = pic + var/icon/blood_splatter_icon = icon(initial(I.icon), initial(I.icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object + blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) + blood_splatter_icon.Blend(icon(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant + blood_splatter_icon.Blend(I.blood_DNA_to_color(), ICON_MULTIPLY) + pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state)) return TRUE /datum/component/decal/blood/proc/get_examine_name(datum/source, mob/user, list/override) diff --git a/code/datums/mutable_appearance.dm b/code/datums/mutable_appearance.dm index 1b095c555d..31023b3fc7 100644 --- a/code/datums/mutable_appearance.dm +++ b/code/datums/mutable_appearance.dm @@ -10,10 +10,11 @@ // And yes this does have to be in the constructor, BYOND ignores it if you set it as a normal var // Helper similar to image() -/proc/mutable_appearance(icon, icon_state = "", layer = FLOAT_LAYER, plane = FLOAT_PLANE) +/proc/mutable_appearance(icon, icon_state = "", layer = FLOAT_LAYER, plane = FLOAT_PLANE, color = "#FFFFFF") var/mutable_appearance/MA = new() MA.icon = icon MA.icon_state = icon_state MA.layer = layer MA.plane = plane + MA.color = color return MA diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 48596a0b6d..bb0deec49a 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -35,6 +35,8 @@ var/rad_flags = NONE // Will move to flags_1 when i can be arsed to var/rad_insulation = RAD_NO_INSULATION + var/list/blood_DNA //reee dirty hack till Kevin tells me how to inherit this shit + /atom/New(loc, ...) //atom creation method that preloads variables at creation if(GLOB.use_preloader && (src.type == GLOB._preloader.target_path))//in case the instanciated atom is creating other atoms in New() @@ -353,6 +355,31 @@ return FALSE return add_blood_DNA(blood_dna) +/atom/proc/blood_DNA_to_color(mob/living/M) + var/list/colors = list()//first we make a list of all bloodtypes present + var/list/blood_DNA = M.get_blood_dna_list() + for(var/bloop in blood_DNA) + if(colors[blood_DNA[bloop]]) + colors[blood_DNA[bloop]]++ + else + colors[blood_DNA[bloop]] = 1 + + var/final_rgb = "#940000" + + if(colors.len) + var/sum = 0 //this is all shitcode, but it works; trust me + final_rgb = bloodtype_to_color(colors[1]) + sum = colors[colors[1]] + if(colors.len > 1) + var/i = 2 + while(i <= colors.len) + var/tmp = colors[colors[i]] + final_rgb = BlendRGB(final_rgb, bloodtype_to_color(colors[i]), tmp/(tmp+sum)) + sum += tmp + i++ + + return final_rgb + /atom/proc/wash_cream() return TRUE diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 4352baa7ca..01b397fafc 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -1,24 +1,31 @@ /obj/effect/decal/cleanable/blood name = "blood" - desc = "It's red and gooey. Perhaps it's the chef's cooking?" + desc = "It's gooey. Perhaps it's the chef's cooking?" icon = 'icons/effects/blood.dmi' icon_state = "floor1" - random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7") + random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7") blood_state = BLOOD_STATE_HUMAN - var/basecolor = BLOOD_COLOR_HUMAN + blood_DNA = list() bloodiness = BLOOD_AMOUNT_PER_DECAL - var/drytime + +/obj/effect/cleanable/blood/Initialize() + . = ..() + update_icon() /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) C.add_blood_DNA(return_blood_DNA()) if (bloodiness) if (C.bloodiness < MAX_SHOE_BLOODINESS) C.bloodiness += bloodiness + update_icon() return ..() +/obj/effect/decal/cleanable/blood/transfer_mob_blood_dna() + . = ..() + update_icon() + /obj/effect/decal/cleanable/blood/update_icon() - if(basecolor == "rainbow") basecolor = "#[get_random_colour(1)]" - color = basecolor + color = blood_DNA_to_color() /obj/effect/decal/cleanable/blood/old name = "dried blood" @@ -44,11 +51,26 @@ desc = "Your instincts say you shouldn't be following these." random_icon_states = null var/list/existing_dirs = list() - var/basecolor = BLOOD_COLOR_HUMAN //We'll still need to make sure we're colored at least. + blood_DNA = list() + +/obj/effect/decal/cleanable/trail_holder/update_icon() + color = blood_DNA_to_color() + +/obj/effect/cleanable/trail_holder/Initialize() + . = ..() + update_icon() /obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in() return TRUE +/obj/effect/decal/cleanable/trail_holder/transfer_mob_blood_dna() + ..() + update_icon() + +/obj/effect/decal/cleanable/trail_holder/transfer_mob_blood_dna() + . = ..() + update_icon() + /obj/effect/decal/cleanable/blood/gibs name = "gibs" desc = "They look bloody and gruesome." @@ -56,32 +78,18 @@ layer = LOW_OBJ_LAYER random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") mergeable_decal = FALSE - var/fleshcolor + var/gib_overlay = FALSE /obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) . = ..() + if(gib_overlay) + var/icon/gibz = new(icon, icon_state + "-overlay") + add_overlay(gibz) reagents.add_reagent("liquidgibs", 5) /obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) return -/obj/effect/decal/cleanable/blood/gibs/update_icon() - var/generic_skin = random_skin_tone() - var/ethnicity = "#[skintone2hex(generic_skin)]" - - var/image/giblets = image(icon, "[icon_state]_flesh", dir) - if(!fleshcolor) - fleshcolor = ethnicity - giblets.color = fleshcolor - - var/icon/blood = new(base_icon,"[icon_state]",dir) - if(basecolor == "rainbow") basecolor = "#[random_short_color()]" - blood.Blend(basecolor,ICON_MULTIPLY) - - icon = blood - overlays.Cut() - overlays += giblets - /obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L) if(istype(L) && has_gravity(loc)) playsound(loc, 'sound/effects/gib_step.ogg', L.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) @@ -93,31 +101,34 @@ for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) sleep(2) if(i > 0) - var/list/datum/disease/diseases - GET_COMPONENT(infective, /datum/component/infective) - if(infective) - diseases = infective.diseases - new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) + var/obj/effect/decal/cleanable/blood/splatter/splat = new(loc) + splat.transfer_mob_blood_dna(blood_DNA) if(!step_to(src, get_step(src, direction), 0)) break /obj/effect/decal/cleanable/blood/gibs/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/down random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/body random_icon_states = list("gibhead", "gibtorso") + gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/torso random_icon_states = list("gibtorso") + gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/limb random_icon_states = list("gibleg", "gibarm") + gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/core random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/old name = "old rotting gibs" @@ -132,7 +143,7 @@ /obj/effect/decal/cleanable/blood/drip name = "drips of blood" - desc = "It's red." + desc = "It's gooey." icon_state = "1" random_icon_states = list("drip1","drip2","drip3","drip4","drip5") bloodiness = 0 @@ -155,12 +166,12 @@ var/list/shoe_types = list() /obj/effect/decal/cleanable/blood/footprints/Crossed(atom/movable/O) - ..() if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes if(S && S.bloody_shoes[blood_state]) - S.blood_color = basecolor + if(color != bloodtype_to_color(S.last_bloodtype)) + return S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(entered_dirs & H.dir)) @@ -168,11 +179,12 @@ update_icon() /obj/effect/decal/cleanable/blood/footprints/Uncrossed(atom/movable/O) - ..() if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes if(S && S.bloody_shoes[blood_state]) + if(color != bloodtype_to_color(S.last_bloodtype))//last entry - we check its color + return S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(exited_dirs & H.dir)) @@ -181,6 +193,7 @@ /obj/effect/decal/cleanable/blood/footprints/update_icon() + ..() cut_overlays() for(var/Ddir in GLOB.cardinals) @@ -195,8 +208,7 @@ GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]2", dir = Ddir) add_overlay(bloodstep_overlay) - alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness - + alpha = BLOODY_FOOTPRINT_BASE_ALPHA + bloodiness /obj/effect/decal/cleanable/blood/footprints/examine(mob/user) . = ..() @@ -211,6 +223,8 @@ /obj/effect/decal/cleanable/blood/footprints/replace_decal(obj/effect/decal/cleanable/C) if(blood_state != C.blood_state) //We only replace footprints of the same type as us return + if(color != C.color) + return ..() /obj/effect/decal/cleanable/blood/footprints/can_bloodcrawl_in() diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index bc62ae95c0..fcaac4ed51 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -15,9 +15,6 @@ to_chat(world, "Gib list length mismatch!") return - if(fleshcolor) src.fleshcolor = fleshcolor - if(bloodcolor) src.bloodcolor = bloodcolor - var/obj/effect/decal/cleanable/blood/gibs/gib = null if(sparks) @@ -29,30 +26,20 @@ if(gibamounts[i]) for(var/j = 1, j<= gibamounts[i], j++) var/gibType = gibtypes[i] - gib = new gibType(loc, diseases) - + gib = new gibType(loc) if(iscarbon(loc)) var/mob/living/carbon/digester = loc digester.stomach_contents += gib if(MobDNA) - var/list/blood_dna = MobDNA.get_blood_dna_list() - gib.add_blood_DNA(blood_dna) - - // Apply human species colouration to masks. - if(fleshcolor) - gib.fleshcolor = fleshcolor - if(bloodcolor) - gib.color = bloodcolor - - gib.update_icon() - - if(istype(src, /obj/effect/gibspawner/generic)) // Probably a monkey - gib.add_blood_DNA(list("Non-human DNA" = "A+")) + gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.blood_type + else if(istype(src, /obj/effect/gibspawner/generic)) // Probably a monkey + gib.blood_DNA["Non-human DNA"] = "A+" var/list/directions = gibdirections[i] if(isturf(loc)) if(directions.len) gib.streak(directions) + gib.update_icon() return INITIALIZE_HINT_QDEL diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index 7d02d9d383..27ec0a4026 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -6,7 +6,9 @@ layer = BELOW_MOB_LAYER var/splatter_type = "splatter" -/obj/effect/temp_visual/dir_setting/bloodsplatter/Initialize(mapload, set_dir) +/obj/effect/temp_visual/dir_setting/bloodsplatter/Initialize(mapload, set_dir, new_color) + if(new_color) + color = new_color if(set_dir in GLOB.diagonals) icon_state = "[splatter_type][pick(1, 2, 6)]" else diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 9ff1b5cf01..4d6253d0b0 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -24,6 +24,8 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/icon/alternate_worn_icon = null//If this is set, update_icons() will find on mob (WORN, NOT INHANDS) states in this file instead, primary use: badminnery/events var/alternate_worn_layer = null//If this is set, update_icons() will force the on mob state (WORN, NOT INHANDS) onto this layer, instead of it's default + + max_integrity = 200 obj_flags = NONE diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm index 817fe59dcd..7146ad1313 100644 --- a/code/modules/clothing/gloves/_gloves.dm +++ b/code/modules/clothing/gloves/_gloves.dm @@ -30,7 +30,7 @@ if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedgloves") IF_HAS_BLOOD_DNA(src) - . += mutable_appearance('icons/effects/blood.dmi', "bloodyhands") + . += mutable_appearance('icons/effects/blood.dmi', "bloodyhands", color = blood_DNA_to_color()) /obj/item/clothing/gloves/update_clothes_damaged_state(damaging = TRUE) ..() diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm index f47361e794..33affa944d 100644 --- a/code/modules/clothing/head/_head.dm +++ b/code/modules/clothing/head/_head.dm @@ -42,7 +42,7 @@ if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedhelmet") IF_HAS_BLOOD_DNA(src) - . += mutable_appearance('icons/effects/blood.dmi', "helmetblood") + . += mutable_appearance('icons/effects/blood.dmi', "helmetblood", color = blood_DNA_to_color()) /obj/item/clothing/head/update_clothes_damaged_state(damaging = TRUE) ..() diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm index ea4c9e16b7..f83dfca245 100644 --- a/code/modules/clothing/masks/_masks.dm +++ b/code/modules/clothing/masks/_masks.dm @@ -18,7 +18,7 @@ if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") IF_HAS_BLOOD_DNA(src) - . += mutable_appearance('icons/effects/blood.dmi', "maskblood") + . += mutable_appearance('icons/effects/blood.dmi', "maskblood", color = blood_DNA_to_color()) /obj/item/clothing/mask/equipped(mob/user, slot) ..() diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index 00cb2678cd..f810e95400 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -14,6 +14,8 @@ var/list/bloody_shoes = list(BLOOD_STATE_HUMAN = 0,BLOOD_STATE_XENO = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) var/offset = 0 var/equipped_before_drop = FALSE + var/last_bloodtype = ""//used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans + var/last_blood_DNA = ""//same as last one //CITADEL EDIT Enables digitigrade shoe styles var/adjusted = NORMAL_STYLE @@ -42,6 +44,12 @@ playsound(user, 'sound/weapons/genhit2.ogg', 50, 1) return(BRUTELOSS) +/obj/item/clothing/shoes/transfer_mob_blood_dna(list/blood_dna) + ..() + if(blood_dna.len) + last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works + last_blood_DNA = blood_dna[blood_dna.len] + /obj/item/clothing/shoes/worn_overlays(isinhands = FALSE) . = list() if(!isinhands) @@ -55,9 +63,9 @@ . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe") if(bloody) if(adjusted == NORMAL_STYLE) - . += mutable_appearance('icons/effects/blood.dmi', "shoeblood") + . += mutable_appearance('icons/effects/blood.dmi', "shoeblood", color = blood_DNA_to_color()) else - . += mutable_appearance('modular_citadel/icons/mob/digishoes.dmi', "shoeblood") + . += mutable_appearance('modular_citadel/icons/mob/digishoes.dmi', "shoeblood", color = blood_DNA_to_color()) /obj/item/clothing/shoes/equipped(mob/user, slot) . = ..() diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index 054154639c..0a44b57c6a 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -62,9 +62,9 @@ . += mutable_appearance('icons/effects/item_damage.dmi', "damaged[blood_overlay_type]") IF_HAS_BLOOD_DNA(src) if(taurmode >= SNEK_TAURIC) - . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "[blood_overlay_type]blood") + . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) else - . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood") + . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) var/mob/living/carbon/human/M = loc if(ishuman(M) && M.w_uniform) var/obj/item/clothing/under/U = M.w_uniform diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index c2c3f19b9d..5f123cd745 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -23,7 +23,7 @@ if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform") IF_HAS_BLOOD_DNA(src) - . += mutable_appearance('icons/effects/blood.dmi', "uniformblood") + . += mutable_appearance('icons/effects/blood.dmi', "uniformblood", color = blood_DNA_to_color()) if(accessory_overlay) . += accessory_overlay diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index e62e9160aa..2520250020 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -190,7 +190,6 @@ if(!suiciding) blood_data["cloneable"] = 1 blood_data["blood_type"] = copytext(dna.blood_type,1,0) - blood_data["bloodcolor"] = blood_id.color blood_data["gender"] = gender blood_data["real_name"] = real_name blood_data["features"] = dna.features @@ -241,7 +240,10 @@ "O-" = list("O-","SY"), "O+" = list("O-", "O+","SY"), "L" = list("L","SY"), - "U" = list("A-", "A+", "B-", "B+", "O-", "O+", "AB-", "AB+", "L", "U","SY") + "U" = list("A-", "A+", "B-", "B+", "O-", "O+", "AB-", "AB+", "L", "U","SY"), + "oil" = list("oil", "SY"), + "X*" = list("X*", "SY"), + "SY" = list("SY") ) var/safe = bloodtypes_safe[bloodtype] diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 35b48afa28..afcbf6e948 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -485,3 +485,18 @@ It's fairly easy to fix if dealing with single letters but not so much with comp /mob/proc/can_hear() . = TRUE + +/proc/bloodtype_to_color(var/type) + . = BLOOD_COLOR_HUMAN + switch(type) + if("U")//Universal blood; a bit orange + . = "#DB3300" + if("SY")//Synthetics blood; blue + . = BLOOD_COLOR_SYNTHETIC + if("L")//lizard, a bit pink/purple + . = "#DB004D" + if("X*")//xeno blood; not actually used in many spots + . = BLOOD_COLOR_XENO + if("OI")// Oil blood. something something why not + . = BLOOD_COLOR_OIL + //add more stuff to the switch if you have more blood colors for different types diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index ec7cd265f1..00805b54a1 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1,5 +1,5 @@ /datum/reagent/blood - data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"bloodcolor"= BLOOD_COLOR_HUMAN, "blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Blood" id = "blood" color = BLOOD_COLOR_HUMAN // rgb: 200, 0, 0 @@ -42,6 +42,7 @@ /datum/reagent/blood/on_new(list/data) if(istype(data)) SetViruses(src, data) + color = bloodtype_to_color(data["blood_type"]) /datum/reagent/blood/on_merge(list/mix_data) if(data && mix_data) @@ -90,16 +91,26 @@ B.color = data["bloodcolor"] /datum/reagent/blood/synthetics - data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"bloodcolor"=BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Synthetic Blood" id = "syntheticblood" + taste_description = "oily" color = BLOOD_COLOR_SYNTHETIC // rgb: 11, 7, 48 /datum/reagent/blood/xenomorph - data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"bloodcolor"=BLOOD_COLOR_XENO, "blood_type"="X*","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "blood_type"="X*","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Xenomorph Blood" id = "xenoblood" + taste_description = "acidic heresy" color = BLOOD_COLOR_XENO // greenish yellow ooze + shot_glass_icon_state = "shotglassgreen" + +/datum/reagent/blood/oil + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "blood_type"="oil","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + name = "Hydraulic Blood" + id = "oilblood" + taste_description = "burnt oil" + color = BLOOD_COLOR_OIL // dark, y'know, expected batman colors. /datum/reagent/liquidgibs name = "Liquid gibs" diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index 95e3be1849..a710d127fb 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -6,6 +6,8 @@ volume = 200 var/blood_type = null var/labelled = 0 + var/color_to_apply = "#FFFFFF" + var/mutable_appearance/fill_overlay /obj/item/reagent_containers/blood/Initialize() . = ..() @@ -18,6 +20,7 @@ var/datum/reagent/blood/B = reagents.has_reagent("blood") if(B && B.data && B.data["blood_type"]) blood_type = B.data["blood_type"] + color_to_apply = bloodtype_to_color(blood_type) else blood_type = null update_pack_name() diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index 5ed0c244a6f58825d4b00a1103560dd8dd03ca0a..6ac998d722880b02e85003e63b5bcad6d48257f9 100644 GIT binary patch literal 94711 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%0A-OzXMEZ!6xt>28WOzZ$;&T-0aNNfP!u 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

URhi` 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

S<9wA}(dHk#n=^#zKY`OM)9Pu~1N${~2{x_o6 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 From b3e894dcbb95d2277d6a4d98187a57a04360996d Mon Sep 17 00:00:00 2001 From: Poojawa Date: Tue, 16 Apr 2019 07:40:37 -0500 Subject: [PATCH 006/469] oh god oh fuck oh god it's snowballing --- code/__HELPERS/_cit_helpers.dm | 2 + code/game/atoms.dm | 4 +- code/modules/mob/living/blood.dm | 122 ++++++++++-------- .../carbon/human/species_types/jellypeople.dm | 2 +- code/modules/mob/mob_helpers.dm | 6 +- .../chemistry/reagents/other_reagents.dm | 27 +++- .../reagents/chemistry/recipes/medicine.dm | 6 + .../carbon/human/species_types/furrypeople.dm | 2 +- .../living/carbon/human/species_types/ipc.dm | 2 +- 9 files changed, 110 insertions(+), 63 deletions(-) diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm index eb2a564d1b..c9e2f465cf 100644 --- a/code/__HELPERS/_cit_helpers.dm +++ b/code/__HELPERS/_cit_helpers.dm @@ -30,6 +30,8 @@ proc/get_racelist(var/mob/user)//This proc returns a list of species that 'user' GLOB.whitelisted_species_list[S.id] = S.type return GLOB.whitelisted_species_list + //blood types +GLOBAL_LIST_INIT(blood_types, list("blood","syntheticblood","xenoblood","oilblood","jellyblood")) //Mammal Species GLOBAL_LIST_EMPTY(mam_body_markings_list) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index bb0deec49a..2d1b922db8 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -319,12 +319,12 @@ //returns the mob's dna info as a list, to be inserted in an object's blood_DNA list /mob/living/proc/get_blood_dna_list() - if(get_blood_id() != "blood") + if(get_blood_id() == null) return return list("ANIMAL DNA" = "Y-") /mob/living/carbon/get_blood_dna_list() - if(get_blood_id() != "blood") + if(get_blood_id() == null) return var/list/blood_dna = list() if(dna) diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 2520250020..992028f424 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -138,17 +138,27 @@ if(iscarbon(AM)) var/mob/living/carbon/C = AM - if(blood_id == C.get_blood_id())//both mobs have the same blood substance - if(blood_id == "blood") //normal blood - if(blood_data["viruses"]) - for(var/thing in blood_data["viruses"]) - var/datum/disease/D = thing - if((D.spread_flags & DISEASE_SPREAD_SPECIAL) || (D.spread_flags & DISEASE_SPREAD_NON_CONTAGIOUS)) - continue - C.ForceContractDisease(D) - if(!(blood_data["blood_type"] in get_safe_blood(C.dna.blood_type))) - C.reagents.add_reagent("toxin", amount * 0.5) - return 1 + for(var/bluhduh in GLOB.blood_types[blood_id]) + if(blood_id == C.get_blood_id())//both mobs have the same blood substance + if(bluhduh) //actual blood reagent + if(blood_data["viruses"]) + for(var/thing in blood_data["viruses"]) + var/datum/disease/D = thing + if((D.spread_flags & DISEASE_SPREAD_SPECIAL) || (D.spread_flags & DISEASE_SPREAD_NON_CONTAGIOUS)) + continue + C.ForceContractDisease(D) + if(!(blood_data["blood_type"] in get_safe_blood(C.dna.blood_type))) + if((blood_data["blood_type"] == "GEL") && (C.dna.species.exotic_blood != "jellyblood")) + C.reagents.add_reagent("toxin", amount * 1.5) //filthy xenos bloooood + else if((blood_data["blood_type"] == "HF") && (C.dna.species.exotic_blood != "oilblood")) + C.reagents.add_reagent("toxin", amount * 1) //don't fucking put oil in people + else if((blood_data["blood_type"] == "X*") && (C.dna.species.exotic_blood != "xenoblood")) + C.reagents.add_reagent("toxin", amount * 1.5) //acid blooood + else + C.reagents.add_reagent("toxin", amount * 0.5) + else + C.blood_volume = min(C.blood_volume + round(amount, 0.1), BLOOD_VOLUME_MAXIMUM) + return 1 C.blood_volume = min(C.blood_volume + round(amount, 0.1), BLOOD_VOLUME_MAXIMUM) return 1 @@ -161,49 +171,50 @@ return /mob/living/carbon/get_blood_data(blood_id) - if(blood_id == "blood") //actual blood reagent - var/blood_data = list() - //set the blood data - blood_data["donor"] = src - blood_data["viruses"] = list() + for(var/bluhduh in GLOB.blood_types[blood_id]) + if(bluhduh) //actual blood reagent + var/blood_data = list() + //set the blood data + blood_data["donor"] = src + blood_data["viruses"] = list() - for(var/thing in diseases) - var/datum/disease/D = thing - blood_data["viruses"] += D.Copy() + for(var/thing in diseases) + var/datum/disease/D = thing + blood_data["viruses"] += D.Copy() - blood_data["blood_DNA"] = copytext(dna.unique_enzymes,1,0) - if(disease_resistances && disease_resistances.len) - blood_data["resistances"] = disease_resistances.Copy() - var/list/temp_chem = list() - for(var/datum/reagent/R in reagents.reagent_list) - temp_chem[R.id] = R.volume - blood_data["trace_chem"] = list2params(temp_chem) - if(mind) - blood_data["mind"] = mind - else if(last_mind) - blood_data["mind"] = last_mind - if(ckey) - blood_data["ckey"] = ckey - else if(last_mind) - blood_data["ckey"] = ckey(last_mind.key) + blood_data["blood_DNA"] = copytext(dna.unique_enzymes,1,0) + if(disease_resistances && disease_resistances.len) + blood_data["resistances"] = disease_resistances.Copy() + var/list/temp_chem = list() + for(var/datum/reagent/R in reagents.reagent_list) + temp_chem[R.id] = R.volume + blood_data["trace_chem"] = list2params(temp_chem) + if(mind) + blood_data["mind"] = mind + else if(last_mind) + blood_data["mind"] = last_mind + if(ckey) + blood_data["ckey"] = ckey + else if(last_mind) + blood_data["ckey"] = ckey(last_mind.key) - if(!suiciding) - blood_data["cloneable"] = 1 - blood_data["blood_type"] = copytext(dna.blood_type,1,0) - blood_data["gender"] = gender - blood_data["real_name"] = real_name - blood_data["features"] = dna.features - blood_data["factions"] = faction - blood_data["quirks"] = list() - for(var/V in roundstart_quirks) - var/datum/quirk/T = V - blood_data["quirks"] += T.type - blood_data["changeling_loudness"] = 0 - if(mind) - var/datum/antagonist/changeling/ling = mind.has_antag_datum(/datum/antagonist/changeling) - if(istype(ling)) - blood_data["changeling_loudness"] = ling.loudfactor - return blood_data + if(!suiciding) + blood_data["cloneable"] = 1 + blood_data["blood_type"] = copytext(dna.blood_type,1,0) + blood_data["gender"] = gender + blood_data["real_name"] = real_name + blood_data["features"] = dna.features + blood_data["factions"] = faction + blood_data["quirks"] = list() + for(var/V in roundstart_quirks) + var/datum/quirk/T = V + blood_data["quirks"] += T.type + blood_data["changeling_loudness"] = 0 + if(mind) + var/datum/antagonist/changeling/ling = mind.has_antag_datum(/datum/antagonist/changeling) + if(istype(ling)) + blood_data["changeling_loudness"] = ling.loudfactor + return blood_data //get the id of the substance this mob use as blood. /mob/proc/get_blood_id() @@ -221,7 +232,7 @@ if(dna.species.exotic_blood) return dna.species.exotic_blood else if((NOBLOOD in dna.species.species_traits) || (has_trait(TRAIT_NOCLONE))) - return + return null return "blood" // This is has more potential uses, and is probably faster than the old proc. @@ -241,9 +252,10 @@ "O+" = list("O-", "O+","SY"), "L" = list("L","SY"), "U" = list("A-", "A+", "B-", "B+", "O-", "O+", "AB-", "AB+", "L", "U","SY"), - "oil" = list("oil", "SY"), + "HF" = list("HF", "SY"), "X*" = list("X*", "SY"), - "SY" = list("SY") + "SY" = list("SY"), + "GEL" = list("GEL","SY") ) var/safe = bloodtypes_safe[bloodtype] @@ -252,7 +264,7 @@ //to add a splatter of blood or other mob liquid. /mob/living/proc/add_splatter_floor(turf/T, small_drip) - if(get_blood_id() != "blood") + if(get_blood_id() == null) return if(!T) T = get_turf(src) diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 0461fb9b79..da06d81609 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -9,7 +9,7 @@ default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_snouts" = "None", "taur" = "None") //CIT CHANGE inherent_traits = list(TRAIT_TOXINLOVER) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime - exotic_blood = "slimejelly" + exotic_blood = "jellyblood" damage_overlay_type = "" var/datum/action/innate/regenerate_limbs/regenerate_limbs var/datum/action/innate/slime_change/slime_change //CIT CHANGE diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index afcbf6e948..38954c4b67 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -495,8 +495,10 @@ It's fairly easy to fix if dealing with single letters but not so much with comp . = BLOOD_COLOR_SYNTHETIC if("L")//lizard, a bit pink/purple . = "#DB004D" - if("X*")//xeno blood; not actually used in many spots + if("X*")//xeno blood; greenish yellow . = BLOOD_COLOR_XENO - if("OI")// Oil blood. something something why not + if("HF")// Oil/Hydraulic blood. something something why not. reee . = BLOOD_COLOR_OIL + if("GEL")// slimepeople blood, rgb 0, 255, 144 + . = "#00FF90" //add more stuff to the switch if you have more blood colors for different types diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 00805b54a1..3ac628a6dc 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -29,6 +29,12 @@ if(C.get_blood_id() == "blood" && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits)))) if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type))) C.reagents.add_reagent("toxin", reac_volume * 0.5) + if(data && (data["blood_type"] == "GEL") && (C.dna.species.exotic_blood != "jellyblood")) + C.reagents.add_reagent("toxin", reac_volume * 1.5) //filthy xenos bloooood + if(data && (data["blood_type"] == "HF") && (C.dna.species.exotic_blood != "oilblood")) + C.reagents.add_reagent("toxin", reac_volume * 1) //don't fucking put oil in people + if(data && (data["blood_type"] == "X*") && (C.dna.species.exotic_blood != "xenoblood")) + C.reagents.add_reagent("toxin", reac_volume * 1.5) //acid blooood else C.blood_volume = min(C.blood_volume + round(reac_volume, 0.1), BLOOD_VOLUME_MAXIMUM) @@ -106,12 +112,31 @@ shot_glass_icon_state = "shotglassgreen" /datum/reagent/blood/oil - data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "blood_type"="oil","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Hydraulic Blood" id = "oilblood" taste_description = "burnt oil" color = BLOOD_COLOR_OIL // dark, y'know, expected batman colors. +/datum/reagent/blood/jellyblood + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + name = "Slime Jelly Blood" + id = "jellyblood" + description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL." + color = "#00FF90" + taste_description = "slime" + taste_mult = 1.3 + +/datum/reagent/blood/jellyblood/on_mob_life(mob/living/carbon/M) + if(prob(10)) + to_chat(M, "Your insides are burning!") + M.adjustToxLoss(rand(20,60)*REM, 0) + . = 1 + else if(prob(40)) + M.heal_bodypart_damage(5*REM) + . = 1 + ..() + /datum/reagent/liquidgibs name = "Liquid gibs" id = "liquidgibs" diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index dc7c32d925..740fb95877 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -233,6 +233,12 @@ results = list("regen_jelly" = 2) required_reagents = list("tricordrazine" = 1, "slimejelly" = 1) +/datum/chemical_reaction/jelly_convert + name = "Blood Jelly Conversion" + id = "blood_jelly" + results = list("slimejelly" = 1) + required_reagents = list("toxin" = 1, "jellyblood" = 1) + /datum/chemical_reaction/corazone name = "Corazone" id = "corazone" diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index 6b6349c0f3..89e6eca180 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -204,7 +204,7 @@ miss_sound = 'sound/weapons/slashmiss.ogg' meat = /obj/item/reagent_containers/food/snacks/meat/slab/xeno skinned_type = /obj/item/stack/sheet/animalhide/xeno - exotic_bloodtype = "L" + exotic_bloodtype = "xenoblood" damage_overlay_type = "xeno" liked_food = MEAT diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm index bbbe863ec2..e132dbfc2c 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm @@ -12,7 +12,7 @@ default_features = list("ipc_screen" = "Blank", "ipc_antenna" = "None") meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ipc - exotic_blood = "oil" + exotic_blood = "oilblood" var/datum/action/innate/monitor_change/screen From f58cc09aed849f18283cc4475ec08f3f7c4af654 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Tue, 16 Apr 2019 08:53:19 -0500 Subject: [PATCH 007/469] Some slight fixes --- code/__DEFINES/misc.dm | 9 ++--- code/game/atoms.dm | 9 +++++ .../effects/decals/cleanable/aliens.dm | 12 +------ .../effects/decals/cleanable/humans.dm | 35 +++++++++---------- code/modules/clothing/shoes/_shoes.dm | 6 ++-- code/modules/mob/mob_helpers.dm | 6 ++-- .../chemistry/reagents/other_reagents.dm | 2 +- 7 files changed, 39 insertions(+), 40 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index f71620d562..2b30454379 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -171,17 +171,18 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache) #define BLOOD_LOSS_IN_SPREAD 20 //Bloody shoe blood states -#define BLOOD_STATE_HUMAN "blood" -#define BLOOD_STATE_XENO "xeno" +#define BLOOD_STATE_BLOOD "blood" #define BLOOD_STATE_OIL "oil" #define BLOOD_STATE_NOT_BLOODY "no blood whatsoever" #define BLOOD_AMOUNT_PER_DECAL 20 //Blood Decal Colors -#define BLOOD_COLOR_HUMAN "#C80000" +#define BLOOD_COLOR_HUMAN "#dc0000" #define BLOOD_COLOR_XENO "#94a83c" -#define BLOOD_COLOR_OIL "#000000" +#define BLOOD_COLOR_OIL "#301d02" #define BLOOD_COLOR_SYNTHETIC "#0b0730" +#define BLOOD_COLOR_SLIME "#00ff90" +#define BLOOD_COLOR_LIZARD "#db004D" //suit sensors: sensor_mode defines diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 2d1b922db8..7c591c1249 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -336,6 +336,15 @@ /mob/living/carbon/alien/get_blood_dna_list() return list("UNKNOWN DNA" = "X*") +//to add blood dna info to the object's blood_DNA list +/atom/proc/transfer_blood_dna(list/blood_dna) + if(!blood_DNA) + blood_DNA = list() + var/old_length = blood_DNA.len + blood_DNA |= blood_dna + if(blood_DNA.len > old_length) + return TRUE//some new blood DNA was added + //to add a mob's dna info into an object's blood_DNA list. /atom/proc/transfer_mob_blood_dna(mob/living/L) // Returns 0 if we have that blood already diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 6dee6b5e7b..65da4a7d14 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -3,7 +3,7 @@ /obj/effect/decal/cleanable/blood/xenoblood name = "xeno blood" desc = "It's green and acidic. It looks like... blood?" - blood_state = BLOOD_STATE_XENO + blood_state = BLOOD_STATE_BLOOD color = BLOOD_COLOR_XENO /obj/effect/decal/cleanable/blood/xenoblood/Initialize() @@ -14,16 +14,6 @@ name = "xeno gibs" desc = "Gnarly..." -/obj/effect/decal/cleanable/blood/xenoblood/gibs/proc/streak(list/directions) - set waitfor = 0 - var/direction = pick(directions) - for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) - sleep(2) - if(i > 0) - new /obj/effect/decal/cleanable/blood/splatter(loc) - if(!step_to(src, get_step(src, direction), 0)) - break - /obj/effect/decal/cleanable/blood/xenoblood/gibs/up random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1") diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 01b397fafc..250391fa54 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -4,21 +4,20 @@ icon = 'icons/effects/blood.dmi' icon_state = "floor1" random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7") - blood_state = BLOOD_STATE_HUMAN + blood_state = BLOOD_STATE_BLOOD + color = BLOOD_COLOR_HUMAN blood_DNA = list() bloodiness = BLOOD_AMOUNT_PER_DECAL -/obj/effect/cleanable/blood/Initialize() - . = ..() - update_icon() - /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) - C.add_blood_DNA(return_blood_DNA()) - if (bloodiness) - if (C.bloodiness < MAX_SHOE_BLOODINESS) - C.bloodiness += bloodiness + if (C.blood_DNA) + blood_DNA |= C.blood_DNA.Copy() + update_icon() + ..() + +/obj/effect/decal/cleanable/blood/transfer_blood_dna() + ..() update_icon() - return ..() /obj/effect/decal/cleanable/blood/transfer_mob_blood_dna() . = ..() @@ -29,13 +28,13 @@ /obj/effect/decal/cleanable/blood/old name = "dried blood" - desc = "Looks like it's been here a while. Eew." + desc = "Looks like it's been here a while. Eew." bloodiness = 0 /obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases) + . = ..() icon_state += "-old" //This IS necessary because the parent /blood type uses icon randomization. - add_blood_DNA(list("Non-human DNA" = "A+")) // Needs to happen before ..() - return ..() + add_blood_DNA(list("Non-human DNA" = "A+")) /obj/effect/decal/cleanable/blood/splatter random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") @@ -47,7 +46,7 @@ /obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose so that it shows up even on regular splatters name = "blood" - icon_state = "trails_1" + icon_state = "ltrails_1" desc = "Your instincts say you shouldn't be following these." random_icon_states = null var/list/existing_dirs = list() @@ -63,7 +62,7 @@ /obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in() return TRUE -/obj/effect/decal/cleanable/trail_holder/transfer_mob_blood_dna() +/obj/effect/decal/cleanable/trail_holder/transfer_blood_dna() ..() update_icon() @@ -162,7 +161,7 @@ random_icon_states = null var/entered_dirs = 0 var/exited_dirs = 0 - blood_state = BLOOD_STATE_HUMAN //the icon state to load images from + blood_state = BLOOD_STATE_BLOOD //the icon state to load images from var/list/shoe_types = list() /obj/effect/decal/cleanable/blood/footprints/Crossed(atom/movable/O) @@ -191,7 +190,6 @@ exited_dirs |= H.dir update_icon() - /obj/effect/decal/cleanable/blood/footprints/update_icon() ..() cut_overlays() @@ -210,13 +208,14 @@ alpha = BLOODY_FOOTPRINT_BASE_ALPHA + bloodiness + /obj/effect/decal/cleanable/blood/footprints/examine(mob/user) . = ..() if(shoe_types.len) . += "You recognise the footprints as belonging to:\n" for(var/shoe in shoe_types) var/obj/item/clothing/shoes/S = shoe - . += "[icon2html(initial(S.icon), user)] Some [initial(S.name)].\n" + . += "some [initial(S.name)] [icon2html(initial(S.icon), user)]\n" to_chat(user, .) diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index f810e95400..e52722b077 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -11,7 +11,7 @@ permeability_coefficient = 0.5 slowdown = SHOES_SLOWDOWN var/blood_state = BLOOD_STATE_NOT_BLOODY - var/list/bloody_shoes = list(BLOOD_STATE_HUMAN = 0,BLOOD_STATE_XENO = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) + var/list/bloody_shoes = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) var/offset = 0 var/equipped_before_drop = FALSE var/last_bloodtype = ""//used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans @@ -57,7 +57,7 @@ IF_HAS_BLOOD_DNA(src) bloody = TRUE else - bloody = bloody_shoes[BLOOD_STATE_HUMAN] + bloody = bloody_shoes[BLOOD_STATE_BLOOD] if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe") @@ -104,7 +104,7 @@ /obj/item/clothing/shoes/proc/clean_blood(datum/source, strength) if(strength < CLEAN_STRENGTH_BLOOD) return - bloody_shoes = list(BLOOD_STATE_HUMAN = 0,BLOOD_STATE_XENO = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) + bloody_shoes = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) blood_state = BLOOD_STATE_NOT_BLOODY if(ismob(loc)) var/mob/M = loc diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 38954c4b67..7fc4003667 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -490,15 +490,15 @@ It's fairly easy to fix if dealing with single letters but not so much with comp . = BLOOD_COLOR_HUMAN switch(type) if("U")//Universal blood; a bit orange - . = "#DB3300" + . = "#db3300" if("SY")//Synthetics blood; blue . = BLOOD_COLOR_SYNTHETIC if("L")//lizard, a bit pink/purple - . = "#DB004D" + . = BLOOD_COLOR_LIZARD if("X*")//xeno blood; greenish yellow . = BLOOD_COLOR_XENO if("HF")// Oil/Hydraulic blood. something something why not. reee . = BLOOD_COLOR_OIL if("GEL")// slimepeople blood, rgb 0, 255, 144 - . = "#00FF90" + . = BLOOD_COLOR_SLIME //add more stuff to the switch if you have more blood colors for different types diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 3ac628a6dc..52ab8f98d3 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -123,7 +123,7 @@ name = "Slime Jelly Blood" id = "jellyblood" description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL." - color = "#00FF90" + color = BLOOD_COLOR_SLIME taste_description = "slime" taste_mult = 1.3 From f244d3fdcae4412cf6b8a7993f1f1ec5ebf2a4a1 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Tue, 16 Apr 2019 11:30:36 -0500 Subject: [PATCH 008/469] system's mostly working need to polish out the get_blood_dna_list runtime --- code/__DEFINES/citadel_defines.dm | 1 + code/__DEFINES/misc.dm | 2 +- code/datums/components/decals/blood.dm | 21 +-- code/game/atoms.dm | 38 +++-- code/game/gamemodes/meteor/meteors.dm | 2 +- .../effects/decals/cleanable/aliens.dm | 56 ++++++-- .../effects/decals/cleanable/humans.dm | 13 +- .../objects/effects/spawners/gibspawner.dm | 132 +++++++++++------- code/modules/mob/living/blood.dm | 2 +- code/modules/mob/living/bloodcrawl.dm | 2 +- code/modules/mob/living/carbon/alien/alien.dm | 2 +- code/modules/mob/living/carbon/alien/death.dm | 2 +- .../mob/living/carbon/alien/larva/death.dm | 2 +- code/modules/mob/living/carbon/human/death.dm | 2 +- .../mob/living/simple_animal/bot/cleanbot.dm | 2 +- .../hostile/mining_mobs/gutlunch.dm | 2 +- .../modules/mob/living/carbon/human/human.dm | 6 + 17 files changed, 174 insertions(+), 113 deletions(-) diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index ef14dbcaa3..424fe0a409 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -104,6 +104,7 @@ #define isaquatic(A) (is_species(A, /datum/species/aquatic)) #define isinsect(A) (is_species(A, /datum/species/insect)) #define isxenoperson(A) (is_species(A, /datum/species/xeno)) +#define isstartjelly(A) (is_species(A, /datum/species/jelly/roundstartslime)) #define CITADEL_MENTOR_OOC_COLOUR "#224724" diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 2b30454379..27991133c7 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -180,7 +180,7 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache) #define BLOOD_COLOR_HUMAN "#dc0000" #define BLOOD_COLOR_XENO "#94a83c" #define BLOOD_COLOR_OIL "#301d02" -#define BLOOD_COLOR_SYNTHETIC "#0b0730" +#define BLOOD_COLOR_SYNTHETIC "#3f48aa" #define BLOOD_COLOR_SLIME "#00ff90" #define BLOOD_COLOR_LIZARD "#db004D" diff --git a/code/datums/components/decals/blood.dm b/code/datums/components/decals/blood.dm index 451fdabaf0..ff69c1ea54 100644 --- a/code/datums/components/decals/blood.dm +++ b/code/datums/components/decals/blood.dm @@ -9,8 +9,6 @@ /datum/component/decal/blood/generate_appearance(_icon, _icon_state, _dir, _layer, _color) var/obj/item/I = parent - if(!I.blood_DNA.len) - return if(!_icon) _icon = 'icons/effects/blood.dmi' if(!_icon_state) @@ -21,15 +19,22 @@ // It's something which takes on the look of other items, probably icon = I.icon icon_state = I.icon_state - var/icon/blood_splatter_icon = icon(initial(I.icon), initial(I.icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object - blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) - blood_splatter_icon.Blend(icon(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant - blood_splatter_icon.Blend(I.blood_DNA_to_color(), ICON_MULTIPLY) - pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state)) + var/static/list/blood_splatter_appearances = list() + //try to find a pre-processed blood-splatter. otherwise, make a new one + var/index = "[REF(icon)]-[icon_state]" + pic = blood_splatter_appearances[index] + + if(!pic) + var/icon/blood_splatter_icon = icon(initial(I.icon), initial(I.icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object + blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) + blood_splatter_icon.Blend(icon(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant + blood_splatter_icon.Blend(I.blood_DNA_to_color(), ICON_MULTIPLY) //Color the blood with our dna stuff + pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state)) + blood_splatter_appearances[index] = pic return TRUE /datum/component/decal/blood/proc/get_examine_name(datum/source, mob/user, list/override) var/atom/A = parent override[EXAMINE_POSITION_ARTICLE] = A.gender == PLURAL? "some" : "a" override[EXAMINE_POSITION_BEFORE] = " blood-stained " - return COMPONENT_EXNAME_CHANGED + return COMPONENT_EXNAME_CHANGED \ No newline at end of file diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 7c591c1249..14f00e25a6 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -319,36 +319,31 @@ //returns the mob's dna info as a list, to be inserted in an object's blood_DNA list /mob/living/proc/get_blood_dna_list() - if(get_blood_id() == null) + if(get_blood_id() != "blood") return return list("ANIMAL DNA" = "Y-") /mob/living/carbon/get_blood_dna_list() - if(get_blood_id() == null) - return - var/list/blood_dna = list() - if(dna) - blood_dna[dna.unique_enzymes] = dna.blood_type - else - blood_dna["UNKNOWN DNA"] = "X*" - return blood_dna + for(var/bluhduh in GLOB.blood_types) + if(get_blood_id() != bluhduh) //are we a null for blood type? + var/list/dna_to_add + dna_to_add = list("Non-human DNA" = random_blood_type()) //generate a random bloodtype for it. + return dna_to_add + + var/list/blood_dna = list() + if(dna) + blood_dna[dna.unique_enzymes] = dna.blood_type + else + blood_dna["UNKNOWN DNA"] = "X*" + return blood_dna /mob/living/carbon/alien/get_blood_dna_list() return list("UNKNOWN DNA" = "X*") -//to add blood dna info to the object's blood_DNA list -/atom/proc/transfer_blood_dna(list/blood_dna) - if(!blood_DNA) - blood_DNA = list() - var/old_length = blood_DNA.len - blood_DNA |= blood_dna - if(blood_DNA.len > old_length) - return TRUE//some new blood DNA was added - //to add a mob's dna info into an object's blood_DNA list. /atom/proc/transfer_mob_blood_dna(mob/living/L) // Returns 0 if we have that blood already - var/new_blood_dna = L.get_blood_dna_list() + var/list/new_blood_dna = L.get_blood_dna_list() if(!new_blood_dna) return FALSE var/old_length = blood_DNA_length() @@ -364,9 +359,8 @@ return FALSE return add_blood_DNA(blood_dna) -/atom/proc/blood_DNA_to_color(mob/living/M) +/atom/proc/blood_DNA_to_color() var/list/colors = list()//first we make a list of all bloodtypes present - var/list/blood_DNA = M.get_blood_dna_list() for(var/bloop in blood_DNA) if(colors[blood_DNA[bloop]]) colors[blood_DNA[bloop]]++ @@ -741,4 +735,4 @@ Proc for attack log creation, because really why not if(filter_data[name]) filter_data -= name update_filters() - return TRUE + return TRUE \ No newline at end of file diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 36e363df25..426d23b4ab 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -317,7 +317,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event /obj/effect/meteor/meaty/xeno/ram_turf(turf/T) if(!isspaceturf(T)) - new /obj/effect/decal/cleanable/blood/xenoblood(T) + new /obj/effect/decal/cleanable/xenoblood(T) //Station buster Tunguska /obj/effect/meteor/tunguska diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 65da4a7d14..718c20126a 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -1,46 +1,72 @@ // Note: BYOND is object oriented. There is no reason for this to be copy/pasted blood code. -/obj/effect/decal/cleanable/blood/xenoblood +/obj/effect/decal/cleanable/xenoblood name = "xeno blood" desc = "It's green and acidic. It looks like... blood?" + icon = 'icons/effects/blood.dmi' + icon_state = "xfloor1" + random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7") + bloodiness = BLOOD_AMOUNT_PER_DECAL blood_state = BLOOD_STATE_BLOOD color = BLOOD_COLOR_XENO -/obj/effect/decal/cleanable/blood/xenoblood/Initialize() +/obj/effect/decal/cleanable/xenoblood/Initialize() . = ..() add_blood_DNA(list("UNKNOWN DNA" = "X*")) -/obj/effect/decal/cleanable/blood/xenoblood/gibs +/obj/effect/decal/cleanable/xenoblood/xsplatter + random_icon_states = list("xgibbl1", "xgibbl2", "xgibbl3", "xgibbl4", "xgibbl5") + +/obj/effect/decal/cleanable/xenoblood/xgibs name = "xeno gibs" desc = "Gnarly..." + icon = 'icons/effects/blood.dmi' + icon_state = "xgib1" + layer = LOW_OBJ_LAYER + random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6") + mergeable_decal = FALSE -/obj/effect/decal/cleanable/blood/xenoblood/gibs/up +/obj/effect/decal/cleanable/xenoblood/xgibs/proc/streak(list/directions) + set waitfor = 0 + var/direction = pick(directions) + for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) + sleep(2) + if(i > 0) + new /obj/effect/decal/cleanable/xenoblood/xsplatter(loc) + if(!step_to(src, get_step(src, direction), 0)) + break + +/obj/effect/decal/cleanable/xenoblood/xgibs/ex_act() + return + +/obj/effect/decal/cleanable/xenoblood/xgibs/up random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1") -/obj/effect/decal/cleanable/blood/xenoblood/gibs/down +/obj/effect/decal/cleanable/xenoblood/xgibs/down random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibdown1","xgibdown1","xgibdown1") -/obj/effect/decal/cleanable/blood/xenoblood/gibs/body +/obj/effect/decal/cleanable/xenoblood/xgibs/body random_icon_states = list("xgibhead", "xgibtorso") -/obj/effect/decal/cleanable/blood/xenoblood/gibs/torso +/obj/effect/decal/cleanable/xenoblood/xgibs/torso random_icon_states = list("xgibtorso") -/obj/effect/decal/cleanable/blood/xenoblood/gibs/limb +/obj/effect/decal/cleanable/xenoblood/xgibs/limb random_icon_states = list("xgibleg", "xgibarm") -/obj/effect/decal/cleanable/blood/xenoblood/gibs/core +/obj/effect/decal/cleanable/xenoblood/xgibs/core random_icon_states = list("xgibmid1", "xgibmid2", "xgibmid3") -/obj/effect/decal/cleanable/blood/xenoblood/gibs/larva +/obj/effect/decal/cleanable/xenoblood/xgibs/larva random_icon_states = list("xgiblarva1", "xgiblarva2") -/obj/effect/decal/cleanable/blood/xenoblood/gibs/larva/body +/obj/effect/decal/cleanable/xenoblood/xgibs/larva/body random_icon_states = list("xgiblarvahead", "xgiblarvatorso") -/obj/effect/decal/cleanable/blood/xenoblood/tracks - color = BLOOD_COLOR_XENO +/obj/effect/decal/cleanable/blood/xtracks + icon_state = "xtracks" + random_icon_states = null -/obj/effect/decal/cleanable/blood/xenoblood/tracks/Initialize() +/obj/effect/decal/cleanable/blood/xtracks/Initialize() . = ..() - add_blood_DNA(list("Unknown DNA" = "X*")) + add_blood_DNA(list("Unknown DNA" = "X*")) \ No newline at end of file diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 250391fa54..9f3fecc0d9 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -15,9 +15,8 @@ update_icon() ..() -/obj/effect/decal/cleanable/blood/transfer_blood_dna() - ..() - update_icon() +/obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) + return TRUE /obj/effect/decal/cleanable/blood/transfer_mob_blood_dna() . = ..() @@ -30,6 +29,7 @@ name = "dried blood" desc = "Looks like it's been here a while. Eew." bloodiness = 0 + color = "#3a0505" /obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases) . = ..() @@ -62,10 +62,6 @@ /obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in() return TRUE -/obj/effect/decal/cleanable/trail_holder/transfer_blood_dna() - ..() - update_icon() - /obj/effect/decal/cleanable/trail_holder/transfer_mob_blood_dna() . = ..() update_icon() @@ -82,7 +78,8 @@ /obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) . = ..() if(gib_overlay) - var/icon/gibz = new(icon, icon_state + "-overlay") + var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-overlay", layer = -LOW_OBJ_LAYER) + gibz.color = null add_overlay(gibz) reagents.add_reagent("liquidgibs", 5) diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index fcaac4ed51..32d6c8da42 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -2,122 +2,154 @@ /obj/effect/gibspawner var/sparks = 0 //whether sparks spread var/virusProb = 20 //the chance for viruses to spread on the gibs + var/gib_mob_type //generate a fake mob to transfer DNA from if we weren't passed a mob. + var/sound_to_play = 'sound/effects/blobattack.ogg' + var/sound_vol = 60 var/list/gibtypes = list() //typepaths of the gib decals to spawn var/list/gibamounts = list() //amount to spawn for each gib decal type we'll spawn. var/list/gibdirections = list() //of lists of possible directions to spread each gib decal type towards. - var/fleshcolor - var/bloodcolor -/obj/effect/gibspawner/Initialize(mapload, datum/dna/MobDNA, list/datum/disease/diseases) +/obj/effect/gibspawner/Initialize(mapload, mob/living/source_mob, list/datum/disease/diseases) . = ..() - if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len) - to_chat(world, "Gib list length mismatch!") + if(gibtypes.len != gibamounts.len) + stack_trace("Gib list amount length mismatch!") + return + if(gibamounts.len != gibdirections.len) + stack_trace("Gib list dir length mismatch!") return var/obj/effect/decal/cleanable/blood/gibs/gib = null + if(sound_to_play && isnum(sound_vol)) + playsound(src, sound_to_play, sound_vol, TRUE) + if(sparks) var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(2, 1, loc) s.start() + + var/list/dna_to_add //find the dna to pass to the spawned gibs. do note this can be null if the mob doesn't have blood. add_blood_DNA() has built in null handling. + if(source_mob) + dna_to_add = source_mob.get_blood_dna_list() //ez pz + else if(gib_mob_type) + var/mob/living/temp_mob = new gib_mob_type(src) //generate a fake mob so that we pull the right type of DNA for the gibs. + dna_to_add = temp_mob.get_blood_dna_list() + qdel(temp_mob) + else + dna_to_add = list("Non-human DNA" = random_blood_type()) //else, generate a random bloodtype for it. + + for(var/i = 1, i<= gibtypes.len, i++) if(gibamounts[i]) for(var/j = 1, j<= gibamounts[i], j++) var/gibType = gibtypes[i] - gib = new gibType(loc) + gib = new gibType(loc, diseases) if(iscarbon(loc)) var/mob/living/carbon/digester = loc digester.stomach_contents += gib - if(MobDNA) - gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.blood_type - else if(istype(src, /obj/effect/gibspawner/generic)) // Probably a monkey - gib.blood_DNA["Non-human DNA"] = "A+" + gib.add_blood_DNA(dna_to_add) + var/list/directions = gibdirections[i] if(isturf(loc)) if(directions.len) gib.streak(directions) - gib.update_icon() return INITIALIZE_HINT_QDEL - /obj/effect/gibspawner/generic gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core) - gibamounts = list(2,2,1) + gibamounts = list(2, 2, 1) + sound_vol = 40 /obj/effect/gibspawner/generic/Initialize() - playsound(src, 'sound/effects/blobattack.ogg', 40, 1) - gibdirections = list(list(WEST, NORTHWEST, SOUTHWEST, NORTH),list(EAST, NORTHEAST, SOUTHEAST, SOUTH), list()) - . = ..() + if(!gibdirections.len) + gibdirections = list(list(WEST, NORTHWEST, SOUTHWEST, NORTH),list(EAST, NORTHEAST, SOUTHEAST, SOUTH), list()) + return ..() + +/obj/effect/gibspawner/generic/animal + gib_mob_type = /mob/living/simple_animal/pet + + /obj/effect/gibspawner/human gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up, /obj/effect/decal/cleanable/blood/gibs/down, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/body, /obj/effect/decal/cleanable/blood/gibs/limb, /obj/effect/decal/cleanable/blood/gibs/core) - gibamounts = list(1,1,1,1,1,1,1) + gibamounts = list(1, 1, 1, 1, 1, 1, 1) + gib_mob_type = /mob/living/carbon/human + sound_vol = 50 /obj/effect/gibspawner/human/Initialize() - playsound(src, 'sound/effects/blobattack.ogg', 50, 1) - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) - . = ..() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) + return ..() -/obj/effect/gibspawner/humanbodypartless //only the gibs that don't look like actual full bodyparts (except torso). +/obj/effect/gibspawner/human/bodypartless //only the gibs that don't look like actual full bodyparts (except torso). gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/torso) gibamounts = list(1, 1, 1, 1, 1, 1) -/obj/effect/gibspawner/humanbodypartless/Initialize() - playsound(src, 'sound/effects/blobattack.ogg', 50, 1) - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) - . = ..() +/obj/effect/gibspawner/human/bodypartless/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) + return ..() + /obj/effect/gibspawner/xeno - gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/gibs/up, /obj/effect/decal/cleanable/blood/xenoblood/gibs/down, /obj/effect/decal/cleanable/blood/xenoblood/gibs, /obj/effect/decal/cleanable/blood/xenoblood/gibs, /obj/effect/decal/cleanable/blood/xenoblood/gibs/body, /obj/effect/decal/cleanable/blood/xenoblood/gibs/limb, /obj/effect/decal/cleanable/blood/xenoblood/gibs/core) - gibamounts = list(1,1,1,1,1,1,1) + gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/up, /obj/effect/decal/cleanable/xenoblood/xgibs/down, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/body, /obj/effect/decal/cleanable/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/xenoblood/xgibs/core) + gibamounts = list(1, 1, 1, 1, 1, 1, 1) + gib_mob_type = /mob/living/carbon/alien /obj/effect/gibspawner/xeno/Initialize() - playsound(src, 'sound/effects/blobattack.ogg', 60, 1) - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) - . = ..() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) + return ..() -/obj/effect/gibspawner/xenobodypartless //only the gibs that don't look like actual full bodyparts (except torso). - gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/gibs, /obj/effect/decal/cleanable/blood/xenoblood/gibs/core, /obj/effect/decal/cleanable/blood/xenoblood/gibs, /obj/effect/decal/cleanable/blood/xenoblood/gibs/core, /obj/effect/decal/cleanable/blood/xenoblood/gibs, /obj/effect/decal/cleanable/blood/xenoblood/gibs/torso) +/obj/effect/gibspawner/xeno/bodypartless //only the gibs that don't look like actual full bodyparts (except torso). + gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/torso) gibamounts = list(1, 1, 1, 1, 1, 1) -/obj/effect/gibspawner/xenobodypartless/Initialize() - playsound(src, 'sound/effects/blobattack.ogg', 60, 1) - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) - . = ..() +/obj/effect/gibspawner/xeno/bodypartless/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) + return ..() + + /obj/effect/gibspawner/larva - gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/gibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/gibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/gibs/larva/body, /obj/effect/decal/cleanable/blood/xenoblood/gibs/larva/body) + gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body) gibamounts = list(1, 1, 1, 1) + gib_mob_type = /mob/living/carbon/alien/larva /obj/effect/gibspawner/larva/Initialize() - playsound(src, 'sound/effects/blobattack.ogg', 60, 1) - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list(), GLOB.alldirs) - . = ..() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list(), GLOB.alldirs) + return ..() -/obj/effect/gibspawner/larvabodypartless - gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/gibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/gibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/gibs/larva) +/obj/effect/gibspawner/larva/bodypartless + gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva) gibamounts = list(1, 1, 1) -/obj/effect/gibspawner/larvabodypartless/Initialize() - playsound(src, 'sound/effects/blobattack.ogg', 60, 1) - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list()) - . = ..() +/obj/effect/gibspawner/larva/bodypartless/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list()) + return ..() + + /obj/effect/gibspawner/robot sparks = 1 gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up, /obj/effect/decal/cleanable/robot_debris/down, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris/limb) - gibamounts = list(1,1,1,1,1,1) + gibamounts = list(1, 1, 1, 1, 1, 1) + gib_mob_type = /mob/living/silicon /obj/effect/gibspawner/robot/Initialize() - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs) - gibamounts[6] = pick(0,1,2) - . = ..() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs) + gibamounts[6] = pick(0, 1, 2) + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 992028f424..5bb42af719 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -304,7 +304,7 @@ /mob/living/carbon/alien/add_splatter_floor(turf/T, small_drip) if(!T) T = get_turf(src) - var/obj/effect/decal/cleanable/blood/xenoblood/B = locate() in T.contents + var/obj/effect/decal/cleanable/xenoblood/B = locate() in T.contents if(!B) B = new(T) B.add_blood_DNA(list("UNKNOWN DNA" = "X*")) diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index 3fec41ad58..2a5fdeaa33 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -144,7 +144,7 @@ playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1) //Makes the mob have the color of the blood pool it came out of var/newcolor = rgb(149, 10, 10) - if(istype(B, /obj/effect/decal/cleanable/blood/xenoblood)) + if(istype(B, /obj/effect/decal/cleanable/xenoblood)) newcolor = rgb(43, 186, 0) add_atom_colour(newcolor, TEMPORARY_COLOUR_PRIORITY) // but only for a few seconds diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 5ebfaf663b..10fddfcb20 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -20,7 +20,7 @@ var/heat_protection = 0.5 var/leaping = 0 - gib_type = /obj/effect/decal/cleanable/blood/xenoblood/gibs + gib_type = /obj/effect/decal/cleanable/xenoblood/xgibs unique_name = 1 var/static/regex/alien_name_regex = new("alien (larva|sentinel|drone|hunter|praetorian|queen)( \\(\\d+\\))?") diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm index ce2b4401e9..77300e1435 100644 --- a/code/modules/mob/living/carbon/alien/death.dm +++ b/code/modules/mob/living/carbon/alien/death.dm @@ -2,7 +2,7 @@ if(with_bodyparts) new /obj/effect/gibspawner/xeno(drop_location()) else - new /obj/effect/gibspawner/xenobodypartless(drop_location()) + new /obj/effect/gibspawner/xeno/bodypartless(drop_location()) /mob/living/carbon/alien/gib_animation() new /obj/effect/temp_visual/gib_animation(loc, "gibbed-a") diff --git a/code/modules/mob/living/carbon/alien/larva/death.dm b/code/modules/mob/living/carbon/alien/larva/death.dm index e16be71ccf..e7cf70f441 100644 --- a/code/modules/mob/living/carbon/alien/larva/death.dm +++ b/code/modules/mob/living/carbon/alien/larva/death.dm @@ -10,7 +10,7 @@ if(with_bodyparts) new /obj/effect/gibspawner/larva(drop_location()) else - new /obj/effect/gibspawner/larvabodypartless(drop_location()) + new /obj/effect/gibspawner/larva/bodypartless(drop_location()) /mob/living/carbon/alien/larva/gib_animation() new /obj/effect/temp_visual/gib_animation(loc, "gibbed-l") diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 0b4d5f6098..24abcc2474 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -8,7 +8,7 @@ if(with_bodyparts) new /obj/effect/gibspawner/human(drop_location(), dna, get_static_viruses()) else - new /obj/effect/gibspawner/humanbodypartless(drop_location(), dna, get_static_viruses()) + new /obj/effect/gibspawner/human/bodypartless(drop_location(), dna, get_static_viruses()) /mob/living/carbon/human/spawn_dust(just_ash = FALSE) if(just_ash) diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index d576ebddbf..7dfa480ee3 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -191,7 +191,7 @@ ) if(blood) - target_types += /obj/effect/decal/cleanable/blood/xenoblood + target_types += /obj/effect/decal/cleanable/xenoblood target_types += /obj/effect/decal/cleanable/blood target_types += /obj/effect/decal/cleanable/trail_holder diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm index c4ef1253f7..c2d0a214b4 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm @@ -39,7 +39,7 @@ animal_species = /mob/living/simple_animal/hostile/asteroid/gutlunch childtype = list(/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck = 45, /mob/living/simple_animal/hostile/asteroid/gutlunch/guthen = 55) - wanted_objects = list(/obj/effect/decal/cleanable/blood/xenoblood/gibs, /obj/effect/decal/cleanable/blood/gibs/) + wanted_objects = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/gibs/) var/obj/item/udder/gutlunch/udder = null /mob/living/simple_animal/hostile/asteroid/gutlunch/Initialize() diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human.dm b/modular_citadel/code/modules/mob/living/carbon/human/human.dm index 70bac64825..66ac6c05c5 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/human.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/human.dm @@ -13,6 +13,12 @@ /mob/living/carbon/human/species/xeno race = /datum/species/xeno +/mob/living/carbon/human/species/ipc + race = /datum/species/ipc + +/mob/living/carbon/human/species/roundstartslime + race = /datum/species/jelly/roundstartslime + /mob/living/carbon/human/resist() . = ..() if(wear_suit && wear_suit.breakouttime)//added in human cuff breakout proc From 73098574b7bc0738fabcc503d3ef74fb3d4e169b Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 17 Apr 2019 01:18:21 -0500 Subject: [PATCH 009/469] what to do when footprints are being a bitch. why, we get rid of them :honk: --- code/game/atoms.dm | 31 ++++++++++-------- .../effects/decals/cleanable/humans.dm | 14 ++++---- .../effects/decals/cleanable/tracks.dm | 0 .../mob/living/carbon/human/human_movement.dm | 7 ++-- icons/effects/fluidtracks.dmi | Bin 0 -> 10964 bytes icons/effects/footprints.dmi | Bin 2389 -> 0 bytes 6 files changed, 28 insertions(+), 24 deletions(-) create mode 100644 code/game/objects/effects/decals/cleanable/tracks.dm create mode 100644 icons/effects/fluidtracks.dmi delete mode 100644 icons/effects/footprints.dmi diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 14f00e25a6..438ff5cc6b 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -324,18 +324,14 @@ return list("ANIMAL DNA" = "Y-") /mob/living/carbon/get_blood_dna_list() - for(var/bluhduh in GLOB.blood_types) - if(get_blood_id() != bluhduh) //are we a null for blood type? - var/list/dna_to_add - dna_to_add = list("Non-human DNA" = random_blood_type()) //generate a random bloodtype for it. - return dna_to_add - - var/list/blood_dna = list() - if(dna) - blood_dna[dna.unique_enzymes] = dna.blood_type - else - blood_dna["UNKNOWN DNA"] = "X*" - return blood_dna + if(get_blood_id() != "blood") + return + var/list/blood_dna = list() + if(dna) + blood_dna[dna.unique_enzymes] = dna.blood_type + else + blood_dna["UNKNOWN DNA"] = "X*" + return blood_dna /mob/living/carbon/alien/get_blood_dna_list() return list("UNKNOWN DNA" = "X*") @@ -343,7 +339,7 @@ //to add a mob's dna info into an object's blood_DNA list. /atom/proc/transfer_mob_blood_dna(mob/living/L) // Returns 0 if we have that blood already - var/list/new_blood_dna = L.get_blood_dna_list() + var/new_blood_dna = L.get_blood_dna_list() if(!new_blood_dna) return FALSE var/old_length = blood_DNA_length() @@ -352,6 +348,15 @@ return FALSE return TRUE +//to add blood dna info to the object's blood_DNA list +/atom/proc/transfer_blood_dna(list/blood_dna) + if(!blood_DNA) + blood_DNA = list() + var/old_length = blood_DNA_length() + blood_DNA |= blood_dna + if(blood_DNA_length() > old_length) + return TRUE//some new blood DNA was added + //to add blood from a mob onto something, and transfer their dna info /atom/proc/add_mob_blood(mob/living/M) var/list/blood_dna = M.get_blood_dna_list() diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 9f3fecc0d9..e19e25293f 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -98,7 +98,7 @@ sleep(2) if(i > 0) var/obj/effect/decal/cleanable/blood/splatter/splat = new(loc) - splat.transfer_mob_blood_dna(blood_DNA) + splat.transfer_blood_dna(blood_DNA) if(!step_to(src, get_step(src, direction), 0)) break @@ -158,16 +158,16 @@ random_icon_states = null var/entered_dirs = 0 var/exited_dirs = 0 + var/foot_state blood_state = BLOOD_STATE_BLOOD //the icon state to load images from var/list/shoe_types = list() /obj/effect/decal/cleanable/blood/footprints/Crossed(atom/movable/O) + ..() if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes if(S && S.bloody_shoes[blood_state]) - if(color != bloodtype_to_color(S.last_bloodtype)) - return S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(entered_dirs & H.dir)) @@ -175,20 +175,19 @@ update_icon() /obj/effect/decal/cleanable/blood/footprints/Uncrossed(atom/movable/O) + ..() if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes if(S && S.bloody_shoes[blood_state]) - if(color != bloodtype_to_color(S.last_bloodtype))//last entry - we check its color - return S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(exited_dirs & H.dir)) exited_dirs |= H.dir update_icon() + /obj/effect/decal/cleanable/blood/footprints/update_icon() - ..() cut_overlays() for(var/Ddir in GLOB.cardinals) @@ -203,8 +202,7 @@ GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]2", dir = Ddir) add_overlay(bloodstep_overlay) - alpha = BLOODY_FOOTPRINT_BASE_ALPHA + bloodiness - + alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness /obj/effect/decal/cleanable/blood/footprints/examine(mob/user) . = ..() diff --git a/code/game/objects/effects/decals/cleanable/tracks.dm b/code/game/objects/effects/decals/cleanable/tracks.dm new file mode 100644 index 0000000000..e69de29bb2 diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 1addb3615c..a753df95bf 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -56,17 +56,18 @@ //Bloody footprints var/turf/T = get_turf(src) if(S.bloody_shoes && S.bloody_shoes[S.blood_state]) - for(var/obj/effect/decal/cleanable/blood/footprints/oldFP in T) + for(var/obj/effect/decal/cleanable/blood/tracks/oldFP in T) if (oldFP.blood_state == S.blood_state) return //No oldFP or they're all a different kind of blood S.bloody_shoes[S.blood_state] = max(0, S.bloody_shoes[S.blood_state] - BLOOD_LOSS_PER_STEP) if (S.bloody_shoes[S.blood_state] > BLOOD_LOSS_IN_SPREAD) - var/obj/effect/decal/cleanable/blood/footprints/FP = new /obj/effect/decal/cleanable/blood/footprints(T) + var/obj/effect/decal/cleanable/blood/tracks/FP = new /obj/effect/decal/cleanable/blood/tracks(T) FP.blood_state = S.blood_state FP.entered_dirs |= dir FP.bloodiness = S.bloody_shoes[S.blood_state] - BLOOD_LOSS_IN_SPREAD - FP.add_blood_DNA(S.return_blood_DNA()) + FP.transfer_blood_dna(S.blood_DNA) + FP.color = blood_DNA_to_color() //Color the blood with our dna stuff FP.update_icon() update_inv_shoes() //End bloody footprints diff --git a/icons/effects/fluidtracks.dmi b/icons/effects/fluidtracks.dmi new file mode 100644 index 0000000000000000000000000000000000000000..54f08c705a908e42b531dbf7629582d80fc185d8 GIT binary patch literal 10964 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 JtHg`~{|B?(Amac4 literal 0 HcmV?d00001 diff --git a/icons/effects/footprints.dmi b/icons/effects/footprints.dmi deleted file mode 100644 index 61658e5ea7063a2d430abcef454c14892eaa823f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2389 zcmV-b399yqP)hVmV=>fQks4l$=A1Q6N=>%_=EM%*-i{ zM>5U=uRH1f<Z6tc*o(AH!TaM4zsJ9Ez5zd3K_^`%uXC*;k&bIzP|=FFKh-@WfK=1sM}870~& z`epdaJv0wULjzA?U=Ms_unELPzl;*q+Wj(oTAgOpaIdfL2f|$dC%|V+#MJdN6Q8Q7P@Mm{Q=oS3t134pk3I z>wu&MtC>*spp*$k4+c=6J*ZBhs(_dRMUGXd^=4;kC`R2=K}@+!YW9_jW4}q%1)+j_ zPNF6rQ_K*VY*54Q54N4LM3P0j$R+vOGv-3cUOzXb&>Ek_W}`&@sruU5dfLdEipxn2>B8`9&kRoA0*Oi&RGQER(2uP@M$f0feg( z150@AF`yUBH%}Zys`1sogQ^FYxAHQ8^Qw! zRwV|O;M!wAQ6I~@l?hv!@IcA`U5A}`qTB5RKP37q)JzBi25wQRU zJ(~oO{Dne-omx{^n^?|s4~3IPK`6JMHnd0N#V8eb-YLB@O+gR>A(l^hA$4Jjs*v@F+?5j@)Q9Qb^#YY;6LC+ zVi)kn2Mr@o42laMgebm0bILJ=hccdTUeWN|2Ok_y&~K@!J|&+Y zBr@UaN}Crxz*LK+VICx>o2ZY4<6ih6z;(KTJ}{}G_hoZ69d^Jn z6zp}(9Dth8J`b(3Filp83O-;jLYtp1?{QRD@B!Kq^cbrr6@1Vqkq==`%cb_d&-qQn z2Lf7Gc^4ET(aq7sF_3(&1jZ=A4)DQrjc|cq)$Jr@0H^j2C9tBK2K6Q^fs2Ebf_dHK zieH{WRKQ6<3H6*>SBwGuYz@UWCIp61K{q5O*;XUtal(aqq8+UNM$TbF2~fv;6M#qk zn+ZaK|E@k)>`YU5f;Hk`iG#mYJ1=ZsR7cr^$5|>BBVD;CrbM9|PQ0H?$16pCHvSmQ zzI(kOF{uqUO-D<0WHOi_V=Xv**3YL*Q}!EL?*b0tQ7Oz#Sl{hqAhD`;!x*Byv5mB! z=N_#_4$J!ma~tY$VSG;e8eLM!{?Z0iU0t>LW&FaEi*!MvJB4{FI1&SX5uIpS=e1>X>Z&*-Fsxj@ywM!S#v6 zRVoG(Y;h@ME7E@J>+h1;c{YjVf7cQh3uhAyolKxveno52_rbc<7kw*gKa1wo@g02e ziyxQPTHWVN{&jg*KA7k5W}KaFNNQ3m@QaI+qZ9 z>?iSo7T~`ME7t=b0PQFGo%jHkk22uG2LgW+L;do(o@hH1K8QrKw~H=(P)}OvNKPOO zH$Di&q&i@x#Y&N(C+vX_0<|y08@$Aafo^;N;ol1nY2`iT#s^RW<-l776AgXm#s|0^ z!|VmKqHW5c8y{p&>)mA1q1jPP4}5?MYD#i0!rxqX)z79p@ImnyIDf4n^e^=EsyOjM zm@BWTpHVmHOv|{)7}of*4?Z}tnw!e8btd>9>!YpiXu_JGz2<`t7CX66%uUJiFxMS< z`}Ay^wZ4oz@B!9DuHHwe2d9Jb4E;O}M8ZArfjqEvtMGve=)8=+0^q_6AE3sTR&STXjE34W`00000NkvXX Hu0mjf`tDwO From fe6407d00c9a1c1b3a332f61a986f6138399f24e Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 17 Apr 2019 04:33:56 -0500 Subject: [PATCH 010/469] I need to do something else for a bit pending reviews --- code/__DEFINES/footsteps.dm | 8 ++ code/__HELPERS/_cit_helpers.dm | 20 +++ .../effects/decals/cleanable/humans.dm | 75 +++++++--- .../effects/decals/cleanable/tracks.dm | 136 ++++++++++++++++++ code/modules/clothing/suits/_suits.dm | 4 +- .../mob/living/carbon/human/human_defines.dm | 3 + .../mob/living/carbon/human/human_movement.dm | 65 ++++++++- code/modules/surgery/bodyparts/bodyparts.dm | 4 + icons/effects/fluidtracks.dmi | Bin 10964 -> 13403 bytes 9 files changed, 290 insertions(+), 25 deletions(-) diff --git a/code/__DEFINES/footsteps.dm b/code/__DEFINES/footsteps.dm index e66d518644..56dfbe155d 100644 --- a/code/__DEFINES/footsteps.dm +++ b/code/__DEFINES/footsteps.dm @@ -7,6 +7,14 @@ #define FOOTSTEP_WATER "water" #define FOOTSTEP_LAVA "lava" +#define FOOTPRINT_SHOE "shoe" +#define FOOTPRINT_PAW "paw" +#define FOOTPRINT_CLAW "claw" +#define FOOTPRINT_WHEEL "wheels" +#define FOOTPRINT_TRAIL "trails_" +#define FOOTPRINT_SNAKE "snake" +#define FOOTPRINT_DRAG "drag" + /* id = list( diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm index c9e2f465cf..f6d82ed93a 100644 --- a/code/__HELPERS/_cit_helpers.dm +++ b/code/__HELPERS/_cit_helpers.dm @@ -92,6 +92,26 @@ GLOBAL_LIST_INIT(dildo_colors, list(//mostly neon colors "Purple" = "#e300ff"//purple )) +GLOBAL_LIST_INIT(noodle_taurs, list( + "Naga", + "Tentacle" + )) + +GLOBAL_LIST_INIT(paw_taurs, list( + "Fox", + "Wolf", + "Otie", + "Drake", + "Lab", + "Shepherd", + "Husky", + "Eevee", + "Panther", + "Horse", + "Cow", + "Tiger" + )) + //Crew objective and miscreants stuff GLOBAL_VAR_INIT(miscreants_allowed, FALSE) diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index e19e25293f..46928078e3 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -39,11 +39,6 @@ /obj/effect/decal/cleanable/blood/splatter random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") -/obj/effect/decal/cleanable/blood/tracks - icon_state = "tracks" - desc = "They look like tracks left by wheels." - random_icon_states = null - /obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose so that it shows up even on regular splatters name = "blood" icon_state = "ltrails_1" @@ -150,19 +145,18 @@ //BLOODY FOOTPRINTS -/obj/effect/decal/cleanable/blood/footprints - name = "footprints" - icon = 'icons/effects/footprints.dmi' +/obj/effect/decal/cleanable/blood/tracks + name = "tracks" + icon = 'icons/effects/fluidtracks.dmi' icon_state = "nothingwhatsoever" desc = "WHOSE FOOTPRINTS ARE THESE?" random_icon_states = null var/entered_dirs = 0 var/exited_dirs = 0 - var/foot_state - blood_state = BLOOD_STATE_BLOOD //the icon state to load images from + var/print_state = FOOTPRINT_SHOE //the icon state to load images from var/list/shoe_types = list() -/obj/effect/decal/cleanable/blood/footprints/Crossed(atom/movable/O) +/obj/effect/decal/cleanable/blood/tracks/Crossed(atom/movable/O) ..() if(ishuman(O)) var/mob/living/carbon/human/H = O @@ -174,7 +168,7 @@ entered_dirs |= H.dir update_icon() -/obj/effect/decal/cleanable/blood/footprints/Uncrossed(atom/movable/O) +/obj/effect/decal/cleanable/blood/tracks/Uncrossed(atom/movable/O) ..() if(ishuman(O)) var/mob/living/carbon/human/H = O @@ -187,24 +181,24 @@ update_icon() -/obj/effect/decal/cleanable/blood/footprints/update_icon() +/obj/effect/decal/cleanable/blood/tracks/update_icon() cut_overlays() for(var/Ddir in GLOB.cardinals) if(entered_dirs & Ddir) - var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"] + var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]1", dir = Ddir) + GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir) add_overlay(bloodstep_overlay) if(exited_dirs & Ddir) - var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] + var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"] if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]2", dir = Ddir) + GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir) add_overlay(bloodstep_overlay) alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness -/obj/effect/decal/cleanable/blood/footprints/examine(mob/user) +/obj/effect/decal/cleanable/blood/tracks/examine(mob/user) . = ..() if(shoe_types.len) . += "You recognise the footprints as belonging to:\n" @@ -214,14 +208,51 @@ to_chat(user, .) -/obj/effect/decal/cleanable/blood/footprints/replace_decal(obj/effect/decal/cleanable/C) +/obj/effect/decal/cleanable/blood/tracks/replace_decal(obj/effect/decal/cleanable/C) if(blood_state != C.blood_state) //We only replace footprints of the same type as us return if(color != C.color) return ..() -/obj/effect/decal/cleanable/blood/footprints/can_bloodcrawl_in() +/obj/effect/decal/cleanable/blood/tracks/can_bloodcrawl_in() if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY)) - return 1 - return 0 + return TRUE + return FALSE + +/obj/effect/decal/cleanable/blood/tracks/footprints + name = "footprints" + desc = "They look like tracks left by footwear." + icon_state = FOOTPRINT_SHOE + print_state = FOOTPRINT_SHOE + +/obj/effect/decal/cleanable/blood/tracks/snake + name = "tracks" + desc = "They look like tracks left by a giant snake." + icon_state = FOOTPRINT_SNAKE + print_state = FOOTPRINT_SNAKE + +/obj/effect/decal/cleanable/blood/tracks/paw + name = "tracks" + desc = "They look like tracks left by mammalian paws." + icon_state = FOOTPRINT_PAW + print_state = FOOTPRINT_PAW + +/obj/effect/decal/cleanable/blood/tracks/claw + name = "tracks" + desc = "They look like tracks left by reptilian claws." + icon_state = FOOTPRINT_CLAW + print_state = FOOTPRINT_CLAW + +/obj/effect/decal/cleanable/blood/tracks/wheels + name = "tracks" + desc = "They look like tracks left by wheels." + gender = PLURAL + icon_state = FOOTPRINT_WHEEL + print_state = FOOTPRINT_WHEEL + +/obj/effect/decal/cleanable/blood/tracks/body + name = "trails" + desc = "A trail left by something being dragged." + icon_state = FOOTPRINT_DRAG + print_state = FOOTPRINT_DRAG diff --git a/code/game/objects/effects/decals/cleanable/tracks.dm b/code/game/objects/effects/decals/cleanable/tracks.dm index e69de29bb2..215ad98bfb 100644 --- a/code/game/objects/effects/decals/cleanable/tracks.dm +++ b/code/game/objects/effects/decals/cleanable/tracks.dm @@ -0,0 +1,136 @@ +// Stolen en masse from N3X15 of /vg/station with much gratitude. + +// The idea is to have 4 bits for coming and 4 for going. +#define TRACKS_COMING_NORTH 1 +#define TRACKS_COMING_SOUTH 2 +#define TRACKS_COMING_EAST 4 +#define TRACKS_COMING_WEST 8 +#define TRACKS_GOING_NORTH 16 +#define TRACKS_GOING_SOUTH 32 +#define TRACKS_GOING_EAST 64 +#define TRACKS_GOING_WEST 128 + +// color-dir-dry +var/global/list/image/fluidtrack_cache=list() + +/datum/fluidtrack + var/direction=0 + var/basecolor=COLOR_BLOOD_HUMAN + var/image/overlay + +/datum/fluidtrack/New(_direction,_color,_wet) + src.direction=_direction + src.basecolor=_color + +// Footprints, tire trails... +/obj/effect/decal/cleanable/blood/tracks + amount = 0 + random_icon_states = null + var/dirs=0 + icon = 'icons/effects/fluidtracks.dmi' + icon_state = "" + var/coming_state="blood1" + var/going_state="blood2" + var/updatedtracks=0 + + // dir = id in stack + var/list/setdirs=list( + "1"=0, + "2"=0, + "4"=0, + "8"=0, + "16"=0, + "32"=0, + "64"=0, + "128"=0 + ) + + // List of laid tracks and their colors. + var/list/datum/fluidtrack/stack=list() + + /** + * Add tracks to an existing trail. + * + * @param DNA bloodDNA to add to collection. + * @param comingdir Direction tracks come from, or 0. + * @param goingdir Direction tracks are going to (or 0). + * @param bloodcolor Color of the blood when wet. + */ +/obj/effect/decal/cleanable/blood/tracks/proc/AddTracks(var/list/DNA, var/comingdir, var/goingdir, var/bloodcolor=BLOOD_COLOR_HUMAN) + var/updated=0 + // Shift our goingdir 4 spaces to the left so it's in the GOING bitblock. + var/realgoing=goingdir<<4 + + // Current bit + var/b=0 + + var/datum/fluidtrack/track + + // Process 4 bits + for(var/bi=0;bi<4;bi++) + b=1<>4 + + if(track.overlay) + track.overlay=null + var/image/I = image(icon, icon_state=state, dir=num2dir(truedir)) + I.color = track.basecolor + + track.fresh=0 + track.overlay=I + stack[stack_idx]=track + overlays += I + updatedtracks=0 // Clear our memory of updated tracks. + diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index 0a44b57c6a..f4fe92e86b 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -31,12 +31,12 @@ H.update_inv_wear_suit() if(("taur" in H.dna.species.mutant_bodyparts) && (H.dna.features["taur"] != "None")) - if(H.dna.features["taur"] in list("Naga", "Tentacle")) + if(H.dna.features["taur"] in GLOB.noodle_taurs) taurmode = SNEK_TAURIC if(tauric == TRUE) center = TRUE dimension_x = 64 - else if(H.dna.features["taur"] in list("Fox","Wolf","Otie","Drake","Lab","Shepherd","Husky","Eevee","Panther","Horse","Cow","Tiger")) + else if(H.dna.features["taur"] in GLOB.paw_taurs) taurmode = PAW_TAURIC if(tauric == TRUE) center = TRUE diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 4f168d97fc..ed632c24d5 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -43,6 +43,9 @@ var/bleed_rate = 0 //how much are we bleeding var/bleedsuppress = 0 //for stopping bloodloss, eventually this will be limb-based like bleeding + var/blood_state = BLOOD_STATE_NOT_BLOODY + var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) + var/name_override //For temporary visible name changes var/nameless = FALSE //For drones of both the insectoid and robotic kind. And other types of nameless critters. diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index a753df95bf..5ef1223abe 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -62,7 +62,7 @@ //No oldFP or they're all a different kind of blood S.bloody_shoes[S.blood_state] = max(0, S.bloody_shoes[S.blood_state] - BLOOD_LOSS_PER_STEP) if (S.bloody_shoes[S.blood_state] > BLOOD_LOSS_IN_SPREAD) - var/obj/effect/decal/cleanable/blood/tracks/FP = new /obj/effect/decal/cleanable/blood/tracks(T) + var/obj/effect/decal/cleanable/blood/tracks/FP = new /obj/effect/decal/cleanable/blood/tracks/footprints(T) FP.blood_state = S.blood_state FP.entered_dirs |= dir FP.bloodiness = S.bloody_shoes[S.blood_state] - BLOOD_LOSS_IN_SPREAD @@ -72,6 +72,69 @@ update_inv_shoes() //End bloody footprints S.step_action() + else + if(!buckled) + + if(!lying) + if(loc == NewLoc) + if(!has_gravity(loc)) + return + var/turf/T = get_turf(src) + if(blood_smear && blood_smear[blood_state]) + for(var/obj/effect/decal/cleanable/blood/tracks/oldFP in T) + if (oldFP.blood_state == blood_state) + return + blood_smear[blood_state] = max(0, blood_smear[blood_state] - BLOOD_LOSS_PER_STEP) + if(blood_smear[blood_state] > BLOOD_LOSS_IN_SPREAD) + var/obj/effect/decal/cleanable/blood/tracks/FP = new /obj/effect/decal/cleanable/blood/tracks/footprints(T) + if(DIGITIGRADE in dna.species.species_traits) + if(dna.species.id == ("lizard" || "ashwalker" || "xeno")) + FP.icon_state = FOOTPRINT_CLAW + FP.print_state = FOOTPRINT_CLAW + else if(dna.species.id == "Mammal") + FP.icon_state = FOOTPRINT_PAW + FP.print_state = FOOTPRINT_PAW + else + FP.icon_state = FOOTPRINT_SHOE + FP.print_state = FOOTPRINT_SHOE + else if(("taur" in dna.species.mutant_bodyparts) && (dna.features["taur"] != "None")) + if(dna.features["taur"] in GLOB.noodle_taurs) + FP.icon_state = FOOTPRINT_SNAKE + FP.print_state = FOOTPRINT_SNAKE + else if(dna.features["taur"] in GLOB.paw_taurs) + FP.icon_state = FOOTPRINT_PAW + FP.print_state = FOOTPRINT_PAW + else + FP.icon_state = FOOTPRINT_SHOE + FP.print_state = FOOTPRINT_SHOE + FP.blood_state = blood_state + FP.entered_dirs |= dir + FP.bloodiness = blood_smear - BLOOD_LOSS_IN_SPREAD + FP.transfer_blood_dna(blood_DNA) + FP.color = blood_DNA_to_color() //Color the blood with our dna stuff + FP.update_icon() + + else //we're on the floor, smear some stuff around + if(loc == NewLoc) + if(!has_gravity(loc)) + return + var/turf/T = get_turf(src) + if(blood_smear && blood_smear[blood_state]) + for(var/obj/effect/decal/cleanable/blood/tracks/oldFP in T) + if (oldFP.blood_state == blood_state) + return + blood_smear[blood_state] = max(0, blood_smear[blood_state] - BLOOD_LOSS_PER_STEP) + if(blood_smear[blood_state] > BLOOD_LOSS_IN_SPREAD) + var/obj/effect/decal/cleanable/blood/tracks/FP = new /obj/effect/decal/cleanable/blood/tracks/footprints(T) + FP.icon_state = FOOTPRINT_DRAG + FP.print_state = FOOTPRINT_DRAG + FP.blood_state = blood_state + FP.entered_dirs |= dir + FP.bloodiness = blood_smear - BLOOD_LOSS_IN_SPREAD + FP.transfer_blood_dna(blood_DNA) + FP.color = blood_DNA_to_color() //Color the blood with our dna stuff + FP.update_icon() + /mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee. if(dna.species.space_move(src)) diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index f394351285..7cdc5fb88f 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -680,6 +680,8 @@ px_y = 12 stam_heal_tick = 2 max_stamina_damage = 50 + var/blood_state = BLOOD_STATE_NOT_BLOODY + var/list/bloody_legs = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) /obj/item/bodypart/l_leg/set_disabled(new_disabled = TRUE) ..() @@ -727,6 +729,8 @@ px_y = 12 max_stamina_damage = 50 stam_heal_tick = 2 + var/blood_state = BLOOD_STATE_NOT_BLOODY + var/list/bloody_legs = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) /obj/item/bodypart/r_leg/set_disabled(new_disabled = TRUE) ..() diff --git a/icons/effects/fluidtracks.dmi b/icons/effects/fluidtracks.dmi index 54f08c705a908e42b531dbf7629582d80fc185d8..01335f3daf26f96e4eb476c85b34ea2a81ebda08 100644 GIT binary patch literal 13403 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©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 JtHg`~{|B?(Amac4 From a0b7c15e0d3a22dd56003e3172ef9146787bf07f Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 17 Apr 2019 04:52:39 -0500 Subject: [PATCH 011/469] whatever Travis, it isn't even enabled, fuck off --- .../effects/decals/cleanable/tracks.dm | 136 ------------------ 1 file changed, 136 deletions(-) delete mode 100644 code/game/objects/effects/decals/cleanable/tracks.dm diff --git a/code/game/objects/effects/decals/cleanable/tracks.dm b/code/game/objects/effects/decals/cleanable/tracks.dm deleted file mode 100644 index 215ad98bfb..0000000000 --- a/code/game/objects/effects/decals/cleanable/tracks.dm +++ /dev/null @@ -1,136 +0,0 @@ -// Stolen en masse from N3X15 of /vg/station with much gratitude. - -// The idea is to have 4 bits for coming and 4 for going. -#define TRACKS_COMING_NORTH 1 -#define TRACKS_COMING_SOUTH 2 -#define TRACKS_COMING_EAST 4 -#define TRACKS_COMING_WEST 8 -#define TRACKS_GOING_NORTH 16 -#define TRACKS_GOING_SOUTH 32 -#define TRACKS_GOING_EAST 64 -#define TRACKS_GOING_WEST 128 - -// color-dir-dry -var/global/list/image/fluidtrack_cache=list() - -/datum/fluidtrack - var/direction=0 - var/basecolor=COLOR_BLOOD_HUMAN - var/image/overlay - -/datum/fluidtrack/New(_direction,_color,_wet) - src.direction=_direction - src.basecolor=_color - -// Footprints, tire trails... -/obj/effect/decal/cleanable/blood/tracks - amount = 0 - random_icon_states = null - var/dirs=0 - icon = 'icons/effects/fluidtracks.dmi' - icon_state = "" - var/coming_state="blood1" - var/going_state="blood2" - var/updatedtracks=0 - - // dir = id in stack - var/list/setdirs=list( - "1"=0, - "2"=0, - "4"=0, - "8"=0, - "16"=0, - "32"=0, - "64"=0, - "128"=0 - ) - - // List of laid tracks and their colors. - var/list/datum/fluidtrack/stack=list() - - /** - * Add tracks to an existing trail. - * - * @param DNA bloodDNA to add to collection. - * @param comingdir Direction tracks come from, or 0. - * @param goingdir Direction tracks are going to (or 0). - * @param bloodcolor Color of the blood when wet. - */ -/obj/effect/decal/cleanable/blood/tracks/proc/AddTracks(var/list/DNA, var/comingdir, var/goingdir, var/bloodcolor=BLOOD_COLOR_HUMAN) - var/updated=0 - // Shift our goingdir 4 spaces to the left so it's in the GOING bitblock. - var/realgoing=goingdir<<4 - - // Current bit - var/b=0 - - var/datum/fluidtrack/track - - // Process 4 bits - for(var/bi=0;bi<4;bi++) - b=1<>4 - - if(track.overlay) - track.overlay=null - var/image/I = image(icon, icon_state=state, dir=num2dir(truedir)) - I.color = track.basecolor - - track.fresh=0 - track.overlay=I - stack[stack_idx]=track - overlays += I - updatedtracks=0 // Clear our memory of updated tracks. - From c65e551c073de6e25995d918b84507c831ec08ae Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 17 Apr 2019 06:01:59 -0500 Subject: [PATCH 012/469] makes travis shutup --- .../effects/decals/cleanable/humans.dm | 26 +++++++++---------- .../mob/living/carbon/human/human_movement.dm | 12 ++++----- .../mob/living/simple_animal/bot/mulebot.dm | 2 +- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 46928078e3..3126142733 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -145,7 +145,7 @@ //BLOODY FOOTPRINTS -/obj/effect/decal/cleanable/blood/tracks +/obj/effect/decal/cleanable/blood/footprints name = "tracks" icon = 'icons/effects/fluidtracks.dmi' icon_state = "nothingwhatsoever" @@ -156,7 +156,7 @@ var/print_state = FOOTPRINT_SHOE //the icon state to load images from var/list/shoe_types = list() -/obj/effect/decal/cleanable/blood/tracks/Crossed(atom/movable/O) +/obj/effect/decal/cleanable/blood/footprints/tracks/Crossed(atom/movable/O) ..() if(ishuman(O)) var/mob/living/carbon/human/H = O @@ -168,7 +168,7 @@ entered_dirs |= H.dir update_icon() -/obj/effect/decal/cleanable/blood/tracks/Uncrossed(atom/movable/O) +/obj/effect/decal/cleanable/blood/footprints/tracks/Uncrossed(atom/movable/O) ..() if(ishuman(O)) var/mob/living/carbon/human/H = O @@ -181,7 +181,7 @@ update_icon() -/obj/effect/decal/cleanable/blood/tracks/update_icon() +/obj/effect/decal/cleanable/blood/footprints/tracks/update_icon() cut_overlays() for(var/Ddir in GLOB.cardinals) @@ -198,7 +198,7 @@ alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness -/obj/effect/decal/cleanable/blood/tracks/examine(mob/user) +/obj/effect/decal/cleanable/blood/footprints/tracks/examine(mob/user) . = ..() if(shoe_types.len) . += "You recognise the footprints as belonging to:\n" @@ -208,50 +208,50 @@ to_chat(user, .) -/obj/effect/decal/cleanable/blood/tracks/replace_decal(obj/effect/decal/cleanable/C) +/obj/effect/decal/cleanable/blood/footprints/tracks/replace_decal(obj/effect/decal/cleanable/C) if(blood_state != C.blood_state) //We only replace footprints of the same type as us return if(color != C.color) return ..() -/obj/effect/decal/cleanable/blood/tracks/can_bloodcrawl_in() +/obj/effect/decal/cleanable/blood/footprints/tracks/can_bloodcrawl_in() if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY)) return TRUE return FALSE -/obj/effect/decal/cleanable/blood/tracks/footprints +/obj/effect/decal/cleanable/blood/footprints/tracks/footprints name = "footprints" desc = "They look like tracks left by footwear." icon_state = FOOTPRINT_SHOE print_state = FOOTPRINT_SHOE -/obj/effect/decal/cleanable/blood/tracks/snake +/obj/effect/decal/cleanable/blood/footprints/tracks/snake name = "tracks" desc = "They look like tracks left by a giant snake." icon_state = FOOTPRINT_SNAKE print_state = FOOTPRINT_SNAKE -/obj/effect/decal/cleanable/blood/tracks/paw +/obj/effect/decal/cleanable/blood/footprints/tracks/paw name = "tracks" desc = "They look like tracks left by mammalian paws." icon_state = FOOTPRINT_PAW print_state = FOOTPRINT_PAW -/obj/effect/decal/cleanable/blood/tracks/claw +/obj/effect/decal/cleanable/blood/footprints/tracks/claw name = "tracks" desc = "They look like tracks left by reptilian claws." icon_state = FOOTPRINT_CLAW print_state = FOOTPRINT_CLAW -/obj/effect/decal/cleanable/blood/tracks/wheels +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels name = "tracks" desc = "They look like tracks left by wheels." gender = PLURAL icon_state = FOOTPRINT_WHEEL print_state = FOOTPRINT_WHEEL -/obj/effect/decal/cleanable/blood/tracks/body +/obj/effect/decal/cleanable/blood/footprints/tracks/body name = "trails" desc = "A trail left by something being dragged." icon_state = FOOTPRINT_DRAG diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 5ef1223abe..cc5b7f392d 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -56,13 +56,13 @@ //Bloody footprints var/turf/T = get_turf(src) if(S.bloody_shoes && S.bloody_shoes[S.blood_state]) - for(var/obj/effect/decal/cleanable/blood/tracks/oldFP in T) + for(var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP in T) if (oldFP.blood_state == S.blood_state) return //No oldFP or they're all a different kind of blood S.bloody_shoes[S.blood_state] = max(0, S.bloody_shoes[S.blood_state] - BLOOD_LOSS_PER_STEP) if (S.bloody_shoes[S.blood_state] > BLOOD_LOSS_IN_SPREAD) - var/obj/effect/decal/cleanable/blood/tracks/FP = new /obj/effect/decal/cleanable/blood/tracks/footprints(T) + var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/footprints(T) FP.blood_state = S.blood_state FP.entered_dirs |= dir FP.bloodiness = S.bloody_shoes[S.blood_state] - BLOOD_LOSS_IN_SPREAD @@ -81,12 +81,12 @@ return var/turf/T = get_turf(src) if(blood_smear && blood_smear[blood_state]) - for(var/obj/effect/decal/cleanable/blood/tracks/oldFP in T) + for(var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP in T) if (oldFP.blood_state == blood_state) return blood_smear[blood_state] = max(0, blood_smear[blood_state] - BLOOD_LOSS_PER_STEP) if(blood_smear[blood_state] > BLOOD_LOSS_IN_SPREAD) - var/obj/effect/decal/cleanable/blood/tracks/FP = new /obj/effect/decal/cleanable/blood/tracks/footprints(T) + var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/footprints(T) if(DIGITIGRADE in dna.species.species_traits) if(dna.species.id == ("lizard" || "ashwalker" || "xeno")) FP.icon_state = FOOTPRINT_CLAW @@ -120,12 +120,12 @@ return var/turf/T = get_turf(src) if(blood_smear && blood_smear[blood_state]) - for(var/obj/effect/decal/cleanable/blood/tracks/oldFP in T) + for(var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP in T) if (oldFP.blood_state == blood_state) return blood_smear[blood_state] = max(0, blood_smear[blood_state] - BLOOD_LOSS_PER_STEP) if(blood_smear[blood_state] > BLOOD_LOSS_IN_SPREAD) - var/obj/effect/decal/cleanable/blood/tracks/FP = new /obj/effect/decal/cleanable/blood/tracks/footprints(T) + var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/body(T) FP.icon_state = FOOTPRINT_DRAG FP.print_state = FOOTPRINT_DRAG FP.blood_state = blood_state diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index c45d435253..41ab5eb79f 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -473,7 +473,7 @@ return if(isturf(next)) if(bloodiness) - var/obj/effect/decal/cleanable/blood/tracks/B = new(loc) + var/obj/effect/decal/cleanable/blood/footprints/tracks/wheels/B = new(loc) B.add_blood_DNA(return_blood_DNA()) var/newdir = get_dir(next, loc) if(newdir == dir) From 773a94dea69b51777991afeb5d7cfd79cf6daa41 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 17 Apr 2019 06:28:07 -0500 Subject: [PATCH 013/469] I really dunno at this point, weh --- code/game/atoms.dm | 2 +- icons/effects/fluidtracks.dmi | Bin 13403 -> 13404 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 438ff5cc6b..f3ebcf34af 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -321,7 +321,7 @@ /mob/living/proc/get_blood_dna_list() if(get_blood_id() != "blood") return - return list("ANIMAL DNA" = "Y-") + return list("blood_DNA"= "ANIMAL", "blood_type"="Y-") /mob/living/carbon/get_blood_dna_list() if(get_blood_id() != "blood") diff --git a/icons/effects/fluidtracks.dmi b/icons/effects/fluidtracks.dmi index 01335f3daf26f96e4eb476c85b34ea2a81ebda08..6579334e87a3948321a20941478925e3ea182fd1 100644 GIT binary patch delta 220 zcmV<203-j~XxwO!B!9fFDZ*Bkpc$}?~u?oU46h-IcD<17y#MTNr zWRVu>(EfrvOl*R&EqTHGzC#xkYC1SRIQPK4FNITmZaS#ihCh`fGY%l2+-x}uMtThb zb_HiznO^((Adg;wfQ0m@@`N*K9D#t6vzx<*A`p;&Qbm-SFj2%+6Nb3yYS*Z)c8$wB zG?p%Jy2DSfSPTBqNCV!N-@x?fX&OBU$oJVX`wqr8kPiF!p3-3-cLlAKrFi+7TkM`f W-BnPv4SxX?!NS_x)Z8es^Jp_6nrg!U delta 219 zcmV<103`q1XxnIzB!9+wR9JLGWpiV4X>fFDZ*Bkpc$}?}u?mAQ6h-IcD;~N^sn$X} zWGPB<&|fIQL=&1C$qUWzcW`M7HVz#hoOj^d6fX6(>7Z&G`jif}oq$2P+fx#>@Cq0l z3QCmJqw>pvo_h%llEGS^CzJ^75Ezt{430k}0)zaMDx%cPLr`2b^AI=nW{avfTU_38 zZSeM{JN*QUt>7PxIPtq&4JOKZoUI22`7t|Z-;ePPgyUm;PvQ6&cLgP-!Fc?_t+uC7 VcNJ7^Ltj8S!t5oc_!F`8XfvRxW;y@> From 6698d9646bc92b35effbc0dabd592d2d81ec21ce Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 17 Apr 2019 06:32:42 -0500 Subject: [PATCH 014/469] go away Travis --- code/game/objects/effects/decals/cleanable/humans.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 3126142733..989bd213f4 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -39,6 +39,11 @@ /obj/effect/decal/cleanable/blood/splatter random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") +/obj/effect/decal/cleanable/blood/tracks + icon_state = "tracks" + desc = "They look like tracks left by wheels." + random_icon_states = null + /obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose so that it shows up even on regular splatters name = "blood" icon_state = "ltrails_1" From 996662ebeaf6d3b266ac9206386dea87bf536716 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Mon, 6 May 2019 04:35:09 -0500 Subject: [PATCH 015/469] adjust and reset things --- .../effects/decals/cleanable/humans.dm | 3 +-- .../mob/living/carbon/human/human_movement.dm | 27 +++++++++---------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 989bd213f4..e03766fb82 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -78,8 +78,7 @@ /obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) . = ..() if(gib_overlay) - var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-overlay", layer = -LOW_OBJ_LAYER) - gibz.color = null + var/icon/gibz = new(icon, icon_state + "-overlay") add_overlay(gibz) reagents.add_reagent("liquidgibs", 5) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index cc5b7f392d..9d233591d3 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -56,25 +56,24 @@ //Bloody footprints var/turf/T = get_turf(src) if(S.bloody_shoes && S.bloody_shoes[S.blood_state]) - for(var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP in T) - if (oldFP.blood_state == S.blood_state) - return - //No oldFP or they're all a different kind of blood - S.bloody_shoes[S.blood_state] = max(0, S.bloody_shoes[S.blood_state] - BLOOD_LOSS_PER_STEP) - if (S.bloody_shoes[S.blood_state] > BLOOD_LOSS_IN_SPREAD) - var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/footprints(T) - FP.blood_state = S.blood_state - FP.entered_dirs |= dir - FP.bloodiness = S.bloody_shoes[S.blood_state] - BLOOD_LOSS_IN_SPREAD - FP.transfer_blood_dna(S.blood_DNA) - FP.color = blood_DNA_to_color() //Color the blood with our dna stuff - FP.update_icon() + var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints) in T + if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == bloodtype_to_color(S.last_bloodtype))) + return + S.bloody_shoes[S.blood_state] = max(0, S.bloody_shoes[S.blood_state]-BLOOD_LOSS_PER_STEP) + var/obj/effect/decal/cleanable/blood/footprints/FP = new /obj/effect/decal/cleanable/blood/footprints(T) + FP.blood_state = S.blood_state + FP.entered_dirs |= dir + FP.bloodiness = S.bloody_shoes[S.blood_state] + if(S.last_blood_DNA && S.last_bloodtype) + FP.blood_DNA += list(S.last_blood_DNA = S.last_bloodtype) + //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood + FP.update_icon() update_inv_shoes() //End bloody footprints + S.step_action() else if(!buckled) - if(!lying) if(loc == NewLoc) if(!has_gravity(loc)) From d14943d4b0fe6c3ff374b75b53daf18e73d659f5 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Tue, 7 May 2019 05:29:45 -0500 Subject: [PATCH 016/469] well we have footprints now, xenoblood back to blood subtype. --- code/game/atoms.dm | 6 +-- code/game/gamemodes/meteor/meteors.dm | 2 +- .../effects/decals/cleanable/aliens.dm | 39 ++++++++++--------- .../effects/decals/cleanable/humans.dm | 11 +++++- .../objects/effects/spawners/gibspawner.dm | 8 ++-- code/modules/mob/living/blood.dm | 3 +- code/modules/mob/living/bloodcrawl.dm | 2 +- code/modules/mob/living/carbon/alien/alien.dm | 2 +- .../mob/living/carbon/human/human_movement.dm | 21 +++++----- .../mob/living/simple_animal/bot/cleanbot.dm | 2 +- .../hostile/mining_mobs/gutlunch.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 10 ++--- 12 files changed, 60 insertions(+), 48 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index f3ebcf34af..b547482127 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -321,7 +321,7 @@ /mob/living/proc/get_blood_dna_list() if(get_blood_id() != "blood") return - return list("blood_DNA"= "ANIMAL", "blood_type"="Y-") + return list("donor"= "ANIMAL","bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"="Y-") /mob/living/carbon/get_blood_dna_list() if(get_blood_id() != "blood") @@ -334,7 +334,7 @@ return blood_dna /mob/living/carbon/alien/get_blood_dna_list() - return list("UNKNOWN DNA" = "X*") + return list("donor"= "UNKNOWN DNA","bloodcolor" = BLOOD_COLOR_XENO, "blood_type"= "X*") //to add a mob's dna info into an object's blood_DNA list. /atom/proc/transfer_mob_blood_dna(mob/living/L) @@ -372,7 +372,7 @@ else colors[blood_DNA[bloop]] = 1 - var/final_rgb = "#940000" + var/final_rgb = color if(colors.len) var/sum = 0 //this is all shitcode, but it works; trust me diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 426d23b4ab..36e363df25 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -317,7 +317,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event /obj/effect/meteor/meaty/xeno/ram_turf(turf/T) if(!isspaceturf(T)) - new /obj/effect/decal/cleanable/xenoblood(T) + new /obj/effect/decal/cleanable/blood/xenoblood(T) //Station buster Tunguska /obj/effect/meteor/tunguska diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 718c20126a..bbb50def0f 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -1,6 +1,6 @@ // Note: BYOND is object oriented. There is no reason for this to be copy/pasted blood code. -/obj/effect/decal/cleanable/xenoblood +/obj/effect/decal/cleanable/blood/xenoblood name = "xeno blood" desc = "It's green and acidic. It looks like... blood?" icon = 'icons/effects/blood.dmi' @@ -9,15 +9,16 @@ bloodiness = BLOOD_AMOUNT_PER_DECAL blood_state = BLOOD_STATE_BLOOD color = BLOOD_COLOR_XENO + blood_DNA = list() -/obj/effect/decal/cleanable/xenoblood/Initialize() +/obj/effect/decal/cleanable/blood/xenoblood/Initialize() . = ..() - add_blood_DNA(list("UNKNOWN DNA" = "X*")) + add_blood_DNA(list("donor"= "UNKNOWN DNA","bloodcolor" = BLOOD_COLOR_XENO, "blood_type"= "X*")) -/obj/effect/decal/cleanable/xenoblood/xsplatter +/obj/effect/decal/cleanable/blood/xenoblood/xsplatter random_icon_states = list("xgibbl1", "xgibbl2", "xgibbl3", "xgibbl4", "xgibbl5") -/obj/effect/decal/cleanable/xenoblood/xgibs +/obj/effect/decal/cleanable/blood/xenoblood/xgibs name = "xeno gibs" desc = "Gnarly..." icon = 'icons/effects/blood.dmi' @@ -26,47 +27,47 @@ random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6") mergeable_decal = FALSE -/obj/effect/decal/cleanable/xenoblood/xgibs/proc/streak(list/directions) +/obj/effect/decal/cleanable/blood/xenoblood/xgibs/proc/streak(list/directions) set waitfor = 0 var/direction = pick(directions) for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) sleep(2) if(i > 0) - new /obj/effect/decal/cleanable/xenoblood/xsplatter(loc) + new /obj/effect/decal/cleanable/blood/xenoblood/xsplatter(loc) if(!step_to(src, get_step(src, direction), 0)) break -/obj/effect/decal/cleanable/xenoblood/xgibs/ex_act() +/obj/effect/decal/cleanable/blood/xenoblood/xgibs/ex_act() return -/obj/effect/decal/cleanable/xenoblood/xgibs/up +/obj/effect/decal/cleanable/blood/xenoblood/xgibs/up random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1") -/obj/effect/decal/cleanable/xenoblood/xgibs/down +/obj/effect/decal/cleanable/blood/xenoblood/xgibs/down random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibdown1","xgibdown1","xgibdown1") -/obj/effect/decal/cleanable/xenoblood/xgibs/body +/obj/effect/decal/cleanable/blood/xenoblood/xgibs/body random_icon_states = list("xgibhead", "xgibtorso") -/obj/effect/decal/cleanable/xenoblood/xgibs/torso +/obj/effect/decal/cleanable/blood/xenoblood/xgibs/torso random_icon_states = list("xgibtorso") -/obj/effect/decal/cleanable/xenoblood/xgibs/limb +/obj/effect/decal/cleanable/blood/xenoblood/xgibs/limb random_icon_states = list("xgibleg", "xgibarm") -/obj/effect/decal/cleanable/xenoblood/xgibs/core +/obj/effect/decal/cleanable/blood/xenoblood/xgibs/core random_icon_states = list("xgibmid1", "xgibmid2", "xgibmid3") -/obj/effect/decal/cleanable/xenoblood/xgibs/larva +/obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva random_icon_states = list("xgiblarva1", "xgiblarva2") -/obj/effect/decal/cleanable/xenoblood/xgibs/larva/body +/obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva/body random_icon_states = list("xgiblarvahead", "xgiblarvatorso") -/obj/effect/decal/cleanable/blood/xtracks +/obj/effect/decal/cleanable/blood/blood/xtracks icon_state = "xtracks" random_icon_states = null -/obj/effect/decal/cleanable/blood/xtracks/Initialize() +/obj/effect/decal/cleanable/blood/blood/xtracks/Initialize() . = ..() - add_blood_DNA(list("Unknown DNA" = "X*")) \ No newline at end of file + add_blood_DNA(list("donor"= "UNKNOWN DNA","bloodcolor" = BLOOD_COLOR_XENO, "blood_type"= "X*")) \ No newline at end of file diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index e03766fb82..cc41886b76 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -34,7 +34,7 @@ /obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases) . = ..() icon_state += "-old" //This IS necessary because the parent /blood type uses icon randomization. - add_blood_DNA(list("Non-human DNA" = "A+")) + add_blood_DNA(list("donor"= "Non-human DNA", "blood_type"= "A+", "bloodcolor" = color)) /obj/effect/decal/cleanable/blood/splatter random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") @@ -74,11 +74,18 @@ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") mergeable_decal = FALSE var/gib_overlay = FALSE + var/fleshcolor /obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) . = ..() if(gib_overlay) - var/icon/gibz = new(icon, icon_state + "-overlay") + var/generic_skin = random_skin_tone() + var/ethnicity = "#[skintone2hex(generic_skin)]" + var/image/gibz = image(icon, icon_state + "-overlay", layer = LOW_OBJ_LAYER-0.1) + if(!fleshcolor) + gibz.color = ethnicity + else + gibz.color = fleshcolor add_overlay(gibz) reagents.add_reagent("liquidgibs", 5) diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index 32d6c8da42..0e6fcaf367 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -99,7 +99,7 @@ /obj/effect/gibspawner/xeno - gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/up, /obj/effect/decal/cleanable/xenoblood/xgibs/down, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/body, /obj/effect/decal/cleanable/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/xenoblood/xgibs/core) + gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs/up, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/down, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/body, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/core) gibamounts = list(1, 1, 1, 1, 1, 1, 1) gib_mob_type = /mob/living/carbon/alien @@ -110,7 +110,7 @@ /obj/effect/gibspawner/xeno/bodypartless //only the gibs that don't look like actual full bodyparts (except torso). - gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/torso) + gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/core, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/core, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/torso) gibamounts = list(1, 1, 1, 1, 1, 1) @@ -122,7 +122,7 @@ /obj/effect/gibspawner/larva - gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body) + gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva/body, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva/body) gibamounts = list(1, 1, 1, 1) gib_mob_type = /mob/living/carbon/alien/larva @@ -132,7 +132,7 @@ return ..() /obj/effect/gibspawner/larva/bodypartless - gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva) + gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva) gibamounts = list(1, 1, 1) /obj/effect/gibspawner/larva/bodypartless/Initialize() diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 5bb42af719..e4b0923df6 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -201,6 +201,7 @@ if(!suiciding) blood_data["cloneable"] = 1 blood_data["blood_type"] = copytext(dna.blood_type,1,0) + blood_data["bloodcolor"] = bloodtype_to_color(dna.blood_type) blood_data["gender"] = gender blood_data["real_name"] = real_name blood_data["features"] = dna.features @@ -304,7 +305,7 @@ /mob/living/carbon/alien/add_splatter_floor(turf/T, small_drip) if(!T) T = get_turf(src) - var/obj/effect/decal/cleanable/xenoblood/B = locate() in T.contents + var/obj/effect/decal/cleanable/blood/xenoblood/B = locate() in T.contents if(!B) B = new(T) B.add_blood_DNA(list("UNKNOWN DNA" = "X*")) diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index 2a5fdeaa33..3fec41ad58 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -144,7 +144,7 @@ playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1) //Makes the mob have the color of the blood pool it came out of var/newcolor = rgb(149, 10, 10) - if(istype(B, /obj/effect/decal/cleanable/xenoblood)) + if(istype(B, /obj/effect/decal/cleanable/blood/xenoblood)) newcolor = rgb(43, 186, 0) add_atom_colour(newcolor, TEMPORARY_COLOUR_PRIORITY) // but only for a few seconds diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 10fddfcb20..3c5f5c9002 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -20,7 +20,7 @@ var/heat_protection = 0.5 var/leaping = 0 - gib_type = /obj/effect/decal/cleanable/xenoblood/xgibs + gib_type = /obj/effect/decal/cleanable/blood/xenoblood/xgibs unique_name = 1 var/static/regex/alien_name_regex = new("alien (larva|sentinel|drone|hunter|praetorian|queen)( \\(\\d+\\))?") diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 9d233591d3..c777cfd14d 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -56,14 +56,17 @@ //Bloody footprints var/turf/T = get_turf(src) if(S.bloody_shoes && S.bloody_shoes[S.blood_state]) - var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints) in T + var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks) in T if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == bloodtype_to_color(S.last_bloodtype))) return S.bloody_shoes[S.blood_state] = max(0, S.bloody_shoes[S.blood_state]-BLOOD_LOSS_PER_STEP) - var/obj/effect/decal/cleanable/blood/footprints/FP = new /obj/effect/decal/cleanable/blood/footprints(T) + var/obj/effect/decal/cleanable/blood/footprints/tracks/footprints/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/footprints(T) + FP.icon_state = FOOTPRINT_SHOE + FP.print_state = FOOTPRINT_SHOE FP.blood_state = S.blood_state FP.entered_dirs |= dir FP.bloodiness = S.bloody_shoes[S.blood_state] + FP.color = blood_DNA_to_color() //Color the blood with our dna stuff if(S.last_blood_DNA && S.last_bloodtype) FP.blood_DNA += list(S.last_blood_DNA = S.last_bloodtype) //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood @@ -80,12 +83,12 @@ return var/turf/T = get_turf(src) if(blood_smear && blood_smear[blood_state]) - for(var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP in T) - if (oldFP.blood_state == blood_state) - return + var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks) in T + if (oldFP.blood_state == blood_state) + return blood_smear[blood_state] = max(0, blood_smear[blood_state] - BLOOD_LOSS_PER_STEP) if(blood_smear[blood_state] > BLOOD_LOSS_IN_SPREAD) - var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/footprints(T) + var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks(T) if(DIGITIGRADE in dna.species.species_traits) if(dna.species.id == ("lizard" || "ashwalker" || "xeno")) FP.icon_state = FOOTPRINT_CLAW @@ -119,9 +122,9 @@ return var/turf/T = get_turf(src) if(blood_smear && blood_smear[blood_state]) - for(var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP in T) - if (oldFP.blood_state == blood_state) - return + var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks) in T + if (oldFP.blood_state == blood_state) + return blood_smear[blood_state] = max(0, blood_smear[blood_state] - BLOOD_LOSS_PER_STEP) if(blood_smear[blood_state] > BLOOD_LOSS_IN_SPREAD) var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/body(T) diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index 7dfa480ee3..d576ebddbf 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -191,7 +191,7 @@ ) if(blood) - target_types += /obj/effect/decal/cleanable/xenoblood + target_types += /obj/effect/decal/cleanable/blood/xenoblood target_types += /obj/effect/decal/cleanable/blood target_types += /obj/effect/decal/cleanable/trail_holder diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm index c2d0a214b4..1516f45ea3 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm @@ -39,7 +39,7 @@ animal_species = /mob/living/simple_animal/hostile/asteroid/gutlunch childtype = list(/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck = 45, /mob/living/simple_animal/hostile/asteroid/gutlunch/guthen = 55) - wanted_objects = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/gibs/) + wanted_objects = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/gibs/) var/obj/item/udder/gutlunch/udder = null /mob/living/simple_animal/hostile/asteroid/gutlunch/Initialize() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 248471cd68..6269057d01 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1,5 +1,5 @@ /datum/reagent/blood - data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Blood" id = "blood" color = BLOOD_COLOR_HUMAN // rgb: 200, 0, 0 @@ -97,14 +97,14 @@ B.color = data["bloodcolor"] /datum/reagent/blood/synthetics - data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Synthetic Blood" id = "syntheticblood" taste_description = "oily" color = BLOOD_COLOR_SYNTHETIC // rgb: 11, 7, 48 /datum/reagent/blood/xenomorph - data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "blood_type"="X*","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_XENO, "blood_type"="X*","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Xenomorph Blood" id = "xenoblood" taste_description = "acidic heresy" @@ -112,14 +112,14 @@ shot_glass_icon_state = "shotglassgreen" /datum/reagent/blood/oil - data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_OIL, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Hydraulic Blood" id = "oilblood" taste_description = "burnt oil" color = BLOOD_COLOR_OIL // dark, y'know, expected batman colors. /datum/reagent/blood/jellyblood - data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SLIME, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Slime Jelly Blood" id = "jellyblood" description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL." From 69eca2ae4bf900437f58442c1bc2bbed3af70695 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Tue, 7 May 2019 13:23:49 -0500 Subject: [PATCH 017/469] progress, just need to fiddle with footprints again --- code/__HELPERS/_cit_helpers.dm | 9 +++ code/datums/components/decals/blood.dm | 4 +- code/datums/components/forensics.dm | 30 +++++++- code/game/atoms.dm | 69 +++++++++++-------- code/game/objects/effects/decals/cleanable.dm | 28 ++++++++ .../effects/decals/cleanable/aliens.dm | 1 - .../effects/decals/cleanable/humans.dm | 51 +++++++++++--- .../objects/effects/spawners/gibspawner.dm | 1 + code/modules/clothing/gloves/_gloves.dm | 3 +- code/modules/clothing/head/_head.dm | 3 +- code/modules/clothing/masks/_masks.dm | 3 +- code/modules/clothing/shoes/_shoes.dm | 10 +-- code/modules/clothing/suits/_suits.dm | 5 +- code/modules/clothing/under/_under.dm | 3 +- code/modules/mob/living/blood.dm | 9 +-- .../mob/living/carbon/human/human_defines.dm | 2 + .../mob/living/carbon/human/human_movement.dm | 11 +-- .../chemistry/reagents/other_reagents.dm | 34 +++++---- tgstation.dme | 1 - 19 files changed, 196 insertions(+), 81 deletions(-) diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm index f6d82ed93a..429e6d39fe 100644 --- a/code/__HELPERS/_cit_helpers.dm +++ b/code/__HELPERS/_cit_helpers.dm @@ -112,6 +112,15 @@ GLOBAL_LIST_INIT(paw_taurs, list( "Tiger" )) +GLOBAL_LIST_INIT(blood_id_types, list( + "blood" = /datum/reagent/blood/human, + "syntheticblood" = /datum/reagent/blood/synthetics, + "xenoblood" = /datum/reagent/blood/xenomorph, + "oilblood" = /datum/reagent/blood/oil, + "jellyblood" = /datum/reagent/blood/jellyblood + )) + + //Crew objective and miscreants stuff GLOBAL_VAR_INIT(miscreants_allowed, FALSE) diff --git a/code/datums/components/decals/blood.dm b/code/datums/components/decals/blood.dm index ff69c1ea54..b615b05280 100644 --- a/code/datums/components/decals/blood.dm +++ b/code/datums/components/decals/blood.dm @@ -28,8 +28,8 @@ var/icon/blood_splatter_icon = icon(initial(I.icon), initial(I.icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) blood_splatter_icon.Blend(icon(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant - blood_splatter_icon.Blend(I.blood_DNA_to_color(), ICON_MULTIPLY) //Color the blood with our dna stuff - pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state)) + GET_COMPONENT(D, /datum/component/forensics) + blood_splatter_icon.Blend(D.blood_DNA_to_color(), ICON_MULTIPLY) blood_splatter_appearances[index] = pic return TRUE diff --git a/code/datums/components/forensics.dm b/code/datums/components/forensics.dm index c7a1f7eba5..c93981f0df 100644 --- a/code/datums/components/forensics.dm +++ b/code/datums/components/forensics.dm @@ -11,6 +11,7 @@ blood_DNA = blood_DNA | F.blood_DNA fibers = fibers | F.fibers check_blood() + blood_DNA_to_color() return ..() /datum/component/forensics/Initialize(new_fingerprints, new_hiddenprints, new_blood_DNA, new_fibers) @@ -21,6 +22,7 @@ blood_DNA = new_blood_DNA fibers = new_fibers check_blood() + blood_DNA_to_color() RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_act) /datum/component/forensics/proc/wipe_fingerprints() @@ -32,8 +34,6 @@ /datum/component/forensics/proc/wipe_blood_DNA() blood_DNA = null - if(isitem(parent)) - qdel(parent.GetComponent(/datum/component/decal/blood)) return TRUE /datum/component/forensics/proc/wipe_fibers() @@ -149,6 +149,7 @@ for(var/i in dna) blood_DNA[i] = dna[i] check_blood() + blood_DNA_to_color() return TRUE /datum/component/forensics/proc/check_blood() @@ -156,4 +157,27 @@ return if(!length(blood_DNA)) return - parent.LoadComponent(/datum/component/decal/blood) + +/datum/component/forensics/proc/blood_DNA_to_color() + var/list/colors = list()//first we make a list of all bloodtypes present + for(var/bloop in blood_DNA) + if(colors[blood_DNA[bloop]]) + colors[blood_DNA[bloop]]++ + else + colors[blood_DNA[bloop]] = 1 + + var/final_rgb = "#940000" + + if(colors.len) + var/sum = 0 //this is all shitcode, but it works; trust me + final_rgb = bloodtype_to_color(colors[1]) + sum = colors[colors[1]] + if(colors.len > 1) + var/i = 2 + while(i <= colors.len) + var/tmp = colors[colors[i]] + final_rgb = BlendRGB(final_rgb, bloodtype_to_color(colors[i]), tmp/(tmp+sum)) + sum += tmp + i++ + + return final_rgb diff --git a/code/game/atoms.dm b/code/game/atoms.dm index b547482127..9060e7622e 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -35,7 +35,7 @@ var/rad_flags = NONE // Will move to flags_1 when i can be arsed to var/rad_insulation = RAD_NO_INSULATION - var/list/blood_DNA //reee dirty hack till Kevin tells me how to inherit this shit + var/icon/blood_splatter_icon /atom/New(loc, ...) //atom creation method that preloads variables at creation @@ -319,22 +319,24 @@ //returns the mob's dna info as a list, to be inserted in an object's blood_DNA list /mob/living/proc/get_blood_dna_list() - if(get_blood_id() != "blood") - return - return list("donor"= "ANIMAL","bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"="Y-") + for(var/bluhduh in GLOB.blood_types) + if(get_blood_id() != bluhduh) + return + return list("ANIMAL DNA" = "Y-") /mob/living/carbon/get_blood_dna_list() - if(get_blood_id() != "blood") - return - var/list/blood_dna = list() - if(dna) - blood_dna[dna.unique_enzymes] = dna.blood_type - else - blood_dna["UNKNOWN DNA"] = "X*" - return blood_dna + for(var/bluhduh in GLOB.blood_types) + if(get_blood_id() != bluhduh) + return + var/list/blood_dna = list() + if(dna) + blood_dna = get_blood_data(bluhduh) + else + blood_dna["UNKNOWN DNA"] = "X*" + return blood_dna /mob/living/carbon/alien/get_blood_dna_list() - return list("donor"= "UNKNOWN DNA","bloodcolor" = BLOOD_COLOR_XENO, "blood_type"= "X*") + return list("UNKNOWN DNA" = "X*") //to add a mob's dna info into an object's blood_DNA list. /atom/proc/transfer_mob_blood_dna(mob/living/L) @@ -348,15 +350,6 @@ return FALSE return TRUE -//to add blood dna info to the object's blood_DNA list -/atom/proc/transfer_blood_dna(list/blood_dna) - if(!blood_DNA) - blood_DNA = list() - var/old_length = blood_DNA_length() - blood_DNA |= blood_dna - if(blood_DNA_length() > old_length) - return TRUE//some new blood DNA was added - //to add blood from a mob onto something, and transfer their dna info /atom/proc/add_mob_blood(mob/living/M) var/list/blood_dna = M.get_blood_dna_list() @@ -364,15 +357,37 @@ return FALSE return add_blood_DNA(blood_dna) +//to add blood onto something, with blood dna info to include. +/atom/proc/add_blood(list/blood_dna) + return FALSE + +/obj/item/add_blood(list/blood_dna) + if(!..()) + return FALSE + add_blood_overlay() + return TRUE //we applied blood to the item + +/obj/item/proc/add_blood_overlay() + GET_COMPONENT(D, /datum/component/forensics) + if(!D.blood_DNA.len) + return + if(initial(icon) && initial(icon_state)) + blood_splatter_icon = icon(initial(icon), initial(icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object + blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) + blood_splatter_icon.Blend(icon('icons/effects/blood.dmi', "itemblood"), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant + blood_splatter_icon.Blend(blood_DNA_to_color(), ICON_MULTIPLY) + add_overlay(blood_splatter_icon) + /atom/proc/blood_DNA_to_color() var/list/colors = list()//first we make a list of all bloodtypes present - for(var/bloop in blood_DNA) - if(colors[blood_DNA[bloop]]) - colors[blood_DNA[bloop]]++ + GET_COMPONENT(D, /datum/component/forensics) + for(var/bloop in D.blood_DNA) + if(colors[D.blood_DNA[bloop]]) + colors[D.blood_DNA[bloop]]++ else - colors[blood_DNA[bloop]] = 1 + colors[D.blood_DNA[bloop]] = 1 - var/final_rgb = color + var/final_rgb = "#940000" if(colors.len) var/sum = 0 //this is all shitcode, but it works; trust me diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 07152b0310..0c767dd1ae 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -74,6 +74,14 @@ var/mob/living/carbon/human/H = O if(H.shoes && blood_state && bloodiness && !H.has_trait(TRAIT_LIGHT_STEP)) var/obj/item/clothing/shoes/S = H.shoes + for(var/datum/reagent/R in reagents.reagent_list) + // Get blood data from the blood reagent. + if(istype(R, /datum/reagent/blood)) + if(R.data) + var/blood_type_meme = R.data["blood_type"] + color = bloodtype_to_color(blood_type_meme) //Color the blood with our dna stuff + if(blood_type_meme) + S.last_bloodtype = blood_type_meme var/add_blood = 0 if(bloodiness >= BLOOD_GAIN_PER_STEP) add_blood = BLOOD_GAIN_PER_STEP @@ -86,6 +94,26 @@ update_icon() H.update_inv_shoes() + else if(H && blood_state && bloodiness && !H.has_trait(TRAIT_LIGHT_STEP)) + for(var/datum/reagent/R in reagents.reagent_list) + // Get blood data from the blood reagent. + if(istype(R, /datum/reagent/blood)) + if(R.data["blood_type"]) + var/blood_type_meme = R.data["blood_type"] + color = bloodtype_to_color(blood_type_meme) //Color the blood with our dna stuff + if(blood_type_meme) + H.last_bloodtype = blood_type_meme + var/add_blood = 0 + if(bloodiness >= BLOOD_GAIN_PER_STEP) + add_blood = BLOOD_GAIN_PER_STEP + else + add_blood = bloodiness + bloodiness -= add_blood + H.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,H.blood_smear[blood_state]+add_blood) + H.add_blood_DNA(return_blood_DNA()) + H.blood_state = blood_state + update_icon() + /obj/effect/decal/cleanable/proc/can_bloodcrawl_in() if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY)) return bloodiness diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index bbb50def0f..c42671509f 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -9,7 +9,6 @@ bloodiness = BLOOD_AMOUNT_PER_DECAL blood_state = BLOOD_STATE_BLOOD color = BLOOD_COLOR_XENO - blood_DNA = list() /obj/effect/decal/cleanable/blood/xenoblood/Initialize() . = ..() diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index cc41886b76..cc98d882f8 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -6,12 +6,14 @@ random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7") blood_state = BLOOD_STATE_BLOOD color = BLOOD_COLOR_HUMAN - blood_DNA = list() bloodiness = BLOOD_AMOUNT_PER_DECAL +/obj/effect/decal/cleanable/blood/Initialize(mapload) + . = ..() + AddComponent(/datum/component/forensics) + update_icon() + /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) - if (C.blood_DNA) - blood_DNA |= C.blood_DNA.Copy() update_icon() ..() @@ -23,7 +25,11 @@ update_icon() /obj/effect/decal/cleanable/blood/update_icon() - color = blood_DNA_to_color() + for(var/datum/reagent/R in reagents.reagent_list) + // Get blood data from the blood reagent. + if(istype(R, /datum/reagent/blood)) + if(R.data["blood_type"]) + color = bloodtype_to_color(R.data["blood_type"]) //Color the blood with our dna stuff /obj/effect/decal/cleanable/blood/old name = "dried blood" @@ -34,7 +40,7 @@ /obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases) . = ..() icon_state += "-old" //This IS necessary because the parent /blood type uses icon randomization. - add_blood_DNA(list("donor"= "Non-human DNA", "blood_type"= "A+", "bloodcolor" = color)) + add_blood_DNA(list("blood_type"= "A+", "bloodcolor" = color)) /obj/effect/decal/cleanable/blood/splatter random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") @@ -50,13 +56,17 @@ desc = "Your instincts say you shouldn't be following these." random_icon_states = null var/list/existing_dirs = list() - blood_DNA = list() /obj/effect/decal/cleanable/trail_holder/update_icon() - color = blood_DNA_to_color() + for(var/datum/reagent/R in reagents.reagent_list) + // Get blood data from the blood reagent. + if(istype(R, /datum/reagent/blood)) + if(R.data["blood_type"]) + color = bloodtype_to_color(R.data["blood_type"]) //Color the blood with our dna stuff /obj/effect/cleanable/trail_holder/Initialize() . = ..() + AddComponent(/datum/component/forensics) update_icon() /obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in() @@ -103,8 +113,11 @@ for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) sleep(2) if(i > 0) - var/obj/effect/decal/cleanable/blood/splatter/splat = new(loc) - splat.transfer_blood_dna(blood_DNA) + var/list/datum/disease/diseases + GET_COMPONENT(infective, /datum/component/infective) + if(infective) + diseases = infective.diseases + new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) if(!step_to(src, get_step(src, direction), 0)) break @@ -172,24 +185,44 @@ if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes + if(S) + color = bloodtype_to_color(S.last_bloodtype) + else + color = bloodtype_to_color(H.last_bloodtype) + if(S && S.bloody_shoes[blood_state]) S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(entered_dirs & H.dir)) entered_dirs |= H.dir update_icon() + else + H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) + if (!(entered_dirs & H.dir)) + entered_dirs |= H.dir + update_icon() /obj/effect/decal/cleanable/blood/footprints/tracks/Uncrossed(atom/movable/O) ..() if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes + if(S) + color = bloodtype_to_color(S.last_bloodtype) + else + color = bloodtype_to_color(H.last_bloodtype) + if(S && S.bloody_shoes[blood_state]) S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(exited_dirs & H.dir)) exited_dirs |= H.dir update_icon() + else + H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) + if (!(exited_dirs & H.dir)) + exited_dirs |= H.dir + update_icon() /obj/effect/decal/cleanable/blood/footprints/tracks/update_icon() diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index 0e6fcaf367..04130bc40b 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -11,6 +11,7 @@ /obj/effect/gibspawner/Initialize(mapload, mob/living/source_mob, list/datum/disease/diseases) . = ..() + AddComponent(/datum/component/forensics) if(gibtypes.len != gibamounts.len) stack_trace("Gib list amount length mismatch!") diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm index 7146ad1313..5833190d4a 100644 --- a/code/modules/clothing/gloves/_gloves.dm +++ b/code/modules/clothing/gloves/_gloves.dm @@ -30,7 +30,8 @@ if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedgloves") IF_HAS_BLOOD_DNA(src) - . += mutable_appearance('icons/effects/blood.dmi', "bloodyhands", color = blood_DNA_to_color()) + GET_COMPONENT(D, /datum/component/forensics) + . += mutable_appearance('icons/effects/blood.dmi', "bloodyhands", color = D.blood_DNA_to_color()) /obj/item/clothing/gloves/update_clothes_damaged_state(damaging = TRUE) ..() diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm index 98bb3aec13..591b6c1d3b 100644 --- a/code/modules/clothing/head/_head.dm +++ b/code/modules/clothing/head/_head.dm @@ -47,7 +47,8 @@ if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedhelmet") IF_HAS_BLOOD_DNA(src) - . += mutable_appearance('icons/effects/blood.dmi', "helmetblood", color = blood_DNA_to_color()) + GET_COMPONENT(D, /datum/component/forensics) + . += mutable_appearance('icons/effects/blood.dmi', "helmetblood", color = D.blood_DNA_to_color()) /obj/item/clothing/head/update_clothes_damaged_state(damaging = TRUE) ..() diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm index 2b820ecfc4..d4e54de0c7 100644 --- a/code/modules/clothing/masks/_masks.dm +++ b/code/modules/clothing/masks/_masks.dm @@ -18,7 +18,8 @@ if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") IF_HAS_BLOOD_DNA(src) - . += mutable_appearance('icons/effects/blood.dmi', "maskblood", color = blood_DNA_to_color()) + GET_COMPONENT(D, /datum/component/forensics) + . += mutable_appearance('icons/effects/blood.dmi', "maskblood", color = D.blood_DNA_to_color()) /obj/item/clothing/mask/equipped(mob/user, slot) ..() diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index e52722b077..c0227b8765 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -44,12 +44,6 @@ playsound(user, 'sound/weapons/genhit2.ogg', 50, 1) return(BRUTELOSS) -/obj/item/clothing/shoes/transfer_mob_blood_dna(list/blood_dna) - ..() - if(blood_dna.len) - last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works - last_blood_DNA = blood_dna[blood_dna.len] - /obj/item/clothing/shoes/worn_overlays(isinhands = FALSE) . = list() if(!isinhands) @@ -63,9 +57,9 @@ . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe") if(bloody) if(adjusted == NORMAL_STYLE) - . += mutable_appearance('icons/effects/blood.dmi', "shoeblood", color = blood_DNA_to_color()) + . += mutable_appearance('icons/effects/blood.dmi', "shoeblood", color = bloodtype_to_color(last_bloodtype)) else - . += mutable_appearance('modular_citadel/icons/mob/digishoes.dmi', "shoeblood", color = blood_DNA_to_color()) + . += mutable_appearance('modular_citadel/icons/mob/digishoes.dmi', "shoeblood", color = bloodtype_to_color(last_bloodtype)) /obj/item/clothing/shoes/equipped(mob/user, slot) . = ..() diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index f4fe92e86b..1f67f93119 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -61,10 +61,11 @@ if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damaged[blood_overlay_type]") IF_HAS_BLOOD_DNA(src) + GET_COMPONENT(D, /datum/component/forensics) if(taurmode >= SNEK_TAURIC) - . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) + . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "[blood_overlay_type]blood", color = D.blood_DNA_to_color()) else - . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) + . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood", color = D.blood_DNA_to_color()) var/mob/living/carbon/human/M = loc if(ishuman(M) && M.w_uniform) var/obj/item/clothing/under/U = M.w_uniform diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index 5f123cd745..99c1642f43 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -23,7 +23,8 @@ if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform") IF_HAS_BLOOD_DNA(src) - . += mutable_appearance('icons/effects/blood.dmi', "uniformblood", color = blood_DNA_to_color()) + GET_COMPONENT(D, /datum/component/forensics) + . += mutable_appearance('icons/effects/blood.dmi', "uniformblood", color = D.blood_DNA_to_color()) if(accessory_overlay) . += accessory_overlay diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index e4b0923df6..8062fef935 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -138,7 +138,7 @@ if(iscarbon(AM)) var/mob/living/carbon/C = AM - for(var/bluhduh in GLOB.blood_types[blood_id]) + for(var/datum/reagent/blood/bluhduh in GLOB.blood_types[blood_id]) if(blood_id == C.get_blood_id())//both mobs have the same blood substance if(bluhduh) //actual blood reagent if(blood_data["viruses"]) @@ -171,7 +171,7 @@ return /mob/living/carbon/get_blood_data(blood_id) - for(var/bluhduh in GLOB.blood_types[blood_id]) + for(var/datum/reagent/blood/bluhduh in GLOB.blood_types[blood_id]) if(bluhduh) //actual blood reagent var/blood_data = list() //set the blood data @@ -183,6 +183,7 @@ blood_data["viruses"] += D.Copy() blood_data["blood_DNA"] = copytext(dna.unique_enzymes,1,0) + blood_data["bloodcolor"] = bloodtype_to_color(dna.blood_type) if(disease_resistances && disease_resistances.len) blood_data["resistances"] = disease_resistances.Copy() var/list/temp_chem = list() @@ -201,7 +202,6 @@ if(!suiciding) blood_data["cloneable"] = 1 blood_data["blood_type"] = copytext(dna.blood_type,1,0) - blood_data["bloodcolor"] = bloodtype_to_color(dna.blood_type) blood_data["gender"] = gender blood_data["real_name"] = real_name blood_data["features"] = dna.features @@ -234,7 +234,8 @@ return dna.species.exotic_blood else if((NOBLOOD in dna.species.species_traits) || (has_trait(TRAIT_NOCLONE))) return null - return "blood" + else + return "blood" // This is has more potential uses, and is probably faster than the old proc. /proc/get_safe_blood(bloodtype) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 3731a98a49..b51d464ff7 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -45,6 +45,8 @@ var/blood_state = BLOOD_STATE_NOT_BLOODY var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) + var/last_bloodtype = ""//used to track the last bloodtype to have graced this smelly person. for smears on the floor + var/last_blood_DNA = ""//same as last one var/name_override //For temporary visible name changes diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index c777cfd14d..53d45d7666 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -66,10 +66,7 @@ FP.blood_state = S.blood_state FP.entered_dirs |= dir FP.bloodiness = S.bloody_shoes[S.blood_state] - FP.color = blood_DNA_to_color() //Color the blood with our dna stuff - if(S.last_blood_DNA && S.last_bloodtype) - FP.blood_DNA += list(S.last_blood_DNA = S.last_bloodtype) - //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood + FP.color = bloodtype_to_color(S.last_bloodtype) FP.update_icon() update_inv_shoes() //End bloody footprints @@ -112,8 +109,7 @@ FP.blood_state = blood_state FP.entered_dirs |= dir FP.bloodiness = blood_smear - BLOOD_LOSS_IN_SPREAD - FP.transfer_blood_dna(blood_DNA) - FP.color = blood_DNA_to_color() //Color the blood with our dna stuff + FP.color = bloodtype_to_color(last_bloodtype) FP.update_icon() else //we're on the floor, smear some stuff around @@ -133,8 +129,7 @@ FP.blood_state = blood_state FP.entered_dirs |= dir FP.bloodiness = blood_smear - BLOOD_LOSS_IN_SPREAD - FP.transfer_blood_dna(blood_DNA) - FP.color = blood_DNA_to_color() //Color the blood with our dna stuff + FP.color = bloodtype_to_color(last_bloodtype) FP.update_icon() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 6269057d01..6f5cdbfc6c 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -26,26 +26,34 @@ if(iscarbon(L)) var/mob/living/carbon/C = L - if(C.get_blood_id() == "blood" && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits)))) - if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type))) - C.reagents.add_reagent("toxin", reac_volume * 0.5) - if(data && (data["blood_type"] == "GEL") && (C.dna.species.exotic_blood != "jellyblood")) - C.reagents.add_reagent("toxin", reac_volume * 1.5) //filthy xenos bloooood - if(data && (data["blood_type"] == "HF") && (C.dna.species.exotic_blood != "oilblood")) - C.reagents.add_reagent("toxin", reac_volume * 1) //don't fucking put oil in people - if(data && (data["blood_type"] == "X*") && (C.dna.species.exotic_blood != "xenoblood")) - C.reagents.add_reagent("toxin", reac_volume * 1.5) //acid blooood - else - C.blood_volume = min(C.blood_volume + round(reac_volume, 0.1), BLOOD_VOLUME_MAXIMUM) + for(var/bluhduh in GLOB.blood_types) + if(C.get_blood_id() == bluhduh) + if(method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits))) + if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type))) + C.reagents.add_reagent("toxin", reac_volume * 0.5) + if(data && (data["blood_type"] == "GEL") && (C.dna.species.exotic_blood != "jellyblood")) + C.reagents.add_reagent("toxin", reac_volume * 1.5) //filthy xenos bloooood + if(data && (data["blood_type"] == "HF") && (C.dna.species.exotic_blood != "oilblood")) + C.reagents.add_reagent("toxin", reac_volume * 1) //don't fucking put oil in people + if(data && (data["blood_type"] == "X*") && (C.dna.species.exotic_blood != "xenoblood")) + C.reagents.add_reagent("toxin", reac_volume * 1.5) //acid blooood + else + C.blood_volume = min(C.blood_volume + round(reac_volume, 0.1), BLOOD_VOLUME_MAXIMUM) if(reac_volume >= 10 && istype(L)) L.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) + L.color = bloodtype_to_color(data["blood_type"]) /datum/reagent/blood/reaction_obj(obj/O, volume) if(volume >= 3 && istype(O)) O.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) + O.color = bloodtype_to_color(data["blood_type"]) /datum/reagent/blood/on_new(list/data) + if(iscarbon(src)) + var/mob/living/carbon/C = src + var/blood_id = C.get_blood_id() + data = C.get_blood_data(blood_id) if(istype(data)) SetViruses(src, data) color = bloodtype_to_color(data["blood_type"]) @@ -92,10 +100,12 @@ var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here if(!B) B = new(T) - if(data["blood_DNA"]) + if(data) B.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) B.color = data["bloodcolor"] +/datum/reagent/blood/human + /datum/reagent/blood/synthetics data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Synthetic Blood" diff --git a/tgstation.dme b/tgstation.dme index 9e9c6fe593..fdb11dea5e 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -375,7 +375,6 @@ #include "code\datums\components\uplink.dm" #include "code\datums\components\wearertargeting.dm" #include "code\datums\components\wet_floor.dm" -#include "code\datums\components\decals\blood.dm" #include "code\datums\components\storage\storage.dm" #include "code\datums\components\storage\concrete\_concrete.dm" #include "code\datums\components\storage\concrete\bag_of_holding.dm" From 5a67114d332fba7f922d1ef0d6c6b1725f9716a4 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 8 May 2019 04:53:51 -0500 Subject: [PATCH 018/469] get blood id is my foe now. --- code/__HELPERS/_cit_helpers.dm | 2 +- code/game/atoms.dm | 22 ++-- .../effects/decals/cleanable/aliens.dm | 17 ++- .../effects/decals/cleanable/humans.dm | 121 ++++++++++++++---- .../effects/decals/cleanable/robots.dm | 4 + .../objects/effects/spawners/gibspawner.dm | 50 +++++++- code/modules/mob/living/blood.dm | 17 ++- code/modules/mob/living/carbon/human/death.dm | 22 +++- .../mob/living/carbon/human/human_movement.dm | 3 - .../carbon/human/species_types/jellypeople.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 79 +++++++++++- 11 files changed, 278 insertions(+), 61 deletions(-) diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm index 429e6d39fe..04476dae60 100644 --- a/code/__HELPERS/_cit_helpers.dm +++ b/code/__HELPERS/_cit_helpers.dm @@ -113,7 +113,7 @@ GLOBAL_LIST_INIT(paw_taurs, list( )) GLOBAL_LIST_INIT(blood_id_types, list( - "blood" = /datum/reagent/blood/human, + "blood" = /datum/reagent/blood, "syntheticblood" = /datum/reagent/blood/synthetics, "xenoblood" = /datum/reagent/blood/xenomorph, "oilblood" = /datum/reagent/blood/oil, diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 9060e7622e..5f52ae85ee 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -319,23 +319,29 @@ //returns the mob's dna info as a list, to be inserted in an object's blood_DNA list /mob/living/proc/get_blood_dna_list() + to_chat(world, "living's get_blood_dna_list called") for(var/bluhduh in GLOB.blood_types) - if(get_blood_id() != bluhduh) + var/datum/reagent/blood/B = bluhduh + if(get_blood_id() != B) return return list("ANIMAL DNA" = "Y-") /mob/living/carbon/get_blood_dna_list() + to_chat(world, "carbon's get_blood_dna_list called by [src]") for(var/bluhduh in GLOB.blood_types) - if(get_blood_id() != bluhduh) + var/datum/reagent/blood/B = bluhduh + if(get_blood_id() != B) + to_chat(world, "[src] apparently doesn't have a valid blood type of [B]") return var/list/blood_dna = list() if(dna) - blood_dna = get_blood_data(bluhduh) + blood_dna = get_blood_data(B) else blood_dna["UNKNOWN DNA"] = "X*" return blood_dna /mob/living/carbon/alien/get_blood_dna_list() + to_chat(world, "alien's get_blood_dna_list called") return list("UNKNOWN DNA" = "X*") //to add a mob's dna info into an object's blood_DNA list. @@ -380,12 +386,12 @@ /atom/proc/blood_DNA_to_color() var/list/colors = list()//first we make a list of all bloodtypes present - GET_COMPONENT(D, /datum/component/forensics) - for(var/bloop in D.blood_DNA) - if(colors[D.blood_DNA[bloop]]) - colors[D.blood_DNA[bloop]]++ + var/list/blood = return_blood_DNA() + for(var/bloop in blood) + if(colors[blood[bloop]]) + colors[blood[bloop]]++ else - colors[D.blood_DNA[bloop]] = 1 + colors[blood[bloop]] = 1 var/final_rgb = "#940000" diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index c42671509f..45e0b52dc8 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -26,13 +26,22 @@ random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6") mergeable_decal = FALSE +/obj/effect/decal/cleanable/blood/xenoblood/xgibs/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidxenogibs", 5) + /obj/effect/decal/cleanable/blood/xenoblood/xgibs/proc/streak(list/directions) set waitfor = 0 var/direction = pick(directions) for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) sleep(2) if(i > 0) - new /obj/effect/decal/cleanable/blood/xenoblood/xsplatter(loc) + var/list/datum/disease/diseases + GET_COMPONENT(infective, /datum/component/infective) + if(infective) + diseases = infective.diseases + var/obj/effect/decal/cleanable/blood/xenoblood/xsplatter/splat = new /obj/effect/decal/cleanable/blood/xenoblood/xsplatter(loc, diseases) + splat.color = color if(!step_to(src, get_step(src, direction), 0)) break @@ -63,10 +72,10 @@ /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva/body random_icon_states = list("xgiblarvahead", "xgiblarvatorso") -/obj/effect/decal/cleanable/blood/blood/xtracks +/obj/effect/decal/cleanable/blood/xenoblood/xtracks icon_state = "xtracks" random_icon_states = null -/obj/effect/decal/cleanable/blood/blood/xtracks/Initialize() +/obj/effect/decal/cleanable/blood/xenoblood/xtracks/Initialize() . = ..() - add_blood_DNA(list("donor"= "UNKNOWN DNA","bloodcolor" = BLOOD_COLOR_XENO, "blood_type"= "X*")) \ No newline at end of file + add_blood_DNA(list("UNKNOWN DNA" = "X*")) \ No newline at end of file diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index cc98d882f8..08d215a37a 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -7,29 +7,29 @@ blood_state = BLOOD_STATE_BLOOD color = BLOOD_COLOR_HUMAN bloodiness = BLOOD_AMOUNT_PER_DECAL - -/obj/effect/decal/cleanable/blood/Initialize(mapload) - . = ..() - AddComponent(/datum/component/forensics) - update_icon() + var/bloodmeme = "" + var/data = "" /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) + if(!data) + C.data = add_blood_DNA(return_blood_DNA()) + if (bloodiness) + if (C.bloodiness < MAX_SHOE_BLOODINESS) + C.bloodiness += bloodiness + if(!bloodmeme) + C.bloodmeme = add_blood_DNA(return_blood_DNA()) update_icon() - ..() + return ..() -/obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) - return TRUE +//obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) +// return TRUE /obj/effect/decal/cleanable/blood/transfer_mob_blood_dna() . = ..() update_icon() /obj/effect/decal/cleanable/blood/update_icon() - for(var/datum/reagent/R in reagents.reagent_list) - // Get blood data from the blood reagent. - if(istype(R, /datum/reagent/blood)) - if(R.data["blood_type"]) - color = bloodtype_to_color(R.data["blood_type"]) //Color the blood with our dna stuff + color = blood_DNA_to_color() /obj/effect/decal/cleanable/blood/old name = "dried blood" @@ -40,7 +40,7 @@ /obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases) . = ..() icon_state += "-old" //This IS necessary because the parent /blood type uses icon randomization. - add_blood_DNA(list("blood_type"= "A+", "bloodcolor" = color)) + add_blood_DNA(list("blood_type"= "A+")) /obj/effect/decal/cleanable/blood/splatter random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") @@ -84,20 +84,22 @@ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") mergeable_decal = FALSE var/gib_overlay = FALSE - var/fleshcolor /obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) . = ..() if(gib_overlay) - var/generic_skin = random_skin_tone() - var/ethnicity = "#[skintone2hex(generic_skin)]" var/image/gibz = image(icon, icon_state + "-overlay", layer = LOW_OBJ_LAYER-0.1) - if(!fleshcolor) - gibz.color = ethnicity - else - gibz.color = fleshcolor add_overlay(gibz) - reagents.add_reagent("liquidgibs", 5) + if(!reagents) + reagents.add_reagent("liquidgibs", 5) + for(var/datum/reagent/R in reagents.reagent_list) + // Get blood data from the blood reagent. + if(istype(R, /datum/reagent/blood)) + if(R.data["blood_type"]) + bloodmeme = R.data["blood_type"] + if(istype(R, /datum/reagent/liquidgibs)) + if(R.data["blood_type"]) + bloodmeme = R.data["blood_type"] /obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) return @@ -117,7 +119,9 @@ GET_COMPONENT(infective, /datum/component/infective) if(infective) diseases = infective.diseases - new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) + var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) + splat.color = color + splat.bloodmeme = bloodmeme if(!step_to(src, get_step(src, direction), 0)) break @@ -167,6 +171,54 @@ /obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in() return TRUE +/obj/effect/decal/cleanable/blood/gibs/slime + desc = "They look gooey and gruesome." + +/obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases) + . = ..() + if(gib_overlay) + var/image/gibz = image(icon, icon_state + "-overlay", layer = LOW_OBJ_LAYER-0.1) + add_overlay(gibz) + reagents.add_reagent("liquidslimegibs", 5) + for(var/datum/reagent/R in reagents.reagent_list) + // Get blood data from the blood reagent. + if(istype(R, /datum/reagent/blood)) + if(R.data["blood_type"]) + bloodmeme = R.data["blood_type"] + if(istype(R, /datum/reagent/liquidgibs)) + if(R.data["blood_type"]) + bloodmeme = R.data["blood_type"] + +/obj/effect/decal/cleanable/blood/gibs/slime/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/body + random_icon_states = list("gibhead", "gibtorso") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/torso + random_icon_states = list("gibtorso") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/limb + random_icon_states = list("gibleg", "gibarm") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + gib_overlay = TRUE +/obj/effect/decal/cleanable/blood/gibs/synth + desc = "They look sludgy and disgusting." + +/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidsyntheticgibs", 5) + //BLOODY FOOTPRINTS /obj/effect/decal/cleanable/blood/footprints @@ -186,9 +238,16 @@ var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes if(S) - color = bloodtype_to_color(S.last_bloodtype) + if(S.last_bloodtype) + color = bloodtype_to_color(S.last_bloodtype) + else + color = bloodtype_to_color(bloodmeme) else - color = bloodtype_to_color(H.last_bloodtype) + if(H.last_bloodtype) + color = bloodtype_to_color(H.last_bloodtype) + else + color = bloodtype_to_color(bloodmeme) + if(S && S.bloody_shoes[blood_state]) S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) @@ -208,9 +267,15 @@ var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes if(S) - color = bloodtype_to_color(S.last_bloodtype) + if(S.last_bloodtype) + color = bloodtype_to_color(S.last_bloodtype) + else + color = bloodtype_to_color(bloodmeme) else - color = bloodtype_to_color(H.last_bloodtype) + if(H.last_bloodtype) + color = bloodtype_to_color(H.last_bloodtype) + else + color = bloodtype_to_color(bloodmeme) if(S && S.bloody_shoes[blood_state]) S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) @@ -233,11 +298,13 @@ var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] if(!bloodstep_overlay) GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir) + bloodstep_overlay.color = bloodtype_to_color(bloodmeme) add_overlay(bloodstep_overlay) if(exited_dirs & Ddir) var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"] if(!bloodstep_overlay) GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir) + bloodstep_overlay.color = bloodtype_to_color(bloodmeme) add_overlay(bloodstep_overlay) alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm index 484e0438e2..4db00a1cc5 100644 --- a/code/game/objects/effects/decals/cleanable/robots.dm +++ b/code/game/objects/effects/decals/cleanable/robots.dm @@ -11,6 +11,10 @@ bloodiness = BLOOD_AMOUNT_PER_DECAL mergeable_decal = FALSE +/obj/effect/decal/cleanable/robot_debris/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidoilgibs", 5) + /obj/effect/decal/cleanable/robot_debris/proc/streak(list/directions) set waitfor = 0 var/direction = pick(directions) diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index 04130bc40b..76b445cfdc 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -3,6 +3,7 @@ var/sparks = 0 //whether sparks spread var/virusProb = 20 //the chance for viruses to spread on the gibs var/gib_mob_type //generate a fake mob to transfer DNA from if we weren't passed a mob. + var/gib_mob_species //We'll want to nip-pick their species for blood type stuff var/sound_to_play = 'sound/effects/blobattack.ogg' var/sound_vol = 60 var/list/gibtypes = list() //typepaths of the gib decals to spawn @@ -36,6 +37,10 @@ dna_to_add = source_mob.get_blood_dna_list() //ez pz else if(gib_mob_type) var/mob/living/temp_mob = new gib_mob_type(src) //generate a fake mob so that we pull the right type of DNA for the gibs. + if(gib_mob_species) + if(ishuman(temp_mob)) + var/mob/living/carbon/human/H = temp_mob + H.set_species(gib_mob_species) dna_to_add = temp_mob.get_blood_dna_list() qdel(temp_mob) else @@ -80,6 +85,7 @@ gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up, /obj/effect/decal/cleanable/blood/gibs/down, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/body, /obj/effect/decal/cleanable/blood/gibs/limb, /obj/effect/decal/cleanable/blood/gibs/core) gibamounts = list(1, 1, 1, 1, 1, 1, 1) gib_mob_type = /mob/living/carbon/human + gib_mob_species = /datum/species/human sound_vol = 50 /obj/effect/gibspawner/human/Initialize() @@ -97,6 +103,31 @@ gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) return ..() +/obj/effect/gibspawner/human/lizard + gib_mob_type = /mob/living/carbon/human + gib_mob_species = /datum/species/lizard + +/obj/effect/gibspawner/slimeperson + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime/up, /obj/effect/decal/cleanable/blood/gibs/slime/down, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/body, /obj/effect/decal/cleanable/blood/gibs/slime/limb, /obj/effect/decal/cleanable/blood/gibs/slime/core) + gibamounts = list(1, 1, 1, 1, 1, 1, 1) + sound_vol = 50 + gib_mob_type = /mob/living/carbon/human + gib_mob_species = /datum/species/jelly + +/obj/effect/gibspawner/slimeperson/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) + return ..() + + +/obj/effect/gibspawner/slimeperson/bodypartless //only the gibs that don't look like actual full bodyparts (except torso). + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/torso) + gibamounts = list(1, 1, 1, 1, 1, 1) + +/obj/effect/gibspawner/slimeperson/bodypartless/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) + return ..() /obj/effect/gibspawner/xeno @@ -104,6 +135,10 @@ gibamounts = list(1, 1, 1, 1, 1, 1, 1) gib_mob_type = /mob/living/carbon/alien +/obj/effect/gibspawner/xeno/xenoperson + gib_mob_type = /mob/living/carbon/human + gib_mob_species = /datum/species/xeno + /obj/effect/gibspawner/xeno/Initialize() if(!gibdirections.len) gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) @@ -153,4 +188,17 @@ if(!gibdirections.len) gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs) gibamounts[6] = pick(0, 1, 2) - return ..() \ No newline at end of file + return ..() + +/obj/effect/gibspawner/ipc + sparks = 1 + gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up, /obj/effect/decal/cleanable/robot_debris/down, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris/limb) + gibamounts = list(1, 1, 1, 1, 1, 1) + gib_mob_type = /mob/living/carbon/human + gib_mob_species = /datum/species/ipc + +/obj/effect/gibspawner/ipc/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs) + gibamounts[6] = pick(0, 1, 2) + return ..() diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 8062fef935..e07fe8b6ea 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -229,13 +229,16 @@ if(!(has_trait(TRAIT_NOCLONE))) return "blood" -/mob/living/carbon/human/get_blood_id() - if(dna.species.exotic_blood) - return dna.species.exotic_blood - else if((NOBLOOD in dna.species.species_traits) || (has_trait(TRAIT_NOCLONE))) - return null - else - return "blood" +/mob/living/carbon/get_blood_id() + var/mob/living/carbon/human/H = src + for(var/bluhduh in GLOB.blood_types[H.dna.species.exotic_blood]) + if(!bluhduh) + to_chat(world, "[H] has [H.dna.species.exotic_blood] for blood") + return H.dna.species.exotic_blood + else if((NOBLOOD in H.dna.species.species_traits) || (has_trait(TRAIT_NOCLONE))) + return null + else + return bluhduh // This is has more potential uses, and is probably faster than the old proc. /proc/get_safe_blood(bloodtype) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 24abcc2474..bfb9ffec25 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -5,10 +5,26 @@ new /obj/effect/temp_visual/dust_animation(loc, "dust-h") /mob/living/carbon/human/spawn_gibs(with_bodyparts) - if(with_bodyparts) - new /obj/effect/gibspawner/human(drop_location(), dna, get_static_viruses()) + if(isjellyperson(src)) + if(with_bodyparts) + new /obj/effect/gibspawner/slimeperson(drop_location(), dna, get_static_viruses()) + else + new /obj/effect/gibspawner/slimeperson/bodypartless(drop_location(), dna, get_static_viruses()) + + if(isipcperson(src)) + new /obj/effect/gibspawner/ipc(drop_location(), dna, get_static_viruses()) + + if(isxenoperson(src)) + if(with_bodyparts) + new /obj/effect/gibspawner/xeno(drop_location(), dna, get_static_viruses()) + else + new /obj/effect/gibspawner/xeno/bodypartless(drop_location(), dna, get_static_viruses()) + else - new /obj/effect/gibspawner/human/bodypartless(drop_location(), dna, get_static_viruses()) + if(with_bodyparts) + new /obj/effect/gibspawner/human(drop_location(), dna, get_static_viruses()) + else + new /obj/effect/gibspawner/human/bodypartless(drop_location(), dna, get_static_viruses()) /mob/living/carbon/human/spawn_dust(just_ash = FALSE) if(just_ash) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 53d45d7666..cfc2b75453 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -66,7 +66,6 @@ FP.blood_state = S.blood_state FP.entered_dirs |= dir FP.bloodiness = S.bloody_shoes[S.blood_state] - FP.color = bloodtype_to_color(S.last_bloodtype) FP.update_icon() update_inv_shoes() //End bloody footprints @@ -109,7 +108,6 @@ FP.blood_state = blood_state FP.entered_dirs |= dir FP.bloodiness = blood_smear - BLOOD_LOSS_IN_SPREAD - FP.color = bloodtype_to_color(last_bloodtype) FP.update_icon() else //we're on the floor, smear some stuff around @@ -129,7 +127,6 @@ FP.blood_state = blood_state FP.entered_dirs |= dir FP.bloodiness = blood_smear - BLOOD_LOSS_IN_SPREAD - FP.color = bloodtype_to_color(last_bloodtype) FP.update_icon() diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index da06d81609..5c8c082d47 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -4,7 +4,7 @@ id = "jelly" default_color = "00FF90" say_mod = "chirps" - species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD) + species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR) mutant_bodyparts = list("mam_tail", "mam_ears", "mam_snouts", "taur") //CIT CHANGE default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_snouts" = "None", "taur" = "None") //CIT CHANGE inherent_traits = list(TRAIT_TOXINLOVER) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 6f5cdbfc6c..92c9c1e104 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -100,11 +100,16 @@ var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here if(!B) B = new(T) - if(data) - B.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) - B.color = data["bloodcolor"] - -/datum/reagent/blood/human + if(!B.reagents) + B.reagents.add_reagent("blood", reac_volume) + for(var/datum/reagent/R in B.reagents.reagent_list) + // Get blood data from the blood reagent. + if(istype(R, /datum/reagent/blood)) + if(R.data["blood_type"]) + B.bloodmeme = R.data["blood_type"] + if(istype(R, /datum/reagent/liquidgibs)) + if(R.data["blood_type"]) + B.bloodmeme = R.data["blood_type"] /datum/reagent/blood/synthetics data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) @@ -113,6 +118,11 @@ taste_description = "oily" color = BLOOD_COLOR_SYNTHETIC // rgb: 11, 7, 48 +/datum/reagent/blood/synthetics/reaction_turf(turf/T, reac_volume) + var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here + B.reagents.add_reagent("syntheticblood", reac_volume) + . = ..() + /datum/reagent/blood/xenomorph data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_XENO, "blood_type"="X*","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Xenomorph Blood" @@ -121,6 +131,11 @@ color = BLOOD_COLOR_XENO // greenish yellow ooze shot_glass_icon_state = "shotglassgreen" +/datum/reagent/blood/xenomorph/reaction_turf(turf/T, reac_volume) + var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here + B.reagents.add_reagent("xenoblood", reac_volume) + . = ..() + /datum/reagent/blood/oil data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_OIL, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Hydraulic Blood" @@ -128,6 +143,11 @@ taste_description = "burnt oil" color = BLOOD_COLOR_OIL // dark, y'know, expected batman colors. +/datum/reagent/blood/oil/reaction_turf(turf/T, reac_volume) + var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here + B.reagents.add_reagent("oilblood", reac_volume) + . = ..() + /datum/reagent/blood/jellyblood data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SLIME, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Slime Jelly Blood" @@ -137,6 +157,21 @@ taste_description = "slime" taste_mult = 1.3 +/datum/reagent/blood/jellyblood/on_new(list/data) + .=..() + if(ishuman(src)) + var/mob/living/carbon/human/H = src + var/datum/species/slimecolor = H.dna.species + if("mcolor" in slimecolor.default_features) + color = H.dna.features["mcolor"] + else + color = bloodtype_to_color(data["blood_type"]) + +/datum/reagent/blood/jellyblood/reaction_turf(turf/T, reac_volume) + var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here + B.reagents.add_reagent("jellyblood", reac_volume) + . = ..() + /datum/reagent/blood/jellyblood/on_mob_life(mob/living/carbon/M) if(prob(10)) to_chat(M, "Your insides are burning!") @@ -150,10 +185,42 @@ /datum/reagent/liquidgibs name = "Liquid gibs" id = "liquidgibs" - color = "#FF9966" + color = BLOOD_COLOR_HUMAN description = "You don't even want to think about what's in here." taste_description = "gross iron" shot_glass_icon_state = "shotglassred" + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + +/datum/reagent/liquidgibs/xeno + name = "Liquid xeno gibs" + id = "liquidxenogibs" + color = BLOOD_COLOR_XENO + taste_description = "blended heresy" + shot_glass_icon_state = "shotglassgreen" + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_XENO, "blood_type"="X*","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + +/datum/reagent/liquidgibs/slime + name = "Slime sludge" + id = "liquidslimegibs" + color = BLOOD_COLOR_SLIME + taste_description = "slime" + shot_glass_icon_state = "shotglassgreen" + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SLIME, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + +/datum/reagent/liquidgibs/synth + name = "Synthetic sludge" + id = "liquidsyntheticgibs" + color = BLOOD_COLOR_SYNTHETIC + taste_description = "jellied plastic" + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + +/datum/reagent/liquidgibs/oil + name = "Hydraulic sludge" + id = "liquidoilgibs" + color = BLOOD_COLOR_OIL + taste_description = "chunky burnt oil" + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_OIL, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + /datum/reagent/vaccine //data must contain virus type From 7b6a65ce3b6af754fd1f5a39bb18599ef21f9ea2 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 9 May 2019 08:17:18 -0500 Subject: [PATCH 019/469] okay we're starting to pass our blood type to bloodmeme now STILL JUST FUCKING FOOTSTEPS LEFT THO GOD FUCKING DAMNIT --- code/__HELPERS/_cit_helpers.dm | 11 +- code/datums/dna.dm | 8 + code/game/atoms.dm | 27 +-- .../effects/decals/cleanable/aliens.dm | 2 +- .../objects/effects/decals/cleanable/gibs.dm | 158 ++++++++++++++++++ .../effects/decals/cleanable/humans.dm | 157 ++--------------- .../effects/decals/cleanable/robots.dm | 1 + .../objects/effects/spawners/gibspawner.dm | 80 +++++---- code/modules/mob/living/blood.dm | 26 ++- code/modules/mob/living/brain/brain.dm | 13 +- code/modules/mob/living/carbon/human/death.dm | 10 +- .../mob/living/carbon/human/species.dm | 22 ++- .../carbon/human/species_types/jellypeople.dm | 2 +- tgstation.dme | 1 + 14 files changed, 299 insertions(+), 219 deletions(-) create mode 100644 code/game/objects/effects/decals/cleanable/gibs.dm diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm index 04476dae60..0dd0bc2953 100644 --- a/code/__HELPERS/_cit_helpers.dm +++ b/code/__HELPERS/_cit_helpers.dm @@ -30,8 +30,6 @@ proc/get_racelist(var/mob/user)//This proc returns a list of species that 'user' GLOB.whitelisted_species_list[S.id] = S.type return GLOB.whitelisted_species_list - //blood types -GLOBAL_LIST_INIT(blood_types, list("blood","syntheticblood","xenoblood","oilblood","jellyblood")) //Mammal Species GLOBAL_LIST_EMPTY(mam_body_markings_list) @@ -112,6 +110,15 @@ GLOBAL_LIST_INIT(paw_taurs, list( "Tiger" )) + //blood types +GLOBAL_LIST_INIT(blood_types, list( + "blood", + "syntheticblood", + "xenoblood", + "oilblood", + "jellyblood" + )) + GLOBAL_LIST_INIT(blood_id_types, list( "blood" = /datum/reagent/blood, "syntheticblood" = /datum/reagent/blood/synthetics, diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 938515625d..ce891e9f1e 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -322,6 +322,14 @@ if(!dna.species) var/rando_race = pick(GLOB.roundstart_races) dna.species = new rando_race() + if(isjellyperson(dna.species)) + dna.blood_type = "GEL" + if(isipcperson(dna.species)) + dna.blood_type = "HF" + if(isxenoperson(dna.species)) + dna.blood_type = "X*" + if(islizard(dna.species)) + dna.blood_type = "L" //proc used to update the mob's appearance after its dna UI has been changed /mob/living/carbon/proc/updateappearance(icon_update=1, mutcolor_update=0, mutations_overlay_update=0) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 5f52ae85ee..179f0c6ee4 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -319,29 +319,34 @@ //returns the mob's dna info as a list, to be inserted in an object's blood_DNA list /mob/living/proc/get_blood_dna_list() - to_chat(world, "living's get_blood_dna_list called") - for(var/bluhduh in GLOB.blood_types) - var/datum/reagent/blood/B = bluhduh - if(get_blood_id() != B) - return + if(get_blood_id() != "blood") + return return list("ANIMAL DNA" = "Y-") /mob/living/carbon/get_blood_dna_list() to_chat(world, "carbon's get_blood_dna_list called by [src]") - for(var/bluhduh in GLOB.blood_types) - var/datum/reagent/blood/B = bluhduh - if(get_blood_id() != B) - to_chat(world, "[src] apparently doesn't have a valid blood type of [B]") + var/blood_id = get_blood_id() + to_chat(world, "We got [blood_id] for a return") + for(var/B in GLOB.blood_id_types) + to_chat(world, "checking blood_id_types") + var/list/bluhduh = typecacheof(B) + to_chat(world, "We bluhduh now, let's compare with [blood_id] now") + if(!blood_id in bluhduh) + to_chat(world, "[src] apparently doesn't have a valid blood type of blood, we're returning null due to [bluhduh]") return + to_chat(world, "[src] has an approved type of blood.") var/list/blood_dna = list() + to_chat(world, "blood_dna list made.") if(dna) - blood_dna = get_blood_data(B) + to_chat(world, "[src] has dna, we know the bloodtype to be [dna.blood_type].") + blood_dna[dna.unique_enzymes] = dna.blood_type else + to_chat(world, "[src] doesn't have dna I guess.") blood_dna["UNKNOWN DNA"] = "X*" + to_chat(world, "blood_dna is [blood_dna]") return blood_dna /mob/living/carbon/alien/get_blood_dna_list() - to_chat(world, "alien's get_blood_dna_list called") return list("UNKNOWN DNA" = "X*") //to add a mob's dna info into an object's blood_DNA list. diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 45e0b52dc8..e4fcbb8dd8 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -27,8 +27,8 @@ mergeable_decal = FALSE /obj/effect/decal/cleanable/blood/xenoblood/xgibs/Initialize(mapload, list/datum/disease/diseases) - . = ..() reagents.add_reagent("liquidxenogibs", 5) + . = ..() /obj/effect/decal/cleanable/blood/xenoblood/xgibs/proc/streak(list/directions) set waitfor = 0 diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm new file mode 100644 index 0000000000..855e04942c --- /dev/null +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -0,0 +1,158 @@ +/obj/effect/decal/cleanable/blood/gibs + name = "gibs" + desc = "They look bloody and gruesome." + icon_state = "gibbl5" + layer = LOW_OBJ_LAYER + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") + mergeable_decal = FALSE + var/gib_overlay = FALSE + +/obj/effect/decal/cleanable/blood/gibs/proc/guts() + if(gib_overlay) + var/icon/gibz = new(icon, icon_state + "-overlay") + add_overlay(gibz) + +/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) + return + +/obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L) + if(istype(L) && has_gravity(loc)) + playsound(loc, 'sound/effects/gib_step.ogg', L.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) + . = ..() + +/obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions) + set waitfor = 0 + var/direction = pick(directions) + for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) + sleep(2) + if(i > 0) + var/list/datum/disease/diseases + GET_COMPONENT(infective, /datum/component/infective) + if(infective) + diseases = infective.diseases + var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) + splat.color = color + splat.bloodmeme = bloodmeme + if(!step_to(src, get_step(src, direction), 0)) + break + +/obj/effect/decal/cleanable/blood/gibs/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/body + random_icon_states = list("gibhead", "gibtorso") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/torso + random_icon_states = list("gibtorso") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/limb + random_icon_states = list("gibleg", "gibarm") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/old + name = "old rotting gibs" + desc = "Space Jesus, why didn't anyone clean this up? It smells terrible." + bloodiness = 0 + +/obj/effect/decal/cleanable/blood/gibs/old/Initialize(mapload, list/datum/disease/diseases) + . = ..() + setDir(pick(1,2,4,8)) + icon_state += "-old" + add_blood_DNA(list("Non-human DNA" = "A+")) + +/obj/effect/decal/cleanable/blood/drip + name = "drips of blood" + desc = "It's gooey." + icon_state = "1" + random_icon_states = list("drip1","drip2","drip3","drip4","drip5") + bloodiness = 0 + var/drips = 1 + +/obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in() + return TRUE + +/obj/effect/decal/cleanable/blood/gibs/human + +/obj/effect/decal/cleanable/blood/gibs/human/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidgibs", 5) + update_icon() + guts() + +/obj/effect/decal/cleanable/blood/gibs/human/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/body + random_icon_states = list("gibhead", "gibtorso") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/torso + random_icon_states = list("gibtorso") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/limb + random_icon_states = list("gibleg", "gibarm") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + gib_overlay = TRUE + +// Slime Gibs +/obj/effect/decal/cleanable/blood/gibs/slime + desc = "They look gooey and gruesome." + +/obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidslimegibs", 5) + update_icon() + guts() + +/obj/effect/decal/cleanable/blood/gibs/slime/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/body + random_icon_states = list("gibhead", "gibtorso") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/torso + random_icon_states = list("gibtorso") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/limb + random_icon_states = list("gibleg", "gibarm") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/synth + desc = "They look sludgy and disgusting." + +/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidsyntheticgibs", 5) + update_icon() + guts() \ No newline at end of file diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 08d215a37a..87b4d00cdf 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -29,7 +29,18 @@ update_icon() /obj/effect/decal/cleanable/blood/update_icon() - color = blood_DNA_to_color() + for(var/datum/reagent/R in reagents.reagent_list) + // Get blood data from the blood reagent. + if(istype(R, /datum/reagent/blood)) + if(R.data["blood_type"]) + bloodmeme = R.data["blood_type"] + color = bloodtype_to_color(R.data["blood_type"]) + else if(istype(R, /datum/reagent/liquidgibs)) + if(R.data["blood_type"]) + bloodmeme = R.data["blood_type"] + color = bloodtype_to_color(R.data["blood_type"]) + else + color = blood_DNA_to_color() /obj/effect/decal/cleanable/blood/old name = "dried blood" @@ -76,150 +87,6 @@ . = ..() update_icon() -/obj/effect/decal/cleanable/blood/gibs - name = "gibs" - desc = "They look bloody and gruesome." - icon_state = "gibbl5" - layer = LOW_OBJ_LAYER - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") - mergeable_decal = FALSE - var/gib_overlay = FALSE - -/obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) - . = ..() - if(gib_overlay) - var/image/gibz = image(icon, icon_state + "-overlay", layer = LOW_OBJ_LAYER-0.1) - add_overlay(gibz) - if(!reagents) - reagents.add_reagent("liquidgibs", 5) - for(var/datum/reagent/R in reagents.reagent_list) - // Get blood data from the blood reagent. - if(istype(R, /datum/reagent/blood)) - if(R.data["blood_type"]) - bloodmeme = R.data["blood_type"] - if(istype(R, /datum/reagent/liquidgibs)) - if(R.data["blood_type"]) - bloodmeme = R.data["blood_type"] - -/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) - return - -/obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L) - if(istype(L) && has_gravity(loc)) - playsound(loc, 'sound/effects/gib_step.ogg', L.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) - . = ..() - -/obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions) - set waitfor = 0 - var/direction = pick(directions) - for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) - sleep(2) - if(i > 0) - var/list/datum/disease/diseases - GET_COMPONENT(infective, /datum/component/infective) - if(infective) - diseases = infective.diseases - var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) - splat.color = color - splat.bloodmeme = bloodmeme - if(!step_to(src, get_step(src, direction), 0)) - break - -/obj/effect/decal/cleanable/blood/gibs/up - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/down - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/body - random_icon_states = list("gibhead", "gibtorso") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/torso - random_icon_states = list("gibtorso") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/limb - random_icon_states = list("gibleg", "gibarm") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/core - random_icon_states = list("gibmid1", "gibmid2", "gibmid3") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/old - name = "old rotting gibs" - desc = "Space Jesus, why didn't anyone clean this up? It smells terrible." - bloodiness = 0 - -/obj/effect/decal/cleanable/blood/gibs/old/Initialize(mapload, list/datum/disease/diseases) - . = ..() - setDir(pick(1,2,4,8)) - icon_state += "-old" - add_blood_DNA(list("Non-human DNA" = "A+")) - -/obj/effect/decal/cleanable/blood/drip - name = "drips of blood" - desc = "It's gooey." - icon_state = "1" - random_icon_states = list("drip1","drip2","drip3","drip4","drip5") - bloodiness = 0 - var/drips = 1 - -/obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in() - return TRUE - -/obj/effect/decal/cleanable/blood/gibs/slime - desc = "They look gooey and gruesome." - -/obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases) - . = ..() - if(gib_overlay) - var/image/gibz = image(icon, icon_state + "-overlay", layer = LOW_OBJ_LAYER-0.1) - add_overlay(gibz) - reagents.add_reagent("liquidslimegibs", 5) - for(var/datum/reagent/R in reagents.reagent_list) - // Get blood data from the blood reagent. - if(istype(R, /datum/reagent/blood)) - if(R.data["blood_type"]) - bloodmeme = R.data["blood_type"] - if(istype(R, /datum/reagent/liquidgibs)) - if(R.data["blood_type"]) - bloodmeme = R.data["blood_type"] - -/obj/effect/decal/cleanable/blood/gibs/slime/up - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/slime/down - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/slime/body - random_icon_states = list("gibhead", "gibtorso") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/slime/torso - random_icon_states = list("gibtorso") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/slime/limb - random_icon_states = list("gibleg", "gibarm") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/slime/core - random_icon_states = list("gibmid1", "gibmid2", "gibmid3") - gib_overlay = TRUE -/obj/effect/decal/cleanable/blood/gibs/synth - desc = "They look sludgy and disgusting." - -/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) - . = ..() - reagents.add_reagent("liquidsyntheticgibs", 5) - - //BLOODY FOOTPRINTS /obj/effect/decal/cleanable/blood/footprints name = "tracks" diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm index 4db00a1cc5..02bf51bdd9 100644 --- a/code/game/objects/effects/decals/cleanable/robots.dm +++ b/code/game/objects/effects/decals/cleanable/robots.dm @@ -54,6 +54,7 @@ /obj/effect/decal/cleanable/oil/Initialize() . = ..() reagents.add_reagent("oil", 30) + reagents.add_reagent("liquidoilgibs", 5) /obj/effect/decal/cleanable/oil/streak random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5") diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index 76b445cfdc..4aaec7cf3e 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -33,16 +33,36 @@ var/list/dna_to_add //find the dna to pass to the spawned gibs. do note this can be null if the mob doesn't have blood. add_blood_DNA() has built in null handling. + to_chat(world, "Attempting to add DNA to pass to gibs") if(source_mob) + to_chat(world, "We got a source mob, [source_mob]") dna_to_add = source_mob.get_blood_dna_list() //ez pz else if(gib_mob_type) + to_chat(world, "We got a mob type, [gib_mob_type]") var/mob/living/temp_mob = new gib_mob_type(src) //generate a fake mob so that we pull the right type of DNA for the gibs. if(gib_mob_species) + to_chat(world, "We got a mob species too, [gib_mob_species]") if(ishuman(temp_mob)) + to_chat(world, "it's a human type mob for sure") var/mob/living/carbon/human/H = temp_mob H.set_species(gib_mob_species) - dna_to_add = temp_mob.get_blood_dna_list() - qdel(temp_mob) + if(isjellyperson(H)) + H.dna.blood_type = "GEL" + if(isipcperson(H)) + H.dna.blood_type = "HF" + if(isxenoperson(H)) + H.dna.blood_type = "X*" + if(islizard(H)) + H.dna.blood_type = "L" + to_chat(world, "temp_mob is a [H.dna.species]") + dna_to_add = temp_mob.get_blood_dna_list() + qdel(H) + else + dna_to_add = temp_mob.get_blood_dna_list() + qdel(temp_mob) + else + dna_to_add = temp_mob.get_blood_dna_list() + qdel(temp_mob) else dna_to_add = list("Non-human DNA" = random_blood_type()) //else, generate a random bloodtype for it. @@ -57,6 +77,8 @@ digester.stomach_contents += gib gib.add_blood_DNA(dna_to_add) + // color them properly, please. + gib.update_icon() var/list/directions = gibdirections[i] if(isturf(loc)) @@ -82,7 +104,7 @@ /obj/effect/gibspawner/human - gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up, /obj/effect/decal/cleanable/blood/gibs/down, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/body, /obj/effect/decal/cleanable/blood/gibs/limb, /obj/effect/decal/cleanable/blood/gibs/core) + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human/up, /obj/effect/decal/cleanable/blood/gibs/human/down, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/body, /obj/effect/decal/cleanable/blood/gibs/human/limb, /obj/effect/decal/cleanable/blood/gibs/human/core) gibamounts = list(1, 1, 1, 1, 1, 1, 1) gib_mob_type = /mob/living/carbon/human gib_mob_species = /datum/species/human @@ -95,7 +117,7 @@ /obj/effect/gibspawner/human/bodypartless //only the gibs that don't look like actual full bodyparts (except torso). - gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/torso) + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/core, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/core, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/torso) gibamounts = list(1, 1, 1, 1, 1, 1) /obj/effect/gibspawner/human/bodypartless/Initialize() @@ -104,58 +126,43 @@ return ..() /obj/effect/gibspawner/human/lizard - gib_mob_type = /mob/living/carbon/human gib_mob_species = /datum/species/lizard -/obj/effect/gibspawner/slimeperson +/obj/effect/gibspawner/human/lizard/bodypartless + +/obj/effect/gibspawner/human/slimeperson gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime/up, /obj/effect/decal/cleanable/blood/gibs/slime/down, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/body, /obj/effect/decal/cleanable/blood/gibs/slime/limb, /obj/effect/decal/cleanable/blood/gibs/slime/core) - gibamounts = list(1, 1, 1, 1, 1, 1, 1) - sound_vol = 50 - gib_mob_type = /mob/living/carbon/human + gib_mob_species = /datum/species/jelly -/obj/effect/gibspawner/slimeperson/Initialize() - if(!gibdirections.len) - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) - return ..() - - -/obj/effect/gibspawner/slimeperson/bodypartless //only the gibs that don't look like actual full bodyparts (except torso). - gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/torso) - gibamounts = list(1, 1, 1, 1, 1, 1) - -/obj/effect/gibspawner/slimeperson/bodypartless/Initialize() - if(!gibdirections.len) - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) - return ..() - +/obj/effect/gibspawner/human/slimeperson/bodypartless + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/torso) + gibamounts = list(2, 0, 1, 1, 2, 0) /obj/effect/gibspawner/xeno gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs/up, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/down, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/body, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/core) gibamounts = list(1, 1, 1, 1, 1, 1, 1) gib_mob_type = /mob/living/carbon/alien -/obj/effect/gibspawner/xeno/xenoperson - gib_mob_type = /mob/living/carbon/human - gib_mob_species = /datum/species/xeno - /obj/effect/gibspawner/xeno/Initialize() if(!gibdirections.len) gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) return ..() - /obj/effect/gibspawner/xeno/bodypartless //only the gibs that don't look like actual full bodyparts (except torso). gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/core, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/core, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/torso) gibamounts = list(1, 1, 1, 1, 1, 1) - /obj/effect/gibspawner/xeno/bodypartless/Initialize() if(!gibdirections.len) gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) return ..() +/obj/effect/gibspawner/xeno/xenoperson + gib_mob_type = /mob/living/carbon/human + gib_mob_species = /datum/species/xeno +/obj/effect/gibspawner/xeno/xenoperson/bodypartless /obj/effect/gibspawner/larva gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva/body, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva/body) @@ -176,8 +183,6 @@ gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list()) return ..() - - /obj/effect/gibspawner/robot sparks = 1 gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up, /obj/effect/decal/cleanable/robot_debris/down, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris/limb) @@ -190,15 +195,6 @@ gibamounts[6] = pick(0, 1, 2) return ..() -/obj/effect/gibspawner/ipc - sparks = 1 - gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up, /obj/effect/decal/cleanable/robot_debris/down, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris/limb) - gibamounts = list(1, 1, 1, 1, 1, 1) +/obj/effect/gibspawner/robot/ipc gib_mob_type = /mob/living/carbon/human gib_mob_species = /datum/species/ipc - -/obj/effect/gibspawner/ipc/Initialize() - if(!gibdirections.len) - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs) - gibamounts[6] = pick(0, 1, 2) - return ..() diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index e07fe8b6ea..bcc42acc1e 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -230,15 +230,23 @@ return "blood" /mob/living/carbon/get_blood_id() - var/mob/living/carbon/human/H = src - for(var/bluhduh in GLOB.blood_types[H.dna.species.exotic_blood]) - if(!bluhduh) - to_chat(world, "[H] has [H.dna.species.exotic_blood] for blood") - return H.dna.species.exotic_blood - else if((NOBLOOD in H.dna.species.species_traits) || (has_trait(TRAIT_NOCLONE))) - return null - else - return bluhduh + to_chat(world, "carbon's get blood id called") + var/mob/living/carbon/C = src + if(ishuman(C)) + to_chat(world, "[C] is a [dna.species]") + var/mob/living/carbon/human/H = C + if(H.dna.species.exotic_blood) + to_chat(world, "[H] has [H.dna.species.exotic_blood]") + return "[H.dna.species.exotic_blood]" + if(dna.species.exotic_blood) + to_chat(world, "[src] apparently isn't a human. but has exotic blood, [dna.species.exotic_blood].") + return dna.species.exotic_blood + else if((NOBLOOD in dna.species.species_traits) || (has_trait(TRAIT_NOCLONE))) + to_chat(world, "[src] apparently isn't a human. And has no clone or no blood") + return + else + to_chat(world, "[src] apparently isn't a human, doesn't have snowflake blood either or something.") + return "blood" // This is has more potential uses, and is probably faster than the old proc. /proc/get_safe_blood(bloodtype) diff --git a/code/modules/mob/living/brain/brain.dm b/code/modules/mob/living/brain/brain.dm index 76b416772e..2f1afeac6f 100644 --- a/code/modules/mob/living/brain/brain.dm +++ b/code/modules/mob/living/brain/brain.dm @@ -9,7 +9,10 @@ /mob/living/brain/Initialize() . = ..() create_dna(src) - stored_dna.initialize_dna(random_blood_type()) + if(stored_dna.blood_type) + stored_dna.initialize_dna(stored_dna.blood_type) + else + stored_dna.initialize_dna(random_blood_type()) if(isturf(loc)) //not spawned in an MMI or brain organ (most likely adminspawned) var/obj/item/organ/brain/OB = new(loc) //we create a new brain organ for it. OB.brainmob = src @@ -20,6 +23,14 @@ if(!stored_dna.species) var/rando_race = pick(GLOB.roundstart_races) stored_dna.species = new rando_race() + if(isjellyperson(stored_dna.species)) + stored_dna.blood_type = "GEL" + if(isipcperson(stored_dna.species)) + stored_dna.blood_type = "HF" + if(isxenoperson(stored_dna.species)) + stored_dna.blood_type = "X*" + if(islizard(stored_dna.species)) + stored_dna.blood_type = "L" /mob/living/brain/Destroy() if(key) //If there is a mob connected to this thing. Have to check key twice to avoid false death reporting. diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index bfb9ffec25..9c2a082b1f 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -7,18 +7,18 @@ /mob/living/carbon/human/spawn_gibs(with_bodyparts) if(isjellyperson(src)) if(with_bodyparts) - new /obj/effect/gibspawner/slimeperson(drop_location(), dna, get_static_viruses()) + new /obj/effect/gibspawner/human/slimeperson(drop_location(), dna, get_static_viruses()) else - new /obj/effect/gibspawner/slimeperson/bodypartless(drop_location(), dna, get_static_viruses()) + new /obj/effect/gibspawner/human/slimeperson/bodypartless(drop_location(), dna, get_static_viruses()) if(isipcperson(src)) - new /obj/effect/gibspawner/ipc(drop_location(), dna, get_static_viruses()) + new /obj/effect/gibspawner/robot/ipc(drop_location(), dna, get_static_viruses()) if(isxenoperson(src)) if(with_bodyparts) - new /obj/effect/gibspawner/xeno(drop_location(), dna, get_static_viruses()) + new /obj/effect/gibspawner/xeno/xenoperson(drop_location(), dna, get_static_viruses()) else - new /obj/effect/gibspawner/xeno/bodypartless(drop_location(), dna, get_static_viruses()) + new /obj/effect/gibspawner/xeno/xenoperson/bodypartless(drop_location(), dna, get_static_viruses()) else if(with_bodyparts) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index e2e9e5149f..d3eb4bafa0 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -268,7 +268,16 @@ GLOBAL_LIST_EMPTY(roundstart_races) regenerate_organs(C,old_species) if(exotic_bloodtype && C.dna.blood_type != exotic_bloodtype) - C.dna.blood_type = exotic_bloodtype + if(isjellyperson(C)) + C.dna.blood_type = "GEL" + if(isipcperson(C)) + C.dna.blood_type = "HF" + if(isxenoperson(C)) + C.dna.blood_type = "X*" + if(islizard(C)) + C.dna.blood_type = "L" + else + C.dna.blood_type = exotic_bloodtype if(old_species.mutanthands) for(var/obj/item/I in C.held_items) @@ -304,7 +313,16 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) if(C.dna.species.exotic_bloodtype) - C.dna.blood_type = random_blood_type() + if(isjellyperson(C)) + C.dna.blood_type = "GEL" + if(isipcperson(C)) + C.dna.blood_type = "HF" + if(isxenoperson(C)) + C.dna.blood_type = "X*" + if(islizard(C)) + C.dna.blood_type = "L" + else + C.dna.blood_type = random_blood_type() if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(TRUE) for(var/X in inherent_traits) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index b4eec5786a..b8f79780aa 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -8,7 +8,7 @@ id = "slimeperson" limbs_id = "slime" default_color = "00FFFF" - species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD) + species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR) inherent_traits = list(TRAIT_TOXINLOVER) mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "taur") default_features = list("mcolor" = "FFF", "mcolor2" = "FFF","mcolor3" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_body_markings" = "Plain", "mam_snouts" = "None", "taur" = "None") diff --git a/tgstation.dme b/tgstation.dme index fdb11dea5e..7037d50cb7 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -729,6 +729,7 @@ #include "code\game\objects\effects\decals\misc.dm" #include "code\game\objects\effects\decals\remains.dm" #include "code\game\objects\effects\decals\cleanable\aliens.dm" +#include "code\game\objects\effects\decals\cleanable\gibs.dm" #include "code\game\objects\effects\decals\cleanable\humans.dm" #include "code\game\objects\effects\decals\cleanable\misc.dm" #include "code\game\objects\effects\decals\cleanable\robots.dm" From 0f02562b51ab83e2ef16fb0b842f323ba0879c58 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 9 May 2019 09:59:34 -0500 Subject: [PATCH 020/469] Fixes Xenomorph blood related travis errors --- .../LavaRuins/lavaland_surface_alien_nest.dmm | 8 +-- _maps/RandomRuins/SpaceRuins/bigderelict1.dmm | 4 +- _maps/RandomZLevels/Academy.dmm | 2 +- _maps/RandomZLevels/caves.dmm | 6 +- _maps/RandomZLevels/moonoutpost19.dmm | 6 +- .../map_files/Deltastation/DeltaStation2.dmm | 2 +- _maps/map_files/OmegaStation/OmegaStation.dmm | 2 +- _maps/shuttles/emergency_syndicate.dmm | 27 ++------ code/game/gamemodes/meteor/meteors.dm | 2 +- .../effects/decals/cleanable/aliens.dm | 67 +++++-------------- .../objects/effects/decals/cleanable/gibs.dm | 4 +- .../objects/effects/spawners/gibspawner.dm | 10 ++- code/modules/mob/living/blood.dm | 12 ++-- code/modules/mob/living/bloodcrawl.dm | 6 +- code/modules/mob/living/carbon/alien/alien.dm | 2 +- .../mob/living/simple_animal/bot/cleanbot.dm | 1 - .../hostile/mining_mobs/gutlunch.dm | 2 +- 17 files changed, 58 insertions(+), 105 deletions(-) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm index 6893a41517..1ea3f19c62 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm @@ -167,7 +167,7 @@ /area/ruin/unpowered/xenonest) "aM" = ( /obj/structure/alien/weeds, -/obj/effect/decal/cleanable/xenoblood, +/obj/effect/decal/cleanable/blood/xeno, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/xenonest) "aQ" = ( @@ -260,7 +260,7 @@ /obj/structure/stone_tile/cracked{ dir = 1 }, -/obj/effect/decal/cleanable/xenoblood, +/obj/effect/decal/cleanable/blood/xeno, /turf/open/indestructible/boss/air, /area/ruin/unpowered/xenonest) "be" = ( @@ -381,7 +381,7 @@ /obj/structure/stone_tile{ dir = 1 }, -/obj/effect/decal/cleanable/xenoblood, +/obj/effect/decal/cleanable/blood/xeno, /turf/open/indestructible/boss/air, /area/ruin/unpowered/xenonest) "bs" = ( @@ -439,7 +439,7 @@ /obj/structure/stone_tile{ dir = 8 }, -/obj/effect/decal/cleanable/xenoblood, +/obj/effect/decal/cleanable/blood/xeno, /turf/open/indestructible/boss/air, /area/ruin/unpowered/xenonest) "by" = ( diff --git a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm index f1a3005ce1..e9fb98b6f0 100644 --- a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm +++ b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm @@ -1288,7 +1288,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/cargobay) "cV" = ( -/obj/effect/decal/cleanable/xenoblood/xsplatter, +/obj/effect/decal/cleanable/blood/xeno/splatter, /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/cargobay) "cW" = ( @@ -1525,7 +1525,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/cargobay) "dq" = ( -/obj/effect/decal/cleanable/xenoblood/xsplatter, +/obj/effect/decal/cleanable/blood/xeno/splatter, /obj/structure/alien/weeds{ color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; diff --git a/_maps/RandomZLevels/Academy.dmm b/_maps/RandomZLevels/Academy.dmm index 29bd7d0526..2f08d9a29e 100644 --- a/_maps/RandomZLevels/Academy.dmm +++ b/_maps/RandomZLevels/Academy.dmm @@ -3830,7 +3830,7 @@ /turf/open/floor/engine/cult, /area/awaymission/academy/academycellar) "kY" = ( -/obj/effect/decal/cleanable/xenoblood, +/obj/effect/decal/cleanable/blood/xeno, /turf/open/floor/engine/cult, /area/awaymission/academy/academycellar) "kZ" = ( diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm index a25808d933..11c27208c1 100644 --- a/_maps/RandomZLevels/caves.dmm +++ b/_maps/RandomZLevels/caves.dmm @@ -873,7 +873,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/effect/decal/cleanable/xenoblood, +/obj/effect/decal/cleanable/blood/xeno, /turf/open/floor/plating{ initial_gas_mix = "n2=23;o2=14" }, @@ -945,7 +945,7 @@ /area/awaymission/caves/research) "cN" = ( /obj/machinery/door/window/eastleft, -/obj/effect/decal/cleanable/xenoblood/xgibs, +/obj/effect/decal/cleanable/blood/xeno/gibs, /turf/open/floor/plating{ initial_gas_mix = "n2=23;o2=14" }, @@ -1015,7 +1015,7 @@ }, /area/awaymission/caves/BMP_asteroid/level_two) "cV" = ( -/obj/effect/decal/cleanable/xenoblood/xgibs, +/obj/effect/decal/cleanable/blood/xeno/gibs, /turf/open/floor/plating{ initial_gas_mix = "n2=23;o2=14" }, diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index 61c606dcde..826d7b1ea1 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -5597,8 +5597,8 @@ }, /area/awaymission/moonoutpost19/arrivals) "kK" = ( -/obj/effect/decal/cleanable/xenoblood, -/obj/effect/decal/cleanable/xenoblood/xgibs, +/obj/effect/decal/cleanable/blood/xeno, +/obj/effect/decal/cleanable/blood/xeno/gibs, /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ dir = 1 @@ -5608,7 +5608,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "kL" = ( -/obj/effect/decal/cleanable/xenoblood, +/obj/effect/decal/cleanable/blood/xeno, /obj/effect/decal/remains/xeno{ desc = "They look like the remains of something... alien. The front of skull appears to have been completely obliterated." }, diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 3269d53588..1fcef5f0b3 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -89150,7 +89150,7 @@ /area/maintenance/port) "cTz" = ( /obj/effect/decal/remains/xeno, -/obj/effect/decal/cleanable/xenoblood, +/obj/effect/decal/cleanable/blood/xeno, /turf/open/floor/circuit/green, /area/science/xenobiology) "cTA" = ( diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 19df3bca53..710bff1068 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -43060,7 +43060,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "vsf" = ( -/obj/effect/decal/cleanable/xenoblood/xgibs, +/obj/effect/decal/cleanable/blood/xeno/gibs, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, diff --git a/_maps/shuttles/emergency_syndicate.dmm b/_maps/shuttles/emergency_syndicate.dmm index 6e76bbc5f6..5a578fb128 100644 --- a/_maps/shuttles/emergency_syndicate.dmm +++ b/_maps/shuttles/emergency_syndicate.dmm @@ -116,7 +116,6 @@ id = "shuttleshutters"; name = "Bridge Blast Shutters"; pixel_x = -26; - pixel_y = 0; req_access_txt = "19" }, /obj/effect/turf_decal/tile/neutral{ @@ -199,8 +198,7 @@ /obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/dark, /area/shuttle/escape) @@ -309,8 +307,7 @@ /obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel/dark, /area/shuttle/escape) @@ -408,7 +405,6 @@ id = "smindicate"; name = "external door control"; pixel_x = 26; - pixel_y = 0; req_access_txt = "150" }, /obj/structure/fans/tiny, @@ -420,8 +416,7 @@ /obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/dark, /area/shuttle/escape) @@ -1064,10 +1059,7 @@ /area/shuttle/escape) "bR" = ( /obj/structure/table/reinforced, -/obj/item/storage/box/drinkingglasses{ - pixel_x = 0; - pixel_y = 0 - }, +/obj/item/storage/box/drinkingglasses, /obj/item/storage/box/drinkingglasses{ pixel_x = -3; pixel_y = 3 @@ -1499,8 +1491,7 @@ /obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/dark, /area/shuttle/escape) @@ -1606,8 +1597,7 @@ /obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/dark, /area/shuttle/escape) @@ -1634,10 +1624,7 @@ pixel_x = 3; pixel_y = -3 }, -/obj/item/storage/toolbox/emergency{ - pixel_x = 0; - pixel_y = 0 - }, +/obj/item/storage/toolbox/emergency, /obj/item/storage/toolbox/syndicate{ pixel_x = -3; pixel_y = 3 diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 36e363df25..58f551c648 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -317,7 +317,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event /obj/effect/meteor/meaty/xeno/ram_turf(turf/T) if(!isspaceturf(T)) - new /obj/effect/decal/cleanable/blood/xenoblood(T) + new /obj/effect/decal/cleanable/blood/xeno(T) //Station buster Tunguska /obj/effect/meteor/tunguska diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index e4fcbb8dd8..cb5fe12d33 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -1,81 +1,50 @@ // Note: BYOND is object oriented. There is no reason for this to be copy/pasted blood code. -/obj/effect/decal/cleanable/blood/xenoblood +/obj/effect/decal/cleanable/blood/xeno name = "xeno blood" desc = "It's green and acidic. It looks like... blood?" - icon = 'icons/effects/blood.dmi' - icon_state = "xfloor1" - random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7") - bloodiness = BLOOD_AMOUNT_PER_DECAL - blood_state = BLOOD_STATE_BLOOD color = BLOOD_COLOR_XENO -/obj/effect/decal/cleanable/blood/xenoblood/Initialize() +/obj/effect/decal/cleanable/blood/xeno/Initialize() . = ..() - add_blood_DNA(list("donor"= "UNKNOWN DNA","bloodcolor" = BLOOD_COLOR_XENO, "blood_type"= "X*")) + if(!data) + data = add_blood_DNA(list("donor"= "UNKNOWN DNA","bloodcolor" = BLOOD_COLOR_XENO, "blood_type"= "X*")) -/obj/effect/decal/cleanable/blood/xenoblood/xsplatter - random_icon_states = list("xgibbl1", "xgibbl2", "xgibbl3", "xgibbl4", "xgibbl5") - -/obj/effect/decal/cleanable/blood/xenoblood/xgibs +/obj/effect/decal/cleanable/blood/gibs/xeno name = "xeno gibs" desc = "Gnarly..." - icon = 'icons/effects/blood.dmi' icon_state = "xgib1" - layer = LOW_OBJ_LAYER random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6") - mergeable_decal = FALSE -/obj/effect/decal/cleanable/blood/xenoblood/xgibs/Initialize(mapload, list/datum/disease/diseases) - reagents.add_reagent("liquidxenogibs", 5) +/obj/effect/decal/cleanable/blood/gibs/xeno/Initialize(mapload, list/datum/disease/diseases) . = ..() + reagents.add_reagent("liquidxenogibs", 5) -/obj/effect/decal/cleanable/blood/xenoblood/xgibs/proc/streak(list/directions) - set waitfor = 0 - var/direction = pick(directions) - for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) - sleep(2) - if(i > 0) - var/list/datum/disease/diseases - GET_COMPONENT(infective, /datum/component/infective) - if(infective) - diseases = infective.diseases - var/obj/effect/decal/cleanable/blood/xenoblood/xsplatter/splat = new /obj/effect/decal/cleanable/blood/xenoblood/xsplatter(loc, diseases) - splat.color = color - if(!step_to(src, get_step(src, direction), 0)) - break - -/obj/effect/decal/cleanable/blood/xenoblood/xgibs/ex_act() - return - -/obj/effect/decal/cleanable/blood/xenoblood/xgibs/up +/obj/effect/decal/cleanable/blood/gibs/xeno/up/xeno random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1") -/obj/effect/decal/cleanable/blood/xenoblood/xgibs/down +/obj/effect/decal/cleanable/blood/gibs/xeno/down/xeno random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibdown1","xgibdown1","xgibdown1") -/obj/effect/decal/cleanable/blood/xenoblood/xgibs/body +/obj/effect/decal/cleanable/blood/gibs/xeno/body/xeno random_icon_states = list("xgibhead", "xgibtorso") -/obj/effect/decal/cleanable/blood/xenoblood/xgibs/torso +/obj/effect/decal/cleanable/blood/gibs/xeno/torso/xeno random_icon_states = list("xgibtorso") -/obj/effect/decal/cleanable/blood/xenoblood/xgibs/limb +/obj/effect/decal/cleanable/blood/gibs/xeno/limb/xeno random_icon_states = list("xgibleg", "xgibarm") -/obj/effect/decal/cleanable/blood/xenoblood/xgibs/core +/obj/effect/decal/cleanable/blood/gibs/xeno/core/xeno random_icon_states = list("xgibmid1", "xgibmid2", "xgibmid3") -/obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva +/obj/effect/decal/cleanable/blood/gibs/xeno/larva random_icon_states = list("xgiblarva1", "xgiblarva2") -/obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva/body +/obj/effect/decal/cleanable/blood/gibs/xeno/larva/body random_icon_states = list("xgiblarvahead", "xgiblarvatorso") -/obj/effect/decal/cleanable/blood/xenoblood/xtracks - icon_state = "xtracks" - random_icon_states = null - -/obj/effect/decal/cleanable/blood/xenoblood/xtracks/Initialize() +/obj/effect/decal/cleanable/blood/xeno/tracks/Initialize() . = ..() - add_blood_DNA(list("UNKNOWN DNA" = "X*")) \ No newline at end of file + if(!data) + data = add_blood_DNA(list("UNKNOWN DNA" = "X*")) \ No newline at end of file diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 855e04942c..81d3e43c03 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -9,7 +9,9 @@ /obj/effect/decal/cleanable/blood/gibs/proc/guts() if(gib_overlay) - var/icon/gibz = new(icon, icon_state + "-overlay") + var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-overlay") + if(bloodmeme != "GEL") + gibz.appearance_flags = RESET_COLOR add_overlay(gibz) /obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index 4aaec7cf3e..cfe0bec455 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -101,8 +101,6 @@ /obj/effect/gibspawner/generic/animal gib_mob_type = /mob/living/simple_animal/pet - - /obj/effect/gibspawner/human gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human/up, /obj/effect/decal/cleanable/blood/gibs/human/down, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/body, /obj/effect/decal/cleanable/blood/gibs/human/limb, /obj/effect/decal/cleanable/blood/gibs/human/core) gibamounts = list(1, 1, 1, 1, 1, 1, 1) @@ -140,7 +138,7 @@ gibamounts = list(2, 0, 1, 1, 2, 0) /obj/effect/gibspawner/xeno - gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs/up, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/down, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/body, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/core) + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/up/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/down/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/body/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/limb/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core/xeno) gibamounts = list(1, 1, 1, 1, 1, 1, 1) gib_mob_type = /mob/living/carbon/alien @@ -150,7 +148,7 @@ return ..() /obj/effect/gibspawner/xeno/bodypartless //only the gibs that don't look like actual full bodyparts (except torso). - gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/core, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/core, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/torso) + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/torso/xeno) gibamounts = list(1, 1, 1, 1, 1, 1) /obj/effect/gibspawner/xeno/bodypartless/Initialize() @@ -165,7 +163,7 @@ /obj/effect/gibspawner/xeno/xenoperson/bodypartless /obj/effect/gibspawner/larva - gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva/body, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva/body) + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/larva, /obj/effect/decal/cleanable/blood/gibs/xeno/larva, /obj/effect/decal/cleanable/blood/gibs/xeno/larva/body, /obj/effect/decal/cleanable/blood/gibs/xeno/larva/body) gibamounts = list(1, 1, 1, 1) gib_mob_type = /mob/living/carbon/alien/larva @@ -175,7 +173,7 @@ return ..() /obj/effect/gibspawner/larva/bodypartless - gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva) + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/larva, /obj/effect/decal/cleanable/blood/gibs/xeno/larva, /obj/effect/decal/cleanable/blood/gibs/xeno/larva) gibamounts = list(1, 1, 1) /obj/effect/gibspawner/larva/bodypartless/Initialize() diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index bcc42acc1e..ba1a7b16ca 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -308,19 +308,17 @@ B.bloodiness += BLOOD_AMOUNT_PER_DECAL B.transfer_mob_blood_dna(src) //give blood info to the blood decal. if(temp_blood_DNA) - B.add_blood_DNA(temp_blood_DNA) + if(isalien(src)) + B.add_blood_DNA(list("UNKNOWN DNA" = "X*")) + else + B.add_blood_DNA(temp_blood_DNA) /mob/living/carbon/human/add_splatter_floor(turf/T, small_drip) if(!(NOBLOOD in dna.species.species_traits)) ..() /mob/living/carbon/alien/add_splatter_floor(turf/T, small_drip) - if(!T) - T = get_turf(src) - var/obj/effect/decal/cleanable/blood/xenoblood/B = locate() in T.contents - if(!B) - B = new(T) - B.add_blood_DNA(list("UNKNOWN DNA" = "X*")) + .=..() /mob/living/silicon/robot/add_splatter_floor(turf/T, small_drip) if(!T) diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index 3fec41ad58..86023b42dc 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -143,9 +143,9 @@ /mob/living/proc/exit_blood_effect(obj/effect/decal/cleanable/B) playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1) //Makes the mob have the color of the blood pool it came out of - var/newcolor = rgb(149, 10, 10) - if(istype(B, /obj/effect/decal/cleanable/blood/xenoblood)) - newcolor = rgb(43, 186, 0) + var/newcolor = BLOOD_COLOR_HUMAN + if(istype(B, /obj/effect/decal/cleanable/blood/xeno)) + newcolor = BLOOD_COLOR_XENO add_atom_colour(newcolor, TEMPORARY_COLOUR_PRIORITY) // but only for a few seconds spawn(30) diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 3c5f5c9002..1072dd2a29 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -20,7 +20,7 @@ var/heat_protection = 0.5 var/leaping = 0 - gib_type = /obj/effect/decal/cleanable/blood/xenoblood/xgibs + gib_type = /obj/effect/decal/cleanable/blood/gibs/xeno unique_name = 1 var/static/regex/alien_name_regex = new("alien (larva|sentinel|drone|hunter|praetorian|queen)( \\(\\d+\\))?") diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index d576ebddbf..97f14ce7bd 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -191,7 +191,6 @@ ) if(blood) - target_types += /obj/effect/decal/cleanable/blood/xenoblood target_types += /obj/effect/decal/cleanable/blood target_types += /obj/effect/decal/cleanable/trail_holder diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm index 1516f45ea3..910e9c3c4a 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm @@ -39,7 +39,7 @@ animal_species = /mob/living/simple_animal/hostile/asteroid/gutlunch childtype = list(/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck = 45, /mob/living/simple_animal/hostile/asteroid/gutlunch/guthen = 55) - wanted_objects = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/gibs/) + wanted_objects = list(/obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/) var/obj/item/udder/gutlunch/udder = null /mob/living/simple_animal/hostile/asteroid/gutlunch/Initialize() From 3f6cd92d546a68a029d5391bdfba16d7ddac7bb6 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 9 May 2019 10:15:51 -0500 Subject: [PATCH 021/469] Ok this time all of them are nitpicked --- _maps/RandomRuins/SpaceRuins/bigderelict1.dmm | 4 ++-- _maps/RandomZLevels/caves.dmm | 4 ++-- _maps/RandomZLevels/moonoutpost19.dmm | 2 +- _maps/map_files/OmegaStation/OmegaStation.dmm | 2 +- .../effects/decals/cleanable/aliens.dm | 19 +++++++++++++++++++ 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm index e9fb98b6f0..9c273f4d75 100644 --- a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm +++ b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm @@ -1288,7 +1288,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/cargobay) "cV" = ( -/obj/effect/decal/cleanable/blood/xeno/splatter, +/obj/effect/decal/cleanable/blood/splatter/xeno, /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/cargobay) "cW" = ( @@ -1525,7 +1525,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/cargobay) "dq" = ( -/obj/effect/decal/cleanable/blood/xeno/splatter, +/obj/effect/decal/cleanable/blood/splatter/xeno, /obj/structure/alien/weeds{ color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm index 11c27208c1..d50480c381 100644 --- a/_maps/RandomZLevels/caves.dmm +++ b/_maps/RandomZLevels/caves.dmm @@ -945,7 +945,7 @@ /area/awaymission/caves/research) "cN" = ( /obj/machinery/door/window/eastleft, -/obj/effect/decal/cleanable/blood/xeno/gibs, +/obj/effect/decal/cleanable/blood/gibs/xeno, /turf/open/floor/plating{ initial_gas_mix = "n2=23;o2=14" }, @@ -1015,7 +1015,7 @@ }, /area/awaymission/caves/BMP_asteroid/level_two) "cV" = ( -/obj/effect/decal/cleanable/blood/xeno/gibs, +/obj/effect/decal/cleanable/blood/gibs/xeno, /turf/open/floor/plating{ initial_gas_mix = "n2=23;o2=14" }, diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index 826d7b1ea1..fedd55a1bf 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -5598,7 +5598,7 @@ /area/awaymission/moonoutpost19/arrivals) "kK" = ( /obj/effect/decal/cleanable/blood/xeno, -/obj/effect/decal/cleanable/blood/xeno/gibs, +/obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ dir = 1 diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 710bff1068..39cece9d1e 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -43060,7 +43060,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "vsf" = ( -/obj/effect/decal/cleanable/blood/xeno/gibs, +/obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index cb5fe12d33..6ec74bf35e 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -10,16 +10,35 @@ if(!data) data = add_blood_DNA(list("donor"= "UNKNOWN DNA","bloodcolor" = BLOOD_COLOR_XENO, "blood_type"= "X*")) +/obj/effect/decal/cleanable/blood/splatter/xeno + color = BLOOD_COLOR_XENO + /obj/effect/decal/cleanable/blood/gibs/xeno name = "xeno gibs" desc = "Gnarly..." icon_state = "xgib1" random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6") + color = BLOOD_COLOR_XENO /obj/effect/decal/cleanable/blood/gibs/xeno/Initialize(mapload, list/datum/disease/diseases) . = ..() reagents.add_reagent("liquidxenogibs", 5) +/obj/effect/decal/cleanable/blood/gibs/xeno/proc/streak(list/directions) + set waitfor = 0 + var/direction = pick(directions) + for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) + sleep(2) + if(i > 0) + var/list/datum/disease/diseases + GET_COMPONENT(infective, /datum/component/infective) + if(infective) + diseases = infective.diseases + var/obj/effect/decal/cleanable/blood/splatter/xeno/splat = new /obj/effect/decal/cleanable/blood/splatter/xeno(loc, diseases) + splat.color = color + splat.bloodmeme = bloodmeme + if(!step_to(src, get_step(src, direction), 0)) + break /obj/effect/decal/cleanable/blood/gibs/xeno/up/xeno random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1") From 8af9c6fad90fc9f832fb0d4b617864ce5ef94290 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 9 May 2019 10:32:14 -0500 Subject: [PATCH 022/469] duplicate definitions? really? wtf --- code/game/objects/effects/decals/cleanable/aliens.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 6ec74bf35e..93bde588ee 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -24,7 +24,7 @@ . = ..() reagents.add_reagent("liquidxenogibs", 5) -/obj/effect/decal/cleanable/blood/gibs/xeno/proc/streak(list/directions) +/obj/effect/decal/cleanable/blood/gibs/xeno/streak(list/directions) set waitfor = 0 var/direction = pick(directions) for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) @@ -39,6 +39,7 @@ splat.bloodmeme = bloodmeme if(!step_to(src, get_step(src, direction), 0)) break + /obj/effect/decal/cleanable/blood/gibs/xeno/up/xeno random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1") From 88831da8f4d1cb777ca86291c9f35ca71bd7ffd1 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 9 May 2019 14:43:05 -0500 Subject: [PATCH 023/469] it's the one part that I keep saying I just need to get around to --- code/__DEFINES/misc.dm | 7 +- code/__HELPERS/_cit_helpers.dm | 11 +++ code/game/atoms.dm | 39 +++++++++-- .../effects/decals/cleanable/humans.dm | 67 ++++++------------- 4 files changed, 70 insertions(+), 54 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 27991133c7..090727d845 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -171,7 +171,12 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache) #define BLOOD_LOSS_IN_SPREAD 20 //Bloody shoe blood states -#define BLOOD_STATE_BLOOD "blood" +#define HUMANIZED_BLOOD "A+" +#define LIZARDIZED_BLOOD "L" +#define SLIMEIZED_BLOOD "GEL" +#define OILIZED_BLOOD "HR" +#define XENOIZED_BLOOD "X*" +#define SYNTHETICIZED_BLOOD "SY" #define BLOOD_STATE_OIL "oil" #define BLOOD_STATE_NOT_BLOODY "no blood whatsoever" #define BLOOD_AMOUNT_PER_DECAL 20 diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm index 0dd0bc2953..1b1cae43bb 100644 --- a/code/__HELPERS/_cit_helpers.dm +++ b/code/__HELPERS/_cit_helpers.dm @@ -111,6 +111,17 @@ GLOBAL_LIST_INIT(paw_taurs, list( )) //blood types +GLOBAL_LIST_INIT(regular_bloods,list( + "O-", + "O+", + "A-", + "A+", + "B-", + "B+", + "AB-", + "AB+" + )) + GLOBAL_LIST_INIT(blood_types, list( "blood", "syntheticblood", diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 179f0c6ee4..c6ae093ab5 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -389,14 +389,39 @@ blood_splatter_icon.Blend(blood_DNA_to_color(), ICON_MULTIPLY) add_overlay(blood_splatter_icon) -/atom/proc/blood_DNA_to_color() - var/list/colors = list()//first we make a list of all bloodtypes present - var/list/blood = return_blood_DNA() - for(var/bloop in blood) - if(colors[blood[bloop]]) - colors[blood[bloop]]++ +/atom/proc/blood_list_checks(Atom/A, var/blood_type, var/amount) //This is a messy attempt at trying to reduce lists of items and mobs with blood on them + if(blood_type in GLOB.regular_bloods) + blood_type = "A+" //generic so we don't have 8 different types of human blood + + if(is_cleanable(A) + var/obj/effect/decal/cleanable/CL = A + if(blood_type in CL.bloodmeme) + return else - colors[blood[bloop]] = 1 + CL.bloodmeme += blood_type + + if(isitem(A)) + var/obj/item/I = A + if(blood_type in CL.bloodmeme) + return + else + CL.bloodmeme += blood_type + + if(iscarbon(A)) + var/mob/living/carbon/C = A + if(blood_type in C.bloodmeme) + return + else + C.bloodmeme += blood_type + + +/atom/proc/blood_DNA_to_color(list/bloods) + var/list/colors = list()//first we make a list of all bloodtypes present + for(var/bloop in bloods) + if(colors[bloods[bloop]]) + colors[bloods[bloop]]++ + else + colors[bloods[bloop]] = 1 var/final_rgb = "#940000" diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 87b4d00cdf..92cf77ab2f 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -7,7 +7,7 @@ blood_state = BLOOD_STATE_BLOOD color = BLOOD_COLOR_HUMAN bloodiness = BLOOD_AMOUNT_PER_DECAL - var/bloodmeme = "" + var/list/bloodmeme = "" var/data = "" /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) @@ -56,17 +56,17 @@ /obj/effect/decal/cleanable/blood/splatter random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") -/obj/effect/decal/cleanable/blood/tracks - icon_state = "tracks" - desc = "They look like tracks left by wheels." - random_icon_states = null - /obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose so that it shows up even on regular splatters name = "blood" icon_state = "ltrails_1" desc = "Your instincts say you shouldn't be following these." random_icon_states = null var/list/existing_dirs = list() + blood_state = BLOOD_STATE_BLOOD + color = BLOOD_COLOR_HUMAN + bloodiness = BLOOD_AMOUNT_PER_DECAL + var/bloodmeme = "" + var/data = "" /obj/effect/decal/cleanable/trail_holder/update_icon() for(var/datum/reagent/R in reagents.reagent_list) @@ -74,6 +74,12 @@ if(istype(R, /datum/reagent/blood)) if(R.data["blood_type"]) color = bloodtype_to_color(R.data["blood_type"]) //Color the blood with our dna stuff + else if(istype(R, /datum/reagent/liquidgibs)) + if(R.data["blood_type"]) + bloodmeme = R.data["blood_type"] + color = bloodtype_to_color(R.data["blood_type"]) + else + color = blood_DNA_to_color() /obj/effect/cleanable/trail_holder/Initialize() . = ..() @@ -88,7 +94,7 @@ update_icon() //BLOODY FOOTPRINTS -/obj/effect/decal/cleanable/blood/footprints +/obj/effect/decal/cleanable/blood/footprints/tracks name = "tracks" icon = 'icons/effects/fluidtracks.dmi' icon_state = "nothingwhatsoever" @@ -104,57 +110,28 @@ if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes - if(S) - if(S.last_bloodtype) - color = bloodtype_to_color(S.last_bloodtype) - else - color = bloodtype_to_color(bloodmeme) - else - if(H.last_bloodtype) - color = bloodtype_to_color(H.last_bloodtype) - else - color = bloodtype_to_color(bloodmeme) - - if(S && S.bloody_shoes[blood_state]) + S.last_bloodtype = bloodmeme S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(entered_dirs & H.dir)) entered_dirs |= H.dir update_icon() - else - H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) - if (!(entered_dirs & H.dir)) - entered_dirs |= H.dir - update_icon() + else if(!bloodiness) + H.bloodiness = max(bloodiness / BLOOD_LOSS_IN_SPREAD, 0) + /obj/effect/decal/cleanable/blood/footprints/tracks/Uncrossed(atom/movable/O) ..() if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes - if(S) - if(S.last_bloodtype) - color = bloodtype_to_color(S.last_bloodtype) - else - color = bloodtype_to_color(bloodmeme) - else - if(H.last_bloodtype) - color = bloodtype_to_color(H.last_bloodtype) - else - color = bloodtype_to_color(bloodmeme) - if(S && S.bloody_shoes[blood_state]) S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(exited_dirs & H.dir)) exited_dirs |= H.dir update_icon() - else - H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) - if (!(exited_dirs & H.dir)) - exited_dirs |= H.dir - update_icon() /obj/effect/decal/cleanable/blood/footprints/tracks/update_icon() @@ -162,16 +139,14 @@ for(var/Ddir in GLOB.cardinals) if(entered_dirs & Ddir) - var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] + var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"] if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir) - bloodstep_overlay.color = bloodtype_to_color(bloodmeme) + GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]1", dir = Ddir) add_overlay(bloodstep_overlay) if(exited_dirs & Ddir) - var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"] + var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir) - bloodstep_overlay.color = bloodtype_to_color(bloodmeme) + GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]2", dir = Ddir) add_overlay(bloodstep_overlay) alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness From 11c54f5fba186219bfcce4a0523a76de56b83546 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 9 May 2019 14:43:12 -0500 Subject: [PATCH 024/469] Update human_movement.dm --- .../mob/living/carbon/human/human_movement.dm | 50 +++++++++++++------ 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index cfc2b75453..28a642d7a0 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -66,11 +66,13 @@ FP.blood_state = S.blood_state FP.entered_dirs |= dir FP.bloodiness = S.bloody_shoes[S.blood_state] + FP.bloodmeme = S.bloodmeme FP.update_icon() update_inv_shoes() //End bloody footprints S.step_action() + else if(!buckled) if(!lying) @@ -78,12 +80,11 @@ if(!has_gravity(loc)) return var/turf/T = get_turf(src) - if(blood_smear && blood_smear[blood_state]) + if(bloodiness) var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks) in T - if (oldFP.blood_state == blood_state) + if (oldFP.color == color) return - blood_smear[blood_state] = max(0, blood_smear[blood_state] - BLOOD_LOSS_PER_STEP) - if(blood_smear[blood_state] > BLOOD_LOSS_IN_SPREAD) + else var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks(T) if(DIGITIGRADE in dna.species.species_traits) if(dna.species.id == ("lizard" || "ashwalker" || "xeno")) @@ -105,30 +106,49 @@ else FP.icon_state = FOOTPRINT_SHOE FP.print_state = FOOTPRINT_SHOE - FP.blood_state = blood_state - FP.entered_dirs |= dir - FP.bloodiness = blood_smear - BLOOD_LOSS_IN_SPREAD + FP.add_blood_DNA(return_blood_DNA()) + FP.bloodmeme = bloodmeme FP.update_icon() + var/newdir = get_dir(T, loc) + if(newdir == dir) + B.setDir(newdir) + else + newdir = newdir | dir + if(newdir == 3) + newdir = 1 + else if(newdir == 12) + newdir = 4 + B.setDir(newdir) + bloodiness-- else //we're on the floor, smear some stuff around if(loc == NewLoc) if(!has_gravity(loc)) return var/turf/T = get_turf(src) - if(blood_smear && blood_smear[blood_state]) + if(bloodiness) var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks) in T - if (oldFP.blood_state == blood_state) + if (oldFP.color == color) return - blood_smear[blood_state] = max(0, blood_smear[blood_state] - BLOOD_LOSS_PER_STEP) - if(blood_smear[blood_state] > BLOOD_LOSS_IN_SPREAD) + else var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/body(T) FP.icon_state = FOOTPRINT_DRAG FP.print_state = FOOTPRINT_DRAG - FP.blood_state = blood_state - FP.entered_dirs |= dir - FP.bloodiness = blood_smear - BLOOD_LOSS_IN_SPREAD + FP.add_blood_DNA(return_blood_DNA()) + FP.bloodtrack = bloodtrack + FP.bloodmeme = bloodmeme FP.update_icon() - + var/newdir = get_dir(T, loc) + if(newdir == dir) + B.setDir(newdir) + else + newdir = newdir | dir + if(newdir == 3) + newdir = 1 + else if(newdir == 12) + newdir = 4 + B.setDir(newdir) + bloodiness-- /mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee. if(dna.species.space_move(src)) From fcdc748bf1f527e93dc8f652f5dd7cee1ae3d8d3 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Fri, 10 May 2019 07:07:09 -0500 Subject: [PATCH 025/469] u h g. I hate this --- code/__DEFINES/misc.dm | 7 +- code/datums/components/decals/blood.dm | 6 +- code/datums/components/forensics.dm | 70 +++++++++++----- code/game/atoms.dm | 81 ------------------- code/game/objects/effects/decals/cleanable.dm | 38 ++++++--- .../effects/decals/cleanable/aliens.dm | 3 +- .../objects/effects/decals/cleanable/gibs.dm | 17 +++- .../effects/decals/cleanable/humans.dm | 69 +++++++++------- code/modules/antagonists/cult/blood_magic.dm | 6 +- code/modules/clothing/clothing.dm | 4 + code/modules/clothing/shoes/_shoes.dm | 12 +-- .../mob/living/carbon/human/human_defines.dm | 2 +- .../mob/living/carbon/human/human_movement.dm | 24 +++--- .../chemistry/reagents/other_reagents.dm | 6 +- tgstation.dme | 1 + 15 files changed, 156 insertions(+), 190 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 090727d845..27991133c7 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -171,12 +171,7 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache) #define BLOOD_LOSS_IN_SPREAD 20 //Bloody shoe blood states -#define HUMANIZED_BLOOD "A+" -#define LIZARDIZED_BLOOD "L" -#define SLIMEIZED_BLOOD "GEL" -#define OILIZED_BLOOD "HR" -#define XENOIZED_BLOOD "X*" -#define SYNTHETICIZED_BLOOD "SY" +#define BLOOD_STATE_BLOOD "blood" #define BLOOD_STATE_OIL "oil" #define BLOOD_STATE_NOT_BLOODY "no blood whatsoever" #define BLOOD_AMOUNT_PER_DECAL 20 diff --git a/code/datums/components/decals/blood.dm b/code/datums/components/decals/blood.dm index b615b05280..98e92ce710 100644 --- a/code/datums/components/decals/blood.dm +++ b/code/datums/components/decals/blood.dm @@ -15,21 +15,21 @@ _icon_state = "itemblood" var/icon = initial(I.icon) var/icon_state = initial(I.icon_state) + var/color = initial(I.blood_DNA_to_color(I.blood_mix_types)) if(!icon || !icon_state) // It's something which takes on the look of other items, probably icon = I.icon icon_state = I.icon_state var/static/list/blood_splatter_appearances = list() //try to find a pre-processed blood-splatter. otherwise, make a new one - var/index = "[REF(icon)]-[icon_state]" + var/index = "[REF(icon)]-[icon_state]-[color]" pic = blood_splatter_appearances[index] if(!pic) var/icon/blood_splatter_icon = icon(initial(I.icon), initial(I.icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) blood_splatter_icon.Blend(icon(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant - GET_COMPONENT(D, /datum/component/forensics) - blood_splatter_icon.Blend(D.blood_DNA_to_color(), ICON_MULTIPLY) + blood_splatter_icon.color = I.blood_DNA_to_color(I.blood_mix_types) //Colors it based upon blood color mix blood_splatter_appearances[index] = pic return TRUE diff --git a/code/datums/components/forensics.dm b/code/datums/components/forensics.dm index c93981f0df..29aaa9bf02 100644 --- a/code/datums/components/forensics.dm +++ b/code/datums/components/forensics.dm @@ -4,25 +4,26 @@ var/list/hiddenprints //assoc ckey = realname/gloves/ckey var/list/blood_DNA //assoc dna = bloodtype var/list/fibers //assoc print = print + var/list/blood_mix_types // data("[blood_type]" = sting list /datum/component/forensics/InheritComponent(datum/component/forensics/F, original) //Use of | and |= being different here is INTENTIONAL. fingerprints = fingerprints | F.fingerprints hiddenprints = hiddenprints | F.hiddenprints blood_DNA = blood_DNA | F.blood_DNA fibers = fibers | F.fibers + blood_mix_types = blood_mix_types | F.blood_mix_types check_blood() - blood_DNA_to_color() return ..() -/datum/component/forensics/Initialize(new_fingerprints, new_hiddenprints, new_blood_DNA, new_fibers) +/datum/component/forensics/Initialize(new_fingerprints, new_hiddenprints, new_blood_DNA, new_fibers, new_blood_mix_types) if(!isatom(parent)) return COMPONENT_INCOMPATIBLE fingerprints = new_fingerprints hiddenprints = new_hiddenprints blood_DNA = new_blood_DNA fibers = new_fibers + blood_mix_types = new_blood_mix_types check_blood() - blood_DNA_to_color() RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_act) /datum/component/forensics/proc/wipe_fingerprints() @@ -34,6 +35,7 @@ /datum/component/forensics/proc/wipe_blood_DNA() blood_DNA = null + blood_mix_types = null return TRUE /datum/component/forensics/proc/wipe_fibers() @@ -149,35 +151,61 @@ for(var/i in dna) blood_DNA[i] = dna[i] check_blood() - blood_DNA_to_color() return TRUE /datum/component/forensics/proc/check_blood() - if(!isitem(parent)) + if(!isitem(parent) || !ismob(parent)) return if(!length(blood_DNA)) return -/datum/component/forensics/proc/blood_DNA_to_color() - var/list/colors = list()//first we make a list of all bloodtypes present - for(var/bloop in blood_DNA) - if(colors[blood_DNA[bloop]]) - colors[blood_DNA[bloop]]++ +/datum/component/forensics/proc/add_blood_list_check(list/_blood_mix_types) + if(!length(_blood_mix_types)) + return + LAZYINITLIST(blood_mix_types) + for(var/i in _blood_mix_types) //We use an associative list, because all the other cool kids are doing it + blood_mix_types[i] = i + return TRUE + +/datum/component/forensics/proc/blood_list_checks(Atom/A, var/blood_type) //This is a messy attempt at trying to reduce lists of items and mobs with blood colors on them + if(blood_type in GLOB.regular_bloods) + blood_type = "A+" //generic so we don't have 8 different types of human blood + if(is_cleanable(src)) + var/obj/effect/decal/cleanable/CL = src + if(blood_type in CL.blood_mix_types) + return else - colors[blood_DNA[bloop]] = 1 + LAZYSET(blood_type,CL.blood_mix_types, CL.blood_mix_types) + CL.blood_color = blood_DNA_to_color(CL.blood_mix_types) + else if(isitem(src)) + var/obj/item/I = src + if(blood_type in I.blood_mix_types) + return + else + LAZYSET(blood_type,I.blood_mix_types, I.blood_mix_types) + I.blood_color = blood_DNA_to_color(I.blood_mix_types) + else if(iscarbon(src)) + var/mob/living/carbon/C = src + if(blood_type in C.blood_mix_types) + return + else + LAZYSET(blood_type,C.blood_mix_types, C.blood_mix_types) + C.blood_color = blood_DNA_to_color(C.blood_mix_types) + return TRUE - var/final_rgb = "#940000" - - if(colors.len) +/datum/component/forensics/proc/blood_DNA_to_color(list/bloods) + var/final_rgb = "#940000" //We default to red just in case + if(bloods.len) var/sum = 0 //this is all shitcode, but it works; trust me - final_rgb = bloodtype_to_color(colors[1]) - sum = colors[colors[1]] - if(colors.len > 1) + final_rgb = bloodtype_to_color(bloods[1]) + sum = bloods[bloods[1]] + if(bloods.len > 1) var/i = 2 - while(i <= colors.len) - var/tmp = colors[colors[i]] - final_rgb = BlendRGB(final_rgb, bloodtype_to_color(colors[i]), tmp/(tmp+sum)) + while(i <= bloods.len) + var/tmp = bloods[bloods[i]] + final_rgb = BlendRGB(final_rgb, bloodtype_to_color(bloods[i]), tmp/(tmp+sum)) sum += tmp i++ - + else + final_rgb = BlendRGB(final_rgb, bloodtype_to_color(bloods)) return final_rgb diff --git a/code/game/atoms.dm b/code/game/atoms.dm index c6ae093ab5..0ba8d7411b 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -324,26 +324,16 @@ return list("ANIMAL DNA" = "Y-") /mob/living/carbon/get_blood_dna_list() - to_chat(world, "carbon's get_blood_dna_list called by [src]") var/blood_id = get_blood_id() - to_chat(world, "We got [blood_id] for a return") for(var/B in GLOB.blood_id_types) - to_chat(world, "checking blood_id_types") var/list/bluhduh = typecacheof(B) - to_chat(world, "We bluhduh now, let's compare with [blood_id] now") if(!blood_id in bluhduh) - to_chat(world, "[src] apparently doesn't have a valid blood type of blood, we're returning null due to [bluhduh]") return - to_chat(world, "[src] has an approved type of blood.") var/list/blood_dna = list() - to_chat(world, "blood_dna list made.") if(dna) - to_chat(world, "[src] has dna, we know the bloodtype to be [dna.blood_type].") blood_dna[dna.unique_enzymes] = dna.blood_type else - to_chat(world, "[src] doesn't have dna I guess.") blood_dna["UNKNOWN DNA"] = "X*" - to_chat(world, "blood_dna is [blood_dna]") return blood_dna /mob/living/carbon/alien/get_blood_dna_list() @@ -368,77 +358,6 @@ return FALSE return add_blood_DNA(blood_dna) -//to add blood onto something, with blood dna info to include. -/atom/proc/add_blood(list/blood_dna) - return FALSE - -/obj/item/add_blood(list/blood_dna) - if(!..()) - return FALSE - add_blood_overlay() - return TRUE //we applied blood to the item - -/obj/item/proc/add_blood_overlay() - GET_COMPONENT(D, /datum/component/forensics) - if(!D.blood_DNA.len) - return - if(initial(icon) && initial(icon_state)) - blood_splatter_icon = icon(initial(icon), initial(icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object - blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) - blood_splatter_icon.Blend(icon('icons/effects/blood.dmi', "itemblood"), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant - blood_splatter_icon.Blend(blood_DNA_to_color(), ICON_MULTIPLY) - add_overlay(blood_splatter_icon) - -/atom/proc/blood_list_checks(Atom/A, var/blood_type, var/amount) //This is a messy attempt at trying to reduce lists of items and mobs with blood on them - if(blood_type in GLOB.regular_bloods) - blood_type = "A+" //generic so we don't have 8 different types of human blood - - if(is_cleanable(A) - var/obj/effect/decal/cleanable/CL = A - if(blood_type in CL.bloodmeme) - return - else - CL.bloodmeme += blood_type - - if(isitem(A)) - var/obj/item/I = A - if(blood_type in CL.bloodmeme) - return - else - CL.bloodmeme += blood_type - - if(iscarbon(A)) - var/mob/living/carbon/C = A - if(blood_type in C.bloodmeme) - return - else - C.bloodmeme += blood_type - - -/atom/proc/blood_DNA_to_color(list/bloods) - var/list/colors = list()//first we make a list of all bloodtypes present - for(var/bloop in bloods) - if(colors[bloods[bloop]]) - colors[bloods[bloop]]++ - else - colors[bloods[bloop]] = 1 - - var/final_rgb = "#940000" - - if(colors.len) - var/sum = 0 //this is all shitcode, but it works; trust me - final_rgb = bloodtype_to_color(colors[1]) - sum = colors[colors[1]] - if(colors.len > 1) - var/i = 2 - while(i <= colors.len) - var/tmp = colors[colors[i]] - final_rgb = BlendRGB(final_rgb, bloodtype_to_color(colors[i]), tmp/(tmp+sum)) - sum += tmp - i++ - - return final_rgb - /atom/proc/wash_cream() return TRUE diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 0c767dd1ae..2059b5f57f 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -5,6 +5,7 @@ var/blood_state = "" //I'm sorry but cleanable/blood code is ass, and so is blood_DNA var/bloodiness = 0 //0-100, amount of blood in this decal, used for making footprints and affecting the alpha of bloody footprints var/mergeable_decal = TRUE //when two of these are on a same tile or do we need to merge them into just one? + var/blood_color = BLOOD_COLOR_HUMAN /obj/effect/decal/cleanable/Initialize(mapload, list/datum/disease/diseases) . = ..() @@ -72,37 +73,50 @@ ..() if(ishuman(O)) var/mob/living/carbon/human/H = O - if(H.shoes && blood_state && bloodiness && !H.has_trait(TRAIT_LIGHT_STEP)) + if(H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) var/obj/item/clothing/shoes/S = H.shoes for(var/datum/reagent/R in reagents.reagent_list) // Get blood data from the blood reagent. if(istype(R, /datum/reagent/blood)) - if(R.data) - var/blood_type_meme = R.data["blood_type"] - color = bloodtype_to_color(blood_type_meme) //Color the blood with our dna stuff - if(blood_type_meme) - S.last_bloodtype = blood_type_meme + if(R.data["blood_type"]) + S.blood_list_checks(src, R.data["blood_type"]) + else if(istype(R, /datum/reagent/liquidgibs)) + if(R.data["blood_type"]) + S.blood_list_checks(src, R.data["blood_type"]) var/add_blood = 0 if(bloodiness >= BLOOD_GAIN_PER_STEP) add_blood = BLOOD_GAIN_PER_STEP else add_blood = bloodiness bloodiness -= add_blood - S.bloody_shoes[blood_state] = min(MAX_SHOE_BLOODINESS,S.bloody_shoes[blood_state]+add_blood) + S.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,S.blood_smear[blood_state]+add_blood) S.add_blood_DNA(return_blood_DNA()) S.blood_state = blood_state update_icon() H.update_inv_shoes() - else if(H && blood_state && bloodiness && !H.has_trait(TRAIT_LIGHT_STEP)) + else if(H.bloodiness && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) for(var/datum/reagent/R in reagents.reagent_list) // Get blood data from the blood reagent. if(istype(R, /datum/reagent/blood)) if(R.data["blood_type"]) - var/blood_type_meme = R.data["blood_type"] - color = bloodtype_to_color(blood_type_meme) //Color the blood with our dna stuff - if(blood_type_meme) - H.last_bloodtype = blood_type_meme + H.blood_list_checks(src, R.data["blood_type"]) + else if(istype(R, /datum/reagent/liquidgibs)) + if(R.data["blood_type"]) + H.blood_list_checks(src, R.data["blood_type"]) + var/add_blood = 0 + if(H.bloodiness >= BLOOD_GAIN_PER_STEP) + add_blood = BLOOD_GAIN_PER_STEP + else + add_blood = bloodiness + bloodiness -= add_blood + H.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,H.blood_smear[blood_state]+add_blood) + H.add_blood_DNA(return_blood_DNA()) + H.blood_state = blood_state + update_icon() + + else + color = blood_DNA_to_color() var/add_blood = 0 if(bloodiness >= BLOOD_GAIN_PER_STEP) add_blood = BLOOD_GAIN_PER_STEP diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 93bde588ee..52168d4e69 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -35,8 +35,7 @@ if(infective) diseases = infective.diseases var/obj/effect/decal/cleanable/blood/splatter/xeno/splat = new /obj/effect/decal/cleanable/blood/splatter/xeno(loc, diseases) - splat.color = color - splat.bloodmeme = bloodmeme + splat.update_icon() if(!step_to(src, get_step(src, direction), 0)) break diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 81d3e43c03..5e7b470be8 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -6,11 +6,12 @@ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") mergeable_decal = FALSE var/gib_overlay = FALSE + var/slimy_gibs = FALSE /obj/effect/decal/cleanable/blood/gibs/proc/guts() if(gib_overlay) var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-overlay") - if(bloodmeme != "GEL") + if(!slimy_gibs) gibz.appearance_flags = RESET_COLOR add_overlay(gibz) @@ -19,7 +20,10 @@ /obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L) if(istype(L) && has_gravity(loc)) - playsound(loc, 'sound/effects/gib_step.ogg', L.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) + if(L.mind.assigned_role == "Detective") //Gumshoe perks yo + playsound(loc, 'sound/effects/gib_step.ogg', 10, 1) + else + playsound(loc, 'sound/effects/gib_step.ogg', L.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) . = ..() /obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions) @@ -33,8 +37,7 @@ if(infective) diseases = infective.diseases var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) - splat.color = color - splat.bloodmeme = bloodmeme + splat.update_icon() if(!step_to(src, get_step(src, direction), 0)) break @@ -129,26 +132,32 @@ /obj/effect/decal/cleanable/blood/gibs/slime/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") gib_overlay = TRUE + slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/slime/down random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") gib_overlay = TRUE + slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/slime/body random_icon_states = list("gibhead", "gibtorso") gib_overlay = TRUE + slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/slime/torso random_icon_states = list("gibtorso") gib_overlay = TRUE + slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/slime/limb random_icon_states = list("gibleg", "gibarm") gib_overlay = TRUE + slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/slime/core random_icon_states = list("gibmid1", "gibmid2", "gibmid3") gib_overlay = TRUE + slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/synth desc = "They look sludgy and disgusting." diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 92cf77ab2f..05c8a0c44f 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -7,22 +7,20 @@ blood_state = BLOOD_STATE_BLOOD color = BLOOD_COLOR_HUMAN bloodiness = BLOOD_AMOUNT_PER_DECAL - var/list/bloodmeme = "" var/data = "" /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) if(!data) C.data = add_blood_DNA(return_blood_DNA()) - if (bloodiness) - if (C.bloodiness < MAX_SHOE_BLOODINESS) + if(bloodiness) + if(C.bloodiness < MAX_SHOE_BLOODINESS) C.bloodiness += bloodiness - if(!bloodmeme) - C.bloodmeme = add_blood_DNA(return_blood_DNA()) update_icon() return ..() -//obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) -// return TRUE +obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) + blood_list_checks(src, data["blood_type"]) + return TRUE /obj/effect/decal/cleanable/blood/transfer_mob_blood_dna() . = ..() @@ -33,14 +31,12 @@ // Get blood data from the blood reagent. if(istype(R, /datum/reagent/blood)) if(R.data["blood_type"]) - bloodmeme = R.data["blood_type"] - color = bloodtype_to_color(R.data["blood_type"]) + blood_list_checks(src, R.data["blood_type"]) + blood_color = blood_DNA_to_color(blood_mix_types) else if(istype(R, /datum/reagent/liquidgibs)) if(R.data["blood_type"]) - bloodmeme = R.data["blood_type"] - color = bloodtype_to_color(R.data["blood_type"]) - else - color = blood_DNA_to_color() + blood_list_checks(src, R.data["blood_type"]) + blood_color = blood_DNA_to_color(blood_mix_types) /obj/effect/decal/cleanable/blood/old name = "dried blood" @@ -50,7 +46,6 @@ /obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases) . = ..() - icon_state += "-old" //This IS necessary because the parent /blood type uses icon randomization. add_blood_DNA(list("blood_type"= "A+")) /obj/effect/decal/cleanable/blood/splatter @@ -65,7 +60,6 @@ blood_state = BLOOD_STATE_BLOOD color = BLOOD_COLOR_HUMAN bloodiness = BLOOD_AMOUNT_PER_DECAL - var/bloodmeme = "" var/data = "" /obj/effect/decal/cleanable/trail_holder/update_icon() @@ -73,17 +67,17 @@ // Get blood data from the blood reagent. if(istype(R, /datum/reagent/blood)) if(R.data["blood_type"]) - color = bloodtype_to_color(R.data["blood_type"]) //Color the blood with our dna stuff + blood_list_checks(src, R.data["blood_type"]) + color = blood_DNA_to_color(blood_mix_types) else if(istype(R, /datum/reagent/liquidgibs)) if(R.data["blood_type"]) - bloodmeme = R.data["blood_type"] - color = bloodtype_to_color(R.data["blood_type"]) + blood_list_checks(src, R.data["blood_type"]) + color = blood_DNA_to_color(blood_mix_types) else color = blood_DNA_to_color() /obj/effect/cleanable/trail_holder/Initialize() . = ..() - AddComponent(/datum/component/forensics) update_icon() /obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in() @@ -110,15 +104,20 @@ if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes - if(S && S.bloody_shoes[blood_state]) - S.last_bloodtype = bloodmeme - S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) + if(S && S.blood_smear[blood_state]) + S.blood_list_checks(S, data["blood_type"]) + S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(entered_dirs & H.dir)) entered_dirs |= H.dir update_icon() - else if(!bloodiness) - H.bloodiness = max(bloodiness / BLOOD_LOSS_IN_SPREAD, 0) + + else if(!H.bloodiness) + H.bloodiness = max(H.bloodiness - BLOOD_LOSS_IN_SPREAD, 0) + H.blood_list_checks(H, data["blood_type"]) + if (!(entered_dirs & H.dir)) + entered_dirs |= H.dir + update_icon() /obj/effect/decal/cleanable/blood/footprints/tracks/Uncrossed(atom/movable/O) @@ -126,34 +125,42 @@ if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes - if(S && S.bloody_shoes[blood_state]) - S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) + if(S && S.blood_smear[blood_state]) + S.blood_list_checks(S, data["blood_type"]) + S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(exited_dirs & H.dir)) exited_dirs |= H.dir update_icon() + else if(!H.bloodiness) + H.bloodiness = max(H.bloodiness - BLOOD_LOSS_IN_SPREAD, 0) + H.blood_list_checks(H, data["blood_type"]) + if (!(exited_dirs & H.dir)) + exited_dirs |= H.dir + update_icon() /obj/effect/decal/cleanable/blood/footprints/tracks/update_icon() cut_overlays() for(var/Ddir in GLOB.cardinals) if(entered_dirs & Ddir) - var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"] + var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]-[color]"] if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]1", dir = Ddir) + GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir) add_overlay(bloodstep_overlay) if(exited_dirs & Ddir) - var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] + var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]-[color]"] if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]2", dir = Ddir) + GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir) add_overlay(bloodstep_overlay) alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness + color = blood_DNA_to_color(blood_mix_types) /obj/effect/decal/cleanable/blood/footprints/tracks/examine(mob/user) . = ..() - if(shoe_types.len) + if(shoe_types.len && user.mind.assigned_role == "Detective") //gumshoe does the detective thing, not every fucking assistant . += "You recognise the footprints as belonging to:\n" for(var/shoe in shoe_types) var/obj/item/clothing/shoes/S = shoe diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 845c66fb33..be0e06b47a 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -739,9 +739,9 @@ for(var/obj/effect/decal/cleanable/trail_holder/TH in view(T, 2)) qdel(TH) var/obj/item/clothing/shoes/shoecheck = user.shoes - if(shoecheck && shoecheck.bloody_shoes["blood"]) - temp += shoecheck.bloody_shoes["blood"]/20 - shoecheck.bloody_shoes["blood"] = 0 + if(shoecheck && shoecheck.blood_smear["blood"]) + temp += shoecheck.blood_smear["blood"]/20 + shoecheck.blood_smear["blood"] = 0 if(temp) user.Beam(T,icon_state="drainbeam",time=15) new /obj/effect/temp_visual/cult/sparks(get_turf(user)) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 746d5da60d..f79bf5c567 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -41,6 +41,10 @@ var/dynamic_hair_suffix = ""//head > mask for head hair var/dynamic_fhair_suffix = ""//mask > head for facial hair + var/blood_color = BLOOD_COLOR_HUMAN + var/blood_state = BLOOD_STATE_NOT_BLOODY + var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) + /obj/item/clothing/Initialize() . = ..() if(ispath(pocket_storage_component_path)) diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index c0227b8765..b9b37f67b0 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -10,12 +10,8 @@ permeability_coefficient = 0.5 slowdown = SHOES_SLOWDOWN - var/blood_state = BLOOD_STATE_NOT_BLOODY - var/list/bloody_shoes = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) var/offset = 0 var/equipped_before_drop = FALSE - var/last_bloodtype = ""//used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans - var/last_blood_DNA = ""//same as last one //CITADEL EDIT Enables digitigrade shoe styles var/adjusted = NORMAL_STYLE @@ -51,15 +47,15 @@ IF_HAS_BLOOD_DNA(src) bloody = TRUE else - bloody = bloody_shoes[BLOOD_STATE_BLOOD] + bloody = blood_smear[BLOOD_STATE_BLOOD] if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe") if(bloody) if(adjusted == NORMAL_STYLE) - . += mutable_appearance('icons/effects/blood.dmi', "shoeblood", color = bloodtype_to_color(last_bloodtype)) + . += mutable_appearance('icons/effects/blood.dmi', "shoeblood", color = blood_DNA_to_color(blood_mix_types)) else - . += mutable_appearance('modular_citadel/icons/mob/digishoes.dmi', "shoeblood", color = bloodtype_to_color(last_bloodtype)) + . += mutable_appearance('modular_citadel/icons/mob/digishoes.dmi', "shoeblood", color = blood_DNA_to_color(blood_mix_types)) /obj/item/clothing/shoes/equipped(mob/user, slot) . = ..() @@ -98,7 +94,7 @@ /obj/item/clothing/shoes/proc/clean_blood(datum/source, strength) if(strength < CLEAN_STRENGTH_BLOOD) return - bloody_shoes = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) + blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) blood_state = BLOOD_STATE_NOT_BLOODY if(ismob(loc)) var/mob/M = loc diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index b51d464ff7..5fb78c0098 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -43,9 +43,9 @@ var/bleed_rate = 0 //how much are we bleeding var/bleedsuppress = 0 //for stopping bloodloss, eventually this will be limb-based like bleeding + var/bloodiness = 0 var/blood_state = BLOOD_STATE_NOT_BLOODY var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) - var/last_bloodtype = ""//used to track the last bloodtype to have graced this smelly person. for smears on the floor var/last_blood_DNA = ""//same as last one var/name_override //For temporary visible name changes diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 28a642d7a0..9d072c90a2 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -55,18 +55,17 @@ //Bloody footprints var/turf/T = get_turf(src) - if(S.bloody_shoes && S.bloody_shoes[S.blood_state]) + if(S.blood_smear && S.blood_smear[S.blood_state]) var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks) in T - if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == bloodtype_to_color(S.last_bloodtype))) + if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == color)) return - S.bloody_shoes[S.blood_state] = max(0, S.bloody_shoes[S.blood_state]-BLOOD_LOSS_PER_STEP) + S.blood_smear[S.blood_state] = max(0, S.blood_smear[S.blood_state]-BLOOD_LOSS_PER_STEP) var/obj/effect/decal/cleanable/blood/footprints/tracks/footprints/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/footprints(T) FP.icon_state = FOOTPRINT_SHOE FP.print_state = FOOTPRINT_SHOE FP.blood_state = S.blood_state FP.entered_dirs |= dir - FP.bloodiness = S.bloody_shoes[S.blood_state] - FP.bloodmeme = S.bloodmeme + FP.bloodiness = S.blood_smear[S.blood_state] FP.update_icon() update_inv_shoes() //End bloody footprints @@ -82,7 +81,7 @@ var/turf/T = get_turf(src) if(bloodiness) var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks) in T - if (oldFP.color == color) + if(oldFP && (oldFP.blood_state == blood_state && oldFP.color == color)) return else var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks(T) @@ -107,18 +106,17 @@ FP.icon_state = FOOTPRINT_SHOE FP.print_state = FOOTPRINT_SHOE FP.add_blood_DNA(return_blood_DNA()) - FP.bloodmeme = bloodmeme FP.update_icon() var/newdir = get_dir(T, loc) if(newdir == dir) - B.setDir(newdir) + FP.setDir(newdir) else newdir = newdir | dir if(newdir == 3) newdir = 1 else if(newdir == 12) newdir = 4 - B.setDir(newdir) + FP.setDir(newdir) bloodiness-- else //we're on the floor, smear some stuff around @@ -128,26 +126,24 @@ var/turf/T = get_turf(src) if(bloodiness) var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks) in T - if (oldFP.color == color) + if(oldFP && (oldFP.blood_state == blood_state && oldFP.color == color)) return else var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/body(T) FP.icon_state = FOOTPRINT_DRAG FP.print_state = FOOTPRINT_DRAG FP.add_blood_DNA(return_blood_DNA()) - FP.bloodtrack = bloodtrack - FP.bloodmeme = bloodmeme FP.update_icon() var/newdir = get_dir(T, loc) if(newdir == dir) - B.setDir(newdir) + FP.setDir(newdir) else newdir = newdir | dir if(newdir == 3) newdir = 1 else if(newdir == 12) newdir = 4 - B.setDir(newdir) + FP.setDir(newdir) bloodiness-- /mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee. diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 92c9c1e104..4622d79777 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -106,10 +106,8 @@ // Get blood data from the blood reagent. if(istype(R, /datum/reagent/blood)) if(R.data["blood_type"]) - B.bloodmeme = R.data["blood_type"] - if(istype(R, /datum/reagent/liquidgibs)) - if(R.data["blood_type"]) - B.bloodmeme = R.data["blood_type"] + B.blood_list_checks(src, R.data["blood_type"]) + B.color = B.blood_DNA_to_color(blood_mix_types) /datum/reagent/blood/synthetics data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) diff --git a/tgstation.dme b/tgstation.dme index 7037d50cb7..88e843f542 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -375,6 +375,7 @@ #include "code\datums\components\uplink.dm" #include "code\datums\components\wearertargeting.dm" #include "code\datums\components\wet_floor.dm" +#include "code\datums\components\decals\blood.dm" #include "code\datums\components\storage\storage.dm" #include "code\datums\components\storage\concrete\_concrete.dm" #include "code\datums\components\storage\concrete\bag_of_holding.dm" From 1a047c0068658dc44b3fa8932feee7f727a4a91f Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 12 May 2019 04:06:35 -0500 Subject: [PATCH 026/469] I think I got it. Also gibs should be better too. --- code/__HELPERS/_cit_helpers.dm | 17 ++++++ code/datums/components/decals/blood.dm | 6 +- code/datums/components/forensics.dm | 47 ++++++--------- code/game/objects/effects/decals/cleanable.dm | 33 +---------- .../effects/decals/cleanable/aliens.dm | 6 +- .../objects/effects/decals/cleanable/gibs.dm | 9 +++ .../effects/decals/cleanable/humans.dm | 55 ++++++------------ .../objects/effects/spawners/gibspawner.dm | 27 +++++---- code/modules/clothing/gloves/_gloves.dm | 2 +- code/modules/clothing/masks/_masks.dm | 2 +- code/modules/clothing/shoes/_shoes.dm | 5 +- code/modules/clothing/suits/_suits.dm | 4 +- code/modules/clothing/under/_under.dm | 2 +- .../mob/living/carbon/human/human_defines.dm | 2 +- .../mob/living/carbon/human/update_icons.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 7 +-- icons/effects/blood.dmi | Bin 94711 -> 96090 bytes modular_citadel/icons/mob/64x32_effects.dmi | Bin 35318 -> 39945 bytes 18 files changed, 94 insertions(+), 132 deletions(-) diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm index 1b1cae43bb..3c693e51d9 100644 --- a/code/__HELPERS/_cit_helpers.dm +++ b/code/__HELPERS/_cit_helpers.dm @@ -122,6 +122,23 @@ GLOBAL_LIST_INIT(regular_bloods,list( "AB+" )) +GLOBAL_LIST_INIT(all_types_bloods,list( + "O-", + "O+", + "A-", + "A+", + "B-", + "B+", + "AB-", + "AB+", + "SY", + "X*", + "HF", + "L", + "U", + "GEL" + )) + GLOBAL_LIST_INIT(blood_types, list( "blood", "syntheticblood", diff --git a/code/datums/components/decals/blood.dm b/code/datums/components/decals/blood.dm index 98e92ce710..ba69e07d65 100644 --- a/code/datums/components/decals/blood.dm +++ b/code/datums/components/decals/blood.dm @@ -15,21 +15,21 @@ _icon_state = "itemblood" var/icon = initial(I.icon) var/icon_state = initial(I.icon_state) - var/color = initial(I.blood_DNA_to_color(I.blood_mix_types)) if(!icon || !icon_state) // It's something which takes on the look of other items, probably icon = I.icon icon_state = I.icon_state + GET_COMPONENT(D, /datum/component/forensics) var/static/list/blood_splatter_appearances = list() //try to find a pre-processed blood-splatter. otherwise, make a new one - var/index = "[REF(icon)]-[icon_state]-[color]" + var/index = "[REF(icon)]-[icon_state]-[D.blood_mix_color]" pic = blood_splatter_appearances[index] if(!pic) var/icon/blood_splatter_icon = icon(initial(I.icon), initial(I.icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) blood_splatter_icon.Blend(icon(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant - blood_splatter_icon.color = I.blood_DNA_to_color(I.blood_mix_types) //Colors it based upon blood color mix + blood_splatter_icon.Blend(D.blood_mix_color, ICON_MULTIPLY) //add the blood's color with DNA information blood_splatter_appearances[index] = pic return TRUE diff --git a/code/datums/components/forensics.dm b/code/datums/components/forensics.dm index 29aaa9bf02..fdc5c5fe5d 100644 --- a/code/datums/components/forensics.dm +++ b/code/datums/components/forensics.dm @@ -5,6 +5,7 @@ var/list/blood_DNA //assoc dna = bloodtype var/list/fibers //assoc print = print var/list/blood_mix_types // data("[blood_type]" = sting list + var/blood_mix_color /datum/component/forensics/InheritComponent(datum/component/forensics/F, original) //Use of | and |= being different here is INTENTIONAL. fingerprints = fingerprints | F.fingerprints @@ -12,10 +13,11 @@ blood_DNA = blood_DNA | F.blood_DNA fibers = fibers | F.fibers blood_mix_types = blood_mix_types | F.blood_mix_types + blood_mix_color = blood_mix_color | F.blood_mix_color check_blood() return ..() -/datum/component/forensics/Initialize(new_fingerprints, new_hiddenprints, new_blood_DNA, new_fibers, new_blood_mix_types) +/datum/component/forensics/Initialize(new_fingerprints, new_hiddenprints, new_blood_DNA, new_fibers, new_blood_mix_types, new_blood_mix_color) if(!isatom(parent)) return COMPONENT_INCOMPATIBLE fingerprints = new_fingerprints @@ -23,6 +25,7 @@ blood_DNA = new_blood_DNA fibers = new_fibers blood_mix_types = new_blood_mix_types + blood_mix_color = new_blood_mix_color check_blood() RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_act) @@ -36,6 +39,7 @@ /datum/component/forensics/proc/wipe_blood_DNA() blood_DNA = null blood_mix_types = null + blood_mix_color = null return TRUE /datum/component/forensics/proc/wipe_fibers() @@ -150,6 +154,8 @@ LAZYINITLIST(blood_DNA) for(var/i in dna) blood_DNA[i] = dna[i] + var/blood_type = blood_DNA.Find(GLOB.all_types_bloods) + add_blood_list(blood_type) check_blood() return TRUE @@ -159,38 +165,21 @@ if(!length(blood_DNA)) return -/datum/component/forensics/proc/add_blood_list_check(list/_blood_mix_types) - if(!length(_blood_mix_types)) +/datum/component/forensics/proc/add_blood_list(blood_type) + if(!blood_type) return LAZYINITLIST(blood_mix_types) - for(var/i in _blood_mix_types) //We use an associative list, because all the other cool kids are doing it - blood_mix_types[i] = i + blood_list_checks(blood_mix_types, blood_type) + blood_DNA_to_color(blood_mix_types) return TRUE -/datum/component/forensics/proc/blood_list_checks(Atom/A, var/blood_type) //This is a messy attempt at trying to reduce lists of items and mobs with blood colors on them +/datum/component/forensics/proc/blood_list_checks(list/blood_types, var/blood_type) //This is a messy attempt at trying to reduce lists of items and mobs with blood colors on them if(blood_type in GLOB.regular_bloods) blood_type = "A+" //generic so we don't have 8 different types of human blood - if(is_cleanable(src)) - var/obj/effect/decal/cleanable/CL = src - if(blood_type in CL.blood_mix_types) - return - else - LAZYSET(blood_type,CL.blood_mix_types, CL.blood_mix_types) - CL.blood_color = blood_DNA_to_color(CL.blood_mix_types) - else if(isitem(src)) - var/obj/item/I = src - if(blood_type in I.blood_mix_types) - return - else - LAZYSET(blood_type,I.blood_mix_types, I.blood_mix_types) - I.blood_color = blood_DNA_to_color(I.blood_mix_types) - else if(iscarbon(src)) - var/mob/living/carbon/C = src - if(blood_type in C.blood_mix_types) - return - else - LAZYSET(blood_type,C.blood_mix_types, C.blood_mix_types) - C.blood_color = blood_DNA_to_color(C.blood_mix_types) + if(blood_type in blood_mix_types) + return + else + LAZYADD(blood_mix_types, blood_type) return TRUE /datum/component/forensics/proc/blood_DNA_to_color(list/bloods) @@ -208,4 +197,6 @@ i++ else final_rgb = BlendRGB(final_rgb, bloodtype_to_color(bloods)) - return final_rgb + + blood_mix_color = final_rgb + return TRUE diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 2059b5f57f..8e922b5b39 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -5,7 +5,7 @@ var/blood_state = "" //I'm sorry but cleanable/blood code is ass, and so is blood_DNA var/bloodiness = 0 //0-100, amount of blood in this decal, used for making footprints and affecting the alpha of bloody footprints var/mergeable_decal = TRUE //when two of these are on a same tile or do we need to merge them into just one? - var/blood_color = BLOOD_COLOR_HUMAN + var/blood_color /obj/effect/decal/cleanable/Initialize(mapload, list/datum/disease/diseases) . = ..() @@ -75,14 +75,6 @@ var/mob/living/carbon/human/H = O if(H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) var/obj/item/clothing/shoes/S = H.shoes - for(var/datum/reagent/R in reagents.reagent_list) - // Get blood data from the blood reagent. - if(istype(R, /datum/reagent/blood)) - if(R.data["blood_type"]) - S.blood_list_checks(src, R.data["blood_type"]) - else if(istype(R, /datum/reagent/liquidgibs)) - if(R.data["blood_type"]) - S.blood_list_checks(src, R.data["blood_type"]) var/add_blood = 0 if(bloodiness >= BLOOD_GAIN_PER_STEP) add_blood = BLOOD_GAIN_PER_STEP @@ -96,29 +88,8 @@ H.update_inv_shoes() else if(H.bloodiness && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) - for(var/datum/reagent/R in reagents.reagent_list) - // Get blood data from the blood reagent. - if(istype(R, /datum/reagent/blood)) - if(R.data["blood_type"]) - H.blood_list_checks(src, R.data["blood_type"]) - else if(istype(R, /datum/reagent/liquidgibs)) - if(R.data["blood_type"]) - H.blood_list_checks(src, R.data["blood_type"]) - var/add_blood = 0 - if(H.bloodiness >= BLOOD_GAIN_PER_STEP) - add_blood = BLOOD_GAIN_PER_STEP - else - add_blood = bloodiness - bloodiness -= add_blood - H.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,H.blood_smear[blood_state]+add_blood) - H.add_blood_DNA(return_blood_DNA()) - H.blood_state = blood_state - update_icon() - - else - color = blood_DNA_to_color() var/add_blood = 0 - if(bloodiness >= BLOOD_GAIN_PER_STEP) + if(H.bloodiness >= BLOOD_GAIN_PER_STEP) add_blood = BLOOD_GAIN_PER_STEP else add_blood = bloodiness diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 52168d4e69..29c8332529 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -7,8 +7,7 @@ /obj/effect/decal/cleanable/blood/xeno/Initialize() . = ..() - if(!data) - data = add_blood_DNA(list("donor"= "UNKNOWN DNA","bloodcolor" = BLOOD_COLOR_XENO, "blood_type"= "X*")) + add_blood_DNA(list("UNKNOWN DNA" = "X*")) /obj/effect/decal/cleanable/blood/splatter/xeno color = BLOOD_COLOR_XENO @@ -65,5 +64,4 @@ /obj/effect/decal/cleanable/blood/xeno/tracks/Initialize() . = ..() - if(!data) - data = add_blood_DNA(list("UNKNOWN DNA" = "X*")) \ No newline at end of file + add_blood_DNA(list("UNKNOWN DNA" = "X*")) \ No newline at end of file diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 5e7b470be8..9adde3f51b 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -7,13 +7,16 @@ mergeable_decal = FALSE var/gib_overlay = FALSE var/slimy_gibs = FALSE + var/body_colors /obj/effect/decal/cleanable/blood/gibs/proc/guts() if(gib_overlay) var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-overlay") + var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-overlay", color = body_colors) if(!slimy_gibs) gibz.appearance_flags = RESET_COLOR add_overlay(gibz) + add_overlay(gibz2) /obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) return @@ -98,26 +101,32 @@ /obj/effect/decal/cleanable/blood/gibs/human/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") gib_overlay = TRUE + slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/human/down random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") gib_overlay = TRUE + slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/human/body random_icon_states = list("gibhead", "gibtorso") gib_overlay = TRUE + slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/human/torso random_icon_states = list("gibtorso") gib_overlay = TRUE + slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/human/limb random_icon_states = list("gibleg", "gibarm") gib_overlay = TRUE + slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/human/core random_icon_states = list("gibmid1", "gibmid2", "gibmid3") gib_overlay = TRUE + slimy_gibs = TRUE // Slime Gibs /obj/effect/decal/cleanable/blood/gibs/slime diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 05c8a0c44f..cb102e8232 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -5,13 +5,14 @@ icon_state = "floor1" random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7") blood_state = BLOOD_STATE_BLOOD - color = BLOOD_COLOR_HUMAN + color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere. bloodiness = BLOOD_AMOUNT_PER_DECAL - var/data = "" + +/obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases) + . = ..() + update_icon() /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) - if(!data) - C.data = add_blood_DNA(return_blood_DNA()) if(bloodiness) if(C.bloodiness < MAX_SHOE_BLOODINESS) C.bloodiness += bloodiness @@ -19,7 +20,6 @@ return ..() obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) - blood_list_checks(src, data["blood_type"]) return TRUE /obj/effect/decal/cleanable/blood/transfer_mob_blood_dna() @@ -27,16 +27,10 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) update_icon() /obj/effect/decal/cleanable/blood/update_icon() - for(var/datum/reagent/R in reagents.reagent_list) - // Get blood data from the blood reagent. - if(istype(R, /datum/reagent/blood)) - if(R.data["blood_type"]) - blood_list_checks(src, R.data["blood_type"]) - blood_color = blood_DNA_to_color(blood_mix_types) - else if(istype(R, /datum/reagent/liquidgibs)) - if(R.data["blood_type"]) - blood_list_checks(src, R.data["blood_type"]) - blood_color = blood_DNA_to_color(blood_mix_types) + GET_COMPONENT(D, /datum/component/forensics) + if(!blood_color) + blood_color = D.blood_mix_color + color = blood_color /obj/effect/decal/cleanable/blood/old name = "dried blood" @@ -57,24 +51,12 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) desc = "Your instincts say you shouldn't be following these." random_icon_states = null var/list/existing_dirs = list() - blood_state = BLOOD_STATE_BLOOD color = BLOOD_COLOR_HUMAN bloodiness = BLOOD_AMOUNT_PER_DECAL - var/data = "" /obj/effect/decal/cleanable/trail_holder/update_icon() - for(var/datum/reagent/R in reagents.reagent_list) - // Get blood data from the blood reagent. - if(istype(R, /datum/reagent/blood)) - if(R.data["blood_type"]) - blood_list_checks(src, R.data["blood_type"]) - color = blood_DNA_to_color(blood_mix_types) - else if(istype(R, /datum/reagent/liquidgibs)) - if(R.data["blood_type"]) - blood_list_checks(src, R.data["blood_type"]) - color = blood_DNA_to_color(blood_mix_types) - else - color = blood_DNA_to_color() + GET_COMPONENT(D, /datum/component/forensics) + color = D.blood_mix_color /obj/effect/cleanable/trail_holder/Initialize() . = ..() @@ -105,7 +87,6 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes if(S && S.blood_smear[blood_state]) - S.blood_list_checks(S, data["blood_type"]) S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(entered_dirs & H.dir)) @@ -113,8 +94,8 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) update_icon() else if(!H.bloodiness) + H.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) H.bloodiness = max(H.bloodiness - BLOOD_LOSS_IN_SPREAD, 0) - H.blood_list_checks(H, data["blood_type"]) if (!(entered_dirs & H.dir)) entered_dirs |= H.dir update_icon() @@ -126,7 +107,6 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes if(S && S.blood_smear[blood_state]) - S.blood_list_checks(S, data["blood_type"]) S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(exited_dirs & H.dir)) @@ -134,29 +114,30 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) update_icon() else if(!H.bloodiness) + H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) H.bloodiness = max(H.bloodiness - BLOOD_LOSS_IN_SPREAD, 0) - H.blood_list_checks(H, data["blood_type"]) if (!(exited_dirs & H.dir)) exited_dirs |= H.dir update_icon() /obj/effect/decal/cleanable/blood/footprints/tracks/update_icon() + ..() cut_overlays() for(var/Ddir in GLOB.cardinals) + GET_COMPONENT(B, /datum/component/forensics) if(entered_dirs & Ddir) var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]-[color]"] if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir) + GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir, color = B.blood_mix_color) add_overlay(bloodstep_overlay) if(exited_dirs & Ddir) var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]-[color]"] if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir) + GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir, color = B.blood_mix_color) add_overlay(bloodstep_overlay) - alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness - color = blood_DNA_to_color(blood_mix_types) + alpha = BLOODY_FOOTPRINT_BASE_ALPHA + bloodiness /obj/effect/decal/cleanable/blood/footprints/tracks/examine(mob/user) . = ..() diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index cfe0bec455..7e960b5d78 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -33,29 +33,27 @@ var/list/dna_to_add //find the dna to pass to the spawned gibs. do note this can be null if the mob doesn't have blood. add_blood_DNA() has built in null handling. - to_chat(world, "Attempting to add DNA to pass to gibs") + var/body_coloring if(source_mob) - to_chat(world, "We got a source mob, [source_mob]") dna_to_add = source_mob.get_blood_dna_list() //ez pz + if(ishuman(source_mob)) + var/mob/living/carbon/human/H = source_mob + if(H.dna.species.use_skintones) + body_coloring = skintone2hex(H.skin_tone) + else + body_coloring = "#[H.dna.features["mcolor"]]" + else if(gib_mob_type) - to_chat(world, "We got a mob type, [gib_mob_type]") var/mob/living/temp_mob = new gib_mob_type(src) //generate a fake mob so that we pull the right type of DNA for the gibs. if(gib_mob_species) - to_chat(world, "We got a mob species too, [gib_mob_species]") if(ishuman(temp_mob)) - to_chat(world, "it's a human type mob for sure") var/mob/living/carbon/human/H = temp_mob H.set_species(gib_mob_species) - if(isjellyperson(H)) - H.dna.blood_type = "GEL" - if(isipcperson(H)) - H.dna.blood_type = "HF" - if(isxenoperson(H)) - H.dna.blood_type = "X*" - if(islizard(H)) - H.dna.blood_type = "L" - to_chat(world, "temp_mob is a [H.dna.species]") dna_to_add = temp_mob.get_blood_dna_list() + if(H.dna.species.use_skintones) + body_coloring = skintone2hex(H.skin_tone) + else + body_coloring = "#[H.dna.features["mcolor"]]" qdel(H) else dna_to_add = temp_mob.get_blood_dna_list() @@ -78,6 +76,7 @@ gib.add_blood_DNA(dna_to_add) // color them properly, please. + gib.body_colors = body_coloring gib.update_icon() var/list/directions = gibdirections[i] diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm index 5833190d4a..50bfeb1407 100644 --- a/code/modules/clothing/gloves/_gloves.dm +++ b/code/modules/clothing/gloves/_gloves.dm @@ -31,7 +31,7 @@ . += mutable_appearance('icons/effects/item_damage.dmi', "damagedgloves") IF_HAS_BLOOD_DNA(src) GET_COMPONENT(D, /datum/component/forensics) - . += mutable_appearance('icons/effects/blood.dmi', "bloodyhands", color = D.blood_DNA_to_color()) + . += mutable_appearance('icons/effects/blood.dmi', "bloodyhands", color = D.blood_mix_color) /obj/item/clothing/gloves/update_clothes_damaged_state(damaging = TRUE) ..() diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm index d4e54de0c7..13f3a81b99 100644 --- a/code/modules/clothing/masks/_masks.dm +++ b/code/modules/clothing/masks/_masks.dm @@ -19,7 +19,7 @@ . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") IF_HAS_BLOOD_DNA(src) GET_COMPONENT(D, /datum/component/forensics) - . += mutable_appearance('icons/effects/blood.dmi', "maskblood", color = D.blood_DNA_to_color()) + . += mutable_appearance('icons/effects/blood.dmi', "maskblood", color = D.blood_mix_color) /obj/item/clothing/mask/equipped(mob/user, slot) ..() diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index b9b37f67b0..c815eae39b 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -52,10 +52,11 @@ if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe") if(bloody) + GET_COMPONENT(D, /datum/component/forensics) if(adjusted == NORMAL_STYLE) - . += mutable_appearance('icons/effects/blood.dmi', "shoeblood", color = blood_DNA_to_color(blood_mix_types)) + . += mutable_appearance('icons/effects/blood.dmi', "shoeblood", color = D.blood_mix_color) else - . += mutable_appearance('modular_citadel/icons/mob/digishoes.dmi', "shoeblood", color = blood_DNA_to_color(blood_mix_types)) + . += mutable_appearance('modular_citadel/icons/mob/digishoes.dmi', "shoeblood", color = D.blood_mix_color) /obj/item/clothing/shoes/equipped(mob/user, slot) . = ..() diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index 1f67f93119..3571fe393a 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -63,9 +63,9 @@ IF_HAS_BLOOD_DNA(src) GET_COMPONENT(D, /datum/component/forensics) if(taurmode >= SNEK_TAURIC) - . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "[blood_overlay_type]blood", color = D.blood_DNA_to_color()) + . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "[blood_overlay_type]blood", color = D.blood_mix_color) else - . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood", color = D.blood_DNA_to_color()) + . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood", color = D.blood_mix_color) var/mob/living/carbon/human/M = loc if(ishuman(M) && M.w_uniform) var/obj/item/clothing/under/U = M.w_uniform diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index 99c1642f43..df5004a259 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -24,7 +24,7 @@ . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform") IF_HAS_BLOOD_DNA(src) GET_COMPONENT(D, /datum/component/forensics) - . += mutable_appearance('icons/effects/blood.dmi', "uniformblood", color = D.blood_DNA_to_color()) + . += mutable_appearance('icons/effects/blood.dmi', "uniformblood", color = D.blood_mix_color) if(accessory_overlay) . += accessory_overlay diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 5fb78c0098..be6d2196e0 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -46,7 +46,7 @@ var/bloodiness = 0 var/blood_state = BLOOD_STATE_NOT_BLOODY var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) - var/last_blood_DNA = ""//same as last one + var/blood_color //For blood smearing stuff var/name_override //For temporary visible name changes diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 9b5375035e..2313dace89 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -185,7 +185,7 @@ There are several things that need to be remembered: inv.update_icon() if(!gloves && bloody_hands) - var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyhands", -GLOVES_LAYER) + var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyhands", -GLOVES_LAYER, color = blood_color) if(get_num_arms() < 2) if(has_left_hand()) bloody_overlay.icon_state = "bloodyhands_left" diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 4622d79777..85d73d6a6e 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -102,12 +102,7 @@ B = new(T) if(!B.reagents) B.reagents.add_reagent("blood", reac_volume) - for(var/datum/reagent/R in B.reagents.reagent_list) - // Get blood data from the blood reagent. - if(istype(R, /datum/reagent/blood)) - if(R.data["blood_type"]) - B.blood_list_checks(src, R.data["blood_type"]) - B.color = B.blood_DNA_to_color(blood_mix_types) + B.update_icon() /datum/reagent/blood/synthetics data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index 6ac998d722880b02e85003e63b5bcad6d48257f9..4812f95fc8b53e983e388a32e9c352f5d06b6673 100644 GIT binary patch delta 78615 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 OfMD82T6LNaBmM`Sfs3*L delta 77209 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%0D^V!>B%vrY&>KIbe%Jg#@$p?MG8T^n# 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 f*3aihY%-24)Z=MWDF1mZU{HM#%- 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�=5f}!8&YO9VQ{|7c> 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 literal 35318 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

Q8&^ugcfy3TsWU?uPINTsbvsDn$^ywt>p~Z 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

_w5 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 P_)kSyL#b53DDeLPiMwb5 From ad5418f0a15e6863f6160ba4a8a99ead335bc17c Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 12 May 2019 04:43:52 -0500 Subject: [PATCH 027/469] as it turns out, Creatures don't have minds --- code/game/objects/effects/decals/cleanable/gibs.dm | 10 ++++++---- code/game/objects/effects/decals/cleanable/humans.dm | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 9adde3f51b..a2c6d69741 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -11,8 +11,8 @@ /obj/effect/decal/cleanable/blood/gibs/proc/guts() if(gib_overlay) - var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-overlay") - var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-overlay", color = body_colors) + var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-overlay", layer = (LOW_OBJ_LAYER - 0.1)) + var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-overlay", color = body_colors, layer = (LOW_OBJ_LAYER - 0.2)) if(!slimy_gibs) gibz.appearance_flags = RESET_COLOR add_overlay(gibz) @@ -23,8 +23,10 @@ /obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L) if(istype(L) && has_gravity(loc)) - if(L.mind.assigned_role == "Detective") //Gumshoe perks yo - playsound(loc, 'sound/effects/gib_step.ogg', 10, 1) + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(H.mind.assigned_role == "Detective") //Gumshoe perks yo + playsound(loc, 'sound/effects/gib_step.ogg', 10, 1) else playsound(loc, 'sound/effects/gib_step.ogg', L.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) . = ..() diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index cb102e8232..d106b0b3d3 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -141,7 +141,7 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) /obj/effect/decal/cleanable/blood/footprints/tracks/examine(mob/user) . = ..() - if(shoe_types.len && user.mind.assigned_role == "Detective") //gumshoe does the detective thing, not every fucking assistant + if(shoe_types.len && ishuman(user) && user.mind.assigned_role == "Detective") //gumshoe does the detective thing, not every fucking assistant . += "You recognise the footprints as belonging to:\n" for(var/shoe in shoe_types) var/obj/item/clothing/shoes/S = shoe From 49a2f3cc63efe581804fee43cbb5953ef13dff33 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 12 May 2019 06:31:02 -0500 Subject: [PATCH 028/469] I don't even fucking know anymore --- .../effects/decals/cleanable/humans.dm | 19 ++++++++++++------- code/modules/mob/living/blood.dm | 6 ------ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index d106b0b3d3..7a7475d072 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -8,7 +8,8 @@ color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere. bloodiness = BLOOD_AMOUNT_PER_DECAL -/obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases) +/obj/effect/decal/cleanable/blood/Initialize(mapload, list/datum/disease/diseases) + AddComponent(/datum/component/forensics, null,null,blood_DNA,null,blood_mix_types,blood_mix_color) . = ..() update_icon() @@ -27,9 +28,9 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) update_icon() /obj/effect/decal/cleanable/blood/update_icon() - GET_COMPONENT(D, /datum/component/forensics) - if(!blood_color) - blood_color = D.blood_mix_color + GET_COMPONENT(F, /datum/component/forensics) + if(istype(F)) + F.blood_mix_color = blood_color color = blood_color /obj/effect/decal/cleanable/blood/old @@ -56,7 +57,9 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) /obj/effect/decal/cleanable/trail_holder/update_icon() GET_COMPONENT(D, /datum/component/forensics) - color = D.blood_mix_color + if(istype(D) && !blood_color) + blood_color = D.blood_mix_color + color = blood_color /obj/effect/cleanable/trail_holder/Initialize() . = ..() @@ -129,12 +132,14 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) if(entered_dirs & Ddir) var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]-[color]"] if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir, color = B.blood_mix_color) + GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir, color = blood_color) + bloodstep_overlay.Blend(blood_color, ICON_MULTIPLY) add_overlay(bloodstep_overlay) if(exited_dirs & Ddir) var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]-[color]"] if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir, color = B.blood_mix_color) + GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir, color = blood_color) + bloodstep_overlay.Blend(blood_color, ICON_MULTIPLY) add_overlay(bloodstep_overlay) alpha = BLOODY_FOOTPRINT_BASE_ALPHA + bloodiness diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index ba1a7b16ca..344140b00f 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -230,22 +230,16 @@ return "blood" /mob/living/carbon/get_blood_id() - to_chat(world, "carbon's get blood id called") var/mob/living/carbon/C = src if(ishuman(C)) - to_chat(world, "[C] is a [dna.species]") var/mob/living/carbon/human/H = C if(H.dna.species.exotic_blood) - to_chat(world, "[H] has [H.dna.species.exotic_blood]") return "[H.dna.species.exotic_blood]" if(dna.species.exotic_blood) - to_chat(world, "[src] apparently isn't a human. but has exotic blood, [dna.species.exotic_blood].") return dna.species.exotic_blood else if((NOBLOOD in dna.species.species_traits) || (has_trait(TRAIT_NOCLONE))) - to_chat(world, "[src] apparently isn't a human. And has no clone or no blood") return else - to_chat(world, "[src] apparently isn't a human, doesn't have snowflake blood either or something.") return "blood" // This is has more potential uses, and is probably faster than the old proc. From 77abf6a17971a7810cacd30589200d4c051067ea Mon Sep 17 00:00:00 2001 From: Poojawa Date: Tue, 14 May 2019 02:36:23 -0500 Subject: [PATCH 029/469] just need the stupid component to work properly now --- code/game/objects/effects/decals/cleanable.dm | 2 ++ .../objects/effects/decals/cleanable/gibs.dm | 18 ++++++---- .../effects/decals/cleanable/humans.dm | 34 +++++++++++++------ code/modules/clothing/shoes/_shoes.dm | 6 ++-- code/modules/mob/living/blood.dm | 2 +- .../mob/living/carbon/human/human_movement.dm | 7 +++- 6 files changed, 47 insertions(+), 22 deletions(-) diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 8e922b5b39..c4b668696d 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -84,6 +84,7 @@ S.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,S.blood_smear[blood_state]+add_blood) S.add_blood_DNA(return_blood_DNA()) S.blood_state = blood_state + S.blood_color = blood_color update_icon() H.update_inv_shoes() @@ -97,6 +98,7 @@ H.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,H.blood_smear[blood_state]+add_blood) H.add_blood_DNA(return_blood_DNA()) H.blood_state = blood_state + H.blood_color = blood_color update_icon() /obj/effect/decal/cleanable/proc/can_bloodcrawl_in() diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index a2c6d69741..5c76bd6867 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -11,12 +11,16 @@ /obj/effect/decal/cleanable/blood/gibs/proc/guts() if(gib_overlay) - var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-overlay", layer = (LOW_OBJ_LAYER - 0.1)) - var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-overlay", color = body_colors, layer = (LOW_OBJ_LAYER - 0.2)) + var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-overlay", color = blood_color) + gibz.layer = (LOW_OBJ_LAYER - 0.1) + var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-overlay", color = body_colors) + gibz2.layer = (LOW_OBJ_LAYER - 0.2) if(!slimy_gibs) gibz.appearance_flags = RESET_COLOR - add_overlay(gibz) - add_overlay(gibz2) + add_overlay(gibz) + else + add_overlay(gibz) + add_overlay(gibz2) /obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) return @@ -41,8 +45,10 @@ GET_COMPONENT(infective, /datum/component/infective) if(infective) diseases = infective.diseases + var/obj/effect/decal/cleanable/blood/gibs/gibbers = src var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) - splat.update_icon() + splat.color = gibbers.blood_color + if(!step_to(src, get_step(src, direction), 0)) break @@ -97,8 +103,8 @@ /obj/effect/decal/cleanable/blood/gibs/human/Initialize(mapload, list/datum/disease/diseases) . = ..() reagents.add_reagent("liquidgibs", 5) - update_icon() guts() + update_icon() /obj/effect/decal/cleanable/blood/gibs/human/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 7a7475d072..1c9dfb9a35 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -8,9 +8,9 @@ color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere. bloodiness = BLOOD_AMOUNT_PER_DECAL -/obj/effect/decal/cleanable/blood/Initialize(mapload, list/datum/disease/diseases) - AddComponent(/datum/component/forensics, null,null,blood_DNA,null,blood_mix_types,blood_mix_color) +/obj/effect/decal/cleanable/blood/ComponentInitialize() . = ..() + AddComponent(/datum/component/forensics) update_icon() /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) @@ -20,7 +20,7 @@ update_icon() return ..() -obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) +/obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) return TRUE /obj/effect/decal/cleanable/blood/transfer_mob_blood_dna() @@ -29,10 +29,21 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) /obj/effect/decal/cleanable/blood/update_icon() GET_COMPONENT(F, /datum/component/forensics) - if(istype(F)) - F.blood_mix_color = blood_color + if(F && istype(F)) + blood_color = F.blood_mix_color + else + for(var/datum/reagent/R in reagents.reagent_list) + // Get blood data from the blood reagent. + if(istype(R, /datum/reagent/blood)) + if(R.data["blood_type"]) + blood_color = bloodtype_to_color(R.data["blood_type"]) + else if(istype(R, /datum/reagent/liquidgibs)) + if(R.data["blood_type"]) + blood_color = bloodtype_to_color(R.data["blood_type"]) + color = blood_color + /obj/effect/decal/cleanable/blood/old name = "dried blood" desc = "Looks like it's been here a while. Eew." @@ -91,6 +102,7 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) var/obj/item/clothing/shoes/S = H.shoes if(S && S.blood_smear[blood_state]) S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) + S.blood_color = blood_color shoe_types |= S.type if (!(entered_dirs & H.dir)) entered_dirs |= H.dir @@ -99,6 +111,7 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) else if(!H.bloodiness) H.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) H.bloodiness = max(H.bloodiness - BLOOD_LOSS_IN_SPREAD, 0) + H.blood_color = blood_color if (!(entered_dirs & H.dir)) entered_dirs |= H.dir update_icon() @@ -111,6 +124,7 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) var/obj/item/clothing/shoes/S = H.shoes if(S && S.blood_smear[blood_state]) S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) + S.blood_color = blood_color shoe_types |= S.type if (!(exited_dirs & H.dir)) exited_dirs |= H.dir @@ -119,31 +133,29 @@ obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) else if(!H.bloodiness) H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) H.bloodiness = max(H.bloodiness - BLOOD_LOSS_IN_SPREAD, 0) + H.blood_color = blood_color if (!(exited_dirs & H.dir)) exited_dirs |= H.dir update_icon() /obj/effect/decal/cleanable/blood/footprints/tracks/update_icon() - ..() cut_overlays() for(var/Ddir in GLOB.cardinals) - GET_COMPONENT(B, /datum/component/forensics) if(entered_dirs & Ddir) var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]-[color]"] if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir, color = blood_color) - bloodstep_overlay.Blend(blood_color, ICON_MULTIPLY) + GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir) add_overlay(bloodstep_overlay) if(exited_dirs & Ddir) var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]-[color]"] if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir, color = blood_color) - bloodstep_overlay.Blend(blood_color, ICON_MULTIPLY) + GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir) add_overlay(bloodstep_overlay) alpha = BLOODY_FOOTPRINT_BASE_ALPHA + bloodiness + /obj/effect/decal/cleanable/blood/footprints/tracks/examine(mob/user) . = ..() if(shoe_types.len && ishuman(user) && user.mind.assigned_role == "Detective") //gumshoe does the detective thing, not every fucking assistant diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index c815eae39b..4c6131644c 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -52,11 +52,10 @@ if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe") if(bloody) - GET_COMPONENT(D, /datum/component/forensics) if(adjusted == NORMAL_STYLE) - . += mutable_appearance('icons/effects/blood.dmi', "shoeblood", color = D.blood_mix_color) + . += mutable_appearance('icons/effects/blood.dmi', "shoeblood", color = blood_color) else - . += mutable_appearance('modular_citadel/icons/mob/digishoes.dmi', "shoeblood", color = D.blood_mix_color) + . += mutable_appearance('modular_citadel/icons/mob/digishoes.dmi', "shoeblood", color = blood_color) /obj/item/clothing/shoes/equipped(mob/user, slot) . = ..() @@ -97,6 +96,7 @@ return blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) blood_state = BLOOD_STATE_NOT_BLOODY + blood_color = null if(ismob(loc)) var/mob/M = loc M.update_inv_shoes() diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 344140b00f..86bf676f7e 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -234,7 +234,7 @@ if(ishuman(C)) var/mob/living/carbon/human/H = C if(H.dna.species.exotic_blood) - return "[H.dna.species.exotic_blood]" + return H.dna.species.exotic_blood if(dna.species.exotic_blood) return dna.species.exotic_blood else if((NOBLOOD in dna.species.species_traits) || (has_trait(TRAIT_NOCLONE))) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 9d072c90a2..1135a592e1 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -64,6 +64,7 @@ FP.icon_state = FOOTPRINT_SHOE FP.print_state = FOOTPRINT_SHOE FP.blood_state = S.blood_state + FP.blood_color = S.blood_color FP.entered_dirs |= dir FP.bloodiness = S.blood_smear[S.blood_state] FP.update_icon() @@ -79,7 +80,8 @@ if(!has_gravity(loc)) return var/turf/T = get_turf(src) - if(bloodiness) + var/mob/living/carbon/human/H = src + if(H.bloodiness) var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks) in T if(oldFP && (oldFP.blood_state == blood_state && oldFP.color == color)) return @@ -106,6 +108,7 @@ FP.icon_state = FOOTPRINT_SHOE FP.print_state = FOOTPRINT_SHOE FP.add_blood_DNA(return_blood_DNA()) + FP.blood_color = H.blood_color FP.update_icon() var/newdir = get_dir(T, loc) if(newdir == dir) @@ -124,6 +127,7 @@ if(!has_gravity(loc)) return var/turf/T = get_turf(src) + var/mob/living/carbon/human/H = src if(bloodiness) var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks) in T if(oldFP && (oldFP.blood_state == blood_state && oldFP.color == color)) @@ -133,6 +137,7 @@ FP.icon_state = FOOTPRINT_DRAG FP.print_state = FOOTPRINT_DRAG FP.add_blood_DNA(return_blood_DNA()) + FP.blood_color = H.blood_color FP.update_icon() var/newdir = get_dir(T, loc) if(newdir == dir) From 657e6316c650e91b011f21d9beabbd2af938302a Mon Sep 17 00:00:00 2001 From: Poojawa Date: Tue, 14 May 2019 02:49:38 -0500 Subject: [PATCH 030/469] port tg 42691 for component transfer enforcement --- code/__DEFINES/components.dm | 1 + code/datums/components/_component.dm | 25 ++++++++----- code/datums/components/decal.dm | 2 +- code/datums/components/forensics.dm | 11 ++++++ code/datums/components/lockon_aiming.dm | 3 -- code/datums/components/mirage_border.dm | 1 + code/datums/components/rotation.dm | 35 +++++++++++++++---- .../components/storage/concrete/_concrete.dm | 1 + code/datums/components/wet_floor.dm | 18 ++++++++-- 9 files changed, 76 insertions(+), 21 deletions(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 3338fc1cda..7322823231 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -7,6 +7,7 @@ #define GET_COMPONENT(varname, path) GET_COMPONENT_FROM(varname, path, src) #define COMPONENT_INCOMPATIBLE 1 +#define COMPONENT_NOTRANSFER 2 // How multiple components of the exact same type are handled in the same datum diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index b3d3b46434..e41755b6c2 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -2,6 +2,10 @@ var/dupe_mode = COMPONENT_DUPE_HIGHLANDER var/dupe_type var/datum/parent + //only set to true if you are able to properly transfer this component + //At a minimum RegisterWithParent and UnregisterFromParent should be used + //Make sure you also implement PostTransfer for any post transfer handling + var/can_transfer = FALSE /datum/component/New(datum/P, ...) parent = P @@ -154,7 +158,7 @@ return /datum/component/proc/PostTransfer() - return + return COMPONENT_INCOMPATIBLE //Do not support transfer by default as you must properly support it /datum/component/proc/_GetInverseTypeList(our_type = type) //we can do this one simple trick @@ -285,10 +289,12 @@ if(target.parent) target.RemoveComponent() target.parent = src - if(target.PostTransfer() == COMPONENT_INCOMPATIBLE) - var/c_type = target.type - qdel(target) - CRASH("Incompatible [c_type] transfer attempt to a [type]!") + var/result = target.PostTransfer() + switch(result) + if(COMPONENT_INCOMPATIBLE) + var/c_type = target.type + qdel(target) + CRASH("Incompatible [c_type] transfer attempt to a [type]!") if(target == AddComponent(target)) target._JoinParent() @@ -298,10 +304,13 @@ return var/comps = dc[/datum/component] if(islist(comps)) - for(var/I in comps) - target.TakeComponent(I) + for(var/datum/component/I in comps) + if(I.can_transfer) + target.TakeComponent(I) else - target.TakeComponent(comps) + var/datum/component/C = comps + if(C.can_transfer) + target.TakeComponent(comps) /datum/component/ui_host() return parent diff --git a/code/datums/components/decal.dm b/code/datums/components/decal.dm index e5547ee0ec..bdc1d3a2f6 100644 --- a/code/datums/components/decal.dm +++ b/code/datums/components/decal.dm @@ -1,6 +1,6 @@ /datum/component/decal dupe_mode = COMPONENT_DUPE_ALLOWED - + can_transfer = TRUE var/cleanable var/description var/mutable_appearance/pic diff --git a/code/datums/components/forensics.dm b/code/datums/components/forensics.dm index fdc5c5fe5d..a3461b31fb 100644 --- a/code/datums/components/forensics.dm +++ b/code/datums/components/forensics.dm @@ -1,5 +1,6 @@ /datum/component/forensics dupe_mode = COMPONENT_DUPE_UNIQUE + can_transfer = TRUE var/list/fingerprints //assoc print = print var/list/hiddenprints //assoc ckey = realname/gloves/ckey var/list/blood_DNA //assoc dna = bloodtype @@ -27,8 +28,18 @@ blood_mix_types = new_blood_mix_types blood_mix_color = new_blood_mix_color check_blood() + +/datum/component/forensics/RegisterWithParent() + check_blood() RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_act) +/datum/component/forensics/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_COMPONENT_CLEAN_ACT)) + +/datum/component/forensics/PostTransfer() + if(!isatom(parent)) + return COMPONENT_INCOMPATIBLE + /datum/component/forensics/proc/wipe_fingerprints() fingerprints = null return TRUE diff --git a/code/datums/components/lockon_aiming.dm b/code/datums/components/lockon_aiming.dm index cc41e793ed..38b707ac19 100644 --- a/code/datums/components/lockon_aiming.dm +++ b/code/datums/components/lockon_aiming.dm @@ -237,6 +237,3 @@ LOCKON_RANGING_BREAK_CHECK cd++ CHECK_TICK - -/datum/component/lockon_aiming/PostTransfer(datum/new_parent) - return COMPONENT_INCOMPATIBLE diff --git a/code/datums/components/mirage_border.dm b/code/datums/components/mirage_border.dm index 2e6f8f79f6..20e3b317ec 100644 --- a/code/datums/components/mirage_border.dm +++ b/code/datums/components/mirage_border.dm @@ -1,4 +1,5 @@ /datum/component/mirage_border + can_transfer = TRUE var/obj/effect/abstract/mirage_holder/holder /datum/component/mirage_border/Initialize(turf/target, direction, range=world.view) diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm index ff424dc02e..eef3873e6e 100644 --- a/code/datums/components/rotation.dm +++ b/code/datums/components/rotation.dm @@ -44,19 +44,21 @@ if(src.rotation_flags & ROTATION_CLOCKWISE) default_rotation_direction = ROTATION_CLOCKWISE - if(src.rotation_flags & ROTATION_ALTCLICK) +/datum/component/simple_rotation/proc/add_signals() + if(rotation_flags & ROTATION_ALTCLICK) RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/HandRot) RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/ExamineMessage) - if(src.rotation_flags & ROTATION_WRENCH) + if(rotation_flags & ROTATION_WRENCH) RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/WrenchRot) - if(src.rotation_flags & ROTATION_VERBS) +/datum/component/simple_rotation/proc/add_verbs() + if(rotation_flags & ROTATION_VERBS) var/atom/movable/AM = parent - if(src.rotation_flags & ROTATION_FLIP) + if(rotation_flags & ROTATION_FLIP) AM.verbs += /atom/movable/proc/simple_rotate_flip - if(src.rotation_flags & ROTATION_CLOCKWISE) + if(rotation_flags & ROTATION_CLOCKWISE) AM.verbs += /atom/movable/proc/simple_rotate_clockwise - if(src.rotation_flags & ROTATION_COUNTERCLOCKWISE) + if(rotation_flags & ROTATION_COUNTERCLOCKWISE) AM.verbs += /atom/movable/proc/simple_rotate_counterclockwise /datum/component/simple_rotation/proc/remove_verbs() @@ -66,11 +68,30 @@ AM.verbs -= /atom/movable/proc/simple_rotate_clockwise AM.verbs -= /atom/movable/proc/simple_rotate_counterclockwise -/datum/component/simple_rotation/Destroy() +/datum/component/simple_rotation/proc/remove_signals() + UnregisterSignal(parent, list(COMSIG_CLICK_ALT, COMSIG_PARENT_EXAMINE, COMSIG_PARENT_ATTACKBY)) + +/datum/component/simple_rotation/RegisterWithParent() + add_verbs() + add_signals() + . = ..() + +/datum/component/simple_rotation/PostTransfer() + //Because of the callbacks which we don't track cleanly we can't transfer this + //item cleanly, better to let the new of the new item create a new rotation datum + //instead (there's no real state worth transferring) + return COMPONENT_NOTRANSFER + +/datum/component/simple_rotation/UnregisterFromParent() remove_verbs() + remove_signals() + . = ..() + +/datum/component/simple_rotation/Destroy() QDEL_NULL(can_user_rotate) QDEL_NULL(can_be_rotated) QDEL_NULL(after_rotation) + //Signals + verbs removed via UnRegister . = ..() /datum/component/simple_rotation/RemoveComponent() diff --git a/code/datums/components/storage/concrete/_concrete.dm b/code/datums/components/storage/concrete/_concrete.dm index 4d7e8bddc5..709a21c0d0 100644 --- a/code/datums/components/storage/concrete/_concrete.dm +++ b/code/datums/components/storage/concrete/_concrete.dm @@ -4,6 +4,7 @@ // /mob/living/Move() in /modules/mob/living/living.dm - hiding storage boxes on mob movement /datum/component/storage/concrete + can_transfer = TRUE var/drop_all_on_deconstruct = TRUE var/drop_all_on_destroy = FALSE var/transfer_contents_on_component_transfer = FALSE diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm index 6d504cefd4..dc124750e4 100644 --- a/code/datums/components/wet_floor.dm +++ b/code/datums/components/wet_floor.dm @@ -1,5 +1,6 @@ /datum/component/wet_floor dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + can_transfer = TRUE var/highest_strength = TURF_DRY var/lube_flags = NONE //why do we have this? var/list/time_left_list //In deciseconds. @@ -26,14 +27,20 @@ if(!isopenturf(parent)) return COMPONENT_INCOMPATIBLE add_wet(strength, duration_minimum, duration_add, duration_maximum) - RegisterSignal(parent, COMSIG_TURF_IS_WET, .proc/is_wet) - RegisterSignal(parent, COMSIG_TURF_MAKE_DRY, .proc/dry) permanent = _permanent if(!permanent) START_PROCESSING(SSwet_floors, src) addtimer(CALLBACK(src, .proc/gc, TRUE), 1) //GC after initialization. last_process = world.time +/datum/component/wet_floor/RegisterWithParent() + RegisterSignal(parent, COMSIG_TURF_IS_WET, .proc/is_wet) + RegisterSignal(parent, COMSIG_TURF_MAKE_DRY, .proc/dry) + +/datum/component/wet_floor/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_TURF_IS_WET, COMSIG_TURF_MAKE_DRY)) + + /datum/component/wet_floor/Destroy() STOP_PROCESSING(SSwet_floors, src) var/turf/T = parent @@ -138,12 +145,19 @@ /datum/component/wet_floor/PreTransfer() var/turf/O = parent O.cut_overlay(current_overlay) + //That turf is no longer slippery, we're out of here + //Slippery components don't transfer due to callbacks + qdel(O.GetComponent(/datum/component/slippery)) /datum/component/wet_floor/PostTransfer() if(!isopenturf(parent)) return COMPONENT_INCOMPATIBLE var/turf/T = parent T.add_overlay(current_overlay) + //Make sure to add/update any slippery component on the new turf (update_flags calls LoadComponent) + update_flags() + + //NB it's possible we get deleted after this, due to inherit /datum/component/wet_floor/proc/add_wet(type, duration_minimum = 0, duration_add = 0, duration_maximum = MAXIMUM_WET_TIME, _permanent = FALSE) var/static/list/allowed_types = list(TURF_WET_WATER, TURF_WET_LUBE, TURF_WET_ICE, TURF_WET_PERMAFROST) From 45e912cc6c1ba1e6e970d762d804935796410ffc Mon Sep 17 00:00:00 2001 From: Poojawa Date: Tue, 14 May 2019 03:30:00 -0500 Subject: [PATCH 031/469] map editing is nicer with notepad ++ at least --- .../LavaRuins/lavaland_surface_alien_nest.dmm | 2 +- .../LavaRuins/lavaland_surface_envy.dmm | 2 +- _maps/RandomZLevels/moonoutpost19.dmm | 122 +++--------------- _maps/RandomZLevels/wildwest.dmm | 4 +- 4 files changed, 25 insertions(+), 105 deletions(-) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm index 1ea3f19c62..df5a1f943d 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm @@ -147,7 +147,7 @@ /area/ruin/unpowered/xenonest) "aH" = ( /obj/structure/alien/weeds, -/obj/effect/decal/cleanable/blood/tracks, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/xenonest) "aI" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm index df9620cb67..22d2727b18 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm @@ -34,7 +34,7 @@ }, /area/ruin/unpowered) "g" = ( -/obj/effect/decal/cleanable/blood/tracks, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /obj/structure/mirror{ desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!"; icon_state = "mirror_broke"; diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index fedd55a1bf..69e6628e46 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -1970,22 +1970,14 @@ }, /area/awaymission/moonoutpost19/syndicate) "dE" = ( -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - dir = 8; - icon_state = "ltrails_1" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /turf/open/floor/plating/asteroid{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/main) "dF" = ( -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - dir = 8; - icon_state = "ltrails_2" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /turf/open/floor/plating/asteroid{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; heat_capacity = 1e+006 @@ -2555,11 +2547,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - dir = 8; - icon_state = "ltrails_1" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /turf/open/floor/plating{ heat_capacity = 1e+006 }, @@ -2579,11 +2567,7 @@ /obj/machinery/door/airlock/maintenance{ req_access_txt = "201" }, -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - dir = 8; - icon_state = "ltrails_1" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /turf/open/floor/plating{ heat_capacity = 1e+006 }, @@ -2592,11 +2576,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - dir = 5; - icon_state = "ltrails_1" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /obj/effect/turf_decal/tile/purple{ dir = 8 }, @@ -2774,10 +2754,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - icon_state = "ltrails_2" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /obj/structure/alien/weeds, /obj/effect/turf_decal/tile/purple{ dir = 8 @@ -3214,10 +3191,7 @@ }, /area/awaymission/moonoutpost19/research) "gl" = ( -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - icon_state = "ltrails_1" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /obj/effect/turf_decal/tile/purple{ dir = 8 }, @@ -3419,11 +3393,7 @@ /obj/item/shard{ icon_state = "small" }, -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - dir = 8; - icon_state = "ltrails_1" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 4 @@ -3442,11 +3412,7 @@ }, /area/awaymission/moonoutpost19/research) "gF" = ( -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - dir = 6; - icon_state = "ltrails_1" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /obj/effect/turf_decal/tile/purple{ dir = 8 }, @@ -4417,11 +4383,7 @@ }, /area/awaymission/moonoutpost19/research) "is" = ( -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - dir = 8; - icon_state = "ltrails_1" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /turf/open/floor/plasteel/white{ heat_capacity = 1e+006 }, @@ -6531,11 +6493,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - dir = 9; - icon_state = "ltrails_1" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, @@ -6546,11 +6504,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "mQ" = ( -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - dir = 8; - icon_state = "ltrails_1" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /turf/open/floor/plasteel{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; dir = 8; @@ -6564,21 +6518,13 @@ id_tag = "awaydorm2"; name = "Dorm 2" }, -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - dir = 8; - icon_state = "ltrails_1" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /turf/open/floor/plasteel{ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/arrivals) "mS" = ( -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - dir = 5; - icon_state = "ltrails_1" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /turf/open/floor/carpet{ heat_capacity = 1e+006 }, @@ -6623,10 +6569,7 @@ /turf/open/floor/mineral/titanium/yellow, /area/awaymission/moonoutpost19/arrivals) "mZ" = ( -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - icon_state = "ltrails_1" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, @@ -6747,10 +6690,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "nq" = ( -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - icon_state = "ltrails_2" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /obj/machinery/camera{ c_tag = "Dormitories"; dir = 4; @@ -6875,11 +6815,7 @@ /obj/item/shard{ icon_state = "small" }, -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - dir = 9; - icon_state = "ltrails_1" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /turf/open/floor/plating/asteroid{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; heat_capacity = 1e+006 @@ -6889,11 +6825,7 @@ /obj/structure/grille/broken, /obj/item/stack/rods, /obj/item/shard, -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - dir = 8; - icon_state = "ltrails_2" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /turf/open/floor/plating{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; heat_capacity = 1e+006; @@ -6902,11 +6834,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "nE" = ( -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - dir = 8; - icon_state = "ltrails_2" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /turf/open/floor/plating{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; heat_capacity = 1e+006; @@ -6915,11 +6843,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "nF" = ( -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - dir = 8; - icon_state = "ltrails_1" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; @@ -6928,11 +6852,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "nG" = ( -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - dir = 6; - icon_state = "ltrails_1" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; diff --git a/_maps/RandomZLevels/wildwest.dmm b/_maps/RandomZLevels/wildwest.dmm index 064be0907a..17b8c05bab 100644 --- a/_maps/RandomZLevels/wildwest.dmm +++ b/_maps/RandomZLevels/wildwest.dmm @@ -957,7 +957,7 @@ /obj/structure/mineral_door/wood{ icon_state = "wood" }, -/obj/effect/decal/cleanable/blood/tracks, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels /turf/open/floor/plating/ironsand{ icon_state = "ironsand1" }, @@ -998,7 +998,7 @@ }, /area/awaymission/wildwest/gov) "dt" = ( -/obj/effect/decal/cleanable/blood/tracks, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels /turf/open/floor/plating/ironsand{ icon_state = "ironsand1" }, From b03a84e4d60f49923d0265194b00766e9b6a1b0c Mon Sep 17 00:00:00 2001 From: Poojawa Date: Tue, 14 May 2019 03:42:14 -0500 Subject: [PATCH 032/469] do we even use this shitty away mission --- _maps/RandomZLevels/moonoutpost19.dmm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index 69e6628e46..2cf17d2802 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -1984,11 +1984,7 @@ }, /area/awaymission/moonoutpost19/main) "dG" = ( -/obj/effect/decal/cleanable/blood/tracks{ - desc = "Your instincts say you shouldn't be following these."; - dir = 8; - icon_state = "ltrails_1" - }, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /obj/item/mining_scanner, /turf/open/floor/plating/asteroid{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; From 6478c217314d9b4eca9c8e800df9de36dc1b1a21 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Tue, 14 May 2019 16:00:00 -0500 Subject: [PATCH 033/469] , --- _maps/RandomZLevels/wildwest.dmm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_maps/RandomZLevels/wildwest.dmm b/_maps/RandomZLevels/wildwest.dmm index 17b8c05bab..f1aa21453f 100644 --- a/_maps/RandomZLevels/wildwest.dmm +++ b/_maps/RandomZLevels/wildwest.dmm @@ -957,7 +957,7 @@ /obj/structure/mineral_door/wood{ icon_state = "wood" }, -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /turf/open/floor/plating/ironsand{ icon_state = "ironsand1" }, @@ -998,7 +998,7 @@ }, /area/awaymission/wildwest/gov) "dt" = ( -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /turf/open/floor/plating/ironsand{ icon_state = "ironsand1" }, From 689cb3434749726645e21e1e9bb4e7510d840fce Mon Sep 17 00:00:00 2001 From: Poojawa Date: Tue, 14 May 2019 20:19:55 -0500 Subject: [PATCH 034/469] Update wildwest.dmm --- _maps/RandomZLevels/wildwest.dmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_maps/RandomZLevels/wildwest.dmm b/_maps/RandomZLevels/wildwest.dmm index f1aa21453f..0c21b3d953 100644 --- a/_maps/RandomZLevels/wildwest.dmm +++ b/_maps/RandomZLevels/wildwest.dmm @@ -1004,7 +1004,7 @@ }, /area/awaymission/wildwest/mines) "du" = ( -/obj/effect/decal/cleanable/blood/tracks, +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, /turf/open/floor/wood, /area/awaymission/wildwest/mines) "dv" = ( From 0f6677b9564cb689726e8db065eeb0a42d730859 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 16 May 2019 08:23:53 -0500 Subject: [PATCH 035/469] Blood colors happens to footprints now. Different prints not working. splatter effect not working, I'm just sick of looking at this right now. --- code/__DEFINES/components.dm | 2 + code/__DEFINES/footsteps.dm | 1 + code/datums/components/decals/blood.dm | 6 +- code/datums/components/forensics.dm | 26 ++-- code/game/objects/effects/decals/cleanable.dm | 5 +- .../effects/decals/cleanable/aliens.dm | 4 +- .../objects/effects/decals/cleanable/gibs.dm | 10 +- .../effects/decals/cleanable/humans.dm | 72 +++++---- code/game/objects/items.dm | 3 + code/modules/clothing/clothing.dm | 1 - code/modules/clothing/shoes/_shoes.dm | 2 + code/modules/detectivework/detective_work.dm | 10 ++ .../mob/living/carbon/human/human_defines.dm | 1 + .../mob/living/carbon/human/human_movement.dm | 143 ++++++------------ .../mob/living/carbon/human/species.dm | 11 +- .../carbon/human/species_types/angel.dm | 1 + .../carbon/human/species_types/humans.dm | 1 + .../carbon/human/species_types/jellypeople.dm | 4 +- .../human/species_types/lizardpeople.dm | 3 + .../carbon/human/species_types/mothmen.dm | 1 + .../carbon/human/species_types/plasmamen.dm | 1 + .../carbon/human/species_types/podpeople.dm | 1 + .../carbon/human/species_types/skeletons.dm | 1 + .../carbon/human/species_types/zombies.dm | 5 +- .../chemistry/reagents/other_reagents.dm | 4 +- icons/effects/fluidtracks.dmi | Bin 13404 -> 13833 bytes .../carbon/human/species_types/furrypeople.dm | 26 +++- .../living/carbon/human/species_types/ipc.dm | 1 + 28 files changed, 184 insertions(+), 162 deletions(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 7322823231..b00765d2bb 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -202,6 +202,8 @@ #define COMSIG_TURF_MAKE_DRY "make_turf_try" //(max_strength, immediate, duration_decrease = INFINITY): Returns bool. #define COMSIG_COMPONENT_CLEAN_ACT "clean_act" //called on an object to clean it of cleanables. Usualy with soap: (num/strength) +//Blood color +#define COMSIG_BLOOD_COLOR "blood_DNA_to_color" //RGB blood stuff //Food #define COMSIG_FOOD_EATEN "food_eaten" //from base of obj/item/reagent_containers/food/snacks/attack(): (mob/living/eater, mob/feeder) diff --git a/code/__DEFINES/footsteps.dm b/code/__DEFINES/footsteps.dm index 56dfbe155d..8937ab6afa 100644 --- a/code/__DEFINES/footsteps.dm +++ b/code/__DEFINES/footsteps.dm @@ -8,6 +8,7 @@ #define FOOTSTEP_LAVA "lava" #define FOOTPRINT_SHOE "shoe" +#define FOOTPRINT_FOOT "foot" #define FOOTPRINT_PAW "paw" #define FOOTPRINT_CLAW "claw" #define FOOTPRINT_WHEEL "wheels" diff --git a/code/datums/components/decals/blood.dm b/code/datums/components/decals/blood.dm index ba69e07d65..3daa4b5944 100644 --- a/code/datums/components/decals/blood.dm +++ b/code/datums/components/decals/blood.dm @@ -19,17 +19,17 @@ // It's something which takes on the look of other items, probably icon = I.icon icon_state = I.icon_state - GET_COMPONENT(D, /datum/component/forensics) var/static/list/blood_splatter_appearances = list() //try to find a pre-processed blood-splatter. otherwise, make a new one - var/index = "[REF(icon)]-[icon_state]-[D.blood_mix_color]" + var/index = "[REF(icon)]-[icon_state]" pic = blood_splatter_appearances[index] if(!pic) var/icon/blood_splatter_icon = icon(initial(I.icon), initial(I.icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) blood_splatter_icon.Blend(icon(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant - blood_splatter_icon.Blend(D.blood_mix_color, ICON_MULTIPLY) //add the blood's color with DNA information + pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state)) + pic.color = I.blood_color //add the blood's color with DNA information blood_splatter_appearances[index] = pic return TRUE diff --git a/code/datums/components/forensics.dm b/code/datums/components/forensics.dm index a3461b31fb..4ee8b93cc7 100644 --- a/code/datums/components/forensics.dm +++ b/code/datums/components/forensics.dm @@ -32,6 +32,7 @@ /datum/component/forensics/RegisterWithParent() check_blood() RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_act) +// RegisterSignal(parent, COMSIG_BLOOD_COLOR, .proc/ /datum/component/forensics/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_COMPONENT_CLEAN_ACT)) @@ -163,10 +164,14 @@ if(!length(dna)) return LAZYINITLIST(blood_DNA) + LAZYINITLIST(blood_mix_types) for(var/i in dna) blood_DNA[i] = dna[i] - var/blood_type = blood_DNA.Find(GLOB.all_types_bloods) - add_blood_list(blood_type) + for(var/type in blood_DNA) + if(type in blood_DNA[type]) + blood_mix_types += blood_DNA[type] + + blood_list_check(blood_mix_types) check_blood() return TRUE @@ -176,22 +181,18 @@ if(!length(blood_DNA)) return -/datum/component/forensics/proc/add_blood_list(blood_type) - if(!blood_type) - return - LAZYINITLIST(blood_mix_types) - blood_list_checks(blood_mix_types, blood_type) - blood_DNA_to_color(blood_mix_types) - return TRUE - -/datum/component/forensics/proc/blood_list_checks(list/blood_types, var/blood_type) //This is a messy attempt at trying to reduce lists of items and mobs with blood colors on them +/datum/component/forensics/proc/blood_list_check(list/blood_types, blood_type) //This is a messy attempt at trying to reduce lists of items and mobs with blood colors on them if(blood_type in GLOB.regular_bloods) blood_type = "A+" //generic so we don't have 8 different types of human blood if(blood_type in blood_mix_types) return else LAZYADD(blood_mix_types, blood_type) - return TRUE + + if(blood_mix_types.len) + blood_DNA_to_color(blood_mix_types) + else + return /datum/component/forensics/proc/blood_DNA_to_color(list/bloods) var/final_rgb = "#940000" //We default to red just in case @@ -210,4 +211,3 @@ final_rgb = BlendRGB(final_rgb, bloodtype_to_color(bloods)) blood_mix_color = final_rgb - return TRUE diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index c4b668696d..f5e929a7ae 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -90,12 +90,13 @@ else if(H.bloodiness && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) var/add_blood = 0 - if(H.bloodiness >= BLOOD_GAIN_PER_STEP) - add_blood = BLOOD_GAIN_PER_STEP + if(H.bloodiness >= 1) + add_blood = 5 else add_blood = bloodiness bloodiness -= add_blood H.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,H.blood_smear[blood_state]+add_blood) + H.bloodiness = add_blood H.add_blood_DNA(return_blood_DNA()) H.blood_state = blood_state H.blood_color = blood_color diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 29c8332529..9b4d65cff4 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -33,8 +33,10 @@ GET_COMPONENT(infective, /datum/component/infective) if(infective) diseases = infective.diseases + var/obj/effect/decal/cleanable/blood/gibs/gibbers = src var/obj/effect/decal/cleanable/blood/splatter/xeno/splat = new /obj/effect/decal/cleanable/blood/splatter/xeno(loc, diseases) - splat.update_icon() + splat.color = gibbers.blood_color + splat.blood_color = gibbers.blood_color if(!step_to(src, get_step(src, direction), 0)) break diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 5c76bd6867..31849c7251 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -11,14 +11,13 @@ /obj/effect/decal/cleanable/blood/gibs/proc/guts() if(gib_overlay) - var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-overlay", color = blood_color) - gibz.layer = (LOW_OBJ_LAYER - 0.1) - var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-overlay", color = body_colors) - gibz2.layer = (LOW_OBJ_LAYER - 0.2) + var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-overlay", color = blood_color, layer = (LOW_OBJ_LAYER + 0.1)) + var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-overlay", color = body_colors, layer = (LOW_OBJ_LAYER + 0.1)) if(!slimy_gibs) gibz.appearance_flags = RESET_COLOR add_overlay(gibz) else + gibz.appearance_flags = RESET_COLOR add_overlay(gibz) add_overlay(gibz2) @@ -31,6 +30,8 @@ var/mob/living/carbon/human/H = L if(H.mind.assigned_role == "Detective") //Gumshoe perks yo playsound(loc, 'sound/effects/gib_step.ogg', 10, 1) + else + playsound(loc, 'sound/effects/gib_step.ogg', H.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) else playsound(loc, 'sound/effects/gib_step.ogg', L.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) . = ..() @@ -48,6 +49,7 @@ var/obj/effect/decal/cleanable/blood/gibs/gibbers = src var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) splat.color = gibbers.blood_color + splat.blood_color = gibbers.blood_color if(!step_to(src, get_step(src, direction), 0)) break diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 1c9dfb9a35..0a4a266874 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -8,10 +8,6 @@ color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere. bloodiness = BLOOD_AMOUNT_PER_DECAL -/obj/effect/decal/cleanable/blood/ComponentInitialize() - . = ..() - AddComponent(/datum/component/forensics) - update_icon() /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) if(bloodiness) @@ -28,21 +24,24 @@ update_icon() /obj/effect/decal/cleanable/blood/update_icon() - GET_COMPONENT(F, /datum/component/forensics) - if(F && istype(F)) - blood_color = F.blood_mix_color + if(!blood_color) + if(reagents.reagent_list.len) + for(var/datum/reagent/R in reagents.reagent_list) + // Get blood data from the blood reagent. + if(istype(R, /datum/reagent/blood)) + if(R.data["blood_type"]) + blood_color = bloodtype_to_color(R.data["blood_type"]) + else if(istype(R, /datum/reagent/liquidgibs)) + if(R.data["blood_type"]) + blood_color = bloodtype_to_color(R.data["blood_type"]) + else + return else - for(var/datum/reagent/R in reagents.reagent_list) - // Get blood data from the blood reagent. - if(istype(R, /datum/reagent/blood)) - if(R.data["blood_type"]) - blood_color = bloodtype_to_color(R.data["blood_type"]) - else if(istype(R, /datum/reagent/liquidgibs)) - if(R.data["blood_type"]) - blood_color = bloodtype_to_color(R.data["blood_type"]) - - color = blood_color + color = blood_color +//obj/effect/decal/cleanable/blood/update_color() + // if(SEND_SIGNAL(COMSIG_BLOOD_COLOR) & COMPONENT_BLOCK_UPDATE_COLOR) + // return /obj/effect/decal/cleanable/blood/old name = "dried blood" @@ -108,9 +107,9 @@ entered_dirs |= H.dir update_icon() - else if(!H.bloodiness) - H.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) - H.bloodiness = max(H.bloodiness - BLOOD_LOSS_IN_SPREAD, 0) + else if(H.bloodiness && H.blood_smear[blood_state]) + H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) + H.bloodiness = H.bloodinessmax H.blood_color = blood_color if (!(entered_dirs & H.dir)) entered_dirs |= H.dir @@ -130,9 +129,9 @@ exited_dirs |= H.dir update_icon() - else if(!H.bloodiness) + else if(H.bloodiness && H.blood_smear[blood_state]) H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) - H.bloodiness = max(H.bloodiness - BLOOD_LOSS_IN_SPREAD, 0) + H.bloodiness = H.bloodinessmax H.blood_color = blood_color if (!(exited_dirs & H.dir)) exited_dirs |= H.dir @@ -143,17 +142,18 @@ for(var/Ddir in GLOB.cardinals) if(entered_dirs & Ddir) - var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]-[color]"] + var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir) + GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir) add_overlay(bloodstep_overlay) if(exited_dirs & Ddir) - var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]-[color]"] + var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"] if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]-[color]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir) + GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir) add_overlay(bloodstep_overlay) alpha = BLOODY_FOOTPRINT_BASE_ALPHA + bloodiness + color = blood_color /obj/effect/decal/cleanable/blood/footprints/tracks/examine(mob/user) @@ -166,8 +166,8 @@ to_chat(user, .) -/obj/effect/decal/cleanable/blood/footprints/tracks/replace_decal(obj/effect/decal/cleanable/C) - if(blood_state != C.blood_state) //We only replace footprints of the same type as us +/obj/effect/decal/cleanable/blood/footprints/tracks/replace_decal(obj/effect/decal/cleanable/blood/footprints/tracks/C) + if(print_state != C.print_state) //We only replace footprints of the same type as us return if(color != C.color) return @@ -178,12 +178,18 @@ return TRUE return FALSE -/obj/effect/decal/cleanable/blood/footprints/tracks/footprints +/obj/effect/decal/cleanable/blood/footprints/tracks/shoe name = "footprints" desc = "They look like tracks left by footwear." icon_state = FOOTPRINT_SHOE print_state = FOOTPRINT_SHOE +/obj/effect/decal/cleanable/blood/footprints/tracks/foot + name = "footprints" + desc = "They look like tracks left by a bare foot." + icon_state = FOOTPRINT_FOOT + print_state = FOOTPRINT_FOOT + /obj/effect/decal/cleanable/blood/footprints/tracks/snake name = "tracks" desc = "They look like tracks left by a giant snake." @@ -191,14 +197,14 @@ print_state = FOOTPRINT_SNAKE /obj/effect/decal/cleanable/blood/footprints/tracks/paw - name = "tracks" - desc = "They look like tracks left by mammalian paws." + name = "footprints" + desc = "They look like tracks left by paws." icon_state = FOOTPRINT_PAW print_state = FOOTPRINT_PAW /obj/effect/decal/cleanable/blood/footprints/tracks/claw - name = "tracks" - desc = "They look like tracks left by reptilian claws." + name = "footprints" + desc = "They look like tracks left by claws." icon_state = FOOTPRINT_CLAW print_state = FOOTPRINT_CLAW diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 4d6253d0b0..88eb8e9ad4 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -111,6 +111,9 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/list/grind_results //A reagent list containing the reagents this item produces when ground up in a grinder - this can be an empty list to allow for reagent transferring only var/list/juice_results //A reagent list containing blah blah... but when JUICED in a grinder! + //Blood overlay things + var/blood_color + /obj/item/Initialize() materials = typelist("materials", materials) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index f79bf5c567..922f37b270 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -41,7 +41,6 @@ var/dynamic_hair_suffix = ""//head > mask for head hair var/dynamic_fhair_suffix = ""//mask > head for facial hair - var/blood_color = BLOOD_COLOR_HUMAN var/blood_state = BLOOD_STATE_NOT_BLOODY var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index 4c6131644c..4aec17fafe 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -17,6 +17,8 @@ var/adjusted = NORMAL_STYLE mutantrace_variation = MUTANTRACE_VARIATION + var/move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/shoe + /obj/item/clothing/shoes/ComponentInitialize() . = ..() AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood))) diff --git a/code/modules/detectivework/detective_work.dm b/code/modules/detectivework/detective_work.dm index c892bfeffc..0b1d6807bf 100644 --- a/code/modules/detectivework/detective_work.dm +++ b/code/modules/detectivework/detective_work.dm @@ -25,6 +25,16 @@ if(D) . = D.fibers +/atom/proc/return_blood_mix_types() + GET_COMPONENT(D, /datum/component/forensics) + if(D) + . = D.blood_mix_types + +/atom/proc/return_blood_mix_color() + GET_COMPONENT(D, /datum/component/forensics) + if(D) + . = D.blood_mix_color + /atom/proc/add_fingerprint_list(list/fingerprints) //ASSOC LIST FINGERPRINT = FINGERPRINT if(length(fingerprints)) . = AddComponent(/datum/component/forensics, fingerprints) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index be6d2196e0..95139f75ee 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -44,6 +44,7 @@ var/bleedsuppress = 0 //for stopping bloodloss, eventually this will be limb-based like bleeding var/bloodiness = 0 + var/bloodinessmax = 5 var/blood_state = BLOOD_STATE_NOT_BLOODY var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) var/blood_color //For blood smearing stuff diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 1135a592e1..b2592ae157 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -46,110 +46,61 @@ for(var/datum/mutation/human/HM in dna.mutations) HM.on_move(src, NewLoc) - if(shoes) - if(!lying && !buckled) - if(loc == NewLoc) - if(!has_gravity(loc)) - return - var/obj/item/clothing/shoes/S = shoes - - //Bloody footprints - var/turf/T = get_turf(src) - if(S.blood_smear && S.blood_smear[S.blood_state]) - var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks) in T - if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == color)) - return - S.blood_smear[S.blood_state] = max(0, S.blood_smear[S.blood_state]-BLOOD_LOSS_PER_STEP) - var/obj/effect/decal/cleanable/blood/footprints/tracks/footprints/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/footprints(T) - FP.icon_state = FOOTPRINT_SHOE - FP.print_state = FOOTPRINT_SHOE - FP.blood_state = S.blood_state - FP.blood_color = S.blood_color - FP.entered_dirs |= dir - FP.bloodiness = S.blood_smear[S.blood_state] - FP.update_icon() - update_inv_shoes() - //End bloody footprints - - S.step_action() - - else - if(!buckled) + if(!buckled) + if(shoes) if(!lying) if(loc == NewLoc) if(!has_gravity(loc)) return + var/obj/item/clothing/shoes/S = shoes + //Bloody footprints var/turf/T = get_turf(src) - var/mob/living/carbon/human/H = src - if(H.bloodiness) - var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks) in T - if(oldFP && (oldFP.blood_state == blood_state && oldFP.color == color)) + if(S.blood_smear && S.blood_smear[S.blood_state]) + var/obj/effect/decal/cleanable/blood/footprints/tracks/shoe/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks/shoe) in T + if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == S.blood_color)) return - else - var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks(T) - if(DIGITIGRADE in dna.species.species_traits) - if(dna.species.id == ("lizard" || "ashwalker" || "xeno")) - FP.icon_state = FOOTPRINT_CLAW - FP.print_state = FOOTPRINT_CLAW - else if(dna.species.id == "Mammal") - FP.icon_state = FOOTPRINT_PAW - FP.print_state = FOOTPRINT_PAW - else - FP.icon_state = FOOTPRINT_SHOE - FP.print_state = FOOTPRINT_SHOE - else if(("taur" in dna.species.mutant_bodyparts) && (dna.features["taur"] != "None")) - if(dna.features["taur"] in GLOB.noodle_taurs) - FP.icon_state = FOOTPRINT_SNAKE - FP.print_state = FOOTPRINT_SNAKE - else if(dna.features["taur"] in GLOB.paw_taurs) - FP.icon_state = FOOTPRINT_PAW - FP.print_state = FOOTPRINT_PAW - else - FP.icon_state = FOOTPRINT_SHOE - FP.print_state = FOOTPRINT_SHOE - FP.add_blood_DNA(return_blood_DNA()) - FP.blood_color = H.blood_color - FP.update_icon() - var/newdir = get_dir(T, loc) - if(newdir == dir) - FP.setDir(newdir) - else - newdir = newdir | dir - if(newdir == 3) - newdir = 1 - else if(newdir == 12) - newdir = 4 - FP.setDir(newdir) - bloodiness-- + S.blood_smear[S.blood_state] = max(0, S.blood_smear[S.blood_state]-BLOOD_LOSS_PER_STEP) + var/obj/effect/decal/cleanable/blood/footprints/tracks/shoe/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/shoe(T) + FP.icon_state = FOOTPRINT_SHOE + FP.print_state = FOOTPRINT_SHOE + FP.blood_state = S.blood_state + FP.blood_color = S.blood_color + FP.entered_dirs |= dir + FP.bloodiness = S.blood_smear[S.blood_state] + FP.update_icon() + update_inv_shoes() + //End bloody footprints - else //we're on the floor, smear some stuff around - if(loc == NewLoc) - if(!has_gravity(loc)) + S.step_action() + else + if(loc == NewLoc) + if(!has_gravity(loc)) + return + var/turf/T = get_turf(src) + var/step_print = dna.species.get_move_trail(src) + if(bloodiness && blood_smear[blood_state]) + var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(step_print) in T + if(oldFP && (oldFP.blood_state == blood_state && oldFP == dna.species.move_trail && oldFP.blood_color == blood_color)) return - var/turf/T = get_turf(src) - var/mob/living/carbon/human/H = src - if(bloodiness) - var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks) in T - if(oldFP && (oldFP.blood_state == blood_state && oldFP.color == color)) - return - else - var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/body(T) - FP.icon_state = FOOTPRINT_DRAG - FP.print_state = FOOTPRINT_DRAG - FP.add_blood_DNA(return_blood_DNA()) - FP.blood_color = H.blood_color - FP.update_icon() - var/newdir = get_dir(T, loc) - if(newdir == dir) - FP.setDir(newdir) - else - newdir = newdir | dir - if(newdir == 3) - newdir = 1 - else if(newdir == 12) - newdir = 4 - FP.setDir(newdir) - bloodiness-- + else + var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new step_print(T) + if(("taur" in dna.species.mutant_bodyparts) && (dna.features["taur"] != "None") && !lying) + if(dna.features["taur"] in GLOB.noodle_taurs) + FP.icon_state = FOOTPRINT_SNAKE + FP.print_state = FOOTPRINT_SNAKE + else if(dna.features["taur"] in GLOB.paw_taurs) + FP.icon_state = FOOTPRINT_PAW + FP.print_state = FOOTPRINT_PAW + if(!dna.species.move_trail && !lying) //we're assuming people have their chosen snowflake on, so. + FP.icon_state = FOOTPRINT_SHOE + FP.print_state = FOOTPRINT_SHOE + + FP.add_blood_DNA(return_blood_DNA()) + FP.blood_color = blood_color + FP.entered_dirs |= dir + FP.bloodiness = blood_smear[blood_state] + FP.update_icon() + bloodiness-- /mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee. if(dna.species.space_move(src)) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index d3eb4bafa0..e34d17163b 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -77,7 +77,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/fixed_mut_color3 = "" var/whitelisted = 0 //Is this species restricted to certain players? var/whitelist = list() //List the ckeys that can use this species, if it's whitelisted.: list("John Doe", "poopface666", "SeeALiggerPullTheTrigger") Spaces & capitalization can be included or ignored entirely for each key as it checks for both. - + var/obj/effect/decal/cleanable/blood/footprints/tracks/move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/shoe // What marks are left when walking /////////// // PROCS // @@ -927,6 +927,15 @@ GLOBAL_LIST_EMPTY(roundstart_races) return "TAUR" //END EDIT +// Impliments different trails for species depending on if they're wearing shoes. +/datum/species/proc/get_move_trail(var/mob/living/carbon/human/H) + if(H.lying) + return /obj/effect/decal/cleanable/blood/footprints/tracks/body + if(H.shoes || (H.wear_suit && (H.wear_suit.body_parts_covered & FEET))) + var/obj/item/clothing/shoes/shoes = (H.wear_suit && (H.wear_suit.body_parts_covered & FEET)) ? H.wear_suit : H.shoes // suits take priority over shoes + return shoes.move_trail + else + return move_trail /datum/species/proc/spec_life(mob/living/carbon/human/H) if(H.has_trait(TRAIT_NOBREATH)) diff --git a/code/modules/mob/living/carbon/human/species_types/angel.dm b/code/modules/mob/living/carbon/human/species_types/angel.dm index 5122294956..92798c8bc7 100644 --- a/code/modules/mob/living/carbon/human/species_types/angel.dm +++ b/code/modules/mob/living/carbon/human/species_types/angel.dm @@ -10,6 +10,7 @@ blacklisted = 1 limbs_id = "human" skinned_type = /obj/item/stack/sheet/animalhide/human + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot var/datum/action/innate/flight/fly diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index 96b43795a2..d3288e1cd1 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -9,6 +9,7 @@ skinned_type = /obj/item/stack/sheet/animalhide/human disliked_food = GROSS | RAW liked_food = JUNKFOOD | FRIED + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/human/qualifies_for_rank(rank, list/features) return TRUE //Pure humans are always allowed in all roles. diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 5c8c082d47..ea7a20163a 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -10,6 +10,7 @@ inherent_traits = list(TRAIT_TOXINLOVER) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime exotic_blood = "jellyblood" + exotic_bloodtype = "GEL" damage_overlay_type = "" var/datum/action/innate/regenerate_limbs/regenerate_limbs var/datum/action/innate/slime_change/slime_change //CIT CHANGE @@ -17,6 +18,7 @@ coldmod = 6 // = 3x cold damage heatmod = 0.5 // = 1/4x heat damage burnmod = 0.5 // = 1/2x generic burn damage + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/jelly/on_species_loss(mob/living/carbon/C) if(regenerate_limbs) @@ -119,7 +121,7 @@ name = "Slimeperson" id = "slime" default_color = "00FFFF" - species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD) + species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR) say_mod = "says" hair_color = "mutcolor" hair_alpha = 150 diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index c5a64ebd13..ba4d8b8781 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -73,6 +73,7 @@ /datum/species/lizard/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Digitigrade Legs") species_traits += DIGITIGRADE + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(FALSE) return ..() @@ -80,6 +81,7 @@ /datum/species/lizard/on_species_loss(mob/living/carbon/human/C, datum/species/new_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Normal Legs") species_traits -= DIGITIGRADE + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(TRUE) @@ -95,6 +97,7 @@ mutantlungs = /obj/item/organ/lungs/ashwalker burnmod = 0.9 brutemod = 0.9 + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw /datum/species/lizard/ashwalker/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) if((C.dna.features["spines"] != "None" ) && (C.dna.features["tail"] == "None")) //tbh, it's kinda ugly for them not to have a tail yet have floating spines diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index d15d989384..4c2c360c68 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -15,6 +15,7 @@ disliked_food = FRUIT | GROSS toxic_food = MEAT | RAW mutanteyes = /obj/item/organ/eyes/moth + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw /datum/species/moth/on_species_gain(mob/living/carbon/C) . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index 6f5ae6f4eb..9fae5a21ea 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -21,6 +21,7 @@ var/internal_fire = FALSE //If the bones themselves are burning clothes won't help you much disliked_food = FRUIT liked_food = VEGETABLES + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/plasmaman/spec_life(mob/living/carbon/human/H) var/datum/gas_mixture/environment = H.loc.return_air() diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 3e238f8a53..cfbe16bfbf 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -12,6 +12,7 @@ meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/plant disliked_food = MEAT | DAIRY liked_food = VEGETABLES | FRUIT | GRAIN + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/pod/on_species_gain(mob/living/carbon/C, datum/species/old_species) . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index d778aa50f2..25967dd0c3 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -13,6 +13,7 @@ damage_overlay_type = ""//let's not show bloody wounds or burns over bones. disliked_food = NONE liked_food = GROSS | MEAT | RAW + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/skeleton/check_roundstart_eligible() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index 504dbb514b..e2c8ffb9c3 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -15,6 +15,7 @@ var/static/list/spooks = list('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/wail.ogg') disliked_food = NONE liked_food = GROSS | MEAT | RAW + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/zombie/check_roundstart_eligible() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) @@ -47,7 +48,7 @@ /datum/species/zombie/infectious/spec_life(mob/living/carbon/C) . = ..() C.a_intent = INTENT_HARM // THE SUFFERING MUST FLOW - + //Zombies never actually die, they just fall down until they regenerate enough to rise back up. //They must be restrained, beheaded or gibbed to stop being a threat. if(regen_cooldown < world.time) @@ -58,7 +59,7 @@ C.adjustToxLoss(-heal_amt) if(!C.InCritical() && prob(4)) playsound(C, pick(spooks), 50, TRUE, 10) - + //Congrats you somehow died so hard you stopped being a zombie /datum/species/zombie/infectious/spec_death(mob/living/carbon/C) . = ..() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 85d73d6a6e..d91b675e22 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1,5 +1,5 @@ /datum/reagent/blood - data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"= "O+","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Blood" id = "blood" color = BLOOD_COLOR_HUMAN // rgb: 200, 0, 0 @@ -182,7 +182,7 @@ description = "You don't even want to think about what's in here." taste_description = "gross iron" shot_glass_icon_state = "shotglassred" - data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"= "O+","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) /datum/reagent/liquidgibs/xeno name = "Liquid xeno gibs" diff --git a/icons/effects/fluidtracks.dmi b/icons/effects/fluidtracks.dmi index 6579334e87a3948321a20941478925e3ea182fd1..e2f0c97479a3d5401fe8f178e34c1ad3aa6e0802 100644 GIT binary patch literal 13833 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 literal 13404 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 Date: Wed, 22 May 2019 04:10:29 -0500 Subject: [PATCH 036/469] reverts forensics components. If I can't figure it out, MURDER IT --- code/__DEFINES/cleaning.dm | 5 - code/__DEFINES/forensics.dm | 2 - code/datums/components/cleaning.dm | 22 +- code/datums/components/decals/blood.dm | 40 ---- code/datums/components/forensics.dm | 213 ------------------ code/game/atoms.dm | 143 ++++++++++-- code/game/machinery/suit_storage_unit.dm | 3 +- code/game/machinery/washing_machine.dm | 9 +- code/game/objects/effects/decals/cleanable.dm | 6 +- .../effects/decals/cleanable/aliens.dm | 15 +- .../objects/effects/decals/cleanable/gibs.dm | 3 +- .../effects/decals/cleanable/humans.dm | 45 ++-- .../objects/effects/spawners/gibspawner.dm | 4 +- .../temporary_visuals/miscellaneous.dm | 2 +- code/game/objects/items.dm | 11 + code/game/objects/items/clown_items.dm | 2 +- .../objects/items/devices/radio/intercom.dm | 2 +- code/game/objects/items/melee/energy.dm | 2 +- code/game/objects/items/melee/misc.dm | 2 +- code/game/objects/items/mop.dm | 2 +- code/game/objects/items/stacks/stack.dm | 8 +- code/game/objects/items/storage/book.dm | 2 +- code/game/objects/items/twohanded.dm | 2 +- code/game/objects/structures/watercloset.dm | 16 +- code/game/turfs/open.dm | 2 +- .../devil/true_devil/_true_devil.dm | 6 +- .../antagonists/wizard/equipment/artefact.dm | 5 +- code/modules/clothing/clothing.dm | 7 + code/modules/clothing/gloves/_gloves.dm | 14 +- code/modules/clothing/head/_head.dm | 5 +- code/modules/clothing/masks/_masks.dm | 5 +- code/modules/clothing/neck/_neck.dm | 4 +- code/modules/clothing/shoes/_shoes.dm | 15 +- code/modules/clothing/suits/_suits.dm | 7 +- code/modules/clothing/under/_under.dm | 5 +- code/modules/detectivework/detective_work.dm | 202 ++++++++--------- .../detectivework/footprints_and_rag.dm | 7 +- code/modules/detectivework/scanner.dm | 22 +- code/modules/mob/living/blood.dm | 7 +- code/modules/mob/living/carbon/examine.dm | 15 +- .../mob/living/carbon/human/examine.dm | 72 ++++-- code/modules/mob/living/carbon/human/human.dm | 26 ++- .../mob/living/carbon/human/human_defines.dm | 2 + .../mob/living/carbon/human/human_helpers.dm | 6 + .../mob/living/carbon/human/human_movement.dm | 63 +++--- .../mob/living/simple_animal/bot/mulebot.dm | 6 +- .../simple_animal/friendly/drone/_drone.dm | 16 +- .../simple_animal/guardian/types/dextrous.dm | 10 +- .../mob/living/simple_animal/hostile/alien.dm | 2 +- code/modules/projectiles/guns/ballistic.dm | 2 +- code/modules/projectiles/projectile.dm | 13 +- .../projectiles/projectile/bullets/smg.dm | 14 +- .../chemistry/reagents/other_reagents.dm | 24 +- .../reagents/reagent_containers/blood_pack.dm | 8 +- icons/mob/dam_mob.dmi | Bin 16165 -> 16184 bytes .../objects/items/melee/eutactic_blades.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 2 +- .../modules/reagents/reagents/cit_reagents.dm | 17 +- 58 files changed, 551 insertions(+), 623 deletions(-) delete mode 100644 code/__DEFINES/forensics.dm delete mode 100644 code/datums/components/decals/blood.dm delete mode 100644 code/datums/components/forensics.dm diff --git a/code/__DEFINES/cleaning.dm b/code/__DEFINES/cleaning.dm index c4db590e90..6049fd7918 100644 --- a/code/__DEFINES/cleaning.dm +++ b/code/__DEFINES/cleaning.dm @@ -5,8 +5,3 @@ #define CLEAN_STRONG 4 // Industrial strength #define CLEAN_IMPRESSIVE 5 // Cleaning strong enough your granny would be proud #define CLEAN_GOD 6 // Cleans things spotless down to the atomic structure - -//How strong things have to be to wipe forensic evidence... -#define CLEAN_STRENGTH_FINGERPRINTS CLEAN_IMPRESSIVE -#define CLEAN_STRENGTH_BLOOD CLEAN_WEAK -#define CLEAN_STRENGTH_FIBERS CLEAN_IMPRESSIVE diff --git a/code/__DEFINES/forensics.dm b/code/__DEFINES/forensics.dm deleted file mode 100644 index bb512edcde..0000000000 --- a/code/__DEFINES/forensics.dm +++ /dev/null @@ -1,2 +0,0 @@ -#define IF_HAS_BLOOD_DNA(__thing) GET_COMPONENT_FROM(__FR##__thing, /datum/component/forensics, __thing); if(__FR##__thing && length(__FR##__thing.blood_DNA)) -#define IF_HAS_BLOOD_DNA_AND(__thing, __conditions...) GET_COMPONENT_FROM(__FR##__thing, /datum/component/forensics, __thing); if(__FR##__thing && length(__FR##__thing.blood_DNA) && (##__conditions)) diff --git a/code/datums/components/cleaning.dm b/code/datums/components/cleaning.dm index 05c26efcc1..08ac57b79a 100644 --- a/code/datums/components/cleaning.dm +++ b/code/datums/components/cleaning.dm @@ -12,28 +12,28 @@ if(!isturf(tile)) return - SEND_SIGNAL(tile, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + tile.clean_blood() for(var/A in tile) if(is_cleanable(A)) qdel(A) - else if(istype(A, /obj/item)) - var/obj/item/I = A - SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - if(ismob(I.loc)) - var/mob/M = I.loc + else if(isitem(A)) + var/obj/item/cleaned_item = A + cleaned_item.clean_blood() + if(ismob(cleaned_item.loc)) + var/mob/M = cleaned_item.loc M.regenerate_icons() else if(ishuman(A)) var/mob/living/carbon/human/cleaned_human = A if(cleaned_human.lying) if(cleaned_human.head) - SEND_SIGNAL(cleaned_human.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + cleaned_human.head.clean_blood() if(cleaned_human.wear_suit) - SEND_SIGNAL(cleaned_human.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + cleaned_human.wear_suit.clean_blood() else if(cleaned_human.w_uniform) - SEND_SIGNAL(cleaned_human.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + cleaned_human.w_uniform.clean_blood() if(cleaned_human.shoes) - SEND_SIGNAL(cleaned_human.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - SEND_SIGNAL(cleaned_human, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + cleaned_human.shoes.clean_blood() + cleaned_human.clean_blood() cleaned_human.wash_cream() cleaned_human.regenerate_icons() to_chat(cleaned_human, "[AM] cleans your face!") diff --git a/code/datums/components/decals/blood.dm b/code/datums/components/decals/blood.dm deleted file mode 100644 index 3daa4b5944..0000000000 --- a/code/datums/components/decals/blood.dm +++ /dev/null @@ -1,40 +0,0 @@ -/datum/component/decal/blood - dupe_mode = COMPONENT_DUPE_UNIQUE - -/datum/component/decal/blood/Initialize(_icon, _icon_state, _dir, _cleanable=CLEAN_STRENGTH_BLOOD, _color, _layer=ABOVE_OBJ_LAYER) - if(!isitem(parent)) - return COMPONENT_INCOMPATIBLE - . = ..() - RegisterSignal(parent, COMSIG_ATOM_GET_EXAMINE_NAME, .proc/get_examine_name) - -/datum/component/decal/blood/generate_appearance(_icon, _icon_state, _dir, _layer, _color) - var/obj/item/I = parent - if(!_icon) - _icon = 'icons/effects/blood.dmi' - if(!_icon_state) - _icon_state = "itemblood" - var/icon = initial(I.icon) - var/icon_state = initial(I.icon_state) - if(!icon || !icon_state) - // It's something which takes on the look of other items, probably - icon = I.icon - icon_state = I.icon_state - var/static/list/blood_splatter_appearances = list() - //try to find a pre-processed blood-splatter. otherwise, make a new one - var/index = "[REF(icon)]-[icon_state]" - pic = blood_splatter_appearances[index] - - if(!pic) - var/icon/blood_splatter_icon = icon(initial(I.icon), initial(I.icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object - blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) - blood_splatter_icon.Blend(icon(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant - pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state)) - pic.color = I.blood_color //add the blood's color with DNA information - blood_splatter_appearances[index] = pic - return TRUE - -/datum/component/decal/blood/proc/get_examine_name(datum/source, mob/user, list/override) - var/atom/A = parent - override[EXAMINE_POSITION_ARTICLE] = A.gender == PLURAL? "some" : "a" - override[EXAMINE_POSITION_BEFORE] = " blood-stained " - return COMPONENT_EXNAME_CHANGED \ No newline at end of file diff --git a/code/datums/components/forensics.dm b/code/datums/components/forensics.dm deleted file mode 100644 index 4ee8b93cc7..0000000000 --- a/code/datums/components/forensics.dm +++ /dev/null @@ -1,213 +0,0 @@ -/datum/component/forensics - dupe_mode = COMPONENT_DUPE_UNIQUE - can_transfer = TRUE - var/list/fingerprints //assoc print = print - var/list/hiddenprints //assoc ckey = realname/gloves/ckey - var/list/blood_DNA //assoc dna = bloodtype - var/list/fibers //assoc print = print - var/list/blood_mix_types // data("[blood_type]" = sting list - var/blood_mix_color - -/datum/component/forensics/InheritComponent(datum/component/forensics/F, original) //Use of | and |= being different here is INTENTIONAL. - fingerprints = fingerprints | F.fingerprints - hiddenprints = hiddenprints | F.hiddenprints - blood_DNA = blood_DNA | F.blood_DNA - fibers = fibers | F.fibers - blood_mix_types = blood_mix_types | F.blood_mix_types - blood_mix_color = blood_mix_color | F.blood_mix_color - check_blood() - return ..() - -/datum/component/forensics/Initialize(new_fingerprints, new_hiddenprints, new_blood_DNA, new_fibers, new_blood_mix_types, new_blood_mix_color) - if(!isatom(parent)) - return COMPONENT_INCOMPATIBLE - fingerprints = new_fingerprints - hiddenprints = new_hiddenprints - blood_DNA = new_blood_DNA - fibers = new_fibers - blood_mix_types = new_blood_mix_types - blood_mix_color = new_blood_mix_color - check_blood() - -/datum/component/forensics/RegisterWithParent() - check_blood() - RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_act) -// RegisterSignal(parent, COMSIG_BLOOD_COLOR, .proc/ - -/datum/component/forensics/UnregisterFromParent() - UnregisterSignal(parent, list(COMSIG_COMPONENT_CLEAN_ACT)) - -/datum/component/forensics/PostTransfer() - if(!isatom(parent)) - return COMPONENT_INCOMPATIBLE - -/datum/component/forensics/proc/wipe_fingerprints() - fingerprints = null - return TRUE - -/datum/component/forensics/proc/wipe_hiddenprints() - return //no. - -/datum/component/forensics/proc/wipe_blood_DNA() - blood_DNA = null - blood_mix_types = null - blood_mix_color = null - return TRUE - -/datum/component/forensics/proc/wipe_fibers() - fibers = null - return TRUE - -/datum/component/forensics/proc/clean_act(datum/source, strength) - if(strength >= CLEAN_STRENGTH_FINGERPRINTS) - wipe_fingerprints() - if(strength >= CLEAN_STRENGTH_BLOOD) - wipe_blood_DNA() - if(strength >= CLEAN_STRENGTH_FIBERS) - wipe_fibers() - -/datum/component/forensics/proc/add_fingerprint_list(list/_fingerprints) //list(text) - if(!length(_fingerprints)) - return - LAZYINITLIST(fingerprints) - for(var/i in _fingerprints) //We use an associative list, make sure we don't just merge a non-associative list into ours. - fingerprints[i] = i - return TRUE - -/datum/component/forensics/proc/add_fingerprint(mob/living/M, ignoregloves = FALSE) - if(!M) - return - add_hiddenprint(M) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - add_fibers(H) - if(H.gloves) //Check if the gloves (if any) hide fingerprints - var/obj/item/clothing/gloves/G = H.gloves - if(G.transfer_prints) - ignoregloves = TRUE - if(!ignoregloves) - H.gloves.add_fingerprint(H, TRUE) //ignoregloves = 1 to avoid infinite loop. - return - var/full_print = md5(H.dna.uni_identity) - LAZYSET(fingerprints, full_print, full_print) - return TRUE - -/datum/component/forensics/proc/add_fiber_list(list/_fibertext) //list(text) - if(!length(_fibertext)) - return - LAZYINITLIST(fibers) - for(var/i in _fibertext) //We use an associative list, make sure we don't just merge a non-associative list into ours. - fibers[i] = i - return TRUE - -/datum/component/forensics/proc/add_fibers(mob/living/carbon/human/M) - var/fibertext - var/item_multiplier = isitem(src)?1.2:1 - if(M.wear_suit) - fibertext = "Material from \a [M.wear_suit]." - if(prob(10*item_multiplier) && !LAZYACCESS(fibers, fibertext)) - LAZYSET(fibers, fibertext, fibertext) - if(!(M.wear_suit.body_parts_covered & CHEST)) - if(M.w_uniform) - fibertext = "Fibers from \a [M.w_uniform]." - if(prob(12*item_multiplier) && !LAZYACCESS(fibers, fibertext)) //Wearing a suit means less of the uniform exposed. - LAZYSET(fibers, fibertext, fibertext) - if(!(M.wear_suit.body_parts_covered & HANDS)) - if(M.gloves) - fibertext = "Material from a pair of [M.gloves.name]." - if(prob(20*item_multiplier) && !LAZYACCESS(fibers, fibertext)) - LAZYSET(fibers, fibertext, fibertext) - else if(M.w_uniform) - fibertext = "Fibers from \a [M.w_uniform]." - if(prob(15*item_multiplier) && !LAZYACCESS(fibers, fibertext)) - // "Added fibertext: [fibertext]" - LAZYSET(fibers, fibertext, fibertext) - if(M.gloves) - fibertext = "Material from a pair of [M.gloves.name]." - if(prob(20*item_multiplier) && !LAZYACCESS(fibers, fibertext)) - LAZYSET(fibers, fibertext, fibertext) - else if(M.gloves) - fibertext = "Material from a pair of [M.gloves.name]." - if(prob(20*item_multiplier) && !LAZYACCESS(fibers, fibertext)) - LAZYSET(fibers, fibertext, fibertext) - return TRUE - -/datum/component/forensics/proc/add_hiddenprint_list(list/_hiddenprints) //list(ckey = text) - if(!length(_hiddenprints)) - return - LAZYINITLIST(hiddenprints) - for(var/i in _hiddenprints) //We use an associative list, make sure we don't just merge a non-associative list into ours. - hiddenprints[i] = _hiddenprints[i] - return TRUE - -/datum/component/forensics/proc/add_hiddenprint(mob/living/M) - if(!M || !M.key) - return - var/hasgloves = "" - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.gloves) - hasgloves = "(gloves)" - var/current_time = TIME_STAMP("hh:mm:ss", FALSE) - if(!LAZYACCESS(hiddenprints, M.key)) - LAZYSET(hiddenprints, M.key, "First: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]") - else - var/laststamppos = findtext(LAZYACCESS(hiddenprints, M.key), " Last: ") - if(laststamppos) - LAZYSET(hiddenprints, M.key, copytext(hiddenprints[M.key], 1, laststamppos)) - hiddenprints[M.key] += " Last: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]" //made sure to be existing by if(!LAZYACCESS);else - var/atom/A = parent - A.fingerprintslast = M.ckey - return TRUE - -/datum/component/forensics/proc/add_blood_DNA(list/dna) //list(dna_enzymes = type) - if(!length(dna)) - return - LAZYINITLIST(blood_DNA) - LAZYINITLIST(blood_mix_types) - for(var/i in dna) - blood_DNA[i] = dna[i] - for(var/type in blood_DNA) - if(type in blood_DNA[type]) - blood_mix_types += blood_DNA[type] - - blood_list_check(blood_mix_types) - check_blood() - return TRUE - -/datum/component/forensics/proc/check_blood() - if(!isitem(parent) || !ismob(parent)) - return - if(!length(blood_DNA)) - return - -/datum/component/forensics/proc/blood_list_check(list/blood_types, blood_type) //This is a messy attempt at trying to reduce lists of items and mobs with blood colors on them - if(blood_type in GLOB.regular_bloods) - blood_type = "A+" //generic so we don't have 8 different types of human blood - if(blood_type in blood_mix_types) - return - else - LAZYADD(blood_mix_types, blood_type) - - if(blood_mix_types.len) - blood_DNA_to_color(blood_mix_types) - else - return - -/datum/component/forensics/proc/blood_DNA_to_color(list/bloods) - var/final_rgb = "#940000" //We default to red just in case - if(bloods.len) - var/sum = 0 //this is all shitcode, but it works; trust me - final_rgb = bloodtype_to_color(bloods[1]) - sum = bloods[bloods[1]] - if(bloods.len > 1) - var/i = 2 - while(i <= bloods.len) - var/tmp = bloods[bloods[i]] - final_rgb = BlendRGB(final_rgb, bloodtype_to_color(bloods[i]), tmp/(tmp+sum)) - sum += tmp - i++ - else - final_rgb = BlendRGB(final_rgb, bloodtype_to_color(bloods)) - - blood_mix_color = final_rgb diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 0ba8d7411b..50f6cdf968 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -36,6 +36,9 @@ var/rad_insulation = RAD_NO_INSULATION var/icon/blood_splatter_icon + var/list/fingerprints + var/list/fingerprintshidden + var/list/blood_DNA /atom/New(loc, ...) //atom creation method that preloads variables at creation @@ -244,23 +247,22 @@ return TRUE return FALSE -/atom/proc/get_examine_name(mob/user) - . = "\a [src]" - var/list/override = list(gender == PLURAL ? "some" : "a", " ", "[name]") - if(article) - . = "[article] [src]" - override[EXAMINE_POSITION_ARTICLE] = article - if(SEND_SIGNAL(src, COMSIG_ATOM_GET_EXAMINE_NAME, user, override) & COMPONENT_EXNAME_CHANGED) - . = override.Join("") - -/atom/proc/get_examine_string(mob/user, thats = FALSE) - . = "[icon2html(src, user)] [thats? "That's ":""][get_examine_name(user)]" - /atom/proc/examine(mob/user) - to_chat(user, get_examine_string(user, TRUE)) + //This reformat names to get a/an properly working on item descriptions when they are bloody + var/f_name = "\a [src]." + if(src.blood_DNA && !istype(src, /obj/effect/decal)) + if(gender == PLURAL) + f_name = "some " + else + f_name = "a " + f_name += "blood-stained [name]!" + + to_chat(user, "[icon2html(src, user)] That's [f_name]") if(desc) to_chat(user, desc) + // *****RM + //to_chat(user, "[name]: Dn:[density] dir:[dir] cont:[contents] icon:[icon] is:[icon_state] loc:[loc]") if(reagents) if(container_type & TRANSPARENT) @@ -282,8 +284,6 @@ else to_chat(user, "It's empty.") - SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user) - /atom/proc/relaymove(mob/user) if(buckle_message_cooldown <= world.time) buckle_message_cooldown = world.time + 50 @@ -345,18 +345,123 @@ var/new_blood_dna = L.get_blood_dna_list() if(!new_blood_dna) return FALSE - var/old_length = blood_DNA_length() - add_blood_DNA(new_blood_dna) - if(blood_DNA_length() == old_length) + if(!blood_DNA) //if our list of DNA doesn't exist yet, initialise it. + blood_DNA = list() + var/old_length = blood_DNA.len + blood_DNA |= new_blood_dna + if(blood_DNA.len == old_length) return FALSE return TRUE +//to add blood dna info to the object's blood_DNA list +/atom/proc/transfer_blood_dna(list/blood_dna) + if(!blood_DNA) + blood_DNA = list() + var/old_length = blood_DNA.len + blood_DNA |= blood_dna + if(blood_DNA.len > old_length) + return TRUE//some new blood DNA was added + + //to add blood from a mob onto something, and transfer their dna info /atom/proc/add_mob_blood(mob/living/M) var/list/blood_dna = M.get_blood_dna_list() if(!blood_dna) return FALSE - return add_blood_DNA(blood_dna) + return add_blood(blood_dna) + +//to add blood onto something, with blood dna info to include. +/atom/proc/add_blood(list/blood_dna) + return FALSE + +/obj/add_blood(list/blood_dna) + return transfer_blood_dna(blood_dna) + +/obj/item/add_blood(list/blood_dna) + if(!..()) + return FALSE + add_blood_overlay() + return TRUE //we applied blood to the item + +/obj/item/proc/add_blood_overlay() + if(!blood_DNA.len) + return + if(initial(icon) && initial(icon_state)) + blood_splatter_icon = icon(initial(icon), initial(icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object + blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) + blood_splatter_icon.Blend(icon('icons/effects/blood.dmi', "itemblood"), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant + blood_splatter_icon.Blend(blood_DNA_to_color(), ICON_MULTIPLY) + add_overlay(blood_splatter_icon) + +/obj/item/clothing/gloves/add_blood(mob/living/carbon/M) + . = ..() + transfer_blood = rand(2, 4) + return TRUE + +/obj/item/clothing/shoes/add_blood(mob/living/carbon/M) + . = ..() + transfer_blood = rand(2, 4) + return TRUE + +/turf/add_blood(list/blood_dna) + var/obj/effect/decal/cleanable/blood/splatter/B = locate() in src + if(!B) + B = new /obj/effect/decal/cleanable/blood/splatter(src) + B.transfer_blood_dna(blood_dna) //give blood info to the blood decal. + return TRUE //we bloodied the floor + +/mob/living/carbon/human/add_blood(list/blood_dna) + if(wear_suit) + wear_suit.add_blood(blood_dna) + update_inv_wear_suit() + else if(w_uniform) + w_uniform.add_blood(blood_dna) + update_inv_w_uniform() + if(gloves) + var/obj/item/clothing/gloves/G = gloves + G.add_blood(blood_dna) + else + transfer_blood_dna(blood_dna) + bloody_hands = rand(2, 4) + update_inv_gloves() //handles bloody hands overlays and updating + if(shoes) + var/obj/item/clothing/shoes/S = shoes + S.add_blood(blood_dna) + else + transfer_blood_dna(blood_dna) + bloody_feet = rand(2, 4) + update_inv_shoes() // get them feet messy for prints! + return TRUE + +/atom/proc/clean_blood() + if(islist(blood_DNA)) + blood_DNA = null + return TRUE + +/atom/proc/blood_DNA_to_color() + var/list/colors = list()//first we make a list of all bloodtypes present + for(var/bloop in blood_DNA) + if(colors[blood_DNA[bloop]]) + colors[blood_DNA[bloop]]++ + else + colors[blood_DNA[bloop]] = 1 + + var/final_rgb = "#940000" + + if(colors.len) + var/sum = 0 //this is all shitcode, but it works; trust me + final_rgb = bloodtype_to_color(colors[1]) + sum = colors[colors[1]] + if(colors.len > 1) + var/i = 2 + while(i <= colors.len) + var/tmp = colors[colors[i]] + final_rgb = BlendRGB(final_rgb, bloodtype_to_color(colors[i]), tmp/(tmp+sum)) + sum += tmp + i++ + + return final_rgb + /atom/proc/wash_cream() return TRUE diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index b84db2ca8d..930edfe467 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -246,7 +246,8 @@ visible_message("[src]'s door slides open, barraging you with the nauseating smell of charred flesh.") playsound(src, 'sound/machines/airlockclose.ogg', 25, 1) for(var/obj/item/I in src) //Scorches away blood and forensic evidence, although the SSU itself is unaffected - SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRONG) + I.clean_blood() + I.fingerprints = list() var/datum/component/radioactive/contamination = I.GetComponent(/datum/component/radioactive) if(contamination) qdel(contamination) diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 0a9a135986..1a8dd231f4 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -11,10 +11,6 @@ var/obj/item/color_source var/max_wash_capacity = 5 -/obj/machinery/washing_machine/ComponentInitialize() - . = ..() - AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood))) - /obj/machinery/washing_machine/examine(mob/user) ..() to_chat(user, "Alt-click it to start a wash cycle.") @@ -59,7 +55,8 @@ M.Translate(rand(-3, 3), rand(-1, 3)) animate(src, transform=M, time=2) -/obj/machinery/washing_machine/proc/clean_blood() +/obj/machinery/washing_machine/clean_blood() + ..() if(!busy) bloody_mess = FALSE update_icon() @@ -67,7 +64,7 @@ /obj/machinery/washing_machine/proc/wash_cycle() for(var/X in contents) var/atom/movable/AM = X - SEND_SIGNAL(AM, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + AM.clean_blood() AM.machine_wash(src) busy = FALSE diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index f5e929a7ae..61dff565af 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -82,7 +82,8 @@ add_blood = bloodiness bloodiness -= add_blood S.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,S.blood_smear[blood_state]+add_blood) - S.add_blood_DNA(return_blood_DNA()) + if(blood_DNA && blood_DNA.len) + S.add_blood(blood_DNA) S.blood_state = blood_state S.blood_color = blood_color update_icon() @@ -97,7 +98,8 @@ bloodiness -= add_blood H.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,H.blood_smear[blood_state]+add_blood) H.bloodiness = add_blood - H.add_blood_DNA(return_blood_DNA()) + if(blood_DNA && blood_DNA.len) + H.add_blood(blood_DNA) H.blood_state = blood_state H.blood_color = blood_color update_icon() diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 9b4d65cff4..33d1e41bef 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -4,10 +4,7 @@ name = "xeno blood" desc = "It's green and acidic. It looks like... blood?" color = BLOOD_COLOR_XENO - -/obj/effect/decal/cleanable/blood/xeno/Initialize() - . = ..() - add_blood_DNA(list("UNKNOWN DNA" = "X*")) + blood_DNA = list("UNKNOWN DNA" = "X*") /obj/effect/decal/cleanable/blood/splatter/xeno color = BLOOD_COLOR_XENO @@ -64,6 +61,10 @@ /obj/effect/decal/cleanable/blood/gibs/xeno/larva/body random_icon_states = list("xgiblarvahead", "xgiblarvatorso") -/obj/effect/decal/cleanable/blood/xeno/tracks/Initialize() - . = ..() - add_blood_DNA(list("UNKNOWN DNA" = "X*")) \ No newline at end of file +/obj/effect/decal/cleanable/blood/xtracks + icon_state = "tracks" + random_icon_states = null + +/obj/effect/decal/cleanable/blood/xtracks/Initialize() + add_blood(list("UNKNOWN DNA" = "X*")) + . = ..() \ No newline at end of file diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 31849c7251..7a36ce8f7a 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -48,6 +48,7 @@ diseases = infective.diseases var/obj/effect/decal/cleanable/blood/gibs/gibbers = src var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) + splat.transfer_blood_dna(blood_DNA) splat.color = gibbers.blood_color splat.blood_color = gibbers.blood_color @@ -87,7 +88,7 @@ . = ..() setDir(pick(1,2,4,8)) icon_state += "-old" - add_blood_DNA(list("Non-human DNA" = "A+")) + add_blood(list("Non-human DNA" = "A+")) /obj/effect/decal/cleanable/blood/drip name = "drips of blood" diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 0a4a266874..0bfec90afd 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -4,40 +4,28 @@ icon = 'icons/effects/blood.dmi' icon_state = "floor1" random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7") + blood_DNA = list() blood_state = BLOOD_STATE_BLOOD color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere. bloodiness = BLOOD_AMOUNT_PER_DECAL /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) - if(bloodiness) - if(C.bloodiness < MAX_SHOE_BLOODINESS) - C.bloodiness += bloodiness + if (C.blood_DNA) + blood_DNA |= C.blood_DNA.Copy() update_icon() - return ..() + ..() -/obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna) - return TRUE +/obj/effect/decal/cleanable/blood/transfer_blood_dna() + ..() + update_icon() /obj/effect/decal/cleanable/blood/transfer_mob_blood_dna() . = ..() update_icon() /obj/effect/decal/cleanable/blood/update_icon() - if(!blood_color) - if(reagents.reagent_list.len) - for(var/datum/reagent/R in reagents.reagent_list) - // Get blood data from the blood reagent. - if(istype(R, /datum/reagent/blood)) - if(R.data["blood_type"]) - blood_color = bloodtype_to_color(R.data["blood_type"]) - else if(istype(R, /datum/reagent/liquidgibs)) - if(R.data["blood_type"]) - blood_color = bloodtype_to_color(R.data["blood_type"]) - else - return - else - color = blood_color + color = blood_DNA_to_color() //obj/effect/decal/cleanable/blood/update_color() // if(SEND_SIGNAL(COMSIG_BLOOD_COLOR) & COMPONENT_BLOCK_UPDATE_COLOR) @@ -50,8 +38,9 @@ color = "#3a0505" /obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases) - . = ..() - add_blood_DNA(list("blood_type"= "A+")) + ..() + icon_state += "-old" + add_blood(list("Non-human DNA" = "A+")) /obj/effect/decal/cleanable/blood/splatter random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") @@ -66,10 +55,7 @@ bloodiness = BLOOD_AMOUNT_PER_DECAL /obj/effect/decal/cleanable/trail_holder/update_icon() - GET_COMPONENT(D, /datum/component/forensics) - if(istype(D) && !blood_color) - blood_color = D.blood_mix_color - color = blood_color + color = blood_DNA_to_color() /obj/effect/cleanable/trail_holder/Initialize() . = ..() @@ -78,6 +64,10 @@ /obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in() return TRUE +/obj/effect/decal/cleanable/trail_holder/transfer_blood_dna() + ..() + update_icon() + /obj/effect/decal/cleanable/trail_holder/transfer_mob_blood_dna() . = ..() update_icon() @@ -122,6 +112,8 @@ var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes if(S && S.blood_smear[blood_state]) + if(color != bloodtype_to_color(S.last_bloodtype))//last entry - we check its color + return S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) S.blood_color = blood_color shoe_types |= S.type @@ -138,6 +130,7 @@ update_icon() /obj/effect/decal/cleanable/blood/footprints/tracks/update_icon() + ..() cut_overlays() for(var/Ddir in GLOB.cardinals) diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index 7e960b5d78..0cb17f11be 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -12,8 +12,6 @@ /obj/effect/gibspawner/Initialize(mapload, mob/living/source_mob, list/datum/disease/diseases) . = ..() - AddComponent(/datum/component/forensics) - if(gibtypes.len != gibamounts.len) stack_trace("Gib list amount length mismatch!") return @@ -74,7 +72,7 @@ var/mob/living/carbon/digester = loc digester.stomach_contents += gib - gib.add_blood_DNA(dna_to_add) + gib.blood_DNA += dna_to_add // color them properly, please. gib.body_colors = body_coloring gib.update_icon() diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index 27ec0a4026..fbad000098 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -43,7 +43,7 @@ animate(src, pixel_x = target_pixel_x, pixel_y = target_pixel_y, alpha = 0, time = duration) /obj/effect/temp_visual/dir_setting/bloodsplatter/xenosplatter - splatter_type = "xsplatter" + color = BLOOD_COLOR_XENO /obj/effect/temp_visual/dir_setting/speedbike_trail name = "speedbike trails" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 88eb8e9ad4..e942396c16 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -538,6 +538,17 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) M.become_blind(EYE_DAMAGE) to_chat(M, "You go blind!") +/obj/item/clean_blood() + . = ..() + if(.) + if(blood_splatter_icon) + cut_overlay(blood_splatter_icon) + +/obj/item/clothing/gloves/clean_blood() + . = ..() + if(.) + transfer_blood = 0 + /obj/item/singularity_pull(S, current_size) ..() if(current_size >= STAGE_FOUR) diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index 1d302b409e..e371ae7d40 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -88,7 +88,7 @@ var/obj/effect/decal/cleanable/C = locate() in target qdel(C) target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - SEND_SIGNAL(target, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM) + target.clean_blood() target.wash_cream() return diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index eb0271c1b9..56511b481a 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -136,7 +136,7 @@ else icon_state = initial(icon_state) -/obj/item/radio/intercom/add_blood_DNA(list/blood_dna) +/obj/item/radio/intercom/add_blood(list/blood_dna) return FALSE //Created through the autolathe or through deconstructing intercoms. Can be applied to wall to make a new intercom on it! diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 935d2a007e..a5929e95cb 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -22,7 +22,7 @@ user.visible_message("[user] is [pick("slitting [user.p_their()] stomach open with", "falling on")] [src]! It looks like [user.p_theyre()] trying to commit seppuku!") return (BRUTELOSS|FIRELOSS) -/obj/item/melee/transforming/energy/add_blood_DNA(list/blood_dna) +/obj/item/melee/transforming/energy/add_blood(list/blood_dna) return FALSE /obj/item/melee/transforming/energy/is_sharp() diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 3a35f4d8ef..b201ef60a8 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -343,7 +343,7 @@ shard.Consume() T.CalculateAdjacentTurfs() -/obj/item/melee/supermatter_sword/add_blood_DNA(list/blood_dna) +/obj/item/melee/supermatter_sword/add_blood(list/blood_dna) return FALSE /obj/item/melee/curator_whip diff --git a/code/game/objects/items/mop.dm b/code/game/objects/items/mop.dm index 44ccd7aad5..32428bf298 100644 --- a/code/game/objects/items/mop.dm +++ b/code/game/objects/items/mop.dm @@ -26,7 +26,7 @@ /obj/item/mop/proc/clean(turf/A) if(reagents.has_reagent("water", 1) || reagents.has_reagent("holywater", 1) || reagents.has_reagent("vodka", 1) || reagents.has_reagent("cleaner", 1)) - SEND_SIGNAL(A, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM) + A.clean_blood() for(var/obj/effect/O in A) if(is_cleanable(O)) qdel(O) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 34ae4cb5ef..470261bd6d 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -388,10 +388,10 @@ else . = ..() -/obj/item/stack/proc/copy_evidences(obj/item/stack/from) - add_blood_DNA(from.return_blood_DNA()) - add_fingerprint_list(from.return_fingerprints()) - add_hiddenprint_list(from.return_hiddenprints()) +/obj/item/stack/proc/copy_evidences(obj/item/stack/from as obj) + blood_DNA = from.blood_DNA + fingerprints = from.fingerprints + fingerprintshidden = from.fingerprintshidden fingerprintslast = from.fingerprintslast //TODO bloody overlay diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index b95d6a897e..6b093841de 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -241,5 +241,5 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", else return ..(M,user,heal_mode = FALSE) -/obj/item/storage/book/bible/syndicate/add_blood_DNA(list/blood_dna) +/obj/item/storage/book/bible/syndicate/add_blood(list/blood_dna) return FALSE diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index d4ec9217e7..784aed077e 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -341,7 +341,7 @@ icon_state = "dualsaber[item_color][wielded]" else icon_state = "dualsaber0" - SEND_SIGNAL(src, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + clean_blood()//blood overlays get weird otherwise, because the sprite changes. /obj/item/twohanded/dualsaber/attack(mob/target, mob/living/carbon/human/user) if(user.has_dna()) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index d70838a30b..a03c0c2b46 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -317,7 +317,7 @@ /obj/machinery/shower/proc/wash_obj(obj/O) - . = SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + . = O.clean_blood() O.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) if(isitem(O)) var/obj/item/I = O @@ -328,7 +328,7 @@ /obj/machinery/shower/proc/wash_turf() if(isturf(loc)) var/turf/tile = loc - SEND_SIGNAL(tile, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + tile.clean_blood() tile.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) for(var/obj/effect/E in tile) if(is_cleanable(E)) @@ -336,7 +336,7 @@ /obj/machinery/shower/proc/wash_mob(mob/living/L) - SEND_SIGNAL(L, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + L.clean_blood() L.wash_cream() L.ExtinguishMob() L.adjust_fire_stacks(-20) //Douse ourselves with water to avoid fire more easily @@ -381,7 +381,7 @@ else if(H.w_uniform && wash_obj(H.w_uniform)) H.update_inv_w_uniform() if(washgloves) - SEND_SIGNAL(H, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + H.clean_blood() if(H.shoes && washshoes && wash_obj(H.shoes)) H.update_inv_shoes() if(H.wear_mask && washmask && wash_obj(H.wear_mask)) @@ -398,9 +398,9 @@ else if(M.wear_mask && wash_obj(M.wear_mask)) M.update_inv_wear_mask(0) - SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + M.clean_blood() else - SEND_SIGNAL(L, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + L.clean_blood() /obj/machinery/shower/proc/contamination_cleanse(atom/movable/thing) var/datum/component/radioactive/healthy_green_glow = thing.GetComponent(/datum/component/radioactive) @@ -498,7 +498,7 @@ H.regenerate_icons() user.drowsyness = max(user.drowsyness - rand(2,3), 0) //Washing your face wakes you up if you're falling asleep else - SEND_SIGNAL(user, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + user.clean_blood() /obj/structure/sink/attackby(obj/item/O, mob/living/user, params) if(busy) @@ -554,7 +554,7 @@ busy = FALSE return 1 busy = FALSE - SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + O.clean_blood() O.acid_level = 0 create_reagents(5) reagents.add_reagent(dispensedreagent, 5) diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 63b5f4b160..96a24e0b2c 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -225,7 +225,7 @@ for(var/mob/living/simple_animal/slime/M in src) M.apply_water() - SEND_SIGNAL(src, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + clean_blood() for(var/obj/effect/O in src) if(is_cleanable(O)) qdel(O) diff --git a/code/modules/antagonists/devil/true_devil/_true_devil.dm b/code/modules/antagonists/devil/true_devil/_true_devil.dm index 923a224b81..949fb2e4ed 100644 --- a/code/modules/antagonists/devil/true_devil/_true_devil.dm +++ b/code/modules/antagonists/devil/true_devil/_true_devil.dm @@ -69,8 +69,10 @@ //Left hand items for(var/obj/item/I in held_items) if(!(I.item_flags & ABSTRACT)) - msg += "It is holding [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))].\n" - + if(I.blood_DNA) + msg += "It is holding [icon2html(I, user)] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in its [get_held_index_name(get_held_index_of_item(I))]!\n" + else + msg += "It is holding [icon2html(I, user)] \a [I] in its [get_held_index_name(get_held_index_of_item(I))].\n" //Braindead if(!client && stat != DEAD) msg += "The devil seems to be in deep contemplation.\n" diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index 7cfefd5413..f985818b76 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -327,11 +327,8 @@ possible = list() if(!voodoo_link) return - var/list/prints = voodoo_link.return_fingerprints() - if(!length(prints)) - return FALSE for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) - if(prints[md5(H.dna.uni_identity)]) + if(md5(H.dna.uni_identity) in voodoo_link.fingerprints) possible |= H /obj/item/voodoo/proc/GiveHint(mob/victim,force=0) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 922f37b270..caf12d4b86 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -43,6 +43,8 @@ var/blood_state = BLOOD_STATE_NOT_BLOODY var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) + var/last_bloodtype = ""//used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans + var/last_blood_DNA = ""//same as last one /obj/item/clothing/Initialize() . = ..() @@ -157,6 +159,11 @@ damaged_clothes = 0 cut_overlay(damaged_clothes_icons[index], TRUE) +/obj/item/clothing/transfer_blood_dna(list/blood_dna) + ..() + if(blood_dna.len) + last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works + last_blood_DNA = blood_dna[blood_dna.len] /* SEE_SELF // can see self, no matter what diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm index 50bfeb1407..a661a978b0 100644 --- a/code/modules/clothing/gloves/_gloves.dm +++ b/code/modules/clothing/gloves/_gloves.dm @@ -11,15 +11,6 @@ strip_delay = 20 equip_delay_other = 40 -/obj/item/clothing/gloves/ComponentInitialize() - . = ..() - AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood))) - -/obj/item/clothing/gloves/proc/clean_blood(datum/source, strength) - if(strength < CLEAN_STRENGTH_BLOOD) - return - transfer_blood = 0 - /obj/item/clothing/gloves/suicide_act(mob/living/carbon/user) user.visible_message("\the [src] are forcing [user]'s hands around [user.p_their()] neck! It looks like the gloves are possessed!") return OXYLOSS @@ -29,9 +20,8 @@ if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedgloves") - IF_HAS_BLOOD_DNA(src) - GET_COMPONENT(D, /datum/component/forensics) - . += mutable_appearance('icons/effects/blood.dmi', "bloodyhands", color = D.blood_mix_color) + if(blood_DNA) + . += mutable_appearance('icons/effects/blood.dmi', "bloodyhands", color = blood_DNA_to_color()) /obj/item/clothing/gloves/update_clothes_damaged_state(damaging = TRUE) ..() diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm index 591b6c1d3b..ccc167dcbc 100644 --- a/code/modules/clothing/head/_head.dm +++ b/code/modules/clothing/head/_head.dm @@ -46,9 +46,8 @@ if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedhelmet") - IF_HAS_BLOOD_DNA(src) - GET_COMPONENT(D, /datum/component/forensics) - . += mutable_appearance('icons/effects/blood.dmi', "helmetblood", color = D.blood_DNA_to_color()) + if(blood_DNA) + . += mutable_appearance('icons/effects/blood.dmi', "helmetblood", color = blood_DNA_to_color()) /obj/item/clothing/head/update_clothes_damaged_state(damaging = TRUE) ..() diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm index 13f3a81b99..ae4d324805 100644 --- a/code/modules/clothing/masks/_masks.dm +++ b/code/modules/clothing/masks/_masks.dm @@ -17,9 +17,8 @@ if(body_parts_covered & HEAD) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") - IF_HAS_BLOOD_DNA(src) - GET_COMPONENT(D, /datum/component/forensics) - . += mutable_appearance('icons/effects/blood.dmi', "maskblood", color = D.blood_mix_color) + if(blood_DNA) + . += mutable_appearance('icons/effects/blood.dmi', "maskblood", color = blood_DNA_to_color()) /obj/item/clothing/mask/equipped(mob/user, slot) ..() diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index 4179e69a45..ee63c137af 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -12,8 +12,8 @@ if(body_parts_covered & HEAD) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") - IF_HAS_BLOOD_DNA(src) - . += mutable_appearance('icons/effects/blood.dmi', "maskblood") + if(blood_DNA) + . += mutable_appearance('icons/effects/blood.dmi', "maskblood", color = blood_DNA_to_color()) /obj/item/clothing/neck/tie name = "tie" diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index 4aec17fafe..fb85d057b2 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -19,10 +19,6 @@ var/move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/shoe -/obj/item/clothing/shoes/ComponentInitialize() - . = ..() - AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood))) - /obj/item/clothing/shoes/suicide_act(mob/living/carbon/user) if(rand(2)>1) user.visible_message("[user] begins tying \the [src] up waaay too tightly! It looks like [user.p_theyre()] trying to commit suicide!") @@ -46,7 +42,7 @@ . = list() if(!isinhands) var/bloody = FALSE - IF_HAS_BLOOD_DNA(src) + if(blood_DNA) bloody = TRUE else bloody = blood_smear[BLOOD_STATE_BLOOD] @@ -55,9 +51,9 @@ . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe") if(bloody) if(adjusted == NORMAL_STYLE) - . += mutable_appearance('icons/effects/blood.dmi', "shoeblood", color = blood_color) + . += mutable_appearance('icons/effects/blood.dmi', "shoeblood", color = blood_DNA_to_color()) else - . += mutable_appearance('modular_citadel/icons/mob/digishoes.dmi', "shoeblood", color = blood_color) + . += mutable_appearance('modular_citadel/icons/mob/digishoes.dmi', "shoeblood", color = blood_DNA_to_color()) /obj/item/clothing/shoes/equipped(mob/user, slot) . = ..() @@ -93,9 +89,8 @@ var/mob/M = loc M.update_inv_shoes() -/obj/item/clothing/shoes/proc/clean_blood(datum/source, strength) - if(strength < CLEAN_STRENGTH_BLOOD) - return +/obj/item/clothing/shoes/clean_blood() + ..() blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) blood_state = BLOOD_STATE_NOT_BLOODY blood_color = null diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index 3a3e5c3d84..74637cd22f 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -54,12 +54,11 @@ if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damaged[blood_overlay_type]") - IF_HAS_BLOOD_DNA(src) - GET_COMPONENT(D, /datum/component/forensics) + if(blood_DNA) if(taurmode >= SNEK_TAURIC) - . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "[blood_overlay_type]blood", color = D.blood_mix_color) + . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) else - . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood", color = D.blood_mix_color) + . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) var/mob/living/carbon/human/M = loc if(ishuman(M) && M.w_uniform) var/obj/item/clothing/under/U = M.w_uniform diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index df5004a259..eda0e31e93 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -22,9 +22,8 @@ if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform") - IF_HAS_BLOOD_DNA(src) - GET_COMPONENT(D, /datum/component/forensics) - . += mutable_appearance('icons/effects/blood.dmi', "uniformblood", color = D.blood_mix_color) + if(blood_DNA) + . += mutable_appearance('icons/effects/blood.dmi', "uniformblood", color = blood_DNA_to_color()) if(accessory_overlay) . += accessory_overlay diff --git a/code/modules/detectivework/detective_work.dm b/code/modules/detectivework/detective_work.dm index 0b1d6807bf..d5584bc29f 100644 --- a/code/modules/detectivework/detective_work.dm +++ b/code/modules/detectivework/detective_work.dm @@ -1,121 +1,119 @@ //CONTAINS: Suit fibers and Detective's Scanning Computer -/atom/proc/return_fingerprints() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - . = D.fingerprints - -/atom/proc/return_hiddenprints() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - . = D.hiddenprints - -/atom/proc/return_blood_DNA() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - . = D.blood_DNA - -/atom/proc/blood_DNA_length() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - . = length(D.blood_DNA) - -/atom/proc/return_fibers() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - . = D.fibers - -/atom/proc/return_blood_mix_types() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - . = D.blood_mix_types - -/atom/proc/return_blood_mix_color() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - . = D.blood_mix_color - -/atom/proc/add_fingerprint_list(list/fingerprints) //ASSOC LIST FINGERPRINT = FINGERPRINT - if(length(fingerprints)) - . = AddComponent(/datum/component/forensics, fingerprints) - -//Set ignoregloves to add prints irrespective of the mob having gloves on. -/atom/proc/add_fingerprint(mob/living/M, ignoregloves = FALSE) - var/datum/component/forensics/D = AddComponent(/datum/component/forensics) - . = D.add_fingerprint(M, ignoregloves) - -/atom/proc/add_fiber_list(list/fibertext) //ASSOC LIST FIBERTEXT = FIBERTEXT - if(length(fibertext)) - . = AddComponent(/datum/component/forensics, null, null, null, fibertext) +/atom/var/list/suit_fibers /atom/proc/add_fibers(mob/living/carbon/human/M) - var/old = 0 - if(M.gloves && istype(M.gloves, /obj/item/clothing)) + if(M.gloves && istype(M.gloves, /obj/item/clothing/)) var/obj/item/clothing/gloves/G = M.gloves - old = length(G.return_blood_DNA()) if(G.transfer_blood > 1) //bloodied gloves transfer blood to touched objects - if(add_blood_DNA(G.return_blood_DNA()) && length(G.return_blood_DNA()) > old) //only reduces the bloodiness of our gloves if the item wasn't already bloody + if(add_blood(G.blood_DNA)) //only reduces the bloodiness of our gloves if the item wasn't already bloody G.transfer_blood-- else if(M.bloody_hands > 1) - old = length(M.return_blood_DNA()) - if(add_blood_DNA(M.return_blood_DNA()) && length(M.return_blood_DNA()) > old) + if(add_blood(M.blood_DNA)) M.bloody_hands-- - var/datum/component/forensics/D = AddComponent(/datum/component/forensics) - . = D.add_fibers(M) + if(!suit_fibers) + suit_fibers = list() + var/fibertext + var/item_multiplier = isitem(src)?1.2:1 + if(M.wear_suit) + fibertext = "Material from \a [M.wear_suit]." + if(prob(10*item_multiplier) && !(fibertext in suit_fibers)) + suit_fibers += fibertext + if(!(M.wear_suit.body_parts_covered & CHEST)) + if(M.w_uniform) + fibertext = "Fibers from \a [M.w_uniform]." + if(prob(12*item_multiplier) && !(fibertext in suit_fibers)) //Wearing a suit means less of the uniform exposed. + suit_fibers += fibertext + if(!(M.wear_suit.body_parts_covered & HANDS)) + if(M.gloves) + fibertext = "Material from a pair of [M.gloves.name]." + if(prob(20*item_multiplier) && !(fibertext in suit_fibers)) + suit_fibers += fibertext + else if(M.w_uniform) + fibertext = "Fibers from \a [M.w_uniform]." + if(prob(15*item_multiplier) && !(fibertext in suit_fibers)) + // "Added fibertext: [fibertext]" + suit_fibers += fibertext + if(M.gloves) + fibertext = "Material from a pair of [M.gloves.name]." + if(prob(20*item_multiplier) && !(fibertext in suit_fibers)) + suit_fibers += "Material from a pair of [M.gloves.name]." + else if(M.gloves) + fibertext = "Material from a pair of [M.gloves.name]." + if(prob(20*item_multiplier) && !(fibertext in suit_fibers)) + suit_fibers += "Material from a pair of [M.gloves.name]." -/atom/proc/add_hiddenprint_list(list/hiddenprints) //NOTE: THIS IS FOR ADMINISTRATION FINGERPRINTS, YOU MUST CUSTOM SET THIS TO INCLUDE CKEY/REAL NAMES! CHECK FORENSICS.DM - if(length(hiddenprints)) - . = AddComponent(/datum/component/forensics, null, hiddenprints) /atom/proc/add_hiddenprint(mob/living/M) - var/datum/component/forensics/D = AddComponent(/datum/component/forensics) - . = D.add_hiddenprint(M) + if(!M || !M.key) + return -/atom/proc/add_blood_DNA(list/dna) //ASSOC LIST DNA = BLOODTYPE - return FALSE + if(!fingerprintshidden) //Add the list if it does not exist + fingerprintshidden = list() -/obj/add_blood_DNA(list/dna) - . = ..() - if(length(dna)) - . = AddComponent(/datum/component/forensics, null, null, dna) + var/hasgloves = "" + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.gloves) + hasgloves = "(gloves)" + + var/current_time = TIME_STAMP("hh:mm:ss", FALSE) + if(!fingerprintshidden[M.key]) + fingerprintshidden[M.key] = "First: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]" + else + var/laststamppos = findtext(fingerprintshidden[M.key], " Last: ") + if(laststamppos) + fingerprintshidden[M.key] = copytext(fingerprintshidden[M.key], 1, laststamppos) + fingerprintshidden[M.key] += " Last: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]" + + fingerprintslast = M.ckey + + +//Set ignoregloves to add prints irrespective of the mob having gloves on. +/atom/proc/add_fingerprint(mob/living/M, ignoregloves = 0) + if(!M || !M.key) + return + + add_hiddenprint(M) + + if(ishuman(M)) + var/mob/living/carbon/human/H = M + + add_fibers(H) + + if(H.gloves) //Check if the gloves (if any) hide fingerprints + var/obj/item/clothing/gloves/G = H.gloves + if(G.transfer_prints) + ignoregloves = 1 + + if(!ignoregloves) + H.gloves.add_fingerprint(H, 1) //ignoregloves = 1 to avoid infinite loop. + return + + if(!fingerprints) //Add the list if it does not exist + fingerprints = list() + var/full_print = md5(H.dna.uni_identity) + fingerprints[full_print] = full_print -/obj/item/clothing/gloves/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) - . = ..() - transfer_blood = rand(2, 4) -/turf/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) - var/obj/effect/decal/cleanable/blood/splatter/B = locate() in src - if(!B) - B = new /obj/effect/decal/cleanable/blood/splatter(src, diseases) - B.add_blood_DNA(blood_dna) //give blood info to the blood decal. - return TRUE //we bloodied the floor -/mob/living/carbon/human/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) - if(wear_suit) - wear_suit.add_blood_DNA(blood_dna) - update_inv_wear_suit() - else if(w_uniform) - w_uniform.add_blood_DNA(blood_dna) - update_inv_w_uniform() - if(gloves) - var/obj/item/clothing/gloves/G = gloves - G.add_blood_DNA(blood_dna) - else if(length(blood_dna)) - AddComponent(/datum/component/forensics, null, null, blood_dna) - bloody_hands = rand(2, 4) - if(head) - head.add_blood_DNA(blood_dna) - update_inv_head() - else if(wear_mask) - wear_mask.add_blood_DNA(blood_dna) - update_inv_wear_mask() - if(wear_neck) - wear_neck.add_blood_DNA(blood_dna) - update_inv_neck() - update_inv_gloves() //handles bloody hands overlays and updating - return TRUE /atom/proc/transfer_fingerprints_to(atom/A) - A.add_fingerprint_list(return_fingerprints()) - A.add_hiddenprint_list(return_hiddenprints()) - A.fingerprintslast = fingerprintslast + + // Make sure everything are lists. + if(!islist(A.fingerprints)) + A.fingerprints = list() + if(!islist(A.fingerprintshidden)) + A.fingerprintshidden = list() + + if(!islist(fingerprints)) + fingerprints = list() + if(!islist(fingerprintshidden)) + fingerprintshidden = list() + + // Transfer + if(fingerprints) + A.fingerprints |= fingerprints.Copy() //detective + if(fingerprintshidden) + A.fingerprintshidden |= fingerprintshidden.Copy() //admin + A.fingerprintslast = fingerprintslast \ No newline at end of file diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm index 9f1f2bf380..611001ecf9 100644 --- a/code/modules/detectivework/footprints_and_rag.dm +++ b/code/modules/detectivework/footprints_and_rag.dm @@ -1,10 +1,14 @@ /mob var/bloody_hands = 0 + var/bloody_feet = 0 /obj/item/clothing/gloves var/transfer_blood = 0 +/obj/item/clothing/shoes + var/transfer_blood = 0 + /obj/item/reagent_containers/glass/rag name = "damp rag" @@ -46,5 +50,6 @@ user.visible_message("[user] starts to wipe down [A] with [src]!", "You start to wipe down [A] with [src]...") if(do_after(user,30, target = A)) user.visible_message("[user] finishes wiping off [A]!", "You finish wiping off [A].") - SEND_SIGNAL(A, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM) + A.clean_blood() + A.wash_cream() return diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm index fd7591db81..eace1bf7b1 100644 --- a/code/modules/detectivework/scanner.dm +++ b/code/modules/detectivework/scanner.dm @@ -80,14 +80,20 @@ //Make our lists var/list/fingerprints = list() - var/list/blood = A.return_blood_DNA() - var/list/fibers = A.return_fibers() + var/list/blood = list() + var/list/fibers = list() var/list/reagents = list() var/target_name = A.name // Start gathering + if(A.blood_DNA && A.blood_DNA.len) + blood = A.blood_DNA.Copy() + + if(A.suit_fibers && A.suit_fibers.len) + fibers = A.suit_fibers.Copy() + if(ishuman(A)) var/mob/living/carbon/human/H = A @@ -96,7 +102,8 @@ else if(!ismob(A)) - fingerprints = A.return_fingerprints() + if(A.fingerprints && A.fingerprints.len) + fingerprints = A.fingerprints.Copy() // Only get reagents from non-mobs. if(A.reagents && A.reagents.reagent_list.len) @@ -110,7 +117,6 @@ if(R.data["blood_DNA"] && R.data["blood_type"]) var/blood_DNA = R.data["blood_DNA"] var/blood_type = R.data["blood_type"] - LAZYINITLIST(blood) blood[blood_DNA] = blood_type // We gathered everything. Create a fork and slowly display the results to the holder of the scanner. @@ -119,7 +125,7 @@ add_log("[STATION_TIME_TIMESTAMP("hh:mm:ss")][get_timestamp()] - [target_name]", 0) // Fingerprints - if(length(fingerprints)) + if(fingerprints && fingerprints.len) sleep(30) add_log("Prints:") for(var/finger in fingerprints) @@ -127,7 +133,7 @@ found_something = 1 // Blood - if (length(blood)) + if (blood && blood.len) sleep(30) add_log("Blood:") found_something = 1 @@ -135,7 +141,7 @@ add_log("Type: [blood[B]] DNA: [B]") //Fibers - if(length(fibers)) + if(fibers && fibers.len) sleep(30) add_log("Fibers:") for(var/fiber in fibers) @@ -143,7 +149,7 @@ found_something = 1 //Reagents - if(length(reagents)) + if(reagents && reagents.len) sleep(30) add_log("Reagents:") for(var/R in reagents) diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 86bf676f7e..fa6e12e6ce 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -287,7 +287,8 @@ drop.transfer_mob_blood_dna(src) return else - temp_blood_DNA = drop.return_blood_DNA() //we transfer the dna from the drip to the splatter + temp_blood_DNA = list() + temp_blood_DNA |= drop.blood_DNA.Copy() //we transfer the dna from the drip to the splatter qdel(drop)//the drip is replaced by a bigger splatter else drop = new(T, get_static_viruses()) @@ -303,9 +304,9 @@ B.transfer_mob_blood_dna(src) //give blood info to the blood decal. if(temp_blood_DNA) if(isalien(src)) - B.add_blood_DNA(list("UNKNOWN DNA" = "X*")) + B.blood_DNA["UNKNOWN DNA"] = "X*" else - B.add_blood_DNA(temp_blood_DNA) + B.blood_DNA |= temp_blood_DNA /mob/living/carbon/human/add_splatter_floor(turf/T, small_drip) if(!(NOBLOOD in dna.species.species_traits)) diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index c42bd82797..a99776d03e 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -11,18 +11,21 @@ if (handcuffed) msg += "[t_He] [t_is] [icon2html(handcuffed, user)] handcuffed!\n" if (head) - msg += "[t_He] [t_is] wearing [head.get_examine_string(user)] on [t_his] head. \n" + msg += "[t_He] [t_is] wearing [icon2html(head, user)] \a [src.head] on [t_his] head. \n" if (wear_mask) - msg += "[t_He] [t_is] wearing [wear_mask.get_examine_string(user)] on [t_his] face.\n" + msg += "[t_He] [t_is] wearing [icon2html(wear_mask, user)] \a [src.wear_mask] on [t_his] face.\n" if (wear_neck) - msg += "[t_He] [t_is] wearing [wear_neck.get_examine_string(user)] around [t_his] neck.\n" + msg += "[t_He] [t_is] wearing [icon2html(wear_neck, user)] \a [src.wear_neck] around [t_his] neck.\n" for(var/obj/item/I in held_items) if(!(I.item_flags & ABSTRACT)) - msg += "[t_He] [t_is] holding [I.get_examine_string(user)] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n" + if(I.blood_DNA) + msg += "[t_He] [t_is] holding [icon2html(I, user)] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in [t_his] [get_held_index_name(get_held_index_of_item(I))]!\n" + else + msg += "[t_He] [t_is] holding [icon2html(I, user)] \a [I] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n" if (back) - msg += "[t_He] [t_has] [back.get_examine_string(user)] on [t_his] back.\n" + msg += "[t_He] [t_has] [icon2html(back, user)] \a [src.back] on [t_his] back.\n" var/appears_dead = 0 if (stat == DEAD) appears_dead = 1 @@ -88,7 +91,7 @@ if(digitalcamo) msg += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly unsimian manner.\n" - + if(combatmode) msg += "[t_He] [t_is] visibly tense[resting ? "." : ", and [t_is] standing in combative stance."]\n" diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 26e19ff376..aa0c7283ef 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -37,30 +37,46 @@ if(U.attached_accessory) accessory_msg += " with [icon2html(U.attached_accessory, user)] \a [U.attached_accessory]" - msg += "[t_He] [t_is] wearing [w_uniform.get_examine_string(user)][accessory_msg].\n" + if(w_uniform.blood_DNA) + msg += "[t_He] [t_is] wearing [icon2html(w_uniform, user)] [w_uniform.gender==PLURAL?"some":"a"] blood-stained [w_uniform.name][accessory_msg]!\n" + else + msg += "[t_He] [t_is] wearing [icon2html(w_uniform, user)] \a [w_uniform][accessory_msg].\n" //head if(head) - msg += "[t_He] [t_is] wearing [head.get_examine_string(user)] on [t_his] head.\n" + if(head.blood_DNA) + msg += "[t_He] [t_is] wearing [icon2html(head, user)] [head.gender==PLURAL?"some":"a"] blood-stained [head.name] on [t_his] head!\n" + else + msg += "[t_He] [t_is] wearing [icon2html(head, user)] \a [head] on [t_his] head.\n" //suit/armor if(wear_suit) - msg += "[t_He] [t_is] wearing [wear_suit.get_examine_string(user)].\n" + if(wear_suit.blood_DNA) + msg += "[t_He] [t_is] wearing [icon2html(wear_suit, user)] [wear_suit.gender==PLURAL?"some":"a"] blood-stained [wear_suit.name]!\n" + else + msg += "[t_He] [t_is] wearing [icon2html(wear_suit, user)] \a [wear_suit].\n" //suit/armor storage - if(s_store) - msg += "[t_He] [t_is] carrying [s_store.get_examine_string(user)] on [t_his] [wear_suit.name].\n" + if(s_store.blood_DNA) + msg += "[t_He] [t_is] carrying [icon2html(s_store, user)] [s_store.gender==PLURAL?"some":"a"] blood-stained [s_store.name] on [t_his] [wear_suit.name]!\n" + else + msg += "[t_He] [t_is] carrying [icon2html(s_store, user)] \a [s_store] on [t_his] [wear_suit.name].\n" //back if(back) - msg += "[t_He] [t_has] [back.get_examine_string(user)] on [t_his] back.\n" - + if(back.blood_DNA) + msg += "[t_He] [t_has] [icon2html(back, user)] [back.gender==PLURAL?"some":"a"] blood-stained [back] on [t_his] back.\n" + else + msg += "[t_He] [t_has] [icon2html(back, user)] \a [back] on [t_his] back.\n" //Hands for(var/obj/item/I in held_items) - if(!(I.item_flags & ABSTRACT)) - msg += "[t_He] [t_is] holding [I.get_examine_string(user)] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n" - - GET_COMPONENT(FR, /datum/component/forensics) + if(I.blood_DNA) + msg += "[t_He] [t_is] holding [icon2html(I, user)] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in [t_his] [get_held_index_name(get_held_index_of_item(I))]!\n" + else + msg += "[t_He] [t_is] holding [icon2html(I, user)] \a [I] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n" //gloves if(gloves && !(SLOT_GLOVES in obscured)) - msg += "[t_He] [t_has] [gloves.get_examine_string(user)] on [t_his] hands.\n" - else if(FR && length(FR.blood_DNA)) + if(gloves.blood_DNA) + msg += "[t_He] [t_has] [icon2html(gloves, user)] [gloves.gender==PLURAL?"some":"a"] blood-stained [gloves.name] on [t_his] hands!\n" + else + msg += "[t_He] [t_has] [icon2html(gloves, user)] \a [gloves] on [t_his] hands.\n" + else if(blood_DNA) var/hand_number = get_num_arms(FALSE) if(hand_number) msg += "[t_He] [t_has] [hand_number > 1 ? "" : "a"] blood-stained hand[hand_number > 1 ? "s" : ""]!\n" @@ -76,33 +92,47 @@ //belt if(belt) - msg += "[t_He] [t_has] [belt.get_examine_string(user)] about [t_his] waist.\n" + if(belt.blood_DNA) + msg += "[t_He] [t_has] [icon2html(belt, user)] [belt.gender==PLURAL?"some":"a"] blood-stained [belt.name] about [t_his] waist!\n" + else + msg += "[t_He] [t_has] [icon2html(belt, user)] \a [belt] about [t_his] waist.\n" //shoes if(shoes && !(SLOT_SHOES in obscured)) - msg += "[t_He] [t_is] wearing [shoes.get_examine_string(user)] on [t_his] feet.\n" + if(shoes.blood_DNA) + msg += "[t_He] [t_is] wearing [icon2html(shoes, user)] [shoes.gender==PLURAL?"some":"a"] blood-stained [shoes.name] on [t_his] feet!\n" + else + msg += "[t_He] [t_is] wearing [icon2html(shoes, user)] \a [shoes] on [t_his] feet.\n" //mask if(wear_mask && !(SLOT_WEAR_MASK in obscured)) - msg += "[t_He] [t_has] [wear_mask.get_examine_string(user)] on [t_his] face.\n" + if(wear_mask.blood_DNA) + msg += "[t_He] [t_has] [icon2html(wear_mask, user)] [wear_mask.gender==PLURAL?"some":"a"] blood-stained [wear_mask.name] on [t_his] face!\n" + else + msg += "[t_He] [t_has] [icon2html(wear_mask, user)] \a [wear_mask] on [t_his] face.\n" - if (wear_neck && !(SLOT_NECK in obscured)) - msg += "[t_He] [t_is] wearing [wear_neck.get_examine_string(user)] around [t_his] neck.\n" + //neck + if(wear_neck && !(SLOT_NECK in obscured)) + msg += "[t_He] [t_is] wearing [icon2html(wear_neck, user)] \a [src.wear_neck] around [t_his] neck.\n" //eyes if(!(SLOT_GLASSES in obscured)) if(glasses) - msg += "[t_He] [t_has] [glasses.get_examine_string(user)] covering [t_his] eyes.\n" + if(glasses.blood_DNA) + msg += "[t_He] [t_has] [icon2html(glasses, user)] [glasses.gender==PLURAL?"some":"a"] blood-stained [glasses] covering [t_his] eyes!\n" + else + msg += "[t_He] [t_has] [icon2html(glasses, user)] \a [glasses] covering [t_his] eyes.\n" + else if(eye_color == BLOODCULT_EYE && iscultist(src) && has_trait(CULT_EYES)) msg += "[t_His] eyes are glowing an unnatural red!\n" //ears if(ears && !(SLOT_EARS in obscured)) - msg += "[t_He] [t_has] [ears.get_examine_string(user)] on [t_his] ears.\n" + msg += "[t_He] [t_has] [icon2html(ears, user)] \a [ears] on [t_his] ears.\n" //ID if(wear_id) - msg += "[t_He] [t_is] wearing [wear_id.get_examine_string(user)].\n" + msg += "[t_He] [t_is] wearing [icon2html(wear_id, user)] \a [wear_id].\n" //Status effects msg += status_effect_examines() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 49d2722323..bbf77eb8b5 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -31,8 +31,6 @@ if(CONFIG_GET(flag/disable_stambuffer)) togglesprint() - AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood))) - /mob/living/carbon/human/ComponentInitialize() . = ..() @@ -687,16 +685,22 @@ if(..()) dropItemToGround(I) -/mob/living/carbon/human/proc/clean_blood(datum/source, strength) - if(strength < CLEAN_STRENGTH_BLOOD) - return - if(gloves) - if(SEND_SIGNAL(gloves, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) - update_inv_gloves() +/mob/living/carbon/human/clean_blood() + var/mob/living/carbon/human/H = src + if(H.gloves) + if(H.gloves.clean_blood()) + H.update_inv_gloves() else - if(bloody_hands) - bloody_hands = 0 - update_inv_gloves() + ..() // Clear the Blood_DNA list + if(H.bloody_hands) + H.bloody_hands = 0 + H.update_inv_gloves() + if(H.bloody_feet) + H.bloody_feet = 0 + H.update_inv_shoes() + bloodiness = 0 + + update_icons() //apply the now updated overlays to the mob /mob/living/carbon/human/wash_cream() if(creamed) //clean both to prevent a rare bug diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 95139f75ee..1fe16b3a2e 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -45,6 +45,8 @@ var/bloodiness = 0 var/bloodinessmax = 5 + var/last_bloodtype = ""//used to track the last bloodtype to have graced this filthy spaceman; makes for better performing footprint shenanigans + var/last_blood_DNA = ""//same as last one var/blood_state = BLOOD_STATE_NOT_BLOODY var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) var/blood_color //For blood smearing stuff diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index dd37563f8f..1620b8eed9 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -147,3 +147,9 @@ return FALSE return . + +/mob/living/carbon/human/transfer_blood_dna(list/blood_dna) + ..() + if(blood_dna.len) + last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works + last_blood_DNA = blood_dna[blood_dna.len] diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index b2592ae157..024f2590e7 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -57,18 +57,20 @@ var/turf/T = get_turf(src) if(S.blood_smear && S.blood_smear[S.blood_state]) var/obj/effect/decal/cleanable/blood/footprints/tracks/shoe/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks/shoe) in T - if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == S.blood_color)) + if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == bloodtype_to_color(S.last_bloodtype))) return - S.blood_smear[S.blood_state] = max(0, S.blood_smear[S.blood_state]-BLOOD_LOSS_PER_STEP) - var/obj/effect/decal/cleanable/blood/footprints/tracks/shoe/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/shoe(T) - FP.icon_state = FOOTPRINT_SHOE - FP.print_state = FOOTPRINT_SHOE - FP.blood_state = S.blood_state - FP.blood_color = S.blood_color - FP.entered_dirs |= dir - FP.bloodiness = S.blood_smear[S.blood_state] - FP.update_icon() - update_inv_shoes() + S.blood_smear[S.blood_state] = max(0, S.blood_smear[S.blood_state]-BLOOD_LOSS_PER_STEP) + var/obj/effect/decal/cleanable/blood/footprints/tracks/shoe/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/shoe(T) + FP.icon_state = FOOTPRINT_SHOE + FP.print_state = FOOTPRINT_SHOE + FP.blood_state = S.blood_state + FP.entered_dirs |= dir + FP.bloodiness = S.blood_smear[S.blood_state] + if(S.last_blood_DNA && S.last_bloodtype) + FP.blood_DNA += list(S.last_blood_DNA = S.last_bloodtype) + //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood + FP.update_icon() + update_inv_shoes() //End bloody footprints S.step_action() @@ -80,27 +82,28 @@ var/step_print = dna.species.get_move_trail(src) if(bloodiness && blood_smear[blood_state]) var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(step_print) in T - if(oldFP && (oldFP.blood_state == blood_state && oldFP == dna.species.move_trail && oldFP.blood_color == blood_color)) + if(oldFP && (oldFP.blood_state == blood_state && oldFP.color == bloodtype_to_color(last_bloodtype))) return - else - var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new step_print(T) - if(("taur" in dna.species.mutant_bodyparts) && (dna.features["taur"] != "None") && !lying) - if(dna.features["taur"] in GLOB.noodle_taurs) - FP.icon_state = FOOTPRINT_SNAKE - FP.print_state = FOOTPRINT_SNAKE - else if(dna.features["taur"] in GLOB.paw_taurs) - FP.icon_state = FOOTPRINT_PAW - FP.print_state = FOOTPRINT_PAW - if(!dna.species.move_trail && !lying) //we're assuming people have their chosen snowflake on, so. - FP.icon_state = FOOTPRINT_SHOE - FP.print_state = FOOTPRINT_SHOE + var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new step_print(T) + if(("taur" in dna.species.mutant_bodyparts) && (dna.features["taur"] != "None") && !lying) + if(dna.features["taur"] in GLOB.noodle_taurs) + FP.icon_state = FOOTPRINT_SNAKE + FP.print_state = FOOTPRINT_SNAKE + else if(dna.features["taur"] in GLOB.paw_taurs) + FP.icon_state = FOOTPRINT_PAW + FP.print_state = FOOTPRINT_PAW + if(!dna.species.move_trail && !lying) //we're assuming people have their chosen snowflake on, so. + FP.icon_state = FOOTPRINT_SHOE + FP.print_state = FOOTPRINT_SHOE - FP.add_blood_DNA(return_blood_DNA()) - FP.blood_color = blood_color - FP.entered_dirs |= dir - FP.bloodiness = blood_smear[blood_state] - FP.update_icon() - bloodiness-- + FP.blood_state = blood_state + FP.entered_dirs |= dir + FP.bloodiness = blood_smear[blood_state] + if(last_blood_DNA && last_bloodtype) + FP.blood_DNA += list(last_blood_DNA = last_bloodtype) + //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood + FP.update_icon() + bloodiness-- /mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee. if(dna.species.space_move(src)) diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 41ab5eb79f..10a0bc9e5c 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -474,7 +474,8 @@ if(isturf(next)) if(bloodiness) var/obj/effect/decal/cleanable/blood/footprints/tracks/wheels/B = new(loc) - B.add_blood_DNA(return_blood_DNA()) + if(blood_DNA && blood_DNA.len) + B.blood_DNA |= blood_DNA.Copy() var/newdir = get_dir(next, loc) if(newdir == dir) B.setDir(newdir) @@ -656,7 +657,8 @@ T.add_mob_blood(H) var/list/blood_dna = H.get_blood_dna_list() - add_blood_DNA(blood_dna) + if(blood_dna) + transfer_blood_dna(blood_dna) bloodiness += 4 // player on mulebot attempted to move diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm index cf3742fcc5..4a2e9232dd 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -169,15 +169,23 @@ //Hands for(var/obj/item/I in held_items) if(!(I.item_flags & ABSTRACT)) - msg += "It has [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))].\n" - + if(I.blood_DNA) + msg += "It has [icon2html(I, user)] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in its [get_held_index_name(get_held_index_of_item(I))]!\n" + else + msg += "It has [icon2html(I, user)] \a [I] in its [get_held_index_name(get_held_index_of_item(I))].\n" //Internal storage if(internal_storage && !(internal_storage.item_flags & ABSTRACT)) - msg += "It is holding [internal_storage.get_examine_string(user)] in its internal storage.\n" + if(internal_storage.blood_DNA) + msg += "It is holding [icon2html(internal_storage, user)] [internal_storage.gender==PLURAL?"some":"a"] blood-stained [internal_storage.name] in its internal storage!\n" + else + msg += "It is holding [icon2html(internal_storage, user)] \a [internal_storage] in its internal storage.\n" //Cosmetic hat - provides no function other than looks if(head && !(head.item_flags & ABSTRACT)) - msg += "It is wearing [head.get_examine_string(user)] on its head.\n" + if(head.blood_DNA) + msg += "It is wearing [icon2html(head, user)] [head.gender==PLURAL?"some":"a"] blood-stained [head.name] on its head!\n" + else + msg += "It is wearing [icon2html(head, user)] \a [head] on its head.\n" //Braindead if(!client && stat != DEAD) diff --git a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm index e7dbbda242..9e962f6afb 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm @@ -23,9 +23,15 @@ for(var/obj/item/I in held_items) if(!(I.item_flags & ABSTRACT)) - msg += "It has [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))].\n" + if(I.blood_DNA) + msg += "It has [icon2html(I, user)] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in its [get_held_index_name(get_held_index_of_item(I))]!\n" + else + msg += "It has [icon2html(I, user)] \a [I] in its [get_held_index_name(get_held_index_of_item(I))].\n" if(internal_storage && !(internal_storage.item_flags & ABSTRACT)) - msg += "It is holding [internal_storage.get_examine_string(user)] in its internal storage.\n" + if(internal_storage.blood_DNA) + msg += "It is holding [icon2html(internal_storage, user)] [internal_storage.gender==PLURAL?"some":"a"] blood-stained [internal_storage.name] in its internal storage!\n" + else + msg += "It is holding [icon2html(internal_storage, user)] \a [internal_storage] in its internal storage.\n" msg += "*---------*" to_chat(user, msg) else diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 3d92912f9c..253d92a57f 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -177,6 +177,6 @@ qdel(target) return TRUE var/atom/movable/M = target - SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + M.clean_blood() visible_message("[src] polishes \the [target].") return TRUE diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 157cf1f03f..1f60f5cdb5 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -169,7 +169,7 @@ if(iscarbon(user)) var/mob/living/carbon/C = user user_dna = C.dna - B.add_blood_DNA(user_dna) + B.add_blood(user_dna) var/datum/callback/gibspawner = CALLBACK(GLOBAL_PROC, /proc/spawn_atom_to_turf, /obj/effect/gibspawner/generic, B, 1, FALSE, list(user_dna)) B.throw_at(target, BRAINS_BLOWN_THROW_RANGE, BRAINS_BLOWN_THROW_SPEED, callback=gibspawner) return(BRUTELOSS) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index efae090707..44185b601f 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -161,10 +161,19 @@ var/splatter_dir = dir if(starting) splatter_dir = get_dir(starting, target_loca) - if(isalien(L)) + var/obj/item/bodypart/B = L.get_bodypart(def_zone) + if(B.status == BODYPART_ROBOTIC) // So if you hit a robotic, it sparks instead of bloodspatters + do_sparks(2, FALSE, target.loc) + if(prob(25)) + new /obj/effect/decal/cleanable/oil(target_loca) + else if(isalien(L)) new /obj/effect/temp_visual/dir_setting/bloodsplatter/xenosplatter(target_loca, splatter_dir) else - new /obj/effect/temp_visual/dir_setting/bloodsplatter(target_loca, splatter_dir) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + new /obj/effect/temp_visual/dir_setting/bloodsplatter(target_loca, splatter_dir, bloodtype_to_color(H.dna.blood_type)) + else + new /obj/effect/temp_visual/dir_setting/bloodsplatter(target_loca, splatter_dir, bloodtype_to_color()) if(iscarbon(L)) var/mob/living/carbon/C = L C.bleed(damage) diff --git a/code/modules/projectiles/projectile/bullets/smg.dm b/code/modules/projectiles/projectile/bullets/smg.dm index dfc6df537d..bba9e746be 100644 --- a/code/modules/projectiles/projectile/bullets/smg.dm +++ b/code/modules/projectiles/projectile/bullets/smg.dm @@ -19,27 +19,27 @@ var/turf/T = get_turf(target) //section shamelessly copypasta'd from the clean component - SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + clean_blood()//blood overlays get weird otherwise, because the sprite changes. for(var/A in T) if(is_cleanable(A)) qdel(A) else if(istype(A, /obj/item)) var/obj/item/I = A - SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + I.clean_blood() if(ismob(I.loc)) var/mob/M = I.loc M.regenerate_icons() else if(ishuman(A)) var/mob/living/carbon/human/cleaned_human = A if(cleaned_human.head) - SEND_SIGNAL(cleaned_human.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + cleaned_human.head.clean_blood() if(cleaned_human.wear_suit) - SEND_SIGNAL(cleaned_human.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + cleaned_human.wear_suit.clean_blood() else if(cleaned_human.w_uniform) - SEND_SIGNAL(cleaned_human.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + cleaned_human.w_uniform.clean_blood() if(cleaned_human.shoes) - SEND_SIGNAL(cleaned_human.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - SEND_SIGNAL(cleaned_human, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + cleaned_human.shoes.clean_blood() + cleaned_human.clean_blood() cleaned_human.wash_cream() cleaned_human.regenerate_icons() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index d91b675e22..a4e56c9429 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -41,12 +41,12 @@ C.blood_volume = min(C.blood_volume + round(reac_volume, 0.1), BLOOD_VOLUME_MAXIMUM) if(reac_volume >= 10 && istype(L)) - L.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) + L.add_blood(list(data["blood_DNA"] = data["blood_type"])) L.color = bloodtype_to_color(data["blood_type"]) /datum/reagent/blood/reaction_obj(obj/O, volume) if(volume >= 3 && istype(O)) - O.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) + O.add_blood(list(data["blood_DNA"] = data["blood_type"])) O.color = bloodtype_to_color(data["blood_type"]) /datum/reagent/blood/on_new(list/data) @@ -1004,7 +1004,7 @@ /datum/reagent/iron/on_mob_life(mob/living/carbon/C) if(C.blood_volume < BLOOD_VOLUME_NORMAL) - C.blood_volume += 0.5 + C.blood_volume += 0.01 //we'll have synthetics from medbay. ..() /datum/reagent/iron/reaction_mob(mob/living/M, method=TOUCH, reac_volume) @@ -1128,12 +1128,12 @@ else if(O) O.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + O.clean_blood() /datum/reagent/space_cleaner/reaction_turf(turf/T, reac_volume) if(reac_volume >= 1) T.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + T.clean_blood() for(var/obj/effect/decal/cleanable/C in T) qdel(C) @@ -1151,26 +1151,26 @@ H.lip_style = null H.update_body() for(var/obj/item/I in C.held_items) - SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + I.clean_blood() if(C.wear_mask) - if(SEND_SIGNAL(C.wear_mask, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) + if(C.clean_blood()) C.update_inv_wear_mask() if(ishuman(M)) var/mob/living/carbon/human/H = C if(H.head) - if(SEND_SIGNAL(H.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) + if(H.head.clean_blood()) H.update_inv_head() if(H.wear_suit) - if(SEND_SIGNAL(H.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) + if(H.wear_suit.clean_blood()) H.update_inv_wear_suit() else if(H.w_uniform) - if(SEND_SIGNAL(H.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) + if(H.w_uniform.clean_blood()) H.update_inv_w_uniform() if(H.shoes) - if(SEND_SIGNAL(H.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) + if(H.shoes.clean_blood()) H.update_inv_shoes() H.wash_cream() - SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + M.clean_blood() /datum/reagent/space_cleaner/ez_clean name = "EZ Clean" diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index a710d127fb..d250dcff0e 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -48,7 +48,7 @@ /obj/item/reagent_containers/blood/random/Initialize() icon_state = "bloodpack" - blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-", "L", "SY") + blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-", "L", "SY", "HF", "GEL") return ..() /obj/item/reagent_containers/blood/APlus @@ -78,6 +78,12 @@ /obj/item/reagent_containers/blood/synthetics blood_type = "SY" +/obj/item/reagent_containers/blood/oilblood + blood_type = "HF" + +/obj/item/reagent_containers/blood/jellyblood + blood_type = "GEL" + /obj/item/reagent_containers/blood/attackby(obj/item/I, mob/user, params) if (istype(I, /obj/item/pen) || istype(I, /obj/item/toy/crayon)) if(!user.is_literate()) diff --git a/icons/mob/dam_mob.dmi b/icons/mob/dam_mob.dmi index fe92746b43ece7dce16cb6364b0c600f3c709c6e..c34b57b434be7c6228ec585974944b1bc4382088 100644 GIT binary patch delta 15405 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 delta 15467 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 F{0|bemxBNR diff --git a/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm b/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm index e6ba224f8d..c6e1a4cbbd 100644 --- a/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm +++ b/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm @@ -327,7 +327,7 @@ var/mob/M = loc M.update_inv_hands() - SEND_SIGNAL(src, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)//blood overlays get weird otherwise, because the sprite changes. (retained from original desword because I have no idea what this is) + clean_blood()//blood overlays get weird otherwise, because the sprite changes. /obj/item/twohanded/hypereutactic/AltClick(mob/living/user) if(!in_range(src, user)) //Basic checks to prevent abuse diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm index 0f71a71add..cb918da21f 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -4,7 +4,7 @@ else if(O) O.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + O.clean_blood() /datum/reagent/syndicateadrenals name = "Syndicate Adrenaline" diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index 1c857bf8a6..d81fc62d6c 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -2,7 +2,7 @@ /datum/reagent/consumable/semen name = "Semen" id = "semen" - description = "Sperm from some animal. Useless for anything but insemination, really." + description = "Sperm from some animal. I bet you'll drink this out of a bucket someday." taste_description = "something salty" taste_mult = 2 //Not very overpowering flavor data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null) @@ -21,7 +21,7 @@ S = new(T) S.reagents.add_reagent("semen", reac_volume) if(data["blood_DNA"]) - S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) + S.add_blood(list(data["blood_DNA"] = data["blood_type"])) /obj/effect/decal/cleanable/semen name = "semen" @@ -36,10 +36,12 @@ /obj/effect/decal/cleanable/semen/New() ..() dir = pick(1,2,4,8) - add_blood_DNA(list("Non-human DNA" = "A+")) + add_blood(list("Non-human DNA" = "A+")) /obj/effect/decal/cleanable/semen/replace_decal(obj/effect/decal/cleanable/semen/S) - S.add_blood_DNA(return_blood_DNA()) + if (S.blood_DNA) + blood_DNA |= S.blood_DNA.Copy() + ..() /datum/reagent/consumable/femcum name = "Female Ejaculate" @@ -67,10 +69,11 @@ /obj/effect/decal/cleanable/femcum/New() ..() dir = pick(1,2,4,8) - add_blood_DNA(list("Non-human DNA" = "A+")) + add_blood(list("Non-human DNA" = "A+")) /obj/effect/decal/cleanable/femcum/replace_decal(obj/effect/decal/cleanable/femcum/F) - F.add_blood_DNA(return_blood_DNA()) + if(F.blood_DNA) + blood_DNA |= F.blood_DNA.Copy() ..() /datum/reagent/consumable/femcum/reaction_turf(turf/T, reac_volume) @@ -84,7 +87,7 @@ S = new(T) S.reagents.add_reagent("femcum", reac_volume) if(data["blood_DNA"]) - S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) + S.add_blood(list(data["blood_DNA"] = data["blood_type"])) //aphrodisiac & anaphrodisiac From f6b3260eebebc05c81a06d2d34ca8280db911d46 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 22 May 2019 04:19:59 -0500 Subject: [PATCH 037/469] oh right. --- tgstation.dme | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tgstation.dme b/tgstation.dme index a7c1e4bef7..476571c577 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -46,7 +46,6 @@ #include "code\__DEFINES\flags.dm" #include "code\__DEFINES\food.dm" #include "code\__DEFINES\footsteps.dm" -#include "code\__DEFINES\forensics.dm" #include "code\__DEFINES\hud.dm" #include "code\__DEFINES\integrated_electronics.dm" #include "code\__DEFINES\interaction_flags.dm" @@ -348,7 +347,6 @@ #include "code\datums\components\empprotection.dm" #include "code\datums\components\footstep.dm" #include "code\datums\components\forced_gravity.dm" -#include "code\datums\components\forensics.dm" #include "code\datums\components\infective.dm" #include "code\datums\components\jousting.dm" #include "code\datums\components\knockoff.dm" @@ -375,7 +373,6 @@ #include "code\datums\components\uplink.dm" #include "code\datums\components\wearertargeting.dm" #include "code\datums\components\wet_floor.dm" -#include "code\datums\components\decals\blood.dm" #include "code\datums\components\storage\storage.dm" #include "code\datums\components\storage\concrete\_concrete.dm" #include "code\datums\components\storage\concrete\bag_of_holding.dm" @@ -1227,13 +1224,13 @@ #include "code\modules\antagonists\clockcult\clock_scriptures\scripture_scripts.dm" #include "code\modules\antagonists\clockcult\clock_structures\_trap_object.dm" #include "code\modules\antagonists\clockcult\clock_structures\ark_of_the_clockwork_justicar.dm" -#include "code\modules\antagonists\clockcult\clock_structures\stargazer.dm" #include "code\modules\antagonists\clockcult\clock_structures\clockwork_obelisk.dm" #include "code\modules\antagonists\clockcult\clock_structures\eminence_spire.dm" #include "code\modules\antagonists\clockcult\clock_structures\heralds_beacon.dm" #include "code\modules\antagonists\clockcult\clock_structures\mania_motor.dm" #include "code\modules\antagonists\clockcult\clock_structures\ocular_warden.dm" #include "code\modules\antagonists\clockcult\clock_structures\ratvar_the_clockwork_justicar.dm" +#include "code\modules\antagonists\clockcult\clock_structures\stargazer.dm" #include "code\modules\antagonists\clockcult\clock_structures\taunting_trail.dm" #include "code\modules\antagonists\clockcult\clock_structures\wall_gear.dm" #include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\lever.dm" From 4324d08f321b475ee9a2e2189d4927af6f9a786d Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 22 May 2019 04:52:21 -0500 Subject: [PATCH 038/469] aaaaAAAAAAAA NOW WHY DO I HAVE INFINITE FOOTPRINTS AAAAAAAAAAAAA --- code/game/objects/effects/decals/cleanable/gibs.dm | 3 --- code/game/objects/effects/decals/cleanable/humans.dm | 5 ----- code/game/objects/effects/spawners/gibspawner.dm | 3 ++- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 7a36ce8f7a..09b0ea034a 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -46,11 +46,8 @@ GET_COMPONENT(infective, /datum/component/infective) if(infective) diseases = infective.diseases - var/obj/effect/decal/cleanable/blood/gibs/gibbers = src var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) splat.transfer_blood_dna(blood_DNA) - splat.color = gibbers.blood_color - splat.blood_color = gibbers.blood_color if(!step_to(src, get_step(src, direction), 0)) break diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 0bfec90afd..b4caf1230d 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -91,7 +91,6 @@ var/obj/item/clothing/shoes/S = H.shoes if(S && S.blood_smear[blood_state]) S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) - S.blood_color = blood_color shoe_types |= S.type if (!(entered_dirs & H.dir)) entered_dirs |= H.dir @@ -100,7 +99,6 @@ else if(H.bloodiness && H.blood_smear[blood_state]) H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) H.bloodiness = H.bloodinessmax - H.blood_color = blood_color if (!(entered_dirs & H.dir)) entered_dirs |= H.dir update_icon() @@ -115,7 +113,6 @@ if(color != bloodtype_to_color(S.last_bloodtype))//last entry - we check its color return S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) - S.blood_color = blood_color shoe_types |= S.type if (!(exited_dirs & H.dir)) exited_dirs |= H.dir @@ -124,7 +121,6 @@ else if(H.bloodiness && H.blood_smear[blood_state]) H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) H.bloodiness = H.bloodinessmax - H.blood_color = blood_color if (!(exited_dirs & H.dir)) exited_dirs |= H.dir update_icon() @@ -146,7 +142,6 @@ add_overlay(bloodstep_overlay) alpha = BLOODY_FOOTPRINT_BASE_ALPHA + bloodiness - color = blood_color /obj/effect/decal/cleanable/blood/footprints/tracks/examine(mob/user) diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index 0cb17f11be..bd49c44dd2 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -74,7 +74,8 @@ gib.blood_DNA += dna_to_add // color them properly, please. - gib.body_colors = body_coloring + if(gib.gib_overlay) + gib.body_colors = body_coloring gib.update_icon() var/list/directions = gibdirections[i] From 9f8089628024f50a1fde34e1ced93089f5d5b3a4 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 26 May 2019 05:36:33 -0500 Subject: [PATCH 039/469] eh, was going somewhere with this IPC gibspawner, looking into infinite footprints --- code/game/objects/effects/decals/cleanable.dm | 17 ++--- .../effects/decals/cleanable/aliens.dm | 4 +- .../objects/effects/decals/cleanable/gibs.dm | 63 +++++++++++++++++- .../effects/decals/cleanable/humans.dm | 18 ++--- .../objects/effects/spawners/gibspawner.dm | 36 ++++++---- .../mob/living/carbon/carbon_defines.dm | 1 + code/modules/mob/living/carbon/human/death.dm | 5 +- code/modules/mob/living/carbon/human/human.dm | 1 - .../mob/living/carbon/human/human_defines.dm | 3 - .../mob/living/carbon/human/human_movement.dm | 57 +++++++--------- .../mob/living/carbon/human/species.dm | 6 ++ .../mob/living/carbon/human/update_icons.dm | 28 +++++++- code/modules/surgery/bodyparts/helpers.dm | 21 ++++++ icons/effects/blood.dmi | Bin 96090 -> 96012 bytes 14 files changed, 186 insertions(+), 74 deletions(-) diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 61dff565af..317a105b2d 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -70,7 +70,6 @@ //Add "bloodiness" of this blood's type, to the human's shoes //This is on /cleanable because fuck this ancient mess /obj/effect/decal/cleanable/Crossed(atom/movable/O) - ..() if(ishuman(O)) var/mob/living/carbon/human/H = O if(H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) @@ -84,28 +83,26 @@ S.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,S.blood_smear[blood_state]+add_blood) if(blood_DNA && blood_DNA.len) S.add_blood(blood_DNA) - S.blood_state = blood_state - S.blood_color = blood_color + S.blood_smear = blood_state update_icon() H.update_inv_shoes() - else if(H.bloodiness && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) + else if(!H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) var/add_blood = 0 - if(H.bloodiness >= 1) - add_blood = 5 + if(bloodiness >= BLOOD_GAIN_PER_STEP) + add_blood = BLOOD_GAIN_PER_STEP else add_blood = bloodiness bloodiness -= add_blood H.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,H.blood_smear[blood_state]+add_blood) - H.bloodiness = add_blood if(blood_DNA && blood_DNA.len) H.add_blood(blood_DNA) - H.blood_state = blood_state - H.blood_color = blood_color + H.blood_smear = blood_state update_icon() + H.update_inv_shoes() /obj/effect/decal/cleanable/proc/can_bloodcrawl_in() if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY)) return bloodiness else - return 0 + return FALSE diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 33d1e41bef..900f392796 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -30,10 +30,8 @@ GET_COMPONENT(infective, /datum/component/infective) if(infective) diseases = infective.diseases - var/obj/effect/decal/cleanable/blood/gibs/gibbers = src var/obj/effect/decal/cleanable/blood/splatter/xeno/splat = new /obj/effect/decal/cleanable/blood/splatter/xeno(loc, diseases) - splat.color = gibbers.blood_color - splat.blood_color = gibbers.blood_color + splat.transfer_blood_dna(blood_DNA) if(!step_to(src, get_step(src, direction), 0)) break diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 09b0ea034a..48670957cd 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -183,4 +183,65 @@ . = ..() reagents.add_reagent("liquidsyntheticgibs", 5) update_icon() - guts() \ No newline at end of file + guts() + +//IPCs +/obj/effect/decal/cleanable/blood/gibs/ipc + desc = "They look sharp yet oozing." + +/obj/effect/decal/cleanable/blood/gibs/ipc/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidoilgibs", 5) + update_icon() + guts() + +/obj/effect/decal/cleanable/blood/gibs/ipc/guts() + if(gib_overlay) + var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-ipcoverlay", color = blood_color, layer = -LOW_OBJ_LAYER) + var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-ipcoverlay", color = body_colors, layer = -LOW_OBJ_LAYER) + if(!slimy_gibs) + gibz.appearance_flags = RESET_COLOR + add_overlay(gibz) + else + gibz.appearance_flags = RESET_COLOR + add_overlay(gibz) + add_overlay(gibz2) + +/obj/effect/decal/cleanable/blood/gibs/ipc/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/body + random_icon_states = list("gibhead", "gibtorso") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/torso + random_icon_states = list("gibtorso") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/limb + random_icon_states = list("gibleg", "gibarm") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/synth + desc = "They look sludgy and disgusting." + +/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidsyntheticgibs", 5) + update_icon() + guts() diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index b4caf1230d..ec1f7578b5 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -81,31 +81,32 @@ random_icon_states = null var/entered_dirs = 0 var/exited_dirs = 0 - var/print_state = FOOTPRINT_SHOE //the icon state to load images from + blood_state = BLOOD_STATE_BLOOD //the icon state to load images from + var/print_state = FOOTPRINT_SHOE //the print state for different feet var/list/shoe_types = list() /obj/effect/decal/cleanable/blood/footprints/tracks/Crossed(atom/movable/O) - ..() if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes if(S && S.blood_smear[blood_state]) + if(color != bloodtype_to_color(S.last_bloodtype)) + return S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(entered_dirs & H.dir)) entered_dirs |= H.dir update_icon() - else if(H.bloodiness && H.blood_smear[blood_state]) + else if(H && H.blood_smear[blood_state]) + if(color != bloodtype_to_color(H.last_bloodtype)) + return H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) - H.bloodiness = H.bloodinessmax if (!(entered_dirs & H.dir)) entered_dirs |= H.dir update_icon() - /obj/effect/decal/cleanable/blood/footprints/tracks/Uncrossed(atom/movable/O) - ..() if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes @@ -118,9 +119,10 @@ exited_dirs |= H.dir update_icon() - else if(H.bloodiness && H.blood_smear[blood_state]) + else if(H && H.blood_smear[blood_state]) + if(color != bloodtype_to_color(H.last_bloodtype))//last entry - we check its color + return H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) - H.bloodiness = H.bloodinessmax if (!(exited_dirs & H.dir)) exited_dirs |= H.dir update_icon() diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index bd49c44dd2..324436092d 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -1,6 +1,6 @@ /obj/effect/gibspawner - var/sparks = 0 //whether sparks spread + var/sparks = FALSE //whether sparks spread var/virusProb = 20 //the chance for viruses to spread on the gibs var/gib_mob_type //generate a fake mob to transfer DNA from if we weren't passed a mob. var/gib_mob_species //We'll want to nip-pick their species for blood type stuff @@ -37,7 +37,7 @@ if(ishuman(source_mob)) var/mob/living/carbon/human/H = source_mob if(H.dna.species.use_skintones) - body_coloring = skintone2hex(H.skin_tone) + body_coloring = "#[skintone2hex(H.skin_tone)]" else body_coloring = "#[H.dna.features["mcolor"]]" @@ -49,16 +49,18 @@ H.set_species(gib_mob_species) dna_to_add = temp_mob.get_blood_dna_list() if(H.dna.species.use_skintones) - body_coloring = skintone2hex(H.skin_tone) + body_coloring = "#[skintone2hex(H.skin_tone)]" else body_coloring = "#[H.dna.features["mcolor"]]" qdel(H) else dna_to_add = temp_mob.get_blood_dna_list() qdel(temp_mob) - else + else if(!issilicon(temp_mob)) dna_to_add = temp_mob.get_blood_dna_list() qdel(temp_mob) + else + qdel(temp_mob) else dna_to_add = list("Non-human DNA" = random_blood_type()) //else, generate a random bloodtype for it. @@ -72,11 +74,12 @@ var/mob/living/carbon/digester = loc digester.stomach_contents += gib - gib.blood_DNA += dna_to_add - // color them properly, please. - if(gib.gib_overlay) - gib.body_colors = body_coloring - gib.update_icon() + if(dna_to_add) + gib.blood_DNA += dna_to_add + // color them properly, please. + if(gib.gib_overlay) + gib.body_colors = body_coloring + gib.update_icon() var/list/directions = gibdirections[i] if(isturf(loc)) @@ -128,13 +131,21 @@ /obj/effect/gibspawner/human/slimeperson gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime/up, /obj/effect/decal/cleanable/blood/gibs/slime/down, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/body, /obj/effect/decal/cleanable/blood/gibs/slime/limb, /obj/effect/decal/cleanable/blood/gibs/slime/core) - gib_mob_species = /datum/species/jelly /obj/effect/gibspawner/human/slimeperson/bodypartless gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/torso) gibamounts = list(2, 0, 1, 1, 2, 0) +/obj/effect/gibspawner/human/ipc + sparks = TRUE + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/ipc/up, /obj/effect/decal/cleanable/blood/gibs/ipc/down, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/body, /obj/effect/decal/cleanable/blood/gibs/ipc/limb, /obj/effect/decal/cleanable/blood/gibs/ipc/core) + gibamounts = list(1, 1, 1, 1, 1, 1) + gib_mob_type = /mob/living/carbon/human + gib_mob_species = /datum/species/ipc + +/obj/effect/gibspawner/human/ipc/bodypartless + /obj/effect/gibspawner/xeno gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/up/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/down/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/body/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/limb/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core/xeno) gibamounts = list(1, 1, 1, 1, 1, 1, 1) @@ -180,7 +191,7 @@ return ..() /obj/effect/gibspawner/robot - sparks = 1 + sparks = TRUE gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up, /obj/effect/decal/cleanable/robot_debris/down, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris/limb) gibamounts = list(1, 1, 1, 1, 1, 1) gib_mob_type = /mob/living/silicon @@ -191,6 +202,3 @@ gibamounts[6] = pick(0, 1, 2) return ..() -/obj/effect/gibspawner/robot/ipc - gib_mob_type = /mob/living/carbon/human - gib_mob_species = /datum/species/ipc diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index f782289e18..ed3280640a 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -49,6 +49,7 @@ //Gets filled up in create_bodyparts() var/list/hand_bodyparts = list() //a collection of arms (or actually whatever the fug /bodyparts you monsters use to wreck my systems) + var/list/leg_bodyparts = list() var/icon_render_key = "" var/static/list/limb_icon_cache = list() diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 9c2a082b1f..01ea3d540e 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -12,7 +12,10 @@ new /obj/effect/gibspawner/human/slimeperson/bodypartless(drop_location(), dna, get_static_viruses()) if(isipcperson(src)) - new /obj/effect/gibspawner/robot/ipc(drop_location(), dna, get_static_viruses()) + if(with_bodyparts) + new /obj/effect/gibspawner/human/ipc(drop_location(), dna, get_static_viruses()) + else + new /obj/effect/gibspawner/human/ipc/bodypartless(drop_location(), dna, get_static_viruses()) if(isxenoperson(src)) if(with_bodyparts) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index bbf77eb8b5..894f69ebbe 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -698,7 +698,6 @@ if(H.bloody_feet) H.bloody_feet = 0 H.update_inv_shoes() - bloodiness = 0 update_icons() //apply the now updated overlays to the mob diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 1fe16b3a2e..7819eb8356 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -43,13 +43,10 @@ var/bleed_rate = 0 //how much are we bleeding var/bleedsuppress = 0 //for stopping bloodloss, eventually this will be limb-based like bleeding - var/bloodiness = 0 - var/bloodinessmax = 5 var/last_bloodtype = ""//used to track the last bloodtype to have graced this filthy spaceman; makes for better performing footprint shenanigans var/last_blood_DNA = ""//same as last one var/blood_state = BLOOD_STATE_NOT_BLOODY var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) - var/blood_color //For blood smearing stuff var/name_override //For temporary visible name changes diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 024f2590e7..01e81832ef 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -46,23 +46,21 @@ for(var/datum/mutation/human/HM in dna.mutations) HM.on_move(src, NewLoc) - if(!buckled) - if(shoes) - if(!lying) - if(loc == NewLoc) - if(!has_gravity(loc)) + if(shoes) + if(!lying && !buckled) + if(loc == NewLoc) + if(!has_gravity(loc)) + return + var/obj/item/clothing/shoes/S = shoes + //Bloody footprints + var/turf/T = get_turf(src) + var/step_print = dna.species.get_move_trail(src) + if(S.blood_smear && S.blood_smear[S.blood_state]) + var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(step_print) in T + if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == bloodtype_to_color(S.last_bloodtype))) return - var/obj/item/clothing/shoes/S = shoes - //Bloody footprints - var/turf/T = get_turf(src) - if(S.blood_smear && S.blood_smear[S.blood_state]) - var/obj/effect/decal/cleanable/blood/footprints/tracks/shoe/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks/shoe) in T - if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == bloodtype_to_color(S.last_bloodtype))) - return S.blood_smear[S.blood_state] = max(0, S.blood_smear[S.blood_state]-BLOOD_LOSS_PER_STEP) - var/obj/effect/decal/cleanable/blood/footprints/tracks/shoe/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/shoe(T) - FP.icon_state = FOOTPRINT_SHOE - FP.print_state = FOOTPRINT_SHOE + var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new step_print(T) FP.blood_state = S.blood_state FP.entered_dirs |= dir FP.bloodiness = S.blood_smear[S.blood_state] @@ -71,31 +69,24 @@ //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood FP.update_icon() update_inv_shoes() - //End bloody footprints + //End bloody footprints - S.step_action() - else + S.step_action() + + else if(!shoes) + if(!buckled) if(loc == NewLoc) if(!has_gravity(loc)) return + //Bloody footprints without shoes var/turf/T = get_turf(src) var/step_print = dna.species.get_move_trail(src) - if(bloodiness && blood_smear[blood_state]) - var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(step_print) in T + if(blood_smear && blood_smear[blood_state]) + var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(step_print) in T if(oldFP && (oldFP.blood_state == blood_state && oldFP.color == bloodtype_to_color(last_bloodtype))) return + blood_smear[blood_state] = max(0, blood_smear[blood_state]-BLOOD_LOSS_PER_STEP) var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new step_print(T) - if(("taur" in dna.species.mutant_bodyparts) && (dna.features["taur"] != "None") && !lying) - if(dna.features["taur"] in GLOB.noodle_taurs) - FP.icon_state = FOOTPRINT_SNAKE - FP.print_state = FOOTPRINT_SNAKE - else if(dna.features["taur"] in GLOB.paw_taurs) - FP.icon_state = FOOTPRINT_PAW - FP.print_state = FOOTPRINT_PAW - if(!dna.species.move_trail && !lying) //we're assuming people have their chosen snowflake on, so. - FP.icon_state = FOOTPRINT_SHOE - FP.print_state = FOOTPRINT_SHOE - FP.blood_state = blood_state FP.entered_dirs |= dir FP.bloodiness = blood_smear[blood_state] @@ -103,7 +94,9 @@ FP.blood_DNA += list(last_blood_DNA = last_bloodtype) //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood FP.update_icon() - bloodiness-- + update_inv_shoes() + //End bloody footprints + /mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee. if(dna.species.space_move(src)) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index f1ea146927..f4c7a584d4 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -636,6 +636,12 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(!H.dna.features["taur"] || H.dna.features["taur"] == "None" || (H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR))) bodyparts_to_add -= "taur" + if(H.dna.features["taur"] != "None") + if(H.dna.features["taur"] in GLOB.noodle_taurs) + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/snake + else if(H.dna.features["taur"] in GLOB.paw_taurs) + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/paw + //END EDIT //Digitigrade legs are stuck in the phantom zone between true limbs and mutant bodyparts. Mainly it just needs more agressive updating than most limbs. diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 2313dace89..946024760d 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -185,7 +185,7 @@ There are several things that need to be remembered: inv.update_icon() if(!gloves && bloody_hands) - var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyhands", -GLOVES_LAYER, color = blood_color) + var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyhands", -GLOVES_LAYER, color = blood_DNA_to_color()) if(get_num_arms() < 2) if(has_left_hand()) bloody_overlay.icon_state = "bloodyhands_left" @@ -276,6 +276,32 @@ There are several things that need to be remembered: var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES] inv.update_icon() + if(!shoes && bloody_feet) + var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) + if(dna.features["taur"] != "None") + if(dna.features["taur"] in GLOB.noodle_taurs) + bloody_overlay = mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "snekbloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) + if(get_num_legs() < 2) + if(has_left_leg()) + bloody_overlay.icon_state = "snekbloodyfeet_left" + else if(has_right_leg()) + bloody_overlay.icon_state = "snekbloodyfeet_right" + else if(dna.features["taur"] in GLOB.paw_taurs) + bloody_overlay = mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "pawbloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) + if(get_num_legs() < 2) + if(has_left_leg()) + bloody_overlay.icon_state = "pawbloodyfeet_left" + else if(has_right_leg()) + bloody_overlay.icon_state = "pawbloodyfeet_right" + else + if(get_num_legs() < 2) + if(has_left_leg()) + bloody_overlay.icon_state = "bloodyfeet_left" + else if(has_right_leg()) + bloody_overlay.icon_state = "bloodyfeet_right" + + overlays_standing[GLOVES_LAYER] = bloody_overlay + if(shoes) var/obj/item/clothing/shoes/S = shoes shoes.screen_loc = ui_shoes //move the item to the appropriate screen loc diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index a2e8017956..c6e2da0849 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -49,6 +49,27 @@ +/mob/proc/has_left_leg() + return TRUE + +/mob/living/carbon/has_left_leg() + var/obj/item/bodypart/l_leg = get_bodypart(BODY_ZONE_L_LEG) + if(l_leg) + return TRUE + else + return FALSE + +/mob/proc/has_right_leg() + return TRUE + +/mob/living/carbon/has_right_leg() + var/obj/item/bodypart/r_leg = get_bodypart(BODY_ZONE_R_LEG) + if(r_leg) + return TRUE + else + return FALSE + + //Limb numbers /mob/proc/get_num_arms(check_disabled = TRUE) return 2 diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index 4812f95fc8b53e983e388a32e9c352f5d06b6673..87da71944140b8ce5a341444f4fa652127f205ab 100644 GIT binary patch literal 96012 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�(&@S0f4 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%0Ahj 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
-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 Spr&L10000 Date: Mon, 3 Jun 2019 20:06:25 -0500 Subject: [PATCH 040/469] lel --- code/game/objects/effects/decals/cleanable.dm | 3 ++ .../effects/decals/cleanable/humans.dm | 2 +- code/game/turfs/turf.dm | 35 +++++++++++++ code/modules/clothing/clothing.dm | 5 -- .../detectivework/footprints_and_rag.dm | 7 ++- .../mob/living/carbon/human/human_defines.dm | 5 -- .../mob/living/carbon/human/human_movement.dm | 52 ------------------- 7 files changed, 44 insertions(+), 65 deletions(-) diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 317a105b2d..babc012719 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -70,6 +70,7 @@ //Add "bloodiness" of this blood's type, to the human's shoes //This is on /cleanable because fuck this ancient mess /obj/effect/decal/cleanable/Crossed(atom/movable/O) + ..() if(ishuman(O)) var/mob/living/carbon/human/H = O if(H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) @@ -80,6 +81,7 @@ else add_blood = bloodiness bloodiness -= add_blood + to_chat(world, "S.blood_state is [S.blood_state], & blood smear state is [S.blood_smear[S.blood_state]]") S.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,S.blood_smear[blood_state]+add_blood) if(blood_DNA && blood_DNA.len) S.add_blood(blood_DNA) @@ -94,6 +96,7 @@ else add_blood = bloodiness bloodiness -= add_blood + to_chat(world, "blood_state is [blood_state], & blood smear state is [H.blood_smear[blood_state]]") H.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,H.blood_smear[blood_state]+add_blood) if(blood_DNA && blood_DNA.len) H.add_blood(blood_DNA) diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index ec1f7578b5..711e792752 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -130,7 +130,7 @@ /obj/effect/decal/cleanable/blood/footprints/tracks/update_icon() ..() cut_overlays() - + to_chat(world, "[src] called update_icon with [print_state]") for(var/Ddir in GLOB.cardinals) if(entered_dirs & Ddir) var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index afe275f9b9..13ea59cb52 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -194,9 +194,44 @@ if(O.obj_flags & FROZEN) O.make_unfrozen() + if(isliving(A)) + var/mob/living/M = A + if(ishuman(M)) + var/mob/living/carbon/human/H = M + // Tracking blood + var/list/bloodDNA = null + var/bloodcolor="" + if(H.shoes) + var/obj/item/clothing/shoes/S = H.shoes + if(istype(S)) + S.step_action() + if(S.track_blood && S.blood_DNA) + bloodDNA = S.blood_DNA + bloodcolor = S.blood_color + S.track_blood-- + else + if(H.track_blood && H.feet_blood_DNA) + bloodDNA = H.feet_blood_DNA + bloodcolor = H.feet_blood_color + H.track_blood-- + + if (bloodDNA && H.species.get_move_trail(H)) + src.AddTracks(H.species.get_move_trail(H),bloodDNA,H.dir,0,bloodcolor) // Coming + var/turf/simulated/from = get_step(H,reverse_direction(H.dir)) + if(istype(from) && from) + from.AddTracks(H.species.get_move_trail(H),bloodDNA,0,H.dir,bloodcolor) // Going + + bloodDNA = null + /turf/proc/is_plasteel_floor() return FALSE +/turf/open/proc/AddTracks(var/typepath,var/bloodDNA,var/comingdir,var/goingdir,var/bloodcolor=COLOR_BLOOD_HUMAN) + var/obj/effect/decal/cleanable/blood/tracks/tracks = locate(typepath) in src + if(!tracks) + tracks = new typepath(src) + tracks.AddTracks(bloodDNA,comingdir,goingdir,bloodcolor) + // A proc in case it needs to be recreated or badmins want to change the baseturfs /turf/proc/assemble_baseturfs(turf/fake_baseturf_type) var/static/list/created_baseturf_lists = list() diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index caf12d4b86..a24a6eff95 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -41,11 +41,6 @@ var/dynamic_hair_suffix = ""//head > mask for head hair var/dynamic_fhair_suffix = ""//mask > head for facial hair - var/blood_state = BLOOD_STATE_NOT_BLOODY - var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) - var/last_bloodtype = ""//used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans - var/last_blood_DNA = ""//same as last one - /obj/item/clothing/Initialize() . = ..() if(ispath(pocket_storage_component_path)) diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm index 611001ecf9..1f4def8905 100644 --- a/code/modules/detectivework/footprints_and_rag.dm +++ b/code/modules/detectivework/footprints_and_rag.dm @@ -1,13 +1,16 @@ /mob var/bloody_hands = 0 - var/bloody_feet = 0 + var/track_blood = 0 + var/feet_blood_color + var/last_bloodtype = ""//used to track the last bloodtype to have graced this filthy spaceman; makes for better performing footprint shenanigans + var/last_blood_DNA = ""//same as last one /obj/item/clothing/gloves var/transfer_blood = 0 /obj/item/clothing/shoes - var/transfer_blood = 0 + var/track_blood = 0 /obj/item/reagent_containers/glass/rag diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 7819eb8356..d1ec7f3e4b 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -43,11 +43,6 @@ var/bleed_rate = 0 //how much are we bleeding var/bleedsuppress = 0 //for stopping bloodloss, eventually this will be limb-based like bleeding - var/last_bloodtype = ""//used to track the last bloodtype to have graced this filthy spaceman; makes for better performing footprint shenanigans - var/last_blood_DNA = ""//same as last one - var/blood_state = BLOOD_STATE_NOT_BLOODY - var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) - var/name_override //For temporary visible name changes var/nameless = FALSE //For drones of both the insectoid and robotic kind. And other types of nameless critters. diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 01e81832ef..4ee48f2d09 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -46,58 +46,6 @@ for(var/datum/mutation/human/HM in dna.mutations) HM.on_move(src, NewLoc) - if(shoes) - if(!lying && !buckled) - if(loc == NewLoc) - if(!has_gravity(loc)) - return - var/obj/item/clothing/shoes/S = shoes - //Bloody footprints - var/turf/T = get_turf(src) - var/step_print = dna.species.get_move_trail(src) - if(S.blood_smear && S.blood_smear[S.blood_state]) - var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(step_print) in T - if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == bloodtype_to_color(S.last_bloodtype))) - return - S.blood_smear[S.blood_state] = max(0, S.blood_smear[S.blood_state]-BLOOD_LOSS_PER_STEP) - var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new step_print(T) - FP.blood_state = S.blood_state - FP.entered_dirs |= dir - FP.bloodiness = S.blood_smear[S.blood_state] - if(S.last_blood_DNA && S.last_bloodtype) - FP.blood_DNA += list(S.last_blood_DNA = S.last_bloodtype) - //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood - FP.update_icon() - update_inv_shoes() - //End bloody footprints - - S.step_action() - - else if(!shoes) - if(!buckled) - if(loc == NewLoc) - if(!has_gravity(loc)) - return - //Bloody footprints without shoes - var/turf/T = get_turf(src) - var/step_print = dna.species.get_move_trail(src) - if(blood_smear && blood_smear[blood_state]) - var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(step_print) in T - if(oldFP && (oldFP.blood_state == blood_state && oldFP.color == bloodtype_to_color(last_bloodtype))) - return - blood_smear[blood_state] = max(0, blood_smear[blood_state]-BLOOD_LOSS_PER_STEP) - var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new step_print(T) - FP.blood_state = blood_state - FP.entered_dirs |= dir - FP.bloodiness = blood_smear[blood_state] - if(last_blood_DNA && last_bloodtype) - FP.blood_DNA += list(last_blood_DNA = last_bloodtype) - //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood - FP.update_icon() - update_inv_shoes() - //End bloody footprints - - /mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee. if(dna.species.space_move(src)) return TRUE From 11d10d38052d7cd2077a5b698f4c555b01780354 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 5 Jun 2019 04:55:36 -0500 Subject: [PATCH 041/469] fuckit, I'm just gunna wholesale port from baycode I guess --- code/__HELPERS/type2type.dm | 14 + code/game/objects/effects/decals/cleanable.dm | 46 +--- .../effects/decals/cleanable/aliens.dm | 21 +- .../objects/effects/decals/cleanable/gibs.dm | 252 +----------------- .../effects/decals/cleanable/robots.dm | 71 ++--- code/game/objects/items.dm | 1 + code/game/turfs/turf.dm | 6 +- code/modules/clothing/shoes/_shoes.dm | 3 +- .../mob/living/carbon/human/species.dm | 8 +- .../carbon/human/species_types/angel.dm | 2 +- .../carbon/human/species_types/humans.dm | 2 +- .../carbon/human/species_types/jellypeople.dm | 2 +- .../human/species_types/lizardpeople.dm | 6 +- .../carbon/human/species_types/mothmen.dm | 2 +- .../carbon/human/species_types/plasmamen.dm | 2 +- .../carbon/human/species_types/podpeople.dm | 2 +- .../carbon/human/species_types/skeletons.dm | 2 +- .../carbon/human/species_types/zombies.dm | 2 +- .../mob/living/carbon/human/update_icons.dm | 2 +- .../mob/living/simple_animal/bot/cleanbot.dm | 1 - .../carbon/human/species_types/furrypeople.dm | 16 +- 21 files changed, 102 insertions(+), 361 deletions(-) diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index d6942f1c40..03056f625f 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -75,6 +75,20 @@ return splittext(trim(file2text(filename)),seperator) return splittext(file2text(filename),seperator) +// Turns a direction into text +/proc/num2dir(direction) + switch (direction) + if (1.0) return NORTH + if (2.0) return SOUTH + if (4.0) return EAST + if (5.0) return NORTHEAST + if (6.0) return SOUTHEAST + if (8.0) return WEST + if (9.0) return NORTHWEST + if (10.0) return SOUTHWEST + else + world.log << "UNKNOWN DIRECTION: [direction]" + //Turns a direction into text /proc/dir2text(direction) switch(direction) diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index babc012719..4c93c3a2db 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -66,46 +66,8 @@ reagents.expose_temperature(exposed_temperature) ..() - -//Add "bloodiness" of this blood's type, to the human's shoes -//This is on /cleanable because fuck this ancient mess -/obj/effect/decal/cleanable/Crossed(atom/movable/O) +/obj/effect/decal/cleanable/clean_blood(var/ignore = FALSE) + if(!ignore) + qdel(src) + return ..() - if(ishuman(O)) - var/mob/living/carbon/human/H = O - if(H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) - var/obj/item/clothing/shoes/S = H.shoes - var/add_blood = 0 - if(bloodiness >= BLOOD_GAIN_PER_STEP) - add_blood = BLOOD_GAIN_PER_STEP - else - add_blood = bloodiness - bloodiness -= add_blood - to_chat(world, "S.blood_state is [S.blood_state], & blood smear state is [S.blood_smear[S.blood_state]]") - S.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,S.blood_smear[blood_state]+add_blood) - if(blood_DNA && blood_DNA.len) - S.add_blood(blood_DNA) - S.blood_smear = blood_state - update_icon() - H.update_inv_shoes() - - else if(!H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) - var/add_blood = 0 - if(bloodiness >= BLOOD_GAIN_PER_STEP) - add_blood = BLOOD_GAIN_PER_STEP - else - add_blood = bloodiness - bloodiness -= add_blood - to_chat(world, "blood_state is [blood_state], & blood smear state is [H.blood_smear[blood_state]]") - H.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,H.blood_smear[blood_state]+add_blood) - if(blood_DNA && blood_DNA.len) - H.add_blood(blood_DNA) - H.blood_smear = blood_state - update_icon() - H.update_inv_shoes() - -/obj/effect/decal/cleanable/proc/can_bloodcrawl_in() - if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY)) - return bloodiness - else - return FALSE diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 900f392796..0902eed25b 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -3,24 +3,24 @@ /obj/effect/decal/cleanable/blood/xeno name = "xeno blood" desc = "It's green and acidic. It looks like... blood?" - color = BLOOD_COLOR_XENO + basecolor = BLOOD_COLOR_XENO blood_DNA = list("UNKNOWN DNA" = "X*") /obj/effect/decal/cleanable/blood/splatter/xeno - color = BLOOD_COLOR_XENO + basecolor = BLOOD_COLOR_XENO /obj/effect/decal/cleanable/blood/gibs/xeno name = "xeno gibs" desc = "Gnarly..." icon_state = "xgib1" random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6") - color = BLOOD_COLOR_XENO + basecolor = BLOOD_COLOR_XENO /obj/effect/decal/cleanable/blood/gibs/xeno/Initialize(mapload, list/datum/disease/diseases) . = ..() reagents.add_reagent("liquidxenogibs", 5) -/obj/effect/decal/cleanable/blood/gibs/xeno/streak(list/directions) +/obj/effect/decal/cleanable/blood/xeno/streak(list/directions) set waitfor = 0 var/direction = pick(directions) for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) @@ -35,22 +35,22 @@ if(!step_to(src, get_step(src, direction), 0)) break -/obj/effect/decal/cleanable/blood/gibs/xeno/up/xeno +/obj/effect/decal/cleanable/blood/gibs/xeno/up random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1") -/obj/effect/decal/cleanable/blood/gibs/xeno/down/xeno +/obj/effect/decal/cleanable/blood/gibs/xeno/down random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibdown1","xgibdown1","xgibdown1") -/obj/effect/decal/cleanable/blood/gibs/xeno/body/xeno +/obj/effect/decal/cleanable/blood/gibs/xeno/body random_icon_states = list("xgibhead", "xgibtorso") -/obj/effect/decal/cleanable/blood/gibs/xeno/torso/xeno +/obj/effect/decal/cleanable/blood/gibs/xeno/torso random_icon_states = list("xgibtorso") -/obj/effect/decal/cleanable/blood/gibs/xeno/limb/xeno +/obj/effect/decal/cleanable/blood/gibs/xeno/limb random_icon_states = list("xgibleg", "xgibarm") -/obj/effect/decal/cleanable/blood/gibs/xeno/core/xeno +/obj/effect/decal/cleanable/blood/gibs/xeno/core random_icon_states = list("xgibmid1", "xgibmid2", "xgibmid3") /obj/effect/decal/cleanable/blood/gibs/xeno/larva @@ -62,6 +62,7 @@ /obj/effect/decal/cleanable/blood/xtracks icon_state = "tracks" random_icon_states = null + basecolor = BLOOD_COLOR_XENO /obj/effect/decal/cleanable/blood/xtracks/Initialize() add_blood(list("UNKNOWN DNA" = "X*")) diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 48670957cd..7384b73eb1 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -1,247 +1,11 @@ -/obj/effect/decal/cleanable/blood/gibs - name = "gibs" - desc = "They look bloody and gruesome." - icon_state = "gibbl5" - layer = LOW_OBJ_LAYER - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") - mergeable_decal = FALSE - var/gib_overlay = FALSE - var/slimy_gibs = FALSE - var/body_colors +#define BLOOD_SIZE_SMALL 1 +#define BLOOD_SIZE_MEDIUM 2 +#define BLOOD_SIZE_BIG 3 +#define BLOOD_SIZE_NO_MERGE -1 -/obj/effect/decal/cleanable/blood/gibs/proc/guts() - if(gib_overlay) - var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-overlay", color = blood_color, layer = (LOW_OBJ_LAYER + 0.1)) - var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-overlay", color = body_colors, layer = (LOW_OBJ_LAYER + 0.1)) - if(!slimy_gibs) - gibz.appearance_flags = RESET_COLOR - add_overlay(gibz) - else - gibz.appearance_flags = RESET_COLOR - add_overlay(gibz) - add_overlay(gibz2) -/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) - return -/obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L) - if(istype(L) && has_gravity(loc)) - if(ishuman(L)) - var/mob/living/carbon/human/H = L - if(H.mind.assigned_role == "Detective") //Gumshoe perks yo - playsound(loc, 'sound/effects/gib_step.ogg', 10, 1) - else - playsound(loc, 'sound/effects/gib_step.ogg', H.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) - else - playsound(loc, 'sound/effects/gib_step.ogg', L.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) - . = ..() - -/obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions) - set waitfor = 0 - var/direction = pick(directions) - for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) - sleep(2) - if(i > 0) - var/list/datum/disease/diseases - GET_COMPONENT(infective, /datum/component/infective) - if(infective) - diseases = infective.diseases - var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) - splat.transfer_blood_dna(blood_DNA) - - if(!step_to(src, get_step(src, direction), 0)) - break - -/obj/effect/decal/cleanable/blood/gibs/up - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/down - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/body - random_icon_states = list("gibhead", "gibtorso") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/torso - random_icon_states = list("gibtorso") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/limb - random_icon_states = list("gibleg", "gibarm") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/core - random_icon_states = list("gibmid1", "gibmid2", "gibmid3") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/old - name = "old rotting gibs" - desc = "Space Jesus, why didn't anyone clean this up? It smells terrible." - bloodiness = 0 - -/obj/effect/decal/cleanable/blood/gibs/old/Initialize(mapload, list/datum/disease/diseases) - . = ..() - setDir(pick(1,2,4,8)) - icon_state += "-old" - add_blood(list("Non-human DNA" = "A+")) - -/obj/effect/decal/cleanable/blood/drip - name = "drips of blood" - desc = "It's gooey." - icon_state = "1" - random_icon_states = list("drip1","drip2","drip3","drip4","drip5") - bloodiness = 0 - var/drips = 1 - -/obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in() - return TRUE - -/obj/effect/decal/cleanable/blood/gibs/human - -/obj/effect/decal/cleanable/blood/gibs/human/Initialize(mapload, list/datum/disease/diseases) - . = ..() - reagents.add_reagent("liquidgibs", 5) - guts() - update_icon() - -/obj/effect/decal/cleanable/blood/gibs/human/up - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/human/down - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/human/body - random_icon_states = list("gibhead", "gibtorso") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/human/torso - random_icon_states = list("gibtorso") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/human/limb - random_icon_states = list("gibleg", "gibarm") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/human/core - random_icon_states = list("gibmid1", "gibmid2", "gibmid3") - gib_overlay = TRUE - slimy_gibs = TRUE - -// Slime Gibs -/obj/effect/decal/cleanable/blood/gibs/slime - desc = "They look gooey and gruesome." - -/obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases) - . = ..() - reagents.add_reagent("liquidslimegibs", 5) - update_icon() - guts() - -/obj/effect/decal/cleanable/blood/gibs/slime/up - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/slime/down - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/slime/body - random_icon_states = list("gibhead", "gibtorso") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/slime/torso - random_icon_states = list("gibtorso") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/slime/limb - random_icon_states = list("gibleg", "gibarm") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/slime/core - random_icon_states = list("gibmid1", "gibmid2", "gibmid3") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/synth - desc = "They look sludgy and disgusting." - -/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) - . = ..() - reagents.add_reagent("liquidsyntheticgibs", 5) - update_icon() - guts() - -//IPCs -/obj/effect/decal/cleanable/blood/gibs/ipc - desc = "They look sharp yet oozing." - -/obj/effect/decal/cleanable/blood/gibs/ipc/Initialize(mapload, list/datum/disease/diseases) - . = ..() - reagents.add_reagent("liquidoilgibs", 5) - update_icon() - guts() - -/obj/effect/decal/cleanable/blood/gibs/ipc/guts() - if(gib_overlay) - var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-ipcoverlay", color = blood_color, layer = -LOW_OBJ_LAYER) - var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-ipcoverlay", color = body_colors, layer = -LOW_OBJ_LAYER) - if(!slimy_gibs) - gibz.appearance_flags = RESET_COLOR - add_overlay(gibz) - else - gibz.appearance_flags = RESET_COLOR - add_overlay(gibz) - add_overlay(gibz2) - -/obj/effect/decal/cleanable/blood/gibs/ipc/up - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/ipc/down - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/ipc/body - random_icon_states = list("gibhead", "gibtorso") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/ipc/torso - random_icon_states = list("gibtorso") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/ipc/limb - random_icon_states = list("gibleg", "gibarm") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/ipc/core - random_icon_states = list("gibmid1", "gibmid2", "gibmid3") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/synth - desc = "They look sludgy and disgusting." - -/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) - . = ..() - reagents.add_reagent("liquidsyntheticgibs", 5) - update_icon() - guts() +#undef BLOOD_SIZE_SMALL +#undef BLOOD_SIZE_MEDIUM +#undef BLOOD_SIZE_BIG +#undef BLOOD_SIZE_NO_MERGE diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm index 02bf51bdd9..6e92f8e876 100644 --- a/code/game/objects/effects/decals/cleanable/robots.dm +++ b/code/game/objects/effects/decals/cleanable/robots.dm @@ -1,65 +1,66 @@ // Note: BYOND is object oriented. There is no reason for this to be copy/pasted blood code. -/obj/effect/decal/cleanable/robot_debris +/obj/effect/decal/cleanable/blood/gibs/robot name = "robot debris" desc = "It's a useless heap of junk... or is it?" icon = 'icons/mob/robots.dmi' icon_state = "gib1" layer = LOW_OBJ_LAYER random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7") - blood_state = BLOOD_STATE_OIL - bloodiness = BLOOD_AMOUNT_PER_DECAL - mergeable_decal = FALSE + basecolor = BLOOD_COLOR_OIL -/obj/effect/decal/cleanable/robot_debris/Initialize(mapload, list/datum/disease/diseases) +/obj/effect/decal/cleanable/blood/gibs/robot/Initialize(mapload, list/datum/disease/diseases) . = ..() reagents.add_reagent("liquidoilgibs", 5) -/obj/effect/decal/cleanable/robot_debris/proc/streak(list/directions) - set waitfor = 0 - var/direction = pick(directions) - for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) - sleep(2) - if (i > 0) - if (prob(40)) - new /obj/effect/decal/cleanable/oil/streak(src.loc) - else if (prob(10)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() - if (!step_to(src, get_step(src, direction), 0)) - break - -/obj/effect/decal/cleanable/robot_debris/ex_act() +/obj/effect/decal/cleanable/blood/gibs/robot/dry() //pieces of robots do not dry up like blood return -/obj/effect/decal/cleanable/robot_debris/limb +/obj/effect/decal/cleanable/blood/gibs/robot/streak(var/list/directions) + spawn (0) + var/direction = pick(directions) + for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++) + sleep(3) + if (i > 0) + if (prob(40)) + var/obj/effect/decal/cleanable/blood/oil/streak = new(src.loc) + streak.update_icon() + else if (prob(10)) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(3, 1, src) + s.start() + if (step_to(src, get_step(src, direction), 0)) + break + +/obj/effect/decal/cleanable/blood/gibs/robot/ex_act() + return + +/obj/effect/decal/cleanable/blood/gibs/robot/limb random_icon_states = list("gibarm", "gibleg") -/obj/effect/decal/cleanable/robot_debris/up +/obj/effect/decal/cleanable/blood/gibs/robot/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7","gibup1","gibup1") -/obj/effect/decal/cleanable/robot_debris/down +/obj/effect/decal/cleanable/blood/gibs/robot/down random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7","gibdown1","gibdown1") -/obj/effect/decal/cleanable/oil +/obj/effect/decal/cleanable/blood/oil name = "motor oil" desc = "It's black and greasy. Looks like Beepsky made another mess." - icon = 'icons/mob/robots.dmi' - icon_state = "floor1" - random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7") - blood_state = BLOOD_STATE_OIL - bloodiness = BLOOD_AMOUNT_PER_DECAL + basecolor = BLOOD_COLOR_OIL -/obj/effect/decal/cleanable/oil/Initialize() +/obj/effect/decal/cleanable/blood/oil/Initialize() . = ..() reagents.add_reagent("oil", 30) reagents.add_reagent("liquidoilgibs", 5) -/obj/effect/decal/cleanable/oil/streak - random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5") +/obj/effect/decal/cleanable/blood/oil/dry() + return -/obj/effect/decal/cleanable/oil/slippery +/obj/effect/decal/cleanable/blood/oil/streak + amount = 2 -/obj/effect/decal/cleanable/oil/slippery/Initialize() +/obj/effect/decal/cleanable/blood/oil/slippery + +/obj/effect/decal/cleanable/blood/oil/slippery/Initialize() AddComponent(/datum/component/slippery, 80, (NO_SLIP_WHEN_WALKING | SLIDE)) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index d49f311c18..f906045d7f 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -113,6 +113,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) //Blood overlay things var/blood_color + var/image/blood_overlay = null //this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite /obj/item/Initialize() diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 13ea59cb52..50ac3a71a2 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -194,8 +194,8 @@ if(O.obj_flags & FROZEN) O.make_unfrozen() - if(isliving(A)) - var/mob/living/M = A + if(isliving(AM)) + var/mob/living/M = AM if(ishuman(M)) var/mob/living/carbon/human/H = M // Tracking blood @@ -226,7 +226,7 @@ /turf/proc/is_plasteel_floor() return FALSE -/turf/open/proc/AddTracks(var/typepath,var/bloodDNA,var/comingdir,var/goingdir,var/bloodcolor=COLOR_BLOOD_HUMAN) +/turf/open/proc/AddTracks(var/typepath,var/bloodDNA,var/comingdir,var/goingdir,var/bloodcolor=BLOOD_COLOR_HUMAN) var/obj/effect/decal/cleanable/blood/tracks/tracks = locate(typepath) in src if(!tracks) tracks = new typepath(src) diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index fb85d057b2..26459c8051 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -17,7 +17,7 @@ var/adjusted = NORMAL_STYLE mutantrace_variation = MUTANTRACE_VARIATION - var/move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/shoe + var/move_trail = /obj/effect/decal/cleanable/blood/tracks/shoe /obj/item/clothing/shoes/suicide_act(mob/living/carbon/user) if(rand(2)>1) @@ -91,7 +91,6 @@ /obj/item/clothing/shoes/clean_blood() ..() - blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) blood_state = BLOOD_STATE_NOT_BLOODY blood_color = null if(ismob(loc)) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index af03bf3f2f..283d2db800 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -77,7 +77,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/fixed_mut_color3 = "" var/whitelisted = 0 //Is this species restricted to certain players? var/whitelist = list() //List the ckeys that can use this species, if it's whitelisted.: list("John Doe", "poopface666", "SeeALiggerPullTheTrigger") Spaces & capitalization can be included or ignored entirely for each key as it checks for both. - var/obj/effect/decal/cleanable/blood/footprints/tracks/move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/shoe // What marks are left when walking + var/obj/effect/decal/cleanable/blood/tracks/move_trail = /obj/effect/decal/cleanable/blood/tracks/shoe // What marks are left when walking /////////// // PROCS // @@ -643,9 +643,9 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(H.dna.features["taur"] != "None") if(H.dna.features["taur"] in GLOB.noodle_taurs) - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/snake + move_trail = /obj/effect/decal/cleanable/blood/tracks/snake else if(H.dna.features["taur"] in GLOB.paw_taurs) - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/paw + move_trail = /obj/effect/decal/cleanable/blood/tracks/paw //END EDIT @@ -941,7 +941,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) // Impliments different trails for species depending on if they're wearing shoes. /datum/species/proc/get_move_trail(var/mob/living/carbon/human/H) if(H.lying) - return /obj/effect/decal/cleanable/blood/footprints/tracks/body + return /obj/effect/decal/cleanable/blood/tracks/body if(H.shoes || (H.wear_suit && (H.wear_suit.body_parts_covered & FEET))) var/obj/item/clothing/shoes/shoes = (H.wear_suit && (H.wear_suit.body_parts_covered & FEET)) ? H.wear_suit : H.shoes // suits take priority over shoes return shoes.move_trail diff --git a/code/modules/mob/living/carbon/human/species_types/angel.dm b/code/modules/mob/living/carbon/human/species_types/angel.dm index 92798c8bc7..3a9ae056c9 100644 --- a/code/modules/mob/living/carbon/human/species_types/angel.dm +++ b/code/modules/mob/living/carbon/human/species_types/angel.dm @@ -10,7 +10,7 @@ blacklisted = 1 limbs_id = "human" skinned_type = /obj/item/stack/sheet/animalhide/human - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/tracks/foot var/datum/action/innate/flight/fly diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index d3288e1cd1..6ebc77f0b5 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -9,7 +9,7 @@ skinned_type = /obj/item/stack/sheet/animalhide/human disliked_food = GROSS | RAW liked_food = JUNKFOOD | FRIED - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/tracks/foot /datum/species/human/qualifies_for_rank(rank, list/features) return TRUE //Pure humans are always allowed in all roles. diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index ea7a20163a..63705bca90 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -18,7 +18,7 @@ coldmod = 6 // = 3x cold damage heatmod = 0.5 // = 1/4x heat damage burnmod = 0.5 // = 1/2x generic burn damage - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/tracks/foot /datum/species/jelly/on_species_loss(mob/living/carbon/C) if(regenerate_limbs) diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index ba4d8b8781..22d7250b61 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -73,7 +73,7 @@ /datum/species/lizard/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Digitigrade Legs") species_traits += DIGITIGRADE - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw + move_trail = /obj/effect/decal/cleanable/blood/tracks/claw if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(FALSE) return ..() @@ -81,7 +81,7 @@ /datum/species/lizard/on_species_loss(mob/living/carbon/human/C, datum/species/new_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Normal Legs") species_traits -= DIGITIGRADE - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/tracks/foot if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(TRUE) @@ -97,7 +97,7 @@ mutantlungs = /obj/item/organ/lungs/ashwalker burnmod = 0.9 brutemod = 0.9 - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw + move_trail = /obj/effect/decal/cleanable/blood/tracks/claw /datum/species/lizard/ashwalker/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) if((C.dna.features["spines"] != "None" ) && (C.dna.features["tail"] == "None")) //tbh, it's kinda ugly for them not to have a tail yet have floating spines diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index 4c2c360c68..6494638f0f 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -15,7 +15,7 @@ disliked_food = FRUIT | GROSS toxic_food = MEAT | RAW mutanteyes = /obj/item/organ/eyes/moth - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw + move_trail = /obj/effect/decal/cleanable/blood/tracks/claw /datum/species/moth/on_species_gain(mob/living/carbon/C) . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index c556390533..fdca7b4f27 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -21,7 +21,7 @@ var/internal_fire = FALSE //If the bones themselves are burning clothes won't help you much disliked_food = FRUIT liked_food = VEGETABLES - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/tracks/foot /datum/species/plasmaman/spec_life(mob/living/carbon/human/H) var/datum/gas_mixture/environment = H.loc.return_air() diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 05c52ede86..f43e3f1810 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -17,7 +17,7 @@ var/light_oxyheal = 1 var/light_burnheal = 1 var/light_bruteheal = 1 - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/tracks/foot /datum/species/pod/on_species_gain(mob/living/carbon/C, datum/species/old_species) . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index 606e72839b..6d7e93f7c7 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -13,7 +13,7 @@ damage_overlay_type = ""//let's not show bloody wounds or burns over bones. disliked_food = NONE liked_food = GROSS | MEAT | RAW - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/tracks/foot /datum/species/skeleton/check_roundstart_eligible() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index e2c8ffb9c3..97d76e883b 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -15,7 +15,7 @@ var/static/list/spooks = list('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/wail.ogg') disliked_food = NONE liked_food = GROSS | MEAT | RAW - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/tracks/foot /datum/species/zombie/check_roundstart_eligible() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 946024760d..35aa0a3793 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -276,7 +276,7 @@ There are several things that need to be remembered: var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES] inv.update_icon() - if(!shoes && bloody_feet) + if(!shoes) var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) if(dna.features["taur"] != "None") if(dna.features["taur"] in GLOB.noodle_taurs) diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index 97f14ce7bd..f3dfae1889 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -192,7 +192,6 @@ if(blood) target_types += /obj/effect/decal/cleanable/blood - target_types += /obj/effect/decal/cleanable/trail_holder if(pests) target_types += /mob/living/simple_animal/cockroach diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index 3301345fcf..188aa4d913 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -13,7 +13,7 @@ meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/mammal liked_food = MEAT | FRIED disliked_food = TOXIC - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/paw + move_trail = /obj/effect/decal/cleanable/blood/tracks/paw //Curiosity killed the cat's wagging tail. /datum/species/mammal/spec_death(gibbed, mob/living/carbon/human/H) @@ -46,7 +46,7 @@ /datum/species/mammal/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Digitigrade Legs") species_traits += DIGITIGRADE - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/paw + move_trail = /obj/effect/decal/cleanable/blood/tracks/paw if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(FALSE) return ..() @@ -54,7 +54,7 @@ /datum/species/mammal/on_species_loss(mob/living/carbon/human/C, datum/species/new_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Normal Legs") species_traits -= DIGITIGRADE - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/tracks/foot if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(TRUE) @@ -78,7 +78,7 @@ miss_sound = 'sound/weapons/slashmiss.ogg' liked_food = MEAT | FRUIT disliked_food = TOXIC - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw + move_trail = /obj/effect/decal/cleanable/blood/tracks/claw /datum/species/avian/spec_death(gibbed, mob/living/carbon/human/H) if(H) @@ -126,7 +126,7 @@ liked_food = MEAT disliked_food = TOXIC meat = /obj/item/reagent_containers/food/snacks/carpmeat/aquatic - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/tracks/foot /datum/species/aquatic/spec_death(gibbed, mob/living/carbon/human/H) if(H) @@ -173,7 +173,7 @@ miss_sound = 'sound/weapons/slashmiss.ogg' liked_food = MEAT | FRUIT disliked_food = TOXIC - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw + move_trail = /obj/effect/decal/cleanable/blood/tracks/claw /datum/species/insect/spec_death(gibbed, mob/living/carbon/human/H) if(H) @@ -230,7 +230,7 @@ /datum/species/xeno/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Digitigrade Legs") species_traits += DIGITIGRADE - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw + move_trail = /obj/effect/decal/cleanable/blood/tracks/claw if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(FALSE) return ..() @@ -238,7 +238,7 @@ /datum/species/xeno/on_species_loss(mob/living/carbon/human/C, datum/species/new_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Normal Legs") species_traits -= DIGITIGRADE - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/tracks/foot if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(TRUE) From bc80c036791d16bc33d3d841d212003b31c7e102 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 5 Jun 2019 04:55:49 -0500 Subject: [PATCH 042/469] these too please thanks --- code/game/atoms.dm | 21 +- .../effects/decals/cleanable/footprints.dm | 201 +++++++ .../effects/decals/cleanable/humans.dm | 561 ++++++++++++------ 3 files changed, 613 insertions(+), 170 deletions(-) create mode 100644 code/game/objects/effects/decals/cleanable/footprints.dm diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 50f6cdf968..f88edcaa7e 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -255,7 +255,7 @@ f_name = "some " else f_name = "a " - f_name += "blood-stained [name]!" + f_name += "stained [name]!" to_chat(user, "[icon2html(src, user)] That's [f_name]") @@ -366,8 +366,11 @@ //to add blood from a mob onto something, and transfer their dna info /atom/proc/add_mob_blood(mob/living/M) var/list/blood_dna = M.get_blood_dna_list() + blood_color = BLOOD_COLOR_HUMAN if(!blood_dna) return FALSE + if(M.blood_DNA.len) + blood_color = M.blood_DNA_to_color() return add_blood(blood_dna) //to add blood onto something, with blood dna info to include. @@ -380,18 +383,30 @@ /obj/item/add_blood(list/blood_dna) if(!..()) return FALSE - add_blood_overlay() + + //if we haven't made our blood_overlay already + if(!blood_overlay ) + add_blood_overlay() + + //apply the blood-splatter overlay if it isn't already in there + if(!blood_DNA.len) + overlays += blood_overlay + return TRUE //we applied blood to the item /obj/item/proc/add_blood_overlay() if(!blood_DNA.len) return + if(GLOB.blood_overlay_cache["[icon]" + icon_state]) + blood_overlay = GLOB.blood_overlay_cache["[icon]" + icon_state] + return if(initial(icon) && initial(icon_state)) blood_splatter_icon = icon(initial(icon), initial(icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) blood_splatter_icon.Blend(icon('icons/effects/blood.dmi', "itemblood"), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant blood_splatter_icon.Blend(blood_DNA_to_color(), ICON_MULTIPLY) - add_overlay(blood_splatter_icon) + blood_overlay = image(I) + GLOB.blood_overlay_cache["[icon]" + icon_state] = blood_overlay /obj/item/clothing/gloves/add_blood(mob/living/carbon/M) . = ..() diff --git a/code/game/objects/effects/decals/cleanable/footprints.dm b/code/game/objects/effects/decals/cleanable/footprints.dm new file mode 100644 index 0000000000..14bf78108d --- /dev/null +++ b/code/game/objects/effects/decals/cleanable/footprints.dm @@ -0,0 +1,201 @@ +// The idea is to have 4 bits for coming and 4 for going. +#define TRACKS_COMING_NORTH 1 +#define TRACKS_COMING_SOUTH 2 +#define TRACKS_COMING_EAST 4 +#define TRACKS_COMING_WEST 8 +#define TRACKS_GOING_NORTH 16 +#define TRACKS_GOING_SOUTH 32 +#define TRACKS_GOING_EAST 64 +#define TRACKS_GOING_WEST 128 + +// 5 seconds +#define TRACKS_CRUSTIFY_TIME 50 + +// color-dir-dry +var/global/list/image/fluidtrack_cache=list() + +/datum/fluidtrack + var/direction=0 + var/basecolor=BLOOD_COLOR_HUMAN + var/wet=0 + var/fresh=1 + var/crusty=0 + var/image/overlay + +/datum/fluidtrack/New(_direction,_color,_wet) + src.direction=_direction + src.basecolor=_color + +// Footprints, tire trails... +/obj/effect/decal/cleanable/blood/tracks + amount = 0 + random_icon_states = null + var/dirs=0 + icon = 'icons/effects/fluidtracks.dmi' + icon_state = "" + var/coming_state="blood1" + var/going_state="blood2" + var/updatedtracks=0 + var/dryname = "dried fluid" + var/drydesc = "diguesting dried fluid, where's the janitor?" + + // dir = id in stack + var/list/setdirs=list( + "1"=0, + "2"=0, + "4"=0, + "8"=0, + "16"=0, + "32"=0, + "64"=0, + "128"=0 + ) + + // List of laid tracks and their colors. + var/list/datum/fluidtrack/stack=list() + + /** + * Add tracks to an existing trail. + * + * @param DNA bloodDNA to add to collection. + * @param comingdir Direction tracks come from, or 0. + * @param goingdir Direction tracks are going to (or 0). + * @param bloodcolor Color of the blood when wet. + */ +/obj/effect/decal/cleanable/blood/tracks/proc/AddTracks(var/list/DNA, var/comingdir, var/goingdir, var/bloodcolor=BLOOD_COLOR_HUMAN) + var/updated=0 + // Shift our goingdir 4 spaces to the left so it's in the GOING bitblock. + var/realgoing=goingdir<<4 + + // Current bit + var/b=0 + + // When tracks will start to dry out + var/t=world.time + TRACKS_CRUSTIFY_TIME + var/datum/fluidtrack/track + + // Process 4 bits + for(var/bi=0;bi<4;bi++) + b=1<>4 + + if(track.overlay) + track.overlay=null + var/image/I = image(icon, icon_state=state, dir=num2dir(truedir)) + I.color = track.basecolor + + track.fresh=0 + track.overlay=I + stack[stack_idx]=track + overlays += I + updatedtracks=0 // Clear our memory of updated tracks. + +/obj/effect/decal/cleanable/blood/tracks/shoeprints + name = "wet shoeprints" + dryname = "dried shoeprints" + desc = "They look like still wet tracks left by footwear." + drydesc = "They look like dried tracks left by footwear." + coming_state = "shoe1" + going_state = "shoe2" + +/obj/effect/decal/cleanable/blood/tracks/footprints + name = "wet footprints" + dryname = "dried footprints" + desc = "They look like still wet tracks left by a foot." + drydesc = "They look like dried tracks left by a foot." + coming_state = "foot1" + going_state = "foot2" + +/obj/effect/decal/cleanable/blood/tracks/snake + name = "wet tracks" + dryname = "dried tracks" + desc = "They look like still wet tracks left by a giant snake." + drydesc = "They look like dried tracks left by a giant snake." + coming_state = "snake1" + going_state = "snake2" + +/obj/effect/decal/cleanable/blood/tracks/paw + name = "wet tracks" + dryname = "dried tracks" + desc = "They look like still wet tracks left by a mammal." + drydesc = "They look like dried tracks left by a mammal." + coming_state = "paw1" + going_state = "paw2" + +/obj/effect/decal/cleanable/blood/tracks/claw + name = "wet tracks" + dryname = "dried tracks" + desc = "They look like still wet tracks left by a reptile." + drydesc = "They look like dried tracks left by a reptile." + coming_state = "claw1" + going_state = "claw2" + +/obj/effect/decal/cleanable/blood/tracks/wheels + name = "wet tracks" + dryname = "dried tracks" + desc = "They look like still wet tracks left by wheels." + drydesc = "They look like dried tracks left by wheels." + coming_state = "wheels" + going_state = "" + gender = PLURAL + +/obj/effect/decal/cleanable/blood/tracks/body + name = "wet trails" + dryname = "dried trails" + desc = "A still-wet trail left by someone crawling." + drydesc = "A dried trail left by someone crawling." + coming_state = "trail1" + going_state = "trail2" diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 711e792752..b5d4aed357 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -1,35 +1,158 @@ +#define DRYING_TIME 5 * 60*10 //for 1 unit of depth in puddle (amount var) +#define BLOOD_SIZE_SMALL 1 +#define BLOOD_SIZE_MEDIUM 2 +#define BLOOD_SIZE_BIG 3 +#define BLOOD_SIZE_NO_MERGE -1 + +var/global/list/image/splatter_cache=list() + /obj/effect/decal/cleanable/blood name = "blood" - desc = "It's gooey. Perhaps it's the chef's cooking?" + desc = "It's thick and gooey. Perhaps it's the chef's cooking?" + gender = PLURAL icon = 'icons/effects/blood.dmi' - icon_state = "floor1" + icon_state = "mfloor1" random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7") blood_DNA = list() - blood_state = BLOOD_STATE_BLOOD - color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere. - bloodiness = BLOOD_AMOUNT_PER_DECAL + generic_filth = TRUE + persistent = TRUE + appearance_flags = NO_CLIENT_COLOR + var/base_icon = 'icons/effects/blood.dmi' + var/list/viruses = list() + var/basecolor=BLOOD_COLOR_HUMAN // Color when wet. + var/list/datum/disease2/disease/virus2 = list() + var/amount = 5 + var/drytime + var/dryname = "dried blood" + var/drydesc = "It's dry and crusty. Someone is not doing their job." + var/blood_size = BLOOD_SIZE_MEDIUM // A relative size; larger-sized blood will not override smaller-sized blood, except maybe at mapload. +/obj/effect/decal/cleanable/blood/clean_blood() + fluorescent = 0 + if(invisibility != 100) + set_invisibility(100) + amount = 0 + STOP_PROCESSING(SSobj, src) + ..(ignore=1) -/obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) - if (C.blood_DNA) - blood_DNA |= C.blood_DNA.Copy() - update_icon() - ..() +/obj/effect/decal/cleanable/blood/hide() + return -/obj/effect/decal/cleanable/blood/transfer_blood_dna() - ..() - update_icon() +/obj/effect/decal/cleanable/blood/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() -/obj/effect/decal/cleanable/blood/transfer_mob_blood_dna() +/obj/effect/decal/cleanable/blood/Initialize(mapload) . = ..() + if(merge_with_blood(!mapload)) + return INITIALIZE_HINT_QDEL + start_drying() + +// Returns true if overriden and needs deletion. If the argument is false, we will merge into any existing blood. +/obj/effect/decal/cleanable/blood/proc/merge_with_blood(var/override = TRUE) + . = FALSE + if(blood_size == BLOOD_SIZE_NO_MERGE) + return + if(isturf(loc)) + for(var/obj/effect/decal/cleanable/blood/B in loc) + if(B == src) + continue + if(B.blood_size == BLOOD_SIZE_NO_MERGE) + continue + if(override && blood_size >= B.blood_size) + if (B.blood_DNA) + blood_DNA |= B.blood_DNA.Copy() + qdel(B) + continue + if(B.blood_DNA) + B.blood_DNA |= blood_DNA.Copy() + . = TRUE + +/obj/effect/decal/cleanable/blood/proc/start_drying() + drytime = world.time + DRYING_TIME * (amount+1) update_icon() + START_PROCESSING(SSobj, src) + +/obj/effect/decal/cleanable/blood/Process() + if(world.time > drytime) + dry() + +/obj/effect/decal/cleanable/blood/on_update_icon() + if(basecolor == "rainbow") basecolor = get_random_colour(1) + color = basecolor + if(basecolor == SYNTH_BLOOD_COLOUR) + SetName("oil") + desc = "It's black and greasy." + else + SetName(initial(name)) + desc = initial(desc) + +/obj/effect/decal/cleanable/blood/Crossed(mob/living/carbon/human/perp) + if (!istype(perp)) + return + if(amount < 1) + return + + var/obj/item/organ/external/l_foot = perp.get_organ(BP_L_FOOT) + var/obj/item/organ/external/r_foot = perp.get_organ(BP_R_FOOT) + var/hasfeet = 1 + if((!l_foot || l_foot.is_stump()) && (!r_foot || r_foot.is_stump())) + hasfeet = 0 + if(perp.shoes && !perp.buckled)//Adding blood to shoes + var/obj/item/clothing/shoes/S = perp.shoes + if(istype(S)) + S.blood_color = basecolor + S.track_blood = max(amount,S.track_blood) + if(!S.blood_overlay) + S.add_blood_overlay() + if(!S.blood_DNA) + S.blood_DNA = list() + S.blood_overlay.color = basecolor + S.overlays += S.blood_overlay + if(S.blood_overlay && S.blood_overlay.color != basecolor) + S.blood_overlay.color = basecolor + S.overlays.Cut() + S.overlays += S.blood_overlay + S.blood_DNA |= blood_DNA.Copy() + + else if (hasfeet)//Or feet + perp.feet_blood_color = basecolor + perp.track_blood = max(amount,perp.track_blood) + if(!perp.feet_blood_DNA) + perp.feet_blood_DNA = list() + perp.feet_blood_DNA |= blood_DNA.Copy() + else if (perp.buckled && istype(perp.buckled, /obj/structure/bed/chair/wheelchair)) + var/obj/structure/bed/chair/wheelchair/W = perp.buckled + W.bloodiness = 4 + + perp.update_inv_shoes(1) + amount-- + +/obj/effect/decal/cleanable/blood/proc/dry() + name = dryname + desc = drydesc + color = adjust_brightness(color, -50) + amount = 0 + STOP_PROCESSING(SSobj, src) /obj/effect/decal/cleanable/blood/update_icon() color = blood_DNA_to_color() -//obj/effect/decal/cleanable/blood/update_color() - // if(SEND_SIGNAL(COMSIG_BLOOD_COLOR) & COMPONENT_BLOCK_UPDATE_COLOR) - // return + +/obj/effect/decal/cleanable/blood/attack_hand(mob/living/carbon/human/user) + ..() + if (amount && istype(user)) + if (user.gloves) + return + var/taken = rand(1,amount) + amount -= taken + to_chat(user, "You get some of \the [src] on your hands.") + if (!user.blood_DNA) + user.blood_DNA = list() + user.blood_DNA |= blood_DNA.Copy() + user.bloody_hands = taken + user.hand_blood_color = basecolor + user.update_inv_gloves(1) /obj/effect/decal/cleanable/blood/old name = "dried blood" @@ -44,169 +167,273 @@ /obj/effect/decal/cleanable/blood/splatter random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") + amount = 2 + blood_size = BLOOD_SIZE_BIG -/obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose so that it shows up even on regular splatters - name = "blood" - icon_state = "ltrails_1" - desc = "Your instincts say you shouldn't be following these." - random_icon_states = null - var/list/existing_dirs = list() - color = BLOOD_COLOR_HUMAN - bloodiness = BLOOD_AMOUNT_PER_DECAL -/obj/effect/decal/cleanable/trail_holder/update_icon() - color = blood_DNA_to_color() +/obj/effect/decal/cleanable/blood/gibs + name = "gibs" + desc = "They look bloody and gruesome." + icon_state = "gibbl5" + layer = LOW_OBJ_LAYER + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") + blood_size = BLOOD_SIZE_NO_MERGE + var/gib_overlay = FALSE + var/slimy_gibs = FALSE + var/body_colors = "#ffffff" -/obj/effect/cleanable/trail_holder/Initialize() +/obj/effect/decal/cleanable/blood/gibs/proc/update_icon() + var/image/giblets = new(base_icon, icon_state+ "-overlay", dir) + var/image/giblets2 = new(base_icon, icon_state + "c-overlay", dir) + giblets.color = body_colors + + var/icon/blood = new(base_icon,"[icon_state]",dir) + if(basecolor == "rainbow") basecolor = get_random_colour(1) + blood.Blend(basecolor,ICON_MULTIPLY) + + icon = blood + overlays.Cut() + if(gib_overlay) + if(!slimy_gibs) + add_overlay(giblets) + else + add_overlay(giblets) + add_overlay(giblets2) + +/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) + return + +/obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L) + if(istype(L) && has_gravity(loc)) + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(H.mind.assigned_role == "Detective") //Gumshoe perks yo + playsound(loc, 'sound/effects/gib_step.ogg', 10, 1) + else + playsound(loc, 'sound/effects/gib_step.ogg', H.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) + else + playsound(loc, 'sound/effects/gib_step.ogg', L.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) . = ..() - update_icon() -/obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in() - return TRUE +/obj/effect/decal/cleanable/blood/gibs/proc/streak(var/list/directions) + spawn (0) + var/direction = pick(directions) + for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++) + sleep(3) + if (i > 0) + var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(loc) + b.basecolor = src.basecolor + b.update_icon() + if (step_to(src, get_step(src, direction), 0)) + break -/obj/effect/decal/cleanable/trail_holder/transfer_blood_dna() - ..() - update_icon() +/obj/effect/decal/cleanable/blood/gibs/start_drying() + return -/obj/effect/decal/cleanable/trail_holder/transfer_mob_blood_dna() - . = ..() - update_icon() - -//BLOODY FOOTPRINTS -/obj/effect/decal/cleanable/blood/footprints/tracks - name = "tracks" - icon = 'icons/effects/fluidtracks.dmi' - icon_state = "nothingwhatsoever" - desc = "WHOSE FOOTPRINTS ARE THESE?" - random_icon_states = null - var/entered_dirs = 0 - var/exited_dirs = 0 - blood_state = BLOOD_STATE_BLOOD //the icon state to load images from - var/print_state = FOOTPRINT_SHOE //the print state for different feet - var/list/shoe_types = list() - -/obj/effect/decal/cleanable/blood/footprints/tracks/Crossed(atom/movable/O) - if(ishuman(O)) - var/mob/living/carbon/human/H = O - var/obj/item/clothing/shoes/S = H.shoes - if(S && S.blood_smear[blood_state]) - if(color != bloodtype_to_color(S.last_bloodtype)) - return - S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) - shoe_types |= S.type - if (!(entered_dirs & H.dir)) - entered_dirs |= H.dir - update_icon() - - else if(H && H.blood_smear[blood_state]) - if(color != bloodtype_to_color(H.last_bloodtype)) - return - H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) - if (!(entered_dirs & H.dir)) - entered_dirs |= H.dir - update_icon() - -/obj/effect/decal/cleanable/blood/footprints/tracks/Uncrossed(atom/movable/O) - if(ishuman(O)) - var/mob/living/carbon/human/H = O - var/obj/item/clothing/shoes/S = H.shoes - if(S && S.blood_smear[blood_state]) - if(color != bloodtype_to_color(S.last_bloodtype))//last entry - we check its color - return - S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) - shoe_types |= S.type - if (!(exited_dirs & H.dir)) - exited_dirs |= H.dir - update_icon() - - else if(H && H.blood_smear[blood_state]) - if(color != bloodtype_to_color(H.last_bloodtype))//last entry - we check its color - return - H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) - if (!(exited_dirs & H.dir)) - exited_dirs |= H.dir - update_icon() - -/obj/effect/decal/cleanable/blood/footprints/tracks/update_icon() - ..() - cut_overlays() - to_chat(world, "[src] called update_icon with [print_state]") - for(var/Ddir in GLOB.cardinals) - if(entered_dirs & Ddir) - var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] - if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir) - add_overlay(bloodstep_overlay) - if(exited_dirs & Ddir) - var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"] - if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir) - add_overlay(bloodstep_overlay) - - alpha = BLOODY_FOOTPRINT_BASE_ALPHA + bloodiness - - -/obj/effect/decal/cleanable/blood/footprints/tracks/examine(mob/user) - . = ..() - if(shoe_types.len && ishuman(user) && user.mind.assigned_role == "Detective") //gumshoe does the detective thing, not every fucking assistant - . += "You recognise the footprints as belonging to:\n" - for(var/shoe in shoe_types) - var/obj/item/clothing/shoes/S = shoe - . += "some [initial(S.name)] [icon2html(initial(S.icon), user)]\n" - - to_chat(user, .) - -/obj/effect/decal/cleanable/blood/footprints/tracks/replace_decal(obj/effect/decal/cleanable/blood/footprints/tracks/C) - if(print_state != C.print_state) //We only replace footprints of the same type as us - return - if(color != C.color) - return - ..() - -/obj/effect/decal/cleanable/blood/footprints/tracks/can_bloodcrawl_in() - if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY)) - return TRUE +/obj/effect/decal/cleanable/blood/gibs/merge_with_blood() return FALSE -/obj/effect/decal/cleanable/blood/footprints/tracks/shoe - name = "footprints" - desc = "They look like tracks left by footwear." - icon_state = FOOTPRINT_SHOE - print_state = FOOTPRINT_SHOE +/obj/effect/decal/cleanable/blood/gibs/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + gib_overlay = TRUE -/obj/effect/decal/cleanable/blood/footprints/tracks/foot - name = "footprints" - desc = "They look like tracks left by a bare foot." - icon_state = FOOTPRINT_FOOT - print_state = FOOTPRINT_FOOT +/obj/effect/decal/cleanable/blood/gibs/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + gib_overlay = TRUE -/obj/effect/decal/cleanable/blood/footprints/tracks/snake - name = "tracks" - desc = "They look like tracks left by a giant snake." - icon_state = FOOTPRINT_SNAKE - print_state = FOOTPRINT_SNAKE +/obj/effect/decal/cleanable/blood/gibs/body + random_icon_states = list("gibhead", "gibtorso") + gib_overlay = TRUE -/obj/effect/decal/cleanable/blood/footprints/tracks/paw - name = "footprints" - desc = "They look like tracks left by paws." - icon_state = FOOTPRINT_PAW - print_state = FOOTPRINT_PAW +/obj/effect/decal/cleanable/blood/gibs/torso + random_icon_states = list("gibtorso") + gib_overlay = TRUE -/obj/effect/decal/cleanable/blood/footprints/tracks/claw - name = "footprints" - desc = "They look like tracks left by claws." - icon_state = FOOTPRINT_CLAW - print_state = FOOTPRINT_CLAW +/obj/effect/decal/cleanable/blood/gibs/limb + random_icon_states = list("gibleg", "gibarm") + gib_overlay = TRUE -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels - name = "tracks" - desc = "They look like tracks left by wheels." +/obj/effect/decal/cleanable/blood/gibs/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/old + name = "old rotting gibs" + desc = "Space Jesus, why didn't anyone clean this up? It smells terrible." + bloodiness = 0 + +/obj/effect/decal/cleanable/blood/gibs/old/Initialize(mapload, list/datum/disease/diseases) + . = ..() + setDir(pick(1,2,4,8)) + icon_state += "-old" + add_blood(list("Non-human DNA" = "A+")) + +/obj/effect/decal/cleanable/blood/drip + name = "drips of blood" + desc = "It's gooey." gender = PLURAL - icon_state = FOOTPRINT_WHEEL - print_state = FOOTPRINT_WHEEL + icon_state = "1" + random_icon_states = list("drip1","drip2","drip3","drip4","drip5") + amount = 0 + var/list/drips + blood_size = BLOOD_SIZE_SMALL -/obj/effect/decal/cleanable/blood/footprints/tracks/body - name = "trails" - desc = "A trail left by something being dragged." - icon_state = FOOTPRINT_DRAG - print_state = FOOTPRINT_DRAG +/obj/effect/decal/cleanable/blood/drip/Initialize() + . = ..() + drips = list(icon_state) + +/obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in() + return TRUE + +/obj/effect/decal/cleanable/blood/gibs/human + +/obj/effect/decal/cleanable/blood/gibs/human/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidgibs", 5) + guts() + update_icon() + +/obj/effect/decal/cleanable/blood/gibs/human/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/body + random_icon_states = list("gibhead", "gibtorso") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/torso + random_icon_states = list("gibtorso") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/limb + random_icon_states = list("gibleg", "gibarm") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + gib_overlay = TRUE + slimy_gibs = TRUE + +// Slime Gibs +/obj/effect/decal/cleanable/blood/gibs/slime + desc = "They look gooey and gruesome." + +/obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidslimegibs", 5) + update_icon() + guts() + +/obj/effect/decal/cleanable/blood/gibs/slime/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/body + random_icon_states = list("gibhead", "gibtorso") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/torso + random_icon_states = list("gibtorso") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/limb + random_icon_states = list("gibleg", "gibarm") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/synth + desc = "They look sludgy and disgusting." + +/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidsyntheticgibs", 5) + update_icon() + guts() + +//IPCs +/obj/effect/decal/cleanable/blood/gibs/ipc + desc = "They look sharp yet oozing." + +/obj/effect/decal/cleanable/blood/gibs/ipc/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidoilgibs", 5) + update_icon() + guts() + +/obj/effect/decal/cleanable/blood/gibs/ipc/guts() + if(gib_overlay) + var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-ipcoverlay", color = blood_color, layer = -LOW_OBJ_LAYER) + var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-ipcoverlay", color = body_colors, layer = -LOW_OBJ_LAYER) + if(!slimy_gibs) + gibz.appearance_flags = RESET_COLOR + add_overlay(gibz) + else + gibz.appearance_flags = RESET_COLOR + add_overlay(gibz) + add_overlay(gibz2) + +/obj/effect/decal/cleanable/blood/gibs/ipc/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/body + random_icon_states = list("gibhead", "gibtorso") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/torso + random_icon_states = list("gibtorso") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/limb + random_icon_states = list("gibleg", "gibarm") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/synth + desc = "They look sludgy and disgusting." + +/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidsyntheticgibs", 5) + update_icon() + guts() + +#undef BLOOD_SIZE_SMALL +#undef BLOOD_SIZE_MEDIUM +#undef BLOOD_SIZE_BIG +#undef BLOOD_SIZE_NO_MERGE \ No newline at end of file From 2606dd0cdd6184243cd5e15d69e19dcec5409347 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 6 Jun 2019 19:39:17 -0500 Subject: [PATCH 043/469] Revert "these too please thanks" This reverts commit bc80c036791d16bc33d3d841d212003b31c7e102. --- code/game/atoms.dm | 21 +- .../effects/decals/cleanable/footprints.dm | 201 ------- .../effects/decals/cleanable/humans.dm | 535 +++++------------- 3 files changed, 157 insertions(+), 600 deletions(-) delete mode 100644 code/game/objects/effects/decals/cleanable/footprints.dm diff --git a/code/game/atoms.dm b/code/game/atoms.dm index f88edcaa7e..50f6cdf968 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -255,7 +255,7 @@ f_name = "some " else f_name = "a " - f_name += "stained [name]!" + f_name += "blood-stained [name]!" to_chat(user, "[icon2html(src, user)] That's [f_name]") @@ -366,11 +366,8 @@ //to add blood from a mob onto something, and transfer their dna info /atom/proc/add_mob_blood(mob/living/M) var/list/blood_dna = M.get_blood_dna_list() - blood_color = BLOOD_COLOR_HUMAN if(!blood_dna) return FALSE - if(M.blood_DNA.len) - blood_color = M.blood_DNA_to_color() return add_blood(blood_dna) //to add blood onto something, with blood dna info to include. @@ -383,30 +380,18 @@ /obj/item/add_blood(list/blood_dna) if(!..()) return FALSE - - //if we haven't made our blood_overlay already - if(!blood_overlay ) - add_blood_overlay() - - //apply the blood-splatter overlay if it isn't already in there - if(!blood_DNA.len) - overlays += blood_overlay - + add_blood_overlay() return TRUE //we applied blood to the item /obj/item/proc/add_blood_overlay() if(!blood_DNA.len) return - if(GLOB.blood_overlay_cache["[icon]" + icon_state]) - blood_overlay = GLOB.blood_overlay_cache["[icon]" + icon_state] - return if(initial(icon) && initial(icon_state)) blood_splatter_icon = icon(initial(icon), initial(icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) blood_splatter_icon.Blend(icon('icons/effects/blood.dmi', "itemblood"), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant blood_splatter_icon.Blend(blood_DNA_to_color(), ICON_MULTIPLY) - blood_overlay = image(I) - GLOB.blood_overlay_cache["[icon]" + icon_state] = blood_overlay + add_overlay(blood_splatter_icon) /obj/item/clothing/gloves/add_blood(mob/living/carbon/M) . = ..() diff --git a/code/game/objects/effects/decals/cleanable/footprints.dm b/code/game/objects/effects/decals/cleanable/footprints.dm deleted file mode 100644 index 14bf78108d..0000000000 --- a/code/game/objects/effects/decals/cleanable/footprints.dm +++ /dev/null @@ -1,201 +0,0 @@ -// The idea is to have 4 bits for coming and 4 for going. -#define TRACKS_COMING_NORTH 1 -#define TRACKS_COMING_SOUTH 2 -#define TRACKS_COMING_EAST 4 -#define TRACKS_COMING_WEST 8 -#define TRACKS_GOING_NORTH 16 -#define TRACKS_GOING_SOUTH 32 -#define TRACKS_GOING_EAST 64 -#define TRACKS_GOING_WEST 128 - -// 5 seconds -#define TRACKS_CRUSTIFY_TIME 50 - -// color-dir-dry -var/global/list/image/fluidtrack_cache=list() - -/datum/fluidtrack - var/direction=0 - var/basecolor=BLOOD_COLOR_HUMAN - var/wet=0 - var/fresh=1 - var/crusty=0 - var/image/overlay - -/datum/fluidtrack/New(_direction,_color,_wet) - src.direction=_direction - src.basecolor=_color - -// Footprints, tire trails... -/obj/effect/decal/cleanable/blood/tracks - amount = 0 - random_icon_states = null - var/dirs=0 - icon = 'icons/effects/fluidtracks.dmi' - icon_state = "" - var/coming_state="blood1" - var/going_state="blood2" - var/updatedtracks=0 - var/dryname = "dried fluid" - var/drydesc = "diguesting dried fluid, where's the janitor?" - - // dir = id in stack - var/list/setdirs=list( - "1"=0, - "2"=0, - "4"=0, - "8"=0, - "16"=0, - "32"=0, - "64"=0, - "128"=0 - ) - - // List of laid tracks and their colors. - var/list/datum/fluidtrack/stack=list() - - /** - * Add tracks to an existing trail. - * - * @param DNA bloodDNA to add to collection. - * @param comingdir Direction tracks come from, or 0. - * @param goingdir Direction tracks are going to (or 0). - * @param bloodcolor Color of the blood when wet. - */ -/obj/effect/decal/cleanable/blood/tracks/proc/AddTracks(var/list/DNA, var/comingdir, var/goingdir, var/bloodcolor=BLOOD_COLOR_HUMAN) - var/updated=0 - // Shift our goingdir 4 spaces to the left so it's in the GOING bitblock. - var/realgoing=goingdir<<4 - - // Current bit - var/b=0 - - // When tracks will start to dry out - var/t=world.time + TRACKS_CRUSTIFY_TIME - var/datum/fluidtrack/track - - // Process 4 bits - for(var/bi=0;bi<4;bi++) - b=1<>4 - - if(track.overlay) - track.overlay=null - var/image/I = image(icon, icon_state=state, dir=num2dir(truedir)) - I.color = track.basecolor - - track.fresh=0 - track.overlay=I - stack[stack_idx]=track - overlays += I - updatedtracks=0 // Clear our memory of updated tracks. - -/obj/effect/decal/cleanable/blood/tracks/shoeprints - name = "wet shoeprints" - dryname = "dried shoeprints" - desc = "They look like still wet tracks left by footwear." - drydesc = "They look like dried tracks left by footwear." - coming_state = "shoe1" - going_state = "shoe2" - -/obj/effect/decal/cleanable/blood/tracks/footprints - name = "wet footprints" - dryname = "dried footprints" - desc = "They look like still wet tracks left by a foot." - drydesc = "They look like dried tracks left by a foot." - coming_state = "foot1" - going_state = "foot2" - -/obj/effect/decal/cleanable/blood/tracks/snake - name = "wet tracks" - dryname = "dried tracks" - desc = "They look like still wet tracks left by a giant snake." - drydesc = "They look like dried tracks left by a giant snake." - coming_state = "snake1" - going_state = "snake2" - -/obj/effect/decal/cleanable/blood/tracks/paw - name = "wet tracks" - dryname = "dried tracks" - desc = "They look like still wet tracks left by a mammal." - drydesc = "They look like dried tracks left by a mammal." - coming_state = "paw1" - going_state = "paw2" - -/obj/effect/decal/cleanable/blood/tracks/claw - name = "wet tracks" - dryname = "dried tracks" - desc = "They look like still wet tracks left by a reptile." - drydesc = "They look like dried tracks left by a reptile." - coming_state = "claw1" - going_state = "claw2" - -/obj/effect/decal/cleanable/blood/tracks/wheels - name = "wet tracks" - dryname = "dried tracks" - desc = "They look like still wet tracks left by wheels." - drydesc = "They look like dried tracks left by wheels." - coming_state = "wheels" - going_state = "" - gender = PLURAL - -/obj/effect/decal/cleanable/blood/tracks/body - name = "wet trails" - dryname = "dried trails" - desc = "A still-wet trail left by someone crawling." - drydesc = "A dried trail left by someone crawling." - coming_state = "trail1" - going_state = "trail2" diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index b5d4aed357..711e792752 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -1,158 +1,35 @@ -#define DRYING_TIME 5 * 60*10 //for 1 unit of depth in puddle (amount var) -#define BLOOD_SIZE_SMALL 1 -#define BLOOD_SIZE_MEDIUM 2 -#define BLOOD_SIZE_BIG 3 -#define BLOOD_SIZE_NO_MERGE -1 - -var/global/list/image/splatter_cache=list() - /obj/effect/decal/cleanable/blood name = "blood" - desc = "It's thick and gooey. Perhaps it's the chef's cooking?" - gender = PLURAL + desc = "It's gooey. Perhaps it's the chef's cooking?" icon = 'icons/effects/blood.dmi' - icon_state = "mfloor1" + icon_state = "floor1" random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7") blood_DNA = list() - generic_filth = TRUE - persistent = TRUE - appearance_flags = NO_CLIENT_COLOR - var/base_icon = 'icons/effects/blood.dmi' - var/list/viruses = list() - var/basecolor=BLOOD_COLOR_HUMAN // Color when wet. - var/list/datum/disease2/disease/virus2 = list() - var/amount = 5 - var/drytime - var/dryname = "dried blood" - var/drydesc = "It's dry and crusty. Someone is not doing their job." - var/blood_size = BLOOD_SIZE_MEDIUM // A relative size; larger-sized blood will not override smaller-sized blood, except maybe at mapload. + blood_state = BLOOD_STATE_BLOOD + color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere. + bloodiness = BLOOD_AMOUNT_PER_DECAL -/obj/effect/decal/cleanable/blood/clean_blood() - fluorescent = 0 - if(invisibility != 100) - set_invisibility(100) - amount = 0 - STOP_PROCESSING(SSobj, src) - ..(ignore=1) -/obj/effect/decal/cleanable/blood/hide() - return - -/obj/effect/decal/cleanable/blood/Destroy() - STOP_PROCESSING(SSobj, src) - return ..() - -/obj/effect/decal/cleanable/blood/Initialize(mapload) - . = ..() - if(merge_with_blood(!mapload)) - return INITIALIZE_HINT_QDEL - start_drying() - -// Returns true if overriden and needs deletion. If the argument is false, we will merge into any existing blood. -/obj/effect/decal/cleanable/blood/proc/merge_with_blood(var/override = TRUE) - . = FALSE - if(blood_size == BLOOD_SIZE_NO_MERGE) - return - if(isturf(loc)) - for(var/obj/effect/decal/cleanable/blood/B in loc) - if(B == src) - continue - if(B.blood_size == BLOOD_SIZE_NO_MERGE) - continue - if(override && blood_size >= B.blood_size) - if (B.blood_DNA) - blood_DNA |= B.blood_DNA.Copy() - qdel(B) - continue - if(B.blood_DNA) - B.blood_DNA |= blood_DNA.Copy() - . = TRUE - -/obj/effect/decal/cleanable/blood/proc/start_drying() - drytime = world.time + DRYING_TIME * (amount+1) +/obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) + if (C.blood_DNA) + blood_DNA |= C.blood_DNA.Copy() update_icon() - START_PROCESSING(SSobj, src) + ..() -/obj/effect/decal/cleanable/blood/Process() - if(world.time > drytime) - dry() +/obj/effect/decal/cleanable/blood/transfer_blood_dna() + ..() + update_icon() -/obj/effect/decal/cleanable/blood/on_update_icon() - if(basecolor == "rainbow") basecolor = get_random_colour(1) - color = basecolor - if(basecolor == SYNTH_BLOOD_COLOUR) - SetName("oil") - desc = "It's black and greasy." - else - SetName(initial(name)) - desc = initial(desc) - -/obj/effect/decal/cleanable/blood/Crossed(mob/living/carbon/human/perp) - if (!istype(perp)) - return - if(amount < 1) - return - - var/obj/item/organ/external/l_foot = perp.get_organ(BP_L_FOOT) - var/obj/item/organ/external/r_foot = perp.get_organ(BP_R_FOOT) - var/hasfeet = 1 - if((!l_foot || l_foot.is_stump()) && (!r_foot || r_foot.is_stump())) - hasfeet = 0 - if(perp.shoes && !perp.buckled)//Adding blood to shoes - var/obj/item/clothing/shoes/S = perp.shoes - if(istype(S)) - S.blood_color = basecolor - S.track_blood = max(amount,S.track_blood) - if(!S.blood_overlay) - S.add_blood_overlay() - if(!S.blood_DNA) - S.blood_DNA = list() - S.blood_overlay.color = basecolor - S.overlays += S.blood_overlay - if(S.blood_overlay && S.blood_overlay.color != basecolor) - S.blood_overlay.color = basecolor - S.overlays.Cut() - S.overlays += S.blood_overlay - S.blood_DNA |= blood_DNA.Copy() - - else if (hasfeet)//Or feet - perp.feet_blood_color = basecolor - perp.track_blood = max(amount,perp.track_blood) - if(!perp.feet_blood_DNA) - perp.feet_blood_DNA = list() - perp.feet_blood_DNA |= blood_DNA.Copy() - else if (perp.buckled && istype(perp.buckled, /obj/structure/bed/chair/wheelchair)) - var/obj/structure/bed/chair/wheelchair/W = perp.buckled - W.bloodiness = 4 - - perp.update_inv_shoes(1) - amount-- - -/obj/effect/decal/cleanable/blood/proc/dry() - name = dryname - desc = drydesc - color = adjust_brightness(color, -50) - amount = 0 - STOP_PROCESSING(SSobj, src) +/obj/effect/decal/cleanable/blood/transfer_mob_blood_dna() + . = ..() + update_icon() /obj/effect/decal/cleanable/blood/update_icon() color = blood_DNA_to_color() - -/obj/effect/decal/cleanable/blood/attack_hand(mob/living/carbon/human/user) - ..() - if (amount && istype(user)) - if (user.gloves) - return - var/taken = rand(1,amount) - amount -= taken - to_chat(user, "You get some of \the [src] on your hands.") - if (!user.blood_DNA) - user.blood_DNA = list() - user.blood_DNA |= blood_DNA.Copy() - user.bloody_hands = taken - user.hand_blood_color = basecolor - user.update_inv_gloves(1) +//obj/effect/decal/cleanable/blood/update_color() + // if(SEND_SIGNAL(COMSIG_BLOOD_COLOR) & COMPONENT_BLOCK_UPDATE_COLOR) + // return /obj/effect/decal/cleanable/blood/old name = "dried blood" @@ -167,273 +44,169 @@ var/global/list/image/splatter_cache=list() /obj/effect/decal/cleanable/blood/splatter random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") - amount = 2 - blood_size = BLOOD_SIZE_BIG +/obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose so that it shows up even on regular splatters + name = "blood" + icon_state = "ltrails_1" + desc = "Your instincts say you shouldn't be following these." + random_icon_states = null + var/list/existing_dirs = list() + color = BLOOD_COLOR_HUMAN + bloodiness = BLOOD_AMOUNT_PER_DECAL -/obj/effect/decal/cleanable/blood/gibs - name = "gibs" - desc = "They look bloody and gruesome." - icon_state = "gibbl5" - layer = LOW_OBJ_LAYER - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") - blood_size = BLOOD_SIZE_NO_MERGE - var/gib_overlay = FALSE - var/slimy_gibs = FALSE - var/body_colors = "#ffffff" +/obj/effect/decal/cleanable/trail_holder/update_icon() + color = blood_DNA_to_color() -/obj/effect/decal/cleanable/blood/gibs/proc/update_icon() - var/image/giblets = new(base_icon, icon_state+ "-overlay", dir) - var/image/giblets2 = new(base_icon, icon_state + "c-overlay", dir) - giblets.color = body_colors - - var/icon/blood = new(base_icon,"[icon_state]",dir) - if(basecolor == "rainbow") basecolor = get_random_colour(1) - blood.Blend(basecolor,ICON_MULTIPLY) - - icon = blood - overlays.Cut() - if(gib_overlay) - if(!slimy_gibs) - add_overlay(giblets) - else - add_overlay(giblets) - add_overlay(giblets2) - -/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) - return - -/obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L) - if(istype(L) && has_gravity(loc)) - if(ishuman(L)) - var/mob/living/carbon/human/H = L - if(H.mind.assigned_role == "Detective") //Gumshoe perks yo - playsound(loc, 'sound/effects/gib_step.ogg', 10, 1) - else - playsound(loc, 'sound/effects/gib_step.ogg', H.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) - else - playsound(loc, 'sound/effects/gib_step.ogg', L.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) +/obj/effect/cleanable/trail_holder/Initialize() . = ..() + update_icon() -/obj/effect/decal/cleanable/blood/gibs/proc/streak(var/list/directions) - spawn (0) - var/direction = pick(directions) - for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++) - sleep(3) - if (i > 0) - var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(loc) - b.basecolor = src.basecolor - b.update_icon() - if (step_to(src, get_step(src, direction), 0)) - break - -/obj/effect/decal/cleanable/blood/gibs/start_drying() - return - -/obj/effect/decal/cleanable/blood/gibs/merge_with_blood() - return FALSE - -/obj/effect/decal/cleanable/blood/gibs/up - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/down - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/body - random_icon_states = list("gibhead", "gibtorso") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/torso - random_icon_states = list("gibtorso") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/limb - random_icon_states = list("gibleg", "gibarm") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/core - random_icon_states = list("gibmid1", "gibmid2", "gibmid3") - gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/old - name = "old rotting gibs" - desc = "Space Jesus, why didn't anyone clean this up? It smells terrible." - bloodiness = 0 - -/obj/effect/decal/cleanable/blood/gibs/old/Initialize(mapload, list/datum/disease/diseases) - . = ..() - setDir(pick(1,2,4,8)) - icon_state += "-old" - add_blood(list("Non-human DNA" = "A+")) - -/obj/effect/decal/cleanable/blood/drip - name = "drips of blood" - desc = "It's gooey." - gender = PLURAL - icon_state = "1" - random_icon_states = list("drip1","drip2","drip3","drip4","drip5") - amount = 0 - var/list/drips - blood_size = BLOOD_SIZE_SMALL - -/obj/effect/decal/cleanable/blood/drip/Initialize() - . = ..() - drips = list(icon_state) - -/obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in() +/obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in() return TRUE -/obj/effect/decal/cleanable/blood/gibs/human - -/obj/effect/decal/cleanable/blood/gibs/human/Initialize(mapload, list/datum/disease/diseases) - . = ..() - reagents.add_reagent("liquidgibs", 5) - guts() +/obj/effect/decal/cleanable/trail_holder/transfer_blood_dna() + ..() update_icon() -/obj/effect/decal/cleanable/blood/gibs/human/up - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/human/down - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/human/body - random_icon_states = list("gibhead", "gibtorso") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/human/torso - random_icon_states = list("gibtorso") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/human/limb - random_icon_states = list("gibleg", "gibarm") - gib_overlay = TRUE - slimy_gibs = TRUE - -/obj/effect/decal/cleanable/blood/gibs/human/core - random_icon_states = list("gibmid1", "gibmid2", "gibmid3") - gib_overlay = TRUE - slimy_gibs = TRUE - -// Slime Gibs -/obj/effect/decal/cleanable/blood/gibs/slime - desc = "They look gooey and gruesome." - -/obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases) +/obj/effect/decal/cleanable/trail_holder/transfer_mob_blood_dna() . = ..() - reagents.add_reagent("liquidslimegibs", 5) update_icon() - guts() -/obj/effect/decal/cleanable/blood/gibs/slime/up - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") - gib_overlay = TRUE - slimy_gibs = TRUE +//BLOODY FOOTPRINTS +/obj/effect/decal/cleanable/blood/footprints/tracks + name = "tracks" + icon = 'icons/effects/fluidtracks.dmi' + icon_state = "nothingwhatsoever" + desc = "WHOSE FOOTPRINTS ARE THESE?" + random_icon_states = null + var/entered_dirs = 0 + var/exited_dirs = 0 + blood_state = BLOOD_STATE_BLOOD //the icon state to load images from + var/print_state = FOOTPRINT_SHOE //the print state for different feet + var/list/shoe_types = list() -/obj/effect/decal/cleanable/blood/gibs/slime/down - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") - gib_overlay = TRUE - slimy_gibs = TRUE +/obj/effect/decal/cleanable/blood/footprints/tracks/Crossed(atom/movable/O) + if(ishuman(O)) + var/mob/living/carbon/human/H = O + var/obj/item/clothing/shoes/S = H.shoes + if(S && S.blood_smear[blood_state]) + if(color != bloodtype_to_color(S.last_bloodtype)) + return + S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) + shoe_types |= S.type + if (!(entered_dirs & H.dir)) + entered_dirs |= H.dir + update_icon() -/obj/effect/decal/cleanable/blood/gibs/slime/body - random_icon_states = list("gibhead", "gibtorso") - gib_overlay = TRUE - slimy_gibs = TRUE + else if(H && H.blood_smear[blood_state]) + if(color != bloodtype_to_color(H.last_bloodtype)) + return + H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) + if (!(entered_dirs & H.dir)) + entered_dirs |= H.dir + update_icon() -/obj/effect/decal/cleanable/blood/gibs/slime/torso - random_icon_states = list("gibtorso") - gib_overlay = TRUE - slimy_gibs = TRUE +/obj/effect/decal/cleanable/blood/footprints/tracks/Uncrossed(atom/movable/O) + if(ishuman(O)) + var/mob/living/carbon/human/H = O + var/obj/item/clothing/shoes/S = H.shoes + if(S && S.blood_smear[blood_state]) + if(color != bloodtype_to_color(S.last_bloodtype))//last entry - we check its color + return + S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) + shoe_types |= S.type + if (!(exited_dirs & H.dir)) + exited_dirs |= H.dir + update_icon() -/obj/effect/decal/cleanable/blood/gibs/slime/limb - random_icon_states = list("gibleg", "gibarm") - gib_overlay = TRUE - slimy_gibs = TRUE + else if(H && H.blood_smear[blood_state]) + if(color != bloodtype_to_color(H.last_bloodtype))//last entry - we check its color + return + H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) + if (!(exited_dirs & H.dir)) + exited_dirs |= H.dir + update_icon() -/obj/effect/decal/cleanable/blood/gibs/slime/core - random_icon_states = list("gibmid1", "gibmid2", "gibmid3") - gib_overlay = TRUE - slimy_gibs = TRUE +/obj/effect/decal/cleanable/blood/footprints/tracks/update_icon() + ..() + cut_overlays() + to_chat(world, "[src] called update_icon with [print_state]") + for(var/Ddir in GLOB.cardinals) + if(entered_dirs & Ddir) + var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] + if(!bloodstep_overlay) + GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir) + add_overlay(bloodstep_overlay) + if(exited_dirs & Ddir) + var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"] + if(!bloodstep_overlay) + GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir) + add_overlay(bloodstep_overlay) -/obj/effect/decal/cleanable/blood/gibs/synth - desc = "They look sludgy and disgusting." + alpha = BLOODY_FOOTPRINT_BASE_ALPHA + bloodiness -/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) + +/obj/effect/decal/cleanable/blood/footprints/tracks/examine(mob/user) . = ..() - reagents.add_reagent("liquidsyntheticgibs", 5) - update_icon() - guts() + if(shoe_types.len && ishuman(user) && user.mind.assigned_role == "Detective") //gumshoe does the detective thing, not every fucking assistant + . += "You recognise the footprints as belonging to:\n" + for(var/shoe in shoe_types) + var/obj/item/clothing/shoes/S = shoe + . += "some [initial(S.name)] [icon2html(initial(S.icon), user)]\n" -//IPCs -/obj/effect/decal/cleanable/blood/gibs/ipc - desc = "They look sharp yet oozing." + to_chat(user, .) -/obj/effect/decal/cleanable/blood/gibs/ipc/Initialize(mapload, list/datum/disease/diseases) - . = ..() - reagents.add_reagent("liquidoilgibs", 5) - update_icon() - guts() +/obj/effect/decal/cleanable/blood/footprints/tracks/replace_decal(obj/effect/decal/cleanable/blood/footprints/tracks/C) + if(print_state != C.print_state) //We only replace footprints of the same type as us + return + if(color != C.color) + return + ..() -/obj/effect/decal/cleanable/blood/gibs/ipc/guts() - if(gib_overlay) - var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-ipcoverlay", color = blood_color, layer = -LOW_OBJ_LAYER) - var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-ipcoverlay", color = body_colors, layer = -LOW_OBJ_LAYER) - if(!slimy_gibs) - gibz.appearance_flags = RESET_COLOR - add_overlay(gibz) - else - gibz.appearance_flags = RESET_COLOR - add_overlay(gibz) - add_overlay(gibz2) +/obj/effect/decal/cleanable/blood/footprints/tracks/can_bloodcrawl_in() + if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY)) + return TRUE + return FALSE -/obj/effect/decal/cleanable/blood/gibs/ipc/up - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") - gib_overlay = TRUE - slimy_gibs = TRUE +/obj/effect/decal/cleanable/blood/footprints/tracks/shoe + name = "footprints" + desc = "They look like tracks left by footwear." + icon_state = FOOTPRINT_SHOE + print_state = FOOTPRINT_SHOE -/obj/effect/decal/cleanable/blood/gibs/ipc/down - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") - gib_overlay = TRUE - slimy_gibs = TRUE +/obj/effect/decal/cleanable/blood/footprints/tracks/foot + name = "footprints" + desc = "They look like tracks left by a bare foot." + icon_state = FOOTPRINT_FOOT + print_state = FOOTPRINT_FOOT -/obj/effect/decal/cleanable/blood/gibs/ipc/body - random_icon_states = list("gibhead", "gibtorso") - gib_overlay = TRUE - slimy_gibs = TRUE +/obj/effect/decal/cleanable/blood/footprints/tracks/snake + name = "tracks" + desc = "They look like tracks left by a giant snake." + icon_state = FOOTPRINT_SNAKE + print_state = FOOTPRINT_SNAKE -/obj/effect/decal/cleanable/blood/gibs/ipc/torso - random_icon_states = list("gibtorso") - gib_overlay = TRUE - slimy_gibs = TRUE +/obj/effect/decal/cleanable/blood/footprints/tracks/paw + name = "footprints" + desc = "They look like tracks left by paws." + icon_state = FOOTPRINT_PAW + print_state = FOOTPRINT_PAW -/obj/effect/decal/cleanable/blood/gibs/ipc/limb - random_icon_states = list("gibleg", "gibarm") - gib_overlay = TRUE - slimy_gibs = TRUE +/obj/effect/decal/cleanable/blood/footprints/tracks/claw + name = "footprints" + desc = "They look like tracks left by claws." + icon_state = FOOTPRINT_CLAW + print_state = FOOTPRINT_CLAW -/obj/effect/decal/cleanable/blood/gibs/ipc/core - random_icon_states = list("gibmid1", "gibmid2", "gibmid3") - gib_overlay = TRUE - slimy_gibs = TRUE +/obj/effect/decal/cleanable/blood/footprints/tracks/wheels + name = "tracks" + desc = "They look like tracks left by wheels." + gender = PLURAL + icon_state = FOOTPRINT_WHEEL + print_state = FOOTPRINT_WHEEL -/obj/effect/decal/cleanable/blood/gibs/synth - desc = "They look sludgy and disgusting." - -/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) - . = ..() - reagents.add_reagent("liquidsyntheticgibs", 5) - update_icon() - guts() - -#undef BLOOD_SIZE_SMALL -#undef BLOOD_SIZE_MEDIUM -#undef BLOOD_SIZE_BIG -#undef BLOOD_SIZE_NO_MERGE \ No newline at end of file +/obj/effect/decal/cleanable/blood/footprints/tracks/body + name = "trails" + desc = "A trail left by something being dragged." + icon_state = FOOTPRINT_DRAG + print_state = FOOTPRINT_DRAG From 6b82c985ae8dd373effc18fef939bfe74cab6cd4 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 6 Jun 2019 19:39:22 -0500 Subject: [PATCH 044/469] Revert "fuckit, I'm just gunna wholesale port from baycode I guess" This reverts commit 11d10d38052d7cd2077a5b698f4c555b01780354. --- code/__HELPERS/type2type.dm | 14 - code/game/objects/effects/decals/cleanable.dm | 46 +++- .../effects/decals/cleanable/aliens.dm | 21 +- .../objects/effects/decals/cleanable/gibs.dm | 252 +++++++++++++++++- .../effects/decals/cleanable/robots.dm | 71 +++-- code/game/objects/items.dm | 1 - code/game/turfs/turf.dm | 6 +- code/modules/clothing/shoes/_shoes.dm | 3 +- .../mob/living/carbon/human/species.dm | 8 +- .../carbon/human/species_types/angel.dm | 2 +- .../carbon/human/species_types/humans.dm | 2 +- .../carbon/human/species_types/jellypeople.dm | 2 +- .../human/species_types/lizardpeople.dm | 6 +- .../carbon/human/species_types/mothmen.dm | 2 +- .../carbon/human/species_types/plasmamen.dm | 2 +- .../carbon/human/species_types/podpeople.dm | 2 +- .../carbon/human/species_types/skeletons.dm | 2 +- .../carbon/human/species_types/zombies.dm | 2 +- .../mob/living/carbon/human/update_icons.dm | 2 +- .../mob/living/simple_animal/bot/cleanbot.dm | 1 + .../carbon/human/species_types/furrypeople.dm | 16 +- 21 files changed, 361 insertions(+), 102 deletions(-) diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 03056f625f..d6942f1c40 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -75,20 +75,6 @@ return splittext(trim(file2text(filename)),seperator) return splittext(file2text(filename),seperator) -// Turns a direction into text -/proc/num2dir(direction) - switch (direction) - if (1.0) return NORTH - if (2.0) return SOUTH - if (4.0) return EAST - if (5.0) return NORTHEAST - if (6.0) return SOUTHEAST - if (8.0) return WEST - if (9.0) return NORTHWEST - if (10.0) return SOUTHWEST - else - world.log << "UNKNOWN DIRECTION: [direction]" - //Turns a direction into text /proc/dir2text(direction) switch(direction) diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 4c93c3a2db..babc012719 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -66,8 +66,46 @@ reagents.expose_temperature(exposed_temperature) ..() -/obj/effect/decal/cleanable/clean_blood(var/ignore = FALSE) - if(!ignore) - qdel(src) - return + +//Add "bloodiness" of this blood's type, to the human's shoes +//This is on /cleanable because fuck this ancient mess +/obj/effect/decal/cleanable/Crossed(atom/movable/O) ..() + if(ishuman(O)) + var/mob/living/carbon/human/H = O + if(H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) + var/obj/item/clothing/shoes/S = H.shoes + var/add_blood = 0 + if(bloodiness >= BLOOD_GAIN_PER_STEP) + add_blood = BLOOD_GAIN_PER_STEP + else + add_blood = bloodiness + bloodiness -= add_blood + to_chat(world, "S.blood_state is [S.blood_state], & blood smear state is [S.blood_smear[S.blood_state]]") + S.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,S.blood_smear[blood_state]+add_blood) + if(blood_DNA && blood_DNA.len) + S.add_blood(blood_DNA) + S.blood_smear = blood_state + update_icon() + H.update_inv_shoes() + + else if(!H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) + var/add_blood = 0 + if(bloodiness >= BLOOD_GAIN_PER_STEP) + add_blood = BLOOD_GAIN_PER_STEP + else + add_blood = bloodiness + bloodiness -= add_blood + to_chat(world, "blood_state is [blood_state], & blood smear state is [H.blood_smear[blood_state]]") + H.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,H.blood_smear[blood_state]+add_blood) + if(blood_DNA && blood_DNA.len) + H.add_blood(blood_DNA) + H.blood_smear = blood_state + update_icon() + H.update_inv_shoes() + +/obj/effect/decal/cleanable/proc/can_bloodcrawl_in() + if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY)) + return bloodiness + else + return FALSE diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 0902eed25b..900f392796 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -3,24 +3,24 @@ /obj/effect/decal/cleanable/blood/xeno name = "xeno blood" desc = "It's green and acidic. It looks like... blood?" - basecolor = BLOOD_COLOR_XENO + color = BLOOD_COLOR_XENO blood_DNA = list("UNKNOWN DNA" = "X*") /obj/effect/decal/cleanable/blood/splatter/xeno - basecolor = BLOOD_COLOR_XENO + color = BLOOD_COLOR_XENO /obj/effect/decal/cleanable/blood/gibs/xeno name = "xeno gibs" desc = "Gnarly..." icon_state = "xgib1" random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6") - basecolor = BLOOD_COLOR_XENO + color = BLOOD_COLOR_XENO /obj/effect/decal/cleanable/blood/gibs/xeno/Initialize(mapload, list/datum/disease/diseases) . = ..() reagents.add_reagent("liquidxenogibs", 5) -/obj/effect/decal/cleanable/blood/xeno/streak(list/directions) +/obj/effect/decal/cleanable/blood/gibs/xeno/streak(list/directions) set waitfor = 0 var/direction = pick(directions) for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) @@ -35,22 +35,22 @@ if(!step_to(src, get_step(src, direction), 0)) break -/obj/effect/decal/cleanable/blood/gibs/xeno/up +/obj/effect/decal/cleanable/blood/gibs/xeno/up/xeno random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1") -/obj/effect/decal/cleanable/blood/gibs/xeno/down +/obj/effect/decal/cleanable/blood/gibs/xeno/down/xeno random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibdown1","xgibdown1","xgibdown1") -/obj/effect/decal/cleanable/blood/gibs/xeno/body +/obj/effect/decal/cleanable/blood/gibs/xeno/body/xeno random_icon_states = list("xgibhead", "xgibtorso") -/obj/effect/decal/cleanable/blood/gibs/xeno/torso +/obj/effect/decal/cleanable/blood/gibs/xeno/torso/xeno random_icon_states = list("xgibtorso") -/obj/effect/decal/cleanable/blood/gibs/xeno/limb +/obj/effect/decal/cleanable/blood/gibs/xeno/limb/xeno random_icon_states = list("xgibleg", "xgibarm") -/obj/effect/decal/cleanable/blood/gibs/xeno/core +/obj/effect/decal/cleanable/blood/gibs/xeno/core/xeno random_icon_states = list("xgibmid1", "xgibmid2", "xgibmid3") /obj/effect/decal/cleanable/blood/gibs/xeno/larva @@ -62,7 +62,6 @@ /obj/effect/decal/cleanable/blood/xtracks icon_state = "tracks" random_icon_states = null - basecolor = BLOOD_COLOR_XENO /obj/effect/decal/cleanable/blood/xtracks/Initialize() add_blood(list("UNKNOWN DNA" = "X*")) diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 7384b73eb1..48670957cd 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -1,11 +1,247 @@ -#define BLOOD_SIZE_SMALL 1 -#define BLOOD_SIZE_MEDIUM 2 -#define BLOOD_SIZE_BIG 3 -#define BLOOD_SIZE_NO_MERGE -1 +/obj/effect/decal/cleanable/blood/gibs + name = "gibs" + desc = "They look bloody and gruesome." + icon_state = "gibbl5" + layer = LOW_OBJ_LAYER + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") + mergeable_decal = FALSE + var/gib_overlay = FALSE + var/slimy_gibs = FALSE + var/body_colors +/obj/effect/decal/cleanable/blood/gibs/proc/guts() + if(gib_overlay) + var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-overlay", color = blood_color, layer = (LOW_OBJ_LAYER + 0.1)) + var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-overlay", color = body_colors, layer = (LOW_OBJ_LAYER + 0.1)) + if(!slimy_gibs) + gibz.appearance_flags = RESET_COLOR + add_overlay(gibz) + else + gibz.appearance_flags = RESET_COLOR + add_overlay(gibz) + add_overlay(gibz2) +/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) + return -#undef BLOOD_SIZE_SMALL -#undef BLOOD_SIZE_MEDIUM -#undef BLOOD_SIZE_BIG -#undef BLOOD_SIZE_NO_MERGE +/obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L) + if(istype(L) && has_gravity(loc)) + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(H.mind.assigned_role == "Detective") //Gumshoe perks yo + playsound(loc, 'sound/effects/gib_step.ogg', 10, 1) + else + playsound(loc, 'sound/effects/gib_step.ogg', H.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) + else + playsound(loc, 'sound/effects/gib_step.ogg', L.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) + . = ..() + +/obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions) + set waitfor = 0 + var/direction = pick(directions) + for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) + sleep(2) + if(i > 0) + var/list/datum/disease/diseases + GET_COMPONENT(infective, /datum/component/infective) + if(infective) + diseases = infective.diseases + var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) + splat.transfer_blood_dna(blood_DNA) + + if(!step_to(src, get_step(src, direction), 0)) + break + +/obj/effect/decal/cleanable/blood/gibs/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/body + random_icon_states = list("gibhead", "gibtorso") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/torso + random_icon_states = list("gibtorso") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/limb + random_icon_states = list("gibleg", "gibarm") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/old + name = "old rotting gibs" + desc = "Space Jesus, why didn't anyone clean this up? It smells terrible." + bloodiness = 0 + +/obj/effect/decal/cleanable/blood/gibs/old/Initialize(mapload, list/datum/disease/diseases) + . = ..() + setDir(pick(1,2,4,8)) + icon_state += "-old" + add_blood(list("Non-human DNA" = "A+")) + +/obj/effect/decal/cleanable/blood/drip + name = "drips of blood" + desc = "It's gooey." + icon_state = "1" + random_icon_states = list("drip1","drip2","drip3","drip4","drip5") + bloodiness = 0 + var/drips = 1 + +/obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in() + return TRUE + +/obj/effect/decal/cleanable/blood/gibs/human + +/obj/effect/decal/cleanable/blood/gibs/human/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidgibs", 5) + guts() + update_icon() + +/obj/effect/decal/cleanable/blood/gibs/human/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/body + random_icon_states = list("gibhead", "gibtorso") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/torso + random_icon_states = list("gibtorso") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/limb + random_icon_states = list("gibleg", "gibarm") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + gib_overlay = TRUE + slimy_gibs = TRUE + +// Slime Gibs +/obj/effect/decal/cleanable/blood/gibs/slime + desc = "They look gooey and gruesome." + +/obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidslimegibs", 5) + update_icon() + guts() + +/obj/effect/decal/cleanable/blood/gibs/slime/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/body + random_icon_states = list("gibhead", "gibtorso") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/torso + random_icon_states = list("gibtorso") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/limb + random_icon_states = list("gibleg", "gibarm") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/slime/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/synth + desc = "They look sludgy and disgusting." + +/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidsyntheticgibs", 5) + update_icon() + guts() + +//IPCs +/obj/effect/decal/cleanable/blood/gibs/ipc + desc = "They look sharp yet oozing." + +/obj/effect/decal/cleanable/blood/gibs/ipc/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidoilgibs", 5) + update_icon() + guts() + +/obj/effect/decal/cleanable/blood/gibs/ipc/guts() + if(gib_overlay) + var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-ipcoverlay", color = blood_color, layer = -LOW_OBJ_LAYER) + var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-ipcoverlay", color = body_colors, layer = -LOW_OBJ_LAYER) + if(!slimy_gibs) + gibz.appearance_flags = RESET_COLOR + add_overlay(gibz) + else + gibz.appearance_flags = RESET_COLOR + add_overlay(gibz) + add_overlay(gibz2) + +/obj/effect/decal/cleanable/blood/gibs/ipc/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/body + random_icon_states = list("gibhead", "gibtorso") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/torso + random_icon_states = list("gibtorso") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/limb + random_icon_states = list("gibleg", "gibarm") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/ipc/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + gib_overlay = TRUE + slimy_gibs = TRUE + +/obj/effect/decal/cleanable/blood/gibs/synth + desc = "They look sludgy and disgusting." + +/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidsyntheticgibs", 5) + update_icon() + guts() diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm index 6e92f8e876..02bf51bdd9 100644 --- a/code/game/objects/effects/decals/cleanable/robots.dm +++ b/code/game/objects/effects/decals/cleanable/robots.dm @@ -1,66 +1,65 @@ // Note: BYOND is object oriented. There is no reason for this to be copy/pasted blood code. -/obj/effect/decal/cleanable/blood/gibs/robot +/obj/effect/decal/cleanable/robot_debris name = "robot debris" desc = "It's a useless heap of junk... or is it?" icon = 'icons/mob/robots.dmi' icon_state = "gib1" layer = LOW_OBJ_LAYER random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7") - basecolor = BLOOD_COLOR_OIL + blood_state = BLOOD_STATE_OIL + bloodiness = BLOOD_AMOUNT_PER_DECAL + mergeable_decal = FALSE -/obj/effect/decal/cleanable/blood/gibs/robot/Initialize(mapload, list/datum/disease/diseases) +/obj/effect/decal/cleanable/robot_debris/Initialize(mapload, list/datum/disease/diseases) . = ..() reagents.add_reagent("liquidoilgibs", 5) -/obj/effect/decal/cleanable/blood/gibs/robot/dry() //pieces of robots do not dry up like blood +/obj/effect/decal/cleanable/robot_debris/proc/streak(list/directions) + set waitfor = 0 + var/direction = pick(directions) + for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) + sleep(2) + if (i > 0) + if (prob(40)) + new /obj/effect/decal/cleanable/oil/streak(src.loc) + else if (prob(10)) + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + s.set_up(3, 1, src) + s.start() + if (!step_to(src, get_step(src, direction), 0)) + break + +/obj/effect/decal/cleanable/robot_debris/ex_act() return -/obj/effect/decal/cleanable/blood/gibs/robot/streak(var/list/directions) - spawn (0) - var/direction = pick(directions) - for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++) - sleep(3) - if (i > 0) - if (prob(40)) - var/obj/effect/decal/cleanable/blood/oil/streak = new(src.loc) - streak.update_icon() - else if (prob(10)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(3, 1, src) - s.start() - if (step_to(src, get_step(src, direction), 0)) - break - -/obj/effect/decal/cleanable/blood/gibs/robot/ex_act() - return - -/obj/effect/decal/cleanable/blood/gibs/robot/limb +/obj/effect/decal/cleanable/robot_debris/limb random_icon_states = list("gibarm", "gibleg") -/obj/effect/decal/cleanable/blood/gibs/robot/up +/obj/effect/decal/cleanable/robot_debris/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7","gibup1","gibup1") -/obj/effect/decal/cleanable/blood/gibs/robot/down +/obj/effect/decal/cleanable/robot_debris/down random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7","gibdown1","gibdown1") -/obj/effect/decal/cleanable/blood/oil +/obj/effect/decal/cleanable/oil name = "motor oil" desc = "It's black and greasy. Looks like Beepsky made another mess." - basecolor = BLOOD_COLOR_OIL + icon = 'icons/mob/robots.dmi' + icon_state = "floor1" + random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7") + blood_state = BLOOD_STATE_OIL + bloodiness = BLOOD_AMOUNT_PER_DECAL -/obj/effect/decal/cleanable/blood/oil/Initialize() +/obj/effect/decal/cleanable/oil/Initialize() . = ..() reagents.add_reagent("oil", 30) reagents.add_reagent("liquidoilgibs", 5) -/obj/effect/decal/cleanable/blood/oil/dry() - return +/obj/effect/decal/cleanable/oil/streak + random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5") -/obj/effect/decal/cleanable/blood/oil/streak - amount = 2 +/obj/effect/decal/cleanable/oil/slippery -/obj/effect/decal/cleanable/blood/oil/slippery - -/obj/effect/decal/cleanable/blood/oil/slippery/Initialize() +/obj/effect/decal/cleanable/oil/slippery/Initialize() AddComponent(/datum/component/slippery, 80, (NO_SLIP_WHEN_WALKING | SLIDE)) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index f906045d7f..d49f311c18 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -113,7 +113,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) //Blood overlay things var/blood_color - var/image/blood_overlay = null //this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite /obj/item/Initialize() diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 50ac3a71a2..13ea59cb52 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -194,8 +194,8 @@ if(O.obj_flags & FROZEN) O.make_unfrozen() - if(isliving(AM)) - var/mob/living/M = AM + if(isliving(A)) + var/mob/living/M = A if(ishuman(M)) var/mob/living/carbon/human/H = M // Tracking blood @@ -226,7 +226,7 @@ /turf/proc/is_plasteel_floor() return FALSE -/turf/open/proc/AddTracks(var/typepath,var/bloodDNA,var/comingdir,var/goingdir,var/bloodcolor=BLOOD_COLOR_HUMAN) +/turf/open/proc/AddTracks(var/typepath,var/bloodDNA,var/comingdir,var/goingdir,var/bloodcolor=COLOR_BLOOD_HUMAN) var/obj/effect/decal/cleanable/blood/tracks/tracks = locate(typepath) in src if(!tracks) tracks = new typepath(src) diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index 26459c8051..fb85d057b2 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -17,7 +17,7 @@ var/adjusted = NORMAL_STYLE mutantrace_variation = MUTANTRACE_VARIATION - var/move_trail = /obj/effect/decal/cleanable/blood/tracks/shoe + var/move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/shoe /obj/item/clothing/shoes/suicide_act(mob/living/carbon/user) if(rand(2)>1) @@ -91,6 +91,7 @@ /obj/item/clothing/shoes/clean_blood() ..() + blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) blood_state = BLOOD_STATE_NOT_BLOODY blood_color = null if(ismob(loc)) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 283d2db800..af03bf3f2f 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -77,7 +77,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/fixed_mut_color3 = "" var/whitelisted = 0 //Is this species restricted to certain players? var/whitelist = list() //List the ckeys that can use this species, if it's whitelisted.: list("John Doe", "poopface666", "SeeALiggerPullTheTrigger") Spaces & capitalization can be included or ignored entirely for each key as it checks for both. - var/obj/effect/decal/cleanable/blood/tracks/move_trail = /obj/effect/decal/cleanable/blood/tracks/shoe // What marks are left when walking + var/obj/effect/decal/cleanable/blood/footprints/tracks/move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/shoe // What marks are left when walking /////////// // PROCS // @@ -643,9 +643,9 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(H.dna.features["taur"] != "None") if(H.dna.features["taur"] in GLOB.noodle_taurs) - move_trail = /obj/effect/decal/cleanable/blood/tracks/snake + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/snake else if(H.dna.features["taur"] in GLOB.paw_taurs) - move_trail = /obj/effect/decal/cleanable/blood/tracks/paw + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/paw //END EDIT @@ -941,7 +941,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) // Impliments different trails for species depending on if they're wearing shoes. /datum/species/proc/get_move_trail(var/mob/living/carbon/human/H) if(H.lying) - return /obj/effect/decal/cleanable/blood/tracks/body + return /obj/effect/decal/cleanable/blood/footprints/tracks/body if(H.shoes || (H.wear_suit && (H.wear_suit.body_parts_covered & FEET))) var/obj/item/clothing/shoes/shoes = (H.wear_suit && (H.wear_suit.body_parts_covered & FEET)) ? H.wear_suit : H.shoes // suits take priority over shoes return shoes.move_trail diff --git a/code/modules/mob/living/carbon/human/species_types/angel.dm b/code/modules/mob/living/carbon/human/species_types/angel.dm index 3a9ae056c9..92798c8bc7 100644 --- a/code/modules/mob/living/carbon/human/species_types/angel.dm +++ b/code/modules/mob/living/carbon/human/species_types/angel.dm @@ -10,7 +10,7 @@ blacklisted = 1 limbs_id = "human" skinned_type = /obj/item/stack/sheet/animalhide/human - move_trail = /obj/effect/decal/cleanable/blood/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot var/datum/action/innate/flight/fly diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index 6ebc77f0b5..d3288e1cd1 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -9,7 +9,7 @@ skinned_type = /obj/item/stack/sheet/animalhide/human disliked_food = GROSS | RAW liked_food = JUNKFOOD | FRIED - move_trail = /obj/effect/decal/cleanable/blood/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/human/qualifies_for_rank(rank, list/features) return TRUE //Pure humans are always allowed in all roles. diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 63705bca90..ea7a20163a 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -18,7 +18,7 @@ coldmod = 6 // = 3x cold damage heatmod = 0.5 // = 1/4x heat damage burnmod = 0.5 // = 1/2x generic burn damage - move_trail = /obj/effect/decal/cleanable/blood/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/jelly/on_species_loss(mob/living/carbon/C) if(regenerate_limbs) diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index 22d7250b61..ba4d8b8781 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -73,7 +73,7 @@ /datum/species/lizard/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Digitigrade Legs") species_traits += DIGITIGRADE - move_trail = /obj/effect/decal/cleanable/blood/tracks/claw + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(FALSE) return ..() @@ -81,7 +81,7 @@ /datum/species/lizard/on_species_loss(mob/living/carbon/human/C, datum/species/new_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Normal Legs") species_traits -= DIGITIGRADE - move_trail = /obj/effect/decal/cleanable/blood/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(TRUE) @@ -97,7 +97,7 @@ mutantlungs = /obj/item/organ/lungs/ashwalker burnmod = 0.9 brutemod = 0.9 - move_trail = /obj/effect/decal/cleanable/blood/tracks/claw + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw /datum/species/lizard/ashwalker/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) if((C.dna.features["spines"] != "None" ) && (C.dna.features["tail"] == "None")) //tbh, it's kinda ugly for them not to have a tail yet have floating spines diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index 6494638f0f..4c2c360c68 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -15,7 +15,7 @@ disliked_food = FRUIT | GROSS toxic_food = MEAT | RAW mutanteyes = /obj/item/organ/eyes/moth - move_trail = /obj/effect/decal/cleanable/blood/tracks/claw + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw /datum/species/moth/on_species_gain(mob/living/carbon/C) . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index fdca7b4f27..c556390533 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -21,7 +21,7 @@ var/internal_fire = FALSE //If the bones themselves are burning clothes won't help you much disliked_food = FRUIT liked_food = VEGETABLES - move_trail = /obj/effect/decal/cleanable/blood/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/plasmaman/spec_life(mob/living/carbon/human/H) var/datum/gas_mixture/environment = H.loc.return_air() diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index f43e3f1810..05c52ede86 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -17,7 +17,7 @@ var/light_oxyheal = 1 var/light_burnheal = 1 var/light_bruteheal = 1 - move_trail = /obj/effect/decal/cleanable/blood/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/pod/on_species_gain(mob/living/carbon/C, datum/species/old_species) . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index 6d7e93f7c7..606e72839b 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -13,7 +13,7 @@ damage_overlay_type = ""//let's not show bloody wounds or burns over bones. disliked_food = NONE liked_food = GROSS | MEAT | RAW - move_trail = /obj/effect/decal/cleanable/blood/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/skeleton/check_roundstart_eligible() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index 97d76e883b..e2c8ffb9c3 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -15,7 +15,7 @@ var/static/list/spooks = list('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/wail.ogg') disliked_food = NONE liked_food = GROSS | MEAT | RAW - move_trail = /obj/effect/decal/cleanable/blood/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/zombie/check_roundstart_eligible() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 35aa0a3793..946024760d 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -276,7 +276,7 @@ There are several things that need to be remembered: var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES] inv.update_icon() - if(!shoes) + if(!shoes && bloody_feet) var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) if(dna.features["taur"] != "None") if(dna.features["taur"] in GLOB.noodle_taurs) diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index f3dfae1889..97f14ce7bd 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -192,6 +192,7 @@ if(blood) target_types += /obj/effect/decal/cleanable/blood + target_types += /obj/effect/decal/cleanable/trail_holder if(pests) target_types += /mob/living/simple_animal/cockroach diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index 188aa4d913..3301345fcf 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -13,7 +13,7 @@ meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/mammal liked_food = MEAT | FRIED disliked_food = TOXIC - move_trail = /obj/effect/decal/cleanable/blood/tracks/paw + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/paw //Curiosity killed the cat's wagging tail. /datum/species/mammal/spec_death(gibbed, mob/living/carbon/human/H) @@ -46,7 +46,7 @@ /datum/species/mammal/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Digitigrade Legs") species_traits += DIGITIGRADE - move_trail = /obj/effect/decal/cleanable/blood/tracks/paw + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/paw if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(FALSE) return ..() @@ -54,7 +54,7 @@ /datum/species/mammal/on_species_loss(mob/living/carbon/human/C, datum/species/new_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Normal Legs") species_traits -= DIGITIGRADE - move_trail = /obj/effect/decal/cleanable/blood/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(TRUE) @@ -78,7 +78,7 @@ miss_sound = 'sound/weapons/slashmiss.ogg' liked_food = MEAT | FRUIT disliked_food = TOXIC - move_trail = /obj/effect/decal/cleanable/blood/tracks/claw + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw /datum/species/avian/spec_death(gibbed, mob/living/carbon/human/H) if(H) @@ -126,7 +126,7 @@ liked_food = MEAT disliked_food = TOXIC meat = /obj/item/reagent_containers/food/snacks/carpmeat/aquatic - move_trail = /obj/effect/decal/cleanable/blood/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/aquatic/spec_death(gibbed, mob/living/carbon/human/H) if(H) @@ -173,7 +173,7 @@ miss_sound = 'sound/weapons/slashmiss.ogg' liked_food = MEAT | FRUIT disliked_food = TOXIC - move_trail = /obj/effect/decal/cleanable/blood/tracks/claw + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw /datum/species/insect/spec_death(gibbed, mob/living/carbon/human/H) if(H) @@ -230,7 +230,7 @@ /datum/species/xeno/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Digitigrade Legs") species_traits += DIGITIGRADE - move_trail = /obj/effect/decal/cleanable/blood/tracks/claw + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(FALSE) return ..() @@ -238,7 +238,7 @@ /datum/species/xeno/on_species_loss(mob/living/carbon/human/C, datum/species/new_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Normal Legs") species_traits -= DIGITIGRADE - move_trail = /obj/effect/decal/cleanable/blood/tracks/foot + move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(TRUE) From 2e42656b6d9c2243cee8a0b18fcd2bb94057abec Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 6 Jun 2019 19:40:08 -0500 Subject: [PATCH 045/469] Revert "lel" This reverts commit 9e01a078ec5f8d96e1cb7d9b2c882f1e46ce03a1. --- code/game/objects/effects/decals/cleanable.dm | 3 -- .../effects/decals/cleanable/humans.dm | 2 +- code/game/turfs/turf.dm | 35 ------------- code/modules/clothing/clothing.dm | 5 ++ .../detectivework/footprints_and_rag.dm | 7 +-- .../mob/living/carbon/human/human_defines.dm | 5 ++ .../mob/living/carbon/human/human_movement.dm | 52 +++++++++++++++++++ 7 files changed, 65 insertions(+), 44 deletions(-) diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index babc012719..317a105b2d 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -70,7 +70,6 @@ //Add "bloodiness" of this blood's type, to the human's shoes //This is on /cleanable because fuck this ancient mess /obj/effect/decal/cleanable/Crossed(atom/movable/O) - ..() if(ishuman(O)) var/mob/living/carbon/human/H = O if(H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) @@ -81,7 +80,6 @@ else add_blood = bloodiness bloodiness -= add_blood - to_chat(world, "S.blood_state is [S.blood_state], & blood smear state is [S.blood_smear[S.blood_state]]") S.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,S.blood_smear[blood_state]+add_blood) if(blood_DNA && blood_DNA.len) S.add_blood(blood_DNA) @@ -96,7 +94,6 @@ else add_blood = bloodiness bloodiness -= add_blood - to_chat(world, "blood_state is [blood_state], & blood smear state is [H.blood_smear[blood_state]]") H.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,H.blood_smear[blood_state]+add_blood) if(blood_DNA && blood_DNA.len) H.add_blood(blood_DNA) diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 711e792752..ec1f7578b5 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -130,7 +130,7 @@ /obj/effect/decal/cleanable/blood/footprints/tracks/update_icon() ..() cut_overlays() - to_chat(world, "[src] called update_icon with [print_state]") + for(var/Ddir in GLOB.cardinals) if(entered_dirs & Ddir) var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 13ea59cb52..afe275f9b9 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -194,44 +194,9 @@ if(O.obj_flags & FROZEN) O.make_unfrozen() - if(isliving(A)) - var/mob/living/M = A - if(ishuman(M)) - var/mob/living/carbon/human/H = M - // Tracking blood - var/list/bloodDNA = null - var/bloodcolor="" - if(H.shoes) - var/obj/item/clothing/shoes/S = H.shoes - if(istype(S)) - S.step_action() - if(S.track_blood && S.blood_DNA) - bloodDNA = S.blood_DNA - bloodcolor = S.blood_color - S.track_blood-- - else - if(H.track_blood && H.feet_blood_DNA) - bloodDNA = H.feet_blood_DNA - bloodcolor = H.feet_blood_color - H.track_blood-- - - if (bloodDNA && H.species.get_move_trail(H)) - src.AddTracks(H.species.get_move_trail(H),bloodDNA,H.dir,0,bloodcolor) // Coming - var/turf/simulated/from = get_step(H,reverse_direction(H.dir)) - if(istype(from) && from) - from.AddTracks(H.species.get_move_trail(H),bloodDNA,0,H.dir,bloodcolor) // Going - - bloodDNA = null - /turf/proc/is_plasteel_floor() return FALSE -/turf/open/proc/AddTracks(var/typepath,var/bloodDNA,var/comingdir,var/goingdir,var/bloodcolor=COLOR_BLOOD_HUMAN) - var/obj/effect/decal/cleanable/blood/tracks/tracks = locate(typepath) in src - if(!tracks) - tracks = new typepath(src) - tracks.AddTracks(bloodDNA,comingdir,goingdir,bloodcolor) - // A proc in case it needs to be recreated or badmins want to change the baseturfs /turf/proc/assemble_baseturfs(turf/fake_baseturf_type) var/static/list/created_baseturf_lists = list() diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index a24a6eff95..caf12d4b86 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -41,6 +41,11 @@ var/dynamic_hair_suffix = ""//head > mask for head hair var/dynamic_fhair_suffix = ""//mask > head for facial hair + var/blood_state = BLOOD_STATE_NOT_BLOODY + var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) + var/last_bloodtype = ""//used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans + var/last_blood_DNA = ""//same as last one + /obj/item/clothing/Initialize() . = ..() if(ispath(pocket_storage_component_path)) diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm index 1f4def8905..611001ecf9 100644 --- a/code/modules/detectivework/footprints_and_rag.dm +++ b/code/modules/detectivework/footprints_and_rag.dm @@ -1,16 +1,13 @@ /mob var/bloody_hands = 0 - var/track_blood = 0 - var/feet_blood_color - var/last_bloodtype = ""//used to track the last bloodtype to have graced this filthy spaceman; makes for better performing footprint shenanigans - var/last_blood_DNA = ""//same as last one + var/bloody_feet = 0 /obj/item/clothing/gloves var/transfer_blood = 0 /obj/item/clothing/shoes - var/track_blood = 0 + var/transfer_blood = 0 /obj/item/reagent_containers/glass/rag diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index d1ec7f3e4b..7819eb8356 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -43,6 +43,11 @@ var/bleed_rate = 0 //how much are we bleeding var/bleedsuppress = 0 //for stopping bloodloss, eventually this will be limb-based like bleeding + var/last_bloodtype = ""//used to track the last bloodtype to have graced this filthy spaceman; makes for better performing footprint shenanigans + var/last_blood_DNA = ""//same as last one + var/blood_state = BLOOD_STATE_NOT_BLOODY + var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) + var/name_override //For temporary visible name changes var/nameless = FALSE //For drones of both the insectoid and robotic kind. And other types of nameless critters. diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 4ee48f2d09..01e81832ef 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -46,6 +46,58 @@ for(var/datum/mutation/human/HM in dna.mutations) HM.on_move(src, NewLoc) + if(shoes) + if(!lying && !buckled) + if(loc == NewLoc) + if(!has_gravity(loc)) + return + var/obj/item/clothing/shoes/S = shoes + //Bloody footprints + var/turf/T = get_turf(src) + var/step_print = dna.species.get_move_trail(src) + if(S.blood_smear && S.blood_smear[S.blood_state]) + var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(step_print) in T + if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == bloodtype_to_color(S.last_bloodtype))) + return + S.blood_smear[S.blood_state] = max(0, S.blood_smear[S.blood_state]-BLOOD_LOSS_PER_STEP) + var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new step_print(T) + FP.blood_state = S.blood_state + FP.entered_dirs |= dir + FP.bloodiness = S.blood_smear[S.blood_state] + if(S.last_blood_DNA && S.last_bloodtype) + FP.blood_DNA += list(S.last_blood_DNA = S.last_bloodtype) + //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood + FP.update_icon() + update_inv_shoes() + //End bloody footprints + + S.step_action() + + else if(!shoes) + if(!buckled) + if(loc == NewLoc) + if(!has_gravity(loc)) + return + //Bloody footprints without shoes + var/turf/T = get_turf(src) + var/step_print = dna.species.get_move_trail(src) + if(blood_smear && blood_smear[blood_state]) + var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(step_print) in T + if(oldFP && (oldFP.blood_state == blood_state && oldFP.color == bloodtype_to_color(last_bloodtype))) + return + blood_smear[blood_state] = max(0, blood_smear[blood_state]-BLOOD_LOSS_PER_STEP) + var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new step_print(T) + FP.blood_state = blood_state + FP.entered_dirs |= dir + FP.bloodiness = blood_smear[blood_state] + if(last_blood_DNA && last_bloodtype) + FP.blood_DNA += list(last_blood_DNA = last_bloodtype) + //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood + FP.update_icon() + update_inv_shoes() + //End bloody footprints + + /mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee. if(dna.species.space_move(src)) return TRUE From c2cf8b28df33689be81872b9341e65cf6d6b7c34 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 6 Jun 2019 21:35:50 -0500 Subject: [PATCH 046/469] KISS principal --- code/game/objects/effects/decals/cleanable.dm | 14 ++-- .../effects/decals/cleanable/humans.dm | 18 ++--- code/modules/antagonists/cult/blood_magic.dm | 6 +- code/modules/clothing/clothing.dm | 11 +-- code/modules/clothing/shoes/_shoes.dm | 17 ++++- .../detectivework/footprints_and_rag.dm | 2 + .../mob/living/carbon/human/human_defines.dm | 2 - .../mob/living/carbon/human/human_movement.dm | 68 ++++++++++--------- tgstation.dme | 24 +++---- 9 files changed, 86 insertions(+), 76 deletions(-) diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 317a105b2d..f0c4aed85b 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -70,6 +70,7 @@ //Add "bloodiness" of this blood's type, to the human's shoes //This is on /cleanable because fuck this ancient mess /obj/effect/decal/cleanable/Crossed(atom/movable/O) + ..() if(ishuman(O)) var/mob/living/carbon/human/H = O if(H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) @@ -80,10 +81,12 @@ else add_blood = bloodiness bloodiness -= add_blood - S.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,S.blood_smear[blood_state]+add_blood) + S.bloody_shoes[blood_state] = min(MAX_SHOE_BLOODINESS,S.bloody_shoes[blood_state]+add_blood) if(blood_DNA && blood_DNA.len) S.add_blood(blood_DNA) - S.blood_smear = blood_state + if(S.last_blood_DNA != blood_DNA) + S.last_blood_DNA += blood_DNA + S.blood_state = blood_state update_icon() H.update_inv_shoes() @@ -96,10 +99,11 @@ bloodiness -= add_blood H.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,H.blood_smear[blood_state]+add_blood) if(blood_DNA && blood_DNA.len) - H.add_blood(blood_DNA) - H.blood_smear = blood_state + if(H.last_blood_DNA != blood_DNA) + H.last_blood_DNA += blood_DNA + H.blood_state = blood_state update_icon() - H.update_inv_shoes() + //H.update_inv_shoes() /obj/effect/decal/cleanable/proc/can_bloodcrawl_in() if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY)) diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index ec1f7578b5..82bbc1d753 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -6,9 +6,8 @@ random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7") blood_DNA = list() blood_state = BLOOD_STATE_BLOOD + bloodiness = MAX_SHOE_BLOODINESS color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere. - bloodiness = BLOOD_AMOUNT_PER_DECAL - /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) if (C.blood_DNA) @@ -35,7 +34,6 @@ name = "dried blood" desc = "Looks like it's been here a while. Eew." bloodiness = 0 - color = "#3a0505" /obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases) ..() @@ -45,14 +43,14 @@ /obj/effect/decal/cleanable/blood/splatter random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") -/obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose so that it shows up even on regular splatters +/obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose name = "blood" icon_state = "ltrails_1" desc = "Your instincts say you shouldn't be following these." random_icon_states = null var/list/existing_dirs = list() + blood_DNA = list() color = BLOOD_COLOR_HUMAN - bloodiness = BLOOD_AMOUNT_PER_DECAL /obj/effect/decal/cleanable/trail_holder/update_icon() color = blood_DNA_to_color() @@ -89,10 +87,10 @@ if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes - if(S && S.blood_smear[blood_state]) + if(S && S.bloody_shoes[blood_state]) if(color != bloodtype_to_color(S.last_bloodtype)) return - S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) + S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(entered_dirs & H.dir)) entered_dirs |= H.dir @@ -110,10 +108,10 @@ if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes - if(S && S.blood_smear[blood_state]) + if(S && S.bloody_shoes[blood_state]) if(color != bloodtype_to_color(S.last_bloodtype))//last entry - we check its color return - S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) + S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0) shoe_types |= S.type if (!(exited_dirs & H.dir)) exited_dirs |= H.dir @@ -159,6 +157,8 @@ /obj/effect/decal/cleanable/blood/footprints/tracks/replace_decal(obj/effect/decal/cleanable/blood/footprints/tracks/C) if(print_state != C.print_state) //We only replace footprints of the same type as us return + if(blood_state != C.blood_state) + return if(color != C.color) return ..() diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index be0e06b47a..845c66fb33 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -739,9 +739,9 @@ for(var/obj/effect/decal/cleanable/trail_holder/TH in view(T, 2)) qdel(TH) var/obj/item/clothing/shoes/shoecheck = user.shoes - if(shoecheck && shoecheck.blood_smear["blood"]) - temp += shoecheck.blood_smear["blood"]/20 - shoecheck.blood_smear["blood"] = 0 + if(shoecheck && shoecheck.bloody_shoes["blood"]) + temp += shoecheck.bloody_shoes["blood"]/20 + shoecheck.bloody_shoes["blood"] = 0 if(temp) user.Beam(T,icon_state="drainbeam",time=15) new /obj/effect/temp_visual/cult/sparks(get_turf(user)) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index caf12d4b86..d65c14106a 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -41,11 +41,6 @@ var/dynamic_hair_suffix = ""//head > mask for head hair var/dynamic_fhair_suffix = ""//mask > head for facial hair - var/blood_state = BLOOD_STATE_NOT_BLOODY - var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) - var/last_bloodtype = ""//used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans - var/last_blood_DNA = ""//same as last one - /obj/item/clothing/Initialize() . = ..() if(ispath(pocket_storage_component_path)) @@ -159,11 +154,7 @@ damaged_clothes = 0 cut_overlay(damaged_clothes_icons[index], TRUE) -/obj/item/clothing/transfer_blood_dna(list/blood_dna) - ..() - if(blood_dna.len) - last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works - last_blood_DNA = blood_dna[blood_dna.len] + /* SEE_SELF // can see self, no matter what diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index fb85d057b2..c815bc6323 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -13,6 +13,11 @@ var/offset = 0 var/equipped_before_drop = FALSE + var/blood_state = BLOOD_STATE_NOT_BLOODY + var/list/bloody_shoes = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) + var/last_bloodtype = ""//used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans + var/last_blood_DNA = ""//same as last one + //CITADEL EDIT Enables digitigrade shoe styles var/adjusted = NORMAL_STYLE mutantrace_variation = MUTANTRACE_VARIATION @@ -45,7 +50,7 @@ if(blood_DNA) bloody = TRUE else - bloody = blood_smear[BLOOD_STATE_BLOOD] + bloody = bloody_shoes[BLOOD_STATE_BLOOD] if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe") @@ -91,7 +96,7 @@ /obj/item/clothing/shoes/clean_blood() ..() - blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) + bloody_shoes = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) blood_state = BLOOD_STATE_NOT_BLOODY blood_color = null if(ismob(loc)) @@ -99,4 +104,10 @@ M.update_inv_shoes() /obj/item/proc/negates_gravity() - return FALSE \ No newline at end of file + return FALSE + +/obj/item/clothing/shoes/transfer_blood_dna(list/blood_dna) + ..() + if(blood_dna.len) + last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works + last_blood_DNA = blood_dna[blood_dna.len] diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm index 611001ecf9..ed0ba33b66 100644 --- a/code/modules/detectivework/footprints_and_rag.dm +++ b/code/modules/detectivework/footprints_and_rag.dm @@ -2,6 +2,8 @@ /mob var/bloody_hands = 0 var/bloody_feet = 0 + var/last_bloodtype = ""//used to track the last bloodtype to have graced this filthy spaceman; makes for better performing footprint shenanigans + var/last_blood_DNA = ""//same as last one /obj/item/clothing/gloves var/transfer_blood = 0 diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 7819eb8356..3731a98a49 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -43,8 +43,6 @@ var/bleed_rate = 0 //how much are we bleeding var/bleedsuppress = 0 //for stopping bloodloss, eventually this will be limb-based like bleeding - var/last_bloodtype = ""//used to track the last bloodtype to have graced this filthy spaceman; makes for better performing footprint shenanigans - var/last_blood_DNA = ""//same as last one var/blood_state = BLOOD_STATE_NOT_BLOODY var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 01e81832ef..ef44a7d1d1 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -52,25 +52,27 @@ if(!has_gravity(loc)) return var/obj/item/clothing/shoes/S = shoes + var/step_print = dna.species.get_move_trail(src) //Bloody footprints var/turf/T = get_turf(src) - var/step_print = dna.species.get_move_trail(src) - if(S.blood_smear && S.blood_smear[S.blood_state]) - var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(step_print) in T - if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == bloodtype_to_color(S.last_bloodtype))) - return - S.blood_smear[S.blood_state] = max(0, S.blood_smear[S.blood_state]-BLOOD_LOSS_PER_STEP) - var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new step_print(T) - FP.blood_state = S.blood_state - FP.entered_dirs |= dir - FP.bloodiness = S.blood_smear[S.blood_state] - if(S.last_blood_DNA && S.last_bloodtype) - FP.blood_DNA += list(S.last_blood_DNA = S.last_bloodtype) - //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood - FP.update_icon() + var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(step_print) in T + if(S.bloody_shoes && S.bloody_shoes[S.blood_state]) + for(oldFP) + if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == bloodtype_to_color(last_bloodtype))) + return + //No oldFP or they're all a different kind of blood + S.bloody_shoes[S.blood_state] = max(0, S.bloody_shoes[S.blood_state] - BLOOD_LOSS_PER_STEP) + if (S.bloody_shoes[S.blood_state] > BLOOD_LOSS_IN_SPREAD) + var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new step_print(T) + FP.blood_state = S.blood_state + FP.entered_dirs |= dir + FP.bloodiness = S.bloody_shoes[S.blood_state] - BLOOD_LOSS_IN_SPREAD + if(S.last_blood_DNA && S.last_bloodtype) + FP.blood_DNA += list(last_blood_DNA = last_bloodtype) + //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood + FP.update_icon() update_inv_shoes() //End bloody footprints - S.step_action() else if(!shoes) @@ -78,25 +80,27 @@ if(loc == NewLoc) if(!has_gravity(loc)) return + var/step_print = dna.species.get_move_trail(src) + var/mob/living/carbon/human/H = src //Bloody footprints without shoes var/turf/T = get_turf(src) - var/step_print = dna.species.get_move_trail(src) - if(blood_smear && blood_smear[blood_state]) - var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(step_print) in T - if(oldFP && (oldFP.blood_state == blood_state && oldFP.color == bloodtype_to_color(last_bloodtype))) - return - blood_smear[blood_state] = max(0, blood_smear[blood_state]-BLOOD_LOSS_PER_STEP) - var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new step_print(T) - FP.blood_state = blood_state - FP.entered_dirs |= dir - FP.bloodiness = blood_smear[blood_state] - if(last_blood_DNA && last_bloodtype) - FP.blood_DNA += list(last_blood_DNA = last_bloodtype) - //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood - FP.update_icon() - update_inv_shoes() - //End bloody footprints - + var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(step_print) in T + if(H.blood_smear && H.blood_smear[H.blood_state]) + for(oldFP) + if(oldFP && (oldFP.blood_state == H.blood_state && oldFP.color == bloodtype_to_color(last_bloodtype))) + return + //No oldFP or they're all a different kind of blood + H.blood_smear[H.blood_state] = max(0, H.blood_smear[H.blood_state] - BLOOD_LOSS_PER_STEP) + if (H.blood_smear[H.blood_state] > BLOOD_LOSS_IN_SPREAD) + var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new step_print(T) + FP.blood_state = H.blood_state + FP.entered_dirs |= dir + FP.bloodiness = H.blood_smear[H.blood_state] - BLOOD_LOSS_IN_SPREAD + if(H.last_blood_DNA && H.last_bloodtype) + FP.blood_DNA += list(H.last_blood_DNA = H.last_bloodtype) + //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood + FP.update_icon() + H.update_inv_shoes() /mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee. if(dna.species.space_move(src)) diff --git a/tgstation.dme b/tgstation.dme index 8c7005cc16..12ee8bd09a 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2503,22 +2503,10 @@ #include "code\modules\research\designs\AI_module_designs.dm" #include "code\modules\research\designs\biogenerator_designs.dm" #include "code\modules\research\designs\bluespace_designs.dm" -#include "code\modules\research\designs\comp_board_designs\comp_board_designs_all_misc.dm" -#include "code\modules\research\designs\comp_board_designs\comp_board_designs_cargo .dm" -#include "code\modules\research\designs\comp_board_designs\comp_board_designs_engi.dm" -#include "code\modules\research\designs\comp_board_designs\comp_board_designs_medical.dm" -#include "code\modules\research\designs\comp_board_designs\comp_board_designs_sci.dm" -#include "code\modules\research\designs\comp_board_designs\comp_board_designs_sec.dm" #include "code\modules\research\designs\computer_part_designs.dm" #include "code\modules\research\designs\electronics_designs.dm" #include "code\modules\research\designs\equipment_designs.dm" #include "code\modules\research\designs\limbgrower_designs.dm" -#include "code\modules\research\designs\machine_desings\machine_designs_all_misc.dm" -#include "code\modules\research\designs\machine_desings\machine_designs_cargo.dm" -#include "code\modules\research\designs\machine_desings\machine_designs_engi.dm" -#include "code\modules\research\designs\machine_desings\machine_designs_medical.dm" -#include "code\modules\research\designs\machine_desings\machine_designs_sci.dm" -#include "code\modules\research\designs\machine_desings\machine_designs_service.dm" #include "code\modules\research\designs\mecha_designs.dm" #include "code\modules\research\designs\mechfabricator_designs.dm" #include "code\modules\research\designs\medical_designs.dm" @@ -2536,6 +2524,18 @@ #include "code\modules\research\designs\autolathe_desings\autolathe_designs_sec_and_hacked.dm" #include "code\modules\research\designs\autolathe_desings\autolathe_designs_tcomms_and_misc.dm" #include "code\modules\research\designs\autolathe_desings\autolathe_designs_tools.dm" +#include "code\modules\research\designs\comp_board_designs\comp_board_designs_all_misc.dm" +#include "code\modules\research\designs\comp_board_designs\comp_board_designs_cargo .dm" +#include "code\modules\research\designs\comp_board_designs\comp_board_designs_engi.dm" +#include "code\modules\research\designs\comp_board_designs\comp_board_designs_medical.dm" +#include "code\modules\research\designs\comp_board_designs\comp_board_designs_sci.dm" +#include "code\modules\research\designs\comp_board_designs\comp_board_designs_sec.dm" +#include "code\modules\research\designs\machine_desings\machine_designs_all_misc.dm" +#include "code\modules\research\designs\machine_desings\machine_designs_cargo.dm" +#include "code\modules\research\designs\machine_desings\machine_designs_engi.dm" +#include "code\modules\research\designs\machine_desings\machine_designs_medical.dm" +#include "code\modules\research\designs\machine_desings\machine_designs_sci.dm" +#include "code\modules\research\designs\machine_desings\machine_designs_service.dm" #include "code\modules\research\machinery\_production.dm" #include "code\modules\research\machinery\circuit_imprinter.dm" #include "code\modules\research\machinery\departmental_circuit_imprinter.dm" From 69cefb604b03220e9c29df33194204fd7aceb07b Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 9 Jun 2019 11:10:23 -0500 Subject: [PATCH 047/469] just need to fine tweak gibs and we're gucci --- code/game/objects/effects/decals/cleanable.dm | 26 +--- .../effects/decals/cleanable/aliens.dm | 48 ++++--- .../objects/effects/decals/cleanable/gibs.dm | 135 +++++++++++++----- .../effects/decals/cleanable/humans.dm | 62 +++----- .../effects/decals/cleanable/robots.dm | 1 + .../objects/effects/spawners/gibspawner.dm | 23 +-- code/modules/clothing/shoes/_shoes.dm | 2 - .../mob/living/carbon/human/human_movement.dm | 57 ++------ .../mob/living/carbon/human/species.dm | 10 +- .../carbon/human/species_types/angel.dm | 1 - .../carbon/human/species_types/humans.dm | 1 - .../carbon/human/species_types/jellypeople.dm | 1 - .../human/species_types/lizardpeople.dm | 9 +- .../carbon/human/species_types/mothmen.dm | 1 - .../carbon/human/species_types/plasmamen.dm | 1 - .../carbon/human/species_types/podpeople.dm | 1 - .../carbon/human/species_types/skeletons.dm | 1 - .../carbon/human/species_types/zombies.dm | 1 - .../modules/mob/living/carbon/update_icons.dm | 6 +- .../mob/living/simple_animal/bot/mulebot.dm | 2 +- icons/effects/blood.dmi | Bin 96012 -> 90421 bytes icons/effects/footprints.dmi | Bin 0 -> 17233 bytes .../carbon/human/species_types/furrypeople.dm | 8 -- 23 files changed, 192 insertions(+), 205 deletions(-) create mode 100644 icons/effects/footprints.dmi diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index f0c4aed85b..53e716b0d4 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -1,11 +1,11 @@ + /obj/effect/decal/cleanable gender = PLURAL layer = ABOVE_NORMAL_TURF_LAYER - var/list/random_icon_states = null + var/list/random_icon_states = list() var/blood_state = "" //I'm sorry but cleanable/blood code is ass, and so is blood_DNA var/bloodiness = 0 //0-100, amount of blood in this decal, used for making footprints and affecting the alpha of bloody footprints var/mergeable_decal = TRUE //when two of these are on a same tile or do we need to merge them into just one? - var/blood_color /obj/effect/decal/cleanable/Initialize(mapload, list/datum/disease/diseases) . = ..() @@ -26,9 +26,9 @@ if(LAZYLEN(diseases_to_add)) AddComponent(/datum/component/infective, diseases_to_add) -/obj/effect/decal/cleanable/proc/replace_decal(obj/effect/decal/cleanable/C) // Returns true if we should give up in favor of the pre-existing decal +/obj/effect/decal/cleanable/proc/replace_decal(obj/effect/decal/cleanable/C) if(mergeable_decal) - return TRUE + qdel(C) /obj/effect/decal/cleanable/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/reagent_containers/glass) || istype(W, /obj/item/reagent_containers/food/drinks)) @@ -70,7 +70,6 @@ //Add "bloodiness" of this blood's type, to the human's shoes //This is on /cleanable because fuck this ancient mess /obj/effect/decal/cleanable/Crossed(atom/movable/O) - ..() if(ishuman(O)) var/mob/living/carbon/human/H = O if(H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) @@ -84,27 +83,10 @@ S.bloody_shoes[blood_state] = min(MAX_SHOE_BLOODINESS,S.bloody_shoes[blood_state]+add_blood) if(blood_DNA && blood_DNA.len) S.add_blood(blood_DNA) - if(S.last_blood_DNA != blood_DNA) - S.last_blood_DNA += blood_DNA S.blood_state = blood_state update_icon() H.update_inv_shoes() - else if(!H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) - var/add_blood = 0 - if(bloodiness >= BLOOD_GAIN_PER_STEP) - add_blood = BLOOD_GAIN_PER_STEP - else - add_blood = bloodiness - bloodiness -= add_blood - H.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,H.blood_smear[blood_state]+add_blood) - if(blood_DNA && blood_DNA.len) - if(H.last_blood_DNA != blood_DNA) - H.last_blood_DNA += blood_DNA - H.blood_state = blood_state - update_icon() - //H.update_inv_shoes() - /obj/effect/decal/cleanable/proc/can_bloodcrawl_in() if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY)) return bloodiness diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 900f392796..6d6b1731d5 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -1,4 +1,3 @@ -// Note: BYOND is object oriented. There is no reason for this to be copy/pasted blood code. /obj/effect/decal/cleanable/blood/xeno name = "xeno blood" @@ -10,15 +9,22 @@ color = BLOOD_COLOR_XENO /obj/effect/decal/cleanable/blood/gibs/xeno - name = "xeno gibs" - desc = "Gnarly..." - icon_state = "xgib1" - random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6") color = BLOOD_COLOR_XENO + unique_body = "x" /obj/effect/decal/cleanable/blood/gibs/xeno/Initialize(mapload, list/datum/disease/diseases) . = ..() reagents.add_reagent("liquidxenogibs", 5) + guts() + +/obj/effect/decal/cleanable/blood/gibs/xeno/guts() + if(gib_overlay) + var/icon/blood = new(icon,"[icon_state]",dir) + var/image/gibz = new(icon, icon_state + "[unique_body]-overlay") + blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY) + icon = blood + cut_overlays() + add_overlay(gibz) /obj/effect/decal/cleanable/blood/gibs/xeno/streak(list/directions) set waitfor = 0 @@ -35,29 +41,37 @@ if(!step_to(src, get_step(src, direction), 0)) break -/obj/effect/decal/cleanable/blood/gibs/xeno/up/xeno - random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1") +/obj/effect/decal/cleanable/blood/gibs/xeno/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + gib_overlay = TRUE -/obj/effect/decal/cleanable/blood/gibs/xeno/down/xeno - random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibdown1","xgibdown1","xgibdown1") +/obj/effect/decal/cleanable/blood/gibs/xeno/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + gib_overlay = TRUE -/obj/effect/decal/cleanable/blood/gibs/xeno/body/xeno - random_icon_states = list("xgibhead", "xgibtorso") +/obj/effect/decal/cleanable/blood/gibs/xeno/body + random_icon_states = list("gibhead", "gibtorso") + gib_overlay = TRUE -/obj/effect/decal/cleanable/blood/gibs/xeno/torso/xeno - random_icon_states = list("xgibtorso") +/obj/effect/decal/cleanable/blood/gibs/xeno/torso + random_icon_states = list("gibtorso") + gib_overlay = TRUE -/obj/effect/decal/cleanable/blood/gibs/xeno/limb/xeno - random_icon_states = list("xgibleg", "xgibarm") +/obj/effect/decal/cleanable/blood/gibs/xeno/limb + random_icon_states = list("gibleg", "gibarm") + gib_overlay = TRUE -/obj/effect/decal/cleanable/blood/gibs/xeno/core/xeno - random_icon_states = list("xgibmid1", "xgibmid2", "xgibmid3") +/obj/effect/decal/cleanable/blood/gibs/xeno/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/xeno/larva random_icon_states = list("xgiblarva1", "xgiblarva2") + gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/xeno/larva/body random_icon_states = list("xgiblarvahead", "xgiblarvatorso") + gib_overlay = TRUE /obj/effect/decal/cleanable/blood/xtracks icon_state = "tracks" diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 48670957cd..fdb1cec174 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -6,20 +6,24 @@ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") mergeable_decal = FALSE var/gib_overlay = FALSE - var/slimy_gibs = FALSE - var/body_colors + var/body_colors = "e3ba84" //a default color just in case. + var/unique_body = "c" + +/obj/effect/decal/cleanable/blood/gibs/update_icon() + . = ..() + guts() /obj/effect/decal/cleanable/blood/gibs/proc/guts() if(gib_overlay) - var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-overlay", color = blood_color, layer = (LOW_OBJ_LAYER + 0.1)) - var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-overlay", color = body_colors, layer = (LOW_OBJ_LAYER + 0.1)) - if(!slimy_gibs) - gibz.appearance_flags = RESET_COLOR - add_overlay(gibz) - else - gibz.appearance_flags = RESET_COLOR - add_overlay(gibz) - add_overlay(gibz2) + var/icon/blood = new(icon,"[icon_state]",dir) + var/icon/gibz = new(icon, icon_state + "-overlay") + var/image/gibz2 = new(icon, icon_state + "[unique_body]-overlay") + blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY) + gibz2.color = body_colors + icon = blood + cut_overlays() + add_overlay(gibz) + add_overlay(gibz2) /obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) return @@ -103,42 +107,96 @@ /obj/effect/decal/cleanable/blood/gibs/human/Initialize(mapload, list/datum/disease/diseases) . = ..() reagents.add_reagent("liquidgibs", 5) - guts() update_icon() +/obj/effect/decal/cleanable/blood/gibs/human/guts() + if(gib_overlay) + var/icon/blood = new(icon,"[icon_state]",dir) + var/icon/gibz = new(icon, icon_state + "-overlay") + var/image/gibz2 = new(icon, icon_state + "[unique_body]-overlay") + blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY) + gibz2.color = body_colors + icon = blood + cut_overlays() + add_overlay(gibz) + add_overlay(gibz2) + + /obj/effect/decal/cleanable/blood/gibs/human/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") gib_overlay = TRUE - slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/human/down random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") gib_overlay = TRUE - slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/human/body random_icon_states = list("gibhead", "gibtorso") gib_overlay = TRUE - slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/human/torso random_icon_states = list("gibtorso") gib_overlay = TRUE - slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/human/limb random_icon_states = list("gibleg", "gibarm") gib_overlay = TRUE - slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/human/core random_icon_states = list("gibmid1", "gibmid2", "gibmid3") gib_overlay = TRUE - slimy_gibs = TRUE + +//Lizards +/obj/effect/decal/cleanable/blood/gibs/human/lizard + body_colors = "117720" + +/obj/effect/decal/cleanable/blood/gibs/human/lizard/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidgibs", 5) + update_icon() + +/obj/effect/decal/cleanable/blood/gibs/human/lizard/guts() + if(gib_overlay) + var/icon/blood = new(icon,"[icon_state]",dir) + var/icon/gibz = new(icon, icon_state + "-overlay") + var/image/gibz2 = new(icon, icon_state + "[unique_body]-overlay") + blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY) + gibz2.color = body_colors + icon = blood + cut_overlays() + add_overlay(gibz) + add_overlay(gibz2) + + +/obj/effect/decal/cleanable/blood/gibs/human/lizard/up + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/lizard/down + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/lizard/body + random_icon_states = list("gibhead", "gibtorso") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/lizard/torso + random_icon_states = list("gibtorso") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/lizard/limb + random_icon_states = list("gibleg", "gibarm") + gib_overlay = TRUE + +/obj/effect/decal/cleanable/blood/gibs/human/lizard/core + random_icon_states = list("gibmid1", "gibmid2", "gibmid3") + gib_overlay = TRUE // Slime Gibs /obj/effect/decal/cleanable/blood/gibs/slime desc = "They look gooey and gruesome." + unique_body = "c" + body_colors = "00fff" /obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases) . = ..() @@ -146,38 +204,43 @@ update_icon() guts() +/obj/effect/decal/cleanable/blood/gibs/slime/guts() + if(gib_overlay) + var/icon/blood = new(icon,"[icon_state]",dir) + var/image/gibz = new(icon, icon_state + "[unique_body]-overlay") + blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY) + gibz.color = body_colors + icon = blood + cut_overlays() + add_overlay(gibz) + /obj/effect/decal/cleanable/blood/gibs/slime/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") gib_overlay = TRUE - slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/slime/down random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") gib_overlay = TRUE - slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/slime/body random_icon_states = list("gibhead", "gibtorso") gib_overlay = TRUE - slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/slime/torso random_icon_states = list("gibtorso") gib_overlay = TRUE - slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/slime/limb random_icon_states = list("gibleg", "gibarm") gib_overlay = TRUE - slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/slime/core random_icon_states = list("gibmid1", "gibmid2", "gibmid3") gib_overlay = TRUE - slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/synth desc = "They look sludgy and disgusting." + unique_body = "r" /obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) . = ..() @@ -188,6 +251,8 @@ //IPCs /obj/effect/decal/cleanable/blood/gibs/ipc desc = "They look sharp yet oozing." + unique_body = "r" + body_colors = "00ff00" /obj/effect/decal/cleanable/blood/gibs/ipc/Initialize(mapload, list/datum/disease/diseases) . = ..() @@ -197,45 +262,37 @@ /obj/effect/decal/cleanable/blood/gibs/ipc/guts() if(gib_overlay) - var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-ipcoverlay", color = blood_color, layer = -LOW_OBJ_LAYER) - var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-ipcoverlay", color = body_colors, layer = -LOW_OBJ_LAYER) - if(!slimy_gibs) - gibz.appearance_flags = RESET_COLOR - add_overlay(gibz) - else - gibz.appearance_flags = RESET_COLOR - add_overlay(gibz) - add_overlay(gibz2) + var/icon/blood = new(icon,"[icon_state]",dir) + var/image/gibz = new(icon, icon_state + "[unique_body]-overlay") + blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY) + gibz.color = body_colors + icon = blood + cut_overlays() + add_overlay(gibz) /obj/effect/decal/cleanable/blood/gibs/ipc/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") gib_overlay = TRUE - slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/ipc/down random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") gib_overlay = TRUE - slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/ipc/body random_icon_states = list("gibhead", "gibtorso") gib_overlay = TRUE - slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/ipc/torso random_icon_states = list("gibtorso") gib_overlay = TRUE - slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/ipc/limb random_icon_states = list("gibleg", "gibarm") gib_overlay = TRUE - slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/ipc/core random_icon_states = list("gibmid1", "gibmid2", "gibmid3") gib_overlay = TRUE - slimy_gibs = TRUE /obj/effect/decal/cleanable/blood/gibs/synth desc = "They look sludgy and disgusting." diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 82bbc1d753..8b582587fe 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -26,10 +26,6 @@ /obj/effect/decal/cleanable/blood/update_icon() color = blood_DNA_to_color() -//obj/effect/decal/cleanable/blood/update_color() - // if(SEND_SIGNAL(COMSIG_BLOOD_COLOR) & COMPONENT_BLOCK_UPDATE_COLOR) - // return - /obj/effect/decal/cleanable/blood/old name = "dried blood" desc = "Looks like it's been here a while. Eew." @@ -43,6 +39,11 @@ /obj/effect/decal/cleanable/blood/splatter random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") +/obj/effect/decal/cleanable/blood/tracks + icon_state = "tracks" + desc = "They look like tracks left by wheels." + random_icon_states = null + /obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose name = "blood" icon_state = "ltrails_1" @@ -50,7 +51,6 @@ random_icon_states = null var/list/existing_dirs = list() blood_DNA = list() - color = BLOOD_COLOR_HUMAN /obj/effect/decal/cleanable/trail_holder/update_icon() color = blood_DNA_to_color() @@ -71,19 +71,18 @@ update_icon() //BLOODY FOOTPRINTS -/obj/effect/decal/cleanable/blood/footprints/tracks - name = "tracks" - icon = 'icons/effects/fluidtracks.dmi' +/obj/effect/decal/cleanable/blood/footprints + name = "footprints" + icon = 'icons/effects/footprints.dmi' icon_state = "nothingwhatsoever" desc = "WHOSE FOOTPRINTS ARE THESE?" random_icon_states = null var/entered_dirs = 0 var/exited_dirs = 0 blood_state = BLOOD_STATE_BLOOD //the icon state to load images from - var/print_state = FOOTPRINT_SHOE //the print state for different feet var/list/shoe_types = list() -/obj/effect/decal/cleanable/blood/footprints/tracks/Crossed(atom/movable/O) +/obj/effect/decal/cleanable/blood/footprints/Crossed(atom/movable/O) if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes @@ -96,15 +95,7 @@ entered_dirs |= H.dir update_icon() - else if(H && H.blood_smear[blood_state]) - if(color != bloodtype_to_color(H.last_bloodtype)) - return - H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) - if (!(entered_dirs & H.dir)) - entered_dirs |= H.dir - update_icon() - -/obj/effect/decal/cleanable/blood/footprints/tracks/Uncrossed(atom/movable/O) +/obj/effect/decal/cleanable/blood/footprints/Uncrossed(atom/movable/O) if(ishuman(O)) var/mob/living/carbon/human/H = O var/obj/item/clothing/shoes/S = H.shoes @@ -117,36 +108,28 @@ exited_dirs |= H.dir update_icon() - else if(H && H.blood_smear[blood_state]) - if(color != bloodtype_to_color(H.last_bloodtype))//last entry - we check its color - return - H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0) - if (!(exited_dirs & H.dir)) - exited_dirs |= H.dir - update_icon() - -/obj/effect/decal/cleanable/blood/footprints/tracks/update_icon() +/obj/effect/decal/cleanable/blood/footprints/update_icon() ..() cut_overlays() for(var/Ddir in GLOB.cardinals) if(entered_dirs & Ddir) - var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] + var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"] if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir) + GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]1", dir = Ddir) add_overlay(bloodstep_overlay) if(exited_dirs & Ddir) - var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"] + var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] if(!bloodstep_overlay) - GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir) + GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]2", dir = Ddir) add_overlay(bloodstep_overlay) alpha = BLOODY_FOOTPRINT_BASE_ALPHA + bloodiness -/obj/effect/decal/cleanable/blood/footprints/tracks/examine(mob/user) +/obj/effect/decal/cleanable/blood/footprints/examine(mob/user) . = ..() - if(shoe_types.len && ishuman(user) && user.mind.assigned_role == "Detective") //gumshoe does the detective thing, not every fucking assistant + if(shoe_types.len) . += "You recognise the footprints as belonging to:\n" for(var/shoe in shoe_types) var/obj/item/clothing/shoes/S = shoe @@ -154,20 +137,19 @@ to_chat(user, .) -/obj/effect/decal/cleanable/blood/footprints/tracks/replace_decal(obj/effect/decal/cleanable/blood/footprints/tracks/C) - if(print_state != C.print_state) //We only replace footprints of the same type as us - return - if(blood_state != C.blood_state) +/obj/effect/decal/cleanable/blood/footprints/replace_decal(obj/effect/decal/cleanable/C) + if(blood_state != C.blood_state) //We only replace footprints of the same type as us return if(color != C.color) return ..() -/obj/effect/decal/cleanable/blood/footprints/tracks/can_bloodcrawl_in() +/obj/effect/decal/cleanable/blood/footprints/can_bloodcrawl_in() if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY)) return TRUE return FALSE +/* Eventually TODO: make snowflake trails like baycode's /obj/effect/decal/cleanable/blood/footprints/tracks/shoe name = "footprints" desc = "They look like tracks left by footwear." @@ -209,4 +191,4 @@ name = "trails" desc = "A trail left by something being dragged." icon_state = FOOTPRINT_DRAG - print_state = FOOTPRINT_DRAG + print_state = FOOTPRINT_DRAG */ diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm index 02bf51bdd9..bd88afbdfb 100644 --- a/code/game/objects/effects/decals/cleanable/robots.dm +++ b/code/game/objects/effects/decals/cleanable/robots.dm @@ -50,6 +50,7 @@ random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7") blood_state = BLOOD_STATE_OIL bloodiness = BLOOD_AMOUNT_PER_DECAL + c /obj/effect/decal/cleanable/oil/Initialize() . = ..() diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index 324436092d..fee579f00b 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -29,9 +29,8 @@ s.set_up(2, 1, loc) s.start() - var/list/dna_to_add //find the dna to pass to the spawned gibs. do note this can be null if the mob doesn't have blood. add_blood_DNA() has built in null handling. - var/body_coloring + var/body_coloring = "" if(source_mob) dna_to_add = source_mob.get_blood_dna_list() //ez pz if(ishuman(source_mob)) @@ -74,11 +73,9 @@ var/mob/living/carbon/digester = loc digester.stomach_contents += gib - if(dna_to_add) - gib.blood_DNA += dna_to_add - // color them properly, please. - if(gib.gib_overlay) - gib.body_colors = body_coloring + if(dna_to_add.len) + gib.add_blood(dna_to_add) + gib.body_colors = body_coloring gib.update_icon() var/list/directions = gibdirections[i] @@ -125,9 +122,13 @@ return ..() /obj/effect/gibspawner/human/lizard + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/lizard/torso) + gibamounts = list(1, 1, 1, 1, 1, 1) gib_mob_species = /datum/species/lizard /obj/effect/gibspawner/human/lizard/bodypartless + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/torso) + gibamounts = list(2, 0, 1, 1, 2, 0) /obj/effect/gibspawner/human/slimeperson gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime/up, /obj/effect/decal/cleanable/blood/gibs/slime/down, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/body, /obj/effect/decal/cleanable/blood/gibs/slime/limb, /obj/effect/decal/cleanable/blood/gibs/slime/core) @@ -140,14 +141,16 @@ /obj/effect/gibspawner/human/ipc sparks = TRUE gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/ipc/up, /obj/effect/decal/cleanable/blood/gibs/ipc/down, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/body, /obj/effect/decal/cleanable/blood/gibs/ipc/limb, /obj/effect/decal/cleanable/blood/gibs/ipc/core) - gibamounts = list(1, 1, 1, 1, 1, 1) + gibamounts = list(1, 1, 1, 1, 1, 1, 1) gib_mob_type = /mob/living/carbon/human gib_mob_species = /datum/species/ipc /obj/effect/gibspawner/human/ipc/bodypartless + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/ipc/up, /obj/effect/decal/cleanable/blood/gibs/ipc/down, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/body, /obj/effect/decal/cleanable/blood/gibs/ipc/limb, /obj/effect/decal/cleanable/blood/gibs/ipc/core) + gibamounts = list(1, 1, 2, 2, 0, 0, 1) /obj/effect/gibspawner/xeno - gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/up/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/down/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/body/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/limb/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core/xeno) + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/up, /obj/effect/decal/cleanable/blood/gibs/xeno/down, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/body, /obj/effect/decal/cleanable/blood/gibs/xeno/limb, /obj/effect/decal/cleanable/blood/gibs/xeno/core) gibamounts = list(1, 1, 1, 1, 1, 1, 1) gib_mob_type = /mob/living/carbon/alien @@ -157,7 +160,7 @@ return ..() /obj/effect/gibspawner/xeno/bodypartless //only the gibs that don't look like actual full bodyparts (except torso). - gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/torso/xeno) + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/torso) gibamounts = list(1, 1, 1, 1, 1, 1) /obj/effect/gibspawner/xeno/bodypartless/Initialize() diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index c815bc6323..d6927f9953 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -22,8 +22,6 @@ var/adjusted = NORMAL_STYLE mutantrace_variation = MUTANTRACE_VARIATION - var/move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/shoe - /obj/item/clothing/shoes/suicide_act(mob/living/carbon/user) if(rand(2)>1) user.visible_message("[user] begins tying \the [src] up waaay too tightly! It looks like [user.p_theyre()] trying to commit suicide!") diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index ef44a7d1d1..319cb72f1c 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -52,55 +52,26 @@ if(!has_gravity(loc)) return var/obj/item/clothing/shoes/S = shoes - var/step_print = dna.species.get_move_trail(src) + //Bloody footprints var/turf/T = get_turf(src) - var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(step_print) in T if(S.bloody_shoes && S.bloody_shoes[S.blood_state]) - for(oldFP) - if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == bloodtype_to_color(last_bloodtype))) - return - //No oldFP or they're all a different kind of blood - S.bloody_shoes[S.blood_state] = max(0, S.bloody_shoes[S.blood_state] - BLOOD_LOSS_PER_STEP) - if (S.bloody_shoes[S.blood_state] > BLOOD_LOSS_IN_SPREAD) - var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new step_print(T) - FP.blood_state = S.blood_state - FP.entered_dirs |= dir - FP.bloodiness = S.bloody_shoes[S.blood_state] - BLOOD_LOSS_IN_SPREAD - if(S.last_blood_DNA && S.last_bloodtype) - FP.blood_DNA += list(last_blood_DNA = last_bloodtype) - //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood - FP.update_icon() + var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints) in T + if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == bloodtype_to_color(S.last_bloodtype))) + return + S.bloody_shoes[S.blood_state] = max(0, S.bloody_shoes[S.blood_state]-BLOOD_LOSS_PER_STEP) + var/obj/effect/decal/cleanable/blood/footprints/FP = new /obj/effect/decal/cleanable/blood/footprints(T) + FP.blood_state = S.blood_state + FP.entered_dirs |= dir + FP.bloodiness = S.bloody_shoes[S.blood_state] + if(S.last_blood_DNA && S.last_bloodtype) + FP.blood_DNA += list(S.last_blood_DNA = S.last_bloodtype) + //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood + FP.update_icon() update_inv_shoes() //End bloody footprints - S.step_action() - else if(!shoes) - if(!buckled) - if(loc == NewLoc) - if(!has_gravity(loc)) - return - var/step_print = dna.species.get_move_trail(src) - var/mob/living/carbon/human/H = src - //Bloody footprints without shoes - var/turf/T = get_turf(src) - var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(step_print) in T - if(H.blood_smear && H.blood_smear[H.blood_state]) - for(oldFP) - if(oldFP && (oldFP.blood_state == H.blood_state && oldFP.color == bloodtype_to_color(last_bloodtype))) - return - //No oldFP or they're all a different kind of blood - H.blood_smear[H.blood_state] = max(0, H.blood_smear[H.blood_state] - BLOOD_LOSS_PER_STEP) - if (H.blood_smear[H.blood_state] > BLOOD_LOSS_IN_SPREAD) - var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new step_print(T) - FP.blood_state = H.blood_state - FP.entered_dirs |= dir - FP.bloodiness = H.blood_smear[H.blood_state] - BLOOD_LOSS_IN_SPREAD - if(H.last_blood_DNA && H.last_bloodtype) - FP.blood_DNA += list(H.last_blood_DNA = H.last_bloodtype) - //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood - FP.update_icon() - H.update_inv_shoes() + S.step_action() /mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee. if(dna.species.space_move(src)) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index af03bf3f2f..2f3e542923 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -77,7 +77,6 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/fixed_mut_color3 = "" var/whitelisted = 0 //Is this species restricted to certain players? var/whitelist = list() //List the ckeys that can use this species, if it's whitelisted.: list("John Doe", "poopface666", "SeeALiggerPullTheTrigger") Spaces & capitalization can be included or ignored entirely for each key as it checks for both. - var/obj/effect/decal/cleanable/blood/footprints/tracks/move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/shoe // What marks are left when walking /////////// // PROCS // @@ -641,12 +640,6 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(!H.dna.features["taur"] || H.dna.features["taur"] == "None" || (H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR))) bodyparts_to_add -= "taur" - if(H.dna.features["taur"] != "None") - if(H.dna.features["taur"] in GLOB.noodle_taurs) - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/snake - else if(H.dna.features["taur"] in GLOB.paw_taurs) - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/paw - //END EDIT //Digitigrade legs are stuck in the phantom zone between true limbs and mutant bodyparts. Mainly it just needs more agressive updating than most limbs. @@ -938,6 +931,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) return "TAUR" //END EDIT +/* TODO: Snowflake trail marks // Impliments different trails for species depending on if they're wearing shoes. /datum/species/proc/get_move_trail(var/mob/living/carbon/human/H) if(H.lying) @@ -946,7 +940,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/obj/item/clothing/shoes/shoes = (H.wear_suit && (H.wear_suit.body_parts_covered & FEET)) ? H.wear_suit : H.shoes // suits take priority over shoes return shoes.move_trail else - return move_trail + return move_trail */ /datum/species/proc/spec_life(mob/living/carbon/human/H) if(H.has_trait(TRAIT_NOBREATH)) diff --git a/code/modules/mob/living/carbon/human/species_types/angel.dm b/code/modules/mob/living/carbon/human/species_types/angel.dm index 92798c8bc7..5122294956 100644 --- a/code/modules/mob/living/carbon/human/species_types/angel.dm +++ b/code/modules/mob/living/carbon/human/species_types/angel.dm @@ -10,7 +10,6 @@ blacklisted = 1 limbs_id = "human" skinned_type = /obj/item/stack/sheet/animalhide/human - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot var/datum/action/innate/flight/fly diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index d3288e1cd1..96b43795a2 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -9,7 +9,6 @@ skinned_type = /obj/item/stack/sheet/animalhide/human disliked_food = GROSS | RAW liked_food = JUNKFOOD | FRIED - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/human/qualifies_for_rank(rank, list/features) return TRUE //Pure humans are always allowed in all roles. diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index ea7a20163a..c6e7608a44 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -18,7 +18,6 @@ coldmod = 6 // = 3x cold damage heatmod = 0.5 // = 1/4x heat damage burnmod = 0.5 // = 1/2x generic burn damage - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/jelly/on_species_loss(mob/living/carbon/C) if(regenerate_limbs) diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index ba4d8b8781..f2525ce2fb 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -3,7 +3,7 @@ name = "Lizardperson" id = "lizard" say_mod = "hisses" - default_color = "00FF00" + default_color = "117720" species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,LIPS) inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID, MOB_REPTILE) mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs", "taur") @@ -73,7 +73,6 @@ /datum/species/lizard/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Digitigrade Legs") species_traits += DIGITIGRADE - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(FALSE) return ..() @@ -81,7 +80,6 @@ /datum/species/lizard/on_species_loss(mob/living/carbon/human/C, datum/species/new_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Normal Legs") species_traits -= DIGITIGRADE - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(TRUE) @@ -97,9 +95,8 @@ mutantlungs = /obj/item/organ/lungs/ashwalker burnmod = 0.9 brutemod = 0.9 - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw /datum/species/lizard/ashwalker/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) - if((C.dna.features["spines"] != "None" ) && (C.dna.features["tail"] == "None")) //tbh, it's kinda ugly for them not to have a tail yet have floating spines - C.dna.features["tail"] = "Smooth" + if((C.dna.features["spines"] != "None" ) && (C.dna.features["tail_lizard"] == "None")) //tbh, it's kinda ugly for them not to have a tail yet have floating spines + C.dna.features["tail_lizard"] = "Smooth" return ..() diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index 4c2c360c68..d15d989384 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -15,7 +15,6 @@ disliked_food = FRUIT | GROSS toxic_food = MEAT | RAW mutanteyes = /obj/item/organ/eyes/moth - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw /datum/species/moth/on_species_gain(mob/living/carbon/C) . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index c556390533..3095ca48ae 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -21,7 +21,6 @@ var/internal_fire = FALSE //If the bones themselves are burning clothes won't help you much disliked_food = FRUIT liked_food = VEGETABLES - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/plasmaman/spec_life(mob/living/carbon/human/H) var/datum/gas_mixture/environment = H.loc.return_air() diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 05c52ede86..c3d1e1aedb 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -17,7 +17,6 @@ var/light_oxyheal = 1 var/light_burnheal = 1 var/light_bruteheal = 1 - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/pod/on_species_gain(mob/living/carbon/C, datum/species/old_species) . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index 606e72839b..5c2b01a179 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -13,7 +13,6 @@ damage_overlay_type = ""//let's not show bloody wounds or burns over bones. disliked_food = NONE liked_food = GROSS | MEAT | RAW - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/skeleton/check_roundstart_eligible() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index e2c8ffb9c3..e1457386e7 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -15,7 +15,6 @@ var/static/list/spooks = list('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/wail.ogg') disliked_food = NONE liked_food = GROSS | MEAT | RAW - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/zombie/check_roundstart_eligible() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm index 212b96e6d9..397b4efa16 100644 --- a/code/modules/mob/living/carbon/update_icons.dm +++ b/code/modules/mob/living/carbon/update_icons.dm @@ -97,8 +97,12 @@ /mob/living/carbon/update_damage_overlays() remove_overlay(DAMAGE_LAYER) + var/dam_colors = "#E62525" + if(ishuman(src)) + var/mob/living/carbon/human/H = src + dam_colors = bloodtype_to_color(H.dna.blood_type) - var/mutable_appearance/damage_overlay = mutable_appearance('icons/mob/dam_mob.dmi', "blank", -DAMAGE_LAYER) + var/mutable_appearance/damage_overlay = mutable_appearance('icons/mob/dam_mob.dmi', "blank", -DAMAGE_LAYER, color = dam_colors) overlays_standing[DAMAGE_LAYER] = damage_overlay for(var/X in bodyparts) diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 10a0bc9e5c..67b265ecd6 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -473,7 +473,7 @@ return if(isturf(next)) if(bloodiness) - var/obj/effect/decal/cleanable/blood/footprints/tracks/wheels/B = new(loc) + var/obj/effect/decal/cleanable/blood/tracks/B = new(loc) if(blood_DNA && blood_DNA.len) B.blood_DNA |= blood_DNA.Copy() var/newdir = get_dir(next, loc) diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index 87da71944140b8ce5a341444f4fa652127f205ab..78c9acc937c3b151869fbb436a7c9cf489d65958 100644 GIT binary patch literal 90421 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 hkdWwS=SsklR867hr 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�(&@S0f4 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 literal 0 HcmV?d00001 diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index 3301345fcf..d786bd6e48 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -13,7 +13,6 @@ meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/mammal liked_food = MEAT | FRIED disliked_food = TOXIC - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/paw //Curiosity killed the cat's wagging tail. /datum/species/mammal/spec_death(gibbed, mob/living/carbon/human/H) @@ -46,7 +45,6 @@ /datum/species/mammal/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Digitigrade Legs") species_traits += DIGITIGRADE - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/paw if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(FALSE) return ..() @@ -54,7 +52,6 @@ /datum/species/mammal/on_species_loss(mob/living/carbon/human/C, datum/species/new_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Normal Legs") species_traits -= DIGITIGRADE - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(TRUE) @@ -78,7 +75,6 @@ miss_sound = 'sound/weapons/slashmiss.ogg' liked_food = MEAT | FRUIT disliked_food = TOXIC - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw /datum/species/avian/spec_death(gibbed, mob/living/carbon/human/H) if(H) @@ -126,7 +122,6 @@ liked_food = MEAT disliked_food = TOXIC meat = /obj/item/reagent_containers/food/snacks/carpmeat/aquatic - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot /datum/species/aquatic/spec_death(gibbed, mob/living/carbon/human/H) if(H) @@ -173,7 +168,6 @@ miss_sound = 'sound/weapons/slashmiss.ogg' liked_food = MEAT | FRUIT disliked_food = TOXIC - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw /datum/species/insect/spec_death(gibbed, mob/living/carbon/human/H) if(H) @@ -230,7 +224,6 @@ /datum/species/xeno/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Digitigrade Legs") species_traits += DIGITIGRADE - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/claw if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(FALSE) return ..() @@ -238,7 +231,6 @@ /datum/species/xeno/on_species_loss(mob/living/carbon/human/C, datum/species/new_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Normal Legs") species_traits -= DIGITIGRADE - move_trail = /obj/effect/decal/cleanable/blood/footprints/tracks/foot if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(TRUE) From 26855d06989ebfc33e0b2c068040d30632e24882 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Tue, 11 Jun 2019 04:33:38 -0500 Subject: [PATCH 048/469] Gibs spawn correctly. Just need to figure out the overlays now --- .../effects/decals/cleanable/aliens.dm | 9 +- .../objects/effects/decals/cleanable/gibs.dm | 102 +++++------------- .../objects/effects/spawners/gibspawner.dm | 76 +++++++++---- code/modules/mob/living/carbon/human/death.dm | 14 ++- icons/effects/blood.dmi | Bin 90421 -> 90003 bytes 5 files changed, 93 insertions(+), 108 deletions(-) diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 6d6b1731d5..2b9ac1cbe1 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -10,20 +10,17 @@ /obj/effect/decal/cleanable/blood/gibs/xeno color = BLOOD_COLOR_XENO - unique_body = "x" /obj/effect/decal/cleanable/blood/gibs/xeno/Initialize(mapload, list/datum/disease/diseases) . = ..() reagents.add_reagent("liquidxenogibs", 5) - guts() -/obj/effect/decal/cleanable/blood/gibs/xeno/guts() +/obj/effect/decal/cleanable/blood/gibs/xeno/update_icon() if(gib_overlay) var/icon/blood = new(icon,"[icon_state]",dir) - var/image/gibz = new(icon, icon_state + "[unique_body]-overlay") + var/image/gibz = new(icon, icon_state + "x-overlay") blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY) - icon = blood - cut_overlays() + gibz.appearance_flags = RESET_COLOR add_overlay(gibz) /obj/effect/decal/cleanable/blood/gibs/xeno/streak(list/directions) diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index fdb1cec174..3f498bcc69 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -7,23 +7,26 @@ mergeable_decal = FALSE var/gib_overlay = FALSE var/body_colors = "e3ba84" //a default color just in case. - var/unique_body = "c" + +/obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) + . = ..() /obj/effect/decal/cleanable/blood/gibs/update_icon() - . = ..() - guts() + cut_overlays() + var/list/guts = list() + var/mutable_appearance/blood = new(icon, "[icon_state]") + blood.appearance_flags |= RESET_COLOR|KEEP_APART + blood.color = blood_DNA_to_color() + guts += blood + var/mutable_appearance/gibz = new(icon, "[icon_state]-guts") + gibz.appearance_flags |= RESET_COLOR|KEEP_APART + guts += gibz + var/mutable_appearance/gibz2 = new(icon, "[icon_state]c-overlay") + gibz2.appearance_flags |= RESET_COLOR|KEEP_APART + gibz2.color = body_colors + guts += gibz2 -/obj/effect/decal/cleanable/blood/gibs/proc/guts() - if(gib_overlay) - var/icon/blood = new(icon,"[icon_state]",dir) - var/icon/gibz = new(icon, icon_state + "-overlay") - var/image/gibz2 = new(icon, icon_state + "[unique_body]-overlay") - blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY) - gibz2.color = body_colors - icon = blood - cut_overlays() - add_overlay(gibz) - add_overlay(gibz2) + add_overlay(guts) /obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) return @@ -107,20 +110,6 @@ /obj/effect/decal/cleanable/blood/gibs/human/Initialize(mapload, list/datum/disease/diseases) . = ..() reagents.add_reagent("liquidgibs", 5) - update_icon() - -/obj/effect/decal/cleanable/blood/gibs/human/guts() - if(gib_overlay) - var/icon/blood = new(icon,"[icon_state]",dir) - var/icon/gibz = new(icon, icon_state + "-overlay") - var/image/gibz2 = new(icon, icon_state + "[unique_body]-overlay") - blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY) - gibz2.color = body_colors - icon = blood - cut_overlays() - add_overlay(gibz) - add_overlay(gibz2) - /obj/effect/decal/cleanable/blood/gibs/human/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") @@ -150,24 +139,6 @@ /obj/effect/decal/cleanable/blood/gibs/human/lizard body_colors = "117720" -/obj/effect/decal/cleanable/blood/gibs/human/lizard/Initialize(mapload, list/datum/disease/diseases) - . = ..() - reagents.add_reagent("liquidgibs", 5) - update_icon() - -/obj/effect/decal/cleanable/blood/gibs/human/lizard/guts() - if(gib_overlay) - var/icon/blood = new(icon,"[icon_state]",dir) - var/icon/gibz = new(icon, icon_state + "-overlay") - var/image/gibz2 = new(icon, icon_state + "[unique_body]-overlay") - blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY) - gibz2.color = body_colors - icon = blood - cut_overlays() - add_overlay(gibz) - add_overlay(gibz2) - - /obj/effect/decal/cleanable/blood/gibs/human/lizard/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") gib_overlay = TRUE @@ -195,24 +166,16 @@ // Slime Gibs /obj/effect/decal/cleanable/blood/gibs/slime desc = "They look gooey and gruesome." - unique_body = "c" - body_colors = "00fff" /obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases) . = ..() reagents.add_reagent("liquidslimegibs", 5) - update_icon() - guts() - -/obj/effect/decal/cleanable/blood/gibs/slime/guts() +/* +/obj/effect/decal/cleanable/blood/gibs/slime/update_icon() if(gib_overlay) - var/icon/blood = new(icon,"[icon_state]",dir) - var/image/gibz = new(icon, icon_state + "[unique_body]-overlay") - blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY) + var/image/gibz = new(icon, icon_state + "c-overlay") gibz.color = body_colors - icon = blood - cut_overlays() - add_overlay(gibz) + add_overlay(gibz) */ /obj/effect/decal/cleanable/blood/gibs/slime/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") @@ -240,34 +203,26 @@ /obj/effect/decal/cleanable/blood/gibs/synth desc = "They look sludgy and disgusting." - unique_body = "r" /obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) . = ..() reagents.add_reagent("liquidsyntheticgibs", 5) - update_icon() - guts() //IPCs /obj/effect/decal/cleanable/blood/gibs/ipc desc = "They look sharp yet oozing." - unique_body = "r" body_colors = "00ff00" /obj/effect/decal/cleanable/blood/gibs/ipc/Initialize(mapload, list/datum/disease/diseases) . = ..() reagents.add_reagent("liquidoilgibs", 5) - update_icon() - guts() -/obj/effect/decal/cleanable/blood/gibs/ipc/guts() +/obj/effect/decal/cleanable/blood/gibs/ipc/update_icon() if(gib_overlay) var/icon/blood = new(icon,"[icon_state]",dir) - var/image/gibz = new(icon, icon_state + "[unique_body]-overlay") + var/image/gibz = new(icon, icon_state + "r-overlay") blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY) - gibz.color = body_colors - icon = blood - cut_overlays() + gibz.appearance_flags = RESET_COLOR add_overlay(gibz) /obj/effect/decal/cleanable/blood/gibs/ipc/up @@ -293,12 +248,3 @@ /obj/effect/decal/cleanable/blood/gibs/ipc/core random_icon_states = list("gibmid1", "gibmid2", "gibmid3") gib_overlay = TRUE - -/obj/effect/decal/cleanable/blood/gibs/synth - desc = "They look sludgy and disgusting." - -/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) - . = ..() - reagents.add_reagent("liquidsyntheticgibs", 5) - update_icon() - guts() diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index fee579f00b..19752c8d16 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -73,7 +73,7 @@ var/mob/living/carbon/digester = loc digester.stomach_contents += gib - if(dna_to_add.len) + if(dna_to_add && dna_to_add.len) gib.add_blood(dna_to_add) gib.body_colors = body_coloring gib.update_icon() @@ -111,7 +111,6 @@ gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) return ..() - /obj/effect/gibspawner/human/bodypartless //only the gibs that don't look like actual full bodyparts (except torso). gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/core, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/core, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/torso) gibamounts = list(1, 1, 1, 1, 1, 1) @@ -121,33 +120,70 @@ gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) return ..() -/obj/effect/gibspawner/human/lizard - gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/lizard/torso) - gibamounts = list(1, 1, 1, 1, 1, 1) +/obj/effect/gibspawner/lizard + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human/lizard/up, /obj/effect/decal/cleanable/blood/gibs/human/lizard/down, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/body, /obj/effect/decal/cleanable/blood/gibs/human/lizard/limb, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core) + gibamounts = list(1, 1, 1, 1, 1, 1, 1) + gib_mob_type = /mob/living/carbon/human/species/lizard gib_mob_species = /datum/species/lizard + sound_vol = 50 -/obj/effect/gibspawner/human/lizard/bodypartless +/obj/effect/gibspawner/lizard/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) + return ..() + +/obj/effect/gibspawner/lizard/bodypartless gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/torso) - gibamounts = list(2, 0, 1, 1, 2, 0) + gibamounts = list(1, 1, 1, 1, 1, 1) -/obj/effect/gibspawner/human/slimeperson +/obj/effect/gibspawner/lizard/bodypartless/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) + return ..() + +/obj/effect/gibspawner/slime gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime/up, /obj/effect/decal/cleanable/blood/gibs/slime/down, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/body, /obj/effect/decal/cleanable/blood/gibs/slime/limb, /obj/effect/decal/cleanable/blood/gibs/slime/core) - gib_mob_species = /datum/species/jelly + gibamounts = list(1, 1, 1, 1, 1, 1, 1) + gib_mob_type = /mob/living/carbon/human/species/roundstartslime + gib_mob_species = /datum/species/jelly/roundstartslime + sound_vol = 50 -/obj/effect/gibspawner/human/slimeperson/bodypartless - gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/torso) - gibamounts = list(2, 0, 1, 1, 2, 0) +/obj/effect/gibspawner/slime/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) + return ..() -/obj/effect/gibspawner/human/ipc - sparks = TRUE +/obj/effect/gibspawner/slime/bodypartless //only the gibs that don't look like actual full bodyparts (except torso). + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/torso) + gibamounts = list(1, 1, 1, 1, 1, 1) + +/obj/effect/gibspawner/slime/bodypartless/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) + return ..() + +/obj/effect/gibspawner/ipc gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/ipc/up, /obj/effect/decal/cleanable/blood/gibs/ipc/down, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/body, /obj/effect/decal/cleanable/blood/gibs/ipc/limb, /obj/effect/decal/cleanable/blood/gibs/ipc/core) gibamounts = list(1, 1, 1, 1, 1, 1, 1) - gib_mob_type = /mob/living/carbon/human + gib_mob_type = /mob/living/carbon/human/species/ipc gib_mob_species = /datum/species/ipc + sound_vol = 50 + sparks = TRUE + sound_to_play = 'sound/effects/bang.ogg' -/obj/effect/gibspawner/human/ipc/bodypartless - gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/ipc/up, /obj/effect/decal/cleanable/blood/gibs/ipc/down, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/body, /obj/effect/decal/cleanable/blood/gibs/ipc/limb, /obj/effect/decal/cleanable/blood/gibs/ipc/core) - gibamounts = list(1, 1, 2, 2, 0, 0, 1) +/obj/effect/gibspawner/ipc/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list()) + return ..() + +/obj/effect/gibspawner/ipc/bodypartless //only the gibs that don't look like actual full bodyparts (except torso). + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/core, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/core, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/torso) + gibamounts = list(1, 1, 1, 1, 1, 1) + +/obj/effect/gibspawner/ipc/bodypartless/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list()) + return ..() /obj/effect/gibspawner/xeno gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/up, /obj/effect/decal/cleanable/blood/gibs/xeno/down, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/body, /obj/effect/decal/cleanable/blood/gibs/xeno/limb, /obj/effect/decal/cleanable/blood/gibs/xeno/core) @@ -169,7 +205,7 @@ return ..() /obj/effect/gibspawner/xeno/xenoperson - gib_mob_type = /mob/living/carbon/human + gib_mob_type = /mob/living/carbon/human/species/xeno gib_mob_species = /datum/species/xeno /obj/effect/gibspawner/xeno/xenoperson/bodypartless @@ -197,7 +233,7 @@ sparks = TRUE gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up, /obj/effect/decal/cleanable/robot_debris/down, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris/limb) gibamounts = list(1, 1, 1, 1, 1, 1) - gib_mob_type = /mob/living/silicon + gib_mob_type = /mob/living/silicon/robot /obj/effect/gibspawner/robot/Initialize() if(!gibdirections.len) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 01ea3d540e..6cb28dc7a0 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -7,15 +7,15 @@ /mob/living/carbon/human/spawn_gibs(with_bodyparts) if(isjellyperson(src)) if(with_bodyparts) - new /obj/effect/gibspawner/human/slimeperson(drop_location(), dna, get_static_viruses()) + new /obj/effect/gibspawner/slime(drop_location(), dna, get_static_viruses()) else - new /obj/effect/gibspawner/human/slimeperson/bodypartless(drop_location(), dna, get_static_viruses()) + new /obj/effect/gibspawner/slime/bodypartless(drop_location(), dna, get_static_viruses()) if(isipcperson(src)) if(with_bodyparts) - new /obj/effect/gibspawner/human/ipc(drop_location(), dna, get_static_viruses()) + new /obj/effect/gibspawner/ipc(drop_location(), dna, get_static_viruses()) else - new /obj/effect/gibspawner/human/ipc/bodypartless(drop_location(), dna, get_static_viruses()) + new /obj/effect/gibspawner/ipc/bodypartless(drop_location(), dna, get_static_viruses()) if(isxenoperson(src)) if(with_bodyparts) @@ -23,6 +23,12 @@ else new /obj/effect/gibspawner/xeno/xenoperson/bodypartless(drop_location(), dna, get_static_viruses()) + if(islizard(src)) + if(with_bodyparts) + new /obj/effect/gibspawner/lizard(drop_location(), dna, get_static_viruses()) + else + new /obj/effect/gibspawner/lizard/bodypartless(drop_location(), dna, get_static_viruses()) + else if(with_bodyparts) new /obj/effect/gibspawner/human(drop_location(), dna, get_static_viruses()) diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index 78c9acc937c3b151869fbb436a7c9cf489d65958..09576e9f1be5d1a7f7b99c474da66b28df7cc3af 100644 GIT binary patch delta 73058 zcmXt;1yoes*T!cCkZwe}yF~;fhZ2TP>F@=VMpF6`N=kQ04J|3s-635{cM3>1eAoY4 z-(714*1*iVv(MgVKhJNUADw9NZD=t}(BN2RdcZhj>wD7%zbhHmpLIeQhbB`_oV9}U zTI)TYYNMb+o@6wdUk!U&IQNCi>3!d5q2%!TQQ>X}@=t@k;PA=*y{q$CWBt2HuC2+i z7fX%&53$%!C+*VI?k|2PWbQYqO@>{t3#Gq%mHCHQE@$`(%9f2XyWkv5wh{&Ti3k${)kFZCB6V_=8I9 z&YeXs=+gp!D_oPu|E_{s9(6PwrNE0}-~F7X_PDC%H_AA3L(ML%+Ly>MpE7?JDllu% ztH_;=uxZk-V3XT$?$G=6R5i8q18vIWx3on-g0JvZ@1E@<`c_T%FD!H0FXD8gIVO1f zIxS=~rD!MFNf-w7R=Dnr3EpQE9J0$&%BNMIv$5!c-sHe)&b5o`^3D}Mdx>uGsIzY! z6nH)Iu|z2y)(fO>Jq+C^bLO1xxrhyU1!Y>c42@JT*}T_3s*AI_yxYqBdmw_%9E zh?Xj{XLMbbD`kp}?TcKOFQxr^O8xhg^6x3Runc&A8%OvDXBXSZ^LM+~6V`yj`HxpR zFKG>pw8EQ2B~nO=9*!kiv*cPo40461n2rl^GM=PGmvMEHPvoKr%XksYDv*qS{LcAs zQPKmgHk7T{o`C$OW|Py14Xgqfc$EP938h$*urmYXd&C@iu77L%q8ZNww*H9{q3OR@ z^Jc3XWh*T6JqdQrzV&N`Gnfinwh}qr>JsCVskwio+RKYNb`6P;2CsXM-AqYDgmqNG`^ zLWkWV4vw|N(MWHl#HOECbMV>9m$jzwzq#%qIYp85cWHxC-QlimI6~wB6yaOS_SI#G z>SOR}$K_E)-`)ciV1nOTblCLU+nX`+I3|2==Lg0pvq!+&55HdMRs1zNmhIpw(^b+d zH){yq*rg_CqsC~o%XXzR%lc~VTlz#1eeN)0z|t^l=F1%U1jKK6Z4JQxfn09GbxbbD zPFN55al3GLb^1%}!7uFr1tY0u_Caad3j(2oAY`SqJu?0*e(yjLmIX+gs-7bzvF5A4 zDO_j~DbajHSxm`16sERIkn(o-7NivYB}wFDhaO&qc;7;4=Ji}uN@6Cm>a!jVb1HSs z!RKecOoUjl1nt${7l?|^f8Y{*o+Yba!1SFx3~7$st&t7&Lv}X-%_2RgBchixWhI8R zN5>ET=qJ;qjix$o`?^5esgo!~)cw!Z^85GiM}2o>Xm9Y3noma_o0^+_`i6y;?@%G_ ziJZEJ`i6${4~I=h52z47L-u@$vmAWfK9W?7uCA`fx9;xlgpk&U5z!+fBNLOaZP#1r zkD*hK4^2m{x9=ezs32w*78_X&-?G*hKQ7<@LYMd(@X_x$!gK*>Gw+LPyPvM`JKy}c z?0Y%-?)`h(q302q+AI^Ww1;4Z@SPCE8s8#Z~(OPPLfr;BU3{Fshw zx$sCsQwyI!r-ahitKfV)mhdP28;hW!p^?iQxAO5bGh4Z}tYdVvOY-v~3E?Pn*R=FN zQ*U2eTYFxMw>kvmeA%02Is5yU4Yd|o1inGysCFYPARyrAqZh4M30m?-^y~jl51bmv zOYzhoXkWg35tFvtCNp-Cyh1Ax7lS~u!T02Vj{rx`Qt`#$*LlaDl$zSXUP;gNPnpIT z)hy_3CnqNrQ+%xtNSy%yo|4;q{Kbn)X{Ck2K|G&W)Yr(xr)f{E9h%) zZ@(;BdnW(TERupJ$W)2(G=?Ki&@G=Hso8*nf)Wsg`i{9JQ#DO|tphWQ+j@PV8XX-y zr>za3y}7+LR4_9&HD$4^vLh*jypCmm&QvO3){Ubtf#$LgiMbQ;E0d0Pkf*X%%Dr-n z7x`r+5S7|0`mONu2gE0|0n@y3;UrzrN?e4`x!vVv!Qo$F%hJ2u-tO8+(oM;qt+b8; z6n*xCmu$4wIwIu|m;izfZp(kDD*qOhk4YP#{=R`tB=#DXcPC<5JKU9rp`M73`GlFG zTt|HVgzXjGfvu=u$OW}6_#sc8JfWeV$D2IjkqR@`bEF*avR{3S9$SvVU}g@c&^#9? zR@=|&AIMOlJr;=bGj>f&5>l_zFZ-lPjB1ocqZ`p0p*O3XOvRMabk-Pk>wSCI^OZEGDMB zv|=5-Q+Q|$HztYCUkSB`Xazc*E5J@63z3K&eVwA76pMl% zP~ps7apdIWe51I0zCXJC4M*}BP!Cui3z>gl3V!$locs{+4z3RC9!hWbY z(*6_O-6J+V`Ip*P<(GUAA5??cIaG*8FlQj-FJUGJS=`K&y*YB5JV)H#9;jy1I-^I< zcX=6>M}u*a|7`ws=H6kwRAE5ycfntu)2elg(ZrisD*>8%tGgkMV69 z`ZNw5h^4c$8VVYk;Mmw$2+;L1#(q}%Yig=SP*6~1bv3N%;}IU|vu97aP`>e?oZa1= zhcfZ-@Nh8sLm=~Yj?qyAKv`FmMkuVGlp`vTtz-{r)PAsZNgEmR_=!6_mhbv z^SAe(jfOlg662qAAU(L4V9T4b;8L!56J0CiHIAEyhUsd+=mzO9i#W{&DoHE z*7v`2a}*GW-Fz+gjjy#eIb?2Hh6%X8zyGi~m>9(XK+xFyzueLL(8-~jJ2@SnGBPqQ z_qEB*P(Iu~2dqrgOfeoG$*-~HYT4~(pMMh_z3F-YxbALVnBa@kT94rBnhLz@3Sq~z z-bi`)T;f$=rA~dK4n=?Rq?NMPJT6B1&RDa;U`lJq>szi@m-~)3y!%CsNEQPDZwzzRk6tgBk~DZxGc>ED4VHXr+gRe&S^lJe)XWFBKpUtix?-j$y} zzs%Lz8>YiTH`KOYC`@>H8j*%Ql2+@8iSPdk_rzHNb9qQXh8CfbUK@JX;y4oNEJ;91_OKF zV|)TH5c}+gI+1)K`A?R@xl(SgMtnK*bzZnJ4U5@a?NQwFj)xeLpQLhIU&7+M-h?Sm zYeNr{uW#oKw57dN*ZXOIZ*N;8DEadFxE`&CTVK;13#E=&XPqzr-&zqDO&*b&mSc>P zbj5iOA15WnX9Z2^$P)&$2bV4m=6k$^tLB}t0f@lo4mRm}tPT9Wx9{Gu2=e6<(83E~ zUgs4kQaX}W%nYOOk-_u=)y%zP9E?3ZyaOq9=`_Q83mgyQ&?J`_ZD>M5d`x}Kmlqo5 zH8wdBA$+y+>W{9xarUz^9vPGFpY3IsEA#CFc3L`gI!WAqu)F(EmI_gzJC}buMYY*e z0#0Mv_t(e4w&D7OKg?eENzM&d15EuXpOQG{ocT+ZxARfn3@P|U&LJD+6&3hNJUm@v zN%X(2HAK;3U@C*N6{gW7?cfrSI)~hvi5of;zy5D0HI*D~Oq*exbsVWkx`xuPRqSyx z>q*ex-L>JUF*x7#hj+^oc|{JlNOHpi3S@In`sa6CxyY{b?(;dPWVh+iu5SZ_sm5EW zUrRGzq1DO`%w2NPP@G)4oLp{i)OESG#ZalEy(m*-P-{6cR&8`OCn$WV@?!d|rWm!5 zOHeJ6wW_F3q{$T1R+xj>%2m^oSR~cm%6qFn=gr`d(J8U^<1da-+m_rNMOrfe2x7fp z1(xvnB$d_FN)r>G>gnqTfZvCOol?;xs!WnzetZLea%7Bo@832utP}bW#zI1hh672# z9*b|oLt|zTa#-+RS~Bs+eaWM{IV=tJPO*2HAw4wgn+rG}clU+1XEIRC6rX?3+Ya2E zQ^rL&(c|y_j4e#Ek6~er=LEt$R43Ac8aOy&NRACi5~hB}4j>YgRaN8J0wQPnO`qo` zb9hD0KnVR==w&A|^#W?3$G&&^dTQwuY3ByA)vtr3$WpcbEXACVc%Ad2XYrwD zU6Rw%;&1u278Su#wC}sj!JD6+F4cW|dAMj#*hA)qqaFndJuvny1g?EOhcxFUrjWxy zdRWGo-SKUQQVPP56prL%EV8)btblL+^k2!z$vv5vq-as($6_Q^@2r|Krd8mHrKFqj zUn6?>I9@5qZO~JQ|026ye|0#gpihw>32t^QC6E)B=r-DdHbSDfBJqSfCp2{}p-<;> z1uL&@Nt{?t=`-;*?r@o4EHEWuAZrtw$` zx3)JlQOqSvarl-TXi163U&8JXz-K|P4ICzc_4W0R!9gse24}Q4Z{C=Bc^TL@^kkg9 z!UMC@Q3Lh;yLVHAgNjNm3gt;jb78t)+doZ%e+kLYXVx5ymIp*fdk)xnGws ziT%8Xj6VXSpHKP{%0gZ}pCzb+^AGJSq|n2W+&$P2`H$c4qi|!i`JCJ;eQ9!Lqk2bc zKBJzP?_Sp5*tHMPJ{PacG}L}DnliNf`ST~+*(**85iRc5>kOFHuY#pDk7E|zdXc4@ zPndyQ5;8gxz|7zrw!_cI+UL(f@6G zsCyQa}I1ej+7aHq24K|mi{I^8Pf|?(zo=*KEc!YW91l|v811)3N7~R=mC9g z_yvLZ&wgTNAViAqUJ>7s@~`=)5YCn*Kh@fG4<8bP$z(G?Q*BHcO+Xy}^*JFaaZC(g z?E|6BK}HkB`~?Wz*Lsca+?gRVh_R_I$g&*YOaCh>v=z=;ejgE!08uP^ZM z@H)X=H}7G>%NUBFAX2;mK*=e41^f-_J9amNWAR4MqNrEmn^BPp<$m_fR`{Gv4?vzg z3R#r|jA-$9U%|Exf-uG?B7eq4NFv|fS+}fItKz11+-RU}?8?)O6SlqnsYo9gnE~7d zsQG@gI=g&p6(>HKVnw?kXjSw2mg1hKVSsF2ZK&$ockZ;rnTlf}@8E}WPCzJ(48#IEm&nUkXykV8& zfI#%bBVjo))9AgA26qLIkPfev&gza0od7K5i1lr(JS59dyL3opS>)^fsJkWMY|7WK zZ@>f>;<4^~{^CU*(rRT8AZVA%;wY%5Lq*L-3UHBy=2$BoT3ex7My7ooR7Qzcg4u+P z`TvErU+U}YdwP8MP|1A#;mUjM)3{SOr8TjTQp5(Y3T3BzC}x$uXysR{T``eh%zffy zp>-Q#`W|kJSJuA4?jQ1_FE>*vaqH@?@Z#1D{TSVP3Y=m?>6imnfs3T%&tg8u9>yXt zg^Q2U|Et!+#ik(8ez{Gm2tnah0q9nT`5U886rLEzw)gO1x@f{uSkQ2o)4(D|_s4x~ z%f+N4k_`KxbdWtrcQ}MF^YWddC*7Qu7UO`uZeHs*Ew?uVpw1)LA#NyEVRZ1)wHTq8 zGhaI}j|t}h7Ts)ogV%mcJ$0W`{)V8$l|ySC_*nmAA0V%lQF_?v66U;~Or^74)W09a z!J=D^j_Xh`Rw_L^7Q_)qeq;M$oqy*h1o_4B*??(1E}}dMgWu(@D&WmaK1H(Oo3&3Q zT14_s+biwNk&bUpgus}CZYM8)pon+w&!2B;DJdAhPHO^_;y`qK9I3#i1E}B_q(X&> z_d%_l_X;{RAe~nEWs_Ui%%f;=6hGU#I{(2>x5DHHLz%+PPL-hp)IVbQ@p++1Y`g3T zsP|%FVS0v!K@SfPwZ|FYTFaDnLB`O<+m^&k6Zm-I&f__AAT}7;x=_w11%8ROB$TXy zfai?d{`%wOaz~|X`jC4}g{sOQ5!gFEw7fkQw9g8D0W+u-gl(u)Wm>aQJKhxM6;d`p2@rJD_9y|Vi5EyuU=u_w0X0UsNy}XIJD&R} z``2qJ-6WjQWGfV_xUALHx9yw1!0c9l#NM4)^s{W152I2geOJ)zSn;b@oABE)BSyl; za1^DO2?DxFZiVkBU2Hr&*bKTnZmmw!R?Ia-pg1T`OoHFQb_Ps8=V0^od!OS1)VrMF z7-|0IngsMcbdNx)q^k*piq+;jJ{Vfm>1YjRyN2{3oMPX#q7cpx3=KEI1@G~hq z-+C{L{MpDL5*bOt6Rr42ymRxb;NqobIR=Aqh!GUo_JY_xVU*vx1<8|#nM~APxio;> z;N{7NYt9KDug^O+?y`71-d{!n9Mqr;@eMRL^nJqkzZ1*xwT$0x`2dJd_ZYxsisOS> z*FxwpT0=#}PJBOH^X{<5FND-ho+-vY{tm{NJ@@S4(HDDD?ao-}V&X{qd>wVHcQ$64 zQt3f2{Ys=`<^f2VEvu-g=xI|5sUa*E>FhwzF#|O`<*#$sSP3OdFq~-{k?>RA*N^{2 ziT)YQS4y6`;k`}c1pIMc-iGyk`}R%mn(jn)R0M_*^QAdI0Etl!%6m%;Gq+a)YBGXE z1}|Y45Q(?0Z@6xr>WUH39j*>u5KprXY;Y!|YJawkxUe`6x9tkIyHAh zRS90(%;hjkf3eeYj>o<>KUcEJX1_^}?^U+FIB}sj`gryc2Z*^L+jvI6kOoZt=k6}p z*sHM_erhUH9V&~h(l%vU*49SL!otGvC>SO{r{BrXeDWT}hJS{7zY~><5DxL@#6FV8 zqQf<+qW@|{jYN&9dxa0PDp9lHgwzz5)Z>OVT63=`62MjU!~ziL(z(7I)cBkPfao}q zl<3vZvP-^CfF~5q`2x*(;nM22v@ti3e}QqZq45>owtshIWy;kn&1C-^w3H{7%)Z}7 zNOLXtBHwG)Yt{~LP_m^(PNw+bp4X-J?RvhSJs$0Ez3Pk+WLAwxOO{=n3?RZQXRcW7ky+R=K!PNT*cVr{H>uK>vhMBM!R7HDIRBH)2RkCefMxMU;& z8_`MhgzzsJo4%VXgS2qYjv>Q?$qvC;x+pZY$)IgQm6aXFus)s75E>a%mYcQ^@f6G! z=ENx0DH?>-Qx-nt6v5BhULSybZgQ=^LhFVp7kO&=r8qhsp?K!3Gl$V(P0zuSFQ`KM zqUH#&rmo6st8y1%_1|ckIrmS^a>0G#1U=J7v0@God8)pRUL<35L-utKEs;r)ZRe<7 zjjA#ep;?{MK6{xsH;f`FHkn*?rJJYWK(FUQEuX1|)5gFfUxwgqyvR6>+1I_u$(bXeFiMy+gwMa|*#)!=yqp|rJYk)Qy>MuHtDN_PQduD0j=g$ev z8p&uj=%%9!R+tJ*wFLP5(5*N=*RrS*3qz4xZ|%I(PU6}8c`&mPyLre|&cXz;G#^nw zG#KKA3<^fQv9gJt3T1qWTk9pS+JUYC!FYL^Hbq4|UPGUw$7>ZRtU#HO>SLVEb)w5; zcf*$2;Z|bv6h0gc;m1U_@0hgWW{bmvIN?O(*+_!R%}?DVs4$5AJCmh%id@F|s;j;^ zuTEpE*4!!42>P12(D=%m#fa3rVZQ)5vv+3x@4TpKwbx@QFfoZCH8*ID{Alw8@B%ZD z()nEb26R)ay)vrQ0ph^jI?h|(>usoA$}2*nr$}UkJdul>vOFpjo?gHlA(^IfkLb{W z|LK~T&@}W)VX{oBY6g3XIsxiGqdT%Hs%683>7W&p#^yA^TpF?3G;KeNx4uRE_*n406!Gu7}wDy&;V$w~rZ9%zA3W!PZezO9!<-@<~CY=5oY?}-9Pqu?m#wDSAsAW8uW z3Ja&#)^a<2%poTCr#mKp=6)zO*E%(^24+TsAp+w7sg!~xYJRx*qyJgajBsQBUwFjD z#VZ>dvAi!2ao_0b=73$>hfl??9weEa`2HD135>RbsFM?-B60LT2I3_@W?MK8C2>Q> zRNG@Rnl!gSkP4DeNN{kl8DM3F0e-?;E2|>=HW2l^1Vixma|dS-%_3eH9S;{*(dW-- z>pzad%mp(<+!Rw=S*7|2;7lKPTv+MV0QlMU{_bu7rH}&z?lN)N&1-7Z=!#gK3kD^# zJ%Xon#q?RS$M>S{+=41NO#GkZz29+k+N`&6B%;ePFfoa$1?YdvoS;=ojTp1J)ZiHK zIuiHH&82<65f__a;2co&5?cgZT?Jxl8C?f+L&ytNGd2G`z)8VJc-{CBV*EL3OuQ)5 z+kb0*asl<(FRRlA*P1P#Axo0UPl}-CF28T%cfoKVr*3)sKj#G!2F{nmFQv$-s6OrP z?vetUuIGC?Wmt&1r<--5-H~zseM=`2QQqJnoH#x{HUs@S^oDa{oz1%2@7ZoV`|93w zX{;d}007xBKGS4QG`z5du`vR>-_^{TH0<;l>FHWUSZjMYI$DtJtt}G2>Obom)F~sn zq;YN!cb@s8CYqNcS&|jC4vScjvJGBaQINkHE}~L}fP)gz`rE@M6sAC)-om^SNbdF1 zYy`yH%PSX7fOn_v7STk|h`CCy5Y+l-RRG<0Nbluy8W{S6W(H31<60S6WtH-U*zX@Z;d( z%6-BO5-^$;1-+Z_08C#Rp@ z2h2M#-}06tzC795W4HlcU!0vm(u&z9qQbQCX9CU}idgZ$fr-uS#lb(#^{dra6k?a6 zbIPCx)>FsCL|pE^{a$~x19@R$Vq!NUFCMl2@4b4W%S)E##TPGLDDFic%*E?t94{i42pGon{$jmc*7fE7G zTn~He1ZM~V?5BPUY>c`p8+j`HsmJP%Uf(klqASImAuYN)w%0U_t0^{DZYSA^!G(M{ zUh7Gc8W^Hln4hO41heb{?H}K0@xFWl7U=Ni#=dfY{e5pF<+waMnqu(|a7P_rZ5!uL z6J$9Ki2Mcae$~9fjk$wD=rED*-rPv06)eRN|No@$(I_=(niMoU8G%^NWku8;qm1 zE#S-$>;7@<>d%o$TBb>3)`UBo&h^%@K-@p~!F$EPBi4NTVjoU!} z?$f8djbtK3(fL3=GniuDN}@%-N$BRWScnEXtJ(#R4=@B&-jie7yxVTTaXX(ps9Ch$ zn}rVGonNjOm?pF6eZ$XQyo=bfVp0b4Gy=nB?xrCwWU$a;X=_7~A@6EUQDsUbJ5{`# z>r=UkVXYlVG?^=?45SOI#}8^{=X!Cz-Qt!RV(ghV0pR%4>elW(yXH_Rbqirfo(7X^i~q*m>2LB_G->E>vC!8h~sbpSIBoi*pEl=U=M@t1C2g z6b$iPZJBj7yfe0tf;IJPZ0O;99j~y<)|Wv8N#>}8vGK;LD6o~4?$1_qfo(M~;u$Xo zz~l{~lqGcB0Qd0rn;Q|It1enRZQ z%Er`+bH7Sb2#s1;kzi?S=E~k01*!87`*}flmW&v^fH4CjN6T zW5j>3xD5XOmEFlg#sDTqqN06Ms#PU^o+=6dggdY_I>CNRK~9eO56S|dR;n@mibW+v zpDU(vuLJf(17}zxs?J6XiIa5y{c0QpL8#)af=LYj4%98W8_N1w8zvdk2!v zgSj82a^zoLpn={?K0vVOLL(0BMf#u3rD$Q1uNhCe7QjsWw?XWz$|9aK1GTa-agqpQ ze(Lx{)CsR^N5IzBRs#~Fos4~gKBkzxHppL`jhLfLP4R4S3gGo5lvJ%bIlGimcP_?$ z$hIHUd=|$;;VSJ*!>)V~<7aAM5EvUvXnwE#Bk$9!HV@pp?KwQ;B2O#8MHQrLJiG!J zVHx?%zy!8>2JbRhsqKtj6~;|7nv$%(^`Nh4xJ3sZvppj}biP-5P|XwpM_dc&*&e61 zEhf4U6?)Y9t+Y>?@!ZUfXQIr2<~<@%dX5Bsh1;^3v~?-wh=Ho}_^+u^ zL_YZgCfq;BB}E|H$_}=wA!e*+D(wji|0>q~VD2d$`H-UjwMZYNjENXUo!}SX4-`zu zFHeANF1w;);2=E~7%s2}o9T)5?cWf|g$Wa;5Rj{A=qna0$Tj=jdtnnURa+_{aVBaZ z0xnhKAy4A8=7bENs$=oRF!)0S0|V@Wi0u4Xj7tv3y=B7{3Jw%0P~%9Nxm`t7bmCpP zTm!fZL?R#(1k5ivkA8S+xUB=R{UY&p6YgWJPyy2q#jjNP2N;w&s9EhA-JPo6a&*;l z|69exo&(QJTEB{h`b)O!yy6hMD5YD5!LaO7OLUcW)i4Sj`dFL^I{fe-KVE_WC?eNq z+51RbgHV+sC0FZ_K(Tn?sW6rz@%g=cXV_txY20oeyZyFtI^F?7Pac} ztXEp=EcL~E5?1T?BN-YkEiD=XygKVvakkp`5W#-tB*fE}e>FcnJ>9?24Ay78`$1am zffPY|=Eo&+CJn$QKTKO5&S%!W`NN7K9Ww0Hvurd|!I&y|t5vTq6`wRTP#ED(XT?FL z-79>}5e_-IamqrnSXqB2RuvpOk=~Dqnw7F)bPOuxw>E?dE-*t326FaKW$)FE6Ij`S z4DFNFll8v7zMz^zf((HM(AaET%jB5Z+v9>7XigdejN>$$_u*wr$rzz_RL3Fxs&M~P z*gt(^nUd=>nHHqd2m6Go-U#>nw74fqSwg$4>!qO15XNG@t4B#9)o!;p8sYEk!Zsr{ z)Z}rTn~Oy^gIl?phhCW@`}LK}>$jERnjCXkY3|mPF;xH6yZ{@n`m&PPlfJAtxIYV_ ztjmvbK(dx)r5Yop_yL@vPtn|DKIu6-KL>RN5e`1SJTK+~?Sw3on?xdH*d^R@@|nyH z5eDeh%}h|aFi#k=8{N|}g0-{4*!F5u{az3@)jufSHVF%T|Nb2-44v5={5h_~`Et4t zSNea_e4C85#;G_)`1-pJzT3vn&o}Smff2OqS0-XM&rJV}@5vEoRg{(eK$XfNf3;hm z9!R<4=UMt6&!Ccd!OZ!rw(3lx)Hh-&7ilZS`u#a*GY0WDOu5wTR~pj!U*dRdMi#-+ zILj{V#=krOm3&x#%fEtoUWk?LK%1`}v71cXVLxBn0rtm;-(&%PK{b*!fFQs&k7}5J zY4G0p<@Nbnx+evFyGKXpIA5fDEG;Z#&(f#z<5q9S(8-coYHObe@aCxqxW9=PfIqP4 z%?m;{90Pml#B5-%cVN;U7S#@b7z>ZJpe~Ci!55ytL14z#Flniwu%n>G!P5%0U{R); z{L{VNZWWHyH7W9*Sy(+qnY8^5pPuR=x2i zK;;t*y?a=bMqeo zqIC4P>iqJjD6ksU`m;GVY8;|%O8HAAt%^h8c=jZkF4NYc>&Q6aJ8X#k{LX{xCb2=e z#n$FQ^+7tWs}vdNMePt8iL6j07AbRfb0m*84?E^}6;JIpE_6A2#$eIHiobB&P^4*_G85v^GE!jcF;@aN`rB2pR zU0uYZ6LN9jMyODRE65PPr-{^>u;RCCjXwNUe;|0C+7DDjFy9O+bZNe!pct6K9usJ= zU^gusd9QO&byNhY7r=d%8qAFFHY&&ob2*#cykB=yhq1+4&eyIy*5HIe_U6p@tKQ5wrh|d#`F!>l*{NU2HCU`_Ip*mY zbM649Kz7g5T~0>A7u>|z^|Dh53b2}+IYa@#^c9sN`?upWjhF;=CAYu6ZuTS62C*NY zB=MoYYsJfnHP)4I<8TaGhmSRVh2>eR_PVL#Ys8Ikm7G;3_VKjrUsB-ysxp^X;)9_L z8_Q$8$THX z3r-@F@6y%@#Eir3Qz5%V>RA%L1|Z3mxBf3dvjJH$e$K4LV3l@74p|xOyoEqOnU1QY zG*o#+yF|!t3K?^Lz7jMpxUH2&N8n#zO?-cJ#X$mgf$W6AY19bWgfz3~9M3S#z7|+f zZpita@)*KCa>MzhY1tN@CEnmPDgfwRD#Hs$D#;8zwW{SdnlD}miB2YSIYbql&p+|) zrZ49Lwd2whet4X8$=FG2x*3CiiepqEnG-c?=d?J)3KKP_Z8I}jeO6HRYj<6!m+-rH z??~b#2kL&JG6h-RjUtn2Y$o#O*~VmlVrHu(R7d?9x1~YhWxM*QI%5|IhX5PQ>v3Ni zNRHE)(3IcMO0dT;u(O9N!R<>ZA)2LtWj1>Db+904P3CLugIZf9cJ}v!{(pK(@Bi<& zf8$lZ`lDL=`F~xd7i={-({J?}>v5ExCBFrsJfCl+GmYMVogk{oEt>sznq_tt{a>#X z*vVnz0zju5juPpPra-z9gRb1_i&&M${RvC^L}g~aMg@w*9a*2KF+5>tlJrh54ClXl zqt!0+e^71A+4cTq04u}Rya%3`zfV7Ac@Pj`xgQ9xh7F~r+ZxM1Ydf_U>|?b~KR6b& zSJIN~>Ff-opr8mWGpu7_U;vefCYH56Vg|X`;{DNowrJNtt~2Cu(laE!tKQb{eaf%9 zd)wjlWBs6e_=!9w?L7cWumI%L@bG{ws>_N5VwNt6E;Vfw)M`v|2+Z_^t6$ncbkv_k z-^;}So{|}DRU?>=ywDK95+9+6(KYsJ{M@TIW^czoILAaDfjX;MMQu73iXLy75=-4QbNl+MelZs zd1C{u)P=r^yLzN|-KW_1liB!D9UMviDlgHtmuCTjl)b+Qo*0a(?)=T z`<)q$Tg0J;Q-G|X+v=l0DC429%|pIy{0(uVI_Y;h>lie7&9?56JZ>zq)A{jsJcw0% z%`5t;j_Dv+GDp`m2Sjip5tKG^d!{B>ROLwls4?ZgRtJDAZ#rl~AWi*55>tbd=9rPU zCZCM{r_m=1J)IYuoCi*x@Z<-y0Q{HQ+jd%s7S`w`u~&43v2~h$@aVHpMgTlp`gh6u zND2TXL5%dHH~>t!2z2MC1Y{v4Ii8`EmL7g=i~lTu<_1lT=Aox9?H{?Dn=>$!P1p^3kSeFR zS;Ys0+jmU0@4)i}&r)WvT``#w3$%Il?+(N!WDIhGIui;y3hZ!TIUA#L{)nZq>m|i? zsk+@LPKq=7cMJfD)sGLUl94lV^8xs`z5obou0(J08_So?yDIQ8N4vXaA(d53*B8(BlJJAw%!m?EK>7d(*e2wC9`1|3(4_s<{ z3#`j7=Ur1uw3u7S$%)e)6YvuRU!>1o>>HVE0%8&XAQ9l??v+!^WOs zT;r?+#Ioy;p5Tzx&td7@{!MrBsMB~GVsI!glBOs74;)(+Hsla3|4~MB`l{O3(+Fr} z8o$bngX5{4mEdk;nZ@?MSeq>{d1#Y=-e1Dt?fPs`8!Enf%0?-0pqUzz(8D47;I%V8 zjyh)Ul8f^qUFZPt{5Q^UB^HB%XTbk={j%5zTkgq==aZCN?%m0^|2Nj~%nkJ{9CR_9 z(SBjAzIpt&h(-+hhwj(Hg1Nc5{X0c#LzA5(%p${^)m1#5Miw5^R<2sPx<%#>RBOF? z;5+*pxY-94DC7@O&v;|(z$z3M) zd$!PUF=5ln7> zZ8KH*K!pE=eX&Aer*~m9WkqkysXc^nCib#~xJK1KGURP4{s}mr$WO5GCgieFM%F^? z2mja6YE2+lBJq$k?*iy_Sh`zVR;+)KwBO| zXjZPC--Oo(esCQ|#R!$2C6#fcePT;{=o6_jxoLC7`O3MF+`7>nnP2WG@)RR6hF`gl z1&w9*WnQ{#6>!yY0HNGS;oz5BBo;yADm7?-D(rQDDm9ktb8HKisK7z{gIT6iy!Von z*~ERv5maOw*}|gy&e-8(W0o1X|Jrx1us>^z;uGa;EaZspf7i+4TOqPDMCFjjfb&?U zJk}6>^0|2*`FQ$Dbl?SB62v)hmi-fN1f~~=T-${n=`hUf?6}Cl6~97BCMNd3Qz_RA zIg^C%&)2y!S_YiCum2afd7rn1bEBTa;wdI{^#QpJ9VK5>W1l_=E&zfwOY(sX$RvJJ zR_|0IX)Vho@*rmqcX5POKn(v(4)bwMxV{@xU92-4gu4M8VndZ#8m1y%yK>Or5;bHs0hr&v3|s9BhBQSi-Xi zerFjXdAHkYnU)_P2xKw(EIDhM_D0lVHd9air;dvB41A#Zcwnp2u8_^vvA(s)|FcE2 z3F%v1qr{KmGJ#V0{8t>NziCmqa$#IUM4W_!-+&EGp4(W}7~;e;-FNp0LMa3hx*fYH zc)seQ6*nUExt1B<<=gO;V!;5H+uEbHF9kKV{R^3i`|7DwBw*i&Ipez63iDV)%j1;g*9zb3G@voU(Kh@J0TKncu3oLhI0G3 zfhCLH(V_0qZ4JNSM9cp+S7!5EX*WC<5!>N2cL!VpJ!W&dg$^I$F@e*e8#s~}yVX}|6JfzVOj&=p zDl^S|Gcy{!O8i3iLOFXQF0IyM-pVWt8Cw75_4?qn_}Ju3nD6>K^$f@{aUrZp(+r6o zu7un=a zl#2$>M7X#S4vMvrp77sKoa}z2Vx_tjK4C3BWy$Sp>pSO;ki*#4uw(qVIL^M(cuj|& zGAEVuy{JBT;N-2#K_7>|NP_jvu%YLM&9miRR!W4m^YuFgR&Qf?(AgX5+xP-%%@)Xk zqY#1w;4@_4XxVh0#Dl*$`VGSDxvdoZv65bvSI-)SR2nnm85USlzZN#t~X| zvR=EM1@~)?*@*o$x86kh^JN`MWMf?O>Zz@KVNrf@R_pYBZ#d_Jc9oh4`c8t7$n4uT zBaZTkdy4Hex)#31W>Th?vo*u{()n6Wo|FWDruvuRmqnr>B1BykO38{vBb~(ZA5O^t z1D>Ser)Cdr<-R;~*`k+%yx~+cQgjOS%2-BU6>^2&>992b#138Yr7j)?tXUi(h&u=5 z!5M0A3)-oBlLzD4vos{pZ`GPwEczvjI7iyDh;8w8+2^~IDN}-XDGsi7w35qHygUd% z)b*g_=Grk%6EkKBU6FxQ>2wEvzeh7mDq2wDgacpw1YUh9D<*S2+|_AuHu^!47~J>v3N=XaLsUR#Xe z{90O^WN=#oD-L45z_^y`$tDFim(v=hNdb|Zlk_ap7^~bEh&?qw`^dnj%V1F=@6J_tdX z=XmPh2~l4U5RuR)cHAn_w(=;iEFjA%m8cO3EE4m_$v+h_%Fj-G>w_fjZOugr&Xw$Q zkjfv$(_yU2d<~_4y<;5Kc`Y(LR__#sB9z`l-mYhaV-f3$7jwc|c#YG2RamSfmbajp z75S(#jM-z?5UWKDZUad}|WnEj>2_zm5`OCue z!;|u{7s;~$qmm_f^Ubc|ATAuB3E`oWo13+4YDhyJ`bXNX(=FCwN*)L1;}BKoJ+4 zl%Oc_@r+8NI>WLxGDsG79T9VAqCDZawGIbLxqcuOmQrYw()}$Wc8CW-*E+5>iDtRR!y>;+<`<_T6gqMylbD9I@3`3& z{$+B;gW>OR=j!-hBPPcIYUoOQDH5iLm1wI)l0;b-Eo%gc5cw1%+c#=l-$(h=msYa*nb90Z-7}NT zzIqn_#zw20=1f6T^;psb!-EhHl^U zwY{we0U)kZK(dXHfj85_wYmVwgiDy;ih3n^iT32JOitSnGdwbl>I7XTLekIWo!YOl^V>ufE zdm9_YOz>n2h};Yh98oAf{ime*y#z2fR|(P1WPg1Uk=M5uDrLaHKnS7u)EV7T!`8TN zzrPtzo@LQ+BDLRP{#{k}4vI_gkaoM28^< z*#P_6QunKX@ATh90+k0i>?x_SCq2~H$b=jwUMlV<4E}QtjcjHTZ3_33gzuR!Gp?Y> zQ~4;D1BjLG?-=3j9ISIhr1k%wB{ z^R*}(`??+=U8ItZLmA&*=@KDMP#v*bXzk~-&!I>@LQa9YuVARo!4n&ClFwN53N-v7{!EOX}1c8)xLfSgPEv`!gQGGri1f zT`Yyw%d&_@*LP|nsy;>p3q~vfX%{=s71`@SOC)F7TkkDl=l;2_A zWVdTWcAJ8<7z)l?dBWxL4!%6SR*R zTzNN#+$^+5w~uznSTjq+pa?TwII)F5z>`>&z@uMmO+K>)3#@-t1WPY1hItts(iBj4 zE+5C@_AN*vVRs;z22UT84#=BQanSc2apfcAFm7@i8AG&>60=G>2^miaJtt=RkMeTu zHG&M#D+GKo(y7Lnt0NxYd$NsRDB^pB-K{$6?-g#(Z=4o1saaFTH{vaBAJCyybH`hspIDjG&w-id#t2RBtP6P9btzktip;P=Rj3`?WB;+x+^+Er_+Vt7LM9SR@muZO%GA1GP=hbB~9s;zpyMinr(1An-cG_G#EWoU7I^foKO~7Db zLSlweWcrFiqK$K0$>D<_gGbVkhb^LY$=OHn1+_COZ!!YVg;u zcc^Y&w!LC5HWK$qp8!vh>T>yZu75XDKyiay8n_a5BJ=AwKY(N$k1@>>{xO`2oJxbz zjL9G<7AIvG*5qyKQZt1$_2o`=yjZ<)$2U{`lRouupYr_Hx;b0t z?4@L^rCw~KzoBJIg^n+~ZD+=&2&eyu&H#?hfN}!n7d8h`Z6HJbRq4h;sB6ka|2U?c z&U(I<++((RED6il=y@>vUqSOt+6o~;seQs$r;j#V>Nl0tr29z1^;o_yM^BiYE3OI+E&1J1L?i$9kXcY+1oCu(x{hkrl?t;u4$r5rd;=9}{ zth4>VOhwz-b+WygNwb%Gtl&KI^|NvA#?aa8NRqAFreTcVq~Zqgyf71`lqX-H4k+_0 z9WFsOUVHL4Taw7cc@*lzV4d$WN$xD1vQXBQu?Cu0WJNRp{X9LGDZr~{@Wt{YqU~LF%D)vh@#INBI z)l?I@B0#MvlyiFIawIO;ag%gGoj&(A4Ti!*<6&2&3)#^x2;zGu5IlyyY*^kj7a#L9 zUzp!+(Uwq=U1U?Kpouh`mq=ZnxOo^$w!U2+E~sI^jcS*3Q0x0@OjyksDuI4U+-*Dl zgZ@~)GT<ha7{K#^tYFe{q?Sn;VlwrG9Bc&Bn}R*8f8bQZp6c~`1*w=(4I zzbkgC5{Hjxf+->jLh;|I_0iEuB)4okD-_do6GDw%V)@eiYWnKI>`;{$x~o*dP;AF| z%r=Z0H&3)p^_?W&dp;pM{i)-r<6QLcTfyiK-gFKU&!Lag=nmDLE@NBg?~Y!K0}DSQ zPu8q>6(?5MgDVs?0tn=6V^IZ8ic4611!B;&4-|6lnqKBKIH&Zz(M~3JvHEd%#dpBd z8n!^do5&U8iRIm$wSQw9UC*q7K{7`+!zDzL4%zZ&HQ14pHBOi>3$it{NGep*V=kWO z)MoZlEB_^?`5iZ*AUUGa6W+);1u#|vF~|u5(RClwMaqcOQA67D~Qga=^#OhYbbt`q&Ig>sVPQ47F0GJqB~a zMgMmQJg<@O^mL($&~0PH6UmBnY;ahU;`9ao21c+gSWv+>3V+Q4+F6gm1=b}rWr#ES zyY;aa8*>^($~QOl%(CHSC8!Hndk6I^hl^%Gt_$&LGWRJIa=l{ss9PiLp)&lc6*Fwt zEmZ+b{uuu6ViF`V+OwjLt1Hx&dU#eySp3qu?30m67Umc9*-|9y26|Uv!tTrMNuO|LE(xWYsQ8*;eQ3 z9S;*7PJkje*Qd0Ne5>{aJT&kg@{m=w)}N`Xt6PBwjXa3)vGwRr62FMZi`Df*&&ixu zMQX3Ry6)2YWb8ERuHv^EfR5`qw~;utjz4U#QFI{t4eaJx=?YY zN*D9dd(iIC5*4aHGLV|-rDt>o^98Dg$T;;?z=Uxv{25WI4lyye`qE1@XRL*vHDZD~ z!0HI#sq%hFke|P{Lw3bO=b&h2k7;6}x}k!DCt{9$JJ>`c*|38MHrOG|8Yd@E?)I5B@WS|Z#{)ysct1zc=%EW+&##YTZM0@FjW;}P7ajX3Bx41xPLF`6XOem)QGd!m|wu!%p#4@k*9i+yynI`S$|!*ZA}iOE)zrGK(tl9Y$u3tan-rn8}n z3VQ5V6%wwm{;RLw=;hB}0w!~3ANHvjzRW%~@Dwm*sf|ntbnTO8HBS1i&T$fxIVEGb z{hPS?M3U;Pn_g6{Vn+G}#A#QL9Ez70N}wbgIhc8`=TI@|>KU05c-x90eyLnSLt!#HhQEQBd{!mM3?E zw;{f7P4d6;<(to+k@tPWtoR{It*F`6C&Yy@X2F2z??X9TC&^5?2|)`HZ6ZFCgfV`E zd|;OkC;@pai28>N?JDrIk$|W@hJD5;dybVeIUcN<8vUs8dH$Wr^F?VELcX>-9{#TU z@QzL29@`eMo=q43W;BmqzK`&Ec+Hw){GDn>cf$$XXYAh7>X`_q$2Ysu*t5jjmrlHi z!3x`wsDr#1D}J{J0k#AY+FuvD+!kNcsQm7t0LOw$J>YbsLKM(oz)<c|P_wF47-`s4BtD$e%Fq)>(1Jy}X9W`Zz1FdJ36k&$`51V<)O`ZlRjP^I{^nimJnq!3Bm###u;va+hSRj%;+^zSHf%$kr;MU=Ip@ z5bo9^BTsAq&Hs?C`te834(N!}eGidDvXXSc$*Q~0r@sQ~xcDhv$7{;a8aoPlb^E78 z-BX-R6yZ1w1}#eD4DV^9@^?&?_CLLbf6$v6nY8p0Wiln2n_zHNLSsQqVhbGqpaMTu zkPj;{o<9ws-ps;ngxp_WN*HrTz#yFXn()>?$(Z>7mmSuwOz1*`^0TE3MzLOS^&H=1 zA+*8{8V8U?s%+x?i1VkSyIxV9ic4{K{U^7+yJ^~!AitZ~*Pk&NRTJI&fp>5`%#ywx zj0SPgk0!hbL(2Q++2)uA9k7}Dnj#4f#b*oK&2xz7ch)dDvn9mFv-A{>iVU?q;TS7X zD=`4GnP!g1oTC*r6QkUpc2KfnsHhML8e+Qm-(mNB7@t@D@&({Ovj?cD-n{RwiiQ>` zivA8H;#hWH7SO=^_n`?JUFub3jRpn7=v}Hg10a{}eahQ87yI5G)#WSL{U1^^Pw5eI z!|m;uO;lMpl`f>kxY24q8?fdB}Cw3#zlTfRO}Rx#t^2A8jNR`$e0y zwV}npB6@1B-}|RmM)R2Oo9F|(b9DaB)8);^%)i;=iGflEyxdOwz0jQ#dJN2ClJmYp z&ZlA-X7CBL7>0XH+;}XE6REnK)Jsz0ud+r*4`IGMtvZzeku4T><&1flg`cgeg#)gM zPw1h~veLFsJeqPx%qzMSZlAkzoYYxO@f6o(QBgyl5u-G7L!I*2!f{m97W5f|dqwES z8H$31>|8V>>CfTJhUM(z&XS6iVEIh`!3PIoK0(FPwgxpC+j)+p)z7U>Kb>4D^cx%` zldz{l@W>{?B=57cGa)9E?cp@_WuRM|of)O(`K{=PYHZbg1a(iAVMY6ggw3_$FWJ3c zN(Xp}>>^I+So3dVfF#ZwD@dEBXycb}3 zK8BIADnQS`dDr&o^(O-Kdjql`G=zl>0>^ER>pej3gvg)a8cO&4f|i&Vj1z@r;BK_8OR|_Ww(-0mGBqZ?;}I5 zi4K=3}y1E}Fz>Z^GXQo|deNMHQ;`YWBEoNUV^qX9vrG^(cyH$`0O zwj^1=u#u=o>!ij3E0b~3SjSt@yO?fcUy`OKMGH0EFGUBkcIy{^Efh8Mgy}Pe7VO)_ zxMNK3I9ReWT}cQrQtN!>Zk6{kx3OZF=J*3HGcII!y(jkOdhSnmOMnV-9SqV!)`Mt? zocO)-n|>kQ?D!WGMIi$Be1z$`Wp3OyGPL}>Y&;xjAC050QYHa#w!ZZ?xF#}=Mrn9l z%CatQ@?|*0qRfbwCOIr`_%2!C`jz14b>z63a}!uAX{7dC1a(jyQ_lCdZvAI+NKI0y zL2`g?JpaG7f2eYlH-H?81o7G{8ab6mv3!R3OyuK1y4vClDK-1K_uP^%-q?NVIZ}IV zkOmmcHPy|&%y@eCQqI({8xQwB-QwTdnc&KlXsn{#?i}p#-Rvh8YKHsWq}o?Pqw$in zi2|sfa%htRq52XL*_*g=a`%JdjQv=uGVF@?KRr5NI!qszyW%wC*eB^VX4|^ zgwe&b2FwE^aui@g`pfI3W=8MN#wP*tB?4nkc}I*VtFd<|HOTUaf%|(2;b;HCZ|nd~qIO%R4o4zp3B3arwL7Q>}J3e`xYDIzMD>kPy}8n|bmk zL^zg!JF)QBdwNQ@-+%Qr@9(zddW-MWx_(EWPSUY(A6Az3P-7c*t%iHG`Z*D_F01GGu?c6RjknhzA;(>D6?=&3}!oq=qjq|rVea;7+<9vG)|BwuKZtdbZ4=2 zBJJ~`V$}EOVTHhal|ihLE`GU(lzOU$|0j10pfsJxJjpi?dp=w4F$2L%A|6LcO3+!R zt?HYpcw76mPLj3jTu2U)$tcCi5UPY{VDxDzp53(hlXzFD?N3GYRKazU-eOS_LAnUp z7X9;$VY%460+!cy8MJ)`@Au#)sH-YH14HzBnHhht9`wRH0__kpck&hm3I8pd1s7hR z?)oma4h53EIT1+xNoV>AP;L80tNXl@Paq!sM1zx)x{=9POvtW*Bn|XsX}M@E^z1aT zt?SXy{2&oDE2686M>mk<2)Cr}SN*m6lXwI~<;6entZV1dG(UgElO0^dkc8u2{M?@s zY{Cei?mw_-2xD|3{1o8&UhYSUf37d!LXnq765rj7jp~^8h2b-~4}t9QXk;_VL0Uam zsx-v4$Y?+a=}B*{*w z-+-*&?XOmvgs~TKx;nvBS*b9_wWAtfbAr>G_c3O?y`fEu``TH5_?^LvWcK@d6h&4; zzE4ULO_7Ixcl8NQ?afaRp0OK14CXRAduA!KG44`wb6Ny%@8tQjdFeM>k5hu%)dDS2 zobnC?*zCGFdO}unxjC~c%f)7&h>}f`J-Ovzu&xV_`raGG^zz+Kc}VsUyanm#%iZa6 z(9Iwu7<0iM)|~&jbrvhQyxoxI5)MbNe5^?gEJY|$EmTcG{XK|wBYbv%>BU+a`?}qX zB150B(>BKQo*ILh54#mZj*gkzC1HC^wosS8V!NF(yyfaqnd?t$^xDXb6k?*0g6bOT~u zPs1UK^2Z-;L9Y6q0xr0`^`=bAoBEFmP*f@qZB|4#n-5gYSM^t7kNRAFmxPR>LWWMo zx3)9Z*Ny;u|7rB8x4+)*QXQfFAY7x@zw(N%F+4*1@C4pz(M)3QTYDBacVN>1_bY=k$)C`x{Q{?i9{{RZ=l(0DU@ zU+}1^{58x;_4`z34k-e$qK}Ppna3*TTwOeBi1H_l_YZ`R*jJDXWrGku4gZBN+u4k) zIJ32W_)20QV`w|_D@v20M&wWe53@ZimJ08bKgHy1YO5b$no_ zk>Rw1tq{}Ai6CDaLJ`=K5V`S#(uCfR44;gx7aL^$_LG$}ocoaY{T7c#3_#EP7k}v6{SvKD_l2I*3fK67PKCC@4JG51SpVRo zg&J%KMM{{!E@gny`6Y1hy4gr`JqR^jSlXIcjR60H_C#6x1uJ2Y8lJ45@)F6Es(SX{%%0# zNE+)8UjzL(Llgy^rl(vIDL08FrVeFVufsMc@-nSJeR}52RH6C|tL{$K&R4pqePHmu zQV@|n6rIpHIT@dvoXol(S*KMZmZ|!Y7mbRu#%Ha?5UifeadeI>asH5JomCiG(T*%} z9{wABd9R$&tO){UO&KZ!5Or!k{Ff3&kQXs;FIkGkT%2$NjVb#H-HC<+S!4R)jQYWk zfx$&a%chO*F4YObk|s;R^z5h|*@MT--r3b}g^syU!=zcX2{6PHy+FM$`MIBmh2gD7 zM%|BZ25DWa26!zQp3{Gikh^q8w;Ac%RdPIvgW%N`cJ{)HtiKr$1TYOEQoL-?P z`5wzF9De?3Tx6R3{6y*oEHma~j8aRkh7~hp z@oIESZPG6(~c3{lr%!#g9J1&rQ9Ddd+lK)CE6o_kS?cX=yBG5V9k_q`V|NS76d>pOnO%pTGP;f<%yc?n+>x)tmqDxon#qh4fb{LSMy`0`nQ(EmW6Aj$t)YQjaT zkT&d9?nPjaT!=XQG}>~|Ng{8MaLkXv6MGU|cEND^GTy%PCXCU35sT>waOhKN&87S~ zE4~Ro?^dM^8RXT9$Tmatc*zM1edbz6mO{Ule%tZbH!9;#)cacPeC6J4_Jm~upV8)) z?aPW`jxaIGnLWJ8S!O~p*c6T{!GMM~k1dXMK{H4{G|tWeLNpF^D(bKdIa1~355ecd zriDl^X3G5~4|51l);xCsNd21pD+y`lrwM8tr~JikADiEy7>f@F%K-RvA=_PbwO8-d zc#r-gQ}X%ta=ub3-ui{DIz-jHs3-TPa6ND$&}2iSPJkub+ziv*_lXUufD@t3juQ2>7vMX5UpkDQGkl!hB!?UFAi7|FY;9XP-snU7&bI6y_Z` zl`8?ldVeGStV17mJHMkwv+0}GaM7+9k!@%f*EZQR6yvy=#{m0sk=q8A0UsS9=_Mwd zlLota>f>i8p+(vLpR?*d?s&ejeCoh*&8se1ggp}Q3?r57!`3ylBE-+D>7Ic&pa%G% zeM}9N`E>HQ{pq36*uOYv2wz+B{in(L3&azkBEbFnqD7JRlM+262g{3BGkMQGzs}5T z$sk$N4~@E0x+!iJSIJT)a{bh#{Fn0ET0?}zIp2)dckkI1Bm$uvR7ICFX3)8HGZc^6 z`!>C?w4*;<`t2s}0(lWOx+J#|Jxey3fT4cVSA*?0tOxd|DwY2%6P(mEF?@(BDRLZ2 zfyhRB&}v`>v<8zzW9?C^l6PyoeEUa!!+iALxZZbHsEYO0E!&29JQ(|kcJ<@Cu34+q ztd|ws+zw>CyEl5Y?t|}Ke)|^E8f_xQi27`~^rupzCvE>mJl23qa2e6_gw=@D`HSj( z!3rgbSRPzOY+ceXLcbHQX@6_Ne=Q@9fseU#>~AOWqqOg$RnG8!C^b@Z-I_Y?e#yWy z1KlvO!W5mDbCadfKW#C)$s?)QO;3rhlbGPB=rSdSxoX6Ss>8@Se$$syA(Ze$}ypoMyIhWi2{nKX-GX1$L?e zRdR#>m}7L&hhH7T9dHh#4dN$!k_g=)o6>iC5_AS7ljWkT+f7ybGr&U zxh3!8O4Y2`HBg#-)6`+Ol4@zVsdw^2$^$-Q?~PEONWF4M*kYKG{kyUeLnUx}zoPhC z8p6iC_6Y>~3jsykM2D3gp&VBaczKWn%jcV|rC^vh0U81RPcas{>nKA$POKo895~!+ za2jmlZJmzQ8f4~}>9lpn_Uw{Xw918&E8BOP#6$^F?h!{WV9;#sf5*@MXkpx0v`oVa z@23aMxGhtMW{SoQnp1 zT{*>YT;q5DMNfD?DI*@@aOmKd`8}ysU@*!+TV+v{`u0;w1xoCe^|dv^Uu^yW#W&u> z%u}%Pp^&`}5fx|+1+kN!_z0>PWwa36-IV-=-ytheq0faL+usjqw-D|8{I^CbfyK;5 z=RtseYF;kA3R0>1_Re7iR1Bi7JAUWq{jb-0yq5!+o@4~Oe^>6JYro)aA=y732<^)c zW%7TbGHpd&cy}Go{ZLpz4qQ$4$92kgQewE@6Yh)GkVm!W2c~T!(c6SheT6QOse#Ic z)rKhhw150=CVGf&;`)kDQDd?=(jji#QtN{2ni3B^2aiR^M%(|V*I>+w_ zPj3%BTKsUfQ8D3o^5bT$GYA(l3Cp-DO}^^HcY+oiA^U)zk~P2+@o}w{jSaKIT$R$G zn!LQorw_yR>s&~_&%!Wz0UV;|#W_|&9ZZvR#upPAT1GahL1NGr5W-LpGF2V~L(dTL zj>4#@|ke}rAP@h%W-q24)Dp@X9mL%MAUPz<*sytHG$oZLHVp&A5=$K_l_CrFm` z0?-Q|bxGSvHLPx5kca2z zSiY!YSML6I5tLOn=q>Y~;o)Ms_PLqytwQ`4z=jlL5I2JPg{I1~&x>bZUzQ48-t1X@ z^nCvGdtx)E#5(b=4SWKLD1jeV8wDi>itUnBSMLVxqwIdfKdbk?8AyOYR!7^BmyIxU zBC2-VxC)WaBbG)8tx>6+C*nj33JU0eM_(0!8ZR*U#g{51JZh7XCHFQ}G++Gor2ZRl z(9i$)o3h&eSY+YMo|S`x!^gepvK%m)fRJ1tBYkMg?g3gx2*?Exh=IF7JITIkhKl9d z;$B4;o8@rF8+@@zSKmM6)ftGI9s5hLTXr+b%Q~TkI{m&1FiNrFsF%WOy^ZPw&PES( zhZ`Y&ixG-?DhwfRm=@xpD8NtKT!(T<_Kh|MaglX=+L=!1PnC@tx)9IMQp-p$EdlaUhpms#YK`G6sCP=%%Ts zj^>tFs|8vHU_sWg>J>9nAY4j9Zk=Yh3QOMMt4)kjHNDq_VC=7Rb1)GFvYOa_XWn1- zIYbTDZm|L7J~Se6DsnU^M1$7@n-81VcFXYXN=iz_RM2CcP1dWfU~A~rHg1pvxVgy` zma=b&ZHDOhxU9J!d=jXqCAtcAXD{Fl>Pz-7G3I?V)NeZ8RR7~EEJf`22RK73xR{b6 znv(mhwccC25a{&Z@{kC0DGE$N(0m{WK4^p>Dt;IJnpE}*0&(-R6CEXNT0xd6|1!D* z;R$hQmMnPjCJJXCM0d%u9dqf^lXvUeq#eU=KbesFg8rx9&B}(8A#wp9nYfGeIfY_q z!&b;+6mEdI==l)asMlKb{xn4|Mox_Lx_RV08@M14oi!75$WsP2Vs)+DK!yW6qM{mC zZIsj&CJLAmbqAxGHEkE=btd^e!QOe(?!keRg2w?ej!KG6iYEXW`do6F|!dzNE9^?c((YGdKOIv@>`R*j{c>bON78x^J?j@xbW z%|9m_k*11HuV20kCm_mXLKak%^tB!H18w}Htp4L&)nEjxFun-}CLdzI;dNvQM|~^% zY@=*r%=Zep^o}<7*f{te^d#f;wFs1fmo}4sii(ObuyI5Up_(c+&CkIYq?NBP1-M=+ z!Ge)y7t!W(U490u^3g0JUi*)*59*eu4m{k^`N<3ngB6TqgRb#!mI|B-!zOjB8 z$;l$Z{QR!5_TGOZ1)uH+EVY%3gGnV^P3&)2@o)LT& z3pIxw35p{)LIC6ipv+Zl?{lZO3m40TzqZQ(D(+H(ejfPMY(G6Gb13iv|L4UA*5gyC zDT^bjZtxna&&1t#x4Q$--akgT-5itO*}ATGpg<98+eHQGyiq;Sg;QAkSvztES~T7v zTRaQ4H;^rXy{tkPmA`7wXDtFfDr3+&ovcZ<^Ze8L6rgRS2?D!~E-c_du9H$qwq~v# z6be{tJJbq8OhAJQkVnWD4!3wC?GRY|-IVd+oc#L&Oi%z-EupUDcbg!JJA}LG0Ja)1 zb7aFBz-0Ku&jX%`J7aKO33;a`Gw^SEMb+VeslONYazbmFQ6@Y*vl;($5*@2WA-ZZv z2*Ac82hCmlGmwGYxa>UDaC;r^ltXl@Z0QRwJUVGZUatjNQLS*=PWZYZw~+bb$e&b2 z?KdUuY5@pO~ls9kJ^o7+W66%eK&Od7D@;&l7bj?T5b0 zHn*Q1X)nEZ-@S$bny)dD7x)MXF#y>oGsTAd2Q2~auiBl&wLIf>+{j-s1-g~xXJycI zd|Ao3TqtJLm)32zLX!}Hs=|i5L4~ZTtgNh!o{}3NHzyy_j}{<8^3wl5@9w@oqeGBP zspI%n`{VGb62*uIv6miM>2k+B^q*U4er}=kr(-6n9RoRokI&zC0`QyjN5x^Go?q?I zT-l4eqPB^9GClZV|2b1Vy}}RPM+Lf<(3>q$f6o4u|LhdFh-~~2D*|m-;DXq73F9xb zmD3*)1&<0NWo==KVS4th{IjK?EhNJ5>|VRFW^Hg7e9~}}P+>#xR2eZ(kZh(GAIEhO zRp_1p+`o9Ki-d@tHw$)lgWxYi{}eXGA8)NZ^A|njP11;L5D`kol!n9O3DQ37a6sRsQRz2 z?*YE&Whn~IOzAt<-W_}*&dqI)jIIwQfrn;wgy^|-Br3Jo@aHR2G#M=+hP^8f!kJdX zyO=(1UqizOKt%WxK2`;%18w1BS=?#L z7({#|E0n>>0Cza2ImSF3N(SE;>FUan_|KsGzhBrHC1|g0snzk|3BKMMc>i&vsN@H+~aBAV1R5LWr4^Adrr%H=z&+Sd)($ zMJa|W6ZP`=y76I(BS83T`;E-d{eO>x6#K}cvqY1)&C@?jP1a%_KR6;@U=T&b3UP@( z+C_)qvbC(#bX|fCEl&#tlr+ReMW|TmxnN=!&qU8B)$2vI!Ma|h}<3Io8QuFu0mgF^Q1?oI8h z=u1y2R}U|*7g1EuC|4E;c9`|M&ocucvL90b2Bd$*6eflV{OrT2O6WgzZjU@O8QdnPLVo{sa7A|6^SAiKbGN8KBTTw4xG!PZ56N

Wn=E}5BqnS=!;w)I}SCVMc4LI2mG!hk@o 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 delta 73477 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 Date: Tue, 11 Jun 2019 19:43:08 -0500 Subject: [PATCH 049/469] god I can't believe I'm matrixing gib overlays. save me PLEASE --- .../objects/effects/decals/cleanable/gibs.dm | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 3f498bcc69..55ad9b4551 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -6,27 +6,27 @@ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") mergeable_decal = FALSE var/gib_overlay = FALSE - var/body_colors = "e3ba84" //a default color just in case. + var/body_colors = "#e3ba84" //a default color just in case. + var/guts_colors = "#4c276d" + var/racial = "c" /obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) . = ..() /obj/effect/decal/cleanable/blood/gibs/update_icon() + var/list/colorlist = list() + colorlist.Cut() + colorlist += ReadRGB("[blood_DNA_to_color()]0") + colorlist += ReadRGB("[guts_colors]0") + colorlist += ReadRGB("[body_colors]0") + colorlist += list(0,0,0, 255) + for(var/index=1, index<=colorlist.len, index++) + colorlist[index] = colorlist[index]/255 cut_overlays() - var/list/guts = list() - var/mutable_appearance/blood = new(icon, "[icon_state]") - blood.appearance_flags |= RESET_COLOR|KEEP_APART - blood.color = blood_DNA_to_color() - guts += blood - var/mutable_appearance/gibz = new(icon, "[icon_state]-guts") - gibz.appearance_flags |= RESET_COLOR|KEEP_APART - guts += gibz - var/mutable_appearance/gibz2 = new(icon, "[icon_state]c-overlay") - gibz2.appearance_flags |= RESET_COLOR|KEEP_APART - gibz2.color = body_colors - guts += gibz2 - - add_overlay(guts) + if(gib_overlay) + var/mutable_appearance/gibs = new(icon, "[icon_state]_[racial]_[gib_overlay]") + gibs.color = colorlist + add_overlay(gibs) /obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) return From 7738c97b80c84161e84fc7998810910b215dc8c8 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 12 Jun 2019 04:33:14 -0500 Subject: [PATCH 050/469] NYEH. fuckin' memes --- .../effects/decals/cleanable/aliens.dm | 10 ++-------- .../objects/effects/decals/cleanable/gibs.dm | 6 +++--- icons/effects/blood.dmi | Bin 90003 -> 101681 bytes icons/effects/blood_to_convert.dmi | Bin 0 -> 30321 bytes 4 files changed, 5 insertions(+), 11 deletions(-) create mode 100644 icons/effects/blood_to_convert.dmi diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 2b9ac1cbe1..43b2765a51 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -10,19 +10,13 @@ /obj/effect/decal/cleanable/blood/gibs/xeno color = BLOOD_COLOR_XENO + guts_colors = BLOOD_COLOR_XENO + racial = "alien" /obj/effect/decal/cleanable/blood/gibs/xeno/Initialize(mapload, list/datum/disease/diseases) . = ..() reagents.add_reagent("liquidxenogibs", 5) -/obj/effect/decal/cleanable/blood/gibs/xeno/update_icon() - if(gib_overlay) - var/icon/blood = new(icon,"[icon_state]",dir) - var/image/gibz = new(icon, icon_state + "x-overlay") - blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY) - gibz.appearance_flags = RESET_COLOR - add_overlay(gibz) - /obj/effect/decal/cleanable/blood/gibs/xeno/streak(list/directions) set waitfor = 0 var/direction = pick(directions) diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 55ad9b4551..f5b87de9b9 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -8,7 +8,7 @@ var/gib_overlay = FALSE var/body_colors = "#e3ba84" //a default color just in case. var/guts_colors = "#4c276d" - var/racial = "c" + var/racial = "carbon" /obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) . = ..() @@ -24,9 +24,9 @@ colorlist[index] = colorlist[index]/255 cut_overlays() if(gib_overlay) - var/mutable_appearance/gibs = new(icon, "[icon_state]_[racial]_[gib_overlay]") + var/image/gibs = image(icon, "[icon_state]_[racial]_[gib_overlay]") gibs.color = colorlist - add_overlay(gibs) + icon_state = gibs /obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) return diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index 09576e9f1be5d1a7f7b99c474da66b28df7cc3af..0ec32d43c94771209463fe93fab5930675755fc3 100644 GIT binary patch literal 101681 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

  • d16 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 * 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�D#|1@h+WeunVAffZaHW$)&|WnG?P$?vs zUh|kB-`QR}g?k-~IQG3%9-`z!wCF7`*)3BhFJB15$lULco>{xJw`H?$y+$AE#8$og z6C}?mBJ}wQ>~nwOLrBPvjv_`D=!5-<>4K(upg~`+yIz~9Xjg|;gfZNtyMM!K1Q*U3 zKaM<8PEHPi+9o?^XC@BU>cGk#b%3alVSSPEufS)9lXsT&^rCva5A)&t;ynX?Wii zS`dOWVF_9nY#bNs83FV}DYJZNb?sE%zBvNE1qRlMNpLgAvN$u zlacU`+7DcO-Dw2US9w&QmkqE(rx{9J?# z&xakUr&*ghR;zhK)5}@QT&&SjRNGtdSaw~KSX<5z1Lsz))X8dhXG;7Vcy>cBMR(6G zXudUMnhU2&_09KxdWT1+xR6|zAxV6%KmpUdJcd6Q4JSR@uea0s*Gq;7dAt8(fy-b2 zPfCB+1Y}-kz7l(UCA1zRYlFWq9SWkttLtHZ(@nKvK`ts#=IyIhJNp3pe9Kt&j0&Df zw?w%01Z2T}yt$tGOYP$fh+NvR)_C!SObo8~;@ynd-EB|`^>v>lR0XJCXkW7{kgCFt^yy`oXW2!^Rh;~qeLnz+3dn4JdL^4m0e&YguiWU zxz0T3{GHu10<=!i)~7j%%FL`0I+oh?UAUS<4^)vRptI4C7&pc%#RJZK3UiS-an_MY zlW*rt+yW-qbU*O>9eHRh_l4PGK2ThS0h-SZ24QgA+Bcb3bDcgt;-Mm6N3Yu|7}qo% z^jMj*!r|g9agNypLmVYT1U2F+?hTAZK?IEOmxxT zzh&uSq#6%@ewbkg7;)@q^#9e>#_E5$zX$-7!-0RZT36$v+2tkln=FP|l{af-Jm?QKsh`{*M#^Gj<;heF@g@xOe^zE-`d`_u=!F6`o*W%b z^*(16F$IOv^3FW*o7?{goH-E$uvmKuWu9!2y?H9^$ersS8C%9CJ7vpWL7+@}b(%up z1Fl{fZ2ZM+Ymt<&l1!EF>B~U)a?m>9`Y(bcR7f_|fO*6R z+vw^`mD9oa$Zf`mGubK=2NCq)Vf=;LJ%T8pS~el&I|k^dxnWR}b0a?qLI7Po{JQ># zf|lZ-WaW4zi4*W+8Q#2k6K9t+J5NcbkbhYd%0$!`-N>{;=s$3%!>74L5UNA0I`2HF z^VxMRwo|X2!nG$ceuKRbriod-{L6XJYU?DGDdjo*FTIAl%hsb_`Y+Ai0!N|j%!8TA za1|t`?K5R5$^wafZ^=n9$ak6!P99JX?}-0iN8r>#ac}@e79IwUc$^YIA+}#`tt>zM zCI(JUmsz6T7rXg-qob7{1Jx7)E-QfB+689*s=j&S7e>tPQgtnNO#Cz*9`h))nyL0v z1|iL;(nL%-o{Rn5l?Qsd9}_`cooLgzEY-LkPwAH6!g(qhzM*Iks(>5!0fE_OSjXnq zK`RN%pBr&^_QG!5to&}=QlBuQyETqjO*(&}bh_Vm>9r?wz#%&YS7II4zKu&} zho7-aQkJ1!l9?@==SZ(!-sA0l+xNval-2+)mtW)6>RZI=`^=*ypFicxs0sAGvSA9_ zMNvk8v7F9hg$GeHFd&0|N|ttZJ$+O@3%OCJK=PVQw^aeBhMJd`2q2!9pv7kV#$yEl z;5dH(lUqTZ%j!l&+na=+HlyhL@5}2%?V2>5^K*$hGNPlL3+HE);E2V_Qqht0`&x89 z3yk7bJrrVjxg{( z7iJ-Fr8w33*Y4jP((o~2&-N?sMb&Sf8P>ud(+-mx6!rv(d$=pJMPDHp?j`yKyAbKe z`Q-V}i(hum?(@}67r*ViV?5&Dq$pVk!5y|rKmE>2>PVIPt4V#rs`8x7*)3JBpUn^e zb%_9j0q?oQ=m$1c23YLsOsu3+aJxD5>yUA;maa~)8SbVE?j|N_ zozRE%D3p!vK*snJ4W46XpS2aT&c@5kmSp#`oWcL^Go#M0UaratMyh)wExkZR+=4fQ z-~MmuzC1bpjMx#AKEQt=q9)}XGIFHg`2{z(W%ZDxB?lu{xGR|Un8dfjvoygxOMR&c z>v+qoW9c6tcUUPq9Z@&} zY2T2_Pqup!I;YHMYv*33xt%uy&qfRr3LqBFZWh%;{D7O+j5;3nT9Z9nl>eVoEnJ;w zVe>3fUb8IgI9!83?QUR^3EmWEaP|yU?T7P_h}vGH#rHEiU+mOXb#zSLta9?Y3eip_#^(yQOAj0zmLU?+pW)smRc@*8KDvzD;0x*iOoYcWCN|rGCN$fL82L=ks^O+jj~j{r|mG z-r-fcWEjwr%1Pfg+KK4dZD6Flm#iXQ!8tC~5wawLGXfy<&?R>ue*CXI{^LXw% z5t{G)>J7?!_$c~3U*wbUJHOZ@Ce;2-FmH4Nrnwko0{|UTH86+*b<-vj*yB~8Y6ff@ z^WSB#JwXTgwDj~yk3pm39(8wbFJRD7fO<>DW|B*Pj^`<(ziTWe$m|>8n3$Nf663>< z*ZOE*zfLZ1UPZsD@L^yZ_hs5?sdQu_Vy}4R6w-iQud_b!B$0cEK)Z+0rCBZPOu0nc zPT1P!^ao4Oj_lzFESv7dCtIIWqr;Iz|RH0)I=5yZcxJNxFPD?ko{tAOCj^wGMU}uU=Nt60Me&)eof~ zZVa{Cj9ByTUmRenkZ9F6I8dWa&9h3gb#kA1)HMy^A_y^^Qa1~6a6>Bxc z97g1^((60=_Ta_`Gza9f6D*TrHC)m-$mtb1&&!vD0j^PAAPN`0JA2#Wxf_?Ce)xC! zo~XTPgJ}Q$z`-bJLrKYsJX=M0`(Wj&_WJA4osY1fgx==hAKh*r%m3;Hq-g2*-m->Xi3o} zQg%Te-*d0ebSg$2-R4#I7$%wJCj=ILyk)d*W&5Ku*-1uDjbpUaEBU=5+E`-96={jG zQFSmSVTm&kG}7W(OuIB06o@t8sh28Cefm)h!Ggpukly-rkQ&g0BZX-nB12@fdQ`fB_Hw9?L~<+S>VN1SQh?9Y_ne1AYQ zxe#H`o5kT)T)D$Eaom^f>r`7}n!I+){u!CgaV2Fk?_5&wmX^(uK@@=q20W9;{RX^a zDUi%K+9}LjU5gR{ko~l17&F)iKVpLZ zrBG!U&b$;c)iP*Kn;G-X)kFP0Qa<=IzPiw>vvSR+d&)KfsT0(6aXp zE5P9VLD@fw`h5Tzei88VK;wqFxj7E|g;$Sfzp4tCa5;_3LFTrzyO$DPF}tqrDxIjp ziCU;t%dzVP>K9YA1f9IkjfsV-c^*>F@ul^dQ!m7t3a6PxZ3Lbs>hBSjdQ=7l#HQsC ze`O4P)S*veeygdtmo=Zd79gaX9n*|1S{*BVCi^5tM$n_f1wTkxiE%P@Hibu2{m47t6v@Uy%3)K z$58#p!^k;#9q))Kuq$V~wCpC>dNcD(TtLbYI56o%?Rj@!-j7Nnap1E9$3$-0F1WBS za(}i7GSGBOju$A8g2KR++VBy}A` zW&9%l^1|o7MyB`m)9lBL(vUN^2dw%olSSBAM}bj{*Wk@1}*5HoU6Z zL0O6vIaH~8%o#%+e?CAE0F|0dt#1ZnGdYalDR?Y#kg+Ml0ZRWWT^W;7kOY+ZO9NIO z2pVH9ep@s?ikD2h`kDKdQ|d4rKIKD2YeQ7zw}A=i%&wq6CV0iX(F3V4(TP#&Csr@0 zu|B?ZlD0Z-i$pjc=M|!l6Woko4CMt;42uA%Ukj(|{$$guBpJqG+$qI}c6}`G- z3*rfKXq3F|qD~J|kiwzSR}=(_YCU~5SF|Fd4$2&z#_yjp68lWU&Yoo|OkDoT`>QuU zFZMXm20n`-KbQ{>Uw)h9^T7|$JdkBFsyFTqhv)hIC^|X%5np-S_`1P!M-EeihEvEF z7*9TC`S?uUIQt9k@15|<4!aqRcAIa2vNqvBV(!<_GeJiZfPe*9$|T$C19gxHkm1?% z=3plB>AJRPw-&t+iyDB!Tyxrnj_4+P)t^Zn7ykWrK70 zZC_0vW(P9Qg^axsE@DH)GL`O95(C}+pLEakK&`h2TbOR3lfVu5i!Q=!C+8@s zct{-nYD8KKD=S-UXw@rQJ8q~W(9uziwKnPuKsE%_@o^6Hp_}9GIMf%GZ*87Lbc&gB zAscqbi=4;MNN~C=Pe0(i$^o4EOQH@Z8TBpqy>VEJ_Q53#L9tl|vFL*Ka6%fGb?=r2(e{!>kNpNA|@~C-7N&0V? zk=YnW7h_tgNJrc4Rw_A{mlBn_iQb?F=;9O8sh;?cd=WxxG6)z|w$SPOHi?yI4%e3M z-rwvvp-_?XGF=Q%nmFX|+K9)%f4eE{TN{`%I=iryy(jTT6Flm^ zW?EK17)y09DQUmq^#cb#qp?^>_R3ewVJJEI$z%|Z`j7p-v`^;#-$Ag9wm^{#s~K_~H1ES>YfQmA5jkZFj##J6hA6rkY<%3`L>7|9h z{`5g{kLSb;CY7S>D&>UA4Z}2{{;77B{dk8GdV)=!U41NgYoaip&h}+X&~a@eShm8F zzS-|O&qZxScQ(TmO;A^3!Xl;p9&+*{{{GgvT==f7g%5_R#)g>-&K2G*@}zG_tv2Zj z6lPnA4EsIKyq{a)79B0cFr&YOF3INZE=LdYPf27Lp(3+(krf89dX4lIm3d)n^thbd zjWY0Bk0M*zSQwVVGO>IHnUNh;)v*$H?eXLQK6tpT?~Dyh_o;W{*)<}b4XADv9?#Sz zuAhmKCPD6#ubgKz@P9+V)IXRbK?!zy%DT><2|~WBEq_Oww%oLGZ6qi29jK8yOI@7> zkHz(ceCmJtAlje>Yy1q>$zEZhKh=>gxL@n$o`qe?kRg`_V&e%v8NvgFO9N2}J{lZ~ z3k`eay#ZML?6Dtoktep#6T!k>xAseOcN|QJ;7kLM>gAPCeQ|$ph z`*NhP5sJuEvoF13$~b&`!|SJ2L65I3wh{E=?s}@_u2dK(N7zlJ{d|N z-hP58q_Si_#w%2{Pyw1S0s6R5P*4oa zG_mwX|5{l=oz*Jz{z8w+5AT+ZqlHE2GA>S?Z%$dZk{qmw<3sbm?O`{NXvP1?_sN`U z0-5YdnOy{;#tA#9mR|CnhhKOh72AB*|NEpwoQ#DX-~i7dCx9uH9+w*)_IvEYXcs*k zERxXRJ3s{j5&_L)e}>D8`?QNhkIBXG zefKITH@xZKGxk!|#hYHZ&yp7hJ3yJu#*D#SIqK)j^ic$QBl=En=k%wP6vNGd5CWI` zE?>G1nfV`s=rTfXqu5GhmiCDmm*-0HpEPwD4EZ(wiBN?61*;a@p7%^e#^$b()jzw2 z&W}g?0vR=6$Nh2X_n>uCw0IhkqkNR+%G5+!SgBiY>+4{GZI)HG?t`(ZEA2L=0GFxt z|IDxJ5c8*{nL$D7{l_{fTw`aBHKR7`bV~{N_dH1TEVlCZVoD#|1B>id@JPx$yI98G z*I1Z|teqYE4M)D|^d)%6{Cng;H`2b&C-DA`tUVsp7V#i2)$p1EBD- zLLK|s%&Ro?+gSyU4&RD$1$8O2+csjXd-;wXFQN`2+`VaY{NEl5faV=sFh}LI@_~D6 z`9Y6OF+L=|atX^43%Gq@M96aaqGIzn%uJ*)9XW1TxH) zdfM!;a5M~;lOkWZp(0Woar%*iGF%0XxBgPsl<;pUmM5jKd}EZWGTlBjS>SGQrllzb zF*^G6=V!s%1BF9<0jG()>}(K_v<3tQ0B-|8R`1P}5ZoLu6~=!>T*FI|L#xG4$v?a2 zsY1Dbs*>oDVtk7T%UXJf-$f9K^j+Srs7)c3z2rjNiFI&#J@|r0qUJC1<0J~gMeKNW@ip8g}t94?Lv3aC4L`H8R!Y7 z44bi!cg{{QHD!l*u|cH&ZLzjAV;87G$rTSOgpyek_|BrtjJ55GG-PgJVCd_*8w zxMGR5=JTrm`E=gF%c+7AO19sBFELDi6%an&hsyFly8_2I`4;L*&~~8 z2xIGqUCwxOmlHkon)jyyBOB@_&~729GH0(Knm$`NrR(PI;Vr*2`-#Q`w75c}hfRjR z>s-Z_5a|&7@DVSSR6YEml^=_)#9|*~t{^*m+-r>}nR(CT<}XBSMB6zV$-pmqK=i{! z;oFIFWPTb}{H-jeSm(iN{(oDW!=ry2mCQA8|D>AZ9tl}SjH+N{d~vg1n(kg{~cT^p8)RX8djqn6;+%fERs-=6pX&a578}DBgVJ9?y>9L zV`YVD5^tZ(t=1hMm6jaXjw@^xy*4HKL-)=KA8_N-_I_-o_Gih#&Z+M^P(^%^#A#tk^_!gy8gTd$aqDQq z!yN0VIU$MNP6%X@ZDTE1d}Y$xAUMsA`0bd&U^B5OMhg>CA4kNH6C&JYjStg5=vxQ;)WnPO$=|xx_Q~K}^#{>W%w?tOcbYG_7&!cSfMNy$9>RH1qeJDk9B z&rUZOHWD{GsIDwsOeZA$OGAtol4 z08(ZG_z0`(*;;)3KCo6kb0dUHni=hXKx=X0tG8m3E#BDQ63n0%fUD^VPx+#1e_Wd! zMSR#L*puLDl`?l{-8=l7$HSC+CteM9d^cFVXGPJM>+mvR`{D26gi*&2*EgnNqWgNr zJ3DLL6U6X32b{o~8Qk&ckZ%XE7Utss!$+#0wzyhSHu5qr<&XL@0<(E(Tv`4ZSH9z9 zZuB#ZaWuh4_P9)l7&($@U+>rGxZ*H;8RRg@mkqbCwJOcVbwfvjGb=~$&O5`0ZE@68 z@D_F^1|36_d*evP%PXj|)LexJ1`SnNV?jgK$QpyXt#f)R`6a&9vaZ0^DnMJnSC+Q+ z<8DD*R%7`0Y9& zs7eSrA=USK!^usxD^-sTiA0}UNwyTFq+5tfKg`W}(w+E7f{04xET8x(>^tg>zJ96K zQzN5ud#YGa4UuEqaI=pI$w&y%^tLg1`BIBsN~LoAq)=`n;8ZzP7=qQIYzeb zk|_aSruRgQ^L|yL+(iAhzpiB|#@4&cK1D(3)6lLy>$64ay|^$C;oG=zYoy`5;F%F% zdy(`Li#JJF5g(a!{W)_jj2ZYN(^p9gi-=o^m%URzHr;1x`{jfLVk*Mv-mB=bT`%BS z?lr10Wlq=U3w@2~lL*1du=rO4V~c|XG8;SUt<))$ZryVbA;(mR6aMMqUfF*Jl4wh( zGIXx$CbxEIzA*+Q5|W05ZwZN~U4+z!T={?yx!8+NT19I%%B?IqcI>bBDcZic_ziOH zU~lTdZgE;|XW1mr6LUzFJ$CSQN@-;3jPETzgKbECPAT5knU#;OXX=;rDX1&i1oQUvF+O5Tvwunwi z^Y3lG1c8AcTDA3Wo#?JlTl{@!Vt9Y9UVph*Bvs{F4Vz2ce~FTiQOR*1G>#WJR=}*t z@1}*#bPknS3(4aoj6dlC{=x230U^D zFeq;(-EmfJ^RnF7Fn3KNvhZ!V=Xip|S#_3&rwLL$O<>LYuvca0NvA^|K!XQa37BLZ zN2W<3@l!7`8nlW{7z*+D$Lu8tbAu9O=%!u?{qR!H-*>uF=^JgbkFvB>wlZG}@k>2H z8O?eaR9ag$y`qX6#u!drN8O^AlMnCRl6kB?I-h9y16z*}hy%^T_?-re?X9ffyO`ss z3OY>MA~HVOXReFx^H(*wI9C)hh;Z7C0VW8+Bw=2Q4;6KgalJn3ZPP23D0QHPdKLf6 zY>n9?0=Y%{Q#5aSB|zX0#)|+eWR_*1>-P@p0OJZ?rGU^sce|cr8T88SCflqjSC$n# zkrmlB;oGF|yOEs9pBxx4ju%1;8>S6=;Pi$)xWIMqM@QV`MgI!Piwa(c6Wzh3keq3n z8@_5hyGLccu(PqTolU2D%j%jf!=KGe5W#{x^}U!jF8N6m3)SpjSsh#@dMw(m@d4|9 zQ{HZ_>u1LrE~frn>FDMTZskHgP8eZ7u8KfhT*^XHKluvMmCuPx_DTK=FGL%BV@w&- zvkXp zsuKrZK!n;nm=XCRip(F$(Ecn8&NefsceQkCKXaqmP6!^)5!8u*q%`rC<6=?By%>M{ ziLn;w;;53y&sG{sheILh5Uf3pi0z{gbl-*K3oE_RCW4D~UdUU=K&W^5j|DTX0}gT3 z$?_j}7Y>B>pKiw7$-|HEbQI5A`9X+&H#^1#6}TdD6pQVAvoX^2N~+ny_^fMq-EXi` zY^0&>b1?kiT3AS_trl~mf^#d;ehB^%Wft{9NPoCzvM&G1yQeoW!?H51+e?&QY`NGq z5(kt?q=y0;Leb8&h)q#O*t|^k7!rSGtdqA)a#?(K;qO^nZinAebWZ8~)K&MRzi@hf z0Ln?)P2@%dF^cB57x#;oc#{C43%YZO$P7jU!nA75jRM$YX>0+-3cBH`u5&EvU>Shj z3uNpCa|@ID@#21j;)P$u#rQ-)%sgkv@@ zLQq6=BmJF+z(dOLKM>WlB2`wgy>D{748=c(eYUS0+VG1#4L?zG3~jTX z!W|D~DgQzyS}KFR^UyA&jw-KOKPX|u-tnt z=k$f9PF2l9d~~Ni_Z}tvJFcP=*aQ(w09l*Rp_kYCi znzI6*w@{VfXu-ShS;utvTWALVETQ)=5E||@AX%_~N>+;!p%(Z=0QrQf${Euyf&3{Q zu3767Q3L(`=C?X31~}L9R2MEc!za!xAT5YDOk~zeO^!smU=0Zn4x~=7kUj<^ed;&+c%z**;v55iiuJ8V&zMx$UWQLX5 zI`zCUNgr#obo*wLFRi{CD_MG}`W#E?>p8L2h9rO@&F9l$h-E94X%UFLb2`6$ z;$cccXt5GC3hu?eJ>A%ieN3BsKkKy6kc(kmva_^R-m zJ_T5q*!wQP0uCoW6j#NXZ)_o#!hF?%{Jb*O30DLFVI9jgy z1ki$%2T@<51%Zd+zh)2nCV(6%L&@j~zj;5&4}`=9vmJ^y5;cJ1TVQYp`SW^IlL}1$sB77Pk%@g?Rzf{dk;&ShQo88m$qW* z>oQ3x^cAmCJ9bZEq|H8KyV;>GLNRz6!-?)VX4BQ6z*{?IEe~Nw!av2Ze~7!pzm%hw zktvg2JB4FPpQ&!-h@JgH8rywha3>pCjm)T;t!tn_6;nWiqRt8sPrYXOgUnxbNY+U< zy916Y#=D`96F66^0R1;?c9uBo1vmm&=~qZ{dOy&Ybf?FDhHB7sxmUqz%#Dw^qJM&? zBLHQ5Z`~(MGK>pWq~(eb4=>i7A8VhB+E-p)-rY;gh>e+9p4!3Y>(|tJz`g@=70q&; zoFvIiylK=yPI0-1?MI%^cC5&mrBOFWGW{tqo(YbH?TO)^3?be#O6#4^t*gUsa{`5L z%>kC63J$3HkCyo~<~KLQtF|@F?*Ya;KI|9$L-FLGqLo5Cb;A(h`#pVk$R90$O+lhz z=SIX7E}Yx0GkF-LwkM}yBTr>m^*r82S$o{Bk?YIS?Y@HXbaD(jE4Y@*zUJe>-r6ys z(g!;TxoSA&*t?~um2;PI+aK6){i73?80m+1g5?Dda`WmtuAGU(QF*=Y)i8)Ve_!os zAw_)>q!qP9}P$y z`yFm^oVHGXx7>|t7?8x+_uYhZyG*^n3B=5FvG!uXp%eb6rexLNfXp%F9KVK|bM4`K zTL^L6o(h#gjV?^Od7QzQzc-!yvyt1z2aa)11Ld$153V9eYZ%xYx3;QE-2O1lM1z(- zYK2&q#dCn}543epje;JSLWxWD3Fd{cS?1L^r->vYvN7Y0Ay(>kcdzC`69W`)b3Ex3kh&yI)zzzr`Ig2`8W71p9-4;J4({x8uYuao-WYY-U=S`1po$*yC&BAya!r#T2~eC@@Aa%TnMne&*l$6 z8Ukxp1f0Vw1V@R|8d8~S>HntcSm;Z_S$$L|kDyA?v6xVR#`XdgSfUn5V~gc0I9N4$ zi1iXvE+APdY=h%5oNw-Db)2kXb+-grw}u;x$*V|9oES%3p=W72Zpdq$O4f!h-Y_gV z&!^a|$a^Z|dcpPi$j z8BVBTohp3A{)DYs1*#~STuMISCZkxRz2Dx0lt6Gg7TziQSlM3ucxdC)+T;iefd)L_A)_~nM;&R-3E}H<2n<))_qJf z+DcX07$2(EP0#O>+yHt8oIv71(k=t$C_&F64FbCnMFdzcq^o?<)aw%CBF2*@C1V)@ zOC~x9*!{Sv>L-E?*6mt~Ird(|p0!7vgP!=9zMp#$$4Uj5#DG%Fj-lZx_Y#Y~s$p5$ zl_A<*rE2Y3_i%B=m|mvN z$e#rcgBDuYeQ_w_7BY6zNa9a8?bqJ3-%2s*2+cJ!%1>vYrFE^adg=J46`FK(lwxd2 z6W9=$&Pla=AAf6$mot>mCNWq8n=tYmx&v95$VK{bULrf>DmeF(zX}t*3cKMX zdF>DPD*@=Z^8wYXkjDLaQF6%az>)jP#dZ7;7t_!%i&A--9EH)$*r+&ITPZ{ieqVqM zM$XiiCW}J>Htw4JGoFSJxVRHgNGGtnHKiB_q@{i7jN1x%RE~3cvf>E~C&wL4`(Kiu z92)vy={x~TRgz7V%(?wJiuXQmEqX4|E#eeJi1`LyB_bqXfjMdCwmFV31#WSy<;znl z;V$YUa^lEbL&v6&{}!2{ln6dd0B02||LD(-gs29OQRDT3%bEnL&six5Iy58*gb~9% zp?*%W!IIRX8pgu-jKL|ygv<{~bBZrsxlYlS)hP^HS9)A?JPSf`7pDY*>d%LkdnYtX z8sNrexV^1*E2>GN3FT*n?O3rLDN^I>C|E`Fw(SlXJknuy?0)6W^H>P=cZ?tK5UmKv zq&!UPewIlyx-kbrbsuiKIU_-oDLfUmk5LS@_ldblPYp%t{ausjgP~+_uQ>d@-9RF9 z*4Q7is=+F_7E{X>Yd8g}L~TCo85X^Momyq>Cw|@-K26v-(w60{f;@cIz-fUeN4&;U zJk8d-MUjI3lkz90w^|62%?Q?RYg?Z+K>p0vsVNm%OAgb6_8CZU>+QHI#nKVi+9$Xx zo5pll7FLEtuga zx0ai-yh59Yf?_Qm(=v)s`24}hw_j*Xw!hCmK~_K=u>SonjJOc4|N1t;{*VMw1}IgG zAJz$ro!vgYnnOPEM+zm4rO5mp{Kxv5F|(^sCt7R4(elyzTkYm%S(JK4I*(7TmEp{o z^(^%QAD_BLsh#xp`R1LOb-2#83d{9@c7@sq^~E<+^WVB^qgt`nPZ}dg8n4A7boFXjB+G77BtU$G2q&w&2wry zsVRy4G3fJA=2|K^Smghc(W3ggD9QMw1YqoVc+0=2z{+cCFU=>RnKEGLJ9v1_aCk6k z|Dgtyl=i*{Td)`)c*vNZc9~b!)GakLJ}yBR=6^w`ZpaGHE&nE&ld8Q!xd3_|7)j73 zcqMQqLdlkj-1(_2UNP}9xNv22MQ9Y`f7>8Sf?AMDZ#?V#RD9FLTdjy}^qcGyW?liJ z7X@Vk0OQ_Owji~9hjsQ>qi^&d6#?P9zxf|CZ=ERFs+F%<0cfZT7Yb?yHB|eWxf;d| zHOGB^wu6h`7bG^1vv0_L(D(K4C$kb0HrkoQD2wv*6Pxp+0&|HzCNFA#Tloe)#zEUg z+U}Bze`E*S(e?SRTsD!S zuTJcZ&J~Q;K!?^(x-h{R9HC|tyMilXwJ?DT$;e;&^V&i_+^ZWzr-FW?X`TxJ@-Haz zfb1{v15QZ?!{tRm#8sk#mPpYB{QSIK1cX3|9Headd8bYn3pS+!NTjrMs^4)W)66R= z9Jk6VR*~ZUyJ@^>a-_EeUvXQj@Bifw(Q;P&7v?Y63}f8-Cvv9b+Z zo-*&7(O}T(r%6Z!{!8re<&#y>@^H)BI{Pc(@x8gAD$9=ku;nIEFEM@#h5vT+YIyy| zvYgxHn-2eUnwoffr%*W8Hw_@;^e_3U2{Tzl?gFlLbpr|Jlf2sUU2B^4DDj=QbtGIp`rqCUQ3Hpk1!5UyZE})Ak zD`t&$S+}?ZickiY!zk3V39L62G7$btjYb*(ED9M@N`JNchr=hk#pQr8rV_VSOmHR39dMv;as%xD$a6?JqS_7sW(7Z$ zl}!4Bd0_T2eyW*)Kdg-l_J(i^&+6xdV4k+F}5*j3YyCr>4Mr$pz;rMwm|ebB|hzXfx*!`AEM02EW!lgfXi&z2I@nD z!l#7os@o45wiv}{&(v7RG%6w}SehB+-sNur24H^ z@W)l8utWh?r6H6rY6CFhFrHsiYsOL2f>a(*y%9hypa?dg=%Isn@b74f-IDQyf9juv zE#OV7&jFgW5*HBj0DvADpD z`F~T_)xmY&CduAcA3WCw zWcLU%E+rZj4K>)t?urmQA%k>9NU;eOPv@iHoJ6@~0tKO}?tW ziX2o<-?o?P%eu|;05Ed~O9RU|p~9gLD+k5c}usCrM1lTs6#86z6*xHEkTjV&Ys`B z`E2wnVZ+PsKo1eg?M_5c3XS8;K^pcYw12AX!yL#JY5~0YeTX{>P)@*BGfI}Zo3gJC zzNI}h$5-lbYpm-Ei`zqSItry{n4}iozVU*1zSY2Q(HF|{$Q_X^2@OnK4?!EJXTVuJ zD)asX(6#=R3!*Cnl}&Lnx(iR1%FP3wdh(Ju2Ttm#^xxhU2Rtx+mISO9+A(GXCBKE5 z=Z%)zM8hSnocCg&`$(au@1fJ}0PAXJu1I#mP~Kg6JBZd30|gPG#?5SY^rMQ(t;vbZ zUtv9+9nM+)$S)(!T4Kgd07ch4<)2;Zc`*iKHn#-Gh?w~VejFa~DoNIqI5u_%8f(wv zMCDL>g&r~Zdg!zV=JeF=u%b67yD_T>!~0l^^iCj%KC=DjRh{%yt%?<9_RoM@ad%ofzMRBx&)^ zDEbVd7^t7qouLiC$zG)aTmP{=K+ecyJL_#WhyFa|bAViqq z`q!+{&r?8=JX&qW16T?v0GR_ATZua=oVNrAMzu^8aIG&KH+RpP^Ea(k*Y9`XIfO8i zes_dA_H5AQvtFF{k)sXwuFj@3AmhcbG}30WEJPk;k4p*jDwX=22!Yn^k|k;krU-V| z4p$HpwuO5VR@L$(L2#S~?TRR%y@PDs>SAPUvMj(ru*;X?zK3lOMQjcFBjrtAwe|cz z?9|b6)f<3GBSil}P&=;zHx+9YRt02^Q<9YsRcj~TMHRkQMl^E;tM|A+hdjZ2-;nOx ziFCC76wYaTM{|4yd-S$St@6!v;Y!c)h)}hMwUBc0d8|N@;Of;Fn_O|+ZX)p|Y6Q9v zHxDnyU9R*c6$`&heiPA$iHoKZ%#`k;cM7n#Hq21a^ux#LiVU(=eOJ2ZS`t`@M(S-y z{Q2Qd{uzK3S6bO?T(7RH997#XJmTL5;j*zsOg#`O>K2iU9i~fd zMwj3AxVd5Xu>km=vhV@H3Cnx}()xXwj$~Fi+LO-82f4D3A`WM;qfb-Vn;xUMvMpw(h6ya!v~C=2XH zO4q5GW2W52#j*pt=}pxd>ML};Lrt7~q~`N8>C+#hB>)-$NCN6$LSdm8zO$wzHJa2h z^Quj6y9>`RhrOYQj%cRxaEizyn5b(eDP_>8blU z5f=Inbb_Q$aWPc%Hsvu*>)+Tbi))b2u}sYUpr{^^?XVZa{?=%l0|KLya5V}Q_TQ2} zzhdr>ZISVa2mKoqc=yo@a{ul042U7K(k^W zlKJ8|Of_x(KqR{pb;_=iGJyc+U*?S?PQ#pKm2$TG|II`hrn~2B;Hv6%;P6!(ADQt_xlCr zEj$(yrieY??=_5zb3m;(FYJao&JeLD8D1=_OlO4G=Jl~NT+pZ639ZS{Z<9y4Z^q%0 z_IaryJ<-DA(D^u$R(X~z)4(`q<;S^AZia=GW`9i>QD-Ca6b;t6P1xpJN6cl(uGa2l z9Pj(U%bdkiI?Albqj4RqLB}oM9ujZF<@=SiuOcg{V`LDXd%&7QLY2GhVrRl^fc}+Z z_TSZ5CxHEKW>Pqv0qz9Uei*UW*Xt&5F<~2kNLFraoK{K)G_nZZ_X)>uhmCh&tC0o< zvyKoYov5nUE5-+?vA8Jd@}yLV(!rOvp2`Jv!Tsdi$OIo}L#kG8vJrpO@Y+4&2%QMA3vY-{cJ1TWUC6RZ~~z zR7_z*0968oyjou#4(VA~eqqJzY6DwfzVbU9$o#2B(Bme%xtUlz2u+sd<45brB%Tu= z3VpS)lB(sYRH3mmPy-}adi~|3yeo);CJnraEsaCula9IaGRrf(a^7?UXu+stg6~eB zWwvTg^2@DpCa9?h(d-)0$zSnzr#zNaUXTjlqpjEK-am*8lNLX|41|)uX1)QOssg>p zN~v~BDO^~S+6Gu+h*Ly5D64gaT=IqPLPTQ816P7R`DYAFGn2Qw%E$`DwJmJXLJ${m znfV~gW~Rn+nfZ6d{g;*#xgB(jFM_AH<~XejPRTJ-=D|{|uH?xv1rj!nOlO6PencrX zU(L5YHJlA*tgA6oJzJL!jB7=Zn!Mkc8ufjor16v9`S&0H1>(r7c&{}mb7{5o`CZ5h z{GvYls^2i$Kypq~F={Y}i=D6~Y?h1fSr?!1uTnkOo#T&%M4MYNW&zpuM)#t${BKPz zXj$&2F^x(20r2|FC;WyLA3a?l4O`^v>Tq!JGIuqs`7TV_raz_-mdlD00koE)&troR z+;}9s;d*D_Jdl%dhf+Lf7;d};D2EMo;sz=_MlJ!F<|tKy0jF--QsUH+GSf?ru?(dm3FKKJ-Cx#;C0^p_j7LX$2NU-cVSCi-}Vt!4-J4V}M& zE{~15_6oIqUxFypd&Y%_Zt-@Un5E=g?Qw| z42#I$em!|F1CXSFUnGNsnrp*IrlmLAMw20jyM6t0rv zzM8YNL!g>r72zIuX&Cs8eK_TFg3082eib(31-oa`rY|&98I1nc11N|j> zC2Q+)5R-$ZS1HZdwex^H0~hJ_->7@hkJLujb1G;|A7D&^=V1j-t7*(^x2#__r9B6r6G0svDB>Qphy3?!d=A?n~|J!0pl z=g|Q9BWF>glqkV}+!uFgH;3nUE4sg^AG#P|58fE!h)~%5+Az*gD9c3hwUu@-(}s-^ zqeFyC`fkL0Vtw~>A>nK#TudVvo!>h*gaR8^;ZMiR*TTbr0pZ&ryB0y70S-8B&Sq^) ziVI(!Eq^4Rz_&Rv*vh|~>DUpKd?xQh0_?;L3l4C7*Mqmc4Wv%C0^?YUChF@qz1HKY z#GQ8EGB1{bDN5`#Fm;@V;HV@q{}q`2p?OV@6NW7=vU`9brhyhK0aA9M0X3n#4gfcG zY9PRxeQ&YOA_! z5==-d(K#a5E-$*~`&p2%`{y#91G$6;J;1yMM0q|z6_TDoqvV#&OXuT%+OpZqu*vkX z*OG8lvf&G$Y$J2SSj09}Z1ahyNSGYIdLVDcoR2Wg^kF=4sad#QY!3HptvXN>WQ79eRQZT9U* z&$Qa?0x?`CuYJf!r*PWu6Ds0nY1_$=<-U9&Nzcg8^#szuzN8B+H7F_yc>;BvULS$+ zSHOq>ejbEu#{Ecpo*Tv*8ngV|*2{ZS^YeES-rg^(FzrBLU>{^qbyl`6jl=8v&+Vmn zW-Z&!2wErb8}P9y>1DxL3G77^9f3Q$c3-Ht{1d)LGfJp_z{A@JBo)?c2uWT@R^TMs zaTo)rhnz7LZGTo{2N$4AgZH7M}#PP}P zBcMHQx!0C6x^?)@jeH3972169Gj`{Gj6iEaF|e?(fCH=NB)tzpBbr2PN2lyY2LbDT zg9-HVrac5&gaecG=5>*Qo%n+5-y7j8i}d>&H2Ah=kk+!#lW$_>&*b2H=i$?l_We za2__-Au&n#l^AIp)Z(%pzN&3|Z0WEz=_V3w5DgXgcenr^SG2;mWIV~K_3K{ab_kKQ+LKo|B4!ZW`WHv~iK1-=wc0 zB=C*-{h8VeWjBg}PLyP}fddSkOED-mE**fMnUjR!Ro#0&7k6+<63;lu>oELH=J2xdz4h&By|HNj$Ietx~OGL zJjy+_2N-sx&hOrOCGN@05(D2Lq-Wi=#X;K5iE7()NAyaL<+!^C)>c!v9U~nRk*Z4p zj9A~~;igu`iEid2BpL6-2*>hA${D54AL^ad3?-^LtTe}d64qu}C z9dBLP7WJaFAbVUp2S9xH&`e{sXr_zbnV7~{d%`3RfaoX(Xhafj@e?aJ$r3`DR0Mub zhJ()X8yx>WxdgaYgfxi%!6CSO9VuV^pj_wq4Bv84lGb!yn)|TLH}JE1=KMcEIS{h| zINuwXr)~rSzYF3rB1wq;_saPNgm(Z1ETC5)*&9i~-~YdtJK=vo{a}*f&yA(f;DI#^ z=o@>zdq*CK|H1Da(bTBS5duHLxBReOruAm*O98?L#O8vaF$2v=N3ndFC5qb+RVXpQ z>OTlqls!Js(XgX)4kqYGd}wspw?(OP=9RhrNIxL94doB^ij`;$5CRp@%6HrVm*Yu! zU+2|M>TUJ|JR*Og%H=a-Ig$M1ggB~ZTRztJuGTG3(#dBwD zPKV`jpBIUl@+94cc)ii|Rz(N?J}_r2D$7cCz)}eK?EG8s(@OOz+n~=Q8j8SkH(;>J zsFUKkW5`%-c9#H%IpBt=sbur#^yeM`^OL+^DS)u zPm*yB;j8+bYyTkhKVxKZy29r3+3p~1O8fuBkzm2uF@V#-q^qsCnbG(8?Nf^Rlko0< zQdj;|K+HQbH$eq%yN&1-qf}ABWP85(Ys2wXs5u-MOyfn`&veDpW7DeRgUW+nQUKXzJOR*gBPUd2Is=~U!Qc(; zQ-!b->b5%9hA&#)NlTo3AsOGLI7 zk;_r~u+DMhJjfjN#r7V92lPo9}^{MFEY^&j$n9$TlMR zPefinJ&#S3mq46==^=>6fldGxsU3DZFdX`qiLs@ajL^q|^+1m{CXLqDz>+Xqg-fS* zz|4TgalR7o`ZQuDyxysP>#mBAW@R+mbD=ey{qh?6P9teE&84|q;;rjL2p z@v%&v@E;Z7(o#L&ZB^Dx??Gozw-EooitlkUz2newS5`d!-vB87J3l+(Y zqXvXjeM*H$L?|9opd!MZ%Q6j&D)20EZ<8eoef3;1%scMlsmW#e4PInXoy{OvK5V3? zU2};1*=!$I5kpC*3mjc0lV``1(MwXB$+?C&*0}uZU9x>-+B{#teb{Jepy8aY*oC~3 zert1MEqHN%!+82Hq!^MJQ(e{(3k$ycynw)LS< zX{!Eaqe$frR>=2bi4;AN(G6q*Bta9kF93Penvhhi-7UN=+e=|e*8Ugzi}7oOknB|s z7%8n(<^)(0rq9lWT+g@ctQXr$RNj|T%3mdvLQ5as^C^fGtfT>HdVqrV3K^Y1HYU41 zQWqeZ4||L%AX4eC%;!}=3>!CtHh+`>yf$FaNoWf$>0s>_j4(sHTk*%@Gr0I6o~(Z) zaNa5)R(+9%^N~7@oMFj;8^$!7}OYdJWugABTZv4OgnT|jobaKQef5EK-A34;pu zy^cyr&{*MZFQ8Somwqa0$E!tJxk{b#T%nK&KaJB>vs_E1Gf1i$GA7yYTg)GC7AR7TZ~E zpd#|Zd!H+pHz>Se78lti{A<}}d*d@9c@rjyzx%oF#+Rd(GWNF@fu^f~b1z)8n#BXQ zy>EG~vI1D%PVtj$E%6t7R=?x?io<{2^R?c#n^0u?0w>etR%INOcHQ-wacb(aKNI5>)^C<= z@!21l%Y5q`@Vu2re^!1jHUD+z1aP0Wy<3k&I+{dHzrV8xld zYQLz_xE*9;GZn!YqZC|NrCu z_vL$gqb+li{2ktll4Z7@rLrf!%%_95Zb9Jp;kRdpy<SM_Ne}6w76_4jwJAK*R9fi!ZmO0)LxKNeJ#1yrD-(I6OKG`nd z=|XkCffqe$DMbJitRh#;T`oOQ=_}&EnreBP-_e`(tIEzkIRhLRJOXSvB)ng29UL^z z={(!a#`+7t6xQY1=dF0FKL3x5L&_@AE*5)W(RbP`&hU!8RrsdpqlHc1;WzW`|KU}u|H{1O`8~3gJcQBgm-Y55q?mTklc`@tH+x_-o zxS+tWb~>ByWrMUc63V7$b{1E;H3=%aJ-GAy`KEZQ50g|GLqHo>o%~&=-{qd+zPHN0G;&N0JsCmWl%J0?ui9+E)DqB?lo#;sT zbw@LJ1JBLl{%Xx--&o`9GIyF+`;`3!7W#|~e}A_#_x<{Eu~!s$nkPepK41OEr427w z8FSyfO=kc4@-jQHdSGI>14<1*k4RpqWnBD=Q46&1_CoN*r<@8CDi+;NIdxk0#=4;pHv3@wa z^I388GQXKsU&`zM+?^Y~E>owePU`kF@8$J6@h!y<^wk>Fjlu zhEX#ijsB1lZlEhJ+)a39m*}=fBlXNJp}7j5?lfLJ_f%w!kgd8W(^HE_54_pqvi`Qe z|8uw@@#W#Xcei)H58rR`qdR}uzwIkuD(A^PoNH70X=CyH`MX6Av|jiqccX)W4ctF? zu@kf(c;RHlz@vSW9XEfrj6Hvj!A&Ap&`uI+KX6wwu;nknpXjY}DNKcqb8HoA_ka|#{tzN7RYUzW)geb5mm<`;*%z@aUeE2`V&a7e+PS(Qp3_#%N L>gTe~DWM4f*8A6B diff --git a/icons/effects/blood_to_convert.dmi b/icons/effects/blood_to_convert.dmi new file mode 100644 index 0000000000000000000000000000000000000000..f1bd5808808ab47977019d92dc4b32944d2f0fdf GIT binary patch literal 30321 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 MhX$I}8un5D2W#Z^od5s; literal 0 HcmV?d00001 From ba3a2c00bbbd581ad5c640e58e9ad6cf919f02ba Mon Sep 17 00:00:00 2001 From: Ghommie Date: Sun, 16 Jun 2019 10:50:59 +0200 Subject: [PATCH 051/469] ports in the Hilbert's Hotel. --- .../SpaceRuins/hilbertshoteltestingsite.dmm | 970 ++++++++++++++++++ _maps/templates/hilbertshotel.dmm | 545 ++++++++++ _maps/templates/hilbertshotelempty.dmm | 289 ++++++ _maps/templates/hilbertshotellore.dmm | 639 ++++++++++++ _maps/templates/hilbertshotelstorage.dmm | 23 + code/controllers/subsystem/mapping.dm | 7 + code/datums/ruins/space.dm | 7 + code/game/objects/items/blueprints.dm | 4 +- .../ruins/spaceruin_code/hilbertshotel.dm | 530 ++++++++++ code/modules/shuttle/supply.dm | 3 +- code/modules/spells/spell_types/summonitem.dm | 4 + config/spaceRuinBlacklist.txt | 1 + icons/mob/actions.dmi | Bin 7123 -> 7504 bytes icons/obj/device.dmi | Bin 43562 -> 44192 bytes icons/obj/items_and_weapons.dmi | Bin 123860 -> 125048 bytes icons/turf/areas.dmi | Bin 37890 -> 38089 bytes icons/turf/space.dmi | Bin 124701 -> 126434 bytes icons/turf/walls.dmi | Bin 54349 -> 56297 bytes sound/ambience/servicebell.ogg | Bin 0 -> 38808 bytes tgstation.dme | 1 + 20 files changed, 3021 insertions(+), 2 deletions(-) create mode 100644 _maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm create mode 100644 _maps/templates/hilbertshotel.dmm create mode 100644 _maps/templates/hilbertshotelempty.dmm create mode 100644 _maps/templates/hilbertshotellore.dmm create mode 100644 _maps/templates/hilbertshotelstorage.dmm create mode 100644 code/modules/ruins/spaceruin_code/hilbertshotel.dm create mode 100644 sound/ambience/servicebell.ogg diff --git a/_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm b/_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm new file mode 100644 index 0000000000..a89d1422d2 --- /dev/null +++ b/_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm @@ -0,0 +1,970 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/space/basic, +/area/template_noop) +"b" = ( +/turf/open/floor/plating/asteroid/airless, +/area/ruin/unpowered/no_grav) +"c" = ( +/turf/closed/wall/r_wall/rust, +/area/ruin/space/has_grav/hilbertresearchfacility) +"d" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/has_grav/hilbertresearchfacility) +"e" = ( +/obj/machinery/porta_turret/syndicate{ + desc = "A ballistic machine gun auto-turret that fires bluespace bullets."; + lethal_projectile = /obj/item/projectile/magic/teleport; + name = "displacement turret"; + stun_projectile = /obj/item/projectile/magic/teleport + }, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"f" = ( +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"g" = ( +/obj/structure/table/glass, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"h" = ( +/obj/structure/table/glass, +/obj/item/stack/sheet/bluespace_crystal{ + amount = 37 + }, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"i" = ( +/obj/structure/table/glass, +/obj/item/bodybag/bluespace, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"j" = ( +/turf/open/floor/plasteel/stairs/left, +/area/ruin/space/has_grav/hilbertresearchfacility) +"k" = ( +/turf/open/floor/plasteel/stairs/medium, +/area/ruin/space/has_grav/hilbertresearchfacility) +"l" = ( +/turf/open/floor/plasteel/stairs/right, +/area/ruin/space/has_grav/hilbertresearchfacility) +"m" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/syringe/bluespace, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"n" = ( +/obj/structure/table/glass, +/obj/item/stock_parts/matter_bin/bluespace, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"o" = ( +/turf/open/floor/plasteel/vaporwave, +/area/ruin/space/has_grav/hilbertresearchfacility) +"p" = ( +/obj/structure/table/glass, +/obj/item/stack/cable_coil/blue, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"q" = ( +/obj/structure/table/glass, +/obj/item/storage/backpack/holding, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"r" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/glass/beaker/bluespace, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"s" = ( +/obj/structure/table/glass, +/obj/item/stock_parts/subspace/crystal, +/obj/item/stock_parts/subspace/transmitter, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"t" = ( +/obj/structure/displaycase{ + start_showpiece_type = /obj/item/hilbertshotel + }, +/turf/open/floor/plasteel/vaporwave, +/area/ruin/space/has_grav/hilbertresearchfacility) +"u" = ( +/obj/structure/table/glass, +/obj/item/analyzer, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"v" = ( +/obj/structure/table/glass, +/obj/item/stock_parts/subspace/amplifier, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"w" = ( +/obj/item/paper/crumpled/docslogs, +/obj/item/pen, +/turf/open/floor/plasteel/vaporwave, +/area/ruin/space/has_grav/hilbertresearchfacility) +"x" = ( +/obj/structure/table/glass, +/obj/item/assembly/signaler, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"y" = ( +/obj/structure/table/glass, +/obj/item/slimecross/industrial/bluespace, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"z" = ( +/obj/machinery/door/airlock/vault{ + name = "secured door"; + req_access = 207 + }, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/plasteel/grimy{ + icon_state = "engine" + }, +/area/ruin/space/has_grav/hilbertresearchfacility) +"A" = ( +/obj/structure/filingcabinet, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hilbertresearchfacility) +"B" = ( +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hilbertresearchfacility) +"C" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hilbertresearchfacility) +"D" = ( +/obj/item/twohanded/required/kirbyplants/random, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hilbertresearchfacility) +"E" = ( +/obj/structure/chair/office, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hilbertresearchfacility) +"F" = ( +/obj/machinery/door/window/eastleft, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hilbertresearchfacility) +"G" = ( +/obj/structure/table/reinforced, +/obj/item/pen, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hilbertresearchfacility) +"H" = ( +/obj/structure/table/reinforced, +/obj/item/paper/crumpled/robertsworkjournal, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hilbertresearchfacility) +"I" = ( +/obj/machinery/door/airlock/highsecurity{ + req_access = 207 + }, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hilbertresearchfacility) +"J" = ( +/turf/closed/mineral/random, +/area/ruin/unpowered/no_grav) +"K" = ( +/turf/open/floor/plasteel/stairs/right{ + initial_gas_mix = "TEMP=2.7" + }, +/area/ruin/unpowered/no_grav) +"U" = ( +/turf/open/floor/plasteel/stairs/medium{ + initial_gas_mix = "TEMP=2.7" + }, +/area/ruin/unpowered/no_grav) +"X" = ( +/turf/open/floor/plasteel/stairs/left{ + initial_gas_mix = "TEMP=2.7" + }, +/area/ruin/unpowered/no_grav) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +a +a +a +a +b +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +J +b +J +b +b +a +b +J +b +b +b +b +a +a +a +a +a +a +a +a +a +a +a +"} +(5,1,1) = {" +a +a +b +J +J +J +b +J +b +J +b +b +J +J +J +b +a +a +a +a +a +a +a +a +a +a +"} +(6,1,1) = {" +a +a +b +c +c +c +c +c +d +d +c +d +d +c +d +d +b +a +a +a +a +a +a +a +a +a +"} +(7,1,1) = {" +a +a +b +d +e +f +f +m +r +g +g +f +f +f +e +c +b +a +a +a +a +a +a +a +a +a +"} +(8,1,1) = {" +a +a +b +d +f +f +f +f +f +f +f +f +f +f +f +d +J +b +b +b +b +b +a +a +a +a +"} +(9,1,1) = {" +a +a +J +d +f +f +f +f +f +f +f +f +f +f +f +c +J +b +b +J +b +b +b +a +a +a +"} +(10,1,1) = {" +a +a +J +c +f +f +f +f +f +f +f +f +f +f +f +c +J +b +J +b +b +J +b +a +a +a +"} +(11,1,1) = {" +a +a +J +c +g +f +f +n +s +v +f +f +f +f +f +c +J +J +J +J +J +J +b +a +a +a +"} +(12,1,1) = {" +a +a +J +c +g +f +j +o +o +o +j +f +f +f +c +d +d +c +c +d +c +J +b +a +a +a +"} +(13,1,1) = {" +a +a +J +c +h +f +k +o +t +o +k +f +f +f +c +A +B +C +B +D +c +J +J +a +a +a +"} +(14,1,1) = {" +a +a +J +c +g +f +l +o +o +w +l +f +f +f +d +B +B +G +B +B +c +J +b +b +a +a +"} +(15,1,1) = {" +a +a +J +c +i +f +f +p +u +x +f +f +f +f +d +B +E +H +B +B +c +J +J +J +a +a +"} +(16,1,1) = {" +a +b +J +c +f +f +f +f +f +f +f +f +f +f +c +B +B +C +B +B +c +b +J +b +a +a +"} +(17,1,1) = {" +a +b +J +d +f +f +f +f +f +f +f +f +f +f +c +C +F +C +B +B +c +b +b +b +a +a +"} +(18,1,1) = {" +a +b +J +d +f +f +f +f +f +f +f +f +f +f +d +B +B +B +B +B +d +b +b +b +b +a +"} +(19,1,1) = {" +a +b +J +d +f +f +f +f +f +f +f +f +f +f +z +B +B +B +B +B +d +b +b +b +b +a +"} +(20,1,1) = {" +a +a +b +c +e +f +g +q +g +y +g +f +e +f +c +B +B +B +B +B +d +b +b +b +b +a +"} +(21,1,1) = {" +a +a +b +c +c +c +c +c +c +d +d +c +c +c +d +B +B +B +B +B +d +X +b +b +b +a +"} +(22,1,1) = {" +a +a +b +b +J +J +b +b +J +J +J +J +J +J +d +D +B +B +B +B +I +U +b +b +b +a +"} +(23,1,1) = {" +a +a +a +b +b +J +J +b +b +b +b +J +b +J +c +d +d +c +d +c +d +K +b +b +b +a +"} +(24,1,1) = {" +a +a +a +a +b +b +J +J +J +b +b +b +b +J +b +b +J +J +J +J +b +b +b +b +b +a +"} +(25,1,1) = {" +a +a +a +a +a +b +b +b +J +J +J +J +b +b +b +b +b +b +a +J +J +J +b +J +b +a +"} +(26,1,1) = {" +a +a +a +a +a +a +a +a +b +b +b +a +b +b +b +b +b +a +a +a +J +J +J +J +J +a +"} +(27,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/_maps/templates/hilbertshotel.dmm b/_maps/templates/hilbertshotel.dmm new file mode 100644 index 0000000000..87fff9e42d --- /dev/null +++ b/_maps/templates/hilbertshotel.dmm @@ -0,0 +1,545 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/space/bluespace, +/area/hilbertshotel) +"b" = ( +/turf/closed/indestructible/hotelwall, +/area/hilbertshotel) +"c" = ( +/obj/machinery/jukebox{ + req_access = null + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"d" = ( +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"e" = ( +/obj/structure/table/wood, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"f" = ( +/obj/structure/table/wood, +/obj/structure/showcase/machinery/tv, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"g" = ( +/obj/structure/dresser, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"h" = ( +/obj/structure/table/wood/fancy, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"i" = ( +/obj/structure/table/wood/fancy, +/obj/structure/mirror{ + pixel_y = 24 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"j" = ( +/obj/structure/table/wood/fancy, +/obj/item/flashlight/lamp/green, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"k" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"l" = ( +/obj/structure/table/wood/poker, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"m" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"n" = ( +/obj/effect/spawner/xmastree, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"o" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"p" = ( +/obj/structure/mineral_door/wood, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"q" = ( +/obj/structure/bed, +/obj/item/bedsheet/random, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"r" = ( +/obj/structure/closet/cabinet{ + anchored = 1 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"s" = ( +/obj/structure/table/wood/fancy, +/obj/item/reagent_containers/food/snacks/grown/poppy, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"t" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"u" = ( +/obj/structure/mineral_door/paperframe, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"v" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 32 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"w" = ( +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"x" = ( +/obj/structure/curtain, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"y" = ( +/obj/machinery/door/window/northleft, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"z" = ( +/obj/structure/table/reinforced, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"A" = ( +/obj/structure/mirror{ + pixel_x = -32 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"B" = ( +/obj/structure/chair/stool/bar, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"C" = ( +/obj/machinery/shower{ + dir = 8 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"D" = ( +/obj/machinery/light_switch{ + pixel_x = 32 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"E" = ( +/obj/structure/table/reinforced, +/obj/item/soap/deluxe, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"F" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"G" = ( +/obj/machinery/light_switch{ + pixel_x = -32 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"H" = ( +/obj/structure/table/reinforced, +/obj/machinery/microwave, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"I" = ( +/turf/closed/indestructible/hoteldoor, +/area/hilbertshotel) +"J" = ( +/obj/machinery/light/small, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"K" = ( +/obj/structure/closet/crate/bin, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"L" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"M" = ( +/obj/structure/table/reinforced, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"N" = ( +/obj/structure/table/reinforced, +/obj/item/soap/deluxe, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"O" = ( +/obj/item/bikehorn/rubberducky, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"P" = ( +/obj/machinery/light/small, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"Q" = ( +/obj/machinery/smartfridge/food, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"R" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"S" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"T" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"U" = ( +/obj/structure/table/reinforced, +/obj/structure/sink/kitchen, +/obj/machinery/light/small, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"V" = ( +/obj/structure/table/reinforced, +/obj/effect/spawner/lootdrop/three_course_meal, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +b +b +b +b +b +I +b +b +b +b +b +b +b +a +"} +(3,1,1) = {" +a +b +d +d +k +d +d +t +d +y +t +H +z +b +a +"} +(4,1,1) = {" +a +b +e +d +l +o +d +d +B +z +d +d +z +b +a +"} +(5,1,1) = {" +a +b +f +d +l +o +d +d +B +V +d +d +U +b +a +"} +(6,1,1) = {" +a +b +e +d +l +o +d +d +B +z +d +d +z +b +a +"} +(7,1,1) = {" +a +b +c +d +m +d +D +K +v +z +M +Q +z +b +a +"} +(8,1,1) = {" +a +b +b +b +b +p +b +b +b +b +b +b +b +b +a +"} +(9,1,1) = {" +a +b +g +d +t +d +G +u +w +A +N +A +E +b +a +"} +(10,1,1) = {" +a +b +h +d +d +d +d +b +w +w +w +w +w +b +a +"} +(11,1,1) = {" +a +b +i +d +n +d +J +b +L +w +R +w +P +b +a +"} +(12,1,1) = {" +a +b +h +d +d +d +r +b +x +F +S +T +x +b +a +"} +(13,1,1) = {" +a +b +d +d +d +d +d +b +w +w +w +w +w +b +a +"} +(14,1,1) = {" +a +b +d +j +q +q +s +b +w +C +O +C +w +b +a +"} +(15,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +a +"} +(16,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/_maps/templates/hilbertshotelempty.dmm b/_maps/templates/hilbertshotelempty.dmm new file mode 100644 index 0000000000..a0482c93ba --- /dev/null +++ b/_maps/templates/hilbertshotelempty.dmm @@ -0,0 +1,289 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/space/bluespace, +/area/hilbertshotel) +"b" = ( +/turf/closed/indestructible/hotelwall, +/area/hilbertshotel) +"c" = ( +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"d" = ( +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"e" = ( +/turf/closed/indestructible/hoteldoor, +/area/hilbertshotel) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +b +b +b +b +b +e +b +b +b +b +b +b +b +a +"} +(3,1,1) = {" +a +b +c +c +c +c +c +c +c +c +c +c +c +b +a +"} +(4,1,1) = {" +a +b +c +c +c +c +c +c +c +c +c +c +c +b +a +"} +(5,1,1) = {" +a +b +c +c +c +c +c +c +c +c +c +c +c +b +a +"} +(6,1,1) = {" +a +b +c +c +c +c +c +c +c +c +c +c +c +b +a +"} +(7,1,1) = {" +a +b +c +c +c +c +c +c +c +c +c +c +c +b +a +"} +(8,1,1) = {" +a +b +b +b +b +c +b +b +b +b +b +b +b +b +a +"} +(9,1,1) = {" +a +b +c +c +c +c +c +c +d +d +d +d +d +b +a +"} +(10,1,1) = {" +a +b +c +c +c +c +c +b +d +d +d +d +d +b +a +"} +(11,1,1) = {" +a +b +c +c +c +c +c +b +d +d +d +d +d +b +a +"} +(12,1,1) = {" +a +b +c +c +c +c +c +b +d +d +d +d +d +b +a +"} +(13,1,1) = {" +a +b +c +c +c +c +c +b +d +d +d +d +d +b +a +"} +(14,1,1) = {" +a +b +c +c +c +c +c +b +d +d +d +d +d +b +a +"} +(15,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +a +"} +(16,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/_maps/templates/hilbertshotellore.dmm b/_maps/templates/hilbertshotellore.dmm new file mode 100644 index 0000000000..f6be66bd06 --- /dev/null +++ b/_maps/templates/hilbertshotellore.dmm @@ -0,0 +1,639 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/open/space/bluespace, +/area/hilbertshotel) +"ab" = ( +/turf/closed/indestructible/hotelwall, +/area/hilbertshotel) +"ac" = ( +/obj/structure/table/wood/fancy, +/obj/structure/mirror{ + broken = 1; + desc = "Oh no, seven years of bad luck!"; + icon_state = "mirror_broke"; + pixel_y = 24 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ad" = ( +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ae" = ( +/obj/structure/table/wood, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"af" = ( +/obj/structure/table/wood, +/obj/structure/showcase/machinery/tv, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ag" = ( +/obj/structure/dresser, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ah" = ( +/obj/structure/table/wood/fancy, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ai" = ( +/obj/structure/table/wood/poker, +/obj/item/toy/cards/deck, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aj" = ( +/obj/structure/table/wood/fancy, +/obj/item/flashlight/lamp/green, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ak" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"al" = ( +/obj/structure/table/wood/poker, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"am" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"an" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ap" = ( +/obj/structure/bed, +/obj/item/bedsheet/random, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aq" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ar" = ( +/obj/structure/mineral_door/wood, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"as" = ( +/turf/closed/indestructible/hoteldoor, +/area/hilbertshotel) +"at" = ( +/obj/effect/decal/cleanable/cobweb, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"au" = ( +/obj/machinery/light_switch{ + pixel_x = -32 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"av" = ( +/obj/machinery/light/small, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aw" = ( +/obj/structure/closet/cabinet{ + anchored = 1 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ax" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"ay" = ( +/obj/structure/closet/crate/bin, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"az" = ( +/obj/structure/mineral_door/paperframe, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aA" = ( +/obj/structure/chair/stool/bar, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aB" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 32 + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aC" = ( +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aD" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aE" = ( +/obj/structure/curtain, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aF" = ( +/obj/machinery/door/window/northleft, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aG" = ( +/obj/structure/table/reinforced, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aH" = ( +/obj/structure/table/reinforced, +/obj/item/pen, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aI" = ( +/obj/structure/mirror{ + pixel_x = -32 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aJ" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aK" = ( +/obj/machinery/shower{ + dir = 8 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aL" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aM" = ( +/obj/structure/table/wood/poker, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aN" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aO" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aP" = ( +/obj/item/bikehorn/rubberducky, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aQ" = ( +/obj/structure/table/reinforced, +/obj/machinery/microwave, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aR" = ( +/obj/machinery/smartfridge/food, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aS" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aT" = ( +/obj/structure/table/reinforced, +/obj/structure/sink/kitchen, +/obj/machinery/light/small, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aU" = ( +/obj/structure/bed, +/obj/item/bedsheet/random, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aV" = ( +/obj/machinery/light/small, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"aW" = ( +/obj/machinery/jukebox{ + req_access = null + }, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aX" = ( +/obj/machinery/light_switch{ + pixel_x = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aY" = ( +/obj/structure/chair/stool/bar, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/vomit, +/obj/effect/mob_spawn/human/doctorhilbert, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"aZ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"ba" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"bb" = ( +/obj/structure/mirror{ + pixel_x = -32 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"bc" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"bd" = ( +/obj/machinery/shower{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"be" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"bf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"bg" = ( +/obj/structure/table/reinforced, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"bh" = ( +/obj/structure/table/reinforced, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/item/soap/homemade{ + name = "used soap" + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"bi" = ( +/obj/effect/decal/cleanable/vomit, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"bj" = ( +/obj/structure/table/reinforced, +/obj/item/soap/homemade{ + name = "used soap" + }, +/turf/open/indestructible/hoteltile, +/area/hilbertshotel) +"bk" = ( +/obj/structure/table/reinforced, +/obj/item/analyzer/hilbertsanalyzer, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) +"bl" = ( +/obj/structure/table/reinforced, +/obj/item/paper/crumpled/bloody/docsdeathnote, +/turf/open/indestructible/hotelwood, +/area/hilbertshotel) + +(1,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(2,1,1) = {" +aa +ab +ab +ab +ab +ab +as +ab +ab +ab +ab +ab +ab +ab +aa +"} +(3,1,1) = {" +aa +ab +at +aL +ak +ad +aL +an +ad +aF +be +aQ +aG +ab +aa +"} +(4,1,1) = {" +aa +ab +ae +ad +al +aq +ad +ad +aA +aH +ad +aL +aG +ab +aa +"} +(5,1,1) = {" +aa +ab +af +ad +ai +aq +aL +ad +aY +bl +ad +aL +aT +ab +aa +"} +(6,1,1) = {" +aa +ab +ae +ad +aM +aq +ad +ad +aA +bk +bf +bf +aG +ab +aa +"} +(7,1,1) = {" +aa +ab +aW +aL +am +ad +aX +ay +aB +aG +bg +aR +aG +ab +aa +"} +(8,1,1) = {" +aa +ab +ab +ab +ab +ar +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(9,1,1) = {" +aa +ab +ag +ad +an +ad +au +az +aC +bb +bh +aI +bj +ab +aa +"} +(10,1,1) = {" +aa +ab +ah +ad +aL +aL +ad +ab +aZ +aZ +aC +aZ +aZ +ab +aa +"} +(11,1,1) = {" +aa +ab +ac +ad +ad +aL +av +ab +aD +aC +aN +bi +aV +ab +aa +"} +(12,1,1) = {" +aa +ab +ah +ad +aL +ad +aw +ab +aE +aJ +aO +aS +aE +ab +aa +"} +(13,1,1) = {" +aa +ab +ad +ad +aL +ad +ad +ab +aC +bc +aZ +aZ +aC +ab +aa +"} +(14,1,1) = {" +aa +ab +ax +aj +ap +aU +ah +ab +ba +bd +aP +aK +aC +ab +aa +"} +(15,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(16,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/_maps/templates/hilbertshotelstorage.dmm b/_maps/templates/hilbertshotelstorage.dmm new file mode 100644 index 0000000000..756e2e5155 --- /dev/null +++ b/_maps/templates/hilbertshotelstorage.dmm @@ -0,0 +1,23 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/indestructible/hotelwall, +/area/hilbertshotelstorage) +"b" = ( +/turf/open/indestructible/hotelwood, +/area/hilbertshotelstorage) + +(1,1,1) = {" +a +a +a +"} +(2,1,1) = {" +a +b +a +"} +(3,1,1) = {" +a +a +a +"} diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index a2c60618ac..e9a1a0e0c6 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -33,6 +33,7 @@ SUBSYSTEM_DEF(mapping) var/list/z_list var/datum/space_level/transit var/datum/space_level/empty_space + var/num_of_res_levels = 1 //dlete dis once #39770 is resolved /datum/controller/subsystem/mapping/proc/HACK_LoadMapConfig() @@ -446,6 +447,11 @@ GLOBAL_LIST_EMPTY(the_station_areas) for(var/i in levels_by_trait(ZTRAIT_RESERVED)) if(reserve.Reserve(width, height, i)) return reserve + //If we didn't return at this point, theres a good chance we ran out of room on the exisiting reserved z levels, so lets try a new one + num_of_res_levels += 1 + var/newReserved = add_new_zlevel("Transit/Reserved [num_of_res_levels]", list(ZTRAIT_RESERVED = TRUE)) + if(reserve.Reserve(width, height, newReserved)) + return reserve else if(!level_trait(z, ZTRAIT_RESERVED)) qdel(reserve) @@ -478,6 +484,7 @@ GLOBAL_LIST_EMPTY(the_station_areas) LAZYINITLIST(unused_turfs["[T.z]"]) unused_turfs["[T.z]"] |= T T.flags_1 |= UNUSED_RESERVATION_TURF_1 + GLOB.areas_by_type[world.area].contents += T CHECK_TICK //DO NOT CALL THIS PROC DIRECTLY, CALL wipe_reservations(). diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm index 058c820f7a..23580ca5d1 100644 --- a/code/datums/ruins/space.dm +++ b/code/datums/ruins/space.dm @@ -281,3 +281,10 @@ suffix = "cloning_facility.dmm" name = "Ancient Cloning Lab" description = "An experimental cloning lab snapped off from an ancient ship. The cloner model inside lacks many modern functionalities and security measures." + + +/datum/map_template/ruin/space/hilbertresearchfacility + id = "hilbert_facility" + suffix = "hilbertshoteltestingsite.dmm" + name = "Hilbert Research Facility" + description = "A research facility of great bluespace discoveries. Long since abandoned, willingly or not..." diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index 699efaac2e..10fbab56be 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -153,7 +153,9 @@ /area/centcom, /area/asteroid, /area/tdome, - /area/wizard_station + /area/wizard_station, + /area/hilbertshotel, + /area/hilbertshotelstorage ) for (var/type in SPECIALS) if ( istype(A,type) ) diff --git a/code/modules/ruins/spaceruin_code/hilbertshotel.dm b/code/modules/ruins/spaceruin_code/hilbertshotel.dm new file mode 100644 index 0000000000..5e6fdc8f89 --- /dev/null +++ b/code/modules/ruins/spaceruin_code/hilbertshotel.dm @@ -0,0 +1,530 @@ +GLOBAL_VAR_INIT(hhStorageTurf, null) +GLOBAL_VAR_INIT(hhmysteryRoomNumber, 1337) + +/obj/item/hilbertshotel + name = "Hilbert's Hotel" + desc = "A sphere of what appears to be an intricate network of bluespace. Observing it in detail seems to give you a headache as you try to comprehend the infinite amount of infinitesimally distinct points on its surface." + icon_state = "hilbertshotel" + w_class = WEIGHT_CLASS_SMALL + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + var/datum/map_template/hilbertshotel/hotelRoomTemp + var/datum/map_template/hilbertshotel/empty/hotelRoomTempEmpty + var/datum/map_template/hilbertshotel/lore/hotelRoomTempLore + var/list/activeRooms = list() + var/list/storedRooms = list() + var/storageTurf + //Lore Stuff + var/ruinSpawned = FALSE + var/mysteryRoom + +/obj/item/hilbertshotel/Initialize() + . = ..() + //Load templates + hotelRoomTemp = new() + hotelRoomTempEmpty = new() + hotelRoomTempLore = new() + var/area/currentArea = get_area(src) + if(currentArea.type == /area/ruin/space/has_grav/hilbertresearchfacility) + ruinSpawned = TRUE + +/obj/item/hilbertshotel/Destroy() + ejectRooms() + return ..() + +/obj/item/hilbertshotel/attack(mob/living/M, mob/living/user) + if(M.mind) + to_chat(user, "You invite [M] to the hotel.") + promptAndCheckIn(M) + else + to_chat(user, "[M] is not intelligent enough to understand how to use this device!") + +/obj/item/hilbertshotel/attack_self(mob/user) + . = ..() + promptAndCheckIn(user) + +/obj/item/hilbertshotel/proc/promptAndCheckIn(mob/user) + var/chosenRoomNumber = input(user, "What number room will you be checking into?", "Room Number") as null|num + if(!chosenRoomNumber) + return + if(chosenRoomNumber > SHORT_REAL_LIMIT) + to_chat(user, "You have to check out the first [SHORT_REAL_LIMIT] rooms before you can go to a higher numbered one!") + return + if((chosenRoomNumber < 1) || (chosenRoomNumber != round(chosenRoomNumber))) + to_chat(user, "That is not a valid room number!") + return + if(ismob(loc)) + if(user == loc) //Not always the same as user + forceMove(get_turf(user)) + if(!storageTurf) //Blame subsystems for not allowing this to be in Initialize + if(!GLOB.hhStorageTurf) + var/datum/map_template/hilbertshotelstorage/storageTemp = new() + var/datum/turf_reservation/storageReservation = SSmapping.RequestBlockReservation(3, 3) + storageTemp.load(locate(storageReservation.bottom_left_coords[1], storageReservation.bottom_left_coords[2], storageReservation.bottom_left_coords[3])) + GLOB.hhStorageTurf = locate(storageReservation.bottom_left_coords[1]+1, storageReservation.bottom_left_coords[2]+1, storageReservation.bottom_left_coords[3]) + else + storageTurf = GLOB.hhStorageTurf + if(tryActiveRoom(chosenRoomNumber, user)) + return + if(tryStoredRoom(chosenRoomNumber, user)) + return + sendToNewRoom(chosenRoomNumber, user) + + +/obj/item/hilbertshotel/proc/tryActiveRoom(var/roomNumber, var/mob/user) + if(activeRooms["[roomNumber]"]) + var/datum/turf_reservation/roomReservation = activeRooms["[roomNumber]"] + do_sparks(3, FALSE, get_turf(user)) + user.forceMove(locate(roomReservation.bottom_left_coords[1] + hotelRoomTemp.landingZoneRelativeX, roomReservation.bottom_left_coords[2] + hotelRoomTemp.landingZoneRelativeY, roomReservation.bottom_left_coords[3])) + return TRUE + else + return FALSE + +/obj/item/hilbertshotel/proc/tryStoredRoom(var/roomNumber, var/mob/user) + if(storedRooms["[roomNumber]"]) + var/datum/turf_reservation/roomReservation = SSmapping.RequestBlockReservation(hotelRoomTemp.width, hotelRoomTemp.height) + hotelRoomTempEmpty.load(locate(roomReservation.bottom_left_coords[1], roomReservation.bottom_left_coords[2], roomReservation.bottom_left_coords[3])) + var/turfNumber = 1 + for(var/i=0, iAs the sphere breaks apart, you're suddenly ejected into the depths of space!") + var/max = world.maxx-TRANSITIONEDGE + var/min = 1+TRANSITIONEDGE + var/list/possible_transtitons = list() + for(var/AZ in SSmapping.z_list) + var/datum/space_level/D = AZ + if (D.linkage == CROSSLINKED) + possible_transtitons += D.z_value + var/_z = pick(possible_transtitons) + var/_x = rand(min,max) + var/_y = rand(min,max) + var/turf/T = locate(_x, _y, _z) + A.forceMove(T) + qdel(room) + + if(storedRooms.len) + for(var/x in storedRooms) + var/list/atomList = storedRooms[x] + for(var/atom/movable/A in atomList) + var/max = world.maxx-TRANSITIONEDGE + var/min = 1+TRANSITIONEDGE + var/list/possible_transtitons = list() + for(var/AZ in SSmapping.z_list) + var/datum/space_level/D = AZ + if (D.linkage == CROSSLINKED) + possible_transtitons += D.z_value + var/_z = pick(possible_transtitons) + var/_x = rand(min,max) + var/_y = rand(min,max) + var/turf/T = locate(_x, _y, _z) + A.forceMove(T) + +//Template Stuff +/datum/map_template/hilbertshotel + name = "Hilbert's Hotel Room" + mappath = '_maps/templates/hilbertshotel.dmm' + var/landingZoneRelativeX = 2 + var/landingZoneRelativeY = 8 + +/datum/map_template/hilbertshotel/empty + name = "Empty Hilbert's Hotel Room" + mappath = '_maps/templates/hilbertshotelempty.dmm' + +/datum/map_template/hilbertshotel/lore + name = "Doctor Hilbert's Deathbed" + mappath = '_maps/templates/hilbertshotellore.dmm' + +/datum/map_template/hilbertshotelstorage + name = "Hilbert's Hotel Storage" + mappath = '_maps/templates/hilbertshotelstorage.dmm' + + +//Turfs and Areas +/turf/closed/indestructible/hotelwall + name = "hotel wall" + desc = "A wall designed to protect the security of the hotel's guests." + icon_state = "hotelwall" + canSmoothWith = list(/turf/closed/indestructible/hotelwall) + explosion_block = INFINITY + +/turf/open/indestructible/hotelwood + desc = "Stylish dark wood with extra reinforcement. Secured firmly to the floor to prevent tampering." + icon_state = "wood" + footstep = FOOTSTEP_WOOD + tiled_dirt = FALSE + +/turf/open/indestructible/hoteltile + desc = "Smooth tile with extra reinforcement. Secured firmly to the floor to prevent tampering." + icon_state = "showroomfloor" + footstep = FOOTSTEP_FLOOR + tiled_dirt = FALSE + +/turf/open/space/bluespace + name = "\proper bluespace hyperzone" + icon_state = "bluespace" + baseturfs = /turf/open/space/bluespace + flags_1 = NOJAUNT_1 + explosion_block = INFINITY + var/obj/item/hilbertshotel/parentSphere + +/turf/open/space/bluespace/Entered(atom/movable/A) + . = ..() + A.forceMove(get_turf(parentSphere)) + do_sparks(3, FALSE, get_turf(A)) + +/turf/closed/indestructible/hoteldoor + name = "Hotel Door" + icon_state = "hoteldoor" + explosion_block = INFINITY + var/obj/item/hilbertshotel/parentSphere + +/turf/closed/indestructible/hoteldoor/proc/promptExit(mob/living/user) + if(!isliving(user)) + return + if(!user.mind) + return + if(!parentSphere) + to_chat(user, "The door seems to be malfunctioning and refuses to operate!") + return + if(alert(user, "Hilbert's Hotel would like to remind you that while we will do everything we can to protect the belongings you leave behind, we make no guarantees of their safety while you're gone, especially that of the health of any living creatures. With that in mind, are you ready to leave?", "Exit", "Leave", "Stay") == "Leave") + if(!user.canmove || (get_dist(get_turf(src), get_turf(user)) > 1)) //no teleporting around if they're dead or moved away during the prompt. + return + user.forceMove(get_turf(parentSphere)) + do_sparks(3, FALSE, get_turf(user)) + +/turf/closed/indestructible/hoteldoor/attack_ghost(mob/dead/observer/user) + if(!isobserver(user) || !parentSphere) + return ..() + user.forceMove(get_turf(parentSphere)) + +//If only this could be simplified... +/turf/closed/indestructible/hoteldoor/attack_tk(mob/user) + return //need to be close. + +/turf/closed/indestructible/hoteldoor/attack_hand(mob/user) + promptExit(user) + +/turf/closed/indestructible/hoteldoor/attack_animal(mob/user) + promptExit(user) + +/turf/closed/indestructible/hoteldoor/attack_paw(mob/user) + promptExit(user) + +/turf/closed/indestructible/hoteldoor/attack_hulk(mob/living/carbon/human/user, does_attack_animation) + promptExit(user) + +/turf/closed/indestructible/hoteldoor/attack_larva(mob/user) + promptExit(user) + +/turf/closed/indestructible/hoteldoor/attack_slime(mob/user) + promptExit(user) + +/turf/closed/indestructible/hoteldoor/attack_robot(mob/user) + if(get_dist(get_turf(src), get_turf(user)) <= 1) + promptExit(user) + +/turf/closed/indestructible/hoteldoor/AltClick(mob/user) + . = ..() + if(get_dist(get_turf(src), get_turf(user)) <= 1) + to_chat(user, "You peak through the door's bluespace peephole...") + user.reset_perspective(parentSphere) + user.set_machine(src) + var/datum/action/peepholeCancel/PHC = new + user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1) + PHC.Grant(user) + +/turf/closed/indestructible/hoteldoor/check_eye(mob/user) + if(get_dist(get_turf(src), get_turf(user)) >= 2) + user.unset_machine() + for(var/datum/action/peepholeCancel/PHC in user.actions) + PHC.Trigger() + +/datum/action/peepholeCancel + name = "Cancel View" + desc = "Stop looking through the bluespace peephole." + button_icon_state = "cancel_peephole" + +/datum/action/peepholeCancel/Trigger() + . = ..() + to_chat(owner, "You move away from the peephole.") + owner.reset_perspective() + owner.clear_fullscreen("remote_view", 0) + qdel(src) + +/area/hilbertshotel + name = "Hilbert's Hotel Room" + icon_state = "hilbertshotel" + requires_power = FALSE + has_gravity = TRUE + noteleport = TRUE + hidden = TRUE + unique = FALSE + dynamic_lighting = DYNAMIC_LIGHTING_FORCED + ambientsounds = list('sound/ambience/servicebell.ogg') + var/roomnumber = 0 + var/obj/item/hilbertshotel/parentSphere + var/datum/turf_reservation/reservation + var/turf/storageTurf + +/area/hilbertshotel/Entered(atom/movable/AM) + . = ..() + if(istype(AM, /obj/item/hilbertshotel)) + relocate(AM) + var/list/obj/item/hilbertshotel/hotels = AM.GetAllContents(/obj/item/hilbertshotel) + for(var/obj/item/hilbertshotel/H in hotels) + if(parentSphere == H) + relocate(H) + +/area/hilbertshotel/proc/relocate(obj/item/hilbertshotel/H) + if(prob(0.135685)) //Because screw you + qdel(H) + return + var/turf/targetturf = find_safe_turf() + if(!targetturf) + if(GLOB.blobstart.len > 0) + targetturf = get_turf(pick(GLOB.blobstart)) + else + CRASH("Unable to find a blobstart landmark") + var/turf/T = get_turf(H) + var/area/A = T.loc + log_game("[H] entered itself. Moving it to [loc_name(targetturf)].") + message_admins("[H] entered itself. Moving it to [ADMIN_VERBOSEJMP(targetturf)].") + for(var/mob/M in A) + to_chat(M, "[H] almost implodes in upon itself, but quickly rebounds, shooting off into a random point in space!") + H.forceMove(targetturf) + +/area/hilbertshotel/Exited(atom/movable/AM) + . = ..() + if(ismob(AM)) + var/mob/M = AM + if(M.mind) + var/stillPopulated = FALSE + var/list/currentLivingMobs = GetAllContents(/mob/living) //Got to catch anyone hiding in anything + for(var/mob/living/L in currentLivingMobs) //Check to see if theres any sentient mobs left. + if(L.mind) + stillPopulated = TRUE + break + if(!stillPopulated) + storeRoom() + +/area/hilbertshotel/proc/storeRoom() + var/roomSize = (reservation.top_right_coords[1]-reservation.bottom_left_coords[1]+1)*(reservation.top_right_coords[2]-reservation.bottom_left_coords[2]+1) + var/storage[roomSize] + var/turfNumber = 1 + var/obj/item/abstracthotelstorage/storageObj = new(storageTurf) + storageObj.roomNumber = roomnumber + storageObj.parentSphere = parentSphere + storageObj.name = "Room [roomnumber] Storage" + for(var/i=0, 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 literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index e33566290c..c660bf93c5 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2608,6 +2608,7 @@ #include "code\modules\ruins\spaceruin_code\crashedship.dm" #include "code\modules\ruins\spaceruin_code\deepstorage.dm" #include "code\modules\ruins\spaceruin_code\DJstation.dm" +#include "code\modules\ruins\spaceruin_code\hilbertshotel.dm" #include "code\modules\ruins\spaceruin_code\listeningstation.dm" #include "code\modules\ruins\spaceruin_code\miracle.dm" #include "code\modules\ruins\spaceruin_code\oldstation.dm" From 5142faa353eec3b940b7fb1baf82f4a6600c199e Mon Sep 17 00:00:00 2001 From: Ghommie Date: Sun, 16 Jun 2019 11:07:16 +0200 Subject: [PATCH 052/469] local xmas tree almost ruins PR. --- _maps/templates/hilbertshotel.dmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_maps/templates/hilbertshotel.dmm b/_maps/templates/hilbertshotel.dmm index 87fff9e42d..4e4d8f8267 100644 --- a/_maps/templates/hilbertshotel.dmm +++ b/_maps/templates/hilbertshotel.dmm @@ -72,7 +72,7 @@ /turf/open/indestructible/hotelwood, /area/hilbertshotel) "n" = ( -/obj/effect/spawner/xmastree, +/obj/effect/landmark/xmastree, /turf/open/indestructible/hotelwood, /area/hilbertshotel) "o" = ( From a2d52c0ed96ea0b86140317f02e130211f9fe2b5 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 9 Jul 2019 07:55:44 -0700 Subject: [PATCH 053/469] HERE WE GO AGAIN. --- code/modules/power/cell.dm | 2 +- code/modules/projectiles/gun.dm | 4 +- icons/obj/guns/energy.dmi | Bin 37146 -> 37205 bytes .../projectiles/guns/ballistic/magweapon.dm | 47 +++++++++--------- .../guns/ballistic/magweapon_energy.dm | 2 + .../projectiles/guns/energy/energy_gun.dm | 7 --- 6 files changed, 30 insertions(+), 32 deletions(-) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 3e93d9f42b..571e0db58d 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -201,7 +201,7 @@ /obj/item/stock_parts/cell/lascarbine name = "laser carbine power supply" - maxcharge = 2500 + maxcharge = 1670 //20 laser shots. /obj/item/stock_parts/cell/pulse //200 pulse shots name = "pulse rifle power cell" diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 98fd774d63..6715f69c4d 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -63,6 +63,8 @@ var/zoom_out_amt = 0 var/datum/action/toggle_scope_zoom/azoom + var/dualwield_spread_mult = 1 //dualwield spread multiplier + /obj/item/gun/Initialize() . = ..() if(pin) @@ -184,7 +186,7 @@ if(G == src || G.weapon_weight >= WEAPON_MEDIUM) continue else if(G.can_trigger_gun(user)) - bonus_spread += 24 * G.weapon_weight + bonus_spread += 24 * G.weapon_weight * G.dualwield_spread_mult loop_counter++ addtimer(CALLBACK(G, /obj/item/gun.proc/process_fire, target, user, TRUE, params, null, bonus_spread), loop_counter) diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi index 4dec4510085793611273b072d561193227868787..bcdb3247159c967796b2658c42d965a51bf84456 100644 GIT binary patch literal 37205 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

    !9J6^m_hOlE9 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 RT$cd|Jb{NAtaD0e0sx|R%s2o5 literal 37146 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 Date: Tue, 9 Jul 2019 08:20:45 -0700 Subject: [PATCH 054/469] smgs --- code/modules/power/cell.dm | 2 +- .../boxes_magazines/external/smg.dm | 8 +++--- code/modules/projectiles/gun.dm | 9 ++++--- .../projectiles/guns/ballistic/automatic.dm | 27 ++++++++++++++----- .../projectiles/projectile/bullets/smg.dm | 6 ++--- .../projectiles/bullets/bullets/smg.dm | 2 +- .../projectiles/guns/ballistic/magweapon.dm | 4 +-- 7 files changed, 37 insertions(+), 21 deletions(-) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 571e0db58d..2d5c9474fe 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -201,7 +201,7 @@ /obj/item/stock_parts/cell/lascarbine name = "laser carbine power supply" - maxcharge = 1670 //20 laser shots. + maxcharge = 1500 //20 laser shots. /obj/item/stock_parts/cell/pulse //200 pulse shots name = "pulse rifle power cell" diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm index 65724e503a..783b8b895b 100644 --- a/code/modules/projectiles/boxes_magazines/external/smg.dm +++ b/code/modules/projectiles/boxes_magazines/external/smg.dm @@ -3,11 +3,11 @@ icon_state = "46x30mmt-20" ammo_type = /obj/item/ammo_casing/c46x30mm caliber = "4.6x30mm" - max_ammo = 20 + max_ammo = 32 /obj/item/ammo_box/magazine/wt550m9/update_icon() ..() - icon_state = "46x30mmt-[round(ammo_count(),4)]" + icon_state = "46x30mmt-[round(20*(ammo_count()/max_ammo),4)]" /obj/item/ammo_box/magazine/wt550m9/wtap name = "wt550 magazine (Armour Piercing 4.6x30mm)" @@ -16,7 +16,7 @@ /obj/item/ammo_box/magazine/wt550m9/wtap/update_icon() ..() - icon_state = "46x30mmtA-[round(ammo_count(),4)]" + icon_state = "46x30mmtA-[round(20*(ammo_count()/max_ammo),4)]" /obj/item/ammo_box/magazine/wt550m9/wtic name = "wt550 magazine (Incendiary 4.6x30mm)" @@ -25,7 +25,7 @@ /obj/item/ammo_box/magazine/wt550m9/wtic/update_icon() ..() - icon_state = "46x30mmtI-[round(ammo_count(),4)]" + icon_state = "46x30mmtI-[round(20*(ammo_count()/max_ammo),4)]" /obj/item/ammo_box/magazine/uzim9mm name = "uzi magazine (9mm)" diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 6715f69c4d..61b2769780 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -34,6 +34,7 @@ var/semicd = 0 //cooldown handler var/weapon_weight = WEAPON_LIGHT var/spread = 0 //Spread induced by the gun itself. + var/burst_spread = 0 //Spread induced by the gun itself during burst fire per iteration. Only checked if spread is 0. var/randomspread = 1 //Set to 0 for shotguns. This is used for weapons that don't fire all their bullets at once. lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' @@ -227,9 +228,9 @@ to_chat(user, " [src] is lethally chambered! You don't want to risk harming anyone...") return if(randomspread) - sprd = round((rand() - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread)) + sprd = round((rand() - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread), 1) else //Smart spread - sprd = round((((rand_spr/burst_size) * iteration) - (0.5 + (rand_spr * 0.25))) * (randomized_gun_spread + randomized_bonus_spread)) + sprd = round((((rand_spr/burst_size) * iteration) - (0.5 + (rand_spr * 0.25))) * (randomized_gun_spread + randomized_bonus_spread), 1) if(!chambered.fire_casing(target, user, params, ,suppressed, zone_override, sprd)) shoot_with_empty_chamber(user) @@ -260,7 +261,9 @@ var/randomized_gun_spread = 0 var/rand_spr = rand() if(spread) - randomized_gun_spread = rand(0,spread) + randomized_gun_spread = rand(0, spread) + else if(burst_size > 1 && burst_spread) + randomized_gun_spread = rand(0, burst_spread) if(HAS_TRAIT(user, TRAIT_POOR_AIM)) //nice shootin' tex bonus_spread += 25 var/randomized_bonus_spread = rand(0, bonus_spread) diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 4bd65a7b20..d7fe080f0b 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -58,12 +58,10 @@ var/mob/living/carbon/human/user = usr select = !select if(!select) - burst_size = 1 - fire_delay = 0 + disable_burst() to_chat(user, "You switch to semi-automatic.") else - burst_size = initial(burst_size) - fire_delay = initial(fire_delay) + enable_burst() to_chat(user, "You switch to [burst_size]-rnd burst.") playsound(user, 'sound/weapons/empty.ogg', 100, 1) @@ -72,6 +70,14 @@ var/datum/action/A = X A.UpdateButtonIcon() +/obj/item/gun/ballistic/automatic/proc/enable_burst() + burst_size = initial(burst_size) + fire_delay = initial(fire_delay) + +/obj/item/gun/ballistic/automatic/proc/disable_burst() + burst_size = 1 + fire_delay = 0 + /obj/item/gun/ballistic/automatic/can_shoot() return get_ammo() @@ -118,14 +124,21 @@ icon_state = "wt550" item_state = "arg" mag_type = /obj/item/ammo_box/magazine/wt550m9 - fire_delay = 2 + fire_delay = 4 can_suppress = FALSE - burst_size = 0 - actions_types = list() + burst_size = 2 can_bayonet = TRUE knife_x_offset = 25 knife_y_offset = 12 +/obj/item/gun/ballistic/automatic/wt550/enable_burst() + . = ..() + spread = 5 + +/obj/item/gun/ballistic/automatic/wt550/disable_burst() + . = ..() + spread = 0 + /obj/item/gun/ballistic/automatic/wt550/update_icon() ..() icon_state = "wt550[magazine ? "-[CEILING(get_ammo(0)/4, 1)*4]" : ""]" diff --git a/code/modules/projectiles/projectile/bullets/smg.dm b/code/modules/projectiles/projectile/bullets/smg.dm index dfc6df537d..1c5158f59a 100644 --- a/code/modules/projectiles/projectile/bullets/smg.dm +++ b/code/modules/projectiles/projectile/bullets/smg.dm @@ -47,14 +47,14 @@ /obj/item/projectile/bullet/c46x30mm name = "4.6x30mm bullet" - damage = 20 + damage = 15 /obj/item/projectile/bullet/c46x30mm_ap name = "4.6x30mm armor-piercing bullet" - damage = 15 + damage = 12.5 armour_penetration = 40 /obj/item/projectile/bullet/incendiary/c46x30mm name = "4.6x30mm incendiary bullet" - damage = 10 + damage = 7.5 fire_stacks = 1 diff --git a/modular_citadel/code/modules/projectiles/bullets/bullets/smg.dm b/modular_citadel/code/modules/projectiles/bullets/bullets/smg.dm index f069a73fe8..75151417d7 100644 --- a/modular_citadel/code/modules/projectiles/bullets/bullets/smg.dm +++ b/modular_citadel/code/modules/projectiles/bullets/bullets/smg.dm @@ -1,4 +1,4 @@ /obj/item/projectile/bullet/c46x30mm_tx name = "toxin tipped 4.6x30mm bullet" - damage = 15 + damage = 10 damage_type = TOX \ No newline at end of file diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index 9ac9862694..2f619ca12d 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -225,7 +225,7 @@ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" projectile_type = /obj/item/projectile/bullet/magrifle - click_cd_override = 3 + click_cooldown_override = 3 delay = 3 /obj/item/ammo_casing/caseless/anlmagm @@ -234,7 +234,7 @@ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" projectile_type = /obj/item/projectile/bullet/nlmagrifle - click_cd_override = 3 + click_cooldown_override = 3 delay = 3 ///magazines/// From 28072a31dc5a63d639375305b0ead2a0f3ac8d8c Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 13 Jul 2019 20:03:39 -0700 Subject: [PATCH 055/469] Update magweapon.dm --- .../code/modules/projectiles/guns/ballistic/magweapon.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index 2f619ca12d..6e1d3507df 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -198,7 +198,7 @@ /obj/item/projectile/bullet/magrifle icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magjectile-large" - damage = 17.5 + damage = 20 armour_penetration = 20 light_range = 3 speed = 0.6 From 0299cb3dcf078e535ee76fa530a484c7a5a13eb8 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 14 Jul 2019 03:55:35 -0700 Subject: [PATCH 056/469] tgfusion --- code/__DEFINES/reactions.dm | 47 ++----- .../atmospherics/gasmixtures/reactions.dm | 124 ++++++++---------- 2 files changed, 62 insertions(+), 109 deletions(-) diff --git a/code/__DEFINES/reactions.dm b/code/__DEFINES/reactions.dm index 1c36120a0c..2688b479b5 100644 --- a/code/__DEFINES/reactions.dm +++ b/code/__DEFINES/reactions.dm @@ -30,41 +30,14 @@ #define STIMULUM_RESEARCH_AMOUNT 50 //Plasma fusion properties #define FUSION_ENERGY_THRESHOLD 3e9 //Amount of energy it takes to start a fusion reaction -#define FUSION_TEMPERATURE_THRESHOLD 1000 //Temperature required to start a fusion reaction #define FUSION_MOLE_THRESHOLD 250 //Mole count required (tritium/plasma) to start a fusion reaction -#define FUSION_RELEASE_ENERGY_SUPER 3e9 //Amount of energy released in the fusion process, super tier -#define FUSION_RELEASE_ENERGY_HIGH 1e9 //Amount of energy released in the fusion process, high tier -#define FUSION_RELEASE_ENERGY_MID 5e8 //Amount of energy released in the fusion process, mid tier -#define FUSION_RELEASE_ENERGY_LOW 1e8 //Amount of energy released in the fusion process, low tier -#define FUSION_MEDIATION_FACTOR 80 //Arbitrary -#define FUSION_SUPER_TIER_THRESHOLD 50 //anything above this is super tier -#define FUSION_HIGH_TIER_THRESHOLD 20 //anything above this and below 50 is high tier -#define FUSION_MID_TIER_THRESHOLD 5 //anything above this and below 20 is mid tier - below this is low tier, but that doesnt need a define -#define FUSION_ENERGY_DIVISOR_SUPER 25 //power_ratio is divided by this during energy calculations -#define FUSION_ENERGY_DIVISOR_HIGH 20 -#define FUSION_ENERGY_DIVISOR_MID 10 -#define FUSION_ENERGY_DIVISOR_LOW 2 -#define FUSION_GAS_CREATION_FACTOR_TRITIUM 0.40 //trit - one gas rather than two, so think about that when calculating stuff - 40% in total -#define FUSION_GAS_CREATION_FACTOR_STIM 0.05 //stim percentage creation from high tier - 5%, 60% in total with pluox -#define FUSION_GAS_CREATION_FACTOR_PLUOX 0.55 //pluox percentage creation from high tier - 55%, 60% in total with stim -#define FUSION_GAS_CREATION_FACTOR_NITRYL 0.20 //nitryl and N2O - 80% in total -#define FUSION_GAS_CREATION_FACTOR_N2O 0.60 //nitryl and N2O - 80% in total -#define FUSION_GAS_CREATION_FACTOR_BZ 0.05 //BZ - 5% - 90% in total with CO2 -#define FUSION_GAS_CREATION_FACTOR_CO2 0.85 //CO2 - 85% - 90% in total with BZ -#define FUSION_MID_TIER_RAD_PROB_FACTOR 2 //probability of radpulse is power ratio * this for whatever tier -#define FUSION_LOW_TIER_RAD_PROB_FACTOR 5 -#define FUSION_EFFICIENCY_BASE 60 //used in the fusion efficiency calculations -#define FUSION_EFFICIENCY_DIVISOR 0.6 //ditto -#define FUSION_RADIATION_FACTOR 15000 //horizontal asymptote -#define FUSION_RADIATION_CONSTANT 30 //equation is form of (ax) / (x + b), where a = radiation factor and b = radiation constant and x = power ratio (https://www.desmos.com/calculator/4i1f296phl) -#define FUSION_ZAP_POWER_ASYMPTOTE 50000 //maximum value - not enough to instacrit but it'll still hurt like shit -#define FUSION_ZAP_POWER_CONSTANT 75 //equation is of from [ax / (x + b)] + c, where a = zap power asymptote, b = zap power constant, c = zap power base and x = power ratio -#define FUSION_ZAP_POWER_BASE 1000 //(https://www.desmos.com/calculator/vvbmhf4unm) -#define FUSION_ZAP_RANGE_SUPER 9 //range of the tesla zaps that occur from fusion -#define FUSION_ZAP_RANGE_HIGH 7 -#define FUSION_ZAP_RANGE_MID 5 -#define FUSION_ZAP_RANGE_LOW 3 -#define FUSION_PARTICLE_FACTOR_SUPER 4 //# of particles fired out is equal to rand(3,6) * this for whatever tier -#define FUSION_PARTICLE_FACTOR_HIGH 3 -#define FUSION_PARTICLE_FACTOR_MID 2 -#define FUSION_PARTICLE_FACTOR_LOW 1 +#define FUSION_TRITIUM_CONVERSION_COEFFICIENT (1e-10) +#define INSTABILITY_GAS_POWER_FACTOR 0.003 +#define FUSION_TRITIUM_MOLES_USED 1 +#define PLASMA_BINDING_ENERGY 20000000 +#define TOROID_VOLUME_BREAKEVEN 1000 +#define FUSION_TEMPERATURE_THRESHOLD 10000 +#define PARTICLE_CHANCE_CONSTANT (-20000000) +#define FUSION_RAD_MAX 2000 +#define FUSION_RAD_COEFFICIENT (-1000) +#define FUSION_INSTABILITY_ENDOTHERMALITY 2 diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index ef0a422079..af4549efa7 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -193,9 +193,9 @@ return cached_results["fire"] ? REACTING : NO_REACTION -//fusion: a terrible idea that was fun but broken. Now reworked to be less broken and more interesting. Again (and again, and again) +//fusion: a terrible idea that was fun but broken. Now reworked to be less broken and more interesting. Again (and again, and again). Again! //Fusion Rework Counter: Please increment this if you make a major overhaul to this system again. -//5 reworks +//6 reworks /datum/gas_reaction/fusion exclude = FALSE @@ -203,100 +203,80 @@ name = "Plasmic Fusion" id = "fusion" -//Since fusion isn't really intended to happen in successive chains, the requirements are very high /datum/gas_reaction/fusion/init_reqs() min_requirements = list( "TEMP" = FUSION_TEMPERATURE_THRESHOLD, - "ENER" = FUSION_ENERGY_THRESHOLD, + /datum/gas/tritium = FUSION_TRITIUM_MOLES_USED, /datum/gas/plasma = FUSION_MOLE_THRESHOLD, - /datum/gas/tritium = FUSION_MOLE_THRESHOLD - ) + /datum/gas/carbon_dioxide = FUSION_MOLE_THRESHOLD) /datum/gas_reaction/fusion/react(datum/gas_mixture/air, datum/holder) var/list/cached_gases = air.gases - var/temperature = air.temperature - if(!air.analyzer_results) - air.analyzer_results = new - var/list/cached_scan_results = air.analyzer_results var/turf/open/location if (istype(holder,/datum/pipeline)) //Find the tile the reaction is occuring on, or a random part of the network if it's a pipenet. var/datum/pipeline/fusion_pipenet = holder location = get_turf(pick(fusion_pipenet.members)) else location = get_turf(holder) - + if(!air.analyzer_results) + air.analyzer_results = new + var/list/cached_scan_results = air.analyzer_results var/old_heat_capacity = air.heat_capacity() - var/reaction_energy = 0 - - var/mediation = FUSION_MEDIATION_FACTOR*(air.heat_capacity()-(cached_gases[/datum/gas/plasma]*GLOB.meta_gas_specific_heats[/datum/gas/plasma]))/(air.total_moles()-cached_gases[/datum/gas/plasma]) //This is the average specific heat of the mixture,not including plasma. - - var/gases_fused = air.total_moles() - cached_gases[/datum/gas/plasma] - var/plasma_differential = (cached_gases[/datum/gas/plasma] - gases_fused) / air.total_moles() - var/reaction_efficiency = FUSION_EFFICIENCY_BASE ** -((plasma_differential ** 2) / FUSION_EFFICIENCY_DIVISOR) //https://www.desmos.com/calculator/6jjx3vdrvx - + var/reaction_energy = 0 //Reaction energy can be negative or positive, for both exothermic and endothermic reactions. + var/initial_plasma = cached_gases[/datum/gas/plasma][MOLES] + var/initial_carbon = cached_gases[/datum/gas/carbon_dioxide][MOLES] + var/scale_factor = (air.volume)/(PI) //We scale it down by volume/Pi because for fusion conditions, moles roughly = 2*volume, but we want it to be based off something constant between reactions. + var/toroidal_size = (2*PI)+TORADIANS(arctan((air.volume-TOROID_VOLUME_BREAKEVEN)/TOROID_VOLUME_BREAKEVEN)) //The size of the phase space hypertorus var/gas_power = 0 for (var/gas_id in cached_gases) - gas_power += reaction_efficiency * (GLOB.meta_gas_fusions[gas_id]*cached_gases[gas_id]) + gas_power += (cached_gases[gas_id][GAS_META][META_GAS_FUSION_POWER]*cached_gases[gas_id][MOLES]) + var/instability = MODULUS((gas_power*INSTABILITY_GAS_POWER_FACTOR)**2,toroidal_size) //Instability effects how chaotic the behavior of the reaction is + cached_scan_results[id] = instability//used for analyzer feedback - var/power_ratio = gas_power/mediation - cached_scan_results[id] = power_ratio //used for analyzer feedback + var/plasma = (initial_plasma-FUSION_MOLE_THRESHOLD)/(scale_factor) //We have to scale the amounts of carbon and plasma down a significant amount in order to show the chaotic dynamics we want + var/carbon = (initial_carbon-FUSION_MOLE_THRESHOLD)/(scale_factor) //We also subtract out the threshold amount to make it harder for fusion to burn itself out. - for (var/gas_id in cached_gases) //and now we fuse - cached_gases[gas_id] = 0 + //The reaction is a specific form of the Kicked Rotator system, which displays chaotic behavior and can be used to model particle interactions. + plasma = MODULUS(plasma - (instability*sin(TODEGREES(carbon))), toroidal_size) + carbon = MODULUS(carbon - plasma, toroidal_size) - var/radiation_power = (FUSION_RADIATION_FACTOR * power_ratio) / (power_ratio + FUSION_RADIATION_CONSTANT) //https://www.desmos.com/calculator/4i1f296phl - var/zap_power = ((FUSION_ZAP_POWER_ASYMPTOTE * power_ratio) / (power_ratio + FUSION_ZAP_POWER_CONSTANT)) + FUSION_ZAP_POWER_BASE //https://www.desmos.com/calculator/n0zkdpxnrr - var/do_explosion = FALSE - var/zap_range //these ones are set later - var/fusion_prepare_to_die_edition_rng - if (power_ratio > FUSION_SUPER_TIER_THRESHOLD) //power ratio 50+: SUPER TIER. The gases become so energized that they fuse into a ton of tritium, which is pretty nice! Until you consider the fact that everything just exploded, the canister is probably going to break and you're irradiated. - reaction_energy += gases_fused * FUSION_RELEASE_ENERGY_SUPER * (power_ratio / FUSION_ENERGY_DIVISOR_SUPER) - cached_gases[/datum/gas/tritium] += gases_fused * FUSION_GAS_CREATION_FACTOR_TRITIUM //60% of the gas is converted to energy, 40% to trit - fusion_prepare_to_die_edition_rng = 100 //Wait a minute.. - do_explosion = TRUE - zap_range = FUSION_ZAP_RANGE_SUPER + cached_gases[/datum/gas/plasma][MOLES] = plasma*scale_factor + FUSION_MOLE_THRESHOLD //Scales the gases back up + cached_gases[/datum/gas/carbon_dioxide][MOLES] = carbon*scale_factor + FUSION_MOLE_THRESHOLD + var/delta_plasma = initial_plasma - cached_gases[/datum/gas/plasma][MOLES] - else if (power_ratio > FUSION_HIGH_TIER_THRESHOLD) //power ratio 20-50; High tier. The reaction is so energized that it fuses into a small amount of stimulum, and some pluoxium. Very dangerous, but super cool and super useful. - reaction_energy += gases_fused * FUSION_RELEASE_ENERGY_HIGH * (power_ratio / FUSION_ENERGY_DIVISOR_HIGH) - cached_gases[/datum/gas/stimulum] += gases_fused * FUSION_GAS_CREATION_FACTOR_STIM //40% of the gas is converted to energy, 60% to stim and pluox - cached_gases[/datum/gas/pluoxium] += gases_fused * FUSION_GAS_CREATION_FACTOR_PLUOX - fusion_prepare_to_die_edition_rng = power_ratio //Now we're getting into dangerous territory - do_explosion = TRUE - zap_range = FUSION_ZAP_RANGE_HIGH - - else if (power_ratio > FUSION_MID_TIER_THRESHOLD) //power_ratio 5 to 20; Mediation is overpowered, fusion reaction starts to break down. - reaction_energy += gases_fused * FUSION_RELEASE_ENERGY_MID * (power_ratio / FUSION_ENERGY_DIVISOR_MID) - cached_gases[/datum/gas/nitryl] += gases_fused * FUSION_GAS_CREATION_FACTOR_NITRYL //20% of the gas is converted to energy, 80% to nitryl and N2O - cached_gases[/datum/gas/nitrous_oxide] += gases_fused * FUSION_GAS_CREATION_FACTOR_N2O - fusion_prepare_to_die_edition_rng = power_ratio * FUSION_MID_TIER_RAD_PROB_FACTOR //Still unlikely, but don't stand next to the reaction unprotected - zap_range = FUSION_ZAP_RANGE_MID - - else //power ratio 0 to 5; Gas power is overpowered. Fusion isn't nearly as powerful. - reaction_energy += gases_fused * FUSION_RELEASE_ENERGY_LOW * (power_ratio / FUSION_ENERGY_DIVISOR_LOW) - cached_gases[/datum/gas/bz] += gases_fused * FUSION_GAS_CREATION_FACTOR_BZ //10% of the gas is converted to energy, 90% to BZ and CO2 - cached_gases[/datum/gas/carbon_dioxide] += gases_fused * FUSION_GAS_CREATION_FACTOR_CO2 - fusion_prepare_to_die_edition_rng = power_ratio * FUSION_LOW_TIER_RAD_PROB_FACTOR //Low, but still something to look out for - zap_range = FUSION_ZAP_RANGE_LOW - - //All the deadly consequences of fusion, consolidated for your viewing pleasure - if (location) - if(prob(fusion_prepare_to_die_edition_rng)) //Some.. permanent effects - if(do_explosion) - explosion(location, 0, 0, 5, power_ratio, TRUE, TRUE) //large shockwave, the actual radius is quite small - people will recognize that you're doing fusion - radiation_pulse(location, radiation_power) //You mean causing a super-tier fusion reaction in the halls is a bad idea? - SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, 30000)//The science is cool though. - playsound(location, 'sound/effects/supermatter.ogg', 100, 0) - else - playsound(location, 'sound/effects/phasein.ogg', 75, 0) - //These will always happen, so be prepared - tesla_zap(location, zap_range, zap_power, TESLA_FUSION_FLAGS) //larpers beware - location.fire_nuclear_particles(power_ratio) //see code/modules/projectile/energy/nuclear_particle.dm + reaction_energy += delta_plasma*PLASMA_BINDING_ENERGY //Energy is gained or lost corresponding to the creation or destruction of mass. + if(instability < FUSION_INSTABILITY_ENDOTHERMALITY) + reaction_energy = max(reaction_energy,0) //Stable reactions don't end up endothermic. + else if (reaction_energy < 0) + reaction_energy *= (instability-FUSION_INSTABILITY_ENDOTHERMALITY)**0.5 + if(air.thermal_energy() + reaction_energy < 0) //No using energy that doesn't exist. + cached_gases[/datum/gas/plasma][MOLES] = initial_plasma + cached_gases[/datum/gas/carbon_dioxide][MOLES] = initial_carbon + return NO_REACTION + cached_gases[/datum/gas/tritium][MOLES] -= FUSION_TRITIUM_MOLES_USED + //The decay of the tritium and the reaction's energy produces waste gases, different ones depending on whether the reaction is endo or exothermic if(reaction_energy > 0) + air.assert_gases(/datum/gas/oxygen,/datum/gas/nitrous_oxide) + cached_gases[/datum/gas/oxygen][MOLES] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*FUSION_TRITIUM_CONVERSION_COEFFICIENT) + cached_gases[/datum/gas/nitrous_oxide][MOLES] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*FUSION_TRITIUM_CONVERSION_COEFFICIENT) + else + air.assert_gases(/datum/gas/bz,/datum/gas/nitryl) + cached_gases[/datum/gas/bz][MOLES] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*-FUSION_TRITIUM_CONVERSION_COEFFICIENT) + cached_gases[/datum/gas/nitryl][MOLES] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*-FUSION_TRITIUM_CONVERSION_COEFFICIENT) + + if(reaction_energy) + if(location) + var/particle_chance = ((PARTICLE_CHANCE_CONSTANT)/(reaction_energy-PARTICLE_CHANCE_CONSTANT)) + 1//Asymptopically approaches 100% as the energy of the reaction goes up. + if(prob(PERCENT(particle_chance))) + location.fire_nuclear_particle() + var/rad_power = max((FUSION_RAD_COEFFICIENT/instability) + FUSION_RAD_MAX,0) + radiation_pulse(location,rad_power) + var/new_heat_capacity = air.heat_capacity() if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) - air.temperature = max(((temperature*old_heat_capacity + reaction_energy)/new_heat_capacity),TCMB) + air.temperature = CLAMP(((air.temperature*old_heat_capacity + reaction_energy)/new_heat_capacity),TCMB,INFINITY) return REACTING /datum/gas_reaction/nitrylformation //The formation of nitryl. Endothermic. Requires N2O as a catalyst. @@ -364,7 +344,7 @@ cached_gases[/datum/gas/nitrous_oxide] -= reaction_efficency cached_gases[/datum/gas/plasma] -= 2*reaction_efficency - SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, (reaction_efficency**0.5)*BZ_RESEARCH_AMOUNT) + SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, (reaction_efficency**0.5)*BZ_RESEARCH_AMOUNT) if(energy_released > 0) var/new_heat_capacity = air.heat_capacity() From 835e91d46ee382aef05c1895bf1395cb608d89f3 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 14 Jul 2019 05:13:47 -0700 Subject: [PATCH 057/469] compile --- .../atmospherics/gasmixtures/reactions.dm | 29 +++++++++---------- .../projectile/energy/nuclear_particle.dm | 29 ++++--------------- 2 files changed, 20 insertions(+), 38 deletions(-) diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index af4549efa7..a2d308e16f 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -223,13 +223,14 @@ var/list/cached_scan_results = air.analyzer_results var/old_heat_capacity = air.heat_capacity() var/reaction_energy = 0 //Reaction energy can be negative or positive, for both exothermic and endothermic reactions. - var/initial_plasma = cached_gases[/datum/gas/plasma][MOLES] - var/initial_carbon = cached_gases[/datum/gas/carbon_dioxide][MOLES] + var/initial_plasma = cached_gases[/datum/gas/plasma] + var/initial_carbon = cached_gases[/datum/gas/carbon_dioxide] var/scale_factor = (air.volume)/(PI) //We scale it down by volume/Pi because for fusion conditions, moles roughly = 2*volume, but we want it to be based off something constant between reactions. var/toroidal_size = (2*PI)+TORADIANS(arctan((air.volume-TOROID_VOLUME_BREAKEVEN)/TOROID_VOLUME_BREAKEVEN)) //The size of the phase space hypertorus var/gas_power = 0 + var/list/gas_fusion_powers = GLOB.meta_gas_fusions for (var/gas_id in cached_gases) - gas_power += (cached_gases[gas_id][GAS_META][META_GAS_FUSION_POWER]*cached_gases[gas_id][MOLES]) + gas_power += (gas_fusion_powers[gas_id]*cached_gases[gas_id]) var/instability = MODULUS((gas_power*INSTABILITY_GAS_POWER_FACTOR)**2,toroidal_size) //Instability effects how chaotic the behavior of the reaction is cached_scan_results[id] = instability//used for analyzer feedback @@ -241,9 +242,9 @@ carbon = MODULUS(carbon - plasma, toroidal_size) - cached_gases[/datum/gas/plasma][MOLES] = plasma*scale_factor + FUSION_MOLE_THRESHOLD //Scales the gases back up - cached_gases[/datum/gas/carbon_dioxide][MOLES] = carbon*scale_factor + FUSION_MOLE_THRESHOLD - var/delta_plasma = initial_plasma - cached_gases[/datum/gas/plasma][MOLES] + cached_gases[/datum/gas/plasma] = plasma*scale_factor + FUSION_MOLE_THRESHOLD //Scales the gases back up + cached_gases[/datum/gas/carbon_dioxide] = carbon*scale_factor + FUSION_MOLE_THRESHOLD + var/delta_plasma = initial_plasma - cached_gases[/datum/gas/plasma] reaction_energy += delta_plasma*PLASMA_BINDING_ENERGY //Energy is gained or lost corresponding to the creation or destruction of mass. if(instability < FUSION_INSTABILITY_ENDOTHERMALITY) @@ -252,19 +253,17 @@ reaction_energy *= (instability-FUSION_INSTABILITY_ENDOTHERMALITY)**0.5 if(air.thermal_energy() + reaction_energy < 0) //No using energy that doesn't exist. - cached_gases[/datum/gas/plasma][MOLES] = initial_plasma - cached_gases[/datum/gas/carbon_dioxide][MOLES] = initial_carbon + cached_gases[/datum/gas/plasma] = initial_plasma + cached_gases[/datum/gas/carbon_dioxide] = initial_carbon return NO_REACTION - cached_gases[/datum/gas/tritium][MOLES] -= FUSION_TRITIUM_MOLES_USED + cached_gases[/datum/gas/tritium] -= FUSION_TRITIUM_MOLES_USED //The decay of the tritium and the reaction's energy produces waste gases, different ones depending on whether the reaction is endo or exothermic if(reaction_energy > 0) - air.assert_gases(/datum/gas/oxygen,/datum/gas/nitrous_oxide) - cached_gases[/datum/gas/oxygen][MOLES] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*FUSION_TRITIUM_CONVERSION_COEFFICIENT) - cached_gases[/datum/gas/nitrous_oxide][MOLES] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*FUSION_TRITIUM_CONVERSION_COEFFICIENT) + cached_gases[/datum/gas/oxygen] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*FUSION_TRITIUM_CONVERSION_COEFFICIENT) + cached_gases[/datum/gas/nitrous_oxide] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*FUSION_TRITIUM_CONVERSION_COEFFICIENT) else - air.assert_gases(/datum/gas/bz,/datum/gas/nitryl) - cached_gases[/datum/gas/bz][MOLES] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*-FUSION_TRITIUM_CONVERSION_COEFFICIENT) - cached_gases[/datum/gas/nitryl][MOLES] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*-FUSION_TRITIUM_CONVERSION_COEFFICIENT) + cached_gases[/datum/gas/bz] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*-FUSION_TRITIUM_CONVERSION_COEFFICIENT) + cached_gases[/datum/gas/nitryl] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*-FUSION_TRITIUM_CONVERSION_COEFFICIENT) if(reaction_energy) if(location) diff --git a/code/modules/projectiles/projectile/energy/nuclear_particle.dm b/code/modules/projectiles/projectile/energy/nuclear_particle.dm index 1753587ad3..e08f806fe5 100644 --- a/code/modules/projectiles/projectile/energy/nuclear_particle.dm +++ b/code/modules/projectiles/projectile/energy/nuclear_particle.dm @@ -3,10 +3,9 @@ name = "nuclear particle" icon_state = "nuclear_particle" pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE - damage = 20 - damage_type = TOX - irradiate = 2500 //enough to knockdown and induce vomiting - speed = 0.4 + flag = "rad" + irradiate = 5000 + speed = 0.4 hitsound = 'sound/weapons/emitter2.ogg' impact_type = /obj/effect/projectile/impact/xray var/static/list/particle_colors = list( @@ -25,22 +24,6 @@ add_atom_colour(particle_colors[our_color], FIXED_COLOUR_PRIORITY) set_light(4, 3, particle_colors[our_color]) //Range of 4, brightness of 3 - Same range as a flashlight -/atom/proc/fire_nuclear_particles(power_ratio) //used by fusion to fire random # of nuclear particles - power ratio determines about how many are fired - var/random_particles = rand(3,6) - var/particles_to_fire - var/particles_fired - switch(power_ratio) //multiply random_particles * factor for whatever tier - if(0 to FUSION_MID_TIER_THRESHOLD) - particles_to_fire = random_particles * FUSION_PARTICLE_FACTOR_LOW - if(FUSION_MID_TIER_THRESHOLD to FUSION_HIGH_TIER_THRESHOLD) - particles_to_fire = random_particles * FUSION_PARTICLE_FACTOR_MID - if(FUSION_HIGH_TIER_THRESHOLD to FUSION_SUPER_TIER_THRESHOLD) - particles_to_fire = random_particles * FUSION_PARTICLE_FACTOR_HIGH - if(FUSION_SUPER_TIER_THRESHOLD to INFINITY) - particles_to_fire = random_particles * FUSION_PARTICLE_FACTOR_SUPER - while(particles_to_fire) - particles_fired++ - var/angle = rand(0,360) - var/obj/item/projectile/energy/nuclear_particle/P = new /obj/item/projectile/energy/nuclear_particle(src) - addtimer(CALLBACK(P, /obj/item/projectile.proc/fire, angle), particles_fired) //multiply particles fired * delay so the particles end up stagnated (once every decisecond) - particles_to_fire-- \ No newline at end of file +/atom/proc/fire_nuclear_particle(angle = rand(0,360)) //used by fusion to fire random nuclear particles. Fires one particle in a random direction. + var/obj/item/projectile/energy/nuclear_particle/P = new /obj/item/projectile/energy/nuclear_particle(src) + P.fire(angle) From 8f8b935a4f99fa359c7319211417ba7bbee86536 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 20 Jul 2019 23:33:55 -0700 Subject: [PATCH 058/469] Update weapon_designs.dm --- code/modules/research/designs/weapon_designs.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 214ef36afe..b6508340f4 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -89,7 +89,7 @@ materials = list(MAT_METAL = 200) build_path = /obj/item/ammo_casing/shotgun/stunslug category = list("Ammo") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY + departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_SCIENCE /datum/design/techshell name = "Unloaded Technological Shotshell" @@ -123,7 +123,7 @@ materials = list(MAT_METAL = 500, MAT_GLASS = 300) build_path = /obj/item/firing_pin/test_range category = list("Firing Pins") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY + departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_SCIENCE /datum/design/pin_mindshield name = "Mindshield Firing Pin" @@ -219,7 +219,7 @@ reagents_list = list("radium" = 20) build_path = /obj/item/gun/energy/floragun category = list("Weapons") - departmental_flags = DEPARTMENTAL_FLAG_SERVICE + departmental_flags = DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_SCIENCE /datum/design/xray name = "X-ray Laser Gun" @@ -293,7 +293,7 @@ materials = list(MAT_METAL = 2000, MAT_PLASMA = 500) build_path = /obj/item/grenade/chem_grenade/pyro category = list("Weapons") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL + departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE /datum/design/cryo_grenade name = "Cryo Grenade" @@ -303,7 +303,7 @@ materials = list(MAT_METAL = 2000, MAT_SILVER = 500) build_path = /obj/item/grenade/chem_grenade/cryo category = list("Weapons") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL + departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE /datum/design/adv_grenade name = "Advanced Release Grenade" @@ -313,7 +313,7 @@ materials = list(MAT_METAL = 3000, MAT_GLASS = 500) build_path = /obj/item/grenade/chem_grenade/adv_release category = list("Weapons") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL + departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE ////////// //MISC//// From 3bd0ba02754753b4b93fbcc403bd198cca4bb44a Mon Sep 17 00:00:00 2001 From: Ghommie Date: Tue, 23 Jul 2019 06:39:53 +0200 Subject: [PATCH 059/469] Cleaning up Arousal code & co. --- code/__DEFINES/DNA.dm | 5 + code/__DEFINES/citadel_defines.dm | 9 + code/__DEFINES/traits.dm | 11 +- code/__HELPERS/_cit_helpers.dm | 41 +- code/__HELPERS/global_lists.dm | 4 + code/__HELPERS/mobs.dm | 1 - code/datums/traits/neutral.dm | 35 ++ code/modules/admin/create_mob.dm | 3 + code/modules/client/preferences.dm | 4 - code/modules/client/preferences_savefile.dm | 7 +- modular_citadel/code/datums/traits/neutral.dm | 33 -- .../code/modules/arousal/arousal.dm | 559 ++++++------------ .../organs/{genitals.dm => _genitals.dm} | 213 +++---- .../code/modules/arousal/organs/breasts.dm | 60 +- .../code/modules/arousal/organs/eggsack.dm | 16 +- .../organs/genitals_sprite_accessories.dm | 21 +- .../code/modules/arousal/organs/ovipositor.dm | 7 +- .../code/modules/arousal/organs/penis.dm | 56 +- .../code/modules/arousal/organs/testicles.dm | 105 ++-- .../code/modules/arousal/organs/vagina.dm | 47 +- .../code/modules/arousal/organs/womb.dm | 50 +- .../modules/client/preferences_savefile.dm | 1 - .../modules/mob/living/carbon/human/life.dm | 4 +- .../carbon/human/species_types/jellypeople.dm | 50 +- .../icons/obj/genitals/testicles_onmob.dmi | Bin 759 -> 562 bytes tgstation.dme | 3 +- 26 files changed, 525 insertions(+), 820 deletions(-) delete mode 100644 modular_citadel/code/datums/traits/neutral.dm rename modular_citadel/code/modules/arousal/organs/{genitals.dm => _genitals.dm} (60%) diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 4ed099d9e2..95c2c70801 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -122,3 +122,8 @@ #define ORGAN_SLOT_BRAIN_ANTISTUN "brain_antistun" #define ORGAN_SLOT_TAIL "tail" #define ORGAN_SLOT_PENIS "penis" +#define ORGAN_SLOT_WOMB "womb" +#define ORGAN_SLOT_VAGINA "vagina" +#define ORGAN_SLOT_TESTICLES "testicles" +#define ORGAN_SLOT_BREASTS "breasts" + diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 2abe0db04e..8b75784ab2 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -18,6 +18,15 @@ #define CIT_FILTER_STAMINACRIT filter(type="drop_shadow", x=0, y=0, size=-3, border=0, color="#04080F") //organ defines +#define VAGINA_LAYER_INDEX 1 +#define TESTICLES_LAYER_INDEX 2 +#define GENITAL_LAYER_INDEX 3 +#define PENIS_LAYER_INDEX 4 + +#define GENITAL_LAYER_INDEX_LENGTH 4 //keep it updated with each new index added, thanks. + +#define MASTURBATE_LINKED_ORGAN 2 //special value used to pass our mission to the linked organ + #define COCK_SIZE_MIN 1 #define COCK_SIZE_MAX 20 diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 7bcb4881f0..1546717c7a 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -136,13 +136,14 @@ #define TRAIT_SKITTISH "skittish" #define TRAIT_POOR_AIM "poor_aim" #define TRAIT_PROSOPAGNOSIA "prosopagnosia" -#define TRAIT_DRUNK_HEALING "drunk_healing" -#define TRAIT_TAGGER "tagger" -#define TRAIT_PHOTOGRAPHER "photographer" -#define TRAIT_MUSICIAN "musician" -#define TRAIT_CROCRIN_IMMUNE "crocin_immune" +#define TRAIT_DRUNK_HEALING "drunk_healing" +#define TRAIT_TAGGER "tagger" +#define TRAIT_PHOTOGRAPHER "photographer" +#define TRAIT_MUSICIAN "musician" +#define TRAIT_CROCRIN_IMMUNE "crocin_immune" #define TRAIT_NYMPHO "nymphomania" #define TRAIT_MASO "masochism" +#define TRAIT_EXHIBITIONIST "exhibitionist" #define TRAIT_PARA "paraplegic" #define TRAIT_EMPATH "empath" #define TRAIT_FRIENDLY "friendly" diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm index 668b151b6e..d75dd31b46 100644 --- a/code/__HELPERS/_cit_helpers.dm +++ b/code/__HELPERS/_cit_helpers.dm @@ -56,6 +56,7 @@ GLOBAL_LIST_EMPTY(ipc_screens_list) GLOBAL_LIST_EMPTY(ipc_antennas_list) //Genitals and Arousal Lists +GLOBAL_LIST_EMPTY(genitals_list) GLOBAL_LIST_EMPTY(cock_shapes_list)//global_lists.dm for the list initializations //Now also _DATASTRUCTURES globals.dm GLOBAL_LIST_EMPTY(cock_shapes_icons) //Associated list for names->icon_states for cockshapes. GLOBAL_LIST_EMPTY(balls_shapes_list) @@ -124,41 +125,39 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE) SSblackbox.record_feedback("tally", "admin_verb", 1, "TLOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /mob/living/carbon/proc/has_penis() - if(getorganslot("penis"))//slot shared with ovipositor - if(istype(getorganslot("penis"), /obj/item/organ/genital/penis)) - return TRUE + var/obj/item/organ/genital/G = getorganslot(ORGAN_SLOT_PENIS) + if(G && istype(G, /obj/item/organ/genital/penis)) + return TRUE return FALSE /mob/living/carbon/proc/has_balls() - if(getorganslot("balls")) - if(istype(getorganslot("balls"), /obj/item/organ/genital/testicles)) - return TRUE + var/obj/item/organ/genital/G = getorganslot(ORGAN_SLOT_TESTICLES) + if(G && istype(G, /obj/item/organ/genital/testicles)) + return TRUE return FALSE /mob/living/carbon/proc/has_vagina() - if(getorganslot("vagina")) + if(getorganslot(ORGAN_SLOT_VAGINA)) return TRUE return FALSE /mob/living/carbon/proc/has_breasts() - if(getorganslot("breasts")) + if(getorganslot(ORGAN_SLOT_BREASTS)) return TRUE return FALSE /mob/living/carbon/proc/has_ovipositor() - if(getorganslot("penis"))//shared slot - if(istype(getorganslot("penis"), /obj/item/organ/genital/ovipositor)) - return TRUE + var/obj/item/organ/genital/G = getorganslot(ORGAN_SLOT_PENIS) + if(G && istype(G, /obj/item/organ/genital/ovipositor)) + return TRUE return FALSE /mob/living/carbon/human/proc/has_eggsack() - if(getorganslot("balls")) - if(istype(getorganslot("balls"), /obj/item/organ/genital/eggsack)) - return TRUE + var/obj/item/organ/genital/G = getorganslot(ORGAN_SLOT_TESTICLES) + if(G && istype(G, /obj/item/organ/genital/eggsack)) + return TRUE return FALSE -/mob/living/carbon/human/proc/is_bodypart_exposed(bodypart) - /mob/living/carbon/proc/is_groin_exposed(var/list/L) if(!L) L = get_equipped_items() @@ -188,9 +187,9 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE) message_admins("[src] gave everyone genitals.") for(var/mob/living/carbon/human/H in GLOB.mob_list) if(H.gender == MALE) - H.give_penis() - H.give_balls() + H.give_genital(/obj/item/organ/genital/penis) + H.give_genital(/obj/item/organ/genital/testicles) else - H.give_vagina() - H.give_womb() - H.give_breasts() + H.give_genital(/obj/item/organ/genital/vagina) + H.give_genital(/obj/item/organ/genital/womb) + H.give_genital(/obj/item/organ/genital/breasts) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index c8a33959ed..b0b0f32345 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -61,6 +61,10 @@ for(var/K in GLOB.balls_shapes_list) var/datum/sprite_accessory/testicles/value = GLOB.balls_shapes_list[K] GLOB.balls_shapes_icons[K] = value.icon_state + + for(var/gpath in subtypesof(/obj/item/organ/genital)) + var/obj/item/organ/genital/G = gpath + GLOB.genitals_list[initial(G.name)] = gpath //END OF CIT CHANGES //Species diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 5ec839130a..81801cd6a2 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -154,7 +154,6 @@ "xenodorsal" = "Standard", "xenohead" = "Standard", "xenotail" = "Xenomorph Tail", - "exhibitionist" = FALSE, "genitals_use_skintone" = FALSE, "has_cock" = FALSE, "cock_shape" = pick(GLOB.cock_shapes_list), diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index f70e3a3c68..156ee00d75 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -94,6 +94,41 @@ lose_text = "You don't feel as prudish as before." medical_record_text = "Patient exhibits a special gene that makes them immune to Crocin and Hexacrocin." +/datum/quirk/libido + name = "Nymphomania" + desc = "You're always feeling a bit in heat. Also, you get aroused faster than usual." + value = 0 + mob_trait = TRAIT_NYMPHO + gain_text = "You are feeling extra wild." + lose_text = "You don't feel that burning sensation anymore." + +/datum/quirk/libido/add() + var/mob/living/M = quirk_holder + M.min_arousal = 16 + M.arousal_rate = 3 + +/datum/quirk/libido/remove() + var/mob/living/M = quirk_holder + M.min_arousal = initial(M.min_arousal) + M.arousal_rate = initial(M.arousal_rate) + +/datum/quirk/maso + name = "Masochism" + desc = "You are aroused by pain." + value = 0 + mob_trait = TRAIT_MASO + gain_text = "You desire to be hurt." + lose_text = "Pain has become less exciting for you." + +/datum/quirk/exhibitionism + name = "Exhibitionism" + desc = "You don't mind showing off your bare body to strangers, in fact you find it quite satistying. Not the best excuse to break Space Law anyway." //as if they'd care anyway. + value = 0 + medical_record_text = "Patient has been diagnosed with exhibitionistic disorder." + mob_trait = TRAIT_EXHIBITIONIST + gain_text = "You feel like exposing yourself to the world." + lose_text = "Indecent exposure doesn't sound as charming to you anymore." + /datum/quirk/assblastusa name = "Buns of Steel" desc = "You've never skipped ass day. With this trait, you are completely immune to all forms of ass slapping and anyone who tries to slap your rock hard ass usually gets a broken hand." diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index fad7410a6a..eb856237bf 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -25,6 +25,9 @@ H.facial_hair_color = H.hair_color H.eye_color = random_eye_color() H.dna.blood_type = random_blood_type() + H.saved_underwear = H.underwear + H.saved_undershirt = H.undershirt + H.saved_socks = H.socks // Mutant randomizing, doesn't affect the mob appearance unless it's the specific mutant. H.dna.features["mcolor"] = random_short_color() diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 54d75e8437..bac9ed0c89 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -108,7 +108,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) "xenohead" = "Standard", "xenotail" = "Xenomorph Tail", "taur" = "None", - "exhibitionist" = FALSE, "genitals_use_skintone" = FALSE, "has_cock" = FALSE, "cock_shape" = "Human", @@ -790,7 +789,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat +="" dat += "

    Citadel Preferences

    " //Because fuck me if preferences can't be fucking modularized and expected to update in a reasonable timeframe. dat += "Arousal:
    [arousable == TRUE ? "Enabled" : "Disabled"]
    " - dat += "Exhibitionist:[features["exhibitionist"] == TRUE ? "Yes" : "No"]
    " dat += "Voracious MediHound sleepers: [(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"]
    " dat += "Hear Vore Sounds: [(cit_toggles & EATING_NOISES) ? "Yes" : "No"]
    " dat += "Hear Vore Digestion Sounds: [(cit_toggles & DIGESTION_NOISES) ? "Yes" : "No"]
    " @@ -2048,8 +2046,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["has_womb"] = FALSE if("has_womb") features["has_womb"] = !features["has_womb"] - if("exhibitionist") - features["exhibitionist"] = !features["exhibitionist"] if("widescreenpref") widescreenpref = !widescreenpref user.client.change_view(CONFIG_GET(string/default_view)) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index b9c5cb7ef9..175cd9613a 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 20 +#define SAVEFILE_VERSION_MAX 21 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -49,6 +49,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car pda_style = "mono" if(current_version < 20) pda_color = "#808000" + if(current_version < 21 && S["feature_exhibitionist"]) + var/datum/quirk/exhibitionism/E + var/quirk_name = initial(E.name) + neutral_quirks += quirk_name + all_quirks += quirk_name /datum/preferences/proc/load_path(ckey,filename="preferences.sav") if(!ckey) diff --git a/modular_citadel/code/datums/traits/neutral.dm b/modular_citadel/code/datums/traits/neutral.dm deleted file mode 100644 index 05aeb27361..0000000000 --- a/modular_citadel/code/datums/traits/neutral.dm +++ /dev/null @@ -1,33 +0,0 @@ -// Citadel-specific Neutral Traits - -/datum/quirk/libido - name = "Nymphomania" - desc = "You're always feeling a bit in heat. Also, you get aroused faster than usual." - value = 0 - mob_trait = TRAIT_NYMPHO - gain_text = "You are feeling extra wild." - lose_text = "You don't feel that burning sensation anymore." - -/datum/quirk/libido/add() - var/mob/living/M = quirk_holder - M.min_arousal = 16 - M.arousal_rate = 3 - -/datum/quirk/libido/remove() - var/mob/living/M = quirk_holder - M.min_arousal = initial(M.min_arousal) - M.arousal_rate = initial(M.arousal_rate) - -/datum/quirk/libido/on_process() - var/mob/living/M = quirk_holder - if(M.canbearoused == FALSE) - to_chat(quirk_holder, "Having high libido is useless when you can't feel arousal at all!") - qdel(src) - -/datum/quirk/maso - name = "Masochism" - desc = "You are aroused by pain." - value = 0 - mob_trait = TRAIT_MASO - gain_text = "You desire to be hurt." - lose_text = "Pain has become less exciting for you." diff --git a/modular_citadel/code/modules/arousal/arousal.dm b/modular_citadel/code/modules/arousal/arousal.dm index 27f7576e7f..8826cb0774 100644 --- a/modular_citadel/code/modules/arousal/arousal.dm +++ b/modular_citadel/code/modules/arousal/arousal.dm @@ -19,11 +19,6 @@ var/hidden_undershirt = FALSE var/hidden_socks = FALSE -/mob/living/carbon/human/New() - ..() - saved_underwear = underwear - saved_undershirt = undershirt - //Species vars /datum/species var/arousal_gain_rate = AROUSAL_START_VALUE //Rate at which this species becomes aroused @@ -35,60 +30,53 @@ //Mob procs /mob/living/carbon/human/proc/underwear_toggle() set name = "Toggle undergarments" - set category = "Object" - if(ishuman(src)) - var/mob/living/carbon/human/humz = src - var/confirm = input(src, "Select what part of your form to alter", "Undergarment Toggling", "Cancel") in list("Top", "Bottom", "Socks", "All", "Cancel") - if(confirm == "Top") - humz.hidden_undershirt = !humz.hidden_undershirt + set category = "IC" - if(confirm == "Bottom") - humz.hidden_underwear = !humz.hidden_underwear + var/confirm = input(src, "Select what part of your form to alter", "Undergarment Toggling") as null|anything in list("Top", "Bottom", "Socks", "All") + if(!confirm) + return + if(confirm == "Top") + hidden_undershirt = !hidden_undershirt - if(confirm == "Socks") - humz.hidden_socks = !humz.hidden_socks + if(confirm == "Bottom") + hidden_underwear = !hidden_underwear - if(confirm == "All") - humz.hidden_undershirt = !humz.hidden_undershirt - humz.hidden_underwear = !humz.hidden_underwear - humz.hidden_socks = !humz.hidden_socks + if(confirm == "Socks") + hidden_socks = !hidden_socks - if(confirm == "Cancel") - return - src.update_body() + if(confirm == "All") + var/on_off = (hidden_undershirt || hidden_underwear || hidden_socks) ? FALSE : TRUE + hidden_undershirt = on_off + hidden_underwear = on_off + hidden_socks = on_off - else - to_chat(src, "Humans only. How the fuck did you get this verb anyway.") + update_body() -/mob/living/proc/handle_arousal() - - -/mob/living/carbon/handle_arousal() - if(canbearoused && dna) - var/datum/species/S - S = dna.species - if(S && !(SSmobs.times_fired % 36) && getArousalLoss() < max_arousal)//Totally stolen from breathing code. Do this every 36 ticks. - adjustArousalLoss(arousal_rate * S.arousal_gain_rate) - if(dna.features["exhibitionist"] && client) - var/amt_nude = 0 - if(is_chest_exposed() && (getorganslot("breasts"))) - amt_nude++ - if(is_groin_exposed()) - if(getorganslot("penis")) - amt_nude++ - if(getorganslot("vagina")) - amt_nude++ - if(amt_nude) - var/watchers = 0 - for(var/mob/_M in view(world.view, src)) - var/mob/living/M = _M - if(!istype(M)) - continue - if(M.client && !M.stat && !M.eye_blind && (locate(src) in viewers(world.view,M))) - watchers++ - if(watchers) - adjustArousalLoss((amt_nude * watchers) + S.arousal_gain_rate) +/mob/living/proc/handle_arousal(times_fired) + return +/mob/living/carbon/handle_arousal(times_fired) + if(!canbearoused || !dna) + return + var/datum/species/S = dna.species + if(!S || (times_fired % 36) || !getArousalLoss() >= max_arousal)//Totally stolen from breathing code. Do this every 36 ticks. + return + var/our_loss = arousal_rate * S.arousal_gain_rate + if(HAS_TRAIT(src, TRAIT_EXHIBITIONIST) && client) + var/amt_nude = 0 + for(var/obj/item/organ/genital/G in internal_organs) + if(G.is_exposed()) + amt_nude++ + if(amt_nude) + var/watchers = 0 + for(var/mob/living/L in view(world.view, src)) + if(!istype(L)) + continue + if(L.client && !L.stat && !L.eye_blind && (locate(src) in viewers(world.view, L))) + watchers++ + if(watchers) + our_loss += (amt_nude * watchers) + S.arousal_gain_rate + adjustArousalLoss(our_loss) /mob/living/proc/getArousalLoss() return arousalloss @@ -138,8 +126,6 @@ S = GLOB.breasts_shapes_list[G.shape] if(S?.alt_aroused) G.aroused_state = isPercentAroused(G.aroused_amount) - if(getArousalLoss() >= ((max_arousal / 100) * 33)) - G.aroused_state = TRUE else G.aroused_state = FALSE G.update_appearance() @@ -147,54 +133,18 @@ /mob/living/proc/update_arousal_hud() return FALSE -/datum/species/proc/update_arousal_hud(mob/living/carbon/human/H) - return FALSE - /mob/living/carbon/human/update_arousal_hud() - if(!client || !hud_used) - return FALSE - if(dna.species.update_arousal_hud()) + if(!client || !(hud_used?.arousal)) return FALSE if(!canbearoused) hud_used.arousal.icon_state = "" return FALSE + if(stat == DEAD) + hud_used.arousal.icon_state = "arousal0" else - if(hud_used.arousal) - if(stat == DEAD) - hud_used.arousal.icon_state = "arousal0" - return TRUE - if(getArousalLoss() == max_arousal) - hud_used.arousal.icon_state = "arousal100" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 90)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal90" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 80)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal80" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 70)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal70" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 60)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal60" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 50)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal50" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 40)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal40" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 30)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal30" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 20)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal10" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 10)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal10" - return TRUE - else - hud_used.arousal.icon_state = "arousal0" + var/value = FLOOR(getPercentAroused(), 10) + hud_used.arousal.icon_state = "arousal[value]" + return TRUE /obj/screen/arousal name = "arousal" @@ -213,7 +163,6 @@ to_chat(M, "Arousal is disabled. Feature is unavailable.") - /mob/living/proc/mob_climax()//This is just so I can test this shit without being forced to add actual content to get rid of arousal. Will be a very basic proc for a while. set name = "Masturbate" set category = "IC" @@ -221,212 +170,150 @@ if(mb_cd_timer <= world.time) //start the cooldown even if it fails mb_cd_timer = world.time + mb_cd_length - if(getArousalLoss() >= ((max_arousal / 100) * 33))//33% arousal or greater required - src.visible_message("[src] starts masturbating!", \ + if(getArousalLoss() >= 33)//one third of average max_arousal or greater required + visible_message("[src] starts masturbating!", \ "You start masturbating.") if(do_after(src, 30, target = src)) - src.visible_message("[src] relieves [p_them()]self!", \ + visible_message("[src] relieves [p_them()]self!", \ "You have relieved yourself.") SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) setArousalLoss(min_arousal) else to_chat(src, "You aren't aroused enough for that.") +/obj/item/organ/genital/proc/climaxable(mob/living/carbon/human/H, silent = FALSE) //returns the fluid source (ergo reagents holder) if found. + if(producing) + . = reagents + else + if(linked_organ) + . = linked_organ.reagents + else if(!silent) + to_chat(H, "Your [name] is unable to produce it's own fluids, it's missing the organs for it.") + +/mob/living/carbon/human/proc/do_climax(datum/reagents/R, atom/target, obj/item/organ/genital/G, spill = TRUE) + if(!G) + return + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) + if(!target || !R) + return + var/turfing = isturf(target) + if(spill & R.total_volume >= 5) + R.reaction(turfing ? target : target.loc, TOUCH, 1, 0) + if(!turfing) + R.trans_to(target, R.total_volume * (spill ? G.fluid_transfer_factor : 1)) + R.clear_reagents() //These are various procs that we'll use later, split up for readability instead of having one, huge proc. //For all of these, we assume the arguments given are proper and have been checked beforehand. /mob/living/carbon/human/proc/mob_masturbate(obj/item/organ/genital/G, mb_time = 30) //Masturbation, keep it gender-neutral - var/total_fluids = 0 - var/datum/reagents/fluid_source = null - - if(G.producing) //Can it produce its own fluids, such as breasts? - fluid_source = G.reagents - else - if(!G.linked_organ) - to_chat(src, "Your [G.name] is unable to produce it's own fluids, it's missing the organs for it.") - return - fluid_source = G.linked_organ.reagents - total_fluids = fluid_source.total_volume + var/datum/reagents/fluid_source = G.climaxable(src) + if(!fluid_source) + return + var/obj/item/organ/genital/PP = G.can_masturbate_with == MASTURBATE_LINKED_ORGAN ? G.linked_organ : G + if(!PP) + to_chat(src, "You shudder, unable to cum with your [name].") if(mb_time) - src.visible_message("[src] starts to [G.masturbation_verb] [p_their()] [G.name].", \ - "You start to [G.masturbation_verb] your [G.name].", \ + visible_message("[src] starts to [G.masturbation_verb] [p_their()] [G.name].", \ "You start to [G.masturbation_verb] your [G.name].") - - if(do_after(src, mb_time, target = src)) - if(total_fluids > 5) - fluid_source.reaction(src.loc, TOUCH, 1, 0) - fluid_source.clear_reagents() - src.visible_message("[src] orgasms, cumming[istype(src.loc, /turf/open/floor) ? " onto [src.loc]" : ""]!", \ - "You cum[istype(src.loc, /turf/open/floor) ? " onto [src.loc]" : ""].", \ - "You have relieved yourself.") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - if(G.can_climax) - setArousalLoss(min_arousal) - + if(!do_after(src, mb_time, target = src) || !G.climaxable(src, TRUE)) + return + visible_message("[src] orgasms, [PP.orgasm_verb][isturf(loc) ? " onto [loc]" : ""]!", \ + "You orgasm, [PP.orgasm_verb][isturf(loc) ? " onto [loc]" : ""].") + do_climax(fluid_source, loc, G) /mob/living/carbon/human/proc/mob_climax_outside(obj/item/organ/genital/G, mb_time = 30) //This is used for forced orgasms and other hands-free climaxes - var/total_fluids = 0 - var/datum/reagents/fluid_source = null - var/unable_to_come = FALSE - - if(G.producing) //Can it produce its own fluids, such as breasts? - fluid_source = G.reagents - total_fluids = fluid_source.total_volume - else - if(!G.linked_organ) - unable_to_come = TRUE - else - fluid_source = G.linked_organ.reagents - total_fluids = fluid_source.total_volume - - if(unable_to_come) - src.visible_message("[src] shudders, their [G.name] unable to cum.", \ - "Your [G.name] cannot cum, giving no relief.", \ + var/datum/reagents/fluid_source = G.climaxable(src, TRUE) + if(!fluid_source) + visible_message("[src] shudders, their [G.name] unable to cum.", \ "Your [G.name] cannot cum, giving no relief.") - else - total_fluids = fluid_source.total_volume - if(mb_time) //as long as it's not instant, give a warning - src.visible_message("[src] looks like they're about to cum.", \ - "You feel yourself about to orgasm.", \ - "You feel yourself about to orgasm.") - if(do_after(src, mb_time, target = src)) - if(total_fluids > 5) - fluid_source.reaction(src.loc, TOUCH, 1, 0) - fluid_source.clear_reagents() - src.visible_message("[src] orgasms[istype(src.loc, /turf/open/floor) ? ", spilling onto [src.loc]" : ""], using [p_their()] [G.name]!", \ - "You climax[istype(src.loc, /turf/open/floor) ? ", spilling onto [src.loc]" : ""] with your [G.name].", \ - "You climax using your [G.name].") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - if(G.can_climax) - setArousalLoss(min_arousal) - + return + if(mb_time) //as long as it's not instant, give a warning + visible_message("[src] looks like they're about to cum.", \ + "You feel yourself about to orgasm.") + if(!do_after(src, mb_time, target = src) || !G.climaxable(src, TRUE)) + return + visible_message("[src] orgasms[isturf(loc) ? " onto [loc]" : ""], using [p_their()] [G.name]!", \ + "You climax[isturf(loc) ? " onto [loc]" : ""] with your [G.name].") + do_climax(fluid_source, loc, G) /mob/living/carbon/human/proc/mob_climax_partner(obj/item/organ/genital/G, mob/living/L, spillage = TRUE, mb_time = 30) //Used for climaxing with any living thing - var/total_fluids = 0 - var/datum/reagents/fluid_source = null - - if(G.producing) //Can it produce its own fluids, such as breasts? - fluid_source = G.reagents - else - if(!G.linked_organ) - to_chat(src, "Your [G.name] is unable to produce it's own fluids, it's missing the organs for it.") - return - fluid_source = G.linked_organ.reagents - total_fluids = fluid_source.total_volume + var/datum/reagents/fluid_source = G.climaxable(src) + if(!fluid_source) + return if(mb_time) //Skip warning if this is an instant climax. - src.visible_message("[src] is about to climax with [L]!", \ - "You're about to climax with [L]!", \ - "You're preparing to climax with someone!") + visible_message("[src] is about to climax with [L]!", \ + "You're about to climax with [L]!") + if(!do_after(src, mb_time, target = src) || !in_range(src, L) || !G.climaxable(src, TRUE)) + return if(spillage) - if(do_after(src, mb_time, target = src) && in_range(src, L)) - fluid_source.trans_to(L, total_fluids*G.fluid_transfer_factor) - total_fluids -= total_fluids*G.fluid_transfer_factor - if(total_fluids > 5) - fluid_source.reaction(L.loc, TOUCH, 1, 0) - fluid_source.clear_reagents() - src.visible_message("[src] climaxes with [L][spillage ? ", overflowing and spilling":""], using [p_their()] [G.name]!", \ - "You orgasm with [L][spillage ? ", spilling out of them":""], using your [G.name].", \ - "You have climaxed with someone[spillage ? ", spilling out of them":""], using your [G.name].") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - if(G.can_climax) - setArousalLoss(min_arousal) + visible_message("[src] climaxes with [L], overflowing and spilling, using [p_their()] [G.name]!", \ + "You orgasm with [L], spilling out of them, using your [G.name].") else //knots and other non-spilling orgasms - if(do_after(src, mb_time, target = src) && in_range(src, L)) - fluid_source.trans_to(L, total_fluids) - total_fluids = 0 - src.visible_message("[src] climaxes with [L], [p_their()] [G.name] spilling nothing!", \ - "You ejaculate with [L], your [G.name] spilling nothing.", \ - "You have climaxed inside someone, your [G.name] spilling nothing.") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - if(G.can_climax) - setArousalLoss(min_arousal) + visible_message("[src] climaxes with [L], [p_their()] [G.name] spilling nothing!", \ + "You ejaculate with [L], your [G.name] spilling nothing.") + SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) + do_climax(fluid_source, spillage ? loc : L, G, spillage) /mob/living/carbon/human/proc/mob_fill_container(obj/item/organ/genital/G, obj/item/reagent_containers/container, mb_time = 30) //For beaker-filling, beware the bartender - var/total_fluids = 0 - var/datum/reagents/fluid_source = null - - if(G.producing) //Can it produce its own fluids, such as breasts? - fluid_source = G.reagents - else - if(!G.linked_organ) - to_chat(src, "Your [G.name] is unable to produce it's own fluids, it's missing the organs for it.") + var/datum/reagents/fluid_source = G.climaxable(src) + if(!fluid_source) + return + if(mb_time) + visible_message("[src] starts to [G.masturbation_verb] their [G.name] over [container].", \ + "You start to [G.masturbation_verb] your [G.name] over [container].") + if(!do_after(src, mb_time, target = src) || !in_range(src, container) || !G.climaxable(src, TRUE)) return - fluid_source = G.linked_organ.reagents - total_fluids = fluid_source.total_volume - - //if(!container) //Something weird happened - // to_chat(src, "You need a container to do this!") - // return - - src.visible_message("[src] starts to [G.masturbation_verb] their [G.name] over [container].", \ - "You start to [G.masturbation_verb] your [G.name] over [container].", \ - "You start to [G.masturbation_verb] your [G.name] over something.") - if(do_after(src, mb_time, target = src) && in_range(src, container)) - fluid_source.trans_to(container, total_fluids) - src.visible_message("[src] uses [p_their()] [G.name] to fill [container]!", \ - "You used your [G.name] to fill [container].", \ - "You have relieved some pressure.") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - if(G.can_climax) - setArousalLoss(min_arousal) + visible_message("[src] uses [p_their()] [G.name] to fill [container]!", \ + "You used your [G.name] to fill [container].") + do_climax(fluid_source, container, G, FALSE) /mob/living/carbon/human/proc/pick_masturbate_genitals() - var/obj/item/organ/genital/ret_organ var/list/genitals_list = list() var/list/worn_stuff = get_equipped_items() for(var/obj/item/organ/genital/G in internal_organs) - if(G.can_masturbate_with) //filter out what you can't masturbate with - if(G.is_exposed(worn_stuff)) //Nude or through_clothing - genitals_list += G + if(G.can_masturbate_with && G.is_exposed(worn_stuff)) //filter out what you can't masturbate with + if(G.can_masturbate_with == MASTURBATE_LINKED_ORGAN && !G.linked_organ) + continue + genitals_list += G if(genitals_list.len) - ret_organ = input(src, "with what?", "Masturbate", null) as null|obj in genitals_list + var/obj/item/organ/genital/ret_organ = input(src, "with what?", "Masturbate", null) as null|obj in genitals_list return ret_organ - return null //error stuff /mob/living/carbon/human/proc/pick_climax_genitals() - var/obj/item/organ/genital/ret_organ var/list/genitals_list = list() var/list/worn_stuff = get_equipped_items() for(var/obj/item/organ/genital/G in internal_organs) - if(G.can_climax) //filter out what you can't masturbate with - if(G.is_exposed(worn_stuff)) //Nude or through_clothing - genitals_list += G + if(G.can_climax && G.is_exposed(worn_stuff)) //filter out what you can't masturbate with + genitals_list += G if(genitals_list.len) - ret_organ = input(src, "with what?", "Climax", null) as null|obj in genitals_list + var/obj/item/organ/genital/ret_organ = input(src, "with what?", "Climax", null) as null|obj in genitals_list return ret_organ - return null //error stuff /mob/living/carbon/human/proc/pick_partner() var/list/partners = list() - if(src.pulling) - partners += src.pulling //Yes, even objects for now - if(src.pulledby) - partners += src.pulledby + if(pulling) + partners += pulling + if(pulledby) + partners += pulledby //Now we got both of them, let's check if they're proper - for(var/I in partners) - if(isliving(I)) - if(iscarbon(I)) - var/mob/living/carbon/C = I - if(!C.exposed_genitals.len) //Nothing through_clothing - if(!C.is_groin_exposed()) //No pants undone - if(!C.is_chest_exposed()) //No chest exposed - partners -= I //Then not proper, remove them - else - partners -= I //No fucking objects + for(var/mob/living/L in partners) + if(iscarbon(L)) + var/mob/living/carbon/C = L + if(!C.exposed_genitals.len && !C.is_groin_exposed() && !C.is_chest_exposed()) //Nothing through_clothing, no proper partner. + partners -= C //NOW the list should only contain correct partners if(!partners.len) - return null //No one left. - return input(src, "With whom?", "Sexual partner", null) in partners //pick one, default to null + return //No one left. + var/mob/living/target = input(src, "With whom?", "Sexual partner", null) as null|anything in partners //pick one, default to null + if(target && in_range(src, target)) + return target /mob/living/carbon/human/proc/pick_climax_container() - var/obj/item/reagent_containers/SC = null var/list/containers_list = list() for(var/obj/item/reagent_containers/container in held_items) @@ -434,12 +321,21 @@ containers_list += container if(containers_list.len) - SC = input(src, "Into or onto what?(Cancel for nowhere)", null) as null|obj in containers_list - if(SC) - if(in_range(src, SC)) - return SC + var/obj/item/reagent_containers/SC = input(src, "Into or onto what?(Cancel for nowhere)", null) as null|obj in containers_list + if(SC && in_range(src, SC)) + return SC return null //If nothing correct, give null. +/mob/living/carbon/human/proc/available_rosie_palms(silent = FALSE) + if(restrained(TRUE)) //TRUE ignores grabs + if(!silent) + to_chat(src, "You can't do that while restrained!") + return FALSE + if(!get_num_arms() || !get_empty_held_indexes()) + if(!silent) + to_chat(src, "You need at least one free arm.") + return FALSE + return TRUE //Here's the main proc itself /mob/living/carbon/human/mob_climax(forced_climax=FALSE) //Forced is instead of the other proc, makes you cum if you have the tools for it, ignoring restraints @@ -447,49 +343,47 @@ if(!forced_climax) //Don't spam the message to the victim if forced to come too fast to_chat(src, "You need to wait [DisplayTimeText((mb_cd_timer - world.time), TRUE)] before you can do that again!") return - mb_cd_timer = (world.time + mb_cd_length) - + mb_cd_timer = world.time + mb_cd_length if(canbearoused && has_dna()) - if(stat==2) - to_chat(src, "You can't do that while dead!") + if(stat == DEAD) + if(!forced_climax) + to_chat(src, "You can't do that while dead!") return if(forced_climax) //Something forced us to cum, this is not a masturbation thing and does not progress to the other checks - for(var/obj/item/organ/O in internal_organs) - if(istype(O, /obj/item/organ/genital)) - var/obj/item/organ/genital/G = O - if(!G.can_climax) //Skip things like wombs and testicles - continue - var/mob/living/partner - var/check_target - var/list/worn_stuff = get_equipped_items() + for(var/obj/item/organ/genital/G in internal_organs) + if(!G.can_climax) //Skip things like wombs and testicles + continue + var/mob/living/partner + var/check_target + var/list/worn_stuff = get_equipped_items() - if(G.is_exposed(worn_stuff)) - if(src.pulling) //Are we pulling someone? Priority target, we can't be making option menus for this, has to be quick - if(isliving(src.pulling)) //Don't fuck objects - check_target = src.pulling - if(src.pulledby && !check_target) //prioritise pulled over pulledby - if(isliving(src.pulledby)) - check_target = src.pulledby - //Now we should have a partner, or else we have to come alone - if(check_target) - if(iscarbon(check_target)) //carbons can have clothes - var/mob/living/carbon/C = check_target - if(C.exposed_genitals.len || C.is_groin_exposed() || C.is_chest_exposed()) //Are they naked enough? - partner = C - else //A cat is fine too - partner = check_target - if(partner) //Did they pass the clothing checks? - mob_climax_partner(G, partner, mb_time = 0) //Instant climax due to forced - continue //You've climaxed once with this organ, continue on - //not exposed OR if no partner was found while exposed, climax alone - mob_climax_outside(G, mb_time = 0) //removed climax timer for sudden, forced orgasms + if(G.is_exposed(worn_stuff)) + if(pulling) //Are we pulling someone? Priority target, we can't be making option menus for this, has to be quick + if(isliving(pulling)) //Don't fuck objects + check_target = pulling + if(pulledby && !check_target) //prioritise pulled over pulledby + if(isliving(pulledby)) + check_target = pulledby + //Now we should have a partner, or else we have to come alone + if(check_target) + if(iscarbon(check_target)) //carbons can have clothes + var/mob/living/carbon/C = check_target + if(C.exposed_genitals.len || C.is_groin_exposed() || C.is_chest_exposed()) //Are they naked enough? + partner = C + else //A cat is fine too + partner = check_target + if(partner) //Did they pass the clothing checks? + mob_climax_partner(G, partner, mb_time = 0) //Instant climax due to forced + continue //You've climaxed once with this organ, continue on + //not exposed OR if no partner was found while exposed, climax alone + mob_climax_outside(G, mb_time = 0) //removed climax timer for sudden, forced orgasms //Now all genitals that could climax, have. //Since this was a forced climax, we do not need to continue with the other stuff return //If we get here, then this is not a forced climax and we gotta check a few things. - if(stat==1) //No sleep-masturbation, you're unconscious. + if(stat == UNCONSCIOUS) //No sleep-masturbation, you're unconscious. to_chat(src, "You must be conscious to do that!") return if(getArousalLoss() < 33) //flat number instead of percentage @@ -497,91 +391,38 @@ return //Ok, now we check what they want to do. - var/choice = input(src, "Select sexual activity", "Sexual activity:") in list("Masturbate", "Climax alone", "Climax with partner", "Fill container") + var/choice = input(src, "Select sexual activity", "Sexual activity:") as null|anything in list("Masturbate", "Climax alone", "Climax with partner", "Fill container") switch(choice) if("Masturbate") - if(restrained(TRUE)) //TRUE ignores grabs - to_chat(src, "You can't do that while restrained!") - return - var/free_hands = get_num_arms() - if(!free_hands) - to_chat(src, "You need at least one free arm.") - return - for(var/helditem in held_items)//how many hands are free - if(isobj(helditem)) - free_hands-- - if(free_hands <= 0) - to_chat(src, "You're holding too many things.") + if(!available_rosie_palms()) return //We got hands, let's pick an organ - var/obj/item/organ/genital/picked_organ - picked_organ = pick_masturbate_genitals() - if(picked_organ) + var/obj/item/organ/genital/picked_organ = pick_masturbate_genitals() + if(picked_organ && available_rosie_palms(TRUE)) mob_masturbate(picked_organ) return - else //They either lack organs that can masturbate, or they didn't pick one. - to_chat(src, "You cannot masturbate without choosing genitals.") - return if("Climax alone") - if(restrained(TRUE)) //TRUE ignores grabs - to_chat(src, "You can't do that while restrained!") + if(!available_rosie_palms()) return - var/free_hands = get_num_arms() - if(!free_hands) - to_chat(src, "You need at least one free arm.") - return - for(var/helditem in held_items)//how many hands are free - if(isobj(helditem)) - free_hands-- - if(free_hands <= 0) - to_chat(src, "You're holding too many things.") - return - //We got hands, let's pick an organ - var/obj/item/organ/genital/picked_organ - picked_organ = pick_climax_genitals() - if(picked_organ) + var/obj/item/organ/genital/picked_organ = pick_climax_genitals() + if(picked_organ && available_rosie_palms(TRUE)) mob_climax_outside(picked_organ) - return - else //They either lack organs that can masturbate, or they didn't pick one. - to_chat(src, "You cannot climax without choosing genitals.") - return if("Climax with partner") //We need no hands, we can be restrained and so on, so let's pick an organ - var/obj/item/organ/genital/picked_organ - picked_organ = pick_climax_genitals() + var/obj/item/organ/genital/picked_organ = pick_climax_genitals() if(picked_organ) var/mob/living/partner = pick_partner() //Get someone if(partner) - var/spillage = input(src, "Would your fluids spill outside?", "Choose overflowing option", "Yes") as anything in list("Yes", "No") - if(spillage == "Yes") - mob_climax_partner(picked_organ, partner, TRUE) - else - mob_climax_partner(picked_organ, partner, FALSE) - return - else - to_chat(src, "You cannot do this alone.") - return - else //They either lack organs that can masturbate, or they didn't pick one. - to_chat(src, "You cannot climax without choosing genitals.") - return + var/spillage = input(src, "Would your fluids spill outside?", "Choose overflowing option", "Yes") as null|anything in list("Yes", "No") + if(spillage && in_range(src, partner)) + mob_climax_partner(picked_organ, partner, spillage == "Yes" ? TRUE : FALSE) if("Fill container") //We'll need hands and no restraints. - if(restrained(TRUE)) //TRUE ignores grabs - to_chat(src, "You can't do that while restrained!") - return - var/free_hands = get_num_arms() - if(!free_hands) - to_chat(src, "You need at least one free arm.") - return - for(var/helditem in held_items)//how many hands are free - if(isobj(helditem)) - free_hands-- - if(free_hands <= 0) - to_chat(src, "You're holding too many things.") + if(!available_rosie_palms()) return //We got hands, let's pick an organ var/obj/item/organ/genital/picked_organ @@ -589,14 +430,6 @@ if(picked_organ) //Good, got an organ, time to pick a container var/obj/item/reagent_containers/fluid_container = pick_climax_container() - if(fluid_container) + if(fluid_container && available_rosie_palms(TRUE)) mob_fill_container(picked_organ, fluid_container) - return - else - to_chat(src, "You cannot do this without anything to fill.") - return - else //They either lack organs that can climax, or they didn't pick one. - to_chat(src, "You cannot fill anything without choosing genitals.") - return - else //Somehow another option was taken, maybe something interrupted the selection or it was cancelled - return //Just end it in that case. + return \ No newline at end of file diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/_genitals.dm similarity index 60% rename from modular_citadel/code/modules/arousal/organs/genitals.dm rename to modular_citadel/code/modules/arousal/organs/_genitals.dm index 63d6834409..2222624050 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/_genitals.dm @@ -6,8 +6,9 @@ var/list/genital_flags = list() var/can_masturbate_with = FALSE var/masturbation_verb = "masturbate" + var/orgasm_verb = "cumming" //present continous var/can_climax = FALSE - var/fluid_transfer_factor = 0.0 //How much would a partner get in them if they climax using this? + var/fluid_transfer_factor = 0 //How much would a partner get in them if they climax using this? var/size = 2 //can vary between num or text, just used in icon_state strings var/fluid_id = null var/fluid_max_volume = 50 @@ -18,48 +19,49 @@ var/aroused_state = FALSE //Boolean used in icon_state strings var/aroused_amount = 50 //This is a num from 0 to 100 for arousal percentage for when to use arousal state icons. var/obj/item/organ/genital/linked_organ + var/linked_organ_slot //only one of the two organs needs this to be set up. update_link() will handle linking the rest. var/through_clothes = FALSE var/internal = FALSE var/hidden = FALSE + var/layer_index = GENITAL_LAYER_INDEX //Order should be very important. FIRST vagina, THEN testicles, THEN penis, as this affects the order they are rendered in. /obj/item/organ/genital/Initialize() . = ..() - if(!reagents) + if(fluid_id) create_reagents(fluid_max_volume) + if(producing) + reagents.add_reagent(fluid_id, fluid_max_volume) update() /obj/item/organ/genital/Destroy() - remove_ref() + if(linked_organ) + update_link(TRUE)//this should remove any other links it has if(owner) - Remove(owner, 1)//this should remove references to it, so it can be GCd correctly - update_link()//this should remove any other links it has + Remove(owner, TRUE)//this should remove references to it, so it can be GCd correctly return ..() -/obj/item/organ/genital/proc/update() +/obj/item/organ/genital/proc/update(removing = FALSE) if(QDELETED(src)) return update_size() update_appearance() - update_link() + if(linked_organ_slot || (linked_organ && removing)) + update_link(removing) //exposure and through-clothing code /mob/living/carbon var/list/exposed_genitals = list() //Keeping track of them so we don't have to iterate through every genitalia and see if exposed /obj/item/organ/genital/proc/is_exposed() - if(!owner) - return FALSE - if(hidden) - return FALSE - if(internal) + if(!owner || hidden || internal) return FALSE if(through_clothes) return TRUE switch(zone) //update as more genitals are added - if("chest") + if(BODY_ZONE_CHEST) return owner.is_chest_exposed() - if("groin") + if(BODY_ZONE_PRECISE_GROIN) return owner.is_groin_exposed() return FALSE @@ -107,22 +109,37 @@ picked_organ.toggle_visibility(picked_visibility) return - - - /obj/item/organ/genital/proc/update_size() return /obj/item/organ/genital/proc/update_appearance() return -/obj/item/organ/genital/proc/update_link() - return +/obj/item/organ/genital/on_life() + if(!reagents || !owner) + return + reagents.maximum_volume = fluid_max_volume + if(fluid_id && producing) + generate_fluid() -/obj/item/organ/genital/proc/remove_ref() - if(linked_organ) - linked_organ.linked_organ = null +/obj/item/organ/genital/proc/generate_fluid() + if(owner.stat != DEAD && reagents.total_volume < reagents.maximum_volume) + reagents.isolate_reagent(fluid_id)//remove old reagents if it changed and just clean up generally + reagents.add_reagent(fluid_id, (fluid_mult * fluid_rate))//generate the cum + return TRUE + return FALSE + +/obj/item/organ/genital/proc/update_link(removing = FALSE) + if(!removing && owner) + linked_organ = owner.getorganslot(linked_organ_slot) + if(linked_organ) + linked_organ.linked_organ = src + return TRUE + else + if(linked_organ) + linked_organ.linked_organ = null linked_organ = null + return FALSE /obj/item/organ/genital/Insert(mob/living/carbon/M, special = 0) ..() @@ -130,127 +147,42 @@ /obj/item/organ/genital/Remove(mob/living/carbon/M, special = 0) ..() - update() + update(TRUE) //proc to give a player their genitals and stuff when they log in -/mob/living/carbon/human/proc/give_genitals(clean=0)//clean will remove all pre-existing genitals. proc will then give them any genitals that are enabled in their DNA +/mob/living/carbon/human/proc/give_genitals(clean = FALSE)//clean will remove all pre-existing genitals. proc will then give them any genitals that are enabled in their DNA if(clean) - var/obj/item/organ/genital/GtoClean - for(GtoClean in internal_organs) - qdel(GtoClean) + for(var/obj/item/organ/genital/G in internal_organs) + qdel(G) if (NOGENITALS in dna.species.species_traits) return - //Order should be very important. FIRST vagina, THEN testicles, THEN penis, as this affects the order they are rendered in. if(dna.features["has_vag"]) - give_vagina() + give_genital(/obj/item/organ/genital/vagina) if(dna.features["has_womb"]) - give_womb() + give_genital(/obj/item/organ/genital/womb) if(dna.features["has_balls"]) - give_balls() + give_genital(/obj/item/organ/genital/testicles) if(dna.features["has_breasts"]) // since we have multi-boobs as a thing, we'll want to at least draw over these. but not over the pingas. - give_breasts() + give_genital(/obj/item/organ/genital/breasts) if(dna.features["has_cock"]) - give_penis() + give_genital(/obj/item/organ/genital/penis) + /* if(dna.features["has_ovi"]) - give_ovipositor() + give_genital(/obj/item/organ/genital/ovipositor) if(dna.features["has_eggsack"]) - give_eggsack() + give_genital(/obj/item/organ/genital/eggsack) + */ -/mob/living/carbon/human/proc/give_penis() - if(!dna) +/mob/living/carbon/human/proc/give_genital(obj/item/organ/genital/G) + if(!dna || (NOGENITALS in dna.species.species_traits) || getorganslot(initial(G.slot))) return FALSE - if(NOGENITALS in dna.species.species_traits) - return FALSE - if(!getorganslot("penis")) - var/obj/item/organ/genital/penis/P = new - P.Insert(src) - if(P) - if(dna.species.use_skintones && dna.features["genitals_use_skintone"]) - P.color = "#[skintone2hex(skin_tone)]" - else - P.color = "#[dna.features["cock_color"]]" - P.length = dna.features["cock_length"] - P.girth_ratio = dna.features["cock_girth_ratio"] - P.shape = dna.features["cock_shape"] - P.update() + G = new + if(istype(G, /obj/item/organ/genital)) //badminnery-proofing. + G.get_features(src) + G.Insert(src) -/mob/living/carbon/human/proc/give_balls() - if(!dna) - return FALSE - if(NOGENITALS in dna.species.species_traits) - return FALSE - if(!getorganslot("testicles")) - var/obj/item/organ/genital/testicles/T = new - T.Insert(src) - if(T) - if(dna.species.use_skintones && dna.features["genitals_use_skintone"]) - T.color = "#[skintone2hex(skin_tone)]" - else - T.color = "#[dna.features["balls_color"]]" - T.size = dna.features["balls_size"] - T.sack_size = dna.features["balls_sack_size"] - T.shape = dna.features["balls_shape"] - if(dna.features["balls_shape"] == "Hidden") - T.internal = TRUE - else - T.internal = FALSE - T.fluid_id = dna.features["balls_fluid"] - T.fluid_rate = dna.features["balls_cum_rate"] - T.fluid_mult = dna.features["balls_cum_mult"] - T.fluid_efficiency = dna.features["balls_efficiency"] - T.update() - -/mob/living/carbon/human/proc/give_breasts() - if(!dna) - return FALSE - if(NOGENITALS in dna.species.species_traits) - return FALSE - if(!getorganslot("breasts")) - var/obj/item/organ/genital/breasts/B = new - B.Insert(src) - if(B) - if(dna.species.use_skintones && dna.features["genitals_use_skintone"]) - B.color = "#[skintone2hex(skin_tone)]" - else - B.color = "#[dna.features["breasts_color"]]" - B.size = dna.features["breasts_size"] - B.shape = dna.features["breasts_shape"] - B.fluid_id = dna.features["breasts_fluid"] - B.update() - - -/mob/living/carbon/human/proc/give_ovipositor() +/obj/item/organ/genital/proc/get_features(datum/dna/D) return -/mob/living/carbon/human/proc/give_eggsack() - return - -/mob/living/carbon/human/proc/give_vagina() - if(!dna) - return FALSE - if(NOGENITALS in dna.species.species_traits) - return FALSE - if(!getorganslot("vagina")) - var/obj/item/organ/genital/vagina/V = new - V.Insert(src) - if(V) - if(dna.species.use_skintones && dna.features["genitals_use_skintone"]) - V.color = "#[skintone2hex(skin_tone)]" - else - V.color = "[dna.features["vag_color"]]" - V.shape = "[dna.features["vag_shape"]]" - V.update() - -/mob/living/carbon/human/proc/give_womb() - if(!dna) - return FALSE - if(NOGENITALS in dna.species.species_traits) - return FALSE - if(!getorganslot("womb")) - var/obj/item/organ/genital/womb/W = new - W.Insert(src) - if(W) - W.update() - /datum/species/proc/genitals_layertext(layer) switch(layer) @@ -267,7 +199,7 @@ if(ishuman(user)) var/mob/living/carbon/human/H = user H.update_genitals() - ..() + . = ..() /mob/living/carbon/human/doUnEquip(obj/item/I, force) . = ..() @@ -276,20 +208,16 @@ update_genitals() /mob/living/carbon/human/proc/update_genitals() - if(src && !QDELETED(src)) + if(!QDELETED(src)) dna.species.handle_genitals(src) /datum/species/proc/handle_genitals(mob/living/carbon/human/H) if(!H)//no args CRASH("H = null") - if(!LAZYLEN(H.internal_organs))//if they have no organs, we're done - return - if(NOGENITALS in species_traits)//golems and such - return - if(HAS_TRAIT(H, TRAIT_HUSK)) + if(!LAZYLEN(H.internal_organs) || (NOGENITALS in species_traits) || HAS_TRAIT(H, TRAIT_HUSK)) return - var/list/genitals_to_add = list() + var/list/genitals_to_add[GENITAL_LAYER_INDEX_LENGTH] var/list/relevant_layers = list(GENITALS_BEHIND_LAYER, GENITALS_ADJ_LAYER, GENITALS_FRONT_LAYER) var/list/standing = list() var/size @@ -300,18 +228,16 @@ //start scanning for genitals //var/list/worn_stuff = H.get_equipped_items()//cache this list so it's not built again - for(var/obj/item/organ/O in H.internal_organs) - if(isgenital(O)) - var/obj/item/organ/genital/G = O - if(G.hidden) - return //we're gunna just hijack this for updates. - if(G.is_exposed()) //Checks appropriate clothing slot and if it's through_clothes - genitals_to_add += H.getorganslot(G.slot) + for(var/obj/item/organ/genital/G in H.internal_organs) + if(G.hidden) + return //we're gunna just hijack this for updates. + if(G.is_exposed()) //Checks appropriate clothing slot and if it's through_clothes + LAZYADD(genitals_to_add[G.layer_index], G) //Now we added all genitals that aren't internal and should be rendered //start applying overlays for(var/layer in relevant_layers) - var/layertext = genitals_layertext(layer) + var/layertext = flatten_list(genitals_layertext(layer)) for(var/obj/item/organ/genital/G in genitals_to_add) var/datum/sprite_accessory/S size = G.size @@ -357,3 +283,4 @@ for(var/L in relevant_layers) H.apply_overlay(L) + diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index 1223f0b616..f6d5673a53 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -1,38 +1,20 @@ /obj/item/organ/genital/breasts - name = "breasts" - desc = "Female milk producing organs." - icon_state = "breasts" - icon = 'modular_citadel/icons/obj/genitals/breasts.dmi' - zone = "chest" - slot = "breasts" - size = BREASTS_SIZE_DEF - fluid_id = "milk" - var/amount = 2 - producing = TRUE - shape = "pair" - can_masturbate_with = TRUE - masturbation_verb = "massage" - can_climax = TRUE - fluid_transfer_factor = 0.5 - -/obj/item/organ/genital/breasts/Initialize() - . = ..() - reagents.add_reagent(fluid_id, fluid_max_volume) - -/obj/item/organ/genital/breasts/on_life() - if(QDELETED(src)) - return - if(!reagents || !owner) - return - reagents.maximum_volume = fluid_max_volume - if(fluid_id && producing) - generate_milk() - -/obj/item/organ/genital/breasts/proc/generate_milk() - if(owner.stat == DEAD) - return FALSE - reagents.isolate_reagent(fluid_id) - reagents.add_reagent(fluid_id, (fluid_mult * fluid_rate)) + name = "breasts" + desc = "Female milk producing organs." + icon_state = "breasts" + icon = 'modular_citadel/icons/obj/genitals/breasts.dmi' + zone = BODY_ZONE_CHEST + slot = ORGAN_SLOT_BREASTS + size = BREASTS_SIZE_DEF + fluid_id = "milk" + var/amount = 2 + producing = TRUE + shape = "pair" + can_masturbate_with = TRUE + masturbation_verb = "massage" + orgasm_verb = "leaking" + can_climax = TRUE + fluid_transfer_factor = 0.5 /obj/item/organ/genital/breasts/update_appearance() var/lowershape = lowertext(shape) @@ -65,3 +47,13 @@ var/mob/living/carbon/human/H = owner icon_state = sanitize_text(string) H.update_genitals() + +/obj/item/organ/genital/breasts/get_features(mob/living/carbon/human/H) + var/datum/dna/D = H.dna + if(D.species.use_skintones && D.features["genitals_use_skintone"]) + color = "#[skintone2hex(H.skin_tone)]" + else + color = "#[D.features["breasts_color"]]" + size = D.features["breasts_size"] + shape = D.features["breasts_shape"] + fluid_id = D.features["breasts_fluid"] diff --git a/modular_citadel/code/modules/arousal/organs/eggsack.dm b/modular_citadel/code/modules/arousal/organs/eggsack.dm index 402d246e40..3282bad5f9 100644 --- a/modular_citadel/code/modules/arousal/organs/eggsack.dm +++ b/modular_citadel/code/modules/arousal/organs/eggsack.dm @@ -1,14 +1,14 @@ /obj/item/organ/genital/eggsack - name = "Egg sack" - desc = "An egg producing reproductive organ." - icon_state = "egg_sack" - icon = 'modular_citadel/icons/obj/genitals/ovipositor.dmi' - zone = "groin" - slot = "testicles" - color = null //don't use the /genital color since it already is colored + name = "Egg sack" + desc = "An egg producing reproductive organ." + icon_state = "egg_sack" + icon = 'modular_citadel/icons/obj/genitals/ovipositor.dmi' + zone = BODY_ZONE_PRECISE_GROIN + slot = ORGAN_SLOT_TESTICLES + linked_organ_slot = ORGAN_SLOT_PENIS + color = null //don't use the /genital color since it already is colored internal = TRUE var/egg_girth = EGG_GIRTH_DEF var/cum_mult = CUM_RATE_MULT var/cum_rate = CUM_RATE var/cum_efficiency = CUM_EFFICIENCY - var/obj/item/organ/ovipositor/linked_ovi diff --git a/modular_citadel/code/modules/arousal/organs/genitals_sprite_accessories.dm b/modular_citadel/code/modules/arousal/organs/genitals_sprite_accessories.dm index b913a90fb6..4ba2e373a2 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals_sprite_accessories.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals_sprite_accessories.dm @@ -5,11 +5,9 @@ //DICKS,COCKS,PENISES,WHATEVER YOU WANT TO CALL THEM /datum/sprite_accessory/penis icon = 'modular_citadel/icons/obj/genitals/penis_onmob.dmi' - icon_state = null name = "penis" //the preview name of the accessory - gender_specific = 0 //Might be needed somewhere down the list. color_src = "cock_color" - locked = 0 + alt_aroused = TRUE /datum/sprite_accessory/penis/human icon_state = "human" @@ -62,27 +60,21 @@ icon_state = "testicle" name = "testicle" //the preview name of the accessory color_src = "balls_color" - locked = 0 /datum/sprite_accessory/testicles/hidden - icon_state = "hidden" + icon_state = "none" name = "Hidden" - alt_aroused = TRUE /datum/sprite_accessory/testicles/single icon_state = "single" name = "Single" - alt_aroused = TRUE //Vaginas /datum/sprite_accessory/vagina icon = 'modular_citadel/icons/obj/genitals/vagina_onmob.dmi' icon_state = null name = "vagina" - gender_specific = 0 color_src = "vag_color" - locked = 0 - alt_aroused = FALSE //if this is TRUE, then the genitals will use an alternate sprite for aroused states /datum/sprite_accessory/vagina/human icon_state = "human" @@ -114,35 +106,28 @@ //BREASTS BE HERE /datum/sprite_accessory/breasts icon = 'modular_citadel/icons/obj/genitals/breasts_onmob.dmi' - icon_state = null name = "breasts" - gender_specific = 0 color_src = "breasts_color" - locked = 0 + alt_aroused = TRUE /datum/sprite_accessory/breasts/pair icon_state = "pair" name = "Pair" - alt_aroused = TRUE /datum/sprite_accessory/breasts/quad icon_state = "quad" name = "Quad" - alt_aroused = TRUE /datum/sprite_accessory/breasts/sextuple icon_state = "sextuple" name = "Sextuple" - alt_aroused = TRUE //OVIPOSITORS BE HERE /datum/sprite_accessory/ovipositor icon = 'modular_citadel/icons/obj/genitals/penis_onmob.dmi' icon_state = null name = "Ovipositor" //the preview name of the accessory - gender_specific = 0 //Might be needed somewhere down the list. color_src = "cock_color" - locked = 0 /datum/sprite_accessory/ovipositor/knotted icon_state = "knotted" diff --git a/modular_citadel/code/modules/arousal/organs/ovipositor.dm b/modular_citadel/code/modules/arousal/organs/ovipositor.dm index 76bf60d93c..92b608f905 100644 --- a/modular_citadel/code/modules/arousal/organs/ovipositor.dm +++ b/modular_citadel/code/modules/arousal/organs/ovipositor.dm @@ -3,14 +3,13 @@ desc = "An egg laying reproductive organ." icon_state = "ovi_knotted_2" icon = 'modular_citadel/icons/obj/genitals/ovipositor.dmi' - zone = "groin" - slot = "penis" - w_class = 3 + zone = BODY_ZONE_PRECISE_GROIN + slot = ORGAN_SLOT_PENIS shape = "knotted" size = 3 + layer_index = PENIS_LAYER_INDEX var/length = 6 //inches var/girth = 0 var/girth_ratio = COCK_GIRTH_RATIO_DEF //citadel_defines.dm for these defines var/knot_girth_ratio = KNOT_GIRTH_RATIO_DEF var/list/oviflags = list() - var/obj/item/organ/eggsack/linked_eggsack diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm index b6cb8fa4b2..2593460a32 100644 --- a/modular_citadel/code/modules/arousal/organs/penis.dm +++ b/modular_citadel/code/modules/arousal/organs/penis.dm @@ -1,22 +1,23 @@ /obj/item/organ/genital/penis - name = "penis" - desc = "A male reproductive organ." - icon_state = "penis" - icon = 'modular_citadel/icons/obj/genitals/penis.dmi' - zone = "groin" - slot = ORGAN_SLOT_PENIS - can_masturbate_with = TRUE - masturbation_verb = "stroke" - can_climax = TRUE - fluid_transfer_factor = 0.5 - size = 2 //arbitrary value derived from length and girth for sprites. - var/length = 6 //inches - var/cached_length //used to detect a change in length - var/girth = 0 - var/girth_ratio = COCK_GIRTH_RATIO_DEF //0.73; check citadel_defines.dm - var/knot_girth_ratio = KNOT_GIRTH_RATIO_DEF - var/list/dickflags = list() - var/list/knotted_types = list("knotted", "barbed, knotted") + name = "penis" + desc = "A male reproductive organ." + icon_state = "penis" + icon = 'modular_citadel/icons/obj/genitals/penis.dmi' + zone = BODY_ZONE_PRECISE_GROIN + slot = ORGAN_SLOT_PENIS + can_masturbate_with = TRUE + masturbation_verb = "stroke" + can_climax = TRUE + fluid_transfer_factor = 0.5 + size = 2 //arbitrary value derived from length and girth for sprites. + layer_index = PENIS_LAYER_INDEX + var/length = 6 //inches + var/cached_length //used to detect a change in length + var/girth = 0 + var/girth_ratio = COCK_GIRTH_RATIO_DEF //0.73; check citadel_defines.dm + var/knot_girth_ratio = KNOT_GIRTH_RATIO_DEF + var/list/dickflags = list() + var/list/knotted_types = list("knotted", "barbed, knotted") /obj/item/organ/genital/penis/update_size() if(length == cached_length) @@ -38,7 +39,7 @@ /obj/item/organ/genital/penis/update_appearance() var/string var/lowershape = lowertext(shape) - desc = "You see [aroused_state ? "an erect" : "a flaccid"] [lowershape] penis. You estimate it's about [round(length, 0.25)] inch[round(length, 0.25) != 1 ? "es" : ""] long and [round(girth, 0.25)] inch[round(girth, 0.25) != 1 ? "es" : ""] in girth." + desc = "You see [aroused_state ? "an erect" : "a flaccid"] [lowershape] [name]. You estimate it's about [round(length, 0.25)] inch[round(length, 0.25) != 1 ? "es" : ""] long and [round(girth, 0.25)] inch[round(girth, 0.25) != 1 ? "es" : ""] in girth." if(owner) if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"]) @@ -54,13 +55,12 @@ icon_state = sanitize_text(string) H.update_genitals() -/obj/item/organ/genital/penis/update_link() - if(owner) - linked_organ = (owner.getorganslot("testicles")) - if(linked_organ) - linked_organ.linked_organ = src - linked_organ.size = size +/obj/item/organ/genital/penis/get_features(mob/living/carbon/human/H) + var/datum/dna/D = H.dna + if(D.species.use_skintones && D.features["genitals_use_skintone"]) + color = "#[skintone2hex(H.skin_tone)]" else - if(linked_organ) - linked_organ.linked_organ = null - linked_organ = null + color = "#[D.features["cock_color"]]" + length = D.features["cock_length"] + girth_ratio = D.features["cock_girth_ratio"] + shape = D.features["cock_shape"] diff --git a/modular_citadel/code/modules/arousal/organs/testicles.dm b/modular_citadel/code/modules/arousal/organs/testicles.dm index 1e6b4d62d4..de7b6d6f70 100644 --- a/modular_citadel/code/modules/arousal/organs/testicles.dm +++ b/modular_citadel/code/modules/arousal/organs/testicles.dm @@ -1,56 +1,34 @@ /obj/item/organ/genital/testicles - name = "testicles" - desc = "A male reproductive organ." - icon_state = "testicles" - icon = 'modular_citadel/icons/obj/genitals/testicles.dmi' - zone = "groin" - slot = "testicles" - size = BALLS_SIZE_MIN - var/size_name = "average" - shape = "single" - var/sack_size = BALLS_SACK_SIZE_DEF - fluid_id = "semen" - producing = TRUE - can_masturbate_with = FALSE - masturbation_verb = "massage" - can_climax = TRUE - var/sent_full_message = TRUE //defaults to 1 since they're full to start + name = "testicles" + desc = "A male reproductive organ." + icon_state = "testicles" + icon = 'modular_citadel/icons/obj/genitals/testicles.dmi' + zone = BODY_ZONE_PRECISE_GROIN + slot = ORGAN_SLOT_TESTICLES + size = BALLS_SIZE_MIN + linked_organ_slot = ORGAN_SLOT_PENIS + var/size_name = "average" + shape = "single" + var/sack_size = BALLS_SACK_SIZE_DEF + fluid_id = "semen" + producing = TRUE + can_masturbate_with = MASTURBATE_LINKED_ORGAN + masturbation_verb = "massage" + layer_index = TESTICLES_LAYER_INDEX + var/size_linked = FALSE -/obj/item/organ/genital/testicles/Initialize() +/obj/item/organ/genital/testicles/generate_fluid() + if(!linked_organ && !update_link()) + return FALSE . = ..() - reagents.add_reagent(fluid_id, fluid_max_volume) + if(.) + send_full_message() -/obj/item/organ/genital/testicles/on_life() - if(QDELETED(src)) - return - if(reagents && producing) - generate_cum() - -/obj/item/organ/genital/testicles/proc/generate_cum() - reagents.maximum_volume = fluid_max_volume - if(reagents.total_volume >= reagents.maximum_volume) - if(!sent_full_message) - send_full_message() - sent_full_message = TRUE - return FALSE - sent_full_message = FALSE - update_link() - if(!linked_organ) - return FALSE - reagents.isolate_reagent(fluid_id)//remove old reagents if it changed and just clean up generally - reagents.add_reagent(fluid_id, (fluid_mult * fluid_rate))//generate the cum - -/obj/item/organ/genital/testicles/update_link() - if(owner && !QDELETED(src)) - linked_organ = (owner.getorganslot("penis")) - if(linked_organ) - linked_organ.linked_organ = src - size = linked_organ.size - - else - if(linked_organ) - linked_organ.linked_organ = null - linked_organ = null +/obj/item/organ/genital/testicles/update_link(removing = FALSE) + . = ..() + if(. && !size_linked) + size = linked_organ.size + size_linked = TRUE /obj/item/organ/genital/testicles/proc/send_full_message(msg = "Your balls finally feel full, again.") if(owner && istext(msg)) @@ -59,19 +37,16 @@ /obj/item/organ/genital/testicles/update_appearance() switch(size) - if(0.1 to 1) + if(BALLS_SIZE_MIN) size_name = "average" - if(1.1 to 2) + if(BALLS_SIZE_DEF) size_name = "enlarged" - if(2.1 to INFINITY) + if(BALLS_SIZE_MAX) size_name = "engorged" else size_name = "nonexistant" - if(!internal) - desc = "You see an [size_name] pair of testicles." - else - desc = "They don't have any testicles you can see." + desc = "You see an [size_name] pair of testicles." if(owner) var/string @@ -87,3 +62,21 @@ var/mob/living/carbon/human/H = owner icon_state = sanitize_text(string) H.update_genitals() + +/obj/item/organ/genital/testicles/get_features(mob/living/carbon/human/H) + var/datum/dna/D = H.dna + if(D.species.use_skintones && D.features["genitals_use_skintone"]) + color = "#[skintone2hex(H.skin_tone)]" + else + color = "#[D.features["balls_color"]]" + size = D.features["balls_size"] + sack_size = D.features["balls_sack_size"] + shape = D.features["balls_shape"] + if(D.features["balls_shape"] == "Hidden") + internal = TRUE + else + internal = FALSE + fluid_id = D.features["balls_fluid"] + fluid_rate = D.features["balls_cum_rate"] + fluid_mult = D.features["balls_cum_mult"] + fluid_efficiency = D.features["balls_efficiency"] diff --git a/modular_citadel/code/modules/arousal/organs/vagina.dm b/modular_citadel/code/modules/arousal/organs/vagina.dm index 8c15aa5437..af2beb5f79 100644 --- a/modular_citadel/code/modules/arousal/organs/vagina.dm +++ b/modular_citadel/code/modules/arousal/organs/vagina.dm @@ -1,25 +1,24 @@ /obj/item/organ/genital/vagina - name = "vagina" - desc = "A female reproductive organ." - icon = 'modular_citadel/icons/obj/genitals/vagina.dmi' - icon_state = "vagina" - zone = "groin" - slot = "vagina" - size = 1 //There is only 1 size right now - can_masturbate_with = TRUE - masturbation_verb = "finger" - can_climax = TRUE + name = "vagina" + desc = "A female reproductive organ." + icon = 'modular_citadel/icons/obj/genitals/vagina.dmi' + icon_state = ORGAN_SLOT_VAGINA + zone = BODY_ZONE_PRECISE_GROIN + slot = "vagina" + size = 1 //There is only 1 size right now + can_masturbate_with = TRUE + masturbation_verb = "finger" + can_climax = TRUE fluid_transfer_factor = 0.1 //Yes, some amount is exposed to you, go get your AIDS - w_class = 3 - var/cap_length = 8//D E P T H (cap = capacity) - var/cap_girth = 12 + layer_index = VAGINA_LAYER_INDEX + var/cap_length = 8//D E P T H (cap = capacity) + var/cap_girth = 12 var/cap_girth_ratio = 1.5 - var/clits = 1 - var/clit_diam = 0.25 - var/clit_len = 0.25 + var/clits = 1 + var/clit_diam = 0.25 + var/clit_len = 0.25 var/list/vag_types = list("tentacle", "dentata", "hairy", "spade", "furred") - /obj/item/organ/genital/vagina/update_appearance() var/string //Keeping this code here, so making multiple sprites for the different kinds is easier. var/lowershape = lowertext(shape) @@ -63,12 +62,10 @@ icon_state = sanitize_text(string) H.update_genitals() -/obj/item/organ/genital/vagina/update_link() - if(owner) - linked_organ = (owner.getorganslot("womb")) - if(linked_organ) - linked_organ.linked_organ = src +/obj/item/organ/genital/vagina/get_features(mob/living/carbon/human/H) + var/datum/dna/D = H.dna + if(D.species.use_skintones && D.features["genitals_use_skintone"]) + color = "#[skintone2hex(H.skin_tone)]" else - if(linked_organ) - linked_organ.linked_organ = null - linked_organ = null + color = "[D.features["vag_color"]]" + shape = "[D.features["vag_shape"]]" diff --git a/modular_citadel/code/modules/arousal/organs/womb.dm b/modular_citadel/code/modules/arousal/organs/womb.dm index 686d9059a0..d99206d0f1 100644 --- a/modular_citadel/code/modules/arousal/organs/womb.dm +++ b/modular_citadel/code/modules/arousal/organs/womb.dm @@ -1,41 +1,11 @@ /obj/item/organ/genital/womb - name = "womb" - desc = "A female reproductive organ." - icon = 'modular_citadel/icons/obj/genitals/vagina.dmi' - icon_state = "womb" - zone = "groin" - slot = "womb" - internal = TRUE - fluid_id = "femcum" - producing = TRUE - -/obj/item/organ/genital/womb/Initialize() - . = ..() - reagents.add_reagent(fluid_id, fluid_max_volume) - -/obj/item/organ/genital/womb/on_life() - if(QDELETED(src)) - return - if(reagents && producing) - generate_femcum() - -/obj/item/organ/genital/womb/proc/generate_femcum() - reagents.maximum_volume = fluid_max_volume - update_link() - if(!linked_organ) - return FALSE - reagents.isolate_reagent(fluid_id)//remove old reagents if it changed and just clean up generally - reagents.add_reagent(fluid_id, (fluid_mult * fluid_rate))//generate the cum - -/obj/item/organ/genital/womb/update_link() - if(owner) - linked_organ = (owner.getorganslot("vagina")) - if(linked_organ) - linked_organ.linked_organ = src - else - if(linked_organ) - linked_organ.linked_organ = null - linked_organ = null - -/obj/item/organ/genital/womb/Destroy() - return ..() + name = "womb" + desc = "A female reproductive organ." + icon = 'modular_citadel/icons/obj/genitals/vagina.dmi' + icon_state = "womb" + zone = BODY_ZONE_PRECISE_GROIN + slot = ORGAN_SLOT_WOMB + internal = TRUE + fluid_id = "femcum" + producing = TRUE + linked_organ_slot = ORGAN_SLOT_VAGINA \ No newline at end of file diff --git a/modular_citadel/code/modules/client/preferences_savefile.dm b/modular_citadel/code/modules/client/preferences_savefile.dm index 2921f70684..be9e92d4c3 100644 --- a/modular_citadel/code/modules/client/preferences_savefile.dm +++ b/modular_citadel/code/modules/client/preferences_savefile.dm @@ -32,7 +32,6 @@ WRITE_FILE(S["feature_ipc_antenna"], features["ipc_antenna"]) //Citadel WRITE_FILE(S["feature_genitals_use_skintone"], features["genitals_use_skintone"]) - WRITE_FILE(S["feature_exhibitionist"], features["exhibitionist"]) WRITE_FILE(S["feature_mcolor2"], features["mcolor2"]) WRITE_FILE(S["feature_mcolor3"], features["mcolor3"]) WRITE_FILE(S["feature_mam_body_markings"], features["mam_body_markings"]) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/life.dm b/modular_citadel/code/modules/mob/living/carbon/human/life.dm index e728d70c97..fbaa1b4b58 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/life.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/life.dm @@ -1,7 +1,7 @@ -/mob/living/carbon/human/Life() +/mob/living/carbon/human/Life(seconds, times_fired) //citadel code if(stat != DEAD) - handle_arousal() + handle_arousal(times_fired) . = ..() /mob/living/carbon/human/calculate_affecting_pressure(pressure) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index fa6ded8065..0e6c12053a 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -78,42 +78,30 @@ else H.facial_hair_style = "Shaved" //handle normal hair - var/new_style = input(owner, "Select a hair style", "Hair Alterations") as null|anything in GLOB.hair_styles_list + var/new_style = input(owner, "Select a hair style", "Hair Alterations") as null|anything in GLOB.hair_styles_list if(new_style) H.hair_style = new_style H.update_hair() else if (select_alteration == "Genitals") - var/list/organs = list() var/operation = input("Select organ operation.", "Organ Manipulation", "cancel") in list("add sexual organ", "remove sexual organ", "cancel") switch(operation) if("add sexual organ") - var/new_organ = input("Select sexual organ:", "Organ Manipulation") in list("Penis", "Testicles", "Breasts", "Vagina", "Womb", "Cancel") - if(new_organ == "Penis") - H.give_penis() - else if(new_organ == "Testicles") - H.give_balls() - else if(new_organ == "Breasts") - H.give_breasts() - else if(new_organ == "Vagina") - H.give_vagina() - else if(new_organ == "Womb") - H.give_womb() - else + var/new_organ = input("Select sexual organ:", "Organ Manipulation") as null|anything in GLOB.genitals_list + if(!new_organ) return + H.give_genital(GLOB.genitals_list[new_organ]) + if("remove sexual organ") + var/list/organs = list() for(var/obj/item/organ/genital/X in H.internal_organs) var/obj/item/organ/I = X organs["[I.name] ([I.type])"] = I - var/obj/item/organ = input("Select sexual organ:", "Organ Manipulation", null) in organs - organ = organs[organ] - if(!organ) + var/obj/item/O = input("Select sexual organ:", "Organ Manipulation", null) as null|anything in organs + var/obj/item/organ/genital/G = organs[O] + if(!G) return - var/obj/item/organ/genital/O - if(isorgan(organ)) - O = organ - O.Remove(H) - organ.forceMove(get_turf(H)) - qdel(organ) + G.forceMove(get_turf(H)) + qdel(G) H.update_genitals() else if (select_alteration == "Ears") @@ -203,8 +191,8 @@ if(new_shape) H.dna.features["cock_shape"] = new_shape H.update_genitals() - H.give_balls() - H.give_penis() + H.give_genital(/obj/item/organ/genital/testicles) + H.give_genital(/obj/item/organ/genital/penis) H.apply_overlay() @@ -216,8 +204,8 @@ if(new_shape) H.dna.features["vag_shape"] = new_shape H.update_genitals() - H.give_womb() - H.give_vagina() + H.give_genital(/obj/item/organ/genital/womb) + H.give_genital(/obj/item/organ/genital/vagina) H.apply_overlay() else if (select_alteration == "Penis Length") @@ -229,8 +217,8 @@ H.dna.features["cock_length"] = max(min( round(text2num(new_length)), COCK_SIZE_MAX),COCK_SIZE_MIN) H.update_genitals() H.apply_overlay() - H.give_balls() - H.give_penis() + H.give_genital(/obj/item/organ/genital/testicles) + H.give_genital(/obj/item/organ/genital/penis) else if (select_alteration == "Breast Size") for(var/obj/item/organ/genital/breasts/X in H.internal_organs) @@ -241,7 +229,7 @@ H.dna.features["breasts_size"] = new_size H.update_genitals() H.apply_overlay() - H.give_breasts() + H.give_genital(/obj/item/organ/genital/breasts) else if (select_alteration == "Breast Shape") for(var/obj/item/organ/genital/breasts/X in H.internal_organs) @@ -252,7 +240,7 @@ H.dna.features["breasts_shape"] = new_shape H.update_genitals() H.apply_overlay() - H.give_breasts() + H.give_genital(/obj/item/organ/genital/breasts) else return diff --git a/modular_citadel/icons/obj/genitals/testicles_onmob.dmi b/modular_citadel/icons/obj/genitals/testicles_onmob.dmi index 33659cf13cb42239e1fc3a2e8ccf3c02ff42ea26..7d4d2610c5337d0877fd9d741c38998893444576 100644 GIT binary patch delta 554 zcmV+_0@eNZ1+oNFiBL{Q4GJ0x0000DNk~Le0002s0002s1Oos70O$jE(f|Me6;Mo6 zMZmzo)YR1W-sjr1vg+B~<;Kgvz`!ul@9_Wt00DGTPE!Ct=GbNc0069!P!xZXK@Ng2 z5JlJRDH>R7D0S;X(nf0{S7?ZgbP~jbY4rMn96%j*|1aLWWNscbK#O z0#@$iYx_T2a;4=8so_e^3aNkI5PRSW)%=P1;ss^T%om#<#JO^{{k;Ag^Y-h|ENe+x z0003KNklWH z0{{ScN7EDnhj1SI-)!9Z91`bg`8@W&Qv3Ol7Ooo@9n-wF?mhqjfL~KOPl3|@=eOt( z>Rs-CrOOx!W*g?^{#Q;qT`!@(rFs|pU#UH=dqDsIfK9~y_m>fcVL2W9Usev-kIU)Y s|Dvz*52)AWbcOymyHKorp9v561}X^=h=s}*u>b%707*qoM6N<$f}&*w)Bpeg literal 759 zcmeAS@N?(olHy`uVBq!ia0y~yU~B+k7G|JG*vl0?KuRdUC&cx@fdf~rT={nI`K>LR zUfsO&^w{Z}CW78TS;mqezhDN3XE)M-oG(=&5hX6E#mPmP1tppJc?=8{bCynXw_}%}Keknxc>Bd#9`$GO? z9)BR;e53oW+2c1)Z@*a9J86#PYin`)*#fgOmZu8kcKo|_JE2K_*S%SHQl2e1&zZhf z{%{Rn`u2@GZ&%L!&r&RM#wT#zs;Fewz_3NjgiNQh1bZ5Uu2|{hD|#?Q(C4#n!)NP- z8BO9-%F->wcWgY;tNQa?i^=0-T;^da$*q#s_qUZDPEaktG3V{ggSm$s1Xu&4 zgB$KLE@E<-WX-PC@UPl)$(%h6ZCCpa3cY`tlKC$s{Lz=~uYtkFkYUh!(81pBpVx`- z`OB>~eB%ZQGJI$}wqdT`v&o;$wO+rio3%>p+tG?_yIK5e-!p9u`!37`QuD(l@#d`A z?@xc)78+Cj{MmBNSD&?Szx*1z;9Kp3tM&^&-sP9+{(OKDr1Z(@ch950hd$r@`)5Ub zk=^e3^*>oR0onIA{jAo0KL1xGNKu36jrUEBXWxAcciQ*MX6a)^s{=U+8sE1+TYVms zBp4X(z7*lf>HhiTPw%O^x@tRi;paE^-w}Jf_Gk3ezkfdb6_ri+XBQx|!1Vq*f!GQS zpyR>1O8mck-TCwE{rFWo)}KEc|LtP4OX0zUU!D8x%Z=nDH diff --git a/tgstation.dme b/tgstation.dme index 722ebae9be..7c9fa1e899 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2844,7 +2844,6 @@ #include "modular_citadel\code\datums\mood_events\moodular.dm" #include "modular_citadel\code\datums\mutations\hulk.dm" #include "modular_citadel\code\datums\status_effects\debuffs.dm" -#include "modular_citadel\code\datums\traits\neutral.dm" #include "modular_citadel\code\datums\wires\airlock.dm" #include "modular_citadel\code\datums\wires\autoylathe.dm" #include "modular_citadel\code\game\area\cit_areas.dm" @@ -2912,9 +2911,9 @@ #include "modular_citadel\code\modules\admin\secrets.dm" #include "modular_citadel\code\modules\admin\topic.dm" #include "modular_citadel\code\modules\arousal\arousal.dm" +#include "modular_citadel\code\modules\arousal\organs\_genitals.dm" #include "modular_citadel\code\modules\arousal\organs\breasts.dm" #include "modular_citadel\code\modules\arousal\organs\eggsack.dm" -#include "modular_citadel\code\modules\arousal\organs\genitals.dm" #include "modular_citadel\code\modules\arousal\organs\genitals_sprite_accessories.dm" #include "modular_citadel\code\modules\arousal\organs\ovipositor.dm" #include "modular_citadel\code\modules\arousal\organs\penis.dm" From fd2f2ae1af2b6192cf705a7aa21760401ab9ea4d Mon Sep 17 00:00:00 2001 From: Ghommie Date: Tue, 23 Jul 2019 07:21:03 +0200 Subject: [PATCH 060/469] update, bitflags. --- code/__DEFINES/citadel_defines.dm | 4 +- code/__HELPERS/global_lists.dm | 3 +- .../code/modules/arousal/arousal.dm | 4 +- .../code/modules/arousal/organs/_genitals.dm | 42 +++++++++---------- .../code/modules/arousal/organs/eggsack.dm | 1 + .../code/modules/arousal/organs/ovipositor.dm | 1 + .../code/modules/arousal/organs/testicles.dm | 3 +- 7 files changed, 32 insertions(+), 26 deletions(-) diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 8b75784ab2..b366a792e5 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -25,7 +25,9 @@ #define GENITAL_LAYER_INDEX_LENGTH 4 //keep it updated with each new index added, thanks. -#define MASTURBATE_LINKED_ORGAN 2 //special value used to pass our mission to the linked organ +//genital flags +#define GENITAL_BLACKLISTED (1 << 0) //for genitals that shouldn't be added to GLOB.genitals_list. +#define MASTURBATE_LINKED_ORGAN (1<<1) //used to pass our mission to the linked organ #define COCK_SIZE_MIN 1 #define COCK_SIZE_MAX 20 diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index b0b0f32345..96f2d404f8 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -64,7 +64,8 @@ for(var/gpath in subtypesof(/obj/item/organ/genital)) var/obj/item/organ/genital/G = gpath - GLOB.genitals_list[initial(G.name)] = gpath + if(!CHECK_BITFIELD(initial(G.genital_flags), GENITAL_BLACKLISTED)) + GLOB.genitals_list[initial(G.name)] = gpath //END OF CIT CHANGES //Species diff --git a/modular_citadel/code/modules/arousal/arousal.dm b/modular_citadel/code/modules/arousal/arousal.dm index 8826cb0774..924c507e7d 100644 --- a/modular_citadel/code/modules/arousal/arousal.dm +++ b/modular_citadel/code/modules/arousal/arousal.dm @@ -209,7 +209,7 @@ var/datum/reagents/fluid_source = G.climaxable(src) if(!fluid_source) return - var/obj/item/organ/genital/PP = G.can_masturbate_with == MASTURBATE_LINKED_ORGAN ? G.linked_organ : G + var/obj/item/organ/genital/PP = CHECK_BITFIELD(G.genital_flags, MASTURBATE_LINKED_ORGAN) ? G.linked_organ : G if(!PP) to_chat(src, "You shudder, unable to cum with your [name].") if(mb_time) @@ -274,7 +274,7 @@ for(var/obj/item/organ/genital/G in internal_organs) if(G.can_masturbate_with && G.is_exposed(worn_stuff)) //filter out what you can't masturbate with - if(G.can_masturbate_with == MASTURBATE_LINKED_ORGAN && !G.linked_organ) + if(CHECK_BITFIELD(G.genital_flags, MASTURBATE_LINKED_ORGAN) && !G.linked_organ) continue genitals_list += G if(genitals_list.len) diff --git a/modular_citadel/code/modules/arousal/organs/_genitals.dm b/modular_citadel/code/modules/arousal/organs/_genitals.dm index 2222624050..c4c3eaa9f1 100644 --- a/modular_citadel/code/modules/arousal/organs/_genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/_genitals.dm @@ -1,28 +1,28 @@ /obj/item/organ/genital color = "#fcccb3" - w_class = WEIGHT_CLASS_NORMAL - var/shape = "human" - var/sensitivity = AROUSAL_START_VALUE - var/list/genital_flags = list() - var/can_masturbate_with = FALSE - var/masturbation_verb = "masturbate" - var/orgasm_verb = "cumming" //present continous - var/can_climax = FALSE - var/fluid_transfer_factor = 0 //How much would a partner get in them if they climax using this? - var/size = 2 //can vary between num or text, just used in icon_state strings - var/fluid_id = null - var/fluid_max_volume = 50 - var/fluid_efficiency = 1 - var/fluid_rate = 1 - var/fluid_mult = 1 - var/producing = FALSE - var/aroused_state = FALSE //Boolean used in icon_state strings - var/aroused_amount = 50 //This is a num from 0 to 100 for arousal percentage for when to use arousal state icons. + w_class = WEIGHT_CLASS_NORMAL + var/shape = "human" + var/sensitivity = AROUSAL_START_VALUE + var/genital_flags + var/can_masturbate_with = FALSE + var/masturbation_verb = "masturbate" + var/orgasm_verb = "cumming" //present continous + var/can_climax = FALSE + var/fluid_transfer_factor = 0 //How much would a partner get in them if they climax using this? + var/size = 2 //can vary between num or text, just used in icon_state strings + var/fluid_id = null + var/fluid_max_volume = 50 + var/fluid_efficiency = 1 + var/fluid_rate = 1 + var/fluid_mult = 1 + var/producing = FALSE + var/aroused_state = FALSE //Boolean used in icon_state strings + var/aroused_amount = 50 //This is a num from 0 to 100 for arousal percentage for when to use arousal state icons. var/obj/item/organ/genital/linked_organ var/linked_organ_slot //only one of the two organs needs this to be set up. update_link() will handle linking the rest. - var/through_clothes = FALSE - var/internal = FALSE - var/hidden = FALSE + var/through_clothes = FALSE + var/internal = FALSE + var/hidden = FALSE var/layer_index = GENITAL_LAYER_INDEX //Order should be very important. FIRST vagina, THEN testicles, THEN penis, as this affects the order they are rendered in. /obj/item/organ/genital/Initialize() diff --git a/modular_citadel/code/modules/arousal/organs/eggsack.dm b/modular_citadel/code/modules/arousal/organs/eggsack.dm index 3282bad5f9..624b2c24cd 100644 --- a/modular_citadel/code/modules/arousal/organs/eggsack.dm +++ b/modular_citadel/code/modules/arousal/organs/eggsack.dm @@ -5,6 +5,7 @@ icon = 'modular_citadel/icons/obj/genitals/ovipositor.dmi' zone = BODY_ZONE_PRECISE_GROIN slot = ORGAN_SLOT_TESTICLES + genital_flags = GENITAL_BLACKLISTED //unimplemented linked_organ_slot = ORGAN_SLOT_PENIS color = null //don't use the /genital color since it already is colored internal = TRUE diff --git a/modular_citadel/code/modules/arousal/organs/ovipositor.dm b/modular_citadel/code/modules/arousal/organs/ovipositor.dm index 92b608f905..c26424d296 100644 --- a/modular_citadel/code/modules/arousal/organs/ovipositor.dm +++ b/modular_citadel/code/modules/arousal/organs/ovipositor.dm @@ -5,6 +5,7 @@ icon = 'modular_citadel/icons/obj/genitals/ovipositor.dmi' zone = BODY_ZONE_PRECISE_GROIN slot = ORGAN_SLOT_PENIS + genital_flags = GENITAL_BLACKLISTED //unimplemented shape = "knotted" size = 3 layer_index = PENIS_LAYER_INDEX diff --git a/modular_citadel/code/modules/arousal/organs/testicles.dm b/modular_citadel/code/modules/arousal/organs/testicles.dm index de7b6d6f70..c67d6a49a4 100644 --- a/modular_citadel/code/modules/arousal/organs/testicles.dm +++ b/modular_citadel/code/modules/arousal/organs/testicles.dm @@ -7,12 +7,13 @@ slot = ORGAN_SLOT_TESTICLES size = BALLS_SIZE_MIN linked_organ_slot = ORGAN_SLOT_PENIS + genital_flags = MASTURBATE_LINKED_ORGAN var/size_name = "average" shape = "single" var/sack_size = BALLS_SACK_SIZE_DEF fluid_id = "semen" producing = TRUE - can_masturbate_with = MASTURBATE_LINKED_ORGAN + can_masturbate_with = TRUE masturbation_verb = "massage" layer_index = TESTICLES_LAYER_INDEX var/size_linked = FALSE From 376f6e8b4adfe74516942577a3b86de12501cb02 Mon Sep 17 00:00:00 2001 From: Ghommie Date: Tue, 23 Jul 2019 23:54:11 +0200 Subject: [PATCH 061/469] arousal states won't persist after death anymore. --- code/modules/surgery/organs/organ_internal.dm | 4 +++- .../code/modules/arousal/organs/_genitals.dm | 14 ++++++++++---- .../code/modules/arousal/organs/breasts.dm | 1 + .../code/modules/arousal/organs/penis.dm | 16 ++++++++-------- .../code/modules/arousal/organs/testicles.dm | 7 +++++-- .../code/modules/arousal/organs/vagina.dm | 1 + .../icons/obj/genitals/testicles_onmob.dmi | Bin 562 -> 561 bytes 7 files changed, 28 insertions(+), 15 deletions(-) diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index b16967b6b0..a17b983689 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -16,7 +16,7 @@ /obj/item/organ/proc/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE) if(!iscarbon(M) || owner == M) - return + return FALSE var/obj/item/organ/replaced = M.getorganslot(slot) if(replaced) @@ -33,6 +33,7 @@ for(var/X in actions) var/datum/action/A = X A.Grant(M) + return TRUE //Special is for instant replacement like autosurgeons /obj/item/organ/proc/Remove(mob/living/carbon/M, special = 0) @@ -46,6 +47,7 @@ for(var/X in actions) var/datum/action/A = X A.Remove(M) + return TRUE /obj/item/organ/proc/on_find(mob/living/finder) diff --git a/modular_citadel/code/modules/arousal/organs/_genitals.dm b/modular_citadel/code/modules/arousal/organs/_genitals.dm index c4c3eaa9f1..292cc5f4ee 100644 --- a/modular_citadel/code/modules/arousal/organs/_genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/_genitals.dm @@ -113,6 +113,8 @@ return /obj/item/organ/genital/proc/update_appearance() + if(!owner || owner.stat == DEAD) + aroused_state = FALSE return /obj/item/organ/genital/on_life() @@ -142,12 +144,16 @@ return FALSE /obj/item/organ/genital/Insert(mob/living/carbon/M, special = 0) - ..() - update() + . = ..() + if(.) + update() + RegisterSignal(owner, COMSIG_MOB_DEATH, .proc/update_appearance) /obj/item/organ/genital/Remove(mob/living/carbon/M, special = 0) - ..() - update(TRUE) + . = ..() + if(.) + update(TRUE) + UnregisterSignal(M, COMSIG_MOB_DEATH) //proc to give a player their genitals and stuff when they log in /mob/living/carbon/human/proc/give_genitals(clean = FALSE)//clean will remove all pre-existing genitals. proc will then give them any genitals that are enabled in their DNA diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index f6d5673a53..3fec45006b 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -17,6 +17,7 @@ fluid_transfer_factor = 0.5 /obj/item/organ/genital/breasts/update_appearance() + . = ..() var/lowershape = lowertext(shape) switch(lowershape) if("pair") diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm index 2593460a32..5ab9868895 100644 --- a/modular_citadel/code/modules/arousal/organs/penis.dm +++ b/modular_citadel/code/modules/arousal/organs/penis.dm @@ -16,27 +16,27 @@ var/girth = 0 var/girth_ratio = COCK_GIRTH_RATIO_DEF //0.73; check citadel_defines.dm var/knot_girth_ratio = KNOT_GIRTH_RATIO_DEF - var/list/dickflags = list() var/list/knotted_types = list("knotted", "barbed, knotted") /obj/item/organ/genital/penis/update_size() if(length == cached_length) return + var/new_size switch(length) if(-INFINITY to 5) - size = 1 + new_size = 1 if(5 to 9) - size = 2 + new_size = 2 if(15 to INFINITY) - size = 3//no new sprites for anything larger yet -/* if(9 to 15) - size = 3 - if(15 to INFINITY) - size = 3*/ + new_size = 3 //no new sprites for anything larger yet. girth = (length * girth_ratio) cached_length = length + if(linked_organ) + linked_organ.update_size(new_size - size) + size = new_size /obj/item/organ/genital/penis/update_appearance() + . = ..() var/string var/lowershape = lowertext(shape) desc = "You see [aroused_state ? "an erect" : "a flaccid"] [lowershape] [name]. You estimate it's about [round(length, 0.25)] inch[round(length, 0.25) != 1 ? "es" : ""] long and [round(girth, 0.25)] inch[round(girth, 0.25) != 1 ? "es" : ""] in girth." diff --git a/modular_citadel/code/modules/arousal/organs/testicles.dm b/modular_citadel/code/modules/arousal/organs/testicles.dm index c67d6a49a4..2e1b330095 100644 --- a/modular_citadel/code/modules/arousal/organs/testicles.dm +++ b/modular_citadel/code/modules/arousal/organs/testicles.dm @@ -36,7 +36,9 @@ to_chat(owner, msg) return TRUE -/obj/item/organ/genital/testicles/update_appearance() +/obj/item/organ/genital/testicles/update_size(new_size) + if(new_size) + size = CLAMP(size + new_size, BALLS_SIZE_MIN, BALLS_SIZE_MAX) switch(size) if(BALLS_SIZE_MIN) size_name = "average" @@ -47,8 +49,9 @@ else size_name = "nonexistant" +/obj/item/organ/genital/testicles/update_appearance() + . = ..() desc = "You see an [size_name] pair of testicles." - if(owner) var/string if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"]) diff --git a/modular_citadel/code/modules/arousal/organs/vagina.dm b/modular_citadel/code/modules/arousal/organs/vagina.dm index af2beb5f79..1b4b088015 100644 --- a/modular_citadel/code/modules/arousal/organs/vagina.dm +++ b/modular_citadel/code/modules/arousal/organs/vagina.dm @@ -20,6 +20,7 @@ var/list/vag_types = list("tentacle", "dentata", "hairy", "spade", "furred") /obj/item/organ/genital/vagina/update_appearance() + . = ..() var/string //Keeping this code here, so making multiple sprites for the different kinds is easier. var/lowershape = lowertext(shape) var/details diff --git a/modular_citadel/icons/obj/genitals/testicles_onmob.dmi b/modular_citadel/icons/obj/genitals/testicles_onmob.dmi index 7d4d2610c5337d0877fd9d741c38998893444576..65eb24268f99929355d5d90054cf8d6a1c2b3a97 100644 GIT binary patch delta 193 zcmV;y06zb+1hE8=Qh%#@R9JLGWpiV4X>fFDZ*Bkpc$}ruK@P$o5CzaRoPxA#O#!zq zY#@q>T!A!pEF`ri4AJY`)&r=po4@$;lF8Jp)kkBQx)}O|h~Y7@J=<*?N?xH)ehyMl z;voz^eFCN~!8}$8Foo*~=rByf2#&kP9n`s^qz@67J(S#HcQuD)=3k1fJ{hb2?}}Vh v6reH}l?5o@VD^F6YW9iqVNnFjd|3Vf*GyZrzWy8X+Uw7#l4CKm2LUSq=#E*> delta 194 zcmV;z06qV)1hNE>Qh%&^R9JLGWpiV4X>fFDZ*Bkpc$}q@K@Ng25JlJRDH>R7D0S;X z(nf0{S7?ZgbP~jbY4rMn96%j*|1aLWWNscQ%-_{sLC+Hq)$ From 6000f96dbc4de60f1088f06a3e7586aff7d307ca Mon Sep 17 00:00:00 2001 From: Ghommie Date: Wed, 24 Jul 2019 02:00:30 +0200 Subject: [PATCH 062/469] deleted some boolean variables in favor of bitflags. --- code/__DEFINES/citadel_defines.dm | 8 ++++- code/_globalvars/bitfields.dm | 10 ++++++ .../code/modules/arousal/arousal.dm | 12 +++---- .../code/modules/arousal/organs/_genitals.dm | 32 +++++++------------ .../code/modules/arousal/organs/breasts.dm | 7 ++-- .../code/modules/arousal/organs/eggsack.dm | 3 +- .../code/modules/arousal/organs/penis.dm | 3 +- .../code/modules/arousal/organs/testicles.dm | 8 ++--- .../code/modules/arousal/organs/vagina.dm | 3 +- .../code/modules/arousal/organs/womb.dm | 3 +- 10 files changed, 43 insertions(+), 46 deletions(-) diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index b366a792e5..035e660176 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -27,7 +27,13 @@ //genital flags #define GENITAL_BLACKLISTED (1 << 0) //for genitals that shouldn't be added to GLOB.genitals_list. -#define MASTURBATE_LINKED_ORGAN (1<<1) //used to pass our mission to the linked organ +#define GENITAL_INTERNAL (1<<1) +#define GENITAL_HIDDEN (1<<2) +#define GENITAL_THROUGH_CLOTHES (1<<3) +#define GENITAL_FUID_PRODUCTION (1<<4) +#define CAN_MASTURBATE_WITH (1<<5) +#define MASTURBATE_LINKED_ORGAN (1<<6) //used to pass our mission to the linked organ +#define CAN_CLIMAX_WITH (1<<7) #define COCK_SIZE_MIN 1 #define COCK_SIZE_MAX 20 diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index bb9fc98b8e..3c7af9af7e 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -177,4 +177,14 @@ GLOBAL_LIST_INIT(bitfields, list( "CAN_CARRY" = CAN_CARRY, "CAN_RESIST" = CAN_RESIST ), + "genital_flags" = list( + "GENITAL_BLACKLISTED" = GENITAL_BLACKLISTED, + "GENITAL_INTERNAL" = GENITAL_INTERNAL, + "GENITAL_HIDDEN" = GENITAL_HIDDEN, + "GENITAL_THROUGH_CLOTHES" = GENITAL_THROUGH_CLOTHES, + "GENITAL_FUID_PRODUCTION" = GENITAL_FUID_PRODUCTION, + "CAN_MASTURBATE_WITH" = CAN_MASTURBATE_WITH, + "MASTURBATE_LINKED_ORGAN" = MASTURBATE_LINKED_ORGAN, + "CAN_CLIMAX_WITH" = CAN_CLIMAX_WITH + ) )) \ No newline at end of file diff --git a/modular_citadel/code/modules/arousal/arousal.dm b/modular_citadel/code/modules/arousal/arousal.dm index 924c507e7d..f5b27b2c15 100644 --- a/modular_citadel/code/modules/arousal/arousal.dm +++ b/modular_citadel/code/modules/arousal/arousal.dm @@ -182,13 +182,13 @@ to_chat(src, "You aren't aroused enough for that.") /obj/item/organ/genital/proc/climaxable(mob/living/carbon/human/H, silent = FALSE) //returns the fluid source (ergo reagents holder) if found. - if(producing) + if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION)) . = reagents else if(linked_organ) . = linked_organ.reagents - else if(!silent) - to_chat(H, "Your [name] is unable to produce it's own fluids, it's missing the organs for it.") + if(!. && !silent) + to_chat(H, "Your [name] is unable to produce it's own fluids, it's missing the organs for it.") /mob/living/carbon/human/proc/do_climax(datum/reagents/R, atom/target, obj/item/organ/genital/G, spill = TRUE) if(!G) @@ -273,7 +273,7 @@ var/list/worn_stuff = get_equipped_items() for(var/obj/item/organ/genital/G in internal_organs) - if(G.can_masturbate_with && G.is_exposed(worn_stuff)) //filter out what you can't masturbate with + if(CHECK_BITFIELD(G.genital_flags, CAN_MASTURBATE_WITH) && G.is_exposed(worn_stuff)) //filter out what you can't masturbate with if(CHECK_BITFIELD(G.genital_flags, MASTURBATE_LINKED_ORGAN) && !G.linked_organ) continue genitals_list += G @@ -287,7 +287,7 @@ var/list/worn_stuff = get_equipped_items() for(var/obj/item/organ/genital/G in internal_organs) - if(G.can_climax && G.is_exposed(worn_stuff)) //filter out what you can't masturbate with + if(CHECK_BITFIELD(G.genital_flags, CAN_CLIMAX_WITH) && G.is_exposed(worn_stuff)) //filter out what you can't masturbate with genitals_list += G if(genitals_list.len) var/obj/item/organ/genital/ret_organ = input(src, "with what?", "Climax", null) as null|obj in genitals_list @@ -352,7 +352,7 @@ return if(forced_climax) //Something forced us to cum, this is not a masturbation thing and does not progress to the other checks for(var/obj/item/organ/genital/G in internal_organs) - if(!G.can_climax) //Skip things like wombs and testicles + if(!CHECK_BITFIELD(G.genital_flags, CAN_CLIMAX_WITH)) //Skip things like wombs and testicles continue var/mob/living/partner var/check_target diff --git a/modular_citadel/code/modules/arousal/organs/_genitals.dm b/modular_citadel/code/modules/arousal/organs/_genitals.dm index 292cc5f4ee..38c39d4756 100644 --- a/modular_citadel/code/modules/arousal/organs/_genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/_genitals.dm @@ -3,11 +3,9 @@ w_class = WEIGHT_CLASS_NORMAL var/shape = "human" var/sensitivity = AROUSAL_START_VALUE - var/genital_flags - var/can_masturbate_with = FALSE + var/genital_flags //see citadel_defines.dm var/masturbation_verb = "masturbate" var/orgasm_verb = "cumming" //present continous - var/can_climax = FALSE var/fluid_transfer_factor = 0 //How much would a partner get in them if they climax using this? var/size = 2 //can vary between num or text, just used in icon_state strings var/fluid_id = null @@ -15,21 +13,17 @@ var/fluid_efficiency = 1 var/fluid_rate = 1 var/fluid_mult = 1 - var/producing = FALSE var/aroused_state = FALSE //Boolean used in icon_state strings var/aroused_amount = 50 //This is a num from 0 to 100 for arousal percentage for when to use arousal state icons. var/obj/item/organ/genital/linked_organ var/linked_organ_slot //only one of the two organs needs this to be set up. update_link() will handle linking the rest. - var/through_clothes = FALSE - var/internal = FALSE - var/hidden = FALSE var/layer_index = GENITAL_LAYER_INDEX //Order should be very important. FIRST vagina, THEN testicles, THEN penis, as this affects the order they are rendered in. /obj/item/organ/genital/Initialize() . = ..() if(fluid_id) create_reagents(fluid_max_volume) - if(producing) + if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION)) reagents.add_reagent(fluid_id, fluid_max_volume) update() @@ -53,9 +47,9 @@ var/list/exposed_genitals = list() //Keeping track of them so we don't have to iterate through every genitalia and see if exposed /obj/item/organ/genital/proc/is_exposed() - if(!owner || hidden || internal) + if(!owner || CHECK_BITFIELD(genital_flags, GENITAL_INTERNAL|GENITAL_HIDDEN)) return FALSE - if(through_clothes) + if(CHECK_BITFIELD(genital_flags, GENITAL_THROUGH_CLOTHES)) return TRUE switch(zone) //update as more genitals are added @@ -69,18 +63,18 @@ /obj/item/organ/genital/proc/toggle_visibility(visibility) switch(visibility) if("Always visible") - through_clothes = TRUE - hidden = FALSE + ENABLE_BITFIELD(genital_flags, GENITAL_THROUGH_CLOTHES) + DISABLE_BITFIELD(genital_flags, GENITAL_HIDDEN) if(!(src in owner.exposed_genitals)) owner.exposed_genitals += src if("Hidden by clothes") - through_clothes = FALSE - hidden = TRUE + DISABLE_BITFIELD(genital_flags, GENITAL_THROUGH_CLOTHES) + DISABLE_BITFIELD(genital_flags, GENITAL_HIDDEN) if(src in owner.exposed_genitals) owner.exposed_genitals -= src if("Always hidden") - through_clothes = FALSE - hidden = TRUE + DISABLE_BITFIELD(genital_flags, GENITAL_THROUGH_CLOTHES) + ENABLE_BITFIELD(genital_flags, GENITAL_HIDDEN) if(src in owner.exposed_genitals) owner.exposed_genitals -= src @@ -97,7 +91,7 @@ for(var/obj/item/organ/O in internal_organs) if(isgenital(O)) var/obj/item/organ/genital/G = O - if(!G.internal) + if(!CHECK_BITFIELD(G.genital_flags, GENITAL_INTERNAL)) genital_list += G if(!genital_list.len) //There is nothing to expose return @@ -121,7 +115,7 @@ if(!reagents || !owner) return reagents.maximum_volume = fluid_max_volume - if(fluid_id && producing) + if(fluid_id && CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION)) generate_fluid() /obj/item/organ/genital/proc/generate_fluid() @@ -235,8 +229,6 @@ //start scanning for genitals //var/list/worn_stuff = H.get_equipped_items()//cache this list so it's not built again for(var/obj/item/organ/genital/G in H.internal_organs) - if(G.hidden) - return //we're gunna just hijack this for updates. if(G.is_exposed()) //Checks appropriate clothing slot and if it's through_clothes LAZYADD(genitals_to_add[G.layer_index], G) //Now we added all genitals that aren't internal and should be rendered diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index 3fec45006b..6079c9364f 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -7,13 +7,10 @@ slot = ORGAN_SLOT_BREASTS size = BREASTS_SIZE_DEF fluid_id = "milk" - var/amount = 2 - producing = TRUE shape = "pair" - can_masturbate_with = TRUE + genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH|GENITAL_FUID_PRODUCTION masturbation_verb = "massage" orgasm_verb = "leaking" - can_climax = TRUE fluid_transfer_factor = 0.5 /obj/item/organ/genital/breasts/update_appearance() @@ -32,7 +29,7 @@ desc += " You estimate that they're [uppertext(size)]-cups." else desc += " You wouldn't measure them in cup sizes." - if(producing && aroused_state) + if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION) && aroused_state) desc += " They're leaking [fluid_id]." var/string if(owner) diff --git a/modular_citadel/code/modules/arousal/organs/eggsack.dm b/modular_citadel/code/modules/arousal/organs/eggsack.dm index 624b2c24cd..ebdefd2371 100644 --- a/modular_citadel/code/modules/arousal/organs/eggsack.dm +++ b/modular_citadel/code/modules/arousal/organs/eggsack.dm @@ -5,10 +5,9 @@ icon = 'modular_citadel/icons/obj/genitals/ovipositor.dmi' zone = BODY_ZONE_PRECISE_GROIN slot = ORGAN_SLOT_TESTICLES - genital_flags = GENITAL_BLACKLISTED //unimplemented + genital_flags = GENITAL_INTERNAL|GENITAL_BLACKLISTED //unimplemented linked_organ_slot = ORGAN_SLOT_PENIS color = null //don't use the /genital color since it already is colored - internal = TRUE var/egg_girth = EGG_GIRTH_DEF var/cum_mult = CUM_RATE_MULT var/cum_rate = CUM_RATE diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm index 5ab9868895..0441f78774 100644 --- a/modular_citadel/code/modules/arousal/organs/penis.dm +++ b/modular_citadel/code/modules/arousal/organs/penis.dm @@ -5,9 +5,8 @@ icon = 'modular_citadel/icons/obj/genitals/penis.dmi' zone = BODY_ZONE_PRECISE_GROIN slot = ORGAN_SLOT_PENIS - can_masturbate_with = TRUE masturbation_verb = "stroke" - can_climax = TRUE + genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH fluid_transfer_factor = 0.5 size = 2 //arbitrary value derived from length and girth for sprites. layer_index = PENIS_LAYER_INDEX diff --git a/modular_citadel/code/modules/arousal/organs/testicles.dm b/modular_citadel/code/modules/arousal/organs/testicles.dm index 2e1b330095..e06a10b9fc 100644 --- a/modular_citadel/code/modules/arousal/organs/testicles.dm +++ b/modular_citadel/code/modules/arousal/organs/testicles.dm @@ -7,13 +7,11 @@ slot = ORGAN_SLOT_TESTICLES size = BALLS_SIZE_MIN linked_organ_slot = ORGAN_SLOT_PENIS - genital_flags = MASTURBATE_LINKED_ORGAN + genital_flags = CAN_MASTURBATE_WITH|MASTURBATE_LINKED_ORGAN|GENITAL_FUID_PRODUCTION var/size_name = "average" shape = "single" var/sack_size = BALLS_SACK_SIZE_DEF fluid_id = "semen" - producing = TRUE - can_masturbate_with = TRUE masturbation_verb = "massage" layer_index = TESTICLES_LAYER_INDEX var/size_linked = FALSE @@ -77,9 +75,7 @@ sack_size = D.features["balls_sack_size"] shape = D.features["balls_shape"] if(D.features["balls_shape"] == "Hidden") - internal = TRUE - else - internal = FALSE + ENABLE_BITFIELD(genital_flags, GENITAL_INTERNAL) fluid_id = D.features["balls_fluid"] fluid_rate = D.features["balls_cum_rate"] fluid_mult = D.features["balls_cum_mult"] diff --git a/modular_citadel/code/modules/arousal/organs/vagina.dm b/modular_citadel/code/modules/arousal/organs/vagina.dm index 1b4b088015..0df954fd79 100644 --- a/modular_citadel/code/modules/arousal/organs/vagina.dm +++ b/modular_citadel/code/modules/arousal/organs/vagina.dm @@ -6,9 +6,8 @@ zone = BODY_ZONE_PRECISE_GROIN slot = "vagina" size = 1 //There is only 1 size right now - can_masturbate_with = TRUE + genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH masturbation_verb = "finger" - can_climax = TRUE fluid_transfer_factor = 0.1 //Yes, some amount is exposed to you, go get your AIDS layer_index = VAGINA_LAYER_INDEX var/cap_length = 8//D E P T H (cap = capacity) diff --git a/modular_citadel/code/modules/arousal/organs/womb.dm b/modular_citadel/code/modules/arousal/organs/womb.dm index d99206d0f1..3c4ce225f4 100644 --- a/modular_citadel/code/modules/arousal/organs/womb.dm +++ b/modular_citadel/code/modules/arousal/organs/womb.dm @@ -5,7 +5,6 @@ icon_state = "womb" zone = BODY_ZONE_PRECISE_GROIN slot = ORGAN_SLOT_WOMB - internal = TRUE + genital_flags = GENITAL_INTERNAL|GENITAL_FUID_PRODUCTION fluid_id = "femcum" - producing = TRUE linked_organ_slot = ORGAN_SLOT_VAGINA \ No newline at end of file From 6623dd48968b19858155d28799cce5a39c402900 Mon Sep 17 00:00:00 2001 From: Ghommie Date: Wed, 24 Jul 2019 02:03:52 +0200 Subject: [PATCH 063/469] As if they'd care anyway. --- code/datums/traits/neutral.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index 156ee00d75..3c7894f250 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -122,7 +122,7 @@ /datum/quirk/exhibitionism name = "Exhibitionism" - desc = "You don't mind showing off your bare body to strangers, in fact you find it quite satistying. Not the best excuse to break Space Law anyway." //as if they'd care anyway. + desc = "You don't mind showing off your bare body to strangers, in fact you find it quite satistying." value = 0 medical_record_text = "Patient has been diagnosed with exhibitionistic disorder." mob_trait = TRAIT_EXHIBITIONIST From 30292c385b77ad5d2e52feb100a7ea89106ff6cb Mon Sep 17 00:00:00 2001 From: Ghommie Date: Wed, 24 Jul 2019 02:07:59 +0200 Subject: [PATCH 064/469] moving files. --- .../code/modules/arousal/{organs/_genitals.dm => genitals.dm} | 0 .../arousal/{organs => }/genitals_sprite_accessories.dm | 0 tgstation.dme | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) rename modular_citadel/code/modules/arousal/{organs/_genitals.dm => genitals.dm} (100%) rename modular_citadel/code/modules/arousal/{organs => }/genitals_sprite_accessories.dm (100%) diff --git a/modular_citadel/code/modules/arousal/organs/_genitals.dm b/modular_citadel/code/modules/arousal/genitals.dm similarity index 100% rename from modular_citadel/code/modules/arousal/organs/_genitals.dm rename to modular_citadel/code/modules/arousal/genitals.dm diff --git a/modular_citadel/code/modules/arousal/organs/genitals_sprite_accessories.dm b/modular_citadel/code/modules/arousal/genitals_sprite_accessories.dm similarity index 100% rename from modular_citadel/code/modules/arousal/organs/genitals_sprite_accessories.dm rename to modular_citadel/code/modules/arousal/genitals_sprite_accessories.dm diff --git a/tgstation.dme b/tgstation.dme index 7c9fa1e899..c872760203 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2911,10 +2911,10 @@ #include "modular_citadel\code\modules\admin\secrets.dm" #include "modular_citadel\code\modules\admin\topic.dm" #include "modular_citadel\code\modules\arousal\arousal.dm" -#include "modular_citadel\code\modules\arousal\organs\_genitals.dm" +#include "modular_citadel\code\modules\arousal\genitals.dm" +#include "modular_citadel\code\modules\arousal\genitals_sprite_accessories.dm" #include "modular_citadel\code\modules\arousal\organs\breasts.dm" #include "modular_citadel\code\modules\arousal\organs\eggsack.dm" -#include "modular_citadel\code\modules\arousal\organs\genitals_sprite_accessories.dm" #include "modular_citadel\code\modules\arousal\organs\ovipositor.dm" #include "modular_citadel\code\modules\arousal\organs\penis.dm" #include "modular_citadel\code\modules\arousal\organs\testicles.dm" From 56f2a8f8846093f681d6d744230b31ca5aafdf11 Mon Sep 17 00:00:00 2001 From: Ghommie Date: Thu, 25 Jul 2019 04:29:21 +0200 Subject: [PATCH 065/469] Fixes oversized tennis balls, testing and fixing. --- code/__DEFINES/citadel_defines.dm | 16 +- code/__HELPERS/_cit_helpers.dm | 10 +- .../code/modules/arousal/arousal.dm | 229 ++++++++++-------- .../code/modules/arousal/genitals.dm | 33 +-- .../code/modules/arousal/organs/penis.dm | 6 +- .../code/modules/arousal/organs/testicles.dm | 13 +- 6 files changed, 162 insertions(+), 145 deletions(-) diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 035e660176..04e9c52527 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -26,14 +26,14 @@ #define GENITAL_LAYER_INDEX_LENGTH 4 //keep it updated with each new index added, thanks. //genital flags -#define GENITAL_BLACKLISTED (1 << 0) //for genitals that shouldn't be added to GLOB.genitals_list. -#define GENITAL_INTERNAL (1<<1) -#define GENITAL_HIDDEN (1<<2) -#define GENITAL_THROUGH_CLOTHES (1<<3) -#define GENITAL_FUID_PRODUCTION (1<<4) -#define CAN_MASTURBATE_WITH (1<<5) -#define MASTURBATE_LINKED_ORGAN (1<<6) //used to pass our mission to the linked organ -#define CAN_CLIMAX_WITH (1<<7) +#define GENITAL_BLACKLISTED (1<<0) //for genitals that shouldn't be added to GLOB.genitals_list. +#define GENITAL_INTERNAL (1<<1) +#define GENITAL_HIDDEN (1<<2) +#define GENITAL_THROUGH_CLOTHES (1<<3) +#define GENITAL_FUID_PRODUCTION (1<<4) +#define CAN_MASTURBATE_WITH (1<<5) +#define MASTURBATE_LINKED_ORGAN (1<<6) //used to pass our mission to the linked organ +#define CAN_CLIMAX_WITH (1<<7) #define COCK_SIZE_MIN 1 #define COCK_SIZE_MAX 20 diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm index d75dd31b46..1c7b4aeb99 100644 --- a/code/__HELPERS/_cit_helpers.dm +++ b/code/__HELPERS/_cit_helpers.dm @@ -158,18 +158,20 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE) return TRUE return FALSE -/mob/living/carbon/proc/is_groin_exposed(var/list/L) +/mob/living/carbon/proc/is_groin_exposed(list/L) if(!L) L = get_equipped_items() - for(var/obj/item/I in L) + for(var/A in L) + var/obj/item/I = A if(I.body_parts_covered & GROIN) return FALSE return TRUE -/mob/living/carbon/proc/is_chest_exposed(var/list/L) +/mob/living/carbon/proc/is_chest_exposed(list/L) if(!L) L = get_equipped_items() - for(var/obj/item/I in L) + for(var/A in L) + var/obj/item/I = A if(I.body_parts_covered & CHEST) return FALSE return TRUE diff --git a/modular_citadel/code/modules/arousal/arousal.dm b/modular_citadel/code/modules/arousal/arousal.dm index f5b27b2c15..83a5622f49 100644 --- a/modular_citadel/code/modules/arousal/arousal.dm +++ b/modular_citadel/code/modules/arousal/arousal.dm @@ -139,8 +139,6 @@ if(!canbearoused) hud_used.arousal.icon_state = "" return FALSE - if(stat == DEAD) - hud_used.arousal.icon_state = "arousal0" else var/value = FLOOR(getPercentAroused(), 10) hud_used.arousal.icon_state = "arousal[value]" @@ -194,6 +192,7 @@ if(!G) return SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) + setArousalLoss(min_arousal) if(!target || !R) return var/turfing = isturf(target) @@ -217,8 +216,8 @@ "You start to [G.masturbation_verb] your [G.name].") if(!do_after(src, mb_time, target = src) || !G.climaxable(src, TRUE)) return - visible_message("[src] orgasms, [PP.orgasm_verb][isturf(loc) ? " onto [loc]" : ""]!", \ - "You orgasm, [PP.orgasm_verb][isturf(loc) ? " onto [loc]" : ""].") + visible_message("[src] orgasms, [PP.orgasm_verb][isturf(loc) ? " onto [loc]" : ""] with [p_their()] [PP.name]!", \ + "You orgasm, [PP.orgasm_verb][isturf(loc) ? " onto [loc]" : ""] with your [PP.name].") do_climax(fluid_source, loc, G) /mob/living/carbon/human/proc/mob_climax_outside(obj/item/organ/genital/G, mb_time = 30) //This is used for forced orgasms and other hands-free climaxes @@ -268,33 +267,35 @@ "You used your [G.name] to fill [container].") do_climax(fluid_source, container, G, FALSE) -/mob/living/carbon/human/proc/pick_masturbate_genitals() - var/list/genitals_list = list() +/mob/living/carbon/human/proc/pick_masturbate_genitals(silent = FALSE) + var/list/genitals_list var/list/worn_stuff = get_equipped_items() for(var/obj/item/organ/genital/G in internal_organs) if(CHECK_BITFIELD(G.genital_flags, CAN_MASTURBATE_WITH) && G.is_exposed(worn_stuff)) //filter out what you can't masturbate with if(CHECK_BITFIELD(G.genital_flags, MASTURBATE_LINKED_ORGAN) && !G.linked_organ) continue - genitals_list += G - if(genitals_list.len) - var/obj/item/organ/genital/ret_organ = input(src, "with what?", "Masturbate", null) as null|obj in genitals_list + LAZYADD(genitals_list, G) + if(LAZYLEN(genitals_list)) + var/obj/item/organ/genital/ret_organ = input(src, "with what?", "Masturbate", null) as null|obj in genitals_list return ret_organ + else if(!silent) + to_chat(src, "You cannot masturbate without available genitals.") - -/mob/living/carbon/human/proc/pick_climax_genitals() - var/list/genitals_list = list() +/mob/living/carbon/human/proc/pick_climax_genitals(silent = FALSE) + var/list/genitals_list var/list/worn_stuff = get_equipped_items() for(var/obj/item/organ/genital/G in internal_organs) if(CHECK_BITFIELD(G.genital_flags, CAN_CLIMAX_WITH) && G.is_exposed(worn_stuff)) //filter out what you can't masturbate with - genitals_list += G - if(genitals_list.len) - var/obj/item/organ/genital/ret_organ = input(src, "with what?", "Climax", null) as null|obj in genitals_list + LAZYADD(genitals_list, G) + if(LAZYLEN(genitals_list)) + var/obj/item/organ/genital/ret_organ = input(src, "with what?", "Climax", null) as null|obj in genitals_list return ret_organ + else if(!silent) + to_chat(src, "You cannot climax without available genitals.") - -/mob/living/carbon/human/proc/pick_partner() +/mob/living/carbon/human/proc/pick_partner(silent = FALSE) var/list/partners = list() if(pulling) partners += pulling @@ -308,30 +309,42 @@ partners -= C //NOW the list should only contain correct partners if(!partners.len) + if(!silent) + to_chat(src, "You cannot do this alone.") return //No one left. var/mob/living/target = input(src, "With whom?", "Sexual partner", null) as null|anything in partners //pick one, default to null if(target && in_range(src, target)) return target -/mob/living/carbon/human/proc/pick_climax_container() +/mob/living/carbon/human/proc/pick_climax_container(silent = FALSE) var/list/containers_list = list() - for(var/obj/item/reagent_containers/container in held_items) - if(container.is_open_container() || istype(container, /obj/item/reagent_containers/food/snacks)) - containers_list += container + for(var/obj/item/reagent_containers/C in held_items) + if(C.is_open_container() || istype(C, /obj/item/reagent_containers/food/snacks)) + containers_list += C + for(var/obj/item/reagent_containers/C in range(1, src)) + if((C.is_open_container() || istype(C, /obj/item/reagent_containers/food/snacks)) && CanReach(C)) + containers_list += C if(containers_list.len) var/obj/item/reagent_containers/SC = input(src, "Into or onto what?(Cancel for nowhere)", null) as null|obj in containers_list - if(SC && in_range(src, SC)) + if(SC && CanReach(SC)) return SC - return null //If nothing correct, give null. + else if(!silent) + to_chat(src, "You cannot do this without an appropriate container.") -/mob/living/carbon/human/proc/available_rosie_palms(silent = FALSE) +/mob/living/carbon/human/proc/available_rosie_palms(silent = FALSE, list/whitelist_typepaths = list(/obj/item/dildo)) if(restrained(TRUE)) //TRUE ignores grabs if(!silent) to_chat(src, "You can't do that while restrained!") return FALSE if(!get_num_arms() || !get_empty_held_indexes()) + if(whitelist_typepaths) + if(!islist(whitelist_typepaths)) + whitelist_typepaths = list(whitelist_typepaths) + for(var/path in whitelist_typepaths) + if(is_holding_item_of_type(path)) + return TRUE if(!silent) to_chat(src, "You need at least one free arm.") return FALSE @@ -343,93 +356,97 @@ if(!forced_climax) //Don't spam the message to the victim if forced to come too fast to_chat(src, "You need to wait [DisplayTimeText((mb_cd_timer - world.time), TRUE)] before you can do that again!") return - mb_cd_timer = world.time + mb_cd_length - if(canbearoused && has_dna()) - if(stat == DEAD) - if(!forced_climax) - to_chat(src, "You can't do that while dead!") - return - if(forced_climax) //Something forced us to cum, this is not a masturbation thing and does not progress to the other checks - for(var/obj/item/organ/genital/G in internal_organs) - if(!CHECK_BITFIELD(G.genital_flags, CAN_CLIMAX_WITH)) //Skip things like wombs and testicles - continue - var/mob/living/partner - var/check_target - var/list/worn_stuff = get_equipped_items() + if(!canbearoused || !has_dna()) + return + if(stat == DEAD) + if(!forced_climax) + to_chat(src, "You can't do that while dead!") + return + if(forced_climax) //Something forced us to cum, this is not a masturbation thing and does not progress to the other checks + for(var/obj/item/organ/genital/G in internal_organs) + if(!CHECK_BITFIELD(G.genital_flags, CAN_CLIMAX_WITH)) //Skip things like wombs and testicles + continue + var/mob/living/partner + var/check_target + var/list/worn_stuff = get_equipped_items() - if(G.is_exposed(worn_stuff)) - if(pulling) //Are we pulling someone? Priority target, we can't be making option menus for this, has to be quick - if(isliving(pulling)) //Don't fuck objects - check_target = pulling - if(pulledby && !check_target) //prioritise pulled over pulledby - if(isliving(pulledby)) - check_target = pulledby - //Now we should have a partner, or else we have to come alone - if(check_target) - if(iscarbon(check_target)) //carbons can have clothes - var/mob/living/carbon/C = check_target - if(C.exposed_genitals.len || C.is_groin_exposed() || C.is_chest_exposed()) //Are they naked enough? - partner = C - else //A cat is fine too - partner = check_target - if(partner) //Did they pass the clothing checks? - mob_climax_partner(G, partner, mb_time = 0) //Instant climax due to forced - continue //You've climaxed once with this organ, continue on - //not exposed OR if no partner was found while exposed, climax alone - mob_climax_outside(G, mb_time = 0) //removed climax timer for sudden, forced orgasms - //Now all genitals that could climax, have. - //Since this was a forced climax, we do not need to continue with the other stuff - return - //If we get here, then this is not a forced climax and we gotta check a few things. + if(G.is_exposed(worn_stuff)) + if(pulling) //Are we pulling someone? Priority target, we can't be making option menus for this, has to be quick + if(isliving(pulling)) //Don't fuck objects + check_target = pulling + if(pulledby && !check_target) //prioritise pulled over pulledby + if(isliving(pulledby)) + check_target = pulledby + //Now we should have a partner, or else we have to come alone + if(check_target) + if(iscarbon(check_target)) //carbons can have clothes + var/mob/living/carbon/C = check_target + if(C.exposed_genitals.len || C.is_groin_exposed() || C.is_chest_exposed()) //Are they naked enough? + partner = C + else //A cat is fine too + partner = check_target + if(partner) //Did they pass the clothing checks? + mob_climax_partner(G, partner, mb_time = 0) //Instant climax due to forced + continue //You've climaxed once with this organ, continue on + //not exposed OR if no partner was found while exposed, climax alone + mob_climax_outside(G, mb_time = 0) //removed climax timer for sudden, forced orgasms + //Now all genitals that could climax, have. + //Since this was a forced climax, we do not need to continue with the other stuff + mb_cd_timer = world.time + mb_cd_length + return + //If we get here, then this is not a forced climax and we gotta check a few things. - if(stat == UNCONSCIOUS) //No sleep-masturbation, you're unconscious. - to_chat(src, "You must be conscious to do that!") - return - if(getArousalLoss() < 33) //flat number instead of percentage - to_chat(src, "You aren't aroused enough for that!") - return + if(stat == UNCONSCIOUS) //No sleep-masturbation, you're unconscious. + to_chat(src, "You must be conscious to do that!") + return + if(getArousalLoss() < 33) //flat number instead of percentage + to_chat(src, "You aren't aroused enough for that!") + return - //Ok, now we check what they want to do. - var/choice = input(src, "Select sexual activity", "Sexual activity:") as null|anything in list("Masturbate", "Climax alone", "Climax with partner", "Fill container") + //Ok, now we check what they want to do. + var/choice = input(src, "Select sexual activity", "Sexual activity:") as null|anything in list("Masturbate", "Climax alone", "Climax with partner", "Fill container") + if(!choice) + return - switch(choice) - if("Masturbate") - if(!available_rosie_palms()) - return - //We got hands, let's pick an organ - var/obj/item/organ/genital/picked_organ = pick_masturbate_genitals() - if(picked_organ && available_rosie_palms(TRUE)) - mob_masturbate(picked_organ) - return + switch(choice) + if("Masturbate") + if(!available_rosie_palms()) + return + //We got hands, let's pick an organ + var/obj/item/organ/genital/picked_organ = pick_masturbate_genitals() + if(picked_organ && available_rosie_palms(TRUE)) + mob_masturbate(picked_organ) + return - if("Climax alone") - if(!available_rosie_palms()) - return - var/obj/item/organ/genital/picked_organ = pick_climax_genitals() - if(picked_organ && available_rosie_palms(TRUE)) - mob_climax_outside(picked_organ) + if("Climax alone") + if(!available_rosie_palms()) + return + var/obj/item/organ/genital/picked_organ = pick_climax_genitals() + if(picked_organ && available_rosie_palms(TRUE)) + mob_climax_outside(picked_organ) - if("Climax with partner") - //We need no hands, we can be restrained and so on, so let's pick an organ - var/obj/item/organ/genital/picked_organ = pick_climax_genitals() - if(picked_organ) - var/mob/living/partner = pick_partner() //Get someone - if(partner) - var/spillage = input(src, "Would your fluids spill outside?", "Choose overflowing option", "Yes") as null|anything in list("Yes", "No") - if(spillage && in_range(src, partner)) - mob_climax_partner(picked_organ, partner, spillage == "Yes" ? TRUE : FALSE) + if("Climax with partner") + //We need no hands, we can be restrained and so on, so let's pick an organ + var/obj/item/organ/genital/picked_organ = pick_climax_genitals() + if(picked_organ) + var/mob/living/partner = pick_partner() //Get someone + if(partner) + var/spillage = input(src, "Would your fluids spill outside?", "Choose overflowing option", "Yes") as null|anything in list("Yes", "No") + if(spillage && in_range(src, partner)) + mob_climax_partner(picked_organ, partner, spillage == "Yes" ? TRUE : FALSE) - if("Fill container") - //We'll need hands and no restraints. - if(!available_rosie_palms()) - return - //We got hands, let's pick an organ - var/obj/item/organ/genital/picked_organ - picked_organ = pick_climax_genitals() //Gotta be climaxable, not just masturbation, to fill with fluids. - if(picked_organ) - //Good, got an organ, time to pick a container - var/obj/item/reagent_containers/fluid_container = pick_climax_container() - if(fluid_container && available_rosie_palms(TRUE)) - mob_fill_container(picked_organ, fluid_container) - return \ No newline at end of file + if("Fill container") + //We'll need hands and no restraints. + if(!available_rosie_palms(FALSE, /obj/item/reagent_containers)) + return + //We got hands, let's pick an organ + var/obj/item/organ/genital/picked_organ + picked_organ = pick_climax_genitals() //Gotta be climaxable, not just masturbation, to fill with fluids. + if(picked_organ) + //Good, got an organ, time to pick a container + var/obj/item/reagent_containers/fluid_container = pick_climax_container() + if(fluid_container && available_rosie_palms(TRUE, /obj/item/reagent_containers)) + mob_fill_container(picked_organ, fluid_container) + + mb_cd_timer = world.time + mb_cd_length \ No newline at end of file diff --git a/modular_citadel/code/modules/arousal/genitals.dm b/modular_citadel/code/modules/arousal/genitals.dm index 38c39d4756..3545c96a50 100644 --- a/modular_citadel/code/modules/arousal/genitals.dm +++ b/modular_citadel/code/modules/arousal/genitals.dm @@ -47,7 +47,7 @@ var/list/exposed_genitals = list() //Keeping track of them so we don't have to iterate through every genitalia and see if exposed /obj/item/organ/genital/proc/is_exposed() - if(!owner || CHECK_BITFIELD(genital_flags, GENITAL_INTERNAL|GENITAL_HIDDEN)) + if(!owner || CHECK_BITFIELD(genital_flags, GENITAL_INTERNAL) || CHECK_BITFIELD(genital_flags, GENITAL_HIDDEN)) return FALSE if(CHECK_BITFIELD(genital_flags, GENITAL_THROUGH_CLOTHES)) return TRUE @@ -58,8 +58,6 @@ if(BODY_ZONE_PRECISE_GROIN) return owner.is_groin_exposed() - return FALSE - /obj/item/organ/genital/proc/toggle_visibility(visibility) switch(visibility) if("Always visible") @@ -119,7 +117,7 @@ generate_fluid() /obj/item/organ/genital/proc/generate_fluid() - if(owner.stat != DEAD && reagents.total_volume < reagents.maximum_volume) + if(reagents.total_volume < reagents.maximum_volume) reagents.isolate_reagent(fluid_id)//remove old reagents if it changed and just clean up generally reagents.add_reagent(fluid_id, (fluid_mult * fluid_rate))//generate the cum return TRUE @@ -137,13 +135,13 @@ linked_organ = null return FALSE -/obj/item/organ/genital/Insert(mob/living/carbon/M, special = 0) +/obj/item/organ/genital/Insert(mob/living/carbon/M, special = FALSE, drop_if_replaced = TRUE) . = ..() if(.) update() - RegisterSignal(owner, COMSIG_MOB_DEATH, .proc/update_appearance) + RegisterSignal(owner, COMSIG_MOB_DEATH, .proc/update) -/obj/item/organ/genital/Remove(mob/living/carbon/M, special = 0) +/obj/item/organ/genital/Remove(mob/living/carbon/M, special = FALSE, drop_if_replaced = TRUE) . = ..() if(.) update(TRUE) @@ -176,12 +174,11 @@ /mob/living/carbon/human/proc/give_genital(obj/item/organ/genital/G) if(!dna || (NOGENITALS in dna.species.species_traits) || getorganslot(initial(G.slot))) return FALSE - G = new - if(istype(G, /obj/item/organ/genital)) //badminnery-proofing. - G.get_features(src) + G = new G + G.get_features(src) G.Insert(src) -/obj/item/organ/genital/proc/get_features(datum/dna/D) +/obj/item/organ/genital/proc/get_features(mob/living/carbon/human/H) return /datum/species/proc/genitals_layertext(layer) @@ -217,7 +214,6 @@ if(!LAZYLEN(H.internal_organs) || (NOGENITALS in species_traits) || HAS_TRAIT(H, TRAIT_HUSK)) return - var/list/genitals_to_add[GENITAL_LAYER_INDEX_LENGTH] var/list/relevant_layers = list(GENITALS_BEHIND_LAYER, GENITALS_ADJ_LAYER, GENITALS_FRONT_LAYER) var/list/standing = list() var/size @@ -228,15 +224,22 @@ //start scanning for genitals //var/list/worn_stuff = H.get_equipped_items()//cache this list so it's not built again + + var/list/gen_index[GENITAL_LAYER_INDEX_LENGTH] + var/list/genitals_to_add for(var/obj/item/organ/genital/G in H.internal_organs) if(G.is_exposed()) //Checks appropriate clothing slot and if it's through_clothes - LAZYADD(genitals_to_add[G.layer_index], G) + LAZYADD(gen_index[G.layer_index], G) + for(var/L in gen_index) + if(L) //skip nulls + LAZYADD(genitals_to_add, L) //Now we added all genitals that aren't internal and should be rendered //start applying overlays for(var/layer in relevant_layers) - var/layertext = flatten_list(genitals_layertext(layer)) - for(var/obj/item/organ/genital/G in genitals_to_add) + var/layertext = genitals_layertext(layer) + for(var/A in genitals_to_add) + var/obj/item/organ/genital/G = A var/datum/sprite_accessory/S size = G.size aroused_state = G.aroused_state diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm index 0441f78774..b387fa96f5 100644 --- a/modular_citadel/code/modules/arousal/organs/penis.dm +++ b/modular_citadel/code/modules/arousal/organs/penis.dm @@ -22,11 +22,11 @@ return var/new_size switch(length) - if(-INFINITY to 5) + if(-INFINITY to 6) new_size = 1 - if(5 to 9) + if(6 to 12) new_size = 2 - if(15 to INFINITY) + if(12 to INFINITY) new_size = 3 //no new sprites for anything larger yet. girth = (length * girth_ratio) cached_length = length diff --git a/modular_citadel/code/modules/arousal/organs/testicles.dm b/modular_citadel/code/modules/arousal/organs/testicles.dm index e06a10b9fc..06f40b5b51 100644 --- a/modular_citadel/code/modules/arousal/organs/testicles.dm +++ b/modular_citadel/code/modules/arousal/organs/testicles.dm @@ -9,7 +9,7 @@ linked_organ_slot = ORGAN_SLOT_PENIS genital_flags = CAN_MASTURBATE_WITH|MASTURBATE_LINKED_ORGAN|GENITAL_FUID_PRODUCTION var/size_name = "average" - shape = "single" + shape = "Single" var/sack_size = BALLS_SACK_SIZE_DEF fluid_id = "semen" masturbation_verb = "massage" @@ -20,20 +20,16 @@ if(!linked_organ && !update_link()) return FALSE . = ..() - if(.) - send_full_message() + if(. && reagents.holder_full()) + to_chat(owner, "Your balls finally feel full, again.") /obj/item/organ/genital/testicles/update_link(removing = FALSE) . = ..() if(. && !size_linked) size = linked_organ.size + update() size_linked = TRUE -/obj/item/organ/genital/testicles/proc/send_full_message(msg = "Your balls finally feel full, again.") - if(owner && istext(msg)) - to_chat(owner, msg) - return TRUE - /obj/item/organ/genital/testicles/update_size(new_size) if(new_size) size = CLAMP(size + new_size, BALLS_SIZE_MIN, BALLS_SIZE_MAX) @@ -71,7 +67,6 @@ color = "#[skintone2hex(H.skin_tone)]" else color = "#[D.features["balls_color"]]" - size = D.features["balls_size"] sack_size = D.features["balls_sack_size"] shape = D.features["balls_shape"] if(D.features["balls_shape"] == "Hidden") From 44a28066a16607219a1caa478509fe77b06f3e47 Mon Sep 17 00:00:00 2001 From: Ghommie Date: Thu, 25 Jul 2019 04:44:34 +0200 Subject: [PATCH 066/469] coding exasperation. --- modular_citadel/code/modules/arousal/arousal.dm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/modular_citadel/code/modules/arousal/arousal.dm b/modular_citadel/code/modules/arousal/arousal.dm index 83a5622f49..6c9da17289 100644 --- a/modular_citadel/code/modules/arousal/arousal.dm +++ b/modular_citadel/code/modules/arousal/arousal.dm @@ -69,10 +69,8 @@ amt_nude++ if(amt_nude) var/watchers = 0 - for(var/mob/living/L in view(world.view, src)) - if(!istype(L)) - continue - if(L.client && !L.stat && !L.eye_blind && (locate(src) in viewers(world.view, L))) + for(var/mob/living/L in view(src)) + if(L.client && !L.stat && !L.eye_blind && (src in view(L))) watchers++ if(watchers) our_loss += (amt_nude * watchers) + S.arousal_gain_rate From 896ca8b2728be4ba9687b6a60e63053d1e4e0812 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 25 Jul 2019 00:56:00 -0700 Subject: [PATCH 067/469] Update support.dm --- code/modules/mob/living/simple_animal/guardian/types/support.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/guardian/types/support.dm b/code/modules/mob/living/simple_animal/guardian/types/support.dm index 8ef70e439f..50a96e13b6 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/support.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/support.dm @@ -33,7 +33,7 @@ C.adjustBruteLoss(-5) C.adjustFireLoss(-5) C.adjustOxyLoss(-5) - C.adjustToxLoss(-5) + C.adjustToxLoss(-5, forced = TRUE) var/obj/effect/temp_visual/heal/H = new /obj/effect/temp_visual/heal(get_turf(C)) if(namedatum) H.color = namedatum.colour From 1d5e21d137a6760c09f7be1b8451b66d8995b9f4 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 31 Jul 2019 19:35:27 -0500 Subject: [PATCH 068/469] ok --- code/modules/mob/living/carbon/human/update_icons.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index dbffbad740..c3c764fbc7 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -275,7 +275,7 @@ There are several things that need to be remembered: if(client && hud_used) var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES] inv.update_icon() - +/* if(!shoes && bloody_feet) var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) if(dna.features["taur"] != "None") @@ -300,7 +300,7 @@ There are several things that need to be remembered: else if(has_right_leg()) bloody_overlay.icon_state = "bloodyfeet_right" - overlays_standing[GLOVES_LAYER] = bloody_overlay + overlays_standing[GLOVES_LAYER] = bloody_overlay*/ if(shoes) var/obj/item/clothing/shoes/S = shoes From c8d7f1909d2537c3b3144c22436fb9f3d15baf39 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 1 Aug 2019 00:58:24 -0500 Subject: [PATCH 069/469] holy FUCK I got gib overlays working. Why wasn't it before? No one will ever know. --- code/game/atoms.dm | 8 +- code/game/objects/effects/decals/cleanable.dm | 2 +- .../effects/decals/cleanable/aliens.dm | 19 ++-- .../objects/effects/decals/cleanable/gibs.dm | 106 ++++++++---------- code/modules/mob/living/carbon/human/human.dm | 4 +- .../mob/living/carbon/human/human_helpers.dm | 4 +- icons/effects/blood.dmi | Bin 103608 -> 96833 bytes icons/effects/blood_to_convert.dmi | Bin 30321 -> 0 bytes 8 files changed, 66 insertions(+), 77 deletions(-) delete mode 100644 icons/effects/blood_to_convert.dmi diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 93af847691..cb3be24598 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -404,7 +404,7 @@ /obj/item/clothing/shoes/add_blood(mob/living/carbon/M) . = ..() - transfer_blood = rand(2, 4) +// transfer_blood = rand(2, 4) return TRUE /turf/add_blood(list/blood_dna) @@ -431,9 +431,9 @@ if(shoes) var/obj/item/clothing/shoes/S = shoes S.add_blood(blood_dna) - else - transfer_blood_dna(blood_dna) - bloody_feet = rand(2, 4) +// else +// transfer_blood_dna(blood_dna) +// bloody_feet = rand(2, 4) update_inv_shoes() // get them feet messy for prints! return TRUE diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 53e716b0d4..6746c41f0b 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -72,7 +72,7 @@ /obj/effect/decal/cleanable/Crossed(atom/movable/O) if(ishuman(O)) var/mob/living/carbon/human/H = O - if(H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) + if(H.shoes && blood_state && bloodiness && (!HAS_TRAIT(H,TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) var/obj/item/clothing/shoes/S = H.shoes var/add_blood = 0 if(bloodiness >= BLOOD_GAIN_PER_STEP) diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 43b2765a51..e6edc7661a 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -10,12 +10,19 @@ /obj/effect/decal/cleanable/blood/gibs/xeno color = BLOOD_COLOR_XENO - guts_colors = BLOOD_COLOR_XENO - racial = "alien" /obj/effect/decal/cleanable/blood/gibs/xeno/Initialize(mapload, list/datum/disease/diseases) . = ..() reagents.add_reagent("liquidxenogibs", 5) + update_icon() + +/obj/effect/decal/cleanable/blood/gibs/xeno/update_icon() + add_atom_colour(blood_DNA_to_color(), FIXED_COLOUR_PRIORITY) + cut_overlays() + var/mutable_appearance/flesh = mutable_appearance(icon, "[icon_state]x_flesh") + flesh.appearance_flags = RESET_COLOR + flesh.color = body_colors + add_overlay(flesh) /obj/effect/decal/cleanable/blood/gibs/xeno/streak(list/directions) set waitfor = 0 @@ -34,35 +41,27 @@ /obj/effect/decal/cleanable/blood/gibs/xeno/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/xeno/down random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/xeno/body random_icon_states = list("gibhead", "gibtorso") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/xeno/torso random_icon_states = list("gibtorso") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/xeno/limb random_icon_states = list("gibleg", "gibarm") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/xeno/core random_icon_states = list("gibmid1", "gibmid2", "gibmid3") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/xeno/larva random_icon_states = list("xgiblarva1", "xgiblarva2") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/xeno/larva/body random_icon_states = list("xgiblarvahead", "xgiblarvatorso") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/xtracks icon_state = "tracks" diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index f5b87de9b9..c7df4e4ecf 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -5,28 +5,25 @@ layer = LOW_OBJ_LAYER random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") mergeable_decal = FALSE - var/gib_overlay = FALSE var/body_colors = "#e3ba84" //a default color just in case. - var/guts_colors = "#4c276d" - var/racial = "carbon" /obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) . = ..() + if(random_icon_states && (icon_state == initial(icon_state)) && length(random_icon_states) > 0) + icon_state = pick(random_icon_states) + update_icon() + /obj/effect/decal/cleanable/blood/gibs/update_icon() - var/list/colorlist = list() - colorlist.Cut() - colorlist += ReadRGB("[blood_DNA_to_color()]0") - colorlist += ReadRGB("[guts_colors]0") - colorlist += ReadRGB("[body_colors]0") - colorlist += list(0,0,0, 255) - for(var/index=1, index<=colorlist.len, index++) - colorlist[index] = colorlist[index]/255 + add_atom_colour(blood_DNA_to_color(), FIXED_COLOUR_PRIORITY) cut_overlays() - if(gib_overlay) - var/image/gibs = image(icon, "[icon_state]_[racial]_[gib_overlay]") - gibs.color = colorlist - icon_state = gibs + var/mutable_appearance/guts = mutable_appearance(icon, "[icon_state]_guts") + guts.appearance_flags = RESET_COLOR + add_overlay(guts) + var/mutable_appearance/flesh = mutable_appearance(icon, "[icon_state]_flesh") + flesh.appearance_flags = RESET_COLOR + flesh.color = body_colors + add_overlay(flesh) /obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) return @@ -38,9 +35,9 @@ if(H.mind.assigned_role == "Detective") //Gumshoe perks yo playsound(loc, 'sound/effects/gib_step.ogg', 10, 1) else - playsound(loc, 'sound/effects/gib_step.ogg', H.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) + playsound(loc, 'sound/effects/gib_step.ogg', !HAS_TRAIT(H,TRAIT_LIGHT_STEP) ? 20 : 50, 1) else - playsound(loc, 'sound/effects/gib_step.ogg', L.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1) + playsound(loc, 'sound/effects/gib_step.ogg', !HAS_TRAIT(L,TRAIT_LIGHT_STEP) ? 20 : 50, 1) . = ..() /obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions) @@ -61,27 +58,21 @@ /obj/effect/decal/cleanable/blood/gibs/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/down random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/body random_icon_states = list("gibhead", "gibtorso") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/torso random_icon_states = list("gibtorso") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/limb random_icon_states = list("gibleg", "gibarm") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/core random_icon_states = list("gibmid1", "gibmid2", "gibmid3") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/old name = "old rotting gibs" @@ -93,6 +84,7 @@ setDir(pick(1,2,4,8)) icon_state += "-old" add_blood(list("Non-human DNA" = "A+")) + update_icon() /obj/effect/decal/cleanable/blood/drip name = "drips of blood" @@ -110,58 +102,57 @@ /obj/effect/decal/cleanable/blood/gibs/human/Initialize(mapload, list/datum/disease/diseases) . = ..() reagents.add_reagent("liquidgibs", 5) + if(!blood_DNA.len) + add_blood(list("Non-human DNA" = "A+")) + update_icon() /obj/effect/decal/cleanable/blood/gibs/human/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/human/down random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/human/body random_icon_states = list("gibhead", "gibtorso") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/human/torso random_icon_states = list("gibtorso") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/human/limb random_icon_states = list("gibleg", "gibarm") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/human/core random_icon_states = list("gibmid1", "gibmid2", "gibmid3") - gib_overlay = TRUE + //Lizards /obj/effect/decal/cleanable/blood/gibs/human/lizard body_colors = "117720" +/obj/effect/decal/cleanable/blood/gibs/human/lizard/Initialize(mapload, list/datum/disease/diseases) + . = ..() + reagents.add_reagent("liquidgibs", 5) + if(!blood_DNA.len) + add_blood(list("Non-human DNA" = "L")) + update_icon() + /obj/effect/decal/cleanable/blood/gibs/human/lizard/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/human/lizard/down random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/human/lizard/body random_icon_states = list("gibhead", "gibtorso") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/human/lizard/torso random_icon_states = list("gibtorso") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/human/lizard/limb random_icon_states = list("gibleg", "gibarm") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/human/lizard/core random_icon_states = list("gibmid1", "gibmid2", "gibmid3") - gib_overlay = TRUE // Slime Gibs /obj/effect/decal/cleanable/blood/gibs/slime @@ -170,36 +161,39 @@ /obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases) . = ..() reagents.add_reagent("liquidslimegibs", 5) -/* + if(!blood_DNA.len) + add_blood(list("Non-human DNA" = "GEL")) + update_icon() + /obj/effect/decal/cleanable/blood/gibs/slime/update_icon() - if(gib_overlay) - var/image/gibz = new(icon, icon_state + "c-overlay") - gibz.color = body_colors - add_overlay(gibz) */ + add_atom_colour(body_colors, FIXED_COLOUR_PRIORITY) + cut_overlays() + var/mutable_appearance/guts = mutable_appearance(icon, "[icon_state]s_guts") + guts.appearance_flags = RESET_COLOR + guts.color = body_colors + add_overlay(guts) + var/mutable_appearance/flesh = mutable_appearance(icon, "[icon_state]_flesh") + flesh.appearance_flags = RESET_COLOR + flesh.color = body_colors + add_overlay(flesh) /obj/effect/decal/cleanable/blood/gibs/slime/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/slime/down random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/slime/body random_icon_states = list("gibhead", "gibtorso") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/slime/torso random_icon_states = list("gibtorso") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/slime/limb random_icon_states = list("gibleg", "gibarm") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/slime/core random_icon_states = list("gibmid1", "gibmid2", "gibmid3") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/synth desc = "They look sludgy and disgusting." @@ -216,35 +210,31 @@ /obj/effect/decal/cleanable/blood/gibs/ipc/Initialize(mapload, list/datum/disease/diseases) . = ..() reagents.add_reagent("liquidoilgibs", 5) + if(!blood_DNA.len) + add_blood(list("Non-human DNA" = "HF")) + update_icon() /obj/effect/decal/cleanable/blood/gibs/ipc/update_icon() - if(gib_overlay) - var/icon/blood = new(icon,"[icon_state]",dir) - var/image/gibz = new(icon, icon_state + "r-overlay") - blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY) - gibz.appearance_flags = RESET_COLOR - add_overlay(gibz) + add_atom_colour(blood_DNA_to_color(), FIXED_COLOUR_PRIORITY) + cut_overlays() + var/mutable_appearance/guts = mutable_appearance(icon, "[icon_state]r-overlay") + guts.appearance_flags = RESET_COLOR + add_overlay(guts) /obj/effect/decal/cleanable/blood/gibs/ipc/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/ipc/down random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/ipc/body random_icon_states = list("gibhead", "gibtorso") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/ipc/torso random_icon_states = list("gibtorso") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/ipc/limb random_icon_states = list("gibleg", "gibarm") - gib_overlay = TRUE /obj/effect/decal/cleanable/blood/gibs/ipc/core random_icon_states = list("gibmid1", "gibmid2", "gibmid3") - gib_overlay = TRUE diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 00a30ca1b2..4b298faf56 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -696,9 +696,9 @@ if(H.bloody_hands) H.bloody_hands = 0 H.update_inv_gloves() - if(H.bloody_feet) +/* if(H.bloody_feet) H.bloody_feet = 0 - H.update_inv_shoes() + H.update_inv_shoes()*/ update_icons() //apply the now updated overlays to the mob diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index f6eebf381d..8bc8866380 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -127,9 +127,9 @@ return FALSE return . - +/* /mob/living/carbon/human/transfer_blood_dna(list/blood_dna) ..() if(blood_dna.len) last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works - last_blood_DNA = blood_dna[blood_dna.len] + last_blood_DNA = blood_dna[blood_dna.len]*/ diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index 82ddaf80f0fb1a81aa5ae51018cc7dc917f35c8a..ff7012daa93f36606319e0240b0ead00ecf1825a 100644 GIT binary patch literal 96833 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%0DmpSgx$-#RQXV9VHZV})}Qv~!8Mc{5a0 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�$MDBaSos8#gIM+ytXZwrK#94 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

    QGZDNwc*@S@2O*H9?A5jm}p)ef5_r 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 G@BafQqk~KU diff --git a/icons/effects/blood_to_convert.dmi b/icons/effects/blood_to_convert.dmi deleted file mode 100644 index f1bd5808808ab47977019d92dc4b32944d2f0fdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30321 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 MhX$I}8un5D2W#Z^od5s; From ec9050588126e5560f8c94b779c6307e824587ad Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 1 Aug 2019 11:06:03 -0500 Subject: [PATCH 070/469] neyh --- code/game/machinery/bloodbankgen.dm | 314 ++++++++++++++++++++++++++++ code/game/machinery/limbgrower.dm | 4 + code/modules/cargo/packs.dm | 22 +- code/modules/mob/living/blood.dm | 8 +- 4 files changed, 340 insertions(+), 8 deletions(-) create mode 100644 code/game/machinery/bloodbankgen.dm diff --git a/code/game/machinery/bloodbankgen.dm b/code/game/machinery/bloodbankgen.dm new file mode 100644 index 0000000000..1f215b4b6d --- /dev/null +++ b/code/game/machinery/bloodbankgen.dm @@ -0,0 +1,314 @@ +/obj/machinery/bloodbankgen + name = "blood bank generator" + desc = "Generates universally applicable synthetics for all blood types. Add regular blood to convert quickly." + icon = 'icons/obj/machines/biogenerator.dmi' + icon_state = "biogen-empty" + density = TRUE + use_power = IDLE_POWER_USE + idle_power_usage = 80 + circuit = /obj/item/circuitboard/machine/bloodbankgen + var/processing = FALSE + var/obj/item/reagent_containers/blood = null + var/points = 0 + var/menustat = "menu" + var/efficiency = 0 + var/productivity = 0 + var/max_items = 40 + var/datum/techweb/stored_research + var/list/show_categories = list("Blood") + +/obj/machinery/bloodbankgen/Initialize() + . = ..() + stored_research = new /datum/techweb/specialized/autounlocking/bloodbankgen + create_reagents(1000) + +/obj/machinery/bloodbankgen/Destroy() + QDEL_NULL(bag) + return ..() + +/obj/machinery/bloodbankgen/contents_explosion(severity, target) + ..() + if(bag) + bag.ex_act(severity, target) + +/obj/machinery/bloodbankgen/handle_atom_del(atom/A) + ..() + if(A == bag) + bag = null + update_icon() + updateUsrDialog() + +/obj/machinery/bloodbankgen/RefreshParts() + var/E = 0 + var/P = 0 + var/max_storage = 40 + for(var/obj/item/stock_parts/matter_bin/B in component_parts) + P += B.rating + max_storage = 40 * B.rating + for(var/obj/item/stock_parts/manipulator/M in component_parts) + E += M.rating + efficiency = E + productivity = P + max_items = max_storage + +/obj/machinery/bloodbankgen/on_reagent_change(changetype) //When the reagents change, change the icon as well. + update_icon() + +/obj/machinery/bloodbankgen/update_icon() + if(panel_open) + icon_state = "biogen-empty-o" + else if(!src.bag) + icon_state = "biogen-empty" + else if(!src.processing) + icon_state = "biogen-stand" + else + icon_state = "biogen-work" + return + +/obj/machinery/bloodbankgen/attackby(obj/item/O, mob/user, params) + if(user.a_intent == INTENT_HARM) + return ..() + + if(processing) + to_chat(user, "The generator is currently processing.") + return + + if(default_deconstruction_screwdriver(user, "biogen-empty-o", "biogen-empty", O)) + if(bag) + var/obj/item/reagent_containers/blood/B = bag + B.forceMove(drop_location()) + bag = null + update_icon() + return + + if(default_deconstruction_crowbar(O)) + return + + if(istype(O, /obj/item/reagent_containers/blood)) + . = 1 //no afterattack + if(!panel_open) + if(bag) + to_chat(user, "A container is already loaded into the machine.") + else + if(!user.transferItemToLoc(O, src)) + return + bag = O + to_chat(user, "You add the container to the machine.") + update_icon() + updateUsrDialog() + else + to_chat(user, "Close the maintenance panel first.") + return + + else if(istype(O, /obj/item/storage/bag/plants)) + var/obj/item/storage/bag/plants/PB = O + var/i = 0 + for(var/obj/item/reagent_containers/food/snacks/grown/G in contents) + i++ + if(i >= max_items) + to_chat(user, "The bloodbankgen is already full! Activate it.") + else + for(var/obj/item/reagent_containers/food/snacks/grown/G in PB.contents) + if(i >= max_items) + break + if(SEND_SIGNAL(PB, COMSIG_TRY_STORAGE_TAKE, G, src)) + i++ + if(iYou empty the plant bag into the bloodbankgen.") + else if(PB.contents.len == 0) + to_chat(user, "You empty the plant bag into the bloodbankgen, filling it to its capacity.") + else + to_chat(user, "You fill the bloodbankgen to its capacity.") + return TRUE //no afterattack + + else if(istype(O, /obj/item/reagent_containers/food/snacks/grown)) + var/i = 0 + for(var/obj/item/reagent_containers/food/snacks/grown/G in contents) + i++ + if(i >= max_items) + to_chat(user, "The bloodbankgen is full! Activate it.") + else + if(user.transferItemToLoc(O, src)) + to_chat(user, "You put [O.name] in [src.name]") + return TRUE //no afterattack + else if (istype(O, /obj/item/disk/design_disk)) + user.visible_message("[user] begins to load \the [O] in \the [src]...", + "You begin to load a design from \the [O]...", + "You hear the chatter of a floppy drive.") + processing = TRUE + var/obj/item/disk/design_disk/D = O + if(do_after(user, 10, target = src)) + for(var/B in D.blueprints) + if(B) + stored_research.add_design(B) + processing = FALSE + return TRUE + else + to_chat(user, "You cannot put this in [src.name]!") + +/obj/machinery/bloodbankgen/ui_interact(mob/user) + if(stat & BROKEN || panel_open) + return + . = ..() + var/dat + if(processing) + dat += "

    bloodbankgen is processing! Please wait...

    " + else + switch(menustat) + if("nopoints") + dat += "
    You do not have enough biomass to create products.
    Please, put growns into reactor and activate it.
    " + menustat = "menu" + if("complete") + dat += "
    Operation complete.
    " + menustat = "menu" + if("void") + dat += "
    Error: No growns inside.
    Please, put growns into reactor.
    " + menustat = "menu" + if("nobagspace") + dat += "
    Not enough space left in container. Unable to create product.
    " + menustat = "menu" + if(bag) + var/categories = show_categories.Copy() + for(var/V in categories) + categories[V] = list() + for(var/V in stored_research.researched_designs) + var/datum/design/D = stored_research.researched_designs[V] + for(var/C in categories) + if(C in D.category) + categories[C] += D + + dat += "
    Biomass: [points] units.

    " + dat += "
    ActivateDetach Container" + for(var/cat in categories) + dat += "

    [cat]:

    " + dat += "
    " + for(var/V in categories[cat]) + var/datum/design/D = V + dat += "[D.name]: Make" + if(cat in timesFiveCategories) + dat += "x5" + if(ispath(D.build_path, /obj/item/stack)) + dat += "x10" + dat += "([D.materials[MAT_BIOMASS]/efficiency])
    " + dat += "
    " + else + dat += "
    No container inside, please insert container.
    " + + var/datum/browser/popup = new(user, "biogen", name, 350, 520) + popup.set_content(dat) + popup.open() + +/obj/machinery/bloodbankgen/proc/activate() + if (usr.stat != CONSCIOUS) + return + if (src.stat != NONE) //NOPOWER etc + return + if(processing) + to_chat(usr, "The bloodbankgen is in the process of working.") + return + var/S = 0 + for(var/obj/item/reagent_containers/food/snacks/grown/I in contents) + S += 5 + if(I.reagents.get_reagent_amount("nutriment") < 0.1) + points += 1*productivity + else points += I.reagents.get_reagent_amount("nutriment")*10*productivity + qdel(I) + if(S) + processing = TRUE + update_icon() + updateUsrDialog() + playsound(src.loc, 'sound/machines/blender.ogg', 50, 1) + use_power(S*30) + sleep(S+15/productivity) + processing = FALSE + update_icon() + else + menustat = "void" + +/obj/machinery/bloodbankgen/proc/check_cost(list/materials, multiplier = 1, remove_points = 1) + if(materials.len != 1 || materials[1] != MAT_BIOMASS) + return FALSE + if (materials[MAT_BIOMASS]*multiplier/efficiency > points) + menustat = "nopoints" + return FALSE + else + if(remove_points) + points -= materials[MAT_BIOMASS]*multiplier/efficiency + update_icon() + updateUsrDialog() + return TRUE + +/obj/machinery/bloodbankgen/proc/check_container_volume(list/reagents, multiplier = 1) + var/sum_reagents = 0 + for(var/R in reagents) + sum_reagents += reagents[R] + sum_reagents *= multiplier + + if(bag.reagents.total_volume + sum_reagents > bag.reagents.maximum_volume) + menustat = "nobagspace" + return FALSE + + return TRUE + +/obj/machinery/bloodbankgen/proc/create_product(datum/design/D, amount) + if(!bag || !loc) + return FALSE + + if(ispath(D.build_path, /obj/item/stack)) + if(!check_container_volume(D.make_reagents, amount)) + return FALSE + if(!check_cost(D.materials, amount)) + return FALSE + + new D.build_path(drop_location(), amount) + for(var/R in D.make_reagents) + bag.reagents.add_reagent(R, D.make_reagents[R]*amount) + else + var/i = amount + while(i > 0) + if(!check_container_volume(D.make_reagents)) + return . + if(!check_cost(D.materials)) + return . + if(D.build_path) + new D.build_path(loc) + for(var/R in D.make_reagents) + bag.reagents.add_reagent(R, D.make_reagents[R]) + . = 1 + --i + + menustat = "complete" + update_icon() + return . + +/obj/machinery/bloodbankgen/proc/detach() + if(bag) + bag.forceMove(drop_location()) + bag = null + update_icon() + +/obj/machinery/bloodbankgen/Topic(href, href_list) + if(..() || panel_open) + return + + usr.set_machine(src) + + if(href_list["activate"]) + activate() + updateUsrDialog() + + else if(href_list["detach"]) + detach() + updateUsrDialog() + + else if(href_list["create"]) + var/amount = (text2num(href_list["amount"])) + //Can't be outside these (if you change this keep a sane limit) + amount = CLAMP(amount, 1, 50) + var/datum/design/D = locate(href_list["create"]) + create_product(D, amount) + updateUsrDialog() + + else if(href_list["menu"]) + menustat = "menu" + updateUsrDialog() diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index a3250fe1b0..1229b4a308 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -29,6 +29,10 @@ "fly", "moth", "plasmaman", + "mammal", + "aquatic", + "insect", + "xenoperson", "other" ) diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 53a8ab42c3..13f2476eef 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1302,17 +1302,31 @@ /datum/supply_pack/medical/bloodpacks name = "Blood Pack Variety Crate" - desc = "Contains eight different blood packs for reintroducing blood to patients." + desc = "Contains ten different blood packs for reintroducing blood to patients." cost = 3000 - contains = list(/obj/item/reagent_containers/blood, - /obj/item/reagent_containers/blood, + contains = list(/obj/item/reagent_containers/blood/random, + /obj/item/reagent_containers/blood/random, /obj/item/reagent_containers/blood/APlus, /obj/item/reagent_containers/blood/AMinus, /obj/item/reagent_containers/blood/BPlus, /obj/item/reagent_containers/blood/BMinus, /obj/item/reagent_containers/blood/OPlus, /obj/item/reagent_containers/blood/OMinus, - /obj/item/reagent_containers/blood/lizard) + /obj/item/reagent_containers/blood/lizard, + /obj/item/reagent_containers/blood/jellyblood, + /obj/item/reagent_containers/blood/jellyblood) + crate_name = "blood freezer" + crate_type = /obj/structure/closet/crate/freezer + +/datum/supply_pack/medical/bloodpackssynth + name = "Synthetics Blood Pack Crate" + desc = "Contains five synthetics blood packs for reintroducing blood to patients." + cost = 3000 + contains = list(/obj/item/reagent_containers/blood/synthetics, + /obj/item/reagent_containers/blood/synthetics, + /obj/item/reagent_containers/blood/synthetics, + /obj/item/reagent_containers/blood/synthetics, + /obj/item/reagent_containers/blood/synthetics) crate_name = "blood freezer" crate_type = /obj/structure/closet/crate/freezer diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index de39197b8c..60bd1477f9 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -149,13 +149,13 @@ C.ForceContractDisease(D) if(!(blood_data["blood_type"] in get_safe_blood(C.dna.blood_type))) if((blood_data["blood_type"] == "GEL") && (C.dna.species.exotic_blood != "jellyblood")) - C.reagents.add_reagent("toxin", amount * 1.5) //filthy xenos bloooood + C.reagents.add_reagent("bonehurtingjuice", amount * 1.5) //filthy xenos bloooood else if((blood_data["blood_type"] == "HF") && (C.dna.species.exotic_blood != "oilblood")) - C.reagents.add_reagent("toxin", amount * 1) //don't fucking put oil in people + C.reagents.add_reagent("bonehurtingjuice", amount * 1) //don't fucking put oil in people else if((blood_data["blood_type"] == "X*") && (C.dna.species.exotic_blood != "xenoblood")) - C.reagents.add_reagent("toxin", amount * 1.5) //acid blooood + C.reagents.add_reagent("sacid", amount * 1.5) //acid blooood else - C.reagents.add_reagent("toxin", amount * 0.5) + C.reagents.add_reagent("bonehurtingjuice", amount * 0.5) else C.blood_volume = min(C.blood_volume + round(amount, 0.1), BLOOD_VOLUME_MAXIMUM) return 1 From 657d3528e2baf3fe4403afc392e61ac5d8ce6372 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 1 Aug 2019 17:35:37 -0500 Subject: [PATCH 071/469] some good work here --- code/game/machinery/bloodbankgen.dm | 316 +++++++++--------- .../circuitboards/machine_circuitboards.dm | 9 + icons/obj/bloodbank.dmi | Bin 0 -> 1832 bytes tgstation.dme | 1 + 4 files changed, 170 insertions(+), 156 deletions(-) create mode 100644 icons/obj/bloodbank.dmi diff --git a/code/game/machinery/bloodbankgen.dm b/code/game/machinery/bloodbankgen.dm index 1f215b4b6d..4b07f712b6 100644 --- a/code/game/machinery/bloodbankgen.dm +++ b/code/game/machinery/bloodbankgen.dm @@ -2,34 +2,36 @@ name = "blood bank generator" desc = "Generates universally applicable synthetics for all blood types. Add regular blood to convert quickly." icon = 'icons/obj/machines/biogenerator.dmi' - icon_state = "biogen-empty" + icon_state = "bloodbank-off" density = TRUE use_power = IDLE_POWER_USE idle_power_usage = 80 circuit = /obj/item/circuitboard/machine/bloodbankgen var/processing = FALSE - var/obj/item/reagent_containers/blood = null - var/points = 0 + var/obj/item/reagent_containers/blood/bag = null + var/obj/item/reagent_containers/blood/outbag = null + var/bloodstored = 0 + var/maxbloodstored = 1000 var/menustat = "menu" var/efficiency = 0 var/productivity = 0 - var/max_items = 40 - var/datum/techweb/stored_research - var/list/show_categories = list("Blood") /obj/machinery/bloodbankgen/Initialize() . = ..() - stored_research = new /datum/techweb/specialized/autounlocking/bloodbankgen create_reagents(1000) + update_icon() /obj/machinery/bloodbankgen/Destroy() QDEL_NULL(bag) + QDEL_NULL(outbag) return ..() /obj/machinery/bloodbankgen/contents_explosion(severity, target) ..() if(bag) bag.ex_act(severity, target) + if(outbag) + outbag.ex_act(severity, target) /obj/machinery/bloodbankgen/handle_atom_del(atom/A) ..() @@ -37,34 +39,111 @@ bag = null update_icon() updateUsrDialog() + if(A == outbag) + outbag = null + update_icon() + updateUsrDialog() /obj/machinery/bloodbankgen/RefreshParts() var/E = 0 var/P = 0 - var/max_storage = 40 - for(var/obj/item/stock_parts/matter_bin/B in component_parts) - P += B.rating - max_storage = 40 * B.rating for(var/obj/item/stock_parts/manipulator/M in component_parts) E += M.rating efficiency = E productivity = P - max_items = max_storage - -/obj/machinery/bloodbankgen/on_reagent_change(changetype) //When the reagents change, change the icon as well. - update_icon() /obj/machinery/bloodbankgen/update_icon() + cut_overlays() + if(is_operational()) + icon_state = "bloodbank-on" + if(panel_open) - icon_state = "biogen-empty-o" - else if(!src.bag) - icon_state = "biogen-empty" - else if(!src.processing) - icon_state = "biogen-stand" - else - icon_state = "biogen-work" + add_overlay("bloodbank-panel") + + if(src.bag) + add_overlay("bloodbag-input") + if(bag.reagents.total_volume) + var/mutable_appearance/filling_overlay = mutable_appearance(icon, "input-reagent") + + var/percent = round((bag.reagents.total_volume / bag.volume) * 100) + switch(percent) + if(0 to 9) + filling_overlay.icon_state = "input-reagent0" + if(10 to 24) + filling_overlay.icon_state = "input-reagent10" + if(25 to 49) + filling_overlay.icon_state = "input-reagent25" + if(50 to 74) + filling_overlay.icon_state = "input-reagent50" + if(75 to 79) + filling_overlay.icon_state = "input-reagent75" + if(80 to 90) + filling_overlay.icon_state = "input-reagent80" + if(91 to INFINITY) + filling_overlay.icon_state = "input-reagent100" + + filling_overlay.color = list(mix_color_from_reagents(bag.reagents.reagent_list)) + add_overlay(filling_overlay) + + if(src.outbag) + add_overlay("bloodbag-output") + if(outbag.reagents.total_volume) + var/mutable_appearance/filling_overlay = mutable_appearance(icon, "output-reagent") + + var/percent = round((outbag.reagents.total_volume / outbag.volume) * 100) + switch(percent) + if(0 to 9) + filling_overlay.icon_state = "input-reagent0" + if(10 to 24) + filling_overlay.icon_state = "input-reagent10" + if(25 to 49) + filling_overlay.icon_state = "input-reagent25" + if(50 to 74) + filling_overlay.icon_state = "input-reagent50" + if(75 to 79) + filling_overlay.icon_state = "input-reagent75" + if(80 to 90) + filling_overlay.icon_state = "input-reagent80" + if(91 to INFINITY) + filling_overlay.icon_state = "input-reagent100" + + filling_overlay.color = list(mix_color_from_reagents(outbag.reagents.reagent_list)) + add_overlay(filling_overlay) return +/obj/machinery/bloodbankgen/process() + if(!is_operational()) + return PROCESS_KILL + + var/transfer_amount = 20 + var/efficent_amount = ((transfer_amount * 0.5) * (1.5 * efficiency)) + if(bag) + if(bag.reagents) + var/datum/reagent/blood/B = bag.reagents.has_reagent("blood") + if(B) + var/amount = reagents.maximum_volume - reagents.total_volume //monitor the machine's internal storage + amount = min(amount, 4) + if(!amount) + return + var/list/bloodtypes = list("A+", "A-", "B+", "B-", "O+", "O-", "L", "X*", "HF", "GEL", "U") + for(var/blood in bloodtypes[bag.blood_type]) + if(blood) //no infinite loops using synthetics. + src.add_reagent("syntheticblood", efficent_amount) + else + src.add_reagent("syntheticblood", transfer_amount) + bag.reagents.remove_reagent(B,transfer_amount) + update_icon() + + if(outbag) + var/amount = outbag.reagents.maximum_volume - outbag.reagents.total_volume //monitor the output bag's internal storage + amount = min(amount, 4) + if(!amount) + return + if(bloodstored <= 0) + return + reagents.trans_to(outbag, transfer_amount) + update_icon() + /obj/machinery/bloodbankgen/attackby(obj/item/O, mob/user, params) if(user.a_intent == INTENT_HARM) return ..() @@ -73,11 +152,15 @@ to_chat(user, "The generator is currently processing.") return - if(default_deconstruction_screwdriver(user, "biogen-empty-o", "biogen-empty", O)) + if(default_deconstruction_screwdriver(user, "bloodbank-off", "bloodbank-off", O)) if(bag) var/obj/item/reagent_containers/blood/B = bag B.forceMove(drop_location()) bag = null + if(outbag) + var/obj/item/reagent_containers/blood/B = outbag + B.forceMove(drop_location()) + outbag = null update_icon() return @@ -87,62 +170,26 @@ if(istype(O, /obj/item/reagent_containers/blood)) . = 1 //no afterattack if(!panel_open) - if(bag) - to_chat(user, "A container is already loaded into the machine.") - else + if(bag && outbag) + to_chat(user, "This machine already has bags attached.") + else if(!bag) if(!user.transferItemToLoc(O, src)) return bag = O - to_chat(user, "You add the container to the machine.") + to_chat(user, "You add the container to the machine's input slot.") + update_icon() + updateUsrDialog() + else if(!outbag) + if(!user.transferItemToLoc(O, src)) + return + outbag = O + to_chat(user, "You add the container to the machine's output slot.") update_icon() updateUsrDialog() else to_chat(user, "Close the maintenance panel first.") return - else if(istype(O, /obj/item/storage/bag/plants)) - var/obj/item/storage/bag/plants/PB = O - var/i = 0 - for(var/obj/item/reagent_containers/food/snacks/grown/G in contents) - i++ - if(i >= max_items) - to_chat(user, "The bloodbankgen is already full! Activate it.") - else - for(var/obj/item/reagent_containers/food/snacks/grown/G in PB.contents) - if(i >= max_items) - break - if(SEND_SIGNAL(PB, COMSIG_TRY_STORAGE_TAKE, G, src)) - i++ - if(iYou empty the plant bag into the bloodbankgen.") - else if(PB.contents.len == 0) - to_chat(user, "You empty the plant bag into the bloodbankgen, filling it to its capacity.") - else - to_chat(user, "You fill the bloodbankgen to its capacity.") - return TRUE //no afterattack - - else if(istype(O, /obj/item/reagent_containers/food/snacks/grown)) - var/i = 0 - for(var/obj/item/reagent_containers/food/snacks/grown/G in contents) - i++ - if(i >= max_items) - to_chat(user, "The bloodbankgen is full! Activate it.") - else - if(user.transferItemToLoc(O, src)) - to_chat(user, "You put [O.name] in [src.name]") - return TRUE //no afterattack - else if (istype(O, /obj/item/disk/design_disk)) - user.visible_message("[user] begins to load \the [O] in \the [src]...", - "You begin to load a design from \the [O]...", - "You hear the chatter of a floppy drive.") - processing = TRUE - var/obj/item/disk/design_disk/D = O - if(do_after(user, 10, target = src)) - for(var/B in D.blueprints) - if(B) - stored_research.add_design(B) - processing = FALSE - return TRUE else to_chat(user, "You cannot put this in [src.name]!") @@ -152,49 +199,38 @@ . = ..() var/dat if(processing) - dat += "
    bloodbankgen is processing! Please wait...

    " + dat += "
    The blood generator is processing! Please wait...

    " else switch(menustat) - if("nopoints") - dat += "
    You do not have enough biomass to create products.
    Please, put growns into reactor and activate it.
    " + if("noblood") + dat += "
    You do not have enough blood product to create synthetics.
    " menustat = "menu" if("complete") dat += "
    Operation complete.
    " menustat = "menu" - if("void") - dat += "
    Error: No growns inside.
    Please, put growns into reactor.
    " - menustat = "menu" if("nobagspace") - dat += "
    Not enough space left in container. Unable to create product.
    " + dat += "
    Not enough space left in container. Please replace receptical.
    " menustat = "menu" if(bag) - var/categories = show_categories.Copy() - for(var/V in categories) - categories[V] = list() - for(var/V in stored_research.researched_designs) - var/datum/design/D = stored_research.researched_designs[V] - for(var/C in categories) - if(C in D.category) - categories[C] += D - - dat += "
    Biomass: [points] units.

    " - dat += "ActivateDetach Container" - for(var/cat in categories) - dat += "

    [cat]:

    " - dat += "
    " - for(var/V in categories[cat]) - var/datum/design/D = V - dat += "[D.name]: Make" - if(cat in timesFiveCategories) - dat += "x5" - if(ispath(D.build_path, /obj/item/stack)) - dat += "x10" - dat += "([D.materials[MAT_BIOMASS]/efficiency])
    " - dat += "
    " + data["isBagLoaded"] = bag ? TRUE : FALSE + var/bagContents = list() + if(bag && bag.reagents && bag.reagents.reagent_list.len) + for(var/datum/reagent/R in bag.reagents.reagent_list) + bagContents += list(list("name" = R.name, "volume" = R.volume)) + data["bagContents"] = bagContents + return data + if(outbag) + data["isOutbagLoaded"] = outbag ? TRUE : FALSE + var/outbagContents = list() + if(outbag && outbag.reagents && outbag.reagents.reagent_list.len) + for(var/datum/reagent/R in outbag.reagents.reagent_list) + outbagContents += list(list("name" = R.name, "volume" = R.volume)) + data["outbagContents"] = outbagContents + return data else - dat += "
    No container inside, please insert container.
    " + dat += "
    No containers inside, please insert container.
    " - var/datum/browser/popup = new(user, "biogen", name, 350, 520) + var/datum/browser/popup = new(user, "bloodbank", name, 350, 520) popup.set_content(dat) popup.open() @@ -207,11 +243,12 @@ to_chat(usr, "The bloodbankgen is in the process of working.") return var/S = 0 - for(var/obj/item/reagent_containers/food/snacks/grown/I in contents) + if(reagents) + var/datum/reagent/blood/B = reagents.has_reagent("blood") S += 5 - if(I.reagents.get_reagent_amount("nutriment") < 0.1) - points += 1*productivity - else points += I.reagents.get_reagent_amount("nutriment")*10*productivity + if(B.reagents.get_reagent_amount("blood") < 0.1) + bloodstored += 2*productivity + else bloodstored += B.reagents.get_reagent_amount("nutriment")*10*productivity qdel(I) if(S) processing = TRUE @@ -225,15 +262,15 @@ else menustat = "void" -/obj/machinery/bloodbankgen/proc/check_cost(list/materials, multiplier = 1, remove_points = 1) +/obj/machinery/bloodbankgen/proc/check_cost(list/materials, multiplier = 1, remove_bloodstored = 1) if(materials.len != 1 || materials[1] != MAT_BIOMASS) return FALSE - if (materials[MAT_BIOMASS]*multiplier/efficiency > points) - menustat = "nopoints" + if (materials[MAT_BIOMASS]*multiplier/efficiency > bloodstored) + menustat = "noblood" return FALSE else - if(remove_points) - points -= materials[MAT_BIOMASS]*multiplier/efficiency + if(remove_bloodstored) + bloodstored -= materials[MAT_BIOMASS]*multiplier/efficiency update_icon() updateUsrDialog() return TRUE @@ -244,49 +281,24 @@ sum_reagents += reagents[R] sum_reagents *= multiplier - if(bag.reagents.total_volume + sum_reagents > bag.reagents.maximum_volume) + if(outbag.reagents.total_volume + sum_reagents > outbag.reagents.maximum_volume) menustat = "nobagspace" return FALSE return TRUE -/obj/machinery/bloodbankgen/proc/create_product(datum/design/D, amount) - if(!bag || !loc) - return FALSE - - if(ispath(D.build_path, /obj/item/stack)) - if(!check_container_volume(D.make_reagents, amount)) - return FALSE - if(!check_cost(D.materials, amount)) - return FALSE - - new D.build_path(drop_location(), amount) - for(var/R in D.make_reagents) - bag.reagents.add_reagent(R, D.make_reagents[R]*amount) - else - var/i = amount - while(i > 0) - if(!check_container_volume(D.make_reagents)) - return . - if(!check_cost(D.materials)) - return . - if(D.build_path) - new D.build_path(loc) - for(var/R in D.make_reagents) - bag.reagents.add_reagent(R, D.make_reagents[R]) - . = 1 - --i - - menustat = "complete" - update_icon() - return . - -/obj/machinery/bloodbankgen/proc/detach() +/obj/machinery/bloodbankgen/proc/detachinput() if(bag) bag.forceMove(drop_location()) bag = null update_icon() +/obj/machinery/bloodbankgen/proc/detachoutput() + if(outbag) + outbag.forceMove(drop_location()) + outbag = null + update_icon() + /obj/machinery/bloodbankgen/Topic(href, href_list) if(..() || panel_open) return @@ -297,18 +309,10 @@ activate() updateUsrDialog() - else if(href_list["detach"]) - detach() + else if(href_list["detachinput"]) + detachinput() updateUsrDialog() - else if(href_list["create"]) - var/amount = (text2num(href_list["amount"])) - //Can't be outside these (if you change this keep a sane limit) - amount = CLAMP(amount, 1, 50) - var/datum/design/D = locate(href_list["create"]) - create_product(D, amount) - updateUsrDialog() - - else if(href_list["menu"]) - menustat = "menu" + else if(href_list["detachoutput"]) + detachoutput() updateUsrDialog() diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 2a01a7e18f..c8d81f4aca 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -31,6 +31,15 @@ /obj/item/stock_parts/manipulator = 1, /obj/item/stack/sheet/glass = 1) +/obj/item/circuitboard/machine/bloodbankgen + name = "Blood Bank Generator (Machine Board)" + build_path = obj/machinery/bloodbankgen + req_components = list( + /obj/item/stock_parts/matter_bin = 1, + /obj/item/stock_parts/manipulator = 1, + /obj/item/stack/cable_coil = 5, + /obj/item/stack/sheet/glass = 1) + /obj/item/circuitboard/machine/clonepod name = "Clone Pod (Machine Board)" build_path = /obj/machinery/clonepod diff --git a/icons/obj/bloodbank.dmi b/icons/obj/bloodbank.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4b4b2b6990ccfa9d4b7039977982030cb6117980 GIT binary patch literal 1832 zcmb7_doJg$gqpTUNDZ@+5o9zNEp-{%)n#=_ zZIxElB{FqMlOiI+NQX8-QK~JCh)XpWmn^zJ_Gh<0-sd^*Iq&(tpZEKH&Uv$ayxlZ4 z_GMNqzw&m#{cOY$TBs850cv1W&uDCoy8Tzm0yUxdW`ZC7)t&cnYT z4F>~=~ugVDmXXhE;wfbAiLQ8$qgt)~7?!uhFfm&~ZU{76yPA~k60^gd94 zugI;Du6C_A(k1-G-I}#Bqp!?7?M>zBtnbB!!>cKm#1$hFIoln^M`aYr#vu=4c-&4m zGP~(B>J#BVBE_aAoju^;i!>gvjRJHGQeD0HXftD@{R7FM{=UAYx#YE?s_M+A=+q^?GSB+<2N&B4VtE3lgz|z&AK3e!Z-azD!St=CML4G9X2nr%2R}KlKbX zB6i16V5WW#8Zsj)P^_;^wuW}Af_n7$7%1Rn17EQZtB`$6 zxsTOQ5!IZ)wZGj;Wcg*RvVv&N??&$MS^^)zgOz=?tb9s7VPA)mgU*C8H}4b}Ow>y* zJ5fou8PMnI)VG8dht*s~xLv;aV1i8(hMWFAk7JKNyS!4wA(2}y{ZP)N}dQDUZejQ+4%J(<@xfRa$sN!Kha-<^A-HYdJ>w{x6<+g zf<)@Atws0?Rfm`+QGj@%-E%q0dOPRnUU)~qr5=ChVEDpV=lj_$PVSid4ndbeRbHHp z$(4ul>fWcO-!DlgEbj}PlQ1404_nw8U7KjEtE;=n=`!xRR@v=gT{&?k`(>)qHMH7J zBxXG-CZ^77F9IpTXGRX5_w_IuAafql9)+l_qg>N!?nfh!(rdPjDBc+>Zh8g%Cl z6OM(`pNjiqT%Rd)B?NDUaE*&Q*=&Du=Yk?Lu{K|ShEg!Rs)kGg{vXu`;gK-M zSF?rKF(ga};`T+Eo-Y)e{`1HR41G{e! literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index ee88ace1cc..31cc701c2f 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -562,6 +562,7 @@ #include "code\game\machinery\autolathe.dm" #include "code\game\machinery\bank_machine.dm" #include "code\game\machinery\Beacon.dm" +#include "code\game\machinery\bloodbankgen.dm" #include "code\game\machinery\buttons.dm" #include "code\game\machinery\cell_charger.dm" #include "code\game\machinery\cloning.dm" From 6db4cbf8b070f38eab9d4e691825df8cbacc1336 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 4 Aug 2019 01:32:51 -0500 Subject: [PATCH 072/469] itsworking.avi --- code/game/machinery/bloodbankgen.dm | 243 ++++++++++-------- .../circuitboards/machine_circuitboards.dm | 2 +- tgui/assets/tgui.js | 2 +- 3 files changed, 132 insertions(+), 115 deletions(-) diff --git a/code/game/machinery/bloodbankgen.dm b/code/game/machinery/bloodbankgen.dm index 4b07f712b6..b1bec0bb7d 100644 --- a/code/game/machinery/bloodbankgen.dm +++ b/code/game/machinery/bloodbankgen.dm @@ -1,13 +1,15 @@ /obj/machinery/bloodbankgen name = "blood bank generator" - desc = "Generates universally applicable synthetics for all blood types. Add regular blood to convert quickly." - icon = 'icons/obj/machines/biogenerator.dmi' + desc = "Generates universally applicable synthetics for all blood types. Add regular blood to convert." + icon = 'icons/obj/bloodbank.dmi' icon_state = "bloodbank-off" density = TRUE use_power = IDLE_POWER_USE idle_power_usage = 80 circuit = /obj/item/circuitboard/machine/bloodbankgen - var/processing = FALSE + interaction_flags_machine = INTERACT_MACHINE_OPEN | INTERACT_MACHINE_ALLOW_SILICON + var/draining = FALSE + var/filling = FALSE var/obj/item/reagent_containers/blood/bag = null var/obj/item/reagent_containers/blood/outbag = null var/bloodstored = 0 @@ -93,19 +95,19 @@ var/percent = round((outbag.reagents.total_volume / outbag.volume) * 100) switch(percent) if(0 to 9) - filling_overlay.icon_state = "input-reagent0" + filling_overlay.icon_state = "output-reagent0" if(10 to 24) - filling_overlay.icon_state = "input-reagent10" + filling_overlay.icon_state = "output-reagent10" if(25 to 49) - filling_overlay.icon_state = "input-reagent25" + filling_overlay.icon_state = "output-reagent25" if(50 to 74) - filling_overlay.icon_state = "input-reagent50" + filling_overlay.icon_state = "output-reagent50" if(75 to 79) - filling_overlay.icon_state = "input-reagent75" + filling_overlay.icon_state = "output-reagent75" if(80 to 90) - filling_overlay.icon_state = "input-reagent80" + filling_overlay.icon_state = "output-reagent80" if(91 to INFINITY) - filling_overlay.icon_state = "input-reagent100" + filling_overlay.icon_state = "output-reagent100" filling_overlay.color = list(mix_color_from_reagents(outbag.reagents.reagent_list)) add_overlay(filling_overlay) @@ -115,43 +117,77 @@ if(!is_operational()) return PROCESS_KILL - var/transfer_amount = 20 - var/efficent_amount = ((transfer_amount * 0.5) * (1.5 * efficiency)) - if(bag) - if(bag.reagents) - var/datum/reagent/blood/B = bag.reagents.has_reagent("blood") - if(B) - var/amount = reagents.maximum_volume - reagents.total_volume //monitor the machine's internal storage - amount = min(amount, 4) - if(!amount) - return - var/list/bloodtypes = list("A+", "A-", "B+", "B-", "O+", "O-", "L", "X*", "HF", "GEL", "U") - for(var/blood in bloodtypes[bag.blood_type]) - if(blood) //no infinite loops using synthetics. - src.add_reagent("syntheticblood", efficent_amount) - else - src.add_reagent("syntheticblood", transfer_amount) - bag.reagents.remove_reagent(B,transfer_amount) - update_icon() + bloodstored = reagents.total_volume - if(outbag) - var/amount = outbag.reagents.maximum_volume - outbag.reagents.total_volume //monitor the output bag's internal storage - amount = min(amount, 4) - if(!amount) + var/transfer_amount = 20 + + if(draining) + if(reagents.total_volume >= reagents.maximum_volume) + draining = FALSE return - if(bloodstored <= 0) + + if(bag) + if(bag.reagents.total_volume) + var/datum/reagent/blood/B = bag.reagents.has_reagent("blood") + if(B) + var/amount = reagents.maximum_volume - reagents.total_volume //monitor the machine's internal storage + amount = min(amount, transfer_amount) + if(!amount) + draining = FALSE + updateUsrDialog() + visible_message("[src] beeps loudly.") + playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) + return + + if(bag.blood_type == "SY") //no infinite loops using synthetics. + reagents.add_reagent("syntheticblood", amount) + else + reagents.add_reagent("syntheticblood", (amount+(5*efficiency))) + + if(bag.reagents.total_volume >= amount) + bag.reagents.remove_reagent("blood", amount) + else + visible_message("[src] beeps loudly.") + playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) + draining = FALSE + + bag.update_icon() + update_icon() + updateUsrDialog() + else + draining = FALSE + updateUsrDialog() + return + + if(filling) + if(!reagents || !reagents.total_volume) + filling = FALSE //there ain't anything in the machine yo. + return + if(outbag && outbag.reagents.total_volume < outbag.reagents.maximum_volume) + var/amount = outbag.reagents.maximum_volume - outbag.reagents.total_volume //monitor the output bag's internal storage + amount = min(amount, transfer_amount) + if(!amount) + filling = FALSE + visible_message("[src] pings.") + playsound(loc, 'sound/machines/beep.ogg', 50, 1) + updateUsrDialog() + return + + reagents.trans_to(outbag, amount) + outbag.update_icon() + update_icon() + updateUsrDialog() + else + visible_message("[src] pings.") + playsound(loc, 'sound/machines/beep.ogg', 50, 1) + filling = FALSE + updateUsrDialog() return - reagents.trans_to(outbag, transfer_amount) - update_icon() /obj/machinery/bloodbankgen/attackby(obj/item/O, mob/user, params) if(user.a_intent == INTENT_HARM) return ..() - if(processing) - to_chat(user, "The generator is currently processing.") - return - if(default_deconstruction_screwdriver(user, "bloodbank-off", "bloodbank-off", O)) if(bag) var/obj/item/reagent_containers/blood/B = bag @@ -191,89 +227,66 @@ return else - to_chat(user, "You cannot put this in [src.name]!") + to_chat(user, "You cannot put this in [src]!") /obj/machinery/bloodbankgen/ui_interact(mob/user) - if(stat & BROKEN || panel_open) - return . = ..() - var/dat - if(processing) - dat += "
    The blood generator is processing! Please wait...

    " - else - switch(menustat) - if("noblood") - dat += "
    You do not have enough blood product to create synthetics.
    " - menustat = "menu" - if("complete") - dat += "
    Operation complete.
    " - menustat = "menu" - if("nobagspace") - dat += "
    Not enough space left in container. Please replace receptical.
    " - menustat = "menu" - if(bag) - data["isBagLoaded"] = bag ? TRUE : FALSE - var/bagContents = list() - if(bag && bag.reagents && bag.reagents.reagent_list.len) - for(var/datum/reagent/R in bag.reagents.reagent_list) - bagContents += list(list("name" = R.name, "volume" = R.volume)) - data["bagContents"] = bagContents - return data - if(outbag) - data["isOutbagLoaded"] = outbag ? TRUE : FALSE - var/outbagContents = list() - if(outbag && outbag.reagents && outbag.reagents.reagent_list.len) - for(var/datum/reagent/R in outbag.reagents.reagent_list) - outbagContents += list(list("name" = R.name, "volume" = R.volume)) - data["outbagContents"] = outbagContents - return data - else - dat += "
    No containers inside, please insert container.
    " - var/datum/browser/popup = new(user, "bloodbank", name, 350, 520) + if(!is_operational()) + return + + var/dat + switch(menustat) + if("noblood") + dat += "
    You do not have enough blood product to create synthetics.
    " + menustat = "menu" + if("complete") + dat += "
    Operation complete.
    " + menustat = "menu" + if("nobagspace") + dat += "
    Not enough space left in container. Please replace receptical.
    " + menustat = "menu" + + dat+= "
    Current Synthetics stockpile: [reagents.total_volume] units.
    " + + dat += "
    Supply Bag
    " + if(bag) + dat += "
    Current Capacity: [bag.reagents.total_volume] of [bag.reagents.maximum_volume]" + if(bag.reagents && bag.reagents.total_volume) + dat += "
    Drain" + + dat += "
    Detach" + + + dat += "

    Synthetics Bag
    " + if(outbag) + dat += "
    Current Capacity:[outbag.reagents.total_volume] of [outbag.reagents.maximum_volume]" + if(!(outbag.reagents.total_volume >= outbag.reagents.maximum_volume)) + dat += "
    Fill" + dat += "
    Detach" + + if(!bag && !outbag) + dat += "
    No containers inside, please insert container.
    " + + var/datum/browser/popup = new(user, "bloodbankgen", name, 350, 520) popup.set_content(dat) popup.open() -/obj/machinery/bloodbankgen/proc/activate() - if (usr.stat != CONSCIOUS) - return - if (src.stat != NONE) //NOPOWER etc - return - if(processing) - to_chat(usr, "The bloodbankgen is in the process of working.") - return - var/S = 0 - if(reagents) - var/datum/reagent/blood/B = reagents.has_reagent("blood") - S += 5 - if(B.reagents.get_reagent_amount("blood") < 0.1) - bloodstored += 2*productivity - else bloodstored += B.reagents.get_reagent_amount("nutriment")*10*productivity - qdel(I) - if(S) - processing = TRUE - update_icon() - updateUsrDialog() - playsound(src.loc, 'sound/machines/blender.ogg', 50, 1) - use_power(S*30) - sleep(S+15/productivity) - processing = FALSE +/obj/machinery/bloodbankgen/proc/activateinput() + if(bag) + draining = TRUE update_icon() else - menustat = "void" + to_chat(usr, "There is no blood bag in the input slot.") + return -/obj/machinery/bloodbankgen/proc/check_cost(list/materials, multiplier = 1, remove_bloodstored = 1) - if(materials.len != 1 || materials[1] != MAT_BIOMASS) - return FALSE - if (materials[MAT_BIOMASS]*multiplier/efficiency > bloodstored) - menustat = "noblood" - return FALSE - else - if(remove_bloodstored) - bloodstored -= materials[MAT_BIOMASS]*multiplier/efficiency +/obj/machinery/bloodbankgen/proc/activateoutput() + if(outbag) + filling = TRUE update_icon() - updateUsrDialog() - return TRUE + else + to_chat(usr, "There is no blood bag in the output slot.") + return /obj/machinery/bloodbankgen/proc/check_container_volume(list/reagents, multiplier = 1) var/sum_reagents = 0 @@ -305,14 +318,18 @@ usr.set_machine(src) - if(href_list["activate"]) - activate() + if(href_list["activateinput"]) + activateinput() updateUsrDialog() else if(href_list["detachinput"]) detachinput() updateUsrDialog() + else if(href_list["activateoutput"]) + activateoutput() + updateUsrDialog() + else if(href_list["detachoutput"]) detachoutput() updateUsrDialog() diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index c8d81f4aca..4ab9cb6f00 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -33,7 +33,7 @@ /obj/item/circuitboard/machine/bloodbankgen name = "Blood Bank Generator (Machine Board)" - build_path = obj/machinery/bloodbankgen + build_path = /obj/machinery/bloodbankgen req_components = list( /obj/item/stock_parts/matter_bin = 1, /obj/item/stock_parts/manipulator = 1, diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index 0dae148976..b34e3194e7 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -18,4 +18,4 @@ params:'{"id": "1"}'},f:["TOGGLE"]}]}]},{p:[40,3,1051],t:7,e:"tr",f:[" ",{p:[41, }," ",{p:[10,4,358],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.has_beaker"],s:'_0?null:"disabled"'},p:[10,35,389]}],action:"eject_beaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{t:4,f:[{p:[15,4,528],t:7,e:"ui-section",f:[{t:4,f:[{p:[17,6,578],t:7,e:"span",a:{"class":"bad"},f:["The beaker is empty!"]}],n:50,r:"data.beaker_empty",p:[16,5,546]},{t:4,n:51,f:[{p:[19,6,644],t:7,e:"ui-subdisplay",a:{title:"Blood"},f:[{t:4,f:[{p:[21,8,712],t:7,e:"ui-section",a:{label:"Blood DNA"},f:[{t:2,r:"data.blood.dna",p:[21,38,742]}]}," ",{p:[22,8,782],t:7,e:"ui-section",a:{label:"Blood type"},f:[{t:2,r:"data.blood.type",p:[22,39,813]}]}],n:50,r:"data.has_blood",p:[20,7,681]},{t:4,n:51,f:[{p:[24,8,870],t:7,e:"ui-section",f:[{p:[25,9,892],t:7,e:"span",a:{"class":"average"},f:["No blood sample detected."]}]}],r:"data.has_blood"}]}],r:"data.beaker_empty"}]}],n:50,r:"data.has_beaker",p:[14,3,500]},{t:4,n:51,f:[{p:[32,4,1054],t:7,e:"ui-section",f:[{p:[33,5,1072],t:7,e:"span",a:{"class":"bad"},f:["No beaker loaded."]}]}],r:"data.has_beaker"}]}," ",{t:4,f:[{p:[38,3,1188],t:7,e:"ui-display",a:{title:"Diseases"},f:[{t:4,f:[{p:{button:[{t:4,f:[{p:[43,8,1343],t:7,e:"ui-button",a:{icon:"pencil",action:"rename_disease",state:[{t:2,x:{r:["can_rename"],s:'_0?"":"disabled"'},p:[43,64,1399]}],params:['{"index": ',{t:2,r:"index",p:[43,116,1451]},"}"]},f:["Name advanced disease"]}],n:50,r:"is_adv",p:[42,7,1320]}," ",{p:[47,7,1538],t:7,e:"ui-button",a:{icon:"flask",action:"create_culture_bottle",state:[{t:2,x:{r:["data.is_ready"],s:'_0?"":"disabled"'},p:[47,69,1600]}],params:['{"index": ',{t:2,r:"index",p:[47,124,1655]},"}"]},f:["Create virus culture bottle"]}]},t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[40,24,1269]}],button:0},f:[" ",{p:[51,6,1749],t:7,e:"ui-section",a:{label:"Disease agent"},f:[{t:2,r:"agent",p:[51,40,1783]}]}," ",{p:[52,6,1812],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"description",p:[52,38,1844]}]}," ",{p:[53,6,1879],t:7,e:"ui-section",a:{label:"Spread"},f:[{t:2,r:"spread",p:[53,33,1906]}]}," ",{p:[54,6,1936],t:7,e:"ui-section",a:{label:"Possible cure"},f:[{t:2,r:"cure",p:[54,40,1970]}]}," ",{t:4,f:[{p:[56,7,2021],t:7,e:"ui-section",a:{label:"Symptoms"},f:[{t:4,f:[{p:[58,9,2087],t:7,e:"ui-button",a:{action:"symptom_details",state:"",params:['{"picked_symptom": ',{t:2,r:"sym_index",p:[58,81,2159]},', "index": ',{t:2,r:"index",p:[58,105,2183]},"}"]},f:[{t:2,r:"name",p:[59,10,2206]}," "]},{p:[60,21,2236],t:7,e:"br"}],n:52,r:"symptoms",p:[57,8,2059]}]}," ",{p:[63,7,2289],t:7,e:"ui-section",a:{label:"Resistance"},f:[{t:2,r:"resistance",p:[63,38,2320]}]}," ",{p:[64,7,2355],t:7,e:"ui-section",a:{label:"Stealth"},f:[{t:2,r:"stealth",p:[64,35,2383]}]}," ",{p:[65,7,2415],t:7,e:"ui-section",a:{label:"Stage speed"},f:[{t:2,r:"stage_speed",p:[65,39,2447]}]}," ",{p:[66,7,2483],t:7,e:"ui-section",a:{label:"Transmittability"},f:[{t:2,r:"transmission",p:[66,44,2520]}]}],n:50,r:"is_adv",p:[55,6,1999]}]}],n:52,r:"data.viruses",p:[39,4,1222]},{t:4,n:51,f:[{p:[70,5,2601],t:7,e:"ui-section",f:[{p:[71,6,2620],t:7,e:"span",a:{"class":"average"},f:["No detectable virus in the blood sample."]}]}],r:"data.viruses"}]}," ",{p:[75,3,2743],t:7,e:"ui-display",a:{title:"Antibodies"},f:[{t:4,f:[{p:[77,5,2811],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[77,24,2830]}]},f:[{p:[78,7,2848],t:7,e:"ui-button",a:{icon:"eyedropper",state:[{t:2,x:{r:["data.is_ready"],s:'_0?"":"disabled"'},p:[78,43,2884]}],action:"create_vaccine_bottle",params:['{"index": ',{t:2,r:"id",p:[78,129,2970]},"}"]},f:["Create vaccine bottle"]}]}],n:52,r:"data.resistances",p:[76,4,2779]},{t:4,n:51,f:[{p:[83,5,3067],t:7,e:"ui-section",f:[{p:[84,6,3086],t:7,e:"span",a:{"class":"average"},f:["No antibodies detected in the blood sample."]}]}],r:"data.resistances"}]}],n:50,r:"data.has_blood",p:[37,2,1162]}],n:50,x:{r:["data.mode"],s:"_0==1"},p:[1,1,0]},{t:4,n:51,f:[{p:[90,2,3231],t:7,e:"ui-button",a:{icon:"undo",state:"",action:"back"},f:["Back"]}," ",{t:4,f:[{p:[94,4,3330],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[94,23,3349]}]},f:[{p:[95,4,3364],t:7,e:"ui-section",f:[{t:2,r:"desc",p:[96,5,3382]}," ",{t:4,f:[{p:[98,5,3417],t:7,e:"br"}," ",{p:[99,5,3428],t:7,e:"b",f:["This symptom has been neutered, and has no effect. It will still affect the virus' statistics."]}],n:50,r:"neutered",p:[97,4,3395]}]}," ",{p:[102,4,3564],t:7,e:"ui-section",f:[{p:[103,5,3582],t:7,e:"ui-section",a:{label:"Level"},f:[{t:2,r:"level",p:[103,31,3608]}]}," ",{p:[104,5,3636],t:7,e:"ui-section",a:{label:"Resistance"},f:[{t:2,r:"resistance",p:[104,36,3667]}]}," ",{p:[105,5,3700],t:7,e:"ui-section",a:{label:"Stealth"},f:[{t:2,r:"stealth",p:[105,33,3728]}]}," ",{p:[106,5,3758],t:7,e:"ui-section",a:{label:"Stage speed"},f:[{t:2,r:"stage_speed",p:[106,37,3790]}]}," ",{p:[107,5,3824],t:7,e:"ui-section",a:{label:"Transmittability"},f:[{t:2,r:"transmission",p:[107,42,3861]}]}]}," ",{p:[109,4,3913],t:7,e:"ui-subdisplay",a:{title:"Effect Thresholds"},f:[{p:[110,5,3960],t:7,e:"ui-section",f:[{t:3,r:"threshold_desc",p:[110,17,3972]}]}]}]}],n:53,r:"data.symptom",p:[93,2,3303]}],x:{r:["data.mode"],s:"_0==1"}}]},e.exports=a.extend(r.exports)},{341:341}],436:[function(t,e,n){var a=t(341),r={exports:{}};!function(e){"use strict";var n=t(484);e.exports={data:{filter:"",tooltiptext:function(t,e,n){var a="";return t&&(a+="REQUIREMENTS: "+t+" "),e&&(a+="CATALYSTS: "+e+" "),n&&(a+="TOOLS: "+n),a}},oninit:function(){var t=this;this.on({hover:function(t){this.set("hovered",t.context.params)},unhover:function(t){this.set("hovered")}}),this.observe("filter",function(e,a,r){var i=null;i=t.get("data.display_compact")?t.findAll(".section"):t.findAll(".display:not(:first-child)"),(0,n.filterMulti)(i,t.get("filter").toLowerCase())},{init:!1})}}}(r),r.exports.template={v:3,t:[" ",{p:[48,1,1342],t:7,e:"ui-display",a:{title:[{t:2,r:"data.category",p:[48,20,1361]},{t:4,f:[" : ",{t:2,r:"data.subcategory",p:[48,64,1405]}],n:50,r:"data.subcategory",p:[48,37,1378]}]},f:[{t:4,f:[{p:[50,3,1459],t:7,e:"ui-section",f:["Crafting... ",{p:[51,16,1488],t:7,e:"i",a:{"class":"fa-spin fa fa-spinner"}}]}],n:50,r:"data.busy",p:[49,2,1438]},{t:4,n:51,f:[{p:[54,3,1557],t:7,e:"ui-section",f:[{p:[55,4,1574],t:7,e:"table",a:{style:"width:100%"},f:[{p:[56,5,1606],t:7,e:"tr",f:[{p:[57,6,1617],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[58,7,1659],t:7,e:"ui-button",a:{icon:"arrow-left",action:"backwardCat"},f:[{t:2,r:"data.prev_cat",p:[59,8,1718]}]}]}," ",{p:[62,6,1774],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[63,7,1816],t:7,e:"ui-button",a:{icon:"arrow-right",action:"forwardCat"},f:[{t:2,r:"data.next_cat",p:[64,7,1874]}]}]}," ",{p:[67,6,1930],t:7,e:"td",a:{style:"float:right!important"},f:[{t:4,f:[{p:[69,7,2014],t:7,e:"ui-button",a:{icon:"lock",action:"toggle_recipes"},f:["Showing Craftable Recipes"]}],n:50,r:"data.display_craftable_only",p:[68,6,1971]},{t:4,n:51,f:[{p:[73,7,2138],t:7,e:"ui-button",a:{icon:"unlock",action:"toggle_recipes"},f:["Showing All Recipes"]}],r:"data.display_craftable_only"}]}," ",{p:[78,6,2268],t:7,e:"td",a:{style:"float:right!important"},f:[{p:[79,7,2310],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.display_compact"],s:'_0?"check-square-o":"square-o"'},p:[79,24,2327]}],action:"toggle_compact"},f:["Compact"]}]}]}," ",{p:[84,5,2474],t:7,e:"tr",f:[{t:4,f:[{p:[86,6,2515],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[87,7,2557],t:7,e:"ui-button",a:{icon:"arrow-left",action:"backwardSubCat"},f:[{t:2,r:"data.prev_subcat",p:[88,8,2619]}]}]}," ",{p:[91,6,2678],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[92,7,2720],t:7,e:"ui-button",a:{icon:"arrow-right",action:"forwardSubCat"},f:[{t:2,r:"data.next_subcat",p:[93,8,2782]}]}]}],n:50,r:"data.subcategory",p:[85,5,2484]}]}]}," ",{t:4,f:[{t:4,f:[" ",{p:[101,6,2992],t:7,e:"ui-input",a:{value:[{t:2,r:"filter",p:[101,23,3009]}],placeholder:"Filter.."}}],n:51,r:"data.display_compact",p:[100,5,2902]}],n:50,r:"config.fancy",p:[99,4,2876]}]}," ",{t:4,f:[{p:[106,5,3144],t:7,e:"ui-display",f:[{t:4,f:[{p:[108,6,3193],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[108,25,3212]}]},f:[{p:[109,7,3230],t:7,e:"ui-button",a:{tooltip:[{t:2,x:{r:["tooltiptext","req_text","catalyst_text","tool_text"],s:"_0(_1,_2,_3)"},p:[109,27,3250]}],"tooltip-side":"right",action:"make",params:['{"recipe": "',{t:2,r:"ref",p:[109,135,3358]},'"}'],icon:"gears"},v:{hover:"hover",unhover:"unhover"},f:["Craft"]}]}],n:52,r:"data.can_craft",p:[107,5,3162]}," ",{t:4,f:[{t:4,f:[{p:[116,7,3567],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[116,26,3586]}]},f:[{p:[117,8,3605],t:7,e:"ui-button",a:{tooltip:[{t:2,x:{r:["tooltiptext","req_text","catalyst_text","tool_text"],s:"_0(_1,_2,_3)"},p:[117,28,3625]}],"tooltip-side":"right",state:"disabled",icon:"gears"},v:{hover:"hover",unhover:"unhover"},f:["Craft"]}]}],n:52,r:"data.cant_craft",p:[115,6,3534]}],n:51,r:"data.display_craftable_only",p:[114,5,3495]}]}],n:50,r:"data.display_compact",p:[105,4,3110]},{t:4,n:51,f:[{t:4,f:[{p:[126,6,3947],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[126,25,3966]}]},f:[{t:4,f:[{p:[128,8,4009],t:7,e:"ui-section",a:{label:"Requirements"},f:[{t:2,r:"req_text",p:[129,9,4052]}]}],n:50,r:"req_text",p:[127,7,3984]}," ",{t:4,f:[{p:[133,8,4139],t:7,e:"ui-section",a:{label:"Catalysts"},f:[{t:2,r:"catalyst_text",p:[134,9,4179]}]}],n:50,r:"catalyst_text",p:[132,7,4109]}," ",{t:4,f:[{p:[138,8,4267],t:7,e:"ui-section",a:{label:"Tools"},f:[{t:2,r:"tool_text",p:[139,9,4303]}]}],n:50,r:"tool_text",p:[137,7,4241]}," ",{p:[142,7,4361],t:7,e:"ui-section",f:[{p:[143,8,4382],t:7,e:"ui-button",a:{icon:"gears",action:"make",params:['{"recipe": "',{t:2,r:"ref",p:[143,66,4440]},'"}']},f:["Craft"]}]}]}],n:52,r:"data.can_craft",p:[125,5,3916]}," ",{t:4,f:[{t:4,f:[{p:[151,7,4621],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[151,26,4640]}]},f:[{t:4,f:[{p:[153,9,4685],t:7,e:"ui-section",a:{label:"Requirements"},f:[{t:2,r:"req_text",p:[154,10,4729]}]}],n:50,r:"req_text",p:[152,8,4659]}," ",{t:4,f:[{p:[158,9,4820],t:7,e:"ui-section",a:{label:"Catalysts"},f:[{t:2,r:"catalyst_text",p:[159,10,4861]}]}],n:50,r:"catalyst_text",p:[157,8,4789]}," ",{t:4,f:[{p:[163,9,4953],t:7,e:"ui-section",a:{label:"Tools"},f:[{t:2,r:"tool_text",p:[164,10,4990]}]}],n:50,r:"tool_text",p:[162,8,4926]}]}],n:52,r:"data.cant_craft",p:[150,6,4588]}],n:51,r:"data.display_craftable_only",p:[149,5,4549]}],r:"data.display_compact"}],r:"data.busy"}]}]},e.exports=a.extend(r.exports)},{341:341,484:484}],437:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.holding"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:[4,1,113],t:7,e:"ui-display",a:{title:"Status",button:0},f:[{p:[5,3,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,5,186],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[6,11,192]}," kPa"]}]}," ",{p:[8,3,254],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[9,5,285],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected"],s:'_0?"good":"average"'},p:[9,18,298]}]},f:[{t:2,x:{r:["data.connected"],s:'_0?"Connected":"Not Connected"'},p:[9,59,339]}]}]}]}," ",{p:[12,1,430],t:7,e:"ui-display",a:{title:"Pump"},f:[{p:[13,3,459],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,5,491],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[14,22,508]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":"null"'},p:[15,14,559]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[16,22,616]}]}]}," ",{p:[18,3,675],t:7,e:"ui-section",a:{label:"Direction"},f:[{p:[19,5,711],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.direction"],s:'_0=="out"?"sign-out":"sign-in"'},p:[19,22,728]}],action:"direction"},f:[{t:2,x:{r:["data.direction"],s:'_0=="out"?"Out":"In"'},p:[20,26,808]}]}]}," ",{p:[22,3,883],t:7,e:"ui-section",a:{label:"Target Pressure"},f:[{p:[23,5,925],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.min_pressure",p:[23,18,938]}],max:[{t:2,r:"data.max_pressure",p:[23,46,966]}],value:[{t:2,r:"data.target_pressure",p:[24,14,1003]}]},f:[{t:2,x:{r:["adata.target_pressure"],s:"Math.round(_0)"},p:[24,40,1029]}," kPa"]}]}," ",{p:[26,3,1100],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[27,5,1145],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.target_pressure","data.default_pressure"],s:'_0!=_1?null:"disabled"'},p:[27,38,1178]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[29,5,1328],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.target_pressure","data.min_pressure"],s:'_0>_1?null:"disabled"'},p:[29,36,1359]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[31,5,1500],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[32,5,1595],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.target_pressure","data.max_pressure"],s:'_0<_1?null:"disabled"'},p:[32,35,1625]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}]}," ",{p:{button:[{t:4,f:[{p:[39,7,1891],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.on"],s:'_0?"danger":null'},p:[39,38,1922]}],action:"eject"},f:["Eject"]}],n:50,r:"data.holding",p:[38,5,1863]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[43,3,2042],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holding.name",p:[44,4,2073]}]}," ",{p:[46,3,2115],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holding.pressure"],s:"Math.round(_0)"},p:[47,4,2149]}," kPa"]}],n:50,r:"data.holding",p:[42,3,2018]},{t:4,n:51,f:[{p:[50,3,2223],t:7,e:"ui-section",f:[{p:[51,4,2240],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.holding"}]}]},e.exports=a.extend(r.exports)},{341:341}],438:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[3,1,69],t:7,e:"ui-notice",f:[{p:[4,3,84],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.holding"],s:'_0?"is":"is not"'},p:[4,23,104]}," connected to a tank."]}]}," ",{p:[6,1,182],t:7,e:"ui-display",a:{title:"Status",button:0},f:[{p:[7,3,220],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[8,5,255],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[8,11,261]}," kPa"]}]}," ",{p:[10,3,323],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[11,5,354],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected"],s:'_0?"good":"average"'},p:[11,18,367]}]},f:[{t:2,x:{r:["data.connected"],s:'_0?"Connected":"Not Connected"'},p:[11,59,408]}]}]}]}," ",{p:[14,1,499],t:7,e:"ui-display",a:{title:"Filter"},f:[{p:[15,3,530],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[16,5,562],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[16,22,579]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":"null"'},p:[17,14,630]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[18,22,687]}]}]}]}," ",{p:{button:[{t:4,f:[{p:[24,7,856],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.on"],s:'_0?"danger":null'},p:[24,38,887]}],action:"eject"},f:["Eject"]}],n:50,r:"data.holding",p:[23,5,828]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[28,3,1007],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holding.name",p:[29,4,1038]}]}," ",{p:[31,3,1080],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holding.pressure"],s:"Math.round(_0)"},p:[32,4,1114]}," kPa"]}],n:50,r:"data.holding",p:[27,3,983]},{t:4,n:51,f:[{p:[35,3,1188],t:7,e:"ui-section",f:[{p:[36,4,1205],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.holding"}]}," ",{p:[40,1,1293],t:7,e:"ui-display",a:{title:"Filters"},f:[{t:4,f:[{p:[42,5,1345],t:7,e:"filters"}],n:53,r:"data",p:[41,3,1325]}]}]},r.exports.components=r.exports.components||{};var i={filters:t(457)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,457:457}],439:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{chargingState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}},chargingMode:function(t){return 2==t?"Full":1==t?"Charging":"Draining"},channelState:function(t){return t>=2?"good":"bad"},channelPower:function(t){return t>=2?"On":"Off"},channelMode:function(t){return 1==t||3==t?"Auto":"Manual"}},computed:{graphData:function(){var t=this.get("data.history");return Object.keys(t).map(function(e){return t[e].map(function(t,e){return{x:e,y:t}})})}}}}(r),r.exports.template={v:3,t:[" ",{p:[42,1,1035],t:7,e:"ui-display",a:{title:"Network"},f:[{t:4,f:[{p:[44,5,1093],t:7,e:"ui-linegraph",a:{points:[{t:2,r:"graphData",p:[44,27,1115]}],height:"500",legend:'["Available", "Load"]',colors:'["rgb(0, 102, 0)", "rgb(153, 0, 0)"]',xunit:"seconds ago",xfactor:[{t:2,r:"data.interval",p:[46,38,1267]}],yunit:"W",yfactor:"1",xinc:[{t:2,x:{r:["data.stored"],s:"_0/10"},p:[47,15,1323]}],yinc:"9"}}],n:50,r:"config.fancy",p:[43,3,1067]},{t:4,n:51,f:[{p:[49,5,1373],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[50,7,1411],t:7,e:"span",f:[{t:2,r:"data.supply",p:[50,13,1417]}]}]}," ",{p:[52,5,1464],t:7,e:"ui-section",a:{label:"Load"},f:[{p:[53,9,1499],t:7,e:"span",f:[{t:2,r:"data.demand",p:[53,15,1505]}]}]}],r:"config.fancy"}]}," ",{p:[57,1,1574],t:7,e:"ui-display",a:{title:"Areas"},f:[{p:[58,3,1604],t:7,e:"ui-section",a:{nowrap:0},f:[{p:[59,5,1629],t:7,e:"div",a:{"class":"content"},f:["Area"]}," ",{p:[60,5,1666],t:7,e:"div",a:{"class":"content"},f:["Charge"]}," ",{p:[61,5,1705],t:7,e:"div",a:{"class":"content"},f:["Load"]}," ",{p:[62,5,1742],t:7,e:"div",a:{"class":"content"},f:["Status"]}," ",{p:[63,5,1781],t:7,e:"div",a:{"class":"content"},f:["Equipment"]}," ",{p:[64,5,1823],t:7,e:"div",a:{"class":"content"},f:["Lighting"]}," ",{p:[65,5,1864],t:7,e:"div",a:{"class":"content"},f:["Environment"]}]}," ",{t:4,f:[{p:[68,5,1949],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[68,24,1968]}],nowrap:0},f:[{p:[69,7,1993],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["@index","adata.areas"],s:"Math.round(_1[_0].charge)"},p:[69,28,2014]}," %"]}," ",{p:[70,7,2072],t:7,e:"div",a:{"class":"content"},f:[{t:2,rx:{r:"adata.areas",m:[{t:30,n:"@index"},"load"]},p:[70,28,2093]}]}," ",{p:[71,7,2135],t:7,e:"div",a:{"class":"content"},f:[{p:[71,28,2156],t:7,e:"span",a:{"class":[{t:2,x:{r:["chargingState","charging"],s:"_0(_1)"},p:[71,41,2169]}]},f:[{t:2,x:{r:["chargingMode","charging"],s:"_0(_1)"},p:[71,70,2198]}]}]}," ",{p:[72,7,2245],t:7,e:"div",a:{"class":"content"},f:[{p:[72,28,2266],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","eqp"],s:"_0(_1)"},p:[72,41,2279]}]},f:[{t:2,x:{r:["channelPower","eqp"],s:"_0(_1)"},p:[72,64,2302]}," [",{p:[72,87,2325],t:7,e:"span",f:[{t:2,x:{r:["channelMode","eqp"],s:"_0(_1)"},p:[72,93,2331]}]},"]"]}]}," ",{p:[73,7,2380],t:7,e:"div",a:{"class":"content"},f:[{p:[73,28,2401],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","lgt"],s:"_0(_1)"},p:[73,41,2414]}]},f:[{t:2,x:{r:["channelPower","lgt"],s:"_0(_1)"},p:[73,64,2437]}," [",{p:[73,87,2460],t:7,e:"span",f:[{t:2,x:{r:["channelMode","lgt"],s:"_0(_1)"},p:[73,93,2466]}]},"]"]}]}," ",{p:[74,7,2515],t:7,e:"div",a:{"class":"content"},f:[{p:[74,28,2536],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","env"],s:"_0(_1)"},p:[74,41,2549]}]},f:[{t:2,x:{r:["channelPower","env"],s:"_0(_1)"},p:[74,64,2572]}," [",{p:[74,87,2595],t:7,e:"span",f:[{t:2,x:{r:["channelMode","env"],s:"_0(_1)"},p:[74,93,2601]}]},"]"]}]}]}],n:52,r:"data.areas",p:[67,3,1923]}]}]},e.exports=a.extend(r.exports)},{341:341}],440:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{readableFrequency:function(){return Math.round(this.get("adata.frequency"))/10}}}}(r),r.exports.template={v:3,t:[" ",{p:[11,1,177],t:7,e:"ui-display",a:{title:"Settings"},f:[{t:4,f:[{p:[13,5,236],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,7,270],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.listening"],s:'_0?"power-off":"close"'},p:[14,24,287]}],style:[{t:2,x:{r:["data.listening"],s:'_0?"selected":null'},p:[14,75,338]}],action:"listen"},f:[{t:2,x:{r:["data.listening"],s:'_0?"On":"Off"'},p:[16,9,413]}]}]}],n:50,r:"data.headset",p:[12,3,210]},{t:4,n:51,f:[{p:[19,5,494],t:7,e:"ui-section",a:{label:"Microphone"},f:[{p:[20,7,533],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.broadcasting"],s:'_0?"power-off":"close"'},p:[20,24,550]}],style:[{t:2,x:{r:["data.broadcasting"],s:'_0?"selected":null'},p:[20,78,604]}],action:"broadcast"},f:[{t:2,x:{r:["data.broadcasting"],s:'_0?"Engaged":"Disengaged"'},p:[22,9,685]}]}]}," ",{p:[24,5,769],t:7,e:"ui-section",a:{label:"Speaker"},f:[{p:[25,7,805],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.listening"],s:'_0?"power-off":"close"'},p:[25,24,822]}],style:[{t:2,x:{r:["data.listening"],s:'_0?"selected":null'},p:[25,75,873]}],action:"listen"},f:[{t:2,x:{r:["data.listening"],s:'_0?"Engaged":"Disengaged"'},p:[27,9,948]}]}]}],r:"data.headset"}," ",{t:4,f:[{p:[31,5,1064],t:7,e:"ui-section",a:{label:"High Volume"},f:[{p:[32,7,1104],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.useCommand"],s:'_0?"power-off":"close"'},p:[32,24,1121]}],style:[{t:2,x:{r:["data.useCommand"],s:'_0?"selected":null'},p:[32,76,1173]}],action:"command"},f:[{t:2,x:{r:["data.useCommand"],s:'_0?"On":"Off"'},p:[34,9,1250]}]}]}],n:50,r:"data.command",p:[30,3,1038]}]}," ",{p:[38,1,1342],t:7,e:"ui-display",a:{title:"Channel"},f:[{p:[39,3,1374],t:7,e:"ui-section",a:{label:"Frequency"},f:[{t:4,f:[{p:[41,7,1439],t:7,e:"span",f:[{t:2,r:"readableFrequency",p:[41,13,1445]}]}],n:50,r:"data.freqlock",p:[40,5,1410]},{t:4,n:51,f:[{p:[43,7,1495],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.frequency","data.minFrequency"],s:'_0==_1?"disabled":null'},p:[43,46,1534]}],action:"frequency",params:'{"adjust": -1}'}}," ",{p:[44,7,1646],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.frequency","data.minFrequency"],s:'_0==_1?"disabled":null'},p:[44,41,1680]}],action:"frequency",params:'{"adjust": -.2}'}}," ",{p:[45,7,1793],t:7,e:"ui-button",a:{icon:"pencil",action:"frequency",params:'{"tune": "input"}'},f:[{t:2,r:"readableFrequency",p:[45,78,1864]}]}," ",{p:[46,7,1905],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.frequency","data.maxFrequency"],s:'_0==_1?"disabled":null'},p:[46,40,1938]}],action:"frequency",params:'{"adjust": .2}'}}," ",{p:[47,7,2050],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.frequency","data.maxFrequency"],s:'_0==_1?"disabled":null'},p:[47,45,2088]}],action:"frequency",params:'{"adjust": 1}'}}],r:"data.freqlock"}]}," ",{t:4,f:[{p:[51,5,2262],t:7,e:"ui-section",a:{label:"Subspace Transmission"},f:[{p:[52,7,2312],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.subspace"],s:'_0?"power-off":"close"'},p:[52,24,2329]}],style:[{t:2,x:{r:["data.subspace"],s:'_0?"selected":null'},p:[52,74,2379]}],action:"subspace"},f:[{t:2,x:{r:["data.subspace"],s:'_0?"Active":"Inactive"'},p:[53,29,2447]}]}]}],n:50,r:"data.subspaceSwitchable",p:[50,3,2225]}," ",{t:4,f:[{p:[57,5,2578],t:7,e:"ui-section",a:{label:"Channels"},f:[{t:4,f:[{p:[59,9,2656],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["."],s:'_0?"check-square-o":"square-o"'},p:[59,26,2673]}],style:[{t:2,x:{r:["."],s:'_0?"selected":null'},p:[60,18,2730]}],action:"channel",params:['{"channel": "',{t:2,r:"channel",p:[61,49,2806]},'"}']},f:[{t:2,r:"channel",p:[62,11,2833]}]},{p:[62,34,2856],t:7,e:"br"}],n:52,i:"channel",r:"data.channels",p:[58,7,2615]}]}],n:50,x:{r:["data.subspace","data.channels"],s:"_0&&_1"},p:[56,3,2534]}]}]},e.exports=a.extend(r.exports)},{341:341}],441:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" "," "," "," "," "," "," "," "," "," ",{p:[11,1,560],t:7,e:"rdheader"}," ",{t:4,f:[{p:[13,2,595],t:7,e:"ui-display",a:{title:"CONSOLE LOCKED"},f:[{p:[14,3,634],t:7,e:"ui-button",a:{action:"Unlock"},f:["Unlock"]}]}],n:50,r:"data.locked",p:[12,1,573]},{t:4,f:[{p:[18,2,729],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.tabs",p:[18,17,744]}]},f:[{p:[19,3,763],t:7,e:"tab",a:{name:"Technology"},f:[{p:[20,4,791],t:7,e:"techweb"}]}," ",{p:[22,3,815],t:7,e:"tab",a:{name:"View Node"},f:[{p:[23,4,842],t:7,e:"nodeview"}]}," ",{p:[25,3,867],t:7,e:"tab",a:{name:"View Design"},f:[{p:[26,4,896],t:7,e:"designview"}]}," ",{p:[28,3,923],t:7,e:"tab",a:{name:"Disk Operations - Design"},f:[{p:[29,4,965],t:7,e:"diskopsdesign"}]}," ",{p:[31,3,995],t:7,e:"tab",a:{name:"Disk Operations - Technology"},f:[{p:[32,4,1041],t:7,e:"diskopstech"}]}," ",{p:[34,3,1069],t:7,e:"tab",a:{name:"Deconstructive Analyzer"},f:[{p:[35,4,1110],t:7,e:"destruct"}]}," ",{p:[37,3,1135],t:7,e:"tab",a:{name:"Protolathe"},f:[{p:[38,4,1163],t:7,e:"protolathe"}]}," ",{p:[40,3,1190],t:7,e:"tab",a:{name:"Circuit Imprinter"},f:[{p:[41,4,1225],t:7,e:"circuit"}]}," ",{p:[43,3,1249],t:7,e:"tab",a:{name:"Settings"},f:[{p:[44,4,1275],t:7,e:"settings"}]}]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[17,1,706]}]},r.exports.components=r.exports.components||{};var i={settings:t(450),circuit:t(442),protolathe:t(448),destruct:t(444),diskopsdesign:t(445),diskopstech:t(446),designview:t(443),nodeview:t(447),techweb:t(451),rdheader:t(449)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,442:442,443:443,444:444,445:445,446:446,447:447,448:448,449:449,450:450,451:451}],442:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{t:4,f:[{p:[3,3,58],t:7,e:"ui-display",a:{title:"Circuit Imprinter Busy!"}}],n:50,r:"data.circuitbusy",p:[2,2,30]},{t:4,n:51,f:[{p:[5,3,130],t:7,e:"ui-display",f:[{p:[6,4,147],t:7,e:"ui-section",f:["Search Available Designs: ",{p:[7,4,189],t:7,e:"input",a:{value:[{t:2,r:"textsearch",p:[7,17,202]}],placeholder:"Type Here","class":"text"}}," ",{p:[8,5,261],t:7,e:"ui-button",a:{action:"textSearch",params:['{"latheType" : "circuit", "inputText" : ',{t:2,r:"textsearch",p:[8,84,340]},"}"]},f:["Search"]}]}," ",{p:[10,4,398],t:7,e:"ui-section",f:["Materials: ",{t:2,r:"data.circuitmats",p:[10,27,421]}," / ",{t:2,r:"data.circuitmaxmats",p:[10,50,444]}]}," ",{p:[11,4,485],t:7,e:"ui-section",f:["Reagents: ",{t:2,r:"data.circuitchems",p:[11,26,507]}," / ",{t:2,r:"data.circuitmaxchems",p:[11,50,531]}]}," ",{p:[12,3,572],t:7,e:"ui-display",f:[{p:[14,3,590],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.lathe_tabs",p:[14,18,605]}]},f:[{p:[15,4,631],t:7,e:"tab",a:{name:"Category List"},f:[{t:4,f:[{p:[17,6,696],t:7,e:"ui-button",a:{action:"switchcat",state:[{t:2,x:{r:["data.circuitcat"],s:'_0=="{{name}}"?"selected":null'},p:[17,43,733]}],params:['{"type" : "circuit", "cat" : "',{t:2,r:"name",p:[17,135,825]},'"}']},f:[{t:2,r:"name",p:[17,147,837]}]}],n:52,r:"data.circuitcats",p:[16,5,663]}]}," ",{p:[20,4,888],t:7,e:"tab",a:{name:"Selected Category"},f:[{t:4,f:[{p:[22,6,956],t:7,e:"ui-section",f:[{t:2,r:"name",p:[22,18,968]},{t:2,r:"matstring",p:[22,26,976]}," ",{p:[23,7,997],t:7,e:"ui-button",a:{action:"print",state:[{t:2,x:{r:["canprint"],s:'_0>1?null:"disabled"'},p:[23,40,1030]}],params:['{"latheType" : "circuit", "id" : "',{t:2,r:"id",p:[23,119,1109]},'"}']},f:["Print"]}]}],n:52,r:"data.circuitdes",p:[21,5,924]}]}," ",{p:[27,4,1187],t:7,e:"tab",a:{name:"Search Results"},f:[{t:4,f:[{p:[29,6,1254],t:7,e:"ui-section",f:[{t:2,r:"name",p:[29,18,1266]},{t:2,r:"matstring",p:[29,26,1274]}," ",{p:[30,7,1295],t:7,e:"ui-button",a:{action:"print",state:[{t:2,x:{r:["canprint"],s:'_0>1?null:"disabled"'},p:[30,40,1328]}],params:['{"latheType" : "circuit", "id" : "',{t:2,r:"id",p:[30,119,1407]},'"}']},f:["Print"]}]}],n:52,r:"data.circuitmatch",p:[28,5,1220]}]}," ",{p:[34,4,1485],t:7,e:"tab",a:{name:"Materials"},f:[{t:4,f:[{p:[36,6,1550],t:7,e:"ui-section",f:[{t:2,r:"name",p:[36,18,1562]}," : ",{t:2,r:"amount",p:[36,29,1573]}," cm3 - ",{t:4,f:[{p:[38,7,1623],t:7,e:"input",a:{value:[{t:2,r:"number",p:[38,20,1636]}],placeholder:["1-",{t:2,r:"sheets",p:[38,46,1662]}],"class":"number"}}," ",{p:[39,7,1698],t:7,e:"ui-button",a:{action:"releasemats",params:['{"latheType" : "circuit", "mat_id" : ',{t:2,r:"mat_id",p:[39,84,1775]},', "sheets" : ',{t:2,r:"number",p:[39,107,1798]},"}"]},f:["Release"]}],n:50,x:{r:["sheets"],s:"_0>0"},p:[37,6,1597]}]}],n:52,r:"data.circuitmat_list",p:[35,5,1513]}]}," ",{p:[44,4,1895],t:7,e:"tab",a:{name:"Chemicals"},f:[{t:4,f:[{p:[46,6,1961],t:7,e:"ui-section",f:[{t:2,r:"name",p:[46,18,1973]}," : ",{t:2,r:"amount",p:[46,29,1984]}," - ",{p:[47,7,2005],t:7,e:"ui-button",a:{action:"purgechem",params:['{"latheType" : "circuit", "name" : ',{t:2,r:"name",p:[47,80,2078]},', "id" : ',{t:2,r:"reagentid",p:[47,97,2095]},"}"]},f:["Purge"]}]}],n:52,r:"data.circuitchem_list",p:[45,5,1923]}]}]}]}]}],r:"data.circuitbusy"}],n:50,r:"data.circuit_linked",p:[1,1,0]},{t:4,n:51,f:[{p:[55,2,2216],t:7,e:"ui-display",a:{title:"No Linked Circuit Imprinter"}}],r:"data.circuit_linked"}]},e.exports=a.extend(r.exports)},{341:341}],443:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,31],t:7,e:"ui-display",a:{title:[{t:2,r:"data.sdesign_name",p:[2,21,50]}]},f:[{p:[3,3,77],t:7,e:"ui-section",a:{title:"Description"},f:[{t:2,r:"data.sdesign_desc",p:[3,35,109]}]}]}," ",{p:[5,2,162],t:7,e:"ui-display",a:{title:"Lathe Types"},f:[{t:4,f:[{p:[7,4,239],t:7,e:"ui-section",a:{title:"Circuit Imprinter"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&1"},p:[6,3,198]}," ",{t:4,f:[{p:[10,4,346],t:7,e:"ui-section",a:{title:"Protolathe"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&2"},p:[9,3,305]}," ",{t:4,f:[{p:[13,4,446],t:7,e:"ui-section",a:{title:"Autolathe"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&4"},p:[12,3,405]}," ",{t:4,f:[{p:[16,4,545],t:7,e:"ui-section",a:{title:"Crafting Fabricator"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&8"},p:[15,3,504]}," ",{t:4,f:[{p:[19,4,655],t:7,e:"ui-section",a:{title:"Exosuit Fabricator"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&16"},p:[18,3,613]}," ",{t:4,f:[{p:[22,4,764],t:7,e:"ui-section",a:{title:"Biogenerator"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&32"},p:[21,3,722]}," ",{t:4,f:[{p:[25,4,867],t:7,e:"ui-section",a:{title:"Limb Grower"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&64"},p:[24,3,825]}," ",{t:4,f:[{p:[28,4,970],t:7,e:"ui-section",a:{title:"Ore Smelter"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&128"},p:[27,3,927]}]}," ",{p:[31,2,1045],t:7,e:"ui-display",a:{title:"Materials"},f:[{t:4,f:[{p:[33,4,1116],t:7,e:"ui-section",a:{title:[{t:2,r:"matname",p:[33,23,1135]}]},f:[{t:2,r:"matamt",p:[33,36,1148]}," cm^3"]}],n:52,r:"data.sdesign_materials",p:[32,3,1079]}]}],n:50,r:"data.design_selected",p:[1,1,0]},{t:4,f:[{p:[38,2,1248],t:7,e:"ui-display",a:{title:"No Design Selected."}}],n:50,x:{r:["data.design_selected"],s:"!_0"},p:[37,1,1216]}]},e.exports=a.extend(r.exports)},{341:341}],444:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{t:4,f:[{p:[4,3,60],t:7,e:"ui-display",a:{title:"Destructive Analyzer Busy!"}}],n:50,r:"data.destroybusy",p:[3,2,32]},{t:4,n:51,f:[{t:4,f:[{p:[7,4,168],t:7,e:"ui-display",a:{title:"Destructive Analyzer Unloaded"}}],n:50,x:{r:["data.destroy_loaded"],s:"!_0"},p:[6,3,135]},{t:4,n:51,f:[{p:[9,4,248],t:7,e:"ui-display",a:{title:"Loaded Item"},f:[{p:[10,4,285],t:7,e:"ui-section",a:{title:"Name"},f:[{t:2,r:"data.destroy_name",p:[10,29,310]}]}]}," ",{p:[12,4,367],t:7,e:"ui-display",a:{title:"Boost Nodes"},f:[{t:4,f:[{p:[14,6,438],t:7,e:"ui-section",a:{title:[{t:2,r:"name",p:[14,25,457]}," | ",{t:2,r:"value",p:[14,36,468]}]},f:[{p:[15,7,487],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["allow"],s:'_0?null:"disabled"'},p:[15,25,505]}],action:"deconstruct",params:['{"id":',{t:2,r:"id",p:[15,90,570]},"}"]},f:["Deconstruct and Boost"]}]}],n:52,r:"data.boost_paths",p:[13,5,405]}]}," ",{p:[19,4,670],t:7,e:"ui-button",a:{action:"eject_da"},f:["Eject Item"]}],x:{r:["data.destroy_loaded"],s:"!_0"}}],r:"data.destroybusy"}],n:50,r:"data.destroy_linked",p:[2,1,2]},{t:4,n:51,f:[{p:[23,2,755],t:7,e:"ui-display",a:{title:"No Linked Destructive Analyzer"}}],r:"data.destroy_linked"}]},e.exports=a.extend(r.exports)},{341:341}],445:[function(t,e,n){var a=t(341),r={exports:{} };r.exports.template={v:3,t:[{t:4,f:[{p:[3,2,24],t:7,e:"ui-display",a:{title:"No Design Disk Loaded"}}],n:50,x:{r:["data.ddisk"],s:"!_0"},p:[2,1,2]},{t:4,n:51,f:[{t:4,f:[{p:[6,3,121],t:7,e:"ui-display",a:{title:"Design Disk Updating"}}],n:50,r:"data.ddisk_update",p:[5,2,92]},{t:4,n:51,f:[{t:4,f:[{p:[9,4,221],t:7,e:"ui-display",a:{title:"Design Disk"},f:[{p:[10,5,259],t:7,e:"ui-section",a:{title:"Disk Space"},f:["Disk Capacity: ",{t:2,r:"data.ddisk_size",p:[10,51,305]}," blueprints."]}," ",{p:[11,5,355],t:7,e:"ui-section",a:{title:"Disk IO"},f:[{p:[11,33,383],t:7,e:"ui-button",a:{action:"ddisk_upall"},f:["Upload all designs"]}]}," ",{p:[12,5,464],t:7,e:"ui-section",a:{title:"Clear Disk"},f:[{p:[12,36,495],t:7,e:"ui-button",a:{action:"clear_designdisk",style:"danger"},f:["WIPE ALL DATA"]}]}," ",{p:[13,5,591],t:7,e:"ui-section",a:{title:"Eject Disk"},f:[{p:[13,36,622],t:7,e:"ui-button",a:{action:"eject_designdisk"},f:["Eject Disk"]}]}]}," ",{p:[15,4,717],t:7,e:"ui-display",a:{title:"Disk Contents"},f:[{t:4,f:[{p:[17,6,792],t:7,e:"ui-section",a:{title:"Number"},f:["#",{t:2,r:"pos",p:[17,34,820]},": ",{t:4,f:[{p:[19,8,866],t:7,e:"ui-button",a:{action:"upload_empty_ddisk_slot",params:['{"slot": "',{t:2,r:"pos",p:[19,70,928]},'"}']},f:["Upload to Empty Slot"]}],n:50,x:{r:["id"],s:'_0=="null"'},p:[18,7,837]},{t:4,n:51,f:[{p:[21,8,996],t:7,e:"ui-button",a:{action:"select_design",params:['{"id": "',{t:2,r:"id",p:[21,58,1046]},'"}'],state:[{t:2,x:{r:["data.sdesign_id","id"],s:'_0==_1?"selected":null'},p:[21,75,1063]}]},f:[{t:2,r:"name",p:[21,122,1110]}]}," ",{p:[22,8,1139],t:7,e:"ui-button",a:{action:"ddisk_erasepos",style:"danger",params:['{"id": "',{t:2,r:"id",p:[22,74,1205]},'"}'],state:[{t:2,x:{r:["id"],s:'_0=="null"?"disabled":null'},p:[22,91,1222]}]},f:["Delete Slot"]}],x:{r:["id"],s:'_0=="null"'}}]}],n:52,r:"data.ddisk_designs",p:[16,5,757]}]}],n:50,x:{r:["data.ddisk_upload"],s:"!_0"},p:[8,3,190]},{t:4,n:51,f:[{p:[28,4,1367],t:7,e:"ui-display",a:{title:"Upload Design to Disk"},f:[{p:[28,46,1409],t:7,e:"ui-section",f:["Available Designs:"]}]}," ",{t:4,f:[{p:[30,5,1513],t:7,e:"ui-section",f:[{p:[30,17,1525],t:7,e:"ui-button",a:{action:"ddisk_uploaddesign",params:['{"id": "',{t:2,r:"id",p:[30,72,1580]},'"}']},f:[{t:2,r:"name",p:[30,82,1590]}]}]}],n:52,r:"data.ddisk_possible_designs",p:[29,4,1470]}],x:{r:["data.ddisk_upload"],s:"!_0"}}],r:"data.ddisk_update"}],x:{r:["data.ddisk"],s:"!_0"}}]},e.exports=a.extend(r.exports)},{341:341}],446:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[3,2,24],t:7,e:"ui-display",a:{title:"No Technology Disk Loaded"}}],n:50,x:{r:["data.tdisk"],s:"!_0"},p:[2,1,2]},{t:4,n:51,f:[{t:4,f:[{p:[6,3,125],t:7,e:"ui-display",a:{title:"Technology Disk Updating"}}],n:50,r:"data.tdisk_update",p:[5,2,96]},{t:4,n:51,f:[{p:[8,3,198],t:7,e:"ui-display",a:{title:"Technology Disk"},f:[{p:[9,4,239],t:7,e:"ui-section",a:{title:"Disk IO"},f:[{p:[9,32,267],t:7,e:"ui-button",a:{action:"tdisk_down"},f:["Download Research to Disk"]},{p:[9,100,335],t:7,e:"ui-button",a:{action:"tdisk_up"},f:["Upload Research from Disk"]}," ",{p:[10,4,406],t:7,e:"ui-section",a:{title:"Clear Disk"},f:[{p:[10,35,437],t:7,e:"ui-button",a:{action:"clear_techdisk",style:"danger"},f:["WIPE ALL DATA"]}]}," ",{p:[11,4,530],t:7,e:"ui-section",a:{title:"Eject Disk"},f:[{p:[11,35,561],t:7,e:"ui-button",a:{action:"eject_techdisk"},f:["Eject Disk"]}]}]}]}," ",{p:[13,3,652],t:7,e:"ui-display",a:{title:"Disk Contents"},f:[{t:4,f:[{p:[15,5,723],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[15,53,771]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[15,70,788]}]},f:[{t:2,r:"display_name",p:[15,115,833]}]}],n:52,r:"data.tdisk_nodes",p:[14,4,691]}]}],r:"data.tdisk_update"}],x:{r:["data.tdisk"],s:"!_0"}}]},e.exports=a.extend(r.exports)},{341:341}],447:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,29],t:7,e:"ui-display",a:{title:[{t:2,r:"data.snode_name",p:[2,21,48]}]},f:[{p:[3,3,73],t:7,e:"ui-section",a:{title:"Description"},f:["Description: ",{t:2,r:"data.snode_desc",p:[3,48,118]}]}," ",{p:[4,3,154],t:7,e:"ui-section",a:{title:"Point Cost"},f:["Point Cost: ",{t:2,r:"data.snode_cost",p:[4,46,197]}]}," ",{p:[5,3,233],t:7,e:"ui-section",a:{title:"Export Price"},f:["Export Price: ",{t:2,r:"data.snode_export",p:[5,50,280]}]}," ",{p:[6,3,318],t:7,e:"ui-button",a:{action:"research_node",params:['{"id"="',{t:2,r:"id",p:[6,52,367]},'"}'],state:[{t:2,x:{r:["data.snode_researched"],s:'_0?"disabled":null'},p:[6,69,384]}]},f:[{t:2,x:{r:["data.snode_researched"],s:'_0?"Researched":"Research Node"'},p:[6,115,430]}]}]}," ",{p:[8,2,518],t:7,e:"ui-display",a:{title:"Prerequisites"},f:[{t:4,f:[{p:[10,4,588],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[10,52,636]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[10,69,653]}]},f:[{t:2,r:"display_name",p:[10,114,698]}]}],n:52,r:"data.node_prereqs",p:[9,3,556]}]}," ",{p:[13,2,759],t:7,e:"ui-display",a:{title:"Unlocks"},f:[{t:4,f:[{p:[15,4,823],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[15,52,871]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[15,69,888]}]},f:[{t:2,r:"display_name",p:[15,114,933]}]}],n:52,r:"data.node_unlocks",p:[14,3,791]}]}," ",{p:[18,2,994],t:7,e:"ui-display",a:{title:"Designs"},f:[{t:4,f:[{p:[20,4,1058],t:7,e:"ui-button",a:{action:"select_design",params:['{"id": "',{t:2,r:"id",p:[20,54,1108]},'"}'],state:[{t:2,x:{r:["data.sdesign_id","id"],s:'_0==_1?"selected":null'},p:[20,71,1125]}]},f:[{t:2,r:"name",p:[20,118,1172]}]}],n:52,r:"data.node_designs",p:[19,3,1026]}]}],n:50,r:"data.node_selected",p:[1,1,0]},{t:4,f:[{p:[25,2,1263],t:7,e:"ui-display",a:{title:"No Node Selected."}}],n:50,x:{r:["data.node_selected"],s:"!_0"},p:[24,1,1233]}]},e.exports=a.extend(r.exports)},{341:341}],448:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{t:4,f:[{p:[3,3,59],t:7,e:"ui-display",a:{title:"Protolathe Busy!"}}],n:50,r:"data.protobusy",p:[2,2,33]},{t:4,n:51,f:[{p:[5,3,124],t:7,e:"ui-display",f:[{p:[6,4,141],t:7,e:"ui-section",f:["Search Available Designs: ",{p:[7,4,183],t:7,e:"input",a:{value:[{t:2,r:"textsearch",p:[7,17,196]}],placeholder:"Type Here","class":"text"}}," ",{p:[8,5,255],t:7,e:"ui-button",a:{action:"textSearch",params:['{"latheType" : "proto", "inputText" : ',{t:2,r:"textsearch",p:[8,82,332]},"}"]},f:["Search"]}]}," ",{p:[10,4,390],t:7,e:"ui-section",f:["Materials: ",{t:2,r:"data.protomats",p:[10,27,413]}," / ",{t:2,r:"data.protomaxmats",p:[10,48,434]}]}," ",{p:[11,4,473],t:7,e:"ui-section",f:["Reagents: ",{t:2,r:"data.protochems",p:[11,26,495]}," / ",{t:2,r:"data.protomaxchems",p:[11,48,517]}]}," ",{p:[12,3,556],t:7,e:"ui-display",f:[{p:[14,3,574],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.lathe_tabs",p:[14,18,589]}]},f:[{p:[15,4,615],t:7,e:"tab",a:{name:"Category List"},f:[{t:4,f:[{p:[17,6,678],t:7,e:"ui-button",a:{action:"switchcat",state:[{t:2,x:{r:["data.protocat","name"],s:'_0==_1?"selected":null'},p:[17,43,715]}],params:['{"type" : "proto", "cat" : "',{t:2,r:"name",p:[17,125,797]},'"}']},f:[{t:2,r:"name",p:[17,137,809]}]}],n:52,r:"data.protocats",p:[16,5,647]}]}," ",{p:[20,4,860],t:7,e:"tab",a:{name:"Selected Category"},f:[{t:4,f:[{p:[22,6,926],t:7,e:"ui-section",f:[{t:2,r:"name",p:[22,18,938]},{t:2,r:"matstring",p:[22,26,946]}," ",{t:4,f:[{p:[24,8,996],t:7,e:"input",a:{value:[{t:2,r:"number",p:[24,21,1009]}],placeholder:["1-",{t:2,x:{r:["canprint"],s:"_0>10?10:_0"},p:[24,47,1035]}],"class":"number"}}],n:50,x:{r:["canprint"],s:"_0>1"},p:[23,7,967]}," ",{p:[26,7,1108],t:7,e:"ui-button",a:{action:"print",state:[{t:2,x:{r:["canprint"],s:'_0>1?null:"disabled"'},p:[26,40,1141]}],params:['{"latheType" : "proto", "id" : "',{t:2,r:"id",p:[26,117,1218]},'", "amount" : "',{t:2,r:"number",p:[26,138,1239]},'"}']},f:["Print"]}]}],n:52,r:"data.protodes",p:[21,5,896]}]}," ",{p:[30,4,1321],t:7,e:"tab",a:{name:"Search Results"},f:[{t:4,f:[{p:[32,6,1386],t:7,e:"ui-section",f:[{t:2,r:"name",p:[32,18,1398]},{t:2,r:"matstring",p:[32,26,1406]}," ",{t:4,f:[{p:[34,8,1456],t:7,e:"input",a:{value:[{t:2,r:"number",p:[34,21,1469]}],placeholder:["1-",{t:2,x:{r:["canprint"],s:"_0>10?10:_0"},p:[34,47,1495]}],"class":"number"}}],n:50,x:{r:["canprint"],s:"_0>1"},p:[33,7,1427]}," ",{p:[36,7,1568],t:7,e:"ui-button",a:{action:"print",state:[{t:2,x:{r:["canprint"],s:'_0>1?null:"disabled"'},p:[36,40,1601]}],params:['{"latheType" : "proto", "id" : "',{t:2,r:"id",p:[36,117,1678]},'", "amount" : "',{t:2,r:"number",p:[36,138,1699]},'"}']},f:["Print"]}]}],n:52,r:"data.protomatch",p:[31,5,1354]}]}," ",{p:[40,4,1781],t:7,e:"tab",a:{name:"Materials"},f:[{t:4,f:[{p:[42,6,1844],t:7,e:"ui-section",f:[{t:2,r:"name",p:[42,18,1856]}," : ",{t:2,r:"amount",p:[42,29,1867]}," cm3 - ",{t:4,f:[{p:[44,7,1917],t:7,e:"input",a:{value:[{t:2,r:"number",p:[44,20,1930]}],placeholder:["1-",{t:2,r:"sheets",p:[44,46,1956]}],"class":"number"}}," ",{p:[45,7,1992],t:7,e:"ui-button",a:{action:"releasemats",params:['{"latheType" : "proto", "mat_id" : ',{t:2,r:"mat_id",p:[45,82,2067]},', "sheets" : ',{t:2,r:"number",p:[45,105,2090]},"}"]},f:["Release"]}],n:50,x:{r:["sheets"],s:"_0>0"},p:[43,6,1891]}]}],n:52,r:"data.protomat_list",p:[41,5,1809]}]}," ",{p:[50,4,2187],t:7,e:"tab",a:{name:"Chemicals"},f:[{t:4,f:[{p:[52,6,2251],t:7,e:"ui-section",f:[{t:2,r:"name",p:[52,18,2263]}," : ",{t:2,r:"amount",p:[52,29,2274]}," - ",{p:[53,7,2295],t:7,e:"ui-button",a:{action:"purgechem",params:['{"latheType" : "proto", "name" : ',{t:2,r:"name",p:[53,78,2366]},', "id" : ',{t:2,r:"reagentid",p:[53,95,2383]},"}"]},f:["Purge"]}]}],n:52,r:"data.protochem_list",p:[51,5,2215]}]}]}]}]}],r:"data.protobusy"}],n:50,r:"data.protolathe_linked",p:[1,1,0]},{t:4,n:51,f:[{p:[61,2,2504],t:7,e:"ui-display",a:{title:"No Linked Protolathe"}}],r:"data.protolathe_linked"}]},e.exports=a.extend(r.exports)},{341:341}],449:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,1,14],t:7,e:"span",a:{"class":"memoedit"},f:["Nanotrasen R&D Console"]},{p:[2,53,66],t:7,e:"br"}," Available Points: ",{p:[3,19,91],t:7,e:"ui-section",a:{title:"Research Points"},f:[{t:2,r:"data.research_points_stored",p:[3,55,127]}]}," ",{p:[4,1,173],t:7,e:"ui-section",a:{title:["Page Selection - ",{t:2,r:"page",p:[4,37,209]}]},f:[{p:[4,47,219],t:7,e:"input",a:{value:[{t:2,r:"pageselect",p:[4,60,232]}],placeholder:"1","class":"number"}}," Select Page: ",{p:[5,14,294],t:7,e:"ui-button",a:{action:"page",params:['{"num" : "',{t:2,r:"pageselect",p:[5,57,337]},'"}']},f:["[Go]"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],450:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"span",a:{"class":"bad"},f:["Settings"]},{p:[1,34,33],t:7,e:"br"},{p:[1,39,38],t:7,e:"br"}," ",{p:[2,1,45],t:7,e:"ui-button",a:{action:"Resync"},f:["RESYNC MACHINERY"]},{p:[2,56,100],t:7,e:"br"}," ",{p:[3,1,107],t:7,e:"ui-button",a:{action:"Lock"},f:["LOCK"]}," ",{p:[4,1,150],t:7,e:"ui-button",a:{action:"disconnect",params:'{"type" : "destroy"}',state:[{t:2,x:{r:["data.destroy_linked"],s:'_0?null:"disabled"'},p:[4,71,220]}]},f:["Disconnect Destructive Analyzer"]}," ",{p:[5,1,309],t:7,e:"ui-button",a:{action:"disconnect",params:'{"type" : "lathe"}',state:[{t:2,x:{r:["data.protolathe_linked"],s:'_0?null:"disabled"'},p:[5,69,377]}]},f:["Disconnect Protolathe"]}," ",{p:[6,1,459],t:7,e:"ui-button",a:{action:"disconnect",params:'{"type" : "imprinter"}',state:[{t:2,x:{r:["data.circuit_linked"],s:'_0?null:"disabled"'},p:[6,73,531]}]},f:["Disconnect Circuit Imprinter"]}]},e.exports=a.extend(r.exports)},{341:341}],451:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Available for Research"},f:[{t:4,f:[{p:[3,3,78],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[3,51,126]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[3,68,143]}]},f:[{t:2,r:"display_name",p:[3,113,188]}]}],n:52,r:"data.techweb_avail",p:[2,2,46]}]}," ",{p:[6,1,245],t:7,e:"ui-display",a:{title:"Locked Nodes"},f:[{t:4,f:[{p:[8,3,314],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[8,51,362]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[8,68,379]}]},f:[{t:2,r:"display_name",p:[8,113,424]}]}],n:52,r:"data.techweb_locked",p:[7,2,281]}]}," ",{p:[11,1,482],t:7,e:"ui-display",a:{title:"Researched Nodes"},f:[{t:4,f:[{p:[13,3,559],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[13,51,607]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[13,68,624]}]},f:[{t:2,r:"display_name",p:[13,113,669]}]}],n:52,r:"data.techweb_researched",p:[12,2,522]}]}]},e.exports=a.extend(r.exports)},{341:341}],452:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,1,25],t:7,e:"ui-notice",f:[{p:[3,3,40],t:7,e:"span",f:["The grinder is currently processing and cannot be used."]}]}],n:50,r:"data.processing",p:[1,1,0]},{p:{button:[{p:[8,5,208],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.operating","data.contents"],s:'(_0==0)&&_1?null:"disabled"'},p:[8,36,239]}],action:"eject"},f:["Eject Contents"]}]},t:7,e:"ui-display",a:{title:"Processing Chamber",button:0},f:[" ",{p:[10,3,364],t:7,e:"ui-section",a:{label:"Grinding"},f:[{p:[11,5,399],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.operating"],s:'_0?"average":"good"'},p:[11,18,412]}]},f:[{t:2,x:{r:["data.operating"],s:'_0?"Busy":"Ready"'},p:[11,59,453]}]}," ",{p:[12,2,500],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.operating","data.contents"],s:'(_0==0)&&_1?null:"disabled"'},p:[12,35,533]}],action:"grind"},f:["Activate"]}]}," ",{p:[14,3,653],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[17,9,755],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:["The ",{t:2,r:"name",p:[17,56,802]}]},{p:[17,71,817],t:7,e:"br"}],n:52,r:"adata.contentslist",p:[16,7,717]},{t:4,n:51,f:[{p:[19,9,848],t:7,e:"span",f:["No Contents"]}],r:"adata.contentslist"}],n:50,r:"data.contents",p:[15,5,688]},{t:4,n:51,f:[{p:[22,7,911],t:7,e:"span",f:["No Contents"]}],r:"data.contents"}]}]}," ",{p:{button:[{p:[28,5,1047],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.operating","data.isBeakerLoaded"],s:'(_0==0)&&_1?null:"disabled"'},p:[28,36,1078]}],action:"detach"},f:["Detach"]}]},t:7,e:"ui-display",a:{title:"Container",button:0},f:[" ",{p:[30,3,1202],t:7,e:"ui-section",a:{label:"Reagents"},f:[{t:4,f:[{p:[32,7,1272],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[32,13,1278]},"/",{t:2,r:"data.beakerMaxVolume",p:[32,55,1320]}," Units"]}," ",{p:[33,7,1365],t:7,e:"br"}," ",{t:4,f:[{p:[35,9,1418],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[35,52,1461]}," units of ",{t:2,r:"name",p:[35,87,1496]}]},{p:[35,102,1511],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[34,7,1378]},{t:4,n:51,f:[{p:[37,9,1542],t:7,e:"span",a:{"class":"bad"},f:["Container Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[31,5,1237]},{t:4,n:51,f:[{p:[40,7,1621],t:7,e:"span",a:{"class":"average"},f:["No Container"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],453:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Direction"},f:[{t:4,f:[{p:[3,3,64],t:7,e:"ui-section",f:[{t:4,f:[{p:[5,5,105],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[5,23,123]}],action:"setdir",params:['{"dir": ',{t:2,r:"dir",p:[6,22,195]},', "flipped": ',{t:2,r:"flipped",p:[6,42,215]},"}"]},f:[{p:[6,56,229],t:7,e:"span",a:{"class":["pipes32x32 ",{t:2,r:"dir",p:[6,80,253]},"-",{t:2,r:"icon_state",p:[6,88,261]}],title:[{t:2,r:"dir_name",p:[6,111,284]}]}}]}],n:52,r:"previews",p:[4,4,81]}]}],n:52,r:"data.preview_rows",p:[2,2,33]}]}," ",{t:4,f:[{p:[12,2,406],t:7,e:"ui-display",a:{title:"Color"},f:[{t:4,f:[{p:[14,4,468],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["@key","data.selected_color"],s:'_0==_1?"selected":null'},p:[14,22,486]}],action:"color",params:['{"paint_color": ',{t:2,r:"@key",p:[15,44,583]},"}"]},f:[{t:2,r:"@key",p:[15,55,594]}]}],n:52,r:"data.paint_colors",p:[13,3,436]}]}],n:50,x:{r:["data.category"],s:"_0==0"},p:[11,1,377]},{p:[19,1,654],t:7,e:"ui-display",a:{title:"Utilities"},f:[{p:[20,2,687],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0&1?"check-square-o":"square-o"'},p:[20,19,704]}],action:"mode",params:'{"mode": 1}'},f:["Build"]}," ",{p:[22,2,813],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0&2?"check-square-o":"square-o"'},p:[22,19,830]}],action:"mode",params:'{"mode": 2}'},f:["Wrench"]}," ",{p:[24,2,940],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0&4?"check-square-o":"square-o"'},p:[24,19,957]}],action:"mode",params:'{"mode": 4}'},f:["Destroy"]}," ",{t:4,f:[{p:[27,3,1098],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0&8?"check-square-o":"square-o"'},p:[27,20,1115]}],action:"mode",params:'{"mode": 8}'},f:["Paint"]}],n:50,x:{r:["data.category"],s:"_0==0"},p:[26,2,1068]}]}," ",{p:[31,1,1249],t:7,e:"ui-display",a:{title:"Category"},f:[{p:[32,2,1281],t:7,e:"ui-section",f:[{p:[33,3,1297],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.category"],s:'_0==0?"check-square-o":"square-o"'},p:[33,20,1314]}],state:[{t:2,x:{r:["data.category"],s:'_0<=0?"selected":null'},p:[33,83,1377]}],action:"category",params:'{"category": 0}'},f:["Atmospherics"]}," ",{p:[35,3,1496],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.category"],s:'_0==1?"check-square-o":"square-o"'},p:[35,20,1513]}],state:[{t:2,x:{r:["data.category"],s:'_0==1?"selected":null'},p:[35,83,1576]}],action:"category",params:'{"category": 1}'},f:["Disposals"]}," ",{p:[37,3,1692],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.category"],s:'_0==2?"check-square-o":"square-o"'},p:[37,20,1709]}],state:[{t:2,x:{r:["data.category"],s:'_0==2?"selected":null'},p:[37,83,1772]}],action:"category",params:'{"category": 2}'},f:["Transit Tubes"]}]}," ",{t:4,f:[{p:[41,3,1937],t:7,e:"ui-section",a:{label:"Piping Layer"},f:[{p:[42,4,1975],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.piping_layer"],s:'_0==1?"selected":null'},p:[42,22,1993]}],action:"piping_layer",params:'{"piping_layer": 1}'},f:["1"]}," ",{p:[44,4,2115],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.piping_layer"],s:'_0==2?"selected":null'},p:[44,22,2133]}],action:"piping_layer",params:'{"piping_layer": 2}'},f:["2"]}," ",{p:[46,4,2255],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.piping_layer"],s:'_0==3?"selected":null'},p:[46,22,2273]}],action:"piping_layer",params:'{"piping_layer": 3}'},f:["3"]}]}],n:50,x:{r:["data.category"],s:"_0==0"},p:[40,2,1907]}]}," ",{t:4,f:[{p:[52,2,2462],t:7,e:"ui-display",a:{title:[{t:2,r:"cat_name",p:[52,21,2481]}]},f:[{t:4,f:[{p:[54,4,2521],t:7,e:"ui-section",f:[{p:[55,5,2539],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[55,23,2557]}],action:"pipe_type",params:['{"pipe_type": ',{t:2,r:"pipe_index",p:[56,28,2638]},', "category": ',{t:2,r:"cat_name",p:[56,56,2666]},"}"]},f:[{t:2,r:"pipe_name",p:[56,71,2681]}]}]}],n:52,r:"recipes",p:[53,3,2499]}]}],n:52,r:"data.categories",p:[51,1,2434]}]},e.exports=a.extend(r.exports)},{341:341}],454:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Color"},f:[{t:4,f:[{p:[3,3,60],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[3,21,78]}],action:"color",params:['{"paint_color": ',{t:2,r:"color_name",p:[4,28,155]},"}"]},f:[{t:2,r:"color_name",p:[4,45,172]}]}],n:52,r:"data.paint_colors",p:[2,2,29]}]}]},e.exports=a.extend(r.exports)},{341:341}],455:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Direction"},f:[{t:4,f:[{p:[3,3,64],t:7,e:"ui-section",f:[{t:4,f:[{p:[5,5,105],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[5,23,123]}],action:"setdir",params:['{"dir": ',{t:2,r:"dir",p:[6,22,195]},', "flipped": ',{t:2,r:"flipped",p:[6,42,215]},"}"]},f:[{p:[6,56,229],t:7,e:"img",a:{src:["pipe.",{t:2,r:"dir",p:[6,71,244]},".",{t:2,r:"icon_state",p:[6,79,252]},".png"],title:[{t:2,r:"dir_name",p:[6,106,279]}]}}]}],n:52,r:"previews",p:[4,4,81]}]}],n:52,r:"data.preview_rows",p:[2,2,33]}]}]},e.exports=a.extend(r.exports)},{341:341}],456:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,23],t:7,e:"ui-notice",f:[{t:2,r:"data.notice",p:[3,5,40]}]}],n:50,r:"data.notice",p:[1,1,0]},{p:[6,1,82],t:7,e:"ui-display",a:{title:"Satellite Network Control",button:0},f:[{t:4,f:[{p:[8,4,168],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[9,9,209],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[9,31,231]}]}," ",{p:[10,9,253],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"mode",p:[10,30,274]}]}," ",{p:[11,9,298],t:7,e:"div",a:{"class":"content"},f:[{p:[12,11,331],t:7,e:"ui-button",a:{action:"toggle",params:['{"id": "',{t:2,r:"id",p:[12,54,374]},'"}']},f:[{t:2,x:{r:["active"],s:'_0?"Deactivate":"Activate"'},p:[12,64,384]}]}]}]}],n:52,r:"data.satellites",p:[7,2,138]}]}," ",{t:4,f:[{p:[18,1,528],t:7,e:"ui-display",a:{title:"Station Shield Coverage"},f:[{p:[19,3,576],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.meteor_shield_coverage_max",p:[19,24,597]}],value:[{t:2,r:"data.meteor_shield_coverage",p:[19,68,641]}]},f:[{t:2,x:{r:["data.meteor_shield_coverage","data.meteor_shield_coverage_max"],s:"100*_0/_1"},p:[19,101,674]}," %"]}," ",{p:[20,1,758],t:7,e:"ui-display",f:[]}]}],n:50,r:"data.meteor_shield",p:[17,1,500]}]},e.exports=a.extend(r.exports)},{341:341}],457:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,26],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["enabled"],s:'_0?"check-square-o":"square-o"'},p:[2,20,43]}],style:[{t:2,x:{r:["enabled"],s:'_0?"selected":null'},p:[2,72,95]}],action:"toggle_filter",params:['{"id_tag": "',{t:2,r:"id_tag",p:[3,48,176]},'", "val": ',{t:2,r:"gas_id",p:[3,68,196]},"}"]},f:[{t:2,r:"gas_name",p:[3,81,209]}]}],n:52,r:"filter_types",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{341:341}],458:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" "," "," ",{p:[5,1,200],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.tabs",p:[5,16,215]}]},f:[{p:[6,2,233],t:7,e:"tab",a:{name:"Status"},f:[{p:[7,3,256],t:7,e:"status"}]}," ",{p:[9,2,277],t:7,e:"tab",a:{name:"Templates"},f:[{p:[10,3,303],t:7,e:"templates"}]}," ",{p:[12,2,327],t:7,e:"tab",a:{name:"Modification"},f:[{t:4,f:[{p:[14,3,381],t:7,e:"modification"}],n:50,r:"data.selected",p:[13,3,356]}," ",{t:4,f:[{p:[17,3,437],t:7,e:"span",a:{"class":"bad"},f:["No shuttle selected."]}],n:50,x:{r:["data.selected"],s:"!_0"},p:[16,3,411]}]}]}]},r.exports.components=r.exports.components||{};var i={modification:t(459),templates:t(461),status:t(460)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,459:459,460:460,461:461}],459:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:["Selected: ",{t:2,r:"data.selected.name",p:[1,30,29]}]},f:[{t:4,f:[{p:[3,5,96],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"data.selected.description",p:[3,37,128]}]}],n:50,r:"data.selected.description",p:[2,3,57]}," ",{t:4,f:[{p:[6,5,224],t:7,e:"ui-section",a:{label:"Admin Notes"},f:[{t:2,r:"data.selected.admin_notes",p:[6,37,256]}]}],n:50,r:"data.selected.admin_notes",p:[5,3,185]}]}," ",{t:4,f:[{p:[11,3,361],t:7,e:"ui-display",a:{title:["Existing Shuttle: ",{t:2,r:"data.existing_shuttle.name",p:[11,40,398]}]},f:["Status: ",{t:2,r:"data.existing_shuttle.status",p:[12,13,444]}," ",{t:4,f:["(",{t:2,r:"data.existing_shuttle.timeleft",p:[14,8,526]},")"],n:50,r:"data.existing_shuttle.timer",p:[13,5,482]}," ",{p:[16,5,580],t:7,e:"ui-button",a:{action:"jump_to",params:['{"type": "mobile", "id": "',{t:2,r:"data.existing_shuttle.id",p:[17,41,649]},'"}']},f:["Jump To"]}]}],n:50,r:"data.existing_shuttle",p:[10,1,328]},{t:4,f:[{p:[24,3,778],t:7,e:"ui-display",a:{title:"Existing Shuttle: None"}}],n:50,x:{r:["data.existing_shuttle"],s:"!_0"},p:[23,1,744]},{p:[27,1,847],t:7,e:"ui-button",a:{action:"preview",params:['{"shuttle_id": "',{t:2,r:"data.selected.shuttle_id",p:[28,27,902]},'"}']},f:["Preview"]}," ",{p:[31,1,961],t:7,e:"ui-button",a:{action:"load",params:['{"shuttle_id": "',{t:2,r:"data.selected.shuttle_id",p:[32,27,1013]},'"}'],style:"danger"},f:["Load"]}," ",{p:[37,1,1089],t:7,e:"ui-display",a:{title:"Status"},f:[]}]},e.exports=a.extend(r.exports)},{341:341}],460:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"table",a:{width:"100%"},f:[{t:4,f:[{p:[3,3,49],t:7,e:"tr",f:[{p:[4,5,59],t:7,e:"td",f:[{p:[5,7,71],t:7,e:"ui-button",a:{action:"jump_to",params:['{"type": "mobile", "id": "',{t:2,r:"id",p:[5,69,133]},'"}']},f:["JMP"]}]}," ",{p:[9,5,193],t:7,e:"td",f:[{p:[10,7,205],t:7,e:"ui-button",a:{action:"fly",params:['{"id": "',{t:2,r:"id",p:[10,47,245]},'"}'],state:[{t:2,x:{r:["can_fly"],s:'_0?null:"disabled"'},p:[10,64,262]}]},f:["Fly"]}]}," ",{p:[14,5,345],t:7,e:"td",f:[{t:2,r:"name",p:[15,7,357]}," (",{p:[15,17,367],t:7,e:"code",f:[{t:2,r:"id",p:[15,23,373]}]},")"]}," ",{p:[17,5,404],t:7,e:"td",f:[{t:2,r:"status",p:[18,7,416]}]}," ",{p:[20,5,443],t:7,e:"td",f:[{t:4,f:[{t:2,r:"mode",p:[22,9,477]}],n:50,r:"mode",p:[21,7,455]}," ",{t:4,f:["(",{t:2,r:"timeleft",p:[25,10,532]},") ",{p:[26,9,555],t:7,e:"ui-button",a:{action:"fast_travel",params:['{"id": "',{t:2,r:"id",p:[26,57,603]},'"}'],state:[{t:2,x:{r:["can_fast_travel"],s:'_0?null:"disabled"'},p:[26,74,620]}]},f:["Fast Travel"]}],n:50,r:"timer",p:[24,7,508]}]}]}],n:52,r:"data.shuttles",p:[2,1,22]}]}]},e.exports=a.extend(r.exports)},{341:341}],461:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.templates_tabs",p:[1,16,15]}]},f:[{t:4,f:[{p:[3,5,74],t:7,e:"tab",a:{name:[{t:2,r:"port_id",p:[3,16,85]}]},f:[{t:4,f:[{p:[5,9,135],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[5,28,154]}]},f:[{t:4,f:[{p:[7,13,209],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"description",p:[7,45,241]}]}],n:50,r:"description",p:[6,11,176]}," ",{t:4,f:[{p:[10,13,333],t:7,e:"ui-section",a:{label:"Admin Notes"},f:[{t:2,r:"admin_notes",p:[10,45,365]}]}],n:50,r:"admin_notes",p:[9,11,300]}," ",{p:[13,11,426],t:7,e:"ui-button",a:{action:"select_template",params:['{"shuttle_id": "',{t:2,r:"shuttle_id",p:[14,37,499]},'"}'],state:[{t:2,x:{r:["data.selected.shuttle_id","shuttle_id"],s:'_0==_1?"selected":null'},p:[15,20,537]}]},f:[{t:2,x:{r:["data.selected.shuttle_id","shuttle_id"],s:'_0==_1?"Selected":"Select"'},p:[17,13,630]}]}]}],n:52,r:"templates",p:[4,7,106]}]}],n:52,r:"data.templates",p:[2,3,44]}]}]},e.exports=a.extend(r.exports)},{341:341}],462:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[2,3,33],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[3,3,66],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[3,9,72]}]}]}," ",{t:4,f:[{p:[6,5,186],t:7,e:"ui-section",a:{label:"State"},f:[{p:[7,7,220],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.statstate",p:[7,20,233]}]},f:[{t:2,r:"data.occupant.stat",p:[7,49,262]}]}]}," ",{p:[9,5,315],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[10,7,350],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[10,20,363]}],max:[{t:2,r:"data.occupant.maxHealth",p:[10,54,397]}],value:[{t:2,r:"data.occupant.health",p:[10,90,433]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[11,16,475]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[11,68,527]}]}]}," ",{t:4,f:[{p:[14,7,764],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[14,26,783]}]},f:[{p:[15,9,804],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[15,30,825]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[15,66,861]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[15,103,898]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[13,5,598]}," ",{t:4,f:[{p:[19,7,1020],t:7,e:"ui-section",a:{label:"Blood"},f:[{p:[20,9,1056],t:7,e:"ui-section",a:{label:"Volume"},f:[{p:[21,11,1095],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.blood.maxBloodVolume",p:[21,32,1116]}],value:[{t:2,r:"data.occupant.blood.currentBloodVolume",p:[21,79,1163]}],state:[{t:2,x:{r:["data.occupant.blood.currentBloodVolume","data.occupant.blood.dangerBloodVolume"],s:'_0<=_1?"bad":"good"'},p:[21,130,1214]}]},f:[{t:3,x:{r:["data.occupant.blood.currentBloodVolume","data.occupant.blood.dangerBloodVolume"],s:'_0<=_1?"LOW":"OK"'},p:[21,232,1316]}," - ",{t:2,x:{r:["data.occupant.blood.currentBloodVolume"],s:"Math.round(_0)"},p:[21,342,1426]}," cl"]}]}," ",{p:[23,9,1525],t:7,e:"ui-section",a:{label:"Type"},f:[{p:[24,11,1562],t:7,e:"span",a:{"class":"highlight"},f:[{t:2,r:"data.occupant.blood.bloodType",p:[24,35,1586]}]}]}]}],n:50,r:"data.occupant.blood",p:[18,5,985]}," ",{p:[28,5,1689],t:7,e:"ui-section",a:{label:"Cells"},f:[{p:[29,9,1725],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"bad":"good"'},p:[29,22,1738]}]},f:[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"Damaged":"Healthy"'},p:[29,68,1784]}]}]}," ",{p:[31,5,1867],t:7,e:"ui-section",a:{label:"Brain"},f:[{p:[32,9,1903],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"bad":"good"'},p:[32,22,1916]}]},f:[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"Abnormal":"Healthy"'},p:[32,68,1962]}]}]}," ",{p:[34,5,2046],t:7,e:"ui-section",a:{label:"Bloodstream"},f:[{t:4,f:[{p:[36,11,2133],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,1)"},p:[36,54,2176]}," units of ",{t:2,r:"name",p:[36,89,2211]}]},{p:[36,104,2226],t:7,e:"br"}],n:52,r:"adata.occupant.reagents",p:[35,9,2088]},{t:4,n:51,f:[{p:[38,11,2261],t:7,e:"span",a:{"class":"good"},f:["Pure"]}],r:"adata.occupant.reagents"}]}],n:50,r:"data.occupied",p:[5,3,159]}]}," ",{p:[43,1,2357],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[44,2,2389],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[45,5,2420],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"unlock":"lock"'},p:[45,22,2437]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Open":"Closed"'},p:[45,71,2486]}]}]}," ",{p:[47,3,2551],t:7,e:"ui-section",a:{label:"Inject"},f:[{t:4,f:[{p:[49,7,2612],t:7,e:"ui-button",a:{icon:"flask",state:[{t:2,x:{r:["data.occupied","allowed"],s:'_0&&_1?null:"disabled"'},p:[49,38,2643]}],action:"inject",params:['{"chem": "',{t:2,r:"id",p:[49,122,2727]},'"}']},f:[{t:2,r:"name",p:[49,132,2737]}]},{p:[49,152,2757],t:7,e:"br"}],n:52,r:"data.chems",p:[48,5,2584]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],463:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,25],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[2,22,44]}],labelcolor:[{t:2,r:"htmlcolor",p:[2,44,66]}],candystripe:0,right:0},f:[{p:[3,5,105],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[3,32,132],t:7,e:"span",a:{"class":[{t:2,x:{r:["status"],s:'_0=="Dead"?"bad bold":_0=="Unconscious"?"average bold":"good"'},p:[3,45,145]}]},f:[{t:2,r:"status",p:[3,132,232]}]}]}," ",{p:[4,5,268],t:7,e:"ui-section",a:{label:"Jelly"},f:[{t:2,r:"exoticblood",p:[4,31,294]}]}," ",{p:[5,5,328],t:7,e:"ui-section",a:{label:"Location"},f:[{t:2,r:"area",p:[5,34,357]}]}," ",{p:[7,5,386],t:7,e:"ui-button",a:{state:[{t:2,r:"swap_button_state",p:[8,14,411]}],action:"swap",params:['{"ref": "',{t:2,r:"ref",p:[9,38,472]},'"}']},f:[{t:4,f:["You Are Here"],n:50,x:{r:["occupied"],s:'_0=="owner"'},p:[10,7,491]},{t:4,n:51,f:[{t:4, f:["Occupied"],n:50,x:{r:["occupied"],s:'_0=="stranger"'},p:[13,9,566]},{t:4,n:51,f:["Swap"],x:{r:["occupied"],s:'_0=="stranger"'}}],x:{r:["occupied"],s:'_0=="owner"'}}]}]}],n:52,r:"data.bodies",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{341:341}],464:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{t:4,f:[{p:[4,23,82],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.drying"],s:'_0?"stop":"tint"'},p:[4,40,99]}],action:"Dry"},f:[{t:2,x:{r:["data.drying"],s:'_0?"Stop drying":"Dry"'},p:[4,88,147]}]}],n:50,r:"data.isdryer",p:[4,3,62]}]},t:7,e:"ui-display",a:{title:"Storage",button:0},f:[" ",{t:4,f:[{p:[7,3,258],t:7,e:"ui-notice",f:[{p:[8,5,275],t:7,e:"span",f:["Unfortunately, this ",{t:2,r:"data.name",p:[8,31,301]}," is empty."]}]}],n:50,x:{r:["data.contents.length"],s:"_0==0"},p:[6,1,221]},{t:4,n:51,f:[{p:[11,1,359],t:7,e:"div",a:{"class":"display tabular"},f:[{p:[12,2,391],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[13,4,425],t:7,e:"section",a:{"class":"cell bold"},f:["Item"]}," ",{p:[16,4,482],t:7,e:"section",a:{"class":"cell bold"},f:["Quantity"]}," ",{p:[19,4,543],t:7,e:"section",a:{"class":"cell bold",align:"center"},f:[{t:4,f:[{t:2,r:"data.verb",p:[20,22,608]}],n:50,r:"data.verb",p:[20,5,591]},{t:4,n:51,f:["Dispense"],r:"data.verb"}]}]}," ",{t:4,f:[{p:[24,3,703],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[25,4,737],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[26,5,765]}]}," ",{p:[28,4,793],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"amount",p:[29,5,835]}]}," ",{p:[31,4,865],t:7,e:"section",a:{"class":"table",alight:"right"},f:[{p:[32,5,909],t:7,e:"section",a:{"class":"cell"}}," ",{p:[33,5,947],t:7,e:"section",a:{"class":"cell"},f:[{p:[34,6,976],t:7,e:"ui-button",a:{grid:0,action:"Release",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[34,45,1015]}],params:['{ "name" : ',{t:2,r:"name",p:[34,102,1072]},', "amount" : 1 }']},f:["One"]}]}," ",{p:[38,5,1151],t:7,e:"section",a:{"class":"cell"},f:[{p:[39,6,1180],t:7,e:"ui-button",a:{grid:0,action:"Release",state:[{t:2,x:{r:["amount"],s:'(_0>1)?null:"disabled"'},p:[39,45,1219]}],params:['{ "name" : ',{t:2,r:"name",p:[39,101,1275]}," }"]},f:["Many"]}]}]}]}],n:52,r:"data.contents",p:[23,2,676]}]}],x:{r:["data.contents.length"],s:"_0==0"}}]}]},e.exports=a.extend(r.exports)},{341:341}],465:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{capacityPercentState:function(){var t=this.get("data.capacityPercent");return t>50?"good":t>15?"average":"bad"},inputState:function(){return this.get("data.capacityPercent")>=100?"good":this.get("data.inputting")?"average":"bad"},outputState:function(){return this.get("data.outputting")?"good":this.get("data.charge")>0?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[24,1,663],t:7,e:"ui-display",a:{title:"Storage"},f:[{p:[25,3,695],t:7,e:"ui-section",a:{label:"Stored Energy"},f:[{p:[26,5,735],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.capacityPercent",p:[26,38,768]}],state:[{t:2,r:"capacityPercentState",p:[26,71,801]}]},f:[{t:2,x:{r:["adata.capacityPercent"],s:"Math.fixed(_0)"},p:[26,97,827]},"%"]}]}]}," ",{p:[29,1,908],t:7,e:"ui-display",a:{title:"Input"},f:[{p:[30,3,938],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{p:[31,5,976],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"refresh":"close"'},p:[31,22,993]}],style:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"selected":null'},p:[31,74,1045]}],action:"tryinput"},f:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"Auto":"Off"'},p:[32,25,1113]}]},"   [",{p:[34,6,1182],t:7,e:"span",a:{"class":[{t:2,r:"inputState",p:[34,19,1195]}]},f:[{t:2,x:{r:["data.capacityPercent","data.inputting"],s:'_0>=100?"Fully Charged":_1?"Charging":"Not Charging"'},p:[34,35,1211]}]},"]"]}," ",{p:[36,3,1335],t:7,e:"ui-section",a:{label:"Target Input"},f:[{p:[37,5,1374],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.inputLevelMax",p:[37,26,1395]}],value:[{t:2,r:"data.inputLevel",p:[37,57,1426]}]},f:[{t:2,r:"adata.inputLevel_text",p:[37,78,1447]}]}]}," ",{p:[39,3,1501],t:7,e:"ui-section",a:{label:"Adjust Input"},f:[{p:[40,5,1540],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[40,44,1579]}],action:"input",params:'{"target": "min"}'}}," ",{p:[41,5,1674],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[41,39,1708]}],action:"input",params:'{"adjust": -10000}'}}," ",{p:[42,5,1804],t:7,e:"ui-button",a:{icon:"pencil",action:"input",params:'{"target": "input"}'},f:["Set"]}," ",{p:[43,5,1894],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[43,38,1927]}],action:"input",params:'{"adjust": 10000}'}}," ",{p:[44,5,2039],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[44,43,2077]}],action:"input",params:'{"target": "max"}'}}]}," ",{p:[46,3,2204],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[47,3,2238],t:7,e:"span",f:[{t:2,r:"adata.inputAvailable",p:[47,9,2244]}]}]}]}," ",{p:[50,1,2308],t:7,e:"ui-display",a:{title:"Output"},f:[{p:[51,3,2339],t:7,e:"ui-section",a:{label:"Output Mode"},f:[{p:[52,5,2377],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"power-off":"close"'},p:[52,22,2394]}],style:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"selected":null'},p:[52,77,2449]}],action:"tryoutput"},f:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"On":"Off"'},p:[53,26,2519]}]},"   [",{p:[55,6,2587],t:7,e:"span",a:{"class":[{t:2,r:"outputState",p:[55,19,2600]}]},f:[{t:2,x:{r:["data.outputting","data.charge"],s:'_0?"Sending":_1>0?"Not Sending":"No Charge"'},p:[55,36,2617]}]},"]"]}," ",{p:[57,3,2724],t:7,e:"ui-section",a:{label:"Target Output"},f:[{p:[58,5,2764],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.outputLevelMax",p:[58,26,2785]}],value:[{t:2,r:"data.outputLevel",p:[58,58,2817]}]},f:[{t:2,r:"adata.outputLevel_text",p:[58,80,2839]}]}]}," ",{p:[60,3,2894],t:7,e:"ui-section",a:{label:"Adjust Output"},f:[{p:[61,5,2934],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[61,44,2973]}],action:"output",params:'{"target": "min"}'}}," ",{p:[62,5,3070],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[62,39,3104]}],action:"output",params:'{"adjust": -10000}'}}," ",{p:[63,5,3202],t:7,e:"ui-button",a:{icon:"pencil",action:"output",params:'{"target": "input"}'},f:["Set"]}," ",{p:[64,5,3293],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[64,38,3326]}],action:"output",params:'{"adjust": 10000}'}}," ",{p:[65,5,3441],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[65,43,3479]}],action:"output",params:'{"target": "max"}'}}]}," ",{p:[67,3,3609],t:7,e:"ui-section",a:{label:"Outputting"},f:[{p:[68,3,3644],t:7,e:"span",f:[{t:2,r:"adata.outputUsed",p:[68,9,3650]}]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],466:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:["\ufeff",{t:4,f:[" ",{p:[2,2,33],t:7,e:"ui-display",a:{title:"Dispersal Tank"},f:[{p:[3,3,73],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[4,4,104],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.active"],s:'_0?"power-off":"close"'},p:[4,21,121]}],style:[{t:2,x:{r:["data.active"],s:'_0?"selected":null'},p:[5,12,174]}],state:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?null:"disabled"'},p:[6,12,223]}],action:"power"},f:[{t:2,x:{r:["data.active"],s:'_0?"On":"Off"'},p:[7,20,286]}]}]}," ",{p:[10,3,354],t:7,e:"ui-section",a:{label:"Smoke Radius Setting"},f:[{p:[11,5,401],t:7,e:"div",a:{"class":"content",style:"float:left"},f:[{p:[12,6,448],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=1?null:"disabled"'},p:[12,36,478]}],style:[{t:2,x:{r:["data.setting"],s:'_0==1?"selected":null'},p:[12,89,531]}],action:"setting",params:'{"amount": 1}'},f:["3"]}," ",{p:[13,6,634],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=2?null:"disabled"'},p:[13,36,664]}],style:[{t:2,x:{r:["data.setting"],s:'_0==2?"selected":null'},p:[13,89,717]}],action:"setting",params:'{"amount": 2}'},f:["6"]}," ",{p:[14,6,820],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=3?null:"disabled"'},p:[14,36,850]}],style:[{t:2,x:{r:["data.setting"],s:'_0==3?"selected":null'},p:[14,89,903]}],action:"setting",params:'{"amount": 3}'},f:["9"]}," ",{p:[15,6,1006],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=4?null:"disabled"'},p:[15,36,1036]}],style:[{t:2,x:{r:["data.setting"],s:'_0==4?"selected":null'},p:[15,89,1089]}],action:"setting",params:'{"amount": 4}'},f:["12"]}," ",{p:[16,6,1193],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=5?null:"disabled"'},p:[16,36,1223]}],style:[{t:2,x:{r:["data.setting"],s:'_0==5?"selected":null'},p:[16,89,1276]}],action:"setting",params:'{"amount": 5}'},f:["15"]}]}]}," ",{p:[19,3,1410],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[21,6,1476],t:7,e:"span",f:[{t:2,x:{r:["adata.TankCurrentVolume"],s:"Math.round(_0)"},p:[21,12,1482]},"/",{t:2,r:"data.TankMaxVolume",p:[21,52,1522]}," Units"]}," ",{p:[22,6,1564],t:7,e:"br"}," ",{p:[23,5,1575],t:7,e:"br"}," ",{t:4,f:[{p:[25,7,1623],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[25,50,1666]}," units of ",{t:2,r:"name",p:[25,85,1701]}]},{p:[25,100,1716],t:7,e:"br"}],n:52,r:"adata.TankContents",p:[24,6,1587]}],n:50,r:"data.isTankLoaded",p:[20,4,1444]},{t:4,n:51,f:[{p:[28,6,1757],t:7,e:"span",a:{"class":"bad"},f:["Tank Empty"]}],r:"data.isTankLoaded"}," ",{p:[30,4,1809],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?"Eject":"Close"'},p:[30,21,1826]}],style:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?"selected":null'},p:[31,12,1881]}],state:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?null:"disabled"'},p:[32,12,1936]}],action:"purge"},f:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?"Purge Contents":"No chemicals detected"'},p:[33,20,1999]}]}]}]}],n:50,x:{r:["data.screen"],s:'_0=="home"'},p:[1,2,1]}]},e.exports=a.extend(r.exports)},{341:341}],467:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{t:2,x:{r:["adata.generated"],s:"Math.round(_0)"},p:[3,5,73]},"W"]}," ",{p:[5,3,126],t:7,e:"ui-section",a:{label:"Orientation"},f:[{p:[6,5,164],t:7,e:"span",f:[{t:2,x:{r:["adata.angle"],s:"Math.round(_0)"},p:[6,11,170]},"° (",{t:2,r:"data.direction",p:[6,45,204]},")"]}]}," ",{p:[8,3,251],t:7,e:"ui-section",a:{label:"Adjust Angle"},f:[{p:[9,5,290],t:7,e:"ui-button",a:{icon:"step-backward",action:"angle",params:'{"adjust": -15}'},f:["15°"]}," ",{p:[10,5,387],t:7,e:"ui-button",a:{icon:"backward",action:"angle",params:'{"adjust": -5}'},f:["5°"]}," ",{p:[11,5,477],t:7,e:"ui-button",a:{icon:"forward",action:"angle",params:'{"adjust": 5}'},f:["5°"]}," ",{p:[12,5,565],t:7,e:"ui-button",a:{icon:"step-forward",action:"angle",params:'{"adjust": 15}'},f:["15°"]}]}]}," ",{p:[15,1,687],t:7,e:"ui-display",a:{title:"Tracking"},f:[{p:[16,3,720],t:7,e:"ui-section",a:{label:"Tracker Mode"},f:[{p:[17,5,759],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==0?"selected":null'},p:[17,36,790]}],action:"tracking",params:'{"mode": 0}'},f:["Off"]}," ",{p:[19,5,907],t:7,e:"ui-button",a:{icon:"clock-o",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==1?"selected":null'},p:[19,38,940]}],action:"tracking",params:'{"mode": 1}'},f:["Timed"]}," ",{p:[21,5,1059],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.connected_tracker","data.tracking_state"],s:'_0?_1==2?"selected":null:"disabled"'},p:[21,38,1092]}],action:"tracking",params:'{"mode": 2}'},f:["Auto"]}]}," ",{p:[24,3,1262],t:7,e:"ui-section",a:{label:"Tracking Rate"},f:[{p:[25,3,1300],t:7,e:"span",f:[{t:2,x:{r:["adata.tracking_rate"],s:"Math.round(_0)"},p:[25,9,1306]},"°/h (",{t:2,r:"data.rotating_way",p:[25,53,1350]},")"]}]}," ",{p:[27,3,1399],t:7,e:"ui-section",a:{label:"Adjust Rate"},f:[{p:[28,5,1437],t:7,e:"ui-button",a:{icon:"fast-backward",action:"rate",params:'{"adjust": -180}'},f:["180°"]}," ",{p:[29,5,1535],t:7,e:"ui-button",a:{icon:"step-backward",action:"rate",params:'{"adjust": -30}'},f:["30°"]}," ",{p:[30,5,1631],t:7,e:"ui-button",a:{icon:"backward",action:"rate",params:'{"adjust": -5}'},f:["5°"]}," ",{p:[31,5,1720],t:7,e:"ui-button",a:{icon:"forward",action:"rate",params:'{"adjust": 5}'},f:["5°"]}," ",{p:[32,5,1807],t:7,e:"ui-button",a:{icon:"step-forward",action:"rate",params:'{"adjust": 30}'},f:["30°"]}," ",{p:[33,5,1901],t:7,e:"ui-button",a:{icon:"fast-forward",action:"rate",params:'{"adjust": 180}'},f:["180°"]}]}]}," ",{p:{button:[{p:[38,5,2088],t:7,e:"ui-button",a:{icon:"refresh",action:"refresh"},f:["Refresh"]}]},t:7,e:"ui-display",a:{title:"Devices",button:0},f:[" ",{p:[40,2,2169],t:7,e:"ui-section",a:{label:"Solar Tracker"},f:[{p:[41,5,2209],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_tracker"],s:'_0?"good":"bad"'},p:[41,18,2222]}]},f:[{t:2,x:{r:["data.connected_tracker"],s:'_0?"":"Not "'},p:[41,63,2267]},"Found"]}]}," ",{p:[43,2,2338],t:7,e:"ui-section",a:{label:"Solar Panels"},f:[{p:[44,3,2375],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_panels"],s:'_0?"good":"bad"'},p:[44,16,2388]}]},f:[{t:2,x:{r:["adata.connected_panels"],s:"Math.round(_0)"},p:[44,60,2432]}," Panels Connected"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],468:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{t:4,f:[{p:[4,7,87],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.hasPowercell"],s:'_0?null:"disabled"'},p:[4,38,118]}],action:"eject"},f:["Eject"]}],n:50,r:"data.open",p:[3,5,62]}]},t:7,e:"ui-display",a:{title:"Power",button:0},f:[" ",{p:[7,3,226],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[8,5,258],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[8,22,275]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[9,14,326]}],state:[{t:2,x:{r:["data.hasPowercell"],s:'_0?null:"disabled"'},p:[9,54,366]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[10,22,431]}]}]}," ",{p:[12,3,490],t:7,e:"ui-section",a:{label:"Cell"},f:[{t:4,f:[{p:[14,7,554],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerLevel",p:[14,40,587]}]},f:[{t:2,x:{r:["adata.powerLevel"],s:"Math.fixed(_0)"},p:[14,61,608]},"%"]}],n:50,r:"data.hasPowercell",p:[13,5,521]},{t:4,n:51,f:[{p:[16,4,667],t:7,e:"span",a:{"class":"bad"},f:["No Cell"]}],r:"data.hasPowercell"}]}]}," ",{p:[20,1,744],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[21,3,779],t:7,e:"ui-section",a:{label:"Current Temperature"},f:[{p:[22,3,823],t:7,e:"span",f:[{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[22,9,829]},"°C"]}]}," ",{p:[24,2,894],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[25,3,937],t:7,e:"span",f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[25,9,943]},"°C"]}]}," ",{t:4,f:[{p:[28,5,1031],t:7,e:"ui-section",a:{label:"Adjust Target"},f:[{p:[29,7,1073],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[29,46,1112]}],action:"target",params:'{"adjust": -20}'}}," ",{p:[30,7,1218],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[30,41,1252]}],action:"target",params:'{"adjust": -5}'}}," ",{p:[31,7,1357],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "input"}'},f:["Set"]}," ",{p:[32,7,1450],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[32,40,1483]}],action:"target",params:'{"adjust": 5}'}}," ",{p:[33,7,1587],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[33,45,1625]}],action:"target",params:'{"adjust": 20}'}}]}],n:50,r:"data.open",p:[27,3,1008]}," ",{p:[36,3,1754],t:7,e:"ui-section",a:{label:"Mode"},f:[{t:4,f:[{p:[38,7,1808],t:7,e:"ui-button",a:{icon:"long-arrow-up",state:[{t:2,x:{r:["data.mode"],s:'_0=="heat"?"selected":null'},p:[38,46,1847]}],action:"mode",params:'{"mode": "heat"}'},f:["Heat"]}," ",{p:[39,7,1956],t:7,e:"ui-button",a:{icon:"long-arrow-down",state:[{t:2,x:{r:["data.mode"],s:'_0=="cool"?"selected":null'},p:[39,48,1997]}],action:"mode",params:'{"mode": "cool"}'},f:["Cool"]}," ",{p:[40,7,2106],t:7,e:"ui-button",a:{icon:"arrows-v",state:[{t:2,x:{r:["data.mode"],s:'_0=="auto"?"selected":null'},p:[40,41,2140]}],action:"mode",params:'{"mode": "auto"}'},f:["Auto"]}],n:50,r:"data.open",p:[37,3,1783]},{t:4,n:51,f:[{p:[42,4,2258],t:7,e:"span",f:[{t:2,x:{r:["text","data.mode"],s:"_0.titleCase(_1)"},p:[42,10,2264]}]}],r:"data.open"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],469:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:{button:[{p:[4,8,97],t:7,e:"ui-button",a:{action:"jump",params:['{"name" : ',{t:2,r:"name",p:[4,51,140]},"}"]},f:["Jump"]}," ",{p:[7,9,195],t:7,e:"ui-button",a:{action:"spawn",params:['{"name" : ',{t:2,r:"name",p:[7,53,239]},"}"]},f:["Spawn"]}]},t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[2,22,46]}],button:0},f:[" ",{p:[11,3,308],t:7,e:"ui-section",a:{label:"Description"},f:[{p:[12,5,346],t:7,e:"span",f:[{t:3,r:"desc",p:[12,11,352]}]}]}," ",{p:[14,3,390],t:7,e:"ui-section",a:{label:"Spawners left"},f:[{p:[15,5,430],t:7,e:"span",f:[{t:2,r:"amount_left",p:[15,11,436]}]}]}]}],n:52,r:"data.spawners",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{341:341}],470:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,31],t:7,e:"ui-display",a:{title:[{t:2,r:"class",p:[2,22,50]}," Alarms"]},f:[{p:[3,5,74],t:7,e:"ul",f:[{t:4,f:[{p:[5,9,107],t:7,e:"li",f:[{t:2,r:".",p:[5,13,111]}]}],n:52,r:".",p:[4,7,86]},{t:4,n:51,f:[{p:[7,9,147],t:7,e:"li",f:["System Nominal"]}],r:"."}]}]}],n:52,i:"class",r:"data.alarms",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{341:341}],471:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,42],t:7,e:"ui-notice",f:[{p:[3,5,59],t:7,e:"span",f:["Biological entity detected in contents. Please remove."]}]}],n:50,x:{r:["data.occupied","data.safeties"],s:"_0&&_1"},p:[1,1,0]},{t:4,f:[{p:[7,3,179],t:7,e:"ui-notice",f:[{p:[8,5,196],t:7,e:"span",f:["Contents are being disinfected. Please wait."]}]}],n:50,r:"data.uv_active",p:[6,1,153]},{t:4,n:51,f:[{p:{button:[{t:4,f:[{p:[13,25,369],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[13,42,386]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Unlock":"Lock"'},p:[13,93,437]}]}],n:50,x:{r:["data.open"],s:"!_0"},p:[13,7,351]}," ",{t:4,f:[{p:[14,27,519],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"sign-out":"sign-in"'},p:[14,44,536]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Close":"Open"'},p:[14,98,590]}]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[14,7,499]}]},t:7,e:"ui-display",a:{title:"Storage",button:0},f:[" ",{t:4,f:[{p:[17,7,692],t:7,e:"ui-notice",f:[{p:[18,9,713],t:7,e:"span",f:["Unit Locked"]}]}],n:50,r:"data.locked",p:[16,5,665]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.open"],s:"_0"},f:[{p:[21,9,793],t:7,e:"ui-section",a:{label:"Helmet"},f:[{p:[22,11,832],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.helmet"],s:'_0?"square":"square-o"'},p:[22,28,849]}],state:[{t:2,x:{r:["data.helmet"],s:'_0?null:"disabled"'},p:[22,75,896]}],action:"dispense",params:'{"item": "helmet"}'},f:[{t:2,x:{r:["data.helmet"],s:'_0||"Empty"'},p:[23,59,992]}]}]}," ",{p:[25,9,1063],t:7,e:"ui-section",a:{label:"Suit"},f:[{p:[26,11,1100],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.suit"],s:'_0?"square":"square-o"'},p:[26,28,1117]}],state:[{t:2,x:{r:["data.suit"],s:'_0?null:"disabled"'},p:[26,74,1163]}],action:"dispense",params:'{"item": "suit"}'},f:[{t:2,x:{r:["data.suit"],s:'_0||"Empty"'},p:[27,57,1255]}]}]}," ",{p:[29,9,1324],t:7,e:"ui-section",a:{label:"Mask"},f:[{p:[30,11,1361],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mask"],s:'_0?"square":"square-o"'},p:[30,28,1378]}],state:[{t:2,x:{r:["data.mask"],s:'_0?null:"disabled"'},p:[30,74,1424]}],action:"dispense",params:'{"item": "mask"}'},f:[{t:2,x:{r:["data.mask"],s:'_0||"Empty"'},p:[31,57,1516]}]}]}," ",{p:[33,9,1585],t:7,e:"ui-section",a:{label:"Storage"},f:[{p:[34,11,1625],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.storage"],s:'_0?"square":"square-o"'},p:[34,28,1642]}],state:[{t:2,x:{r:["data.storage"],s:'_0?null:"disabled"'},p:[34,77,1691]}],action:"dispense",params:'{"item": "storage"}'},f:[{t:2,x:{r:["data.storage"],s:'_0||"Empty"'},p:[35,60,1789]}]}]}]},{t:4,n:50,x:{r:["data.open"],s:"!(_0)"},f:[" ",{p:[38,7,1873],t:7,e:"ui-button",a:{icon:"recycle",state:[{t:2,x:{r:["data.occupied","data.safeties"],s:'_0&&_1?"disabled":null'},p:[38,40,1906]}],action:"uv"},f:["Disinfect"]}]}],r:"data.locked"}]}],r:"data.uv_active"}]},e.exports=a.extend(r.exports)},{341:341}],472:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,5,18],t:7,e:"ui-section",a:{label:"Dispense"},f:[{p:[3,9,57],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.plasma"],s:'_0?"square":"square-o"'},p:[3,26,74]}],state:[{t:2,x:{r:["data.plasma"],s:'_0?null:"disabled"'},p:[3,74,122]}],action:"plasma"},f:["Plasma (",{t:2,x:{r:["adata.plasma"],s:"Math.round(_0)"},p:[4,37,196]},")"]}," ",{p:[5,9,247],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.oxygen"],s:'_0?"square":"square-o"'},p:[5,26,264]}],state:[{t:2,x:{r:["data.oxygen"],s:'_0?null:"disabled"'},p:[5,74,312]}],action:"oxygen"},f:["Oxygen (",{t:2,x:{r:["adata.oxygen"],s:"Math.round(_0)"},p:[6,37,386]},")"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],473:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{tankPressureState:function(){var t=this.get("data.tankPressure");return t>=200?"good":t>=100?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[14,1,295],t:7,e:"ui-notice",f:[{p:[15,3,310],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.connected"],s:'_0?"is":"is not"'},p:[15,23,330]}," connected to a mask."]}]}," ",{p:[17,1,409],t:7,e:"ui-display",f:[{p:[18,3,425],t:7,e:"ui-section",a:{label:"Tank Pressure"},f:[{p:[19,7,467],t:7,e:"ui-bar",a:{min:"0",max:"1013",value:[{t:2,r:"data.tankPressure",p:[19,41,501]}],state:[{t:2,r:"tankPressureState",p:[20,16,540]}]},f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[20,39,563]}," kPa"]}]}," ",{p:[22,3,631],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[23,5,674],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[23,18,687]}],max:[{t:2,r:"data.maxReleasePressure",p:[23,52,721]}],value:[{t:2,r:"data.releasePressure",p:[24,14,764]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[24,40,790]}," kPa"]}]}," ",{p:[26,3,861],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[27,5,906],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[27,38,939]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[29,5,1095],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[29,36,1126]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[31,5,1273],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[32,5,1368],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[32,35,1398]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],474:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,5,33],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[3,9,75],t:7,e:"span",f:[{t:2,x:{r:["adata.temperature"],s:"Math.fixed(_0,2)"},p:[3,15,81]}," K"]}]}," ",{p:[5,5,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,9,190],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.fixed(_0,2)"},p:[6,15,196]}," kPa"]}]}]}," ",{p:[9,1,276],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[10,5,311],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[11,9,347],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[11,26,364]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[11,70,408]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[12,28,469]}]}]}," ",{p:[14,5,531],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[15,9,580],t:7,e:"ui-button",a:{icon:"fast-backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'},p:[15,48,619]}],action:"target",params:'{"adjust": -20}'}}," ",{p:[17,9,733],t:7,e:"ui-button",a:{icon:"backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'},p:[17,43,767]}],action:"target",params:'{"adjust": -5}'}}," ",{p:[19,9,880],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "input"}'},f:[{t:2,x:{r:["adata.target"],s:"Math.fixed(_0,2)"},p:[19,79,950]}]}," ",{p:[20,9,1003],t:7,e:"ui-button",a:{icon:"forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[20,42,1036]}],action:"target",params:'{"adjust": 5}'}}," ",{p:[22,9,1148],t:7,e:"ui-button",a:{icon:"fast-forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[22,47,1186]}],action:"target",params:'{"adjust": 20}'}}]}]}]},e.exports=a.extend(r.exports)},{341:341}],475:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{powerState:function(t){switch(t){case 1:return"good";default:return"bad"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[13,1,173],t:7,e:"ui-notice",f:[{p:[14,2,187],t:7,e:"ui-section",a:{label:"Reconnect"},f:[{p:[15,3,221],t:7,e:"div",a:{style:"float:right"},f:[{p:[16,4,251],t:7,e:"ui-button",a:{icon:"refresh",action:"reconnect"},f:["Reconnect"]}]}]}]}," ",{p:[20,1,359],t:7,e:"ui-display",a:{title:"Turbine Controller"},f:[{p:[21,2,401],t:7,e:"ui-section",a:{label:"Status"},f:[{t:4,f:[{p:[23,4,456],t:7,e:"span",a:{"class":"bad"},f:["Broken"]}],n:50,r:"data.broken",p:[22,3,432]},{t:4,n:51,f:[{p:[25,4,504],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.online"],s:"_0(_1)"},p:[25,17,517]}]},f:[{t:2,x:{r:["data.online","data.compressor_broke","data.turbine_broke"],s:'_0&&!(_1||_2)?"Online":"Offline"'},p:[25,46,546]}]}],r:"data.broken"}," ",{p:[27,3,656],t:7,e:"div",a:{style:"float:right"},f:[{p:[28,4,686],t:7,e:"ui-button",a:{icon:"power-off",action:"power-on",state:[{t:2,r:"data.broken",p:[28,57,739]}],style:[{t:2,x:{r:["data.online"],s:'_0?"selected":""'},p:[28,81,763]}]},f:["On"]}," ",{p:[29,4,817],t:7,e:"ui-button",a:{icon:"close",action:"power-off",state:[{t:2,r:"data.broken",p:[29,54,867]}],style:[{t:2,x:{r:["data.online"],s:'_0?"":"selected"'},p:[29,78,891]}]},f:["Off"]}]}," ",{t:4,f:[{p:[32,4,989],t:7,e:"br"}," [ ",{p:[33,6,1e3],t:7,e:"span",a:{"class":"bad"},f:["Compressor is inoperable"]}," ]"],n:50,r:"data.compressor_broke",p:[31,3,955]}," ",{t:4,f:[{p:[36,4,1097],t:7,e:"br"}," [ ",{p:[37,6,1108],t:7,e:"span",a:{"class":"bad"},f:["Turbine is inoperable"]}," ]"],n:50,r:"data.turbine_broke",p:[35,3,1066]}]}]}," ",{p:[41,1,1200],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[42,2,1230],t:7,e:"ui-section",a:{label:"Turbine Speed"},f:[{p:[43,3,1268],t:7,e:"span",f:[{t:2,x:{r:["data.broken","data.rpm"],s:'_0?"--":_1'},p:[43,9,1274]}," RPM"]}]}," ",{p:[45,2,1337],t:7,e:"ui-section",a:{label:"Internal Temp"},f:[{p:[46,3,1375],t:7,e:"span",f:[{t:2,x:{r:["data.broken","data.temp"],s:'_0?"--":_1'},p:[46,9,1381]}," K"]}]}," ",{p:[48,2,1443],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{p:[49,3,1483],t:7,e:"span",f:[{t:2,x:{r:["data.broken","data.power"],s:'_0?"--":_1'},p:[49,9,1489]}]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],476:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{},oninit:function(){this.on({hover:function(t){var e=this.get("data.telecrystals");e>=t.context.params.cost&&this.set("hovered",t.context.params)},unhover:function(t){this.set("hovered")}})}}}(r),r.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[23,7,482],t:7,e:"ui-button",a:{icon:"lock",action:"lock"},f:["Lock"]}],n:50,r:"data.lockable",p:[22,5,453]}]},t:7,e:"ui-display",a:{title:"Uplink",button:0},f:[" ",{p:[26,3,568],t:7,e:"ui-section",a:{label:"Telecrystals",right:0},f:[{p:[27,5,613],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.telecrystals"],s:'_0>0?"good":"bad"'},p:[27,18,626]}]},f:[{t:2,r:"data.telecrystals",p:[27,62,670]}," TC"]}]}]}," ",{t:4,f:[{p:[31,3,764],t:7,e:"ui-display",f:[{p:[32,2,779],t:7,e:"ui-button",a:{action:"select",params:['{"category": "',{t:2,r:"name",p:[32,51,828]},'"}']},f:[{t:2,r:"name",p:[32,63,840]}]}," ",{t:4,f:[{p:[34,4,883],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[34,23,902]}],candystripe:0,right:0},f:[{p:[35,3,934],t:7,e:"ui-button",a:{tooltip:[{t:2,r:"name",p:[35,23,954]},": ",{t:2,r:"desc",p:[35,33,964]}],"tooltip-side":"left",state:[{t:2,x:{r:["data.telecrystals","hovered.cost","cost","hovered.item","name"],s:'_0<_2||(_0-_1<_2&&_3!=_4)?"disabled":null'},p:[36,12,1006]}],action:"buy",params:['{"category": "',{t:2,r:"category",p:[37,40,1165]},'", "item": ',{t:2,r:"name",p:[37,63,1188]},', "cost": ',{t:2,r:"cost",p:[37,81,1206]},"}"]},v:{hover:"hover",unhover:"unhover"},f:[{t:2,r:"cost",p:[38,43,1260]}," TC"]}]}],n:52,r:"items",p:[33,2,863]}]}],n:52,r:"data.categories",p:[30,1,735]}]},e.exports=a.extend(r.exports)},{341:341}],477:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{healthState:function(t){var e=this.get("data.vr_avatar.maxhealth");return t>e/1.5?"good":t>e/3?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[14,1,292],t:7,e:"ui-display",f:[{t:4,f:[{p:[16,3,331],t:7,e:"ui-notice",f:[{p:[17,4,347],t:7,e:"span",f:["Safety restraints disabled."]}]}],n:50,r:"data.emagged",p:[15,2,307]}," ",{t:4,f:[{p:[21,3,442],t:7,e:"ui-display",a:{title:"Virtual Avatar"},f:[{p:[22,4,482],t:7,e:"ui-section",a:{label:"Name"},f:[{t:2,r:"data.vr_avatar.name",p:[23,5,513]}]}," ",{p:[25,4,559],t:7,e:"ui-section",a:{label:"Status"},f:[{t:2,r:"data.vr_avatar.status",p:[26,5,592]}]}," ",{p:[28,4,640],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[29,5,673],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.vr_avatar.maxhealth",p:[29,26,694]}],value:[{t:2,r:"adata.vr_avatar.health",p:[29,64,732]}],state:[{t:2,x:{r:["healthState","adata.vr_avatar.health"],s:"_0(_1)"},p:[29,99,767]}]},f:[{t:2,x:{r:["adata.vr_avatar.health"],s:"Math.round(_0)"},p:[29,140,808]},"/",{t:2,r:"adata.vr_avatar.maxhealth",p:[29,179,847]}]}]}]}],n:50,r:"data.vr_avatar",p:[20,2,416]},{t:4,n:51,f:[{p:[33,3,935],t:7,e:"ui-display",a:{title:"Virtual Avatar"},f:["No Virtual Avatar detected"]}],r:"data.vr_avatar"}," ",{p:[37,2,1031],t:7,e:"ui-display",a:{title:"VR Commands"},f:[{p:[38,3,1067],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.toggle_open"],s:'_0?"times":"plus"'},p:[38,20,1084]}],action:"toggle_open"},f:[{t:2,x:{r:["data.toggle_open"],s:'_0?"Close":"Open"'},p:[39,4,1151]}," the VR Sleeper"]}," ",{t:4,f:[{p:[42,4,1253],t:7,e:"ui-button",a:{icon:"signal",action:"vr_connect"},f:["Connect to VR"]}],n:50,r:"data.isoccupant",p:[41,3,1225]}," ",{t:4,f:[{p:[47,4,1376],t:7,e:"ui-button",a:{icon:"ban",action:"delete_avatar"},f:["Delete Virtual Avatar"]}],n:50,r:"data.vr_avatar",p:[46,3,1349]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],478:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{t:4, -f:[{p:[3,5,42],t:7,e:"ui-section",a:{label:[{t:2,r:"color",p:[3,24,61]},{t:2,x:{r:["wire"],s:'_0?" ("+_0+")":""'},p:[3,33,70]}],labelcolor:[{t:2,r:"color",p:[3,80,117]}],candystripe:0,right:0},f:[{p:[4,7,154],t:7,e:"ui-button",a:{action:"cut",params:['{"wire":"',{t:2,r:"color",p:[4,48,195]},'"}']},f:[{t:2,x:{r:["cut"],s:'_0?"Mend":"Cut"'},p:[4,61,208]}]}," ",{p:[5,7,252],t:7,e:"ui-button",a:{action:"pulse",params:['{"wire":"',{t:2,r:"color",p:[5,50,295]},'"}']},f:["Pulse"]}," ",{p:[6,7,333],t:7,e:"ui-button",a:{action:"attach",params:['{"wire":"',{t:2,r:"color",p:[6,51,377]},'"}']},f:[{t:2,x:{r:["attached"],s:'_0?"Detach":"Attach"'},p:[6,64,390]}]}]}],n:52,r:"data.wires",p:[2,3,16]}]}," ",{t:4,f:[{p:[11,3,508],t:7,e:"ui-display",f:[{t:4,f:[{p:[13,7,555],t:7,e:"ui-section",f:[{t:2,r:".",p:[13,19,567]}]}],n:52,r:"data.status",p:[12,5,526]}]}],n:50,r:"data.status",p:[10,1,485]}]},e.exports=a.extend(r.exports)},{341:341}],479:[function(t,e,n){(function(e){"use strict";var n=t(341),a=e.interopRequireDefault(n);t(331),t(1),t(327),t(330);var r=t(480),i=e.interopRequireDefault(r),o=t(481),s=t(328),p=t(329),u=e.interopRequireDefault(p);a["default"].DEBUG=/minified/.test(function(){}),Object.assign(Math,t(485)),window.initialize=function(e){window.tgui=window.tgui||new i["default"]({el:"#container",data:function(){var n=JSON.parse(e);return{constants:t(482),text:t(486),config:n.config,data:n.data,adata:n.data}}})};var c=document.getElementById("data"),l=c.textContent,d=c.getAttribute("data-ref");"{}"!==l&&(window.initialize(l),c.remove()),(0,o.act)(d,"tgui:initialize"),(0,s.loadCSS)("font-awesome.min.css");var f=new u["default"]("FontAwesome");f.check("").then(function(){return document.body.classList.add("icons")})["catch"](function(){return document.body.classList.add("no-icons")})}).call(this,t("babel/external-helpers"))},{1:1,327:327,328:328,329:329,330:330,331:331,341:341,480:480,481:481,482:482,485:485,486:486,"babel/external-helpers":"babel/external-helpers"}],480:[function(t,e,n){var a=t(341),r={exports:{}};!function(e){"use strict";var n=t(481),a=t(483);e.exports={components:{"ui-bar":t(342),"ui-button":t(343),"ui-display":t(344),"ui-input":t(345),"ui-linegraph":t(346),"ui-notice":t(347),"ui-section":t(349),"ui-subdisplay":t(350),"ui-tabs":t(351)},events:{enter:t(339).enter,space:t(339).space},transitions:{fade:t(340)},onconfig:function(){var e=this.get("config.interface"),n={ai_airlock:t(355),airalarm:t(356),"airalarm/back":t(357),"airalarm/modes":t(358),"airalarm/scrubbers":t(359),"airalarm/status":t(360),"airalarm/thresholds":t(361),"airalarm/vents":t(362),airlock_electronics:t(363),apc:t(364),atmos_alert:t(365),atmos_control:t(366),atmos_filter:t(367),atmos_mixer:t(368),atmos_pump:t(369),borgopanel:t(370),brig_timer:t(371),bsa:t(372),canister:t(373),cargo:t(374),cargo_express:t(375),cellular_emporium:t(376),centcom_podlauncher:t(377),chem_dispenser:t(378),chem_heater:t(379),chem_master:t(380),chem_synthesizer:t(381),clockwork_slab:t(382),codex_gigas:t(383),computer_fabricator:t(384),crayon:t(385),crew:t(386),cryo:t(387),disposal_unit:t(388),dna_vault:t(389),dogborg_sleeper:t(390),eightball:t(391),emergency_shuttle_console:t(392),engraved_message:t(393),error:t(394),"exofab - Copia":t(395),exonet_node:t(396),firealarm:t(397),gps:t(398),gulag_console:t(399),gulag_item_reclaimer:t(400),holodeck:t(401),implantchair:t(402),intellicard:t(403),keycard_auth:t(404),labor_claim_console:t(405),language_menu:t(406),launchpad_remote:t(407),mech_bay_power_console:t(408),mulebot:t(409),nanite_chamber_control:t(410),nanite_cloud_control:t(411),nanite_program_hub:t(412),nanite_programmer:t(413),nanite_remote:t(414),notificationpanel:t(415),ntnet_relay:t(416),ntos_ai_restorer:t(417),ntos_card:t(418),ntos_configuration:t(419),ntos_file_manager:t(420),ntos_main:t(421),ntos_net_chat:t(422),ntos_net_dos:t(423),ntos_net_downloader:t(424),ntos_net_monitor:t(425),ntos_net_transfer:t(426),ntos_power_monitor:t(427),ntos_revelation:t(428),ntos_station_alert:t(429),ntos_supermatter_monitor:t(430),ntosheader:t(431),nuclear_bomb:t(432),operating_computer:t(433),ore_redemption_machine:t(434),pandemic:t(435),personal_crafting:t(436),portable_pump:t(437),portable_scrubber:t(438),power_monitor:t(439),radio:t(440),rdconsole:t(441),"rdconsole/circuit":t(442),"rdconsole/designview":t(443),"rdconsole/destruct":t(444),"rdconsole/diskopsdesign":t(445),"rdconsole/diskopstech":t(446),"rdconsole/nodeview":t(447),"rdconsole/protolathe":t(448),"rdconsole/rdheader":t(449),"rdconsole/settings":t(450),"rdconsole/techweb":t(451),reagentgrinder:t(452),rpd:t(453),"rpd/colorsel":t(454),"rpd/dirsel":t(455),sat_control:t(456),scrubbing_types:t(457),shuttle_manipulator:t(458),"shuttle_manipulator/modification":t(459),"shuttle_manipulator/status":t(460),"shuttle_manipulator/templates":t(461),sleeper:t(462),slime_swap_body:t(463),smartvend:t(464),smes:t(465),smoke_machine:t(466),solar_control:t(467),space_heater:t(468),spawners_menu:t(469),station_alert:t(470),suit_storage_unit:t(471),tank_dispenser:t(472),tanks:t(473),thermomachine:t(474),turbine_computer:t(475),uplink:t(476),vr_sleeper:t(477),wires:t(478)};e in n?this.components["interface"]=n[e]:this.components["interface"]=n.error},oninit:function(){this.observe("config.style",function(t,e,n){t&&document.body.classList.add(t),e&&document.body.classList.remove(e)})},oncomplete:function(){if(this.get("config.locked")){var t=(0,a.lock)(window.screenLeft,window.screenTop),e=t.x,r=t.y;(0,n.winset)(this.get("config.window"),"pos",e+","+r)}(0,n.winset)("mapwindow.map","focus",!0)}}}(r),r.exports.template={v:3,t:[" "," "," "," ",{p:[56,1,1874],t:7,e:"titlebar",f:[{t:3,r:"config.title",p:[56,11,1884]}]}," ",{p:[57,1,1915],t:7,e:"main",f:[{p:[58,3,1925],t:7,e:"warnings"}," ",{p:[59,3,1940],t:7,e:"interface"}]}," ",{t:4,f:[{p:[62,3,1990],t:7,e:"resize"}],n:50,r:"config.titlebar",p:[61,1,1963]}]},r.exports.components=r.exports.components||{};var i={warnings:t(354),titlebar:t(353),resize:t(348)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{339:339,340:340,341:341,342:342,343:343,344:344,345:345,346:346,347:347,348:348,349:349,350:350,351:351,353:353,354:354,355:355,356:356,357:357,358:358,359:359,360:360,361:361,362:362,363:363,364:364,365:365,366:366,367:367,368:368,369:369,370:370,371:371,372:372,373:373,374:374,375:375,376:376,377:377,378:378,379:379,380:380,381:381,382:382,383:383,384:384,385:385,386:386,387:387,388:388,389:389,390:390,391:391,392:392,393:393,394:394,395:395,396:396,397:397,398:398,399:399,400:400,401:401,402:402,403:403,404:404,405:405,406:406,407:407,408:408,409:409,410:410,411:411,412:412,413:413,414:414,415:415,416:416,417:417,418:418,419:419,420:420,421:421,422:422,423:423,424:424,425:425,426:426,427:427,428:428,429:429,430:430,431:431,432:432,433:433,434:434,435:435,436:436,437:437,438:438,439:439,440:440,441:441,442:442,443:443,444:444,445:445,446:446,447:447,448:448,449:449,450:450,451:451,452:452,453:453,454:454,455:455,456:456,457:457,458:458,459:459,460:460,461:461,462:462,463:463,464:464,465:465,466:466,467:467,468:468,469:469,470:470,471:471,472:472,473:473,474:474,475:475,476:476,477:477,478:478,481:481,483:483}],481:[function(t,e,n){"use strict";function a(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"byond://"+e+"?"+Object.keys(t).map(function(e){return o(e)+"="+o(t[e])}).join("&")}function r(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};window.location.href=a(Object.assign({src:t,action:e},n))}function i(t,e,n){var r;window.location.href=a((r={},r[t+"."+e]=n,r),"winset")}n.__esModule=!0,n.href=a,n.act=r,n.winset=i;var o=encodeURIComponent},{}],482:[function(t,e,n){"use strict";n.__esModule=!0;n.UI_INTERACTIVE=2,n.UI_UPDATE=1,n.UI_DISABLED=0,n.UI_CLOSE=-1},{}],483:[function(t,e,n){"use strict";function a(t,e){return 0>t?t=0:t+window.innerWidth>window.screen.availWidth&&(t=window.screen.availWidth-window.innerWidth),0>e?e=0:e+window.innerHeight>window.screen.availHeight&&(e=window.screen.availHeight-window.innerHeight),{x:t,y:e}}function r(t){if(t.preventDefault(),this.get("drag")){if(this.get("x")){var e=t.screenX-this.get("x")+window.screenLeft,n=t.screenY-this.get("y")+window.screenTop;if(this.get("config.locked")){var r=a(e,n);e=r.x,n=r.y}(0,s.winset)(this.get("config.window"),"pos",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}function i(t,e){return t=Math.clamp(100,window.screen.width,t),e=Math.clamp(100,window.screen.height,e),{x:t,y:e}}function o(t){if(t.preventDefault(),this.get("resize")){if(this.get("x")){var e=t.screenX-this.get("x")+window.innerWidth,n=t.screenY-this.get("y")+window.innerHeight,a=i(e,n);e=a.x,n=a.y,(0,s.winset)(this.get("config.window"),"size",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}n.__esModule=!0,n.lock=a,n.drag=r,n.sane=i,n.resize=o;var s=t(481)},{481:481}],484:[function(t,e,n){"use strict";function a(t,e){for(var n=t,a=Array.isArray(n),i=0,n=a?n:n[Symbol.iterator]();;){var o;if(a){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var s=o;s.textContent.toLowerCase().includes(e)?(s.style.display="",r(s,e)):s.style.display="none"}}function r(t,e){for(var n=t.queryAll("section"),a=t.query("header").textContent.toLowerCase().includes(e),r=n,i=Array.isArray(r),o=0,r=i?r:r[Symbol.iterator]();;){var s;if(i){if(o>=r.length)break;s=r[o++]}else{if(o=r.next(),o.done)break;s=o.value}var p=s;a||p.textContent.toLowerCase().includes(e)?p.style.display="":p.style.display="none"}}n.__esModule=!0,n.filterMulti=a,n.filter=r},{}],485:[function(t,e,n){"use strict";function a(t,e,n){return Math.max(t,Math.min(n,e))}function r(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return+(Math.round(t+"e"+e)+"e-"+e)}n.__esModule=!0,n.clamp=a,n.fixed=r},{}],486:[function(t,e,n){"use strict";function a(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()}function r(t){return t.replace(/\w\S*/g,a)}function i(t,e){for(t=""+t;t.length1){for(var p=Array(o),u=0;o>u;u++)p[u]=arguments[u+3];n.children=p}return{$$typeof:t,type:e,key:void 0===a?null:""+a,ref:null,props:n,_owner:null}}}(),e.asyncIterator=function(t){if("function"==typeof Symbol){if(Symbol.asyncIterator){var e=t[Symbol.asyncIterator];if(null!=e)return e.call(t)}if(Symbol.iterator)return t[Symbol.iterator]()}throw new TypeError("Object is not async iterable")},e.asyncGenerator=function(){function t(t){this.value=t}function e(e){function n(t,e){return new Promise(function(n,r){var s={key:t,arg:e,resolve:n,reject:r,next:null};o?o=o.next=s:(i=o=s,a(t,e))})}function a(n,i){try{var o=e[n](i),s=o.value;s instanceof t?Promise.resolve(s.value).then(function(t){a("next",t)},function(t){a("throw",t)}):r(o.done?"return":"normal",o.value)}catch(p){r("throw",p)}}function r(t,e){switch(t){case"return":i.resolve({value:e,done:!0});break;case"throw":i.reject(e);break;default:i.resolve({value:e,done:!1})}i=i.next,i?a(i.key,i.arg):o=null}var i,o;this._invoke=n,"function"!=typeof e["return"]&&(this["return"]=void 0)}return"function"==typeof Symbol&&Symbol.asyncIterator&&(e.prototype[Symbol.asyncIterator]=function(){return this}),e.prototype.next=function(t){return this._invoke("next",t)},e.prototype["throw"]=function(t){return this._invoke("throw",t)},e.prototype["return"]=function(t){return this._invoke("return",t)},{wrap:function(t){return function(){return new e(t.apply(this,arguments))}},await:function(e){return new t(e)}}}(),e.asyncGeneratorDelegate=function(t,e){function n(n,a){return r=!0,a=new Promise(function(e){e(t[n](a))}),{done:!1,value:e(a)}}var a={},r=!1;return"function"==typeof Symbol&&Symbol.iterator&&(a[Symbol.iterator]=function(){return this}),a.next=function(t){return r?(r=!1,t):n("next",t)},"function"==typeof t["throw"]&&(a["throw"]=function(t){if(r)throw r=!1,t;return n("throw",t)}),"function"==typeof t["return"]&&(a["return"]=function(t){return n("return",t)}),a},e.asyncToGenerator=function(t){return function(){var e=t.apply(this,arguments);return new Promise(function(t,n){function a(r,i){try{var o=e[r](i),s=o.value}catch(p){return void n(p)}return o.done?void t(s):Promise.resolve(s).then(function(t){a("next",t)},function(t){a("throw",t)})}return a("next")})}},e.classCallCheck=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},e.createClass=function(){function t(t,e){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=t[a]);return n},e.possibleConstructorReturn=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e},e.selfGlobal=void 0===t?self:t,e.set=function a(t,e,n,r){var i=Object.getOwnPropertyDescriptor(t,e);if(void 0===i){var o=Object.getPrototypeOf(t);null!==o&&a(o,e,n,r)}else if("value"in i&&i.writable)i.value=n;else{var s=i.set;void 0!==s&&s.call(r,n)}return n},e.slicedToArray=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),e.slicedToArrayLoose=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){for(var n,a=[],r=t[Symbol.iterator]();!(n=r.next()).done&&(a.push(n.value),!e||a.length!==e););return a}throw new TypeError("Invalid attempt to destructure non-iterable instance")},e.taggedTemplateLiteral=function(t,e){return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))},e.taggedTemplateLiteralLoose=function(t,e){return t.raw=e,t},e.temporalRef=function(t,e,n){if(t===n)throw new ReferenceError(e+" is not defined - temporal dead zone");return t},e.temporalUndefined={},e.toArray=function(t){return Array.isArray(t)?t:Array.from(t)},e.toConsumableArray=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"byond://"+e+"?"+Object.keys(t).map(function(e){return o(e)+"="+o(t[e])}).join("&")}function r(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};window.location.href=a(Object.assign({src:t,action:e},n))}function i(t,e,n){var r;window.location.href=a((r={},r[t+"."+e]=n,r),"winset")}n.__esModule=!0,n.href=a,n.act=r,n.winset=i;var o=encodeURIComponent},{}],482:[function(t,e,n){"use strict";n.__esModule=!0;n.UI_INTERACTIVE=2,n.UI_UPDATE=1,n.UI_DISABLED=0,n.UI_CLOSE=-1},{}],483:[function(t,e,n){"use strict";function a(t,e){return 0>t?t=0:t+window.innerWidth>window.screen.availWidth&&(t=window.screen.availWidth-window.innerWidth),0>e?e=0:e+window.innerHeight>window.screen.availHeight&&(e=window.screen.availHeight-window.innerHeight),{x:t,y:e}}function r(t){if(t.preventDefault(),this.get("drag")){if(this.get("x")){var e=t.screenX-this.get("x")+window.screenLeft,n=t.screenY-this.get("y")+window.screenTop;if(this.get("config.locked")){var r=a(e,n);e=r.x,n=r.y}(0,s.winset)(this.get("config.window"),"pos",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}function i(t,e){return t=Math.clamp(100,window.screen.width,t),e=Math.clamp(100,window.screen.height,e),{x:t,y:e}}function o(t){if(t.preventDefault(),this.get("resize")){if(this.get("x")){var e=t.screenX-this.get("x")+window.innerWidth,n=t.screenY-this.get("y")+window.innerHeight,a=i(e,n);e=a.x,n=a.y,(0,s.winset)(this.get("config.window"),"size",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}n.__esModule=!0,n.lock=a,n.drag=r,n.sane=i,n.resize=o;var s=t(481)},{481:481}],484:[function(t,e,n){"use strict";function a(t,e){for(var n=t,a=Array.isArray(n),i=0,n=a?n:n[Symbol.iterator]();;){var o;if(a){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var s=o;s.textContent.toLowerCase().includes(e)?(s.style.display="",r(s,e)):s.style.display="none"}}function r(t,e){for(var n=t.queryAll("section"),a=t.query("header").textContent.toLowerCase().includes(e),r=n,i=Array.isArray(r),o=0,r=i?r:r[Symbol.iterator]();;){var s;if(i){if(o>=r.length)break;s=r[o++]}else{if(o=r.next(),o.done)break;s=o.value}var p=s;a||p.textContent.toLowerCase().includes(e)?p.style.display="":p.style.display="none"}}n.__esModule=!0,n.filterMulti=a,n.filter=r},{}],485:[function(t,e,n){"use strict";function a(t,e,n){return Math.max(t,Math.min(n,e))}function r(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return+(Math.round(t+"e"+e)+"e-"+e)}n.__esModule=!0,n.clamp=a,n.fixed=r},{}],486:[function(t,e,n){"use strict";function a(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()}function r(t){return t.replace(/\w\S*/g,a)}function i(t,e){for(t=""+t;t.length1){for(var p=Array(o),u=0;o>u;u++)p[u]=arguments[u+3];n.children=p}return{$$typeof:t,type:e,key:void 0===a?null:""+a,ref:null,props:n,_owner:null}}}(),e.asyncIterator=function(t){if("function"==typeof Symbol){if(Symbol.asyncIterator){var e=t[Symbol.asyncIterator];if(null!=e)return e.call(t)}if(Symbol.iterator)return t[Symbol.iterator]()}throw new TypeError("Object is not async iterable")},e.asyncGenerator=function(){function t(t){this.value=t}function e(e){function n(t,e){return new Promise(function(n,r){var s={key:t,arg:e,resolve:n,reject:r,next:null};o?o=o.next=s:(i=o=s,a(t,e))})}function a(n,i){try{var o=e[n](i),s=o.value;s instanceof t?Promise.resolve(s.value).then(function(t){a("next",t)},function(t){a("throw",t)}):r(o.done?"return":"normal",o.value)}catch(p){r("throw",p)}}function r(t,e){switch(t){case"return":i.resolve({value:e,done:!0});break;case"throw":i.reject(e);break;default:i.resolve({value:e,done:!1})}i=i.next,i?a(i.key,i.arg):o=null}var i,o;this._invoke=n,"function"!=typeof e["return"]&&(this["return"]=void 0)}return"function"==typeof Symbol&&Symbol.asyncIterator&&(e.prototype[Symbol.asyncIterator]=function(){return this}),e.prototype.next=function(t){return this._invoke("next",t)},e.prototype["throw"]=function(t){return this._invoke("throw",t)},e.prototype["return"]=function(t){return this._invoke("return",t)},{wrap:function(t){return function(){return new e(t.apply(this,arguments))}},await:function(e){return new t(e)}}}(),e.asyncGeneratorDelegate=function(t,e){function n(n,a){return r=!0,a=new Promise(function(e){e(t[n](a))}),{done:!1,value:e(a)}}var a={},r=!1;return"function"==typeof Symbol&&Symbol.iterator&&(a[Symbol.iterator]=function(){return this}),a.next=function(t){return r?(r=!1,t):n("next",t)},"function"==typeof t["throw"]&&(a["throw"]=function(t){if(r)throw r=!1,t;return n("throw",t)}),"function"==typeof t["return"]&&(a["return"]=function(t){return n("return",t)}),a},e.asyncToGenerator=function(t){return function(){var e=t.apply(this,arguments);return new Promise(function(t,n){function a(r,i){try{var o=e[r](i),s=o.value}catch(p){return void n(p)}return o.done?void t(s):Promise.resolve(s).then(function(t){a("next",t)},function(t){a("throw",t)})}return a("next")})}},e.classCallCheck=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},e.createClass=function(){function t(t,e){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=t[a]);return n},e.possibleConstructorReturn=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e},e.selfGlobal=void 0===t?self:t,e.set=function a(t,e,n,r){var i=Object.getOwnPropertyDescriptor(t,e);if(void 0===i){var o=Object.getPrototypeOf(t);null!==o&&a(o,e,n,r)}else if("value"in i&&i.writable)i.value=n;else{var s=i.set;void 0!==s&&s.call(r,n)}return n},e.slicedToArray=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),e.slicedToArrayLoose=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){for(var n,a=[],r=t[Symbol.iterator]();!(n=r.next()).done&&(a.push(n.value),!e||a.length!==e););return a}throw new TypeError("Invalid attempt to destructure non-iterable instance")},e.taggedTemplateLiteral=function(t,e){return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))},e.taggedTemplateLiteralLoose=function(t,e){return t.raw=e,t},e.temporalRef=function(t,e,n){if(t===n)throw new ReferenceError(e+" is not defined - temporal dead zone");return t},e.temporalUndefined={},e.toArray=function(t){return Array.isArray(t)?t:Array.from(t)},e.toConsumableArray=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e Date: Sun, 4 Aug 2019 04:07:44 -0500 Subject: [PATCH 073/469] bug blood, ipc/slime hearts, blood gen protolathe we're all gucchi now boys --- code/game/atoms.dm | 6 +++-- code/game/objects/items.dm | 1 + code/modules/mob/living/blood.dm | 3 ++- .../carbon/human/species_types/flypeople.dm | 1 + .../carbon/human/species_types/jellypeople.dm | 1 + .../carbon/human/species_types/mothmen.dm | 1 + code/modules/mob/mob_helpers.dm | 2 ++ .../chemistry/reagents/other_reagents.dm | 10 ++++----- .../machine_designs_medical.dm | 8 +++++++ code/modules/research/techweb/all_nodes.dm | 2 +- code/modules/surgery/organs/heart.dm | 21 +++++++++++++++++- icons/obj/surgery.dmi | Bin 34848 -> 34842 bytes .../carbon/human/species_types/furrypeople.dm | 1 + .../living/carbon/human/species_types/ipc.dm | 1 + 14 files changed, 48 insertions(+), 10 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index cb3be24598..71e06abd15 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -394,8 +394,10 @@ blood_splatter_icon = icon(initial(icon), initial(icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) blood_splatter_icon.Blend(icon('icons/effects/blood.dmi', "itemblood"), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant - blood_splatter_icon.Blend(blood_DNA_to_color(), ICON_MULTIPLY) - add_overlay(blood_splatter_icon) + + blood_overlay = image(blood_splatter_icon) + blood_overlay.color = blood_DNA_to_color() + add_overlay(blood_overlay) /obj/item/clothing/gloves/add_blood(mob/living/carbon/M) . = ..() diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index e851140252..38466c232e 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -113,6 +113,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) //Blood overlay things var/blood_color + var/image/blood_overlay = null //this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite /obj/item/Initialize() diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 60bd1477f9..25c91cc9ca 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -262,7 +262,8 @@ "HF" = list("HF", "SY"), "X*" = list("X*", "SY"), "SY" = list("SY"), - "GEL" = list("GEL","SY") + "GEL" = list("GEL","SY"), + "BUG" = list("BUG", "SY") ) var/safe = bloodtypes_safe[bloodtype] diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 6f05eb393d..4d3bbecdaa 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -10,6 +10,7 @@ meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/fly disliked_food = null liked_food = GROSS + exotic_bloodtype = "BUG" /datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) if(chem.id == "pestkiller") diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index a04f6030e6..750491f1d6 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -6,6 +6,7 @@ say_mod = "chirps" species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR) mutantlungs = /obj/item/organ/lungs/slime + mutant_heart = /obj/item/organ/heart/slime mutant_bodyparts = list("mam_tail", "mam_ears", "mam_snouts", "taur") //CIT CHANGE default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_snouts" = "None", "taur" = "None") //CIT CHANGE inherent_traits = list(TRAIT_TOXINLOVER) diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index d15d989384..2b1d6cb5db 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -15,6 +15,7 @@ disliked_food = FRUIT | GROSS toxic_food = MEAT | RAW mutanteyes = /obj/item/organ/eyes/moth + exotic_bloodtype = "BUG" /datum/species/moth/on_species_gain(mob/living/carbon/C) . = ..() diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index b5f479ba98..9e5c9c26c4 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -502,4 +502,6 @@ It's fairly easy to fix if dealing with single letters but not so much with comp . = BLOOD_COLOR_OIL if("GEL")// slimepeople blood, rgb 0, 255, 144 . = BLOOD_COLOR_SLIME + if("BUG") + . = "#a37c0f" //add more stuff to the switch if you have more blood colors for different types diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index ff80fb88cf..e0a42147e2 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -30,13 +30,13 @@ if(C.get_blood_id() == bluhduh) if(method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits))) if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type))) - C.reagents.add_reagent("toxin", reac_volume * 0.5) + C.reagents.add_reagent("bonehurtingjuice", reac_volume * 0.5) if(data && (data["blood_type"] == "GEL") && (C.dna.species.exotic_blood != "jellyblood")) - C.reagents.add_reagent("toxin", reac_volume * 1.5) //filthy xenos bloooood + C.reagents.add_reagent("bonehurtingjuice", reac_volume * 1.5) //filthy xenos bloooood if(data && (data["blood_type"] == "HF") && (C.dna.species.exotic_blood != "oilblood")) - C.reagents.add_reagent("toxin", reac_volume * 1) //don't fucking put oil in people + C.reagents.add_reagent("bonehurtingjuice", reac_volume * 1) //don't drink oil, silly vampire if(data && (data["blood_type"] == "X*") && (C.dna.species.exotic_blood != "xenoblood")) - C.reagents.add_reagent("toxin", reac_volume * 1.5) //acid blooood + C.reagents.add_reagent("sacid", reac_volume * 1.5) //acid blooood, dumb vampire else C.blood_volume = min(C.blood_volume + round(reac_volume, 0.1), BLOOD_VOLUME_MAXIMUM) @@ -465,7 +465,7 @@ //We only get 30u to start with... /datum/reagent/fuel/holyoil/reaction_obj(obj/O, reac_volume) - . = ..() + . = ..() if(istype(O, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = O reac_volume = min(reac_volume, M.amount) diff --git a/code/modules/research/designs/machine_desings/machine_designs_medical.dm b/code/modules/research/designs/machine_desings/machine_designs_medical.dm index 65b3d74f71..2f95954e01 100644 --- a/code/modules/research/designs/machine_desings/machine_designs_medical.dm +++ b/code/modules/research/designs/machine_desings/machine_designs_medical.dm @@ -89,3 +89,11 @@ departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_ENGINEERING build_path = /obj/item/circuitboard/machine/clonescanner category = list("Medical Machinery") + +/datum/design/board/bloodbankgen + name = "Machine Design (Blood Bank Generator Board)" + desc = "The circuit board for a blood bank generator." + id = "bloodbankgen" + build_path = /obj/item/circuitboard/machine/bloodbankgen + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + category = list ("Medical Machinery") diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index c6487c92f0..10ee1674f1 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -60,7 +60,7 @@ display_name = "Biological Technology" description = "What makes us tick." //the MC, silly! prereq_ids = list("base") - design_ids = list("medicalkit", "chem_heater", "chem_master", "chem_dispenser", "sleeper", "vr_sleeper", "pandemic", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "blood_bag") + design_ids = list("medicalkit", "chem_heater", "chem_master", "chem_dispenser", "sleeper", "vr_sleeper", "pandemic", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "blood_bag", "bloodbankgen") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index 5852cba0c9..4568f85c88 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -45,7 +45,7 @@ /obj/item/organ/heart/prepare_eat() var/obj/S = ..() - S.icon_state = "heart-off" + S.icon_state = "[icon_base]-off" return S /obj/item/organ/heart/on_life() @@ -70,6 +70,12 @@ H.stop_sound_channel(CHANNEL_HEARTBEAT) beat = BEAT_NONE +obj/item/organ/heart/slime + name = "slime heart" + desc = "It seems we've gotten to the slimy core of the matter." + icon_state = "heart-s-on" + icon_base = "heart-s" + /obj/item/organ/heart/cursed name = "cursed heart" desc = "A heart that, when inserted, will force you to pump it manually." @@ -161,6 +167,19 @@ return Stop() +/obj/item/organ/heart/ipc + name = "IPC heart" + desc = "An electronic pump that regulates hydraulic functions, they have an auto-restart after EMPs." + icon_state = "heart-c" + synthetic = TRUE + +/obj/item/organ/heart/ipc/emp_act() + . = ..() + if(. & EMP_PROTECT_SELF) + return + Stop() + addtimer(CALLBACK(src, .proc/Restart), 10) + /obj/item/organ/heart/freedom name = "heart of freedom" desc = "This heart pumps with the passion to give... something freedom." diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 1a3b344566e33144ad4561ff8319f9d8eeb2b259..1bddaaf3b16d0ce53538508a469d0f177dc92b42 100755 GIT binary patch literal 34842 zcmb@tbx<5n)Hb>}2^N9{cY?cn2o~HScpwC~;JQFaa7%EP1lQoY*h26GcMSwz7T4W7 z{NC@Yx>fhDx9V=y?9A-U_H_3-=jrFjL}_U#;XS2z3Ic)f-YCoKfIuiAj~g~7@XPnX zMhFOmrs1z=F(qv{P z&MYEnsJ!Yx#;Br*lcT{+W28#43rTX*1N%E z&#&b6Da=$dHKog~y-YbbP)Rh+5!TE0v+L_NE015rg*L0Sw#7KJ+O#A8ThY&pI3-#E z^dwTm1B7K~+b?SJORPg8w^^7uov2h> zZ=8at(6nv_pybFeje&|!v}m3iqiF7vnE%-qS`H~ohksblRvh24+`lWgFBihvw@J{I zS&#;$h`3Q{`M$?^L8nl=pzHU5lf}RqZ5P@ojizkD{j~RuXni4Xj-eVZBDUYm@9p6o zdS;hqCzO0@U0d6_N7wZ%9`15(A|E;&m>^fDV71T`N z;NIQ)wW)Qkx;&p;^IYUjuZGNzuFW+mxJ_}e+@?%Qx2xNUjO;M9v3pR<#R2E$ll8$! zj%Db(+}G#^lWR#0b|c^8UbSqW(&Ntuuw?lf|GC<@2>4O9?|>|B^+G*vxJBHpOql5# zdR=Hez%+xdngTRgw*$uysg0!<&D|R}V!6V#s)|FSY^*8EX#SytE>NpRY~U%Cd8M%)dQyeXQ~DVR~W zvZ(Ad;ykqpRk>d-#14yY&M*E*2Ky}{(9Q2B{v|IToPa=dpf~cb^n9}qbNqbuW^M*$ z(he!#FroZ>*5vf8w~L3QR7YMG1;Zr83LI^0T420C+19}Q!$_gb(S*bq=c!96cIppo zRC*_r=h)A%zp2p?{e)#?uhD)B5D>^XtY`WgnEP@fN9<}mXreRY?jiRq*8|2XO^6yL z&yeIPwLG@Q*#RdX!_&waqj#}{vB(6DiA+2%jX}xh<);pDO$j}3VW}LNpyod`STrzu z{L?(n7>IQBIu;v7TU{mUC5#0+<9F=vKW;#jDs9in;Kf$&(nGMLjma(DsZ#dZ)<+w=Aj9$_4lWtiZTMe(?;Aj zrpZ#F72yRzwm2c_=|;lA$msh#6{Z~Y7~?JqS~YEde8)pn`s;Y-@)u)*9!GQ`Hhq6Z zP1pVgwYg)%U>EcAs1%f4e!Rug=>;mThpA=X?vzk4hz_=t0BX?+P;9kyQx0P0&Sy)4 zoQ*RxF%9s0O=@KwEcF#7NE-`)S0yj13RzXgIBHl|0vW=yTj`SKQG9r}ZHmAAjseXA`2srBe6XOQ`TfW$hA2B;Q8ZYW zK?Zn8Afqm_@($d}DQz$}>{|+YPVRMr4*7Y>) z?UgK%93T`p(7S;t*?|KyWM>7jMBKYX7wUDMMsMyA(K{@W$TPG)^+h(~k%jf47M)&v zzT))r-3X|92t-5E8XEt#1I%3fY~!v)kabxvWwBSE(v|jTn$K!*73y5m4}>AJgX8`D z=P`Vd{?vxw)ID860dF*A#;)N+Z|`PHj7PvLZC6WP%U3+c^aJtKs_*5|WiM_o4hC&( zY?!5PcZ-DDDl1*Q*yxMYFy1h+VB%8^yp8X|X;=g4ZD0w)(;BGs6R}?Q!`oBpKMSaV zsM5ZOdB3aw>ALpuog<{!`c4n`@ZW^M1VsA^k?K7t8PwK=<-RxhgV@K%2i7dyv02Q@ zfo?s>5MGKwT)XBDC|kpbZ0axqA{s|^Au z^4vC(x-aX%kmGTV@To*)wX~j1m8hc`U>j*zTIP$ot%np|qNeg#xCp8f9I=!{s4S|R z?nd6er2k7}FuEq9XuXs(EOq!h7kQO+nS!o(e#TKnqvWoxo^@qC1)5%vE?(~XE;b59 z{*BVb)re$tki~B1=@?|&0#QQ13Jcd#oGmVXXzoo{hjg~*qKMl$NLxU}90kmxLC$Hd z4$Vu=a>_Q3&3Z6?yE_yumQtkJWJNUe(JHbIlGgO!WJTdn(+6K~U>!aD9ZH2!TA%(U zv^r?vzrPFD`N&7MHWShCQ7J?AW-La*e9vn9!0Sacj-T%qRxybPm@`lsS*y=Sd4wXb z_}T66x1ZRKN9ZZL(?1pY^K2S>z=p~Z#o-z24S0xHq& zy?nZziLAlm32E!8V)dyIYOD}Hk+s9cVU=nM@5A|?P&BL;65gB>GDt}Y??bywfyW~@ zlUzo)6*t>)X!1ps@UY+p!PBRk=X+C1!pBA;z04#jp2qkzlGq{UHFLu| zqZ!t9F6X;{GF#@h`XJ{sAq44F9)Cr<=ej!ie6f>hl3EP0Q$J8UP6aQcY%(mrkRByi zz2=bER6o11A?Ox`XpnzehQ z@CGdk7Heh+ci2vl$YIm3E}p2g+ddHzda=9PBTc^M2iM;)ydozPm&=v`=LSFA^7)_J zMGUwI{eZH{X)!t!WSM076#WR{ww-xKvxzaihSKo}v6&&ve0+7(TKDRuWf{QY6>lbc zP%wYM!sQW;bKK*Ywz)JwFXXTZua?fI`l0oj}0}|s^Dp+R|dxxxS*XgmqupJ29EMY zF`leCdM!Pj5*HJI&XUGkA|j%!<<+;-zWzFHo5Wp7@21b6e(7yG8nnWtThbcp`(oDd z!QHT?qt6g3i1G1Bh%S^?Z8JCbV}mx_kZ)qp^&UaOEVUwN09e+d%O)%~L$>K8>e=Sl z1?%?P=uIN}{)ZTY$N*TU4-zmTUylceACjut00Nm;Ot0~GKVqKqazoS|DYuC52h<&| z(Lq{pcB{ufVdDrB*G`fU3*_w_XgTO=h4bytaA1IW%&Ms;TM07!?|RX_j~1bgbLJzA z1Tv#Nf8WQv0N+mK`JN8FTp~sqgTbKOG9spcex#gFD-`Z}CIE%_)IV%yZS7yr?q2v0 z#8D2;*IASEzsEk?8S`kpM*9oyN?|OCpK7j+jns#@o&j2?VM89OvWm?Y6_K@pUXnO* zS;xY{($pgfwv9xF9jKM1a#Z&0OGYoEw1%P5#mr<=#ySP;q8$i3W_2l6n@`XuA%*M1krplwmR7oO7_l83-k3O(PAN?>&4FC0*3JlBL&UXY}2_@fObdg_Vyb1OPR}ezkOz?4mo;Op6+_pq6T(nKll99;$fjGlo6UW(QHvXW zK|#TP3bX2XQRGdfII~=qyvwuYb;j9o7vA@|DI-K8{~@;M)|z`9QI}dA9t_`XzrN_i zxn5eLq%@1q6Rl*J&{A`DuJU28v)Cz|IM*O13b1uE=Xk=uBoIg+$ zxzhFNXsNkA=*~OlqOq}YG)tuB6+yQp?+KL5!jkvJ_4$-08z-lH$&|K^j+~Cpa|{fO z(RrAoxd20(nY~Bg0gY_T=AD1$XP9Dt$`^Q}e{!-gxdq8;g;19erLdFbuSEL5hl@Eb zM63X7rJ(B2WxiUR-q}; z_(4cYI*=f9{3q40`mg)tA^F#@mjQFr)0To1gmPLO4rM}5!%G#gL+hGS0nF1i)=_JA zSt+fm+6K(&o3rYxt|r(dA)2(th88wq4xGnmFC>~=e$P$g@UD%& zl$%bqWs81RICQfTL&}A^ex1Y^*ldHN;)VAjPRmTau>^~eMU9S)E$a7gt&Yylva&LI z2?@$h^O`XlzC7vD%?$SI&SWXpda-{+j(CBMy z9WTAK8KerepuX0p4d3AmrJkS2OAzT$^&i$A&*iaCM3j*s24B1&9LP~km8f#rKZ_Vh z$g_JlKVH}<;#>A>1T)nnmzX>vCT-tcfpSkQ@hV@Kc;eYp4Yx>unbrna)@sytS$b5NvL@54|vBcqW{ zHUNhp-GuCyX@0iH-Q)x1`h6skO|!o-vF86&9Dp(g|0jba4*{T;|NXUF_cR0YbcE*y z*cy)}r=}vT*<$o;7*;{KnEBkC4wfxFjz7DE8L#V$9F2}^zx zf|}d{n);-YhOczN?>2tto2E29u)6l0g8)9LwJ>az^ZTW^YQ)~jxR(qP2*WgBdb)%7$wu4#2Aq-_U{$Y z=o6)Qs$LpM#|({W5{2W_1HD8CR4(WYS!2bPk4>FxY)#kg@PG%nn)^G7=ksaz(A&A{ zlA=gRv;%5YKx&cv9&!f)%97jsNpRY0J_ME{n^}cJ1g)LsU z?PKtFQE!cugsO;>*tcuIoqDuAUlqsDO{PXr2JjR}G~T ziM%u5wi1g#{@}q#WJLZu{;r(O=Dl}rs=0y9P+EVa=GCu~7;^>rYpC$`nr%w1_af5w zI5y5|wyAOP?yldvBp4#Da=)P8<8(Rd<8a?9Ap8_$2*vVM&2WJ~c<2WjQbBI&mN}P0!BiXd7tw>d}H?6&c?{pDJZ`7wU=#tj9%! z+{S87jdwZ6)5g%FWwpy21#BtlMiHv-FxZ?3`_@y76yyCv!X{d?REvfpW0E-%K% zkw17Z2Ht3yhO=_LDw)_Mi}{B}cZ%B`*SpH%cBg3@DZ936D)R5;;aX7Qo2g(qb#?N_ zfv28t#a$j+_pU-6%VR=XdkI;dO}3NSF#ia7vpb@q0>8ZI;pwI=`lGDyR&2FP8XXhM zS`eRDjKr4uRK{?MXJ6q2P$g_H`S0=6YaRGQX#zPq5d^EhP-#BCadI^ELO9R#Wc-sA zq78t$B%yHnothC6QLcTzejP+$IYPF^>vZZHkEl&Bf4FTZmm7Q1CIrw)aM8hP;Mte~ z)Ft|HSWtlyY^`cpcS5p>YzBVLFzMG{=udHX&)>>_QQ)=tD~r(K*S}}+Dlx-2X%my7 z7dXSE=}MWNPEN}3`|>MN`SyZRP2G#IjgvZwFex^JH+}N!K|iDmx#|LUbZ{tT z)8sh2y!a!(*4Kv?SWsA*y+5qt;NXxsZ?e>?>12336h~U*uZVI%_Nji?4n8B^LAjr8 z0k8MEACF!!3bg$wl#Bd;XF2o@7F}AZ%+8^5a(X$JI%^aIj^|bt2u=NYJ0zl@8|D(z z&>)z#4Tr-QrK{!|n+&zI&4+*B{M#j>E=f`NqL406tK}a-^aL2$-|c_zDuk4wI;!7gcXlWwH<3VL$>ppR@(n-@AAj?feAA4&xOkL;lE?^fkk;g%%RN(rlGHZ z0V45IwOv2NffPX@fJ97FZb5Ujkcuq}u78j>Xf2)yhH?}mf|JamiFQ;=dW2Y8C20&q zNIfdRq*j>Z8(YINx_Q?})0?9n`oiLYU+{)4Z1nBzZQ?XiffftNvnw znl}cP$)#o08+OC)Ai!B>W9PQHPBg-8O#`)*`ltn#3WRPd$E+qdH;X7JD73V;z7wQ? zUtIhsAMVvL=M}k=s`3oNkzfy#VU>e?bV*9d2sIQO;@R}m8`?8_1Dk% z=pq>hHMg{nlp2-T(6G+wd1|`p;RWO9quA^T&!nZLGq2N9QndB;6;R$9LPvR`{yLNZ zbF*=|7W3}gV6#I+)tft`smXIq$Ebva=6N4uW8;bd6cEq$4xVMrjy6&@J#G9PVt3ajOo+g?Keyzg z`QzjX7fae%5aY!moXn-=2=9*zw`t1a1Y_f<4mJ5A5f|$soC|PX^%VGC9sHFDMs*u99jAw^oU7FNOFI_#E6T@ zV5x*kGc$i)UM_|;;o((5R2fA?3@Ji@7`)NODRCkfw^`eJcvl^c8!<7fOPGZgrr;P=-EruTW$LAwj}w)IQQfDf6TZl}BM z;o;GE0kptiuN*=3KMZ7RFHs8g81EOQ`Csyi|2HQ|HlPft_7DB7&y(0ppvuI(4ws=O z`{Z?B!ZC=vppxrk# z13~wYvde)3JV4>c*@4J25IDf{C$Qel47$25CZpcI{>_`qCAzNzzZxd+@Z`isZ$RUmc5SIG6!YB#E0Y4ldnCpo8GU?M#Q&0;i(1hmVx#;d#?oI4IIh3_H z2H+%VnX9uncCE-@b8DdR7i939;&6ce(hyRs@S(@ z&2}iyo^4{K$I5bfkkVEyFtMm-%6mG|0=w{flTiNPxftXbwLR9{V30;$r%+M+K!2VX z1rd1XpTs1-xVVc_6y*G<$|`92A3Aw2n~=Zz!fwxGbF=sn(j2j#)0;8~VGsUdL?ZJ# zHX5(@zQ)y;E9A1x)z>*j4R!GkTDlntZu%%Fq3IAR-A_RAdh$3&;|L?L;lnp&Wo3}8 zS^2h)q~O}dMIyZ2ixyTpY&^i_}DqZEi&Apou7X`ofs38UUa|Zf&;f; zx(&fAdI>C9TdnGj<-A1{p_uPjTY+$ZZk9BU;acHClOM(IV-gsU)#9vKLx$CBHtS+F zs0`hUoMYU_qXj8YNTZ|7`=uslr=_N`g#rn+z()M)Scvyg1a};4bnEKQOpd?1_PoI^ zOfUL!C{1w>Gt@ zbhr1jfv1aI&Wsr$aW$?bKS_TSq}l8M@?I0_WAnS_Y39~4b-%CJw2kcAXvFJ>w0wUN z!l4lA8?Xz%{QWIOJqAjwO<=i=OhQaB) z7Hwg3dBMM}*xYFzb#GycNIdB2=!!YXN6fs~d!zIc^Xb$U_FkWUjTs#QMx^wFi%fQ9 zVKG=ZC@A{fMv!P`P|{-$^F%?pW=Om!1lkd`0Ye=?50jyj8GpC;|5%LIvFbuk>KdxN zA(xeG!pWPo&z!W2qYHX`2R7g}q>JxCT<+8XNTST=U=pu~g+7}={!?rBgMuaMQw1$` zOGKPIsn<FOz^X9rNhkTY311!W>Gm2gGxMVQRQhAiPLDpWmovSD;tk2&v2} zoO1`vJxEzKjx?S>R3CmZm}-&kTECnW-ZDd*<@a>7qeG}+7&Oh(>R+hu*(LxO29b=N zTF{T^qbp52jeA{{@zV%}dZ%g+^c`zZTxXNW{^w2)TYlY=_@742>lkR1dDuO*mMHX; zBB=8Zy*@Vg0JO`mofymA*YI`Pe)%=hXez@lj177{L}Ku6Erze3%lH}#ors(qFCD#j z-l5Z99T4r|?F!Ovj3p^CQC3baOkshVV9c;G0JPr}($oo3*#=5({-+k8tx9U&D$W7b z!#3W^ZIn(v7v+ai0us_)ZFuGlUL4dRva7&N!4{+Ni0gw zRzExoiH*g*JY0CaSiI8f<7t7>4SX>>Pr20DPSEi4^K&*euO@Upw!H8yyQR+4*T{?sE0Q z_aTx2M?)`2fbX9HS1wM@u3fZmmbAyz|B|N*vS)98wPJ~T+RW;MDZWB}j}`_qjPtaZu}Eon6n`vnUnkfXoBocr?hd zsgCPSO44n|x!_+-&P$xB@$1*0G*7Nwb9aEfU?hY?dev%A*?d@4dpZ>fpla`eKq&jC zi|AWwfD;kLXFfT1NG&{Sc16CZ3LH*m`|iBxOeg?MJfF=l@qgV8DEc8Y>h^)ByThi^ z3T7U1!?(}#FaI3-)zQV_n{mZG!a}@Ai9#~V6`Z)(*x82W@1l9Xe(efhNiPXvJ8|9b zh|1lo_bw_C%>$tFh+7lYNKCUh8jxA&>c%EgVW?fD5VBXjCXWpLo}6v-BBX@ts@8^qlAI>Emj2E**q6mE-_t=z z5H7Rf3lbpk6Oa7SL9C!oRK|q_=9=!e3w+GPc(!#GP?|#X{Cx$x;Gl*GC5G@*!eYI} zpKWI=5HR?WX5HVjsVwy104liFwoSZUB-C06Mk3N(YmNtLF8K1ci@KUf!MsuL&8t^w z=(%|Fwx{NOnY8l4@Lg)l$08-sZb!tzFAmkc_uWC06RCd~1rraaw}4-qja?y$cv?`4 zhg=d$l_%KndRD`L015JrpgFHL?{@e=gHi5_7tYsNedxy$`<(0R|1?|HusrExiHj9>~PTX5%ah+ictX z-Cnc}RP6kv2Pi8@cf^7ki>^Nb(A60GsLSX15;U1L4W6WlZCvwU(nLReN!W$F`-HO( zAXgMlllzxbx;GzH`FE@ZF1wfC#|ZR>gOSQvY$E#iM`cQWt^OLtCH$fv5)aP~HRgQ0bqb1s zD8lqMT+7Y-c8l;7B?@VF$eJ!VvrkUkdi(ks=k_n-BWZuSGd`;IbR4Ca`zAUF09k$# zONWQaT=+~3F89X4mZR>n{x{IKYg-#@5fmLB{xkjqM_HjKX9G!6HBY8)vL~_*xJH~; zu(ZI(lrC!qdT=m2!w@B1V(R=sfGqf7o9YzjjG7(srrihC?hBx+mPilRc=prTD;Yrp z7gqp+$5NWZA1!kG*|bZJOYUVj@Di@9i!EXJTAupE_ZA^(q|42ek)euS3RM{ABx%k zdoVX*(N9Q_%ESHq+S<*smgRKk3|W8(4yn!Uq$Z@u?@?1d@Uky^#<9Y1XZI}6B0a%8?Xyov&4)ntp3olB18N12%~fM~gu#mt zzluQ;3vZ>BnI+?|9Ksw)%vacEak=t;lQp9b=DmGCS#^1$18Q-K(?^*svFN5x(Vq7! zgJL>)qfDf4!Pu53lfUCKvj9j6=b6nKEBZ~4?$e#)z4}HieW%3W&O9r!EJk@idCYYA znnIRRTOE|R$&;ik&O8ZP>|up1^v+llK01#E-ygZ*8!`n1T`b^$dTRgQ^Z$I`|K;i8 z`L{%XRRYV^7#+%q=9Qj8kn_0AitaX}wmAJG<9t(8YK1hqenuQ}_-eBT{5C?#>BZ+P zVXa!P8v8ycRoz{cFDI|M>EI)q<9;2dZ)KlH^|ScQ;68T^tiuEK4Is5@kCeh{@_rp4 zjj_6O3eX5;&rNFFFS{bhuV)>zTVd}&<}-O6`|9hTK;QPf4B%J`kG$5Pv^1Y407`d1fnzBaT8sypAh6v+A$qpf#3f&so9Y75(K66GF|Eyrs5#q z4%Yo3&|-EVe5;^G?pXS~u^)0n0ckzLcZwtPWEpl1R7zgE)+mwu!oRZn;eaaubYuxc zgW*Ptvl?qp6P5Lj%gLEi!xcT;_V}wRVSihxOxt3|ZpcthI=zYakp6k>+N#H3Fgl&v z{)_R$Wo%im9CAI%IL;?=UzW$0h)!<&%TQSuwJdzzn~&)T{<(@H9-B1;l;ADkKaA$) zf&emYY8HFn7sJ~5AO^32=$=DfXJ5lGJ6;k*)Nu1NvWBr+3t=E7!cjf*_`mk9M6`5R zLoWR=MB!_Atk}A)1>cG;LDN4b=2TO#a4{LsiZDW|H)G9eko+rl8sA(P~ZCpQ8DB(W%`Ya{2vYxCuo+rsuP$M2uUrG{oPOI_9 z+23_jN-pYdt>_4G47+`B)d~q2Vm!$dO%AtM{``wAw5F@Dd{+5*oM|c@q-9@O&^D`l zHN=SW>JLE#q3m%r+9IOkR;e3$IXmoUR1!Fy3YN98GrRf5z(*gdmNS05Nw7}or`39P zb+MOKNX@s{*4-_OiiU>5%E>uBtmnP#O(_ERK=~bH+y<3)hB_pn{2wR%_iCP~yW9vQ zE0u%K0{JIXy*HQPaQ}KIy(9?0JLgo@>`z|73k&v`hESwM!XR`gQ&sQp`L1Im^0QsKD!5l8A8P@A$J zbskUZi}jp@dwzMZ*MLIoxdk^%?@4SxPC-upp z#Z|}W>)7@)`;zE9j;)H`yX9-8vM8UvlNm9&9o&$soNtZ>Tbg|F>!$iNXp#YL)$9rF zfmD=8<@+-RNNswN?Rb(-PG8U~TGnfjbO@n2Pp1O>EI5cT(in<04YahcuZBB&sbJef4+X$m1NM=Z=ymd?W{^W4HQJQbLcQHCJBASOB z`z09(M1Nwy-i8w>)1;^!PSAco%v*~j_L(9ZNU{P{>JjfC7N?ZB7CA*Mt9UCi@u2*> zK|<1L4NNMI-p8wi+uE7C1Sf|m-Jl7Y*qW%1%J)PEu~+WbI3cV5!}! zGC8&m#2A;=u+X2t`GHmrKN*@=DE9;S1v=Bud07a%CRqN6qz^9|-w)y!{Oxu}9hl7s zzib;Pjuq0Ip&;xoS#z#ao%mJ5{lFh^=_KsB>Qv`4J(_V?Er1fT^7f+U=*_!#^cmel zpK&sN9-w_Zr0&KQvN>}|WuO_dH#?y1p0>WG{uGd<248=*^r^Qh6LYZ{tkyo;oJJ`E zo~#Dk(OOEin=Q)l3v9)-A0>vRv|Fr&!1s$dQ=-+Z07QN34RzzEhl5-)KNapkeCCx& zxTzNrkxM{)$Xds^MgrGgwpNW8ncMBL*!@4RVBwA6(yOysO0Qw*E`UuE3=~ zKq09FwVns#_92RVV`E>sBKb})X?tpsMl1hfed8&nkGDkrr9tkQX#-DC{QUetlGJ2M zr>R^aWiw!URYJ0#oB?Q;{Zms!Au9puJ~CIwGcl#Vl&5n;xt{ySJ>MCb)hedsa>Cnf z`tnUoPAr2ldEf)OkRxd4=4xkBV*fTgJRB3P-We(x?6F7f)hV_0sqBI_kN4RG2<+ex z+Y;bkyYhJqrE<31}E|M9a~822bOgCMkkwm-J_Q)BYve9 zO($t6r9?njo+5^Nb`6_e{x!Y^P0DUg>Ce>mt@e*kPWeVnVF9fb`!oW*@eT0(s-K~0 z2g?OfRs8YzW3>Kzeus*CjH!Y@uXBbBBx;yqdv(nQpNM=tNN^^%W3Y<1SY+0Xg_`^9 zO{ivcwm=4{RQ?#rRirC>>QhkPDo*ltYLoa5z#LLKp=o8+LYsV&G!q-{dNVIjTE2S5 z?i({2;(yoD*8MbiB3ka~*!neDPQNOte9>4kVo*olBZY=J<$>pQG!)y z@LNDKmQZnUx*!6Z*=GB_`Zf6H^{efdF|>NqR}LB0g?-axnvXN-LTTx6p;r7C8+uj! zRwJsW34!7et2nHp(rRj^HvGeb>5}5nz~A4z7k8qY?YNL($(QL{?rSkMb4q&p)8~F9 z4Tr6)d~<|GsWAw#3#Tk-@nRG}@*6%qWvj0Ges9?}i>8A&6yQc6`Pn4P+A!Lc z(9rwKxoyQYWF@1*nmEF4t1lKc5SIA^>ZusW+lUZ27r(!MP!`(JW+-PZ z8@6uV;B67JB^?JQn2E%8y~fu8ULVLm)Qi|Td$=K5_C7)vHMQ6|{%5v^#y(Q=%jlI= zW|Fl~v14tU9Ye;|!)vDpO^O7pz(2*e_ft~(trbp*kym``Jm-`YBdm0O;OB$GY65HJ z04^vp{utCK0?jBg&J?DG^}W;%nLd?k&r8s$F@=sMZGcef&xkSv~IWac;$zBK}Qe}BKu=LIPhg*dBEUi;H6y4 zR)P2QsNy|+O;+3&%@w=$j&aZ-iN*G8q-=*|=g9?pLua2HGrcNHh!fv}mUeh}B!hB) zERF3l#xcG=ys2ma>*VYTEni+QY1^9L*j586X_)e_;hM*Ltvq(QUB2U)e~fS8UtKQ6 zxIfDJei&(S&_m;nG>i;^n+!wFBnZWLiW%AUoJn4mFs@y|A-JuC-6v&E-D4&1dkPuu zK0c7UD^O^KI#T&)R0g2_VCH4+B}{VCJxr<4dch9RFCevE(9w}i!yuyzx3k&`X} zYWM^n_k)d^tIO@(%NKD%qzCL3>^FQDxEA+oRl7VAA6;bUw)2k5o?_PfT}h9VApYy< zjVO2(Y;5=B3=4NF%DVW9+@JcUF#CRyUqzlIw^iVU_la1w?|yQ?YC01)xhkiQ;!)2m ze9St#g{3>MKt}U>Lt$8h8a32rJ215i^7?6Zk=B&N4h#*Oq+|m9IVH8alc(TPf~z)z z`>3FHz@JK#aHmRF`{rV-XMig{Ux4940}+w}0ev6h8C9wovHIIB%}KqSKrjogsWK67 zp@o4W@R_%$*Bv4G&v8s2B*_i?!EJwanS+tf>z0mQ@j=hLYzijshIOGbL?AHkwZ=Q2 zho&7gX#8gV`NMEWy8GsOnI~rWMe+BJ-aqsbR8aHQXn(`nMI2={WxDPDCm`?Mz@mRKJE(m0I(&D;dndf2S}*ISA`zNiOE@$0~5G8U{+X zisl^6RDN;5w0Vds$09D*?W^=uNyovYi7j`)y^^;Y0y>S_R(xH7u9u0M-_b$Edx1Ia zsR?kj76;tN!mQCGOiPA*e!YI^z*mpG=h{h0disXnfFny}Nw|2J_rrg_tTM$Uc|Yx6 z*nbXg7Te{pKE65ckHF~wH1U}0Pmh_6NyRq*+rjK{rrVug#EJj8zklg!|J%R+uL7)% z^?&jtF${Q*&;8$@=A`z#{k1gD{MGyS9t{Rx%avVK?@JGS?{qBQv5W>~P++5NP(<0( zOl;%z%QJkCG@`%=#G#b-(vlh=@A~{Z_g=D_Iiq{9a6R`~ z@gf6WNn+;UP|Xba#ya7z1d6p{17WSv;DvmI>DZ$`FWE?;Wf@S*DDRxx8_%Ek?e&ys zmpI|m`1PEq`xX1Q6Xey2;o=+W<$#7=>`i2a#X~f#>keN;MC7>bfZH-Dk!Agb-XD>F zoqoBvd1BM&AK0*0QC0!c=#@=V_;R(BETgg4(C?NqTs2 z5;iXG`<^h2z^fIX>hfXzvDLaGmLbDQ3O84l_%tPDa>eb(kGktqPOiWzs2g8gQ9GB9+wX(}zgHchJFaq@@MIrB} zMi@=v-)UEKtM{SAc3tH+5h%qV`!}rnR~g?>-&*;gmxJ2ncBf~X7f-zv7NH&ZH=SEi z9XIbh^B`Z8ZWD+pRV2dMgcK@1ppcM~F4|-@SxMttav}EH^5WCCzP^g9xvVs#;zHP1 zEOX?W-+O4LbnTWJjk(|9U3DCn&pW7suSW|msu1G3T2SP#RBJCN%nq&p(rWXB?{Sk0 zlDg{hO^bp6NvB$x5YG>Xe7eQYXJvl&(3Ntyc}q=iX)bmWg{)@_0{u~R)5z?zjsTKj zKz{pC+H%Wn87ZX>VCGMHZ zdbep_kQvU{`tT*dd}4Um-*W%=TaDIv#lXuiEW5Iu^E?>ZCv&%_+7~<#6I8Uq;jFc z<`o}m8-g2e(nF=vft~{CP_;Hq5mYP#pQXN;uQl}PI z4ZMR_^Y~xv3yCl=gqe5xk3C#&nOTT3QYVi}EI+(Wxh?K$%rk}Ph0#=jU2R9FBttXO zS^_sM;+psTmCO#UTQ6ELPl;mzA%9nhPLnO}edclP{r^W#t`x2jWKvX`CY! z9@Oa0k`uV#$h}B0xth7DbTLn1WAXKaU!m`Wj?kVF681!sa2R#^3%z~&b~>dK4sV7@ z+re6zii0vI?(6Kf6MC%@)87v+6Y;uVzep1ONJlRHRC^1yb3QAAeX2U6^D2IzgT#nh zAT*j5QUW9veYYjNXQSAIL!cqHj~b0-IWwP>^v8HnDaXBtn_3_1!0$1fT==xED%9cv zYz=#5d4_BU%kly@g_MzjEO~S7y(%@{fr`uW1GsQOc6#es`{bSm)1(OCEgs0})Df-2 zppfk(13UqIzr_qvnt0mwsPB-ic!|PCIrv=c&r}-Kg{h`-2R#;PPpkl{I5>LCpVejW zf=N0h!${$d2((!**jdbbX*$Mtl;z(j>q9B(p@4 zirhqqR;Z~JrOd0=C-AJLd|mD}(TOrLX+Ql5Da(54ZHSE{gsZn^k`1?;G%o6Xh83}+ z1}KKSf&zSFr#acAn1>Ye6AEt}foKK(T5!if3{dp$ckBwjTjFtTd05QKCY&L{{6_ULl@tqDe z5Bh?CmYeRNOd=CZ;2C@OJhNyj9>sKwp~gzOXfUw$aWZ&NI&OBdc#b45;|lTdB`VB$ zfU0rRkOb*l)~UCAl#Wo7NEz9m_D@TJl_q8{FW%QJoBfvB9sywwi(h_B2wqIQWhfco zVjG`BNKS&MKOQ?sQTg4^ZsEOqU~D{FPeK%>VxsEetOPE16JFF|Q6n@gO#&aHDIdUp zYPSjENN&S00e3uGgAjymbgHTJa9C)@$m z!8M-`P77b4T>KZvkjnnjefit#*8^mIgi434HuDZ}apPoXsP4hWuewMeUlrDK`Ff6O z;W1nLm?H$K)ONf}gW^}NtEVDT6op$-bk({P zAyuz7D%9_p$E*>8T0$#DUB~R3YlLo%C=2DE826`5*_B9wOwhXHQra^$>_Iz!gQc~T zlgat=SlIW(OUtM|{-hBEdq`Ich7MS@7iy?K2~rXa)eyt9jQ7)&ofHxy58bp5#;NV! z^CW&HFi5hwrmZU#_lM0ECkxLMS4B`WDL`C?=1u(o0Z7dP<3Z zEfxN96Zf7POP zxX8Y6N9#4}a3h^W2htHruki7HW9|)ZxpkYP~Kks_r_NAvx08-mA4$Mu5C z8|^f$EFg{F5%snE;cnw=|NKfUZ1m3M4(M`&+t`BTwfhf>USsMFc^uRIO3yUun%m6GJ z-|g1aFTOb3NCus`nMF=ry-ko}b+Jbd>K#zv*H3e%Hv$4>Aqy4rZzK`yFuOAugWzzf zHn;p&e?sBw@0AnfdMr$_mPZ*sE@B=ih)OPj&YtD${S3;^pKLQ#6yJU0bZt?482T|F zhgr{j+OBO~+Ug4a245d9=ZPL&*swpIA6@zH$!*Y5QAKqb(}kLJ&olV^=yj||(0)QK zti@8v*4Y~bxjfYrcd$5KQ}Y;xJ#yyCNar9 zr`fpO=AZYa%PvgCT0ccG%oK`2(A&S}Eygje@N)oIh_qjer)1xMoUPOdc3c)8*~i8- z-oMdKIa2EdzWX)^xp`Yx-#C7o?82q4cf2ca9RJ&$%rJ8uLMe*CXhxD0l;S-Fs(!go^oe#7H={+Fcro0dX;5oWF z3aXOdZjeOV&CnL_LwK0DoOVYKoaPcpGKD%^Q`0kCF= zJC~?BHHwfJ2inzxDWLOt~N6P4B_kiz|p*>FC- zqW$wVvI*O_jke`wbPSCAf`UK}tty_~(&J#4>#c}uKlN$*>V=zP!9$Uq_tnsjvWf~O zVg6K#LKJ$xuiu6xZ>F$3*T|Mbp&BN|bRk5z!cYDb z&xR;nFj@LI*@;{cVw8Iol(L#jek21T+G%Ifos({+^A9ET zT`tOo%SJB%=`Q$m=pB+8!`n8~CX|B*iH3*#&pVa=8V_i!Ou*;!UJOy6hnAypqtna& zLd6^(Mu194bZE%X0UK&==YmmlF{^NU4Vy`9$b&459V1)iOz$V%6*G)S2fozY9ZW$G z2xY%x2Wv){of)le^vIqRI<7*Cii##Xyxjqit=%wde}vNf6B+j*4N=l>jOX~JPH)IJ zJ|R44=(1J~S;C``mT9e~eijTMUY{?dP%I6p(vvb)eQ3 zaV8?|rs?{9^S_rVJ;ko>PA+r)Fi66q729n$l(eWZtTk+Ohk>v}zVp@{y?D-R{t3}> z1q;ltSmFAXMzp;M;yJ;{8g#P#MR!Vs>Ud@uFHG{=LCE=Zg+}I>yKF5a9y9C#FVHp+ zdD7em;&Y9dT12++8hExt!YYGHTM+RyUthBH1lE2KBtk#^FxfaUzB1xCk-f8xP#eP) zKza#4zws;lM!$2X-*AlS_$mGk!7fWsfnyO2 zdP^TCem}Use~$q&;{pAaFMT#awN6xe4F)+1a@?@+68`U;I@DAKeRE z^3mcxF2`16ZR>Eg%jIo5(Mt!{>S)P?@@+#__`e6mxyn#N`!Rk1+D6q+me~7uSK$)M z+=oJN+ih`A`Io2Ca(Y)wd;%tp41ThCm1>fg$)!neWH*Arc_OQcobAsaWBa^dfraFo zs9$WJ=qnXTZu?U%ClY$xJ39Wo?DbU6ucy!>fmhcNpH1dTk#^ucL4XH4^p42O zwUe;8mDxPb#eMCCo*}uUm^W4tyuz!BZmNW}wY3yH3L?Ldu~CsEB;vzQr}a=r2*XZ@fVjtZT>?xlYYFefW7Dop-rca8 zynl6<=~`!iZu$Ze8xAFE={O-ivE11$)34z?ul%OIp+bqz=X-d>xk{#Luzo9qWUWUH zplqZ1N*tAy>7S;YW21^LEe}D>A)ZgRN>*-yn)cS1m}f~SJ^4L0yZj-XfB7;k zm0H}Z;lpk|vpFkst!W>oX0_q+stWIM&Qnoye8PBR4;ANlCb%>v_t6{xU%kh|&C(?! zX(aT~%){|l?t*KFAc_Af&b{K97}ZQ?!dZyQS^(NWDsAbvZBV{)u0uz>9Hx#;-+8tmp045>oyE%{!r^dr4GnO? zc(<=b>5t3rzCOLB3A3ghakRgh8p`~}`izb?8Q}y1y%uLrglnwgn6xs+)^r-bHHZzl zwzNXk{nYdq_HXPdkx~B*)5YKHel>)2)aIOHSc?G%2*$2nrGh7R_nJ0`FC|nTj>0Y( zbHMT!dhjcJ|KzCj5iZ8c8 zt+edhH&bg<1}b;IqQiqlwIsN|w-wEbdNTa%BszcMNYRrEMou&RuW9uxEjqa6eBDO)^zoGeuZa5<8L+N zYd?=v1jzjJRD6O5kE4J%jaytQVDVz2w%{QE4)?FZLf>;nLdY9l4KY{JS4@&;)~wRE zahGs!tmg0VBb`B`J^IU8@-cf~XnUgD62UX`yvf38=aZ^lX}`@Ff~BK2@Y05^M#GO& zYYY~v{{6Rz{(~4lGfU>%cm0NIZKdb;{G3QY^ozcU5ZBcT{dfo0Cm@AHR3{Zr16~zm z3us$7E-qTFg9J*WGKw$0E)9Cg5+NJx&x8Pf|4jN;%e5iz<$7q;WKAIiDljQNcQg$& zrvw=OVe1`PvHyGeoY>J=+a}LU1NUdYB( zpF)Iv3f_J875q8zuyzn7K;>Z6o+Gz}=T5l5y<8)1TnY=)SE z05N9BMzJ!I|Vz~OVm8Gc^C$8a{|p~_r?T_on|ty^!>cg#S5;{LiiMAe6c(IuaBaiju$Cr z@Ri%qG^dUui2e}S3{Pr~>wm1=SN-`D}7|pqWvW|{vQ_}=I zRILB%+RP$2-un-3fd>bIPRHu(fMrXAp*qxi`|ntp3&OnG4S;Wsd9n;mP)rx4(D?nE zO9Ou5aGwNp`mfyK!`f_Kpx!^VdRJ|A=vO?5*FkPm^qk-i@cZES6M4fY7yf#%;abW@ z(UB`6Z>*spJj1zq|DE*G_!geZ>Tyrf!p@ul!D2U@DaU*I6B(ivr^NI8^JR`)rBE?M zkFvY>r~s1W!)^4$YlO8(Gp!rMJp{?dG8(ci6Sen=7(j2i`dp^li^iu5L?JiVmQkR+ z?MRK!^V}Sel#)VtcAKljJeoYgkUCOpHh`<|`def2kIUoL*^At$*RnLMSEOG@Lu^Ld z7R8xomz|3*6PJ&N>zad>6x{Lq%8?JQ-9If)B3-H8wxk}@0eK?HkP1;c?vcyO-At1h zz$+Ps4q2^gX~VWr`<3_mQ?2cB)%a3SO8}r)LyovoE|kJkK`;mZg{A$N>77t_O;J`f z)SJykr&r9$1SXw~fX;09731Ybk2BM@fzjMt6#ANI>0nyVnnG%a`&R{PN{25RQcCmk zI{)zDls@wrY23am6a9Lri6{U{YDXr~!c3FKDVgxx?G~uX(-Lbk%k{y6m8OCJMJ_YIKBhOC~fD3bibzsik zw@dbo{dtW0tG%!k*kSSXv^CHPuBoU2duV&&KM+f;-R{8)vhK~qWYFhS28|i<8fA~8 zv-GN$;i; z7zdsQYf5#!cZrYIa}&+m*>>x?;cFMr3{YuWCA|11y2I_h(;!T+rrshkom)2b`*%o5 z2FvK9t(H9-5)jA#?_ax3yJvnR%*K0+uVhO*cxoADQO(&uF(W^)q> zgFo1u^q%e~JN(6yB>-ZQ%Z_hfk8Yevc-;LJqidSV;u+&+C6-5*yte!Ojtq2k5Iesf z+wdaRT#f4VjojVM8}nTINGAogWjoFzb+t;I*KrPW$4w-9=lP6~0bD%No;rY`z-8(Q z!#pPpZ-`;t@5{}N+~m|0t_){rZZ5J?&XdF2>+~L*ya~q%Gogxc25*1ypui3Gn~)om z?nEMeHy>Jy`R{^8Iy8{YKV@b{6P)%lTkj)70&r6vc=9TS5_F2d`Y)@ya^?;i z{BHhQ%F4!%RO2Ty;G*z`%eZ%3sd%kM=wJad6KWKoCRX$&>He-XlS0!I3jbrtA};PZ zsF)+>Ny~e7HnavG*Fib7eiJR%$NCYIYDrVPbLVKfF7>wb+U>6fi2oKfR2E zy^PCSqa*$uH&C&Bph26vM_eJ*5WV1a{D_8E&|ZKjPpGh=&Tbo@_Kx`jOJ!vxXg$NR z@xr9@JKx}m@-VaRH8y`OW&n7_}iCnouwS60@)aBpeAqh;Vq0w`2xiOE>o z$@Ilx6-MuZi$S0O z0O#S#g9S-xEj(05;$k=JTPnT5?@YVCqIejm$rv*cb$NxSOU_pG+`R5*v=|a`p=gsF zMaE|X?Bc%de>!+-ECiAT(p_A%r3t{Em)TlNntO=A9|jrQQ_b>LVE9X(yEu=Cosi;d zv1wjux{JY{4gaQI!nq01#$eA*jBC^_`7W)_w|)+03sbH`+svNh?9a9dFMJ1W8(#Y~ zkNPv>q0!4agHlDcG89^jQz;meCc=gAy~-#g@FzpsC*2zBAw+B|CLVK2Hqa~Y_PXul z@3S%kh)+!q{$sT^wWk;tQdU~5UKe6z+|>gXM*5_Poi*<+J!UsXf4?mgkUD1K(VV)! zzb{&djdu@6)OnJ=CB>)IFyp79?VG0`n&6TwGoAE6Z_a zg>r(fQYBCU9+@Ihd-z*dUb_jWvKuNx8gw`5H0k^rO33*5$C^de#1{e0zE)6^rEC^< zCcWR-IzW(H)28}qMo*OlX~kpCAa73LVv>^&6^f!xLsaCpxe)bzkbO7 ztizG{mZ=vl5s49>oE+Uo5(s31S|9AcwYBAl71r2zyh02+hGEq~c8avUCc!dzFTuJ~ zXVTKNao9n>^$V!mpyb+5)Qgi z)_OHAdWIVeAw**^p3)bNm(B+=k6Y+`G3MPvjnav)$B-?3_pAL|ZvzPc_gszam`tqTnJXB*lQ*Kl+&I%2atw4Q6E>-gRYf47sLhCEgq3<2;OWPYz11AQ| z(^Pq=5NW3zl_zmXf^_oJ+`um_(PHJLn1MJzyBWdg+rx8WObhG&XoS3fao8z&Jr^Bj zh;%+S?*C6P_rFAb!|3lZ)1^zN)I=#i0c=SG1;73*86ac!Jud@Wl96l{$RhaZy<&FTeEb?7g!}KVcmm zD-|IvZI;$|6;;EK>e!<%^Zb(Aan!doEtJ+Sl9&-ORAI^%Y>|FqXo*wd8L_o6ARqZ6Q$)N&VIz&Y}`FN{-Ja*;VbP}+`raZB?O5kKM`x<+V0>$xb9 zS6VtS#!Q&=B6Kz3wO&>K(GBv8mzcz)WwoBadggBSeob~%1|Z5bFvNHy5_mX0=0-@Z zqDqt#X0tHT=($sQ?sv?3RQuoF*AG=r=&m>}PfkJ(4-ci{@UXFw0iXM$rkmrox4nHN zXR5J^zwN&AIK0Zx)xEPPi+bC9Q=rqy{pYP5^V{t>v0EAoK-J=XQClgR>N}=S)0BI< zdQ&!h2tfb)0itr4L}aEvwKL}FLRBB>HtiY46>5^CCVoiToZN%QUfDJz4xs|E{|NWp zXfOvla42zon`VoavU}W|>f-MHh6z_DiJb;mqh)&|r_BU!zp^}^#arE~JjThLU|!dH z)|eCLdJRgCo{I}tLqj7xDyj#pbinJh@%F&ISk>mX>qw_lc=c2@MN$XYl9B=-S68^? zF*0(+s>sMUjGUa<2myR~5o9WFhEu1f84i5}DF@0YNvOBK+&ZzIgTV|+#M{7cquABo zC5&cQ%>p}Zq=uMONuq8%NPs+@#o(cIHF_;J05BmS0D9=&C+v8NSJI0-Q&}v1C{}5{ zI1g$58=HB0q~#6Pt%>kHF+#YF;SG<7>CJXu3T72viIb@C44!ohKOAT33Vk1ZPcfhU z=Vzneajf@H)U^Xs{<=zdbWD)HF+MsyPv#h1up|>9<4adW8rZSh$}ovvpHy3au*Mx& zL`}r|ij$9@|K1l3^6eXQ=TS$lsPSY|kF`KSM+Xwz^)gLg74xapOF&Q%2{5O<}vO4PJ4M1{6;1O<%fuAfL)j zGxrY22FAv^@tE>HJTQ5jKe%)Ku_zh-D)-ioQ@7y*Ps5LVwGBLtB@qA;7l*fni8B4; zGCpDyT{V~v!=|Xg)vj6kt8@u|hhbdGGZb?am7C4G#rT|z$T-*oDsOFqi0~2exJC}- z8L!-goNR|C7SQZ5uK4hm(Qg=kKKs2Q3lWXSA+5(#hd&*cI2xd=(L!6+NFMMimniVZ zHLY_s^U(WE0(^3e1a0gDIqXoA$zQ*4q|tqRnCOD@mh;~DR-($DPhhCxDgblm{u&x2 zpv;^$dNIr`Eep!Z2Jd_~dLsZxbF-uJg-n?Y7k z>>xS_As#6{zhG>7|BOZq1^*>H;NMlKVFSRr{Uvp%=^aCYhsGm_K$yL1xl8Y*yEXDD z7^)RS#{@I*5!0JK@0a}^pUj7m+0RWM7pKQ$&CNs4lOFs|Mp|zbc%w%(9Gx5ut;A{7 zq{g=QLJkYnj(fqc$!A|VM#oZUygigA9yHp<6sAv@C~x_WDe>jYdGqz|;=qOgM<2=- ziwWlVA#;$L)WH5UAS_`e7P@#Zk?4JVaHeB z*smEuf&QwWWl$u+%9lkx@}g!RQBYCQjrRIL(r`(c7EKKRW?={mUO2<@3R6o9p%u@| z+eiKxvA43ada!}MKAmK-16)&>mWIaVF<$!RZ-4)71J5oCPymPl*=`;K(_Ha+TWjl`{lWhJ`M10JDq2#js;78H2u{AU zT)1|uG7?=JItoj0!4g9W0smmkJm&Q}`zMf936Y~uQqv}B7$L_p^>D2e2 z0qUAFdHdl9r9pP~%;re+L&=g;dXq5?#&OacLL%hyRvf{IFBc8+_`+g{SWHoJZCwzf zE82|@P}5ifZuR5f_SdNX`uD5mM{bQX{z+bLD)-vf21c#icjA;CVx%? zw6qvSKY@np3p#CzfG94V(D)iQ7xIPE)a%=?E2R(DIX8hOW&nt~^z?LqGhH00Se;h_ zIy(H}$L~7~@zNDTb<2r=484E6YN}pM7=t z(kce>f-ym&2!SX5<5tse#<8WKyK&sNgCuEb@j$dfXOqNZxQ$$Ica|sqQLbzwx;e64 zvKQ7gHl^u%Sy{BeEvdcZeHn0%fhT9$Jq1fOG~L-U5wKxnnu7A!x||vako+Ow%aYKD zqLq*crg-@aUz{H&SpO~V(*qW_h4oF%*E6vsnbStpYsb03T?Y^J@0!~in{n<^g;hN- zRwsI~CXRZWOO&mZ!!Dv-tfy0y#BDGhlFw{oS>RB5>k3UqMUtrgPlAp1p7__I7uW;n z+SmxdGl}^3H++be^%PJ)RS=ka$H(2xy#k|cF3dhmgg5Vz=&sHJ;^L42Wsf^@0gYn7 z@{Iltk2CLWm5Rl;qf+dkbQO2X7(Z6EESoMdZ zv3s(qlA5pob(aWHmg%JF3TGxNQ4Fn`|B6#&YyYDk;r!s^xo&Kf+9YVbOcw$|w=%3K?MQ-v(v_O4!-t-wghkijosT8bt)MIsaC(g+ zWv9vj!F43?rg9vcUJm8`X;1%@b4FpH) z@KC&_!_zESyODY(nuV4PrFLKaE6WMBL2;}bSZ?u?-(d&wKBzD$^@`corixo^} z7|Y`LBqISk#pA3D1W4%>!c@J+6jzxTT}r!9vWNM?^MMqfFjL^9iHygQ;v-K8^$)hP z>R_3|fW~}`WQiR{tD(NK8NqxHBN{*NOGkPaMF1!XE=_#C{)b6@Kj>~lx@==W=Q^2! zBmJQ@QBh_~z;NVjWSusRs~CG#Sg=s-dyvXbR7s%x^lozDgE~gtj#9|kfsb|Sn6yGe z7FjyzZJIOm<5;WiXlsV~<`0${h?=+W(^ICwx|fx!KyYmsDC4#7lrbMO!H7@ zk1407=*S}dliHtoTc<7k7vk_OW*4+bCsC!C9aSR7S>urbNB;F;d^w+D?Q4Ik+J}YL zbZ3`uJlAcW-8hi>z4StyN{|=5+cLr@AR0*31|Xc0K3$C&85sz1Wb(I2ofGdQc&Mpm z1Ox=~id#^!vzPHB`nXiY)!}oA5(VjmKssF#RXDSlsVD+auNoRW_xUDdh(46I z^~3U{d*hmqju_@d&W;80>A+>vx}6He%FVVJ+YY&tU<-}ogXt8!NxuOzm*?bPB)gd* zU1^hNS0Opr0#qmrPE6pLeA5PHkYCAGa~y}A3;9~_$rCbtsv8=nwfdGY@oT*Ed~&!_ zPH;|+!-b3cn~ejs(Aw~YtKMagn@cj34zy+`1ldM4wnBo^lt688uvaoXK+ns7iI9(Z zDB+8k&+wdY*E}D3Au6x8kE}$Z5xE&Yy-K^DK)}=Jp7;Jc$rA8cFrmc1THv zrhwp{^5S6bs<2fziTUqu`asRq;V9 ztEXEuO#@%DjSc5h`27LF*DY4Lm;XXdLTc)m=?l)cy}eRQg!vy0BC6ewI6(ZePh{}l2C-6@mFo>`?x2?uZ8)7Hg) zWC-*}VA*-82VpxWs=N1RQl0qt*!I80Yb8N&ai*w2U&K?p9=|S{aN}M=BO{}tj~VEN zQ{j!8)ENe%nD~@4=yR6WHT(gB`>(R_?4_+N=o5(r!kT{qfNz%x7igFRIsDyCbr`z& z6w=uJBTKtSbR}DlaT^+c&`%G*R^7DNp74taLmP$CqFKN|yTLjWELV#B0mD_W*gh=n zr!z#xo);O&Q<>FC_P1H2N457I*imc_Z2t0s&fCw=glJ<4OY62?d0Xl1t%n}2SH~CJ zbn<60=QF6H%WPRccL}4l3E2|qbxES!I=V72*|pg6?Csw2m($eaZ7GXAo>HF`t+TJQ z^r>(P_=ugPV&83@c8)iI+rGbec{0|Aw~R;M4;+Q6WtsPV-kB_&3@;#rl69?Vc*Od7+L~ zx-m99QioAOcu_lUpA(yqM@^6l0yO>F?HJF;rA{Km7k=~0Ngnb_S$3iI(wKoqgW8`Q z;{<`Fs7}MAS{D=4zzz)irnc|!mC2nqCf-jtE-}GhZ5`Vt>pGGlb7s-stExHHEM8i> zcj|i5zkpkZbRe_{Gc<`U>AgCEERG*HKiQplA3v_yPXsZd|K`eBS)qB2XneNS?~Z!h zbIfig7o$LH*Vgu3*xEb0{JhEd#B0)xf_w!>(jYTy`o~at!Dj@d=Lq!XQ(@K~&8BZ< zaO!-UCjykOkF1%&V_&Wy0GKyOjqfYERRKc z&g5RYtHMSMcbY!h*thcI@hto?JJCmv)Ty!2qp|1HixRpRUf3~}ZPHu_NmvPP44o!& zuymJR4D}D)AB}00Y-a68MHK|DydHf}y`J}2H4As};~`%+sdwq*^-sED|DKV)zq#G> zh`sW*=;WkxkT2!H5+Du|+_QE(Oz0eQAs@Wlju69B3VFThCeUzi%@(8_z2({HZXokh zCdgoOol}fI`i*lCQ`=-nSOQuZ{^E`X{YNktu&GNGYQZ zTm|6s$!71s@K#W(#s|+rRZ>|^ZINZX@3D3eDRFoMYokj?!^l5a5JU#(^Bq1(|Mur> z^Rhb&y&t4T=R>S9con$JmBf3Rl4(}-M$Vlb)3KRLf6jYKN3Tvm2yQE@KFM& zupR#(;HWFf${?(mK3fiHJ3ss5T6~HCGRw8t{DtyNsq&u1NRf(@m&v}=HvTHMBE%ou z&0Q#k@yk|$;yFz!in(L>(U{osR0@eyasmqdVwc{DE9TRrCunn&nn#%5;~-iT{hJ~^ z1vI*em4Ye%S)emjQLca4JT_uKa(+|@D(%0loX4ptAQNWampc_&5TIp2ba2fC6>YS_pAk< z49eO@-sDFI6Hq~>_%Lf;pp6Zbprd@h@FsyyM4mbScs+vGpQ&-q;`Su}zI8Dd1G7&h ziv}SYm9aCV?FuIb1-+*=&*i+1AyKqAZG*&qg#Gc<^`$Pr2Wa#9IV_K#2b}>IhfW=+ zQuFtjBKgDh-0p(&scj1!3pso|{vNySzpgvOQ-j>LNbIV-sA=3mpThlOR}F4${J&=O zhRUpTlwa}kGu#A9;SsD;-m0rE{EA=VJuVW~_}W-_U(OEa$2un+VUZF5=!qc(?Tv(xK77u(AK9^P9oT(YBuuW` zr270SA!ZXoGre%scz1&vs3edS0oMD>ivhO0jB9~fZt zwj@=RHrVnqhDb`E7PkIztja^RfF&4>{-5%VO7lC-WU6BSjwkt z3IaQ$nsCvxal) z!zB_@YMSBqR~m2BG||DQWUOkVv&oZgHhf0$Av&cwSlRrWWn!>Xt@S4xDK%#-Fn2gv zGK+-$`RrXivM{375K96+qCkKorX=Rb6Mb);<2QfI>ho%h%nx?n53~X_ZiCIM1UVnX ztwl#`2I6|r8|)09Q11PEyzi6O4>&Pl!l<3G$Q6u;_3|qhK9_#ms2Z_uLF}blqy~2U`ZYQ!75|ZE7;sfP16e zK3_>QLK`LpM!O$)?+@$uVsoW8h41MUY=S@f0Ch<+MRs?;!eanO17WDwT5R*z(E5kJ z+Pdtolt}?kWqcqH%(TfA5`cqt1Ozxb7Sa>8}RKrfoYaV{CMk)iALRu zx0?1_>qI^V5vZu51w1zHLM+|hu5q1HeQbSq48F<&{y*`guZSqte^o57VAA1d&AVtZ;#SG0zGlR zPPnTH(<_pd67-MILbhNjzfG-j+o1grx2!(L_hM}(eYw{$6Di@N$LSj+Jd$JAi~^YVL-#A-NBr*XQlkI9KotT`=) zO3GBAB1?U%-<%5MKS{z&zi^}11Ge@kqd`)ML)^>R@sPYkU>We+$CtTX^%_~G>kVE5 z=dVe$Bn6%m%s(}e7HI7x*muZurkdofE%mzxTM-$B2BbSzIY>{+hsJ_~d?WQry&R$I zF2OS_ZW%hjLXQLdEDTPFe(a8;?&q~Dx@Ufe9JZlx$k@OhXf+!qv`)0f{r109cKoFU zuP`4|wI25sA2mB}bMhPiIfMOhkJ~E=i5lxG7EH@AaYFb~AE4irJ%tzFY4PhF5bwj( z=ksi!a#-kAF0#d3r`Gya38Vcr($;o{l_!k$r}Qu7IrZ@F66pi?DqiD}?qjmZc8giM zos!D%_liByhpC?{`T-mVnUy-*_`6wIOpkTNNPrvhTj+(8q*(XcPO4f)h-23Z#XLypQydh3cq@B@Ez`Aeg)x+ab9+%fxeJS+nCD*4 zh@b}`*Am`D=YP~pzLf_Zi%bNfv7rH=-6jHzZu z>EFWAvn64oa;WKwsG!~&WYWCqpvjg=R2Z(+&yr(6d?1iRZ^T%;MuW89;R>t@qnS+5 z%Jhsmf%><%zb`Z2^3!jicK9jw)Q+LPZK#YcWG={)icIB z@A!?A?hxoE4{$^t=Vn_hlb15+nY>27F864_$9EnjD#gYCz!qJ5n;QocQaeUSJ1H~` z?5RDR@%nD&SeeZChtbzuz;~m7Jmfx}L!mTR7HZIvOI!Wys#!GV($VC^d`q`uCT@u- zfC)g3LTKq<2;ek*?7+FjVXZ{%x+2mZ_^xltZk2(jt;!PxYHjRq@>4j6J3Sbi05$zc zG8fgx#+%E@=}#++nr0w(cqzxTTd-_sDuUV-D2(o) z$8{I*XOE{KKOf=6*o(cx!%#U+xAJo%u8&Nw5SiqQ-q0Q*A1Qq>))e*$on7_7_`Sb? zknG=6&hVA*H4;H>f?T>7$prj-J^UO#A7Ru*)x;(Ieap6s$G`krg-q8(n2Pt#vyaEC zk7UPZ`rEm!<_NFaTJdwm5!C9r{gptwwo>Q$Sa`*f7!%wY`s(1RA}|*elKmT;Zu9&> zj!#_yqByu)Hj`zJfdXuRNuBZmTNi~kvk~8S?OqMI>?x9S!%mq6@?;w~C?jjj3&m24 zg>FH%@4sf~KomjV{i*l2(+R^Qe*NZQxk>783Ny|x!V44u$4d8C)W1{&EJC#Xu3s&k z-6^Hj{;^eu-ejm%mGbfJBz;%5+DO` z&x(#{FTLpozwBy}a6fe4hh!%a54_WiCcTF z9m5bLPx~t|K9ZD>xq;uib*#HO*0J!XQwnM?APpXpu9OMjK8yjh$wo#5C-|z!5o(@w z;f=bN7>t4@@}IYcK(XoQWAJ#B`N2*r-)`7WQcHyFAca*9=e8N_kprDWhH%EEJRTFW9012j7xf22m+GF9MXG#!+0fTXaQwc zKc@FiWPHI`yK;G)__g&`bQkTEAh#`Ql3g&VmUnOe5D~I^u8OW5*!}5)KO@lj3As)+ zh=A6tkrH9iEGxkEFB53dos%W7Y?0?4rOgrNy9JS#BfUBsRG}1!5?FC)L{H)ciSSQm5-Hq78|YMC8Gwdw)@QUY%i*%J>s#!iYOZwQVJ!? zpuDACWX?97F<+Z(6BAM)y$#iq5gGVW{yx z_x@zNolj}tGhKpbkPiKK;xmiR$e@WDT3Lf^;RU2S|s5aPuAtIo8|JGEMs0^l<)gi z+?Uj3{J^l}lv{*a-jtJ1A6B7rY0wk(+c*Q$lezaYgg4vWZCHaEk?w5Qc!EH8EgxHU z(e2H~pPkLoVQ|>3vq(|xVC9e{DOc=>H-kSXO(M}pkY$J!exKcDV7+Z?>vL#diXIef zl6R2+06$CaKFiY8o0>P?>EY*r4U%x(j#8L>JL(^C`03i4Y zb7RF62F+f`lKCP?+(X^!^Il|7qS3+D?t&ZIg%X$=XmJ7n$pY}j<-;nK2fH{XT~#{8izGdMCw;%|RrB7aon`_Afn(pq{8xVp!{%9WFBQ8A| ztcQ)J)yCG~8R&GWe138dp-oAK9rdxEo)ifz8R~|6ANzH0pCeq)92MFV7QsCnR>i+lO| z+#j{rS^s`z{1IUl*)#l8jS|6{aDrILb*tBzifFK_1`~CUA94iy$Dh6Z+bTbI|-_HpGq}zDUAvq~Vfqe*yJc{`A#`-Ubzt!YSFid89 zlxV+d;tlxheb)gKvv5r6qzp(P{%N?Mxm^OoA8~pR4_5c9e#nJeE%%FGRK-uQ({dsG zHrl7{Y$N>Qeh*T1uD0-89z)`l2x38Aq!+*M18}j2C(Vg<8Un^Hs^#SU?95)@GApYg zb*^XFMGq|l*ks2&!s;bRZMhRkBJ40FKP~s`yn(v=+oXvPVlEAEpAx3lwntEqRX(!S z5+5)wpKhb~k)vjzO=1wpX=Pr%rq2cdBW)Lv1NhW^ z+S#$s&h%o)Q?3EY@a|~RZD~zp~@qXBo~*GGxKMD$POd+!*43= zXv2wYS!My4L9PAejn{z!{PN|CCb&iHT|$>xKuKUBsWgB^K5oH_u6=OFsL9bs>|_T* ze=Vhd^^w}v+p6xAKln*>rR_8?Zw`^Tl`jM{T9$meOBhc`$JAR(ub-|dAOJ(k%{fDE zpTW_|@tqOfDgt}MLzBci5mbHLS7(Z~4WRvqK6z%q2V5AcR)LJQ_p@ipyy2+Et-yO> zxl##9-Sz5^L5_B6tVSpwvP6j*-yDdo9<>{bWQlmPu&@@NLxnJtS6L-Wg(q$JDA!q& z5rJ0Z`069EYbpgTgqmiC=DF`r<0vBpL^OT(3j)X1|KOPOVBCSL@N`cI`ZmPSS`RM_ z^aelGu7z9%>>wy!r_B6fVJ1OD-wq9&IBJ9k&N@ z`N?;G*>f30KT-ih(WGj#wIUMXx&dww6Tk&clCN#P_suP;PdHZ=ro@F~na@O`L_8sd zqIhoPKqFV~j(%tx7!M!Jz*kz2z*V#%abLLVTdjjDV2tOt6|ke075!GsriW{00Tg82 zrjSOe)Bc|tfrH?at8oXv7ggg#QD#V=GTj$K&!kv1>;{ZkA6Z>hu9=G=Fz!~YS(duWi{|W&C{{GB8-B`Y8Im|uX`1*#sTq>W! zA5Om!tT#?j;y;&|Br~)o$?R4WXS<-d<7L=XK9x`9j}G}1=i%k0@UBqyEV||f02c-! zE!(MlDqmQP20dUW<=$w}Q~4B+!=v5_47h(H43+QQ@}+^YVQr`KDWe&WGXN9{g+k#6 zY5*t{3dKwD7z5zw%8Gog!%pQ>`CNvx6atk`@f3Io0t*ehzKXpWs4SC{QaMxb`F|r8 zmG8asE3^TGo!uHUz%eo5QDB!&uGq)_8@aq$K1Db@!TNEF@Zge=;4Z-#NPysy;O-jSb#Rvu+$}(Ghe2j$ zoA=xAoc*)s?4I2pGd;JbyYDS~s%}+vnEE>f94rbf5D0{$q$sNi0)Yb_KbYvinf!rz zC#eQlCi~gd+{N0-&Dzlc1oBMJNFIw`5_%ReF{FigG@~CWmeRgmlbo9@bB~3> z#nUxQiGeXGTz!9Uuto%@kJ z2EvROv2z|H>pvH}DGls``FJ~@XIlqmF3=>}9y!JyMTUKlDBfnVJm^AMy zT1^DM>9%=&VpCjFW&tskA)gqWCq4}i>z_m)48Ovnve$@f+>eS?qnJlTd`4>=b|B*s zcQ12EUHYx1qkE8wl3&w0&SCG_8pnP2>5$-sDbdX`CFD}-g0*QQQk*)Bx@NUEBeG3- zxtCl74nM;|4tT6cmt?)1JTX`&6@r~~y0~(k@(#+_(?hlF+C`s|knOyYrDKBQ{3Nkw zv-UHyQR3bVXfOK2r^<2b=Y9XfsNW}|VPr!pA$nrBbB%nQ*{ksQZC zR3+Szghfl5T4GmmmLhb6magBBimv%3tTddui#W;K;VqM$8Yha9eKNbm*VQvqRsMMQ zR^onsuP01R8YDpEZnctGP;>^)6=qu z#qKVDzfTv=-Nf-iio;2!G(&BugQ4(ZADAhgK+n;w#&XWHWxGT&@!*kpv#ZW;l=_j@9jF(Mw z{NU%5lmn@brU_XkvVY{Ol)y~Jq-r01O+mQ6S=~XDl{0T8kMO4%5hfK|CyUThm|!Bh zaAMo{3ju3Q*2U*IVGrvjQ@tx56La>>dO{;;!#rQkJ^#ijloH8l1U=uZpEJ3*+|w|3 z?(bkC2+IH`{~236|GUS@1$Qkt3t0A_0L5NhDS*-|m9)mwa7rqBarl|fJ=Vms0>hjm zX+`EY?#ebM6==&d1zZd7Dsx$tugWUfGXPrCo9W_&0>{n9E&!U<&hc2@ocdw0s9ExE z^xM`)X`h`;7GbO~$b^OC_QX5PCMLadY4W^g=yDdULH4%Rd_F;sRPHI>TuUB|p%o#6 zvJwS+R@>lrCXt>_e)UQiEPMSg@Of^bR?)kRKz7T%SViGi8AsUOmwP$&4?LOen4SAP zSvoXcPR)uf+?lN>ZBlQVPQL!;(fzf|J$+=P?-fSOIQ5eKnnA+*lFY0+fcL6FRaMMg zr}{XnRTk8Cy?BrrBYGand|hifwx7?cybTaV(-D`uQ~Fi$#ZkbGsi~j%3kFtUo?5ew z2h)jL1=lsx36M5-X8YjKls;9d{Ur2ymLa(D*FgyGNy)z?k2SAvD1vqQh$Dh}0e{#7 zdJj%D84gcUEr zFS&7CfyqAK9QSok`j-z}m;9R(39!t9lwBj2Duj1RwA{r)Rg$<1+>VzQc2{O9y;+9| zx(4Gg>1{wy(mm1%lne{%+S>X~jy{=YO@6h0;bPgf&u7SlKY)isn>D*(H+~B1S^7vr578z-Kjg(_Bki3?IU{^XESh| zV}bJ5NXKU8zzkN#)`hZd;+xhY9*RQ>qVm?Imq*cHq5$@hrEN{fL zU1oZ}!^r>u-aNnjON^dvpFcDzE&-UVg&A* z6v}1Tm>d1{7yOX#^WVX^!-d-K8hP^WrPM6yL~iO<+YoB~bB zVyz`!(bsP&0AqcMqhZXO> z8&TxLMZVnwY8Yva(jJwp^^p&a=Q^0%$W#9EaN#F5DfjQ+E(;P_wzF4yUk*gO{^5`6 zU3@U!_=oR)kTS~UNbQf(icR|U7__v?pG8+$aos-}!{eG4^(770^skhUcsZ+irQNaE z^rnWUZ}N<8LKHl%VZ1ckb05DmS23`elS;w5vlY<^_WC$SEPK-P0~O5eTOhh z-opLFlg@B zeq7x9U!Ga5Cz+1(hjhAm(KvS1wh2!#FtiK|N}ocUoL&MrB-~_i5dOiTq&R=9#&Jy? z^oozKzGiQ#Xz3TFxNj5lu{-QMYm~i{)a@XW3Iq11Qp7?nkbpvN*QF~rvWII?%`yO{ zh!=u;_Pr4?Jd1YV>%V~NH2R3$5j^dKP{gexz@I#vyV6a^PvLSrh#2_U>sFyg-uwQ( zO^APez#11k4Q8yuF7=9REn#+B=a!tKl#q}=?0swSo*?VIv+2; z@xD18JKgBPiCVE!4p$G#Hkg)Vi6J?WR{bxJ=sgT2X~0B(j)P5+l906LkGYCnhjD<3Ajs z&lQFf>DhrF7ZYW|1Q<+EW1}E3F){8O7;27^s=KoNHw6GULcYV{{$9itg%(3i#} zYB8A`4KUERJb7%7K1apTF$=zSpPN|&cvx6il*0*oX?xqCgf{`S7_+oBSW;@_+MEyF z3GmsKV@qBuI~68g-z&r2vHtpklENkQ`osjb)xT|4=1vS$-d^i43Csw;k4yC)w%$Am zPmzp1jUw92&|w8oZIhC%_tE%$PTFq<024YLFV&5&c_ydd=II=z=`jNO59nDO862n8 z&i{#h`p+;qMgk$kXEAD3h1VmHe@54RUyNcc^P1Vmio;S_bw*n@hh z(Q!9~(qTQ$6q)KbH1wJmaakmB_V=e+11kat3|PSP{nrs_#}&Drp(^?XQ=L?A!|0U*X02_rrFb4tzjx z21?|u8l!q2t=Z{%m(=V%I5E`YeS2;(UYP4Av`0yzMc5t=JfVR+ID`5lsY=35FZZSv z8te_*=OOn?YXL1Zos^DkUFmOJ_1e7!9>og?kcEvctP+Yy4GKa7P=W2~2vhSgX+Zp_ zi>8V1q(#4jS5?3F{vprQt1FWb}&WCPk}s{`gJx#(!{sP z^Tx@jiO=7BG==Z`>8aDsMAn1^V)9Voh)jMv@{GvRr2l@l1a^4{-Ziv9$p9Z&Qq9o1 zI$y=q^D|#w>~O6^PBO;U5FLeG+y8iFhFwSHrl+T2@rgp?^oy>?qkAX1el`1dg?44o zE*rr6A+9DMA_4`Qp&~_M^dY$IiGXjPjGsl;6p0gS6~?&l1^g260o#m2=?|mKhJG-S zRILi^Sl!puyh6vJ9)>j9eI7~VvRkO>v+z?@#o@CY|22pDGHuNFtdBH#%t9P~sfC4w z^)lrx5h-b{$BD`L#YM_PURH;N?3ZDCXWx4o$)B6|UVGgh46hpfeamV3n4=OS?V>ma><&iIRU= zaX(yXO#+4%wQLzJ<5@5bIwF;M07&@Zuzc$U&go`Dd_Ksofd<_*ANArflcD_Ca zws>^CJ!$@v?HbPy7n>s+1K<71-jvC}c8yA%Eljh~^0ZE7llwA3Z^8%{y2$i~4 zL-1?`eA>e6{BIbun(gRto7DwGtIw1grb8RF!yb49M2HDxYm5Th&xPm$)A z5s~Z1w-Ltg1+Q*p@)TmKdF^y3mnqw(yS54)khN@DAk1e^KdiL4rw@r|!!oFtZES25 z)zpe?=PEqCy*0JWRXO+td3+0wR;VGf<2-e95>N5A6N@VxB9OyX2rLq(&%R>i^%&1- zR=+u^Jn{Te$dma?e9eimnwO%DaDIkL94bY=Y@4cg2O|W%j(OSiV~{c-oP2rYPH2~y z!{|oOG9ZD{M1B3K2I7nvaFgbYh>^@YZM^|H8r1a#mL#xSaw1ghJ)cz@sS^|8VOIk6 zrFs7|Ktr+g4F4X?mYV}BU;I*1QgXF=5Gf_)F@RL^wEBr27#04wyl`RM^=Md>GvIm} zhiN(|z8GqK%0O+~qnRBuX!7BC=R*=JqAvHvsnYsmU-%7mg{wg6(hwJFl>yLK;BNIc9Jpi zA4fw}v~{^Vb)voO2DcG8f4@{V$?%7gDFUxHlX_Kda5aPlthRpyQuNI>t!}+@2L?v#St3&iPe3?3f;tX%`r+f<|Eq|AK zgUZ8ZUm!pjc*mB*m*1Q2k8i0&n`kW`&Sz)Vqo?)E=Zn5-6I!t!cNDKsLm4CdWPX`K zSG!yxi==-*iL z^}_UB(pd(P={4wueRS-0)`by*KFQSgmH$B~^6lw!@-?M1!^@XVw`v`8e+Ao-MZxEL zxksUj$R_VBKlvfHB)@(>=1P1mL1;M~k~P2i=S0^wOrrc%5b$X3C<*g(3h;Ub40OUy zXx{-j4nK+Bnxk#4-4qmg!jBxf>8+vWJPEu0gyQ(DRnGHEMFU$a^d?KWouB6PYvPXn-lY71j^DxCJvEh9b-XetxchvuoP#7H7(m)#m63n=D}>q5+>l&;S*0TW9#vf&6Y^-r zUWgf(ft``9w9SaAqqMHfPaH{Nh(dRzrqTO?l+HjIHn*7YPaR!i0lJyKMU!sRKO|Nl zGu25T-Id=El!DoUo!MW11O1y=m&-{5ENk9w(&z3pU?NK}sZZ(+a2jfvw zknR|fYu+#2YQ+`Y1^t@QY(2e45{(FPCwCqCmoj7@P(G}*Y8V)y=mmGwHKEZ;m_DGQ zR_SrZCnaud?W(9NVv?vx#Oe4i#!eWiLW@beTyMYAEr%+Wi*$704kb+)YktRD9R|^S zQL*z`c1KXpbS3Oc3eZ~iIs5>RLe9nTDU*H|!(@!{%(h5PdH>!`Qr-Cru6W?k^p6e&j>Z*G$NZEKumpt;Yi>6 z@~KT-U0p2`gAmgI==+_m-LkNbq9PWUl$SNR4l%K|uC8EBW1?%;d@ko`G`^B?USLZ^ zmrh*+%!Yau+heQ}_D0xWx6gsKgTp#z7a5NJ63}y5H#Z{U?LN7Z+F7a&9-9hy8tZTX*XQ|db))hR*jQN4_&@fieTEgWRq*527D5StALgF~=|gk6b)l znG0llv=ft1)lFL6o>X+48X7*__mcD(m*6=e&ss(Necm9WC^`#VN!4*W{R4E>EZ%Vk zM8PamUZrv(uKAgdxw=-he--|ABlLW86MDYn_f6KlKA4dun(ldgLV||2W^cgiQ={=w z6gm!Mjn+YV&7N5eic)S%X{rpH0*IB1E3c|JDCgVeOG{Ifb?HLhvz%G9@LW4@Epc&i zA`+6#jg7#*k6jZJF~iEcsadiNywUPFo$TvSQjiIvLw!j-BD zsw4}Dsk!{}a0NVs zsjm_L!q_+TkaDz(vFP;IdC_ofkiVbLkDoss6@7~Zz|>uzeLxjb;J98TLrOz#BgYMt-)>SAoOBfBx;72=Rj1iH2T%O;u1E@^5atC&{g;UWO?&e28SRRw_xfLZ?L6(=}_mJG8gHGgAzCr<*+x`Upkg875F3>%!7k)cFBVX_R9lkCqrGY>W) z>{!^?*wGfpI5fl}Qu7gh%F0*^3sGzKlr$zDN%CL5H1LCf%d2~i*yt3DTHJTYcxnDm;tG_^eS~IOmNXmA z@PECXWz<@u znkrd~)2S_Bm|SYnIP@(6AgFBnGVqW0XW+(qB|@tPu-)nK77&yC!F)lW^d0z5^Bpbg z_U}IIe4?zKW*yVVi!`wQrL5D7CP6}3Cj=aP`a3*Kf|k@S6&!yNfAfwcqHV99<#LZZ z6Z!HG-On;tL39tfO1Zuns^{o?9I3fOl$Hsq)c?&<;+v`>saib20WzdKFAsJ+GgCwo zEO*{*1M^rPEMjqaQ(dB0ivDPk|Jf_+41_W72{E5t4A?2Ts!)G9URIKATs>TFCQN49 z8i8?t(C_}sfwgST@|ygMYLHj25pPFr<&av1G25k=hX76%=kM7%zwGKP~1Lhzx0D#LVU<# z<&bprmlwmci^GMWa(z@uEoj7;H&vYt$jla{;@y*Auij7w*QbFW5HBuiyH=@}iZO@W z_WC58);qno6=G=Y&%=_=K0oYKaek;#4>l$CB5sFeL9NF2cRpF3YrYGg+9%k-XVl)9 zlkFgBhmn$QgVjHAJ1+{92!a$gv&eqO=nD?mzPYWufU=ajqL~swcc&*d69a-bE1J#> z9_YoqXP0*Jw3gCobm1NDdw+tvyQS?H$W-Cn4KUKK*Ph$FK%lvMjwc06X!Kx~+aZvT zq>LGg4;hN@4|U#p(_3#N^< zy*;p2gmsafHDcMSsha6*KpbXtlS|779ET_PjUJ$^{%T6ks#dSk$bMIv@X!^&>ZYb7 zy!~%lF%Aj>UOTS(>fGBoV-03>J2vFA$yt`8LcxLbM5NpL&`^3^|4Ke*g~c3!zAS$0 zABMrEs;y0BxD}!ZfO-^E6kFGaM{4Wtj@Y<|rz!-TqE5?-xqR#E+nu&0!uF|h!k{Lw zsCUr$h>k^UE7d89ff%({7SEgNbH)+iU0h*-Ckn1mV+m}z{u9izN7l}{u~jKu1soW_ z@2s<~fky+G(A~8nqAc{^va~OON)VzwL)FefBOmi(^lYpS zgDfBi>O^b~Ky1I+i~aB|LO@ zOXI{Iy@xfrlK51RFlPBR`tl58vq3%>sM0F&X{ds%YB%xzJnlgAo>Xz!w0HBfl?{s!Yv_*3;p8hU7z{MOnbibu6X6jTh8DB}|aaQ4Te@SS4c(0#HjxjaLw3* zr;nmq$V~DgdE@`P7hqUPLob2V|ILkjr}r_b*vq+=^P{0|D?$K4wO>uhhlYx4sDBc> z0ni%cwCNf7au_XcJ$%KE5f2%vk6XgT{|%-K%?1BYta(o26m9oP0wqVd>W8>W zL;}tS|2dhow)QhK;$()_t5O)idiB3;5gPDwk-M);H=s+>@D~2_kLs#s{qZl*d#@G# zCTmFd{E}a{Aq1$)%l)YMPon!dp}M8`S;NffaD?(f0;SjJ{>@>p^HN<*$MWFn#F8Uq z5EXB93L)X*9Ft2MT5oz{*TC|^sV9sOr@s*xJet<$Z}-)aLz@8@MnXw4YOOB1DV;GK znT@x&kuCRoBz^XO$O70ocNS{B)&sqgEhprO3j$FwTt05&JfjkdrF@tEd-$;RGgqI< zvW^MB|HKgHa3G4UL)D#Q>3br=C8(>mY+C~GzwLrSR!*^y#MJoY*Rq}d&Gu_j(oUfG zw$SX#!ZLgO+`q?%4fOc+H~_@`7sztGURpXCSa>wf!?zv9@RR)%DPsB*WoHdzmC@qB z4?2J4qV*5X{;R(#yMfFj_$)CJeGbG5=4=5QhTxipm!+ELhU(ThX*lDX|MZ@ZZ$JUrqY6Z4t#f?ctR-^WTD_>9X%h*|}3bm~Oy zho5mVNXxwZ{OJ$Za+U@W@J-7}Qn5Fg5lrj&l2cr-PeNfRWFn_Yi``_zVWUL^A-V3j z`YCN!-X;E!wc`BT@`kg->;ie@&%5AGZs%P^04lYE=1<&b8Xb1U?==Cjp zEtcpX9noja`B2=RnK48PsBs8)UVG72+;KM=O))T}KL9;l9Aks$CLpfy|2bbSKil_}-ek)2?#rfBuP zGf`dJZmcOS!u6oQ<57vFdl(hNv1ftG)b+S@`~2I&I&V@vfO-P59W?+<7v+l8l#Fm< zWUAi4mkQ#~s2u8m&eOa0V`#y2S9R{s);G@>W!;Y6?QC<( zjHwYru6zn<^8A|P>{i=S#?k~$t4CP@o1UJcQusW+qbN@@nL|${nmL^9-`-s7^J3+X ztI#@lcRX`oYJ^aO@!ulj*AFD-`_I|CmGr&anI9xlZeq`Wdf~C{BW?6uudN3;v(L7E zroYBa|CtdM!-9s6hT`=4K=gS~DzdQw!6=mGZn9KZ_bWdAP}4G~XwXR7EE#%@4BPSn z+m4u0W6+Ie0TJBdTNTb%Ns@}~D*|b)G?@kb?j*4-TtX0%SaFQZ3yWMm&jDjV8v^Vj zkb3*hv-WT0C0=hm)2j{#-VAF-lXFuqP}PH(?8Yco{qJS^EA@K- ze*wlctnI)15Lsy`>^d9f{bPf`zr!E5&sgATRXC(yE}dC&U#^g+*3r0>Ij7+vgG+Mu z;!T9d`-Mc27QF1^<+-(vg5pi&W^E<-rFpnJNwNuykH->7<5(8MPFAXMB>6u1Y+&qW z`G}PcF0CPdt2ftL7Z*5w!ZRBq{IGb?)P(tcNr>I_LYB-!>~I-&H;TG7C&XPT0J7}U zZ5Dfl>B!^w;Op1yCK}bz;;!|*cWd`R#af@7uiH;AX|t`#yF&gSW$us|sJ-gJyu7w- zQplZI-QWhweR5*e&bPIc7BGA6_zCzW7?gJpN*}8U8v3|FEwSBaX<8;yNm;%t{$g-( zR6Ce99ddlNS(%~h3g;!AiH{P#p_igh9X!~D$gKFDhE}XZVdCiFytCh1Dk6)BI2UsE zbv(M9YkwDIn<++V<9cADLQ8c60x_%pY3DiL*V?#)-Bk~qwb);73;tW%4T7-)kK>Fw z8s|bjphXlcS{TcHej-7owiRKz;^4{Hxlorv*;Vm^bDV_62RKv^_=(|(A(>ykGo%QH zC*2jK6UhmH(_Ve6a$FGJPayY0Twt9K@_$|@{8vPtrL3qPI_90%^rK0{@Bw_(L1Sft zM+XSmNgCUT7Wzi)k(C+}Yqs}SpC$uVeXI5j?N@Ta?fSTfYgu;xb{)~|`#~?R7JSX> zb4@7#U1IinBDSAEY2U<-gR|4}$BB|p^vXg=;UHbkJY-jyPuuYBj#pejtj#{H9;5gg z6e(%HHx~i5h$2CTgsiQ8yv%|Mo=Pbjv`?&2&gZXnL}kN-tJ7XsXU(rU?b;kVHvMc$ zEEKgJ7~DN;0>U}@|D*@p)E9d*Iv>*y&f@>te4*)32I%wu;e{LWwkDngrt zw+1A*$bf00a>L=~V(2*_qeC9VT@tZpznps27lGTfFZzOQR<>BwL(j!A4|)9cr=6p9 z|MX$Kf15foo>3Fy3 z2Ss16A2mN(MH9!YOU)#LC>hEDMU*RbL%3rHoGqnHSM&790WF*LbO-X@Nx_Pi0D(Yf zIrd8qfN;Ae((4k=FK*Y4ce;+B#?F}5=@Q14`zrx4a6m7;qu(_Sh?oTX42on_ zj*%QMHvng47D(&$b!bjIA-0H#>~8TvaT=*3x)K^SL@nSx# z0YBzrJ-{F+3^S<*DA5X3u-ugcXLTSU}{>|Om49rM^Xx7xs#py*tBKtXXDF(%j+=J_h$hE82 zLCoSkF>tMJ9^J3@;MdWM*uQVkY53E^u)^^{h3EW5CZ|#L%Z}tXu0Yc4->IK*i(6pK zM%>_C_gbP4swI+7dAW9!{Q)UfWg-#+FeGA@4uQOoK=uf(`F{KU9Rr($6SNrpR1wvx zhl&zmslkX=vX+%U)qDKHGlUSilBWyrTSDBgWrG6e@Opek&Cn4a!3~2j}ov2{$Ia6#*ET}{PsHX8`@_KiLg@D`0zTD_L`z5>0h(r}bTf>7=oRAaU z9`nzsKH5$mn=F@`lLJlaU_gwv*2_<&zTeuDzyC~TsLE344!mXJV zboUp$3=gxkl)qYARXf=)UFFo(pVwMW?4&t%IP2;d$fjjJ`6NNRGGmSI(TC)|bawuA zN5F{c<19YYo5@a?Cv&%6k zNbamaizNSwLUbf7+nJohiaGWi%Y!<1BsquZSXgmAnVyyP*Mm#@)VQjfqg!+vA03U;H)!GX_Du%=u?*CGUz>rtN%G` zH4@IJA`- zRnnA{5S<(;z?2K#Qt~N~u^|dfmpL9BZd-H1p?q(%7tl|)!gu99x)a>Xz8v17jZKe# zyF5Xgd%0#B7C%1A^DEAx3cybo{9(<^1QN23hW8d()1a-26dpWGJph}_c>;=ouTN4Q z=5Jc54!ZLWe$^tp7z-Py^pVTYdZj`Ae7sN$!>f9P`TIR&@Nv`cc~Q31+hqF@Ru!Dl znof(G3qmkrXwchWQpI7enY@_f2?|f8K#|AI^_;**QJ75)x^9^z;+)Z*)qCDqv}Wg~ ze6R+64S!|7$p6}I-mI3}dYI_TbSkJbI)NhF+N4~<~a4x+RGrNSJARJ@OwP=vicuvIdsurX)%M~G_lJ5=_B6nxY^!ywzC zwI`&_9{%X;{m_GI`n+KG9A??iy^6hRUAuv|LE&8v9 znla4gt4@g{a$Yb`?>LP(1<#ub5LLza->*z-zvsPif=f8_cIE1^3+%Q5XW2dQ$fMfWx(rr9wO5O9sjHq&Mc(* zpaY0&aA*j;J`VHzA?WbeH-y1k4y!=7{2%2cYQUmNz)-K6V-q;Q*m{W~lCR3}2P-RU zmHum%L?Xz*vwz}7#SomQeuX0ElITDDYX0^e{$%1Q-Nc)v(RFj<&jQ+9R2EoNOzejI z)2{e`pYdeA02q|?AIOFXDEwo}n83BWLEr zK!tI-m`AiaK3i^HZk^P}1lBCFoSo6u;O~S)M7@r*KBL8@^|l?pGkKYV3bL|7cH79C zPH#C?Vz}Gb|cve!i{?rOzw$qMBUQl=OCnA`$mV{w>=wM@^4W8se%F(w^@yx9r!LVx5g$dLMzr zNgLZ{Cz(E}@?-)lBTOFq6Y@lDJx1G?aM>Y66wVQz$S1)qHr7f;88k8rL+s&6tv{wPq!z`aK|`@Pyr zK%zRAeBjf8PRHeQrYv$1Wi;5`Z^2vadpnvM3$}I%Tt>c)ZG{3y_Mn>xcm|spmedA13qDdWZN@K)p9n zX16<)hBG(0V-z4s{eBm4Y%c@o8tx|q8g7rs$5%880V=^{ybf*GP@w9$qyLjX5O+LR zNifXIweWmnzY?Tw+Q>|3Dk+?x#G88(%Ml)%pUOVlMn>Y%y(HY!!}t=WovgxkoryTt~u zc=FglA(Alupf4ffSAQrBmc3R8F^7buWV2Wwll!ykMc1Ka5*|9RfnHD0`pGVyq@*6d zx+PXAd2u;%lyFVUh~r__-jLLu;mIdPgpy><)pl3Z_i8rXq}dHn$Xct~()YBdE%c1?3w+Ehu2+6qSe4S)X9~sCvkiU2) zF%iMM@}j@j(<&G5JulDeA}vh=>BfHu--c~W^N*tQ2^L_ponEQb(}OU@rVgEgKm$?i zf8%K+9ebnU{1JUiHKe4S2w8k(fAb~2{ z0JqPF_*?yilPsmHbj2c0?qbthYpv##AbNe4mwpIg;P5Pl8Ylt-#h)PH4$O;C=lf<4 zfzl0hv=A~9b3o)l;@iLibL%&G3TRpAI4K|!5bgq6%hmLfL*?3+)=s1r@2Gk$4WrdH z4Z8bAymXCY@Lmy}NrfKC7KVVB={m2G2>iA%3^u-!YvftS6ex&`@Oy`rH4 z@JXe^vq#)Vh0rbg-63h{nXBQrK9%}YiWnViu#&W~jO<;@!6$5J%rXwdw@rmko@8(wXaw(*=2EbpY zv0%~9BD zVnA&=sA$av`vaZ&6}Ch7hTURWIxbFIA8-*vvzYPg3gwkLe0tiA1`-zQ&-$NH(|600 z#_cbKW&6+J7cLpSqD}dTXa3y*vLzl`+Ukv^}7UWw}@UP9MYw)t?xzVPj%O%pxRGx22Ry>iwAtn9yE3Q<)j%tAF{#$^eA;<(w=N zEm_n)ng{lki6u**7c;4yO^TD*%mO2ze!NWf4wGhh1kegI78)6uZ`kO-_jm$ZH~-rY z{c(WsQsi{~_0NMu<BFj=E+%)eic^{#XkF(!Unzefs90NApAf(%5i~+MQcZ z;=hP+w0kQlw}$;Ysn6)1??|lm4=36ay;^+LBXIhJx-9>C(no3zOblgZ4k4FwhLj}i zefuo0<^V<(9!*UHDNp+p)8RQ~x1$a~@_+RuXY26V9?nPj7#JD#Yd$@#Y&*vyCnx8# znX5fNxS_GxN2G@PFIv7DA-`TQq*|Anx8j-t8m>+c{z#7VqY8}G9F%up_sBndORufpchkI)OVZ6jPR$tT!tsS}Aof?!6E`9(H+6tTC~j&zAz%a%n+Z!A-yrC>G`Begx^AvDh{* z{IIY((c(dPz{MlD>EB;~%fQW8M?MY>+!d zn@^3L?5>Ql&seo_XapsCy=Q}_#`I9AbLGLrc zR~;R5Ii%7P3}rAwoTo1#w)4}n?pef%9QJ#@?9#6iMr&u~16m84D6Vcx%aPe2o))>A zIhU*1R!{5{@>!>Sc^_O0U+^y~*rR z?vT`dZVg}|Wgn>(;4QLh-AQO=yC|ii7}5r>Sd8i?(30bYu)(9d=)H-LPqZqbb&rOM zjR-=@g_P+_4xar&=uD>8b20pPF97o~+LxeJwBy@fnrRn!?t3}W=aNDmX#sh#ii)3c z=zm#HaHrFb%(L$2(sX>Dzl9%`HTZLSPhYCVRJ^Z!Uu2JB@SmyBg5)k15*f=4ey6FV z34p5nD2lxsEALwJLLs)DE9ifVapkA?l!4bUCOzV5oGll7$>-OumP!5xYi}78M;o;b z_TcUw+(~c=?k>SX0>K@Ey9NvH5CVkY0fGj1cM0z98r)^DuX)~gt9GmQ*Vg`+y1RR3 zdiu5_*SXG_*leoHJ3k*3r2Ppou_jzU%S{BpwGB0k(C2QAcXm@5m;E){(nKRS?WOHJ z+|u0;gJ#xmdr;?^I#+#+=hsubtL8lmeS670)(cuZ8^vw#S{qKg>-9TJNm4Et3!(VMEG6 zRr=V2PBc-J@2C%^0)Sch;ctXfs(FMOG$z;>J_6eO3hRY>%oUh8Dm)$ z8$>)$kF%n;3%oqlf`Az>8=)ER>@$l)xU*&Qf7cLO4OrDdct2MTmp#PoGr;+1!aVxu zHBam>Xs^x4rVzdkqJt;sLY8lFw{dAe$5Y_Y{WRl~N`!pZPMEj3@cf4JSSdol6(0>c z-Z~i@OkiMX{c@qAw}1wDB_CtKD7Z`TkZEMvXOByxb6bp77j7OWpzq59@Yid$RU*0r zVC8vJ*c0;`4j1nCqHAE*0{#4k*a(-zP0CKZJd!34@_Nf?kb4;*?7q!MjlX;C-7y1S zE&6?{-_7s_Zu`ItzhAF9shc<9+b>fR=4-EHkL&LV7aFtL#RS|-FNW(@J?n2E>pHE4_>75A02n?sn!5m+F``fLjmk{)4o#f|JjGpVEg@ zxGc2O5F$=v2-^-t;+77mU;5FjLL{B^uew&G*o~jvk}|_0-(FW-3CQW;QcBUj zRr?I%imyqon;Q2lT8LB(4nSB{32No0jw1!s(eWJb8?S8!<@8^jqNATPC9QFu>+AVI zce(-%yOdx(hN$i1gCJz(pts~rI0dPSvN8sESe#a29U`h4FpZQJQz-OK?cEF5ZZ@Jq zPIukrNB@^WroNKUFt&y9)d0x8L27@Y-~6S2_jAi3^{hrX@XdGuw)Eq}Y*MOWaro!D2MwLwtKosh zBZB2$;b7j+m)D~FC}MOD92Ld2=_>vVXOE#yC(kQ`tIyZ&=66yRwTp7&8n}DkDJbo{ zFZqELk4UrrREhQ_vSTb0fWwfPF;6Gi|V8vfTyQ-OryhFMiwe*;g)(>o0!2%CwarldbohwJ2$ElS49cm)m6lYH1z>&ff+f8K z{LGaM&(dhm_V-PzKJ*Mv@nrIf_nj}P z|8#NYmKHB2f^H>uJ>2ab+s?V)^QWFQ(Vp|o5Mv3KvzW5?Qrb95_MQ9@Cz~E(+W0;% zg+RDY%1+MLb8g~){OJGvE_H7r54FktFMb1jJsDKmK0(dQ;G-l!nS74S01@bK_&2a|rZTN6k4^IZKs@&;m7Zo+VDM%4~l z!R(pn(l(r75;%-P3<6;L135+?01}YDCeQM(vak#mlL0ZHe4E7}%ME}2H#xK9*XH}k z2aaY&D+CTY?K4KmcDzw%p?v1FT91(IKLdNa`_%HVzkrR=2br1u`Ns;*rx6VcsNmpO zcpEG&{q}_E4NK4LXzZk03)zQV{uDds7+yzG&^A1KVH!EEn|9OtFtK);cdssdhoJ zH1Cl&d+zX9-#qF7t77oSnWdUtj*14+wNfPeE|nz~Qm>9VO`-F0*&T{KJ=L{cZ2w46 zwaetH{Dtxi1)0Q4ZEf#PXeimS{17F|j74wn!9_Lwrs>CabJV{I#_v2Jc8OiL^0%kO zJ3KN{5cPfVn|JLtZ!a!{3Hc2^{jH53*Ypj9ob}n0spON<+2}S-=2hV1ojY9+-R;Zq zsrQZ$-sIHV39V3D!3BE;qj|Ytef#{!in@KSf(VPJCm7at!c zMn)h@$AeEr=nBsv^!>qj95GRV@2RHQ#m?|hhH%r$Tj+|sNpw9F)SxJsOanS{3P&Sjr43DhOmw7klI*Z6p+ z3CW6RTev4;ccAQxA*buJ>8*0MVEvf((aYlom++19n|1OQFdrcPvWBgu?Z>3P@MuXYbnPalTrN**(S$QVypJ!oV^ z8SV$Hm>2YBD|pPWa>tVcFwxW@Gz3OOy~)${(kZ>Zme#TY>>{5ons2vrEt+m8>hj)A z^k+>^pn~;IWMpL#f5}rrn2pBZKPe)y6XX%H`X9jQMn6|AU9X`>@$Nz#t{NEeP)LQn zrjDOtNZq?fVGT3k+e3VT*^6fgWoHRx0)t9#UL@gtO(#PXMQmk};>Rw7S2mw37+lzC znavOuiq4Hr@By&-bHC_hhbgI^)Eu&w75XQeB3#4j$VZ8c2ZcTdn?B(m=O!BlT6IjD zgGqp{ivU^K=Pc$61~xiPJ=YIrpFjWm5fv5n_oVIF7tKJ}f9aBrmcEoNV}43CGS$kr zJBN%64Im9eroxP1kf2YwFj+WehrSPoM(Xn+D z#$5KVjf6m9Mbnf<=q)KYSeCYyJSCE$I7rv2evLb7%ld}c2NF!OvOtol0fb~5uRO07hsQEO zz)+5cTm7o9HIr4F!=mYv!=pC-Q&vSWMWgY^wVV4DSuhzY;1BlB^mqQIjUz{AR~I(e z+YKm;wN}3-89;$%jc90n7|@#UTj78%y7rJm*}&qUgXpj`L~JQ-6}u`_f(tmLoZTQE z)`$(WuWQZU%n-0Hl9)F*KG|-)JRV^95&A(24!MlQuxK^kkCHyoY zr`@@mNoh6)Va26scf1+o@)rNKHN)aFMCSFZKPrJ31HLmQu+1arQizEQipyl3)Nurw8dWt7F#SV(NsZMwwTGk4N9cK{D1c%$rg3%3K@dBL3AQxH`~ zyogK*G9XwY`O)ZX7#d6ngd;Wk?f3E3)=0Di za=?180m094ikm|f}x-T0L zeP!2K5~B7JVFzsHA9VU}nEVsPJW8=k`2vhy!FU~1u?%gbec1XlTC3IQ4xe-j8}&2YbSsI}BEpeMe(?@XysShBN?ma%>^=my8RdEzP$x-xyE$!YpIw<#ZS z;?!fRXlksc_Sd8-3=owRLp8Bx_`T+Kg{#{BNL%T6b|uJrQ=}sx4mA!x_A8hWDM~(E zcX-O-pV+?Vqox|wlmWD7Ul{PYkn8S4N?MF?KM7s!Q0Z)ycJ^K%MjV{5&GkG$XN#dN zjZSIt3P*2o<6xIW{tB|F`c02ELEm@o@3wni-NmY~V+j zv3g15TeZ&=IubZ33|8!Wjsp1GzbNvWK0S;=k(WWS-%O+viNWr;A$3se%klu>bIt13 z&e+&6t{dD^;=i4#-M&_Xr`=7*D|n_0*icp+MC6CxY7rQ%mU`5q00=JkK?ukRMX2nA zC43k{Y0 zFbkygN0pz-e^=6P92mtMlv7oAjZ$b&=QmP&qTl(Tw(Nmj47@T+_Odw95lZKOu9C>_vjs?0-NjXD8{I6d|wN zLlUz4p{PIppo#TZbd4G%mq(i(BpzM3P&EFTvt!Ok$~GEBFFk$c@lDk9SN@y^)SYi( z%KY6C>~bG$3*IH>K!J{?bQ9am0Oa7p-+U=G`(hzG$)TNsm8vQolbk49u*hd8e zPV`li|4_J!tc;Y9x|v!STAZi_eJei1=p^VLONXjRp1oT$App@bDSS;4IZ#p-v*AR-$a@Kv>9c;^#C`iT(wZTl zDpBv~#=10W)5hS!A2bE_x|_7uDhx%)+CLsOm!CnZ7Z`<}i2n`md8eoF3YXwREMkwb?bb$eXhHhTBJP z)O7Vx-v1$pOk!SJ#_}^{G++5F+VkCID!V?L#HxnmXRo=&vsRd=VyRSgDX|$M>S=MR zZ?J_d8_p84Qp7NIf^n7HcWx|nGdel-m|EYDpoBmk!i!u~9DLqf zN%z_X3O-ytMu`d%3E?R@{My_N7ep$V{8v(D^FUD^1vyQ;Q+++e=UlSIQ zjvPv6*LVG)!VM2XmT;1z?dIg9eX#gPJOINv>AJ++;L<6KK;~D#+#I@>4@$<~E z;Nh|+O(i5P^0L~RO868D21r>X6^xl_Ih^3czS_O#y-e5EEwU6FXsEJFrea}E7OHk6 z8%g|V*f&b?GUKWJM{{RYJ9)&NR&7m_n>QQzvmA?ZjP2gjO;2jze%l)2x51wrf zGF3J)FMFmN%5)_Mr;U@t%9mGhx3SbyC5+ZUw!Wo;+^ zK3{*#=}WSlCpRXm0@DbR*C_@g>1HEoe}alikX_MVf6ri(9;Jl_jqyz*-wV9r`3 zZw@f(Vnqpt0f8;}d(ry_=MSVLivd&F^gig9!c>D))o+74wT0pOb? zH5GQGTJE0?#1P}yCBGymB}#yug$|Pa&G4agM`x#%!dWg?D}*TmPiP`TQQvxpjjK0l zEe=bnubWbY12S!fA19X=)=gULMfHchbbeZLnCY zffJL$uNe{3RyVZG#s^oRz>%qlSoITWXilH|Yq;)8Pyy#QR-*mo_(#s;W~1~7T59Yz z$D;RtABPgQ%WpCy&KQoP`>9aXD^(o|Ntay4?x~%_gxKNAxXE!2-LV6taPaVgqL4R@ zxJkxmiXVBC#8+dK z6ObEcKK6HYWq-DkKrKA`)Woi#D0=;#?sK!_p1fn16ThV_NP`KG$mSdUIIOmF54`}G zS^QKiE1e;%A2p0MzQJIRtAU15*Hn{40bAEK91vL%tM`ZY!b=k-8f?!6$#hCgyRQMz zSAZ|SgsVRx4mtZbBdU0qufSvnW6-a3cG*LX~pwBY6`YM8OFxib?ZU z?BB&73>35a4g22A-~+fN#}M#sT3nfT4AIfikG1IAa3tO#`pJvL1ZHehs5`>}eC$}s z8n1N=n#0PJ56|W>1NQIho(!kz29Sa7(0?J)o?nP{Oh#Q%V#vD~KEf_HuFJy!uj*Qu z=ic!eeb2KtvwjE#`46ypd3nwJ0eO=b{S(rf5HtYB#nruQ%&xu7%_pjIhq}YhMPs$? z3Nfekow8Qf=ws%_r!+?xnnuKO+szaCrdD*E&)fp zLr1_F^oU)a$Hr8FcCh?qyCa86oC>YFDp;cqC1I4%}P*NTknj z1+9JunDChhevC9bgB5=62RlRVvRg#$#RnAhY=4%;q#zKY#9S$d0}&HVK# zJq|H0W{MCDB)}LB4(_WF5talN5o3rP9w6C-v9I`nPv1j7&Z&G8036OXq?OVI@WDyw zoGN^;rmbz|BkKF$0f;%B^R|n68+b~T&B6kB(b4_)XINkpr;x`^5)GCFvWM(ndC^Wy z)13540{+cjyG#ZD7Z(8RX`b|fnvYJmafQL`D(-9>xHi*l$D0;W0caFC?`BU1_Li@C zQ=1^PHKyyO#KTuiwLCKo=^b` z7#>=N{suMQxl?s@EtQ2j!U^((AHi!dF%nvzt-DP82v%2gaJct zl5BZ}?u<9P;$*K-bH>96Y~RQ&ZubV*gIckOn&$NC7d+rEtT`h2!8Azrs;RLNYJ0H1 ze_jlI6)hu|r+)A@yG&Ft>mWjW*F?AdljQMW$m+a)yXw6FH3 z6jM^C-Wf>`dFju36ooT=K_tpK735#k2>4$P6(GR-J)lU3bwpTxVE8ew4_WkzMSY5ob zNcU&?aSarROc&+bNHJ)tE6V#4Pm3;P`6VxV0=f?&$)ogzsU$N$~ak?vRCU zw4u|6UpOq?}tf64sW;EM55b3fp~@fZmi}X6=s4seS&z|tmN$PP~|e&{PFJO zsW>QqRkWu7DEnuE-$g zb_?63`hbJgn_j6Gqo3xN+Lv>r7}7WX%J%Ich!mY0O-UEO_3k>DId^7EW;PwW#FvIB zlY-wT$1f~sm$x9a{)GU}Tsye&VF5}rspu1S|E^P!J5+Yt2p@Lxp{-@3p=Y~`0duUL zYnTq`_lAM1$7#69^j|AlARztW2wf?)iUj|i?CBk-Xg)qbso-jF*4jcvrA>bZ)uCSR zLqi7=743VwKQ|O;e#j{*A+or@6kq+_b$6~978~6??7kFADbHS6mhv~%Zj-PInfFx~ z85((iyR)Rsm&AZUG&5ER;AmeaOTygI@#~TN-bmHwc?J<7<7{x5wY$X7z-D`~Yg{$9 z>4Hu-1KH*Pu2B*;tMGNLFFA!E2H^;PJKm?kgC6M7uzUPeHTO`{4gzDJvY3hruUBIe z6~;GzBWCq7(K<+*k9BGm?|_($zU8J$HX4HsV(<~M_rj|+M2n5*m<*a^3z$@DYvO8J zEXs)mSipbudDWo&{5N7;N!siptiy*65jLMo3|OG8tT~mImX?y{4WeU&X_yrCRB_SS zRffvhF5AjY1c+chz*}hFe2JyIJy6K1?e)ugOyg&>D}(O_O%6&97JN`*NSV^pl(!&) zJJ3?n5Bn0P<>K&7Zp$BhvLi1z`CN~^t7Nz~Dw{qy|LiUa5V`E+)hC864<;ks!6C(C zsz1A-Uvh+4Juu-#@H&`gd9ZtYLL1RfGnfnFJ24hyL{kO3rz#Zrr{iXEJF7(=9P#j# zG1$d8tl*8&v0WG>RD%mDnMA@#JGa(|8PUt7R+O@4;#nR`%I4Rdz zNDf@p`joSX+t(o2+MlnV2VTCtE=3e(>*QFnftke~b66hZTY}9JrQSW2iUj|8<=!DZ zTXna8m8_HolaX-aVNUS((Uo~!#r;L0D5=)>mLTRIyoej^V!G;u4%z3_tpXK&c^6A% zh-=4QlTRVMIz%xKz$39A@0i49zbF3R+r|4~$Fe#$gNqk?>1tLV*7FBihdNU)W8x1k z8pMBUpIGO!eKFeS8HOBG>P21a<{AZ@sysK$FEu51|9FoW9A5+w6+KDl63QMs8c?KV z{$~d%OI3Z0+#z83S)*P3?+Sp`_3TkfPHT@d0b*F&_75_WdotEkSug ziT0eSs`VOHT5W##Kkast>8$nFxa>UKe|wLV7%WCkfB>))35+c*!31W*3Y&8o8yjQc zymp5Ekc@$#O(kB-=5Xm|?Y4^6X0tEaN?2j!?MABnIq#nPt11BddGS7`EbZQ{1tOD! z4M1B+{?kzXL+1Ih@{?jrG%yz0UnG)y)P()ehZ`cBknviDo^oans1g@icY7Q{ z=5`wH_mQ_zz3gr+3K|HyY$=yCCD3EowRX@mNop5KTXtHZ-romIX9z^=2*-Ybi4>E9 zKF#9ZKKL3}D)~7(F{q6}P}RlO zYwyy_h2)(wMO7y3T85UpN;%u=rN0He7kZC_vrHFc@nGZlium=^x~12zV(9m$TQKzE zzxg3Fr9u2czPJ?~ia|3r1}E7>cW6Qn*H?@o=%cUe%h;SlXiRIs?*5n6rA3(MVnXLs zjnE>NL+d)6EqyUQD(CaR)}jBApIJlzC3@1D;ka+|{;>;E|BA*zhw_75Gh<9{Hu}|L zyq3M6MY;D+eU-lsRBcd3`v85B~gSN`FXK#EpkwG@-gJMG(#VNCck^V#^J|~Eg%x`$a((oIljtN_MI>*61y0*d z+zmgi{PbmUQrUBMl+6?X7!0F*%Q`T1Ma*l>-M6vx_~loId|M^bq%W+P@E~g>&%{kD zhd2Ak4DCEmi;15f^@Z2r>U;f8GSVOQ^`_kiASK9y)QesD-v~Py?t&{!qJ0m4dXfN~ zfR>24+vD+H8U?`1txZ1^YxzFiH2beJ`-!;|_-f<3`5tgL?42y+g{fhhmwA?(Av_iB z3ivOhCS7@()uFy~^kiD`xYAqF(VsY}sc)V#fdZ%79X=jw6@oAAW36E1qzNz^Y=+H6 z1G){DSlD*)D)igJ>3l1``f*?aEk~6cA8y#kiD(CUEI)gp!^HX83hSNEB<|$<7N-z@ z+s8$m^YNPLke_8ap$nsGBHHC)fLIhWN}}sDz#L=PkrBIhXd+4@8}^-@B-2NhKhLs}=f0?HCB;^8{8 zu;JjuNQtI6;qG0eziRmU9FlhOK=8K!j>hH|-YvaMW4XN|Dhv;#B%JLz9)?)8R2 zdFak+_H}|6qdHf1DPutEsckj+GK<`@N{{rnLUa}->5tHqsb7@?^9$p->>J-CwZQ|Q zl-C%(eb`0ZR8n|jvu->$F5cX@jNVWZoE*7|R(o|#&;L2CylHBgxfvv2asIT*gy@iC z1A}ZX#SUP>QUZ;TAYhNu{QH&5x{@rhJwqq4i9PD9V|h&bv`Ix^b8QP4TXxpD0VC$X zHJ4g6EB`jd>_^Sz8`tVL!jKtA^I2-*4&u{w#a?M};sb#R%ZlZes#e6kn?5!{+-SS&qBednJTPmUE9H z-r5LSy>KNm%W1Us$48KEk#F287q3x>0cg>EYs`q3QTPs844+GY+t6XLdyN1oP?Ajn zcpP5`@9eG!Qf}B?a0f@{xBMC;c^WDp?vF_~Ud|vBgy-YR^yowm+GVZNr^wb`y;fbS z!Jl4ytG)V$x8#+n{p`zdWKq9qfek|(+Szk56QZ&O{P*5F#&3LLxcCQ@@`Jego_bx<#kMH*@*|C7RpwMr!N7~wYb^FCs-Vj0a5o)t-goFFbYOI52 zKj=d}QaK;sCbX8ZS$buo8^F^FP$u_xJR0m}0L3kC=W8-2f4J;XCU6a-TaUMh`}5z) zyzGj@f6rB|h(YcM;Ro&ser0-Lewo%C;R|kQ9#CyY-V({HT3&Ib#4lHX03Zjsw2bYC zl^|+|!je0D3!iE-6jpGn4SWOJ+W7L1%uCDYN~7ua0{!iQlu||9tMKM6cTnsBicfYxZh` z7)|y%e6HG+_`dCOu#3Wco7M9*69>7Y<2VvJdhhq=Pqh|1sERzXw8N9->zS4Jt?IuY zHW#eGZPehdD|VqhOl4-zCN^qk5qn^XWI38bjeS2`f{J*6b*x=K_hq)TXUD2$d%|j20BB#IEnjCwQMR&Oawm z4Ys~AQ+cK^op;ws?n{tmfiNinBBkI1Y`Dw`7^ho%XSQs)kwh<#s@mEWU*Evrx!hCi)igv5H4pkUsA_IKU(}KUHNTcX}>HIK!^hK`+IUZYmp z(VON~%oMd0#?P$c^3LH`!n_Y%Nx_f0j3}i|@DWY567fI7|2eO;gKMzBk@w{yv7d*6 zs%=tjr*W?R6PZG$FHRodEA)jRmb@e&BGe?GAn{#kzXGotxe+bSXTq=o(mf0~EdMM@ z{%XP;Y<&A~<@a2aNJkiACq&|VhrjX8S6pb08RN8L<&nn7_g0A7SA+$r&?|y6=zp8( zUVDN%d@6BQRV@wELVNJ3^u&dPadE5Ud=pqe>V$!S=$nxhCyRg^LulMfsG_X|6fD1jD!cWB#nat@5i^F-WamNg<8CQl;N~aNKP$Yzas!=KP z0>O@$0vWhnyQrhed`tX$!D~+$CH3`a5-jkt{(*9vE|UJr69o1c-gMg z+FV>Te@aCYM4MY#3d`PI=e$KoiHN#3gBezE&c0i-yV(!=ngZtDbk6cW2DN6^+6Td!uCHOtNp^-L0*&#`hlTs=jRgeq zZ~!wzLY*SKtRD-e3l$? z6^&>~Vhzzkdw#Q7O0N)1d`QtWyp7wj{uIkOA;65XekdqgmeLxERu2{i4&absvES28 zI^F)5-peSk?W;t$cKB6G=HEk9M=H{*L+VS(9N2E(si6}Ku77L$7a3C~5DfG0w8=gUhzCO0JxLt`mQ;M9%0p8vQq?1yhJCP2WZ zjqxd{XBIDGZa@R?ViD=g%qN+&eI)}0;TKSih*X!P+qZM3G-WMnqHTjkL=Tt|7Ez(1 zcR+V}IYEQe=F#NldH6d2te?<+ErT~hhHq29VMzWwf6&0wZZ_b4miiMv38k2~Ev&ZA zqQiCntmh8xoqpEpkB+WYrYSClP+T$e-%X!4xy zno3bJQ6bAC%ZJ5FQ!&tV?jtR+Nc!4}EZo$j_K~ab#)9GmqlHz2o5m<4Pcx1k_GJd< zMql2(JBBCi!;AvQ-`BR42k%mCpmb3G!usNDCWY5?+T5rQco8O*hfQkGyM!e6pvJ~H@lH_IkRK#8DS7-D)d`A6m>X2%tQKPqpOX7*;mI&3bOeT-qznIPMBh{{u&i7 zd+E#Vr=5H|JH4Z4GcmlXIYnKE&B1Ou_|X;$^3W2SZn|C?pBdBU^NUanbm&4S$z|9( zo#d2+t>O-LHvN)P@iV{J?9x3UWr~FxYWL?AdE-=u(N9o~-f!@Ghx=bStx4%eKQ+GB z$k72!>$A_t?UjO4yfZq_ytSVYg7VG!Bqy~Zi9X?>DAe%jX7#Sa@cg_S{>adAjk6TM zb53ZU^vN5r84*4pog3BKZRcGoA+N2$)RGW6q|o_zJO`|ThCm>cOp%1%+GF~}29K6( zl6*e`hk3Ca;b0YtJjv^4dxU;U?4`i+8W-a4Arl$y5)3OG!0u8@wHINI>yKI}ZT6|9 zX$6+D`rZYN1_cK~jZRdE4B1DkE+T=Avh|wq77E?LK-0nP1bG2q&1 z7Bk(oBgx=q?B?t1W|4*Tpc7o4`F;!c8~-w|cOZNtwvUlkE~!=KY@Sw^hbflP;WBFp zn4R2aIF+SCJ-PF<$KhUc;BtCX(B5HAg$%I zu!dYdwX?0A9={OVok&I5S5vMpo#AYTGRa5@j4=R?51fq&7OE{r@Ai~4#0S?+*r#W5 zwof@6>QIFd0EbF{5kDM?hbsv4V!PiAGLTD1~q>*DnBzNIZ-f3l_~} zpv{E2&Y-DjJ#*t+T}f%szoov`mYKA?dvN~bGyt@j$e5Euu7_c`vAFc3en@0YWLz&? z-v8YvVZ=L&Lk#zyjWNT3H6KD7$99&$XUd40Jn; zQg<3!uJL!Cd}49!LSn{1QG}-CU+N~(VACY#5Z!dVMbue)Eo^jo@4_|;WA%nvW|_er zwtk5c3H{&kKJSvE93fE%#LEky6sjpWthC{iH6j!>K@=xL4xIDt`(W!g?!Exga8JcT zL-_X%%jM?M&@X>{Uh?$s#&nzUwcjnsFz_Y;??447>n9Q}UF_F082jxN!G>KdXhWyG z{k*x7X)Q94%6-2eoDc{z?zYEBYs9IME*$zRXLSn{G~P6CZP6#~=CyicKiQ%gfWI^^li(2ecW zv3~ZL*jwEHXkS%=*u4>cIT?VZGW)YpnO2d~3LXvU0`@QhJU&K-$8KVpcC#9w810>? zJ`OrAK)P`ejv&+z+1s?vDz~OMl;^&9;jS>aefc@Jy2Jz*rVogLuc!rdF0LZ8HCHb+ znp(+@{CVCp8c)u!11eHB3sBjkq-fhOdl*}A%&?vQ>PEG#yBMTRku)JQvxLU4Sj&~$ z-BR-hig1VSf59 z2G6*0GfP|{_T~lM*-hjVGoTQes;q__!Gm3EMDwe%^Zt3CqFNr3p3X5Oo%cIrmEyGa z%;GGl!eYFJ8>aq?|72zQzF?#xhS(5$7zQ3Jz{!B z$WJS1U+}9Uu{UWju(ODQea6NFL6e&lG&>WVvKlYV*krbVU2}2$fn+r zo@PO5B-<2lji*(@-;VKN1arbT4nWE=-y8?7s@WHbHeVHUQ_=c;Shf28p-BSC6$bBb zf7d^(vF%<&t)x1c@&`@uGnb$t4ZNU`WwI}bC4w?PPVL}3&5F;#qAO~?R45EgsXpFhGwG22?Z6atRl@4kt+ z=y+Vkb+iO;^7#7Q3x0MU=nY;M48f=aBLQN83Ob?O88uv9ikGB2A5 z!cr46c=B(^U))xr+y^;4C+pu~4NaPV`HQiq$%^At5$|N!fe;H^CC4$5v_hL}g)2++ zOig((chFNQTlZBy#yM-OHUPj`$V-W9y!;YIet@}(fn=^|@S5rgrK$8Z{DDOwlL-X4 zxIUD+b}>@N0Y_@GBvn z1|~yvvYQfM&EC4Yx??u7-ScNMg)dEYWpnDyjovBAZ_TW#`4|+5YOanSsJxe8`W_$9 z^*PJ?<}j$C$-CV}6ddKD<>jv|(N>4-VtSr-Vl-MH#S-)jhy>BT?wu@GO;Y(7{AsJ` zS{u6}RLGRbJ{`@%0HM%InNTdQ>UXZU+e`m^?;o9xxxo|4ZnSpes9Q_;sy`|-dqn77 z1#d=;p52?kKdpRjS|-@E7=tY*q7l)~uDx>CSk>IOFFx73+EoPaiWDg+4A{jqaBGDi zZ{}a#f9bqsibEI#v?^5*yc`0G9h`^EusO7vEj`;t316&eDKtQl;O}|hgGh3^&U5yq zPsNk&V|Hm978DOfnkX#;`OCoo__wONuk4^XG>e5IZ65c~_l$T?4veV%oQp2#pJMQD z&(~TZH#)wOPWgo-TUKL03d-x)cfs7UMwqK4qosX zln8zyE{5X*73URQQw1*N21~yh;M9itpd|+spBN5HA z_aTu!WUQ+R7(5XD-dZ-DSxjMj*uJP}U+ZlH&h_!rKF!J%7!`IvYrum`9Z>f$X6Opx zMQ{QR4Vi8Pj|t+?g>$7|kCK(?iq`r%%=_NhHscHHrO!B3t~zRF>JZ9a z-IcWc@vR;Rvp=2#-&b5&Mu?W$uNKim`3mj~$!h?C(>R$;n*GvU*NBpa^M^=gm8$K* z`FykWe=&vO{ri$dH{V;#!=LWaJW@2Kk7VP!RZq2jUiS-$^}EZwW287%%LHbYeKFRW zD8ImHbx_xKXeV!Baf#nbdnz>ae8#X(&`&0z5k+w2uFBPi)NlM58iQzf{I9oCdhn&0 zbr)Jw^8rKSn5=?8yC5b_K2+mn0S8WEh|NyyO}Vw6)wWjXolLnE{htAiZ`1a(X2|z< z`Lu1HNysypSYB%bcwbP_LcRvzboC#RcG-r-+R>l3^8G8gT%M-M0@CWn#Ah#jdBx8=m(yoqMgM>P4^el_t_ZY>FaUw4tDnm{r-UW|McCdy diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index d786bd6e48..7ccf16c6fc 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -168,6 +168,7 @@ miss_sound = 'sound/weapons/slashmiss.ogg' liked_food = MEAT | FRUIT disliked_food = TOXIC + exotic_bloodtype = "BUG" /datum/species/insect/spec_death(gibbed, mob/living/carbon/human/H) if(H) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm index 049a7ab3d8..dafa8a6122 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm @@ -12,6 +12,7 @@ default_features = list("ipc_screen" = "Blank", "ipc_antenna" = "None") meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ipc mutanttongue = /obj/item/organ/tongue/robot/ipc + mutant_heart = /obj/item/organ/heart/ipc exotic_blood = "oilblood" exotic_bloodtype = "HF" From dcbcf704dacd92bba4ff7dff020296b24e51edf6 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 4 Aug 2019 06:27:28 -0500 Subject: [PATCH 074/469] I accidentally all the maps. whoops --- .../LavaRuins/lavaland_surface_alien_nest.dmm | 2 +- .../LavaRuins/lavaland_surface_envy.dmm | 2 +- .../LavaRuins/lavaland_surface_seed_vault.dmm | 1 + _maps/RandomZLevels/moonoutpost19.dmm | 69 ++++++------------- _maps/RandomZLevels/wildwest.dmm | 6 +- tools/mapmerge2/dmi.py | 4 +- tools/mapmerge2/dmm.py | 20 ++---- tools/mapmerge2/update_paths.py | 2 +- 8 files changed, 39 insertions(+), 67 deletions(-) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm index df5a1f943d..1ea3f19c62 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm @@ -147,7 +147,7 @@ /area/ruin/unpowered/xenonest) "aH" = ( /obj/structure/alien/weeds, -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/xenonest) "aI" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm index 22d2727b18..df9620cb67 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm @@ -34,7 +34,7 @@ }, /area/ruin/unpowered) "g" = ( -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /obj/structure/mirror{ desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!"; icon_state = "mirror_broke"; diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm index 945ea515c7..fec70b215e 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm @@ -279,6 +279,7 @@ }, /turf/open/floor/plasteel/freezer, /area/ruin/powered/seedvault) + (1,1,1) = {" a a diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index fcb340d278..4703878c2f 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -1970,21 +1970,14 @@ }, /area/awaymission/moonoutpost19/syndicate) "dE" = ( -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) -"dF" = ( -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/plating/asteroid{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/main) "dG" = ( -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /obj/item/mining_scanner, /turf/open/floor/plating/asteroid{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; @@ -2543,7 +2536,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/plating{ heat_capacity = 1e+006 }, @@ -2563,7 +2556,7 @@ /obj/machinery/door/airlock/maintenance{ req_access_txt = "201" }, -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/plating{ heat_capacity = 1e+006 }, @@ -2572,7 +2565,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /obj/effect/turf_decal/tile/purple{ dir = 8 }, @@ -2750,7 +2743,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /obj/structure/alien/weeds, /obj/effect/turf_decal/tile/purple{ dir = 8 @@ -3187,7 +3180,7 @@ }, /area/awaymission/moonoutpost19/research) "gl" = ( -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /obj/effect/turf_decal/tile/purple{ dir = 8 }, @@ -3389,7 +3382,7 @@ /obj/item/shard{ icon_state = "small" }, -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 4 @@ -3407,15 +3400,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/research) -"gF" = ( -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/turf/open/floor/plasteel/white{ - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/research) "gG" = ( /obj/structure/cable, /obj/machinery/power/apc/highcap/fifteen_k{ @@ -4379,7 +4363,7 @@ }, /area/awaymission/moonoutpost19/research) "is" = ( -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/plasteel/white{ heat_capacity = 1e+006 }, @@ -6489,7 +6473,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, @@ -6500,7 +6484,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "mQ" = ( -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/plasteel{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; dir = 8; @@ -6514,13 +6498,13 @@ id_tag = "awaydorm2"; name = "Dorm 2" }, -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/plasteel{ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/arrivals) "mS" = ( -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/carpet{ heat_capacity = 1e+006 }, @@ -6565,7 +6549,7 @@ /turf/open/floor/mineral/titanium/yellow, /area/awaymission/moonoutpost19/arrivals) "mZ" = ( -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, @@ -6686,7 +6670,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "nq" = ( -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /obj/machinery/camera{ c_tag = "Dormitories"; dir = 4; @@ -6811,7 +6795,7 @@ /obj/item/shard{ icon_state = "small" }, -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/plating/asteroid{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; heat_capacity = 1e+006 @@ -6821,7 +6805,7 @@ /obj/structure/grille/broken, /obj/item/stack/rods, /obj/item/shard, -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/plating{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; heat_capacity = 1e+006; @@ -6830,7 +6814,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "nE" = ( -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/plating{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; heat_capacity = 1e+006; @@ -6839,16 +6823,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "nF" = ( -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006; - temperature = 251 - }, -/area/awaymission/moonoutpost19/arrivals) -"nG" = ( -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; @@ -36601,7 +36576,7 @@ fd fv fW gl -gF +gl gR gR gR @@ -39966,7 +39941,7 @@ mZ ni nq kG -nG +nF kE kE kE @@ -47371,7 +47346,7 @@ ac ac ac ba -dF +dE ac ac ac diff --git a/_maps/RandomZLevels/wildwest.dmm b/_maps/RandomZLevels/wildwest.dmm index 0c21b3d953..064be0907a 100644 --- a/_maps/RandomZLevels/wildwest.dmm +++ b/_maps/RandomZLevels/wildwest.dmm @@ -957,7 +957,7 @@ /obj/structure/mineral_door/wood{ icon_state = "wood" }, -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/plating/ironsand{ icon_state = "ironsand1" }, @@ -998,13 +998,13 @@ }, /area/awaymission/wildwest/gov) "dt" = ( -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/plating/ironsand{ icon_state = "ironsand1" }, /area/awaymission/wildwest/mines) "du" = ( -/obj/effect/decal/cleanable/blood/footprints/tracks/wheels, +/obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/wood, /area/awaymission/wildwest/mines) "dv" = ( diff --git a/tools/mapmerge2/dmi.py b/tools/mapmerge2/dmi.py index f0a8182c9f..c12964cead 100644 --- a/tools/mapmerge2/dmi.py +++ b/tools/mapmerge2/dmi.py @@ -45,6 +45,8 @@ class Dmi: @classmethod def from_file(cls, fname): image = Image.open(fname) + if image.mode != 'RGBA': + image = image.convert('RGBA') # no metadata = regular image file if 'Description' not in image.info: @@ -250,4 +252,4 @@ if __name__ == '__main__': Dmi.from_file(os.path.join(dirpath, filename)) count += 1 - print(f"Successfully parsed {count} dmi files") + print(f"Successfully parsed {count} dmi files") \ No newline at end of file diff --git a/tools/mapmerge2/dmm.py b/tools/mapmerge2/dmm.py index 8bb1dca353..15aa04c07f 100644 --- a/tools/mapmerge2/dmm.py +++ b/tools/mapmerge2/dmm.py @@ -343,7 +343,7 @@ def _parse(map_raw_text): in_map_block = False in_coord_block = False in_map_string = False - iter_x = 0 + base_x = 0 adjust_y = True curr_num = "" @@ -487,7 +487,7 @@ def _parse(map_raw_text): curr_x = int(curr_num) if curr_x > maxx: maxx = curr_x - iter_x = 0 + base_x = curr_x curr_num = "" reading_coord = "y" elif reading_coord == "y": @@ -521,21 +521,15 @@ def _parse(map_raw_text): adjust_y = False else: curr_y += 1 - if curr_x > maxx: - maxx = curr_x - if iter_x > 1: - curr_x = 1 - iter_x = 0 - + curr_x = base_x else: curr_key = BASE * curr_key + base52_r[char] curr_key_len += 1 if curr_key_len == key_length: - iter_x += 1 - if iter_x > 1: - curr_x += 1 - grid[curr_x, curr_y, curr_z] = duplicate_keys.get(curr_key, curr_key) + if curr_x > maxx: + maxx = curr_x + curr_x += 1 curr_key = 0 curr_key_len = 0 @@ -551,4 +545,4 @@ def _parse(map_raw_text): data = DMM(key_length, Coordinate(maxx, maxy, maxz)) data.dictionary = dictionary data.grid = grid - return data + return data \ No newline at end of file diff --git a/tools/mapmerge2/update_paths.py b/tools/mapmerge2/update_paths.py index 2c316e941d..deab468ecd 100644 --- a/tools/mapmerge2/update_paths.py +++ b/tools/mapmerge2/update_paths.py @@ -173,4 +173,4 @@ if __name__ == "__main__": parser.add_argument("--directory", "-d", help="path to maps directory, defaults to _maps/") parser.add_argument("--inline", "-i", help="treat update source as update string instead of path", action="store_true") parser.add_argument("--verbose", "-v", help="toggle detailed update information", action="store_true") - main(parser.parse_args()) + main(parser.parse_args()) \ No newline at end of file From 9712f7b4dff753d058d067f9fc1fcec148e167ea Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 4 Aug 2019 06:39:54 -0500 Subject: [PATCH 075/469] Delete footprints_and_rag.dm just bloat from a previous time --- .../detectivework/footprints_and_rag.dm | 57 ------------------- 1 file changed, 57 deletions(-) delete mode 100644 code/modules/detectivework/footprints_and_rag.dm diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm deleted file mode 100644 index ed0ba33b66..0000000000 --- a/code/modules/detectivework/footprints_and_rag.dm +++ /dev/null @@ -1,57 +0,0 @@ - -/mob - var/bloody_hands = 0 - var/bloody_feet = 0 - var/last_bloodtype = ""//used to track the last bloodtype to have graced this filthy spaceman; makes for better performing footprint shenanigans - var/last_blood_DNA = ""//same as last one - -/obj/item/clothing/gloves - var/transfer_blood = 0 - -/obj/item/clothing/shoes - var/transfer_blood = 0 - - -/obj/item/reagent_containers/glass/rag - name = "damp rag" - desc = "For cleaning up messes, you suppose." - w_class = WEIGHT_CLASS_TINY - icon = 'icons/obj/toy.dmi' - icon_state = "rag" - item_flags = NOBLUDGEON - container_type = OPENCONTAINER - amount_per_transfer_from_this = 5 - possible_transfer_amounts = list() - volume = 5 - spillable = FALSE - -/obj/item/reagent_containers/glass/rag/suicide_act(mob/user) - user.visible_message("[user] is smothering [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!") - return (OXYLOSS) - -/obj/item/reagent_containers/glass/rag/afterattack(atom/A as obj|turf|area, mob/user,proximity) - . = ..() - if(!proximity) - return - if(iscarbon(A) && A.reagents && reagents.total_volume) - var/mob/living/carbon/C = A - var/reagentlist = pretty_string_from_reagent_list(reagents) - var/log_object = "a damp rag containing [reagentlist]" - if(user.a_intent == INTENT_HARM && !C.is_mouth_covered()) - reagents.reaction(C, INGEST) - reagents.trans_to(C, reagents.total_volume) - C.visible_message("[user] has smothered \the [C] with \the [src]!", "[user] has smothered you with \the [src]!", "You hear some struggling and muffled cries of surprise.") - log_combat(user, C, "smothered", log_object) - else - reagents.reaction(C, TOUCH) - reagents.clear_reagents() - C.visible_message("[user] has touched \the [C] with \the [src].") - log_combat(user, C, "touched", log_object) - - else if(istype(A) && src in user) - user.visible_message("[user] starts to wipe down [A] with [src]!", "You start to wipe down [A] with [src]...") - if(do_after(user,30, target = A)) - user.visible_message("[user] finishes wiping off [A]!", "You finish wiping off [A].") - A.clean_blood() - A.wash_cream() - return From 0d2e623f4e8e233b541ed90f551137d61305c026 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 5 Aug 2019 00:41:32 -0700 Subject: [PATCH 076/469] Update click.dm --- code/_onclick/click.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 22210bfd08..4af61c99c7 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -200,7 +200,7 @@ if (!target.loc) continue - if(!(SEND_SIGNAL(target.loc, COMSIG_ATOM_CANREACH, next) & COMPONENT_BLOCK_REACH)) + if(!(SEND_SIGNAL(target.loc, COMSIG_ATOM_CANREACH, next) & COMPONENT_BLOCK_REACH) && !ismob(target.loc)) next += target.loc checking = next From b5841c718bfc9a4c9f72a916adb5fc21071de42a Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 7 Aug 2019 06:14:35 -0500 Subject: [PATCH 077/469] Genpop for security --- code/__DEFINES/access.dm | 4 +- .../weather/weather_types/radiation_storm.dm | 2 +- code/game/machinery/turnstile.dm | 84 +++++++++++++ code/game/objects/items/cards_ids.dm | 35 +++++- .../crates_lockers/closets/genpop.dm | 117 ++++++++++++++++++ code/modules/jobs/access.dm | 8 +- icons/obj/closet.dmi | Bin 37806 -> 38279 bytes icons/obj/turnstile.dmi | Bin 0 -> 4951 bytes tgstation.dme | 2 + 9 files changed, 245 insertions(+), 7 deletions(-) create mode 100644 code/game/machinery/turnstile.dm create mode 100644 code/game/objects/structures/crates_lockers/closets/genpop.dm create mode 100644 icons/obj/turnstile.dmi diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm index c9d545fc03..c2021a86f2 100644 --- a/code/__DEFINES/access.dm +++ b/code/__DEFINES/access.dm @@ -6,7 +6,7 @@ #define ACCESS_MORGUE 6 #define ACCESS_TOX 7 //R&D department, R&D console, burn chamber on some maps #define ACCESS_TOX_STORAGE 8 //Toxins storage, burn chamber on some maps -#define ACCESS_GENETICS 9 +#define ACCESS_GENETICS 9 #define ACCESS_ENGINE 10 //Engineering area, power monitor, power flow control console #define ACCESS_ENGINE_EQUIP 11 //APCs, EngiVend/YouTool, engineering equipment lockers #define ACCESS_MAINT_TUNNELS 12 @@ -64,6 +64,8 @@ #define ACCESS_WEAPONS 66 //Weapon authorization for secbots #define ACCESS_NETWORK 67 //NTnet diagnostics/monitoring software #define ACCESS_CLONING 68 //Cloning room and clone pod ejection +#define ACCESS_ENTER_GENPOP 69 +#define ACCESS_LEAVE_GENPOP 70 //BEGIN CENTCOM ACCESS /*Should leave plenty of room if we need to add more access levels. diff --git a/code/datums/weather/weather_types/radiation_storm.dm b/code/datums/weather/weather_types/radiation_storm.dm index f3b8118087..6765cdf2cd 100644 --- a/code/datums/weather/weather_types/radiation_storm.dm +++ b/code/datums/weather/weather_types/radiation_storm.dm @@ -18,7 +18,7 @@ area_type = /area protected_areas = list(/area/maintenance, /area/ai_monitored/turret_protected/ai_upload, /area/ai_monitored/turret_protected/ai_upload_foyer, - /area/ai_monitored/turret_protected/ai, /area/storage/emergency/starboard, /area/storage/emergency/port, /area/shuttle) + /area/ai_monitored/turret_protected/ai, /area/storage/emergency/starboard, /area/storage/emergency/port, /area/shuttle, /area/security/prison) target_trait = ZTRAIT_STATION immunity_type = "rad" diff --git a/code/game/machinery/turnstile.dm b/code/game/machinery/turnstile.dm new file mode 100644 index 0000000000..1fd78056d4 --- /dev/null +++ b/code/game/machinery/turnstile.dm @@ -0,0 +1,84 @@ +/obj/machinery/turnstile + name = "turnstile" + desc = "A mechanical door that permits one-way access and prevents tailgating." + icon = 'icons/obj/turnstile.dmi' + icon_state = "turnstile_map" + density = FALSE + armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 10, bio = 100, rad = 100, fire = 90, acid = 70) + anchored = TRUE + use_power = FALSE + idle_power_usage = 2 + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + layer = OPEN_DOOR_LAYER + +/obj/machinery/turnstile/Initialize() + . = ..() + icon_state = "turnstile" + +/obj/machinery/turnstile/CanAtmosPass(turf/T) + return TRUE + +/obj/machinery/turnstile/bullet_act(obj/item/projectile/P, def_zone) + return -1 //Pass through! + +/obj/machinery/turnstile/proc/allowed_access(var/mob/B) + if(B.pulledby && ismob(B.pulledby)) + return allowed(B.pulledby) | allowed(B) + else + return allowed(B) + +/obj/machinery/turnstile/CanPass(atom/movable/AM, turf/T) + if(ismob(AM)) + var/mob/B = AM + if(isliving(AM)) + var/mob/living/M = AM + + if(world.time - M.last_bumped <= 5) + return FALSE + M.last_bumped = world.time + + var/allowed_access = FALSE + var/turf/behind = get_step(src, dir) + + if(B in behind.contents) + allowed_access = allowed_access(B) + else + to_chat(usr, "\the [src] resists your efforts.") + return FALSE + + if(allowed_access) + flick("operate", src) + playsound(src,'sound/items/ratchet.ogg',50,0,3) + return TRUE + else + flick("deny", src) + playsound(src,'sound/machines/deniedbeep.ogg',50,0,3) + return FALSE + if(ispath(AM, /obj/item/)) + return TRUE + else + return FALSE + +/obj/machinery/turnstile/CheckExit(atom/movable/AM as mob|obj, target) + if(isliving(AM)) + var/mob/living/M = AM + var/outdir = dir + if(allowed_access(M)) + switch(dir) + if(NORTH) + outdir = SOUTH + if(SOUTH) + outdir = NORTH + if(EAST) + outdir = WEST + if(WEST) + outdir = EAST + var/turf/outturf = get_step(src, outdir) + var/canexit = (target == src.loc) | (target == outturf) + + if(!canexit && world.time - M.last_bumped <= 5) + to_chat(usr, "\the [src] resists your efforts.") + M.last_bumped = world.time + return canexit + else + return TRUE \ No newline at end of file diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 96bbe759ca..e5f40d7c52 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -354,12 +354,41 @@ update_label("John Doe", "Clowny") lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' assignment = "Prisoner" - registered_name = "Scum" + access = list(ACCESS_ENTER_GENPOP) + + //Lavaland labor camp var/goal = 0 //How far from freedom? var/points = 0 + //Genpop + var/sentence = 0 //When world.time is greater than this number, the card will have its ACCESS_ENTER_GENPOP access replaced with ACCESS_LEAVE_GENPOP the next time it's checked, unless this value is 0/null + var/crime= "\[REDACTED\]" -/obj/item/card/id/prisoner/attack_self(mob/user) - to_chat(usr, "You have accumulated [points] out of the [goal] points you need for freedom.") +/obj/item/card/id/prisoner/GetAccess() + if((sentence && world.time >= sentence) || (goal && points >= goal)) + access = list(ACCESS_LEAVE_GENPOP) + return ..() + +/obj/item/card/id/prisoner/process() + if(!sentence) + STOP_PROCESSING(SSobj, src) + return + if(world.time >= sentence) + playsound(loc, 'sound/machines/ping.ogg', 50, 1) + if(isliving(loc)) + to_chat(loc, "[src] buzzes: You have served your sentence! You may now exit prison through the turnstiles and collect your belongings.") + STOP_PROCESSING(SSobj, src) + return + +/obj/item/card/id/prisoner/examine(mob/user) + . = ..() + if(sentence && world.time < sentence) + to_chat(user, "You're currently serving a sentence for [crime]. [DisplayTimeText(sentence - world.time)] left.") + else if(goal) + to_chat(user, "You have accumulated [points] out of the [goal] points you need for freedom.") + else if(!sentence) + to_chat(user, "You are currently serving a permanent sentence for [crime].") + else + to_chat(user, "Your sentence is up! You're free!") /obj/item/card/id/prisoner/one name = "Prisoner #13-001" diff --git a/code/game/objects/structures/crates_lockers/closets/genpop.dm b/code/game/objects/structures/crates_lockers/closets/genpop.dm new file mode 100644 index 0000000000..80b64aaedc --- /dev/null +++ b/code/game/objects/structures/crates_lockers/closets/genpop.dm @@ -0,0 +1,117 @@ +/obj/structure/closet/secure_closet/genpop + desc = "It's a secure locker for inmates's personal belongings." + var/default_desc = "It's a secure locker for the storage inmates's personal belongings during their time in prison." + name = "prisoner closet" + var/default_name = "prisoner closet" + req_access = list(ACCESS_BRIG) + var/obj/item/card/id/prisoner/registered_id = null + icon_state = "prisoner" + locked = FALSE + anchored = TRUE + opened = TRUE + density = FALSE + +/obj/structure/closet/secure_closet/genpop/attackby(obj/item/W, mob/user, params) + if(!broken && locked && W == registered_id) //Prisoner opening + handle_prisoner_id(user) + return + + return ..() + +/obj/structure/closet/secure_closet/genpop/proc/handle_prisoner_id(mob/user) + var/obj/item/card/id/prisoner/prisoner_id = null + for(prisoner_id in user.held_items) + if(prisoner_id != registered_id) + prisoner_id = null + else + break + + if(!prisoner_id) + to_chat(user, "Access Denied.") + return FALSE + + qdel(registered_id) + registered_id = null + locked = FALSE + open(user) + desc = "It's a secure locker for prisoner effects." + to_chat(user, "You insert your prisoner id into \the [src] and it springs open!") + + return TRUE + +/obj/structure/closet/secure_closet/genpop/proc/handle_edit_sentence(mob/user) + var/prisoner_name = input(user, "Please input the name of the prisoner.", "Prisoner Name", registered_id.registered_name) as text|null + if(prisoner_name == null | !user.Adjacent(src)) + return FALSE + var/sentence_length = input(user, "Please input the length of their sentence in minutes (0 for perma).", "Sentence Length", registered_id.sentence) as num|null + if(sentence_length == null | !user.Adjacent(src)) + return FALSE + var/crimes = input(user, "Please input their crimes.", "Crimes", registered_id.crime) as text|null + if(crimes == null | !user.Adjacent(src)) + return FALSE + + registered_id.registered_name = prisoner_name + var/filteredsentlength = text2num(sentence_length) + registered_id.sentence = filteredsentlength ? (filteredsentlength MINUTES) + world.time : 0 + registered_id.crime = crimes + registered_id.update_label(prisoner_name, registered_id.assignment) + if(registered_id.sentence) + START_PROCESSING(SSobj, registered_id) + else + STOP_PROCESSING(SSobj, registered_id) + + name = "[default_name] ([prisoner_name])" + desc = "[default_desc] It contains the personal effects of [prisoner_name]." + + return TRUE + +/obj/structure/closet/secure_closet/genpop/togglelock(mob/living/user) + if(!allowed(user)) + return ..() + + if(!broken && locked && registered_id != null) + var/name = registered_id.registered_name + var/result = alert(user, "This locker currently contains [name]'s personal belongings ","Locker In Use","Reset","Amend ID", "Open") + if(!user.Adjacent(src)) + return + if(result == "Reset") + name = default_name + desc = default_desc + registered_id = null + if(result == "Open" | result == "Reset") + locked = FALSE + open(user) + if(result == "Amend ID") + handle_edit_sentence(user) + else + return ..() + +/obj/structure/closet/secure_closet/genpop/close(mob/living/user) + if(registered_id != null) + locked = TRUE + return ..() + +/obj/structure/closet/secure_closet/genpop/attack_hand(mob/user) + if(user.lying && get_dist(src, user) > 0) + return + + if(!broken && registered_id != null && registered_id in user.held_items) + handle_prisoner_id(user) + return + + if(!broken && opened && !locked && allowed(user) && !registered_id) //Genpop setup + + registered_id = new /obj/item/card/id/prisoner/(src.contents) + if(handle_edit_sentence(user)) + close(user) + locked = TRUE + update_icon() + registered_id.forceMove(src.loc) + new /obj/item/clothing/under/rank/prisoner(src.loc) + else + qdel(registered_id) + registered_id = null + + return + + ..() \ No newline at end of file diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index e88a80514a..1ffdff2347 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -121,7 +121,7 @@ return list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_BAR) /proc/get_all_accesses() - return list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, + return list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_MORGUE, ACCESS_RD, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_CHEMISTRY, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, @@ -157,7 +157,7 @@ if(1) //station general return list(ACCESS_KITCHEN,ACCESS_BAR, ACCESS_HYDROPONICS, ACCESS_JANITOR, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_LIBRARY, ACCESS_THEATRE, ACCESS_LAWYER) if(2) //security - return list(ACCESS_SEC_DOORS, ACCESS_WEAPONS, ACCESS_SECURITY, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_HOS) + return list(ACCESS_SEC_DOORS, ACCESS_WEAPONS, ACCESS_SECURITY, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_HOS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP,) if(3) //medbay return list(ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_CMO) if(4) //research @@ -312,6 +312,10 @@ return "Gateway" if(ACCESS_SEC_DOORS) return "Brig" + if(ACCESS_ENTER_GENPOP) + return "Prison Turnstile Entrance" + if(ACCESS_LEAVE_GENPOP) + return "Prison Turnstile Exit" if(ACCESS_MINERAL_STOREROOM) return "Mineral Storage" if(ACCESS_MINISAT) diff --git a/icons/obj/closet.dmi b/icons/obj/closet.dmi index 1b8eada39c5fcd0f7983fc574ab9b96eb6ce8100..d3f055d1f2e8148a08c9921c39623da9d7d28290 100644 GIT binary patch delta 15314 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 delta 14803 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 Date: Thu, 8 Aug 2019 17:45:01 -0500 Subject: [PATCH 078/469] likely fixes the examine bug lol --- code/modules/mob/living/carbon/human/examine.dm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index a9d66335c9..2f8f7977d7 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -53,11 +53,12 @@ msg += "[t_He] [t_is] wearing [icon2html(wear_suit, user)] [wear_suit.gender==PLURAL?"some":"a"] blood-stained [wear_suit.name]!\n" else msg += "[t_He] [t_is] wearing [icon2html(wear_suit, user)] \a [wear_suit].\n" - //suit/armor storage - if(s_store.blood_DNA) - msg += "[t_He] [t_is] carrying [icon2html(s_store, user)] [s_store.gender==PLURAL?"some":"a"] blood-stained [s_store.name] on [t_his] [wear_suit.name]!\n" - else - msg += "[t_He] [t_is] carrying [icon2html(s_store, user)] \a [s_store] on [t_his] [wear_suit.name].\n" + //suit/armour storage + if(s_store) + if(s_store.blood_DNA) + msg += "[t_He] [t_is] carrying [icon2html(s_store, user)] [s_store.gender==PLURAL?"some":"a"] blood-stained [s_store.name] on [t_his] [wear_suit.name]!\n" + else + msg += "[t_He] [t_is] carrying [icon2html(s_store, user)] \a [s_store] on [t_his] [wear_suit.name].\n" //back if(back) if(back.blood_DNA) From 0290a46ddc062c38bea63f269d34d454c051bc01 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 15 Aug 2019 12:32:44 -0500 Subject: [PATCH 079/469] Impliments Ghom review, reverts blood list back to component --- code/__DEFINES/citadel_defines.dm | 7 - code/__DEFINES/cleaning.dm | 5 + code/__DEFINES/forensics.dm | 2 + code/__DEFINES/is_helpers.dm | 11 + code/__DEFINES/misc.dm | 3 + code/__HELPERS/_cit_helpers.dm | 66 ------ code/_globalvars/lists/mobs.dm | 67 ++++++ code/datums/components/cleaning.dm | 24 +- code/datums/components/decals/blood.dm | 37 +++ code/datums/components/forensics.dm | 184 +++++++++++++++ code/datums/dna.dm | 8 - code/game/atoms.dm | 144 ++---------- code/game/machinery/suit_storage_unit.dm | 5 +- code/game/machinery/washing_machine.dm | 17 +- code/game/objects/effects/decals/cleanable.dm | 13 +- .../effects/decals/cleanable/aliens.dm | 6 +- .../objects/effects/decals/cleanable/gibs.dm | 33 +-- .../effects/decals/cleanable/humans.dm | 10 +- code/game/objects/items.dm | 11 - code/game/objects/items/clown_items.dm | 2 +- code/game/objects/items/mop.dm | 2 +- code/game/objects/items/stacks/stack.dm | 10 +- code/game/objects/items/twohanded.dm | 4 +- code/game/objects/structures/watercloset.dm | 18 +- code/game/turfs/open.dm | 2 +- .../devil/true_devil/_true_devil.dm | 6 +- .../antagonists/wizard/equipment/artefact.dm | 5 +- code/modules/clothing/gloves/_gloves.dm | 11 +- code/modules/clothing/head/_head.dm | 2 +- code/modules/clothing/masks/_masks.dm | 2 +- code/modules/clothing/neck/_neck.dm | 2 +- code/modules/clothing/shoes/_shoes.dm | 22 +- code/modules/clothing/suits/_suits.dm | 6 +- code/modules/clothing/under/_under.dm | 2 +- code/modules/detectivework/detective_work.dm | 219 ++++++++++-------- code/modules/detectivework/scanner.dm | 24 +- code/modules/mob/living/blood.dm | 16 +- code/modules/mob/living/brain/brain.dm | 10 +- code/modules/mob/living/carbon/examine.dm | 13 +- .../mob/living/carbon/human/examine.dm | 77 ++---- code/modules/mob/living/carbon/human/human.dm | 27 +-- .../mob/living/carbon/human/human_movement.dm | 4 +- .../mob/living/carbon/human/species.dm | 22 +- .../mob/living/simple_animal/bot/mulebot.dm | 7 +- .../simple_animal/friendly/drone/_drone.dm | 21 +- .../simple_animal/guardian/types/dextrous.dm | 12 +- .../mob/living/simple_animal/hostile/alien.dm | 4 +- code/modules/mob/mob_helpers.dm | 7 +- .../projectiles/projectile/bullets/smg.dm | 16 +- .../chemistry/reagents/other_reagents.dm | 24 +- .../objects/items/melee/eutactic_blades.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 8 - .../modules/reagents/reagents/cit_reagents.dm | 10 +- tgstation.dme | 3 + 54 files changed, 662 insertions(+), 613 deletions(-) create mode 100644 code/__DEFINES/forensics.dm create mode 100644 code/datums/components/decals/blood.dm create mode 100644 code/datums/components/forensics.dm diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 0ccc674cfc..07b53848cf 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -104,13 +104,6 @@ #define isgenital(A) (istype(A, /obj/item/organ/genital)) #define isborer(A) (istype(A, /mob/living/simple_animal/borer)) -#define isipcperson(A) (is_species(A, /datum/species/ipc)) -#define ismammal(A) (is_species(A, /datum/species/mammal)) -#define isavian(A) (is_species(A, /datum/species/avian)) -#define isaquatic(A) (is_species(A, /datum/species/aquatic)) -#define isinsect(A) (is_species(A, /datum/species/insect)) -#define isxenoperson(A) (is_species(A, /datum/species/xeno)) -#define isstartjelly(A) (is_species(A, /datum/species/jelly/roundstartslime)) #define CITADEL_MENTOR_OOC_COLOUR "#224724" diff --git a/code/__DEFINES/cleaning.dm b/code/__DEFINES/cleaning.dm index 6049fd7918..c4db590e90 100644 --- a/code/__DEFINES/cleaning.dm +++ b/code/__DEFINES/cleaning.dm @@ -5,3 +5,8 @@ #define CLEAN_STRONG 4 // Industrial strength #define CLEAN_IMPRESSIVE 5 // Cleaning strong enough your granny would be proud #define CLEAN_GOD 6 // Cleans things spotless down to the atomic structure + +//How strong things have to be to wipe forensic evidence... +#define CLEAN_STRENGTH_FINGERPRINTS CLEAN_IMPRESSIVE +#define CLEAN_STRENGTH_BLOOD CLEAN_WEAK +#define CLEAN_STRENGTH_FIBERS CLEAN_IMPRESSIVE diff --git a/code/__DEFINES/forensics.dm b/code/__DEFINES/forensics.dm new file mode 100644 index 0000000000..0cda5d997a --- /dev/null +++ b/code/__DEFINES/forensics.dm @@ -0,0 +1,2 @@ +#define IF_HAS_BLOOD_DNA(__thing) GET_COMPONENT_FROM(__FR##__thing, /datum/component/forensics, __thing); if(__FR##__thing && length(__FR##__thing.blood_DNA)) +#define IF_HAS_BLOOD_DNA_AND(__thing, __conditions...) GET_COMPONENT_FROM(__FR##__thing, /datum/component/forensics, __thing); if(__FR##__thing && length(__FR##__thing.blood_DNA) && (##__conditions)) \ No newline at end of file diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 8ff40c3ef9..ba6ffe12bd 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -60,6 +60,15 @@ #define ishumanbasic(A) (is_species(A, /datum/species/human)) #define iscatperson(A) (ishumanbasic(A) && istype(A.dna.species, /datum/species/human/felinid) ) +// Citadel specific species +#define isipcperson(A) (is_species(A, /datum/species/ipc)) +#define ismammal(A) (is_species(A, /datum/species/mammal)) +#define isavian(A) (is_species(A, /datum/species/avian)) +#define isaquatic(A) (is_species(A, /datum/species/aquatic)) +#define isinsect(A) (is_species(A, /datum/species/insect)) +#define isxenoperson(A) (is_species(A, /datum/species/xeno)) +#define isstartjelly(A) (is_species(A, /datum/species/jelly/roundstartslime)) + //more carbon mobs #define ismonkey(A) (istype(A, /mob/living/carbon/monkey)) @@ -175,6 +184,8 @@ GLOBAL_LIST_INIT(heavyfootmob, typecacheof(list( #define iscameramob(A) (istype(A, /mob/camera)) +#define isaicamera(A) (istype(A, /mob/camera/aiEye)) + #define iseminence(A) (istype(A, /mob/camera/eminence)) //Footstep helpers diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 1a38e368c2..6b924ef207 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -183,6 +183,9 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache) #define BLOOD_COLOR_SYNTHETIC "#3f48aa" #define BLOOD_COLOR_SLIME "#00ff90" #define BLOOD_COLOR_LIZARD "#db004D" +#define BLOOD_COLOR_UNIVERSAL "#db3300" +#define BLOOD_COLOR_BUG "#a37c0f" + //suit sensors: sensor_mode defines diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm index 77b79cf532..8683f75b08 100644 --- a/code/__HELPERS/_cit_helpers.dm +++ b/code/__HELPERS/_cit_helpers.dm @@ -94,72 +94,6 @@ GLOBAL_LIST_INIT(dildo_colors, list(//mostly neon colors "Purple" = "#e300ff"//purple )) -GLOBAL_LIST_INIT(noodle_taurs, list( - "Naga", - "Tentacle" - )) - -GLOBAL_LIST_INIT(paw_taurs, list( - "Fox", - "Wolf", - "Otie", - "Drake", - "Lab", - "Shepherd", - "Husky", - "Eevee", - "Panther", - "Horse", - "Cow", - "Tiger" - )) - - //blood types -GLOBAL_LIST_INIT(regular_bloods,list( - "O-", - "O+", - "A-", - "A+", - "B-", - "B+", - "AB-", - "AB+" - )) - -GLOBAL_LIST_INIT(all_types_bloods,list( - "O-", - "O+", - "A-", - "A+", - "B-", - "B+", - "AB-", - "AB+", - "SY", - "X*", - "HF", - "L", - "U", - "GEL" - )) - -GLOBAL_LIST_INIT(blood_types, list( - "blood", - "syntheticblood", - "xenoblood", - "oilblood", - "jellyblood" - )) - -GLOBAL_LIST_INIT(blood_id_types, list( - "blood" = /datum/reagent/blood, - "syntheticblood" = /datum/reagent/blood/synthetics, - "xenoblood" = /datum/reagent/blood/xenomorph, - "oilblood" = /datum/reagent/blood/oil, - "jellyblood" = /datum/reagent/blood/jellyblood - )) - - //Crew objective and miscreants stuff GLOBAL_VAR_INIT(miscreants_allowed, FALSE) diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index c883254afe..5143cc3028 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -58,3 +58,70 @@ GLOBAL_LIST_EMPTY(latejoiners) //CIT CHANGE - All latejoining people, for traito for(var/i in GLOB.mob_list) var/mob/M = i M.update_config_movespeed() + +GLOBAL_LIST_INIT(noodle_taurs, list( + "Naga", + "Tentacle" + )) + +GLOBAL_LIST_INIT(paw_taurs, list( + "Fox", + "Wolf", + "Otie", + "Drake", + "Lab", + "Shepherd", + "Husky", + "Eevee", + "Panther", + "Horse", + "Cow", + "Tiger" + )) + + //blood types +GLOBAL_LIST_INIT(regular_bloods,list( + "O-", + "O+", + "A-", + "A+", + "B-", + "B+", + "AB-", + "AB+" + )) + +GLOBAL_LIST_INIT(all_types_bloods,list( + "O-", + "O+", + "A-", + "A+", + "B-", + "B+", + "AB-", + "AB+", + "SY", + "X*", + "HF", + "L", + "U", + "GEL", + "BUG" + )) + +GLOBAL_LIST_INIT(blood_types, list( + "blood", + "syntheticblood", + "xenoblood", + "oilblood", + "jellyblood" + )) + +GLOBAL_LIST_INIT(blood_id_types, list( + "blood" = /datum/reagent/blood, + "syntheticblood" = /datum/reagent/blood/synthetics, + "xenoblood" = /datum/reagent/blood/xenomorph, + "oilblood" = /datum/reagent/blood/oil, + "jellyblood" = /datum/reagent/blood/jellyblood + )) + diff --git a/code/datums/components/cleaning.dm b/code/datums/components/cleaning.dm index 08ac57b79a..0cb0fce7b9 100644 --- a/code/datums/components/cleaning.dm +++ b/code/datums/components/cleaning.dm @@ -12,28 +12,28 @@ if(!isturf(tile)) return - tile.clean_blood() + SEND_SIGNAL(tile, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) for(var/A in tile) if(is_cleanable(A)) qdel(A) - else if(isitem(A)) - var/obj/item/cleaned_item = A - cleaned_item.clean_blood() - if(ismob(cleaned_item.loc)) - var/mob/M = cleaned_item.loc + else if(istype(A, /obj/item)) + var/obj/item/I = A + SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + if(ismob(I.loc)) + var/mob/M = I.loc M.regenerate_icons() else if(ishuman(A)) var/mob/living/carbon/human/cleaned_human = A if(cleaned_human.lying) if(cleaned_human.head) - cleaned_human.head.clean_blood() + SEND_SIGNAL(cleaned_human.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) if(cleaned_human.wear_suit) - cleaned_human.wear_suit.clean_blood() + SEND_SIGNAL(cleaned_human.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) else if(cleaned_human.w_uniform) - cleaned_human.w_uniform.clean_blood() + SEND_SIGNAL(cleaned_human.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) if(cleaned_human.shoes) - cleaned_human.shoes.clean_blood() - cleaned_human.clean_blood() + SEND_SIGNAL(cleaned_human.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(cleaned_human, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) cleaned_human.wash_cream() cleaned_human.regenerate_icons() - to_chat(cleaned_human, "[AM] cleans your face!") + to_chat(cleaned_human, "[AM] cleans your face!") \ No newline at end of file diff --git a/code/datums/components/decals/blood.dm b/code/datums/components/decals/blood.dm new file mode 100644 index 0000000000..47c7fb8228 --- /dev/null +++ b/code/datums/components/decals/blood.dm @@ -0,0 +1,37 @@ +/datum/component/decal/blood + dupe_mode = COMPONENT_DUPE_UNIQUE + +/datum/component/decal/blood/Initialize(_icon, _icon_state, _dir, _cleanable=CLEAN_STRENGTH_BLOOD, _color, _layer=ABOVE_OBJ_LAYER) + if(!isitem(parent)) + return COMPONENT_INCOMPATIBLE + . = ..() + RegisterSignal(parent, COMSIG_ATOM_GET_EXAMINE_NAME, .proc/get_examine_name) + +/datum/component/decal/blood/generate_appearance(_icon, _icon_state, _dir, _layer, _color) + var/obj/item/I = parent + if(!_icon) + _icon = 'icons/effects/blood.dmi' + if(!_icon_state) + _icon_state = "itemblood" + var/icon = initial(I.icon) + var/icon_state = initial(I.icon_state) + if(!icon || !icon_state) + // It's something which takes on the look of other items, probably + icon = I.icon + icon_state = I.icon_state + var/icon/blood_splatter_icon = icon(initial(I.icon), initial(I.icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object + blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) + blood_splatter_icon.Blend(icon(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant + pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state)) + + I.blood_overlay = image(blood_splatter_icon) + I.blood_overlay.color = I.blood_DNA_to_color() + I.add_overlay(I.blood_overlay) + + return TRUE + +/datum/component/decal/blood/proc/get_examine_name(datum/source, mob/user, list/override) + var/atom/A = parent + override[EXAMINE_POSITION_ARTICLE] = A.gender == PLURAL? "some" : "a" + override[EXAMINE_POSITION_BEFORE] = " blood-stained " + return COMPONENT_EXNAME_CHANGED diff --git a/code/datums/components/forensics.dm b/code/datums/components/forensics.dm new file mode 100644 index 0000000000..cd3cbbd8c1 --- /dev/null +++ b/code/datums/components/forensics.dm @@ -0,0 +1,184 @@ +/datum/component/forensics + dupe_mode = COMPONENT_DUPE_UNIQUE + can_transfer = TRUE + var/list/fingerprints //assoc print = print + var/list/hiddenprints //assoc ckey = realname/gloves/ckey + var/list/blood_DNA //assoc dna = bloodtype + var/list/fibers //assoc print = print + +/datum/component/forensics/InheritComponent(datum/component/forensics/F, original) //Use of | and |= being different here is INTENTIONAL. + fingerprints = fingerprints | F.fingerprints + hiddenprints = hiddenprints | F.hiddenprints + blood_DNA = blood_DNA | F.blood_DNA + fibers = fibers | F.fibers + check_blood() + return ..() + +/datum/component/forensics/Initialize(new_fingerprints, new_hiddenprints, new_blood_DNA, new_fibers) + if(!isatom(parent)) + return COMPONENT_INCOMPATIBLE + fingerprints = new_fingerprints + hiddenprints = new_hiddenprints + blood_DNA = new_blood_DNA + fibers = new_fibers + check_blood() + +/datum/component/forensics/RegisterWithParent() + check_blood() + RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_act) + +/datum/component/forensics/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_COMPONENT_CLEAN_ACT)) + +/datum/component/forensics/PostTransfer() + if(!isatom(parent)) + return COMPONENT_INCOMPATIBLE + +/datum/component/forensics/proc/wipe_fingerprints() + fingerprints = null + return TRUE + +/datum/component/forensics/proc/wipe_hiddenprints() + return //no. + +/datum/component/forensics/proc/wipe_blood_DNA() + blood_DNA = null + if(isitem(parent)) + qdel(parent.GetComponent(/datum/component/decal/blood)) + return TRUE + +/datum/component/forensics/proc/wipe_fibers() + fibers = null + return TRUE + +/datum/component/forensics/proc/clean_act(datum/source, strength) + if(strength >= CLEAN_STRENGTH_FINGERPRINTS) + wipe_fingerprints() + if(strength >= CLEAN_STRENGTH_BLOOD) + wipe_blood_DNA() + if(strength >= CLEAN_STRENGTH_FIBERS) + wipe_fibers() + +/datum/component/forensics/proc/add_fingerprint_list(list/_fingerprints) //list(text) + if(!length(_fingerprints)) + return + LAZYINITLIST(fingerprints) + for(var/i in _fingerprints) //We use an associative list, make sure we don't just merge a non-associative list into ours. + fingerprints[i] = i + return TRUE + +/datum/component/forensics/proc/add_fingerprint(mob/living/M, ignoregloves = FALSE) + if(!isliving(M)) + if(!iscameramob(M)) + return + if(isaicamera(M)) + var/mob/camera/aiEye/ai_camera = M + if(!ai_camera.ai) + return + M = ai_camera.ai + add_hiddenprint(M) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + add_fibers(H) + if(H.gloves) //Check if the gloves (if any) hide fingerprints + var/obj/item/clothing/gloves/G = H.gloves + if(G.transfer_prints) + ignoregloves = TRUE + if(!ignoregloves) + H.gloves.add_fingerprint(H, TRUE) //ignoregloves = 1 to avoid infinite loop. + return + var/full_print = md5(H.dna.uni_identity) + LAZYSET(fingerprints, full_print, full_print) + return TRUE + +/datum/component/forensics/proc/add_fiber_list(list/_fibertext) //list(text) + if(!length(_fibertext)) + return + LAZYINITLIST(fibers) + for(var/i in _fibertext) //We use an associative list, make sure we don't just merge a non-associative list into ours. + fibers[i] = i + return TRUE + +/datum/component/forensics/proc/add_fibers(mob/living/carbon/human/M) + var/fibertext + var/item_multiplier = isitem(src)?1.2:1 + if(M.wear_suit) + fibertext = "Material from \a [M.wear_suit]." + if(prob(10*item_multiplier) && !LAZYACCESS(fibers, fibertext)) + LAZYSET(fibers, fibertext, fibertext) + if(!(M.wear_suit.body_parts_covered & CHEST)) + if(M.w_uniform) + fibertext = "Fibers from \a [M.w_uniform]." + if(prob(12*item_multiplier) && !LAZYACCESS(fibers, fibertext)) //Wearing a suit means less of the uniform exposed. + LAZYSET(fibers, fibertext, fibertext) + if(!(M.wear_suit.body_parts_covered & HANDS)) + if(M.gloves) + fibertext = "Material from a pair of [M.gloves.name]." + if(prob(20*item_multiplier) && !LAZYACCESS(fibers, fibertext)) + LAZYSET(fibers, fibertext, fibertext) + else if(M.w_uniform) + fibertext = "Fibers from \a [M.w_uniform]." + if(prob(15*item_multiplier) && !LAZYACCESS(fibers, fibertext)) + // "Added fibertext: [fibertext]" + LAZYSET(fibers, fibertext, fibertext) + if(M.gloves) + fibertext = "Material from a pair of [M.gloves.name]." + if(prob(20*item_multiplier) && !LAZYACCESS(fibers, fibertext)) + LAZYSET(fibers, fibertext, fibertext) + else if(M.gloves) + fibertext = "Material from a pair of [M.gloves.name]." + if(prob(20*item_multiplier) && !LAZYACCESS(fibers, fibertext)) + LAZYSET(fibers, fibertext, fibertext) + return TRUE + +/datum/component/forensics/proc/add_hiddenprint_list(list/_hiddenprints) //list(ckey = text) + if(!length(_hiddenprints)) + return + LAZYINITLIST(hiddenprints) + for(var/i in _hiddenprints) //We use an associative list, make sure we don't just merge a non-associative list into ours. + hiddenprints[i] = _hiddenprints[i] + return TRUE + +/datum/component/forensics/proc/add_hiddenprint(mob/M) + if(!isliving(M)) + if(!iscameramob(M)) + return + if(isaicamera(M)) + var/mob/camera/aiEye/ai_camera = M + if(!ai_camera.ai) + return + M = ai_camera.ai + if(!M.key) + return + var/hasgloves = "" + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.gloves) + hasgloves = "(gloves)" + var/current_time = TIME_STAMP("hh:mm:ss", FALSE) + if(!LAZYACCESS(hiddenprints, M.key)) + LAZYSET(hiddenprints, M.key, "First: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]") + else + var/laststamppos = findtext(LAZYACCESS(hiddenprints, M.key), " Last: ") + if(laststamppos) + LAZYSET(hiddenprints, M.key, copytext(hiddenprints[M.key], 1, laststamppos)) + hiddenprints[M.key] += " Last: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]" //made sure to be existing by if(!LAZYACCESS);else + var/atom/A = parent + A.fingerprintslast = M.ckey + return TRUE + +/datum/component/forensics/proc/add_blood_DNA(list/dna) //list(dna_enzymes = type) + if(!length(dna)) + return + LAZYINITLIST(blood_DNA) + for(var/i in dna) + blood_DNA[i] = dna[i] + check_blood() + return TRUE + +/datum/component/forensics/proc/check_blood() + if(!isitem(parent)) + return + if(!length(blood_DNA)) + return + parent.LoadComponent(/datum/component/decal/blood) diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 8d04ff246a..33e92e4de5 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -303,14 +303,6 @@ if(!dna.species) var/rando_race = pick(GLOB.roundstart_races) dna.species = new rando_race() - if(isjellyperson(dna.species)) - dna.blood_type = "GEL" - if(isipcperson(dna.species)) - dna.blood_type = "HF" - if(isxenoperson(dna.species)) - dna.blood_type = "X*" - if(islizard(dna.species)) - dna.blood_type = "L" //proc used to update the mob's appearance after its dna UI has been changed /mob/living/carbon/proc/updateappearance(icon_update=1, mutcolor_update=0, mutations_overlay_update=0) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 71e06abd15..a740edacfc 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -37,9 +37,6 @@ var/rad_insulation = RAD_NO_INSULATION var/icon/blood_splatter_icon - var/list/fingerprints - var/list/fingerprintshidden - var/list/blood_DNA /atom/New(loc, ...) //atom creation method that preloads variables at creation @@ -248,22 +245,24 @@ return TRUE return FALSE -/atom/proc/examine(mob/user) - //This reformat names to get a/an properly working on item descriptions when they are bloody - var/f_name = "\a [src]." - if(src.blood_DNA && !istype(src, /obj/effect/decal)) - if(gender == PLURAL) - f_name = "some " - else - f_name = "a " - f_name += "blood-stained [name]!" +/atom/proc/get_examine_name(mob/user) + . = "\a [src]" + var/list/override = list(gender == PLURAL ? "some" : "a", " ", "[name]") + if(article) + . = "[article] [src]" + override[EXAMINE_POSITION_ARTICLE] = article + if(SEND_SIGNAL(src, COMSIG_ATOM_GET_EXAMINE_NAME, user, override) & COMPONENT_EXNAME_CHANGED) + . = override.Join("") - to_chat(user, "[icon2html(src, user)] That's [f_name]") +///Generate the full examine string of this atom (including icon for goonchat) +/atom/proc/get_examine_string(mob/user, thats = FALSE) + . = "[icon2html(src, user)] [thats? "That's ":""][get_examine_name(user)]" + +/atom/proc/examine(mob/user) + to_chat(user, "[get_examine_string(user, TRUE)].") if(desc) to_chat(user, desc) - // *****RM - //to_chat(user, "[name]: Dn:[density] dir:[dir] cont:[contents] icon:[icon] is:[icon_state] loc:[loc]") if(reagents) if(reagents.reagents_holder_flags & TRANSPARENT) @@ -285,6 +284,8 @@ else to_chat(user, "It's empty.") + SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user) + /atom/proc/relaymove(mob/user) if(buckle_message_cooldown <= world.time) buckle_message_cooldown = world.time + 50 @@ -349,24 +350,12 @@ var/new_blood_dna = L.get_blood_dna_list() if(!new_blood_dna) return FALSE - if(!blood_DNA) //if our list of DNA doesn't exist yet, initialise it. - blood_DNA = list() - var/old_length = blood_DNA.len - blood_DNA |= new_blood_dna - if(blood_DNA.len == old_length) + var/old_length = blood_DNA_length() + add_blood(new_blood_dna) + if(blood_DNA_length() == old_length) return FALSE return TRUE -//to add blood dna info to the object's blood_DNA list -/atom/proc/transfer_blood_dna(list/blood_dna) - if(!blood_DNA) - blood_DNA = list() - var/old_length = blood_DNA.len - blood_DNA |= blood_dna - if(blood_DNA.len > old_length) - return TRUE//some new blood DNA was added - - //to add blood from a mob onto something, and transfer their dna info /atom/proc/add_mob_blood(mob/living/M) var/list/blood_dna = M.get_blood_dna_list() @@ -374,101 +363,6 @@ return FALSE return add_blood(blood_dna) -//to add blood onto something, with blood dna info to include. -/atom/proc/add_blood(list/blood_dna) - return FALSE - -/obj/add_blood(list/blood_dna) - return transfer_blood_dna(blood_dna) - -/obj/item/add_blood(list/blood_dna) - if(!..()) - return FALSE - add_blood_overlay() - return TRUE //we applied blood to the item - -/obj/item/proc/add_blood_overlay() - if(!blood_DNA.len) - return - if(initial(icon) && initial(icon_state)) - blood_splatter_icon = icon(initial(icon), initial(icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object - blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) - blood_splatter_icon.Blend(icon('icons/effects/blood.dmi', "itemblood"), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant - - blood_overlay = image(blood_splatter_icon) - blood_overlay.color = blood_DNA_to_color() - add_overlay(blood_overlay) - -/obj/item/clothing/gloves/add_blood(mob/living/carbon/M) - . = ..() - transfer_blood = rand(2, 4) - return TRUE - -/obj/item/clothing/shoes/add_blood(mob/living/carbon/M) - . = ..() -// transfer_blood = rand(2, 4) - return TRUE - -/turf/add_blood(list/blood_dna) - var/obj/effect/decal/cleanable/blood/splatter/B = locate() in src - if(!B) - B = new /obj/effect/decal/cleanable/blood/splatter(src) - B.transfer_blood_dna(blood_dna) //give blood info to the blood decal. - return TRUE //we bloodied the floor - -/mob/living/carbon/human/add_blood(list/blood_dna) - if(wear_suit) - wear_suit.add_blood(blood_dna) - update_inv_wear_suit() - else if(w_uniform) - w_uniform.add_blood(blood_dna) - update_inv_w_uniform() - if(gloves) - var/obj/item/clothing/gloves/G = gloves - G.add_blood(blood_dna) - else - transfer_blood_dna(blood_dna) - bloody_hands = rand(2, 4) - update_inv_gloves() //handles bloody hands overlays and updating - if(shoes) - var/obj/item/clothing/shoes/S = shoes - S.add_blood(blood_dna) -// else -// transfer_blood_dna(blood_dna) -// bloody_feet = rand(2, 4) - update_inv_shoes() // get them feet messy for prints! - return TRUE - -/atom/proc/clean_blood() - if(islist(blood_DNA)) - blood_DNA = null - return TRUE - -/atom/proc/blood_DNA_to_color() - var/list/colors = list()//first we make a list of all bloodtypes present - for(var/bloop in blood_DNA) - if(colors[blood_DNA[bloop]]) - colors[blood_DNA[bloop]]++ - else - colors[blood_DNA[bloop]] = 1 - - var/final_rgb = "#940000" - - if(colors.len) - var/sum = 0 //this is all shitcode, but it works; trust me - final_rgb = bloodtype_to_color(colors[1]) - sum = colors[colors[1]] - if(colors.len > 1) - var/i = 2 - while(i <= colors.len) - var/tmp = colors[colors[i]] - final_rgb = BlendRGB(final_rgb, bloodtype_to_color(colors[i]), tmp/(tmp+sum)) - sum += tmp - i++ - - return final_rgb - - /atom/proc/wash_cream() return TRUE diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 27faa6bffb..94d3e2f499 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -247,8 +247,7 @@ visible_message("[src]'s door slides open, barraging you with the nauseating smell of charred flesh.") playsound(src, 'sound/machines/airlockclose.ogg', 25, 1) for(var/obj/item/I in src) //Scorches away blood and forensic evidence, although the SSU itself is unaffected - I.clean_blood() - I.fingerprints = list() + SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRONG) var/datum/component/radioactive/contamination = I.GetComponent(/datum/component/radioactive) if(contamination) qdel(contamination) @@ -419,4 +418,4 @@ if(I) I.forceMove(loc) . = TRUE - update_icon() + update_icon() \ No newline at end of file diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 2ff7ee1a13..e117c680ca 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -11,6 +11,10 @@ var/obj/item/color_source var/max_wash_capacity = 5 +/obj/machinery/washing_machine/ComponentInitialize() + . = ..() + AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood))) + /obj/machinery/washing_machine/examine(mob/user) ..() to_chat(user, "Alt-click it to start a wash cycle.") @@ -55,8 +59,7 @@ M.Translate(rand(-3, 3), rand(-1, 3)) animate(src, transform=M, time=2) -/obj/machinery/washing_machine/clean_blood() - ..() +/obj/machinery/washing_machine/proc/clean_blood() if(!busy) bloody_mess = FALSE update_icon() @@ -64,7 +67,7 @@ /obj/machinery/washing_machine/proc/wash_cycle() for(var/X in contents) var/atom/movable/AM = X - AM.clean_blood() + SEND_SIGNAL(AM, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) AM.machine_wash(src) busy = FALSE @@ -92,12 +95,6 @@ var/obj/item/toy/crayon/CR = WM.color_source add_atom_colour(CR.paint_color, WASHABLE_COLOUR_PRIORITY) -/obj/item/reagents_containers/rag/towel/machine_wash(obj/machinery/washing_machine/WM) - if(WM.color_source) - if(istype(WM.color_source, /obj/item/toy/crayon)) - var/obj/item/toy/crayon/CR = WM.color_source - add_atom_colour(CR.paint_color, WASHABLE_COLOUR_PRIORITY) - /mob/living/simple_animal/pet/dog/corgi/machine_wash(obj/machinery/washing_machine/WM) gib() @@ -274,4 +271,4 @@ ..() density = TRUE //because machinery/open_machine() sets it to 0 color_source = null - has_corgi = 0 + has_corgi = 0 \ No newline at end of file diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 6746c41f0b..a56f45a712 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -1,8 +1,7 @@ - /obj/effect/decal/cleanable gender = PLURAL layer = ABOVE_NORMAL_TURF_LAYER - var/list/random_icon_states = list() + var/list/random_icon_states = null var/blood_state = "" //I'm sorry but cleanable/blood code is ass, and so is blood_DNA var/bloodiness = 0 //0-100, amount of blood in this decal, used for making footprints and affecting the alpha of bloody footprints var/mergeable_decal = TRUE //when two of these are on a same tile or do we need to merge them into just one? @@ -26,9 +25,9 @@ if(LAZYLEN(diseases_to_add)) AddComponent(/datum/component/infective, diseases_to_add) -/obj/effect/decal/cleanable/proc/replace_decal(obj/effect/decal/cleanable/C) +/obj/effect/decal/cleanable/proc/replace_decal(obj/effect/decal/cleanable/C) // Returns true if we should give up in favor of the pre-existing decal if(mergeable_decal) - qdel(C) + return TRUE /obj/effect/decal/cleanable/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/reagent_containers/glass) || istype(W, /obj/item/reagent_containers/food/drinks)) @@ -70,9 +69,10 @@ //Add "bloodiness" of this blood's type, to the human's shoes //This is on /cleanable because fuck this ancient mess /obj/effect/decal/cleanable/Crossed(atom/movable/O) + ..() if(ishuman(O)) var/mob/living/carbon/human/H = O - if(H.shoes && blood_state && bloodiness && (!HAS_TRAIT(H,TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective")) + if(H.shoes && blood_state && bloodiness && !HAS_TRAIT(H, TRAIT_LIGHT_STEP)) var/obj/item/clothing/shoes/S = H.shoes var/add_blood = 0 if(bloodiness >= BLOOD_GAIN_PER_STEP) @@ -81,8 +81,7 @@ add_blood = bloodiness bloodiness -= add_blood S.bloody_shoes[blood_state] = min(MAX_SHOE_BLOODINESS,S.bloody_shoes[blood_state]+add_blood) - if(blood_DNA && blood_DNA.len) - S.add_blood(blood_DNA) + S.add_blood(return_blood_DNA()) S.blood_state = blood_state update_icon() H.update_inv_shoes() diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index e6edc7661a..3a9f851e4c 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -3,17 +3,17 @@ name = "xeno blood" desc = "It's green and acidic. It looks like... blood?" color = BLOOD_COLOR_XENO - blood_DNA = list("UNKNOWN DNA" = "X*") /obj/effect/decal/cleanable/blood/splatter/xeno color = BLOOD_COLOR_XENO /obj/effect/decal/cleanable/blood/gibs/xeno color = BLOOD_COLOR_XENO + gibs_reagent_id = "liquidxenogibs" + gibs_bloodtype = "X*" /obj/effect/decal/cleanable/blood/gibs/xeno/Initialize(mapload, list/datum/disease/diseases) . = ..() - reagents.add_reagent("liquidxenogibs", 5) update_icon() /obj/effect/decal/cleanable/blood/gibs/xeno/update_icon() @@ -35,7 +35,7 @@ if(infective) diseases = infective.diseases var/obj/effect/decal/cleanable/blood/splatter/xeno/splat = new /obj/effect/decal/cleanable/blood/splatter/xeno(loc, diseases) - splat.transfer_blood_dna(blood_DNA) + splat.add_blood(return_blood_DNA()) if(!step_to(src, get_step(src, direction), 0)) break diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index c7df4e4ecf..73c89b4db5 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -6,11 +6,17 @@ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") mergeable_decal = FALSE var/body_colors = "#e3ba84" //a default color just in case. + var/gibs_reagent_id = "liquidgibs" + var/gibs_bloodtype = "A+" /obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) . = ..() if(random_icon_states && (icon_state == initial(icon_state)) && length(random_icon_states) > 0) icon_state = pick(random_icon_states) + if(gibs_reagent_id) + reagents.add_reagent(gibs_reagent_id, 5) + if(gibs_bloodtype) + add_blood(list("Non-human DNA" = gibs_bloodtype)) update_icon() @@ -51,7 +57,7 @@ if(infective) diseases = infective.diseases var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) - splat.transfer_blood_dna(blood_DNA) + splat.add_blood(return_blood_DNA()) if(!step_to(src, get_step(src, direction), 0)) break @@ -81,9 +87,8 @@ /obj/effect/decal/cleanable/blood/gibs/old/Initialize(mapload, list/datum/disease/diseases) . = ..() - setDir(pick(1,2,4,8)) + setDir(pick(GLOB.cardinals)) icon_state += "-old" - add_blood(list("Non-human DNA" = "A+")) update_icon() /obj/effect/decal/cleanable/blood/drip @@ -101,9 +106,6 @@ /obj/effect/decal/cleanable/blood/gibs/human/Initialize(mapload, list/datum/disease/diseases) . = ..() - reagents.add_reagent("liquidgibs", 5) - if(!blood_DNA.len) - add_blood(list("Non-human DNA" = "A+")) update_icon() /obj/effect/decal/cleanable/blood/gibs/human/up @@ -128,12 +130,11 @@ //Lizards /obj/effect/decal/cleanable/blood/gibs/human/lizard body_colors = "117720" + gibs_reagent_id = "liquidgibs" + gibs_bloodtype = "L" /obj/effect/decal/cleanable/blood/gibs/human/lizard/Initialize(mapload, list/datum/disease/diseases) . = ..() - reagents.add_reagent("liquidgibs", 5) - if(!blood_DNA.len) - add_blood(list("Non-human DNA" = "L")) update_icon() /obj/effect/decal/cleanable/blood/gibs/human/lizard/up @@ -157,12 +158,11 @@ // Slime Gibs /obj/effect/decal/cleanable/blood/gibs/slime desc = "They look gooey and gruesome." + gibs_reagent_id = "liquidslimegibs" + gibs_bloodtype = "GEL" /obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases) . = ..() - reagents.add_reagent("liquidslimegibs", 5) - if(!blood_DNA.len) - add_blood(list("Non-human DNA" = "GEL")) update_icon() /obj/effect/decal/cleanable/blood/gibs/slime/update_icon() @@ -197,21 +197,22 @@ /obj/effect/decal/cleanable/blood/gibs/synth desc = "They look sludgy and disgusting." + gibs_reagent_id = "liquidsyntheticgibs" + gibs_bloodtype = "SY" /obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) . = ..() - reagents.add_reagent("liquidsyntheticgibs", 5) + update_icon() //IPCs /obj/effect/decal/cleanable/blood/gibs/ipc desc = "They look sharp yet oozing." body_colors = "00ff00" + gibs_reagent_id = "liquidoilgibs" + gibs_bloodtype = "HF" /obj/effect/decal/cleanable/blood/gibs/ipc/Initialize(mapload, list/datum/disease/diseases) . = ..() - reagents.add_reagent("liquidoilgibs", 5) - if(!blood_DNA.len) - add_blood(list("Non-human DNA" = "HF")) update_icon() /obj/effect/decal/cleanable/blood/gibs/ipc/update_icon() diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 8b582587fe..ceb41dee5c 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -4,16 +4,17 @@ icon = 'icons/effects/blood.dmi' icon_state = "floor1" random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7") - blood_DNA = list() blood_state = BLOOD_STATE_BLOOD bloodiness = MAX_SHOE_BLOODINESS color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere. /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) - if (C.blood_DNA) - blood_DNA |= C.blood_DNA.Copy() + C.add_blood(return_blood_DNA()) + if (bloodiness) + if (C.bloodiness < MAX_SHOE_BLOODINESS) + C.bloodiness += bloodiness update_icon() - ..() + return ..() /obj/effect/decal/cleanable/blood/transfer_blood_dna() ..() @@ -50,7 +51,6 @@ desc = "Your instincts say you shouldn't be following these." random_icon_states = null var/list/existing_dirs = list() - blood_DNA = list() /obj/effect/decal/cleanable/trail_holder/update_icon() color = blood_DNA_to_color() diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 22daea7b56..229d8fcb3a 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -541,17 +541,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) M.become_blind(EYE_DAMAGE) to_chat(M, "You go blind!") -/obj/item/clean_blood() - . = ..() - if(.) - if(blood_splatter_icon) - cut_overlay(blood_splatter_icon) - -/obj/item/clothing/gloves/clean_blood() - . = ..() - if(.) - transfer_blood = 0 - /obj/item/singularity_pull(S, current_size) ..() if(current_size >= STAGE_FOUR) diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index e371ae7d40..1d302b409e 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -88,7 +88,7 @@ var/obj/effect/decal/cleanable/C = locate() in target qdel(C) target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - target.clean_blood() + SEND_SIGNAL(target, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM) target.wash_cream() return diff --git a/code/game/objects/items/mop.dm b/code/game/objects/items/mop.dm index 65246aefa4..7524fc9007 100644 --- a/code/game/objects/items/mop.dm +++ b/code/game/objects/items/mop.dm @@ -26,7 +26,7 @@ /obj/item/mop/proc/clean(turf/A) if(reagents.has_reagent("water", 1) || reagents.has_reagent("holywater", 1) || reagents.has_reagent("vodka", 1) || reagents.has_reagent("cleaner", 1)) - A.clean_blood() + SEND_SIGNAL(A, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM) for(var/obj/effect/O in A) if(is_cleanable(O)) qdel(O) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 9b714b7b15..a4b0740c1c 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -388,10 +388,10 @@ else . = ..() -/obj/item/stack/proc/copy_evidences(obj/item/stack/from as obj) - blood_DNA = from.blood_DNA - fingerprints = from.fingerprints - fingerprintshidden = from.fingerprintshidden +/obj/item/stack/proc/copy_evidences(obj/item/stack/from) + add_blood(from.return_blood_DNA()) + add_fingerprint_list(from.return_fingerprints()) + add_hiddenprint_list(from.return_hiddenprints()) fingerprintslast = from.fingerprintslast //TODO bloody overlay @@ -436,4 +436,4 @@ /datum/stack_recipe_list/New(title, recipes) src.title = title - src.recipes = recipes + src.recipes = recipes \ No newline at end of file diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index 34b3c90d07..80b68213aa 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -346,7 +346,7 @@ icon_state = "dualsaber[item_color][wielded]" else icon_state = "dualsaber0" - clean_blood()//blood overlays get weird otherwise, because the sprite changes. + SEND_SIGNAL(src, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) /obj/item/twohanded/dualsaber/attack(mob/target, mob/living/carbon/human/user) if(user.has_dna()) @@ -881,4 +881,4 @@ var/client/C = user.client C.change_view(CONFIG_GET(string/default_view)) user.client.pixel_x = 0 - user.client.pixel_y = 0 + user.client.pixel_y = 0 \ No newline at end of file diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 61aa776f01..ea2bbb0dcd 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -317,7 +317,7 @@ /obj/machinery/shower/proc/wash_obj(obj/O) - . = O.clean_blood() + . = SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) O.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) if(isitem(O)) var/obj/item/I = O @@ -328,7 +328,7 @@ /obj/machinery/shower/proc/wash_turf() if(isturf(loc)) var/turf/tile = loc - tile.clean_blood() + SEND_SIGNAL(tile, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) tile.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) for(var/obj/effect/E in tile) if(is_cleanable(E)) @@ -336,7 +336,7 @@ /obj/machinery/shower/proc/wash_mob(mob/living/L) - L.clean_blood() + SEND_SIGNAL(L, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) L.wash_cream() L.ExtinguishMob() L.adjust_fire_stacks(-20) //Douse ourselves with water to avoid fire more easily @@ -381,7 +381,7 @@ else if(H.w_uniform && wash_obj(H.w_uniform)) H.update_inv_w_uniform() if(washgloves) - H.clean_blood() + SEND_SIGNAL(H, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) if(H.shoes && washshoes && wash_obj(H.shoes)) H.update_inv_shoes() if(H.wear_mask && washmask && wash_obj(H.wear_mask)) @@ -398,9 +398,9 @@ else if(M.wear_mask && wash_obj(M.wear_mask)) M.update_inv_wear_mask(0) - M.clean_blood() + SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) else - L.clean_blood() + SEND_SIGNAL(L, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) /obj/machinery/shower/proc/contamination_cleanse(atom/movable/thing) var/datum/component/radioactive/healthy_green_glow = thing.GetComponent(/datum/component/radioactive) @@ -498,7 +498,7 @@ H.regenerate_icons() user.drowsyness = max(user.drowsyness - rand(2,3), 0) //Washing your face wakes you up if you're falling asleep else - user.clean_blood() + SEND_SIGNAL(user, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) /obj/structure/sink/attackby(obj/item/O, mob/living/user, params) if(busy) @@ -554,7 +554,7 @@ busy = FALSE return 1 busy = FALSE - O.clean_blood() + SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) O.acid_level = 0 create_reagents(5) reagents.add_reagent(dispensedreagent, 5) @@ -675,4 +675,4 @@ else playsound(loc, 'sound/weapons/tap.ogg', 50, 1) if(BURN) - playsound(loc, 'sound/items/welder.ogg', 80, 1) + playsound(loc, 'sound/items/welder.ogg', 80, 1) \ No newline at end of file diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 62cd626d5d..f6d234b346 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -250,7 +250,7 @@ for(var/mob/living/simple_animal/slime/M in src) M.apply_water() - clean_blood() + SEND_SIGNAL(src, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) for(var/obj/effect/O in src) if(is_cleanable(O)) qdel(O) diff --git a/code/modules/antagonists/devil/true_devil/_true_devil.dm b/code/modules/antagonists/devil/true_devil/_true_devil.dm index d595428378..1df81a797b 100644 --- a/code/modules/antagonists/devil/true_devil/_true_devil.dm +++ b/code/modules/antagonists/devil/true_devil/_true_devil.dm @@ -69,10 +69,8 @@ //Left hand items for(var/obj/item/I in held_items) if(!(I.item_flags & ABSTRACT)) - if(I.blood_DNA) - msg += "It is holding [icon2html(I, user)] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in its [get_held_index_name(get_held_index_of_item(I))]!\n" - else - msg += "It is holding [icon2html(I, user)] \a [I] in its [get_held_index_name(get_held_index_of_item(I))].\n" + msg += "It is holding [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))].\n" + //Braindead if(!client && stat != DEAD) msg += "The devil seems to be in deep contemplation.\n" diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index 3a5564cf05..08e00ea0f4 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -327,8 +327,11 @@ possible = list() if(!voodoo_link) return + var/list/prints = voodoo_link.return_fingerprints() + if(!length(prints)) + return FALSE for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) - if(md5(H.dna.uni_identity) in voodoo_link.fingerprints) + if(prints[md5(H.dna.uni_identity)]) possible |= H /obj/item/voodoo/proc/GiveHint(mob/victim,force=0) diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm index 2932912ed7..0ae04c1f7a 100644 --- a/code/modules/clothing/gloves/_gloves.dm +++ b/code/modules/clothing/gloves/_gloves.dm @@ -12,6 +12,15 @@ strip_delay = 20 equip_delay_other = 40 +/obj/item/clothing/gloves/ComponentInitialize() + . = ..() + AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood))) + +/obj/item/clothing/gloves/proc/clean_blood(datum/source, strength) + if(strength < CLEAN_STRENGTH_BLOOD) + return + transfer_blood = 0 + /obj/item/clothing/gloves/suicide_act(mob/living/carbon/user) user.visible_message("\the [src] are forcing [user]'s hands around [user.p_their()] neck! It looks like the gloves are possessed!") return OXYLOSS @@ -21,7 +30,7 @@ if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedgloves") - if(blood_DNA) + IF_HAS_BLOOD_DNA(src) . += mutable_appearance('icons/effects/blood.dmi', "bloodyhands", color = blood_DNA_to_color()) /obj/item/clothing/gloves/update_clothes_damaged_state(damaging = TRUE) diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm index ccc167dcbc..98bb3aec13 100644 --- a/code/modules/clothing/head/_head.dm +++ b/code/modules/clothing/head/_head.dm @@ -46,7 +46,7 @@ if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedhelmet") - if(blood_DNA) + IF_HAS_BLOOD_DNA(src) . += mutable_appearance('icons/effects/blood.dmi', "helmetblood", color = blood_DNA_to_color()) /obj/item/clothing/head/update_clothes_damaged_state(damaging = TRUE) diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm index c00e6f72e0..362ab9b3bd 100644 --- a/code/modules/clothing/masks/_masks.dm +++ b/code/modules/clothing/masks/_masks.dm @@ -59,7 +59,7 @@ if(body_parts_covered & HEAD) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") - if(blood_DNA) + IF_HAS_BLOOD_DNA(src) . += mutable_appearance('icons/effects/blood.dmi', "maskblood", color = blood_DNA_to_color()) /obj/item/clothing/mask/update_clothes_damaged_state(damaging = TRUE) diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index 2356bb16eb..0bb7c8ebfd 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -12,7 +12,7 @@ if(body_parts_covered & HEAD) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") - if(blood_DNA) + IF_HAS_BLOOD_DNA(src) . += mutable_appearance('icons/effects/blood.dmi', "maskblood", color = blood_DNA_to_color()) /obj/item/clothing/neck/tie diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index d6927f9953..04c5644fb5 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -10,18 +10,22 @@ permeability_coefficient = 0.5 slowdown = SHOES_SLOWDOWN - var/offset = 0 - var/equipped_before_drop = FALSE - var/blood_state = BLOOD_STATE_NOT_BLOODY var/list/bloody_shoes = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) - var/last_bloodtype = ""//used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans - var/last_blood_DNA = ""//same as last one + var/offset = 0 + var/equipped_before_drop = FALSE //CITADEL EDIT Enables digitigrade shoe styles var/adjusted = NORMAL_STYLE mutantrace_variation = MUTANTRACE_VARIATION + var/last_bloodtype = ""//used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans + var/last_blood_DNA = ""//same as last one + +/obj/item/clothing/shoes/ComponentInitialize() + . = ..() + AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood))) + /obj/item/clothing/shoes/suicide_act(mob/living/carbon/user) if(rand(2)>1) user.visible_message("[user] begins tying \the [src] up waaay too tightly! It looks like [user.p_theyre()] trying to commit suicide!") @@ -45,7 +49,7 @@ . = list() if(!isinhands) var/bloody = FALSE - if(blood_DNA) + IF_HAS_BLOOD_DNA(src) bloody = TRUE else bloody = bloody_shoes[BLOOD_STATE_BLOOD] @@ -92,11 +96,11 @@ var/mob/M = loc M.update_inv_shoes() -/obj/item/clothing/shoes/clean_blood() - ..() +/obj/item/clothing/shoes/proc/clean_blood(datum/source, strength) + if(strength < CLEAN_STRENGTH_BLOOD) + return bloody_shoes = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) blood_state = BLOOD_STATE_NOT_BLOODY - blood_color = null if(ismob(loc)) var/mob/M = loc M.update_inv_shoes() diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index 2ad1bba042..86d473ca7b 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -53,11 +53,11 @@ if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damaged[blood_overlay_type]") - if(blood_DNA) + IF_HAS_BLOOD_DNA(src) if(taurmode >= SNEK_TAURIC) - . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) + . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "[blood_overlay_type]blood") else - . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) + . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood") var/mob/living/carbon/human/M = loc if(ishuman(M) && M.w_uniform) var/obj/item/clothing/under/U = M.w_uniform diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index eda0e31e93..5f123cd745 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -22,7 +22,7 @@ if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform") - if(blood_DNA) + IF_HAS_BLOOD_DNA(src) . += mutable_appearance('icons/effects/blood.dmi', "uniformblood", color = blood_DNA_to_color()) if(accessory_overlay) . += accessory_overlay diff --git a/code/modules/detectivework/detective_work.dm b/code/modules/detectivework/detective_work.dm index d5584bc29f..8451019efb 100644 --- a/code/modules/detectivework/detective_work.dm +++ b/code/modules/detectivework/detective_work.dm @@ -1,119 +1,146 @@ //CONTAINS: Suit fibers and Detective's Scanning Computer -/atom/var/list/suit_fibers +/atom/proc/return_fingerprints() + GET_COMPONENT(D, /datum/component/forensics) + if(D) + . = D.fingerprints -/atom/proc/add_fibers(mob/living/carbon/human/M) - if(M.gloves && istype(M.gloves, /obj/item/clothing/)) - var/obj/item/clothing/gloves/G = M.gloves - if(G.transfer_blood > 1) //bloodied gloves transfer blood to touched objects - if(add_blood(G.blood_DNA)) //only reduces the bloodiness of our gloves if the item wasn't already bloody - G.transfer_blood-- - else if(M.bloody_hands > 1) - if(add_blood(M.blood_DNA)) - M.bloody_hands-- - if(!suit_fibers) - suit_fibers = list() - var/fibertext - var/item_multiplier = isitem(src)?1.2:1 - if(M.wear_suit) - fibertext = "Material from \a [M.wear_suit]." - if(prob(10*item_multiplier) && !(fibertext in suit_fibers)) - suit_fibers += fibertext - if(!(M.wear_suit.body_parts_covered & CHEST)) - if(M.w_uniform) - fibertext = "Fibers from \a [M.w_uniform]." - if(prob(12*item_multiplier) && !(fibertext in suit_fibers)) //Wearing a suit means less of the uniform exposed. - suit_fibers += fibertext - if(!(M.wear_suit.body_parts_covered & HANDS)) - if(M.gloves) - fibertext = "Material from a pair of [M.gloves.name]." - if(prob(20*item_multiplier) && !(fibertext in suit_fibers)) - suit_fibers += fibertext - else if(M.w_uniform) - fibertext = "Fibers from \a [M.w_uniform]." - if(prob(15*item_multiplier) && !(fibertext in suit_fibers)) - // "Added fibertext: [fibertext]" - suit_fibers += fibertext - if(M.gloves) - fibertext = "Material from a pair of [M.gloves.name]." - if(prob(20*item_multiplier) && !(fibertext in suit_fibers)) - suit_fibers += "Material from a pair of [M.gloves.name]." - else if(M.gloves) - fibertext = "Material from a pair of [M.gloves.name]." - if(prob(20*item_multiplier) && !(fibertext in suit_fibers)) - suit_fibers += "Material from a pair of [M.gloves.name]." +/atom/proc/return_hiddenprints() + GET_COMPONENT(D, /datum/component/forensics) + if(D) + . = D.hiddenprints +/atom/proc/return_blood_DNA() + GET_COMPONENT(D, /datum/component/forensics) + if(D) + . = D.blood_DNA -/atom/proc/add_hiddenprint(mob/living/M) - if(!M || !M.key) - return +/atom/proc/blood_DNA_length() + GET_COMPONENT(D, /datum/component/forensics) + if(D) + . = length(D.blood_DNA) - if(!fingerprintshidden) //Add the list if it does not exist - fingerprintshidden = list() - - var/hasgloves = "" - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.gloves) - hasgloves = "(gloves)" - - var/current_time = TIME_STAMP("hh:mm:ss", FALSE) - if(!fingerprintshidden[M.key]) - fingerprintshidden[M.key] = "First: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]" - else - var/laststamppos = findtext(fingerprintshidden[M.key], " Last: ") - if(laststamppos) - fingerprintshidden[M.key] = copytext(fingerprintshidden[M.key], 1, laststamppos) - fingerprintshidden[M.key] += " Last: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]" - - fingerprintslast = M.ckey +/atom/proc/return_fibers() + GET_COMPONENT(D, /datum/component/forensics) + if(D) + . = D.fibers +/atom/proc/add_fingerprint_list(list/fingerprints) //ASSOC LIST FINGERPRINT = FINGERPRINT + if(length(fingerprints)) + . = AddComponent(/datum/component/forensics, fingerprints) //Set ignoregloves to add prints irrespective of the mob having gloves on. -/atom/proc/add_fingerprint(mob/living/M, ignoregloves = 0) - if(!M || !M.key) - return +/atom/proc/add_fingerprint(mob/living/M, ignoregloves = FALSE) + var/datum/component/forensics/D = AddComponent(/datum/component/forensics) + . = D.add_fingerprint(M, ignoregloves) - add_hiddenprint(M) +/atom/proc/add_fiber_list(list/fibertext) //ASSOC LIST FIBERTEXT = FIBERTEXT + if(length(fibertext)) + . = AddComponent(/datum/component/forensics, null, null, null, fibertext) - if(ishuman(M)) - var/mob/living/carbon/human/H = M +/atom/proc/add_fibers(mob/living/carbon/human/M) + var/old = 0 + if(M.gloves && istype(M.gloves, /obj/item/clothing)) + var/obj/item/clothing/gloves/G = M.gloves + old = length(G.return_blood_DNA()) + if(G.transfer_blood > 1) //bloodied gloves transfer blood to touched objects + if(add_blood(G.return_blood_DNA()) && length(G.return_blood_DNA()) > old) //only reduces the bloodiness of our gloves if the item wasn't already bloody + G.transfer_blood-- + else if(M.bloody_hands > 1) + old = length(M.return_blood_DNA()) + if(add_blood(M.return_blood_DNA()) && length(M.return_blood_DNA()) > old) + M.bloody_hands-- + var/datum/component/forensics/D = AddComponent(/datum/component/forensics) + . = D.add_fibers(M) - add_fibers(H) +/atom/proc/add_hiddenprint_list(list/hiddenprints) //NOTE: THIS IS FOR ADMINISTRATION FINGERPRINTS, YOU MUST CUSTOM SET THIS TO INCLUDE CKEY/REAL NAMES! CHECK FORENSICS.DM + if(length(hiddenprints)) + . = AddComponent(/datum/component/forensics, null, hiddenprints) - if(H.gloves) //Check if the gloves (if any) hide fingerprints - var/obj/item/clothing/gloves/G = H.gloves - if(G.transfer_prints) - ignoregloves = 1 +/atom/proc/add_hiddenprint(mob/living/M) + var/datum/component/forensics/D = AddComponent(/datum/component/forensics) + . = D.add_hiddenprint(M) - if(!ignoregloves) - H.gloves.add_fingerprint(H, 1) //ignoregloves = 1 to avoid infinite loop. - return +/atom/proc/add_blood(list/dna) //ASSOC LIST DNA = BLOODTYPE + return FALSE - if(!fingerprints) //Add the list if it does not exist - fingerprints = list() - var/full_print = md5(H.dna.uni_identity) - fingerprints[full_print] = full_print +/obj/add_blood(list/dna) + . = ..() + if(length(dna)) + . = AddComponent(/datum/component/forensics, null, null, dna) +/obj/item/clothing/gloves/add_blood(list/blood_dna, list/datum/disease/diseases) + . = ..() + transfer_blood = rand(2, 4) +/turf/add_blood(list/blood_dna, list/datum/disease/diseases) + var/obj/effect/decal/cleanable/blood/splatter/B = locate() in src + if(!B) + B = new /obj/effect/decal/cleanable/blood/splatter(src, diseases) + B.add_blood(blood_dna) //give blood info to the blood decal. + return TRUE //we bloodied the floor +/mob/living/carbon/human/add_blood(list/blood_dna, list/datum/disease/diseases) + if(wear_suit) + wear_suit.add_blood(blood_dna) + update_inv_wear_suit() + else if(w_uniform) + w_uniform.add_blood(blood_dna) + update_inv_w_uniform() + if(gloves) + var/obj/item/clothing/gloves/G = gloves + G.add_blood(blood_dna) + else if(length(blood_dna)) + AddComponent(/datum/component/forensics, null, null, blood_dna) + bloody_hands = rand(2, 4) + if(head) + head.add_blood(blood_dna) + update_inv_head() + else if(wear_mask) + wear_mask.add_blood(blood_dna) + update_inv_wear_mask() + if(wear_neck) + wear_neck.add_blood(blood_dna) + update_inv_neck() + update_inv_gloves() //handles bloody hands overlays and updating + return TRUE /atom/proc/transfer_fingerprints_to(atom/A) + A.add_fingerprint_list(return_fingerprints()) + A.add_hiddenprint_list(return_hiddenprints()) + A.fingerprintslast = fingerprintslast - // Make sure everything are lists. - if(!islist(A.fingerprints)) - A.fingerprints = list() - if(!islist(A.fingerprintshidden)) - A.fingerprintshidden = list() +//to add blood dna info to the object's blood_DNA list +/atom/proc/transfer_blood_dna(list/blood_dna) + var/list/dna = blood_DNA_length() + if(!dna) + dna = list() + var/old_length = dna.len + dna |= blood_dna + if(dna.len > old_length) + return TRUE//some new blood DNA was added - if(!islist(fingerprints)) - fingerprints = list() - if(!islist(fingerprintshidden)) - fingerprintshidden = list() +/atom/proc/blood_DNA_to_color() //handles RGB colorings of blood + var/list/dna = blood_DNA_length() + var/list/colors = list()//first we make a list of all bloodtypes present + for(var/bloop in dna) + if(colors[dna[bloop]]) + colors[dna[bloop]]++ + else + colors[dna[bloop]] = 1 - // Transfer - if(fingerprints) - A.fingerprints |= fingerprints.Copy() //detective - if(fingerprintshidden) - A.fingerprintshidden |= fingerprintshidden.Copy() //admin - A.fingerprintslast = fingerprintslast \ No newline at end of file + var/final_rgb = BLOOD_COLOR_HUMAN + + if(colors.len) + var/sum = 0 //this is all shitcode, but it works; trust me + final_rgb = bloodtype_to_color(colors[1]) + sum = colors[colors[1]] + if(colors.len > 1) + var/i = 2 + while(i <= colors.len) + var/tmp = colors[colors[i]] + final_rgb = BlendRGB(final_rgb, bloodtype_to_color(colors[i]), tmp/(tmp+sum)) + sum += tmp + i++ + + return final_rgb diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm index eace1bf7b1..5940c3328d 100644 --- a/code/modules/detectivework/scanner.dm +++ b/code/modules/detectivework/scanner.dm @@ -80,20 +80,14 @@ //Make our lists var/list/fingerprints = list() - var/list/blood = list() - var/list/fibers = list() + var/list/blood = A.return_blood_DNA() + var/list/fibers = A.return_fibers() var/list/reagents = list() var/target_name = A.name // Start gathering - if(A.blood_DNA && A.blood_DNA.len) - blood = A.blood_DNA.Copy() - - if(A.suit_fibers && A.suit_fibers.len) - fibers = A.suit_fibers.Copy() - if(ishuman(A)) var/mob/living/carbon/human/H = A @@ -102,8 +96,7 @@ else if(!ismob(A)) - if(A.fingerprints && A.fingerprints.len) - fingerprints = A.fingerprints.Copy() + fingerprints = A.return_fingerprints() // Only get reagents from non-mobs. if(A.reagents && A.reagents.reagent_list.len) @@ -117,6 +110,7 @@ if(R.data["blood_DNA"] && R.data["blood_type"]) var/blood_DNA = R.data["blood_DNA"] var/blood_type = R.data["blood_type"] + LAZYINITLIST(blood) blood[blood_DNA] = blood_type // We gathered everything. Create a fork and slowly display the results to the holder of the scanner. @@ -125,7 +119,7 @@ add_log("[STATION_TIME_TIMESTAMP("hh:mm:ss")][get_timestamp()] - [target_name]", 0) // Fingerprints - if(fingerprints && fingerprints.len) + if(length(fingerprints)) sleep(30) add_log("Prints:") for(var/finger in fingerprints) @@ -133,7 +127,7 @@ found_something = 1 // Blood - if (blood && blood.len) + if (length(blood)) sleep(30) add_log("Blood:") found_something = 1 @@ -141,7 +135,7 @@ add_log("Type: [blood[B]] DNA: [B]") //Fibers - if(fibers && fibers.len) + if(length(fibers)) sleep(30) add_log("Fibers:") for(var/fiber in fibers) @@ -149,7 +143,7 @@ found_something = 1 //Reagents - if(reagents && reagents.len) + if(length(reagents)) sleep(30) add_log("Reagents:") for(var/R in reagents) @@ -213,4 +207,4 @@ return to_chat(user, "Scanner Report") for(var/iterLog in log) - to_chat(user, iterLog) + to_chat(user, iterLog) \ No newline at end of file diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 9191f627e5..dbe0e31d3b 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -160,7 +160,7 @@ C.reagents.add_reagent("bonehurtingjuice", amount * 0.5) else C.blood_volume = min(C.blood_volume + round(amount, 0.1), BLOOD_VOLUME_MAXIMUM) - return 1 + return 1 C.blood_volume = min(C.blood_volume + round(amount, 0.1), BLOOD_VOLUME_MAXIMUM) return 1 @@ -232,12 +232,7 @@ return "blood" /mob/living/carbon/get_blood_id() - var/mob/living/carbon/C = src - if(ishuman(C)) - var/mob/living/carbon/human/H = C - if(H.dna.species.exotic_blood) - return H.dna.species.exotic_blood - if(dna.species.exotic_blood) + if(dna?.species?.exotic_blood) return dna.species.exotic_blood else if((NOBLOOD in dna.species.species_traits) || (HAS_TRAIT(src, TRAIT_NOCLONE))) return @@ -290,8 +285,7 @@ drop.transfer_mob_blood_dna(src) return else - temp_blood_DNA = list() - temp_blood_DNA |= drop.blood_DNA.Copy() //we transfer the dna from the drip to the splatter + temp_blood_DNA = drop.return_blood_DNA() //we transfer the dna from the drip to the splatter qdel(drop)//the drip is replaced by a bigger splatter else drop = new(T, get_static_viruses()) @@ -307,9 +301,9 @@ B.transfer_mob_blood_dna(src) //give blood info to the blood decal. if(temp_blood_DNA) if(isalien(src)) - B.blood_DNA["UNKNOWN DNA"] = "X*" + B.add_blood(list("UNKNOWN DNA" = "X*")) else - B.blood_DNA |= temp_blood_DNA + B.add_blood(temp_blood_DNA) /mob/living/carbon/human/add_splatter_floor(turf/T, small_drip) if(!(NOBLOOD in dna.species.species_traits)) diff --git a/code/modules/mob/living/brain/brain.dm b/code/modules/mob/living/brain/brain.dm index 9a39d5bc7d..1b2944c1f6 100644 --- a/code/modules/mob/living/brain/brain.dm +++ b/code/modules/mob/living/brain/brain.dm @@ -24,14 +24,8 @@ if(!stored_dna.species) var/rando_race = pick(GLOB.roundstart_races) stored_dna.species = new rando_race() - if(isjellyperson(stored_dna.species)) - stored_dna.blood_type = "GEL" - if(isipcperson(stored_dna.species)) - stored_dna.blood_type = "HF" - if(isxenoperson(stored_dna.species)) - stored_dna.blood_type = "X*" - if(islizard(stored_dna.species)) - stored_dna.blood_type = "L" + if(stored_dna.species.exotic_bloodtype) + stored_dna.blood_type = stored_dna.species.exotic_bloodtype /mob/living/brain/Destroy() if(key) //If there is a mob connected to this thing. Have to check key twice to avoid false death reporting. diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index efdd1a96c5..22da46346c 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -11,21 +11,18 @@ if (handcuffed) msg += "[t_He] [t_is] [icon2html(handcuffed, user)] handcuffed!\n" if (head) - msg += "[t_He] [t_is] wearing [icon2html(head, user)] \a [src.head] on [t_his] head. \n" + msg += "[t_He] [t_is] wearing [head.get_examine_string(user)] on [t_his] head. \n" if (wear_mask) - msg += "[t_He] [t_is] wearing [icon2html(wear_mask, user)] \a [src.wear_mask] on [t_his] face.\n" + msg += "[t_He] [t_is] wearing [wear_mask.get_examine_string(user)] on [t_his] face.\n" if (wear_neck) - msg += "[t_He] [t_is] wearing [icon2html(wear_neck, user)] \a [src.wear_neck] around [t_his] neck.\n" + msg += "[t_He] [t_is] wearing [wear_neck.get_examine_string(user)] around [t_his] neck.\n" for(var/obj/item/I in held_items) if(!(I.item_flags & ABSTRACT)) - if(I.blood_DNA) - msg += "[t_He] [t_is] holding [icon2html(I, user)] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in [t_his] [get_held_index_name(get_held_index_of_item(I))]!\n" - else - msg += "[t_He] [t_is] holding [icon2html(I, user)] \a [I] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n" + msg += "[t_He] [t_is] holding [I.get_examine_string(user)] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n" if (back) - msg += "[t_He] [t_has] [icon2html(back, user)] \a [src.back] on [t_his] back.\n" + msg += "[t_He] [t_has] [back.get_examine_string(user)] on [t_his] back.\n" var/appears_dead = 0 if (stat == DEAD) appears_dead = 1 diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 0a34b02e4b..632281bb23 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -1,4 +1,4 @@ -/mob/living/carbon/human/examine(mob/user) //User is the person being examined +/mob/living/carbon/human/examine(mob/user) //this is very slightly better than it was because you can use it more places. still can't do \his[src] though. var/t_He = p_they(TRUE) var/t_His = p_their(TRUE) @@ -37,47 +37,30 @@ if(U.attached_accessory) accessory_msg += " with [icon2html(U.attached_accessory, user)] \a [U.attached_accessory]" - if(w_uniform.blood_DNA) - msg += "[t_He] [t_is] wearing [icon2html(w_uniform, user)] [w_uniform.gender==PLURAL?"some":"a"] blood-stained [w_uniform.name][accessory_msg]!\n" - else - msg += "[t_He] [t_is] wearing [icon2html(w_uniform, user)] \a [w_uniform][accessory_msg].\n" + msg += "[t_He] [t_is] wearing [w_uniform.get_examine_string(user)][accessory_msg].\n" //head if(head) - if(head.blood_DNA) - msg += "[t_He] [t_is] wearing [icon2html(head, user)] [head.gender==PLURAL?"some":"a"] blood-stained [head.name] on [t_his] head!\n" - else - msg += "[t_He] [t_is] wearing [icon2html(head, user)] \a [head] on [t_his] head.\n" + msg += "[t_He] [t_is] wearing [head.get_examine_string(user)] on [t_his] head.\n" //suit/armor if(wear_suit) - if(wear_suit.blood_DNA) - msg += "[t_He] [t_is] wearing [icon2html(wear_suit, user)] [wear_suit.gender==PLURAL?"some":"a"] blood-stained [wear_suit.name]!\n" - else - msg += "[t_He] [t_is] wearing [icon2html(wear_suit, user)] \a [wear_suit].\n" - //suit/armour storage - if(s_store) - if(s_store.blood_DNA) - msg += "[t_He] [t_is] carrying [icon2html(s_store, user)] [s_store.gender==PLURAL?"some":"a"] blood-stained [s_store.name] on [t_his] [wear_suit.name]!\n" - else - msg += "[t_He] [t_is] carrying [icon2html(s_store, user)] \a [s_store] on [t_his] [wear_suit.name].\n" + msg += "[t_He] [t_is] wearing [wear_suit.get_examine_string(user)].\n" + //suit/armor storage + if(s_store && !(SLOT_S_STORE in obscured)) + msg += "[t_He] [t_is] carrying [s_store.get_examine_string(user)] on [t_his] [wear_suit.name].\n" //back if(back) - if(back.blood_DNA) - msg += "[t_He] [t_has] [icon2html(back, user)] [back.gender==PLURAL?"some":"a"] blood-stained [back] on [t_his] back.\n" - else - msg += "[t_He] [t_has] [icon2html(back, user)] \a [back] on [t_his] back.\n" + msg += "[t_He] [t_has] [back.get_examine_string(user)] on [t_his] back.\n" + //Hands for(var/obj/item/I in held_items) - if(I.blood_DNA) - msg += "[t_He] [t_is] holding [icon2html(I, user)] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in [t_his] [get_held_index_name(get_held_index_of_item(I))]!\n" - else - msg += "[t_He] [t_is] holding [icon2html(I, user)] \a [I] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n" + if(!(I.item_flags & ABSTRACT)) + msg += "[t_He] [t_is] holding [I.get_examine_string(user)] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n" + + var/datum/component/forensics/FR = GetComponent(/datum/component/forensics) //gloves if(gloves && !(SLOT_GLOVES in obscured)) - if(gloves.blood_DNA) - msg += "[t_He] [t_has] [icon2html(gloves, user)] [gloves.gender==PLURAL?"some":"a"] blood-stained [gloves.name] on [t_his] hands!\n" - else - msg += "[t_He] [t_has] [icon2html(gloves, user)] \a [gloves] on [t_his] hands.\n" - else if(blood_DNA) + msg += "[t_He] [t_has] [gloves.get_examine_string(user)] on [t_his] hands.\n" + else if(FR && length(FR.blood_DNA)) var/hand_number = get_num_arms(FALSE) if(hand_number) msg += "[t_He] [t_has] [hand_number > 1 ? "" : "a"] blood-stained hand[hand_number > 1 ? "s" : ""]!\n" @@ -93,47 +76,33 @@ //belt if(belt) - if(belt.blood_DNA) - msg += "[t_He] [t_has] [icon2html(belt, user)] [belt.gender==PLURAL?"some":"a"] blood-stained [belt.name] about [t_his] waist!\n" - else - msg += "[t_He] [t_has] [icon2html(belt, user)] \a [belt] about [t_his] waist.\n" + msg += "[t_He] [t_has] [belt.get_examine_string(user)] about [t_his] waist.\n" //shoes if(shoes && !(SLOT_SHOES in obscured)) - if(shoes.blood_DNA) - msg += "[t_He] [t_is] wearing [icon2html(shoes, user)] [shoes.gender==PLURAL?"some":"a"] blood-stained [shoes.name] on [t_his] feet!\n" - else - msg += "[t_He] [t_is] wearing [icon2html(shoes, user)] \a [shoes] on [t_his] feet.\n" + msg += "[t_He] [t_is] wearing [shoes.get_examine_string(user)] on [t_his] feet.\n" //mask if(wear_mask && !(SLOT_WEAR_MASK in obscured)) - if(wear_mask.blood_DNA) - msg += "[t_He] [t_has] [icon2html(wear_mask, user)] [wear_mask.gender==PLURAL?"some":"a"] blood-stained [wear_mask.name] on [t_his] face!\n" - else - msg += "[t_He] [t_has] [icon2html(wear_mask, user)] \a [wear_mask] on [t_his] face.\n" + msg += "[t_He] [t_has] [wear_mask.get_examine_string(user)] on [t_his] face.\n" - //neck if(wear_neck && !(SLOT_NECK in obscured)) - msg += "[t_He] [t_is] wearing [icon2html(wear_neck, user)] \a [src.wear_neck] around [t_his] neck.\n" + msg += "[t_He] [t_is] wearing [wear_neck.get_examine_string(user)] around [t_his] neck.\n" //eyes if(!(SLOT_GLASSES in obscured)) if(glasses) - if(glasses.blood_DNA) - msg += "[t_He] [t_has] [icon2html(glasses, user)] [glasses.gender==PLURAL?"some":"a"] blood-stained [glasses] covering [t_his] eyes!\n" - else - msg += "[t_He] [t_has] [icon2html(glasses, user)] \a [glasses] covering [t_his] eyes.\n" - + msg += "[t_He] [t_has] [glasses.get_examine_string(user)] covering [t_his] eyes.\n" else if(eye_color == BLOODCULT_EYE && iscultist(src) && HAS_TRAIT(src, TRAIT_CULT_EYES)) msg += "[t_His] eyes are glowing an unnatural red!\n" //ears if(ears && !(SLOT_EARS in obscured)) - msg += "[t_He] [t_has] [icon2html(ears, user)] \a [ears] on [t_his] ears.\n" + msg += "[t_He] [t_has] [ears.get_examine_string(user)] on [t_his] ears.\n" //ID if(wear_id) - msg += "[t_He] [t_is] wearing [icon2html(wear_id, user)] \a [wear_id].\n" + msg += "[t_He] [t_is] wearing [wear_id.get_examine_string(user)].\n" //Status effects msg += status_effect_examines() @@ -183,7 +152,7 @@ var/temp = getBruteLoss() //no need to calculate each of these twice - msg += "" + msg += "" //Everything below gets this span var/list/missing = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) var/list/disabled = list() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index daf5917f87..f6d06c2d07 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -32,6 +32,8 @@ if(CONFIG_GET(flag/disable_stambuffer)) togglesprint() + AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood))) + /mob/living/carbon/human/ComponentInitialize() . = ..() @@ -687,21 +689,16 @@ if(..()) dropItemToGround(I) -/mob/living/carbon/human/clean_blood() - var/mob/living/carbon/human/H = src - if(H.gloves) - if(H.gloves.clean_blood()) - H.update_inv_gloves() +/mob/living/carbon/human/proc/clean_blood(datum/source, strength) + if(strength < CLEAN_STRENGTH_BLOOD) + return + if(gloves) + if(SEND_SIGNAL(gloves, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) + update_inv_gloves() else - ..() // Clear the Blood_DNA list - if(H.bloody_hands) - H.bloody_hands = 0 - H.update_inv_gloves() -/* if(H.bloody_feet) - H.bloody_feet = 0 - H.update_inv_shoes()*/ - - update_icons() //apply the now updated overlays to the mob + if(bloody_hands) + bloody_hands = 0 + update_inv_gloves() /mob/living/carbon/human/wash_cream() if(creamed) //clean both to prevent a rare bug @@ -1069,4 +1066,4 @@ race = /datum/species/zombie/infectious /mob/living/carbon/human/species/zombie/krokodil_addict - race = /datum/species/krokodil_addict + race = /datum/species/krokodil_addict \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index f03b75cf11..d0b90387f7 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -64,9 +64,7 @@ FP.blood_state = S.blood_state FP.entered_dirs |= dir FP.bloodiness = S.bloody_shoes[S.blood_state] - if(S.last_blood_DNA && S.last_bloodtype) - FP.blood_DNA += list(S.last_blood_DNA = S.last_bloodtype) - //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood + FP.add_blood(S.return_blood_DNA()) FP.update_icon() update_inv_shoes() //End bloody footprints diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 73149c422d..caa3a0bcf9 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -269,16 +269,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) regenerate_organs(C,old_species) if(exotic_bloodtype && C.dna.blood_type != exotic_bloodtype) - if(isjellyperson(C)) - C.dna.blood_type = "GEL" - if(isipcperson(C)) - C.dna.blood_type = "HF" - if(isxenoperson(C)) - C.dna.blood_type = "X*" - if(islizard(C)) - C.dna.blood_type = "L" - else - C.dna.blood_type = exotic_bloodtype + C.dna.blood_type = exotic_bloodtype if(old_species.mutanthands) for(var/obj/item/I in C.held_items) @@ -319,16 +310,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) if(C.dna.species.exotic_bloodtype) - if(isjellyperson(C)) - C.dna.blood_type = "GEL" - if(isipcperson(C)) - C.dna.blood_type = "HF" - if(isxenoperson(C)) - C.dna.blood_type = "X*" - if(islizard(C)) - C.dna.blood_type = "L" - else - C.dna.blood_type = random_blood_type() + C.dna.blood_type = random_blood_type() if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(TRUE) for(var/X in inherent_traits) diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 55a6357e02..17b58fd461 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -474,8 +474,7 @@ if(isturf(next)) if(bloodiness) var/obj/effect/decal/cleanable/blood/tracks/B = new(loc) - if(blood_DNA && blood_DNA.len) - B.blood_DNA |= blood_DNA.Copy() + B.add_blood(return_blood_DNA()) var/newdir = get_dir(next, loc) if(newdir == dir) B.setDir(newdir) @@ -488,7 +487,6 @@ B.setDir(newdir) bloodiness-- - var/oldloc = loc var/moved = step_towards(src, next) // attempt to move if(cell) @@ -657,8 +655,7 @@ T.add_mob_blood(H) var/list/blood_dna = H.get_blood_dna_list() - if(blood_dna) - transfer_blood_dna(blood_dna) + add_blood(blood_dna) bloodiness += 4 // player on mulebot attempted to move diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm index a27a3ab4ed..49bbe31ad3 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -37,7 +37,6 @@ gender = NEUTER mob_biotypes = list(MOB_ROBOTIC) speak_emote = list("chirps") - speech_span = SPAN_ROBOT bubble_icon = "machine" initial_language_holder = /datum/language_holder/drone mob_size = MOB_SIZE_SMALL @@ -93,7 +92,7 @@ var/obj/item/I = new default_hatmask(src) equip_to_slot_or_del(I, SLOT_HEAD) - ADD_TRAIT(access_card, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT) + access_card.item_flags |= TRAIT_NODROP alert_drones(DRONE_NET_CONNECT) @@ -170,23 +169,15 @@ //Hands for(var/obj/item/I in held_items) if(!(I.item_flags & ABSTRACT)) - if(I.blood_DNA) - msg += "It has [icon2html(I, user)] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in its [get_held_index_name(get_held_index_of_item(I))]!\n" - else - msg += "It has [icon2html(I, user)] \a [I] in its [get_held_index_name(get_held_index_of_item(I))].\n" + msg += "It has [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))].\n" + //Internal storage if(internal_storage && !(internal_storage.item_flags & ABSTRACT)) - if(internal_storage.blood_DNA) - msg += "It is holding [icon2html(internal_storage, user)] [internal_storage.gender==PLURAL?"some":"a"] blood-stained [internal_storage.name] in its internal storage!\n" - else - msg += "It is holding [icon2html(internal_storage, user)] \a [internal_storage] in its internal storage.\n" + msg += "It is holding [internal_storage.get_examine_string(user)] in its internal storage.\n" //Cosmetic hat - provides no function other than looks if(head && !(head.item_flags & ABSTRACT)) - if(head.blood_DNA) - msg += "It is wearing [icon2html(head, user)] [head.gender==PLURAL?"some":"a"] blood-stained [head.name] on its head!\n" - else - msg += "It is wearing [icon2html(head, user)] \a [head] on its head.\n" + msg += "It is wearing [head.get_examine_string(user)] on its head.\n" //Braindead if(!client && stat != DEAD) @@ -281,4 +272,4 @@ return 1 /mob/living/simple_animal/drone/electrocute_act(shock_damage, obj/source, siemens_coeff = 1, safety = 0, tesla_shock = 0, illusion = 0, stun = TRUE) - return 0 //So they don't die trying to fix wiring + return 0 //So they don't die trying to fix wiring \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm index 9e962f6afb..28a7dd057a 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm @@ -23,15 +23,9 @@ for(var/obj/item/I in held_items) if(!(I.item_flags & ABSTRACT)) - if(I.blood_DNA) - msg += "It has [icon2html(I, user)] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in its [get_held_index_name(get_held_index_of_item(I))]!\n" - else - msg += "It has [icon2html(I, user)] \a [I] in its [get_held_index_name(get_held_index_of_item(I))].\n" + msg += "It has [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))].\n" if(internal_storage && !(internal_storage.item_flags & ABSTRACT)) - if(internal_storage.blood_DNA) - msg += "It is holding [icon2html(internal_storage, user)] [internal_storage.gender==PLURAL?"some":"a"] blood-stained [internal_storage.name] in its internal storage!\n" - else - msg += "It is holding [icon2html(internal_storage, user)] \a [internal_storage] in its internal storage.\n" + msg += "It is holding [internal_storage.get_examine_string(user)] in its internal storage.\n" msg += "*---------*" to_chat(user, msg) else @@ -90,4 +84,4 @@ /mob/living/simple_animal/hostile/guardian/dextrous/regenerate_icons() ..() - update_inv_internal_storage() + update_inv_internal_storage() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 253d92a57f..d33fa6334f 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -177,6 +177,6 @@ qdel(target) return TRUE var/atom/movable/M = target - M.clean_blood() + SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) visible_message("[src] polishes \the [target].") - return TRUE + return TRUE \ No newline at end of file diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 9e5c9c26c4..bfdcafb95b 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -491,7 +491,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp . = BLOOD_COLOR_HUMAN switch(type) if("U")//Universal blood; a bit orange - . = "#db3300" + . = BLOOD_COLOR_UNIVERSAL if("SY")//Synthetics blood; blue . = BLOOD_COLOR_SYNTHETIC if("L")//lizard, a bit pink/purple @@ -502,6 +502,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp . = BLOOD_COLOR_OIL if("GEL")// slimepeople blood, rgb 0, 255, 144 . = BLOOD_COLOR_SLIME - if("BUG") - . = "#a37c0f" + if("BUG")// yellowish, like, y'know bug guts I guess. + . = BLOOD_COLOR_BUG //add more stuff to the switch if you have more blood colors for different types + // the defines are in _DEFINES/misc.dm diff --git a/code/modules/projectiles/projectile/bullets/smg.dm b/code/modules/projectiles/projectile/bullets/smg.dm index bba9e746be..33e090844e 100644 --- a/code/modules/projectiles/projectile/bullets/smg.dm +++ b/code/modules/projectiles/projectile/bullets/smg.dm @@ -19,27 +19,27 @@ var/turf/T = get_turf(target) //section shamelessly copypasta'd from the clean component - clean_blood()//blood overlays get weird otherwise, because the sprite changes. + SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) for(var/A in T) if(is_cleanable(A)) qdel(A) else if(istype(A, /obj/item)) var/obj/item/I = A - I.clean_blood() + SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) if(ismob(I.loc)) var/mob/M = I.loc M.regenerate_icons() else if(ishuman(A)) var/mob/living/carbon/human/cleaned_human = A if(cleaned_human.head) - cleaned_human.head.clean_blood() + SEND_SIGNAL(cleaned_human.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) if(cleaned_human.wear_suit) - cleaned_human.wear_suit.clean_blood() + SEND_SIGNAL(cleaned_human.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) else if(cleaned_human.w_uniform) - cleaned_human.w_uniform.clean_blood() + SEND_SIGNAL(cleaned_human.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) if(cleaned_human.shoes) - cleaned_human.shoes.clean_blood() - cleaned_human.clean_blood() + SEND_SIGNAL(cleaned_human.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(cleaned_human, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) cleaned_human.wash_cream() cleaned_human.regenerate_icons() @@ -57,4 +57,4 @@ /obj/item/projectile/bullet/incendiary/c46x30mm name = "4.6x30mm incendiary bullet" damage = 10 - fire_stacks = 1 + fire_stacks = 1 \ No newline at end of file diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 7bb5acff72..7163d9db13 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -216,7 +216,7 @@ color = BLOOD_COLOR_OIL taste_description = "chunky burnt oil" data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_OIL, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) - pH = 9.75 + pH = 9.75 /datum/reagent/vaccine //data must contain virus type @@ -738,11 +738,11 @@ mutationtext = "The pain subsides. You feel... attracted to dark, moist areas." /datum/reagent/mutationtoxin/xenoperson - name = "Xeno Mutation Toxin" + name = "Xeno-Hybrid Mutation Toxin" id = "xenopersonmutationtoxin" description = "A glowing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/xenoperson + race = /datum/species/xeno mutationtext = "The pain subsides. You feel... oddly longing for the Queen." //sadly, not the British one. //BLACKLISTED RACES @@ -1241,12 +1241,12 @@ else if(O) O.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - O.clean_blood() + SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) /datum/reagent/space_cleaner/reaction_turf(turf/T, reac_volume) if(reac_volume >= 1) T.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - T.clean_blood() + SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) for(var/obj/effect/decal/cleanable/C in T) qdel(C) @@ -1264,26 +1264,26 @@ H.lip_style = null H.update_body() for(var/obj/item/I in C.held_items) - I.clean_blood() + SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) if(C.wear_mask) - if(C.clean_blood()) + if(SEND_SIGNAL(C.wear_mask, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) C.update_inv_wear_mask() if(ishuman(M)) var/mob/living/carbon/human/H = C if(H.head) - if(H.head.clean_blood()) + if(SEND_SIGNAL(H.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) H.update_inv_head() if(H.wear_suit) - if(H.wear_suit.clean_blood()) + if(SEND_SIGNAL(H.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) H.update_inv_wear_suit() else if(H.w_uniform) - if(H.w_uniform.clean_blood()) + if(SEND_SIGNAL(H.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) H.update_inv_w_uniform() if(H.shoes) - if(H.shoes.clean_blood()) + if(SEND_SIGNAL(H.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) H.update_inv_shoes() H.wash_cream() - M.clean_blood() + SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) /datum/reagent/space_cleaner/ez_clean name = "EZ Clean" diff --git a/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm b/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm index 65301454fa..68ab229f0a 100644 --- a/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm +++ b/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm @@ -298,7 +298,7 @@ var/mob/M = loc M.update_inv_hands() - clean_blood()//blood overlays get weird otherwise, because the sprite changes. + SEND_SIGNAL(src, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)//blood overlays get weird otherwise, because the sprite changes. (retained from original desword because I have no idea what this is) /obj/item/twohanded/dualsaber/hypereutactic/AltClick(mob/living/user) if(!user.canUseTopic(src, BE_CLOSE, FALSE) || hacked) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm index d218f76310..c8ebde11d9 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1,11 +1,3 @@ -/datum/reagent/space_cleaner/reaction_obj(obj/O, reac_volume) - if(istype(O, /obj/effect/decal/cleanable) || istype(O, /obj/item/projectile/bullet/reusable/foam_dart) || istype(O, /obj/item/ammo_casing/caseless/foam_dart)) - qdel(O) - else - if(O) - O.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - O.clean_blood() - /datum/reagent/syndicateadrenals name = "Syndicate Adrenaline" id = "syndicateadrenals" diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index 680f7a3408..437a794f98 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -39,9 +39,8 @@ add_blood(list("Non-human DNA" = "A+")) /obj/effect/decal/cleanable/semen/replace_decal(obj/effect/decal/cleanable/semen/S) - if (S.blood_DNA) - blood_DNA |= S.blood_DNA.Copy() - ..() + S.add_blood(return_blood_DNA()) + return ..() /datum/reagent/consumable/femcum name = "Female Ejaculate" @@ -73,9 +72,8 @@ add_blood(list("Non-human DNA" = "A+")) /obj/effect/decal/cleanable/femcum/replace_decal(obj/effect/decal/cleanable/femcum/F) - if(F.blood_DNA) - blood_DNA |= F.blood_DNA.Copy() - ..() + F.add_blood(return_blood_DNA()) + return ..() /datum/reagent/consumable/femcum/reaction_turf(turf/T, reac_volume) if(!istype(T)) diff --git a/tgstation.dme b/tgstation.dme index a7031883dc..9a03e5838d 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -46,6 +46,7 @@ #include "code\__DEFINES\flags.dm" #include "code\__DEFINES\food.dm" #include "code\__DEFINES\footsteps.dm" +#include "code\__DEFINES\forensics.dm" #include "code\__DEFINES\hud.dm" #include "code\__DEFINES\integrated_electronics.dm" #include "code\__DEFINES\interaction_flags.dm" @@ -351,6 +352,7 @@ #include "code\datums\components\empprotection.dm" #include "code\datums\components\footstep.dm" #include "code\datums\components\forced_gravity.dm" +#include "code\datums\components\forensics.dm" #include "code\datums\components\infective.dm" #include "code\datums\components\jousting.dm" #include "code\datums\components\knockoff.dm" @@ -378,6 +380,7 @@ #include "code\datums\components\uplink.dm" #include "code\datums\components\wearertargeting.dm" #include "code\datums\components\wet_floor.dm" +#include "code\datums\components\decals\blood.dm" #include "code\datums\components\storage\storage.dm" #include "code\datums\components\storage\concrete\_concrete.dm" #include "code\datums\components\storage\concrete\bag_of_holding.dm" From 264cbf8108a7153b1eee1579633ba695f5d58ce0 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 15 Aug 2019 12:49:10 -0500 Subject: [PATCH 080/469] reverts the add_blood back to add_blood_DNA --- code/game/atoms.dm | 4 +-- code/game/machinery/doors/door.dm | 2 +- code/game/machinery/washing_machine.dm | 8 +++++- code/game/objects/effects/decals/cleanable.dm | 2 +- .../effects/decals/cleanable/aliens.dm | 4 +-- .../objects/effects/decals/cleanable/gibs.dm | 4 +-- .../effects/decals/cleanable/humans.dm | 4 +-- .../objects/effects/spawners/gibspawner.dm | 2 +- code/game/objects/items.dm | 2 -- .../objects/items/devices/radio/intercom.dm | 2 +- code/game/objects/items/melee/energy.dm | 2 +- code/game/objects/items/melee/misc.dm | 2 +- code/game/objects/items/stacks/stack.dm | 2 +- code/game/objects/items/storage/book.dm | 2 +- code/modules/detectivework/detective_work.dm | 28 +++++++++---------- code/modules/mob/living/blood.dm | 4 +-- .../mob/living/carbon/human/human_movement.dm | 2 +- .../mob/living/simple_animal/bot/mulebot.dm | 4 +-- code/modules/projectiles/guns/ballistic.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 4 +-- .../modules/reagents/reagents/cit_reagents.dm | 12 ++++---- 21 files changed, 51 insertions(+), 47 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index a740edacfc..a708418258 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -351,7 +351,7 @@ if(!new_blood_dna) return FALSE var/old_length = blood_DNA_length() - add_blood(new_blood_dna) + add_blood_DNA(new_blood_dna) if(blood_DNA_length() == old_length) return FALSE return TRUE @@ -361,7 +361,7 @@ var/list/blood_dna = M.get_blood_dna_list() if(!blood_dna) return FALSE - return add_blood(blood_dna) + return add_blood_DNA(blood_dna) /atom/proc/wash_cream() return TRUE diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index a2da7de29a..3ac386e1fb 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -326,7 +326,7 @@ else //for simple_animals & borgs L.adjustBruteLoss(DOOR_CRUSH_DAMAGE) var/turf/location = get_turf(src) - //add_blood doesn't work for borgs/xenos, but add_blood_floor does. + //add_blood_DNA doesn't work for borgs/xenos, but add_blood_floor does. if(iscarbon(L)) var/mob/living/carbon/C = L C.bleed(DOOR_CRUSH_DAMAGE) diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index e117c680ca..5e8515d3d5 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -95,6 +95,12 @@ var/obj/item/toy/crayon/CR = WM.color_source add_atom_colour(CR.paint_color, WASHABLE_COLOUR_PRIORITY) +/obj/item/reagents_containers/rag/towel/machine_wash(obj/machinery/washing_machine/WM) + if(WM.color_source) + if(istype(WM.color_source, /obj/item/toy/crayon)) + var/obj/item/toy/crayon/CR = WM.color_source + add_atom_colour(CR.paint_color, WASHABLE_COLOUR_PRIORITY) + /mob/living/simple_animal/pet/dog/corgi/machine_wash(obj/machinery/washing_machine/WM) gib() @@ -271,4 +277,4 @@ ..() density = TRUE //because machinery/open_machine() sets it to 0 color_source = null - has_corgi = 0 \ No newline at end of file + has_corgi = 0 diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index a56f45a712..d35e353170 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -81,7 +81,7 @@ add_blood = bloodiness bloodiness -= add_blood S.bloody_shoes[blood_state] = min(MAX_SHOE_BLOODINESS,S.bloody_shoes[blood_state]+add_blood) - S.add_blood(return_blood_DNA()) + S.add_blood_DNA(return_blood_DNA()) S.blood_state = blood_state update_icon() H.update_inv_shoes() diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 3a9f851e4c..e1c92a83c1 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -35,7 +35,7 @@ if(infective) diseases = infective.diseases var/obj/effect/decal/cleanable/blood/splatter/xeno/splat = new /obj/effect/decal/cleanable/blood/splatter/xeno(loc, diseases) - splat.add_blood(return_blood_DNA()) + splat.add_blood_DNA(return_blood_DNA()) if(!step_to(src, get_step(src, direction), 0)) break @@ -68,5 +68,5 @@ random_icon_states = null /obj/effect/decal/cleanable/blood/xtracks/Initialize() - add_blood(list("UNKNOWN DNA" = "X*")) + add_blood_DNA(list("UNKNOWN DNA" = "X*")) . = ..() \ No newline at end of file diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 73c89b4db5..ce1569b242 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -16,7 +16,7 @@ if(gibs_reagent_id) reagents.add_reagent(gibs_reagent_id, 5) if(gibs_bloodtype) - add_blood(list("Non-human DNA" = gibs_bloodtype)) + add_blood_DNA(list("Non-human DNA" = gibs_bloodtype)) update_icon() @@ -57,7 +57,7 @@ if(infective) diseases = infective.diseases var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) - splat.add_blood(return_blood_DNA()) + splat.add_blood_DNA(return_blood_DNA()) if(!step_to(src, get_step(src, direction), 0)) break diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index ceb41dee5c..9ffe0436fa 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -9,7 +9,7 @@ color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere. /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) - C.add_blood(return_blood_DNA()) + C.add_blood_DNA(return_blood_DNA()) if (bloodiness) if (C.bloodiness < MAX_SHOE_BLOODINESS) C.bloodiness += bloodiness @@ -35,7 +35,7 @@ /obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases) ..() icon_state += "-old" - add_blood(list("Non-human DNA" = "A+")) + add_blood_DNA(list("Non-human DNA" = "A+")) /obj/effect/decal/cleanable/blood/splatter random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index 19752c8d16..dd39bc567a 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -74,7 +74,7 @@ digester.stomach_contents += gib if(dna_to_add && dna_to_add.len) - gib.add_blood(dna_to_add) + gib.add_blood_DNA(dna_to_add) gib.body_colors = body_coloring gib.update_icon() diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 229d8fcb3a..f4c4756ef8 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -24,8 +24,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/icon/alternate_worn_icon = null//If this is set, update_icons() will find on mob (WORN, NOT INHANDS) states in this file instead, primary use: badminnery/events var/alternate_worn_layer = null//If this is set, update_icons() will force the on mob state (WORN, NOT INHANDS) onto this layer, instead of it's default - - max_integrity = 200 obj_flags = NONE diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 56511b481a..eb0271c1b9 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -136,7 +136,7 @@ else icon_state = initial(icon_state) -/obj/item/radio/intercom/add_blood(list/blood_dna) +/obj/item/radio/intercom/add_blood_DNA(list/blood_dna) return FALSE //Created through the autolathe or through deconstructing intercoms. Can be applied to wall to make a new intercom on it! diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 0fe5fc962b..d854ab9f5a 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -25,7 +25,7 @@ user.visible_message("[user] is [pick("slitting [user.p_their()] stomach open with", "falling on")] [src]! It looks like [user.p_theyre()] trying to commit seppuku!") return (BRUTELOSS|FIRELOSS) -/obj/item/melee/transforming/energy/add_blood(list/blood_dna) +/obj/item/melee/transforming/energy/add_blood_DNA(list/blood_dna) return FALSE /obj/item/melee/transforming/energy/is_sharp() diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 7dc01f9aee..cdb9c146e2 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -369,7 +369,7 @@ else shard.consume_turf(target) -/obj/item/melee/supermatter_sword/add_blood(list/blood_dna) +/obj/item/melee/supermatter_sword/add_blood_DNA(list/blood_dna) return FALSE /obj/item/melee/curator_whip diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index a4b0740c1c..23580bf37a 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -389,7 +389,7 @@ . = ..() /obj/item/stack/proc/copy_evidences(obj/item/stack/from) - add_blood(from.return_blood_DNA()) + add_blood_DNA(from.return_blood_DNA()) add_fingerprint_list(from.return_fingerprints()) add_hiddenprint_list(from.return_hiddenprints()) fingerprintslast = from.fingerprintslast diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index edae96f230..df7b203f91 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -242,5 +242,5 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", else return ..(M,user,heal_mode = FALSE) -/obj/item/storage/book/bible/syndicate/add_blood(list/blood_dna) +/obj/item/storage/book/bible/syndicate/add_blood_DNA(list/blood_dna) return FALSE diff --git a/code/modules/detectivework/detective_work.dm b/code/modules/detectivework/detective_work.dm index 8451019efb..4746071ecd 100644 --- a/code/modules/detectivework/detective_work.dm +++ b/code/modules/detectivework/detective_work.dm @@ -44,11 +44,11 @@ var/obj/item/clothing/gloves/G = M.gloves old = length(G.return_blood_DNA()) if(G.transfer_blood > 1) //bloodied gloves transfer blood to touched objects - if(add_blood(G.return_blood_DNA()) && length(G.return_blood_DNA()) > old) //only reduces the bloodiness of our gloves if the item wasn't already bloody + if(add_blood_DNA(G.return_blood_DNA()) && length(G.return_blood_DNA()) > old) //only reduces the bloodiness of our gloves if the item wasn't already bloody G.transfer_blood-- else if(M.bloody_hands > 1) old = length(M.return_blood_DNA()) - if(add_blood(M.return_blood_DNA()) && length(M.return_blood_DNA()) > old) + if(add_blood_DNA(M.return_blood_DNA()) && length(M.return_blood_DNA()) > old) M.bloody_hands-- var/datum/component/forensics/D = AddComponent(/datum/component/forensics) . = D.add_fibers(M) @@ -61,46 +61,46 @@ var/datum/component/forensics/D = AddComponent(/datum/component/forensics) . = D.add_hiddenprint(M) -/atom/proc/add_blood(list/dna) //ASSOC LIST DNA = BLOODTYPE +/atom/proc/add_blood_DNA(list/dna) //ASSOC LIST DNA = BLOODTYPE return FALSE -/obj/add_blood(list/dna) +/obj/add_blood_DNA(list/dna) . = ..() if(length(dna)) . = AddComponent(/datum/component/forensics, null, null, dna) -/obj/item/clothing/gloves/add_blood(list/blood_dna, list/datum/disease/diseases) +/obj/item/clothing/gloves/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) . = ..() transfer_blood = rand(2, 4) -/turf/add_blood(list/blood_dna, list/datum/disease/diseases) +/turf/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) var/obj/effect/decal/cleanable/blood/splatter/B = locate() in src if(!B) B = new /obj/effect/decal/cleanable/blood/splatter(src, diseases) - B.add_blood(blood_dna) //give blood info to the blood decal. + B.add_blood_DNA(blood_dna) //give blood info to the blood decal. return TRUE //we bloodied the floor -/mob/living/carbon/human/add_blood(list/blood_dna, list/datum/disease/diseases) +/mob/living/carbon/human/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) if(wear_suit) - wear_suit.add_blood(blood_dna) + wear_suit.add_blood_DNA(blood_dna) update_inv_wear_suit() else if(w_uniform) - w_uniform.add_blood(blood_dna) + w_uniform.add_blood_DNA(blood_dna) update_inv_w_uniform() if(gloves) var/obj/item/clothing/gloves/G = gloves - G.add_blood(blood_dna) + G.add_blood_DNA(blood_dna) else if(length(blood_dna)) AddComponent(/datum/component/forensics, null, null, blood_dna) bloody_hands = rand(2, 4) if(head) - head.add_blood(blood_dna) + head.add_blood_DNA(blood_dna) update_inv_head() else if(wear_mask) - wear_mask.add_blood(blood_dna) + wear_mask.add_blood_DNA(blood_dna) update_inv_wear_mask() if(wear_neck) - wear_neck.add_blood(blood_dna) + wear_neck.add_blood_DNA(blood_dna) update_inv_neck() update_inv_gloves() //handles bloody hands overlays and updating return TRUE diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index dbe0e31d3b..732afdf1e5 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -301,9 +301,9 @@ B.transfer_mob_blood_dna(src) //give blood info to the blood decal. if(temp_blood_DNA) if(isalien(src)) - B.add_blood(list("UNKNOWN DNA" = "X*")) + B.add_blood_DNA(list("UNKNOWN DNA" = "X*")) else - B.add_blood(temp_blood_DNA) + B.add_blood_DNA(temp_blood_DNA) /mob/living/carbon/human/add_splatter_floor(turf/T, small_drip) if(!(NOBLOOD in dna.species.species_traits)) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index d0b90387f7..fa6494f539 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -64,7 +64,7 @@ FP.blood_state = S.blood_state FP.entered_dirs |= dir FP.bloodiness = S.bloody_shoes[S.blood_state] - FP.add_blood(S.return_blood_DNA()) + FP.add_blood_DNA(S.return_blood_DNA()) FP.update_icon() update_inv_shoes() //End bloody footprints diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 17b58fd461..9e598cff5f 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -474,7 +474,7 @@ if(isturf(next)) if(bloodiness) var/obj/effect/decal/cleanable/blood/tracks/B = new(loc) - B.add_blood(return_blood_DNA()) + B.add_blood_DNA(return_blood_DNA()) var/newdir = get_dir(next, loc) if(newdir == dir) B.setDir(newdir) @@ -655,7 +655,7 @@ T.add_mob_blood(H) var/list/blood_dna = H.get_blood_dna_list() - add_blood(blood_dna) + add_blood_DNA(blood_dna) bloodiness += 4 // player on mulebot attempted to move diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 49270278d0..1117bc1000 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -170,7 +170,7 @@ if(iscarbon(user)) var/mob/living/carbon/C = user user_dna = C.dna - B.add_blood(user_dna) + B.add_blood_DNA(user_dna) var/datum/callback/gibspawner = CALLBACK(GLOBAL_PROC, /proc/spawn_atom_to_turf, /obj/effect/gibspawner/generic, B, 1, FALSE, list(user_dna)) B.throw_at(target, BRAINS_BLOWN_THROW_RANGE, BRAINS_BLOWN_THROW_SPEED, callback=gibspawner) return(BRUTELOSS) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 7163d9db13..9bef02c3b2 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -42,12 +42,12 @@ C.blood_volume = min(C.blood_volume + round(reac_volume, 0.1), BLOOD_VOLUME_MAXIMUM) if(reac_volume >= 10 && istype(L)) - L.add_blood(list(data["blood_DNA"] = data["blood_type"])) + L.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) L.color = bloodtype_to_color(data["blood_type"]) /datum/reagent/blood/reaction_obj(obj/O, volume) if(volume >= 3 && istype(O)) - O.add_blood(list(data["blood_DNA"] = data["blood_type"])) + O.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) O.color = bloodtype_to_color(data["blood_type"]) /datum/reagent/blood/on_new(list/data) diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index 437a794f98..7a2dd8702d 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -21,7 +21,7 @@ if(!S) S = new(T) if(data["blood_DNA"]) - S.add_blood(list(data["blood_DNA"] = data["blood_type"])) + S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) /obj/effect/decal/cleanable/semen name = "semen" @@ -36,10 +36,10 @@ /obj/effect/decal/cleanable/semen/New() ..() dir = pick(1,2,4,8) - add_blood(list("Non-human DNA" = "A+")) + add_blood_DNA(list("Non-human DNA" = "A+")) /obj/effect/decal/cleanable/semen/replace_decal(obj/effect/decal/cleanable/semen/S) - S.add_blood(return_blood_DNA()) + S.add_blood_DNA(return_blood_DNA()) return ..() /datum/reagent/consumable/femcum @@ -69,10 +69,10 @@ /obj/effect/decal/cleanable/femcum/New() ..() dir = pick(1,2,4,8) - add_blood(list("Non-human DNA" = "A+")) + add_blood_DNA(list("Non-human DNA" = "A+")) /obj/effect/decal/cleanable/femcum/replace_decal(obj/effect/decal/cleanable/femcum/F) - F.add_blood(return_blood_DNA()) + F.add_blood_DNA(return_blood_DNA()) return ..() /datum/reagent/consumable/femcum/reaction_turf(turf/T, reac_volume) @@ -85,7 +85,7 @@ if(!S) S = new(T) if(data["blood_DNA"]) - S.add_blood(list(data["blood_DNA"] = data["blood_type"])) + S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) //aphrodisiac & anaphrodisiac From d71f37167f896b57e77dcac15f4462e3efdf1be3 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Fri, 16 Aug 2019 04:58:16 -0500 Subject: [PATCH 081/469] I'm about to go fucking APE None of this is actually viable, Footprints aren't taking proper color, aren't updating their color. It's just default red. screm --- code/datums/components/decals/blood.dm | 7 +++- .../objects/effects/decals/cleanable/gibs.dm | 1 + .../effects/decals/cleanable/humans.dm | 39 +++++++++++++++++++ code/modules/clothing/clothing.dm | 11 ++++++ code/modules/clothing/shoes/_shoes.dm | 9 ----- code/modules/clothing/suits/_suits.dm | 4 +- code/modules/detectivework/detective_work.dm | 35 +++++++++++------ .../mob/living/carbon/human/human_movement.dm | 3 ++ 8 files changed, 84 insertions(+), 25 deletions(-) diff --git a/code/datums/components/decals/blood.dm b/code/datums/components/decals/blood.dm index 47c7fb8228..d3bdf94915 100644 --- a/code/datums/components/decals/blood.dm +++ b/code/datums/components/decals/blood.dm @@ -9,6 +9,7 @@ /datum/component/decal/blood/generate_appearance(_icon, _icon_state, _dir, _layer, _color) var/obj/item/I = parent + I.cut_overlays() if(!_icon) _icon = 'icons/effects/blood.dmi' if(!_icon_state) @@ -22,10 +23,12 @@ var/icon/blood_splatter_icon = icon(initial(I.icon), initial(I.icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) blood_splatter_icon.Blend(icon(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant - pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state)) +// pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state)) - I.blood_overlay = image(blood_splatter_icon) + I.blood_splatter_icon = blood_splatter_icon + I.blood_overlay = image(I.blood_splatter_icon) I.blood_overlay.color = I.blood_DNA_to_color() + I.update_icon() I.add_overlay(I.blood_overlay) return TRUE diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index ce1569b242..a762639a7b 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -17,6 +17,7 @@ reagents.add_reagent(gibs_reagent_id, 5) if(gibs_bloodtype) add_blood_DNA(list("Non-human DNA" = gibs_bloodtype)) + Blood_DNA = add_blood_DNA(list("Non-human DNA" = gibs_bloodtype)) update_icon() diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 9ffe0436fa..ea34fe4c79 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -7,8 +7,19 @@ blood_state = BLOOD_STATE_BLOOD bloodiness = MAX_SHOE_BLOODINESS color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere. + var/list/Blood_DNA = list() + +/obj/effect/decal/cleanable/blood/Initialize(mapload, list/datum/disease/diseases) + ..() + get_blood_lists() + +/obj/effect/decal/cleanable/blood/proc/get_blood_lists() + if(!Blood_DNA.len) + Blood_DNA = return_blood_DNA() /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) + if(C.Blood_DNA) + Blood_DNA |= C.Blood_DNA.Copy() C.add_blood_DNA(return_blood_DNA()) if (bloodiness) if (C.bloodiness < MAX_SHOE_BLOODINESS) @@ -51,6 +62,7 @@ desc = "Your instincts say you shouldn't be following these." random_icon_states = null var/list/existing_dirs = list() + var/list/Blood_DNA = list() /obj/effect/decal/cleanable/trail_holder/update_icon() color = blood_DNA_to_color() @@ -81,6 +93,7 @@ var/exited_dirs = 0 blood_state = BLOOD_STATE_BLOOD //the icon state to load images from var/list/shoe_types = list() + var/list/shoe_printer = list() /obj/effect/decal/cleanable/blood/footprints/Crossed(atom/movable/O) if(ishuman(O)) @@ -112,6 +125,9 @@ ..() cut_overlays() + if(shoe_printer) + color = shoeblood_DNA_to_color(shoe_printer) + for(var/Ddir in GLOB.cardinals) if(entered_dirs & Ddir) var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"] @@ -149,6 +165,29 @@ return TRUE return FALSE +/obj/effect/decal/cleanable/blood/footprints/proc/shoeblood_DNA_to_color(list/blood_dna) //handles RGB colorings of bloody shoes + var/list/colors = list()//first we make a list of all bloodtypes present + for(var/bloop in shoe_printer) + if(colors[shoe_printer[bloop]]) + colors[shoe_printer[bloop]]++ + else + colors[shoe_printer[bloop]] = 1 + + var/final_rgb = BLOOD_COLOR_HUMAN + + if(colors.len) + var/sum = 0 //this is all shitcode, but it works; trust me + final_rgb = bloodtype_to_color(colors[1]) + sum = colors[colors[1]] + if(colors.len > 1) + var/i = 2 + while(i <= colors.len) + var/tmp = colors[colors[i]] + final_rgb = BlendRGB(final_rgb, bloodtype_to_color(colors[i]), tmp/(tmp+sum)) + sum += tmp + i++ + + return final_rgb /* Eventually TODO: make snowflake trails like baycode's /obj/effect/decal/cleanable/blood/footprints/tracks/shoe name = "footprints" diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 776709f5b8..b8d42a7554 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -41,6 +41,10 @@ var/dynamic_hair_suffix = ""//head > mask for head hair var/dynamic_fhair_suffix = ""//mask > head for facial hair + //for blood coloration memes + var/last_bloodtype //used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans + var/last_blood_DNA //same as last one + /obj/item/clothing/Initialize() . = ..() if(CHECK_BITFIELD(clothing_flags, VOICEBOX_TOGGLABLE)) @@ -339,3 +343,10 @@ BLIND // can't see anything deconstruct(FALSE) else ..() + +/obj/item/clothing/transfer_blood_dna(list/blood_dna) + ..() + var/list/blood_list = list(return_blood_DNA()) + if(blood_list.len) + last_bloodtype = blood_list[blood_list[blood_list.len]]//trust me this works + last_blood_DNA = blood_list[blood_list.len] diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index 04c5644fb5..bb68f69ea0 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -19,9 +19,6 @@ var/adjusted = NORMAL_STYLE mutantrace_variation = MUTANTRACE_VARIATION - var/last_bloodtype = ""//used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans - var/last_blood_DNA = ""//same as last one - /obj/item/clothing/shoes/ComponentInitialize() . = ..() AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood))) @@ -107,9 +104,3 @@ /obj/item/proc/negates_gravity() return FALSE - -/obj/item/clothing/shoes/transfer_blood_dna(list/blood_dna) - ..() - if(blood_dna.len) - last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works - last_blood_DNA = blood_dna[blood_dna.len] diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index 86d473ca7b..c3ddf99365 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -55,9 +55,9 @@ . += mutable_appearance('icons/effects/item_damage.dmi', "damaged[blood_overlay_type]") IF_HAS_BLOOD_DNA(src) if(taurmode >= SNEK_TAURIC) - . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "[blood_overlay_type]blood") + . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) else - . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood") + . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) var/mob/living/carbon/human/M = loc if(ishuman(M) && M.w_uniform) var/obj/item/clothing/under/U = M.w_uniform diff --git a/code/modules/detectivework/detective_work.dm b/code/modules/detectivework/detective_work.dm index 4746071ecd..31969b912f 100644 --- a/code/modules/detectivework/detective_work.dm +++ b/code/modules/detectivework/detective_work.dm @@ -78,6 +78,7 @@ if(!B) B = new /obj/effect/decal/cleanable/blood/splatter(src, diseases) B.add_blood_DNA(blood_dna) //give blood info to the blood decal. + B.update_icon() return TRUE //we bloodied the floor /mob/living/carbon/human/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) @@ -112,25 +113,29 @@ //to add blood dna info to the object's blood_DNA list /atom/proc/transfer_blood_dna(list/blood_dna) - var/list/dna = blood_DNA_length() - if(!dna) - dna = list() - var/old_length = dna.len - dna |= blood_dna - if(dna.len > old_length) + var/list/blood_DNA = return_blood_DNA() + if(!blood_DNA) + blood_DNA = list() + var/old_length = blood_DNA.len + blood_DNA |= blood_dna + if(blood_DNA.len > old_length) return TRUE//some new blood DNA was added -/atom/proc/blood_DNA_to_color() //handles RGB colorings of blood - var/list/dna = blood_DNA_length() +/atom/proc/blood_DNA_to_color() + return + +/obj/effect/decal/cleanable/blood/blood_DNA_to_color() + to_chat(world, "blood dna to color called by [src]") var/list/colors = list()//first we make a list of all bloodtypes present - for(var/bloop in dna) - if(colors[dna[bloop]]) - colors[dna[bloop]]++ + for(var/bloop in Blood_DNA) + if(colors[Blood_DNA[bloop]]) + colors[Blood_DNA[bloop]]++ else - colors[dna[bloop]] = 1 + colors[Blood_DNA[bloop]] = 1 var/final_rgb = BLOOD_COLOR_HUMAN + to_chat(world, "colors has [colors.len] bloodtypes in it") if(colors.len) var/sum = 0 //this is all shitcode, but it works; trust me final_rgb = bloodtype_to_color(colors[1]) @@ -144,3 +149,9 @@ i++ return final_rgb + +/obj/item/clothing/blood_DNA_to_color() + var/final_rgb = BLOOD_COLOR_HUMAN + if(last_bloodtype) + final_rgb = bloodtype_to_color(last_bloodtype) + return final_rgb diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index fa6494f539..8bbf2f4a47 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -64,6 +64,9 @@ FP.blood_state = S.blood_state FP.entered_dirs |= dir FP.bloodiness = S.bloody_shoes[S.blood_state] + if(S.last_blood_DNA && S.last_bloodtype) + FP.shoe_printer += list(S.last_blood_DNA = S.last_bloodtype) + //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood FP.add_blood_DNA(S.return_blood_DNA()) FP.update_icon() update_inv_shoes() From c3fb13c1405759a69d3ea5d8fd549c9e7c3a2b60 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Fri, 16 Aug 2019 05:10:55 -0500 Subject: [PATCH 082/469] meh. --- code/game/objects/effects/decals/cleanable/gibs.dm | 1 - code/game/objects/effects/decals/cleanable/humans.dm | 10 ---------- 2 files changed, 11 deletions(-) diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index a762639a7b..ce1569b242 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -17,7 +17,6 @@ reagents.add_reagent(gibs_reagent_id, 5) if(gibs_bloodtype) add_blood_DNA(list("Non-human DNA" = gibs_bloodtype)) - Blood_DNA = add_blood_DNA(list("Non-human DNA" = gibs_bloodtype)) update_icon() diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index ea34fe4c79..37c00ac66d 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -9,17 +9,7 @@ color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere. var/list/Blood_DNA = list() -/obj/effect/decal/cleanable/blood/Initialize(mapload, list/datum/disease/diseases) - ..() - get_blood_lists() - -/obj/effect/decal/cleanable/blood/proc/get_blood_lists() - if(!Blood_DNA.len) - Blood_DNA = return_blood_DNA() - /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) - if(C.Blood_DNA) - Blood_DNA |= C.Blood_DNA.Copy() C.add_blood_DNA(return_blood_DNA()) if (bloodiness) if (C.bloodiness < MAX_SHOE_BLOODINESS) From 8bd54bcc543d46ad9c0383e50a2fec6059e73d1a Mon Sep 17 00:00:00 2001 From: Poojawa Date: Fri, 16 Aug 2019 06:24:42 -0500 Subject: [PATCH 083/469] I'm just waiting for a better idea before dumping this hot garbage again --- code/game/objects/effects/decals/cleanable/gibs.dm | 3 +++ code/game/objects/effects/decals/cleanable/humans.dm | 5 +++++ code/modules/clothing/clothing.dm | 5 ++++- code/modules/detectivework/detective_work.dm | 7 ++++--- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index ce1569b242..85edcfbea8 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -21,6 +21,9 @@ /obj/effect/decal/cleanable/blood/gibs/update_icon() + GET_COMPONENT(D, /datum/component/forensics) + if(D) + Blood_DNA = D.blood_DNA add_atom_colour(blood_DNA_to_color(), FIXED_COLOUR_PRIORITY) cut_overlays() var/mutable_appearance/guts = mutable_appearance(icon, "[icon_state]_guts") diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 37c00ac66d..16efe12bf0 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -11,6 +11,8 @@ /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) C.add_blood_DNA(return_blood_DNA()) + if(C.Blood_DNA.len) + Blood_DNA |= C.Blood_DNA.Copy() if (bloodiness) if (C.bloodiness < MAX_SHOE_BLOODINESS) C.bloodiness += bloodiness @@ -26,6 +28,9 @@ update_icon() /obj/effect/decal/cleanable/blood/update_icon() + GET_COMPONENT(D, /datum/component/forensics) + if(D) + Blood_DNA = D.blood_DNA color = blood_DNA_to_color() /obj/effect/decal/cleanable/blood/old diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index b8d42a7554..d7586fb6a0 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -346,7 +346,10 @@ BLIND // can't see anything /obj/item/clothing/transfer_blood_dna(list/blood_dna) ..() - var/list/blood_list = list(return_blood_DNA()) + var/list/blood_list + GET_COMPONENT(D, /datum/component/forensics) + if(D) + blood_list = D.blood_DNA if(blood_list.len) last_bloodtype = blood_list[blood_list[blood_list.len]]//trust me this works last_blood_DNA = blood_list[blood_list.len] diff --git a/code/modules/detectivework/detective_work.dm b/code/modules/detectivework/detective_work.dm index 31969b912f..e219ffc570 100644 --- a/code/modules/detectivework/detective_work.dm +++ b/code/modules/detectivework/detective_work.dm @@ -113,7 +113,10 @@ //to add blood dna info to the object's blood_DNA list /atom/proc/transfer_blood_dna(list/blood_dna) - var/list/blood_DNA = return_blood_DNA() + var/list/blood_DNA + GET_COMPONENT(D, /datum/component/forensics) + if(D) + blood_DNA = D.blood_DNA if(!blood_DNA) blood_DNA = list() var/old_length = blood_DNA.len @@ -125,7 +128,6 @@ return /obj/effect/decal/cleanable/blood/blood_DNA_to_color() - to_chat(world, "blood dna to color called by [src]") var/list/colors = list()//first we make a list of all bloodtypes present for(var/bloop in Blood_DNA) if(colors[Blood_DNA[bloop]]) @@ -135,7 +137,6 @@ var/final_rgb = BLOOD_COLOR_HUMAN - to_chat(world, "colors has [colors.len] bloodtypes in it") if(colors.len) var/sum = 0 //this is all shitcode, but it works; trust me final_rgb = bloodtype_to_color(colors[1]) From 088bc484e32b131b7e75ffe816279e2ef529d358 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sat, 17 Aug 2019 02:43:59 -0500 Subject: [PATCH 084/469] Forensics re-destroyed, but better this time. All lists are LAZYINITLIST, cleaning code is preserved, examine is preserved. We should be back in buisness, but this is just a 'holy fuck finally' commit --- code/__DEFINES/forensics.dm | 2 - code/datums/components/decals/blood.dm | 26 -- code/datums/components/forensics.dm | 184 -------------- code/game/atoms.dm | 124 +++++++++- code/game/machinery/washing_machine.dm | 5 +- code/game/objects/effects/decals/cleanable.dm | 3 +- .../effects/decals/cleanable/aliens.dm | 2 +- .../objects/effects/decals/cleanable/gibs.dm | 5 +- .../effects/decals/cleanable/humans.dm | 9 +- code/game/objects/items/stacks/stack.dm | 6 +- .../antagonists/wizard/equipment/artefact.dm | 7 +- code/modules/clothing/clothing.dm | 13 +- code/modules/clothing/gloves/_gloves.dm | 11 +- code/modules/clothing/head/_head.dm | 2 +- code/modules/clothing/masks/_masks.dm | 2 +- code/modules/clothing/neck/_neck.dm | 2 +- code/modules/clothing/shoes/_shoes.dm | 10 +- code/modules/clothing/suits/_suits.dm | 2 +- code/modules/clothing/under/_under.dm | 2 +- code/modules/detectivework/detective_work.dm | 227 +++++++----------- code/modules/detectivework/evidence.dm | 8 +- code/modules/detectivework/scanner.dm | 43 ++-- code/modules/mob/living/blood.dm | 3 +- .../mob/living/carbon/human/examine.dm | 3 +- code/modules/mob/living/carbon/human/human.dm | 8 +- .../mob/living/carbon/human/human_movement.dm | 3 +- .../mob/living/simple_animal/bot/mulebot.dm | 3 +- .../modules/reagents/reagents/cit_reagents.dm | 10 +- tgstation.dme | 2 - 29 files changed, 288 insertions(+), 439 deletions(-) delete mode 100644 code/__DEFINES/forensics.dm delete mode 100644 code/datums/components/forensics.dm diff --git a/code/__DEFINES/forensics.dm b/code/__DEFINES/forensics.dm deleted file mode 100644 index 0cda5d997a..0000000000 --- a/code/__DEFINES/forensics.dm +++ /dev/null @@ -1,2 +0,0 @@ -#define IF_HAS_BLOOD_DNA(__thing) GET_COMPONENT_FROM(__FR##__thing, /datum/component/forensics, __thing); if(__FR##__thing && length(__FR##__thing.blood_DNA)) -#define IF_HAS_BLOOD_DNA_AND(__thing, __conditions...) GET_COMPONENT_FROM(__FR##__thing, /datum/component/forensics, __thing); if(__FR##__thing && length(__FR##__thing.blood_DNA) && (##__conditions)) \ No newline at end of file diff --git a/code/datums/components/decals/blood.dm b/code/datums/components/decals/blood.dm index d3bdf94915..18e362db5d 100644 --- a/code/datums/components/decals/blood.dm +++ b/code/datums/components/decals/blood.dm @@ -7,32 +7,6 @@ . = ..() RegisterSignal(parent, COMSIG_ATOM_GET_EXAMINE_NAME, .proc/get_examine_name) -/datum/component/decal/blood/generate_appearance(_icon, _icon_state, _dir, _layer, _color) - var/obj/item/I = parent - I.cut_overlays() - if(!_icon) - _icon = 'icons/effects/blood.dmi' - if(!_icon_state) - _icon_state = "itemblood" - var/icon = initial(I.icon) - var/icon_state = initial(I.icon_state) - if(!icon || !icon_state) - // It's something which takes on the look of other items, probably - icon = I.icon - icon_state = I.icon_state - var/icon/blood_splatter_icon = icon(initial(I.icon), initial(I.icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object - blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) - blood_splatter_icon.Blend(icon(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant -// pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state)) - - I.blood_splatter_icon = blood_splatter_icon - I.blood_overlay = image(I.blood_splatter_icon) - I.blood_overlay.color = I.blood_DNA_to_color() - I.update_icon() - I.add_overlay(I.blood_overlay) - - return TRUE - /datum/component/decal/blood/proc/get_examine_name(datum/source, mob/user, list/override) var/atom/A = parent override[EXAMINE_POSITION_ARTICLE] = A.gender == PLURAL? "some" : "a" diff --git a/code/datums/components/forensics.dm b/code/datums/components/forensics.dm deleted file mode 100644 index cd3cbbd8c1..0000000000 --- a/code/datums/components/forensics.dm +++ /dev/null @@ -1,184 +0,0 @@ -/datum/component/forensics - dupe_mode = COMPONENT_DUPE_UNIQUE - can_transfer = TRUE - var/list/fingerprints //assoc print = print - var/list/hiddenprints //assoc ckey = realname/gloves/ckey - var/list/blood_DNA //assoc dna = bloodtype - var/list/fibers //assoc print = print - -/datum/component/forensics/InheritComponent(datum/component/forensics/F, original) //Use of | and |= being different here is INTENTIONAL. - fingerprints = fingerprints | F.fingerprints - hiddenprints = hiddenprints | F.hiddenprints - blood_DNA = blood_DNA | F.blood_DNA - fibers = fibers | F.fibers - check_blood() - return ..() - -/datum/component/forensics/Initialize(new_fingerprints, new_hiddenprints, new_blood_DNA, new_fibers) - if(!isatom(parent)) - return COMPONENT_INCOMPATIBLE - fingerprints = new_fingerprints - hiddenprints = new_hiddenprints - blood_DNA = new_blood_DNA - fibers = new_fibers - check_blood() - -/datum/component/forensics/RegisterWithParent() - check_blood() - RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_act) - -/datum/component/forensics/UnregisterFromParent() - UnregisterSignal(parent, list(COMSIG_COMPONENT_CLEAN_ACT)) - -/datum/component/forensics/PostTransfer() - if(!isatom(parent)) - return COMPONENT_INCOMPATIBLE - -/datum/component/forensics/proc/wipe_fingerprints() - fingerprints = null - return TRUE - -/datum/component/forensics/proc/wipe_hiddenprints() - return //no. - -/datum/component/forensics/proc/wipe_blood_DNA() - blood_DNA = null - if(isitem(parent)) - qdel(parent.GetComponent(/datum/component/decal/blood)) - return TRUE - -/datum/component/forensics/proc/wipe_fibers() - fibers = null - return TRUE - -/datum/component/forensics/proc/clean_act(datum/source, strength) - if(strength >= CLEAN_STRENGTH_FINGERPRINTS) - wipe_fingerprints() - if(strength >= CLEAN_STRENGTH_BLOOD) - wipe_blood_DNA() - if(strength >= CLEAN_STRENGTH_FIBERS) - wipe_fibers() - -/datum/component/forensics/proc/add_fingerprint_list(list/_fingerprints) //list(text) - if(!length(_fingerprints)) - return - LAZYINITLIST(fingerprints) - for(var/i in _fingerprints) //We use an associative list, make sure we don't just merge a non-associative list into ours. - fingerprints[i] = i - return TRUE - -/datum/component/forensics/proc/add_fingerprint(mob/living/M, ignoregloves = FALSE) - if(!isliving(M)) - if(!iscameramob(M)) - return - if(isaicamera(M)) - var/mob/camera/aiEye/ai_camera = M - if(!ai_camera.ai) - return - M = ai_camera.ai - add_hiddenprint(M) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - add_fibers(H) - if(H.gloves) //Check if the gloves (if any) hide fingerprints - var/obj/item/clothing/gloves/G = H.gloves - if(G.transfer_prints) - ignoregloves = TRUE - if(!ignoregloves) - H.gloves.add_fingerprint(H, TRUE) //ignoregloves = 1 to avoid infinite loop. - return - var/full_print = md5(H.dna.uni_identity) - LAZYSET(fingerprints, full_print, full_print) - return TRUE - -/datum/component/forensics/proc/add_fiber_list(list/_fibertext) //list(text) - if(!length(_fibertext)) - return - LAZYINITLIST(fibers) - for(var/i in _fibertext) //We use an associative list, make sure we don't just merge a non-associative list into ours. - fibers[i] = i - return TRUE - -/datum/component/forensics/proc/add_fibers(mob/living/carbon/human/M) - var/fibertext - var/item_multiplier = isitem(src)?1.2:1 - if(M.wear_suit) - fibertext = "Material from \a [M.wear_suit]." - if(prob(10*item_multiplier) && !LAZYACCESS(fibers, fibertext)) - LAZYSET(fibers, fibertext, fibertext) - if(!(M.wear_suit.body_parts_covered & CHEST)) - if(M.w_uniform) - fibertext = "Fibers from \a [M.w_uniform]." - if(prob(12*item_multiplier) && !LAZYACCESS(fibers, fibertext)) //Wearing a suit means less of the uniform exposed. - LAZYSET(fibers, fibertext, fibertext) - if(!(M.wear_suit.body_parts_covered & HANDS)) - if(M.gloves) - fibertext = "Material from a pair of [M.gloves.name]." - if(prob(20*item_multiplier) && !LAZYACCESS(fibers, fibertext)) - LAZYSET(fibers, fibertext, fibertext) - else if(M.w_uniform) - fibertext = "Fibers from \a [M.w_uniform]." - if(prob(15*item_multiplier) && !LAZYACCESS(fibers, fibertext)) - // "Added fibertext: [fibertext]" - LAZYSET(fibers, fibertext, fibertext) - if(M.gloves) - fibertext = "Material from a pair of [M.gloves.name]." - if(prob(20*item_multiplier) && !LAZYACCESS(fibers, fibertext)) - LAZYSET(fibers, fibertext, fibertext) - else if(M.gloves) - fibertext = "Material from a pair of [M.gloves.name]." - if(prob(20*item_multiplier) && !LAZYACCESS(fibers, fibertext)) - LAZYSET(fibers, fibertext, fibertext) - return TRUE - -/datum/component/forensics/proc/add_hiddenprint_list(list/_hiddenprints) //list(ckey = text) - if(!length(_hiddenprints)) - return - LAZYINITLIST(hiddenprints) - for(var/i in _hiddenprints) //We use an associative list, make sure we don't just merge a non-associative list into ours. - hiddenprints[i] = _hiddenprints[i] - return TRUE - -/datum/component/forensics/proc/add_hiddenprint(mob/M) - if(!isliving(M)) - if(!iscameramob(M)) - return - if(isaicamera(M)) - var/mob/camera/aiEye/ai_camera = M - if(!ai_camera.ai) - return - M = ai_camera.ai - if(!M.key) - return - var/hasgloves = "" - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.gloves) - hasgloves = "(gloves)" - var/current_time = TIME_STAMP("hh:mm:ss", FALSE) - if(!LAZYACCESS(hiddenprints, M.key)) - LAZYSET(hiddenprints, M.key, "First: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]") - else - var/laststamppos = findtext(LAZYACCESS(hiddenprints, M.key), " Last: ") - if(laststamppos) - LAZYSET(hiddenprints, M.key, copytext(hiddenprints[M.key], 1, laststamppos)) - hiddenprints[M.key] += " Last: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]" //made sure to be existing by if(!LAZYACCESS);else - var/atom/A = parent - A.fingerprintslast = M.ckey - return TRUE - -/datum/component/forensics/proc/add_blood_DNA(list/dna) //list(dna_enzymes = type) - if(!length(dna)) - return - LAZYINITLIST(blood_DNA) - for(var/i in dna) - blood_DNA[i] = dna[i] - check_blood() - return TRUE - -/datum/component/forensics/proc/check_blood() - if(!isitem(parent)) - return - if(!length(blood_DNA)) - return - parent.LoadComponent(/datum/component/decal/blood) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index a708418258..6c068e7d5e 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -37,6 +37,10 @@ var/rad_insulation = RAD_NO_INSULATION var/icon/blood_splatter_icon + var/list/fingerprints + var/list/fingerprintshidden + var/list/blood_DNA + var/list/suit_fibers /atom/New(loc, ...) //atom creation method that preloads variables at creation @@ -350,12 +354,23 @@ var/new_blood_dna = L.get_blood_dna_list() if(!new_blood_dna) return FALSE - var/old_length = blood_DNA_length() + LAZYINITLIST(blood_DNA) //if our list of DNA doesn't exist yet, initialise it. + var/old_length = length(blood_DNA) add_blood_DNA(new_blood_dna) - if(blood_DNA_length() == old_length) + if(length(blood_DNA) == old_length) return FALSE return TRUE +//to add blood dna info to the object's blood_DNA list +/atom/proc/transfer_blood_dna(list/blood_dna, list/datum/disease/diseases) + LAZYINITLIST(blood_DNA) + var/old_length = length(blood_DNA) + blood_DNA |= blood_dna + if(length(blood_DNA) == old_length) + return FALSE + return TRUE + + //to add blood from a mob onto something, and transfer their dna info /atom/proc/add_mob_blood(mob/living/M) var/list/blood_dna = M.get_blood_dna_list() @@ -363,6 +378,111 @@ return FALSE return add_blood_DNA(blood_dna) +//to add blood onto something, with blood dna info to include. +/atom/proc/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) + return FALSE + +/obj/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) + return transfer_blood_dna(blood_dna) + +/obj/item/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) + . = ..() + if(!.) + return + add_blood_overlay() + +/obj/item/proc/add_blood_overlay() + if(!length(blood_DNA)) + return + if(initial(icon) && initial(icon_state)) + blood_splatter_icon = icon(initial(icon), initial(icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object + blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) + blood_splatter_icon.Blend(icon('icons/effects/blood.dmi', "itemblood"), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant + + blood_overlay = image(blood_splatter_icon) + blood_overlay.color = blood_DNA_to_color() + add_overlay(blood_overlay) + +/obj/item/clothing/gloves/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) + . = ..() + transfer_blood = rand(2, 4) + +/turf/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) + var/obj/effect/decal/cleanable/blood/splatter/B = locate() in src + if(!B) + B = new /obj/effect/decal/cleanable/blood/splatter(src, diseases) + B.transfer_blood_dna(blood_dna) //give blood info to the blood decal. + return TRUE //we bloodied the floor + +/mob/living/carbon/human/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) + if(wear_suit) + wear_suit.add_blood_DNA(blood_dna) + update_inv_wear_suit() + else if(w_uniform) + w_uniform.add_blood_DNA(blood_dna) + update_inv_w_uniform() + if(gloves) + var/obj/item/clothing/gloves/G = gloves + G.add_blood_DNA(blood_dna) + else if(length(blood_dna)) + transfer_blood_dna(blood_dna) + bloody_hands = rand(2, 4) + if(head) + head.add_blood_DNA(blood_dna) + update_inv_head() + else if(wear_mask) + wear_mask.add_blood_DNA(blood_dna) + update_inv_wear_mask() + if(wear_neck) + wear_neck.add_blood_DNA(blood_dna) + update_inv_neck() + update_inv_gloves() //handles bloody hands overlays and updating + return TRUE + +/atom/proc/blood_DNA_to_color() + var/list/colors = list()//first we make a list of all bloodtypes present + for(var/bloop in blood_DNA) + if(colors[blood_DNA[bloop]]) + colors[blood_DNA[bloop]]++ + else + colors[blood_DNA[bloop]] = 1 + + var/final_rgb = BLOOD_COLOR_HUMAN //a default so we don't have white blood graphics if something messed up + + if(colors.len) + var/sum = 0 //this is all shitcode, but it works; trust me + final_rgb = bloodtype_to_color(colors[1]) + sum = colors[colors[1]] + if(colors.len > 1) + var/i = 2 + while(i <= colors.len) + var/tmp = colors[colors[i]] + final_rgb = BlendRGB(final_rgb, bloodtype_to_color(colors[i]), tmp/(tmp+sum)) + sum += tmp + i++ + + return final_rgb + +/atom/proc/clean_blood(datum/source, strength) + if(strength < CLEAN_STRENGTH_BLOOD) + return + if(strength >= CLEAN_STRENGTH_FINGERPRINTS) + if(islist(fingerprints)) + fingerprints = null + if(strength >= CLEAN_STRENGTH_BLOOD) + if(islist(blood_DNA)) + blood_DNA = null + if(strength >= CLEAN_STRENGTH_FIBERS) + if(islist(suit_fibers)) + suit_fibers = null + return TRUE + +/obj/item/clean_blood(datum/source, strength) + . = ..() + if(.) + if(blood_splatter_icon) + cut_overlay(blood_splatter_icon) + /atom/proc/wash_cream() return TRUE diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 5e8515d3d5..3eda412a84 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -13,7 +13,7 @@ /obj/machinery/washing_machine/ComponentInitialize() . = ..() - AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood))) + AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, /obj/machinery/washing_machine/clean_blood))) /obj/machinery/washing_machine/examine(mob/user) ..() @@ -59,7 +59,8 @@ M.Translate(rand(-3, 3), rand(-1, 3)) animate(src, transform=M, time=2) -/obj/machinery/washing_machine/proc/clean_blood() +/obj/machinery/washing_machine/clean_blood() + . = ..() if(!busy) bloody_mess = FALSE update_icon() diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index d35e353170..c03e8a2473 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -81,7 +81,8 @@ add_blood = bloodiness bloodiness -= add_blood S.bloody_shoes[blood_state] = min(MAX_SHOE_BLOODINESS,S.bloody_shoes[blood_state]+add_blood) - S.add_blood_DNA(return_blood_DNA()) + if(blood_DNA && blood_DNA.len) + S.add_blood_DNA(blood_DNA) S.blood_state = blood_state update_icon() H.update_inv_shoes() diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index e1c92a83c1..45d3757921 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -35,7 +35,7 @@ if(infective) diseases = infective.diseases var/obj/effect/decal/cleanable/blood/splatter/xeno/splat = new /obj/effect/decal/cleanable/blood/splatter/xeno(loc, diseases) - splat.add_blood_DNA(return_blood_DNA()) + splat.transfer_blood_dna(blood_DNA) if(!step_to(src, get_step(src, direction), 0)) break diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 85edcfbea8..627723b110 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -21,9 +21,6 @@ /obj/effect/decal/cleanable/blood/gibs/update_icon() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - Blood_DNA = D.blood_DNA add_atom_colour(blood_DNA_to_color(), FIXED_COLOUR_PRIORITY) cut_overlays() var/mutable_appearance/guts = mutable_appearance(icon, "[icon_state]_guts") @@ -60,7 +57,7 @@ if(infective) diseases = infective.diseases var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) - splat.add_blood_DNA(return_blood_DNA()) + splat.transfer_blood_dna(blood_DNA) if(!step_to(src, get_step(src, direction), 0)) break diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 16efe12bf0..c0ae223751 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -7,12 +7,10 @@ blood_state = BLOOD_STATE_BLOOD bloodiness = MAX_SHOE_BLOODINESS color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere. - var/list/Blood_DNA = list() /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) - C.add_blood_DNA(return_blood_DNA()) - if(C.Blood_DNA.len) - Blood_DNA |= C.Blood_DNA.Copy() + if (C.blood_DNA) + blood_DNA |= C.blood_DNA.Copy() if (bloodiness) if (C.bloodiness < MAX_SHOE_BLOODINESS) C.bloodiness += bloodiness @@ -28,9 +26,6 @@ update_icon() /obj/effect/decal/cleanable/blood/update_icon() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - Blood_DNA = D.blood_DNA color = blood_DNA_to_color() /obj/effect/decal/cleanable/blood/old diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 23580bf37a..72a01d6a09 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -389,9 +389,9 @@ . = ..() /obj/item/stack/proc/copy_evidences(obj/item/stack/from) - add_blood_DNA(from.return_blood_DNA()) - add_fingerprint_list(from.return_fingerprints()) - add_hiddenprint_list(from.return_hiddenprints()) + blood_DNA = from.blood_DNA + fingerprints = from.fingerprints + fingerprintshidden = from.fingerprintshidden fingerprintslast = from.fingerprintslast //TODO bloody overlay diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index 08e00ea0f4..90581e9911 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -324,14 +324,11 @@ cooldown = world.time + cooldown_time /obj/item/voodoo/proc/update_targets() - possible = list() + LAZYINITLIST(possible) if(!voodoo_link) return - var/list/prints = voodoo_link.return_fingerprints() - if(!length(prints)) - return FALSE for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) - if(prints[md5(H.dna.uni_identity)]) + if(md5(H.dna.uni_identity) in voodoo_link.fingerprints) possible |= H /obj/item/voodoo/proc/GiveHint(mob/victim,force=0) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index d7586fb6a0..9cdbdcf03f 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -344,12 +344,7 @@ BLIND // can't see anything else ..() -/obj/item/clothing/transfer_blood_dna(list/blood_dna) - ..() - var/list/blood_list - GET_COMPONENT(D, /datum/component/forensics) - if(D) - blood_list = D.blood_DNA - if(blood_list.len) - last_bloodtype = blood_list[blood_list[blood_list.len]]//trust me this works - last_blood_DNA = blood_list[blood_list.len] +/obj/item/clothing/transfer_blood_dna(list/blood_dna, list/datum/disease/diseases) + if(length(blood_DNA)) + last_bloodtype = blood_DNA[blood_DNA[blood_DNA.len]]//trust me this works + last_blood_DNA = blood_DNA[blood_DNA.len] diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm index 0ae04c1f7a..9d75fc6ce4 100644 --- a/code/modules/clothing/gloves/_gloves.dm +++ b/code/modules/clothing/gloves/_gloves.dm @@ -14,11 +14,10 @@ /obj/item/clothing/gloves/ComponentInitialize() . = ..() - AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood))) + AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, /obj/item/clothing/gloves/clean_blood))) -/obj/item/clothing/gloves/proc/clean_blood(datum/source, strength) - if(strength < CLEAN_STRENGTH_BLOOD) - return +/obj/item/clothing/gloves/clean_blood(datum/source, strength) + . = ..() transfer_blood = 0 /obj/item/clothing/gloves/suicide_act(mob/living/carbon/user) @@ -30,7 +29,7 @@ if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedgloves") - IF_HAS_BLOOD_DNA(src) + if(blood_DNA) . += mutable_appearance('icons/effects/blood.dmi', "bloodyhands", color = blood_DNA_to_color()) /obj/item/clothing/gloves/update_clothes_damaged_state(damaging = TRUE) @@ -41,4 +40,4 @@ // Called just before an attack_hand(), in mob/UnarmedAttack() /obj/item/clothing/gloves/proc/Touch(atom/A, proximity) - return 0 // return 1 to cancel attack_hand() \ No newline at end of file + return FALSE // return TRUE to cancel attack_hand() \ No newline at end of file diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm index 98bb3aec13..ccc167dcbc 100644 --- a/code/modules/clothing/head/_head.dm +++ b/code/modules/clothing/head/_head.dm @@ -46,7 +46,7 @@ if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedhelmet") - IF_HAS_BLOOD_DNA(src) + if(blood_DNA) . += mutable_appearance('icons/effects/blood.dmi', "helmetblood", color = blood_DNA_to_color()) /obj/item/clothing/head/update_clothes_damaged_state(damaging = TRUE) diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm index 362ab9b3bd..c00e6f72e0 100644 --- a/code/modules/clothing/masks/_masks.dm +++ b/code/modules/clothing/masks/_masks.dm @@ -59,7 +59,7 @@ if(body_parts_covered & HEAD) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") - IF_HAS_BLOOD_DNA(src) + if(blood_DNA) . += mutable_appearance('icons/effects/blood.dmi', "maskblood", color = blood_DNA_to_color()) /obj/item/clothing/mask/update_clothes_damaged_state(damaging = TRUE) diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index 0bb7c8ebfd..2356bb16eb 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -12,7 +12,7 @@ if(body_parts_covered & HEAD) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") - IF_HAS_BLOOD_DNA(src) + if(blood_DNA) . += mutable_appearance('icons/effects/blood.dmi', "maskblood", color = blood_DNA_to_color()) /obj/item/clothing/neck/tie diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index bb68f69ea0..df7415eace 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -21,7 +21,7 @@ /obj/item/clothing/shoes/ComponentInitialize() . = ..() - AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood))) + AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, /obj/item/clothing/shoes/clean_blood))) /obj/item/clothing/shoes/suicide_act(mob/living/carbon/user) if(rand(2)>1) @@ -46,7 +46,7 @@ . = list() if(!isinhands) var/bloody = FALSE - IF_HAS_BLOOD_DNA(src) + if(blood_DNA) bloody = TRUE else bloody = bloody_shoes[BLOOD_STATE_BLOOD] @@ -93,9 +93,9 @@ var/mob/M = loc M.update_inv_shoes() -/obj/item/clothing/shoes/proc/clean_blood(datum/source, strength) - if(strength < CLEAN_STRENGTH_BLOOD) - return +/obj/item/clothing/shoes/clean_blood(datum/source, strength) + . = ..() + bloody_shoes = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) blood_state = BLOOD_STATE_NOT_BLOODY if(ismob(loc)) diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index c3ddf99365..2ad1bba042 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -53,7 +53,7 @@ if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damaged[blood_overlay_type]") - IF_HAS_BLOOD_DNA(src) + if(blood_DNA) if(taurmode >= SNEK_TAURIC) . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) else diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index 5f123cd745..eda0e31e93 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -22,7 +22,7 @@ if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform") - IF_HAS_BLOOD_DNA(src) + if(blood_DNA) . += mutable_appearance('icons/effects/blood.dmi', "uniformblood", color = blood_DNA_to_color()) if(accessory_overlay) . += accessory_overlay diff --git a/code/modules/detectivework/detective_work.dm b/code/modules/detectivework/detective_work.dm index e219ffc570..2b916ffc27 100644 --- a/code/modules/detectivework/detective_work.dm +++ b/code/modules/detectivework/detective_work.dm @@ -1,158 +1,107 @@ //CONTAINS: Suit fibers and Detective's Scanning Computer -/atom/proc/return_fingerprints() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - . = D.fingerprints +/atom/proc/add_fibers(mob/living/carbon/human/M) + if(M.gloves && istype(M.gloves, /obj/item/clothing/)) + var/obj/item/clothing/gloves/G = M.gloves + if(G.transfer_blood > 1) //bloodied gloves transfer blood to touched objects + if(add_blood_DNA(G.blood_DNA)) //only reduces the bloodiness of our gloves if the item wasn't already bloody + G.transfer_blood-- + else if(M.bloody_hands > 1) + if(add_blood_DNA(M.blood_DNA)) + M.bloody_hands-- + if(!suit_fibers) + suit_fibers = list() + var/fibertext + var/item_multiplier = isitem(src)?1.2:1 + if(M.wear_suit) + fibertext = "Material from \a [M.wear_suit]." + if(prob(10*item_multiplier) && !(fibertext in suit_fibers)) + suit_fibers += fibertext + if(!(M.wear_suit.body_parts_covered & CHEST)) + if(M.w_uniform) + fibertext = "Fibers from \a [M.w_uniform]." + if(prob(12*item_multiplier) && !(fibertext in suit_fibers)) //Wearing a suit means less of the uniform exposed. + suit_fibers += fibertext + if(!(M.wear_suit.body_parts_covered & HANDS)) + if(M.gloves) + fibertext = "Material from a pair of [M.gloves.name]." + if(prob(20*item_multiplier) && !(fibertext in suit_fibers)) + suit_fibers += fibertext + else if(M.w_uniform) + fibertext = "Fibers from \a [M.w_uniform]." + if(prob(15*item_multiplier) && !(fibertext in suit_fibers)) + // "Added fibertext: [fibertext]" + suit_fibers += fibertext + if(M.gloves) + fibertext = "Material from a pair of [M.gloves.name]." + if(prob(20*item_multiplier) && !(fibertext in suit_fibers)) + suit_fibers += "Material from a pair of [M.gloves.name]." + else if(M.gloves) + fibertext = "Material from a pair of [M.gloves.name]." + if(prob(20*item_multiplier) && !(fibertext in suit_fibers)) + suit_fibers += "Material from a pair of [M.gloves.name]." -/atom/proc/return_hiddenprints() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - . = D.hiddenprints -/atom/proc/return_blood_DNA() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - . = D.blood_DNA +/atom/proc/add_hiddenprint(mob/living/M) + if(!M || !M.key) + return -/atom/proc/blood_DNA_length() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - . = length(D.blood_DNA) + if(!fingerprintshidden) //Add the list if it does not exist + fingerprintshidden = list() -/atom/proc/return_fibers() - GET_COMPONENT(D, /datum/component/forensics) - if(D) - . = D.fibers + var/hasgloves = "" + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.gloves) + hasgloves = "(gloves)" + + var/current_time = TIME_STAMP("hh:mm:ss", FALSE) + if(!fingerprintshidden[M.key]) + fingerprintshidden[M.key] = "First: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]" + else + var/laststamppos = findtext(fingerprintshidden[M.key], " Last: ") + if(laststamppos) + fingerprintshidden[M.key] = copytext(fingerprintshidden[M.key], 1, laststamppos) + fingerprintshidden[M.key] += " Last: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]" + + fingerprintslast = M.ckey -/atom/proc/add_fingerprint_list(list/fingerprints) //ASSOC LIST FINGERPRINT = FINGERPRINT - if(length(fingerprints)) - . = AddComponent(/datum/component/forensics, fingerprints) //Set ignoregloves to add prints irrespective of the mob having gloves on. /atom/proc/add_fingerprint(mob/living/M, ignoregloves = FALSE) - var/datum/component/forensics/D = AddComponent(/datum/component/forensics) - . = D.add_fingerprint(M, ignoregloves) + if(!M || !M.key) + return -/atom/proc/add_fiber_list(list/fibertext) //ASSOC LIST FIBERTEXT = FIBERTEXT - if(length(fibertext)) - . = AddComponent(/datum/component/forensics, null, null, null, fibertext) + add_hiddenprint(M) -/atom/proc/add_fibers(mob/living/carbon/human/M) - var/old = 0 - if(M.gloves && istype(M.gloves, /obj/item/clothing)) - var/obj/item/clothing/gloves/G = M.gloves - old = length(G.return_blood_DNA()) - if(G.transfer_blood > 1) //bloodied gloves transfer blood to touched objects - if(add_blood_DNA(G.return_blood_DNA()) && length(G.return_blood_DNA()) > old) //only reduces the bloodiness of our gloves if the item wasn't already bloody - G.transfer_blood-- - else if(M.bloody_hands > 1) - old = length(M.return_blood_DNA()) - if(add_blood_DNA(M.return_blood_DNA()) && length(M.return_blood_DNA()) > old) - M.bloody_hands-- - var/datum/component/forensics/D = AddComponent(/datum/component/forensics) - . = D.add_fibers(M) + if(ishuman(M)) + var/mob/living/carbon/human/H = M -/atom/proc/add_hiddenprint_list(list/hiddenprints) //NOTE: THIS IS FOR ADMINISTRATION FINGERPRINTS, YOU MUST CUSTOM SET THIS TO INCLUDE CKEY/REAL NAMES! CHECK FORENSICS.DM - if(length(hiddenprints)) - . = AddComponent(/datum/component/forensics, null, hiddenprints) + add_fibers(H) -/atom/proc/add_hiddenprint(mob/living/M) - var/datum/component/forensics/D = AddComponent(/datum/component/forensics) - . = D.add_hiddenprint(M) + if(H.gloves) //Check if the gloves (if any) hide fingerprints + var/obj/item/clothing/gloves/G = H.gloves + if(G.transfer_prints) + ignoregloves = TRUE -/atom/proc/add_blood_DNA(list/dna) //ASSOC LIST DNA = BLOODTYPE - return FALSE + if(!ignoregloves) + H.gloves.add_fingerprint(H, TRUE) //ignoregloves = TRUE to avoid infinite loop. + return -/obj/add_blood_DNA(list/dna) - . = ..() - if(length(dna)) - . = AddComponent(/datum/component/forensics, null, null, dna) - -/obj/item/clothing/gloves/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) - . = ..() - transfer_blood = rand(2, 4) - -/turf/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) - var/obj/effect/decal/cleanable/blood/splatter/B = locate() in src - if(!B) - B = new /obj/effect/decal/cleanable/blood/splatter(src, diseases) - B.add_blood_DNA(blood_dna) //give blood info to the blood decal. - B.update_icon() - return TRUE //we bloodied the floor - -/mob/living/carbon/human/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) - if(wear_suit) - wear_suit.add_blood_DNA(blood_dna) - update_inv_wear_suit() - else if(w_uniform) - w_uniform.add_blood_DNA(blood_dna) - update_inv_w_uniform() - if(gloves) - var/obj/item/clothing/gloves/G = gloves - G.add_blood_DNA(blood_dna) - else if(length(blood_dna)) - AddComponent(/datum/component/forensics, null, null, blood_dna) - bloody_hands = rand(2, 4) - if(head) - head.add_blood_DNA(blood_dna) - update_inv_head() - else if(wear_mask) - wear_mask.add_blood_DNA(blood_dna) - update_inv_wear_mask() - if(wear_neck) - wear_neck.add_blood_DNA(blood_dna) - update_inv_neck() - update_inv_gloves() //handles bloody hands overlays and updating - return TRUE + LAZYINITLIST(fingerprints) //Add the list if it does not exist + var/full_print = md5(H.dna.uni_identity) + fingerprints[full_print] = full_print /atom/proc/transfer_fingerprints_to(atom/A) - A.add_fingerprint_list(return_fingerprints()) - A.add_hiddenprint_list(return_hiddenprints()) - A.fingerprintslast = fingerprintslast + // Make sure everything are lists. + LAZYINITLIST(A.fingerprints) + LAZYINITLIST(A.fingerprintshidden) + LAZYINITLIST(fingerprints) + LAZYINITLIST(fingerprintshidden) -//to add blood dna info to the object's blood_DNA list -/atom/proc/transfer_blood_dna(list/blood_dna) - var/list/blood_DNA - GET_COMPONENT(D, /datum/component/forensics) - if(D) - blood_DNA = D.blood_DNA - if(!blood_DNA) - blood_DNA = list() - var/old_length = blood_DNA.len - blood_DNA |= blood_dna - if(blood_DNA.len > old_length) - return TRUE//some new blood DNA was added - -/atom/proc/blood_DNA_to_color() - return - -/obj/effect/decal/cleanable/blood/blood_DNA_to_color() - var/list/colors = list()//first we make a list of all bloodtypes present - for(var/bloop in Blood_DNA) - if(colors[Blood_DNA[bloop]]) - colors[Blood_DNA[bloop]]++ - else - colors[Blood_DNA[bloop]] = 1 - - var/final_rgb = BLOOD_COLOR_HUMAN - - if(colors.len) - var/sum = 0 //this is all shitcode, but it works; trust me - final_rgb = bloodtype_to_color(colors[1]) - sum = colors[colors[1]] - if(colors.len > 1) - var/i = 2 - while(i <= colors.len) - var/tmp = colors[colors[i]] - final_rgb = BlendRGB(final_rgb, bloodtype_to_color(colors[i]), tmp/(tmp+sum)) - sum += tmp - i++ - - return final_rgb - -/obj/item/clothing/blood_DNA_to_color() - var/final_rgb = BLOOD_COLOR_HUMAN - if(last_bloodtype) - final_rgb = bloodtype_to_color(last_bloodtype) - return final_rgb + // Transfer + if(fingerprints) + A.fingerprints |= fingerprints.Copy() //detective + if(fingerprintshidden) + A.fingerprintshidden |= fingerprintshidden.Copy() //admin + A.fingerprintslast = fingerprintslast \ No newline at end of file diff --git a/code/modules/detectivework/evidence.dm b/code/modules/detectivework/evidence.dm index a3b17a4c1f..5b4a75a36c 100644 --- a/code/modules/detectivework/evidence.dm +++ b/code/modules/detectivework/evidence.dm @@ -16,7 +16,7 @@ /obj/item/evidencebag/attackby(obj/item/I, mob/user, params) if(evidencebagEquip(I, user)) - return 1 + return TRUE /obj/item/evidencebag/handle_atom_del(atom/A) cut_overlays() @@ -25,12 +25,12 @@ desc = initial(desc) /obj/item/evidencebag/proc/evidencebagEquip(obj/item/I, mob/user) - if(!istype(I) || I.anchored == 1) + if(!istype(I) || I.anchored == TRUE) return if(istype(I, /obj/item/evidencebag)) to_chat(user, "You find putting an evidence bag in another evidence bag to be slightly absurd.") - return 1 //now this is podracing + return TRUE //now this is podracing if(I.w_class > WEIGHT_CLASS_NORMAL) to_chat(user, "[I] won't fit in [src].") @@ -62,7 +62,7 @@ desc = "An evidence bag containing [I]. [I.desc]" I.forceMove(src) w_class = I.w_class - return 1 + return TRUE /obj/item/evidencebag/attack_self(mob/user) if(contents.len) diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm index 5940c3328d..c578d5b4d4 100644 --- a/code/modules/detectivework/scanner.dm +++ b/code/modules/detectivework/scanner.dm @@ -14,7 +14,7 @@ flags_1 = CONDUCT_1 item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT - var/scanning = 0 + var/scanning = FALSE var/list/log = list() var/range = 8 var/view_check = TRUE @@ -30,7 +30,7 @@ /obj/item/detective_scanner/attack_self(mob/user) if(log.len && !scanning) - scanning = 1 + scanning = TRUE to_chat(user, "Printing report, please wait...") addtimer(CALLBACK(src, .proc/PrintReport), 100) else @@ -56,7 +56,7 @@ // Clear the logs log = list() - scanning = 0 + scanning = FALSE /obj/item/detective_scanner/afterattack(atom/A, mob/user, params) . = ..() @@ -70,7 +70,7 @@ if((get_dist(A, user) > range) || (!(A in view(range, user)) && view_check) || (loc != user)) return - scanning = 1 + scanning = TRUE user.visible_message("\The [user] points the [src.name] at \the [A] and performs a forensic scan.") to_chat(user, "You scan \the [A]. The scanner is now analysing the results...") @@ -80,14 +80,20 @@ //Make our lists var/list/fingerprints = list() - var/list/blood = A.return_blood_DNA() - var/list/fibers = A.return_fibers() + var/list/blood = list() + var/list/fibers = list() var/list/reagents = list() var/target_name = A.name // Start gathering + if(A.blood_DNA && A.blood_DNA.len) + blood = A.blood_DNA.Copy() + + if(A.suit_fibers && A.suit_fibers.len) + fibers = A.suit_fibers.Copy() + if(ishuman(A)) var/mob/living/carbon/human/H = A @@ -96,7 +102,8 @@ else if(!ismob(A)) - fingerprints = A.return_fingerprints() + if(A.fingerprints && A.fingerprints.len) + fingerprints = A.fingerprints.Copy() // Only get reagents from non-mobs. if(A.reagents && A.reagents.reagent_list.len) @@ -115,40 +122,40 @@ // We gathered everything. Create a fork and slowly display the results to the holder of the scanner. - var/found_something = 0 + var/found_something = FALSE add_log("[STATION_TIME_TIMESTAMP("hh:mm:ss")][get_timestamp()] - [target_name]", 0) // Fingerprints if(length(fingerprints)) - sleep(30) + sleep(3 SECONDS) add_log("Prints:") for(var/finger in fingerprints) add_log("[finger]") - found_something = 1 + found_something = TRUE // Blood if (length(blood)) - sleep(30) + sleep(3 SECONDS) add_log("Blood:") - found_something = 1 + found_something = TRUE for(var/B in blood) add_log("Type: [blood[B]] DNA: [B]") //Fibers if(length(fibers)) - sleep(30) + sleep(3 SECONDS) add_log("Fibers:") for(var/fiber in fibers) add_log("[fiber]") - found_something = 1 + found_something = TRUE //Reagents if(length(reagents)) - sleep(30) + sleep(3 SECONDS) add_log("Reagents:") for(var/R in reagents) add_log("Reagent: [R] Volume: [reagents[R]]") - found_something = 1 + found_something = TRUE // Get a new user var/mob/holder = null @@ -164,10 +171,10 @@ to_chat(holder, "You finish scanning \the [target_name].") add_log("---------------------------------------------------------", 0) - scanning = 0 + scanning = FALSE return -/obj/item/detective_scanner/proc/add_log(msg, broadcast = 1) +/obj/item/detective_scanner/proc/add_log(msg, broadcast = TRUE) if(scanning) if(broadcast && ismob(loc)) var/mob/M = loc diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 732afdf1e5..333941791c 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -285,7 +285,8 @@ drop.transfer_mob_blood_dna(src) return else - temp_blood_DNA = drop.return_blood_DNA() //we transfer the dna from the drip to the splatter + LAZYINITLIST(temp_blood_DNA) + temp_blood_DNA |= drop.blood_DNA.Copy() //we transfer the dna from the drip to the splatter qdel(drop)//the drip is replaced by a bigger splatter else drop = new(T, get_static_viruses()) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 632281bb23..f4084c9561 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -56,11 +56,10 @@ if(!(I.item_flags & ABSTRACT)) msg += "[t_He] [t_is] holding [I.get_examine_string(user)] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n" - var/datum/component/forensics/FR = GetComponent(/datum/component/forensics) //gloves if(gloves && !(SLOT_GLOVES in obscured)) msg += "[t_He] [t_has] [gloves.get_examine_string(user)] on [t_his] hands.\n" - else if(FR && length(FR.blood_DNA)) + else if(length(blood_DNA)) var/hand_number = get_num_arms(FALSE) if(hand_number) msg += "[t_He] [t_has] [hand_number > 1 ? "" : "a"] blood-stained hand[hand_number > 1 ? "s" : ""]!\n" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index f6d06c2d07..98ef403751 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -32,7 +32,7 @@ if(CONFIG_GET(flag/disable_stambuffer)) togglesprint() - AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood))) + AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, /mob/living/carbon/human/clean_blood))) /mob/living/carbon/human/ComponentInitialize() @@ -689,9 +689,9 @@ if(..()) dropItemToGround(I) -/mob/living/carbon/human/proc/clean_blood(datum/source, strength) - if(strength < CLEAN_STRENGTH_BLOOD) - return +/mob/living/carbon/human/clean_blood(datum/source, strength) + . = ..() + // we've made our strength check already if(gloves) if(SEND_SIGNAL(gloves, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) update_inv_gloves() diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 8bbf2f4a47..f03b75cf11 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -65,9 +65,8 @@ FP.entered_dirs |= dir FP.bloodiness = S.bloody_shoes[S.blood_state] if(S.last_blood_DNA && S.last_bloodtype) - FP.shoe_printer += list(S.last_blood_DNA = S.last_bloodtype) + FP.blood_DNA += list(S.last_blood_DNA = S.last_bloodtype) //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood - FP.add_blood_DNA(S.return_blood_DNA()) FP.update_icon() update_inv_shoes() //End bloody footprints diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 9e598cff5f..8d125a72b0 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -474,7 +474,8 @@ if(isturf(next)) if(bloodiness) var/obj/effect/decal/cleanable/blood/tracks/B = new(loc) - B.add_blood_DNA(return_blood_DNA()) + if(blood_DNA && blood_DNA.len) + B.blood_DNA |= blood_DNA.Copy() var/newdir = get_dir(next, loc) if(newdir == dir) B.setDir(newdir) diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index 7a2dd8702d..b397271c5a 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -39,8 +39,9 @@ add_blood_DNA(list("Non-human DNA" = "A+")) /obj/effect/decal/cleanable/semen/replace_decal(obj/effect/decal/cleanable/semen/S) - S.add_blood_DNA(return_blood_DNA()) - return ..() + if(S.blood_DNA) + blood_DNA |= S.blood_DNA.Copy() + ..() /datum/reagent/consumable/femcum name = "Female Ejaculate" @@ -72,8 +73,9 @@ add_blood_DNA(list("Non-human DNA" = "A+")) /obj/effect/decal/cleanable/femcum/replace_decal(obj/effect/decal/cleanable/femcum/F) - F.add_blood_DNA(return_blood_DNA()) - return ..() + if(F.blood_DNA) + blood_DNA |= F.blood_DNA.Copy() + ..() /datum/reagent/consumable/femcum/reaction_turf(turf/T, reac_volume) if(!istype(T)) diff --git a/tgstation.dme b/tgstation.dme index 9a03e5838d..af166504da 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -46,7 +46,6 @@ #include "code\__DEFINES\flags.dm" #include "code\__DEFINES\food.dm" #include "code\__DEFINES\footsteps.dm" -#include "code\__DEFINES\forensics.dm" #include "code\__DEFINES\hud.dm" #include "code\__DEFINES\integrated_electronics.dm" #include "code\__DEFINES\interaction_flags.dm" @@ -352,7 +351,6 @@ #include "code\datums\components\empprotection.dm" #include "code\datums\components\footstep.dm" #include "code\datums\components\forced_gravity.dm" -#include "code\datums\components\forensics.dm" #include "code\datums\components\infective.dm" #include "code\datums\components\jousting.dm" #include "code\datums\components\knockoff.dm" From 725a8046e15d85b96c8ea7c5041a56847f85c051 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sat, 17 Aug 2019 04:50:24 -0500 Subject: [PATCH 085/469] just need items to actually have their overlays, ree --- code/datums/components/decals/blood.dm | 3 +- code/game/atoms.dm | 15 ++++++--- code/game/objects/effects/decals/cleanable.dm | 5 +-- .../effects/decals/cleanable/humans.dm | 31 +------------------ code/game/objects/items.dm | 2 +- code/modules/clothing/clothing.dm | 7 +++-- code/modules/clothing/shoes/_shoes.dm | 1 - tgstation.dme | 1 - 8 files changed, 20 insertions(+), 45 deletions(-) diff --git a/code/datums/components/decals/blood.dm b/code/datums/components/decals/blood.dm index 18e362db5d..c8be6251b5 100644 --- a/code/datums/components/decals/blood.dm +++ b/code/datums/components/decals/blood.dm @@ -9,6 +9,5 @@ /datum/component/decal/blood/proc/get_examine_name(datum/source, mob/user, list/override) var/atom/A = parent - override[EXAMINE_POSITION_ARTICLE] = A.gender == PLURAL? "some" : "a" - override[EXAMINE_POSITION_BEFORE] = " blood-stained " + return COMPONENT_EXNAME_CHANGED diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 6c068e7d5e..1b47f34351 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -255,6 +255,8 @@ if(article) . = "[article] [src]" override[EXAMINE_POSITION_ARTICLE] = article + if(blood_DNA) + override[EXAMINE_POSITION_BEFORE] = " blood-stained " if(SEND_SIGNAL(src, COMSIG_ATOM_GET_EXAMINE_NAME, user, override) & COMPONENT_EXNAME_CHANGED) . = override.Join("") @@ -373,6 +375,7 @@ //to add blood from a mob onto something, and transfer their dna info /atom/proc/add_mob_blood(mob/living/M) + LAZYINITLIST(blood_DNA) var/list/blood_dna = M.get_blood_dna_list() if(!blood_dna) return FALSE @@ -383,16 +386,17 @@ return FALSE /obj/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) + LAZYINITLIST(blood_DNA) return transfer_blood_dna(blood_dna) /obj/item/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) - . = ..() - if(!.) - return + if(!..()) + return FALSE add_blood_overlay() + return TRUE //we applied blood to the item /obj/item/proc/add_blood_overlay() - if(!length(blood_DNA)) + if(!blood_DNA.len) return if(initial(icon) && initial(icon_state)) blood_splatter_icon = icon(initial(icon), initial(icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object @@ -400,7 +404,7 @@ blood_splatter_icon.Blend(icon('icons/effects/blood.dmi', "itemblood"), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant blood_overlay = image(blood_splatter_icon) - blood_overlay.color = blood_DNA_to_color() + blood_overlay.color = BLOOD_COLOR_SYNTHETIC add_overlay(blood_overlay) /obj/item/clothing/gloves/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) @@ -482,6 +486,7 @@ if(.) if(blood_splatter_icon) cut_overlay(blood_splatter_icon) + cut_overlay(blood_overlay) /atom/proc/wash_cream() return TRUE diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index c03e8a2473..1d57b3437e 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -8,6 +8,7 @@ /obj/effect/decal/cleanable/Initialize(mapload, list/datum/disease/diseases) . = ..() + LAZYINITLIST(blood_DNA) //Kinda needed if (random_icon_states && (icon_state == initial(icon_state)) && length(random_icon_states) > 0) icon_state = pick(random_icon_states) create_reagents(300) @@ -27,7 +28,7 @@ /obj/effect/decal/cleanable/proc/replace_decal(obj/effect/decal/cleanable/C) // Returns true if we should give up in favor of the pre-existing decal if(mergeable_decal) - return TRUE + qdel(C) /obj/effect/decal/cleanable/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/reagent_containers/glass) || istype(W, /obj/item/reagent_containers/food/drinks)) @@ -81,7 +82,7 @@ add_blood = bloodiness bloodiness -= add_blood S.bloody_shoes[blood_state] = min(MAX_SHOE_BLOODINESS,S.bloody_shoes[blood_state]+add_blood) - if(blood_DNA && blood_DNA.len) + if(length(blood_DNA)) S.add_blood_DNA(blood_DNA) S.blood_state = blood_state update_icon() diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index c0ae223751..c9d2c8c59a 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -9,7 +9,7 @@ color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere. /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) - if (C.blood_DNA) + if(length(C.blood_DNA)) blood_DNA |= C.blood_DNA.Copy() if (bloodiness) if (C.bloodiness < MAX_SHOE_BLOODINESS) @@ -52,7 +52,6 @@ desc = "Your instincts say you shouldn't be following these." random_icon_states = null var/list/existing_dirs = list() - var/list/Blood_DNA = list() /obj/effect/decal/cleanable/trail_holder/update_icon() color = blood_DNA_to_color() @@ -83,7 +82,6 @@ var/exited_dirs = 0 blood_state = BLOOD_STATE_BLOOD //the icon state to load images from var/list/shoe_types = list() - var/list/shoe_printer = list() /obj/effect/decal/cleanable/blood/footprints/Crossed(atom/movable/O) if(ishuman(O)) @@ -114,10 +112,6 @@ /obj/effect/decal/cleanable/blood/footprints/update_icon() ..() cut_overlays() - - if(shoe_printer) - color = shoeblood_DNA_to_color(shoe_printer) - for(var/Ddir in GLOB.cardinals) if(entered_dirs & Ddir) var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"] @@ -155,29 +149,6 @@ return TRUE return FALSE -/obj/effect/decal/cleanable/blood/footprints/proc/shoeblood_DNA_to_color(list/blood_dna) //handles RGB colorings of bloody shoes - var/list/colors = list()//first we make a list of all bloodtypes present - for(var/bloop in shoe_printer) - if(colors[shoe_printer[bloop]]) - colors[shoe_printer[bloop]]++ - else - colors[shoe_printer[bloop]] = 1 - - var/final_rgb = BLOOD_COLOR_HUMAN - - if(colors.len) - var/sum = 0 //this is all shitcode, but it works; trust me - final_rgb = bloodtype_to_color(colors[1]) - sum = colors[colors[1]] - if(colors.len > 1) - var/i = 2 - while(i <= colors.len) - var/tmp = colors[colors[i]] - final_rgb = BlendRGB(final_rgb, bloodtype_to_color(colors[i]), tmp/(tmp+sum)) - sum += tmp - i++ - - return final_rgb /* Eventually TODO: make snowflake trails like baycode's /obj/effect/decal/cleanable/blood/footprints/tracks/shoe name = "footprints" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index f4c4756ef8..97c770c6d1 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -112,7 +112,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) //Blood overlay things var/blood_color - var/image/blood_overlay = null //this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite + var/image/blood_overlay //this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite /obj/item/Initialize() diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 9cdbdcf03f..84f2b9824d 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -345,6 +345,7 @@ BLIND // can't see anything ..() /obj/item/clothing/transfer_blood_dna(list/blood_dna, list/datum/disease/diseases) - if(length(blood_DNA)) - last_bloodtype = blood_DNA[blood_DNA[blood_DNA.len]]//trust me this works - last_blood_DNA = blood_DNA[blood_DNA.len] + ..() + if(length(blood_dna)) + last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works + last_blood_DNA = blood_dna[blood_dna.len] diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index df7415eace..8c99401b4d 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -95,7 +95,6 @@ /obj/item/clothing/shoes/clean_blood(datum/source, strength) . = ..() - bloody_shoes = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) blood_state = BLOOD_STATE_NOT_BLOODY if(ismob(loc)) diff --git a/tgstation.dme b/tgstation.dme index af166504da..a7031883dc 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -378,7 +378,6 @@ #include "code\datums\components\uplink.dm" #include "code\datums\components\wearertargeting.dm" #include "code\datums\components\wet_floor.dm" -#include "code\datums\components\decals\blood.dm" #include "code\datums\components\storage\storage.dm" #include "code\datums\components\storage\concrete\_concrete.dm" #include "code\datums\components\storage\concrete\bag_of_holding.dm" From 57461267941543fdaa6950a3474c00f0c41baf0d Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sat, 17 Aug 2019 05:43:24 -0500 Subject: [PATCH 086/469] since it conflicted there, let's just fix it here --- code/modules/mob/living/carbon/human/human.dm | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 98ef403751..f556424cf0 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1066,4 +1066,25 @@ race = /datum/species/zombie/infectious /mob/living/carbon/human/species/zombie/krokodil_addict - race = /datum/species/krokodil_addict \ No newline at end of file + race = /datum/species/krokodil_addict + +/mob/living/carbon/human/species/mammal + race = /datum/species/mammal + +/mob/living/carbon/human/species/avian + race = /datum/species/avian + +/mob/living/carbon/human/species/aquatic + race = /datum/species/aquatic + +/mob/living/carbon/human/species/insect + race = /datum/species/insect + +/mob/living/carbon/human/species/xeno + race = /datum/species/xeno + +/mob/living/carbon/human/species/ipc + race = /datum/species/ipc + +/mob/living/carbon/human/species/roundstartslime + race = /datum/species/jelly/roundstartslime \ No newline at end of file From 569e33fdbcfcad19415edce4540bd07404fb95f3 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sat, 17 Aug 2019 05:55:47 -0500 Subject: [PATCH 087/469] Update human.dm --- modular_citadel/code/modules/mob/living/carbon/human/human.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human.dm b/modular_citadel/code/modules/mob/living/carbon/human/human.dm index 842061bbae..e5d386b56b 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/human.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/human.dm @@ -1,7 +1,3 @@ -/mob/living/carbon/human/resist() - . = ..() - if(wear_suit && wear_suit.breakouttime)//added in human cuff breakout proc - /mob/living/proc/resist_embedded() return From 2eac1b6ca2e6ce889c2b7a2512851c091082b4b2 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sat, 17 Aug 2019 08:04:18 -0500 Subject: [PATCH 088/469] Everything's working again, for now. --- code/game/atoms.dm | 43 ++++++++---------- .../objects/effects/decals/cleanable/gibs.dm | 10 +--- icons/effects/blood.dmi | Bin 96833 -> 97920 bytes 3 files changed, 19 insertions(+), 34 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 1b47f34351..7ca6e3947a 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -252,11 +252,13 @@ /atom/proc/get_examine_name(mob/user) . = "\a [src]" var/list/override = list(gender == PLURAL ? "some" : "a", " ", "[name]") - if(article) + if(length(blood_DNA) && article) + . = "[article] [src]" + override[EXAMINE_POSITION_ARTICLE] = " blood-stained [article]" + else if(article) . = "[article] [src]" override[EXAMINE_POSITION_ARTICLE] = article - if(blood_DNA) - override[EXAMINE_POSITION_BEFORE] = " blood-stained " + if(SEND_SIGNAL(src, COMSIG_ATOM_GET_EXAMINE_NAME, user, override) & COMPONENT_EXNAME_CHANGED) . = override.Join("") @@ -366,16 +368,13 @@ //to add blood dna info to the object's blood_DNA list /atom/proc/transfer_blood_dna(list/blood_dna, list/datum/disease/diseases) LAZYINITLIST(blood_DNA) - var/old_length = length(blood_DNA) + var/old_length = blood_DNA.len blood_DNA |= blood_dna - if(length(blood_DNA) == old_length) - return FALSE - return TRUE - + if(blood_DNA.len > old_length) + return TRUE //to add blood from a mob onto something, and transfer their dna info /atom/proc/add_mob_blood(mob/living/M) - LAZYINITLIST(blood_DNA) var/list/blood_dna = M.get_blood_dna_list() if(!blood_dna) return FALSE @@ -386,17 +385,16 @@ return FALSE /obj/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) - LAZYINITLIST(blood_DNA) return transfer_blood_dna(blood_dna) /obj/item/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) - if(!..()) - return FALSE + . = ..() add_blood_overlay() - return TRUE //we applied blood to the item /obj/item/proc/add_blood_overlay() - if(!blood_DNA.len) + cut_overlays() + if(!length(blood_DNA)) + update_icon() // Don't have blood, let's just refresh the item's overlays return if(initial(icon) && initial(icon_state)) blood_splatter_icon = icon(initial(icon), initial(icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object @@ -404,7 +402,8 @@ blood_splatter_icon.Blend(icon('icons/effects/blood.dmi', "itemblood"), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant blood_overlay = image(blood_splatter_icon) - blood_overlay.color = BLOOD_COLOR_SYNTHETIC + blood_overlay.color = blood_DNA_to_color() + update_icon() add_overlay(blood_overlay) /obj/item/clothing/gloves/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) @@ -471,22 +470,16 @@ if(strength < CLEAN_STRENGTH_BLOOD) return if(strength >= CLEAN_STRENGTH_FINGERPRINTS) - if(islist(fingerprints)) - fingerprints = null + fingerprints = null if(strength >= CLEAN_STRENGTH_BLOOD) - if(islist(blood_DNA)) - blood_DNA = null + blood_DNA = null if(strength >= CLEAN_STRENGTH_FIBERS) - if(islist(suit_fibers)) - suit_fibers = null + suit_fibers = null return TRUE /obj/item/clean_blood(datum/source, strength) . = ..() - if(.) - if(blood_splatter_icon) - cut_overlay(blood_splatter_icon) - cut_overlay(blood_overlay) + add_blood_overlay() //this will purge the overlay if there is one while regenerating the icons of the item as well. /atom/proc/wash_cream() return TRUE diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 627723b110..c87f197ce7 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -36,14 +36,7 @@ /obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L) if(istype(L) && has_gravity(loc)) - if(ishuman(L)) - var/mob/living/carbon/human/H = L - if(H.mind.assigned_role == "Detective") //Gumshoe perks yo - playsound(loc, 'sound/effects/gib_step.ogg', 10, 1) - else - playsound(loc, 'sound/effects/gib_step.ogg', !HAS_TRAIT(H,TRAIT_LIGHT_STEP) ? 20 : 50, 1) - else - playsound(loc, 'sound/effects/gib_step.ogg', !HAS_TRAIT(L,TRAIT_LIGHT_STEP) ? 20 : 50, 1) + playsound(loc, 'sound/effects/gib_step.ogg', !HAS_TRAIT(L,TRAIT_LIGHT_STEP) ? 20 : 50, 1) . = ..() /obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions) @@ -58,7 +51,6 @@ diseases = infective.diseases var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) splat.transfer_blood_dna(blood_DNA) - if(!step_to(src, get_step(src, direction), 0)) break diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index ff7012daa93f36606319e0240b0ead00ecf1825a..b23abd9b2a415695567627028156d75d6c91f2e5 100644 GIT binary patch delta 50984 zcmY)V1yoeu_Xdm)B`uvQB_$vrA}Ao8($do14FVFE7Nk3*LAtwBTDqh|Y3c6w%;)?6 z{onPjHM6+P%suzqbM}7rv!A_h$0>^U9ZDoE)b~YM-AUBg(a^!%&dJ=?1_pCYDVZIz znSYCmdRTQwDC}-c9Mx7yqD%bZ8_fCwFEmq1$uE-JC&y}Y?}Dn%ye0UG@*f4#tz>xM zQwti%>i+t6ecS!ya?jk$=|$D)P_4$Dy+C^E@A%SLuEB1P>38SaN%wsL-z;l~zS>{> zg9cike8o9QT95s1U6nlYI5=x?sMZ{c^ZKix10(Gh-$8i$H=zYfnWtT6Z6QEyekq(V zEB?ztbST;QM2yhsW)(tmNC;DrZUjw*|DDft!=POG!?Y+cnk9Ob0jas*jUl(Fz6S__^4&E98)Ftfg*=< ze&c@PE{{8qbww<`T&u$Ydr(#-Ui4;DH@q+1wn_otzOSj4sm2bWOgn+=XjHWf@4KtI zpapsXQO>l=`mAW}*_-!IK2$VTrODb+=!<9gSSV%&CdgpOa7T&M+uunS5;~QlDyLocac4k+VN;L?LEsnM7&(cvSPjR+*=A zYMrif>c@uA55E&8`4@#AQL*b`cy$M~XWmtnB+8feW)DAXXM&?Gb0e%scuJF?)Q`%v z^l!^Xlgkq@nm+!n>9kRBN24idiBWj?wNq!E^u1@%?5OU@kjz7Kr?t^;zCZm38 zS~l|8mmWpm#*J)I)~>`r?YmiBYv}Gs*ZMtDS#6p>_|&Y}EX6F;%tLJ0EC{?~!8=22 z*p)T2Xd_xapquqjT8G-wH)t=vPECMC`DzM>j zex z^G=}PyVmbb5ks2?5kr6K@~#BluFh0FTPyaf`hzrD51p^7sF*H2xIDM@#d&GrTv7Y3qQ=)jeQ}`n#Dn-b`z}pGEju= zb|cN!;(xX~^Ta6g^tk}@-_z$&LF#oj&u)LE!{=Iw@`}X_tE>Fq&8JVF{Nw74I|E*3 zuu{Le?0X)OxNF7}3$A3wt08!Y3ptQGv|1z?ZMB@S@PjLkBWZ4a?6SP;zZqOpN`T}_ zzl~U>FomI*MRRg;CfcGloQ_Ky`_0Q<3gq^bAL8f7}LF9Y)q4g@qWqGi4)8cms%&bYLo36%|ol10+r6nK^gfD}n7` zx&+1P4*bf2R41mSfn>~)dYSUv&!rpo4eRy09#L!3P}Z!r@Mje@^uiI^CX_(0(*i4s(|B@@mceb%ib||D^B|OA&@q`7PQwwws}gJ=8sABc-^o z@R)D2G9{PkLzPA(#XARN*kS5{2gB+F>+!|5A!F0aw^+wz4}ifL23oec9i_UN*=Ja$ufbI8MkGt-uw28$1>? z2GNo~DH{8&{=SlR+z3PFlbW_dYCS*V*l$wZ1RJ=URcyq!{kpUa-9$L^zCF)emD(a; zNw0j!TRyQHm=G*zO^cHJNtoea*zc8r)y2L)8r)?RilMp(v0eq*{4N)YL_=B2;v_nf z%E#L~wq=%77+8yLZNf{j2_}`zQdI7RCMIn|6cvF3&^-Rn zZPFi^nL>S4hxu*JQ}s&fP-p$#ry|x5H~X zTHpY#Zf{I*5eEvWW$I8A(-M=Gw9BTuk~Qzgj~{lp-aIRkN(az#+ssM#d+ZP(xUBd&jjD=wtcLHx_^tafAg2c14z*^;>gz0>qHLm|xIe0iG zK^Ytv_~;1!H-i7V@0@3a+7-vB6W3Lp6;>!vq}2GAq)5Z|x`h9@@3|dDe3r}H;90Ts zL;;J=z%V<6^;|^twE%^yW9A;Uy(=)_U*EY$90c5Mz~pur1D#rv3rFb`rMq@3w`jMB zCT}hdP+@y^o`tO$WSqZBo9L046P_9hi)Jexh3MWQCTM?7+JnlPk3YcLe+CoOtQ%tH zOLN+`vbXInO;9M4Equ~YGJm`NAWjpd*!gjZRRCJu%{o0fIjK2Gf z*KMkIr%8*CXOSwAt%#r(d)a(Ez)V04``zTicD}!e$t=yNDX2{)(Sj5lwZ$XwiyiWf zGJ0&raRGx-!K6fmlri&nXwyFswm!ASp;~=Ab*H>qf+33^scg$rRPreEpTLLTJI6K2 zU#GU;0z7a6u!vc?F}9Gvq;!&*O*M6~gZ7pc`%_?`Xlht?USYIsZzONt8+```-jwDB81ri#+R; zTSlZGW!FB}ZyxfYXjXD^a=R%NwWN7xk+pG%z-ur|(U8nJC9q$NymWx$Rynaetps4( zRylrDguwmV=~8V>DhiL+ZpTIvluk*2r*zG@34W)diK15~`N<%ihh|OnUZk4`(~v_| zLi;d!f-i%Er)@$j5sLGtIy2@lLbo^USFHe~Xmfgb&G!_5C2M}DT zDeiTb33RWfon3E_dJ$kae23m-dXB)Gs`f_3hMH>pa}kH6W*t6Qn51jg#&l5M;eUENzziP>A z@j$iov723HUym+hft>swa=z|#eb5+fA!gw#$O^>@Hh!FjDJ zGn0C??k@>>(BXH|u8UzZNRfr^*9(nfJhH0vJkEU0^pEic>3$s@O? zlt1&P_LL{*d3+rzN(09!;2#XX4hpzBX}5A3czo&^bNgINoK;CWY=|T|Z_VQaj-ihX zuBwBx%gYe}!-Vb|c3yE{b>*uElT-#Gwr@}54V{NDqjLZ3 z&O6;dcKV~rxnpK-j#mv^@{pQJKvVc~d~P%t_gFcEUgMql5w8G#>ffq&_G_YDA3Q$# z^RnY3v{}z{SB(A7X%I2`MN;fvA5hA3ZAp|` zYDkXf99O6FU{8XJj?K?o-m89HeUZxIi5Z7rwzwv~7sF)qBS*f7+Ev5VX1*5t;WFX@ z4F-n^)sj!fHp{ivPspD<33J|^rpu9Cc0*fwl=n!)#>~t$C07{DAW;n)pPaq}G12ON zM_G=^=1#VN0v76^1leg)yu*2iy(oHa!&1ESnZnnUvWmlu7_aNd))q=mYwlQ8K0-$Sp=st&nqiACdwQa z8=W(@lK?IR0$k%1VkuHQJpGQ6k4?Mf9fjFkQ8AXn1Tj9N5l0vQ;L04yBapAww`_DN zH7L`&7t>VA4}bx=g=1(h(q{sSW{k)%#9;aush_wYLYx60Upp#b^K3@fR&JKiq-|6U zO>q?S5Ad5#Rt^El@i)C2f!I%e&ed2_H;KbwsRY-lL!GZD#$?Nk-mFJICeGjjrWpcQ z1tfgHIP<7CXE51hof}XNLUD~CDpN$X=YV36QY~$ye7U$t{Bmy!qa8+K3gKt-?UlDo zAqyomICXD~+O_Qp#Lg-&$At+_n-=MRc4JHvGdF2RNA6xWIp=}`By(&5-eTpYZ zdFfZq;BtticVqb1MY2FCBHpNN1MzS{D2P;+X5v=huE!+$3oMvMIUvBqqziEpb=(}q zSh1TOD~7*vv5j4=JozGKM0TSSG4{VqEfAe3Eim~14vFE^54>dZ%VEYKE`gVD01D%O zpJ5R&u?UjUBR_unwtdVC>-D4HZUf(Sv@{AuWo4spO|`YP{>%E=pLiBAb}6i8DgxF2sDM6l zw^+B00)_=+Atjw*(W)O+D9Ly@#Cf1jD>Q-EBEtin_#p!9HZ$fd2*QeZB#2pBK76U{g zDzHAHwD|UXc!2v%dCBYx;~j!*)#P7=H(WZTBipswyxyx63ocwsEsue8d({&Li;^@_<_QZ6>pA2a`~BN& zUt%|@0tveY0*k`Jp9)1Ca0lx5yuDa-Nxz(LyPNmdUv|P7D${OK<-5Q9|RNk zFK2YEe-)c~Yh-DO>pX(Ui3dg(oR(7x`p`MKph%onQ&R);e&@JBTWo7(#c8xW=7)+? ziT2EIRH2!Nc7*o0sFfc9MnXjRSL<0#b#+i-A=62{+*4k96X;h`jAL&b{1h)V#do%4O3ZFPDEa;@#KuPr zUUy&oij%OhvERBL>iKRVizAyG8a~(HCE#akIsFJ@5nhZ85#DR}K@#318TfgnqMLqs zc5{Fvi8VbyCkgpiUK)|Ur}cmv7Vkl`VUz9eu4T)aQX-gLH<4Q6)y*CfQxi#_SEAtB zVUuQ&DTe{4jQ$9JMwdc0Z{%BK`DJ4S^q&Ey+S<=(q9lDUbL6}6zk!>lS63i=-@r7g z?lI@6DCBe0;5bZuloTW1-9@Zmf8260IzAp9)7!@m6$p01VXSWPV9{k6`v>38=@QNE zKM?{pkyA0ErV49H_p%dgV_!6sd4dOxSTavxD?KyQHk6CCio5=}&1gO#cR>@reoT#A zSX4A*ecIC4_(@q!EhJkaBK(@ty6VQZF(M)1ltm)^>8fLy#?sCn(X(gI3=*po82Z+e zOw*wLE5pA52}bd$ye=457lsk<>77DsmaTL@?=QUgE4DPfxLERDb#BC>X@ZM;lPdoK zjrz9ATRfCrC`8vhFo5q=PDp$dS!6Vl2X0)CJBn^b*_$k|XW}r+#kr232 z(N5V>d&S%u~XX>kxc#`^ao8C1x`!ZMVI9_E}>stnkPS3;TtgT z@BMK?aOV4cJ1!+~a;8+98E!zssl3{IIIifz7QR8E$)k*g*!U?NQIZ6(pD1QI=wV?~ zTb78)*MT!3JE1mCQ<5$iTo8@XVBWC+%*1Yt5i^g)YW+ou>!;kY$Ou}Le>qKjUY+;p z=L&k^W2igehYO+pwpwgdVbN|RWNW+S&~e{;GZS^( z=y3I}v5r9@L+G{_3QfQJXIeg|7V_Qx+JX~fjB#!7&~|ZLlL|uKHXt1xpAO%7UfY?r`9|* z|2?L+2b0ZTd*l&+ppN!t6S0yZ0j zxEZ2TlUmz^eeDCIg5r{rH=gf}G4rfm0vHt4)SS;h<1nH_aW(kD{OHjmWZAjLEov?MZXzmXGh8LH zvE5gGwTT~7_ZAwIEc@f?Y-cM`fVNb=FjBa$g{g47nM3Ug%e~B5brGfrlyKhQt_8M6 zU~O%kUtIjOCQS4P3%jvdOSAT3f`2hq$jDgarB=ONX2*#M$FJYCAjCE|^ZD^lXj9Ph zDO2w_m&!sac8E(13NFd8<oBlGKj+-R-=UpEp^ zU@kJP4H`A<4eyt0ne#M?GXHuD6?ty{WXLdK4nhnbQPXilfzH$*2i*6~-;};ZCaA?I$iDYG91T|Fj+bTL z_?2X+knDJQ<{l1ohs@S*Q6(As=#{0HeC$Gk!lu`!+x6SI-wy$sSOtL|9+u^8)q~yY z&Lkfa9(LCsl0r!=^KDw593`L=Lm$i3r=*!mv1}x@y-muECti*d$~0 z9Q`kaG9_-;zbg!VziyKWP?Mm%G3y)AcYTwrlfXcLv8Lwf2@m0L==RfXd*Bb$RvCX) z6bRD;<{)HD=G8?ou0SmA$CI+(jmnwy@G4YI-J3(^@mk(nqs%0Y+rlz=EoB8g_}_mJ zuM=7b2}^sm<4AXCB!!JUASH6G7Zi-POqgvtoK=#>Jj`hrA?QeeW5;A)Qa{!3FyRN` z0~9R=-rE05MEm6bks{VK((P42%m827Ee(v`3|#Dgd_0qbbrD7He}ue;7|`(lsClA- zKEeQ;uJap^K7wv)Uxgz5@2egOe_V6)CH>VwBZB|mC#K`nk0$6m$mq%5Vx;{a-LLiL zC`}ZA_yr2!qrkjpt4uK$8M^A}*b(L?Cb~$T1LFUhKJx2A_L!O61+>1tZqOf1$H>Y` z{MzJK`^M1sfZKr`cKy}wEw02+2EeW?kP4jp17aGKl|^$d)=&NEQ(E_Q55uK6&^E@{ z<8Rrr#~#Dlg9#X5Fl}w^t(_fVdwcs8PvrGi?&nq=YpLIVJ}QvRh~G# zK|*C}$BD!T%vtJnmFWm^mB~;K-FzKVP{`>0y%)&747BNsc{`jgpgW3hltfCe$;ix%`GbuG+)=fE z6eW5~$M;8Le3ryEQGTD40|6Jt5+Zr5fQZ}r`t+p7~X>A@=W`Fw=*07|}r6{m&*RpJR4XWtG(tIMeTv)!orz^N%+Alx;W_UP zzs&XTxl4aWCUyUel9-dt5t3co8_WEz6PbN#%_-wSZglxd@9~S%crI?Z?SVCU?ebqsN4PurxOW_GfLfKxyM3JUm=*NAF}~$N)stL|zwGVpgr7XS|<5DvBy5 zCYCwFt3j5)qT%b~gD`mK%S56fXj{Mf$ZEOu8Av6A_IVUKlbOxJQ+Z4w5}S~4v&0p-ve4?ud%t0O|LFbu_m@i- zt*BHGt6W#DH)4CL%Tm&zJ4h*E;-&o=$J!MJDDf{fO*Z7$UXzDC;z4e6J281}UCA@y zEZ^ogz?)D(lwmZa{B>H&bvWhSgx24OaSAHGeor{$Uvl3hVhxCkprG=>HD*4eEJ!`jdP z^v+@=(}weB6cWXe6Vu2k=eo%2pKp%muh@vaql-QnpQu81*s4hA&$P z%;J-CZGZcjXRgo4k>Ii7?FyMX!(HOrH;kj}-Lmg%lRM8=Kd+S+7h_em@)H5e`pwUG zhmGf1F2GOtZUJvlwE=$T>QyGP7N`ZQySfiN=X>*CH#SWE&DV`woT?bv%Nub2+OmDN z&W2ev4Cb!4Fz<7G?65qT^JK@y)>cAZ9tXJM*y5t~?crAeET~0xuEG!%zRr8|b#P5# zYkM1=r3{=hwzL!upz`1E3M2;kG-Q}ltk{rcI?F@BM=dQD#+4A{JUMmBw{}$bKmHh# zN+*QBTdXqb$FDHzkB$wWSM(lG9R&g{hF^AL`$#H<^#d4$IYu=LEXB-6@k}&z83YPZ7x7*dXJGlW_tM~EorZp47XQz7-xD&$G99TYd()iO+k{K_|27sHO zQhMlJ?;sr2b=Uj&uZ5DmW_Q`wf^RM-m-UWe_t^9HeE0Z>G^I@c`cF+7KNm5CZeuXW%xJ~jrY46PPS z)agw;q2YoKD6DO_4u$|R)&RG91OsjjNdWbVnm8osX5qO%LKkj5Nqt@O(=}t#>iabB zfw;%5M`5->WUoy!%F0HxE`av8+H$e{a$MI&tbMZafT|nKH0KIBiKP%~IL;&Ke2}{7U%&H>Y~IY}X}5Kgivl4dUS$kj0}% zy#wKyrb9QB#<{FvgZ$rY6@$$SzZ1(R%m5D{NWkP*qCUo4xEbNPvGLo_|41L%ejDj} zTjWL@4{zw{*Q@o>ImV*kY4g$nDi6eU zJ}Fqhp1V45J-L*(`q!Et5Aie>3@g<0jUC)&-F#T~;oI`cboeO(j8^bYn7Br6!M^v| z+RgGq>uNQtnGJ|lN6Qa)%aNvDRJn4g-+X+0kTa#$ppyl_Jd4U&lT%=Eo;=2wa2XQN z^>+g_h5JtkIfo+2358Un%X6teFzCx7QugGWdx?}H6@0R}`_L=@m!sc+WqvqH&4_w# zqK*<9N5KEA?(WSu3}S?!5fzZ4xusHW+Jcon4u2e*;F5@_Oq|Xjmm)}u|EeUTySv+9 z0E&IF!A=JQ#98eCi=hHc*(K3-idvvry4F_Wq*wzu)9o#?B^EmOv9zohR{q4Vx3at< zF@6l+(^J@j2SLbty&_iYJAhc7m4|vE47(t&ztCCHK|@1$eqWCJkYJ-|ye^uSSGUHpsgBTp z&cDbiC@?oN!KouwSX6M=)cj6`_o3_P_}nQbc&)?M)l~~8n8@u5L{;{HDjw+aT6W>= z{2U!$tzFWeC-S?nGR23y16uy6b_O0(uOSI0`MT4cq8YvZ==U&hjV>BH;B16hS65fL z#*rJg%6Vcu_G`#M!$SX-HIs>H(+F@APHH*1xYlwzgcjV{6snuhK%{jZdNY$zRD|iW zVE@%TRaP7e+7iVU;W3y6rnEPr{e!`qeAd3^Dr~lRIhgD9c3yY--E6vke|ZQ_ z4IV9R!OKcZUL*YZQnjN=CHc&Pf)~`*&*~N&AnDF`o_A+6ubg+3Qyhoi{cdsRZhd7- z0b9A+YeT|yk+?dqYYSVx+jn{EyhFIv>Uus~PrU-SSpXhKfM%{p>t5rhxvm9Yc11q{ z)${q;`S}pIhE_h$pn+HTL`V9Eh^%VH*l3l-`~Fik`Hkbq1{OXJStq3yq*XLQsPd4K z-=k0K;vQ9mOpVPe``YJ|#``kzU+w6h&?W4s>39I`%c?Z=>QNCEs0eg4arFQWhnKN%Yz z!OL+Wl(#FW@mJA|d)wO;M9_<4`xs~LRFMoD_IOsJt*t&ZOubP=Lee9p__8zh;~|wa zuWR$8JzHp=9ZTfDcz4ix!;%*lJ&(=ih-bUhJbUXkqwPYMqol3=y;Df#*T^%DHS z_P9Su?|o?4*T0>Lu<34lxM}-?bH9R9ZZ*rncd_6I)5Cxix?rX0yf^~a)3DHi6MW>Y zlM#Uk5cAeRYf&etUk$yeg01WnmGz8{MqbUwp-iF|ant>v5uTFcD|V47@>K~#965c= zKckJab@}D`-1Jw2q(ssdwle3fjL3Myk7z-&9K}a?n+wc4j#*9k9JK|o0c6}Z-EAG^01Id5v;6Zsph(|d z&$RUjco;InR=!7QM}S)t$dnNdLPp?$s%||eAG#SB=M!zi(X>5|x^q#Sb|wqpeM9lA z+88j`y_y-je!7IjZ8r*E7wJNgqsp3)jN$j8`ljz9mX`RVWS@C(U0ZQ1QR7{2WFi3u z6JaYdJo~8O`4+_|$0PpH7Hd;59(rqrS1^C2-4~+tB;VzDIp$E=z%9muc4)6|IedTL z#*hU~LBLd1uX**WZQj64+r4v@HW@iNhqiP$r9k+Mjytw(%Na3i;}%VI-N7SR(1Z0# z)59yIGw29Ce(^*s#bwD2<}DUN42Pfk!%j?z;F0Br`wN&io7YhY%%jr#I(VmP^RM3~ zVQ7w*i*N4dvGw%rt^-l1^mFqsGcK#&R6UKCPeXdG1D5fA+k72Lsz*bCVf-Y=q>1gf z0n$DS3W^Gl^-(s5dK!OluY8+VLxkm$NL$~EMHfr82UG)`_gGrQiP zBj7S`!=(9q&eC-~PVI1=4I%?P{h-2Wdt7nN@!|f`vh(#v$U8bBo#&qoH>dowa=xcb z61@Z4zlEmdwC@}K>Gm73!Tah|R4jXPV8)3uU1hT{j%T&r8x%MXWe33>nahX_b*rZD z?I|bG3Fu+4R*x&*%Q|io^M@HvYaCX$eN5MrgtniJ2Og*d^fK)aSCnV!j>Q--yJ-#6 z)d_il?w`RB0YW>LaAj%`|FcoT52xCTx%0aBo|b=!{g!559{f2kVGIaB5tm=~l7^Iy zxeXI#K+Z-0@2~3t%>l1>rK0r{Qv$n9_Z5Kmd0!Gr!I7$)xoqTT`97!Ht}FG%@Es-b zi_`xQE4h&ADOp;+7kcT>BDFfbp$ewkV<@2w8OEYs4wL6Q^0yy+Sr^2R=Gxi!7Lzek zylDV|0;tO3x#>slo#svYRupR{94Kx-sTPglys9$fjpcNZX_{LP72cOw;{*Vz=pYO3 zU3-UVzpgfDpY!KUb<1o3sKn4WhlP@ok_ukbyjMS-U`BwI?Jru|6zMb(CqUYt$?mVx zAILx~S=vMxQtlb2UBJrrqZoC)OofXl@!%q8utYw$$_6>&5bgy#KbUt%$ED`)4eSw= zFMs=@{GGN`I=()B)(ONvcI!FLly{CjPd}rId&pOP`cH_G$?b47;FuM4cCLBrdClov z4~q+6us%3A=moR`vS87u6df&kvwqOu{{Js7$JuYQ!v0r2eqF2gKeY<0%O3+%;Xeh7 zlwO&`hT?z6i84Q`t0%G2w*US6t5-#Xf@;C@3B_$q@9YU2U4lh?npZ%wuMX&trk0B)| z$FERlsSX$4pWNBq4I3Vo1E=}Nc_J2)4my8vcOQemxYu`M6*H5Q8C6xU7rPBTa=_qN z*w~rn<)bG^6xb6u*w{y1nMj7>-d^{8!biv7h&*1gWBtJdL?-Z->``U9hODftFCA+! z2X4~J1^tXrq|@imFmIr=Ai(}&s)LMH94`?UtPv-@Y_fl8DXWtIW6chUy?JPE zj>(MH_opfN3HU1Z{N}mjZT&@$KkV){Dqu}Bp*3I%=kaB{iM4eJXkshNFDb!pSzQK4 z>|A69=l^EmZR!-GdW@TTdU_6H zgjvx|>D#IJKQ0q7H#hHugm--|&u{}TV-FsjYEYd16|i$5ZxvP@-DOh$5!iTkxanKJ z3t_?ykOQVCk15;&i9e*u$PqKIFQnezem^SqeL=Qh=_BJuF~ zCDUZ^)_ihq$iU76#+k`WK&OEAaQ3nVT)*O>?Ew=sC1UVjZ#@TzI*v0AsoDLdl>LM( z#2w&hCDzs*{iL*~y&d-LGYNuja7Y-Kg5XJ6NePi{+Z`87Pfrg96dTtS`SkXplX>BO zUDjUb8SSrh1WZ1tULl~P6aC>-{(%;z2R1|U$5U|ocn8fVk6|k%bxVlevE$MtJ6FG( z-KySt-M$4@*A2vsIOpD&;GYK2t5?8he;QP@i{;0(Wj+lh6yH<>Nrq&Qvx^HV7m0zn zc|qjnr<^}|tD|62)fnv{SY_wtiif_z%=c*h8W<=nfLhqC%_Ft4Sj z?ic$+ATRA2%a%ZZ0fYHp@g0oY;jyVi;r73D^hK!GoE94qb zKX7R0&CSjRFD>a*Wn+E9RcQL~j6JTXwN-~Trp!2FI6gf6cn@gRK;bsq^!5-k9$!6> z5N61CTmnwFr7uDJTh$rD&HeAzK?6g6Q4x}7^cL+d=X=s04my)=0!@vLa4MvSz6Tt4 z%O{ldu{!1u28RD@a>3pL-g_g89z;stht*n=qxqW$7|hOSa8snt8!9ylR(}k(A3mq20}OI$slk*V6uQ5z*7wv`(RQ+LV_~I zGimHtiNV9EG95pVnxk_sd&H!F#bp9jfUG+|9J`b!f>7<=En!ht~f18P#&kO$2R z-$Fvf%*|f_6Z^F+bR+Z`AlT$#LVSEyR#qpW;pFNVZia3oRCFt)^cdTP%gD3)kjGJq z?t{)YHOzndFklr;6U|qEvd8$VBjlGPJggI`Jz2XZfZ-fS6Ztk^ zYU0>qsIs1(Eke?ySHL}M3I^lXLk+9mde1`@}^LPbzW@QPU@PgO~DvN$V?vzR5 zKmnx!_PQF9IwTlaY*Bb7yk>*pmEbdOl}1F;=&%GU2L%TB5B>c75?`A>mP_YPRptk( zAIMS)NZuj^ksr;MWM_A6ZEdj+aBV!l)`OCz<2*t5LBkg`LfG2h=K?Bn7zAL^$15Q= zHu2`s8*W-`pMH^hT0|h55fs1iLd!Cr$o09^0$%(<;+1W%w8iz_>@GKug58ua&-xc@l>@35wxxW5)wawTY z!A*LZRk1U{&P0EGDJdvegRS7&>m$FB_9O9~gnj30IfIniK_O|cH7Ck|GZ?KduS zNc~~%8k`Cr!I>u|bo&aX*B_^rWus-c-z;!{6fveqET#czkY$Z+F$xJ7_FyS_=m7o? zDqF1w#_;+UYwM)}%pQ-&uqV`i4=yBglCv2Ci4lHs%mBl+p1{DsfYM7FaRqwhpMz{q z;3f{z#7H#bW@=4R3rowP;m>Afl3>B2abNQaSBejGjTKN~t~56CR5^a@)uScg6U zR$;I{5Er;`^+}fOPXMq}`{Tb-uYX&N=ScPR$1uotOaYD{^PLNOB3E|eK7HebY&_s9 z(v)>E4DxG$WT0n-ioS?*nX5LJoRW~00D)SARRb0nz~t?>qt@R@hnhTQKRDg)L>*#B z<<-)EK^2+I_#CroM@J|tfdv{nMnXe*iQ@C=k(**2su&2?ifU@6X%`^6iM&K=sqT>d zk}2BpFqY|Jzf3?95EU06fJqX5j3<*kbU{|3js=0-bnWb+fwG&8Fte#?{&L^Me;RFD z3s!!0FL=Th5uZfk1YiWH_Xse;Jyv0Pu?X`xkKK|wyURoUI>7C zH3W4ST#5#IuaZZ+#9;I=Lqf4XXc&6L^^(X4;Uyaz$usHMyVpd0bByvWqN@EM7>S&P z9lwxQf=%Ei@?kM+`kE~Rmi2r}e;Xd~jm+t&0VR!-QfZy z)GCfvhr+uJIt#T51UHrTy^Rs_PeQN|RbVkFtc+X9xzsiTYPHCL+Yg0uo^%Zmnp@D@ zd=k#SUh6X${@=*@>qC*(3jS{}11u0^*RL`8&Peu!4x`w3 zBs5|uVQ)KTYmWo!tR|~z?)&J)tjXWMcjwA}KRjQd;zFpe+vFp>TMu|{yuJOZ4Rf`H zAFzPut=ChQ_|tK5afU~0-5O;6)wav6$U<_^ihPOaOlol93msgVT7My(T#HNz24~! zjkt@HK7c)_vSEbg2#F&Bt*==7_LxaY` z?E$x;#svqw1be6p$?2~w*f=>k`O^qnT3U94juE?MzlgPOd-g{vx59Yfd9}iJv5&y0 z^W9evRv;wHaFwK8fs2L_gdm(YRBhCup&?(E%(nZpvZ1q)U*-t+kMmnjhI4lH;cCe?>4+k$b7zBMTuW0H}V2RK>M-#o*bbon1Pf+zM&I-CtQzbvz z0bZ5a8Wv0iv1=20aHK{(`CE`XS&(u2i$O^d1#Jj{%)eVU+!q!9j!y+I<#AUu-{iCD z_Y!ApGcK~SVN?i=0$3<7`O%XvDauPx+xErYr6wnnXAWZsB3Rf&@W#3cnh&J;AUrII z{zZY>Y{NB%szxKcu$DN3)C9bUzrOHH#>Zj^HAubk)_(bZng-W@cs>MBCky@TkkFU1u){f+Sw{7*xEvs~%u)@SRfD)UVged9M2m zjj3k$4#S@ev~epp8378!Ih6z@iC zT-O{Qv5{@`IriyJ&1P+a zZJ_2D3g&V7BFg7$jNxjr)?ec zkAU@tdA9@d>V9+8^hdMLPEL9dpj;hB z!=RBxoksKBVx#6UE?*aW8j$fu^2Pl&7ZUb8lb>h1)4az z!c@vZxf13eayxNGu;GUdA2yMeszU0(x2&K*%F+!iH&b}ZPg7R39H$j=|3K<{nUB-KF4A7lR+TwB6|*mG!Gp#H~%wLgNOwN^C;XC&mL;ZJZ1AYh19s%od2Bh zB7FYFsIBXl@35a0k#VAOSHT^jXLmD} z8vkzDrgjBc{j_wrw|Byo>dL;{jlJTDo7p=$E_z#)0_ax9v!&meK$wARKy`H_z-98w z%D6Ad`>-ZYRyN)A?Z4kBD=VW>`@cB!#zUaO^tUW)Q4M{sSgR!1+)9@8kt0|buaga8b2!_v z2=)*kwXhnge099;du^23 zmwng#OED>QU4dca-+&R_ee_GePZZZSbY8#|ctrC*>2Mp{JwJpNHogy3?Cvb=FML|J z2U_Z_cQ4YJ1by_x@|gsygmUIr>9@p|FjY(-**y9o&R}08I|;2Y6h8J}m!27vPGSwKWm#07%+BEweegH{nws zrJ>ZdwtfjnInszOQM!*QDV6Fo-aA!DEH1UYl7L<3Cw8#>b-Fff^|$mjrSP8VAJ*$G ziN%rC_&zpYJ6sNytl^v46!C-vaq*pt@9{*id{JeSSa@t5Q_Oe6$*3{JSVR_Dds9LZ zk`NF|CNMDCL6ewBqu(naK-Lg@X8`R@6r_%Ls!Or*_V%w(+j7unaX4e3lJxCXh6yn+ zYmonoXltjwkm2R!^(2rwzM{{R{(qSI%77}Ow%Y^J-67H)Qc5G;(nw1qAWAm^Lw6rq zx*H^=kq+sS?(S~*hWESgz4ymaIA>-!v-h57ujkoot-bsxvy7tsT~$ED*a1uuq`+GM zi!7tFv&a-Tl&(yui-2s&8>^y=#LSGj(8n0Y2VpE?m9i9X95aap``edH zJh*-VIpTrwJ8`eFH>`>+YCGj5ig)?7VSvqteuJq&N14W&#dNlkAV1TtQnlMjld8L; zz_`Gb7ybm84a4q2xH=hOMLLeb?(Tyjruo!)5M6ZoDmsDkrV>`g($W%c>YcZWlb((a zQy;o_5VcYxKAR8wiJrzGor9;=q2AZgd~O z-%#}5OOz1CB24d`mlr+I>^y!Smk>FuQ6-lDB}s|kc9+QV0IVQwI4Bxx)kW(ft5)3h z5%Aom>>V5c?=7@=p>L09@W4?Q0pfnT_`oSH#Y<}8;Fr!5g$sn=WZeF^9Wbmyv|ZfV zx|9i_Z97&fJ_hFquvkhNyrQNT*DzIrbvS-PeYOx*JEZ90{x)j3u`rZ%O4w=Px7}8B zv))Fn=45kOX~v!{PkdDAbiYLV{y6j+aV@tOyq1tOTtsB9F-&|}3B=yGZ;I_xO!85KSdrjGJ5~)O;aF7r`@oDJ%hTg9 zARPR)pwvGDidFMEdm0_uIAoBHgA$A?FR-kHk0YhA`4NF9!N}<+xmfCWEtB6*$L3JG zl5;CsFR;59*_s{>yK+gG%Sb^cSXD-WT5sZTkIlu%S5>KkP?WBSM{c$O0tPS)uoO8*h|8OI$RM&?6#LrqHQ+qz^gEfC zC+mCBslXw-pLgm2WTTE&hO7fh?&0XrIUvSm;fus-wB}0eBdfWHse~QG{uY>(7D#oJI)M`k#n+ z1TBKh-8zY}PEl4JkwY2tixw8IUgH{<(cB+0vl!s_&lmsb(!d!)5wx+pNj|yt<*YUq zt;+CMs7E4vp7oAUGNno_+8)1~mR^r+DgrifIf>=WCS{l^+wLInMRR68WW_Y`GmWA|psL?AvzDcMfLAYXGn=d2r{l2K6 zzOz4&iQA%)U;{K&?RquY$=c41?DO6-;SW}%0cG-7 zy<0)gWf=9_ehb(;!Wx^^I9c{y8prSvFj9FzQ)OpyM_;FtDqlu}pp@Zr@XE3|R3ADuE;aC5!RUN{<=2}}0z zh@h>s+S!`a8OA|z+ZWyW~ z5(t@M=ebp$lhmDumvVa>q?hbCe|UC2akj@z^+D!aA@rMfsA4;R{K$a022b-5Ug?)h z5wSLHkWPUI9)}VDtTUdo^fjXpQ3UY;d0`Vp! za{_hfZVzUWn>uQ2hE_~2|bkNMcV9$>m$(@gQ&s3_U49Eg)A?(F-hNe>Qa&mH{k z|6pwJpMPxD{O)&XayNw?0}-QD^H(6Cej9CX))C8knjF&m^?H=5LdiPR^FOHyY^OqI z$U}q2EnrUxF2oAP>IYgc!u9QJ`To`LCEFU7I0#(&0%j~$g_l|S6%a&94lvP??}?E= zkttT=a2xu@63j}+`~QRn9pWc^1819qxBb3GJ&@hjnTa%Euy2r2N8fah+>VvkiuiGpQ+xYZ9$@}*{0r6^x+pe^5FE#9Pyjq53K-#PNK<$zUuw> z(S*Ilmx-ufA{0Cy4Ef5!j+4L=0B;eQ!ws>P%&`_m(Nde(kfQTcMl_tl&h>>##xMOj zFi#IZf6PtaXD5d{oWteWT&bht`lLb_cprg(cAEfCpJCGTRu);gc4AeL!9ljpVVsL9 zFs2q$hYvXoQ#-mZn_~xvG<*T<70AzajpkDhZ=?z`%HNtwH64}3^Y?D)LMgPK@7AdZHYmunvp3>cPb+~#=y){~qseSQ#{Uj0n}jUE zXomFow^cQ=@cuv6GO+!_z{H2<(m;yR&o98YBOVgJY%2oT@MU&e0(GH*erlb$-yo@h z>MaSP=^qoiWq3#3?m%!ZU8Z#Trm~j#-HB>}5oYJ$7hEwdeV5%gRKs6-B1j58Y>S3_ z@utn#tzU3bLAwe__TTEdcJ{_YXvd0L_dW)(XdKqP`?E5&R@8YElF-jG%)if~+tzIQ zTI~+N^2!6kc@`E%&Tdf}1!=f9zjY44OK9fH)1?61-StOUos&w%%{n+rbDl4 zUu(s6|BljnXO55OV+xY(zeuf)&f|0T0u>Wc}ISfLd1+OB2@`qpnO|88I? z&+O)Zd&ui}00`Xlos2BWVr{r$4JSj|2_UCJ;wq5x5|D!TYSAVS@=4yvn4 zCk;53Oq=Oc=ren*eM02N-U}j$CZycG5~U};epi91;uX5`xwrQ5bFIYy{l}}@I8TYq zWiR|B;t1U~@+M04TaVZzWyt`3IBFn}4{b+6S*hJCo(-uK&ak+e;`c4Ujn?^vde8IF zF$2-_SUW_H2a{Y>Ys+zW!iAZ+V8)Pa@eXjTfiEsBaB4jEe*RKZ{rcYXSzxNRxg2bx zx3Eg2PKM9h8@8UCg`J1(7OS%R8;57ybb^jBG8&??{9yN+lYBNMLh#2j+g_(Vq!>f) z`Q+)%sp5~IN5Hln>lx_h;~&NJP|D(J^f{vuQ9;kmkwBUahEpS3iHFA0sbXIW9%$BS zFP#(7d(yB{(mIsV+7^~E@%tIX43>;`9Urq)5HHiwOe{+saYH2FAlM*%lZ5~mO#X^Y zNRG|u)n#JU&%uI&vZs(bWh0o*gUrNqXQSBtLc)4MQ8&)r-`M!hPllouX`cqh#_?ubHpSjZtpfXp@>zbc*%0L08u17){_88$wyC5 z=r@S1?YkXg*kK{*kE2yDefaCRdBUm0cvyh@rcuyQ+@wLO5f&wNdVe^E)tglvl{YVs z#L^L}RCU{geuHYfN80o->2WXzR}lHnI#74<%JvocHxV=i9Z%7CXp>LXA~*R{#Vvj zXhf6)8)>iSkuUC1=(bOBDibYSK;ja7b>(bwdv-Jbc0=lqwMB2mu#&k^<-9>l|Dk^} z33JGVP}OotV}+i!Q$+oc5npTw_I44*<8C0pCH#1ymg+RE-5Q4(TrcjN?a$9G9PozJ zFOkxMcs6z`(e;#M@q{}1!D+9@axb6t0Ip2YduO`o(&b`YgEs8Vg_y6!!%Yn9XZ!&# zJ!%cHeW;QUj5nMQNKM+}Q@U++TsIS02H6Zc}*sG=oKart-3n{i7Ze}rD>b_2jY zSZdML6{X&h^x509jEj$_O|1JF z*(v8ZK$yO8J7~-`(_J91mFBBhxSKxhgx>Izv-r7QPP#sWyw_ZltmzO^13Om1SqM8* zBq%x)M7mq)mCt#xHSNBFXkDH|0i2zU^X(mdUGxh-O257*n&i|WO^kOvQROai?mEg+ zDdU-KtnqMLNbA{uh4Uy)AYk9LX6jVOANXlFNUtnJ>C6K!U0YlcD*} zdk%q;54q27z2|Fpz9kpBYO231C+R0FQoo;+S*EA%;nr{AidIa^PMC_Jvm-}9e;mC< z)o!|jy9Mk*6X|c!netimmLHO7q`uQXuuU|46_?8Ag?G-&x7H{1U1yaP4a_CSr-I5! z;}!!-&zx~E_x2^7wkH(B0bNg}I$@->)xM8QP0oj$rJtisPl>xOw@p7)HcC%AxjE9Y*+r**UCNRE4fbz%AV)YVRaM_6Zb%gP3 z)tB1>#k8}yx-y89Nz11KJyq&W^>ariWp`1b%{(!pX%a3y9zuTL_7{zsX1|V#pUB&w z38%~wpb0^BromNV-tzf-cZ6%^qwn9rk)Bkz&;_HLv{noOjxAGoX9u#5-$xr&zpa)R zf^m4(+7D}y!o!EPr}9{VlB@XvMCHYiAv+p}$mU2fxT)hp7?(3YpHzVJEA&TF`9blf z_EN%8orWgaB40FckML3RcMmKzBPDU>i&E&gM59bhTbmeUO&_)0?Unq;)-8;Xtp^;x zcA&KSU4c>t8IMtizW`NCUka$^X|V(gK5wl{vmz(hi-gjwm*JJ}1@ev&E*U>9ZoNMc zSE7jvBv;BftBmw;&{}-(3NgFAk@48mpQWEko_7OYJCUZ%53@1EVhbyZb2cglKdp0* z_LVDkxQb*4q44+{;eXtGw!d}M$fhW7F%3}QblYLs*yB^Vb~=ZE21M|Slug*9jc0B{ z(&l{m!;4=5iqkTA%iFTEnkps%_{^PwwM2FYu@?Of-e=L=65I@p$KpjKzxmeox7HDu z_RByvbK8S~K|vmxmItheiAfH2h(yo^UB=y@XJ2@fPhW<+%x{{x+?xFuCH3OGvhMVYqgOmHR2X65vQ*WEz+@vXqy*K zn7=2}0~Z?(=V}Kt>(ulM?iH^KGN_H5XM!i3+5UxK@l21Hp4Bji#RmX0N5WnSKGD)k z8&$Wn=2{;Fd9?`-pN==1wH`seU_q7J!15q_^ZcWrmJG-<1iKrn6(mvDgN(fdFd+hE zHm7{eq{8>JBRy=O(?b*1+5w32!-c_N0eT~mQN?e z-q-qyc?1TeF(79@d{Jl>PLhd$vFYL<-G3yN?-frz;KVyJ92<@CEo=%GQ2tWcS+@D- z_{^>cxSyRxZJYX4BO`wn53JBa8u{(XPcH1ybd)6G^+w_gOsBK-p6#4PA@ zGi0-kyLZ_?Q~YXXamRWa=~KZ_)+%nn&#thjG`%Ga8(E}#I;U^Rvdb7;=q4AutKG{fOQAfL}bS~@@+1_rO2JRf2LF+>5>;5C7_`QCs)<*t% zIo(Ia=jwBwYg7~#^>d7ph%ArER!-7Kl6CSIL0Dk-$?fhcW3oTC&3C%jfgF-Zr!XN( z5Q?$g9+VVAnA)=m$10D3ww6%E3h}J|Y!dEFtNyKu)`sr4ac#OKx#0`5JAvL#w}tzq z<5Sw~zOLC)o%AIre3TypHeLPa`p~rs^bX0t8W~c;(5qjUzo3rPaY>T zh40rAX~CE($u$!DL5gg~!K0xxRRJY%`l*{*D($aV8Pq%^ho+@KxylU`G&jpT%HPuC zqDy~q#>qH)I(t4CcdAyTLra8jvIj~CWN`v(6bW*ySyUQ555^r+a(VltcuNtMj^6zE zbrcXV{5tu&juFONo%jhk<-EJCB2$&Y)%ug_Z@r(wY`~#8u*`~CA|$!k`!QV+v%|S} z*L=RT#HPX%c^w8P(d#hrkE<6xy{BebT2bp|pCzx~Xv?xLA-px0ge8~%CN}_-*zXLi z_%A0g60-?aDEfcByf7ZiITrDF;w@p+Y|gcc&(L$Pg4b>FNf8 zrmW9Z9Z4RIp;HUY9JHcsJ$PELdn@~eyyOR4{MCrUlJx}UxzFTCb8}5evh7GXV{Dqh zdvRMXbSNu|K7LkFs8YkJEe_!0UA+P=GimHmdeQ^yjn0Rm(k^qG8FG#sc||&`P)VK* zad8JGYm#U7w?a(T5)IZ(B+OOIX}|U8D)>ps0-D; zse)hF)j{oaFV&H8@}1l-j6BNXk@;AHuaWRrsh3k)&O?wc&v|3~=LEPdljqfHNCff4T^cfZIS?qbUAt0$`c-}{2$E+7;x@3* zGz;tEj0V-ty-$~Sc|z+n75?wSdXn-fw*VjL){3gnfB)U9>cxPL<-alj(0vYEIwqpS z`iJtGtQO&Sc`v6YLdG-4-_xf6ZMUacSYUuX{J7ciYIdy{Q+R^{)Xft~g>6b)faNZJ z#{>nOpP+CAOPE-g3|w9WKNENh3)65LfQ?1S;v>92@wPVCMZUf{P0WjnyP{^9`L=~Nf87w#_TSxf?=?vDH8HXCbU@J87|S)<3zYS4>j zIQ{m}X2{9|{SFh|?HcB{*Y6477bb8cSAp5N+}U{~{gZ;VH1N~|*I&_Kv~f;`eD5{t z-%I=C1+?Y+p>qW++3n-;O^Qb}Oz>n+_*1{PBIMpnaf3pf2TL^GmajY&#F*KGW-hrT zm6aD6=qcj+hfZ2XF1SKW&s~n~qxJt%9smey34ucY(u9V%0Zt#V>_XIvM z@BhiAyyic>m>uyVc(M4hyP7qB1sN88_E_Nf8hZoKEB@_oOsL43H}gb;yqKfAx$!|V zo15Q&3-()AplA)~r3f?U@7e~FP58Iqv)0$|Aoi5dbq+70W71<>|8tVFtX!pVbo72ypJ}ly@U_D&}Z@Iox?Lw9auI$ zB~C>ZS%X&|)%0%77oyRTgp&A@VH-}_VapMUWH`d$eF8`VEW{{Nl$EgvGdyz@QBz)y zg}q?Zn4kQmSfShn?*Nsd1=_mJZCN3S^baX^9teufUa(c_c+bK=Y{3DSqt7+UbD1eJ`(M5(dUor2j*J`re-eAE@rqL%?1?;&gSM@ z;CkLw>UFa)CSs5LiY3-p$GkQQK5VKCFUXVCnGlSo;ilB2A+_a-qum)Xgg(u7s(sg` zBjk>KN(0l5ITN&rGzD9EbS`q}Cy&Wu<1p|{W0$v1kAYayv`KKW^T(vW^=1tf6ai!p z*55}{ifeuQ#;kGw$jj->B3E3@(qg767Bb44rud@x*Q&X%aQ%8=>bO6RUjLBs{0c(! z2tMieUgtkq9WaBvpEmCHW1vt!Fnh}e85BhC%+NGSwS4kECK_KKEkY=mGeQ3kC)u{A zsTsXqjjLV1)YLb4=I@QBLO?m^Qp=B=?MO^zJ4PXg&mfmGd15zC*rlsBgyQ)l5ASZt z1q^(ya+%+!WJHaXz+KZ&57CgYPe%v?Uc-Z|F5+8^*8Z?Dp?}O=J-1T+gf-|w(lW~H zIl6iaiE&tk6=`c0P&F)^un2AegGRnxhoGl3g?$=Du|et6a)?f8xKT12}@<98M>Wd3UG*W)NwuVFQ)Y%pijhUdhW~&eGhPqK?H=W7v zUb>Cfmw%tO*AmxXHykr_Lz4i9pf);271HLzz zwE<-ZEiOMdyJGLZ9v^LTv8k!8rNjb5uu#Ee+&@qz|3@l{ECRF-Ho5d?+1S{iU}g?0 zYdvbry#``j-H+7jFd0?x+UzUDdgR49u6amR;X(kG$|I-tXbz!Zi5XqAIKq3=&6;WS zxH5#HrG=9C(ATqI4PEt8z7rSfK22p4mf%hS}@H4WH9Y;}?S& zCA2N~{S$xbxjVL$Bd8C#4HX?IA~}lws^2TjwbgZd=&4%ksXW9ataB2NAht0PWNcP< z#|+?%M3lc?{rOqj&hakox4g7^bZ-4|A zsnoHfp$nNlwL#7CQH{~gOCIi1EX`NYMD9CCF)l1F7E@Hj0NpE*Wn;TMU-ldUN3~2W z7fy|g;Bw2Q1~(|q%2hy8%FV5OA%+9HHf<4AB-ZVd*8NfI1H;2+;z1bk^B-tw;SD@a z;h#qTS?q4KZ3{oWYP%has(kq&Jp>mjgxof-X*?o0fcOt&6R!V?5>{l|#Z?&aoO55@ zO}vq?y*>MqjP`sS8=E^xn@r(w7mG@0`@H-V7~`V`3g-|ZFP=-LD|nFrslarWlSf+v zHt2dJe!SGeVcdn3Dh!Z;LM%yVXYMs*f|B1|xgr$apn2@Y(IN@h^R^(PyprMBv;%wX zjSz&^=Ja~g`p6I2mP+p2woI2o8995rcj(?k=iwGk><@iRinJqWOfP{`5|1 zlY6WT^S!1SwK~XRPwk6o>_grX!V^78nS{Y%HK1wK_wg9N&H`4L(@a*+ImKBazi@1+ z(!30vgH7!x1d@9kzO>2Hr-m9QQ=}G3XVOss7{6hWe#0`ykWe*paed@vbne(qfu-L| zY#*7Lg~0wpI;3EnQTR;E^*5bHc5fP#-L^tbKxI1t_*2hIg$8s`f-GFv^hd}XgFYoB{EiIn7dt*L;~Q#_jui?f#YP{Y%S; zGHP$EV0~6NX^BC52@4zVq+EWB%XUf2d|HR46&r6$m08LtA>t& zyQ$Y#cIvg8k2aT1Grs~1JZaxP>@gRu;Xpx31pB!YIryKlU5G5mO&afOXDlh9^ecCJ zIh4bsr?UFi1RDvC-Rv(Bq#Z2LMHHzO=n_@n|CdX!25Rx_(g09A%mN4qkbpz28+5&T z8F?=w3>=7^_d^j|dNO!eZcP7rhlV!0g_12A|Hv9-v3(|Z=S zyC9eA)_?5g*+-iBzAN$S(mzhw_7hyjB=L34wWyV5D|6jh$c8Fko_^kkMP=9)302*F zbv&h@MBEEl9)P{G1fWO5wM{-aSl@Co;ON3wajsa;9nHpA@gqt7zQysIZK$1w!5ib6=?>N5jh$t5lqTX}Pu;Bx7Cpre0|ZX2T(bX0n7K-I{HMHP*xS zmA*=mhCvbstm4K{yguVgP+3{dmq=@Z6nsO$yu*G4_`g@B>JEc&`Ye1_WYI$^DjTMS z&^PuC=^^{e{6eh~@SYe!c93P0k!>j{E@qWaVuu0!Q*JRO)`1{9AQF$H!4%yw5F9z_{FRG+?cC7eOmf7I1+)05!nGuBDag8DTc}(Ja@*n#2 z+wan2!^&CQ2h4} zlf0*+qBT~iyx6Q>;Z0&3H^rK`%850kR$sB%GTzYfroCUe8Q8E1+%TzlSMP6JzQfln zVuJn5h9LS?vS+Zh2pLN$XA={fN%@GIjTu}mAHJ@|VPIa}W@BEXskTiMSb$d*u?qG} zip_#}i+T8CKsbX+_`T=DT>CRdm^oaq*IN^Wc!U!x7#xTDNWDGOa4FNJ2CtFvZSNQI zzrbgnU3wU-0_T6WSz((gaY|=kL}=chqQQF?(rpb0B|>}(4ao%6yigB1>ccTyM#j>MK{h+XrRLn&kr-;}DiCo% zqCLs{{!oAfTd0^wttxqo>(Z~sO^a-vzza@4&Bf#ddt`XxEbTgQwL z?>3;>>K%xA0$YAu8-w{X?~f}MaJwFnKjJbyF& zZBv`VfYvN*mwDue|0m_*`=Z%a#Ewa!K8(#KbV1>OW(vsm*XdN6ZyU6Hery(%5KyF_u}0G zS{h0zDh~fr$&re1JL{)^0oov@9|U_aG}PE3{E6-zbZr06Vw0WiJa_Ze<;?Gjfa_JCb2$Gm7Q zDM(M5Ry!qicbhkRi2$IR8Qnn&6q`nz?!+`&>GDI~lhAcpeQuCft;ifm^`EpkW(Bhm zKB{Nk?-Y1E>qg;t*2cPNK{Qj+0r#LphpzNU{IVn{s z(xcl-aGNW_GWLN|<&0QED31H;&Vy)e-QQ6Ln??sdRFySeJxoKijEQMOaxy8sU=$4F%fz77HJCJVhJX24tN?*uLNAB;?u|9fG(v!Xam5o?nS zo(;XdD<9}EmMD7O=YbsYMR`s?5BC~h*N29r!;x;OM7dkXsrF<6coGGQ3<%GC5Yh%t zrWD8HE5Yl66_m`I?9jroe*_qvbT?0r_t(NMM{frI{$)ww{4(HB;|baa_@+KlvN4}{Lhh_cN0!nP>7cI8N!a~SCuodfHzG}*1$<*xyx#HoaJ?90jgNn3_oQpn zJxIvfml08%wIQt&pArgsHv^>UpXZDF6;VI@xH1KiQbJBBxctF{!)s)Mo$JhhGgLLSPf+Px?hD~^)n{@hGqP@;&~L!W@g;KIj<)yc2@V(#apnR z@E!tQSzj@_^Y7W#BBtG`upa5 zh7m8yM8h2gOL^-3e-$4PrBA_QXdAc&bLC0yQcJo(FIZGx~D7V_kN-0}}} z;_F}5b8RBpH-CcpakSnb$Njjglyo@?x{!c7U#ve~FGuZf5m9>fQ}DZ6Mypfcx`NZS z?G7-Sg`rSQz2s+MwHPl`5L{Zy!VTt_Zv>ptd_*9+X1_T=sF|urZy``7F^OL;Jno0+ zd2PJU!@KeZ;$2{@6X(gug1Hk(D$tRD81X4V<`X$7x4iylNM`LERI5PdQt85LbWg%f zw9*&NdJTW5V-1)XYNa&zD<--_6HqaY3gnxk@RX6g-b`$Q8TlYM8tlQ<|5@oiX^LR- z3KH!?@ZF&8#E^!wbAtPP=m=7#7#Ad1$F|`|WJZ8-Z&N;-=)n=P0+XGQm$>`0W2h*| z>{iGn7;>ccauv4DQhtAMbyG9%x)xOmCj=mS*YpUJ9`??=eW0w+fODQ)q&*%Wp~~Dy zEPCJ(hrt(Z&8!)~h75={jw5g5aL_Y0ydpXko#OffDt)TK{Sm5^@dSPfdAhf6+Habh zntC*W8w^?*0FPYXtgO00n2laPzjz34Bru#hB{`^AE17Lt!7t3)=c!TL^Le}9ZZ2Uv@Ue`RBD zZ+`;auRyfjY@{xf{W&)!dGHF#rXR<|%CU=SKD_es0xckIn*k@t3*Jxv@Z+VlAfNIc zSxQ3^XE1qu4y9ls#CoxDb*(#$Vb~(JpT1qT;_mlh%a3=LgDgD6XFjEuzVXf7_`IQ2 zbe9o-|KxAOs?T(nCACVP6@5Xer=q8eKSoe?t`~##Txk#u@W{-^Hstsh(nsGu!j`i4 zRribjMRV3Kz{i8VCH&s295=gEoJY_UgIj>G@b$vZF=~8Cw33zD?^`~O&9g9XD|kNLlBRzXS61V=C-qbcg^R-UcQ-U2-bw zCvLa5j5r04-` z3veLPIuX#Qt>V(#P|L-l@1Jam=gc++z7HqjfQ2YINevo%J>71DebCX7=A*8 zs#u#xbkPRjbAljJODtsk$BGZ9|R?M<~=b1pOm^9+Ro$)UC zoT;nAwoQlr`{wTS?DgemE*xyjyKZ~#y8e*1 zr=x9N_N47|61Q+fd>LU^gx*%BKP&r!RmooWZCfj~9404Eh~z8uk9Vh1jh7mN*Nen` zz~-~cuI`z+>M#e($ zPy|zN-aozvhtEKeB18J@oaL>CuMLF4hOg3w7*H~^Dd{U{)Iao~BwytdF5?dP7B8I3 zut9DaGTTHgI%ug1k^l9^Mn?#9UqP|{Tx)bcd%!m!E{dw3soF)_w?ZTr zju_su?oYCSq`r$M^B#x#aFeW=&9|3p3!+bQV=*r66#tow<|FgQ;bRk@e?vZ@a{^A` zrNHx(pLp+-TB!n7A6OG`+A8Z-}C0+k|fR6edISjp_pfh9CXEr zcxMK~=2yV8O@F)!Xojn+F#lm7LzPS0wtWe3LEi+%A0y6hs}6q@RW;fxKpyy3isdP> zj`$Y7NR@Yy>KCpmEKC*Ez;a3pL97C%JNR<#JDAR#oZUaltzMS>QljbK4zeRPdw0#pZo|EoH4P&jRYoTA>P&zFq_u*szf*Iptc= zric3t@pc}=qoQMh!3@xPq zwu+sbT)X?_I~=C-_Qonk!3HMg>oPbvCtNI?DqL*!go2G{f$@vf-o`pcK{uvv3@b?9 znbxrOVy;x#FmM{M(VFyCI*;LSK&3alC9I%uA*wgI?IK=-5C^vMM{E=ffS=PkwON)X z?4>FI(;iT!3nN08&W8F`6H;yu+rBj#>#+{zv{%m$N=dVieK)6n>9V=`sV9r+J?YxI zUX=J?Rom6^U!`+ztK$Ze{`W^Z%TNlEH1cev0&($Oa9`Qocg;e04T}Ucf>EUXG+(n} z=T_-ltK+BHGls9^=z(SW8t$eURF@d-24P&uGZ~#9@OA6u%ir^+0A;Pg#VP&W4T00z zSrxTc=H+}ZhtSljp{Du%2P31Gly4pPMtmz!eL>7Epxu&}*Q)OYSiBEUn8sV4uN;g2 z)#75qomZ>QUFMSO_D?D{bJ&MCv^>9}J2eU3TFcBCh{8|n#`DU{@x&NVcC3A9iN%H9 zhtkbVmPQR5p|p)>4gZnd2d$0I8uzmChA`O3DTAql>xmQcivRK z8ZEa+lBn_fW}Nd1OHsn=vlRu^oHkN^GJ7Ll0l3dBKZN_X2Bw|p_C4QnzRHH4>Ht2z z4$0OZ0O|I<0QinS8)5M;$HEAIBYzL6f%>nsU7KQ$Iv<0iyvw}jDviK>=0GRLe=p4dGI(0!AHF-HzbR~P__zq@!qoovgvyvt|4<75bFM{D zZMAG%CBqsxjzpTV9f_!w75IP70Wq~JCBgPCNm zo0+kATE6X~%$RjbnfohlQNlQ8T8ZW*vQP?k} zPo!?z{TOjjqJFJaAzh&t{^na}AU4Z>@oqhl$yEuom28 z5xWWc>w6LFL=cuG-qf+}sW!6SxZ?@pNKC}YdSSr%l$!K@a&l~QUgk}9tOOID)yKML z16iZ*OqQi`U*G2`eRK<-B(R*~S#nmbf1Z;ohy5`?o3J&yv|Rc_>`Uk+*77&Kri3Cv zeJ+&}`P$c(UHDzWDa(`pybOM&#&%rgyIz`?@oW3k#^ZeZ`gOPRwD#1a<-Man3ABLK zH^;^dP~8{3-nIO5Mn%_hR)~81qrm9S5i{p1-Jm_UijOsJ$PWBHYD;T$)`&ivC%Bs= zsG87>JOM%#5M+llV?r?uI=c^Jr0l(t?85E!31}-#Ah3Bej6kJFnc|1BE(wVu7k-8I zn%TzSX3%n;a7ya)Xv+I3xQ`2Lb9EB?V%sLPwC^S=b>W4(e$J+)3~~1 zmGs8Xmm5E~f)9mg_9}?OkQa9NE{~!bF$?Ln$~dz>K!}P6c}&v$A~h z^73A2{=~$@vWydBJkWUS6ThSGyYa7mt*g$>w`Q`c+obP+iPH}7Glld<2F4l1T)<%m ziRXx+xSctwapRayNzWhGz$^IvBNOC=!`N*s9vf=h2)ifzJBbuY=r0Bwd1UfzkApmj zxS{Lp-m65ef~53z9~9TzC*qV<`C$xK4=j^U0%MdQ?Y4rEtGu%F2&Xf922mzqJQ(I{ zZm}T}1ILB@^DD|qsg}b0s!J)af!gZ`DI}btFftkBa48`Z74geBq1w5E%k;f+r%0_V z$$SYM4OOD0t(bxLVMM*LB$I^|#WFNq_qiGxKVNqu^Tt!Qc9~E!R>df*_Dv}}txU|x zg+v?~;A==LHP|25dcD%PV{Ws{6o$}5c))t6c;Lhq`IeV$wC(DiA03U}0@>hrsPWt{ z&W%%V{1fF>lwBcCueXvfoaH6 z;_? zfAEGZ;M`&sgmk>#8w9-a^M)cBQ;fsBK>(i!1X7HWFk&qAl@s^;cZRMzP^Zn_P>K0x zOTU;*Xnv1vM|A1MM|T=r3njxEBn3gskhv~0=9n5Wczo)r%edbX6DGtT=n}3*srRY6 z?wN27wG_&A^7|yz4K8iOMq0!MjSUGVAHn^W1IpYB2)7gkBY^O5G_`oImb1jA{f^N3 zN285*_kr`jJolO2r&lNqXnlM%@!WmyQFW}>ATPZvpAgQE=DgT3%zY1Ii{lE&!potQ zH643%Mz*Xb2O2Ii=9;5Nx1mm_b>RNA9G(2PL^VE(T@Aa3$!g}Et#RiEkM{JrUFpXL z)e1@}8U=1)Q3z0?ddigbZGxrD^~U z^F&ta5i65UM5i29YM6AF=mTMd#r))6r3Pu&4@nf$W~)LCxywCkJma5xQ~iBhDG_mT zcwfgpEceM-RLPH1-O3Ym2`S7J(PivCmU`#d&{3aBqtGx$YAm>1COKa?kdId*P-wZJ zKX9S)xLrW*@#?0{Qp;c#r6t&ZZV`Vlr5DU z3Ey%3`PAt&fr>+FQpaaN$K&Tsh)7D%x|)CE!;4E*(8(1QMfmdImGI#&UVw8>rlU`*xH)F2T|z);8X_rIA^8sWWf zUo9*QA-2zb6Gr#iDv01{tGm!A1Vd8p?FV>j?JuF4h@D(q_O!9S_6!u3yDh9NEi>>+ z4W`<9kzPmQy9jOauo)TgBvvZL0n(h`yEn#At#P5-i7N0 zVWsefbOcwFAdtYsS)`7TfBxI`NYwzj!Cd5Y(vm-By+wHiU?{oQD!A z3#FeRKn=pQgP;T?o@IIp_$@%SIqm9?; z2!0vpV`8X>41sp1p^wM5_B;(?ZN$GVr6Vu~)t}@AaN>iMc?bBJ;C{OkvIL~!pSb~gG zms}dbm-}W57*8Mo$qrx&bVhG_w|;`4lZF(6&dFuBsXNVur|29``Mw~M967!j|2zKl zG`&+8)0!e^iyRCl<31t@4QMeWP-+WT1DYwi5a1tcNu;<37sXYu*Qyxd>Q zjPirO2=!~e!MRiaV!@H6^ih~rtIxVH=zrz?R!9YneEj~*JOI8S7cMP?FadC z8|$;eGpXpo@nFzqYtVd$@FX&9Mh7V4&%aXYQ6FTV32MRVCeXdasP(IyVd6dh4GJ2S zn-sJ;4lrog@wAMIN5kokY$ye--JUOHjKZE6B?R-j_NS0KeZJv2U(}ub{e`JXd_}9o zHKL)SG{6Lgd_A+AXOZ7Q8GEs>Z%slcu>&%a(^sR&b~~^^U%ypVCY2e?_Wg9LDh-1< zFMj+QMI~}hD7jh(=l8ej#DTd|H@@S&iucF8K@Uv;{pA3-y}Y?CO1SqRgWSgZX;9qZ zc=J;|m;D9yH!I+rSXqHNreb=I?pzF#{_Qg(@VTSJ@nZ>PF4{*NzQ-Ru(YHQ`lGsAc zt)I;WFE3#b;{*D0o)t_8r`;lgLiHI*k>rRVvT;y~t16z#9k?7;pO*r1hv4E+)0XiA zM~Y!2bOA+j4EsAeY}4f_a=5OYuV@~{59Iwt!|b2f5zf_*)!_NW$n@bg6<1bLl`9;0 zy%6wD1D7;eAA+0G>9y|q^=59J^zs}zuq)q@a;WeK4aE&#syIOM=O$OS2}e%l0!rf{ zTin7qsCP>PQG`jojy;sV=w1Em1`!_hcP5d5@-*Ur2YrvmLYe4iTIJ0=h6{<1vJ~5z zpV#tVfcJmd@XP<1yPt7aXmFaC10qpr+z?;01^P5I6O;unY*aEb8a~R>zd~?K5Nt6` zaE%OUsQxNO7DG5rRONT9FUDJW;W>S3BtVDGG}%}>q(xA#KfsjtC(Mu&wSlYo)3{q5 zbDyF6M639#60gUZ<$c+UKFr7qQ?pmtr_a*Q_C6YeA^LlpfPj~!HZ~Z>frMNEh`Lj` zl+P@rk}D@nNOWptCu`ud`enMy$6Qf&Ja9xX+~y!=hl3d-dJSiP$~`own{Iu3=>Z#L z1Ai?jF>Jq)kqN#NANg^qsI2Vh$$nkdOTnVPaoU|m{nZ!YdqvG?Pr~|ROd*cn-n=> zKgO4uptSuZhdYXNQ5u{g9Z`)pr=E8(u5uMN-KomhD>w2eCm8~q$wKp!an6L9B$+Ba z5c)h3f}b-bQ=I+huX{fT;_lKe_r||{!@Tk-jgFEVofmH-#J#D2K2!fe(G@YE-XX1x zYg4+oUa?BG8z*THjizEa`z$QkJQ{^5W3FO)tEn0(VhF9n; zuukftv9O)^&kE zqBJAN=~pvXOVCsB{vgJn$rFvwOhB8~9#uUgBvjBKFxMn1KAvF4h#?KxP^w8b-sMt& zq{g4@!o&~-5QN{Cgbe@7#(j0KhJ5$ix{)_f@+V7r$cfCBJB>yc(OmpVi&pISnlb}K z2!%`^s&O-0PN{mjpRHq=UEinmd8s$6fA``$ zw=HBbkeetV{!}5{(xof4ywnE~yG&OV7py{>O@If@fo=fW)vTPVG z6B^3PT`atJT25v~R=_|}kgyf&_1QP$-oP72I(*HAF)Th|i`4|if#r8EEi+00-Z2Zw z`^LO`eA@gq=6Sw34{8@g+-RZR>=GAJ3VF6?&ZE|fN^M)~;+TKUoxtO&VNYqM!X=Noy^ zF*K&-c#gtf4|qE|Sj#@=?!)>Au%!KBx?M`yO4TuUF75`MeS%`&>6dpCTr;6yJ})Z4 zM)IRYJKab(2n?#@ULB^qbW$P-EzJb#Lq)L)o8x#cSQKae!&%>`AnItv0St*$kqVu} z7|sq3Yv&l}17KPlF?;}`q?31uj5gNR3i}d&iPR@}Vc)2DYrrXw4-liMBiEXhKYR21 zG;!R~fG+R?*$W&B2eHL@rS{x}A%s4ylMy!z#t56R4|L!CB@vK~MI|FX#(`nmSg4(5 zck{Ubru(%d=gKl_(`QJ4d0_?W7qDMX0SO!&10N3c3f4yg(@(XIMUVr>2VtZxk%vrD zYPaLC^lDG9o9!vXPnP zir-wO0$On)<@YL$#yZ0%eag1D8g^J8@p*o^Kl240J?mWRKu0=E7{eCN)qTz10cgZw zZbWe1L`DF}LUp7x!h++$+TK>JQ#;lLO?Y4t#Mxh4SA%_~$QqN}Eb_DImWY>VBz#&j zVm}adp=dM-fF0+KFIWU;yzyYtp!d4y{cv%0%qRTPK0Wd7MOW8DRy+UpT1*!io-!hf zpAzmUSSb+X?j@T%kClcvsA=J=#KKA(Xp|?lv9gQBW){(qa<`g zpXAY+*pJJgizLLdxe%z3VmVe=rRTdmfjXwXARa2d1T$0KRn;-_z-AjFeK7LAA7Wj@ z42X&f)M|LC_hR6YMo*LezS;H9*+*-D5ieRtu^9QV!*FLbCZpD`BYx&(2r7&gKVAHM4%l06YtmwWr)TNxUEMc?M>N(H%Uw`P(ug5NQ3 zNI%Vft{ry=8QdrrOxQ1`!5^dEH?L~^nUFe}fj-Z_SAo7mAbEZPV`2~kCP^Z^7_?kO zgG6j4?02qLGV7rD=Ax0y=y>3Mss)zBF-N_TjVXQ%P@Zu#g(W4JA&wxp{jbygr}o5D zKWcO{42;0ayTro^A{#BZzRz3V0*Zkf*J2rGH!T7U9|-Pk3ybEF1Maosb`%-!fVRe@ z6Z7*j+w%Cj%wv(~}F^ zJMD;6hlOoo3$)+u%fOp)_SQiv;CO|)>LkVz%=4^gWgyq)_-A*bbSTUjDDGs25BbOO zV+xwXhQAg3C+V0R9@}Ab^)tblrluMKiUQ=(gaaFuOL~+}z>Ijl&z@0bN04EV(Avgl zM!f>W!p$#l8vMin^(t}NSsi~r==iAxQSf(sS$-kJi4tu`GddiJGm40+-WshuOqy)vCtTbrU30^&e58-x=0|%XD(7 zXs5J(4MT$s#p~qEXE!Q}e>%>{s}sdA;k8fPj0;u)%R#9xa|uPhAf7b%;U_f{i` z0WiDM($acmy{JCBaG2ogxb)|5lK-J$%X2?Fkm0lhwI)II!Y=E+es2*B6lawPO`S#1 ztvVrF#PaQ^flkM_7i#?IEL5fYL^$DXn*2glf!(S@u)or_JL~zus4Qji!zz%PYCV24 zK!Htl)n{|aT_dBN09!f|ZO><(I}Ai?3H*f-{B1N|pj2-X*vsWa$EzQ|hd#jf6k*Qq zrlauVn3($%Os4zf*(8XGgqB{tF{#n%=-8`o9GpCPrZcCiY95omQYaQ;k0MYO!JGq@ zs_Xv3h=g!hLWmZwM&-5=p^tdpz|S*amueQT+X$QOj#Gr9AI=3fMmdWuhLp@)_ucQ6lH@$QwNco#D!LBESoR1>EN%#YIv8s6@z zUdi1tRnai&zFOXA`Pra4#KfsdU8`WtYe?9X0prHUnDYIl5QbS)41~!=29WHRh>I`1 zDm~?OFhJjFU!a~IzGxOWbn$2`hv#6M2FpwK($sQ=P_Lq*iH zsNOOoo(=_?5o*7e2AERpf*e~XY)BWbUPCo8$b(quf-Lt(a5y9(uT)=WOh4Zgnly;t zsm--P!RCGp1{LTjy7NAB?9hyE zKEwOzCqS99X3)hwCLhzDQv3=zMKtCc*QuxW$*!81C4$oHo2}Z91#N(*EP9WJu(Qs$wyf6p5p+Y8=W61}cqs2lucx zJ?IlxKRI>v&LCz5_J;SwDf|sx{*4qHQyu4p9tIHY06;hl3axSNDC>8BE7Uqyv;aow-&{*TV!@r+M|RWA`@AwetA zE^qi9>9OY*|FvOx_5-Sz(q5$7hu`35I{iYP2ERlz|J&AADkq|0(e8y*pl*qcZS>7D z0Mcu)U~ra%fM{i5+U(^8#Hq`PlmS6EeWi*n)d5$!5cVWQvJr0V|221Rspu-?;0e+%2JaM9`4 z<#HH$<|SBGq6F5Uxd2^q?6nxBQt>#13F<#7a^Iwjx+gGVfCL`<_^U}dMo%`3K+TU< z5`h_Lh0bpnuA>{VZXZ0wO8uiK#^#hIdHl=9_UEnq@>gx!ENS}llq8~?_-udjN(&f5 zRd@@R$;E(AO}sjK2f+?{*|Ah4_)_3v9{+ss#R4YU_Z2h8u4g0G_gW^TuYPh6D7Nnt zioifVqF-g1Yep2`VfxOY(DA1|Zn%zrw_v-6=&MP>w+&|Vmz`GTvU?nef3)4O92_=q z=ue-WVc5=7>ix7y$}|w{3k7+tkp~9WT$3C>L|}1HvQ7EVg)Z}$4|n0%F1`kb-TSH% zGV;HbN&!_Ubpc*ZN53)w*Ry+fcE7YmZKJk0{cu^3}ocU44an*K*v3@o2Y zema%(=3xeuKAQ}5)VHCTA!1i~4;Z3|0-wFzj)wHMK{z!$`Xaj*~{ z2g4}%@8?A^g#P#zywJlwE%#G~ZOkmzTH17-a&@PFGChUZSga?Xsw8Q>Il6g7*3w|C!u9LM=Jnj?}Vc;ueUl6#Zaj<44D z-M-ZfBgjFp8Y}!1V2^knh##+vpr{)21PdJ{D@Ql|T;j0#)mp5=_<5?t7auXt=LCx??8 zMC+5J7#8MPy+=-n>c843i>d_)sf{uAo^Pkhb)L!w`Zp0oZ*PC+a3xSjHlgz0qs#8z zgFig!bD%A@W;Hd$(9kgb3TBPc9Se7gM+xlT;;ji8QQ!XP7yRaT2nInsR#F?DvP@>- zIvQZhc0Wtd5wV0c9u(jF27+9-B4?NBZBIrH}VBMy|t; zWgB4448j}y)?st?E8*QF8Y;)R?;=#;{}Kk4!7FF6%}oKFr*}{4-vX_oP}n;H1HrX< za-ZSHH`43eEVu#E&10%iF*aFO_321ANSxpNkk5$jwrBhU5*>9pJ^a zI83ci-pWaaLv+_R#Q{Ps618Bq?A+u>}U0@{- zzC!uZSoyxKuoMw2SzP5cWn1s7DC74WXw4pLrItVKw@Cdu!#ezX7R;Z7#dV~>-Zw&x zEV_9Rv12~Rk(wY5QZ~Av{{&5Q{3Y$qUepW+(sVmPE?QTH3jga%0y*mNBnKVqrnt0( z&#O3tqI|w|KsRRg2P@D}K_&pSL!b5O0!q1<^_1yVT4{_N5;*h#Im7~e^i!et=K0FC zK{H5fNI#+7x3fAt5_l63)`zCJfPYCfVqne;9teiYG$QkbYQc#t1b5(!_RmozZFcme za%Jm$o|^Dm)fm5f@Tdbqvzy}#&85$FS7ODtN>72{+t#0vC)^IazBcD>wfn@jsnA6b zk}0p)^rvw|Utz)Nth6zG$S~%D$TBdYEDfi;u@qC6ugDV|mgl|yyWW$c(Z_~I4`b)T z#NqZ{7U7t*_zXzV2k}3an*4;AN@S+ZIM`My?)6-!C5wT!G@=+y+kcu`#WOv=O(^Vhn!P5HQ#r1IPu43L9Mdo=S{95bJrN-u+0jp|(UP z{Nk|By>JkA(jz%y3I;83y~}JGf1^0(^)(}@ib-(hY25Z-hUSLs_-aLsD1D0GT9I(l z^4^uDKZ|m<=_mggkuh_*0=jM*ZKVH@?Mm9kGs`ftOqGAr84=S{<}lVLN&~cDyzqMjD@>?spx&O-`LFE_5Rxr&ayKMi35YwlYJ2QMfTdT_=d3u3S z|2=KXDl9k!hpKMzag-SMU2!m#ZJEiO?#as3)9@?%Gt5lYRoN^#R+EkxXwN?V+wO_u z>ToAo^7{gd1UJGJ&m9G_1d!_)B9U>(^>$A$sw%AKnn3g7)r^&q7j-8-i&kjcl|5%9 zfoS3};Dfsx^2;Xw`$DR}2__TD%FmDjZ{>4SFJ}lCo?LLVW`QNv$hYaGVv0M9Qvmci z!$#T!sritV)06}r<+MOS0oHdfRV)7o&!Z(_e>g-B2O{ae58%#xQh2|9ebW@2pd@tV z_B8MFpwOi=`ll9%yFX*5Cqpp)i4W*&1REg5wquw{j(2fZ*Xi?Y&%r8=pC8e!=b4t| zrQX|w-*=#gdcq8|;9IOml_mG}(qxVX(-!X+2jimtF=hDmH(G$R;+<>y71S(UkIJ1E zpjy^EX^tp*h4h`4x^r$QiZqpk2TU>tZ_`{>?q#u}qZ+9UX^80YhdH%FCfDpIX|oaG?ksErZ4|#ZMkSj6m&=M9_6_Tz$AKI5E=uy>#gY z+UwTRs7ZnqZ^FL3)Nqxt5^S4*nEUGh5MyMvto6hhjYgDA@uYnjQA^ShIDO#61vpiB zaj-yYv*MXB3EpiF*p4#7rEx=_$DsmKg-LktLC=)kX+ci_^8V)jyFf$jv%+UDUj57= zJRJg?knn!1jgiw-BtU)|Bg3@4paccP-XMC&1VO}0o(Ls!!=u5olrKW~T&AfRF!cp> z<%gY@37A}DF->36PzfmgEiFJ2ZYO~UE?ufAGq0(4(^50RRb%e%!PbtGdv=x$Om4_L z4%teG=j>EKxFbFRFiBZ=Yo1ETyBp8tmsj{I;xp6goxTyvfcy2l@&oq?>(;=GG8N^s zXi*gdBCPai8X1b!@blIAL0{{$MSfIw)Xq&dqJpt)@YExMN?_IYoQ!;;_v-XJuxBvN znIBIfj&=m$bu|Z)O|IhW5BV?o`mifmG+*;4_-Vax$<_kMiCtB29we_=!;YiBojyx; z#8b@oa$b|M(55>&xYKHWxaL!q5>Kp4u2FM)>AAM+F?a-e@h29Ty&exO3-l0wDO}R{ zaO2IKM1LlGQ3twGNrm`TMQSwy5yGozm`~^flo{z~y(0t`8^DNIZ#Jd58;C;H(Guzb_KVT*prISQQXQROip}8O60W}|8BFyZ2#2x| zMKH4zTE4c|rjrO;*!yAU@UtVTM9qZzHkF(MDzCyL>5*jU=P@p^>V8Prgo*3f2BLY$WQ)@_QRa8zZ8Ir{KK%; zJhE!JG4w#nDrfejtHFc~A_wkC1NNt#=f98i3+(mI#F;)tV#${i4!rpxb=N-Ox!0f% zgk)P$vPp6u_ER&!eGc(d#Mz5Dqs3NLZG-Gw*R9lew4I!bV zZ)Uk>Qut34&$YH08NLVw)&lgaV0xY#PpQsmV0jOF2ezWci`;^BATO+t!8V;0oT^#K~*?#!U$70`gWEwkZUO0w?M=?s=97lCmIK@7Dss`=IaWQBiFJ+_) z=2Rsh(6bNiuhqcTkUP4PA3G`X*Gf9zaMIKpg6AQKdv)_NM*+_9>st=&xc`vKU8u=J zraxI&xeQ9Ibb11C!r||^G zF(%1ypsptZcDT4kZ*}&qusTU+-L-AA^gTIwdq5pl)pfs8{R<3!Ci`=O_O^@$js$PX z;UnH}mC_HY@vXqrQ$7!)?t)E0B5aUWi@ZRe!y1NQ$m8d@_X=R#vXh`W3H00{h9xvL3> zYjJVt!Yp}Ug}~EN3#}~dokZmitYlf02mzC$t8yasW8aohuCFNrWpz7cBRlPS>a_*S zcp1Ozh^gMy9dEx zzHSzi)dQYH)SKYxbAtRC&*<1F7&l9kwTl7DY}(1o_?rPRE{2DwfE4-L4g+W?@t8uB z*z_EG3zB^hV&NKtKRqSHkF($c-y|P>t?3!FWsn!h7Cp27)(R}xgo_sMLm*^_Pt62s z^fj>lQp!eU;utd9*iMI&QpUCq)cvoX$XRwtS)cSMe}^h`IOPFlw)szr-+?EV;FAhjfVu8qV_}B{9&5y zJA)H96h$~$=$WgKO6YEI1_U5T)ZCD2S|bRXU3mn&`E_^pc&L*+uKzD;=@1#6qyy4} zsk#hAgz#j}s9cB&Ffe=FWSBVKD=jh6k0{%th0~%ShO<6Mm8ij(+E7D$EZ0 z#orgWQRxDH9)I7tKU4^JXq-PMq!!;mY; zrY)UOX#XTuxQVb@5cTV`VR>bf2|XNHE1{=u02kpPdi>N~85NJ1=?aXW!&rR2^cwus z9KkHCE!IAGY5nx|iZq>?&>*>?Vgz}9sR|v`Mz|UXc-V>^;GB}F!h%$hBW|FG2h^?& z7sXO>gqmWf>d^2FPe$nvt=zwn-vSMO6)DUVH{5GXlsM5#kFkjNvsFz2949QPZ**VE z?cv55%nZM>XX!xxp+~_jg;M;lg5Wrtd37G#s$r`xc36tTUe()x}@maiK`695i2`L?eh zfZ61x#ByR6Hne;vr}Q^PUN00+{p1-@(oUa}cn>uniev(!kyigVZPQV(J*o|Cb|rdy znvBbjkxUrYia<{gq4M0PTl*e~sbAtN;=yURV`eOxkAq@8u3}xC1)VNw9kYQda^ua1 z`hh0l3k_V(n681ag+E}^HV_1|;u`ntoElRm79XZ&$@39 z!DRnIWo1ODYnx8#6VcljJwBjIyZff_8wO~;^B;dD7sHt!=)s?OPpI^+^(dJo>sA)! z3CrA?G}2{@D@fwWkn0yS-$DQOM)?CHLEWNNV^-L_e?g(@N&y@&X*gZj^?8M=o0(_T z{Af$3o5uKMDsb1}cY}EfE9*mb4;FW_zuei2MtnofhrmT96IYv|~hJB%C@LBi9K_wkvDC+7_A?lEwYwcd{jIG^L_2>n* zn06&m_{JRlbF~-Es6rXPF@~aEl{1DOtQ3_Dcu92%8@50OHXx_f><3*HLkn6Z(VLCaLn5T~Fh zW~KKIGnYYkgfT_MQ6$Mn#-cT*VrQ>4X*%|W5P5h!>hn`LSq!cfMKB3-TzZ>Z41XKP zvR@bJ&5~>OP$)@#u5~2B0)HqRH|E<&ce`}PU77zWm=BUu)wrapNHzk;ZTRo7KkBr z=O~gxmt0@|Q2NRU<=^PU`O#Ybf~Pa!gbDob0ukWbty)!dX1ir-lM1U87rLTx*fcQ; zNI~IYe8n(DI(@c)vu8MNsOF;YVWxZh-C7P_RlYtGs~BtQbennmE46IdDv7c^acLC1 z{qNE5xy3o!&EGpW8eD~n8&lexJmg09)aUrcwsZMq32{+tS{V)2yI?oa#E>?XnmBM^ z?+yNjo%|u@JX=t?5*YdH;F7Z~kcaCD?uEzN0_DW70Qv zden+Nm$*Y^+-gtch1$b&#M6i9YC`er2Z$0;0>?Ord9CG&Acsf-A7C($Ua2;yq* zH`8>Il)_<~W(Qi-(Y1#)@0qCIxRDVH4ZtFx=6%1^Yl(NbMp0Va?5#C6nBVE;x#ViV)5}P)!7HV#bE*J_2#2bV9;6?P zuU4syJGUt*6GIS2(vozrvFtmrKGCn0N?UB9w;8Acl#Ll2qBy>q#p321EG=|9mzfP>o`{4+X8JXvUMPHha`7_Cbjt~8NhuZgTb-^DG z@?>wGhRJm6=&C5+GSjn_q|pu3 zVhEV`jt-DsmvnkyY#M-|^1)iLD@e`29#4Ni-pPcqn*V)mLzymkxy(Ype5hD4z#5{$grK7a3;W;j zyR;q%o>48`4&8K}3$Zu5D}L9N1|7*A&}4~jpD9C|wRaHMJOKwmWoW2?Bl;1>1N+;O zpvD_KHP{r*m5EqEdS$@3dK^;|UKDuKLo`JIxNo%V7G4OE=VHI^9|2Akf0^?>(s4gB zq+w=BG;m@R?gVWwBvhTW_FDA35UMXe1T0uEo(_-~bU}k;Qqo1TCDTQ&x ze9k06Ay7~iA_i0lL4rK#%?+<+n9WjGk0Gzb`7wgy^aKAZ0R$p=`WqU?(5F^LOhdRV z_+fHMc;C^!w-~ON8(^L>7TX8&vQ!pe)(uy{g3F08Aiyu)b6>2`yZ73K-MJjzI3na3 z{C|%-{?6F_Lxemnb&9=~P_?I7I_gnuYQ2;MC*hN~5grTdz#rdURfJS((t}rt=g?6d zQL>fSQSa@KFfKLAvJ8~Hz}Isf`4x01lL_4)Sf48<66x1*4wTCb&26vj_;S3P191Eq zFyMe#FVmw51B+zB`KE-(R;#e5GivWc0Iw;$=>=ba1es$(cDNl>vc^hel2Y>Gka2aM z2iwcxa+!mR1oGL(D4xiN^y`|ZoE1ib3i%X7oLE3yg3>^pvUfj}#p^};ujqFx{Sl|{ z#&Kda-#oXui@wYc`512BwrOR7=^=T*Dl4o` zgfaiR3X=J-8DA-^`zkjPZHM~n9Vt+C&j(|=%2GP7;+{aY;mJ(S-5HoxpMVz)assC( z{)c}(2p}tktuD5nYmDq~?^I5bmH+l*6j#DP(G8|-&|Q*6K8UHfiJY%eB`=GUtBbu) zD@$4jed)zCpXcgNYR|l*E-`RJiB}n#shVfrUifNddx=;Q8t!BzTCMNbxXLGp*QwJC zT}Q6pyBbeDgRGdYqY_`SbEPff0Hb_ij$;Dm;7I0i7Guh9#nk3rUJE4sxli!b%8*FU zv_@<$@H9IA>g%EYzmLb@pkL$blj0XZwDMGu&h-3bVkSEw9Gx}?y(SOdRganZFgg=cs&6L#ABEQ{#VTLQcTNsmOh zRJGI7=y%&8!B^^W-9Wwc#34NNWBTwBf{77XW?=66)>m%)^o17`y>W787{YuvhS}BJ zbCmv|OIFjPME#5{|59#Ubp7)o7^XIT!hZ;X&Ssx=EW%uVU1$=tiEhB0@O1SO^sU5L z6SY(Qct5FD=$eDxTdC`V!n&Py2jyxbzXRaIt|Y%A}12seH4 zx4VvNVpq5X$>&K1B+rLU#^v{MW*~a|1%LBg)hVx+DZiFi8sW+bDYu z^4-xV#DJ*Im8Xh7vTIvBlHKZEt+;SuTX7D!&S(8aRLyR{h`Ufs%kI%YXU<(yqx!zH z8OoUDuNawx%*;s85j|~*!b@8vVGJMz(u-lvgXta~%or42r7r_TPZ<5 z6jikVAEw4@aLj0`AW4I3eGz&tcfyu|&6OeGCGrA%w8Z8n!uC0Sr{1j$-nEm%20>_P zq?QSYV_O@{&4zJ3ZfY2dTY;Dx8&Hj7O72M!Hj+z8d?)jHSsX|G=RoISU-4yZUII_$ z?G>QHM8}UILXRPKNFEln{Gw-yM(Q}I$h;Jrsfky0OPFsT!Ikzf1AGX>=?q4V=! zCJz+KH%1MwN-?e~uV?X&z@%{aG&pO)`LVBFf~OPCkJ*UOYP+zKL#RX9w|jD zuN^#}=CGZdS(F_-fD2&fW={BI?si89<|jWugS46UBaM}@b8IH{%GHg^;qtbN7~M7m zWPr{`yH9Nf)J7TF`_n3fibEB>wPpLH*Ga-<3hO!!d;B+Fwf%^A6gR%AImJ8AMmt|S z;TEnS3F_TmR}BshZcP-*BSAoI$S0Y)uKn|mbw^S~O+ZsRDBtlMSM+0KRFr|cyTJdi zLe-~ae7Tg>=P`T|il>R!AU5(tRR*F5{Ss!s{V%$Q7M_ewldWIA995L;rwOK$S<8bz zhO2-iaZK61K0XN2;EI{v(2NN*69!YfH@ZB2{61)$oE-cG^d%5U{cD&?&2yE+t*&l!2BL=d$2u98Ukdx*%FpK0 zg$rE=m2*&oF_)&EX245lz{bF4WLN^72s1My&+xbKkVO4JK`kChVhx1({ZgW{#q*f0* zC%0{+1nqjsl%1EJqt_;BLnv{5!R6(wFliQJPQ6JTZRaEY1!Veggu_dm*y9`V%Y_ye ze{|JUkIOQTBO)OGbaMC6W9(U(@VC;C=tkJLCIan)-OLL?Xl8ZPDY;uiRpq_fE zS&dHd*08$Nv)9Ir**&e-IEOEK@81*bw73imKr$<(!{YI?^-fg%R2h4D0? zG)AtdmO<3W&@gg$_suA&Rb)ZwY68-5x3HctACLA?f2;g3C`|^@(9j6H&hR$6?Yc-8 zSz`&rPZXn2{c#!^iqc;nosfXXbIxfR>@~9L+V&h7@y86v$VBx(&o3^dQ*9uUU_h}H z%<@)O2h?-fhs>j8b=0jQh(s%Z_m-Uz`HzdZ4Z*DOH?z!Z@E}3`$np@c$|}q@poBc9 zgfZ_v_ch8&4xPx4WM_s|;yh?pQ5ALk`5$Vu3F%<}wSo%)3H&A_u4LI8 zQu)@Mo>S|Qb+}9D+r8tAx*Pj}SLU$qBy)%Zs6VoQktKH-DrERT|M|Bw(bwkYjAka= z^f6>S%5<~bNBctxU$my~&A~yXq~8Zy5Pf>Tk33Z>$zZX8ho{%lxwdK>1P`rs~%<)-<`=KdkTkQ^R zEcDcVWjfjXdM>iob6S=eIX6{vJpDJnx?I|BCs$?dwMtg~S#!LCWVykk3q? zAGcN*U26;bVu=+KL+0lVAc1Rox#<=zfi1-R|6XZe=7m_RFG4cmaIW7@U%4nKC~Bg% zsYEq?kEp1r1rT9|2B1RVV|`V+j@}zy>dHz=|5ziT9Gsj1;9l{*sF1%NzG#r0IUs^j zsS{686y9&1=>(ZpFG1SRl74&PMK8uX5oiK*sIYU<(CY@a3iMx%*gjhdXe4jEw$qwQ zP;PzT)A6*9BBGD^7tlbqfLU5pQ|gA%wH2?XTtFcv}Bf zanxjx58mqJ;+2=Zip{k-(!CrIYIi_Wb3_SyqojkxL2PNQK1|0 zuXpG(hlOSiz^{&X4@ch01{U+VCf=>4OI{!7cD#l(^*c)Z%uG!FM9%^1VxT(W#(q@7 z_vc=Lh|IL}$%&9mjGOa3i2x5uG`-K`XG55V;#+^?zBIP|`$tEvicTwHSWh&h?>MTh zbG;bLA0&|fy-Xe7Qcs|KrZ7xjy&VkpDWzoQm)#s6 z4)Sv49f6pqEm72m*PcgaQCXqfIx2k;I@`!1x&doF_Dk*g3rIC%QVZ-EdN0Q`02=LGbEu+RTbJ+~tVmMN}8ED!Gg; z%>+>_9Ys$}w{wohlg?O|oMso){-^kKKT~w28&Y(n8}x`Goa>2Xnn`- zr0fw1N$_pnk|7tu#z7?3?;NIRR#+!TZ4qyB`ILU>+V>QH^)Ac3TX{1#<-YcAetAJ( z=~9@ecf)#37f+E#U7bz9G4$IL4Q8QZEGkmgDXWg!Kird-*6o|Ve@}e7e_HaP|Dp*# zxDt{2xi|97h}x<73WEeIv$hcO>TKcr#Bu(P)Qf)-O<46~LwzpqF5JP?p*zl@h!l=9 z#lfX%wkC%qQx@_V6L|*ib~x*0NpLM~Gyb-SR9rlGCZR-~Plhyo6Ah%SCPZRG<)x-UgeOteiS|+SkG2@xBJ)$ei&yu!%Wl!jIpuFY1p^r7c z$Hw%sv;P>IqHfCm$7`61G?`p1UHG%UsFt^5;gGk=bk;|dU;djX$|j; zP^2odOTMB+5LFM`YU>hal9$vli(M$%YOuCm=~18l10N2@o^<#f^L3W94Bbt{dk92LAiWZ7CDhNb85}0 zS#~VxbGGvkkse=0y44q2Q+NE8t+YumlqLRQ#Wll|sj*-1WdES-Tjz=Cy+eP%8TVxC z9Jw)x5Oy7wsYG4WGG^c}LveFyvTuag1Yx65i@z(rtYdwTw{MWrJj%(iYyQfJG`@|k z!>&=bBI^>gm^&Yv{*q`x*9>;c^|eU)pXzWc)NG$;cgp<5&FP~2`u48ey@rz=QuMOaWK> z_KFR$pd~Ad_8jH?WCGyNvCe zPoizOd3ni&<_0#nW>7GcgPx!Y;idbtW-x^8MsK8!QDtXl!u>K*M)Vhj^A&nAj9laM z@<}@<^jgxzrTTAW_(mnppbsBvFWmPDwX~Anez$+qeuOOVEKM_=vxT_Uj{SdSXtj8~ zo-a;+Tx$i=3u;Sl1upM%9$sDyE{Fb03|$dhF_Xi;K~$5QDsN(pIGHS8Yl|%4K#ru2 z&DP1Lmh&D&>EMLhekD!?e@`!acl%ey@>3u^!t|L0=5Qp-@7&znTiO2d$*&ZMg2|Q* zMDWmh*ZbqM!3EZ~^nI=Z*Uf6!@^qYtch>@}0C{X~j>S?ne!Z~g2!RFT2j^CWt(_f_ zTpTML=k)RGm_O~8N2`^J0Tr-nSrwJ2^TT#*|A0lFDLwJffYSwhN}o&P>N!JcsO3uV z_OM;Rl(L;OEQlmT(PdHjr|(y|ccpsUJ1sgPQrV?vJ3H2c#r@6o_1eSrIAXzi0vrVK zs`~ojz&xh0sAh21(Tj@)xL85kd0yqaL~nJl4@)tcYHNA_TtA-@w>_-z2{cZ~ghwN~ zt{SV1*%b<8(JUpXcy^o_MESc9ie*v5%X;^lGs=?QShi= zien4r3@IUBB@~#v3-{3c_6$u<%z%MDrHV11XVySCp9eiDW&AI$$t`qwv~A~atK~bJ z0}QR^=mS4G7sxE+P2l^vILnmO?5LOX$@_GP*NjC)MHHKQasBF&RzXVEc8e z5p_yMJx-0qdiAOV#KhTkbtHp>gIQp!BB}K&Owj^xOnSdRYmoUNOPDBzN~0^3TEq6V zbVSlp*@nPUVm=4s57d=_%lx!dRBPOllv<*)ua93~0kh{>6Oj+NEU8K!80}Lmi$Te5 z;NP+d>v8f@pH$HWSmZ2Ug&@XCQ@TqKrxv{{`Ay+A?+2E&8YNAMOaAJEj7KXtb9*3W z5-WXg1M>redZ>-w=}q)E<89jqJ{bZG8VTALWaDI#e0q@o$GVOACZlY2PAh}KfuzeT z(cq7KuQ(PSW6T5`o^UipvI*znD{wt5f_Kf=pZD)!+m%xBHD=7tF6k3w7dYl6)*0*= zW0EdPsTEGr?9VfI!tq|>nx%TrWdh(|s3d*8q#qAQZ{Ha9of?iA!|2L9z5sq)vGHZ~-jntx z6zViPlRvxb9hGc=vsaoA{@!0`Jaa!jFqNobB`{;*4jBq3=lv}cyuZ{+<$1CH7~Bj2 zIFB~kt6dV>(rTo+zaS7FD1L2$85`djG6vDS6&Lr9tUSzb4L71v4$4RSJGO0ab)K7Q z#rx)s6u;}gwxUME7y1Vi3uQ*#5flz{oKM;>(Ige4ao(=`ye&s?B%S&9AS;v*&8XB> ztX+8;(y{sdncVkT;Tgwz(_XxRgck^0<^yeA;p8YKjn)%|b)}c2T;@jWeX(L=+_vpd zAm(*BL#uKv>yY^hep|iWrBu${eD2BhcQuh2S+rjGaX7`mu2V6QXAQWybDxi@8eDrf$=d1;Df$5AM{)lf4F#1r|V@@N-I_Z$>0}QjI*5COIjI9 zDW};gtAtm!Iw=!Qt6kv@%FTD@b5J?-;N!haNWDP>>xkgeR$q{5&bjfP6sfFm43rGt zsD8-%<+61{jT$8*0TL7{&(ap5rk)>5X&pS3&t;~ir6tbe>m^7pY-I@hpWQ?loc(Ur z;WMr)8JOd5O)xiheTuM!Z#nUh%*Y=S8BLYyPgmOz53pu_fUEXsk5YYV}&XzP(`Fp&(F~-HdOZeO|*+Eh+E?fZ4+g~#+s3+R-p?gm>IYuP z4yfaBVT}tKf3GfAzwK@Z{yUc`;Apm!c#qHq4N!Kh|2Q2La|5fkir075o)^#xtTKo{F}}KR&hBGwed))JNOTD$+MWfpeJ9&@>*)RdA5v)9}6D z(QF+>VnQ1S{-#V4q6|DhLZa})O#=ppZ?v- zf7A!Y*^qz~!wzNd4JuFZ?!0s>mv1gXxS>_YEwmfrd?GGzsw9j9IrYN}++VK3d|h@Y zx8Ys|VN*>WP)MnqxUyvyh`fHDEX})nl53aWH9+}*m(j1XYfU+%j!0#z)D6AThO-`z z_}~mhrW+#nbNbwV8bY+pVshnj-J3lOBgjLNN`CjDNAv|d)PePxN*sCb_(bN5KIg6#U6sl5464*;IfEc4M?jH+t z=_exwb!TvZ>=xg*v@PYpJWTE3 z>A8CBS;%XQ=d4<)NX_u|`OC%OH#P*n?1*Hz4-0C)?5N@k6z%q+Jpd!yOak;m=o-cZg$7H$bD5I5W( zFWCuE#C!pF_lmu@D20;I#VOqN`cxr`$1_h~JLZ@(2tEHz!AA_&YBk32VYW(^IKA!l z#p^x{=1mkcxFi_#I>|!>2G^ExG%ZV_+JI6f`R6Mki*tD+NXzwtr4q{=0Q22k9DF-z zS4T=05Pphf;T(Ng;!ZxfWxkTxmK|Oo6YtISD!p3LQpg3(!JDk0!(7C_e6qa^! zs?@4?{E?B7BSFVlpUTY0YF%ZqQQDChXw_47)E$j^4MlycW~F~#AW)K*>o?m9343^W zoGw}O3dBbL$X2%U&D5RGa8dnI9CK%jTZ=UeobC}W5N~c!Sr}7pr5PqmZ z?X$=0{i}Vs2lGhwqFLmDUfG%Z4sX9KOY)YH(Q}KWAaTxIPpB(0yWS~m^T9~ga*b*Q z9Vr}1A*qmmds+?uMoM9B|y9`LQxRR2RWFf;K^hd_VxR~B9?%oXc#jk zi`>0+F*VhX#UCNR@-_FQ{ytN;qiW5dbgn>@VXf(@t(~|(RS(=l*&`RM)fkjK2NUh^ z&v{F%B5c&6C@GC??SFr!F*8xnN})-8C5H%Q2C;Vtj(JHxjg9t~-)z`93y_hKAz~() z*Y;D7yppYw9u{&ZeBQ$;zfXgqjF;|g81-c{oOdxl@5Av){m(oS6Lah;E{i{?MLk{| zvYHWtu`HTj=j>Z4Dr^v8!>==!W>^KdD6&uAnm>;ZGlH`gwYM+(Or9%&5M$0_vF zen}|e{CxtA3^y6!F(7I$w0s|lR~U*!wu-|hlSZ;#=oii($zeq`UI zN}#c0s3kXZ3pmi^?)nVod$ij9erLQutJOy^&FffpZFBQvOF({dc)khu+n4l@cZr?w z+;A-KieZtBtN&gua(Z7oD-b3MU-c?=w0PeHSW}phFx2)84NVz*`iq1atSvBAX87&) z)+;>Mx%QiJin4xlN3^3m)1M9qwF5C9ROB`g_1qPKkFfRc$LV8pyeG&=z5%;0>QT@J zy>HG#w#V{pZqE1c-*<(QrKgvTSTxMFbJ`tgU7{Uf|C&>6$kq0J8~IbO z+yse29WVWq0#rE?Efg5e6J(TFaT6|*CtpAE6_<6>I&X=-8y?Gpl>9p_#MU0j9~m^_ zmoHydmVf!DEy;O$oCmM0B+5>;!*f$sIDRfp6-nWo(2V(F!9)NLlTYD$Vdum5bkcN5 zg`Y@`;euL@$*o!UWFt)w9>$)Wc#FxVW(CsY#Kgq4Pb#0QynF)Ri_PKC!cM^JkLp9AgA&Q4Ds8Vvk}itKOF z`IRukHcufr*R7XpV@<~w%cVUURl&{kWfbqlKV0b3f#B`m=8Mq<0;T-Y(#fRcWTdv0 zXk!w4?ed*Qro`8D3xhJK7{hQ(vlPJxpYsmJav=o-n7({pR&;UN*URyKtf2PkRtQQ# zihaSLSrR}H6BBx~fgC@WQs8}ld-7aOMDgn>97aCh+4&sxi$2aLtFIn#niO^yE2mC8 zuqXxcf0&vPiXGA;zWOjtjk?VrfRkTPFcLpaI)v5*xAP2+uJkot*Y(r-%hkh>%H<`3t>$A^p+dbO%4sETIw!bh}F8HuaEA= zN|jgO$!D51c2}6g66WNHC51bGftQpqlNPFz_rrIy3qOQNZ+a&J0E{_pcE+7+{egzE zH@*Kk9x3;lKcDC8$2w$gq-rVA=;ZJ-JgDANZ|5_w1YrySfOM@Y-mgs-g0nI+MGso? zl)4i1E}{n3z2&|^C;SUX2vXe(8rZ3d4H7? z^V~*3yO#vTjRhipudS;-v5Shoc#K&FLP`u_8Zt@`9D_Wao$VRAhKqk^>`9A?!rqv_ z#R4QhkX_nxpA8Uvo}}RBK)A)kQvm!o@=h4#%Cqle&E*@VAlZfP`AyYj>iOMZM~D~w zjHct3ynW|w{@GIf4xKxcpC|ovXS=u8dllIGHktBnd)1^b<~i-$u0srpdX3k2mr8SU zOmi#}asOY_2VH_MF!BZL&6Ug<6JC++rn1InDx=~vD(0N6#Emue^}TJnTnY8x=#Pvg zSnfDAe@srwqprT*42dcJ(R*C-Uj>MK#9{_g{C0MpIlL2j+XgB2tI2*(+s;WsTx2(3 zsIFxb=}nJrSccnLiEdazt0$-ANrWl|UH>I~I_e}=(bj%#NgDE2+o*5Y%e}sV9Zj2* zDBYjtNVff*;|^^gsmI}AY#4duL)KL9^jHXayKydlHysVwZJHauByGV;$pA`zS9xKW z6g++~apJq4IVib=|3#c{QVBIWy^x{%I-%Fi+|uOQ6{|=z-9-83Ix&3hTogWC6-xhg6UAc z_LX_^t{?yVUvjv|#~<(t3pAIhq)f&m%*Mh(@ENVuHzX*1IA{QieG(R!-TqGb=97Ez zr2r>nAR=aQdwHZ)^MRDo>rhnSYAw0}$LwhP3D*nz3%=3w;~K>pHw3&CmUrHo>C!7h z-|Q^vvA!Y>5%p)q3niCEJJOGdn0mcZQbh#O&gXHOPdUS0CVeuP>wF+xDvv<7B7zzb z==PFA$V=-fcs3n%k(W|c@-BW7SH9X_RD#kR?ccZ`=V&!J7vRvIKNx~nKJd4UTVsVw zVR115Ao2vxdV7>gE_Xm;_zGNX=}&vib2SM!w{HnA&AvvqCYL;HDN*t2N#F0$e{F1R z?5?`s-~ZQR^jF%sNmp%_JW_HjBij096@xcbOoJ@DIAN_oYH|~fay>U`hzRt?T&laY zxmo{lVKo8IOBh=brwjbQ6da6YtnNu)Ge^JCD~Lz@h6B$kq9z<67tc-@8yg$=ur8tI z>DicHTpWg<B7h`2q}0I7jb0Dq%e75b&ln(_f66iq9~%=)MWi1_akK@TXeNJ&IfTM9SIM?#DiF z#>eO|(C_MQ68SX>Vpl(K~B-U)au8i9U~6`^&9atd+?F^bF{EelS*U=0j)s`)a3hxL^X{9eu;rfkS2KI_0keNy+J|Gj(r3aki6By8kgba54YFPJIdd$jL+Ho z@8s4T9%dyWIyZ(lcF?J;24WJ7h8ps1Gtvb+986zn04MLR*{dZ0) z*cn_@dsllA;5ZH1!J+>_wxd|%Z95pyzaOz2SJfl-`VZAzqGKonG=!xvHeDMG3WxtA zh?DSJJ(4I+_`KLq%%_Z1&{+W-Dh!kR~HXG#;V=NQ6yZ3;d_ zo`whCSIn?V%3wbPSPnU`U_iF7zrWK$=!6ucM+g!2^W$GJSX=W2fcZj(j=j%T+*)t+ z|4`Zl8aMf|0sg&)DBk<<63+?+mcr)%4;!AD3HkF!5fL74hz(u6`&qmm?eq>fN5y|= zw3n8>ehp7W`6F8Hhs7t<3}T+1o+EQ}p)@REY`AdXCn7SuChbjs8o|LIk^32*mEY$n?B~Br zhui&2hYvFqNEpQI5|WZ%cJ~VM^Krl*9dT^BFqmWQO#m9cR=`Wr-c2ke;#ztBfM>hk z>fV_%5#Tkt?%`!B_gvWc0Br~o(=7?n+wvnx+ehZ?;^wuNFgDKQ`*fJ`4&bDuWZo{e zvQmSrGU@crPA(q2OcZR&r!NDbh4M-ktKASU#4^urHiz9 zQw9%{3MWH?O)oxi(C6`L#2z433Hh80Pe4eR$u>-6Gc0n%!c2Bzh-mmpfJ6@Ko1&uljJi*`@AR7`hykYaCZ3p(`*^r4TGHTw78by~ishqS zhgWVnLfh_|FlaGvJOX7&n#|WZSlZZ#bCY#uNrp;LA;l3o{8`qYw{kejlHdE~7o)>mc1w9C0KP`qRVQv1{Lcu@_z1cV)o1P8^ z=o2O~wd6%O*I)MAWlDcj_HM4$o)}!NAvE9A)g@J|TZ_f-w%>7NR=$`3w!C}j%@k_} zU^+P9d8jvdt)awFVKU)1GFB=5n9Q_|z9Yr7Y&Kl#HG5RUeCwSy8$2jTTxj}uITXeM z1R4}IHRGl5Lk0md+WPJEI{?jLyoNeI^wCQiV7}z61ws*!HKk+HJXcp?<;{*>PK)YDCjBBhL32jJwCWD5uA0$LTIbWC$kUSOk zc?!(dk?`WZ^U?JH*U(ly-anH z(F~b6If%9Mju_|r3!&e?;|(P9V#7|AS~KE-^OFf)Z05*Df4n}mf-N?fsH>|7gCshT z3h@)~PL==;{-)GN!uyndT1_w)C@(3--Anl_-X@OBQ2r-u39#o~!@fr@N zd+xu6wJmYz20k~ugvX*13QL{ZAKkq9HKrsS9&~?)?zPEJWukb)p`xd{V&!e|C*@a1 z2)^hLAG#PK&WWfbD{4hS1`PJJp017o62S(vDe7zx17rRDUq%UsBl++hhsIm^Krbwe7~&B6u^)m7c9CQ#QOMV?=tr|QW!o#`AHqJeIB0>0`CJw*sjW@= z3OlEjhIZHUy?zt|$WF``jZ1fmx(&`&*8Em&Q!VE_{}!9c6%-Vvn>}lH*NdQ@m9&o1 z^pPd0m{!))_Xh9YA@BLQ#>B@rE;3}7?$^}3a&~jeE-As(*Vmt|91_~S5wrr~Ou}XU zCPw`-@}_t+6@VwbawUF-<#L*+P{2@LO#NL(BicLNng5eaoPiHf#9h4@(`G0}TG%`6E2)b9)!otEof=&SnJsek4`n%tF z5Rq)?Y7xaQHrG$f^ex8t-*ox4V})14h$Ja0Vh42F4Z&dMgGpbIFo>4B$n8&0TQfI& zQb0<431woa6WvG2ATn`COE^6!54WTXdJ@^%+Fsv&|NgxyOh5t@eUo81Y&7w*%Y~!W zhC^iEW0}PJkB-p}t6gw>o7N(eigcL|u&M-9{gRN0BnECwc-Y!OeIToVebbRtx!2Wk z*uqe&(4p|=8)%Jhkj7*?#m zYIS$~aN83_*U+ydYl8-g(3$hcAS{aCzx+{bXAg6I5p-P^Uhf&sbDX6lvN(u#XRS z7oi1ec{{sZuj^~YACylx8(!=E1$|AI%sWsKRzeMLvv&0(3p403DsRvEfz$+W6C#LC z3|dV6jE2KjE(RZ3SYJS!Rs3%K#iD05(2LNPQzmSeTD-UR_q#w*?TDh2KHcqDFT|&9 zJ%vTp?Jg+H&du>CjGaQ6xhp&MwfZ&}Iq#Mq&-4m#G>3oFFEC*YiYZJ$dczHuI&;}4 z7W2J&NQ^cl1a_E# zs-`CK&4DzG`ZGvl3+s6|BiWxa5bLN!@J)!68M{AcFDC}{Y^Sd2Wivlw3`}f65=I%T zG+lV->f8{NL)h$GzY8t{${nj-9p@jzFj|+g#{D-RmRbbOpNp>;ld~{0OW50UFvurl zU_i6yGKlMDW_+&ywDi`NQeHcK91^@R0xRQl*&*;b^ruP*Rd!|?Q2)zlZwN|z*2tqx z;8OY}W#`s6H?!G>1HZpp-TL5Od@5m^5p)Z3tO$Il5M0OL?*2Y}Us>R%E3+lL-{v8c z&ozG#3;8*w()-??3qC=FUjaF>p%r?jP200V87}2*8@*uDhi2-~`nZLFvZBMN;dY2B z@)bH3+?LpUK<>8+*>E2m&HdDypxans*i?Mx#<|M{!uzHu`?z`gX|Yyb_iYs?;V9_tqz)z%{i|BO!!vB?TSiBKpeEo7fC|#3OfG@~#ys#Jb8p*hHXt_DUdE zs(-)b#%^SE^!rEM#(A%kL6fzfD3aHX^!JzD!d>-#I42u}?MrtHOK`A7_f3jN>_so+ zH|_n^^23Ky9!$I+|6V(;$xIq1gIZ&9wle`U$&T7Xth*J8tNO7C)@J#xXsA1?btx;$o?;nc30RN&17{EpW3} zCGnJ~3kwTzw33VV75llB7~@#86Pg%RwH5(L!!~f}DJN=iWiG-ygBoc**H#X@CAD-g zs`vkAmcSao?7TD&^reUU3x%<_y%(5_^}&F17D10WX0@-Npa2&FMG{%)qJHQv#PJDr z>HY$0JAfWMz3xxayPMokPPv8YMR+jl97auVZ`h@>MIi9udk_teLmv(x=kGqR zge?O!CTVDxem}=z!?YmY!+SPfpw`kD#F_Z*Jq8n6*}kABm(+(J*$RMOi|za5vTy5E z`4slhLIffyhw7VS0`62zvz9j03Up3xZRqMJ^?_n=tVjNpz%?V@GYG1)%AOrZ!%>wZu1;ytg;^g#bCW%EGna;@ zoP8y}ZqPC9?;ok^E3svd^{*WuD*au@Kd*WyL00QuXJa^az~b%g-C)xTO!7t3 z(3|iPj+n*k2iDZQgZW-+VlG`BpyfYIb|<(!#MT}D#(;x8jvkFm_4LI0jv9|xsej_%WR9G9315_Ty@;IG#e)#vzI4v`^aG$B(>Z;)z zc%NxB9rv+Zf_fDOk~=Y2^cnS0Js@GQ!%pHD;{hWGZU_Ex9uVjRK{+t91o`%o53ocm zT@j~mLHFAzE1#Cqebtf=`}Y&DcY<;0U@*h`73i;~JpqZ`l#4fSuD}J-?M7{D=Q00& z8~FUNRam7gumANy)5*v4f7)SBU*o|rlo+^{B~G6ogC1GAaXa!JXzmxUkp>=N5~bHe z;tC4kFcVSHrK>+~9V}(~VQ>otPFp1=@=2#?(Rd9GzmSNHtXz1ou;~la{b#1#ZMoto zi@LyW>%!WAiyw91D_PbqxF#Fn_T`W(1+F}O`&b7bn-)M!>4eM!dtrf}&!T%N;@I`c zrZ9!AM(MpyN2C)3++W7&-PA&tz1NuesSwK_;Rmm=kpTF)w?9v2_4&LmIblX%24}k7 zhWJp>Xgpt~ZaoeNOYMQ3lvk`miSoXU%W46mxDFTmkDWW#M`2b(o)gb8DJR*!MH|+3 zMw_HZU*KYs5uKz7&H*Am=hXM2z+o$&b1 z?rt?$V7J)KAaOGVAK5k1!}* z#xBmzj{0e$$4qa|2H|6RbpSHtxf;VZ6|S6}o#m5DF|?(A`RhPI2-#p1{Mgyq85|7g zMljehQgKnyNj6&8H)qJ%+0xzJ{ZSi`-0~g5`?WBcquE92$r>PpMO!Lj#%&2hBb z8jse)uJrGoAR8>f)DwsDe_ua7_^!?y){MlDC-GDR^nFbXsl1J)rR@6hk(W6`;3889 z$!6Xb(uxvhBAfublktvtQM(FW(g>|TKn?pyRnUPr+?Adxa)3My4r(yB0mA3m$cSsT zXI5~tKu7~KK+nW7Bd1%uJ>Ts&O@V?rGCrQ8TWWh`U1{ve)QJ%_Ah|FMrLNvVBpfi@N>f;E$u9I7MF@h)V=L(QA0y2VB(cHH3;^- zX`Z8>aRCKv0#EBc+SaH&pZw3fn>5<-MYA!lG9K|#S|7i!ul8J&Y}XYXA9*;ySh zZELY7$XOt9nyDL!wGlx6`nOZi9WiYA z5dcK0x^L4Gprh3<*i4l|g!av6L|`o)K!8qmxrq(|t*#e#^L*fCNYauP5`Rt7`z^>2 zPyG ziGIO1*5vByYKKxru(Me$EtJk|*CWpo6?Yl;AS)}VU=d->;?Bq9BPCD6{^K{Ylvr3; z@O>6N!8?X=LvgD6qf41<`g?>lw%CvVzHN=me$YK}xH zIl0jM!otzVm|!9hv$87SDA4L@9oWj89U1XUOQXCK-98)iwL?6G<+@HxP4(M4R%4$2 z{Bf7(!Ozc+i~hxnA7u@LIT{O04{f=-{L$6XL2Ull13&kVr@uB z*~d;zV*1=wPJDoW_pKm6BLCjx5x+E{HX7t*VOmzQhwbH!+~3^2+=xSc@q4)e7q;RP z9~YNZSEto_F#6)?M2Olj-KP~%Z2^SS^M@fk5ce!wdVLtuq`-*T?%AH6-~{}P*jCA z8)$vQA+lsZ-PP8%g!-4#qy^qHA0gQKn*xOZ)<{)Bs?*3H?5?D^Trc3Ok5SA;+rozIvt((9U+Z;4LdZAKh*WQa0yJJJ~BK3B{`<@^>!2Z-vM3(V< z+=mp!G}0`-*isGW<}$#+6p)a#Tm{S_I9rUW?Z-~R=SKnnMk*hNE`Uh>zIKaG{U~uz zqH6lc-rjx+=mpgP2H|KgC2zblqXHh?5X~!i2}0sA5ZE|4uunbr=j*Q<4Auj4*g5O_ z(;Hw2ej+K=UE!r|K&tV()dSJdQRlGgOzaDMs;a801IZ*GQe$?1yPZJp!ll}{Rhxnp zx*?sd@>jBSvZ3M49o*E+%(gCp07bVlQ;zWA)+|ECQrJSyV+@6(z{4#xNKV00$%Va# zxA>evw!}f*T5)<@gM$N|j6{Sb${z~D>$0&6WhR1JJuDr^Xo&|pVXvRP$MQEyo9V@a zcD0$6Q03U+Y*u^=NGaZ0>K;djCp!N?L3zBa>uZl@gI3zL!O|hU9FRyJ3ymoiNNbxr zaK@uf#IO&Izo*aP*jQP|TX_iyjDXC|7qNQX1e91~Kn|H$Sj0WG5i>W_yZ_BpQtZ)- zy!(Bef|F?`mI2zWk4ypf$J-uKa%!)5a%KC50DXI50KmJfA3u;ZG&C%&tZ*GKp5DO$ zX~i1jM6k?iF7xT>&_`LS+-my+yk@q_O?a-^#PEiFP0JLAtm$`5`3c8iINQ?;fY z6Lv5Bh5O^jk6ac2;p|sp5qkUHQK+-*lJ=M&}^OcYMOxB4+(`A)FjL znKoKj+}U?={y#^NuBgWtQ&DE%lip5c%r`R%4{v=Ur*Px&7FoYj-pxg+B0eiT>v8Fy z5;}wR=vNj@=DA*smH!~7)A;b+Yrq@d)RC|#R@jEZ`9z5rW zhC%0OM^v;wf(nv$ljMD?BL{;4Mf?|#shp3rDW6yB{-bv6eLD>Zkud=DtQqU;>sfa@ zDgOwMF)Lp66~y;2&j5s6(4xXVQ7|&t1a^mR1Q!)i!qCt#xtUx>I<`o)Zd_>y@EOsEZ@~CN$d-{8x-}yGpJtF) z(><+2)7_tIVB~8~8G?9cXkG3R8ag$kE7BrEN_fRdGq`t1Q6V*2y*zcNR0=IwSEvQr zVr*5I^>gn8wo<_;VU$}!U%x|51bIs7$S@%ATjIik>Gw8CLaGp+ZTiH=#v&xd%BxuA zH8tr~#Y<-BiU83Ss(-R~k=JN86Y>F5m2RYWhsiDE6B5$=B?Y2nqz&BFTt2qP+27qj zq^}z)1OgMf8X7;4;Qi`iAWj1;9O_WaGJjw7o(6iit7xXv-{@lR5IyRn{JkFW+rCz7 zNrpNV8g$$mYd8w9)fe6DfDwlut4e3zd6cmNRS>F}j9#ouJ;^|p?ER(W6GBzAJ7n9R z9W!X8?B>J}B3N0|Gxasz<;M7^`Zrr>?Gj(aXM1aFJX5s0cB*?QV+b-g;W`wgb{-Ox zMR@{5OMUq?0aE+cyH|@oH@3z4jYLsr&2^g(^KmYsG9s)v+sFMJQ;;Db`4L9eH0PZP!;X(QmC& zQ?-2(?%lJ@Ut^3d>vYaBQk{zmzcB807l~)nHLvg=f))9x|Au?4y9$30-q=jC4qOXY zR;YTx&m^{Tt3{PKNWmd*lf-@Z;u@n7@^i|{E-Xa<0sZ(P79M!I^C_}g8w>F$EA2yD zKMJ;XQh1h)S&{P_Rt}#uCk+{$5N~a-h6OC`)8rrbFYuELQs~}bt>IBOJO9R9a%0B- z$(R8kLKOhJQFb;N>5=JP4F`SzHEFw3xjsT@XE9!09yaASi1|-RVz6)vbrx?Mj*6bY zt|*6g8MRG|@c+iH(=7B>bHUY?B=piYdgfob_U>3Xx2zGH^Ny|$pXF`bs^2LE9rLUb zAHPuQHo}p3Gy1b031gV`%dLaP0NePCei^Q#$*D7{GR%r1oE~2aM)r0RYi3>K53j6# z%(f7*_!sA3)z=q4yvkJc{lh*}-}OydGWgy=*VixqSa1R3_2GtfFKR#4RHb4{ha%&k{4aUpU-(K(!kKzn8th{!SDFkF+eP{DndLhf*dBf z(vN%P^WE;(s#IaYhfDyLd)%4)obEpwNdMwG>RA~JEp;Vq*d%G*>Ra0OhDDWV$H#$lrn+Kg_ zZXTWx&^=iO8XsVtn2%~i9fX^g2Hm?C>uRFVEcd31?Os(eHCCbu-~Poua|d@C{ALus zlI4E&Y9%+>?)PG|r}uV*k{b?kJEwS%L|iG@@Jy_3mgor2n18iN`-^yiFMc}^2t*qQ zfl1V^J4zmF0uZq8>16iUKYv=bhH-eRx&c5FEI~`cV;xgcm4sz%k<%o7Y?!QQ?b z9Pv+K9T2;)=M}MB$_! z5c+R&q)YSv;g3-8!hal1Az@gxw6(1!98bVlDXFg3 z=>KwO^wPgXx3+-@=L3WJ=1@9^Dq+KaCwZz01bg*gZScPZ!y?LXK~2VY{Zgp=$vy3g z%%q8yuzV|U8sh$p#1uUNO6E@cSa192i?FGl-+5VCzujnJ`m1VctX+#ggKiXAB>C^~ zQYxQv<9{af=p_MJ`nXnRXE_IUTH4yaFSRj36v!}IK(nx9&o~gPknb(MkhTPU5C!f| z&}BSZh3ig*XUoJ{Sf3pj*cftNBTGC3YI?2Sa)?%w>nWYwt~z1ZjX z_da7U2O>gKT^SH`Eh~deOJbz5RL2DBzM#>3T6vzATU6TcHm4C&V7-gmeo;U){g|G^ zsS#pl+|{n`96T?$+21^R0C&(ZkDnNgzhdm}+ICm&=V9TRS$*&76@K2`fAS$Od^*6O8tAF6!vY^Wpdzz1wsYXV&(q`Uo13$PWA_AJ z`!u0%H7>J6EW2qQ6g{?)b2fQ;*>~JJn$7o?RQT0X3Pm|1KDyc|%{5Y7n=)$$R;F;( z6<-EjSj80C3+JB`i`X-SSrx^u>WMSxbraD%P8m#9FM|SZTD9cbkDGIoX8Zhv}c9d+-B|sN2(t zu_b91+5_YvpOP#SnJL3dk@)qGtrw)`3U8Ro4mucT&?@A7DImR~YwZM&(6J19y5f1k z`9P$6@i!n-0{{#YQBuOzfpl~(v14iSIS`KRc{|?cwtfJEO*BddQ<}QE$!b$RHa104 zD}g>mzYDXn#GZiJ)?tK6`8E2JHXeMaaAHE9iL`poihSJr1-_g4-pgy}S!Djbm+dl$ zv$z{lwCqtohW>q#Bz8YpL|dBUB?lV z`Fi6IC_^yFcnf%2xj){h1;l;Wi@D$+K&K%GFkN<@>)b~mS$tu}>pOUh~{wo({>_gR}xx;FM? zO&2S;p1&X*KkxtCA+t6|cqhLzTrWd^Ut_mWm{>xWuGA1XVWVvzO;}JhP=Mqdshuh- z4=6Jr>&Pyh7KJV!@{!jcR|!2tNz3P};9nCCP5`A4)LmZL|C=wxjz|rT80;Mo??8P~(HwNlU*43((H-!k`J1xVC~}_I z$Cim!KKPPV4}J2Fx|HwYjj1UgoBLjPiC8fYPX;IfSn5XYk8d5R)<;L#cJ-L2sm0|L z8t)ipYDm$ZGedF)ahPKMtg(PY%T`ZWLbA?By#rb|G&q`SLYLh0@hq*J=&OW>R>j%TYCHSsl4X)a7+9?)lE3F&@>b11X z`p!=Br3M?vl{+&tVEBRNsIE_jO`8+1v2L#LIyFUUAJ#&C&a*oxq@6HA_Pcp&{HQ3n&UJLhkGL@Zqd z&D^_c&c7l=Rb-8R4yf6UuSCXq)+51Hm1#BH<3`VrG=}3w7oX%BnHbTk(D!z`xW4}M zszNI8Fca8Igj5+3sU_trHO7Rpp9jgPL@9qWrdn01w=Ug?E@COY8_`3Yey>%Y#H`ja z%II^KZ3-{P{7rAVboSjhvD*&e&ing&u;^(zgjRCrI#}d9h_6_9|D_aN4`1iPKHD8u zvElX)GyrR3Oqd8CY^W3u#eAi5TEKXntFna`NUsZ6%o$Y%uMahxUCDek@fMw>vM*72 zl0m#3O7?n_dkvwacxZFgrkSXeoZ1D|*hawuPYsC57u?oMi*LIIoXq5gl z)8wL?ISA&rQ9ny}1{N_2jkNTQv}_+G+Re^XBpx+GkVbF4CL;Cl1Zsk0@JsZl zk^PMWSiiid)D|j7WQhj7SU?btetn5`NdNucOZM#N%zfOKZh$Od`$O}VU5OU!R!CKf zbJrleiX!$9yQQgLR>&n-Tnv1mNCJ?eRX1C)EkCT(gr;bQNcj%_9=1pqr+TOQ*{Q}x z@j&iHZBmNLqM=jz+cRZ3m(?ROyIca?yYw>N0j|S5K8~edM~{s-iNz=iOkYbAH-5Rx z@}Y$J!%L>!S-gzztIWh7&lYKEjW1Vd{Q>rPa2b;?k)F$d@@p@!%sq*XvI}sZA*kX9 zanxjS?YGF+f1cj`X_t6KAH(ZB#b|0u$yM637cj^eDw$zM>mRqmn(M;r>=|9%;xnxC zzD!TaoU}OtWaOWMwe?iJ08?kapJ6DjQ;*$6q!+QD&L3Vkxa15*24?ZEj<}3}E=YhR zC^PagEXjEk)}fC(QQqg(+yEq6G-%d_l>3-YWX4GmIydC0ANwPt=M?+G7e37ow28t? z;%A7jPmkDYl-e3Jw&)(UP!c-dwkURL1(OansxC$NEPa)dtjkzH$MjaOL~49j8D_8S zMy$EDxn&9sJG*mYPP;QMy~I5`t^a}Yr>I>n=K6aD)54aRZe>l4QW0=er~JO$4)16b zJ|1Z|`ZxWF3BA$g^Ik$_83|-JWVJCV8I^!em@qH~Zzzn7qlR%2Ptf5}?-sEn8gG$hFX#jJ|%a?IpxoFy7Ydju|)*+@2O$(r46);`kFWM z7Nv0n9Jx0A9LfD27H{dfW#3G{X#LGc1ZS40^T#sHr6!u6Pi=s)1*l|h zchN;qiRjHDWj6(AWFlJTMiz}|*30$EVpsH;GR@pcOCR61VSN;TM*lD?$SO5!nQTtt zS}N&G$B>L8Hd}f?Tgxh{h7Q)6o6p#c34f8}XgZb6a%!*IrnoGc-~}4Z9PQ;*7{~Ng z6Ts1#o<|}^CE31kcvLaVIru4){1%O?X6Z%OeBlJMxttB~O?AN~upzDi=3#=h91e>#OyS$A4e_Sw1YfFGKknp=+_*s*X9P z%Za*1(CWYPqu$?M#?=1jk@Bng;@|yez-FT=muduaE5!csat`y%L?&cwuFQL%BiE&6 z<;88IrtSbD0+HrSdSVQQDb>K>cSSu@6X$rThBtqhdxSZB5*yUtcQMoV7rmlOl&*DN z0M!l{8F7W#3OXmr<0NX z);KeEv#&I77W;-M$V(qx!^xr5|0TU^%$5XfjW`omCHD18^%iO&iXYG3*Fe}0{M(=I z4oC%6h8K^L#AZs!RNeB22CV=vr?dVRW8Tm$*)=#6d*r|)g74!}ZW)G{*|uCHbL(ni zl0V<#Tv}j}YVufofv=q6;^?sWPX5uxN#_u4z&Q9w2JfFgnA)@dluF7c<~uH+P-^uq zZvj>+J}48R-4}hi5Q+U~wC3_=7~X7i^I#yF-d}q(Manrj(%M)wrvYdt6}H7su~o^8 z<9H;|4TtH7Bj5%EG*%Ap8kE&r`jC5?{3dok>^raqDN-F|YTi%sje6&VJ~`D7q5gNn zAgYio?8aca0M?w9dMgosrDzGlO5#7+9XFbST2*a z4aqGCVk47wg<<*1loN!rAm)+s3Vr-_w1hh3!IOSG;5#`q#cyus=RfDZxd4C=2?FLH z?un~oWiL(nkZ>a}y7MI63h;T@F*XSCvlysczqNV;wT+yw@wGp#&`r3@m`3O}R)x>j zeVDBzI3i{&${8J1@Yl;O&^MeIV3T?O6P^ocQ^(Ljy+}WC{Puk3o3UdK`!)@Z!#>~D zMs}vmEwkuypJmgB4+jNWtmrbJj0Y7zOX|z->rvJrLc!<<%88rSJ$}sn&!MV5yrs7h zd|?mvKs$+8Z%G-fwWp`2yatok{+_*AVTOcbFxM?7BSFur!>rq4H0%Z!lNWMP#j7hP z4oiVp1#`Omt)Y%7U=Bi*;mGPCh?72N*b`y5kwODK(y&|T9%B0h@(UOoKyIAo-PT)2 z&iteH6DE^15YfQw&19`y`t(J)AQZ6}FO@^{L*e@yP145)V9+KDBFTB0B4s>+ zUQevi`%_FNxW?#WH*Fj#1-KsMm~M1yB)bU{FI&ehUzYe-U@GGH^l+O~Q!|+)>DJu3 zBKfn13WM;ealE*U)fkd4@Xo+a!G(#L=yww^oFjk~5bN zznD3eN)8q+TV;gm-%oj6YJH6p{oN%Q*z)(qrl{ni_k>jZ40S@y)|PFU!LKw>`ZUe3 zVnb{R@-Ra4H-3KufBz=Ew*sIyLPIaG_roBU`!DCquiX7oATn3ko4v8IFIVgrLifj# z`a8$0O5;+B>dw#p2APZ&dEMEXZaEPT8*vGeUc;+SPYL86``+8s)eyHnKFd3mZMlO` zkp;G!WhKJB;QePB9BdO46NN(X8~FdEAh#md;P+{R(NF#`GW^sA-oB-$rzfNlnVNau z+Ek$vfoN0$6-uEOX}A4`n{9xHG(>}mO0Ig7qIvSr1dUvVL@XK^e|5s4FrvMSXb~NG zIuLJ%mwRX6KqO8zxBGS`itq})bF?!F`rAdXVl!rSa_{a_`>U{rj4&AwpS(feeq4}? z3D(y2%fJ6e$^??Aal$aP)Ib8iJugP((s_R}`+5w!(WC?PcytJtl~srSkI%uoudaG} zT8jz_3KUOPzc4V!eQdcd&pIFaruelx&Pibm_^`xduiy3FavscXmt%(}A}$}C^Eio` zW;~h+FNE(|1KH|328NXC;XQS~E4I5-8nK2La$6G204e4lIjz#uT}m#a^QAtrh?@{= z!l#oEs2;wFtY=w8Hvd>}19s;+h;mLZ3kaIBQd`b9kP{60BDRtZYe z*H?KueBasp0Cf}ZZA6TWr~|P;oe`Cw;A*XBbb*By$hv(79Vy2D{D}hV##A_ASz!65 z^B=%1+XL!Q*q!%P%u_+9s)|Ml{0!~S(!FDaa($ql;%Lb6>R+3{S8#LMm>LuO-eR+K zGQ)KN#RsPmOusVL-qt422CnS$PdkF19vCjqn{;mHGwP>>x~(VMrIq2Hi%ZHCtb4g; z+h(R0g{~Y{<@ zGDsh8B_a`(a%}B#kI(F=netMq&d&&o?u%#bjJ@mm)#R2K$v+Q@XH{%m4JmNs-E~Wh zKacG4qEgCu>P_FC*|pB)s1ogaQBT-yXRIw=rWAN(e82Ud z=X-Xe-txvj#AcU=gF`)?N+)*NXCE%y#m(QOonjYc})%usgr(P~#N1o#i~)R+%|5}V|x zf5yLOx}*aK@68IC<}0!;7tidbp)>pDSLD*uANTT@^a0&5X{=HknHRZan4Hx%P8em2 z6+W(Lx}QOyGFVNkQSsUigdP|DkIBgHX6=S`pf;NT$mwllUg zAd}9I2XPwO1$!9+iHwW{Nx=;2Pm}7MXkbU~4h{vl^t^;XUUq>>2)Nz{%FGyMUy!;j z<9;rScz35%(VCSdr1P~8@8(w%J(>3bGpKFj*I0KKz}Mo>aP%|x~ZG04SHP*dA>exzq*{S7{>1HW-$YXfMTai9k> zbY7A0`XT_xuXd^G+S@B;Z;n(@!qzG&@74NLYz z?;1nRxx!ulxFgrx2sq8C-aTKP=|2uCen^ZWXWifNhWl$y-aYXZYuyN@HE-mNy;)}W zs5{XL{ga+VC(?OOs`otGSS7pnbY1fgG)xomx&ul|eV=?DOuEKYI*#-GO(mLWYB)-C z_4V>-*m0V|7B>BSMn{&ViJ!OQ7l>cd;9$xv zn$lvG=@HLt&}t`bk9}{R;`J8Ju`#ZuURB4@Odq+TOgJ|(RpfR=I9Vq%SE;c6d9l%9 zbOoGceYs?oywK0Pb%`XFTOtWr4yr(t(GowOS>10jJy#_`(UhGEMx`8u2gw%-HR96H ztdnkJr>uKj7>yG2(EEC}DYgIaH&{#yiHeFc0&8YkI!a14RwJq0O(5Y_NQ4N2s=9Q< zf1WbdOImp+_)PR{)r*pr{K%SIb#Ml{Yf?e6qPvydt)FtPO$#l>9cjtB@-Dpr z>3W3qWui9nS0sGcYvM=JNR0Y;f5k7GP26Q?i=yjLoT@SCexX7Bp(t>k7AM-N$;11D zCZ=s}?6&Qfv-i;Zg)tvH;O=6tryoaZ_7|w9#A|DDj=_oqmn6R3$SMP9ZvW?}@BspYe44joo^speH*^rz?8K z$_=yL{o{MD)AKo_iCD4u)1%_A2XR;*+3)r3v+hG~g!Rdvic8P{(BGi6L0^`rIMl#nU{=jJ^ZAz_QNPfJH< zkySORZ*jC-Mgz!!x%6fHR#rL}(J)1Vf(h4FXQjrfgd+6=9^58VsPDdq%N2Es-Ob7UnbJa>V~Ll+ zM+hdX%x-P<9I2nv`vw9cq_7?BM za4C>3ZQEy@;Mjhl^U471b;7T|18#QD=Qb81$KY$9-`YM_jy98dx_Xo2x_FbfgK9kB zT=1Ug{nMct#CK{8dBW+Ob6!^!3F5Y$?pn2(sQu+lhQMAEIvFGb6eZM?=1P3C1F2yQ zcMrS4NeCGaMVJtfG|1+0Vg9hq)A?1^3;sQG)<9^cs4j=vQq#=VmxjnU!Bs~k(>)LjrylK{OGjwmPIU71J_aH1Al=%g3Id@|)O}mt%*l=apfbdUq{wvXNuVg&CL4?02q`lV2=0UKzGS_T?CPR!4vKoV!=*Yg=T zFOBL7*JzowYEU32JGsYe&;OQ#jqFwfG&?`)>jS@BUDsjnklr9QbY8?lpNCnWk$9$$ zeu)w221W|rr?5cfGXMd1+mDz^pKgOPXXPnO;nG3U1N5?3{_j?j{x1n~?@i100%1uP zN-O-w_nrv(&PVZPffFOWQFbZm|2mDU-o(iMrcU7>CcCqB2|?Hvd50&QP!y@QvLrWD z(|ssxb7@d()E8U%;Y0WAI~-Jw%hbzuJE3FLjz7~kkO8608KgHtU)Hw4k z?2SfynWpBQQaRm(SG`NWP-&W#yy&8=r>1sLSU)cuni`EW^ZKeU|S$$e^>bPuvoP!UyrH`n=e z`AcO27zut}bMa9tBhcf40AiG$Ck9 zxnxs*@IBNbTei)dVrf>{ucn@En-~1BQZ85iMQw>T)vgfA6Bq`}c$i}H-Tf2ea>!{= z(luSFD{goj^C5Tzl3^yYjs@(HJyb95VrDRF?5S z$OVdn?9?wb%0E+FM@kTChz>>Iyx7EU-Jb+?z2?BO!eTVVdR^FZDcbAQqbNINia?0I zb`5#bMmg=M16q7#Po*qkJH{8n^q)62ZnolFF|;J^&#o_g^KfgQkv^QDGcVSo1J8dv zA-)pg-+z&kd->*P-o4HM-Cmk($ca7@L+qF61j7`8hg=tMx5Qqc7jcXchM(RQHVxL~ z`LGgwq+xLwZ=+VQQj>ldH`SnNNQ)6$u3V3%13X>=BBNjTkct~t_j)EGLo8}+8XSZb zhGeF3*Jk*njE^|>E94s9iR1H7m&VV0(=WNCV_Z6H{n3u4_Uu~9;#P@7Khg^NA_eZ_ z^ioa35zz{bjB_0cKpsUfU!q|fqbH(@a*z^qK+Wh!t13zI6jdQ(3KtN!BL|CDLKfU^DL=_8+ zz4LL+!DzJ~LfpS<-bmM{g-b1XDSek7evkeAu%H{!Mzm{1fh=9fZeX^Wi_jaoH^Gm^O+;VksQd4D<(Z}RqfOL(!~p&)oEkLR;tWT$R4k~sKUt}F;5=8 z#^;U|`{^^Y&fdOw@j?i+iNw`u<47mWW9aG`7!Vg1z_o7)jaHqv*vV##p;bn1Jg^b( z_(E!=N>pF_9o#MEkSP8D&1D&a39NZ?i3$Bp{I4@ohR|4$sCDJAQ2#o`ty8 z&U=|GYeb1Nf096s(w$~9N)1J|Kj~9mDjZb`Nt)@y!fi*!u>%uyIu!ax(+1sOsw_0L za9>7xngA!!2x`h+75rwV@K|6Y;| z@$mfq*(&4H+0p@)2SY@{vMbL+gxQ$3D%Z~(;zwiC=b0GbkBC$=amKw90Q8WG|EFyX zzKE#KZ`}$3F*Q=gj>AAQyY@P9AEB9WA}5N!PK6Y~|rG7YA8PW_p>DJj;V zkGVCN05=`1i$MayN;n2EIaM?`4|o!N>k)5$A2BlIy%JW@Xv=(yff6W)MvWBG(qXmd z6WlVWQDpTF-ML)#8bCC(S;6>xUE9DCGBcY{v)D3e==u!c!I9Fsz58rLfd9ZfE0Y=J z?+?jITHOWm8Q21U9cPN6CotTGOM8JU#L6=9>W);xK-1VfHR97ria zsHqXEMk6^2F^OlVX*A?RkfiHvv2fVXT)&h_V8jbTf2s*)Llk0HUjvGEAB#N}K|B=a zgl3OOQGhWlBDiI?W*iwihiISC2n7!z`{!>mOPNZ2OVIfN$@0KKr(K*XK~&u8Kw9%? zj7k*t{j;54jPu{j*JBo3-_|NUMbl-~Sn`18E#jF!Y+EdPUG2MhpyZJtF>YhOwDK3I z7=`&NKQ@9M;{Uw?qU|u35S=D_VSp}GQ~>X`4plhP8r7FO(RboKkEHo$NLe4j2$L4P z!9{yDV%a9Vh7s0DP~!l}rb*(T8MR5>j<`@YY6J{=!x$Ue=yAxo@IC~ks{a~C%^xQ? z%N_aTR#R(9aAoTQs$%4(r4iA$XptQ$b8sYv#B5(zV>p+aTzs5X{bkuQ2oQ>p`X;%A zLVwGe92eFyPoaLNdr1xJdZKa47|-Z?)4)WU65`L~b+&(;bVx`oUZ zDX$gl=l|a>cqJ06+6qcYsw%y|9p5g5kC##yzsxFBzrn4NS5rImwoVO1{K7Z&+( za^ix#h?^n(Cm`q92h`9~GcloqG{WDY@4?BK+1P$3!}^{8@#n7a?i^)zw@Et;coSs9 z&T^)%Dk4xTP}YxG4uzQZvYKnFieb(C@V;}YmYY8m^2QPMhA{7)_00YADo+zfMQ}q# zxx4AR!$PzlcUcK2GJsmo@(x^Dp}a_@{E1bfY8R@N)bY0dgYy==~2b`D15Y%9-or*rsrjKfG! zJSEH5Dd(;o4AmHleV19Wk`T^^0&B;uqzWCvhGbUlp_z2lQd$1vXNH!GN@+QhNof+d zMLi(MWCCmHXgb3?nFG)>ZdE8OOeB?c*PeYUi+>BwEj6LY{wYwG!wya%V^dRjh=YT} zNk9a~)e=)BNsG+l3sIz-zy9bDUzp`jrXV?l4J2~K$H(t>HrCf$uD9M>|3i}Y@Y=oN! zEmU}VVF;9*E>rkRVF$!ZnA{76cI}hp%k3RpF9nh^*hX>s;?zS5#{o1E^BDZ8(3tZ+HiIMrmn$ooc73qq;HBhoFOR9 zD+8X+n_eKC0VwB7_ODI!mMrf+^iqTtp(bX&hI_}z_yq)a4ja|=1}wM7T+@w1X{@jR zt-zp7aHl&t(SC-5xE)tMq1jmw`$Wh5)O&oomY~^#^BqZF;02xpqDc7sK|iMrFvlbm z^nv{o9^&?IlMwU~F5J2U6a7TcJERuGFS3EFC@&ZU>$o%8m+ty!0ROv`4;9Q^2v@2+ z&ROoor9V-dK!2E;JC@tR@uvl0bE?xCD}R==PfXyi>rde9Rgr&*A)IxmrsskMNjdoT zkd~Er>wAwNo{@b;ai2E`EsBcIr1@Hrs=wT@n!2mw@(;XQVHG)M@gB?U-7+-;9PYemH<9`Kqlj1 z_v^H+@QsH(Fg^W@8+0ld#>0v#_P`XCAXn;!_Yc1u?Ew07 zVfB{?ctYM{3hHv&UP70qnZ~0Y^Ca?sHjj}bg)fB{_6(bbpFtITUfSIn`j2hd2W4EjG{Jeg znR(=y;qkIHgIXeKIyKSWLI#&R!8hu zR|0%)o?HZXNR^+uJsrQuhY8rC*{_@QO=lB-)nq?2)qLHHI#Y$398f77{7&Fyf_VH= z-ohzjYQK`~Mj1sw*G=WdB)H<{s{?<}$&GP!gYApb@*zXml8GJ5gL!?-7p$C&#qQYn zucvs{yTySYi4R;oGyY#6M0zRUz7wQ`ztc+mMW)|_JP$jtWEHqSijRd(X$V{~ zXQHs^0xfxQe}U3687W;QRF1;R`wQje>q5c51yNJUoMx{epp_F}Q}G5DXb=-K%il4v z6ba_m6yW{^Vt1h0j2s5ygCPqIF7vFtp9MI?goK1brltiIPvMGB#esCgeEtwd{jKM@ z`zB1`B@w<2}SJLezZUBprF(8(F-vUGD>@W-@Sc<6HLJ~fQ*d@xQ?<@ z_(82$gC;~r$)Ulx!vQCsj#H=Mtdm%AR(yq^d)M|S2?N#Omid;zR}_^uW)!Q6S%#x| zFI{G%4?75_*`D#O5(_94Ud{%NPh7IVMH{ZqFlTAGEh=tZXVc?Ygk^CqD2#%C+>f6S zS<2n6s^C?)Xaxf48($P6-C*F06Bgy=+4q$*v7FB~=7e4*4%WK?^~2%lLfuU2*n8GU zWTABhSOr)5|NNQSY@t&3JgT?8{7r6E zD)^*f)znqz=Lg5^%@+#(!KGsWnr{AZQT}bwSehMB(R{UNwE$Kr2S-Ozz#_$~Wsie$ zh;Qe^7OMtOXO2CZ{vm1l)~;obR!u>{7XkTIR%In7Y<`)Vf*xGFemown>8;Vc6lW?f zSXyA53qJI8sZje#2~&IjxZqWxC8kPCGas<7nC@=z}wixL?O}B3&gT!hz9K%{{mkT+*@YC zGT(VPua1!xBAt)`QVJCP`8NITwT--_P$G4rTOl8|epI$gIsNEW-vHjC1=OhUtvJig z0L#t?wt<&P8|c!cLV`(>A_&-hQv_Ap@CGryxbA1$T$Zo}0(+52@u5wq;+kazgNzU8 zA51CFMsOGU%1-B^7dSJ!>?|~YsHf8ghZ6UNRT59kHWYVzFim_!&R&HXwqU5VZh1O3 zg-dO12B%UV4OFtq_*2txP1nEAar5}`4!noAYoZxytOt`|P*G3kUc7fBJ?oYA;3_nXU(RCHF!9m#a6Ml5cvm8twB1-g~NpYVE%ho+K zDW1eHr?IiIL4FZ>*>!|z6ZP;wpS}7e%A12=ss7N-8NAm{Vd>=L3%g?rkZaTSqvouy z4DtDFDiQ-yFp?R$^yC3;SQ(?s$Y(`n2UUR(Az@)S$lB&WTmT1NFEI2O<^xrIcxW9# zE=UHehJYw5EY^cLQNxxXFyN@V*i|fhx-mLB`Y3ytc$?2)fj|X)jdYAKjwF$s+?YezXJhQPAi1-{fRH7I~F!5uoA~UGpX3`3}<6$bRLG zj1+QyD+mDfnQ_BsBhYk$+r0C-K)z6FA~c9-==X6rp>6wOgd2Ft#0Mk<;`7@Sd{Lxx zB<}|uVc;gM`hyUb@RH)K+7Koh9vBElnIL7IIpcAmK=9~KZ@*#*QxJ-d?;yh);#kkZ z3DHdZ1j7r_Kn*)3SRwX~ZY&N#q;PIO;-Vr1foV7D*5X6&BZWCvOwn)lnqG8{Z$z}{r-01g)+gkcjEKvA zHE6a@GaZJ3t90B$BfCR2Ox=4Xiv zfwyXG=Z$E{cxQrz<0k+AdiMUBaLg%dW9c74z|ib3I3^HZQ0LA}%x#Hv+qSH>H~qR z$1r?|=FAYl# z!A!>w&2tlXZ4k_Lc_fm~4QL=~h)R4M*AyHY#~U;gQEz-TZ%uUkW^^%qtD4`$)Vv8W zjJ52+j2lFzD$alS!FS7i<|sIiPri2jb&;+Kc^9p`Vi4dLhr&^DyydS(jT@slhWr#l zG8=r~PbUP&^>&%$=-i5b4;}g8#Gw~~$~d|-&u9KC0vl5%QySdQOW%Ili<(>4&T@J$ zMnN6(`AY*%y37-Vc@i~WZ^OyrR^(kfrWm?jqBB&{P#IE5UG%syES@*6T*sT(2jCUD z5X?n%O#o(s=H*SfJXVsEo*`@|e9D04Y#m5n!!l%ea0kt-cFm(}px_CZe|Y(NDZINA zoGI@Jj`(j6Ph22>T6u3p*?n8P9%UT&7Mod_Q=Nkn7ke1aP=)AJMN~msdyN;j_=*`4Gc^q#P2sAqRX7#AA#yxvETLs!%3=5Al{+4B<5Is#7!K&_4?=dD%^2N24t4j@{gF+vDR(v;P)YZVQgNF#Up~J4)Te>ZD4wpa1Z^Mbf7gNT4E)iNko?Y5 zsEGa}Zw_umabM5&R9CSALPZ(TrT4l`5nKdQwY`!m>XcxY825Vx-bCQp<@d&{J>pGJ;nH-i&j67mH&{={Ng zxVQ1xOvjs&RQVwebku@^neWJQt3iC(aOn{mLClTz?YDUuxXTmWTDItZ*WOODv`zVA zu_wo=ME4|@`KdYX5|T|V5k&#Q9FE(=!V(e^Dw$GstmBM;JmdtNHk3R(1RI!#J+K+# z4K5*ERBPhSGV7Dbe+}fg{3!Kh$bAD2atF+2UTqjzXH%^QNC(EcNo2tn-Ez>SZlX(< z=*J*z4i$m9hz%;_t>8EM8ZeRHGE|ZduX1ZkKMS*N2t@T!^=80cLMMHEJ!-sZmpWD0&Aq&F$TeK0!s!#W04RMtKBXCL%Nh6Fk3m3TQQdUM{ z>efVm2vFjD8!jEz71%OJh_uWc+i#XW!0rMFF;ZQ7W8g}E-1nl}ZzF}II>Rnw8e$Z7 z+6RsYp82m=brP>N?S2RA9P9oa&#j`0*i>c=+d44DOV4*wccdL*7+PFgh9i(L_AnKfptP&TR>K?$2L`z7vR_sRG2`x7Ta0^i&gR=~WM zpmwOb_vQ;Y)6huzhImVvYD$60JXwY`f>%&9rtZ+r3~v!8%CJD149rzYT~7gU@MXcQ z4d!GiA%Wbma@;eS6aXTXNH&EDq2k?_Kd|}s5g;cQePj0Yt{jkz@I4Tofo1;?FfpKY zIsQXhFJN9)Bg**BlhVa8;o7IzWw%aSxv9N53~#5B9O~+3YjF)fG}d zL9GrJztmqVRNp@ z#aPvV-*&r4$eIb0R_J~e{9ltOKiYyiM`IKy+N7h`j8H=XpF}uu%RI@a!xp&ScY?d0 z!dS6rmqjlgwCeU&i}?f9gW=WlF<+sHpHY7aW;K*+6zmGnJ2B?D@y*EqD-91?h}i{TnsTotYE7xBA0-MHzMFIHI|wF@bZbPr8Q+9~aMj8KO$*6r}{ za4&cyqEp-nSRyS!{xh7)jShV9lkk73zNJoUv)&HG-*x8KtDDZ&cjH1wF~aZdFs$n$rNWxReEWp zX%LR~O1P(1imyM++;d}5XlC)x%$I~l%KWw6?9Ds#hLjwKMR!rS*^X0Ch35mxq6!!; zRA;Cs=idrE7H2hZ1ntbfWT^O{o}l@_t@l<}B;L6WD41#%GTEeB zH)DvEr&exy^Z#0C2B_15!{UT@P^t(IX&8t9*vGe%ef%!@3%+%~5JfAby`duhH1ynE zBcEt(P+fF#h!v5{4=Z^_x>=aPMA-{oATMd1#1eG$pEBnI zZK=%GLCc(EZYz8+%_%HIElHk_+tykP!PfjHvECa9++MhX^@sTylW!(S@j@vCFeB8* z`)i39EvlB61j(kN!6W-t*CrGS*r;`4H>|h9;Zo~x0YW--RSWY3HS{R)56UFUH>Ur7 z?}^`fEaq2X?hgT>Bko@eVILQyd`Q2~f&x^c{o0E9xEw$Aqp-q;K!6;gBm^2Iog{TWh^>B? z>B|Xoqbcb+H4wdswLn&qaRrZ%+HF*+w=zOaCNx%2#YXLb^NpozBB#e<_xy&vU^`pd zKPFWTaPE+DW1gjD+WzQ{9ArIn?3*C1b>&y=?xn~z$P%GQ7eex%FWYH<4e&!qXrQ#0 z>rat*I$9Vb9ffwdLiWq_&FU-OVL3Ng+Ac#xw8%&zT2#Es@4;DIW1Sw z8ywA{+@yH>C#{gHarn=ksEzI`T(G;277F9!AZ|ovUpq6dV~7951RmMWek=4_{GBkb zHvc|oi6Jv7p(mEFlPZgy0=Tb^BH|1lN&i3qR%T&NxUhpI!0G{{3syEU8zq75u3+3H zFL|oW7OZUio@iH;g=9o_d)dKn9$eUy>9l$9mLeeERasXE&fw>NvIlrmhDEDAh0o1N zIS{J)pd4oLIOu5+K&9QwAdaQ)hAHksX)(3XI7mjyS^EG6oYtzb!g06@70CwbE~6Qy zC{`Nm$t*z~eY$~c&D+2HyCx2Zia(dF(2X!E)Yr3KiyPK7`ytl{;)$ov2YEwtaq=A< zEP3Ds)Y{i?MQ|u}@fm}!Uzou@>jAoRPBy@RG28keqD_yt2vl~jM`S;Lt#}HPJnV*M zmj4X^(5Qul)Tp}R$_cQS!P1I2oVQ{~ zQji|b7`@|-oGvc=>q`ysZ$aIKHKg<;MU`(0wuA*%%s~8JF>Ha9`%@uNv5MwEBM#QI ztdM-aoT!RU29CY{V?@wm3yF*6m}UpRBBfKDSIfQ;QaE_(o2vYsoKF}S{~rGuoye^= zy}JlwB4(jK<6EYDQRRjaFGmqe@%SW!<&!yf+kZ_HEgehCm}SB9^Fw)E zI2?1wPieYUx-^Q9SZk;gA%Up;&NMbv@IN{ZT(vAB(F{&ssqx>+{YBgx0mDrf+Ur8y zyx6<}G;99KRg3(D*YXe`W(LsO^SrTR(*Hr~8D%)=W##}Z2E|#L3G}0tar|rz1q+Uc z72gP)r#$#ade9i)k^WgnC0F-x_cK63Cdu;`r>%ptzo3!-%jzPPvko;7!!pWd&D^qu|6z7+V3Iu$WI4k6DBw$D$%kgcwU!6pw`m3tJWO-&vrf=#*|!%!`Cz zhF7m|RUihDUi@ixQ;gCqqJwyNT1YzvL06rJM z?gq?pm-66EPOT{buJ})vTG~h83Gm~M1<6q z=OlJ83orWjY!XqAS+cV#MUSNNe+$RL!j$<6Xhr_rSbYV*hIVZ39a_}>Yf4NA?{zS< zTB7C<-3Ofhr9qB@$iRdDir7^z#DstlhWFf-G8t7fh)@RuCt&2NR$3+9|Hq@ur6Kt7 zpdo~C-&aPVz0{DF&m}gsYd_1m87sWo#Vi%kQEj--0X@=_`Pd%;VIirTw5lD zJ#L7WlGaO|X^BIgQ6(axe0oO7Sfe&rv$(qX7%|#j6JcSB&_cY6_xiOGsyv`Z_T&9j zhy|y2(IT-wHflMu`j==tdU*aoL)FI`e`C~efuD2JR)-Fm7s~nL1A${jBvhGdvR4D$ zB~(oR>`e4?Tj)GKnjU@G(m+CD(x{xY)1A#a4eY1;n~>V4(X?y$38w^$9J~j^&^TV% z{`KCpaH+&Uo1*J`vrD=hfz*JSHtz~_`id&0ve;GL`*m0{(ZuWfP?@{fBf9EE4l+I& z(S)SyI90V%55}QLRfXCP-pLik^%TfT@0R$#Ft0%xCuM4K++uykSbm3zDH~gxl-fG! z=gf?kg<`2OjCbIj^itwteElL<|E!JtdH4Ne&Rt3#HAl{(kx- zw}Q*4To!TzT64Tf8H`iKjU0?0$i|zr5F0t(BWtr0zyXt$nW2RO@yN^T>p~l)-G5ed z1tS;vV&2*JPR(nmf>Rm#8+~v5`ZQ|t#OWTHhLY9Vm%r_A=`m|68S&yr7)PimiDK!W zFb<`dzJCt8PS1$k-vadV!?k>+MFj&5xGV+{KQFWXc@G|Z;24Gwx$sFtxsqM+-P;<9 zC+8A9-|90uJI5S>W*zslkt-S(^20kT+Ar{p9&)w!)YowC{@jezf6#psJQOv>g(?drU+{nUpy}fB9`yHQ`?}s6AHO#+Xr!wB=`OD^-;y1zqLma_YE&;!Idwiuk;Bg@ z6KJrX=wWDfp~9Uqy|XXugd3|o-S2#-bHOI(Q%7*E`W~`o)QkHRQ`q%p<@^%vsjQ%t zmG`B*8rd7c(Qj!F1H3*oq5nEu$_w<2W`^3aWKSUW`X&e^NuCoca}^WSV58$RF2p+? zpYB{f%ug3pXZ!FyPoV>Ymh!G#a7im7!|_9+ zmF+cYrP(!7KFYbjw&fOaRV5~nx_61}mGj-V#%UmuM7QAiTPa>RO2rMvH7A^43Jv=B42SuN=R=M;Rf+iR#RD>b-a8phJO)XK*LK`KFu!SCq28O#Z!} zM#v?ckyYHv)iL6YGvuM;)$&lpe>lC*$;V72c9Fe6>1hc1Gfb-m{ z#>N0Y#%7DRxg%`)=io=#;Lu;_7&!X)qDl;<9ipNm&~)qAcfWw?h!!;Aif#(6S-!L_20GmTE9Q**aZKrL=s85OeLHZy+_L*H!Tk9;FU zflHq9f2w-xu&BB>TzCj6L0U=yhZss4=@bx2}$9E;qtFGw+>ThmZQ^_#YeV)s!oaBkgw@h$)c zsd$_z9mXznYd231Mg}1YxYZIoh+3Se`_j?qnK)6zY!Yfr_tMB&@V^ezuZ2P|9pWdH z(Ho9ue}OnJU30;SMZrrwg;K&2Yu@wKHKS*Lv?D{>9eW9<$zIcp*1GWgAz6P9()qSv z0ns_QTJ*pi@HK12HB8CzF$3yuO^#692i``?A{E}tLG(!lS~#NOT9siJjin^ZLM$0Q z_lGQ_lk!bpYD)Tskbs(YsjUTZTS~YT8~H*BV1}XEL?bIUG$3_~mvE=SI=FCxi z^Ufh?#4JCd+}}v>flum_$7G@rZfSKZ;Ca`^yjtCtD+yj{3-SLwb3VB~bv~I?ktHz3 zT98m`?R{diHtkhA?8GM>BW7{^#P;6g%H(yqu0)Ybx-0L0i zKe{h`j_ahq3#Ry(Pfdm1zn3lU*_Y*bWOCD2Ty2n;AViE3hn7Gj7&65T{}U#+v@G}k z6%!!&?TUNP_Y?F0K)kukIg}cm{@`Q1H(kuYO#i9Nac(PUlnYhjVN!>UCMde^dTSWo zTK{QQnmdKy9f#8aRZ@Q~3udKw_lZ#ooCdYESIF>5gne7NElW#`4xUT5L6!~ddg4*SU=tM=aA^$d&`chOsEFBfSbkY7YmyS@gJckhp%iWkbl=z zTr(gjgvZQl2KHDg_nC;!+Z=cTZ3;w`@^wT&)K<@H`n6SHkiZ``iKtBiZ8RJ+vPg6x zR`4(qBr4lJ|KscH^`R>*9{clY{*_GUeflS})8TX} zS@Yx4JSo{zwtdmg`v8~NZy%L^5komR##xb#EqrDqyDE{jp7 zsDyvuK8qQQa--&<(Pa%pct@`h%2y|$(dw1Cbumc!j>Q0<18&Jhy<~}LA68>?agf^j z#bb_ANKrYyXpM}HIXqr~)Z>%uQa)&Bsb~KH5jOY^OG+RAjlR~;iGK(E3Wg1TL1Q#9 z8S;G!H?M{0h3Co_Qg_f>&AUxdfI5(ByL)?P%8%fL6cnJ(o%#0G5u9Qn3g(6b*Os}O zVNxQ6HI}n8T_5~qg*=3hO2j>^9u1q zHa9RZHVt~a)ziMX^&t<47xD)uXV2LFwBqenWOMo9+NTfoHe=HYt`%h8+*2$mGU(p* z`?GU%ab2@^9=tb`p55}4>0~AvuS@)4HYpcdqu1tMN`=WwXgS8~ znesDPf`0XDbv44)I$~X99~84kj-3DVsj9BVeEt?kv#QNXT1>^a#%&Z6V&wkeQB>`H z!T0X;TT6~Apt`zp^?anle1skpW#Y;8WI(N4f{$E+52$m%!j!8J3r;325t=YTpSx#c zvSE{^&Rih}YWnS|voJBkOEHzn0`O|z6lJ%&XY0bgf&Pd&^p_FMDEY!?Zkh0(!lGGV zuvL-vLXx)?ZB*(0wDiLHGm%iUv(@AwNzM9Xu|F_Ft;{~Kq@8|q9PWqjrcKul7w55C zLWAB;;)6FY>r41=zb`HKIA8CJ74*8mw}&@FpboVFr`fO5!yWx2$`FJTKiy1uG(pXG zT}@e9|6+xt2_hXoZYH^Y;=BkG$hZjI_SJcBpy)ErzM7G>^D!hS3{kfg4$Vj5rksyJ z1ys^;v0?@ao>6cdrtJm75DY2n{oOq6OxGXc<%_hA8M>Il7T~zyOT*sE8LDE#-oB8+#UfYLrnVb9&ri4 zGCeIHQBY7&#x`xJ!*eAR?aSWT3VzsA|V0lIaxB7>=OXp9;;404Z#+a(8WD z=|mnmoWBpgKZe#-xA#086p;J#jxDl6^kBh?s zUA-GO?QsVe;pF4~i%h(2=}Eg+=#JkF!3ALWR)xR3>v2igQ8=dimF>%eOJ5CSLF3ui z$YJ+-tF*c>A22_FTy#s4bEJy1l_Y>ghzABqW;zdi=%T438I z1Eoe*on2I^?>@*%!{N8uF~v@M(7^t5H+@b`7O{mx=Z>kUULjI_h+AdTCjflI@4Wi8 zR1dc1s}1-%0)vV!V8u*Awv@>|m;P)Zbzwtj(1mPD)=>h;ceVUfDf^4qKlb|LUsOU? zPPV5JBpQ|8xkCL4pIWMjLWz>(h41(@s3PkqVpYOaBem+VC_6U97+E!-GcG${266LV zErO=ehpH$Je1@ZrBb`j73X7)yJj}heCjWad^at&1DI&^PL^a}QtwqgxGHeH99`s>g zrZNnKGHF3wSpQ~?$v=<%3C?`7(WSY_>F84kd3h&mK7VYHbOS)Abv0#iOxUoMH{DtPXxVs$DNuO0=>`q+7( zX;1x$_ANkW{rgPBg7IQwU8T34X4A#P7th#3z72CAB1HCQyTC;l&K8(;2H%aatbPxo zm#z6MdEPhjzWq7WM%to~I0mgsq#urGqw$_Rqm~ z!Q~*Q?wT-CSk*;OB0+LR&y6FUv#KE@!Mu|p2eT#KwJM;lL>1ja-sb$Uo-5_@a=7gD zhJ?z{!cZNL%Zq@`k_mD`RYyQLtdMX$o6JMhi0*hB9Xnhr*dR({BSq$STI`whV6`58 zuDM*9bjM(x>g{l0i|+J$Y3WFHL?{QFa;(aG%REVF9yeb6{I7O*+Bnp0aGgbAh=*o> zd$WD(L~;u{6Nw+Hb}~pJ^$ZMowxoL%ElMV+kwx|m3gEE8ueFZYF(mdJ&#v*7 zLxRLu!uKm^A5JUxKosX8etgq45#H}_J9Rm3s1T=%QuoA1tM zoF<@3J3Glv+@(pV$}$HJ68h$w8cRdV-I)3^+Co+#E+u>2e@bz?=Jl(xYZlbM=&Fl$ zZtC20K9%sK3?~HkyyLY@*AOQE82y|DaWW~HpZm=KhvX_UXJ*ol5xvof7aLyj$yzzj z`zqz&@bIJld6d$-0}WbkW&~9JXE`Faof{}r5%D~HpF=fx%{l)Xu&kK>IQ4 zz-FSCXBwql#J>4TXTD#?M9FgZt%k3K@9^AxBXxA7`1!0O`sv=^E%q0e!^vnaR)K+~ z5R455QE-e|vq7W4S>GaQpQ|g)n~z@zmqz?72g6uFNilyoKI4y}5gu*7IE|P=&SQL~ zVDH{AlUK8{{7Vt({r6t7lJubx2ND(@lIC&NeB{iD1Me1feuXmL^Jy#*oqgfLX(5F1 zrx=9dM8uBdPaO~6ibh@s>FQho?!ufWA4mf`_Mn+m{#z4PHRTCOG@i1njW6kOsymW3 zbKBdqL@z=ro5ZbIw83%hpG(f<=aT4ALS;V(DxW#ZOL?@%LOjwFNGrf35A;Qq-?asg zY{Is-qe{7DTw(`ljrTQ~vTKg?7ttcpw?SpQhK}UZ!-GWQpK$s|FWmARqYHF+BY@%DVXp&k#zJcDp$oD zdJl`a5RDlNNw#A@z&g=uq6~#LvzU3hum8;m%MeM6G*A*__x&c7rSyvL!n zs0ED1bfk-gVn^EfP6`=(o=+n((da(6Gz6$~n}>6r$SZz9WibVP4Jfum!OhJ*F4YhR z;)e80N3~RTn6I(p{X`Q{UBRHctdd`Q=D1PLkj{JzZyF8Yfghk)XbXBErAbwf$gdcZ zZiR}xi}CjniXIl(RWitvhg|z2bHglNu3#%wD*GcMN~sqVISqc(fuLluNR36tL6s=b zEUuvUonWj7VplZlIjcA*q(0K5r4JV*O{3glKoOtY5$TPZQHUTtX7;ULLo%yCs|Lp4 z5dZ^Kyy-Xg)oUoz2O4{qJ@O4B00t8E^05l-GJ()m`4@P8JYe2a)rzentjuG7q;vlaE$&QH2 zjD97(AoY-lQm9YTv>ZXc_HtQ2m~NAm_V(aIQVDP^ILSFK zUs&oFy7RPSAaqXJk_l>fk@1t^%V?xf{|@Yt*qA#jMwgm%OLFMzs5q5)Z|W!q-G%yz zQY45DKA_yega3Nf-#^!oAjVTyUxt4>4jpTea9;NkabnCA)_xbN*k6enn=U1CHdq=t z1TSpJTBzDMNtvQE64ZV_1w?if&jlkYh)5C&cT$+v8Muqsj`%%ZV5(u)&bi3|#m=mL zI7J>;3S`ntf@(*^n;6`WqMbKB7k2dT_bI^>$ztaRa4g-7n=RINx6jFI#X3R-2(W)a z6MSbCX@-7>(71|aCq1?_VX>Dm9Vj_Kzigq)_3RAxo^rZEGTH0W3f@WzEwJtKphN zBkpGifTy@XBL>@yEeW%Jpduh(PIcYM@`si9oO^Z>9+!~e9=-)Tc2PibMs`73IUWZ~ zg#|iE1lJh_G;0&dk$l;HDf*jB_GZlWDt%zG?ln=IJ6VjUnY@bw> z=0v6CiMe!(?CcvxZEd)ARr|nA4_(&lvf&UtpZRNDic8bh8Ya|Yv7KBoW$)l|UGDfD zle1jKf3KfuD+O=kD9DqRUY7r~IMFopYMS++Uob9_`$AI{0DukQ0XM4X&RAVVw+VEl zNpvV0|B*A~*sAFN54BSPZbuT}Lf^EPq^0|A)=4AxY=eWeG&g_IU0%+EhJVgz0eE10 zzQm%+ND%u?g)T&DVoCd!UN$pl32es7HN%>`^GOSD{%dyRjLXK_;`E z)x0Eb)v-(0_`k>aiu-U3Eu!UM>_t5F+~p_1s3=+uA`ckl!$YK^op~?smH`T>k$`NE zD%tXHYxJ4S%k{c4nIdC5KkZcbmoxt@zMmPvO-LLl+~#2R=ozGqx&ge=P6vNz_EX7S zIsKIR1$u}!b`)@o=KMr^Zd~aYOtp9Jqec4LdKP^4XCJbOCAWQdJGofZGiY9RHo@aC zKSsaIgHx5gqo1%dExh|*KX#hh?auL<%6IOK7qi(gchPR`eF;K=@)b^fb}1R zOXglVQ~yAOS&QQ$2lT#L`gFyXAWE9PRj)nr;=3ZB`c3v;7~;SYWWO4u2vx%?DA8Ac zzt2-F-+m*cbfkTg(1hIfrz)z)a#rc#DlABAk11v2fhB`MN!=hLU$ti=8Tf1P-CIo& z;Em7~dP9OgiDl#df@#<&gu^a%q6|Zl zIS-RtURAZ?vB$I6mt3beU^eISxp|EIMO2nHZR$8bpX|`}>Xmtb&}1(oOs??HlRVGV zcU|eK>E`|PAGMU$n~CV>CD}>>umtCnKu*W3y7uyVGKsZ+E}XXpDOrFAzBSehE-)C2=YbujMp zQ|C8{!3IuNy~6rZ{B`)Qz+%LUC!qx2w1mGg_I+{86Q3C-k+ zy$rwk4W44S+1?CqNw44alBeRVuCd`SLb=7`B67!9SHb|5#r0M*aA;5Z)ifq=%c(9` zZ}iCy&epYGu<$_xS`p{Kg>&D?QOdqNvZM6&Lpmnj^>%4s!tpeKxmy0NeEFIB%8fiN zkwRV&38$LNL*gJ%QAP>km|bA(>;OH@)Yd4k1oQk_vta(JWq3CkJbCrg4qu&_e5CUI z6PuDKp^yoJ0mh;<=~wmOvbRWLmr=eqdq8*~%hFq-`fHrbnUiff9Cj-FIvMyjC9-Eu zVl)rD8qlxf>LX!l@+!b=6a7fQ6Wj7r=+JBFnB#DFp9xXfZ#Ym2w_^$ttqrBfG3$$B zO66Cf&g|CFoSGi;yMEpNfj@e>jQM9}q~kPzZTg@ObwpP-Yx~i=q2Vel z%_!ZvjFZTyv$bN%$YC7)Ch)?4|37 z=9Q)GAMM-=<3qKiAy(dwbGR&TDm7>bNC)Z?x7vhN-<#?qy;nf< zgsUUbceam|cfT8o^hQKI-|M>wybwd`zdPvPc;k9h|aUfe3xD!b)(L1nLD-k~5Bajo1t8`y4hd}&HU7DB2cw5<< zo5kN2D{7!N70a4(h*7Ii>S(?h!UM_GSGM{1U1~N_niZn)m*?;tC zV3INV zaYTt$_U6ED6$j6yF|o7~d29#jC?5#j>tcEB(ceT|{D{y-PY>#n zS!IlZO_c=u2r}{F!gzYpBWbsJ`{B!FIk*k}Sd#RctHB-86 z8BJ~9o_)XS6I<{Uavz2{P#1sLpY5L>Po2`ja)22E5+o)a2S@w71F4a&8`9RZ5il$6%$Ae4dyUO+)!N(uGt-H=L+N2eJ(4*ml&Bwk>aOCQ(_u zVmRNTqG9y*3B)S=^AGYrrkU<}8uCEqhfDq1LcT3XOqwXBQ3x7wCc(-?#sih{p98J_ z;}@9+a(9>d7Fa5mjZmC_AtcNB&;k-1C&jwsS8Kgg`0wvtP+0}4G)dl#DWo-Bt;Y7> z(crWd(qT(0Y|Si!G&V?U9sT+-&FeYy?dafdoYxh zZSG(3SVB-odK$AhXL6)yvAlx#>jm%iCvED5kAm5|EA3afkO%tU0Y8TPUF`)=EQHw%GVuFa5DzF%iD*6jSrz4#{NM1=Nt)-{lMd7EH(+t_wm z(T`mS_^M{0@Qjm1XT@}~oQogzbQdCR^_@ju3-+K|?rkQNo4WB&JR30`1V#%i(Cqd)1VewQ~=jb>|H| zv5t_*j8=-I6n=&d^zYqowHg^}(YI&0$NGX6M%7_q{{dka`KQbD)6D)+jui@A#J$>k z>@NmoMCQMfYvL<(XgA_~n8V4AJ8IgoN50bvb@^$f7H5d%b)^*Je9If{k(W>6i`)NT z)^38UR1G{Jqya~E?eQ6&qm4rq4IIH98E!IjCDR+*3=AZ4T;C$(<9-s#Z-D>@2>gC) zE*K3*BHHn1T+s;2wVb`Oo8V_(+wNC>S=%fb6=53KE*V)3@=^^Z@y&H@_7#`C$gok@ zV~iz;`-D226*~Fl;I(_^L?O-i+5M{jYT+Ht?4M^^;!PYm?OP7eyn=dL)7T%Rx3`tkN&{{=y2})UzPFbP$rVWA_`?P9LPdz&?>!nB ziGfW7)*>6t;rjZfeEvCzb2f2bcbMM(0Dhi3Y^c#^ucILfaU}2;*^E#9U{9JRQML|q zFFcPP*lK>WF=K^i4gTwxo9@pQc<+Q4j?#}mYE?W*#VR9G{Cbu_z*kntT7cEA5)hE>Rv9fMz`d;T_>6lB3>qj;aXg&;gJKq^@qiLbLV1B~l)`pk3|E@zegoB4iyfSP_??&i31 zW(vC5w59uM(;e6c|Bq}X4I7XDSyJ}Si$2$A6QIhv_vD9Ub9hfPkz4N$(9pGGxi`+w zKMHs+C*j|ZCZRk+VjwM+3DyV%#`kYdyH|ovFuA%0$E4dk$KGhNXv_B6L15#fuUZW@ zkcshTR^?O)3diS)5xL6Sg>UL_GGbR2)Bo|9AcgV2lYGUhuZe9ACsr?QD#!mv_JsBv zojt8*2z59j&NLh?X{K=lWu%n4a%VjsTP(#X0>h#DZoTjmS6a~gFT1#XUHG?y)Q#ah zTUR!k$!RbJh#;N9yXKMH*#h~Aa2!vda(9;@5l>p>Cz#q*R3&INt-6AQZbNz1htVM0 zk8HHz$)(;ueH}DmP~mv4NAM^X<$UjJiT75a zgS{M);BK#xCpUMkp+wVY7l{=M_~@ACfwXXn$9CR-F(4i7i%0(Kas!N)(%mU$*IE4` zcHS;e6AvyC=N1A&i%b>3Fb@2-uGYaN3C>73cEA}jcYB`Y=s8as#hk_ckgyE2CaF3O zl0j&Ty`lL!_cy@G-67x?V9egJy0jOjkN+B#CEp+?B*(MSEoPPZUKzhLM3_#D!y-1< zB1Smb(v!AbvuOYwM>+0}`#Aiv>kWG1t!3$C7p^wO=X!4mV&H{LsG^W;V9BjGXY$tA z)rOaaG{%Oc`m=~05iee=P_%EC&F)L4DH0LiyWr3Iq}T%J7SZU&6Za%cF^=}r-b*tM zGkOYUWsoMIU>YfN-w?1)eWUJ3G&Gy+YjWNCt;LS`{=qd&+6&Cb(21XVeqHq-iH2uG{RR z#u&}Ll6@ob`^VawfF|Up(xgURf`Mj2ly6tVaPq+mS#623mgVrvH5z39LBrY;P=R@w z26;q-f(!jxSXkHrZue%yZ#ABW2{9nV#ZXgI^B2DZwpAKH^=v}MZ{R27^!WHF^&@+E zte5x?+hSvp-w3glo|;glo{8s*+0+|U$?la5k)Kkfv=MW8&GmrJoiXuKkO$vg#c`); zu^*8cfO$16^{hggdq=Y?oL^6yKhz-XXJHD_$9l0)f)2Bx=i0xl%sUl-KeLjd$VG1W z{}}>o%+GGQ*SkBpXA-b86Fx;1pfcw8{_GoE@53`!)ufHYvTHdfy~!h<<~X1;ZcoFh zxHNe`NmfLCG;cPvBj=lbDsBsNQDZ!Drsf)-FT!$Y{8c6X%&)K`>EEGWwv?b6`<)8M zdCoCoyNK9IbPRR%Nq1FVzxkMP?!a@nHW~_GM}!3aYRU|&Abn_af*75Qhcb!%lCEUm zSK1Li6aQ6$i4y7)x07V~FLuwDF-ynyE0ha9OFu`fCcd36vF^@#@-^RT4{Y;z*f#q9 zvQIp2JHr?4?v?#wOB<+v1o&=`e{<9^beY-$Zt8(9(0`#o#Io#{f3lXF0he7g!1srL z1Vtb7GE;vQTRCrAsXoJ4Pez@ z=v#?x>4ACOW{}CV@0M84k^X3l8mkTy&SeVhqa(As+Q7c`M@9nQFi-`C+Xd9CUE=_SpX|UcBP5l?3dn!wiXa%3JpbKY zEIn)#eRR-#m;=ft@y|QFHU~?qm%vqfukyhpb@HuWEOuJ~RYSc$CSA&zm+**WX;Mz6 zowC3{-^t%meuw-OCeW}E<=!p}lKN8&9x9>} z5)@!tLN}Vrq?v)_uCiz8+J``s#7Gm>w7s-g4|fJjpThGvt`eblm~=f!w3pUsPYSau zp@rsg%tSN+mQvAg#LARMT_??(!{YarIEojYI*6W|PU8j009yDeF4=f5!iDB<| zaig2*2IK_uwwt}%+&8QA_=Od!W9M|C1cv~K7X4*=RA(QZ8U2cHmQ19(iQ>`N=&Lc~ zcmtYdGKJH#D#r#N`_5s8NjZJ>VXQsGJUs5&H6%6hQ5`xt&I?nQ9)2e_sj* zeI0o(Ub0U#ri_>dnhvRIvz*y7(S^&Wj<;qeE=^BDQ>PZ7C^%yTQ<6L`i`e7~NX-o| z(xi^h&1`h^<4GE^fhQm?q~r^%_-wwno|SFE%*e=yNc@7^RVhTDYTISgNo~E(^KP`3 z(lGk6Go|=r9Es)8;k93{3A39f2Un_BVHaDo+(_@%X8G|2U2c}49r-xUmTG{O)>}>H z^q{Gexbkf7AHtYC>dcHUU;_I$Z#kQhvM!KxErnr5qiUy&1Fy-fG6MvVhEs?|$EsK? zadDgQ8eyaFDouYK=P3A2-^7r0Ay6~A(Ww;euDv*zcucqNNs<>#PgG`CK`2Z7(PlPQ zp$u+WWKzDYI$9k+H<<%b}y74fa=YnA$1|5>FIHx|X+ zqhs5!n5Ao(0(VwhnXz0aWi>ABnvC=u*=h5q$xm4?rIgDUmN3I&Tv+Zx2$@zI-Hoa} z$(4d!zc1l*cmF90R%^=B+<+;OF$pb%evYiEYkc-1bIe2DSI_SuoSl%5gH+8fCJLXsD}Ildf$@PffSi5Yuj< z&fO)Emt;{i%%Lz+UVQmm{+B5X`umJ{l~A)dWa3I;?aV5d^b?jvi3xM(x8>Nx zDrcI$?sYLyLHJVS_a!E^Ht#$1lAY?bMy}y1y?&RtDd*}tu&0BBWE}sY<%DD$LrJ4W z6||r$PC+;s@tAARwH4=TklFfBK1e zXe@-S0aBfWg^Onon`4S* zz&nDt23#u^ZKMC)fE}uFH9A13=pO|C=AQD@FD%46Fu5{2E z)M4)%qyn^3>58C{uI%?IpMNuZm0}drLyeCZ!M+ifT;><=1cM$|Fg%shdQQSl6En+1 z)DCudfFuB(p74Sd9EbHTVUT1PS*5;%ab@6k(u5144$NxeZ>j#ew0-tc6~3RS%OG@vwIpq3rH z!;rQUt>6F3zU+;wmFQ;FhrEmN!bpk+?I9C;7;SJa3}Gf_o;05?oKLxwWySB# z?9!>-zRbzInOX@gPcZ45c3VkR5vl|u8g-|A^w>+HD|xM%phuaNHXu3u8^Ej~l<6?9 z7A73XJg`K#sqlly@2?sVX$|Y~dTO$t<6(()OYi_L&5-H{>Xm2O8D-hv!?IMo%Sdjh z=f6;8HKGW&wLKQT9cxi3ZEhI0;1eM$Z~Ei=cj9|As1yi+fX)=$o`#&??%A=$x(~XH z)PD~N8|@3?TX3WS0qy$7kWsSCpNZ{_G+~OE@i7uCra#F(njQrs0|%rGqo($q z3_}e;Y$da~nZy>YW%QyQiJ}0WdghGgJqX{cTrQl|)8*Wp=(odtmXHvYiZ241HG{)Y zyj{-nd>YXO39ydR!JHU8!u)xc=xIiIRUJyO&tq47KplNSO8;@YtY6ZbytKM9e9O{% zC4ZY&t&w2j!}(6&P1T(geftcxoif>tv5K2B^3$i4o6wsH5A8&*VQej47z|S*U-8G* zSgzyIs!Y1zXACfyLWM+7i&A><9E(|t&t_uMlH4f%C!w0eL!>Psx{~c*`cG39ClB`J z2RcBlG(oCc$zD|a8fn}xCkgs$$2A`Q<-5a^0l?VYIw&g(w7cF;!_q@HQ&PM`OJ6+N z^^&W;QG`NJ($`6DoltyzcgZx=54y_vR|4%1!15~CJG;VP($?}?j5*j2(CNEyihd4M zBleLF@X<*$Mt>$eQ&2W@%p8@mH}MkyPMM!Rx^@J7+I>~xe3)N!GO<)aDh_`b>fWXq z&hEDx!gC7BqlNx%97hypGtE59vJuBFN!4+6aY2DRXhS_{j3(;ap%i`n?+$UaW1XSb zC2h^`V^&je#8n$3Cf2@pXe}8odp1JF+DD_ue6l(|Z|E8bGNQFbwlU=Zt55syvZJ{S zPUK-QsMpig4Pn=njpNC8qQ-53Nsl4Z-s7QSz3Qt0N8sERvU;Dma&+WKw0|-`cSZ{d zysfT^z`Urbh3Jcmd;u@?&4Y#b?3T2e|MKyf=_@`b^LSMMbk%3fafb7*;IL+cWM+u= z9_1va%qlA;J%c_BKqlRp&fUzGr#an`ES!pg&Gw*N-s*n+5=N~0|BP^n9Nh2V;9gN5 zd8ky_?!&HUUB5kdLq3|(8Fao7v2Ec7u`F5$zMk7OxohWd%#5;fyZAU8y>!h{bDH($ zV5zj*g*4jqxc>JlIEL|g0W3fJC*|MhKjv&YM8wAc#)QT<3wY!U7ueoZJ`GNa7$Q1R zGHSB8~y1G5}(?) z6?+%iD$nmYazhHsH75h2k_LGm80*Z^mO`v^Gl{&)f;8eGn)Wke2xLT~8skiIcBy|| z83?n?*)aC#NtphX!n3(mB%a~fTvGBlWYLSJwY8O8)RUJ{DK!X;Do86EChdr~bSD+!cZM9|hY!+5+MK7@9B>rLWr z|Ffg(0pI17X}PHyZCpZs)JX9bzQO}NcXxItbd*;W5wCLmm~_|X5%6Kc>!7EE-8UYA z2%LZ^*W*P{_m6<84U!iLqm$`;sA9Lm-f_E*d@A;T}Gg3uf%3Z+^@Ldutweq~F8Ui<2I8OT|lo#l(QK6>)SQUvcGHMBe z$3rFCn6bmAup8ji?C_@TPRrG@hkZ!k81DhzJg5zE6zJE|Y%ZZ2K#^ZXLYYZVf`7K< zN~|(oy6~5u7`5z}cquDC>5Zfc0e7=n?V_WRqUuq}wW0*Ix;n_w*mHJwj&wG0y@md5 z?phdJe5s(EB@7Q@K`jR30tb)I*lz*_9QyDw7=TL)@cF|3Lv_U4?ome9ZHm)Y0=`!4 zXcX^OG~e*N)XH)aaqn_XmkQ<_kh5 zK8@mA0!%*UijmA+}EGZPu;rk{GSNl zV=(u5Fl?63?o2bD#i{GHA_b_0f%&kT-5VEUby}&X#7B=v?*umD6=pKAX7cWs__XR^ zQbsaFlpK_qL;IjPpB3-hv`0<;Cn&abqBinoO>FnBbnQ>2DH@n82fpI$_#9J-5{ztb z6}GU2Myv_kha2HjGL;367T0L9*@m$Ps7A57xUyVg;5=`x-O`VF+C*{Bk!h1WjSS@eo zZ)Ka0l@Sk5>`12Umq@aG!02nRPrlde#db|7Q(NzZ*kdu@vWY+X(RGXke+$|$C28d; zpWE8A@qFOMeJwve(1*y1&G{6j$t238BoLMB)W{}pJxQ5m*cd%!@Yr)jNLAqoN zLZbb;4SCU|@!5iY>P`db)ISz`-Xf;^J!2}Tf^g9QsJaI);;PO5K*R8?{`>rf#E+8J z+}02>Q3M1Bay6L*!NE<-J6T2qWHDE#xhgSw&zj%nRbGG7$i0eq!P^$y*5p%j=jCEo zD zUpn+4)%C9}>7aN6dF1B}zR%T)-peaIJSO{pUnhRZENcnF$_57jT@`}FLm`12Gk>O0 rg+L(LWZ+*Q5L^=QZx9ID87A>b$IkgKem^ew5+X07Ed5>TeZc<#0Pi6V From 7fef33160d2c97f94a67c73c22e7b63972ef421f Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 18 Aug 2019 15:25:48 -0500 Subject: [PATCH 089/469] sure I guess --- code/game/machinery/iv_drip.dm | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index b217c14e53..9a15f6b74c 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -8,14 +8,14 @@ icon_state = "iv_drip" anchored = FALSE mouse_drag_pointer = MOUSE_ACTIVE_POINTER - var/mob/living/carbon/attached = null + var/mob/living/carbon/attached var/mode = IV_INJECTING - var/obj/item/reagent_containers/beaker = null + var/obj/item/reagent_containers/beaker var/static/list/drip_containers = typecacheof(list(/obj/item/reagent_containers/blood, /obj/item/reagent_containers/food, /obj/item/reagent_containers/glass)) -/obj/machinery/iv_drip/Initialize() +/obj/machinery/iv_drip/Initialize(mapload) . = ..() update_icon() @@ -84,6 +84,8 @@ if(Adjacent(target) && usr.Adjacent(target)) if(beaker) usr.visible_message("[usr] attaches [src] to [target].", "You attach [src] to [target].") + log_combat(usr, target, "attached", src, "containing: [beaker.name] - ([beaker.reagents.log_list()])") + add_fingerprint(usr) attached = target START_PROCESSING(SSmachines, src) update_icon() @@ -100,6 +102,8 @@ return beaker = W to_chat(user, "You attach [W] to [src].") + user.log_message("attached a [W] to [src] at [AREACOORD(src)] containing ([beaker.reagents.log_list()])", LOG_ATTACK) + add_fingerprint(user) update_icon() return else @@ -129,9 +133,7 @@ if(istype(beaker, /obj/item/reagent_containers/blood)) // speed up transfer on blood packs transfer_amount = 10 - var/fraction = min(transfer_amount/beaker.reagents.total_volume, 1) //the fraction that is transfered of the total volume - beaker.reagents.reaction(attached, INJECT, fraction, FALSE) //make reagents reacts, but don't spam messages - beaker.reagents.trans_to(attached, transfer_amount) + beaker.reagents.trans_to(attached, transfer_amount, method = INJECT, show_message = FALSE) //make reagents reacts, but don't spam messages update_icon() // Take blood @@ -145,7 +147,7 @@ return // If the human is losing too much blood, beep. - if(attached.blood_volume < ( (BLOOD_VOLUME_SAFE*attached.blood_ratio) && prob(5) ) ) + if(attached.blood_volume < ((BLOOD_VOLUME_SAFE*attached.blood_ratio) && prob(5))) visible_message("[src] beeps loudly.") playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) attached.transfer_blood_to(beaker, amount) @@ -178,7 +180,6 @@ if(usr.incapacitated()) return - if(beaker) beaker.forceMove(drop_location()) beaker = null @@ -195,27 +196,27 @@ if(usr.incapacitated()) return - mode = !mode to_chat(usr, "The IV drip is now [mode ? "injecting" : "taking blood"].") update_icon() /obj/machinery/iv_drip/examine(mob/user) - ..() + . = ..() if(get_dist(user, src) > 2) return - to_chat(user, "The IV drip is [mode ? "injecting" : "taking blood"].") + . += "[src] is [mode ? "injecting" : "taking blood"]." if(beaker) if(beaker.reagents && beaker.reagents.reagent_list.len) - to_chat(user, "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 - to_chat(user, "Attached is an empty [beaker.name].") + . += "Attached is an empty [beaker.name]." else - to_chat(user, "No chemicals are attached.") + . += "No chemicals are attached." - to_chat(user, "[attached ? attached : "No one"] is attached.") + . += "[attached ? attached : "No one"] is attached." + to_chat(user,.) #undef IV_TAKING -#undef IV_INJECTING +#undef IV_INJECTING \ No newline at end of file From 213b01b9693c02b5c48dfb5d500d174443e11f4b Mon Sep 17 00:00:00 2001 From: Poojawa Date: Mon, 19 Aug 2019 04:33:40 -0500 Subject: [PATCH 090/469] fixes the IV dripper memes, better formatting too --- code/game/machinery/iv_drip.dm | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 9a15f6b74c..48015afc24 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -133,7 +133,9 @@ if(istype(beaker, /obj/item/reagent_containers/blood)) // speed up transfer on blood packs transfer_amount = 10 - beaker.reagents.trans_to(attached, transfer_amount, method = INJECT, show_message = FALSE) //make reagents reacts, but don't spam messages + var/fraction = min(transfer_amount/beaker.reagents.total_volume, 1) //the fraction that is transfered of the total volume + beaker.reagents.reaction(attached, INJECT, fraction, FALSE) //make reagents reacts, but don't spam messages + beaker.reagents.trans_to(attached, transfer_amount) update_icon() // Take blood @@ -205,17 +207,17 @@ if(get_dist(user, src) > 2) return - . += "[src] is [mode ? "injecting" : "taking blood"]." + . += "[src] is [mode ? "injecting" : "taking blood"].\n" if(beaker) if(beaker.reagents && beaker.reagents.reagent_list.len) - . += "Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid." + . += "\tAttached is \a [beaker] with [beaker.reagents.total_volume] units of liquid.\n" else - . += "Attached is an empty [beaker.name]." + . += "\tAttached is an empty [beaker.name].\n" else - . += "No chemicals are attached." + . += "\tNo chemicals are attached.\n" - . += "[attached ? attached : "No one"] is attached." + . += "\t[attached ? attached : "No one"] is attached." to_chat(user,.) #undef IV_TAKING From cede93299edeca080bcff09a0a7d0d0b028f1e02 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Mon, 19 Aug 2019 04:48:37 -0500 Subject: [PATCH 091/469] REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE --- code/game/objects/effects/decals/cleanable.dm | 2 +- .../effects/decals/cleanable/humans.dm | 7 +-- code/modules/clothing/clothing.dm | 10 --- code/modules/clothing/shoes/_shoes.dm | 9 +++ .../mob/living/carbon/human/human_movement.dm | 3 +- .../chemistry/reagents/alcohol_reagents.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 63 +++++++------------ .../reagents/reagent_containers/blood_pack.dm | 1 + 8 files changed, 38 insertions(+), 59 deletions(-) diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 1d57b3437e..a2b37d22ae 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -82,7 +82,7 @@ add_blood = bloodiness bloodiness -= add_blood S.bloody_shoes[blood_state] = min(MAX_SHOE_BLOODINESS,S.bloody_shoes[blood_state]+add_blood) - if(length(blood_DNA)) + if(blood_DNA && blood_DNA.len) S.add_blood_DNA(blood_DNA) S.blood_state = blood_state update_icon() diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index c9d2c8c59a..1af15b0383 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -9,13 +9,10 @@ color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere. /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) - if(length(C.blood_DNA)) + if (C.blood_DNA) blood_DNA |= C.blood_DNA.Copy() - if (bloodiness) - if (C.bloodiness < MAX_SHOE_BLOODINESS) - C.bloodiness += bloodiness update_icon() - return ..() + ..() /obj/effect/decal/cleanable/blood/transfer_blood_dna() ..() diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 84f2b9824d..776709f5b8 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -41,10 +41,6 @@ var/dynamic_hair_suffix = ""//head > mask for head hair var/dynamic_fhair_suffix = ""//mask > head for facial hair - //for blood coloration memes - var/last_bloodtype //used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans - var/last_blood_DNA //same as last one - /obj/item/clothing/Initialize() . = ..() if(CHECK_BITFIELD(clothing_flags, VOICEBOX_TOGGLABLE)) @@ -343,9 +339,3 @@ BLIND // can't see anything deconstruct(FALSE) else ..() - -/obj/item/clothing/transfer_blood_dna(list/blood_dna, list/datum/disease/diseases) - ..() - if(length(blood_dna)) - last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works - last_blood_DNA = blood_dna[blood_dna.len] diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index 8c99401b4d..cb4cec175a 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -18,6 +18,8 @@ //CITADEL EDIT Enables digitigrade shoe styles var/adjusted = NORMAL_STYLE mutantrace_variation = MUTANTRACE_VARIATION + var/last_bloodtype = "" //used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans + var/last_blood_DNA = "" //same as last one /obj/item/clothing/shoes/ComponentInitialize() . = ..() @@ -42,6 +44,13 @@ playsound(user, 'sound/weapons/genhit2.ogg', 50, 1) return(BRUTELOSS) + +/obj/item/clothing/shoes/transfer_blood_dna(list/blood_dna) + ..() + if(blood_dna.len) + last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works + last_blood_DNA = blood_dna[blood_dna.len] + /obj/item/clothing/shoes/worn_overlays(isinhands = FALSE) . = list() if(!isinhands) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index f03b75cf11..4e6f9e0eb9 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -64,9 +64,8 @@ FP.blood_state = S.blood_state FP.entered_dirs |= dir FP.bloodiness = S.bloody_shoes[S.blood_state] - if(S.last_blood_DNA && S.last_bloodtype) + if(S.last_bloodtype) FP.blood_DNA += list(S.last_blood_DNA = S.last_bloodtype) - //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood FP.update_icon() update_inv_shoes() //End bloody footprints diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 79b6f96781..78282c2f8d 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -583,7 +583,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bloody_mary/on_mob_life(mob/living/carbon/C) if(C.blood_volume < (BLOOD_VOLUME_NORMAL*C.blood_ratio)) - C.blood_volume = min((BLOOD_VOLUME_NORMAL*C.blood_ratio), C.blood_volume + 3) //Bloody Mary quickly restores blood loss. + C.blood_volume += 2 //Bloody Mary quickly restores blood loss. ..() /datum/reagent/consumable/ethanol/brave_bull diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 9bef02c3b2..ddb83b2876 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -43,12 +43,10 @@ if(reac_volume >= 10 && istype(L)) L.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) - L.color = bloodtype_to_color(data["blood_type"]) /datum/reagent/blood/reaction_obj(obj/O, volume) if(volume >= 3 && istype(O)) O.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) - O.color = bloodtype_to_color(data["blood_type"]) /datum/reagent/blood/on_new(list/data) if(iscarbon(src)) @@ -98,11 +96,10 @@ if(reac_volume < 3) return - var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here - if(!B) - B = new(T) + T.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) + var/obj/effect/decal/cleanable/blood/B = locate() in T if(!B.reagents) - B.reagents.add_reagent("blood", reac_volume) + B.reagents.add_reagent(id, reac_volume) B.update_icon() /datum/reagent/blood/synthetics @@ -112,11 +109,6 @@ taste_description = "oily" color = BLOOD_COLOR_SYNTHETIC // rgb: 11, 7, 48 -/datum/reagent/blood/synthetics/reaction_turf(turf/T, reac_volume) - var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here - B.reagents.add_reagent("syntheticblood", reac_volume) - . = ..() - /datum/reagent/blood/xenomorph data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_XENO, "blood_type"="X*","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Xenomorph Blood" @@ -124,11 +116,7 @@ taste_description = "acidic heresy" color = BLOOD_COLOR_XENO // greenish yellow ooze shot_glass_icon_state = "shotglassgreen" - -/datum/reagent/blood/xenomorph/reaction_turf(turf/T, reac_volume) - var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here - B.reagents.add_reagent("xenoblood", reac_volume) - . = ..() + pH = 2.5 /datum/reagent/blood/oil data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_OIL, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) @@ -136,11 +124,7 @@ id = "oilblood" taste_description = "burnt oil" color = BLOOD_COLOR_OIL // dark, y'know, expected batman colors. - -/datum/reagent/blood/oil/reaction_turf(turf/T, reac_volume) - var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here - B.reagents.add_reagent("oilblood", reac_volume) - . = ..() + pH = 9.75 /datum/reagent/blood/jellyblood data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SLIME, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) @@ -150,29 +134,16 @@ color = BLOOD_COLOR_SLIME taste_description = "slime" taste_mult = 1.3 - -/datum/reagent/blood/jellyblood/on_new(list/data) - .=..() - if(ishuman(src)) - var/mob/living/carbon/human/H = src - var/datum/species/slimecolor = H.dna.species - if("mcolor" in slimecolor.default_features) - color = H.dna.features["mcolor"] - else - color = bloodtype_to_color(data["blood_type"]) - -/datum/reagent/blood/jellyblood/reaction_turf(turf/T, reac_volume) - var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here - B.reagents.add_reagent("jellyblood", reac_volume) - . = ..() + pH = 4 /datum/reagent/blood/jellyblood/on_mob_life(mob/living/carbon/M) if(prob(10)) - to_chat(M, "Your insides are burning!") + if(M.dna?.species?.exotic_bloodtype != "GEL") + to_chat(M, "Your insides are burning!") M.adjustToxLoss(rand(20,60)*REM, 0) . = 1 - else if(prob(40)) - M.heal_bodypart_damage(5*REM) + else if(prob(40) && isjellyperson(M)) + M.heal_bodypart_damage(2*REM) . = 1 ..() @@ -202,6 +173,7 @@ taste_description = "slime" shot_glass_icon_state = "shotglassgreen" data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SLIME, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + pH = 4 /datum/reagent/liquidgibs/synth name = "Synthetic sludge" @@ -1106,7 +1078,7 @@ reagent_state = SOLID taste_description = "iron" pH = 6 - + overdose_threshold = 30 color = "#c2391d" /datum/reagent/iron/on_mob_life(mob/living/carbon/C) @@ -1120,6 +1092,17 @@ M.reagents.add_reagent("toxin", reac_volume) ..() +/datum/reagent/iron/overdose_start(mob/living/M) + to_chat(M, "You start feeling your guts twisting painfully!") + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/overdose, name) + +/datum/reagent/iron/overdose_process(mob/living/carbon/C) + if(prob(20)) + var/obj/item/organ/liver/L = C.getorganslot(ORGAN_SLOT_LIVER) + if (istype(L)) + C.applyLiverDamage(2) //mild until the fabled med rework comes out. the organ damage galore + ..() + /datum/reagent/gold name = "Gold" id = "gold" diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index d250dcff0e..34d26a974e 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/bloodpack.dmi' icon_state = "bloodpack" volume = 200 + reagent_flags = DRAINABLE var/blood_type = null var/labelled = 0 var/color_to_apply = "#FFFFFF" From 518eeb9dbe86cdbebb22992851e66e415f960a27 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Mon, 19 Aug 2019 21:11:36 -0500 Subject: [PATCH 092/469] fixes tgui I guess lol --- tgui/assets/tgui.js | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index b34e3194e7..3599ece4f4 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -1,21 +1,21 @@ require=function(){function t(e,n,a){function r(o,s){if(!n[o]){if(!e[o]){var p="function"==typeof require&&require;if(!s&&p)return p(o,!0);if(i)return i(o,!0);var u=Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var c=n[o]={exports:{}};e[o][0].call(c.exports,function(t){var n=e[o][1][t];return r(n||t)},c,c.exports,t,e,n,a)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o=0;--a){var r=this.tryEntries[a],i=r.completion;if("root"===r.tryLoc)return e("end");if(r.tryLoc<=this.prev){var o=b.call(r,"catchLoc"),s=b.call(r,"finallyLoc");if(o&&s){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&b.call(a,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),d(n),O}},"catch":function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var a=n.completion;if("throw"===a.type){var r=a.arg;d(n)}return r}}throw Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:h(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=g),O}}}("object"==typeof t?t:"object"==typeof window?window:"object"==typeof self?self:this)}).call(this,void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],3:[function(t,e,n){t(129),e.exports=t(24).RegExp.escape},{129:129,24:24}],4:[function(t,e,n){e.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},{}],5:[function(t,e,n){var a=t(19);e.exports=function(t,e){if("number"!=typeof t&&"Number"!=a(t))throw TypeError(e);return+t}},{19:19}],6:[function(t,e,n){var a=t(127)("unscopables"),r=Array.prototype;void 0==r[a]&&t(43)(r,a,{}),e.exports=function(t){r[a][t]=!0}},{127:127,43:43}],7:[function(t,e,n){e.exports=function(t,e,n,a){if(!(t instanceof e)||void 0!==a&&a in t)throw TypeError(n+": incorrect invocation!");return t}},{}],8:[function(t,e,n){var a=t(52);e.exports=function(t){if(!a(t))throw TypeError(t+" is not an object!");return t}},{52:52}],9:[function(t,e,n){"use strict";var a=t(117),r=t(112),i=t(116);e.exports=[].copyWithin||function(t,e){var n=a(this),o=i(n.length),s=r(t,o),p=r(e,o),u=arguments.length>2?arguments[2]:void 0,c=Math.min((void 0===u?o:r(u,o))-p,o-s),l=1;for(s>p&&p+c>s&&(l=-1,p+=c-1,s+=c-1);c-- >0;)p in n?n[s]=n[p]:delete n[s],s+=l,p+=l;return n}},{112:112,116:116,117:117}],10:[function(t,e,n){"use strict";var a=t(117),r=t(112),i=t(116);e.exports=function(t){for(var e=a(this),n=i(e.length),o=arguments.length,s=r(o>1?arguments[1]:void 0,n),p=o>2?arguments[2]:void 0,u=void 0===p?n:r(p,n);u>s;)e[s++]=t;return e}},{112:112,116:116,117:117}],11:[function(t,e,n){var a=t(40);e.exports=function(t,e){var n=[];return a(t,!1,n.push,n,e),n}},{40:40}],12:[function(t,e,n){var a=t(115),r=t(116),i=t(112);e.exports=function(t){return function(e,n,o){var s,p=a(e),u=r(p.length),c=i(o,u);if(t&&n!=n){for(;u>c;)if(s=p[c++],s!=s)return!0}else for(;u>c;c++)if((t||c in p)&&p[c]===n)return t||c||0;return!t&&-1}}},{112:112,115:115,116:116}],13:[function(t,e,n){var a=t(26),r=t(48),i=t(117),o=t(116),s=t(16);e.exports=function(t,e){var n=1==t,p=2==t,u=3==t,c=4==t,l=6==t,d=5==t||l,f=e||s;return function(e,s,h){for(var m,g,v=i(e),b=r(v),y=a(s,h,3),_=o(b.length),x=0,w=n?f(e,_):p?f(e,0):void 0;_>x;x++)if((d||x in b)&&(m=b[x],g=y(m,x,v),t))if(n)w[x]=g;else if(g)switch(t){case 3:return!0;case 5:return m;case 6:return x;case 2:w.push(m)}else if(c)return!1;return l?-1:u||c?c:w}}},{116:116,117:117,16:16,26:26,48:48}],14:[function(t,e,n){var a=t(4),r=t(117),i=t(48),o=t(116);e.exports=function(t,e,n,s,p){a(e);var u=r(t),c=i(u),l=o(u.length),d=p?l-1:0,f=p?-1:1;if(2>n)for(;;){if(d in c){s=c[d],d+=f;break}if(d+=f,p?0>d:d>=l)throw TypeError("Reduce of empty array with no initial value")}for(;p?d>=0:l>d;d+=f)d in c&&(s=e(s,c[d],d,u));return s}},{116:116,117:117,4:4,48:48}],15:[function(t,e,n){var a=t(52),r=t(50),i=t(127)("species");e.exports=function(t){var e;return r(t)&&(e=t.constructor,"function"!=typeof e||e!==Array&&!r(e.prototype)||(e=void 0),a(e)&&(e=e[i],null===e&&(e=void 0))),void 0===e?Array:e}},{127:127,50:50,52:52}],16:[function(t,e,n){var a=t(15);e.exports=function(t,e){return new(a(t))(e)}},{15:15}],17:[function(t,e,n){"use strict";var a=t(4),r=t(52),i=t(47),o=[].slice,s={},p=function(t,e,n){if(!(e in s)){for(var a=[],r=0;e>r;r++)a[r]="a["+r+"]";s[e]=Function("F,a","return new F("+a.join(",")+")")}return s[e](t,n)};e.exports=Function.bind||function(t){var e=a(this),n=o.call(arguments,1),s=function(){var a=n.concat(o.call(arguments));return this instanceof s?p(e,a.length,a):i(e,a,t)};return r(e.prototype)&&(s.prototype=e.prototype),s}},{4:4,47:47,52:52}],18:[function(t,e,n){var a=t(19),r=t(127)("toStringTag"),i="Arguments"==a(function(){return arguments}()),o=function(t,e){try{return t[e]}catch(n){}};e.exports=function(t){var e,n,s;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=o(e=Object(t),r))?n:i?a(e):"Object"==(s=a(e))&&"function"==typeof e.callee?"Arguments":s}},{127:127,19:19}],19:[function(t,e,n){var a={}.toString;e.exports=function(t){return a.call(t).slice(8,-1)}},{}],20:[function(t,e,n){"use strict";var a=t(72).f,r=t(71),i=t(91),o=t(26),s=t(7),p=t(40),u=t(56),c=t(58),l=t(98),d=t(30),f=t(66).fastKey,h=t(124),m=d?"_s":"size",g=function(t,e){var n,a=f(e);if("F"!==a)return t._i[a];for(n=t._f;n;n=n.n)if(n.k==e)return n};e.exports={getConstructor:function(t,e,n,u){var c=t(function(t,a){s(t,c,e,"_i"),t._t=e,t._i=r(null),t._f=void 0,t._l=void 0,t[m]=0,void 0!=a&&p(a,n,t[u],t)});return i(c.prototype,{clear:function(){for(var t=h(this,e),n=t._i,a=t._f;a;a=a.n)a.r=!0,a.p&&(a.p=a.p.n=void 0),delete n[a.i];t._f=t._l=void 0,t[m]=0},"delete":function(t){var n=h(this,e),a=g(n,t);if(a){var r=a.n,i=a.p;delete n._i[a.i],a.r=!0,i&&(i.n=r),r&&(r.p=i),n._f==a&&(n._f=r),n._l==a&&(n._l=i),n[m]--}return!!a},forEach:function(t){h(this,e);for(var n,a=o(t,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(a(n.v,n.k,this);n&&n.r;)n=n.p},has:function(t){return!!g(h(this,e),t)}}),d&&a(c.prototype,"size",{get:function(){return h(this,e)[m]}}),c},def:function(t,e,n){var a,r,i=g(t,e);return i?i.v=n:(t._l=i={i:r=f(e,!0),k:e,v:n,p:a=t._l,n:void 0,r:!1},t._f||(t._f=i),a&&(a.n=i),t[m]++,"F"!==r&&(t._i[r]=i)),t},getEntry:g,setStrong:function(t,e,n){u(t,e,function(t,n){this._t=h(t,e),this._k=n,this._l=void 0},function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?"keys"==e?c(0,n.k):"values"==e?c(0,n.v):c(0,[n.k,n.v]):(t._t=void 0,c(1))},n?"entries":"values",!n,!0),l(e)}}},{124:124,26:26,30:30,40:40,56:56,58:58,66:66,7:7,71:71,72:72,91:91,98:98}],21:[function(t,e,n){var a=t(18),r=t(11);e.exports=function(t){return function(){if(a(this)!=t)throw TypeError(t+"#toJSON isn't generic");return r(this)}}},{11:11,18:18}],22:[function(t,e,n){"use strict";var a=t(91),r=t(66).getWeak,i=t(8),o=t(52),s=t(7),p=t(40),u=t(13),c=t(42),l=t(124),d=u(5),f=u(6),h=0,m=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},v=function(t,e){return d(t.a,function(t){return t[0]===e})};g.prototype={get:function(t){var e=v(this,t);return e?e[1]:void 0},has:function(t){return!!v(this,t)},set:function(t,e){var n=v(this,t);n?n[1]=e:this.a.push([t,e])},"delete":function(t){var e=f(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},e.exports={getConstructor:function(t,e,n,i){var u=t(function(t,a){s(t,u,e,"_i"),t._t=e,t._i=h++,t._l=void 0,void 0!=a&&p(a,n,t[i],t)});return a(u.prototype,{"delete":function(t){if(!o(t))return!1;var n=r(t);return n===!0?m(l(this,e))["delete"](t):n&&c(n,this._i)&&delete n[this._i]},has:function(t){if(!o(t))return!1;var n=r(t);return n===!0?m(l(this,e)).has(t):n&&c(n,this._i)}}),u},def:function(t,e,n){var a=r(i(e),!0);return a===!0?m(t).set(e,n):a[t._i]=n,t},ufstore:m}},{124:124,13:13,40:40,42:42,52:52,66:66,7:7,8:8,91:91}],23:[function(t,e,n){"use strict";var a=t(41),r=t(34),i=t(92),o=t(91),s=t(66),p=t(40),u=t(7),c=t(52),l=t(36),d=t(57),f=t(99),h=t(46);e.exports=function(t,e,n,m,g,v){var b=a[t],y=b,_=g?"set":"add",x=y&&y.prototype,w={},k=function(t){var e=x[t];i(x,t,"delete"==t?function(t){return v&&!c(t)?!1:e.call(this,0===t?0:t)}:"has"==t?function(t){return v&&!c(t)?!1:e.call(this,0===t?0:t)}:"get"==t?function(t){return v&&!c(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof y&&(v||x.forEach&&!l(function(){(new y).entries().next()}))){var S=new y,E=S[_](v?{}:-0,1)!=S,C=l(function(){S.has(1)}),P=d(function(t){new y(t)}),A=!v&&l(function(){for(var t=new y,e=5;e--;)t[_](e,e);return!t.has(-0)});P||(y=e(function(e,n){u(e,y,t);var a=h(new b,e,y);return void 0!=n&&p(n,g,a[_],a),a}),y.prototype=x,x.constructor=y),(C||A)&&(k("delete"),k("has"),g&&k("get")),(A||E)&&k(_),v&&x.clear&&delete x.clear}else y=m.getConstructor(e,t,g,_),o(y.prototype,n),s.NEED=!0;return f(y,t),w[t]=y,r(r.G+r.W+r.F*(y!=b),w),v||m.setStrong(y,t,g),y}},{34:34,36:36,40:40,41:41,46:46,52:52,57:57,66:66,7:7,91:91,92:92,99:99}],24:[function(t,e,n){var a=e.exports={version:"2.5.6"};"number"==typeof __e&&(__e=a)},{}],25:[function(t,e,n){"use strict";var a=t(72),r=t(90);e.exports=function(t,e,n){e in t?a.f(t,e,r(0,n)):t[e]=n}},{72:72,90:90}],26:[function(t,e,n){var a=t(4);e.exports=function(t,e,n){if(a(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,a){return t.call(e,n,a)};case 3:return function(n,a,r){return t.call(e,n,a,r)}}return function(){return t.apply(e,arguments)}}},{4:4}],27:[function(t,e,n){"use strict";var a=t(36),r=Date.prototype.getTime,i=Date.prototype.toISOString,o=function(t){return t>9?t:"0"+t};e.exports=a(function(){return"0385-07-25T07:06:39.999Z"!=i.call(new Date(-5e13-1))})||!a(function(){i.call(new Date(NaN))})?function(){if(!isFinite(r.call(this)))throw RangeError("Invalid time value");var t=this,e=t.getUTCFullYear(),n=t.getUTCMilliseconds(),a=0>e?"-":e>9999?"+":"";return a+("00000"+Math.abs(e)).slice(a?-6:-4)+"-"+o(t.getUTCMonth()+1)+"-"+o(t.getUTCDate())+"T"+o(t.getUTCHours())+":"+o(t.getUTCMinutes())+":"+o(t.getUTCSeconds())+"."+(n>99?n:"0"+o(n))+"Z"}:i},{36:36}],28:[function(t,e,n){"use strict";var a=t(8),r=t(118),i="number";e.exports=function(t){if("string"!==t&&t!==i&&"default"!==t)throw TypeError("Incorrect hint");return r(a(this),t!=i)}},{118:118,8:8}],29:[function(t,e,n){e.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},{}],30:[function(t,e,n){e.exports=!t(36)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{36:36}],31:[function(t,e,n){var a=t(52),r=t(41).document,i=a(r)&&a(r.createElement);e.exports=function(t){return i?r.createElement(t):{}}},{41:41,52:52}],32:[function(t,e,n){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],33:[function(t,e,n){var a=t(81),r=t(78),i=t(82);e.exports=function(t){var e=a(t),n=r.f;if(n)for(var o,s=n(t),p=i.f,u=0;s.length>u;)p.call(t,o=s[u++])&&e.push(o);return e}},{78:78,81:81,82:82}],34:[function(t,e,n){var a=t(41),r=t(24),i=t(43),o=t(92),s=t(26),p="prototype",u=function(t,e,n){var c,l,d,f,h=t&u.F,m=t&u.G,g=t&u.S,v=t&u.P,b=t&u.B,y=m?a:g?a[e]||(a[e]={}):(a[e]||{})[p],_=m?r:r[e]||(r[e]={}),x=_[p]||(_[p]={});m&&(n=e);for(c in n)l=!h&&y&&void 0!==y[c],d=(l?y:n)[c],f=b&&l?s(d,a):v&&"function"==typeof d?s(Function.call,d):d,y&&o(y,c,d,t&u.U),_[c]!=d&&i(_,c,f),v&&x[c]!=d&&(x[c]=d)};a.core=r,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,e.exports=u},{24:24,26:26,41:41,43:43,92:92}],35:[function(t,e,n){var a=t(127)("match");e.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[a]=!1,!"/./"[t](e)}catch(r){}}return!0}},{127:127}],36:[function(t,e,n){e.exports=function(t){try{return!!t()}catch(e){return!0}}},{}],37:[function(t,e,n){"use strict";var a=t(43),r=t(92),i=t(36),o=t(29),s=t(127);e.exports=function(t,e,n){var p=s(t),u=n(o,p,""[t]),c=u[0],l=u[1];i(function(){var e={};return e[p]=function(){return 7},7!=""[t](e)})&&(r(String.prototype,t,c),a(RegExp.prototype,p,2==e?function(t,e){return l.call(t,this,e)}:function(t){return l.call(t,this)}))}},{127:127,29:29,36:36,43:43,92:92}],38:[function(t,e,n){"use strict";var a=t(8);e.exports=function(){var t=a(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},{8:8}],39:[function(t,e,n){"use strict";function a(t,e,n,u,c,l,d,f){for(var h,m,g=c,v=0,b=d?s(d,f,3):!1;u>v;){if(v in n){if(h=b?b(n[v],v,e):n[v],m=!1,i(h)&&(m=h[p],m=void 0!==m?!!m:r(h)),m&&l>0)g=a(t,e,h,o(h.length),g,l-1)-1;else{if(g>=9007199254740991)throw TypeError();t[g]=h}g++}v++}return g}var r=t(50),i=t(52),o=t(116),s=t(26),p=t(127)("isConcatSpreadable");e.exports=a},{116:116,127:127,26:26,50:50,52:52}],40:[function(t,e,n){var a=t(26),r=t(54),i=t(49),o=t(8),s=t(116),p=t(128),u={},c={},n=e.exports=function(t,e,n,l,d){var f,h,m,g,v=d?function(){return t}:p(t),b=a(n,l,e?2:1),y=0;if("function"!=typeof v)throw TypeError(t+" is not iterable!");if(i(v)){for(f=s(t.length);f>y;y++)if(g=e?b(o(h=t[y])[0],h[1]):b(t[y]),g===u||g===c)return g}else for(m=v.call(t);!(h=m.next()).done;)if(g=r(m,b,h.value,e),g===u||g===c)return g};n.BREAK=u,n.RETURN=c},{116:116,128:128,26:26,49:49,54:54,8:8}],41:[function(t,e,n){var a=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=a)},{}],42:[function(t,e,n){var a={}.hasOwnProperty;e.exports=function(t,e){return a.call(t,e)}},{}],43:[function(t,e,n){var a=t(72),r=t(90);e.exports=t(30)?function(t,e,n){return a.f(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},{30:30,72:72,90:90}],44:[function(t,e,n){var a=t(41).document;e.exports=a&&a.documentElement},{41:41}],45:[function(t,e,n){e.exports=!t(30)&&!t(36)(function(){return 7!=Object.defineProperty(t(31)("div"),"a",{get:function(){return 7}}).a})},{30:30,31:31,36:36}],46:[function(t,e,n){var a=t(52),r=t(97).set;e.exports=function(t,e,n){var i,o=e.constructor;return o!==n&&"function"==typeof o&&(i=o.prototype)!==n.prototype&&a(i)&&r&&r(t,i),t}},{52:52,97:97}],47:[function(t,e,n){e.exports=function(t,e,n){var a=void 0===n;switch(e.length){case 0:return a?t():t.call(n);case 1:return a?t(e[0]):t.call(n,e[0]);case 2:return a?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return a?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return a?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},{}],48:[function(t,e,n){var a=t(19);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==a(t)?t.split(""):Object(t)}},{19:19}],49:[function(t,e,n){var a=t(59),r=t(127)("iterator"),i=Array.prototype;e.exports=function(t){return void 0!==t&&(a.Array===t||i[r]===t)}},{127:127,59:59}],50:[function(t,e,n){var a=t(19);e.exports=Array.isArray||function(t){return"Array"==a(t)}},{19:19}],51:[function(t,e,n){var a=t(52),r=Math.floor;e.exports=function(t){return!a(t)&&isFinite(t)&&r(t)===t}},{52:52}],52:[function(t,e,n){e.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],53:[function(t,e,n){var a=t(52),r=t(19),i=t(127)("match");e.exports=function(t){var e;return a(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==r(t))}},{127:127,19:19,52:52}],54:[function(t,e,n){var a=t(8);e.exports=function(t,e,n,r){try{return r?e(a(n)[0],n[1]):e(n)}catch(i){var o=t["return"];throw void 0!==o&&a(o.call(t)),i}}},{8:8}],55:[function(t,e,n){"use strict";var a=t(71),r=t(90),i=t(99),o={};t(43)(o,t(127)("iterator"),function(){return this}),e.exports=function(t,e,n){t.prototype=a(o,{next:r(1,n)}),i(t,e+" Iterator")}},{127:127,43:43,71:71,90:90,99:99}],56:[function(t,e,n){"use strict";var a=t(60),r=t(34),i=t(92),o=t(43),s=t(59),p=t(55),u=t(99),c=t(79),l=t(127)("iterator"),d=!([].keys&&"next"in[].keys()),f="@@iterator",h="keys",m="values",g=function(){return this};e.exports=function(t,e,n,v,b,y,_){p(n,e,v);var x,w,k,S=function(t){if(!d&&t in A)return A[t];switch(t){case h:return function(){return new n(this,t)};case m:return function(){return new n(this,t)}}return function(){return new n(this,t)}},E=e+" Iterator",C=b==m,P=!1,A=t.prototype,O=A[l]||A[f]||b&&A[b],T=O||S(b),R=b?C?S("entries"):T:void 0,M="Array"==e?A.entries||O:O;if(M&&(k=c(M.call(new t)),k!==Object.prototype&&k.next&&(u(k,E,!0),a||"function"==typeof k[l]||o(k,l,g))),C&&O&&O.name!==m&&(P=!0,T=function(){return O.call(this)}),a&&!_||!d&&!P&&A[l]||o(A,l,T),s[e]=T,s[E]=g,b)if(x={values:C?T:S(m),keys:y?T:S(h),entries:R},_)for(w in x)w in A||i(A,w,x[w]);else r(r.P+r.F*(d||P),e,x);return x}},{127:127,34:34,43:43,55:55,59:59,60:60,79:79,92:92,99:99}],57:[function(t,e,n){var a=t(127)("iterator"),r=!1;try{var i=[7][a]();i["return"]=function(){r=!0},Array.from(i,function(){throw 2})}catch(o){}e.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var i=[7],o=i[a]();o.next=function(){return{done:n=!0}},i[a]=function(){return o},t(i)}catch(s){}return n}},{127:127}],58:[function(t,e,n){e.exports=function(t,e){return{value:e,done:!!t}}},{}],59:[function(t,e,n){e.exports={}},{}],60:[function(t,e,n){e.exports=!1},{}],61:[function(t,e,n){var a=Math.expm1;e.exports=!a||a(10)>22025.465794806718||a(10)<22025.465794806718||-2e-17!=a(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&1e-6>t?t+t*t/2:Math.exp(t)-1}:a},{}],62:[function(t,e,n){var a=t(65),r=Math.pow,i=r(2,-52),o=r(2,-23),s=r(2,127)*(2-o),p=r(2,-126),u=function(t){return t+1/i-1/i};e.exports=Math.fround||function(t){var e,n,r=Math.abs(t),c=a(t);return p>r?c*u(r/p/o)*p*o:(e=(1+o/i)*r,n=e-(e-r),n>s||n!=n?c*(1/0):c*n)}},{65:65}],63:[function(t,e,n){e.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&1e-8>t?t-t*t/2:Math.log(1+t)}},{}],64:[function(t,e,n){e.exports=Math.scale||function(t,e,n,a,r){return 0===arguments.length||t!=t||e!=e||n!=n||a!=a||r!=r?NaN:t===1/0||t===-(1/0)?t:(t-e)*(r-a)/(n-e)+a}},{}],65:[function(t,e,n){e.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:0>t?-1:1}},{}],66:[function(t,e,n){var a=t(122)("meta"),r=t(52),i=t(42),o=t(72).f,s=0,p=Object.isExtensible||function(){return!0},u=!t(36)(function(){return p(Object.preventExtensions({}))}),c=function(t){o(t,a,{value:{i:"O"+ ++s,w:{}}})},l=function(t,e){if(!r(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,a)){if(!p(t))return"F";if(!e)return"E";c(t)}return t[a].i},d=function(t,e){if(!i(t,a)){if(!p(t))return!0;if(!e)return!1;c(t)}return t[a].w},f=function(t){return u&&h.NEED&&p(t)&&!i(t,a)&&c(t),t},h=e.exports={KEY:a,NEED:!1,fastKey:l,getWeak:d,onFreeze:f}},{122:122,36:36,42:42,52:52,72:72}],67:[function(t,e,n){var a=t(159),r=t(34),i=t(101)("metadata"),o=i.store||(i.store=new(t(265))),s=function(t,e,n){var r=o.get(t);if(!r){if(!n)return;o.set(t,r=new a)}var i=r.get(e);if(!i){if(!n)return;r.set(e,i=new a)}return i},p=function(t,e,n){var a=s(e,n,!1);return void 0===a?!1:a.has(t)},u=function(t,e,n){var a=s(e,n,!1);return void 0===a?void 0:a.get(t)},c=function(t,e,n,a){s(n,a,!0).set(t,e)},l=function(t,e){var n=s(t,e,!1),a=[];return n&&n.forEach(function(t,e){a.push(e)}),a},d=function(t){return void 0===t||"symbol"==typeof t?t:t+""},f=function(t){r(r.S,"Reflect",t)};e.exports={store:o,map:s,has:p,get:u,set:c,keys:l,key:d,exp:f}},{101:101,159:159,265:265,34:34}],68:[function(t,e,n){var a=t(41),r=t(111).set,i=a.MutationObserver||a.WebKitMutationObserver,o=a.process,s=a.Promise,p="process"==t(19)(o);e.exports=function(){var t,e,n,u=function(){var a,r;for(p&&(a=o.domain)&&a.exit();t;){r=t.fn,t=t.next;try{r()}catch(i){throw t?n():e=void 0,i}}e=void 0,a&&a.enter()};if(p)n=function(){o.nextTick(u)};else if(!i||a.navigator&&a.navigator.standalone)if(s&&s.resolve){var c=s.resolve(void 0);n=function(){c.then(u)}}else n=function(){r.call(a,u)};else{var l=!0,d=document.createTextNode("");new i(u).observe(d,{characterData:!0}),n=function(){d.data=l=!l}}return function(a){var r={fn:a,next:void 0};e&&(e.next=r),t||(t=r,n()),e=r}}},{111:111,19:19,41:41}],69:[function(t,e,n){"use strict";function a(t){var e,n;this.promise=new t(function(t,a){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=a}),this.resolve=r(e),this.reject=r(n)}var r=t(4);e.exports.f=function(t){return new a(t)}},{4:4}],70:[function(t,e,n){"use strict";var a=t(81),r=t(78),i=t(82),o=t(117),s=t(48),p=Object.assign;e.exports=!p||t(36)(function(){var t={},e={},n=Symbol(),a="abcdefghijklmnopqrst";return t[n]=7,a.split("").forEach(function(t){e[t]=t}),7!=p({},t)[n]||Object.keys(p({},e)).join("")!=a})?function(t,e){for(var n=o(t),p=arguments.length,u=1,c=r.f,l=i.f;p>u;)for(var d,f=s(arguments[u++]),h=c?a(f).concat(c(f)):a(f),m=h.length,g=0;m>g;)l.call(f,d=h[g++])&&(n[d]=f[d]);return n}:p},{117:117,36:36,48:48,78:78,81:81,82:82}],71:[function(t,e,n){var a=t(8),r=t(73),i=t(32),o=t(100)("IE_PROTO"),s=function(){},p="prototype",u=function(){var e,n=t(31)("iframe"),a=i.length,r="<",o=">";for(n.style.display="none",t(44).appendChild(n),n.src="javascript:",e=n.contentWindow.document,e.open(),e.write(r+"script"+o+"document.F=Object"+r+"/script"+o),e.close(),u=e.F;a--;)delete u[p][i[a]];return u()};e.exports=Object.create||function(t,e){var n;return null!==t?(s[p]=a(t),n=new s,s[p]=null,n[o]=t):n=u(),void 0===e?n:r(n,e)}},{100:100,31:31,32:32,44:44,73:73,8:8}],72:[function(t,e,n){var a=t(8),r=t(45),i=t(118),o=Object.defineProperty;n.f=t(30)?Object.defineProperty:function(t,e,n){if(a(t),e=i(e,!0),a(n),r)try{return o(t,e,n)}catch(s){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},{118:118,30:30,45:45,8:8}],73:[function(t,e,n){var a=t(72),r=t(8),i=t(81);e.exports=t(30)?Object.defineProperties:function(t,e){r(t);for(var n,o=i(e),s=o.length,p=0;s>p;)a.f(t,n=o[p++],e[n]);return t}},{30:30,72:72,8:8,81:81}],74:[function(t,e,n){"use strict";e.exports=t(60)||!t(36)(function(){var e=Math.random();__defineSetter__.call(null,e,function(){}),delete t(41)[e]})},{36:36,41:41,60:60}],75:[function(t,e,n){var a=t(82),r=t(90),i=t(115),o=t(118),s=t(42),p=t(45),u=Object.getOwnPropertyDescriptor;n.f=t(30)?u:function(t,e){if(t=i(t),e=o(e,!0),p)try{return u(t,e)}catch(n){}return s(t,e)?r(!a.f.call(t,e),t[e]):void 0}},{115:115,118:118,30:30,42:42,45:45,82:82,90:90}],76:[function(t,e,n){var a=t(115),r=t(77).f,i={}.toString,o="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return r(t)}catch(e){return o.slice()}};e.exports.f=function(t){return o&&"[object Window]"==i.call(t)?s(t):r(a(t))}},{115:115,77:77}],77:[function(t,e,n){var a=t(80),r=t(32).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return a(t,r)}},{32:32,80:80}],78:[function(t,e,n){n.f=Object.getOwnPropertySymbols},{}],79:[function(t,e,n){var a=t(42),r=t(117),i=t(100)("IE_PROTO"),o=Object.prototype;e.exports=Object.getPrototypeOf||function(t){return t=r(t),a(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?o:null}},{100:100,117:117,42:42}],80:[function(t,e,n){var a=t(42),r=t(115),i=t(12)(!1),o=t(100)("IE_PROTO");e.exports=function(t,e){var n,s=r(t),p=0,u=[];for(n in s)n!=o&&a(s,n)&&u.push(n);for(;e.length>p;)a(s,n=e[p++])&&(~i(u,n)||u.push(n));return u}},{100:100,115:115,12:12,42:42}],81:[function(t,e,n){var a=t(80),r=t(32);e.exports=Object.keys||function(t){return a(t,r)}},{32:32,80:80}],82:[function(t,e,n){n.f={}.propertyIsEnumerable},{}],83:[function(t,e,n){var a=t(34),r=t(24),i=t(36);e.exports=function(t,e){var n=(r.Object||{})[t]||Object[t],o={};o[t]=e(n),a(a.S+a.F*i(function(){n(1)}),"Object",o)}},{24:24,34:34,36:36}],84:[function(t,e,n){var a=t(81),r=t(115),i=t(82).f;e.exports=function(t){return function(e){for(var n,o=r(e),s=a(o),p=s.length,u=0,c=[];p>u;)i.call(o,n=s[u++])&&c.push(t?[n,o[n]]:o[n]);return c}}},{115:115,81:81,82:82}],85:[function(t,e,n){var a=t(77),r=t(78),i=t(8),o=t(41).Reflect;e.exports=o&&o.ownKeys||function(t){var e=a.f(i(t)),n=r.f;return n?e.concat(n(t)):e}},{41:41,77:77,78:78,8:8}],86:[function(t,e,n){var a=t(41).parseFloat,r=t(109).trim;e.exports=1/a(t(110)+"-0")!==-(1/0)?function(t){var e=r(t+"",3),n=a(e);return 0===n&&"-"==e.charAt(0)?-0:n}:a},{109:109,110:110,41:41}],87:[function(t,e,n){var a=t(41).parseInt,r=t(109).trim,i=t(110),o=/^[-+]?0[xX]/;e.exports=8!==a(i+"08")||22!==a(i+"0x16")?function(t,e){var n=r(t+"",3);return a(n,e>>>0||(o.test(n)?16:10))}:a},{109:109,110:110,41:41}],88:[function(t,e,n){e.exports=function(t){try{return{e:!1,v:t()}}catch(e){return{e:!0,v:e}}}},{}],89:[function(t,e,n){var a=t(8),r=t(52),i=t(69);e.exports=function(t,e){if(a(t),r(e)&&e.constructor===t)return e;var n=i.f(t),o=n.resolve;return o(e),n.promise}},{52:52,69:69,8:8}],90:[function(t,e,n){e.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},{}],91:[function(t,e,n){var a=t(92);e.exports=function(t,e,n){for(var r in e)a(t,r,e[r],n);return t}},{92:92}],92:[function(t,e,n){var a=t(41),r=t(43),i=t(42),o=t(122)("src"),s="toString",p=Function[s],u=(""+p).split(s);t(24).inspectSource=function(t){return p.call(t)},(e.exports=function(t,e,n,s){var p="function"==typeof n;p&&(i(n,"name")||r(n,"name",e)),t[e]!==n&&(p&&(i(n,o)||r(n,o,t[e]?""+t[e]:u.join(e+""))),t===a?t[e]=n:s?t[e]?t[e]=n:r(t,e,n):(delete t[e],r(t,e,n)))})(Function.prototype,s,function(){ -return"function"==typeof this&&this[o]||p.call(this)})},{122:122,24:24,41:41,42:42,43:43}],93:[function(t,e,n){e.exports=function(t,e){var n=e===Object(e)?function(t){return e[t]}:e;return function(e){return(e+"").replace(t,n)}}},{}],94:[function(t,e,n){e.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},{}],95:[function(t,e,n){"use strict";var a=t(34),r=t(4),i=t(26),o=t(40);e.exports=function(t){a(a.S,t,{from:function(t){var e,n,a,s,p=arguments[1];return r(this),e=void 0!==p,e&&r(p),void 0==t?new this:(n=[],e?(a=0,s=i(p,arguments[2],2),o(t,!1,function(t){n.push(s(t,a++))})):o(t,!1,n.push,n),new this(n))}})}},{26:26,34:34,4:4,40:40}],96:[function(t,e,n){"use strict";var a=t(34);e.exports=function(t){a(a.S,t,{of:function(){for(var t=arguments.length,e=Array(t);t--;)e[t]=arguments[t];return new this(e)}})}},{34:34}],97:[function(t,e,n){var a=t(52),r=t(8),i=function(t,e){if(r(t),!a(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,n,a){try{a=t(26)(Function.call,t(75).f(Object.prototype,"__proto__").set,2),a(e,[]),n=!(e instanceof Array)}catch(r){n=!0}return function(t,e){return i(t,e),n?t.__proto__=e:a(t,e),t}}({},!1):void 0),check:i}},{26:26,52:52,75:75,8:8}],98:[function(t,e,n){"use strict";var a=t(41),r=t(72),i=t(30),o=t(127)("species");e.exports=function(t){var e=a[t];i&&e&&!e[o]&&r.f(e,o,{configurable:!0,get:function(){return this}})}},{127:127,30:30,41:41,72:72}],99:[function(t,e,n){var a=t(72).f,r=t(42),i=t(127)("toStringTag");e.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,i)&&a(t,i,{configurable:!0,value:e})}},{127:127,42:42,72:72}],100:[function(t,e,n){var a=t(101)("keys"),r=t(122);e.exports=function(t){return a[t]||(a[t]=r(t))}},{101:101,122:122}],101:[function(t,e,n){var a=t(24),r=t(41),i="__core-js_shared__",o=r[i]||(r[i]={});(e.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:a.version,mode:t(60)?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},{24:24,41:41,60:60}],102:[function(t,e,n){var a=t(8),r=t(4),i=t(127)("species");e.exports=function(t,e){var n,o=a(t).constructor;return void 0===o||void 0==(n=a(o)[i])?e:r(n)}},{127:127,4:4,8:8}],103:[function(t,e,n){"use strict";var a=t(36);e.exports=function(t,e){return!!t&&a(function(){e?t.call(null,function(){},1):t.call(null)})}},{36:36}],104:[function(t,e,n){var a=t(114),r=t(29);e.exports=function(t){return function(e,n){var i,o,s=r(e)+"",p=a(n),u=s.length;return 0>p||p>=u?t?"":void 0:(i=s.charCodeAt(p),55296>i||i>56319||p+1===u||(o=s.charCodeAt(p+1))<56320||o>57343?t?s.charAt(p):i:t?s.slice(p,p+2):(i-55296<<10)+(o-56320)+65536)}}},{114:114,29:29}],105:[function(t,e,n){var a=t(53),r=t(29);e.exports=function(t,e,n){if(a(e))throw TypeError("String#"+n+" doesn't accept regex!");return r(t)+""}},{29:29,53:53}],106:[function(t,e,n){var a=t(34),r=t(36),i=t(29),o=/"/g,s=function(t,e,n,a){var r=i(t)+"",s="<"+e;return""!==n&&(s+=" "+n+'="'+(a+"").replace(o,""")+'"'),s+">"+r+""};e.exports=function(t,e){var n={};n[t]=e(s),a(a.P+a.F*r(function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}),"String",n)}},{29:29,34:34,36:36}],107:[function(t,e,n){var a=t(116),r=t(108),i=t(29);e.exports=function(t,e,n,o){var s=i(t)+"",p=s.length,u=void 0===n?" ":n+"",c=a(e);if(p>=c||""==u)return s;var l=c-p,d=r.call(u,Math.ceil(l/u.length));return d.length>l&&(d=d.slice(0,l)),o?d+s:s+d}},{108:108,116:116,29:29}],108:[function(t,e,n){"use strict";var a=t(114),r=t(29);e.exports=function(t){var e=r(this)+"",n="",i=a(t);if(0>i||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},{114:114,29:29}],109:[function(t,e,n){var a=t(34),r=t(29),i=t(36),o=t(110),s="["+o+"]",p="​…",u=RegExp("^"+s+s+"*"),c=RegExp(s+s+"*$"),l=function(t,e,n){var r={},s=i(function(){return!!o[t]()||p[t]()!=p}),u=r[t]=s?e(d):o[t];n&&(r[n]=u),a(a.P+a.F*s,"String",r)},d=l.trim=function(t,e){return t=r(t)+"",1&e&&(t=t.replace(u,"")),2&e&&(t=t.replace(c,"")),t};e.exports=l},{110:110,29:29,34:34,36:36}],110:[function(t,e,n){e.exports=" \n\x0B\f\r   ᠎              \u2028\u2029\ufeff"},{}],111:[function(t,e,n){var a,r,i,o=t(26),s=t(47),p=t(44),u=t(31),c=t(41),l=c.process,d=c.setImmediate,f=c.clearImmediate,h=c.MessageChannel,m=c.Dispatch,g=0,v={},b="onreadystatechange",y=function(){var t=+this;if(v.hasOwnProperty(t)){var e=v[t];delete v[t],e()}},_=function(t){y.call(t.data)};d&&f||(d=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return v[++g]=function(){s("function"==typeof t?t:Function(t),e)},a(g),g},f=function(t){delete v[t]},"process"==t(19)(l)?a=function(t){l.nextTick(o(y,t,1))}:m&&m.now?a=function(t){m.now(o(y,t,1))}:h?(r=new h,i=r.port2,r.port1.onmessage=_,a=o(i.postMessage,i,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts?(a=function(t){c.postMessage(t+"","*")},c.addEventListener("message",_,!1)):a=b in u("script")?function(t){p.appendChild(u("script"))[b]=function(){p.removeChild(this),y.call(t)}}:function(t){setTimeout(o(y,t,1),0)}),e.exports={set:d,clear:f}},{19:19,26:26,31:31,41:41,44:44,47:47}],112:[function(t,e,n){var a=t(114),r=Math.max,i=Math.min;e.exports=function(t,e){return t=a(t),0>t?r(t+e,0):i(t,e)}},{114:114}],113:[function(t,e,n){var a=t(114),r=t(116);e.exports=function(t){if(void 0===t)return 0;var e=a(t),n=r(e);if(e!==n)throw RangeError("Wrong length!");return n}},{114:114,116:116}],114:[function(t,e,n){var a=Math.ceil,r=Math.floor;e.exports=function(t){return isNaN(t=+t)?0:(t>0?r:a)(t)}},{}],115:[function(t,e,n){var a=t(48),r=t(29);e.exports=function(t){return a(r(t))}},{29:29,48:48}],116:[function(t,e,n){var a=t(114),r=Math.min;e.exports=function(t){return t>0?r(a(t),9007199254740991):0}},{114:114}],117:[function(t,e,n){var a=t(29);e.exports=function(t){return Object(a(t))}},{29:29}],118:[function(t,e,n){var a=t(52);e.exports=function(t,e){if(!a(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!a(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},{52:52}],119:[function(t,e,n){"use strict";if(t(30)){var a=t(60),r=t(41),i=t(36),o=t(34),s=t(121),p=t(120),u=t(26),c=t(7),l=t(90),d=t(43),f=t(91),h=t(114),m=t(116),g=t(113),v=t(112),b=t(118),y=t(42),_=t(18),x=t(52),w=t(117),k=t(49),S=t(71),E=t(79),C=t(77).f,P=t(128),A=t(122),O=t(127),T=t(13),R=t(12),M=t(102),L=t(140),j=t(59),D=t(57),N=t(98),F=t(10),I=t(9),B=t(72),q=t(75),U=B.f,V=q.f,G=r.RangeError,z=r.TypeError,W=r.Uint8Array,H="ArrayBuffer",K="Shared"+H,Q="BYTES_PER_ELEMENT",Y="prototype",$=Array[Y],J=p.ArrayBuffer,X=p.DataView,Z=T(0),tt=T(2),et=T(3),nt=T(4),at=T(5),rt=T(6),it=R(!0),ot=R(!1),st=L.values,pt=L.keys,ut=L.entries,ct=$.lastIndexOf,lt=$.reduce,dt=$.reduceRight,ft=$.join,ht=$.sort,mt=$.slice,gt=$.toString,vt=$.toLocaleString,bt=O("iterator"),yt=O("toStringTag"),_t=A("typed_constructor"),xt=A("def_constructor"),wt=s.CONSTR,kt=s.TYPED,St=s.VIEW,Et="Wrong length!",Ct=T(1,function(t,e){return Rt(M(t,t[xt]),e)}),Pt=i(function(){return 1===new W(new Uint16Array([1]).buffer)[0]}),At=!!W&&!!W[Y].set&&i(function(){new W(1).set({})}),Ot=function(t,e){var n=h(t);if(0>n||n%e)throw G("Wrong offset!");return n},Tt=function(t){if(x(t)&&kt in t)return t;throw z(t+" is not a typed array!")},Rt=function(t,e){if(!(x(t)&&_t in t))throw z("It is not a typed array constructor!");return new t(e)},Mt=function(t,e){return Lt(M(t,t[xt]),e)},Lt=function(t,e){for(var n=0,a=e.length,r=Rt(t,a);a>n;)r[n]=e[n++];return r},jt=function(t,e,n){U(t,e,{get:function(){return this._d[n]}})},Dt=function(t){var e,n,a,r,i,o,s=w(t),p=arguments.length,c=p>1?arguments[1]:void 0,l=void 0!==c,d=P(s);if(void 0!=d&&!k(d)){for(o=d.call(s),a=[],e=0;!(i=o.next()).done;e++)a.push(i.value);s=a}for(l&&p>2&&(c=u(c,arguments[2],2)),e=0,n=m(s.length),r=Rt(this,n);n>e;e++)r[e]=l?c(s[e],e):s[e];return r},Nt=function(){for(var t=0,e=arguments.length,n=Rt(this,e);e>t;)n[t]=arguments[t++];return n},Ft=!!W&&i(function(){vt.call(new W(1))}),It=function(){return vt.apply(Ft?mt.call(Tt(this)):Tt(this),arguments)},Bt={copyWithin:function(t,e){return I.call(Tt(this),t,e,arguments.length>2?arguments[2]:void 0)},every:function(t){return nt(Tt(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return F.apply(Tt(this),arguments)},filter:function(t){return Mt(this,tt(Tt(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return at(Tt(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return rt(Tt(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){Z(Tt(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return ot(Tt(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return it(Tt(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return ft.apply(Tt(this),arguments)},lastIndexOf:function(t){return ct.apply(Tt(this),arguments)},map:function(t){return Ct(Tt(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return lt.apply(Tt(this),arguments)},reduceRight:function(t){return dt.apply(Tt(this),arguments)},reverse:function(){for(var t,e=this,n=Tt(e).length,a=Math.floor(n/2),r=0;a>r;)t=e[r],e[r++]=e[--n],e[n]=t;return e},some:function(t){return et(Tt(this),t,arguments.length>1?arguments[1]:void 0)},sort:function(t){return ht.call(Tt(this),t)},subarray:function(t,e){var n=Tt(this),a=n.length,r=v(t,a);return new(M(n,n[xt]))(n.buffer,n.byteOffset+r*n.BYTES_PER_ELEMENT,m((void 0===e?a:v(e,a))-r))}},qt=function(t,e){return Mt(this,mt.call(Tt(this),t,e))},Ut=function(t){Tt(this);var e=Ot(arguments[1],1),n=this.length,a=w(t),r=m(a.length),i=0;if(r+e>n)throw G(Et);for(;r>i;)this[e+i]=a[i++]},Vt={entries:function(){return ut.call(Tt(this))},keys:function(){return pt.call(Tt(this))},values:function(){return st.call(Tt(this))}},Gt=function(t,e){return x(t)&&t[kt]&&"symbol"!=typeof e&&e in t&&+e+""==e+""},zt=function(t,e){return Gt(t,e=b(e,!0))?l(2,t[e]):V(t,e)},Wt=function(t,e,n){return!(Gt(t,e=b(e,!0))&&x(n)&&y(n,"value"))||y(n,"get")||y(n,"set")||n.configurable||y(n,"writable")&&!n.writable||y(n,"enumerable")&&!n.enumerable?U(t,e,n):(t[e]=n.value,t)};wt||(q.f=zt,B.f=Wt),o(o.S+o.F*!wt,"Object",{getOwnPropertyDescriptor:zt,defineProperty:Wt}),i(function(){gt.call({})})&&(gt=vt=function(){return ft.call(this)});var Ht=f({},Bt);f(Ht,Vt),d(Ht,bt,Vt.values),f(Ht,{slice:qt,set:Ut,constructor:function(){},toString:gt,toLocaleString:It}),jt(Ht,"buffer","b"),jt(Ht,"byteOffset","o"),jt(Ht,"byteLength","l"),jt(Ht,"length","e"),U(Ht,yt,{get:function(){return this[kt]}}),e.exports=function(t,e,n,p){p=!!p;var u=t+(p?"Clamped":"")+"Array",l="get"+t,f="set"+t,h=r[u],v=h||{},b=h&&E(h),y=!h||!s.ABV,w={},k=h&&h[Y],P=function(t,n){var a=t._d;return a.v[l](n*e+a.o,Pt)},A=function(t,n,a){var r=t._d;p&&(a=(a=Math.round(a))<0?0:a>255?255:255&a),r.v[f](n*e+r.o,a,Pt)},O=function(t,e){U(t,e,{get:function(){return P(this,e)},set:function(t){return A(this,e,t)},enumerable:!0})};y?(h=n(function(t,n,a,r){c(t,h,u,"_d");var i,o,s,p,l=0,f=0;if(x(n)){if(!(n instanceof J||(p=_(n))==H||p==K))return kt in n?Lt(h,n):Dt.call(h,n);i=n,f=Ot(a,e);var v=n.byteLength;if(void 0===r){if(v%e)throw G(Et);if(o=v-f,0>o)throw G(Et)}else if(o=m(r)*e,o+f>v)throw G(Et);s=o/e}else s=g(n),o=s*e,i=new J(o);for(d(t,"_d",{b:i,o:f,l:o,e:s,v:new X(i)});s>l;)O(t,l++)}),k=h[Y]=S(Ht),d(k,"constructor",h)):i(function(){h(1)})&&i(function(){new h(-1)})&&D(function(t){new h,new h(null),new h(1.5),new h(t)},!0)||(h=n(function(t,n,a,r){c(t,h,u);var i;return x(n)?n instanceof J||(i=_(n))==H||i==K?void 0!==r?new v(n,Ot(a,e),r):void 0!==a?new v(n,Ot(a,e)):new v(n):kt in n?Lt(h,n):Dt.call(h,n):new v(g(n))}),Z(b!==Function.prototype?C(v).concat(C(b)):C(v),function(t){t in h||d(h,t,v[t])}),h[Y]=k,a||(k.constructor=h));var T=k[bt],R=!!T&&("values"==T.name||void 0==T.name),M=Vt.values;d(h,_t,!0),d(k,kt,u),d(k,St,!0),d(k,xt,h),(p?new h(1)[yt]==u:yt in k)||U(k,yt,{get:function(){return u}}),w[u]=h,o(o.G+o.W+o.F*(h!=v),w),o(o.S,u,{BYTES_PER_ELEMENT:e}),o(o.S+o.F*i(function(){v.of.call(h,1)}),u,{from:Dt,of:Nt}),Q in k||d(k,Q,e),o(o.P,u,Bt),N(u),o(o.P+o.F*At,u,{set:Ut}),o(o.P+o.F*!R,u,Vt),a||k.toString==gt||(k.toString=gt),o(o.P+o.F*i(function(){new h(1).slice()}),u,{slice:qt}),o(o.P+o.F*(i(function(){return[1,2].toLocaleString()!=new h([1,2]).toLocaleString()})||!i(function(){k.toLocaleString.call([1,2])})),u,{toLocaleString:It}),j[u]=R?T:M,a||R||d(k,bt,M)}}else e.exports=function(){}},{10:10,102:102,112:112,113:113,114:114,116:116,117:117,118:118,12:12,120:120,121:121,122:122,127:127,128:128,13:13,140:140,18:18,26:26,30:30,34:34,36:36,41:41,42:42,43:43,49:49,52:52,57:57,59:59,60:60,7:7,71:71,72:72,75:75,77:77,79:79,9:9,90:90,91:91,98:98}],120:[function(t,e,n){"use strict";function a(t,e,n){var a,r,i,o=Array(n),s=8*n-e-1,p=(1<>1,c=23===e?U(2,-24)-U(2,-77):0,l=0,d=0>t||0===t&&0>1/t?1:0;for(t=q(t),t!=t||t===I?(r=t!=t?1:0,a=p):(a=V(G(t)/z),t*(i=U(2,-a))<1&&(a--,i*=2),t+=a+u>=1?c/i:c*U(2,1-u),t*i>=2&&(a++,i/=2),a+u>=p?(r=0,a=p):a+u>=1?(r=(t*i-1)*U(2,e),a+=u):(r=t*U(2,u-1)*U(2,e),a=0));e>=8;o[l++]=255&r,r/=256,e-=8);for(a=a<0;o[l++]=255&a,a/=256,s-=8);return o[--l]|=128*d,o}function r(t,e,n){var a,r=8*n-e-1,i=(1<>1,s=r-7,p=n-1,u=t[p--],c=127&u;for(u>>=7;s>0;c=256*c+t[p],p--,s-=8);for(a=c&(1<<-s)-1,c>>=-s,s+=e;s>0;a=256*a+t[p],p--,s-=8);if(0===c)c=1-o;else{if(c===i)return a?NaN:u?-I:I;a+=U(2,e),c-=o}return(u?-1:1)*a*U(2,c-e)}function i(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]}function o(t){return[255&t]}function s(t){return[255&t,t>>8&255]}function p(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]}function u(t){return a(t,52,8)}function c(t){return a(t,23,4)}function l(t,e,n){C(t[R],e,{get:function(){return this[n]}})}function d(t,e,n,a){var r=+n,i=S(r);if(i+e>t[Y])throw F(L);var o=t[Q]._b,s=i+t[$],p=o.slice(s,s+e);return a?p:p.reverse()}function f(t,e,n,a,r,i){var o=+n,s=S(o);if(s+e>t[Y])throw F(L);for(var p=t[Q]._b,u=s+t[$],c=a(+r),l=0;e>l;l++)p[u+l]=c[i?l:e-l-1]}var h=t(41),m=t(30),g=t(60),v=t(121),b=t(43),y=t(91),_=t(36),x=t(7),w=t(114),k=t(116),S=t(113),E=t(77).f,C=t(72).f,P=t(10),A=t(99),O="ArrayBuffer",T="DataView",R="prototype",M="Wrong length!",L="Wrong index!",j=h[O],D=h[T],N=h.Math,F=h.RangeError,I=h.Infinity,B=j,q=N.abs,U=N.pow,V=N.floor,G=N.log,z=N.LN2,W="buffer",H="byteLength",K="byteOffset",Q=m?"_b":W,Y=m?"_l":H,$=m?"_o":K;if(v.ABV){if(!_(function(){j(1)})||!_(function(){new j(-1)})||_(function(){return new j,new j(1.5),new j(NaN),j.name!=O})){j=function(t){return x(this,j),new B(S(t))};for(var J,X=j[R]=B[R],Z=E(B),tt=0;Z.length>tt;)(J=Z[tt++])in j||b(j,J,B[J]);g||(X.constructor=j)}var et=new D(new j(2)),nt=D[R].setInt8;et.setInt8(0,2147483648),et.setInt8(1,2147483649),(et.getInt8(0)||!et.getInt8(1))&&y(D[R],{setInt8:function(t,e){nt.call(this,t,e<<24>>24)},setUint8:function(t,e){nt.call(this,t,e<<24>>24)}},!0)}else j=function(t){x(this,j,O);var e=S(t);this._b=P.call(Array(e),0),this[Y]=e},D=function(t,e,n){x(this,D,T),x(t,j,T);var a=t[Y],r=w(e);if(0>r||r>a)throw F("Wrong offset!");if(n=void 0===n?a-r:k(n),r+n>a)throw F(M);this[Q]=t,this[$]=r,this[Y]=n},m&&(l(j,H,"_l"),l(D,W,"_b"),l(D,H,"_l"),l(D,K,"_o")),y(D[R],{getInt8:function(t){return d(this,1,t)[0]<<24>>24},getUint8:function(t){return d(this,1,t)[0]},getInt16:function(t){var e=d(this,2,t,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=d(this,2,t,arguments[1]);return e[1]<<8|e[0]},getInt32:function(t){return i(d(this,4,t,arguments[1]))},getUint32:function(t){return i(d(this,4,t,arguments[1]))>>>0},getFloat32:function(t){return r(d(this,4,t,arguments[1]),23,4)},getFloat64:function(t){return r(d(this,8,t,arguments[1]),52,8)},setInt8:function(t,e){f(this,1,t,o,e)},setUint8:function(t,e){f(this,1,t,o,e)},setInt16:function(t,e){f(this,2,t,s,e,arguments[2])},setUint16:function(t,e){f(this,2,t,s,e,arguments[2])},setInt32:function(t,e){f(this,4,t,p,e,arguments[2])},setUint32:function(t,e){f(this,4,t,p,e,arguments[2])},setFloat32:function(t,e){f(this,4,t,c,e,arguments[2])},setFloat64:function(t,e){f(this,8,t,u,e,arguments[2])}});A(j,O),A(D,T),b(D[R],v.VIEW,!0),n[O]=j,n[T]=D},{10:10,113:113,114:114,116:116,121:121,30:30,36:36,41:41,43:43,60:60,7:7,72:72,77:77,91:91,99:99}],121:[function(t,e,n){for(var a,r=t(41),i=t(43),o=t(122),s=o("typed_array"),p=o("view"),u=!(!r.ArrayBuffer||!r.DataView),c=u,l=0,d=9,f="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");d>l;)(a=r[f[l++]])?(i(a.prototype,s,!0),i(a.prototype,p,!0)):c=!1;e.exports={ABV:u,CONSTR:c,TYPED:s,VIEW:p}},{122:122,41:41,43:43}],122:[function(t,e,n){var a=0,r=Math.random();e.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++a+r).toString(36))}},{}],123:[function(t,e,n){var a=t(41),r=a.navigator;e.exports=r&&r.userAgent||""},{41:41}],124:[function(t,e,n){var a=t(52);e.exports=function(t,e){if(!a(t)||t._t!==e)throw TypeError("Incompatible receiver, "+e+" required!");return t}},{52:52}],125:[function(t,e,n){var a=t(41),r=t(24),i=t(60),o=t(126),s=t(72).f;e.exports=function(t){var e=r.Symbol||(r.Symbol=i?{}:a.Symbol||{});"_"==t.charAt(0)||t in e||s(e,t,{value:o.f(t)})}},{126:126,24:24,41:41,60:60,72:72}],126:[function(t,e,n){n.f=t(127)},{127:127}],127:[function(t,e,n){var a=t(101)("wks"),r=t(122),i=t(41).Symbol,o="function"==typeof i,s=e.exports=function(t){return a[t]||(a[t]=o&&i[t]||(o?i:r)("Symbol."+t))};s.store=a},{101:101,122:122,41:41}],128:[function(t,e,n){var a=t(18),r=t(127)("iterator"),i=t(59);e.exports=t(24).getIteratorMethod=function(t){return void 0!=t?t[r]||t["@@iterator"]||i[a(t)]:void 0}},{127:127,18:18,24:24,59:59}],129:[function(t,e,n){var a=t(34),r=t(93)(/[\\^$*+?.()|[\]{}]/g,"\\$&");a(a.S,"RegExp",{escape:function(t){return r(t)}})},{34:34,93:93}],130:[function(t,e,n){var a=t(34);a(a.P,"Array",{copyWithin:t(9)}),t(6)("copyWithin")},{34:34,6:6,9:9}],131:[function(t,e,n){"use strict";var a=t(34),r=t(13)(4);a(a.P+a.F*!t(103)([].every,!0),"Array",{every:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],132:[function(t,e,n){var a=t(34);a(a.P,"Array",{fill:t(10)}),t(6)("fill")},{10:10,34:34,6:6}],133:[function(t,e,n){"use strict";var a=t(34),r=t(13)(2);a(a.P+a.F*!t(103)([].filter,!0),"Array",{filter:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],134:[function(t,e,n){"use strict";var a=t(34),r=t(13)(6),i="findIndex",o=!0;i in[]&&Array(1)[i](function(){o=!1}),a(a.P+a.F*o,"Array",{findIndex:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),t(6)(i)},{13:13,34:34,6:6}],135:[function(t,e,n){"use strict";var a=t(34),r=t(13)(5),i="find",o=!0;i in[]&&Array(1)[i](function(){o=!1}),a(a.P+a.F*o,"Array",{find:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),t(6)(i)},{13:13,34:34,6:6}],136:[function(t,e,n){"use strict";var a=t(34),r=t(13)(0),i=t(103)([].forEach,!0);a(a.P+a.F*!i,"Array",{forEach:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],137:[function(t,e,n){"use strict";var a=t(26),r=t(34),i=t(117),o=t(54),s=t(49),p=t(116),u=t(25),c=t(128);r(r.S+r.F*!t(57)(function(t){Array.from(t)}),"Array",{from:function(t){var e,n,r,l,d=i(t),f="function"==typeof this?this:Array,h=arguments.length,m=h>1?arguments[1]:void 0,g=void 0!==m,v=0,b=c(d);if(g&&(m=a(m,h>2?arguments[2]:void 0,2)),void 0==b||f==Array&&s(b))for(e=p(d.length),n=new f(e);e>v;v++)u(n,v,g?m(d[v],v):d[v]);else for(l=b.call(d),n=new f;!(r=l.next()).done;v++)u(n,v,g?o(l,m,[r.value,v],!0):r.value);return n.length=v,n}})},{116:116,117:117,128:128,25:25,26:26,34:34,49:49,54:54,57:57}],138:[function(t,e,n){"use strict";var a=t(34),r=t(12)(!1),i=[].indexOf,o=!!i&&1/[1].indexOf(1,-0)<0;a(a.P+a.F*(o||!t(103)(i)),"Array",{indexOf:function(t){return o?i.apply(this,arguments)||0:r(this,t,arguments[1])}})},{103:103,12:12,34:34}],139:[function(t,e,n){var a=t(34);a(a.S,"Array",{isArray:t(50)})},{34:34,50:50}],140:[function(t,e,n){"use strict";var a=t(6),r=t(58),i=t(59),o=t(115);e.exports=t(56)(Array,"Array",function(t,e){this._t=o(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,r(1)):"keys"==e?r(0,n):"values"==e?r(0,t[n]):r(0,[n,t[n]])},"values"),i.Arguments=i.Array,a("keys"),a("values"),a("entries")},{115:115,56:56,58:58,59:59,6:6}],141:[function(t,e,n){"use strict";var a=t(34),r=t(115),i=[].join;a(a.P+a.F*(t(48)!=Object||!t(103)(i)),"Array",{join:function(t){return i.call(r(this),void 0===t?",":t)}})},{103:103,115:115,34:34,48:48}],142:[function(t,e,n){"use strict";var a=t(34),r=t(115),i=t(114),o=t(116),s=[].lastIndexOf,p=!!s&&1/[1].lastIndexOf(1,-0)<0;a(a.P+a.F*(p||!t(103)(s)),"Array",{lastIndexOf:function(t){if(p)return s.apply(this,arguments)||0;var e=r(this),n=o(e.length),a=n-1;for(arguments.length>1&&(a=Math.min(a,i(arguments[1]))),0>a&&(a=n+a);a>=0;a--)if(a in e&&e[a]===t)return a||0;return-1}})},{103:103,114:114,115:115,116:116,34:34}],143:[function(t,e,n){"use strict";var a=t(34),r=t(13)(1);a(a.P+a.F*!t(103)([].map,!0),"Array",{map:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],144:[function(t,e,n){"use strict";var a=t(34),r=t(25);a(a.S+a.F*t(36)(function(){function t(){}return!(Array.of.call(t)instanceof t)}),"Array",{of:function(){for(var t=0,e=arguments.length,n=new("function"==typeof this?this:Array)(e);e>t;)r(n,t,arguments[t++]);return n.length=e,n}})},{25:25,34:34,36:36}],145:[function(t,e,n){"use strict";var a=t(34),r=t(14);a(a.P+a.F*!t(103)([].reduceRight,!0),"Array",{reduceRight:function(t){return r(this,t,arguments.length,arguments[1],!0)}})},{103:103,14:14,34:34}],146:[function(t,e,n){"use strict";var a=t(34),r=t(14);a(a.P+a.F*!t(103)([].reduce,!0),"Array",{reduce:function(t){return r(this,t,arguments.length,arguments[1],!1)}})},{103:103,14:14,34:34}],147:[function(t,e,n){"use strict";var a=t(34),r=t(44),i=t(19),o=t(112),s=t(116),p=[].slice;a(a.P+a.F*t(36)(function(){r&&p.call(r)}),"Array",{slice:function(t,e){var n=s(this.length),a=i(this);if(e=void 0===e?n:e,"Array"==a)return p.call(this,t,e);for(var r=o(t,n),u=o(e,n),c=s(u-r),l=Array(c),d=0;c>d;d++)l[d]="String"==a?this.charAt(r+d):this[r+d];return l}})},{112:112,116:116,19:19,34:34,36:36,44:44}],148:[function(t,e,n){"use strict";var a=t(34),r=t(13)(3);a(a.P+a.F*!t(103)([].some,!0),"Array",{some:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],149:[function(t,e,n){"use strict";var a=t(34),r=t(4),i=t(117),o=t(36),s=[].sort,p=[1,2,3];a(a.P+a.F*(o(function(){p.sort(void 0)})||!o(function(){p.sort(null)})||!t(103)(s)),"Array",{sort:function(t){return void 0===t?s.call(i(this)):s.call(i(this),r(t))}})},{103:103,117:117,34:34,36:36,4:4}],150:[function(t,e,n){t(98)("Array")},{98:98}],151:[function(t,e,n){var a=t(34);a(a.S,"Date",{now:function(){return(new Date).getTime()}})},{34:34}],152:[function(t,e,n){var a=t(34),r=t(27);a(a.P+a.F*(Date.prototype.toISOString!==r),"Date",{toISOString:r})},{27:27,34:34}],153:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(118);a(a.P+a.F*t(36)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function(t){var e=r(this),n=i(e);return"number"!=typeof n||isFinite(n)?e.toISOString():null}})},{117:117,118:118,34:34,36:36}],154:[function(t,e,n){var a=t(127)("toPrimitive"),r=Date.prototype;a in r||t(43)(r,a,t(28))},{127:127,28:28,43:43}],155:[function(t,e,n){var a=Date.prototype,r="Invalid Date",i="toString",o=a[i],s=a.getTime;new Date(NaN)+""!=r&&t(92)(a,i,function(){var t=s.call(this);return t===t?o.call(this):r})},{92:92}],156:[function(t,e,n){var a=t(34);a(a.P,"Function",{bind:t(17)})},{17:17,34:34}],157:[function(t,e,n){"use strict";var a=t(52),r=t(79),i=t(127)("hasInstance"),o=Function.prototype;i in o||t(72).f(o,i,{value:function(t){if("function"!=typeof this||!a(t))return!1;if(!a(this.prototype))return t instanceof this;for(;t=r(t);)if(this.prototype===t)return!0;return!1}})},{127:127,52:52,72:72,79:79}],158:[function(t,e,n){var a=t(72).f,r=Function.prototype,i=/^\s*function ([^ (]*)/,o="name";o in r||t(30)&&a(r,o,{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(t){return""}}})},{30:30,72:72}],159:[function(t,e,n){"use strict";var a=t(20),r=t(124),i="Map";e.exports=t(23)(i,function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=a.getEntry(r(this,i),t);return e&&e.v},set:function(t,e){return a.def(r(this,i),0===t?0:t,e)}},a,!0)},{124:124,20:20,23:23}],160:[function(t,e,n){var a=t(34),r=t(63),i=Math.sqrt,o=Math.acosh;a(a.S+a.F*!(o&&710==Math.floor(o(Number.MAX_VALUE))&&o(1/0)==1/0),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:r(t-1+i(t-1)*i(t+1))}})},{34:34,63:63}],161:[function(t,e,n){function a(t){return isFinite(t=+t)&&0!=t?0>t?-a(-t):Math.log(t+Math.sqrt(t*t+1)):t}var r=t(34),i=Math.asinh;r(r.S+r.F*!(i&&1/i(0)>0),"Math",{asinh:a})},{34:34}],162:[function(t,e,n){var a=t(34),r=Math.atanh;a(a.S+a.F*!(r&&1/r(-0)<0),"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},{34:34}],163:[function(t,e,n){var a=t(34),r=t(65);a(a.S,"Math",{cbrt:function(t){return r(t=+t)*Math.pow(Math.abs(t),1/3)}})},{34:34,65:65}],164:[function(t,e,n){var a=t(34);a(a.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},{34:34}],165:[function(t,e,n){var a=t(34),r=Math.exp;a(a.S,"Math",{cosh:function(t){return(r(t=+t)+r(-t))/2}})},{34:34}],166:[function(t,e,n){var a=t(34),r=t(61);a(a.S+a.F*(r!=Math.expm1),"Math",{expm1:r})},{34:34,61:61}],167:[function(t,e,n){var a=t(34);a(a.S,"Math",{fround:t(62)})},{34:34,62:62}],168:[function(t,e,n){var a=t(34),r=Math.abs;a(a.S,"Math",{hypot:function(t,e){for(var n,a,i=0,o=0,s=arguments.length,p=0;s>o;)n=r(arguments[o++]),n>p?(a=p/n,i=i*a*a+1,p=n):n>0?(a=n/p,i+=a*a):i+=n;return p===1/0?1/0:p*Math.sqrt(i)}})},{34:34}],169:[function(t,e,n){var a=t(34),r=Math.imul;a(a.S+a.F*t(36)(function(){return-5!=r(4294967295,5)||2!=r.length}),"Math",{imul:function(t,e){var n=65535,a=+t,r=+e,i=n&a,o=n&r;return 0|i*o+((n&a>>>16)*o+i*(n&r>>>16)<<16>>>0)}})},{34:34,36:36}],170:[function(t,e,n){var a=t(34);a(a.S,"Math",{log10:function(t){return Math.log(t)*Math.LOG10E}})},{34:34}],171:[function(t,e,n){var a=t(34);a(a.S,"Math",{log1p:t(63)})},{34:34,63:63}],172:[function(t,e,n){var a=t(34);a(a.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},{34:34}],173:[function(t,e,n){var a=t(34);a(a.S,"Math",{sign:t(65)})},{34:34,65:65}],174:[function(t,e,n){var a=t(34),r=t(61),i=Math.exp;a(a.S+a.F*t(36)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(r(t)-r(-t))/2:(i(t-1)-i(-t-1))*(Math.E/2)}})},{34:34,36:36,61:61}],175:[function(t,e,n){var a=t(34),r=t(61),i=Math.exp;a(a.S,"Math",{tanh:function(t){var e=r(t=+t),n=r(-t);return e==1/0?1:n==1/0?-1:(e-n)/(i(t)+i(-t))}})},{34:34,61:61}],176:[function(t,e,n){var a=t(34);a(a.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},{34:34}],177:[function(t,e,n){"use strict";var a=t(41),r=t(42),i=t(19),o=t(46),s=t(118),p=t(36),u=t(77).f,c=t(75).f,l=t(72).f,d=t(109).trim,f="Number",h=a[f],m=h,g=h.prototype,v=i(t(71)(g))==f,b="trim"in String.prototype,y=function(t){var e=s(t,!1);if("string"==typeof e&&e.length>2){e=b?e.trim():d(e,3);var n,a,r,i=e.charCodeAt(0);if(43===i||45===i){if(n=e.charCodeAt(2),88===n||120===n)return NaN}else if(48===i){switch(e.charCodeAt(1)){case 66:case 98:a=2,r=49;break;case 79:case 111:a=8,r=55;break;default:return+e}for(var o,p=e.slice(2),u=0,c=p.length;c>u;u++)if(o=p.charCodeAt(u),48>o||o>r)return NaN;return parseInt(p,a)}}return+e};if(!h(" 0o1")||!h("0b1")||h("+0x1")){h=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof h&&(v?p(function(){g.valueOf.call(n)}):i(n)!=f)?o(new m(y(e)),n,h):y(e)};for(var _,x=t(30)?u(m):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),w=0;x.length>w;w++)r(m,_=x[w])&&!r(h,_)&&l(h,_,c(m,_));h.prototype=g,g.constructor=h,t(92)(a,f,h)}},{109:109,118:118,19:19,30:30,36:36,41:41,42:42,46:46,71:71,72:72,75:75,77:77,92:92}],178:[function(t,e,n){var a=t(34);a(a.S,"Number",{EPSILON:Math.pow(2,-52)})},{34:34}],179:[function(t,e,n){var a=t(34),r=t(41).isFinite;a(a.S,"Number",{isFinite:function(t){return"number"==typeof t&&r(t)}})},{34:34,41:41}],180:[function(t,e,n){var a=t(34);a(a.S,"Number",{isInteger:t(51)})},{34:34,51:51}],181:[function(t,e,n){var a=t(34);a(a.S,"Number",{isNaN:function(t){return t!=t}})},{34:34}],182:[function(t,e,n){var a=t(34),r=t(51),i=Math.abs;a(a.S,"Number",{isSafeInteger:function(t){return r(t)&&i(t)<=9007199254740991}})},{34:34,51:51}],183:[function(t,e,n){var a=t(34);a(a.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},{34:34}],184:[function(t,e,n){var a=t(34);a(a.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},{34:34}],185:[function(t,e,n){var a=t(34),r=t(86);a(a.S+a.F*(Number.parseFloat!=r),"Number",{parseFloat:r})},{34:34,86:86}],186:[function(t,e,n){var a=t(34),r=t(87);a(a.S+a.F*(Number.parseInt!=r),"Number",{parseInt:r})},{34:34,87:87}],187:[function(t,e,n){"use strict";var a=t(34),r=t(114),i=t(5),o=t(108),s=1..toFixed,p=Math.floor,u=[0,0,0,0,0,0],c="Number.toFixed: incorrect invocation!",l="0",d=function(t,e){for(var n=-1,a=e;++n<6;)a+=t*u[n],u[n]=a%1e7,a=p(a/1e7)},f=function(t){for(var e=6,n=0;--e>=0;)n+=u[e],u[e]=p(n/t),n=n%t*1e7},h=function(){for(var t=6,e="";--t>=0;)if(""!==e||0===t||0!==u[t]){var n=u[t]+"";e=""===e?n:e+o.call(l,7-n.length)+n}return e},m=function(t,e,n){return 0===e?n:e%2===1?m(t,e-1,n*t):m(t*t,e/2,n)},g=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e};a(a.P+a.F*(!!s&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==0xde0b6b3a7640080.toFixed(0))||!t(36)(function(){s.call({})})),"Number",{toFixed:function(t){var e,n,a,s,p=i(this,c),u=r(t),v="",b=l;if(0>u||u>20)throw RangeError(c);if(p!=p)return"NaN";if(-1e21>=p||p>=1e21)return p+"";if(0>p&&(v="-",p=-p),p>1e-21)if(e=g(p*m(2,69,1))-69,n=0>e?p*m(2,-e,1):p/m(2,e,1),n*=4503599627370496,e=52-e,e>0){for(d(0,n),a=u;a>=7;)d(1e7,0),a-=7;for(d(m(10,a,1),0),a=e-1;a>=23;)f(1<<23),a-=23;f(1<0?(s=b.length,b=v+(u>=s?"0."+o.call(l,u-s)+b:b.slice(0,s-u)+"."+b.slice(s-u))):b=v+b,b}})},{108:108,114:114,34:34,36:36,5:5}],188:[function(t,e,n){"use strict";var a=t(34),r=t(36),i=t(5),o=1..toPrecision;a(a.P+a.F*(r(function(){return"1"!==o.call(1,void 0)})||!r(function(){o.call({})})),"Number",{toPrecision:function(t){var e=i(this,"Number#toPrecision: incorrect invocation!");return void 0===t?o.call(e):o.call(e,t)}})},{34:34,36:36,5:5}],189:[function(t,e,n){var a=t(34);a(a.S+a.F,"Object",{assign:t(70)})},{34:34,70:70}],190:[function(t,e,n){var a=t(34);a(a.S,"Object",{create:t(71)})},{34:34,71:71}],191:[function(t,e,n){var a=t(34);a(a.S+a.F*!t(30),"Object",{defineProperties:t(73)})},{30:30,34:34,73:73}],192:[function(t,e,n){var a=t(34);a(a.S+a.F*!t(30),"Object",{defineProperty:t(72).f})},{30:30,34:34,72:72}],193:[function(t,e,n){var a=t(52),r=t(66).onFreeze;t(83)("freeze",function(t){return function(e){return t&&a(e)?t(r(e)):e}})},{52:52,66:66,83:83}],194:[function(t,e,n){var a=t(115),r=t(75).f;t(83)("getOwnPropertyDescriptor",function(){return function(t,e){return r(a(t),e)}})},{115:115,75:75,83:83}],195:[function(t,e,n){t(83)("getOwnPropertyNames",function(){return t(76).f})},{76:76,83:83}],196:[function(t,e,n){var a=t(117),r=t(79);t(83)("getPrototypeOf",function(){return function(t){return r(a(t))}})},{117:117,79:79,83:83}],197:[function(t,e,n){var a=t(52);t(83)("isExtensible",function(t){return function(e){return a(e)?t?t(e):!0:!1}}); -},{52:52,83:83}],198:[function(t,e,n){var a=t(52);t(83)("isFrozen",function(t){return function(e){return a(e)?t?t(e):!1:!0}})},{52:52,83:83}],199:[function(t,e,n){var a=t(52);t(83)("isSealed",function(t){return function(e){return a(e)?t?t(e):!1:!0}})},{52:52,83:83}],200:[function(t,e,n){var a=t(34);a(a.S,"Object",{is:t(94)})},{34:34,94:94}],201:[function(t,e,n){var a=t(117),r=t(81);t(83)("keys",function(){return function(t){return r(a(t))}})},{117:117,81:81,83:83}],202:[function(t,e,n){var a=t(52),r=t(66).onFreeze;t(83)("preventExtensions",function(t){return function(e){return t&&a(e)?t(r(e)):e}})},{52:52,66:66,83:83}],203:[function(t,e,n){var a=t(52),r=t(66).onFreeze;t(83)("seal",function(t){return function(e){return t&&a(e)?t(r(e)):e}})},{52:52,66:66,83:83}],204:[function(t,e,n){var a=t(34);a(a.S,"Object",{setPrototypeOf:t(97).set})},{34:34,97:97}],205:[function(t,e,n){"use strict";var a=t(18),r={};r[t(127)("toStringTag")]="z",r+""!="[object z]"&&t(92)(Object.prototype,"toString",function(){return"[object "+a(this)+"]"},!0)},{127:127,18:18,92:92}],206:[function(t,e,n){var a=t(34),r=t(86);a(a.G+a.F*(parseFloat!=r),{parseFloat:r})},{34:34,86:86}],207:[function(t,e,n){var a=t(34),r=t(87);a(a.G+a.F*(parseInt!=r),{parseInt:r})},{34:34,87:87}],208:[function(t,e,n){"use strict";var a,r,i,o,s=t(60),p=t(41),u=t(26),c=t(18),l=t(34),d=t(52),f=t(4),h=t(7),m=t(40),g=t(102),v=t(111).set,b=t(68)(),y=t(69),_=t(88),x=t(123),w=t(89),k="Promise",S=p.TypeError,E=p.process,C=E&&E.versions,P=C&&C.v8||"",A=p[k],O="process"==c(E),T=function(){},R=r=y.f,M=!!function(){try{var e=A.resolve(1),n=(e.constructor={})[t(127)("species")]=function(t){t(T,T)};return(O||"function"==typeof PromiseRejectionEvent)&&e.then(T)instanceof n&&0!==P.indexOf("6.6")&&-1===x.indexOf("Chrome/66")}catch(a){}}(),L=function(t){var e;return d(t)&&"function"==typeof(e=t.then)?e:!1},j=function(t,e){if(!t._n){t._n=!0;var n=t._c;b(function(){for(var a=t._v,r=1==t._s,i=0,o=function(e){var n,i,o,s=r?e.ok:e.fail,p=e.resolve,u=e.reject,c=e.domain;try{s?(r||(2==t._h&&F(t),t._h=1),s===!0?n=a:(c&&c.enter(),n=s(a),c&&(c.exit(),o=!0)),n===e.promise?u(S("Promise-chain cycle")):(i=L(n))?i.call(n,p,u):p(n)):u(a)}catch(l){c&&!o&&c.exit(),u(l)}};n.length>i;)o(n[i++]);t._c=[],t._n=!1,e&&!t._h&&D(t)})}},D=function(t){v.call(p,function(){var e,n,a,r=t._v,i=N(t);if(i&&(e=_(function(){O?E.emit("unhandledRejection",r,t):(n=p.onunhandledrejection)?n({promise:t,reason:r}):(a=p.console)&&a.error&&a.error("Unhandled promise rejection",r)}),t._h=O||N(t)?2:1),t._a=void 0,i&&e.e)throw e.v})},N=function(t){return 1!==t._h&&0===(t._a||t._c).length},F=function(t){v.call(p,function(){var e;O?E.emit("rejectionHandled",t):(e=p.onrejectionhandled)&&e({promise:t,reason:t._v})})},I=function(t){var e=this;e._d||(e._d=!0,e=e._w||e,e._v=t,e._s=2,e._a||(e._a=e._c.slice()),j(e,!0))},B=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw S("Promise can't be resolved itself");(e=L(t))?b(function(){var a={_w:n,_d:!1};try{e.call(t,u(B,a,1),u(I,a,1))}catch(r){I.call(a,r)}}):(n._v=t,n._s=1,j(n,!1))}catch(a){I.call({_w:n,_d:!1},a)}}};M||(A=function(t){h(this,A,k,"_h"),f(t),a.call(this);try{t(u(B,this,1),u(I,this,1))}catch(e){I.call(this,e)}},a=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},a.prototype=t(91)(A.prototype,{then:function(t,e){var n=R(g(this,A));return n.ok="function"==typeof t?t:!0,n.fail="function"==typeof e&&e,n.domain=O?E.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&j(this,!1),n.promise},"catch":function(t){return this.then(void 0,t)}}),i=function(){var t=new a;this.promise=t,this.resolve=u(B,t,1),this.reject=u(I,t,1)},y.f=R=function(t){return t===A||t===o?new i(t):r(t)}),l(l.G+l.W+l.F*!M,{Promise:A}),t(99)(A,k),t(98)(k),o=t(24)[k],l(l.S+l.F*!M,k,{reject:function(t){var e=R(this),n=e.reject;return n(t),e.promise}}),l(l.S+l.F*(s||!M),k,{resolve:function(t){return w(s&&this===o?A:this,t)}}),l(l.S+l.F*!(M&&t(57)(function(t){A.all(t)["catch"](T)})),k,{all:function(t){var e=this,n=R(e),a=n.resolve,r=n.reject,i=_(function(){var n=[],i=0,o=1;m(t,!1,function(t){var s=i++,p=!1;n.push(void 0),o++,e.resolve(t).then(function(t){p||(p=!0,n[s]=t,--o||a(n))},r)}),--o||a(n)});return i.e&&r(i.v),n.promise},race:function(t){var e=this,n=R(e),a=n.reject,r=_(function(){m(t,!1,function(t){e.resolve(t).then(n.resolve,a)})});return r.e&&a(r.v),n.promise}})},{102:102,111:111,123:123,127:127,18:18,24:24,26:26,34:34,4:4,40:40,41:41,52:52,57:57,60:60,68:68,69:69,7:7,88:88,89:89,91:91,98:98,99:99}],209:[function(t,e,n){var a=t(34),r=t(4),i=t(8),o=(t(41).Reflect||{}).apply,s=Function.apply;a(a.S+a.F*!t(36)(function(){o(function(){})}),"Reflect",{apply:function(t,e,n){var a=r(t),p=i(n);return o?o(a,e,p):s.call(a,e,p)}})},{34:34,36:36,4:4,41:41,8:8}],210:[function(t,e,n){var a=t(34),r=t(71),i=t(4),o=t(8),s=t(52),p=t(36),u=t(17),c=(t(41).Reflect||{}).construct,l=p(function(){function t(){}return!(c(function(){},[],t)instanceof t)}),d=!p(function(){c(function(){})});a(a.S+a.F*(l||d),"Reflect",{construct:function(t,e){i(t),o(e);var n=arguments.length<3?t:i(arguments[2]);if(d&&!l)return c(t,e,n);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var a=[null];return a.push.apply(a,e),new(u.apply(t,a))}var p=n.prototype,f=r(s(p)?p:Object.prototype),h=Function.apply.call(t,f,e);return s(h)?h:f}})},{17:17,34:34,36:36,4:4,41:41,52:52,71:71,8:8}],211:[function(t,e,n){var a=t(72),r=t(34),i=t(8),o=t(118);r(r.S+r.F*t(36)(function(){Reflect.defineProperty(a.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(t,e,n){i(t),e=o(e,!0),i(n);try{return a.f(t,e,n),!0}catch(r){return!1}}})},{118:118,34:34,36:36,72:72,8:8}],212:[function(t,e,n){var a=t(34),r=t(75).f,i=t(8);a(a.S,"Reflect",{deleteProperty:function(t,e){var n=r(i(t),e);return n&&!n.configurable?!1:delete t[e]}})},{34:34,75:75,8:8}],213:[function(t,e,n){"use strict";var a=t(34),r=t(8),i=function(t){this._t=r(t),this._i=0;var e,n=this._k=[];for(e in t)n.push(e)};t(55)(i,"Object",function(){var t,e=this,n=e._k;do if(e._i>=n.length)return{value:void 0,done:!0};while(!((t=n[e._i++])in e._t));return{value:t,done:!1}}),a(a.S,"Reflect",{enumerate:function(t){return new i(t)}})},{34:34,55:55,8:8}],214:[function(t,e,n){var a=t(75),r=t(34),i=t(8);r(r.S,"Reflect",{getOwnPropertyDescriptor:function(t,e){return a.f(i(t),e)}})},{34:34,75:75,8:8}],215:[function(t,e,n){var a=t(34),r=t(79),i=t(8);a(a.S,"Reflect",{getPrototypeOf:function(t){return r(i(t))}})},{34:34,79:79,8:8}],216:[function(t,e,n){function a(t,e){var n,s,c=arguments.length<3?t:arguments[2];return u(t)===c?t[e]:(n=r.f(t,e))?o(n,"value")?n.value:void 0!==n.get?n.get.call(c):void 0:p(s=i(t))?a(s,e,c):void 0}var r=t(75),i=t(79),o=t(42),s=t(34),p=t(52),u=t(8);s(s.S,"Reflect",{get:a})},{34:34,42:42,52:52,75:75,79:79,8:8}],217:[function(t,e,n){var a=t(34);a(a.S,"Reflect",{has:function(t,e){return e in t}})},{34:34}],218:[function(t,e,n){var a=t(34),r=t(8),i=Object.isExtensible;a(a.S,"Reflect",{isExtensible:function(t){return r(t),i?i(t):!0}})},{34:34,8:8}],219:[function(t,e,n){var a=t(34);a(a.S,"Reflect",{ownKeys:t(85)})},{34:34,85:85}],220:[function(t,e,n){var a=t(34),r=t(8),i=Object.preventExtensions;a(a.S,"Reflect",{preventExtensions:function(t){r(t);try{return i&&i(t),!0}catch(e){return!1}}})},{34:34,8:8}],221:[function(t,e,n){var a=t(34),r=t(97);r&&a(a.S,"Reflect",{setPrototypeOf:function(t,e){r.check(t,e);try{return r.set(t,e),!0}catch(n){return!1}}})},{34:34,97:97}],222:[function(t,e,n){function a(t,e,n){var p,d,f=arguments.length<4?t:arguments[3],h=i.f(c(t),e);if(!h){if(l(d=o(t)))return a(d,e,n,f);h=u(0)}if(s(h,"value")){if(h.writable===!1||!l(f))return!1;if(p=i.f(f,e)){if(p.get||p.set||p.writable===!1)return!1;p.value=n,r.f(f,e,p)}else r.f(f,e,u(0,n));return!0}return void 0===h.set?!1:(h.set.call(f,n),!0)}var r=t(72),i=t(75),o=t(79),s=t(42),p=t(34),u=t(90),c=t(8),l=t(52);p(p.S,"Reflect",{set:a})},{34:34,42:42,52:52,72:72,75:75,79:79,8:8,90:90}],223:[function(t,e,n){var a=t(41),r=t(46),i=t(72).f,o=t(77).f,s=t(53),p=t(38),u=a.RegExp,c=u,l=u.prototype,d=/a/g,f=/a/g,h=new u(d)!==d;if(t(30)&&(!h||t(36)(function(){return f[t(127)("match")]=!1,u(d)!=d||u(f)==f||"/a/i"!=u(d,"i")}))){u=function(t,e){var n=this instanceof u,a=s(t),i=void 0===e;return!n&&a&&t.constructor===u&&i?t:r(h?new c(a&&!i?t.source:t,e):c((a=t instanceof u)?t.source:t,a&&i?p.call(t):e),n?this:l,u)};for(var m=(function(t){t in u||i(u,t,{configurable:!0,get:function(){return c[t]},set:function(e){c[t]=e}})}),g=o(c),v=0;g.length>v;)m(g[v++]);l.constructor=u,u.prototype=l,t(92)(a,"RegExp",u)}t(98)("RegExp")},{127:127,30:30,36:36,38:38,41:41,46:46,53:53,72:72,77:77,92:92,98:98}],224:[function(t,e,n){t(30)&&"g"!=/./g.flags&&t(72).f(RegExp.prototype,"flags",{configurable:!0,get:t(38)})},{30:30,38:38,72:72}],225:[function(t,e,n){t(37)("match",1,function(t,e,n){return[function(n){"use strict";var a=t(this),r=void 0==n?void 0:n[e];return void 0!==r?r.call(n,a):RegExp(n)[e](a+"")},n]})},{37:37}],226:[function(t,e,n){t(37)("replace",2,function(t,e,n){return[function(a,r){"use strict";var i=t(this),o=void 0==a?void 0:a[e];return void 0!==o?o.call(a,i,r):n.call(i+"",a,r)},n]})},{37:37}],227:[function(t,e,n){t(37)("search",1,function(t,e,n){return[function(n){"use strict";var a=t(this),r=void 0==n?void 0:n[e];return void 0!==r?r.call(n,a):RegExp(n)[e](a+"")},n]})},{37:37}],228:[function(t,e,n){t(37)("split",2,function(e,n,a){"use strict";var r=t(53),i=a,o=[].push,s="split",p="length",u="lastIndex";if("c"=="abbc"[s](/(b)*/)[1]||4!="test"[s](/(?:)/,-1)[p]||2!="ab"[s](/(?:ab)*/)[p]||4!="."[s](/(.?)(.?)/)[p]||"."[s](/()()/)[p]>1||""[s](/.?/)[p]){var c=void 0===/()??/.exec("")[1];a=function(t,e){var n=this+"";if(void 0===t&&0===e)return[];if(!r(t))return i.call(n,t,e);var a,s,l,d,f,h=[],m=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),g=0,v=void 0===e?4294967295:e>>>0,b=RegExp(t.source,m+"g");for(c||(a=RegExp("^"+b.source+"$(?!\\s)",m));(s=b.exec(n))&&(l=s.index+s[0][p],!(l>g&&(h.push(n.slice(g,s.index)),!c&&s[p]>1&&s[0].replace(a,function(){for(f=1;f1&&s.index=v)));)b[u]===s.index&&b[u]++;return g===n[p]?(d||!b.test(""))&&h.push(""):h.push(n.slice(g)),h[p]>v?h.slice(0,v):h}}else"0"[s](void 0,0)[p]&&(a=function(t,e){return void 0===t&&0===e?[]:i.call(this,t,e)});return[function(t,r){var i=e(this),o=void 0==t?void 0:t[n];return void 0!==o?o.call(t,i,r):a.call(i+"",t,r)},a]})},{37:37,53:53}],229:[function(t,e,n){"use strict";t(224);var a=t(8),r=t(38),i=t(30),o="toString",s=/./[o],p=function(e){t(92)(RegExp.prototype,o,e,!0)};t(36)(function(){return"/a/b"!=s.call({source:"a",flags:"b"})})?p(function(){var t=a(this);return"/".concat(t.source,"/","flags"in t?t.flags:!i&&t instanceof RegExp?r.call(t):void 0)}):s.name!=o&&p(function(){return s.call(this)})},{224:224,30:30,36:36,38:38,8:8,92:92}],230:[function(t,e,n){"use strict";var a=t(20),r=t(124),i="Set";e.exports=t(23)(i,function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return a.def(r(this,i),t=0===t?0:t,t)}},a)},{124:124,20:20,23:23}],231:[function(t,e,n){"use strict";t(106)("anchor",function(t){return function(e){return t(this,"a","name",e)}})},{106:106}],232:[function(t,e,n){"use strict";t(106)("big",function(t){return function(){return t(this,"big","","")}})},{106:106}],233:[function(t,e,n){"use strict";t(106)("blink",function(t){return function(){return t(this,"blink","","")}})},{106:106}],234:[function(t,e,n){"use strict";t(106)("bold",function(t){return function(){return t(this,"b","","")}})},{106:106}],235:[function(t,e,n){"use strict";var a=t(34),r=t(104)(!1);a(a.P,"String",{codePointAt:function(t){return r(this,t)}})},{104:104,34:34}],236:[function(t,e,n){"use strict";var a=t(34),r=t(116),i=t(105),o="endsWith",s=""[o];a(a.P+a.F*t(35)(o),"String",{endsWith:function(t){var e=i(this,t,o),n=arguments.length>1?arguments[1]:void 0,a=r(e.length),p=void 0===n?a:Math.min(r(n),a),u=t+"";return s?s.call(e,u,p):e.slice(p-u.length,p)===u}})},{105:105,116:116,34:34,35:35}],237:[function(t,e,n){"use strict";t(106)("fixed",function(t){return function(){return t(this,"tt","","")}})},{106:106}],238:[function(t,e,n){"use strict";t(106)("fontcolor",function(t){return function(e){return t(this,"font","color",e)}})},{106:106}],239:[function(t,e,n){"use strict";t(106)("fontsize",function(t){return function(e){return t(this,"font","size",e)}})},{106:106}],240:[function(t,e,n){var a=t(34),r=t(112),i=String.fromCharCode,o=String.fromCodePoint;a(a.S+a.F*(!!o&&1!=o.length),"String",{fromCodePoint:function(t){for(var e,n=[],a=arguments.length,o=0;a>o;){if(e=+arguments[o++],r(e,1114111)!==e)throw RangeError(e+" is not a valid code point");n.push(65536>e?i(e):i(((e-=65536)>>10)+55296,e%1024+56320))}return n.join("")}})},{112:112,34:34}],241:[function(t,e,n){"use strict";var a=t(34),r=t(105),i="includes";a(a.P+a.F*t(35)(i),"String",{includes:function(t){return!!~r(this,t,i).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},{105:105,34:34,35:35}],242:[function(t,e,n){"use strict";t(106)("italics",function(t){return function(){return t(this,"i","","")}})},{106:106}],243:[function(t,e,n){"use strict";var a=t(104)(!0);t(56)(String,"String",function(t){this._t=t+"",this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=a(e,n),this._i+=t.length,{value:t,done:!1})})},{104:104,56:56}],244:[function(t,e,n){"use strict";t(106)("link",function(t){return function(e){return t(this,"a","href",e)}})},{106:106}],245:[function(t,e,n){var a=t(34),r=t(115),i=t(116);a(a.S,"String",{raw:function(t){for(var e=r(t.raw),n=i(e.length),a=arguments.length,o=[],s=0;n>s;)o.push(e[s++]+""),a>s&&o.push(arguments[s]+"");return o.join("")}})},{115:115,116:116,34:34}],246:[function(t,e,n){var a=t(34);a(a.P,"String",{repeat:t(108)})},{108:108,34:34}],247:[function(t,e,n){"use strict";t(106)("small",function(t){return function(){return t(this,"small","","")}})},{106:106}],248:[function(t,e,n){"use strict";var a=t(34),r=t(116),i=t(105),o="startsWith",s=""[o];a(a.P+a.F*t(35)(o),"String",{startsWith:function(t){var e=i(this,t,o),n=r(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),a=t+"";return s?s.call(e,a,n):e.slice(n,n+a.length)===a}})},{105:105,116:116,34:34,35:35}],249:[function(t,e,n){"use strict";t(106)("strike",function(t){return function(){return t(this,"strike","","")}})},{106:106}],250:[function(t,e,n){"use strict";t(106)("sub",function(t){return function(){return t(this,"sub","","")}})},{106:106}],251:[function(t,e,n){"use strict";t(106)("sup",function(t){return function(){return t(this,"sup","","")}})},{106:106}],252:[function(t,e,n){"use strict";t(109)("trim",function(t){return function(){return t(this,3)}})},{109:109}],253:[function(t,e,n){"use strict";var a=t(41),r=t(42),i=t(30),o=t(34),s=t(92),p=t(66).KEY,u=t(36),c=t(101),l=t(99),d=t(122),f=t(127),h=t(126),m=t(125),g=t(33),v=t(50),b=t(8),y=t(52),_=t(115),x=t(118),w=t(90),k=t(71),S=t(76),E=t(75),C=t(72),P=t(81),A=E.f,O=C.f,T=S.f,R=a.Symbol,M=a.JSON,L=M&&M.stringify,j="prototype",D=f("_hidden"),N=f("toPrimitive"),F={}.propertyIsEnumerable,I=c("symbol-registry"),B=c("symbols"),q=c("op-symbols"),U=Object[j],V="function"==typeof R,G=a.QObject,z=!G||!G[j]||!G[j].findChild,W=i&&u(function(){return 7!=k(O({},"a",{get:function(){return O(this,"a",{value:7}).a}})).a})?function(t,e,n){var a=A(U,e);a&&delete U[e],O(t,e,n),a&&t!==U&&O(U,e,a)}:O,H=function(t){var e=B[t]=k(R[j]);return e._k=t,e},K=V&&"symbol"==typeof R.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof R},Q=function(t,e,n){return t===U&&Q(q,e,n),b(t),e=x(e,!0),b(n),r(B,e)?(n.enumerable?(r(t,D)&&t[D][e]&&(t[D][e]=!1),n=k(n,{enumerable:w(0,!1)})):(r(t,D)||O(t,D,w(1,{})),t[D][e]=!0),W(t,e,n)):O(t,e,n)},Y=function(t,e){b(t);for(var n,a=g(e=_(e)),r=0,i=a.length;i>r;)Q(t,n=a[r++],e[n]);return t},$=function(t,e){return void 0===e?k(t):Y(k(t),e)},J=function(t){var e=F.call(this,t=x(t,!0));return this===U&&r(B,t)&&!r(q,t)?!1:e||!r(this,t)||!r(B,t)||r(this,D)&&this[D][t]?e:!0},X=function(t,e){if(t=_(t),e=x(e,!0),t!==U||!r(B,e)||r(q,e)){var n=A(t,e);return!n||!r(B,e)||r(t,D)&&t[D][e]||(n.enumerable=!0),n}},Z=function(t){for(var e,n=T(_(t)),a=[],i=0;n.length>i;)r(B,e=n[i++])||e==D||e==p||a.push(e);return a},tt=function(t){for(var e,n=t===U,a=T(n?q:_(t)),i=[],o=0;a.length>o;)r(B,e=a[o++])&&(n?r(U,e):!0)&&i.push(B[e]);return i};V||(R=function(){if(this instanceof R)throw TypeError("Symbol is not a constructor!");var t=d(arguments.length>0?arguments[0]:void 0),e=function(n){this===U&&e.call(q,n),r(this,D)&&r(this[D],t)&&(this[D][t]=!1),W(this,t,w(1,n))};return i&&z&&W(U,t,{configurable:!0,set:e}),H(t)},s(R[j],"toString",function(){return this._k}),E.f=X,C.f=Q,t(77).f=S.f=Z,t(82).f=J,t(78).f=tt,i&&!t(60)&&s(U,"propertyIsEnumerable",J,!0),h.f=function(t){return H(f(t))}),o(o.G+o.W+o.F*!V,{Symbol:R});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),nt=0;et.length>nt;)f(et[nt++]);for(var at=P(f.store),rt=0;at.length>rt;)m(at[rt++]);o(o.S+o.F*!V,"Symbol",{"for":function(t){return r(I,t+="")?I[t]:I[t]=R(t)},keyFor:function(t){if(!K(t))throw TypeError(t+" is not a symbol!");for(var e in I)if(I[e]===t)return e},useSetter:function(){z=!0},useSimple:function(){z=!1}}),o(o.S+o.F*!V,"Object",{create:$,defineProperty:Q,defineProperties:Y,getOwnPropertyDescriptor:X,getOwnPropertyNames:Z,getOwnPropertySymbols:tt}),M&&o(o.S+o.F*(!V||u(function(){var t=R();return"[null]"!=L([t])||"{}"!=L({a:t})||"{}"!=L(Object(t))})),"JSON",{stringify:function(t){for(var e,n,a=[t],r=1;arguments.length>r;)a.push(arguments[r++]);return n=e=a[1],!y(e)&&void 0===t||K(t)?void 0:(v(e)||(e=function(t,e){return"function"==typeof n&&(e=n.call(this,t,e)),K(e)?void 0:e}),a[1]=e,L.apply(M,a))}}),R[j][N]||t(43)(R[j],N,R[j].valueOf),l(R,"Symbol"),l(Math,"Math",!0),l(a.JSON,"JSON",!0)},{101:101,115:115,118:118,122:122,125:125,126:126,127:127,30:30,33:33,34:34,36:36,41:41,42:42,43:43,50:50,52:52,60:60,66:66,71:71,72:72,75:75,76:76,77:77,78:78,8:8,81:81,82:82,90:90,92:92,99:99}],254:[function(t,e,n){"use strict";var a=t(34),r=t(121),i=t(120),o=t(8),s=t(112),p=t(116),u=t(52),c=t(41).ArrayBuffer,l=t(102),d=i.ArrayBuffer,f=i.DataView,h=r.ABV&&c.isView,m=d.prototype.slice,g=r.VIEW,v="ArrayBuffer";a(a.G+a.W+a.F*(c!==d),{ArrayBuffer:d}),a(a.S+a.F*!r.CONSTR,v,{isView:function(t){return h&&h(t)||u(t)&&g in t}}),a(a.P+a.U+a.F*t(36)(function(){return!new d(2).slice(1,void 0).byteLength}),v,{slice:function(t,e){if(void 0!==m&&void 0===e)return m.call(o(this),t);for(var n=o(this).byteLength,a=s(t,n),r=s(void 0===e?n:e,n),i=new(l(this,d))(p(r-a)),u=new f(this),c=new f(i),h=0;r>a;)c.setUint8(h++,u.getUint8(a++));return i}}),t(98)(v)},{102:102,112:112,116:116,120:120,121:121,34:34,36:36,41:41,52:52,8:8,98:98}],255:[function(t,e,n){var a=t(34);a(a.G+a.W+a.F*!t(121).ABV,{DataView:t(120).DataView})},{120:120,121:121,34:34}],256:[function(t,e,n){t(119)("Float32",4,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],257:[function(t,e,n){t(119)("Float64",8,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],258:[function(t,e,n){t(119)("Int16",2,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],259:[function(t,e,n){t(119)("Int32",4,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],260:[function(t,e,n){t(119)("Int8",1,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],261:[function(t,e,n){t(119)("Uint16",2,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],262:[function(t,e,n){t(119)("Uint32",4,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],263:[function(t,e,n){t(119)("Uint8",1,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],264:[function(t,e,n){t(119)("Uint8",1,function(t){return function(e,n,a){return t(this,e,n,a)}},!0)},{119:119}],265:[function(t,e,n){"use strict";var a,r=t(13)(0),i=t(92),o=t(66),s=t(70),p=t(22),u=t(52),c=t(36),l=t(124),d="WeakMap",f=o.getWeak,h=Object.isExtensible,m=p.ufstore,g={},v=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},b={get:function(t){if(u(t)){var e=f(t);return e===!0?m(l(this,d)).get(t):e?e[this._i]:void 0}},set:function(t,e){return p.def(l(this,d),t,e)}},y=e.exports=t(23)(d,v,b,p,!0,!0);c(function(){return 7!=(new y).set((Object.freeze||Object)(g),7).get(g)})&&(a=p.getConstructor(v,d),s(a.prototype,b),o.NEED=!0,r(["delete","has","get","set"],function(t){var e=y.prototype,n=e[t];i(e,t,function(e,r){if(u(e)&&!h(e)){this._f||(this._f=new a);var i=this._f[t](e,r);return"set"==t?this:i}return n.call(this,e,r)})}))},{124:124,13:13,22:22,23:23,36:36,52:52,66:66,70:70,92:92}],266:[function(t,e,n){"use strict";var a=t(22),r=t(124),i="WeakSet";t(23)(i,function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return a.def(r(this,i),t,!0)}},a,!1,!0)},{124:124,22:22,23:23}],267:[function(t,e,n){"use strict";var a=t(34),r=t(39),i=t(117),o=t(116),s=t(4),p=t(16);a(a.P,"Array",{flatMap:function(t){var e,n,a=i(this);return s(t),e=o(a.length),n=p(a,0),r(n,a,a,e,0,1,t,arguments[1]),n}}),t(6)("flatMap")},{116:116,117:117,16:16,34:34,39:39,4:4,6:6}],268:[function(t,e,n){"use strict";var a=t(34),r=t(39),i=t(117),o=t(116),s=t(114),p=t(16);a(a.P,"Array",{flatten:function(){var t=arguments[0],e=i(this),n=o(e.length),a=p(e,0);return r(a,e,e,n,0,void 0===t?1:s(t)),a}}),t(6)("flatten")},{114:114,116:116,117:117,16:16,34:34,39:39,6:6}],269:[function(t,e,n){"use strict";var a=t(34),r=t(12)(!0);a(a.P,"Array",{includes:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),t(6)("includes")},{12:12,34:34,6:6}],270:[function(t,e,n){var a=t(34),r=t(68)(),i=t(41).process,o="process"==t(19)(i);a(a.G,{asap:function(t){var e=o&&i.domain;r(e?e.bind(t):t)}})},{19:19,34:34,41:41,68:68}],271:[function(t,e,n){var a=t(34),r=t(19);a(a.S,"Error",{isError:function(t){return"Error"===r(t)}})},{19:19,34:34}],272:[function(t,e,n){var a=t(34);a(a.G,{global:t(41)})},{34:34,41:41}],273:[function(t,e,n){t(95)("Map")},{95:95}],274:[function(t,e,n){t(96)("Map")},{96:96}],275:[function(t,e,n){var a=t(34);a(a.P+a.R,"Map",{toJSON:t(21)("Map")})},{21:21,34:34}],276:[function(t,e,n){var a=t(34);a(a.S,"Math",{clamp:function(t,e,n){return Math.min(n,Math.max(e,t))}})},{34:34}],277:[function(t,e,n){var a=t(34);a(a.S,"Math",{DEG_PER_RAD:Math.PI/180})},{34:34}],278:[function(t,e,n){var a=t(34),r=180/Math.PI;a(a.S,"Math",{degrees:function(t){return t*r}})},{34:34}],279:[function(t,e,n){var a=t(34),r=t(64),i=t(62);a(a.S,"Math",{fscale:function(t,e,n,a,o){return i(r(t,e,n,a,o))}})},{34:34,62:62,64:64}],280:[function(t,e,n){var a=t(34);a(a.S,"Math",{iaddh:function(t,e,n,a){var r=t>>>0,i=e>>>0,o=n>>>0;return i+(a>>>0)+((r&o|(r|o)&~(r+o>>>0))>>>31)|0}})},{34:34}],281:[function(t,e,n){var a=t(34);a(a.S,"Math",{imulh:function(t,e){var n=65535,a=+t,r=+e,i=a&n,o=r&n,s=a>>16,p=r>>16,u=(s*o>>>0)+(i*o>>>16);return s*p+(u>>16)+((i*p>>>0)+(u&n)>>16)}})},{34:34}],282:[function(t,e,n){var a=t(34);a(a.S,"Math",{isubh:function(t,e,n,a){var r=t>>>0,i=e>>>0,o=n>>>0;return i-(a>>>0)-((~r&o|~(r^o)&r-o>>>0)>>>31)|0}})},{34:34}],283:[function(t,e,n){var a=t(34);a(a.S,"Math",{RAD_PER_DEG:180/Math.PI})},{34:34}],284:[function(t,e,n){var a=t(34),r=Math.PI/180;a(a.S,"Math",{radians:function(t){return t*r}})},{34:34}],285:[function(t,e,n){var a=t(34);a(a.S,"Math",{scale:t(64)})},{34:34,64:64}],286:[function(t,e,n){var a=t(34);a(a.S,"Math",{signbit:function(t){return(t=+t)!=t?t:0==t?1/t==1/0:t>0}})},{34:34}],287:[function(t,e,n){var a=t(34);a(a.S,"Math",{umulh:function(t,e){var n=65535,a=+t,r=+e,i=a&n,o=r&n,s=a>>>16,p=r>>>16,u=(s*o>>>0)+(i*o>>>16);return s*p+(u>>>16)+((i*p>>>0)+(u&n)>>>16)}})},{34:34}],288:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(4),o=t(72);t(30)&&a(a.P+t(74),"Object",{__defineGetter__:function(t,e){o.f(r(this),t,{get:i(e),enumerable:!0,configurable:!0})}})},{117:117,30:30,34:34,4:4,72:72,74:74}],289:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(4),o=t(72);t(30)&&a(a.P+t(74),"Object",{__defineSetter__:function(t,e){o.f(r(this),t,{set:i(e),enumerable:!0,configurable:!0})}})},{117:117,30:30,34:34,4:4,72:72,74:74}],290:[function(t,e,n){var a=t(34),r=t(84)(!0);a(a.S,"Object",{entries:function(t){return r(t)}})},{34:34,84:84}],291:[function(t,e,n){var a=t(34),r=t(85),i=t(115),o=t(75),s=t(25);a(a.S,"Object",{getOwnPropertyDescriptors:function(t){for(var e,n,a=i(t),p=o.f,u=r(a),c={},l=0;u.length>l;)n=p(a,e=u[l++]),void 0!==n&&s(c,e,n);return c}})},{115:115,25:25,34:34,75:75,85:85}],292:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(118),o=t(79),s=t(75).f;t(30)&&a(a.P+t(74),"Object",{__lookupGetter__:function(t){var e,n=r(this),a=i(t,!0);do if(e=s(n,a))return e.get;while(n=o(n))}})},{117:117,118:118,30:30,34:34,74:74,75:75,79:79}],293:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(118),o=t(79),s=t(75).f;t(30)&&a(a.P+t(74),"Object",{__lookupSetter__:function(t){var e,n=r(this),a=i(t,!0);do if(e=s(n,a))return e.set;while(n=o(n))}})},{117:117,118:118,30:30,34:34,74:74,75:75,79:79}],294:[function(t,e,n){var a=t(34),r=t(84)(!1);a(a.S,"Object",{values:function(t){return r(t)}})},{34:34,84:84}],295:[function(t,e,n){"use strict";var a=t(34),r=t(41),i=t(24),o=t(68)(),s=t(127)("observable"),p=t(4),u=t(8),c=t(7),l=t(91),d=t(43),f=t(40),h=f.RETURN,m=function(t){return null==t?void 0:p(t)},g=function(t){var e=t._c;e&&(t._c=void 0,e())},v=function(t){return void 0===t._o},b=function(t){v(t)||(t._o=void 0,g(t))},y=function(t,e){u(t),this._c=void 0,this._o=t,t=new _(this);try{var n=e(t),a=n;null!=n&&("function"==typeof n.unsubscribe?n=function(){a.unsubscribe()}:p(n),this._c=n)}catch(r){return void t.error(r)}v(this)&&g(this)};y.prototype=l({},{unsubscribe:function(){b(this)}});var _=function(t){this._s=t};_.prototype=l({},{next:function(t){var e=this._s;if(!v(e)){var n=e._o;try{var a=m(n.next);if(a)return a.call(n,t)}catch(r){try{b(e)}finally{throw r}}}},error:function(t){var e=this._s;if(v(e))throw t;var n=e._o;e._o=void 0;try{var a=m(n.error);if(!a)throw t;t=a.call(n,t)}catch(r){try{g(e)}finally{throw r}}return g(e),t},complete:function(t){var e=this._s;if(!v(e)){var n=e._o;e._o=void 0;try{var a=m(n.complete);t=a?a.call(n,t):void 0}catch(r){try{g(e)}finally{throw r}}return g(e),t}}});var x=function(t){c(this,x,"Observable","_f")._f=p(t)};l(x.prototype,{subscribe:function(t){return new y(t,this._f)},forEach:function(t){var e=this;return new(i.Promise||r.Promise)(function(n,a){p(t);var r=e.subscribe({next:function(e){try{return t(e)}catch(n){a(n),r.unsubscribe()}},error:a,complete:n})})}}),l(x,{from:function(t){var e="function"==typeof this?this:x,n=m(u(t)[s]);if(n){var a=u(n.call(t));return a.constructor===e?a:new e(function(t){return a.subscribe(t)})}return new e(function(e){var n=!1;return o(function(){if(!n){try{if(f(t,!1,function(t){return e.next(t),n?h:void 0})===h)return}catch(a){if(n)throw a;return void e.error(a)}e.complete()}}),function(){n=!0}})},of:function(){for(var t=0,e=arguments.length,n=Array(e);e>t;)n[t]=arguments[t++];return new("function"==typeof this?this:x)(function(t){var e=!1;return o(function(){if(!e){for(var a=0;a1?arguments[1]:void 0,!1)}})},{107:107,123:123,34:34}],313:[function(t,e,n){"use strict";var a=t(34),r=t(107),i=t(123);a(a.P+a.F*/Version\/10\.\d+(\.\d+)? Safari\//.test(i),"String",{padStart:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},{107:107,123:123,34:34}],314:[function(t,e,n){"use strict";t(109)("trimLeft",function(t){return function(){return t(this,1)}},"trimStart")},{109:109}],315:[function(t,e,n){"use strict";t(109)("trimRight",function(t){return function(){return t(this,2)}},"trimEnd")},{109:109}],316:[function(t,e,n){t(125)("asyncIterator")},{125:125}],317:[function(t,e,n){t(125)("observable")},{125:125}],318:[function(t,e,n){var a=t(34);a(a.S,"System",{global:t(41) -})},{34:34,41:41}],319:[function(t,e,n){t(95)("WeakMap")},{95:95}],320:[function(t,e,n){t(96)("WeakMap")},{96:96}],321:[function(t,e,n){t(95)("WeakSet")},{95:95}],322:[function(t,e,n){t(96)("WeakSet")},{96:96}],323:[function(t,e,n){for(var a=t(140),r=t(81),i=t(92),o=t(41),s=t(43),p=t(59),u=t(127),c=u("iterator"),l=u("toStringTag"),d=p.Array,f={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},h=r(f),m=0;m2,r=a?o.call(arguments,2):!1;return t(a?function(){("function"==typeof e?e:Function(e)).apply(this,r)}:e,n)}};r(r.G+r.B+r.F*s,{setTimeout:p(a.setTimeout),setInterval:p(a.setInterval)})},{123:123,34:34,41:41}],326:[function(t,e,n){t(253),t(190),t(192),t(191),t(194),t(196),t(201),t(195),t(193),t(203),t(202),t(198),t(199),t(197),t(189),t(200),t(204),t(205),t(156),t(158),t(157),t(207),t(206),t(177),t(187),t(188),t(178),t(179),t(180),t(181),t(182),t(183),t(184),t(185),t(186),t(160),t(161),t(162),t(163),t(164),t(165),t(166),t(167),t(168),t(169),t(170),t(171),t(172),t(173),t(174),t(175),t(176),t(240),t(245),t(252),t(243),t(235),t(236),t(241),t(246),t(248),t(231),t(232),t(233),t(234),t(237),t(238),t(239),t(242),t(244),t(247),t(249),t(250),t(251),t(151),t(153),t(152),t(155),t(154),t(139),t(137),t(144),t(141),t(147),t(149),t(136),t(143),t(133),t(148),t(131),t(146),t(145),t(138),t(142),t(130),t(132),t(135),t(134),t(150),t(140),t(223),t(229),t(224),t(225),t(226),t(227),t(228),t(208),t(159),t(230),t(265),t(266),t(254),t(255),t(260),t(263),t(264),t(258),t(261),t(259),t(262),t(256),t(257),t(209),t(210),t(211),t(212),t(213),t(216),t(214),t(215),t(217),t(218),t(219),t(220),t(222),t(221),t(269),t(267),t(268),t(310),t(313),t(312),t(314),t(315),t(311),t(316),t(317),t(291),t(294),t(290),t(288),t(289),t(292),t(293),t(275),t(309),t(274),t(308),t(320),t(322),t(273),t(307),t(319),t(321),t(272),t(318),t(271),t(276),t(277),t(278),t(279),t(280),t(282),t(281),t(283),t(284),t(285),t(287),t(286),t(296),t(297),t(298),t(299),t(301),t(300),t(303),t(302),t(304),t(305),t(306),t(270),t(295),t(325),t(324),t(323),e.exports=t(24)},{130:130,131:131,132:132,133:133,134:134,135:135,136:136,137:137,138:138,139:139,140:140,141:141,142:142,143:143,144:144,145:145,146:146,147:147,148:148,149:149,150:150,151:151,152:152,153:153,154:154,155:155,156:156,157:157,158:158,159:159,160:160,161:161,162:162,163:163,164:164,165:165,166:166,167:167,168:168,169:169,170:170,171:171,172:172,173:173,174:174,175:175,176:176,177:177,178:178,179:179,180:180,181:181,182:182,183:183,184:184,185:185,186:186,187:187,188:188,189:189,190:190,191:191,192:192,193:193,194:194,195:195,196:196,197:197,198:198,199:199,200:200,201:201,202:202,203:203,204:204,205:205,206:206,207:207,208:208,209:209,210:210,211:211,212:212,213:213,214:214,215:215,216:216,217:217,218:218,219:219,220:220,221:221,222:222,223:223,224:224,225:225,226:226,227:227,228:228,229:229,230:230,231:231,232:232,233:233,234:234,235:235,236:236,237:237,238:238,239:239,24:24,240:240,241:241,242:242,243:243,244:244,245:245,246:246,247:247,248:248,249:249,250:250,251:251,252:252,253:253,254:254,255:255,256:256,257:257,258:258,259:259,260:260,261:261,262:262,263:263,264:264,265:265,266:266,267:267,268:268,269:269,270:270,271:271,272:272,273:273,274:274,275:275,276:276,277:277,278:278,279:279,280:280,281:281,282:282,283:283,284:284,285:285,286:286,287:287,288:288,289:289,290:290,291:291,292:292,293:293,294:294,295:295,296:296,297:297,298:298,299:299,300:300,301:301,302:302,303:303,304:304,305:305,306:306,307:307,308:308,309:309,310:310,311:311,312:312,313:313,314:314,315:315,316:316,317:317,318:318,319:319,320:320,321:321,322:322,323:323,324:324,325:325}],327:[function(t,e,n){!function(t){"use strict";function e(){return c.createDocumentFragment()}function n(t){return c.createElement(t)}function a(t){if(1===t.length)return r(t[0]);for(var n=e(),a=B.call(t),i=0;i-1}}([].indexOf||function(t){for(q=this.length;q--&&this[q]!==t;);return q}),item:function(t){return this[t]||null},remove:function(){for(var t,e=0;e=p?e(i):document.fonts.load(u(i,i.family),s).then(function(e){1<=e.length?t(i):setTimeout(d,25)},function(){e(i)})};d()}else n(function(){function n(){var e;(e=-1!=g&&-1!=v||-1!=g&&-1!=b||-1!=v&&-1!=b)&&((e=g!=v&&g!=b&&v!=b)||(null===l&&(e=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent),l=!!e&&(536>parseInt(e[1],10)||536===parseInt(e[1],10)&&11>=parseInt(e[2],10))),e=l&&(g==y&&v==y&&b==y||g==_&&v==_&&b==_||g==x&&v==x&&b==x)),e=!e),e&&(null!==w.parentNode&&w.parentNode.removeChild(w),clearTimeout(k),t(i))}function d(){if((new Date).getTime()-c>=p)null!==w.parentNode&&w.parentNode.removeChild(w),e(i);else{var t=document.hidden;(!0===t||void 0===t)&&(g=f.a.offsetWidth,v=h.a.offsetWidth,b=m.a.offsetWidth,n()),k=setTimeout(d,50)}}var f=new a(s),h=new a(s),m=new a(s),g=-1,v=-1,b=-1,y=-1,_=-1,x=-1,w=document.createElement("div"),k=0;w.dir="ltr",r(f,u(i,"sans-serif")),r(h,u(i,"serif")),r(m,u(i,"monospace")),w.appendChild(f.a),w.appendChild(h.a),w.appendChild(m.a),document.body.appendChild(w),y=f.a.offsetWidth,_=h.a.offsetWidth,x=m.a.offsetWidth,d(),o(f,function(t){g=t,n()}),r(f,u(i,'"'+i.family+'",sans-serif')),o(h,function(t){v=t,n()}),r(h,u(i,'"'+i.family+'",serif')),o(m,function(t){b=t,n()}),r(m,u(i,'"'+i.family+'",monospace'))})})},window.FontFaceObserver=s,window.FontFaceObserver.prototype.check=s.prototype.a,void 0!==e&&(e.exports=window.FontFaceObserver)}()},{}],330:[function(t,e,n){!function(t,n){function a(t,e){var n=t.createElement("p"),a=t.getElementsByTagName("head")[0]||t.documentElement;return n.innerHTML="x",a.insertBefore(n.lastChild,a.firstChild)}function r(){var t=_.elements;return"string"==typeof t?t.split(" "):t}function i(t,e){var n=_.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof t&&(t=t.join(" ")),_.elements=n+" "+t,c(e)}function o(t){var e=y[t[v]];return e||(e={},b++,t[v]=b,y[b]=e),e}function s(t,e,a){if(e||(e=n),d)return e.createElement(t);a||(a=o(e));var r;return r=a.cache[t]?a.cache[t].cloneNode():g.test(t)?(a.cache[t]=a.createElem(t)).cloneNode():a.createElem(t),!r.canHaveChildren||m.test(t)||r.tagUrn?r:a.frag.appendChild(r)}function p(t,e){if(t||(t=n),d)return t.createDocumentFragment();e=e||o(t);for(var a=e.frag.cloneNode(),i=0,s=r(),p=s.length;p>i;i++)a.createElement(s[i]);return a}function u(t,e){e.cache||(e.cache={},e.createElem=t.createElement,e.createFrag=t.createDocumentFragment,e.frag=e.createFrag()),t.createElement=function(n){return _.shivMethods?s(n,t,e):e.createElem(n)},t.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-:]+/g,function(t){return e.createElem(t),e.frag.createElement(t),'c("'+t+'")'})+");return n}")(_,e.frag)}function c(t){t||(t=n);var e=o(t);return!_.shivCSS||l||e.hasCSS||(e.hasCSS=!!a(t,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),d||u(t,e),t}var l,d,f="3.7.3-pre",h=t.html5||{},m=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,g=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",b=0,y={};!function(){try{var t=n.createElement("a");t.innerHTML="",l="hidden"in t,d=1==t.childNodes.length||function(){n.createElement("a");var t=n.createDocumentFragment();return void 0===t.cloneNode||void 0===t.createDocumentFragment||void 0===t.createElement}()}catch(e){l=!0,d=!0}}();var _={elements:h.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:f,shivCSS:h.shivCSS!==!1,supportsUnknownElements:d,shivMethods:h.shivMethods!==!1,type:"default",shivDocument:c,createElement:s,createDocumentFragment:p,addElements:i};t.html5=_,c(n),"object"==typeof e&&e.exports&&(e.exports=_)}("undefined"!=typeof window?window:this,document)},{}],331:[function(t,e,n){(function(t){(function(t){!function(t){function e(t,e,n,a){for(var i,o,s=n.slice(),p=r(e,t),u=0,c=s.length;c>u&&(i=s[u],"object"==typeof i?"function"==typeof i.handleEvent&&i.handleEvent(p):i.call(t,p),!p.stoppedImmediatePropagation);u++);return o=!p.stoppedPropagation,a&&o&&t.parentNode?t.parentNode.dispatchEvent(p):!p.defaultPrevented}function n(t,e){return{configurable:!0,get:t,set:e}}function a(t,e,a){var r=y(e||t,a);v(t,"textContent",n(function(){return r.get.call(this)},function(t){r.set.call(this,t)}))}function r(t,e){return t.currentTarget=e,t.eventPhase=t.target===t.currentTarget?2:3,t}function i(t,e){for(var n=t.length;n--&&t[n]!==e;);return n}function o(){if("BR"===this.tagName)return"\n";for(var t=this.firstChild,e=[];t;)8!==t.nodeType&&7!==t.nodeType&&e.push(t.textContent),t=t.nextSibling;return e.join("")}function s(t){var e=document.createEvent("Event");e.initEvent("input",!0,!0),(t.srcElement||t.fromElement||document).dispatchEvent(e)}function p(t){!f&&S.test(document.readyState)&&(f=!f,document.detachEvent(h,p),t=document.createEvent("Event"),t.initEvent(m,!0,!0),document.dispatchEvent(t))}function u(t){return function(){return P[t]||document.body&&document.body[t]||0}}function c(t){for(var e;e=this.lastChild;)this.removeChild(e);null!=t&&this.appendChild(document.createTextNode(t))}function l(e,n){return n||(n=t.event),n.target||(n.target=n.srcElement||n.fromElement||document),n.timeStamp||(n.timeStamp=(new Date).getTime()),n}if(!document.createEvent){var d=!0,f=!1,h="onreadystatechange",m="DOMContentLoaded",g="__IE8__"+Math.random(),v=Object.defineProperty||function(t,e,n){t[e]=n.value},b=Object.defineProperties||function(e,n){for(var a in n)if(_.call(n,a))try{v(e,a,n[a])}catch(r){t.console&&console.log(a+" failed on object:",e,r.message)}},y=Object.getOwnPropertyDescriptor,_=Object.prototype.hasOwnProperty,x=t.Element.prototype,w=t.Text.prototype,k=/^[a-z]+$/,S=/loaded|complete/,E={},C=document.createElement("div"),P=document.documentElement,A=P.removeAttribute,O=P.setAttribute,T=function(t){return{enumerable:!0,writable:!0,configurable:!0,value:t}};a(t.HTMLCommentElement.prototype,x,"nodeValue"),a(t.HTMLScriptElement.prototype,null,"text"),a(w,null,"nodeValue"),a(t.HTMLTitleElement.prototype,null,"text"),v(t.HTMLStyleElement.prototype,"textContent",function(t){return n(function(){return t.get.call(this.styleSheet)},function(e){t.set.call(this.styleSheet,e)})}(y(t.CSSStyleSheet.prototype,"cssText")));var R=/\b\s*alpha\s*\(\s*opacity\s*=\s*(\d+)\s*\)/;v(t.CSSStyleDeclaration.prototype,"opacity",{get:function(){var t=this.filter.match(R);return t?""+t[1]/100:""},set:function(t){this.zoom=1;var e=!1;t=1>t?" alpha(opacity="+Math.round(100*t)+")":"",this.filter=this.filter.replace(R,function(){return e=!0,t}),!e&&t&&(this.filter+=t)}}),b(x,{textContent:{get:o,set:c},firstElementChild:{get:function(){for(var t=this.childNodes||[],e=0,n=t.length;n>e;e++)if(1==t[e].nodeType)return t[e]}},lastElementChild:{get:function(){for(var t=this.childNodes||[],e=t.length;e--;)if(1==t[e].nodeType)return t[e]}},oninput:{get:function(){return this._oninput||null},set:function(t){this._oninput&&(this.removeEventListener("input",this._oninput),this._oninput=t,t&&this.addEventListener("input",t))}},previousElementSibling:{get:function(){for(var t=this.previousSibling;t&&1!=t.nodeType;)t=t.previousSibling;return t}},nextElementSibling:{get:function(){for(var t=this.nextSibling;t&&1!=t.nodeType;)t=t.nextSibling;return t}},childElementCount:{get:function(){for(var t=0,e=this.childNodes||[],n=e.length;n--;t+=1==e[n].nodeType);return t}},addEventListener:T(function(t,n,a){if("function"==typeof n||"object"==typeof n){var r,o,p=this,u="on"+t,c=p[g]||v(p,g,{value:{}})[g],d=c[u]||(c[u]={}),f=d.h||(d.h=[]);if(!_.call(d,"w")){if(d.w=function(t){return t[g]||e(p,l(p,t),f,!1)},!_.call(E,u))if(k.test(t)){try{r=document.createEventObject(),r[g]=!0,9!=p.nodeType&&(null==p.parentNode&&C.appendChild(p),(o=p.getAttribute(u))&&A.call(p,u)),p.fireEvent(u,r),E[u]=!0}catch(h){for(E[u]=!1;C.hasChildNodes();)C.removeChild(C.firstChild)}null!=o&&O.call(p,u,o)}else E[u]=!1;(d.n=E[u])&&p.attachEvent(u,d.w)}i(f,n)<0&&f[a?"unshift":"push"](n),"input"===t&&p.attachEvent("onkeyup",s)}}),dispatchEvent:T(function(t){var n,a=this,r="on"+t.type,i=a[g],o=i&&i[r],s=!!o;return t.target||(t.target=a),s?o.n?a.fireEvent(r,t):e(a,t,o.h,!0):(n=a.parentNode)?n.dispatchEvent(t):!0,!t.defaultPrevented}),removeEventListener:T(function(t,e,n){if("function"==typeof e||"object"==typeof e){var a=this,r="on"+t,o=a[g],s=o&&o[r],p=s&&s.h,u=p?i(p,e):-1;u>-1&&p.splice(u,1)}})}),b(w,{addEventListener:T(x.addEventListener),dispatchEvent:T(x.dispatchEvent),removeEventListener:T(x.removeEventListener)}),b(t.XMLHttpRequest.prototype,{addEventListener:T(function(t,e,n){var a=this,r="on"+t,o=a[g]||v(a,g,{value:{}})[g],s=o[r]||(o[r]={}),p=s.h||(s.h=[]);i(p,e)<0&&(a[r]||(a[r]=function(){var e=document.createEvent("Event");e.initEvent(t,!0,!0),a.dispatchEvent(e)}),p[n?"unshift":"push"](e))}),dispatchEvent:T(function(t){var n=this,a="on"+t.type,r=n[g],i=r&&r[a],o=!!i;return o&&(i.n?n.fireEvent(a,t):e(n,t,i.h,!0))}),removeEventListener:T(x.removeEventListener)});var M=y(Event.prototype,"button").get;b(t.Event.prototype,{bubbles:T(!0),cancelable:T(!0),preventDefault:T(function(){this.cancelable&&(this.returnValue=!1)}),stopPropagation:T(function(){this.stoppedPropagation=!0,this.cancelBubble=!0}),stopImmediatePropagation:T(function(){this.stoppedImmediatePropagation=!0,this.stopPropagation()}),initEvent:T(function(t,e,n){this.type=t,this.bubbles=!!e,this.cancelable=!!n,this.bubbles||this.stopPropagation()}),pageX:{get:function(){return this._pageX||(this._pageX=this.clientX+t.scrollX-(P.clientLeft||0))}},pageY:{get:function(){return this._pageY||(this._pageY=this.clientY+t.scrollY-(P.clientTop||0))}},which:{get:function(){return this.keyCode?this.keyCode:isNaN(this.button)?void 0:this.button+1}},charCode:{get:function(){return this.keyCode&&"keypress"==this.type?this.keyCode:0}},buttons:{get:function(){return M.call(this)}},button:{get:function(){var t=this.buttons;return 1&t?0:2&t?2:4&t?1:void 0}},defaultPrevented:{get:function(){var t,e=this.returnValue;return!(e===t||e)}},relatedTarget:{get:function(){var t=this.type;return"mouseover"===t?this.fromElement:"mouseout"===t?this.toElement:null}}}),b(t.HTMLDocument.prototype,{defaultView:{get:function(){return this.parentWindow}},textContent:{get:function(){return 11===this.nodeType?o.call(this):null},set:function(t){11===this.nodeType&&c.call(this,t)}},addEventListener:T(function(e,n,a){var r=this;x.addEventListener.call(r,e,n,a),d&&e===m&&!S.test(r.readyState)&&(d=!1,r.attachEvent(h,p),t==top&&!function i(t){try{r.documentElement.doScroll("left"),p()}catch(e){setTimeout(i,50)}}())}),dispatchEvent:T(x.dispatchEvent),removeEventListener:T(x.removeEventListener),createEvent:T(function(t){var e;if("Event"!==t)throw Error("unsupported "+t);return e=document.createEventObject(),e.timeStamp=(new Date).getTime(),e})}),b(t.Window.prototype,{getComputedStyle:T(function(){function t(t){this._=t}function e(){}var n=/^(?:[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|))(?!px)[a-z%]+$/,a=/^(top|right|bottom|left)$/,r=/\-([a-z])/g,i=function(t,e){return e.toUpperCase()};return t.prototype.getPropertyValue=function(t){var e,o,s,p=this._,u=p.style,c=p.currentStyle,l=p.runtimeStyle;return"opacity"==t?u.opacity||"1":(t=("float"===t?"style-float":t).replace(r,i),e=c?c[t]:u[t],n.test(e)&&!a.test(t)&&(o=u.left,s=l&&l.left,s&&(l.left=c.left),u.left="fontSize"===t?"1em":e,e=u.pixelLeft+"px",u.left=o,s&&(l.left=s)),null==e?e:e+""||"auto")},e.prototype.getPropertyValue=function(){return null},function(n,a){return a?new e(n):new t(n)}}()),addEventListener:T(function(n,a,r){var o,s=t,p="on"+n;s[p]||(s[p]=function(t){return e(s,l(s,t),o,!1)&&void 0}),o=s[p][g]||(s[p][g]=[]),i(o,a)<0&&o[r?"unshift":"push"](a)}),dispatchEvent:T(function(e){var n=t["on"+e.type];return n?n.call(t,e)!==!1&&!e.defaultPrevented:!0}),removeEventListener:T(function(e,n,a){var r="on"+e,o=(t[r]||Object)[g],s=o?i(o,n):-1;s>-1&&o.splice(s,1)}),pageXOffset:{get:u("scrollLeft")},pageYOffset:{get:u("scrollTop")},scrollX:{get:u("scrollLeft")},scrollY:{get:u("scrollTop")},innerWidth:{get:u("clientWidth")},innerHeight:{get:u("clientHeight")}}),t.HTMLElement=t.Element,function(t,e,n){for(n=0;na;a++)e.appendChild(n[a].cloneNode(!0));return e},n.cloneRange=function(){var t=new e;return t._start=this._start,t._end=this._end,t},n.deleteContents=function(){for(var e=this._start.parentNode,n=t(this._start,this._end),a=0,r=n.length;r>a;a++)e.removeChild(n[a])},n.extractContents=function(){for(var e=this._start.ownerDocument.createDocumentFragment(),n=t(this._start,this._end),a=0,r=n.length;r>a;a++)e.appendChild(n[a]);return e},n.setEndAfter=function(t){this._end=t},n.setEndBefore=function(t){this._end=t.previousSibling},n.setStartAfter=function(t){this._start=t.nextSibling},n.setStartBefore=function(t){this._start=t}}}()}}(this.window||t)}).call(this,void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],332:[function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{"default":t}}function r(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e=s)return(0,p["default"])({points:n});for(var l=1;s-1>=l;l++)i.push((0,u.times)(a,(0,u.minus)(n[l],n[l-1])));for(var d=[(0,u.plus)(n[0],c(i[0],i[1]))],l=1;s-2>=l;l++)d.push((0,u.minus)(n[l],(0,u.average)([i[l],i[l-1]])));d.push((0,u.minus)(n[s-1],c(i[s-2],i[s-3])));var f=d[0],h=d[1],m=n[0],g=n[1],v=(e=(0,o["default"])()).moveto.apply(e,r(m)).curveto(f[0],f[1],h[0],h[1],g[0],g[1]);return{path:(0,u.range)(2,s).reduce(function(t,e){var a=d[e],r=n[e];return t.smoothcurveto(a[0],a[1],r[0],r[1])},v),centroid:(0,u.average)(n)}},e.exports=n["default"]},{335:335,336:336,337:337}],333:[function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),i=t(334),o=a(i),s=t(335),p=1e-5,u=function(t,e){var n=t.map(e),a=n.sort(function(t,e){var n=r(t,2),a=n[0],i=(n[1],r(e,2)),o=i[0];i[1];return a-o}),i=a.length,o=a[0][0],u=a[i-1][0],c=(0,s.minBy)(a,function(t){return t[1]}),l=(0,s.maxBy)(a,function(t){return t[1]});return o==u&&(u+=p),c==l&&(l+=p),{points:a,xmin:o,xmax:u,ymin:c,ymax:l}};n["default"]=function(t){var e=t.data,n=t.xaccessor,a=t.yaccessor,i=t.width,p=t.height,c=t.closed,l=t.min,d=t.max;n||(n=function(t){var e=r(t,2),n=e[0];e[1];return n}),a||(a=function(t){var e=r(t,2),n=(e[0],e[1]);return n});var f=function(t){return[n(t),a(t)]},h=e.map(function(t){return u(t,f)}),m=(0,s.minBy)(h,function(t){return t.xmin}),g=(0,s.maxBy)(h,function(t){return t.xmax}),v=null==l?(0,s.minBy)(h,function(t){return t.ymin}):l,b=null==d?(0,s.maxBy)(h,function(t){return t.ymax}):d;c&&(v=Math.min(v,0),b=Math.max(b,0));var y=c?0:v,_=(0,o["default"])([m,g],[0,i]),x=(0,o["default"])([v,b],[p,0]),w=function(t){var e=r(t,2),n=e[0],a=e[1];return[_(n),x(a)]};return{arranged:h,scale:w,xscale:_,yscale:x,base:y}},e.exports=n["default"]},{334:334,335:335}],334:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function i(t,e){var n=a(t,2),r=n[0],o=n[1],s=a(e,2),p=s[0],u=s[1],c=function(t){return p+(u-p)*(t-r)/(o-r)};return c.inverse=function(){return i([p,u],[r,o])},c};n["default"]=r,e.exports=n["default"]},{}],335:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function(t){return t.reduce(function(t,e){return t+e},0)},i=function(t){return t.reduce(function(t,e){return Math.min(t,e)})},o=function(t){return t.reduce(function(t,e){return Math.max(t,e)})},s=function(t,e){return t.reduce(function(t,n){return t+e(n)},0)},p=function(t,e){return t.reduce(function(t,n){return Math.min(t,e(n))},1/0)},u=function(t,e){return t.reduce(function(t,n){return Math.max(t,e(n))},-(1/0))},c=function(t,e){var n=a(t,2),r=n[0],i=n[1],o=a(e,2),s=o[0],p=o[1];return[r+s,i+p]},l=function(t,e){var n=a(t,2),r=n[0],i=n[1],o=a(e,2),s=o[0],p=o[1];return[r-s,i-p]},d=function(t,e){var n=a(e,2),r=n[0],i=n[1];return[t*r,t*i]},f=function(t){var e=a(t,2),n=e[0],r=e[1];return Math.sqrt(n*n+r*r)},h=function(t){return t.reduce(c,[0,0])},m=function(t){return d(1/t.length,t.reduce(c))},g=function(t,e){return d(t,[Math.sin(e),-Math.cos(e)])},v=function(t,e){var n=t||{};for(var a in n){var r=n[a];e[a]=r(e.index,e.item,e.group)}return e},b=function(t,e,n){for(var a=[],r=t;e>r;r++)a.push(r);return n&&a.push(e),a},y=function(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=Object.keys(t)[Symbol.iterator]();!(a=(o=s.next()).done);a=!0){var p=o.value,u=t[p];n.push(e(p,u))}}catch(c){r=!0,i=c}finally{ -try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n},_=function(t){return y(t,function(t,e){return[t,e]})},x=function(t){return t};n.sum=r,n.min=i,n.max=o,n.sumBy=s,n.minBy=p,n.maxBy=u,n.plus=c,n.minus=l,n.times=d,n.id=x,n.length=f,n.sumVectors=h,n.average=m,n.onCircle=g,n.enhance=v,n.range=b,n.mapObject=y,n.pairs=_,n["default"]={sum:r,min:i,max:o,sumBy:s,minBy:p,maxBy:u,plus:c,minus:l,times:d,id:x,length:f,sumVectors:h,average:m,onCircle:g,enhance:v,range:b,mapObject:y,pairs:_}},{}],336:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function i(t){var e=t||[],n=function(t,e){var n=t.slice(0,t.length);return n.push(e),n},r=function(t,e){var n=a(t,2),r=n[0],i=n[1],o=a(e,2),s=o[0],p=o[1];return r===s&&i===p},o=function(t,e){for(var n=t.length;"0"===t.charAt(n-1);)n-=1;return"."===t.charAt(n-1)&&(n-=1),t.substr(0,n)},s=function(t,e){var n=t.toFixed(e);return o(n)},p=function(t){var e=t.command,n=t.params,a=n.map(function(t){return s(t,6)});return e+" "+a.join(" ")},u=function(t,e){var n=t.command,r=t.params,i=a(e,2),o=i[0],s=i[1];switch(n){case"M":return[r[0],r[1]];case"L":return[r[0],r[1]];case"H":return[r[0],s];case"V":return[o,r[0]];case"Z":return null;case"C":return[r[4],r[5]];case"S":return[r[2],r[3]];case"Q":return[r[2],r[3]];case"T":return[r[0],r[1]];case"A":return[r[5],r[6]]}},c=function(t,e){return function(n){var a="object"==typeof n?t.map(function(t){return n[t]}):arguments;return e.apply(null,a)}},l=function(t){return i(n(e,t))};return{moveto:c(["x","y"],function(t,e){return l({command:"M",params:[t,e]})}),lineto:c(["x","y"],function(t,e){return l({command:"L",params:[t,e]})}),hlineto:c(["x"],function(t){return l({command:"H",params:[t]})}),vlineto:c(["y"],function(t){return l({command:"V",params:[t]})}),closepath:function(){return l({command:"Z",params:[]})},curveto:c(["x1","y1","x2","y2","x","y"],function(t,e,n,a,r,i){return l({command:"C",params:[t,e,n,a,r,i]})}),smoothcurveto:c(["x2","y2","x","y"],function(t,e,n,a){return l({command:"S",params:[t,e,n,a]})}),qcurveto:c(["x1","y1","x","y"],function(t,e,n,a){return l({command:"Q",params:[t,e,n,a]})}),smoothqcurveto:c(["x","y"],function(t,e){return l({command:"T",params:[t,e]})}),arc:c(["rx","ry","xrot","largeArcFlag","sweepFlag","x","y"],function(t,e,n,a,r,i,o){return l({command:"A",params:[t,e,n,a,r,i,o]})}),print:function(){return e.map(p).join(" ")},points:function(){var t=[],n=[0,0],a=!0,r=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(a=(o=s.next()).done);a=!0){var p=o.value,c=u(p,n);n=c,c&&t.push(c)}}catch(l){r=!0,i=l}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return t},instructions:function(){return e.slice(0,e.length)},connect:function(t){var e=this.points(),n=e[e.length-1],a=t.points()[0],o=t.instructions().slice(1);return r(n,a)||o.unshift({command:"L",params:a}),i(this.instructions().concat(o))}}};n["default"]=function(){return r()},e.exports=n["default"]},{}],337:[function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{"default":t}}function r(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];for(var r,i;i=n.shift();)for(r in i)Mo.call(i,r)&&(t[r]=i[r]);return t}function r(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];return n.forEach(function(e){for(var n in e)!e.hasOwnProperty(n)||n in t||(t[n]=e[n])}),t}function i(t){return"[object Array]"===Lo.call(t)}function o(t){return jo.test(Lo.call(t))}function s(t,e){return null===t&&null===e?!0:"object"==typeof t||"object"==typeof e?!1:t===e}function p(t){return!isNaN(parseFloat(t))&&isFinite(t)}function u(t){return t&&"[object Object]"===Lo.call(t)}function c(t,e){return t.replace(/%s/g,function(){return e.shift()})}function l(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];throw t=c(t,n),Error(t)}function d(){Mg.DEBUG&&Oo.apply(null,arguments)}function f(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];t=c(t,n),To(t,n)}function h(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];t=c(t,n),Do[t]||(Do[t]=!0,To(t,n))}function m(){Mg.DEBUG&&f.apply(null,arguments)}function g(){Mg.DEBUG&&h.apply(null,arguments)}function v(t,e,n){var a=b(t,e,n);return a?a[t][n]:null}function b(t,e,n){for(;e;){if(n in e[t])return e;if(e.isolated)return null;e=e.parent}}function y(t){return function(){return t}}function _(t){var e,n,a,r,i,o;for(e=t.split("."),(n=zo[e.length])||(n=x(e.length)),i=[],a=function(t,n){return t?"*":e[n]},r=n.length;r--;)o=n[r].map(a).join("."),i.hasOwnProperty(o)||(i.push(o),i[o]=!0);return i}function x(t){var e,n,a,r,i,o,s,p,u="";if(!zo[t]){for(a=[];u.length=i;i+=1){for(n=i.toString(2);n.lengtho;o++)p.push(r(n[o]));a[i]=p}zo[t]=a}return zo[t]}function w(t,e,n,a){var r=t[e];if(!r||!r.equalsOrStartsWith(a)&&r.equalsOrStartsWith(n))return t[e]=r?r.replace(n,a):a,!0}function k(t){var e=t.slice(2);return"i"===t[1]&&p(e)?+e:e}function S(t){return null==t?t:(Ko.hasOwnProperty(t)||(Ko[t]=new Qo(t)),Ko[t])}function E(t,e){function n(e,n){var a,r,o;return n.isRoot?o=[].concat(Object.keys(t.viewmodel.data),Object.keys(t.viewmodel.mappings),Object.keys(t.viewmodel.computations)):(a=t.viewmodel.wrapped[n.str],r=a?a.get():t.viewmodel.get(n),o=r?Object.keys(r):null),o&&o.forEach(function(t){"_ractive"===t&&i(r)||e.push(n.join(t))}),e}var a,r,o;for(a=e.str.split("."),o=[$o];r=a.shift();)"*"===r?o=o.reduce(n,[]):o[0]===$o?o[0]=S(r):o=o.map(C(r));return o}function C(t){return function(e){return e.join(t)}}function P(t){return t?t.replace(Wo,".$1"):""}function A(t,e,n){if("string"!=typeof e||!p(n))throw Error("Bad arguments");var a=void 0,r=void 0;if(/\*/.test(e))return r={},E(t,S(P(e))).forEach(function(e){var a=t.viewmodel.get(e);if(!p(a))throw Error(Xo);r[e.str]=a+n}),t.set(r);if(a=t.get(e),!p(a))throw Error(Xo);return t.set(e,+a+n)}function O(t,e){return Jo(this,t,void 0===e?1:+e)}function T(t){this.event=t,this.method="on"+t,this.deprecate=as[t]}function R(t,e){var n=t.indexOf(e);-1===n&&t.push(e)}function M(t,e){for(var n=0,a=t.length;a>n;n++)if(t[n]==e)return!0;return!1}function L(t,e){var n;if(!i(t)||!i(e))return!1;if(t.length!==e.length)return!1;for(n=t.length;n--;)if(t[n]!==e[n])return!1;return!0}function j(t){return"string"==typeof t?[t]:void 0===t?[]:t}function D(t){return t[t.length-1]}function N(t,e){var n=t.indexOf(e);-1!==n&&t.splice(n,1)}function F(t){for(var e=[],n=t.length;n--;)e[n]=t[n];return e}function I(t){setTimeout(t,0)}function B(t,e){return function(){for(var n;n=t.shift();)n(e)}}function q(t,e,n,a){var r;if(e===t)throw new TypeError("A promise's fulfillment handler cannot return the same promise");if(e instanceof rs)e.then(n,a);else if(!e||"object"!=typeof e&&"function"!=typeof e)n(e);else{try{r=e.then}catch(i){return void a(i)}if("function"==typeof r){var o,s,p;s=function(e){o||(o=!0,q(t,e,n,a))},p=function(t){o||(o=!0,a(t))};try{r.call(e,s,p)}catch(i){if(!o)return a(i),void(o=!0)}}else n(e)}}function U(t,e,n){var a;return e=P(e),"~/"===e.substr(0,2)?(a=S(e.substring(2)),z(t,a.firstKey,n)):"."===e[0]?(a=V(cs(n),e),a&&z(t,a.firstKey,n)):a=G(t,S(e),n),a}function V(t,e){var n;if(void 0!=t&&"string"!=typeof t&&(t=t.str),"."===e)return S(t);if(n=t?t.split("."):[],"../"===e.substr(0,3)){for(;"../"===e.substr(0,3);){if(!n.length)throw Error('Could not resolve reference - too many "../" prefixes');n.pop(),e=e.substring(3)}return n.push(e),S(n.join("."))}return S(t?t+e.replace(/^\.\//,"."):e.replace(/^\.\/?/,""))}function G(t,e,n,a){var r,i,o,s,p;if(e.isRoot)return e;for(i=e.firstKey;n;)if(r=n.context,n=n.parent,r&&(s=!0,o=t.viewmodel.get(r),o&&("object"==typeof o||"function"==typeof o)&&i in o))return r.join(e.str);return W(t.viewmodel,i)?e:t.parent&&!t.isolated&&(s=!0,n=t.component.parentFragment,i=S(i),p=G(t.parent,i,n,!0))?(t.viewmodel.map(i,{origin:t.parent.viewmodel,keypath:p}),e):a||s?void 0:(t.viewmodel.set(e,void 0),e)}function z(t,e){var n;!t.parent||t.isolated||W(t.viewmodel,e)||(e=S(e),(n=G(t.parent,e,t.component.parentFragment,!0))&&t.viewmodel.map(e,{origin:t.parent.viewmodel,keypath:n}))}function W(t,e){return""===e||e in t.data||e in t.computations||e in t.mappings}function H(t){t.teardown()}function K(t){t.unbind()}function Q(t){t.unrender()}function Y(t){t.cancel()}function $(t){t.detach()}function J(t){t.detachNodes()}function X(t){!t.ready||t.outros.length||t.outroChildren||(t.outrosComplete||(t.parent?t.parent.decrementOutros(t):t.detachNodes(),t.outrosComplete=!0),t.intros.length||t.totalChildren||("function"==typeof t.callback&&t.callback(),t.parent&&t.parent.decrementTotal()))}function Z(){for(var t,e,n;fs.ractives.length;)e=fs.ractives.pop(),n=e.viewmodel.applyChanges(),n&&vs.fire(e,n);for(tt(),t=0;t=0;i--)r=t._subs[e[i]],r&&(s=vt(t,r,n,a)&&s);if(Gs.dequeue(t),t.parent&&s){if(o&&t.component){var p=t.component.name+"."+e[e.length-1];e=S(p).wildcardMatches(),n&&(n.component=t)}gt(t.parent,e,n,a)}}function vt(t,e,n,a){var r=null,i=!1;n&&!n._noArg&&(a=[n].concat(a)),e=e.slice();for(var o=0,s=e.length;s>o;o+=1)e[o].apply(t,a)===!1&&(i=!0);return n&&!n._noArg&&i&&(r=n.original)&&(r.preventDefault&&r.preventDefault(),r.stopPropagation&&r.stopPropagation()),!i}function bt(t){var e={args:Array.prototype.slice.call(arguments,1)};zs(this,t,e)}function yt(t){var e;return t=S(P(t)),e=this.viewmodel.get(t,Ks),void 0===e&&this.parent&&!this.isolated&&ls(this,t.str,this.component.parentFragment)&&(e=this.viewmodel.get(t)),e}function _t(e,n){if(!this.fragment.rendered)throw Error("The API has changed - you must call `ractive.render(target[, anchor])` to render your Ractive instance. Once rendered you can use `ractive.insert()`.");if(e=t(e),n=t(n)||null,!e)throw Error("You must specify a valid target to insert into");e.insertBefore(this.detach(),n),this.el=e,(e.__ractive_instances__||(e.__ractive_instances__=[])).push(this),this.detached=null,xt(this)}function xt(t){Ys.fire(t),t.findAllComponents("*").forEach(function(t){xt(t.instance)})}function wt(t,e,n){var a,r;return t=S(P(t)),a=this.viewmodel.get(t),i(a)&&i(e)?(r=bs.start(this,!0),this.viewmodel.merge(t,a,e,n),bs.end(),r):this.set(t,e,n&&n.complete)}function kt(t,e){var n,a;return n=E(t,e),a={},n.forEach(function(e){a[e.str]=t.get(e.str)}),a}function St(t,e,n,a){var r,i,o;e=S(P(e)),a=a||cp,e.isPattern?(r=new pp(t,e,n,a),t.viewmodel.patternObservers.push(r),i=!0):r=new Zs(t,e,n,a),r.init(a.init),t.viewmodel.register(e,r,i?"patternObservers":"observers"),r.ready=!0;var s={cancel:function(){var n;o||(i?(n=t.viewmodel.patternObservers.indexOf(r),t.viewmodel.patternObservers.splice(n,1),t.viewmodel.unregister(e,r,"patternObservers")):t.viewmodel.unregister(e,r,"observers"),o=!0)}};return t._observers.push(s),s}function Et(t,e,n){var a,r,i,o;if(u(t)){n=e,r=t,a=[];for(t in r)r.hasOwnProperty(t)&&(e=r[t],a.push(this.observe(t,e,n)));return{cancel:function(){for(;a.length;)a.pop().cancel()}}}if("function"==typeof t)return n=e,e=t,t="",up(this,t,e,n);if(i=t.split(" "),1===i.length)return up(this,t,e,n);for(a=[],o=i.length;o--;)t=i[o],t&&a.push(up(this,t,e,n));return{cancel:function(){for(;a.length;)a.pop().cancel()}}}function Ct(t,e,n){var a=this.observe(t,function(){e.apply(this,arguments),a.cancel()},{init:!1,defer:n&&n.defer});return a}function Pt(t,e){var n,a=this;if(t)n=t.split(" ").map(fp).filter(hp),n.forEach(function(t){var n,r;(n=a._subs[t])&&(e?(r=n.indexOf(e),-1!==r&&n.splice(r,1)):a._subs[t]=[])});else for(t in this._subs)delete this._subs[t];return this}function At(t,e){var n,a,r,i=this;if("object"==typeof t){n=[];for(a in t)t.hasOwnProperty(a)&&n.push(this.on(a,t[a]));return{cancel:function(){for(var t;t=n.pop();)t.cancel()}}}return r=t.split(" ").map(fp).filter(hp),r.forEach(function(t){(i._subs[t]||(i._subs[t]=[])).push(e)}),{cancel:function(){return i.off(t,e)}}}function Ot(t,e){var n=this.on(t,function(){e.apply(this,arguments),n.cancel()});return n}function Tt(t,e,n){var a,r,i,o,s,p,u=[];if(a=Rt(t,e,n),!a)return null;for(r=t.length,s=a.length-2-a[1],i=Math.min(r,a[0]),o=i+a[1],p=0;i>p;p+=1)u.push(p);for(;o>p;p+=1)u.push(-1);for(;r>p;p+=1)u.push(p+s);return 0!==s?u.touchedFrom=a[0]:u.touchedFrom=t.length,u}function Rt(t,e,n){switch(e){case"splice":for(void 0!==n[0]&&n[0]<0&&(n[0]=t.length+Math.max(n[0],-t.length));n.length<2;)n.push(0);return n[1]=Math.min(n[1],t.length-n[0]),n;case"sort":case"reverse":return null;case"pop":return t.length?[t.length-1,1]:[0,0];case"push":return[t.length,0].concat(n);case"shift":return[0,t.length?1:0];case"unshift":return[0,0].concat(n)}}function Mt(e,n){var a,r,i,o=this;if(i=this.transitionsEnabled,this.noIntro&&(this.transitionsEnabled=!1),a=bs.start(this,!0),bs.scheduleTask(function(){return Rp.fire(o)},!0),this.fragment.rendered)throw Error("You cannot call ractive.render() on an already rendered instance! Call ractive.unrender() first");if(e=t(e)||this.el,n=t(n)||this.anchor,this.el=e,this.anchor=n,!this.append&&e){var s=e.__ractive_instances__;s&&s.length&&Lt(s),e.innerHTML=""}return this.cssId&&Op.apply(),e&&((r=e.__ractive_instances__)?r.push(this):e.__ractive_instances__=[this],n?e.insertBefore(this.fragment.render(),n):e.appendChild(this.fragment.render())),bs.end(),this.transitionsEnabled=i,a.then(function(){return Mp.fire(o)})}function Lt(t){t.splice(0,t.length).forEach(H)}function jt(t,e){for(var n=t.slice(),a=e.length;a--;)~n.indexOf(e[a])||n.push(e[a]);return n}function Dt(t,e){var n,a,r;return a='[data-ractive-css~="{'+e+'}"]',r=function(t){var e,n,r,i,o,s,p,u=[];for(e=[];n=Ip.exec(t);)e.push({str:n[0],base:n[1],modifiers:n[2]});for(i=e.map(Ft),p=e.length;p--;)s=i.slice(),r=e[p],s[p]=r.base+a+r.modifiers||"",o=i.slice(),o[p]=a+" "+o[p],u.push(s.join(" "),o.join(" "));return u.join(", ")},n=qp.test(t)?t.replace(qp,a):t.replace(Fp,"").replace(Np,function(t,e){var n,a;return Bp.test(e)?t:(n=e.split(",").map(Nt),a=n.map(r).join(", ")+" ",t.replace(e,a))})}function Nt(t){return t.trim?t.trim():t.replace(/^\s+/,"").replace(/\s+$/,"")}function Ft(t){return t.str}function It(t){t&&t.constructor!==Object&&("function"==typeof t||("object"!=typeof t?l("data option must be an object or a function, `"+t+"` is not valid"):m("If supplied, options.data should be a plain JavaScript object - using a non-POJO as the root object may work, but is discouraged")))}function Bt(t,e){It(e);var n="function"==typeof t,a="function"==typeof e;return e||n||(e={}),n||a?function(){var r=a?qt(e,this):e,i=n?qt(t,this):t;return Ut(r,i)}:Ut(e,t)}function qt(t,e){var n=t.call(e);if(n)return"object"!=typeof n&&l("Data function must return an object"),n.constructor!==Object&&g("Data function returned something other than a plain JavaScript object. This might work, but is strongly discouraged"),n}function Ut(t,e){if(t&&e){for(var n in e)n in t||(t[n]=e[n]);return t}return t||e}function Vt(t){var e=So(Qp);return e.parse=function(e,n){return Gt(e,n||t)},e}function Gt(t,e){if(!Hp)throw Error("Missing Ractive.parse - cannot parse template. Either preparse or use the version that includes the parser");return Hp(t,e||this.options)}function zt(t,e){var n;if(!Xi){if(e&&e.noThrow)return;throw Error("Cannot retrieve template #"+t+" as Ractive is not running in a browser.")}if(Wt(t)&&(t=t.substring(1)),!(n=document.getElementById(t))){if(e&&e.noThrow)return;throw Error("Could not find template element with id #"+t)}if("SCRIPT"!==n.tagName.toUpperCase()){if(e&&e.noThrow)return;throw Error("Template element with id #"+t+", must be a