From 60920fb44998d96608e4e73553106714e917d0cc Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sat, 6 Apr 2019 20:05:10 -0500 Subject: [PATCH 001/115] 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 zx!r*hp#dZp?3RTR<2`8JbXNUzSSYzGbLmNc)#xy*xLH5Ao=k^2hV%sN=pYvDw7L|= z;oLj_qTV}#<^)>zNt6hFho?N)pCx{hsJO-mT3h0ev+bL%_*V~J`mrG@Q3rMn-jW~D zRAgF7c&$-3Ik(57r+n~0lv+$OU^HMRnAc1Ri4T9a#GY?77r+ADmay=DN4R{BdkqnE zU}Y=>`h=R>GS7nxYw?(UdV1}j{nGTE-oNX~Y!yKzALg4Ajt4(x(k7@8C8SEVZ7#&` z#F3e`R3*}2aY;($1YcMfG4$_}6bDR71>1YfrUc_Rf^PU8CffxQyc(^3o?(r5U@Qxr zjNDYF{(DX`{~H(lI15(-N#M-s>a2E1bAa zM|zlPh8YKsr22RuaVxursj1(Ojf~OwKi^#sy4iJ!O*8_ymKE2f=K3D9`hm*EK4N#M zo$4DGYi7u=!wyuKEsLLHM^O70419@q!w7oX9=Iac{=u2P27mZQvJW$EHywee_mksG zp(VKXVJB;TO*F-rgi0ty+Y)!VrM&KQ$%-2BfY$2P8j$;qh$H6X41eE{9H@Rl%;nYo z^VE8QO?XIkr}xyDLLx9Q1& zl6h4aLx-E-D#EU!+*TytK6^a`x=8N%jW5+gsXYUl5+(&G@6H!um4=>;JSO9mSPE;l zKACFt9cS|6i`^%>)Oe(3Nj2PbpngqBzfqBuHPyTU5hfR6wO@F+uWR$gr>1LsSd7`r zA;l~qa(ahU9xv8ODaS-Ac2j<@X^&WqA^N|K!Ozc;=&BG3Y`dKziTBd4 z!2lVBt%#VG54coLZMYevnLLfa&l`L-dCLFUR87bJb=>gh<-pB%-UghWL@pU8%M;zVTnQ|$qzN_ zUBf&}^q|$|nCO#@xn{mxd^o?!4Y&BoKOQktcl~#Tf7c1JJv;3hp31bE+!57Nug?W9T z{OZ9F5Bw~}OeVm$gHPucIHNvVKB^9ai>kHU?dRFWpVmOl>iXU)$ArQ_(Baf>YCV8$QbJSx$XvJ>}r zIB@FE;b5+!NaRhLfkNL~p&}c4ub2q{pY6rar@RK~DYL!t8aBd~nCL4)i&!`_M&LbKhyX zIP3|ReoCNr_^S2f^T-NCOy)0E?S(?Q-p_|O4;`%9Bp|<%+EeX~jDRn8+%-snz!TuH z^m8qLc4+VihDK*LJ)QTL36N9_Y=QCkbvT5Ix-DdhDq)%p3_vrF0ZK_p|WeMod zOSmc#Gw#k$cHI3QU#cPeW}NzHAOnd~&0Z4}ZPGZF!{K33gugdg3wqUQ_7p*LBNn2d zDmFGp9c%7Rb=;WTo;;XafqVMQz1NS4+gX~Tb3M>68(`SIhWB%@j5cYCCN%80ll8T1 ztpsqu6E+kYgqV4{xH10zB@->y{@$(lV#Br;m$^2JbNtTdZF;4Jl#(KtI*7Dv2Z_En zCZ$`A*(MzOjcKic2I;oy<+YAmBTinU)DNF+pPuWqO#hMy@O-W&=#oBqkzX?4plF9N z&lH<%krV+O_|xHCts7q+l{pU>=r>rbA>_9MuK^)?pKgw_W#*9C_p675i=|(zb44pZ zKD$a%*J;N&W6DawJ@FttO9j$`jAOdjqTb*={822eSotweae8xQ{B5RfR&kK#ysnco z#agKv3X@nxpx(+^@emZ28+^uHKcfKUiJJU~U8KNDpCOCOj;@{^CofcW&YzfHvgTg3 zi0LzkB97bU2r(83Ody31g6s%~8)N!Dmr89QeH1cSvE=mE!%euE-#EAW>wxV}k0)w0 z4%U3*LJA^p(3wjpahvN^wR-!`e%Kc$GzYTea4IM#Hy7!2%L=-o`tkW&d(ZmRSmQz) z6K42@ys)tEYJ<*buFPhF{f~KD+@c8zF5*9+Uf{N{QC~~}hBpT3-wDJDW=|8MPvxtj zhJUX;S(JBIK+i;7B(H+HD(w=erV$21bCwZ^xiWEpf2Eo_x28Wa5hCvIWv<`isS{gN z54qWe%m^ev%Vtlpef3#?4P7xtiY9?zk555eJ!Dn0-iGlqXw+T^Gd|D2wQujb*W5d9 zZJh;(I!qcqMQw~PrpxsL<5pylKD_1LdH~mT=%SBcBp6t`D;RD(CMzwoX-b3wj{&r~ zmIo0Y8v6zh7lWqR4=-vN4&)&bpN*D@u|9l#52!puBxZokaNkKNKiyoSX4#J0U_pAn z7*K32{rA@(xEw=tWL{v|a1EsjYw(*5A-e|Yw%Gm)@9s6aCM&nC9965Qz0XI|poUK^ z&+B8dMW#PeT_p-@7r#xE?IML}yOYGhMC=-r=Bc6{L2@Es_`hwRj{w*>OJY@ETeRbT zrU(_vN_UqawBsRdZ+}Ozf`b{*%1Zd)2ro4n$`?SKa0+L%KozAJ&|Yq(nLhDZh>iF$ zjD^&F1T9P}F1~LSNwxO3@ZTh7+O1#&v1%wdCrb3(U%W4WZrkVQh?xx=S0m?$-TUb`=eTi~)wI-Olwp;{`4tJsh>Ms~$MMG_A?Ur#=8VF?%>5JEhk-&a?!kQ6 zyKMU(zc0Zb19C{mAv8GiyFhIME)oTZI!7)eE|d?z7Tmyj^Fmc9dix4u*Czn{H?i_3 zaZn#Qp&Xd5ovZjUBnwYO;8_ABcp}n3&qX@i9OK4LZ9+_11#1q$cQX5|_%y=+{GGRw zIymzQ5xirG?xPQyoT1)gFkT~Pqe)fzF&|Ot)v*=rG;c_NO7Ir7b>`4TsiNdxZYtq$ zSdy3D8<4%rL^zRQLhq(IGfSFex2nF0tx1G*|2@5nfa5~F6MFYl{*Dj< z>4*hufa-!{b;F6gP)uI!Jt0a77@kJSxS;esacmP`Zpm>{2XH$n{Lrsn`mCNT zC1lz<@0F6gmeGu&6mG;Lic}jxfCd1Si}fuLY{*-)`X$>fd`{wfOt&ylt zkshJAbnn=K-_@2dXJ;d9ppav-d3q)WmEGRcwU6@5nQ{8x{Fd8-z!_Qab%euXpBaeN z4u8s#Uo9AmN_e~@!wjdqe&qdJ{WUBYaHm9v;unk>pTAV^8Xn$2x+3tak$b+Uhe@;p z@XSR9ALJD?Wi32v5{2;2JZgV~!-rBej~fvlLT=4-Q+LxC0K+h+pIS_KpO#BOWWW~# z;vVt}HcPRL7JxcUo+n4j2w~9P-;} z{+;i0{ta1NzRu=3m)Jf8)aA(I+hcJ_mL#`TC3FlX=E+XD8{JU{?)0(h+$$4mRrS&~ z>A>iC3}79;K@-LbcH+|M`zH~xd(2SUq`|Vg6*!7Ki8*-SnDB-Qm1jW8?WGK0^J1iE zorlRRxL#|d%saDHdOzF%9P`F3?`YLYdnw(@C#LC863Ri@S5l_Y7hb?9)w5mdV zQ44qM0@ueDpuhG?5^!bW3OhTY!w;rQTc;oD!JjGMkOS zsk1jhMJrgc*1m5{NbNcO1=?zBisstD(?=Ci^;_iXk%{ z!kE72$#l8LUJG`i-t7|6ueF}_ef!*LnTkq)Fr0qLYqxu70PcNdkbX$&-Fb=L?*C+7 z_%|$be#nX*$KdaeIiQ=gB<^2>>-;%6s*q1Vzds$1mKsBvZrvAPAiCIv;$p69fZ%Se z0MIF$+s*<^<*CJCbF1Fe!P9fK&f+YbLBrDizQ4a!^JgrrB|A@lJS^xoJ1LZzD|1z~ zutg2d`o zp9zKy<4g@GDUrh=g>hNjdYmT3y7%YjDyyOizIp+?3O=(2e<$yE#lHR+y~y9)4Gd|| zQ)0eN#DEG3yG*zZScpOaYf)e>Fz*wy-Ta=kf{;a-!5S5@{C0632URXE9cVm8{D6tz zuwv;KP&~rB*X>4nuI%KUH_ZP2u%x)^SXU59N7uvs57ReB+`%k%V3ruM+xo*VNrS*l z+hO>!{^G$pY;L=LXf=O&l-Rvqa{q4F^$mCb0HosTVJ>=8bz4*{clsw^E;c`A_$)Ap zPrvSLGl$%iJl|`Tl&tWSxvG8QzOVSQvwt^Y^bX~(`=D7HT4?O73#LGq%=fDs<&gDU zY8n)qpfVZ}m`BmM>SD;Jf)y+7^h`x4%2}&U7w(%aq_Xa_A>hlGVRfQ8z-<#;Yr&*3 zeKp(7(5Qjm@|PD4%Dz^)TU9r;1<8gc}5jlwBAz1n+>(B z6@L2`+uA(hDc6{1m4(SC+1_`>?3>y^E%E=>0_ZI6^gF$}1aa0vZF!dN0a;;b^`hp= zLwBeCB=>K(gF6tcBNOs!lGtN zy^ohF(-{eQ&7r4FR(t!;1(%2PTag@#?d9xOu_SGTrypFV9m6KRdyXd)B7c z*BAgES5>+K94XdXAZGp8_zS>f!0P%SxWoaU^ZwG)@!8i-pfaR^nKm!(KTh@qb!AI_ z;GsAMf*fA^sDaZ*b?&xK0lZeEuaqb>Dsb}+3pU4Dt8>kYha7fI3#E$K5!i6$2qlie ziNJbj?^Pgx`OkIaR-UTI)8FltuK4t^6X?yRa4|6(VLJ4lb5N7#fXQJ`R4=T76qCY) z?{R54Z6 z_B28MB*DAb%Zfp=+vDJ}8G#ch)_}jxBCNT``9}Hs6(+XRYu%fv%1UNN_HcMQEkW|P zlKu(dQ-HGn7+TFnw}t^YHJ)St{m)$543v}OP0kfmbOoW@b#l|a)ne}csajGP3+Mto z3B#I7pY@=phuZBqcR}(Zz?O~`l4r+XV_sc4It$ni2X}`xeq}W|e365bT1q~g%94LW z-SIR0jX>`f&z_d)+>nkqz32C)=K2FSJ;9$e(FZ+S>vY~U0Jl~i(14mA`r}e|z61bo z#_EmE2K_hte~EKHB(>6X4&z*GE34gvHKUUzAbE)ZsjiV}CQrn~P)wRU2Wq~O8mGuQG7%_eNRfpq+{gFQt zvY>3+(+lT>9(e*MBtLJc`E}-5XM8{?XYks<;-Ts%U)l5Hf5Z}U&({DV3K>tKyomrE zFXOgN=dUDjHhJo@bevB)X1>Z#cllz2!e0AAAup^K192OQD#B0n?zqF_K11?&afsD5 z(QEN>IF0<*9)e1{VGl7q;y|lxc#we%)(fvy9>xmdGV^xkVBsR=La(+a2^gNn;MQ!7 zE~Cv{9hUIg`?p*BUsodgpz>h=xA)^ECZA-Rbu;{bOuYqE98J>(x>(TQ?hxGFEm&|1 z1h?Ss?ry;$K!Uq#upo;BcXxMpw>!Mw{m;E~&a%tw?DTY5S3OnTeXM?ajrxtTGz#RR z0rb_7&BXbvz7+Ik%OcepobOZkcr^wk_@gW@kNwBEpuZ*yB_{qMS$>EI$qlpLjlrE` zF(N&iG~;*{I0iTrsP-XQ#MtDI=VU1MbHF)fG-91;zLnQ|S+KH){r(bP_MnZUGxxMn zx9=9LxxO~Y{o**t_xtb{q>9JbCb4wlTCZ4=$EGFtNq7EWf1hPHL^SACa2)3QYkAEQ ztzXuNDSHN+2|}S&>mK#K_}2P`KM*K=ZF5%mx@_O;eTy%rE<2sAtUdar`x_ z!NoK-Sm#Zvdh)G)3)yOvhxWa)aPo6OidJkjZ#ZF}PSSh$sD*R;b1Nz;{?yea(s^wC z$*r$X9!+D11x`UVjARND$o^zdzD6z`_=*hcV;SyCa`s2-V6nceb8asyHt#pr=c5Z2vbI6v zF1kecF+#ye5?fEi0BYhdvF>ALN|EvGrt6pbFET?p#W8e{)jbETEjm>5z? zn*mDdKTf77y$;g58!z(=b7QWCsi>(*j0s%H9kgp#eDglc1T9az zXh)0s-p|`VZ&C0<9NgS_HOluY<;BJ0a?t3aNK}af@F4KZi5;uYqw}BodP9I3AphCf zZycPQ5TMhxJ3UaxUzeloZ#?(e-Jfxobmqs78fPqfgl|t_d~Vcwj0)v{OWNVGief#f zsj2-bEsZ=)6(j&7eW)=%)p@3h2Pw@5BGxU)y^|tUjtVzg@|_m*%}&&>vkN69D?8YT zF#hla+~24ESfo}v18r>rP3t$JYG+v~0OD){S~G`(CNIt45Ni#7R?k}Su4BZ{fHueZ@IEHM zUe%uWkXZUb9AR~Ygb9wlFNuDMXX1GZ<{?z!tbO(1g;2UgHJvbugPTW>5U;MU$KvGV z99{}j&XdfksZmDP%*e0ttJ~ts@f5c^VgnM?@*CGOe`!!Z1u$k;rQv7 zS0u-zosaTsMsJ0pecD%V7eJHclLdilG?2XRPLl;}<({!}H*Xcnl3(55e2<@B?=E(K z+ub4xTUmHb=1c!+Z6yTdr#DtsRtAQX%zDD0imrSs!vY@o9x!T9l^#uMg2HcgYZL5y z)4P-)tT&$~yXB@ih-|<~1oAGwK>*0PLbF!YbKw1L*)_U}uC=}Oc?KZqV2VwHd^57l zz$*|DuNd4~(Y}1m8o0ioS5qqkFov?r8e!bDZ9@|++H^*(40USGh0xb}Z^^XG-|#cm zeL~iF3`z9*!W#YRElMoX6zHEp#(;XJD!q98X=um=#;EA%XmeX^$M`>}e#7k(=Er$S z3Gd{ttHS_>q@M!u00*8dt*p$Jz0TT-OG-LxO@=5gU_}s=&1Ba0Cz2TFY!`#?)GN9W zfe9=Cf$i-cVU~aU23TS11btz8#nNlrL}>Nw!AiJC3=wVGc)7diD_HvnPzI3S=c%KR zm7|`Zw^!~*$=K0Dyb5}z-h@$f4mIyk4TezGrN*s}04NpQxD$1_jSF)gxj{Pmf#no^ zs@Tx(V3aSGCQk2!2l^0Dw%>k6 zo6yV?iJqmx?u<~qC7!9S04%%d@V?tf)X*SXJ8a2w-%?xfc&G^JtE0t10i!}u&HnhoZT94e9fpy_N_CqYpk|3}%M&N{g zlQP)!k+Qr1M=ILKnJw?9ild1l%E0tf(T#g;8k%uaK16kMY?w2uJaOsFFj>;1_}8x( zz_4;qs#bO?Xf}BdJ=E3$m=cHWezbSq{{8!?Q*j)N%bMF|S^w<^;5DxTEW~*?ICraF zH6B-{sUy1=6Xw_TdzoIR@9f1X7YXTvwxqiq{w0w`<1jU2HaGDyMwqXd=|&cZV zaQ5xqw;n6mlpWO3c7Ou{t^LUQJ~ATO|KPXgOOU8u^%H@-{ouktl_3=DdxS^9)Q0IF zM}Ln|h6Q*Tn;m#&24m%#&cF-LM-Q2hM}%(82dApFh5%5op2nxg+9s#PYM_iJ1f9>u z#s)5|n*|rifY-gn?Tl%EE!mtyMgxWk!_V;pMpsb+&GLZ|kx}oDoRnYioVZB$PuzzF zEV%Y1Y2!U6Ce99;c)HUo85dX5$xs?sj%qWA^`Lgo=le)o10X?p@X7y%v*l%FNGzvB zPc&1|x~~4i)8i@MC-k)GBj?Ik3Usg&ezdT)10QoWs^bQZrt zO{B(G5BFWwwKi#>Hy>*O{_*$fbhe*Pg%mLlPn`4fZ=3c?TyvKOT@tSnYecd1LKp>j znw7@~WI-Xy3k}wLQ#&@8xd=RS7badWtsjNThx<7gD!DGxMl-O&V<}AdT@;PMl(`{eE8(3FdiQt(S3Y;KGZFEn|=K{ z^^xE8xXHIC5^JpV;G-M`x)cSvz9I#>ymo_iz=$an2onc~{b}dqv#^LMkRWpY&~B_?D&y&yX5x@qu=E^fpPz; z-X2&pCLFt$=|>Dg^)7(-dzodQ_nrY(a4?G@=?grn#6T8sq&PxlA?47}1L~#h?ruIF z9?*-!shr->1@EyEB6r(1ZUvzTb(jR?JQO8xHtg!t>$a#!y{aN2#*zpV^F!P>*us<^ zRl6L0Yg#GVs=L^#v0D>L?^`Ky-jksOxd~VMy{!O2-Q6RU?^}VjNz{}_-%bvyjRRk- zpJ@%@aZHb?(W#F2U*8x02>0hMR_q~D@7o2U7397I=IdKu;aDrVMPd8(zn1HtLCi4l z7ko4oos(!P#!T1cd+H{4KwL96!b2gvv0x;3Nm4AGH5DJumS zlnTJaKR;Y;as7_IzP&~NJt7Inib0JAI^gBm18%k6^?DEr;J=?NG&FEcPfw5QNRVP= zFpQlYmR0o<*tOOG_IQ({ZXtdBB+Kvh;loeFdEn^osSyv zoW_KiBfy`&#H?qPsY3-TZJ&Fk4Ww9*h4d1%_x2Dsb9fOq(E+*OMd957m(g5={&|bo+%o8&uk3 z$>7HjTGnl7V=F|a=n?SS&#ZAPCB9#Htx*fCLG!fWt~;NS`)d_#H$d7ovfEZ3^=!-aKgYoD~u817j>qCR*s zHK`Y=*zM(6=<;Ze?Iqyunbrq8;QG$5tZD2v^ZmS-CMM;Yo5y2&ZR!l}lB9x%4#SrmVt^uBs z(?d*<2g-X$=}ji{t`BANM?*!E`_VU$|H=6V#;qF-R(D00+82M6 zhcy;Qid0w@RJiPvs0J)7tj+^xa!drnwRRtX^b^Zs9q+JMpE?SmJ0|LDTphwX03e>8 zYFLjPudX%%$=wL#yo=p-@y#0mPZQ-K3|INvz>m$(vufH>(sPgwBwmh3cXFQ=V6lCy zYrL7wxy}Im2j(fDBbhjF!j_ILe=7YPYm zz>IxU^?=VY$dSVu;As3Y<}-kOPThJC9HwM81MU$6gdw6^dI8BLv)*kk|JYu4E0SP+q*{l*p#A!U zZJ3d2V>hd1{nSIjsYdyqcdr!4S?Z+?T)%*|86y6}bSa_tuNF?2A@6^u#ffc*Z~hd_ z89xJE*YjksJ2l&zt{K;Vvun_55#q%CJN6N}_g0deok~29`E|vhsW~Ce%?s&6EIqL> zqcw-GDmJno3mrNyW4hFG?W#el3G`<3;#f+~Ywhe(&wjBql@qEJ<8YGD6!i~W)iglb zYmEocEjGAr&_t1vCVfCc(A62Jn?R5T0+V3)Ja|Iv{J`fNgfqq4SRcbb`8MrvyU%+ zpmQn^fZMx4i7=kS+TKMiL;;@t!UXovP|D*=3IMUcW78k;V#Pase@}U=U5l(kfQCTp zh?}=`QX5%EUm*QHkY&LZyj`Zsk;uhJRuuJZ`B^*g5Cf5M%)4lxx)W}(%`4KM5g=9+ z4BeC#Bw3T>N>7II4@E^C@R(2eF;DFYPn$nH42hp(S!1VLi*|T$1)3_!Y%N6no+%a&S)LJUZ$YwG!tqI>%@=* zi>7{9r`7zkYK-L6M8_-)jh@A|!A!mL9*-RUEMa_@&ig}3rz^3i2+#}tYGwHX^PZ!UYnd|-`n?80ndxK3~PK#ssEmhFFerN~VmttAH^ z5~}KMdZqbI;@O1mlw%Nz(DuI?@b%T9o`p=!I`i?P9+be(mr329{YZUxALbm}*~0~O zpAXWD`^8?4UjSS$rCgUDYvWlmr*WfIDSUWnQg77>B5J0?>=ztw(Xg@S31gAdgG7Kx zP9gliCFDM4oe6WBs*%u|r1qPi-3~d}x9lH}^cJSXw$;il;|@GhaBxue=L!=^O8&*F zn5&iv)T@pOC&Q_Jt)5YlVZ-{P<^6j98kV-bj?KYQ9@Wvh0kaT{xwPP^cV2+*$H!NM zK8%RFGh333Q93I(x!Nus2uKw(CQx855;&PaT7dCmVt+m&XI!S@IE%)xQSK4KwQq}h z*j*7O>9imPm5&nh@Gkaqju|8^J3cD_XpeKj0%~hT6{526Uqtv1k!QOu;6GeFe0FBd z!wUqIYv8=s+FS*79!=vaH9#BH%o%+J4C4kK}G08h4h?V z?3c{5-Y`1$X7zHDnARfFH3Ock%s`nr$}CEX8Lt9|TANE9#o5HuK?ct&6U3pat+Aor zP9ZyM!jjfN5!<;ectBPy8doY8%!Dg!G&61WUf|Qrn1B1YFlPfmd!)JUONP^@{SB!c z$I1_%5<|ffA^}*-915 zikX%WLBuor;JWY{Ey3rjb4V67eUXRPlG&k&o?HO>|6qOqGYw;aoeqbUdLUk`6`lQc zr1|%#*T2~v&#LV!grO=<0%kR?D|~i{at=QR#fG_m!d0T%MYMw4q<2RtYj2&7$O~5W zeqWLV#x5WH7N*@VH9!BsPXu~9IuP^!Rrm4~{vL6@q7}Ny(2^j9(#TUP{9gs}dkt}7 z$^Gxqk!0`MoHWpMQRV+?hLy7pOxcqWV-q#Q)6HpC)>NOc7G-&+zAK;bT2X-@RuDCm z1PI zXdrcn4a~51xC>e9hL>aaO=`b=A$9xH{gq%qG%poQkPjy4mwXaCn-Gz!Mzn zksUhNEMR|s-RxD7w^keQT6o+3S~TpF8|ypcp4a$;o23&xqs{Ou!r1lAqvdj0r1^g6 zdKD>DC5Ge-BHf~9T-C$>`B5(TdoQGYNaFbZa+JeSFnn=osi?Fxd}(Rvx@*gZYs>q& zRDL(6-dGZ5qV86It7F&Fu;BV!y)EItfyJ_sou&vV%-4ss0@40v>+zYpIU}<8mQNws zd1arctc-JGB07QRw&;73&Y7E-5t(4c+sAc39{mYiMhIMHa53p9Ulkw0NA&@RIYS!f zO@Q_qo0+l5JPYm*ioosd8{y&_7)ZfoB_u-fp6u>n_>SSSA5Y?b-N7#h@ z77Hl5wpC*0iOJ)N&wtQ~gqpvlvdFe6QMAet_9vvq{00;qbNsA&=2O$_Gw1qk0mi`= zq8o;P#Iw`(!2i_()UNP^$Kyujf&3*9TU6W561b~~G@Rc)I0Dk(%rFSt%ac13WUu|C zoc#!C@sj(*y+0=WB}qI`$Kc|rK)YxMH(5YmD^zsB!zlmFLO#jVh2-)hjv3u{Z4K*+ zWx?<64Tz^JvgLzs^qhl#ekIHk$RW{%1hb>R^V_q#KOXmgQ6OXh$g{a5KQc0M-I)&! zA*33>1_Ye0i~q<26L*vpAv%wCOE8jBNTIKA0;F>m+{;)f+W7JQ-;Bp~ui=%AcBtfGmd3oM z(MBVzM*RqC3T-Xp0CgFU4D0(yVoebS8^ z+dJBe7I2aB+!Jsip7uCgzu?HJtWmf|Kp^j(k~7ye68akJpeMosff}Nx`>6y+Y-~v& z8kI08&?Fo0oCDHj;dw>MGQdggH`N*?7# zUEPiVU&%&W`pK26zZwWSXRqv9umL^n4CEg|lo%k>0ZX!M4>b?rEcb!V?V2D8KOfyZ zf%F4MeHP=x>YM8MYID$xF7A?EOwb7dtLvx~;Xf(q`{mcHV4>GH$G7JTSN~|>rj7fr zAM<691lMMT(274G=OP*@BO7p!1OKe9*fChf$z)3h;*L-IHW+)oCI3tE&Vnm=`Iq%G zgxrxe#YRI7k$D}kz|&EBm8y^|`Wq<+tj%zpouecFvX+-{s25fwDFaevK&EQYwE%H* zl;B!iPed&&Xn}x3NlPnIx5X6#lqq0vO5K4luvyE-XF80l_4R8|PhFqE^Zms;T-Scz z!#pWF(!3X#I%4|%y@j&VFz<#%;V{Nt$yGKoap%_TJe&bRNzfNyHmJTg2YPmVc4d6F zEqp?zh-d(xHAWu@B@PLNJCbaRFT0sn_$spB34Mn*{9$RV^bDumbNk@18Fv4_o=Q&kiacr(4j;DN=gEZhbNQ{u3HBF%U!| zYytv!?J{ddLO(vZ9{2aPl0*I9-T&O1bj+`w=|ks5+&?|Y4GK8GmbI{8e}RczN{83@ zQyulAN10ZindAZ%6oqX|`rqqxO+?8jVEYEc6FKIe%_ix8O(`(hz8izY{iIo9} zVz7_L1vQvN=8RqN&Y&+JVWLR853ET23Nmowk=qP5UcQu2NRNZaWmQ8q(1Pd}ZFm~RDaI(Pkr0}j4`4qUMPZ&liV>Wqc<-X+S2`z8@c=43K1nHE5?0#H`_$IAE#m0 zjHKgT;CIhZ1*}2D7$2Gt+GEttJMU5nPWhMZy9FN-k|gLBxGGQg|F-!dll$wta4I?9 zcZ3zs)Mi!QOThnpYpOf){8bh%7ec{Q8bDp@=A=#a-P(({ce9uVnVOC`i@uRLLkb5N z2j3YAv<1;#W2@+gqWvUEXuTFLfyf=#BWpHUL(@0Ui<8fwGSJ|_$xlrZTB)U_FyX6; zUT7X>c{_y#rs=#SvD4>^-z6tc{`a|JK>Slu?yPaHKkB2rT2i(uhd*%ss`bhZ|z?S4Y0+DtkXqw)xSPGxU)rFt#Yu1NCBDuXlD6LIy{ zBku6XK~2L!i02Rd?0vHK)=RNQCik1`BZ$Rjkwfm1sH@%Q$q}!}^0{sg_x5B77T~Yb zC@*Y)2nZN}GY^~3&a=`2QV6FD)F zn6D}4n=CfK_r`AOwmU$X0fQMjkUPFyvxWRQ>F-8mE3_?PyBOy8^UkmWrApOG0dDp) zT;_aW`_&H=J?o-!p^9`eXg|IG*J4a%{#<=tS->k@axta^ImUKSL`S)qtzmAJE>a7m z=)T*Eq(fLl0xEu#WARLa2}8{0`d?#(J77Hfyg!@<5-I;v@gcLAIHG1Icij?4vyw*!RtYtlm6_v^uq;(+ z$D(nB1(HH#6LG%iGd23s&XmlP6l=!9tj{$jPWv_{MSE`osQvxjfx)KY0Ai{GocsSW zM)KG$Zi#bwNfhYt-bW6+EV8yl%kf!soOrt|xDXrA`c}aiI z!wU{dK|L1{-4%3NB>J531WI**VvO#g8%&qLed8{v^ICX6sl;aguJuEKK!cS~8;Y#W zBxB^P^#w7a;G-*!9O9AOeN5;qj@8!VDDtm=zV2D<(xnG%H@lU{dH_Y-m~DR3TUE!OGa&rKII3o9`kzu3lL-> z^5BEkPf?+dbaxnmRxy8et82dUIEXPw9e~Db5M*nhPGwk`(b~7&ud4MmnZB_`xh@m& zHw~Hr4r4Byd}IgUG$#^+2Z``Pve~gZ5xe3o)?e$_3& zraMu=Z53mSQ)5UPDKmxe0$u(D0Ww+&IX?;r(S2`z*U&gqP*tp{{WjVivW2zb5z--D zci>{zFe^gN)Xe&cxbl)$(`F=U5HKrLg1$2?>whLJugZkk?sPnc7+*PgY>_L}o>SQ)dWm6}hnqrG|_^Zf#`KFnL6>T*E{ zj1*lsZ;h`T?-n1F4Pd$;`}GcpOU|XxyL~_r-)QqXr$_!jb>MU%pyL6KGuc5rTuqaBYPaq7ba2 zp~D0%-WQsNYVrG*T9pj1b8Fa`DXRAup9pBsXCyW|Qf6qU3TTBHZB&1XNAzXBSrjF` zKe^MA)Y?hCxtK8ub9XFD2nNmeiH+{@Uf1_8o53AY7K`6lG_eBu7g|Q6&cU<0PLbv7 z1hV>fb=p$*`c^e=88|mLH}@_rXlsvQuy@N&v8ri=$YE&6VX%TY{8^JiKpD^Ek;~Dn zv`4IPX^hcQgH7t|q?P-t88{CRocL3nLo&DsPic+t&9P6xjDjQb{zbIR7qHckp`K)f zT60nq6O`CGaIW`I3E$<;(YeU8Se)seh-)T!@E%RSqa@gD_!yn`5T^S~6yrYXk%tR& zKx&YCiX4egP=^#zqL`?pm(JzI!$%YttWqjJyTBRBuEnT{^p&>$BO%3PadzfZ;$9Z* zPl;fvSr@JDMq!}sT_&;xC0-$j71c7k-@Dr9*h#garrB(~Y^O)@rusB$95B>3l(dSY z`lTYRqr-WG+5%oI6NRf3v5c$m^zlT0@IMR#5C7bIE1a&MuyZ!hi`=`EKoZ*D5D1a^ zuy?-O{-*i+FA%X4*-gYn(GZP*To4V;GIZ^lNzdRdfEyt*fK#WZiP4qU#Rr6ux=@!xAr`zwa5v`&nUucYy%pA_3HXYSxI#C0YMOOt<^n1HWcuD*TZzZLg{l z&m~$`Nnah-MZAv-5>7rlVAprG;;&>ST@&&Pv}S^LnLq5J8E*t|6_27(-ZVlH7>8{Q znf}@ar;CaF}|yeciXa$A-Nu(e^P+y3@D!%s3!y;&;eGC}Z-!9wmuE#G)+lL|BAxO-xp!GVVf$LAZFGKk}fa}rMAG?Dn zK{%sclHFvR7gA6!JIENP*SOSVi|27CyiDoLVq!+^yU^V=)&mO$q| zaDpSmni?8yd!2W!vbU>HAO}-qIfdPt640K6mmE#C6!!1zPk889PFumtBCMEYk|;vW zKD2!(VLfS5|GboGIVygNb`aTGd`R@}WnF({)x54osLNugSPlpQ-3tY`6Seyq8giO_ z+3;GW^g4s^=V6DXa$GHbj@KGwSe6H#d}g!v)>z7UqKm2P)+9%R)AM}bM3&c=hi+7y zd^t+u4pF|W0M*{BnIlMAXbac=C6&fgBV<7_vv@W7zvoA(cFNFO?;k@-#~N}HS1 zMe7NX5&HT{P|!PEGFoJ;I1toZWk#k4iuCXkcy51wsBMEyuz}%!W*`j;v8cNcDLka? z*Y7s?&b;z6VvHovYG4E)w;N%Tu2j$qT+JyL!I=I6C8DKQqGSU{x8mg}{3}IJs9K%R z)pU{6D1htb+Cl_CUn9k29L$RVDEW>~=4&e8%G70?8{u0&KOl-4y2f};PuYA&{x$8b z3D@i>Jd=SRv$M$>0CVo)I+EnEm2b}x=Z4Ey;iH&A(-F)HXGI|WHeRP?glZ-ku%5ia zm5m#WvwEZYQt}Y|9f~BFY8bJHkfY>*jq2{H>C9l2hnDc; zHc_a86}UUPAeo;19Nw04hMoHV9vMI5g1kj6l) zM@mpk<3Y9D`L8DnvSi~LldBi#C|uQ-P?+C;kEJQF$47!{)!jXqLR)FY^XK~*|J7y- z@$>d~=H&Y!HE7!CPm*v*ASAYzT**`Y(&e_!;B5TnP{-|6J`X$LPX&?kxjT#o^Bx*{ zKovq2p-4qs6qO#&#o59U;35OS84XZ4feF;vb%&?8eg~4q^Q|820MZ%@pu%100sN_r zPSOk?8kar>b^0sO1Q$k*0fmEbxnF&k@mn$makwPa{$46S?l^dwg+f-XvH^e zw2KutwFQ^4on&PdxiX9J+Wzk*n2|HN?>9l$fUCJd1UZA~d$?Evalb11U-nSBIqa2V zmi_RkqA#0QnB!(4(4bEM97vU%&0EOI!9RY!nTu_pogWfxV=*{>GCA`)UYjPyVEm?! z>2OwNZ4jCYnVyhI%v`)38BXyUCc|F3nmw+6+XG6Z)Oam75QK)8afFYsaC0yrSYc#* zz5mYAH2*O(B)4O^=nGT2!ZNzt!axls)t)@bif(gO`&Z)l@#@444oR6%z1Y+}A{N!0SI&(Ya@p#U1m{9yZS2C_a&QOSKw1ZWxl%edxGiWEiSDYTh9o-6`T|@^ zuIWxTyf9Ru&W@B$*nN_e1(kXOsT0v16#6}c9CulgvWV>1h5uqy_A zWO%>z5MIPHfSRw{7WU zoK$&S)l=!M#w+sJwr}XZm)^}fmuO!z?0)r#?x=M*@;5J%$cYy+tSe1i^+|Dh!Nx6I z+n0#;c+;nSl>tExlC$7!^azBO$rVB@{TVpB1t%EHefJ z=vJ=UybFyXuiXG-aJ0$=6e(Pl9dJvHc{PFyYLXNcCLJ=-8kt)d?T0YkuwSYYNRAH5 zR&2_43{-0H?DxEZS9sk9q8vmr9^nt6Svz+@RnWUj;CwzN9F>SQ=VD4|59aJiD@i)C z;_Z{fMt=weR+Q|;VoEBfAbAO@tMi$QE}7wnEqpB53Jq174k^J(j%Ir~R8Rb#i&ENA zl?9wW(gjSVo~u+!sJ>*u@{q{o?!B_@kmS^>xhmxvQsf!nH=LEu&Gsq|;(f-dnPrtc zvL^cYLFS1SLyd40INMu;FjSe_#O)GySMM!Z;h>Z%gwp;0fA%Eq(0UkAr+Qn!8qT%A z$0-oIKu)4wD98PqHme&pA9-ca3|@K$l2ZFg#v>>wB1b2RoDDDP`Q9S^p4GmKIk78R zr#G8}>fuVcwyc0#iD^IS64E0HdYhI2Qm7u)@dz~90&D*%n=fR2tk2Pv7CQe~_zvE9aX5Q}7;HgRo^!dFO<4hoQAbzt4WvYKuz0h0kVvhQ zCRq6P;q*$7-YTnZjQ7bgp?vHrotpaTxXsqoHaa_Nt4ZP@?&dV44jVx!D2?R*_0Z%2f?$5d2@}!9U?(p_byD-bu z1R=2B*mb0UsfzD`>+*{JYMtRTdX1b+G0p;V)U(6>bcfso_*&OZzyQwRf_$W?3Ou=Y zoG7QXJiSdp!GwTe?o3evhQ!l<3;KpX1qoOBMDH`IFaX`t;<}N3(7F9ekExtMp%(C? z?(H*u^nsAiOR^BC1iA<80gKU&Dt8JNMJu5FrbfDT?AI=1M3o%N8^N9s4_@fU zW9I*=>+1vK@^E(lrYEjslbBU=UaHN=JWQhlHnj$uK9R-`aHIBDK04q+YW&;J3Sz?3 zJ$%g^jM%$JkhD6ymUKw{4$C)9=!~f=1HMXkKg*-ysI#l2!Tx$I680-7CRg^rEfeF6 zR5HZ$b_A>Edn8dmDfxwieip(0g{NIr5qSYI4hO`Ab}UZGaJ{^qG20JkdOa7fo3u|d zn_oypi$1wNbGNUcc0l}aCO2o977-suEzW^gfZno=`t07{m-H(leBw?=F3A@@eR0-W z862{^JtWD|O%akd81pOLlPqyCg|jJ7s*~zKS>;~8L2+IMu;-#Bhvd3iRvpYG5;C9`4L4@I&_m<&jGzX z+W>AI)ICZ?X2vksid@sV-g8=kGi2eU$G+zmzIg^F+ZGnEJ$=jZ&%WFX3F#E^59LFG z;9&XRf&1Ow2Lw(v>a~IjlG9LA`Cds474$ifAadWgy`i<-eDS*hOWX!}hrXK|q8Q}I zz^=je_6|8HJ!3~T=?D&Sc293J@#blt*u0MpGs4s7s{VIQIrrr=ejW-z`!y=zxlMPG z1w>G2FS-67;W^+CqY&Mlz>eK1a!5BdZyq4}=f zC61}yE#;U_V}!PqQQ$2$=DRDMPjKTtZTBP*)ANzEIKON zk&K=lz<`DYotii-4cx;gp`S&vu0-z0ZSz5ol&-Lbg%Q~~pY+S}F{7wr;g9(=X@gr$ zHnN6bIsZ8ppgJZebrt)CP3(AvU!Ol z$%ObOEPQc~U;OgQpZGrwQpS&FsBG2)TVrNs>do&dDp+YJ+2GTyQ>~j&ilR$ji7J); zmJv|T+{Xm^3(61w-mpd8p@aU}umE*Z_C_0cjN$^0@yF0NQ|8rF4tzhaDe9dU#NPfV zoFDP}#6Pum{(G=s?>8Q_X`3PF72nS#p_ZFcnWU51_wiLSMF|333vF$wi%Z%Xc}SOC zOD3b+3gSmEk zqV+B00f%Q}qMZJ1%)H={%p?^U40d`5=)7TNyog9c^QTVNKMQAhC$LKsum2|gaG|-X zQ=Eqi;A^~yL0BkvtPG_4^Kqh%CyLzoEpj7)J4F+|;|B*>zxwh8N+z@FC|{Ly^E*BypVrst-FF5H;@-^MDZ7chFAw= zMJzUn2V68K4htKs4zfN<+%%Se{FJbj3I7?R3qCG&Wcmx}zHMczMD)_8C+V*#OXq7f zk)0fVbfM1|Xpjztq>-BhBi{9z@NvPVnNQyUl|PGRJlTuw2P^t>9O{c` zP!`PV#&`S~we3fVHJomVnRI;%WKC%A^(Tz_zgmDV0nENuY^$kB2_M4uUVcP>P|QMSN(-Iggmdw`vIzU^ zdjGMDr*Y|NV_2G8o_Y!|?NeY;X;}KbO@&ly|9V_aQPG^*8)*H@P&=Kl@N$B%)~y=1 zgdFC{{(Tb$5s6#w_d9K%k{OV|+oQAfeYG3+JXQV*yzPhuO3_s%6>{w~VIs7$YPi`! zjEr0?bWVmq^$`j8+?9u+7YtrjK{(|kIs>kqTHG2HxQBur_HlueuzUT!zA_M`I`-wL@3)z$*CL zpTqm*I_PLKb;-9!6S;(V7Iu7p(zgHj%LbUyf!GC)$nO~VMNez_krA+8 zy}WeS+UUbl?hrv22nZ8~e?=kN;84?&ooM;xfZoRIL=3AZw*n(C1-abX*07rt^bhY7 zQ1$!`=xa`Z26W8dV41vru8d2ITG-cUI5DOCsa&mj&VNYareZ&_wBZrQFLFOIf^{8fJ{Lw9#3cMt9C=SSRT zOsYH|s;2aZCGE&K_QSGRUiL|^q>tJHTZMtQ6E)105SYa(jOe3+5x+jDLh;kwAgI3q zqD{|8ZID_lke9pGaFq~Ag4V%;CE_Ab%mnO+moVo2Lhf>tJ~lm)eK-J3?&^h6a35Pq z?BL{*=DoJZ8d7REBoizEm!lhY@9xGdw14Vy_w{IVn|aPv>5u@ypN#!pADKDjtuvfi zU07{WIu($E2Ett`-&QB9`OU}2 zw@lg50c7ua%lp(z7^h-uQ+K5k{*{jP6<(t3rB>YU|W;-fOl*4 z2`9+j=akOtX`J^Yu)0jK`(0yzP3J`R{vf^&xL>MD6~EFT2B>qe+Y}k30>7g<_@g{& z(Xs}S50kr{m=Z@KW^%!|&yO-VFuUt5V!XGIAJwb4)avtBU-}d$X>&W-%3d=fjy>7O zoIn24;!hhq9%70vFvdpSS+LqC`t4Qm5?M#J?*$DmRF`3%TKy8RD5$D1$~rulatPddH%Tm0j>wN5qZ&BmjwESR_!_|(Mw#vvI9 zc~J{;H<3ZicHnf+HMn_}GayU-TjU%Q9|~u^83Z%OR`eu#Qq5&uiL)*Lpv;A&1w7N? zNjI9@#2-we$W&K}_Guru3Lb?esco-P-DS;l&JrSL@K zZ11uvMSkB43Upa-aZ}N7s~uAakg=Ztkf|v97re5c8g0kO6h{;9EqcCqbx>vSPXnJ{ zod5%GMzD2eR+zfL>aoA!BWL~gpMoj=t6-+=d$Nb$tQgN@`jH+t7A9K7h(nFlt>^G%6QvYDQ4IN?S?MT6Y9VJl1nDwa2Z~3%*HTx>C^kJQH68yr`BP? zC3?jm6v;m9W@?c0hgc*wNOt`8*{Y5^R-whhK!t7Y>B7eoN4UzngjJt+&DFs@O)Z>P zQ*o{X`jve*XloL%&G6cjK}Wz@Z-sm)QgpaMdiZ=YmU7KK+n+)@_OmS$R>D)BX#d#= z2EwcB!oqf{&6}Qv1x_F(8r`kweqUI9A9gV;tH(3$^GNp3m(1evQVrAvv-{V*WLo&= ze5$lgP;JsqVqU*>??W3>mqPmD4Q+k~(21@8>j_yOVBFU)8OQ5%NU;gwwy-`!H_t;q zUIN_3@m>L4Uuqn_FBi8uSH^(X9x-+i&jhyIdG=USn2KWfjNIOZ++HF|VOz&w~G{$4HEst@9~CP@W-p-L>Xmf zLNq|uS`u!si*>p8{|tFFczo2}JN^)5{5&6UH_!-wcr~y9>G+RZDvuOXDZgc9D^$?( z9w9z`LPI$_;Jp+Q5Qj)dZt3~cfP*%=< ztZ`>!(vpP2>m1KLX=qO1?r9`?CO{f*{gxjWmY*3IbZubm+NqhXypcXomG1qP`CI2U zyDHz!=muAU-R6>f>C(*1_lOm{jk3Rl@b>b@%QtZgmYq-0hbitaY&L?to+9%B#)Gc< znIJnX4JFkoFEjk9n@SYAp^Cb5Z!E{nexJ;?$g88LHVzPlhq|9qFE1rurk|r@bEb>S zfmR2}Uq?oko!RjzFFae3FCmXlo~;8;zIx4V#~I~WkMtq|i!w($Opa(gV<#Ge6mcKa zZO~P{Rma+min2FMcy)3#(5Ucc7;?9M4*>*Onj{dQ_fmOZh;X@CW~htRm#GS+M=P9D zI<`ztDy3h}0*F+sie9%V;umEx%y!*1=7 z$X!c&8L%A2tl}!Hx`rj{3(Qt1 zD)v|U`tY(%H#;pN+Ip6-T|W15j5*)5Hnho4yOlhS^0H$Z?NKz#qOHqc-pHwrWe4wU zY)$n~&<85DU1y<&iU=Ln$m`PEZx$nIVTVt{?x*-i*>TSQNiYe2O=?EKlD-Mg1g{4k z>&wGct2B3}0JU?cvi-;}Zxtnh#G6w9iQU^;3Dp?lg!H4?`GY%lGb$Mp?uv1Ht8;M` z(8Px7>^iO{Z#b}iK~p*)Hg%kvuM}{X5?PpEDN=i7M}=xt42a zh$1a$E@(e(={n{~K~I+bRKL7n@gPkP55*TTlLW7I(7O5C)HZ*7fqaWyk_1|} zmM`&iCBu}kj~;PdfE&nBH<$Gk1HCZ{B#vbju+14puI0F#`T?ckPr^fGJT*8jq53Sr zm;${rQvP9D{)M4e9(){}8-@8uf*}IeHMiqojxZlbU6#0XKTm_j;Im%VM15hhdtaDr zIu=y@7st1uQve&9%`CX$5@cndmq)eJPgc5IJ+2eSjm!9aK|n+s-2tT6@~EheGKDa{ z(_wSrewzIyC4XWoDA6mMv8z3nr`-T7`unr#?Yc<{??H;!0$LPGk@1Thy5~&nBQ;sqr&;JQ61(PAMQ51hXNSjPL8hrhRJkcWwu^_UrWb;ZM+4Mb-l~I4-d4> zYGt{@6SZ1fTfLMS@}>vekUk%{`zn(fvbz0?prx4`#r3mx1BnTs2wN2R)jX~guQFppd1qewG={hKDpTb zC%e*ywv`!-6MG4%Ehmht?JY>i`jDkZn{kr&y0~}i&reRMpp~rRsfBs4!V`Nc|FF=` zbK8Z_>Xx{VmqbWYvvT9w=1WY}%_h+9M{BFAP-D@`R#%oYupJFmMj%8}7hbagh+%{b ziJg||`}c2E-}UDg6*}J{Y<6Oj9*2g2A?3@P4fxECgen^Us?Z9WZ}`sKN%i3e)JgA9 zxcC7yuPvDQ_PESEQDTp}wk`7oTtF=uc*;EzM8S4nMmx>zlNu~uY?ESm_U$%!QJ-46 zz~af`ujV$8l;!0-d-HRe1yaNIUOZ}RHck!heX*Y3_q9KPe6n&c{m!7hMACCi_~YF#G-A?R0P06CUNt z-jWyim73B!TXj>8Yu`!qDip)4^CS*uoW``_OX?8OhF-hovPDgc_W;npx6O=HwsYNz zv@AZ$$nl28cUXaJq;ZN2G8^>3L`Ck&DOJpl`rTB`iF!cDS3|5rA5Mt?-Jp-KR6S|( zjK_R4&ow6R)wmU1C+x4(U~>8CNG~fam}ElY9#2a7)q0dn{!DTQ{DY)WRlLe_r(q<% zc~pRlMpC)q9km|?M; zu3YKGgPjc@i;`=w`Fo~q4}~(0O##>GD3tJ_DE8!6^Yc=C&|@W;fjhb8+Lr(e{7GRcU5sr)COR|VX`?JicFV*) zLHIitb-I8LL`WjUI1fimI`%Vd(I{pC=~yv?lm-z|_#%QKD27x!A2B=d$<`$r9jEt` zLg=CiM4W@(tzEmN6>!hJd3~#5jmIK5jY5eN72}E}ep4BkO+Q4rD001}_FOuim&SviCT4mw#HVDhB?2tW5ILok{GGE=>p zwJ^MD%@LF?^fa4I_34}=7YGm_o>>S@&c?^3YAa~OLauyZWj1)?nDCH!^{_hY1U*E4 z&v{&dL*#Ts@Sm-=Z>eUpg~(HUzTsX!j6BP|j}BW8S5)Y|KY8NYxxU=2NV<9(K~k_EVLHmt}st7~yYsH2(Tpb}w& zpMN~rHq)2y(CaFMU5GZkt%hCPBOJ0<1nIk1{?4g3uq1>_#2i%e+3hA^p761wk5n@03 zHHW9-cX^3IM_AIYZoXj^aXJ;qYA}Kdln7!Mr_jQ~jpc-#a4Lzlsno@YX&*}bM9X4f zi6j~lym4I|%Wm{O7u-^D)HBBTQ;jUav2$xV+o{G0hd8QwH@c3M1y^AgmVvTufH+R< zX#h^YCUY2ZS3+?|E|0kF%!1ZsC)+-GP8(qYFFx<3CzZ*Rikr>-L<7x`s&fiSqs*yS{Ls+tKqkASadj6aF=I z5b$g}Zd9xP$$PAyl{eR$m9M1ETV%pZ?9Y)4!Z2Vz9e$lg^^VY`(W|SLVoE#!wz5)8 zW%1h!OJo1^Nmp)ie{o}ON9d%Twb`@G`4Uzoc%m!7SVniH3vRvcOEx>)M8D1Cuhv1&uDMHmmF|r`CHBQDVUaJ6`*QQ|H&9-jQOPzrT4> zg!e@dP637BQtx!=UCyuJRpAolA}fVc*inT4-hP|pCL@s+?f%l$% zC9*ly{y`GcKcgG{l^@l!9A?L6xMr(c>qTi!F49M@(qANw!u+;w=Ic(RMT`De z+fd@lqOIf&8PnoS=gLq1VnB6|vzPA*-^YuUF)Db%qoNNusP9}9u4-^3h)pSt*IRj- z-7!x1xb?~%e`$3tMp7RETRP3x#V4T5GBu1s6MUgfMypCG-Ek}Go<__44{LY?%ANmv zy{eO!Vpb>R| z)Humux=|bj#sya6;Wx4C`S|!&zJB6HBJhac(|{E3fe^m}}WtJx2WYg{Q-4 zD0+3h;b2@Q2nwK~wHOpitgyiXaM>_LtioxJ#(mp5-vVW6wyg>KAvbLA@kO(IjVOPA z+J(uCY(Geut0@0dTuC@Su?Xtba7h%`^+v2fawO!D%=Mtcjn-8h|Vh( zX=Wn@2TG&RSv-}rEG1auFJg94K@4O+x4ldze!7ni`|8)`u>)9V?0ysbs_JLTGYKL>311owW`>Owt)J^pX`5hBnZ38LB+mQGF& z^pK{s-)|y@^(%h*{l4?D>fJAnb?oND=)#PUA@kE0YtTKPzQfdoY4ZuXJ<#!h)&T_{ z;ozY2DgBM3ig|E@Po^(wbk4H>FR9t)gY|4*m~RtQC&5VQme+@CSvzVY1eWCXJgJs> zU%uA5{q*g)kjVQMrRdm6+E7@OlC%tq9EVOpZMF*=vh4vw{#Xd|pdy3_k>83UuxnEP z9!NkAx|Jl_I?uw{KDUw8jMpX6dIdtwC^$V=2cw8&7;`A#bCE0K3KKMAiv&bRB8rAN z_tCR%?k+qGFNvWH?@poXZ{L$`=?+AOA^ep0S3d!>F#I@dZ?8m6zNWkQS3}E$-iuIi zF{k<|6E=U6G@ITvC%Ezr90flK3G21<gni@=#MJ>X3|=X0<9<>>du_H@j1 z{+cn@PlnN@R2jNasW(u$q`$k0AN!9R0VNm==r4h9#4dFd*yKyhfVTA$;;0|4(ARuy z+|x3rkB;sKaDv`wEmY(_aA{0EMfnot#6#R^_Z&DMwxqiPzecqjT@|&K21o^F| zhd0?<@qi2g7rdRwd4$Vn3Ei?7U~;7Z$9=Rl)3^ZPzJb!7PCM|N2ROVIESK8CBh=j5 z(;1j_swQCg)>tst`MmwyV=BuzJfgwWa_4uByZ!~Vf+w{BR5u+>KicH=V;{)-no1EO ziy4Qc;6@V{>Cg~4b=)1&emIH#@unoewjb>#RhEQ6$b7ovx;_{PSy3pay&DKGJ&Nb!?zdXKFAY&E5RcB1pI62y1|Q zlvx1aw7?*bz*z^yXcvM}o1KZ8E4vyIHHrwA-ISJ4{}peaS$PgdxOue|?H?`QI}u47 zSk)+~?K((NU0L9J4B?EOD2ejrMJ^2&y~>|F?;%n>NBtLvOGvjuoJZ>y zR23yC?ub{d3__QpckG|(M0hhtY(lan#%mxAs!T8DPMWdvrgHwV z?dViJUU9H6JKVYZ1w2o7qORD`U|I&Tqv+~Js(jiXOtaOAy?tS+sX`PWX)KJ5&d&O0 zqU?hM9KOVqp<>{PhPC{UMY>+_qHNrZ7!DbFbKA2RXWx;4B@Ba<)8C0OF#Afuzhy*_ z;equrj2=W>mWE0na^G<(&%X(J^S7&ulI+P*hKQ&SMf@p(kc9QC)3S|QPp!tlO306( zk|Bz9GVRt5l*-N@5iZGB$NAww!Vq}`#*k+7++J*vz<{$<(>HJ2!}17Iu}!@tuF2~w zcIuN|+yYH)o?2|y-k6eLsDx$sWr56iv^AVEZHOY=Mr+gQlzentZz`G=C(-5IMlWig@zx8e&@V(N=t z`jQ#CmFkOx=f&bj5}DR7(yghGiR};z5fi7T^0n3u-751fF$V7aII(tzhUqZx-2joV z-)5KCQpXeK61gT4>1c;5KM_(L3JAE$58nQ{U)Jv11ZMvx4+g=KqNNe2ct` zyoO-!Z?gt#GK+Ot+VrC;IiteFJEdN#gy@8kt?{BMS!)?CEoh=leWsE)3_zi1Yh3&$ zB;*I$f+r$OXDx3Ys!iXb)%$MU>XVB76O8#LvYbpD70n*l>=Z-^l93QqYyA7|5qF8) zwFvutUgdoa?b&-OQ@!Fu9s;pC_J$(|<#9+LssIe+gE9KqSUXf;|1kUya@ZEmh?Ng5 z?7F7w7Op=;$Hw<7DN>YVgC0dA*0hq8z~nTO>8Dv{5#Sd()2K7JNTe3Re={OSmbtvq z*C0$dMAA*y2JH8da?*88bMC0m?rJ*=uafJV(Myix%i4h}e-61ML|6k_ap}zO#Q1B2 zsuN4uW3)6b_>5c5=4r=#<)YB=N#xn-1DhV~d9~)vE_Ns=$X`rWSP}l+>+w%5re@!s zuLU;NJbljn@8?GQTMbaB(b57({gHz?$o9`oe)8Nh!4?T6$XQnVA}kys;*~>uCo?#1 zf?3yRnZO6-5XP57sFZoeW^1E2^Wc{*ARiXpl;M@7~w)n zWqzucf0O|1wmt;-i~JQ}gt7Lnpl(~-2(HtRn)9OGYX`=i;!C`Q5cZoz$+Dg-!h*RUF<^AevsOsb?9Y)sUjmuclf*rW%qmk-bFKq#< zCv)+CeW|5INV<3K!WHQX2lL`|of*d2ERaAleuM)t2m{b+*gqMu!CMFhD!rGOBew-J zBYzGfo$@FYr5t7)ux?^&#zlka1zUo@)>fDe-xPapd{3ZMUNJ!d3AFO(M>!(3(k3tKpdj?6B{6 z`LNJP0f>QQMC<`1g!cs%_tL{Hx?WhlU>w`eAu){%(n$f-Hi|OZ+@mxra+wI>3++HU zIH^8zaQ$=LWF&%qqp54Bok8I&Evf)am2r4S2<+}@QTg}){`_7lEN9^Ci#}#u(9!pS z-9&kx!4F!6snR;Jxjxy9_GH&0D2AB{MsN9P22iOX@7{zof5_IH-fco9Ix%mM5k79f zR69kzL1ow;xDq+|nX`(K_xW|S{A8BOe9)st4}~?EjLVrC*M#ouFlFHuKM>M#)}Ex^ zdtO0jU8;5-SLELhv-9f1=8gdP&Tb811(J{yc*)6ua07Z%m&gNT4&{qiuklLk9Gd%- zY&%L0RI8j+`u3i4Q^Hv2(Lu2o9RzvxZCx&Zkn6xG1q?;(A3urqovI z4Y%+lyQB_MdUF(HUnSEuMiWuFBzV6~lbIcqBS9}#+V2>VKfhkOZu$k* z%}LdN2Z^tZ?nIgXMjfJ@&>P&K*UA3|zjtQc$%Aa5Y2PNL45eOIG* zOtzEFkOI;k@YRf1F>-dLy!vX>AM1=c*9V5eM1JvmIp^}Y=j#KD`KI}PiiKli7)KeZ zthSwF<8H7bVtzDzx{g2^-?>Q~xy7CWlX5vnTtUV?BdL8QMUGzZ(|CyS+DNPpjo)bx zfSz4r&I*+L$T?{n5I>#i7$YzHVS+Yyht1Mf&tT?hi75}dL@TWczS4ZqTr8rcdK{A{=ZoeZzNp2m;c0@rUE$NFUPf=xdg^b~!2D`TDvzG{cI7F3`zBO-q4N}H}YMFy9OnWNS8 za-h;sh(*L}++1wcDcJ1Ergy@`hrpk0jj`yie#k#XCJpfd$lm!LQGUG65ed*R?z}T4j;-nyB|`$nl}5Z3?G%fJi23 z$cGqFNtCGI++k!5Ii$&vfRU-K&us(Kp$tBVuhsQU8)OotVvfhUcl?(%3H{_0~3xU(id9meh# zR!<7}C(wGNF)Eg=Ih6atmTzL{ahL24kF&2VYB@mm4cL&I^Z~AR==oW$O%^eFuq>KD za|L#uI-Pq=jcyodT@qJdz9z+(vfgTV5UN|fTANM?By&SyKL?}$1XKm0fb*QKGM&mk zRtgF{h)c<~W2n{Ly$!&@08WH-z!D&c`N1XXfT4u_-Nf4McO2+M!oI(x-Tks16GjeQ zI%__yuOD|QTg{OJz}%L~H5tb3odT`>xafFKI1Ua?xbO8cGr;jcbV zVLy}M>+MUO!`m|-Q-GFg+}FJ12sUjF@30a~Il&dkUboWepiE$uB*K(qHY`)rL!68+*XE&+_(3_{_ZC-V0;G2D7`(9bbXPE33p}WF zu7(id(CwbJ>8?B6k}LlWh@@Wd7r}~@FUr&XLE~zoK`)uBI!v6^X{1GDA)$y&P6=n?x=Z;i zhW71@+I3kBd;8p};ERekG)E?GIH(%lnSUs}_vYm7$7JTcPuRZ0-f!8)&b3gnSqWE8%C-BR7^~Yb({^9A;To@;YJ<^?KfgqJ-u`vkWWaev zRhS}LMOni6@|ALs%;I7)C~}&_V!scn?>!9uEIqI@($Yqw_Dho&Qx2T2#CYx4H#R!U zkcDf3O~ECQE46}@%O7Tu$VkssMlD@GE0?8&(|A87BEpU^7Ly^R%i-TLXiXiUT(}$l z9-K;T+)MA5Xk%z1!D0AUt#yF4TtKIVsnbbxRg@BHp@jj(vInyv;k}(^b8soLsG#!w8~0t15BEY zv=`@j{SHaiF2DbmQIuC@C!28=t5*db$M%VUY7NTva( z(15D>&kjvscT^FyHEYj?Q-$Crv zM~C?ecUFc<)?xRB`K;n9(4frwm1yX63`u}%`o*AxaP!UeVQQv376Cze2lA5DofcW7?nH#Q%LW#+1Dt5#c zmJbg@d&4E1 zsJ5Z^?woP_q?#+@XETY??|^2TyaOwk^`AcN5QiQ80>?Tuc6*I7R7@;B2NiTa^!k3^ zoH@0Ny+m!TYW|mE$r?aTA$;wn+avsZAfUOl?(zxhnPoyEr$=&5b`g;8w-pqG2g-9o z*&X&fBVZu~bO0v?rTZxA^O^$Q{taIXV0(eciHfUSQ!?IeN+hEI7N&xp$%c~0&g6-S zBmEI|rqLqj{lrFj;~!<&u;>KAr^5z8W{WL)Dwgugdt?`d5`|UFC%pyNtmb(;Pp;C8 z76+x9GnMrAgNY0fFTk~!n7)RfPZ1~WC*cW{QGlXZXsZEMs|fnF_uQmuO~hKFRJ%$D zUsJ?OAg&X_yh(g-BqEo|&WIFN9f5iPeiRI6_Um&?F1~*&Dai0%89_Hgc93GOu0x=$HhfHuEL#y_s#JINg&)csL=jNz19Io(I;Xx-hwJ+~+5D0{gkD1UZ)#SL&}cE5*fu%s!ju6H%W6jeTZY0a^_1 zuaO@&>?0l#)P<`f`c*EvoO|yJ@U0ymK1O_>%%}H@GvQKdQ|*~V_A1B)jZ$>jE#41e zblA;h=Atp^^}Xea`b7)6OB*+-USWnswJ`T>T8@Ox(!gj+kGXwI@I0OSj*m-!HTL8G zE&JgHD6l~aa@yRpgnO9qFIo|g%v@vYU`{wF8mk}I|Ld`9pxB0~Ak>U^4x@M}Cnc#g zTQ@h|zFkcuYoCu|Q|k1b`vT0sY!nN*)7PHM2`VouP$;}q{Z?e`ywo-d^hq_R@%5W& zjJ|#tsLpSPSY8qbR?r)&z-6$O!`>&B1bAt z9W+ukqsV4#_JNeSs%C04B(c=wX|p{g_@a>eZL23bw^CnytHhK8{NGJ`_%a;R8Wvgl zz;>aa7%%zt7N;b|MG8R*#56yF!Cj7HR0Cu##L^Bw(L_BAi2)8`TvSvLOG_)VcaJi) zZ@)z}x%7g32V*krDbmztcWDwX$cz;7-sXNcx`S{(^P+VsN7~c==)*lfXg%6h5bc_W z<`mh^RQ($d6UJuBP*6q`Q3bmGO?#OzK5LhR~gyT)SJh0(xa(YI;4erdH{2|xr5MV<1H z9ZpxKqV3-?CgbaV!#KS5QmUm+?+_8;2Ot+~$R^!7Ty7%BzU6wybqm~NtXe4Hw`}hZ z9JnO`vk-+mu2Mq@Z1kTg3s?my``gHak8lF#>d&*h_Iq~_zgshDJYWrB!_U*hw2U5;KwIWC0ybkNf@6<2+#gj0{owJegf;o%i0` zaB4a~1$_sSkShSBaS1mB>S-YcQFNR8JFmet2c|;>8EvP}!|AFj^Cd8(@2InlO+yBM z7Ql$!*f5rc2j9%F%;eggsnp681~DQ+j&s5rfpz0-HcmP~k&wWKeJzEdu<=m1A8SU$ zX%A^r4QdG2+xB~@Q(?GsSPk(TJB z0%Gd#0dj*6Aos^G1OmOT^KG|!EORyJmvDlZrTUWZcmS#7SMVPPKuID2RLa~=Tr~Uv zW|{(zOAy|RTK%Hh8mr6$GY-i-i?5)I`C=?PSkIS4*2M9Z6+l`*6|9afUvRqEgbJ^%LI z_0Bsi%mM#NlzuqI=M_ou+nCov4t4Ohqt;+E%p;thy2@8Q^1MkI)xHBku z4%18qN9PyJI9%%?tHa*2n`Tu~e8@Ei5(WVrGhHGLXIWQdiQ2#yB{vFyqp{~U=x*IK zQOWEOG7cXb4;d%p+Y2LoDX_!)j;XmMMD%E!FFmMuKmtlZ0W*C;DaZ>5MC&=VLassv zH8D#cP}KiYf{1WPdEN>8IQoj6miF154jglUP$n2+%e|s9f--ro`Tjh06MhI3M!SNa z6@4YBghyCzX@qvxe}VRKDA9v{@b2Mu9q|q9a1K))20RY2R{6D2K@?wQxGwTeKE5fRF+zZzfBHuV|6B{aUSZ8KDAUtSZy6|}g}R%3%p(EZlep`rI^xV77cBcY6Y z8n>rh=!CTgp)F%yeL28Iwph~-<>=BID0!>aX7*$O^mqCPrr0b2AYweupCxeo5sPol z!~oIBj9UIhDgBjj@6fle^&*}EB4oP{;L*{5^Tt`?pK6@8(W@M+0a>~8|EmCEQMwwU z-Y8s(U$D0k^cWPi6TZR{TO@h7XRH{#GBjbCZc6Sx8f>r-8-wSug8e4yeII3D2J2`M&X0eTm3nc_qJb~~7RK@DYpCy}TvX_~&4 z%+cJKdqj`0IDfpB(LOqzJr;}~N@X|lFW&HCoU*E*fYT2+Ras~T6gV(X@6JEHu- z0mH|H2zfNv2P9At?m}pbS;_I3wmKdF0$B`&tjKvhsO4n{^+^G0gK88eT-J~payDOi`LjPWUmE+q5HJJ!4T?ZL6deuYMdSc~-@mE^tw0lojic@UH=nW8+uoq9odq zI?;Xfc{p~aAIlvi;-lGh)YbB*Ja83jNYbt?O?Z>r2JPw#(z- z7)&`#8h#ML3e91PBQL<^fkRN4YIe9A6SC4CI~v+M#p$}{#C?0HL50f2XVeiianf{% zlI!m~nR&hi72u%9Eum&jiRlh=(FukMd--*SY3U6|Q9eG_#zCHZsh)h9MU}kwYb7%d zup5{(r1i zg;A}sb}2tFO1=_JDWhk`7xzd8z7$}xSZRRrD;pXO0Xv29!OsI zQu|sxs+ku#41J882@navb#&*ye|yn)g*_>0HlrOa_xODTK|Vs8bl7-uq+Muy`ieDb zuds&_VuB{}z2%jN1NM}Eh&(glL?=>#)RP&FRNFs!mu)d3F2n$YU~Bqy`KhWjm8#o) zbM~Fx>U{gh^qR+(R|u#OQKmFCNHmoc$jSfs=Vv`%tthT&G>BQ;Uxqh0k>ZatX%hJr zBt)b`$#a87`A-CpSyP65q;{0os%9bGAP+zC#T2yLCcC&s>H>1Y23&lehih)tcMj~v zo09as(v6$yjhZI+Kqed$&I>3@L!8218!*P zYA9a#&Rlq(Q3u=b#GS+!C*57j@s_axug!-KnLt^`%#z@+auay;>l#7@bA9p!X!8Bk zxB5}9#ko_vyREhcWFDlnyOKk~HIA95=7xdtPojxAC#h~(yPQkP79=j6lB<*5msHb| z&yd$RZ>V|*U7vvuA7$u>q4L@AsTCS^=`*kPR{OFQx(B__XffbD*R(d)w>~<%7;3@K z^e6u`B9vd_#=S-A_x39o~U*;lRewx=;{^K)B-QM2|v|1~OIo^%+x4B2L@9Te%iU>iRv(QqC za=#!pHC10`i+UZHm3T^6v3*f^>hTx4n{^xoobizW*l2|)aUHA%(CW|FgXgg5gN3Q% zPhj=Qf(mY$-NjVhYPV>7GBUEggM)afXwq=&yeeX48WKJMZ@oX&h{)HSkt~(b-`-+y z@bFrxMU})|?C^Y?k8Za+?(=`-Fdl-pv4pNil%Kr(1#d4sWvC9GbL#Nwz<1><#GmYb zG0=HM++3>T21d%D`&B|GHd_t{Vp{kF@f%XqiVEU~pe4ig?lvffUd5kDB*)MV+qcak zt*=kdVNAFsl_z{(|JhB`_x%1;iZI<$f8Ue&E@x5bHHZ_~k$7-)jD@$ZIimNDz-i@3 zc{L0e|7PIAS1t>E9v6){)&v~F6l0Dhz)2gx9f16DR=LSU4)T0mmOi?60>eavf%TOv zd=AIA<#j%7d)q5lzJ2dtbh78`grA$ecsBeVCH-{%uh7ftIdrP5t?iTCsC}id>eqp{ zEFgc0ZaS}Ii=<~jfl>#HTq}UMgg#MwPxT?!ZDkb&|nZ?+=ifOBuXt`3n8v4e}e5p{%EhxC=>tcCQIM4)od;R0I!p z=LfXQw|aT1!BK8+Z*Pu2Pwg}ND+^t2QTpme75ea=xQ!oid_riJu-gp;yuk7D_A{vT zdklG`QKoCs>dm!X}G#YUn$^XyI! z6ydQFKRn7z5=FKYj&Tb5fE`)BMM$r&^0{sThCL?X@CS?Bo={|4^s?R571j%MCi7E% zNAX4hJYf*9v&HI}F0IwW^hc_kwnk#WlwDZ{Fpwgo-K(nu3Jn0hq>0K=PdswwSARX^ z^Ty6cn~H*<%86lS!w-`}}Re*;D0y%4&w^xptZTTau);HMi+$%5 zzj$T^?_Hc$*saNQP0kl;thf!9$__jZ;Z9<1yU+d(+?wl2QLo(2U~|XbuwL`UyCls) z9?_uJ_WI7u<(aeGLBJqUtAYj;6|N{iEiEn3>EHG;&(j}qJjnEOVTpsQE1$rSc5}f& zzQhLar;8jcm*cCzmq7#UxHZ{fp_(e{&}wTTb31MX7tWi~+IJ&-VgiK9bzvI{;hG z6h0D_jYOIZocZ+OqA#OFR`yx)9rqHSUDnQ@0t*M!{+G4 zZl~3OsK_(k|7xVMsV{U~Agv_4?zQ0cOLB=vUR)l^N?dsH;{AUarw0vD$7@qtUuW<) zswV+OGK(6v5zhN?n#N1IxQk7oGPJ)sT8No0PRu93PPn}6da3l?a|KVs+M*X2t=27g z=m}oF_*T)Z7c&3N-0e`;5AQDYPfT2Y+O`C6W*>@sUmV%f(4+HdhUeUNi9*7Ag@>!; z(9kkJR-)(qV%AfocJ{$i!GWBKmQONpf3z?iibdq*M(F_Q!D2Je_g!fK#=8N(X}VyK z8j5&jV`+TlXEjJy6y2Ch*B4oK_KJaaOlI(%!bBkiwy zt>ohTvcqexE{^G`*6vIL@5NFlV2U(;&3*|Yl#l)-v^e?5OgOpG-`Zs&?H3YS!8F2x zFR4RQ*PDUd!-9&Lg#~B}<-cTS5JQ+_5Jf<;sH=kAHkc46NrfZ+B=G(T zfSSN6@(G7L>I+M(t2uPQV;AWlDdQceSVDE!ibv$%Ns7Gv-WvZ71G=RS=7OEWFfw^+ ziC<0tQrEwDe&u_3~Qgi+W^!p9oQXPl*o8Ow{~=g)c_EuPY4R0zJW$ zg}e?9E92C50V@>8O_C(rISlMg|K)4GkrcL}Nnj9KR^L>-a`JM^8(V>tAX77?LOrFN z$m8(DQY8Yto@c+FRx*&?gyvGTc>RMj7lv&qgo4fqHw3}~^4#g2*<5Tud= zgi+dBIEZ`^xk7KgbM+;c0zNc7uAX{>7=@^pql`d>oRim85<&?$fiO%06tf%J!xFPiEC!-p* zftxl%G^qf!`*<%fu1#w!<(b}q)$YmU(BwOIn5cb$!CgLq2fY~Kr0r(ycns*UGE!1e z(bqE~So6eZJOy-EbvYVFd}!I&83V@O8TA-IdSHvHpjD!${YE-;5PvwyyafXJFcl(3(--ci zM6quqe&Zq4Dh}qz@>X3u!GD)`p+1V7q>kB4<12R;i+elILBi=%>ogJMjTvS?<5KMt zy!B*%(cTJv8yG*7qRadO5ve@6n_jAOy^Nq%q_MhuQap={sM5 z&#H7`9o#diLOE?3eG0vX0|F6L&>AQaMIk)16W{3-_ZBTxF}I-T6jhzh-^(*Lu50Xl zHs0k&cK|_jLzjY6Tv}*N4qK3JKGO1%szu-)?_L17@);O!D!XPCAKm~A5#H%_ z6$mSOuqYcQ>h9i5sZxKp#-gio)%^DY=v>}jN&G_X_Vy;pC+r5jM4spb)igBnYHO#j zn(tN`ih(fPK-#JBZ3ZV6zg@fgKWx2qSd`uOJv?-mbayC?NW*}Fbc%F`lyrBubW4YT z(n#0Pseq((mvjy}^WHqa&-cHV>zcWMnLExo`|Q2e+WS7oJ5Th)-0S%cLdG!25;ZVF z)XV`dwabW!NLP-W%FZW^i^+^gef*siy{#t!;Dv`f$oyPql2qNTt23ZN062N0g#tJ( zqJqT!fOJNxA6f=g8hV~jogfbHg5Uo5q!c(RuGEH+Ga2z7WjJ`8x$zH<&i}v-+*Bw* z)qxCPz_7!g&1L8j@Ig*+&S^uzVEq$k7mMA?Ov=moKh1FDq8o z(O~q(+l^yCk`hkoRt_Hn7?~3YA>b3Y@oWEBCLm0%pz*C62sSTIr;}u++KIX#Wc6%m zbg->iYFfxKhdjQUSoW(@dF3TcbXF8l#1eA#x%F^l63MZlz-sKNndk(X#fu)sq85Pk z9qww}UCXEzoVqxO1eQx{_y1kZFF@6g^0!5Pc$a!2Ivhv87RXQnP1upRI)w~4%kA3! z0%Bf^=^aS}07s>y4+y^N0ZT&}XvmZ}0Ca@snlLZ|@N#&drz!Is(R03z+sA($L&0** z@yH%-ZbHZMD)j)g3i;Iuyg%nBpLeF3gBT>K&T_S^5odYcAte&l{(P_1ZmTSn#?mwL zjs;NxlL$?`9CH9bEeF8%;x!9tyZV63lMQm^lup9j?UK=$^j;qoUC+USy?D>oPgKL0 z(4lgT5;W*P_sHo@fR7shJJsJ#?2f;g(T6{Ki#ww-PP+_YJkx8c?bo#bQXOf6e-U>B zMs8aJ@jDyJ#l1VU_UwY6WoZ`71MC73*u9-1Ys;~9h+bcjX1^w2=aQiTK;?nU2jv`B zd@}Y7FNQzfwP%M>dMh5UZzt`IF!6~`x`w@o3j5Poa2bc&4pYi6_($g=8`A$Vwy7m7 zWhOucxmY3ka^>)cRIrb_*`r0llLdRw%ws;c-vh`eNwVt&x;E?s`mx!Uo5_fE_-;TJqQe^ohpH9z17V$MOl_a`yqc!PzzlM52hrY6dSO@W$>?*w0Lxv7ji>ZF+}5N zZI%%9oJ7!{+~?RRhl#w=gKH{{_+!ftm{u!jYMJrnL~*h^73$qJ4om2m?=eK-jN(+Y zkw^Zq8uO-;{R#iRof4%f;JwA{*ZEt^Jh{%uAYoK+i6G<%Q%?fhW^mnxbgxBSMkDSP zkS4x+n35lS9 zb)4drzBv#j$OovZLt-Bgjvi!WJ|t=uK9z#78D_+W5uIkd7)-Y-nmw{oSnPI{*{2vH zTyyd6$oy<0ir*t1NCf@6O;jkqfBcRtGF);X-9;ksIhqMr2+)H{d?qCO)ZNIhXmo&5 zknKJbvDX3MPMs`$G)O8E#pwMQNO~wdqzvUhf(>{tVqT1s0>EBAg-5oqbll({tBc~( z0lPaAa=QOwIC6JI8UZil`9wIB*?gh!jeL)0zQ6U{uC4|;*HH}5k!TKwbfp#cxN zX-YSMX@6jHB=SuV0`YVuZn)F-PkIM!+f};qE1GYE8%c!#jd!o{XDA1#2q*|h#jQp> zkjOvVto&Y%EG3~719McWq(V;ip*xUJrvfbJIcTJRGNngU!d!m_{J>N_A=^IRSI1{WYJFWnCN(dp zZHNw#=9YuV-eIY7iSB4@#6R3fWlf6A1ys`bBVdjUk14N|n4yox8ht{oh#Fy0`2E*% z*Up|uv$G+Z+^fd6+=730E(;0_{7M|`*ZAi~=i#gJD%TzO=9AS$Amphi<3ISo!2IMBd%fSVGg?bxmF- zbh=2D1@&11x)s*M8`gnWZ^XvK`-d6 zG=hfFWUmu&iX0j_G&1&sX$Hp7g0stJ-BjBIwztp*6E=1P99|?p-j@fYF`;EWX8hZQ z4gH5(8&hNB!Pw}_sxOVhjjqGDEM%V)nGzXF!EYFMxD^6E+!?Um8R>_QW7y(PeBF6E z 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

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/115] 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/115] 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 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

URhi` zS8EaooJ;5!sTfVNW5edpKyko84bcH7oL1w*#YPl}c{mG1=Nm3&q+7BK_wlneIP0Za zxTEt}r375@^2y0b2?zsSfADUms^_D7;pZXv+U-~2KT(ErQ{W6HX7xO6BrWWg!yjb) z&%hh3!TWlyM2u)1k88l?E(AaLKq=c!XtkZHjJllJN2x!KCf%X=QEr#Hd`0&j-DVJV&- zzzfd9kS!A|XxlnY1Mg4Y(9mu=xa<#LQoEoXT={&x*9Uc`Nq8=xbRSh&rhJC5ZcYJf z^rMov`5R~(V$hs{!*I&P_oZ0mi^v~FHZg>dr#l>mxFxWv-?hRH%rMsiWc3EB2G2l| zoKC_P3B)>NLdCg!C}lAz*C`HiUUA~$;(UPi$3XaiEv-H!a^l~T&p-9fYZ=hN>lZG$ zfnSNQI$)QlmF*UfPw%Jz%Ekn|)3c3wGF7W+R+eEV=-XKjMS;_ zhH?mV2=5O4q8+^NZQ z7cz6w6Bx`%&|^Opj8V#;!r zDJ{x*Oano)UHVOI)#qr`(8>oRm%CHGSq0{0vV8o_DyGZO9=UO5R7i4TNcDW9EalQ?5ePtP}FT52i^qKC7H;v@2)QkYsaxU2QQyI@Em z3V%eD{j{5UAZj2)ID&VCWwIa+diigD{xPI)3>(`rwQafqB+}r&bLSZ37<+lMZuWpE z$~Q>fuRg--9J72Cm2E8w{9i-9L z5@eTju-^P1_6gtqzqe2?Mg9L@2RNBF@)bes#d9>0l>~S^5RVaq5Ml%OuR7qff{98u z>C8CKUxU9MxWTcn*QmSQYKbc(XofYkXVS@QMbmmzzJo zJ29`n5=mspt}lt0ve>h!DbA?=qou***1=I~U!W%?7p8y1Cx`4+#XBL@-M^+0`*gQ& z();3<|DoM_St{oBq47P*ml{T&WV196mHMcj@^Zn$f}plH_l^_IkLoDX18>r3!3lhfOiW#o8n2V5lOLAAc{E?HG&ITC zM<8}%9a+u%@b%;u8r6wOLwXYynD0y6n02oy<=dgm)qErUw2|4R+*IOkT{3U0#cZ@o zO_q=QX1Bc)O-{*OQBfsFSChYn$+gQ5bG34fOEX6%zh`7Hvopsry;FK97{`f~_vQ|X z^pcFV60*^}sKgHxc%6qcH!Me(I>0IXY*I&vD)ab|4Jjk&K_ zz!`1wFu${j^wEFw{j7}S{YEB?-gAUiwAmia9sa{EJQH(x#uO4$^BTJ@sJ&X_8q*i1 z{$rlbB+NcJb@M%JoI(w2l+0JI$g;f)THF05&E)UzZ~BBvAG6%{ssvcq*`f$U%RYps z4Lz<7ucfKoCoqSpYWXKoeexSZ3vv}!reSHehxXKXOT2>=XI%6w7xP*kX4W9|-4ch>o${ByO;5(XETXj@PWb%88(OZsluh(@M2+h3zt)%X zlLLvMJJt_~N<8Yeaq1H>ZQ&!B+S}$~&t;x7zrX(4>p|*8=5VEj4CGex^^hZzDQ~MA zh~pu$%{Jm2??~pH3uFRNUe0R`s;GMR&Bc0#1fq#vy1`ewb*ANUum1%L1+^iIck9jc zE#oB7-qTSHVWxvcWPz01$|$ynPa(C?@S)D-k@42Z?`phIHb9Cne+oF^CBYBPLnW3qsAl)L zjLFp%>ydk*4OuDOI;4f-?Y-Me=U`bJwm?QnSQ&d!FAeghfvaL$UQyKR_H zuX>uOtm()t7QNe%3#r7D_cctEH7rcwySnWj}v%ia2T3+6EVZ9Ys z-U{mfJXtzQitvn|T4qbgdK-FrdTKl(@fOP*`A}|CGse&^s?E~oXm3@l?*xw2+3dC% zDKR0!id>Dk%Bh~F363v5;sL`yhgP1%q&&$jnwE3`f}VveK@faG8D*)$j`K^1CoSdcJJtldH)zo;_bu$dug+N4tSP z)%zMdu?neu0uw&0BBP<{zNcKgz4umzR0OR!#aBOfd=t0u92W^}>I$rzlh5C-X`XIUBM?YL)vg&Zc?OIWV ze*D#f#^%I0rzbyR;{}vniI+c<%2G$Ze(uC>b@fu-_r`C{LkZe3)m7Z9hCk6g@89mn zwq-cU2h~4L0^1qQB}LE@sek9m)+yMS1nU$)Cd4io-HEMyomM2jn&sf;e_gYY(cSWw zx6DVyPv)tKG(V~ssqti*SpN+~;djUDVt4(pSsspV6kZ;1Wi~Y>T4>LLW6xp%->#2N=BbJiq zNdghS*yO#L+jeiK$k$0iO$&KW2Gt8JF-wVMp9l(W@!`#)>JO5e$gL_Bwb~ujeVdB= z{4VG*@M)2-OYD9gXzEJx!Syz zOjdQJkLb4DSNt7VucyuxHV<5h3wO<2CA#XoX<#Gp{=C3to9YUbri?}7~CBy!+jLk8Ba@DlbR+^dUM@LKm@_qxCX|TL= zXV>35_wg>Wo|%Pe>M5<@MSnl*rY=<$?i~#8W{uLLYpb8eTzxewKMFpPgVxPset!F8 z42x?w`$tZ>Oy9LS$v6(&d+i1&?g#Ftvdf=fH|12S4iY-j4QSr?ET?+#Zh@f0W04;? z{)Ol=1keVrOz(}|JonG!ZwTtEzH(VnsEL26qcPI@gVq&uJSV!YB%qyqT==)hWPSD) zVTngyxaTWDKbzWVS!FhvFl8&ExR=~XAu;DJnkItEcG^;Foua=n$GBjLeQ|dp(_x2g zJ3(zIHkRRk&L>GoFKaDsK>ZruNZEt`=h(@aSX)=(bunt~g_Nllc>W%+6pH7C3l6a{ z_vQubOzU4YsaY}J4q+A57J667N-}v*T>MM5{rK?4a+$$O0nujA@H_48MtXLd$X;@y z5LTfNh9z@XyPlNmf6X~;tb9!U12ZZ4JPP9>%w%jJ+-IdPOFi*j{n&oIy4z`6S`h9WEA7`Yy!p_y z$0ypf=G+fBr22HHk1?)&dvAGtUD3>pg;Xo!v#jK`kSRe)XE!l+ZA?9fJ+oCEP>7K> za^H_nU?rJ*N-9m0Nyx03S}0;W9mBH?spg1>Y*9Y42it+%zDT@FS-V+ZSR&T&2unB; zSC^NI`oI_OgtJ??41?@MK{_=ZMl@p|+ z|3b6hkJFQ*^1!ozH?gsnXQwBGNAhf!?!z-IP%Ue3zKKE5jDYiwa(+qaftI5=tM^UB`L zxN_o5Qe%iF-^~R|X2}mmik9)MEKa*U*-ROaOo>YMY9j9m3;#1b*_9!%T1|+;-PylE z=gZn#4fd)+GClGkerRZDH3k-V@aNPNE0E#}-o2}xB+_ReJcz}{0bej@Cln9lGCUbC z<-_6A#2P2)V2m~Uul@1Bq0b#fupD%yopCcciNB4swMb)b(nrr-lLZ&bnDuIqFS8QO z`yEIAQ8{#>I{E7O|-re`v7GlEZ_KCKhgf<+Iu zEcYhon(|UZ`3$gJx$=v23X-)G2;we!d1eE?g?(S!i_$$(H;i>%EIugRJP&)oK_{pA zFqd?$>zv~5@uMax2)^^eZC_lI^b#03@rOm}<7k`o{qa4N*!71_I9YcnF%|tpe#-Sr zS!qJ?c}BMqRdQ3Zo%6miDmZV!VkI*NCh+s_@tM) z5Fj|e?$zr;;cDgmv7otEeAhHqD<4ijR{lptK#y9=?X$`t7NUvdl5oBfNzUHD9-F~D z&sXn56WvDVZCNOlX2-7pGY67cC(8)`!mj^v<+ql;7z81}MNdH^dz0i5Vzb0+ti5|s zamTl2DVsPN8gg_cnR_toZbk^MHQuiZ5lim)dS?q;$XBogu_Lz_Ud@fk9Bpm)>1bHr zxDF&1!NC)j4Xj~y7tI{4n&C6TLJ&@rQ@&2Wg; zPOW!k)R0H3Icj1fsRYnYF=+%2#QOIlsMU@u+`uIP^Lr5nIcXUfWqZdrzr7b!t%$X0`m~ zF^V3}aBc2)wKshWh(pY_LHRKUi;Q;Yf=-rz4a6GO*wCWe77< zGOXC*HfH3WAQ=))DG9z`GC|byimQB=%6b+z?k?(0zq|Y&O=G3TTAV;P%>Wi_#ySxl zQ#pdm`)($*5H)SeO{5!#8hNT%Bo!#z%YAF9c4J%agW;Umm}ZIRFwaifCz))|y%wsK zE~FCow$vJ3qa>!T-d;_qWj$qXINm-{`=Z<0j?Jjtp62+5`>n403iUP3 zx{BTEf9n9{^^91fJOUEaUfvhxnv@>;!xMdHj?XPK7pFXD7QHjNmdK*BYU$}%Ris#0 zgbT7+YxkJfS&{Om3~z}tU2JM!3nW~fduH^`f2;G_)vKLF1BLc!lOiqOl#}x6B+rhw zZ(pMGSmvdmp%{6dGhp?gJ0InVk7UEcR8cBw_P+xF0; zR(E1mSjMcF*6FhK!$;_Os9{sObit8WQUm=2pB)^UIITDnEdM2>j9#@*MMBugUKO&9&(ldUEixI?Lni`*Yd zCbs2QyN!98n<*L*{vpa^?vGg}Ity z_G+rHAY5{%py1{Ea^<&QYrZq{92r{K+HUKdEbkmdG*EiN3!zz2t41nPJJO)KqR|7^%tn3NFRv7_IvWx3TK=q)&Wwo@2O5O!g_AL%rvGKU6EGkCBpRUR5x@>_KW2 znt%v$@TuMtOQe{6RRl9YH}n8Ab)2o)lggd zulA|wASR|esryqm>a7`gQ>8Rr+Sf!QC-f9V{`gP|v-Mb-nVHERbGLn3!oCEp9-TYn z>x4P0+4ub$a(S=3tj_h{^!6?^xVg(vtVhiHj|{4VbK!lY)1>J`9m#mvCivASjt;uE zn_GPgmGAcQp4!%7-xUzPJqnfoMlss<#1OZT;^V*L_gQkdpRcabBrc5a#}#$^zkfpI zpN|g7t}g~O6Z5&G?&|Bx7SQp@UGb*P6Wa2g`8mZ-6O;0@jCX|Zx^DSu^@Y6Xo#pwm zXxyh-B=02W`ZjE|wQp)^=8wxsC1a=dH)ni|gYE5-jL6!=w649^RyGh!QNBEu{4IDj z?(WL;D&dpr{^?&05zlXvMK$JBXKl~SGb$Jt)@oa{K4#pUz~$70O;%U3TvvR)ak7t- zY462pag?!>)U-$R9HdvB&4`cwF^h|Ewd8g`j57*6DxkUzWSzU3RmJY$0!b!apV zEbmFI4lL}ElujNmC>@#c+Qn6LOjmB~D=-gqOtX()mkCYEb43ebj+NdT<*vFn?*-$3{2_F z90`fxX=7?>3t&Dz}b0D}K-mm;H1=VH(TL5$~DU^8aKpVK_ui6P9p1r{VF{47A_t zSF6%I1(^J8>P4mqS`?;;2cb`E3v> zG3RXGnjI!u-id%=uKT|1JA7Uec*>ae$_(tCuEN|1;*quel;70S_(luk)$kVd*ukd_9?1!<6OSXx@TyCs)~rTK>6`@YxzI~Rv*cUgAl z%$b>Ip1AM(SB)RJvP!{Z=#PpoUt_U^BHuq{Cz%(@!-lenZ!IjTkq8GHh{R^8qZF_^ z-ozi7D(h-#ic3eZ6xASlhaTvl$lIs63+Igr7D8`tw+S@d%D%aA_#U?16zyHWIWI&_ zwD#5E5#dNKjp9_uxKV9NuhWq^KfGkt5UFVAnzuHyuon^bw)@?i*(2W3zOv(-1Otuv z*$?q1Wkfr54BGhPmtS)rme+oMMO zeF6hLT)Sgz=oUXuRAtqn)pKTPSpE$3gLJY~v1A`j8dhJArXP(k^yRwAZi?g|rmwHeiiJx&HKK#E>nCO~{R?A+ye`TV-aLw9(IvT0MR4q%pBs z|BhNIvK&26_%T-a+PF%gYNU#q1RSd>J;ZoaG1fb{q_V-eFco{g7)MXOQKhslSVf3+ z{P;;c{rX?ecl#i=H`DARO75}C0i=@(MkxUlDn5aW{YItgbSFQ>F^|QoK@Xz}O_AR^ zKUG8krPnr=MOV4*jOJ;m5~^X>pqO5?q2!_CXZo=pF#)sk2>+QU5AnY%1?L^3>iTXA zuv}C#^=7ZSlDRR7g=X6f-*RtWT*}DXf9!A1{=?zyhjWR)G!*NRvMjyrePMoB;>#$V;J4u@k;UhVA9{Z=V1tGdx$X1dG_-Ah^lSo zd-H{6O32uh*gCnQ_8^w^w?Nd&l%x2zw?#N)J6k+Y<6q-8XTwGL)eOSVBy2r%(xVna|5q7LeCjohD7-+rjsAbZ5cvM}BO~T$|C5CCj|=#Jxjv8p z^nbNJRc2Iu$RWRTkDM^br$kl7Pl}yyaGAvw%s8cfhn{g!_rfQ)jb~pyVRauMI5eMt z3KopsX$1hjU{TtA@Y#lQi8{!R*#FW_;8y;$helyF*^BXdi?1XgNHIg*(O#o?su06C zba2C?Hs$8MFIHc4Hd{GU6>Q&@^t(Y#n%&Xw2>`m+9;!;sSpAIdr5+@~#Ij%2JH_F2cY{RhCV`20&ED7kQj3d-%{XF$Zy}by7W#wd^Nga_?7g5R!XygnpYLif|it@DmwhjV(hq6{PZOvh)JDi0)3(pGx%fz6OEJ%Lx((6fR) z;A9<}^b$yyw06s#&%Vq(>^K;$J(yrP)4gNxJ|E^Ivo;(Zl^WFJT0XuYf3=@WCx{e8 z?8KY1cg-gC7~_s>MLbf>$fs(3S0evqaJ$QO>q5wGNlY(g9SFPmqha8V(Y_1CY*+pj z<)2M{CyfxZHX!}J{JueRwDs`4T`)-0N+q)i?73Z9tp4$6#66*O)U9JX%m?s!G6I zeCydjb{~Ud;ueU*${8M3(mveE+1SqrBu9mKt`Ney8=)sdZ|hFSTdXHKenYo)MM((a zA1vmO#!V4&eD7NjHN;`og5){vOsFZxDL$OTeh%DYmZvIFQdw&*M8WTRXA};;M>zUC z6}dZj`2E%a-)S7ptIm7uu85b z`XI~BSEg?wDxW_fr=`cTXEI^+=79rw-LJGEEqE4yL?~%jTeY5_^Pd;0@VU~x;I|V) z%++xrFXFXrTBB$rA(RSB(dTsLWYg)f%0P|&M5~OdT`{WrHOO7O3o{^&2t4MMq;7}! zx(bI$8IvBml0IsuTz;-$;MT4F2=fE)Mnjw0K7Fu)<`o12f*EfF4qfL;tMgrj(`F+k z_&BaT6VQY8uXs+o7TrPJXPoAI%T)@L@0*<71R6_-$W5bea;-(e_&A;>`6TFYKKw^7 zoUh4ntVKR@Vrq^r-ULG+FT&?~72?b8wI#c>ANc)y0iaWo(2`tG zyG$pVCV0^K;@gTn7Bg(`1oY z7)Zf4Y2&V;AxZl$HU#2j@KezIrLs)0@s(p0*LU4!1XT|WH)lCjWzU<;=6>fyct6#p z@P0jcdi$9=V*+`?Qh4l$&6cM~y8n~#O*kpaKtSRo^_a9`JVA<0B{q9<=%Q9{<$FfD zP!_qe7b5PeFTr`}Gzf?}3mh|6cY9s>Cd|1D?jfCXz)#m@yxJVjWJ>NYu;MK|8I;F< zd7s8Fbi$!H(zHASCZY5=m&wZ6~h z<_v=|w4p5FT60I=(h#RCQ-%yhe0JlE>qUN!rdJjH;r8}r zg!Lb!iWL0kKQ zy92ZfABKC&5dMoL{zMyp?yJXLZD9J$;>)}KiRX9uvAq=reetYy>$g|?T{p-@*s-cQ z*LGSjA5Qz`&dyul2&PRQ-`|f8x4r2K3^3fm%YD|lQOB{-!4e&l+ZH_?Uf&INeQr0f z|K{-76Z29>84QXD-6uS`2~tWHo4kaoZ5Mw45_uq@Ikvm|J1I5wbl3adDy#ylyWQf4 zwta|~>o5&*mH6uL(D(2-{f$KFAtah42B^+~z*O0MAUvf$H#TljHAVQ#LtvH(d4Q= zuBS4qUR_f;=9VzZ<_S|y#6IEv&^a|l3Rzle{RR=^x^51{P$3AHmaG7S$Rqxqk!q?r)>X`8kCav?)js3BZpAmh_ zrdM2k5Yyg@sbOdv2Cjy(C<)B5*!`!Uv$u@CzO^Rmz61M2ww_h0T+`66D>UBBrT^V9 z19|dlYjg>aclqa)6DZWNRfYulo%Hharmsu>vcKqikhtj@Am2(ul;dGbFdS za;Pq=ko@?ba5B|8(KO0bsP<>$p6)-15INJ7-q$SxSv#jiFC>a4QJezw!r1TN zy0H0@`TC#jt?5F&)}LGzEv8f*Ehbt2e?`pgT)#sVp>~fT6z^i`UjYFVkRow_off+X z4$6I@_{SK$tNfIeB;GQKk#AW~BoKwanlY&MfZ16mj+dCYh?g1%5-F3NPXC=fv$%Y> za;B%kPg6_dc0t+c@TO>=enW|sH$6WOBes+2IB(mb?n|+uoiM$>$Bj~G{bCCV0n>U9o)73y6laHNxU$I-)a`E6u_d$i<>y|5HpMOkF~IQF zX)5e3uPuy#vJ2rS1^d`Kr_pRP<2ux_=dL>nOfoaK6h5cCC)e|fJgMP4<-5^{2ETY0 zWt8m3MER~K>Mo7tdUzn19dlG6J)}4 zh>ZlD$vZ#8e>mG`I&USUlEpPRzs?o*ZnDZh z@BJ{dPnXwIU=xo({~=KA0`hICu+)|ZNAFEJ&JX3U&RCqC_)-d=?EvPG4X#vl>D^vS2g2-?@Wh-Af~MQ5Q$qU$*uxs$9qpKd45cOHWs|w zzj(*>qWQAi#cl7=^AhwFOY&%MV@ic2YyRXeRQ1)bi#&lj+o!#NP6cIl1x;+D)73sg zkE9p&SvH46`0%4^!DMGdan{!!uT#g~C*A;TSWU)NaGBPeEHP#A2Uv0oDdq{=MB%P{ zkWX(nau04*_?9J+{`eQEvxj)iSE=FcN_1XHIsi@wdr4?j)ntFwuhxYe`;`vd}q zi2rb*1WimA&;T+&WoE?d#_ak<)6qwqPPctLw(~LYjjFTZLd6%(Smo+ALWZBu7&jWT z&Y5%lBvZP`J$`R(P(Dq9fwd$bs3`q&YNvSg;=QXRspLLCL?+-{DUy6hMJPk2<7Aw3 zvx|-7vjFv2&sC2|fm+BuTsZF1>a7jd5HQj27i0*+BM)!KMy%K-xckOWL|Nuu?h2ifx=&pUZg~aFRauQcrX+8(O+j z5g0e_Niex!U%%!x{}*Y_oy7NcXgE_+jr+NpGuMGCCzmo8t0V3uGpncbOX%#6Q7b9< z3$236e&=|qB!T|Iv(jh|5*BV-R{%5VcN&-+{nh`-|HG@*;v%-c9wmcI?~dU+2)Uiq zrzK6_+*xeB*LjH-P~in_a{u%P zzk~I~KMfn^>G%_o6vV!U(2C+>hupT6PqVV0(D?nk!Bg3zt32Zz@|j7SJ!D)pQF7oy zc!zT~n_wuWVlIX!2TCcCzb{LF*-&Ln<Kq}K?f4ZOx6iiQMxCg(Zvd% z^P^IQ`ksDZwl914NpIHk_xeMplTD>l-MK9C`i+EG_q7By*REf_!r*G3PuEolb5PWB zA?cSIYAp^GT4Na1bx=+0q@6nfx?x8@KqA=IS#jUbKS z|7rp9XTDgexBH=CjHQWqIG|Mp0e_~wn9N6@tzkQ~NV`onwwDd0dazu6J*k5n6F+n-I?gfeQ02NWNC{#PZdc}i%B!jfYIBK({XN+9+Sf_9UDrXks$ zK%kR`^Ufg%?F7|Ew14OU1jr1s;KN=(%e@6cN7f<9C`{}D1cT^g;Sx?%(u)nNpK?vZ z(TID+8^Hzq955bQKlZ~O220PzLrf(JKlYmwv|58x-b&JDWi=dgbuSE(h36e0p5e+N z#&c`^jE;pI{$B2#N90@O;D8-WIOQt-V^7n9q3bDVbF=LMU z5o#_RHo^~pZG;{*U2v_5y4LUi1@0=jXCN7FJ;t1P z+%wN+kS|5p55 zcbo7V(r?V^0a!lCy>v5oKid2k(|ckP{`0hzxr~8Y6~A|5ce>*9r%z(m3-G$VGGA)f zq(Gs)TC`=m+F{d2PMzU9K0Tejrksf)K)WMo)U5R-)6e?fHsWK2^-{h^<@0IDuKD1* zr@udX{HF99_E2lSbPt9>6g zjE$bH?~g;f04@)nax`yhW%WCMrO_PMQH)$7JWI)1l%L<6yU$k1{Ke5mMcJ6c4PO;x zT~D5XUuUxxG0svW%qIWS3%$$z(_+SlS6_gdC&Fl_?Ybh_&cI?^o08ii_0*eUQ9}H; zvcWdxcGKVOFJTJf9mWD1Qe7Oa)^>xrF(hO8o_vk1paV-y^yOVIJ)5KsGw1F*emj^x zt>vZ5T-1isb8_E=uhWriLEnab{A4>uN%&*Z~I-8MrU9|v+JhA}HGtLCZ|qn47i z=$+B~KH$)oYzyyFj;9kpU3`4^_dNsBE}lj(^oG31$fk<1Fz->-h0dplWK|~N`IA_i z1^6`Six=GIs*&N|q>u6NR(}ZXMWQf1&WcLgFg@yIcL7yrW1#uNsv?g;V?SG2eYo}K zj@0tOBgP(bkdV|MBh2#<;87q$UakWinx74}lC`ev%3ia~<7K&xKw zKvMunX#K)b)2cI|V0U0i)SUQJc z?DkU-hQAAXv_Oa(c=(4j{WaV&+RFyUc~(Z+_!OP%)lKbfh>Wv;Bhuu$Zz}T&t_AJ9Y5V*jgKNos}NGB1a3RdYm_S}z6m z=?UY|&+I%b^erhARwVK*i<_I9sp=>Jt(y)lvC7S}XU~)rgb)2IYnHG~Tv{~M> zW!)U;E5SZF{BLIx5c-tRP^S)!5xGGTm`R!f+ujKFVg7Xd#{8H_M`bhgb$7-te19Up zVa6u)v~g2+&rSFAT8NbnIt?9EXMSGBpn2>q>7L+OH$;J_J7sYt{CB~F8d`N})tHXE zOqGVKS-z80NYei_rg|jOW-tzo?j=T&>~5cJseSG6nF+RHAe)4js(VM9N@3>GvUOZS zDAx(=4@I_vNC)i@w|9M~@!R&kR-*=i=#W|lS|vsNL9NG7nC;JC`6K^zOojeE7rQ4~ zzpNUr6VUS$PMmNNsE7v6-iu>H72e?C&+i$k`no=|1P&aRrqb(p>`yPz&<}5Yl9Zb? zpc`7sav$r+P`VH|;`ccF{hW-E25$3v>fj59Eq zbSa<5xk8GHZG@u!G&r|UwBJRh9#n3#2~K4{=Wcx?e*E$5l4bVkzpIa513c^spJSH5 zD#jm|)HGX@sZx8s6i%sLQN0p55X9SA^rBmSj(Z3TJU5IRoQz{SHd6oi1GP+5=;MY| zb3nU0vWA3;F<#ex9<6tW^2sdfr~<~Y-HG|H60P}&Ba7!n0DHeJvRi%bctA}|)?KDCoBInz zh4*wvKs2<a{J*(xi3Z<7rl7{7RPOrHjd3l8 z`mnNX##)KbH>}Z`YiNPo9Ql=&?Q9AbX%JnTq2>dLKQOE|8F32Vsm&AZ@DQOAe~Fq= z<#gc3W1=)-CypS9fYZ-(R6pHHzEX!#_zHUZA_4tZ>2rllXLzdlD!F0^!#?ID z1Gl$`T^8r24yd+u9SLvU+aiRTTY42IE(sybxrCRO&63x4!HWAEN%6D1F7EvP?dd3; z^o8~SRjweWw20cobW3A_?-;K3Hwn96b1}>Tsxet6`$a%R6&|Xem|VVIEk>}2=7p80 zL8+#!IFkP(S`gEZMq@)p+qDYx)H~K8c*;|_P+D&$3JY=g*kniAtL@#XzK&d{zon;I z6&otYyNG^sADkEdnFb_JmuXQ`9~7_&yXnyTlptJ!CgM~As|TUCvt@(}^^e9Q)?u>a z8o2f6#=3Xti>z+Y`MjDJ&lw?Y1{(jgHOn_uqK;arZLraEkDjxBaO3mLU;GuMW_x&9 z^9kvJEN_ybYIrUp{hb7{(s8P<>^p+S4bm2XDWk(#Z{}Akw^463s||mKYcLoMw3|B`sTy%x1aEI zbgn&qOoeS!m!o&4#s99y&@m#)Rt4DGHHnht$$P$D|BS;L{yPqbUC$kFFCmOJc-Gfr zKbp0=bnUnV@d@J)MYt64;;Ilv2@j0^_=@-tBzTk0(DksZ=gDt``-@jqT?XcW=DUOK z-{`hmw-?`spotVuy*%8syk^zkT16Kh+*}rc_4T7qbERfiI+y89V5)nw6LG7J6g-PE zY)+7Yj%dwfCK)l;A-R*v4aHb-D<*Z273R!v*N?zI{iNX8fHU`>g^#|sbhO_B@FDF@m?#eL19m$Ti%Tu zAifMcFt-kjTC^T}?tPP6P$-m7b7v$W*NWXC;4^}`ucVH$p^|<&O-HVFu77N zd)U&#g$>u-4ETTiDSprp2$!&_tb59wWENOe^eHC`Yl0YY^!=MgbV-StFVPmNbAeEe zZQQAVo7l^pH7B*5tugC^=`jC5Y%XdP^tQ@$8%v6=FLwADm;0qz8npzDwmJW{SV&*$ zTY51Qv%~pL$=~csyyPDF3C|Zhc6Jfu0L@8RdE0lG5=Eb%*l2Yrus!R0ZNb&})l};9 zQw1RH*`?L&;&nOVFdOiIVt*K-I8>;Fd;PrlL}%OihB;e?4G`Dhd))apL4ikgcB?30 zGBZ}zm2XpY`&Qk{qf(=ZXlhB-n?rkKtI}|zD?x;J-$}>;#$2>GBl=-uU{>7&W|q+J z(t*U&P(-3tPFao4wpBOIYmRK4+zl?&1lB0cTQt+imZy3Iy%fMF6Y{U+&*J4LrT<5R zSp%`2(RE**Aega6Ab79?UTu|Am?Y3y_>EX$d+mD9@>*q(XgMb+8{<~ccsAW$K%U)hzN?4io8M_O$B~Cg-X?J*X_R!PZMh=% z7YD(gW9;Vl7n^;$NsFps10u%8?DJ(=pW6$sMAvaqm$_+QnPzqE_4!*pkCK+~d5;>u z#f-UJD(?CnUjd=1y{00RGi(K|C6TRG_ zgli{5?#1g17ehVeD5*4Ghy4l}=oZQbkCJ^GG(7MQbz_!iHZ7c^&LpDKqdKbJc$FvF z^0`mBTj^1D8X{ph0_zrDZ|!k^X@3Lx_Z&+MGM&S`^GL%-<&F?zT;cnLN_UO5cPjNu zMJ)`6^e;77I_!?JQ~Y^5w0`=-g7z*Qb%s2t@$N*ClfS2GwrF#9a1kn&t`oG+M5}Cn zx@KEjj#mpQNB%A;iLlSE#%ag-BjAYTb(oZaq}<`*hA zIfbRnvwU`Gj2E_i7Su}m+fFOGa_^`$9{Z*|a#i>jU5T~uSi>{99aYNno4O2;V^VnEt1lkEpj4^i92YcZK-}$)JONqgHcCHYGjvZV`GEw z)U9%57*Nc7WW!gW6q+uZc6SZsF!p58Wb2~+LAy2*B3viN!w#=F zZ_l}Rz3Ha!roGpr$v6`(SN`;MI|(Y!t+ubnVNbp|ZQa?S);@%pR$H*afBNLkei5?a zOVCSmY1uWw-!OM2z%e`~kjndZW3X~3;l)Y)*;y)2N$BCb(YP#%frW(g=7$@9B3q-CV8U1Adb0_U-9!R%Vxv^{ ziSdTzmVMYO^i<&BC|~A5Ih|?xb08^CsEGN$M{ormv_yz9>RF!onbiI_f4<0#1tCyr z;_D`GcQhy4ZApoYv@%HfFe^7+9p~jLg(~=WcqDrM1+Dwi{ks6?To^b%)Efx~oBzyD4PjAPbddgqR^KQBf@O!RPh z{VlBc4dvA`B@OZY`_zkd^8cm?5MF!zd_2T6IW*+k*(u>=?Jg}`j^}nKOWOLFM7TAi zJh6&&=>CI7i1%4HWhrMj{C0blUrfJYi}u_mRCov98wXv|n2VXNT`Kd{6fGep_*YpRV5&8yU;mKoFcxD#mUQ@84z{GZ`dw@L5m# zF#6!>(QQIE&lDBRm!+M1cX(>*=hDM3tEMEgYertKE6fz!(`fyt|N4_Fw!f|~9_#yF z<0(0e6J&`;L!;+aRvHtEu54#2Eo6+00DwxwAKaC&rK+p>;-e&c90p2RPPbq{_enWHqy9MFlDX@UCdQr*LhQ`M~6}ckq#=YPZYzDP3>0wsxxCi!M2@?I9kOOJLAl(NBVWM;isW4TM|yF^tbr{u8u7&8iP`Am6xnnSPVKWzs3Q$?>Yi=WQsZ!4 zsj~k<{+FM!lj7A<@$kDZ8!5Ts)%$lk?PDSo`p1b_PmVlCrj{ot$fYctdmRF zot>PlkJ-z@HpqCe%Bzy9%aw+DjfY45Mt-o%PDur%-gDR^5)oh8n2&9$Y-zbkQyz+nmbk9M77wHR^qj@M(5fmoXXs_5Q8QiDKiYhA(e3aJR@| za*Exd8t+@T0%6IeDh~ZUSE3|uR=-pb_`>hjZxl*n=J(Ve!qt>5yP8&+sqU99x-WgX zmpW~v@My}W+`uuwt9eR5Y9spdPauuYYSiV{*pXG`%J;m==*!uWk?1N#d~bm^tH1Uh z9zqb>zu9?AZdKHA=b1F)P0p7L69id1(w#pO+xy~rr2Or6gs1B!%2B-GHbsx<_I=#$ zLZzyDpD5hUX+G}R;?=cprB``JckuzQCmOq(Zdd)xgNc;*EpOjc6?UfaBj|*bszj

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/115] 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/115] 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 zxE@FjrK}!m=v?aysq%ieyqC(kYBBqop5>jvg~vKAjg`-)piynAFuBMmZ|bLE<9p^6 z46<@?JO9Faq3@LWj{Oq9s}Swz5k~LvX90 z@0nLy1HWWU+ByF>8?{NRtll@iO;04E*MF$y%KW7b$Qd-u2+Ka-; zqkKb0zCo2K`!??%7>*y$n!lZF}GA?e^K>v5YPJAfBKE_13%2= zOXB}V$9wesnVM=gE?`TiG2$=A5fyi~U>;WA=OF%7rd-ALuILA4Xd=n6b_za10L(AX zDyZ3pB9X$--yhOl_@S>{IeyHM+B)+z&h^)0Tl78M4lVYt3Cr4y{DaQhdg#MAh(MNXb%^M_aKd?%4xGW|8q9287J$|yzw zRDB}HjD?qm|4fXYD>d0Oeve~R@+$=UqJPk(FT3t9Iv(!8jNzY}txB7koqf+^k?IOI z$uEB29Ckcd-`w1!JmL>cNUNjkiHxVn@(*nQKEG-AQ$B+TDX*QJ@SR;;^nf2zd*=wx zRNA`6Ml=ClS1n~Twf0xRJ!Apj9=@XuJ&-2{aZd}?JV4mDZhKmg3dcJ!o?vDP#U3pS z0?9w8UAr`~CPPnH=J4V3Tty&JKdqHo>Prq!C^8RE$PTFwB5r6j_NW|r>?fCr9A+lU_*>bKiq0~XMemu1}Mc8P++=D)vvZ{R?kW&S^5In z`aT6H@P{ByzP7eIzeOyEfBwWmY!1mi%*@W_m6V_-r=<8wOJkiqtgqhWb6||=B1e`& z_(Vu;-t{a!1j^+5Aqh;ESPwktCW*kmmL*6daBKSv=FQ5@%D)o)I^S9#4k~|J+le&L z*q2*|fa?j$s*DAz4!vhI&!msvuXV;^^gZUkqnlIL?Jd>njIkwYYn&GDcRvuGBP0BR zYykOBq8!R6@pGPX$J5CZ;(``0jVO+1MK1UDasMt8W3VqSCbm00N95v}|A*(^0fPhP z*bv4A{rDh`Uk(YXH(1fEl+OHwMMj!PVWmlq_UomZdnJ~6?4O3cy?3S=!tfeYhagqa z$km=LCH6@Y9Vb;v-nro@j3q;&+zjAVY z#-}9w)1l;`RB_OUs9eiCdbcr1zjRSK^G|-LD~?a$1%`I|S3Q(hA)0is&@*1}(Ng9dwFHN|KxjGdh|+RGrK?>JhKDs+xZvbfCH(-F@swN}Qv=nvBIr zy6(l)%oq?<4bfrq=a6M&mWihiSBB|uF*~%7Jlkk$n$rlMK}xzVvZB(}EJDced#$SqW)|HpR`A5m@5MLJ1!A-t zaQ)x;J_y*$FG}IrtC^W!+n*k<7aM3Btaf~njCVh|{Rr#0XsEuTqIY2FwE^;GUP@bR zt$Uv&4L2X^BQt`}wu`2<8t%pv)JT5``fvZ0PnWOm-K_aFyiyxG_vhtHt>Q8!(Q&HO z7mse|JgW;5O~oYj)oGWMkhnFCP%mA)(}-4Yf57{W{8aLi6Mi?uWVN7y+#A`9Ya3%$ ztX?+3%BaF&`XlyQB&|@MyLN&MwfBKL7g`?1b~nO~$iQiMRk@G00~N9HB3Jzu5oMuXy6c;KgDr^E# zrbv!J5pnTnV$-UBb3+4Bnr-GEW0uCAF=|TllowW8I$I;;#LsPjV!0o2O;t@!B12t> zJEPhzM34lo6LfpE#j>VFL&nu3Dl zC}dLthoBTKe^<@0Ygf}MQG_qwJJ>hgXw0gNQYqL)2FVeT1VYUFU6%Kq<|JyqPGv=? z&e#bOCTEOyNj*1irnksBwNuJ=nB!p6{t*a_X<9Q@ArO9k{t%DDh>2*CFa^jY!@Fn{ zvBGdBi^^A(5tUUOo48D`nwGsPKK|}Tb-us#bl$6M+LXlsyCJMkKBHwyde5*1Y>no8 z992?Oc3CTW_D#Pc+^dbY%ug7uil69Xsn%Q5Zt~5Y)anBfX^18S2})Uw%*4~pFotJD zz^7fzXjjaH=fcJSSTD0TZ=TjH6%THkp_Ml-xi2`-LSV_gd)*<}Yl~l9ppaZ$4jF(C z=dR>RVPeK zBQQ`NmHa6Mocu&eBMC_rMt?=i%(qGUM)2=X(&L3xi$8CB%xkIEk&kF#q(2zu{c{gDkIv#NX*XHwcfB zm&=C_+VX}SOENLw{c~bLv(w0qXdF3}g-q?amFibOD`E8yhZg7f^iZU~dwVx`Z0%mf zH`?a#XyW3*oG;OA4gzcs&i{PP0m#!`=o5NNXi&6{MGs3rfubZhi(7;$79c^Wm^3kv zz-cEhMX{1;f4mqfMMPh!s=C2eWb5>_-uA%(T8i3J$;ZNRi)=$wT|cWZYlx-GBsasN zbpJOXz74dM5F1uA<)04hF2M0*Y<3nMXe@bncp!iX1V6?aO&ea3g4lqv;$-FHs9@#> z>iVLZ1{r?)VbJQIrpO4Z(4Pjcks$t`DAq}+aS$7Lz6Tb{lXL{W_u%-!+9nMo{bG@@ z!<84@h*huKupnwW9Lxci-q9n-^Jt_y!*=J)34RXX3_odB^v8bIr|(?=!JJ-O%kRJ) zppEB7;C^tFODnJ(^YYAKo0*yUGM$4ukCEGpewZ>~or9tsG8%lgqx*G+_al68A|5ty z(fDspUUzLPvHOg0^N^J>tObwK-{|#gA?<5WX@BodS7@Ks1W7u52xa=)xZrp?@eirh z>31Mok_vtBk?(!%rDrzzrA7?APR$6_p!#*l@v-xJPtRYBrlV zQS8je!>aAFvax|Yk^Zay*c)x$V2Txn0@_*VLkNo*!Zn;cz5}f7dfGgZHOCmkQIyF~ zH*h_%LcU%*5#Xu)IPac#e{xc*0Rx)OJ4g`tbk+J5n7T~tdHFe@HRIQMU@I%=wRd;d z2U3`x?d{S~l+pSxFn&RW#di!9=zE>l_EW^4z#joUGu~r#fOZtQ6Kz~2(hL_L-y0hn zJ5YUFH%Q!|uaxx7W72qvss%N^^h?Z5n<+tlf3dMq7@MV$ikW#p-sAvoM02pmr*B~J z#=~PSrv3YFlAw?D?duP@EN z{e>;?LAjHnUl&=d{R3I^#$OhLK=v}{_#;YjWjNFeCs|>ybM(@BVp9YLOo3O!65jd1&qE}W z7L$)n0jImv)H%_+TPSNJxAO3KNhzr;&Pweh(%drZO$@1L37Q)xmqF^?;}I22W8*1$ zRe9Ymr9j`P?C98jWhG6Dey^nIQo|+i1UF~fBO4v0Z+xZzG@JNBrtyCA=f(t=p-8M- zKeLF>4*&kDgDwPY)ah~{G3Nm+5iA1#!PiX8OskJP2<^ke!MXgyV6$}dZ~wH$#CkNF zv~|hj`5CoZHTLzxv9VXV89_$G>f=2|tg`$b2M@2iyF2hq1hM%obaS@(d?-IhORq2( zdt~w@D{~&apPmbO=)0H2`Q#}sV~|#t9w-gVkhI?$+|TG*UsbYblFH{>2HpPN0+B4z zwNdu|NW4Lr9^|7U6tdsMu2JZo@D5%b=al4Npz34Z;J2BvX25Wl_QrdF>?4FM_zWGYbJNh&od=l@xiVE!A z^T$_QZmmpDqk;*Hi~`|uyrv*Ct!cRM_0w!T%`HO9U;Loh(4{}J85;MG$SK~PEWvkwT2%!x|fE(oHmQ4;6>U426-2Mf2~)7 z{sYJ#zGcI)a_Jdkkt;@A_S?#?BqLqgK??z^+X5R+-vd+PPqYn)fSGhbMoApasy!ll$}-E_Ra=2ixrnMPkE{@JCq5GwpA`D2k^$ zs;{kGD=FOpLG3&5*m3s{<~_buT~gA={Q~2+l2KK4HF}uS`}f@Rm_-gqHt9+`xnaR+ z*%@V6Z2bEt9|@X z=AasWsjR%R8qLf2M0C{&dTw+QnQ}C#NJn6D0$YykNYhEJ<%6vx9bzLsS1`K9aH)7rkb15};V~)6B5DdF^?IlhZG5VfeLXf7IoHs@9pnkprOW42mMbwap z_0gX_Q0Sc~&y(j2I}`QCFy9zrV*TFGD7kka{S&kKeXzwbsf=tSiO(NB!Iii4a@+wl zBV&`3$jZ+x`#3o{nS?~gy*$M|>iJ68(D1(zgyD}VqROJGjIt+(pfcCHUh3P48o^;a1^g^tp&egeZuI}tfZHF(uuTtT70dtSQ^K&=<5HeaGCB}RQ(-aZu>y-uL_)L!F$XPVf;9@qQ8 z#giwNg^2uwo9v|u#j|PQphA4+6HywYF=Iu;^Djg+ z$cgpcb&sh1IPY-w3FH`)g|W98whSv^$_Hce;WXre(-3O4R24GEdOvTs!8K}i&$k<=>6M@Cm~|bB$4kCaB+}tcr{!G*tuP_zRG=(# z^;6Q(U_8xbu@PvqUufiN#0rxSBbMfj!4sRx1Z4Xj{+aTv2M-SO4P#jJP2(Fx=a!qjTTx58rS$y`35?8KzgoAC^HZGD$F#n$ zVj(jif3v;mu7GuSQgga)msn-Ii!AbpJQmxTyZyIg6uJx6ub<>rYt2aUK&ZZs=TCj! zJmxVK{Ogg=Qmw|1DRjLGI?X3%n2ChA3%OFB#;C|P@wH%KQFml4tj>D$8vb6(P2Q3y zoX|x6rbCGZ?MoQ!^A2+f8{3qmc@rWcv$h4KSeDI2fHwqIsDrLhER ztOZ$5pfP1mp~p69Sw4w=MXs@Ful*W~;pOzCh7Vs}KS8ShdNU7|vM}TL?QC;}s^a(V zg>=v0@ia{3UK4i%i=G$Ph}r*(&pw}91Y&$?<*fH4(=!^ zVHIQulk$L^B*7qoaV?EqlO?&=O6Xb{8%ox+OHJ={rsP$nb@&BY3ppOdnS5LBuCAOd zH9p=utG0{PKBg8R;k=jsoPhoJz3aUTORjuq`+JtY-ZBmAT~wQFVgD7+h$mju`xRhw zJP#m9AZtcV6n$&_dOEh^`L$MnA8-nOv2nxJJeXH<-67*ui5pI`smV~b)AOEx%*+{y z#%n^q1{pX6HPKqtTO<(LsG6jhI8SOz5W4JBe^90fWok7LDDk6b7MiH_=46{p(d@ns z<6ZE*g3d)p;YBB8AeiyKr1{VL;-E1aAD%yqLU67i@51fgOw#ga8WPz4u9So&E$-Rn zv&8?^0=zYP1SsU%MiA(b@PXPt*a0*N@U}VUf?pKU+{TU^pKb18fe9hdFgs$k?}1xE zR&?shk3F5u(!@>BtiOW;t|m=U-;|wTKzp<+qUSt@+?#wpjHWySY#+SW32>&bkwMc! z0^{9@PWqU!k4<)B5!HW~uQWh7%+Vswh!B&V;Uc>X8cjs*Ciw^4$c@uKd~>Z#b!VNR zVFBuym*ZPwKP)~IN&oub3h~l$&>fS)rr+LDBGp=!iU2dz=#N6GA_RLEBK)mf)$Q~#yU0)`_b1YsSZ&KH_E_l*27an4Z8U) zr8O#ts$)rvE@fx66XHTZomt(bit#WrrGekeKM z*`TuGwzmB(O`)xk{bh!;4nI)_Plv>$7(0C3)~fkentE-sX!^|iCufA8YHDrn5s8BDV)Lfrqr+&43+;t=Wf#KF>YXo)T!|?z7eXN64GOau{`r7e8LK)+();vID+uL zil1xVeLNNwaRk9J(nqTDn_!xixC~7HRyGjRVol$D4YS)Va%7o`Vml2foDICD?8AJy zzDjIT1!W*3Cl5dinqvu|Fq1)sY5Mm5D=dN)qrQcPX_f}GY@4b-VI<^%-({N7PTode zAsq&iKxJQ@!$&%tc_k(HR|s@7yECJ0t5^`YsIeUS0ClYKzHnUeR}^B?`TAPnUKOVH zqx`KyD#8+lAlJ5?y2Z1T6#?0WVd6>IXhKU*_@lgN#kO}78b~3D?PYdcp~)v&-=Q7;`eKVRDwyn6UCY? zPK)mJX}^nAZ+u~k$9<4hHA4%Y1@v6_?a{XmzoQ5%HFFyM zxmWF6ZihA%(Jwb*+Fes?QQ*XQoqKzG6Y`yqk$`3}I<1gfkC0qaG5gyn=AKvF-ink$ zl@lhlbEGBk(+(Np14_qRANzl>?u)n$dE?+PBF&wZX7bO7;tgERbA8jyE9a7qHfZn} zM;|C$VDLD|xd0f5?~0@egH8*6y8T!m3BX*oPbp>;b%>j=9toCN8-Y%+x3>+|Nu(#- zAU0gsh(TAP-*MgGHUW?+vdJM??yrtgWsD^&MhMCZjiKE$$`gA3*5&c>O|iCmI^al# z_qq4`$__8^D0Y~Y#y{zsZTv%6yPX{H)^vX3os-j;!3)rL+eiJE1-plsvmqc|NzxXW zd6w{8x3~`8UHsH=Hzda4TjNWV5!cPg2lnvaVd)zpoW3|I7jeB>ma+HIH^Bin&sdl> zl#^}SpDjDmQkcK0`Vusxf~4D($O*c=rlKfFSO*!K+P;}e3(~~XzDHE+vto}1c904+ zE(AV_;(f3v8t`s=f_WhpB6eCWX(r9)vZR^z$_+C*LGjPpR;w;ghNekLepbxDAl)V9 zNS!S^qF&Nf?e+ZV$nbEOz@7&3e;BzqVk=U52ht1YtB03qg|(P$ep;l;Npv|Q@}u^F|D52E$ArgAvh;4~yOY?ab0=je9Wnj4^as*_A%{Zby2sVZ@ z9A3B_bDv;X;=`=b=UAd2Yxk26((>(g14<+d@Ppv+6-kxZMY^%^93oOWde8t+KO>}s|Fh6cT20g=z2Z>OhSgYP@c-w8AoRHID zBeFs^hgk`s6rK`&sgYbY zp|eJUO9!iC1GzM}i;J15IXT?JE>gn6thG!Z#7fb+udc4T>$O5^WT^eQ=RHY6d`OCD zJQ32wwx-x7SItC3EAIi08<%Ya4mNSF&N}AoP4|8@hFGc7=5SiHw~+hax!+n)`e4Kt zcy9S5J|k24I&fDD-Vcaq3`v&c<0Gp0+!z!0#?S9{YOKvQ&ML3aZc}*uy!=p7mbVtm zQ^RHAY0yG;|Kpb((l&YLN5@7Pg$3TqTuzZ-Yimm`iCBp`At0fGA&$#_2x#?O=-Ade zPg@(UDW*F)`^^@S^xZPIJj16rDKUAFHG-b*3rJ#qT%iOo`Ur9?Lzd7&s(}>JG z8h}4>dqZ>Ur9~uPZL5D6T%L6)S-B?-&cpUikfjUMDuJXzS8+-Hx&2yE5F;Xk1P<4q zTHm=p3rI{V&?cif6LHy$di>7ai0~gRP&@N3A(BRs`X-BUB!SQKB9H*8N!Z)*B{8h@ zd^J}B{M&dOJjlKsT{*2*%=A-xo<1?rD@~f93#^NxwCCMbMZ1f-9Ame)tw$2vH7k*jBOoA3?@T4N1Ii3CL3P)-0B51wIK(7%ufx;xnGl%uUpb=Jc4rn12p>z#TU{jXg8jq=uQ7S zTseG7IJ|ZpT=rRk*#}-V(%&Dp1$MRk`=V)0YcanoWDoCEmP# z1VBv09p8>^fu@^{)7!#=$t=FlJ1B^;4PUpR>n@l8hOSK-Ob~Foj*@!+=IZf*JNmt& zQya7mlFibGE23RpH!xO}OSSKOi^y`=3dD}z5pfdO6$QeW+|rHQkRA-2p<6Fx*#3OV>y*O!r#Lk>Vjb)+aH znmo81VPe{c$Xu!P)YOE=NcV$Mln)cgHN23?JLimHV{!#T{^N(d2x)a1!AJ2 zP*lfQfK!>wLbv~<KyU(R z^6s*rD+ngZz3|t2=l-0Z8&p~c3V0vjEzBZ~L6+U%CWXrwapWV#p$ zQz3s!r+$2yQlh*R)tNh!mRCR)_qw*%sb$UxK}J+RS^LKp6z6D~)FR{CE~SKWuOM|r3n{gOWybzG|5O70jfKe08koC$y+QPa}? z18g(|Vg^tg2n1Nrg0&0`Ks?-a@DRy{=QDmDAV}f?1x|Uulp?&KkA7#X!Vbj&9jdAU9g&ba*7{T)gXbbOO@lp^W>&)fKeN#AEM_8^zlrQJy(`Be z>izLBB|fD2Y1Ar`UbRtKbjq}=jDr#?A2l=%ysB)c_yEh-Uq2M>FOF$Mz7A@(l4*T7 z6LX>y*?sr{?{Mf4aaG8jWi4CD_=0ykJXF-16K_YUm7G)(6uy&Maj-}})_8;J|8cub zn0XPdIx)2pTVB&zRfCCfNK7zD9}8^k0lng|0M=!|6WDsA6Iy}NAeX5-4kp?C;b0%c zV5AqWZCWNt`EG@NMSgWPK7h4W0ap`P-U-mwpsOp-|A4MEhiQ$D72u7hfgJwM%ttCk zYs60|y9SVxRG1U2)8cuu4r!J`O{t7#BbI|Cs{Bb9GIaAc?$w%c#ovmJl`5lw$q|it zS}Id_dzn#P-tCVf5^F7AQon1gupUO-*?`ZDjfun|<;UR|m2OLi9%(zrWZYdo!Kmx+ z3bvu;k}stn)D-;IX1MtIPgl{uOeWJYEgKzJ4?M+g&6Ouv7+RofkQCU)NRluaLl@L? znI2^k{f-&^cX{HpB!OP9W4w_J=%a|0Phuf!A5qGK!T_iwaukAF}F_$iI;L%Krk?d-JwE-kcswAiu82FL>sPUWn| zIK+kw+KS(e0}^D+Mj+StdC9A$-P_VKgNtvKEs@Fd3Rb(xY3&J(2Af-o=(4*hjHfqU zzDLb9ND~`Nop%A zVe7e$=Q00&-AkeT$C4VJ14UsGklXu&6 zua0(h`$jp=dA^wbZqF#+8&`w?v;$WADVDIE=kI*OP{p*J!~2n=Bd4cmacrqsS)>pM zz=X;gO%;Ex#diQ*Ll-X_DSWsJ@d-~_)czb= zi__<0a6Ajyy|uiVw{PMcLDm>Ttp5Df%$-aef-#s&MIpkwh7#Mvjb(xS6cAF8hcpmT9-6k>Pq?hHNREdSNSEk_BQ7ht4i#>)@2WDH(d5*se(p*Y_AZ=I# z5lO3GTWr2T(Zey&*Ea(XC#aF+B6R}DU({!ZQuSMJYRwaa>e;UPRzO`pDhYo-u(^F; z2(x%zMrrbKX(tG-r_AIJ@-sbSAb3Vb4NzeyUA12@^o+<_3(Pu@|LnhH;QjE(v`2g{P}xz=-KF*n7INq)cVOAiUD4a( z`gQ@|O_Fh!cDr{sP7-dr&)k?iY`I9Qm}*taY~9)28g0QTzu+1s8rR1YN`0otVi9y0 zv+}MXJy+!y;B!}*V(H!^CnO|5AyM#G6c&SYtVy@VSH}ef1?@yn^dvV52a?(6m`3T) zkb%v87pS~Y6oQdX;F!iZmYWA81-2!m%;%9ixuzukundgT)5y1YGc*Z&8@Q%gM+QQ08Zi;O*E_>Gt@|w>bT!LN zY7_bSm^sw5ig}J169~x>+bV@$IA5V3u1!vsCG*;hD9ml^f4ARpq%|IrSxsE}|3 ze(`Gb?2sJ|%}DYz^a&(U^tq!asNw;u>qBxUh#bII+>JI%)5?XT5z#P70m66r=%}U% zWWah=y@GBYNl7jsPDLe>lGo6{KRY|?1U*b@W@de@t{Py%S8wL#QkC|;yJUfzLYd-N zoY^0cB&AY%tBS_wG0Tiu4|Fi6&B)pKaz79n_i_?IqXnV^fU4^c(K6DhL}*z-39-_8 z*TmO!7lLIyBtqI{y`MY(Sf&y@aeS_yMER*kC?k_tgYvCcW))|`Dlrwi6GVvm!M23k z$RZ1!b@jhX@tp7syyeTZ3hH`1`xJY#Zy)}sP_c&t|1QvS8)(&Z#1R6O(X8E9E4^$ zt9x#LnyA3ycH*_QDWvc9dm|>E!{N}$6+f4{N|PqGx79&{*O$eiPke5-w@ zPAUh9O^-|%#?xbYNnS?otvJXid+@}q6jmfTh9buEn0NF{dIht$gNhnJcjM6a#YCrhVg@ToLcLe1bU zCqLoBk$=wz8x&41X;sX~6YBmzLkowVf5!t6gX9xuV*OAISC*fJEEhG6W;D%eGi1Nq zayt|%4bE@(Zu#|i^cc$C=Wracsg5M2eR12hG9tj}{1nfKjmG=*LoLQ?bHt-&4}dsG zCjubm+UAx25dab>U`3TqMP;4Lv4EgRs;@6 zjhP*)=}N%PGNDqMyB{}A(?`Npfjrbbx=1pDOur_9EHMTrsW00!Q9;b%lK8EH2O~r`IL*V9d z!OF+cz=p}rBN&-~5{f1B)mTUfKB(IKrdN0*cy8*}n1g*X1Z{o})b4Scdgl1XH+cB( zSp9yi#}jGl`OAo#xjI8MGyaIU5_5`$X$#V-d3$i)WzEFUcvB}-W8L0bAm8-&|7dA# zu2yA_nrESguv2bXaoIIarg5%AhU8AULw2un_qEb?RRgwOjQrwjVsVU6Bw}DhFD`!R zb@1}}gNYDf{?_QoXE;>rQnFJ_Z@eFFfv9zj8=f6HDZhdl|ALw>9CAHohsb^+#mUDV!nH6O@2 zhe+)@!Qz?CD;8M7u-5rc`On@r`%MZ3<42}`Pvtqv>|8fQJ|_y;OibS`19%&tb%S?n zjn6o_)L-qG>DsEhMz0n}#Do*c?j^*r8!iyQgLq5R5;7$9ig~;^SBm-GmM7xq9KBT? zad#dpUMR~?{YdgSRT8@)xn)KoY#ZYC{48SzWK2fe>B>n+kCK{Bq!<;f1iXI|3E8zqC1Nx)jZjyt|-6luD+Z< zRd%w~<5Cbej@0)-KV=7I<27PYsIL&1kWQn9;q&A^nq#suf_{7Ww00jpk1|H9450ClT5Hy>X2$^u%urj6@Nd797I>p_v-#>GlL`d9Dl4~j{{Rl;=jJ2`4i;%A7=PN#$?4@e@i=pYkYk084m#g$_j0}7yq5H8{v>^e+Vz23zG@7^@SI96^8WLv0t>&4m zlniMku&76sHoahK-)+3q(vg5f+K{AvaDz*H`OL4hirE2K@av#*>;a`#KnMTg5+dch ze@P#!vw|k-!jS`q_Rkw0QU-Q}Au=7C-H)UIG;htb^YiaQNEx|+#{`c_Y1HNAljrrV zAmL{kH{O?9bh;zibQ8i7>X|TT|6miSYDaZ&b8$6XVM2QugQucisP$3^M)?J76F0QBE*3)-&x25G z;!A*U0D>}AX{qYV7n?g|HMM`W#=$I1vFZNo@#~RTCV>WJ}^smjIK%i+R^X(KHr0(NygP_Im6c$DVSAs^d5F;y3Lqx z={5O3yg^M7Xg{Ii{o{1mcCj1;r2P~W6gE1@DapxZK>5&P9M~w1alqO?K#OjQ+sh=0 zMa0^o&aa2GBlvCu@rr&Z4Jv(LoWylXLm$EfGajwMOkA_|h)1HHadu-7DfhAxYbVuxe*meQk zn>oR-O4IomkN&dpC(mbUMO11Q+bXe~)5f;z& z#^f9x56&p}>E zAHfU2+79xdak? z0z^$bl=Idy;%|aZFtxb?g-^UWe`Zk64C-gH;dMhHX5D&U&x;BL=720H2nRXV*Dof8 z`WO(!Sv|M6J}flLia=_7v#=Dp(lE9U3)Iy4fh-o^Kk~Exr+w~HzJIBH z%ye0MH)&Ii>EV6Z(o=g^VBZv?Sn#Ia^ht16y<_NY+>bVuz58dFxx0S~EaaL{u+yp6 zn4q{fG?;Yzg=4O<~v`0vif^^^U`Z~%BJ+!6w0NRzp)Mfu9lxO!g z(K_u0f8PESJR4lTOqcJ8@g$R3QGD9?&nu+)pq&PRHetBg&ApQ2e}9X*(+UO`39Mlg zX>MN!h^-@P4{dQi)%&&I(=$}6CuHMy;FYV_O=2LOr*%8{s7>Z)66+N>?@x2?7Uo}SEwgpn@`$sY;=KaJWOpICp0as-@lXSaJulF~)r7A5P=8FkNY46;~R-(gF*>C2_Y zq;AE6IPw3mDx^nX!IfB(kSKwi&u!ipURv|9{pgyc8#1OozvxGNl{J$hYa1E4UNmgr z-}n8*wEk7UUi4>fx6mUr=A54Q_r6+>t_+-@Jg;8Obwy%iLaXa=96;Mp7JiAte33Fn z4{`g-0y``}6OSd&)O^c?#4m4LPKw0Py$;I;NZ_LPKP#C58UEl}?iasBaHECzEcHoU z$n$~YSxpCn?F7rN$dI4()+)xstW44=?l-VQcWtSvV17iO!NCsiaK%P ztbh;Im(~*5C0z<({JUo>fP*P{>~G8{Vshh+;k&F7;iYB>1p<;a=W z(N=Og;_52o>3}b{IY+7lG7OTr(}dAKNs_6L#bEnF)KiW*#*bXKK5e`733(AAwa*W@ z@4ar{nAc8c=06CVORaj{X}rQU6jAGvT!vO_SO+&@*-8$+)oeh@;hlH%bFAIoswZVN z5og=3OSSU0xoS0O%<)ZAKx9bSX4$rTm*2xKI8&vl_;gr9hjD{7T5Eh=yKS(=KB!^R zvHHImWo#rID(+jm(lQTo&`PrYz-8&MUTijftbk4MLWk=^T<3SCR~Kwt<|~R2(c_+9 zbnYJ#EzGQ8;$l=;Qh2pfII7~*hDs5Uyr=(I9k2t%<*aQt3%0uUiY}niE*&(jF^dAE z`Z0g!89n-<-R9_*%GcSS7TWR96;9Bb=wjxbk6#2djW!Y$wV-2sc|n?)RPR{z@3dvx z{eHNRSNZf~{EX59m6habtcj9e<*{hbMX)qEU@)Y3$J;uJw+0T&>;m%``~@_h|82F+ zxZ*uCF1sFH=o}Idecx&|l_jGDE%V0i_+hKos;X}eQMT?B!j*OIN2g$$f*<)xHt#6T z7=8$WZ(;|^Ymo@Ank?a66-*w)X&AT_Q&oA4IT&lL zVG&#yLgzI1bXR{)`dIagGwnuNXWYK=;28YBZ389uorH?-UxGe}jDH<4GeznIF_tIVJkW zQuBjiQ`rHWuvkU{B~4lGUEW}d9{SQfhe8Tn&j4Lx&kvNa?XQw9nAgpiJ}(_krMu5sZ-K|f~2-wW*RfR6KPC2 z=V?S=nrUL54<_IXz)#+NSD5oGDuNE`DjQ}QBZXIZl|~Dv*|JhXEP`6X*T0t2W@zc-JSHpQ@C`D9ZHYOZ&-8~)CewKZD(6LW)~7O&bv=asR(u@mHF3R z#4a;ZMReGIi1d9fJUSRHENV@B)UIJklwv|$)xRbx?+{dGdjSq|E!oKN_{e|COLef( zusBFmb*fF^Fb@7pi?m+|=v27#3STt%Q@9e{0~>yy4(WR;!P8yUnm1uDRNOYX)st<} zDI2nR`jzS1gg8#$QWO6_n!W-o%I14}SsH1Ok_PGS?v@Uf5KxhjmTr&^>29PO0YQ2x zrMtVkJ9d}v;r)I8=Ys2EmyLPO%$d38%sKb1`CdwyY`5gn_NQ&G9jMkqM*eL)q-Se% zF|A&`qPwReeMU~n0xl>VB3axJE)+bpO*7&$j%W1{Jt@-E&li55(lMC{0U=fAV+mqn zr;(=S5S-fUCddX=-fFs5)mjI_3cnsjd@n)bvJ>}6IyObka(zOijI2dSRk-=|ulOLW zOO;AQXA7w7T=dmRqb#xNH+!oVsJ|g4u$EsMn2zeg5MKbfxm4FkAwrc@JiaR_4bHee znKu#ID~g+VMMal~T*(Idf%jK`W;JzPebEXz}$%H%&^9#fHpwy+~q3zy{}r zSQ)YB4|=lX3qrn^FMNDerEl@RVk`5;b^VIBz>Tq2pk$*Ugt)Ys<(@3zYHg4bfWBM9X|Os2aE$K>szwEm^uR z?~1obVca!xz44K?GfWyk5=}leoPC%Yw-{uO z)0*?KQ_}gV^`#W%doY?G%HpSFt1+p$H!>F6&|sb6huxi>9$?fYs>D^vrVK~z+fSXR z70HLo!c_sIohw_92`<-mgyx&AVb7L1Z3Lj-<)AogPWtNdYtC@A$CPCy)-yIy zigZaQF=eqNp*Uk0O$az3v$KsU7RM_f=)t}ed8dIh>PMKy@F-P`f4)~ZBWYI?9A7uf zoQc_9Z~3>{$+btw=SwLf&w*{pMFM|!eGet;L#sY&QleE#Ex1==CC(f~eD7W05u-Y& zzJ+Lsv9Mk~B@jXXHJ8~@M>zM;8>c&0I}tQBGAck9mwz`-pEf@*0M=Zst{IU~73T{c zNEvlDx9`Sbu886zluU3PyD8YeBta3`AB+20VmpSMc=pK2E57K7Q->`RTk3abm@Z8s zk1oS4PV5PP-(j<1XRYnLKk@owJj!2P_6Q7J*NZDzXHB|cFC0_fr+n&KzbLj2au8A& zk?+6Hd$&wnq?)Cr5vVBi6og+8W7(*3BXH#^HIOAp4pF-5A!^l7c=@;LkBdK7Uf6-B z;w0^=>V>HOtDQ+F*Pi!R5I%`>Md^ziUOWLpgq^a3-s(o>7~PkCi2Gq(8}0_aG}2}r5< zE%ZpZi#TIdu4MxS=Gxc>AysNc=5J0G0Y#F6vWg)KUN(^o1&7ezva>~eY7obRyxs26 z)l|?xAFh-akNJGmQcq4SW9Uv+g~cR-pxP5>(t&j2JQ>JE zPRBI{;d{}$v=<=X=tYS%QuS>*;$m+M6^?E+3j?#v$MsUvNYMD<8$2RX4mu0RJWoI8 z(L6hCqL;VBfs^%hf@qfKqo;Z+Rs8j316pqQLr9J- zegIPeJqE%Qo&?2Dq+V*}&1=ot;K%jTkJ~!6%7f8B-dg2+O4Z6$uj!?q2sVKpG46Bv+%?ZXpU7 zD8@iYI)pCz;ZvBjx4aMgZQ9%gPDm~)GY_zxXFLU0JWmu;E9)=&p%ygxLYCnSeC zZ_`%$H!lk_a6V`jYcHsUt;b?YcpXE_>+jTdtB?7Zdmx*{9m2 zOsxYm8z5+h@?0xVW9y+7(h2FOe{wp4HV^XGI*ev!IcPEWIi3Xm-Lyx zMXZiSo3ItoGkFkaeTPWUhvEfg@9!B*9CDbW_XB;MML}YOH#^OwMdddPUx{SI@6KwU4SY=QL+$P3aWDRwFrg_suE0J;8FwElN(n zpHT#b;DejE4|D`wC5ZN%z_CLDO;b1?%zrl_l^n$b>Y+ zV3WpAF`-Cy%ToDR&6f0-U7}5{X^N2u+(6JM)K3@epCxg6RU-lNVGP{G`$wpHh%Rbu z5uu7<%;CGMZ0XTb*VEUh(2P6nuN-blcCC0nY)1X_6hvWjE?j&YtnO|jtKhre6V+~S zC8g+ZMn6R4P8BpOVLSKsn_A~7-SOq#*5nr1)-+CEY`s07FtM)>6SrKdDy=QGeeKRf zuTZMYeZfTlnF)vPZ3)>wWlH1|jX{1Z5`0N-t1n-}qIAm$1BA9XRkb!E-jW3-L_p8O zETH0Qw7Fox9Gy=b^sJz*@xMZv%w15iI*?1Tlo@~D?w6awS;-ME8^qefXkda9=%Z72 z|Aj4qr?m~wukpz;qgNM9t4kurJ&d#6-6Uuf(po((uw}+5#n2(inirHb`vs0X7OB^H zDf0PeVDnMS!RsI8>Syz06yAFM$+p6wvg1@b+rgX|a|myaO+RQ@)7f;fMa4YK3j{wNal&N~c+Via8i_fulQ+XzoH@Uqv(Oenzglk z-F|r)F7s12VW&Qvq|H2g7n#A{@lb&Oa7PUagf-{^g|!p&y1|}9z9zw zJq$YW*NIn-yrm<8v6NJW5+_&eh*|5eUw>r)Dr6RPFwGFM^qVa;4aVk7=F;kYO_L9Dq_ z=~Q*f>7On;fUDCX){3xy2}Yy9?)j0&T0hlQ?ec6Nx8VQKN;hMl*$V1A%BB#eeNT{ii7*+!koVV1dN|j8rPge??8~Ov zc6oH+ZnY;-?MQFmsN@kj6OVHF8gPxFGlB0HEB3CeGa4UIan)sP<8Y?aTNt*6bzzg! zk#dna)>E&~RcHB=v#R?YKjz-DM(#2mcsvu#tgYb^B&lroerxik9~H{ivy&m+3ErE%T}N};GC+RvG{>t)r**AYb_QxNu_uAX9I^qUB%H>e}V}ZRHDmL zteztwZc?gi3?w8=0&gR}tS~`y)F{*zPO^B_K+BRez)T}&V!TxyJYI0S!VIKfay#w} zks^R<{GQ-L!!kfSbeoJM5?$J`r86abJXbDTo7hg}tBk&=Ov{I1cJ|DXQiO^xd z>mz4CYq5w12ctE(8>TBNv9dQzDT9gzNZta~0`A#@vkyX1wgctthM4>y|CyGYCU7JX z$a3YD!ts$x5rpLkNCK|Le%Siy42{m+2^CX?Y=66t-SwyzMP`z$M_D8TP1TaS8`i+$$DroX%qeUY{&;M_v~Bo zrI~Li!?q}MGCK!>-6$9Ie(d}U%a7y%vyz+CvBZWhl#V;Al~_qQWWO>0SkO~!xqPrq zf1p5!LKE36+Tx4}MW6}-$Bwc85EBKvonE3I$4+wfzscrYJq}9uTb9b9FetDlNr&g8 z#rk>rDZ^~(YhJ6~?JH+SN_p?CFnfL|6@9y4nU=k4GqtM~jd#0~Ldb5ap6c)w#uc9PT)<1#)$q#78qk0igl3n>PJ&n^a_f zI|3PUIogfCLAun(*85)emsx_ESG(~yywM;AIaV-h&&=G<5o9+Z~rAB*%nE1d>mp|NpNmIehzex{`Em0xC)TW|TB#rH24RK(pP z9y}*`3~kF0q>g<5rTL2z&PfaFXi7*WNUhAS%6}(9T%u1YGDO1?%hN|QK>Ffbr-4z2 z+1hzq&UD&>Nl(M&Z%DzwyY`s;w@hqLJJ;~K_?q&_AIaRb805<2Fy^L}d!L8KYpV#q zK==?zoT~fAeUY zN4y1w<4?_x1c)CnEbrqVMHW@SmB-f3w_|t^?2t(CFpe{>>zsjQ=_#rqyiw6oj$xUx z{ANrdcbbu$z8v|zbX*_3J`4T^QxHD2sV8HsCM`J!(tV>UW=Bc_rN*+3;#U&tV97cG5zXcf=q6;=)t?Bq=gEN9T&S(6652bXj{ zA0`;aU@|I~=ta=skIYvv6qfnY4V^L%Tz?#2wlqNXccyFWmYOzsbsU>nyc&A38Zi@d zp>#a6BSocDXI^ma3vxC#XaFI!I`7B-*-kbTqt^w!Dgb2PRT5RCJ8Q-*AuDZOyo?`2 zx)c`yNn0`yNRuV0BDSZZuAR7zLL{}7q^E+8Ux&nbPr*g1r?Zs6g4BUQ zBT+zi!lUDry@k`SdRTq|w;u6B^`{bV1%rIt#r1aOl}*PPQtC}MZ&QvHb21DP`_oT6 zPPV2!T7k?Fg?JEiTG!|u1+~x1Xacbc4F#xfjT)LD!31^E74q=+`h^lYWeY9BvqPz2 zXNKJgbfou+UtP?Eeh8SU)#we5^m@S4BBBw923{ZEK|&)WnHcm{v)1L<9hT2pw(hSh zF$yfJlx7T$F?ZeJ z?zY{&l&XU7hvBU%$`9DczO@JPEc%(^$GE=Wk4~E}3Y0g;_kzk~4T7}fqtAMaaxU9Z z8ffTTZL$t^Kx&~+KZkGd7)~=(X%3O5mk6D6BfX5HbdecE%g{mZj383_yI;n6V*Bth z8=p9ei%zuvET>CvWD0Ov7TBCnBo^W$8ZNkg@rQrdeGRqQO(OS zbMn{(I=#O}NKA{KWD~`rB}To!%Q3s}tcfjZp7k)yeushj zdNLo)iGR#C-y!b!9PhS`OA8BdN1PyBDu2umY`PItvIhlhqq(UwJ$sZiJ^uqH% z3h;W^w;!qxi>(X+&GdWvc(tvM*)v|h=+F`PRFFQfB+<&xFQEJoz?Kc!I+gd|aBkn8 z>6-Fr>?RtBA39+FGI^`qU;G6dtyS@kV=Ewb$+GpEI=|{i+T=#II!(K zIN_%*3u(ewMc9Ekosm3}E7WY>MublYReqG-nf9RTP@92_3U&^&UOP&%?imw0n9;y%o&X zn7G^ka3klA)lGaJ6HY<*jP%NZs&PTN(rG&GC&f3&OuBwsHBB@+Sv>T9sNJ`!ID95w zjZdi1zM@1=asoA2!$m(7WJ@;y?N@Y=Cdy}Ogt|&_NSvSzaeDT-=H;vK+WaDoPZAOO z?=pMQvfgZn>+!gPMsqTMz~jBb^qn(I))%-{JECJ?3*+d3#D(B6pV^A)N7DmP2WX7u z09ybFdzt2!zmg{XZN6j*J1IQ>CJt^7Ex)-qaUv%t7oh?mmlS|RCN5awV(52GvBkO(p1l1BR5!K39&dMd480$&tODSg&xK!F>)s%OTqfZ^O9pA!*!Owb zrCUYd=G*1YP8yC(uq9gB!o)ylk{8LJT@R;dsO<-#I=}Y5K7v z;_b?XQGhAyPx(Is1PZp+rb8y%b0?1jr^9)|ZvM_S^&ix-R0OH6y zHes$^gYiC-a zkndzR<*8@pifHSNnhW`fQ!? zIEFPgRgPNvQML_^+u*&y?F*XGOJj?S(5BJ}8ew237g_Q^6b@}-8iQ&kTA!`}84aOA zdrDyU=M9ol2GRxn=u&kRQzwX>N1HB#=Tdn|<-dK_zAMJ2)4v?$&?C(t>(z7+ywnS5 z8ujLY2aYG<^A565TUi`S2H14UU%-C5+<9QTz8B<1o(1KaCsYva zXCIEy`ttib&nOq(3fq4V+&X>UkIC!$DM3_eR12*9)ltYBh***$Qq$AZ0rhPs>?>@F zAJJG~02N*Ws1M|yOxp9Hnu@IN9F@M z^0*|a$S1121}KgmzG-ESHiQi{mJ584Is)8vla8u6~wMaDDW7y&r5hV_~I}# z-*qKu4ZCsVm0DLfz+DY`{Z&AhsOS!X5B=m2NW>bg9p=PVbo9%^XJEV54G`9Hmv>+3)-)^hrAr-_tFCD0cv*#ucY6d#Ckv4GGMW6Poo558t;#Vv?+s@U3o#jbH+VjoULust{BO zC^wo8G9pH<-Cy-2DI>@4r-2?5B{K9npUf<$+wzS#-b}MWDZ&N$(5`wePEC z!f^J@hvks3@|scf{o_eZ2iO)hJh5WM8v2egKv%)bh6gxlyG?`CT5#-vg}!N<43+Ss zc?|;nQfqll_tM|e-!#VQedSzL;~&SvG0f+F4=l=e35dvJt+Ftci7fQzVyspHwA3&2 zyw$%%SGDYHemYot2W|T?M89`q8WS=oNumN+w>#XLA$T-3l>Q~U7#lx zNJ<`G-*6`w_dO*DLjD@%O3b~*V^?_?QhV7?&>Wzy5TYbk7e#G_il#yt`3=rPB9=da zz=Q5Q%a21(W5=$|pS~qFcj57Od%Ybbo%HGxt}B2o#8dbfU+4!&B5GADGUBe)Os7w{ z&r(dSwTA+U0~8uy)}#nPOep9xX=t^>*{Eg?Tm57!Sd`RS_Z zDm+l?3*PndRl~S0r`m$j`anAK5vdy4!>5`N^7P`*F6GColhB)H+zsk<1%xS#>@vE- zeRG4^H7`&wCg#^jqaBD-4L|jkO$|+2HZNcerQ|5)+YR&iQBr3D&gsmr4`4~dnfJdXd>*d&L3@aO zGxS4x=>4!RWyK;Dqiib;T@{U~OF?Eumu#ytd4Uzd9fn-*Q^UBd3}bHX4?1Nt2UT8p zfof)>_FBtt1z0uNfz02GMt~!~K{RW@C_{h__ zzVcWhJU72pPB{sb6|apHdZjMA)Hx!@U!lt)i7Vsnf0A$`uFdR=*>q<~)JY@G+QF{O zrA00HG2X)e4@-fJDa8@>A%u~FymZwQ06H5!r(Pyy7^aM-JNNnlaxr$hrJv2XX#Mp? z|70N1f%NxfP!x%_!@hk`HNW$~0<&!6P)lBOauRU0b9#tfHlP}lt!GacbkR^=c<*?; z0!2v6QPlPV$Id{$*}yVi2C?oyHglBCRrc<18fIAoxs8j~htxnWn=wbk5OS@mH*W&0 zoX{bo^ioCaeT=eGceky5CX};zE;tGZ7alvd@f`__8os4K1Sl^+0d(?#gM~};AN?Oj z_E;s`Q1-AaQ8!ORfW@3IP$r&y)wVWa-#^_|QO#+(P(MbNptf^)i_)TSZY)t^i9C(l z9EV&eHf8@^d5{~vSzI@EuR=Blju1j{a)-O|F|c0ilBD@Zepl~%^E(ML+@XKJPS|+` zfXP@+5gN4K&b+=p{zf&z`XSlSr9orNzKgOiN^p#foT1K-<?n$$&!+o@CXUew6hRL?9}yNMXb%WN zmwlZ6`$!Nm5Ks!^B_@jASFBfL86J8D~? z!+z1L^%My>&IzUPGc3080B|JOd&6y(Q)c$;gJzBpTP!pQMFJG)2BQ^9DwUeM!8`An zRqwP=qzvjT&IvJG@xaNxTVQsJ0njfwxxmYfC~F041W`V2_p5?XVvn;b6C@H2RNs!b zevC2Z!hJQzbYSC0BvlCG+S;lQO8cEo0@qy@x+S!F(BTYcHDq?Z#zEyjVuWsUNdJSe zkQkn=krO~}r}@iPktHI)o)Zixa-g*_QZWS)R5{{_7wS#Lz^D`ow$9(qVCs00e5nmzER%j~|2 zi1J7LX9N>%V)~GT?IMiou$z~J6!S8`LqMSbTDp3TTTJMTHvC)7`bv~RvfA!PJ zsD|*xEKM#(E}h@~`kSXk;$C~`;wW;JPe$z+Pe5nhXX6EyM9GkPhe|m15|?|z6V;;W zW!imLfMUGx!5M`JajqQ z*-2Ifn?6N*I6}^rev=AJahdMxNZvP#9oyp1$g4ZYTj=aDoLC(Mf&hP$Jg+OyFs9~k zTni_B^Lah#)dbxKzS>R&dgM>oFedl)-&b6~Z^nV=sqg;l)6Ty!kd{$DY)TtwSO*Ms zax&vUjDp2()&;Drq;BJoQqF-U%40*dMyxIvYaU$p%!P2e1~|oxctOPtVjV`>^|7 zc@XH&jgF$=2mhXGSFA{?rw5(00L2b8H{U1DwZIlP`?AYLHU|vTU*`vtF=03`7YbKD zID-52@6#?H4QSl$^RrJ-Mn6mqzX#2)x7H7Np*<&~lDO^pwlB4R+O$7h(Sem$e?N%U zh+JdXbQ}^-SR>lLdGT%)D!aGr)uG{kZXEP`xf9#>B#?@5G-rl=bGqy$$u`XrJDvJpXU0%H5l^hzk+h=6k}vc$M#H43d9pV)|2-iq z1buru`vRIaapAF(p?_awOTt=@akozhpzxW zx{DSB8w5IQtFu^N(4at`E7+<=cI(*?`{iF-Y-;QJlt+FDxV_?uKQ zSPidRfmt5a_w4a9ZR)Ahgwl#mMi6ra>B+V>+jqNCIecW7bGR4e{N>U18$t0E_zyJp@~io*be|dGbM0UG-{3v^JYno>YZ4u z_VXY1VO}@Kfsef&?!7Ixb=a*NfW#{aDT#lZ+v>4MKU;vcrQ$vz4#j2WlgY0!es5x% zR~+33Q>+2UrIS7r6sSN2LnhdU9rSLy!YrkvJu3Id5UJ_6rJ|Ch@tbo4E zVg1?jWZ504Q!2hGfj2s_R0(;7D!l|FfsE&mb_Tf**^g?S3Ukv?UY@zR580WB0+r3# z-WSSGk3Bs|>?ZX$0rtL^87g{XWZ8(0S9?xpbIUOZAdoQ*2+fGVa1ALI%!m|B=Z~F* zNbk2R>B|d!D4)%RpH_FSLI zek5P97buEjWv5a$IrPhg2?WY#dubuYaJ_hghfwVUu9{vAm_2zM1%W6EdltMUD9FJMtVRVGe47`x zp#4+<=I3$Q5+i{KQuCA4#lst2UN-Xi?CqVI?v7|DUINX_p?>{+RO~WJZ}JQnAm`8B z{s2~26*HecVmDMtNsurSW*!k;M>7qTW<>tSUpEb)%|O39r?a>u(Y1spFG-`v()_cg z@E2zfF+PP&vgF`8d2ZO4>;_EoQe8*f=ka!J)^8W!t&j0znBdX>KcpXS(E&Dr3qB#Q zMXv^#JSgS_Qo--lGR7GvJ3G-#gwDe5#!%h5=vLt$_C?QfqRH`mw*A0fz6Tt4_SN2s z&DoClX8Rf>#0?8!K{&8QkN{y@{ZJ+$&_BQKPK^;k{$89*FYLu;b(feBe1Hy=`)#mo zhFerz+$-2|ujYQ%iK_G3kI*Vsl1lD=$K1Ht*}OtI4z~;D(ziNYO^Ls;^)5*0{^j}V z(^1KvhiTc3gLgRLPjCyx-iz`aV&K0$&#!VE^gXh}T@`cJ^xhR+#as0|lLqWZE%&7H zm&KkH-iFy2F`8(H|MQ8l_m;|AvlV#U!U*X|X1GN;?S6h{NgQG0%O5@Or%u%1y(i`K zvmwO_<97|?G1fAG|8AP)u`T;>am!4pO3TCE2# z%@WA3VNr_ji^KM1pZ8pO@E(G*r@Gslb3Hwa_B*$KJ^o56d^DkCv_hDKcI@K>xN*bH;;q;gAWhF@pYpshaNWzoQEwPqn8zJTTkr)#ZTs$ z+HiWMQ1`lmODZF-APTR2yrCl~ezH$KRmjt}FjS-+Rbwi;t26iow@!H%X=m8Sr~3wY4(DAhCoS(n$ssqU|K z&xLY#griV4GM&NS>HW21ZS`>TaJj;2wCoIPB@z&of>8U0d{V*~o459mKdv4%KGhy! zf-VL9<-#>DpJYO4{V^~&&i|Rk!#u>QVBBeDrvieXyHdHCnz!&19i7x+Yu{;(MlFoO ziGkVSuW-keQR*e^jbET-)l-`^90VI?r^xZes8wrcy5{uEoQIa|WATM~;4t?uV#4ga zRVkc;GyQQ6Lq1Sc;9?UZ=xUyY=fI9Ej;dNtCiap%>%Dgm*oEM8vB=9=HJ3yR$l&yDSG zybrC#XK!Fqco4g&kPs9_n(P&+Y%(&k`jr|gjAg{bnaUSzVqaYYt4m8iir??78bYW7 zYobwqmq)wZ%Er!mngm*a0g;2@9t16A^wG=eol#X{=+bv?264)dI5p`-rKsQSf@)#{Cojtw zvvIP~bCuMO`f|v6+B(tEqrQ7zMidYjs>d|`$*wpCZqXLtU!1s^@+dS#J}){-tnZ)6 z|1SJ%INN>ml%4uI298y0D=P1}-0Z?)`xPEz=fJO zi$_SSp%u5M&xq_2Shch1L% zJPc={dkV5uU>ddwa*XPeOnMmeSu?9~sEv9W=BQSrCt;x{5zpK*mM_FC-K502%hZ6k z+<8smQi0_p<(-SC@D_1vl(^hq_o<{^fJF-|VY0$G6dne&;zeP&986R1trcyV1v{n3` z#6p5~)R%c=ZcRMnbciUKQbvn7?jJpQf4SSjcI$=dS-vnixmKi+kBxZQ&iz+)w1tUf z3Pv3X0z|LsNO{ejwI2MB5T3vKB);+GR<1=ds)Fm?D?1k#egY@%A*h4w+E5}NBNAg2 z?)vj^tIbMDneF9-h{?(OSj;rIXL|6k(~bYcXNVV^Z(5_LXIn_NWj)DP6({t$cp*W5 zOiwjA&`uk&-c`B57^v4AAamP=Ol)MDma_e2tnj$Ik5$(Jm2sBWueIwYw2#uyF13)l z&-+0AfQlLy0*tL6eaJq<;c7r@0LtG(9!OdoCMRMx={>%lBJa;nL>MlJjwVBWNogjv ze#;MQJ)FFKN~r{&*yyxeRZ`{=1C=ykAwge!nDMp7L+)xeP&VLU_QQC`-_6GUR;K>EMm1+OAn#HIB=h9<9^eo#p)jB^Ht#r@aIvKIEU z&|Ayz@TocRyF}hgPEJZ}3|dorL!?o5Kk%5O!5w>V3S360GR)YFC@jwR0H{*Xw$F|J}7lTY=e( z12K4Fc`g}dr-1z>A}j4+%iM1`tZJxzQK0RpLtj*C#~gAiOM(Ot87apRIl<+qEQV4$ z_iWiQ)}@n4PJ$D)MAcDT%Dr=IKK}0bh!yl!;F~aM^|a@5Kq4yE0ucI=Lwd?EdC6xZ z%G07gy2)jN$aEQLvruXA7P{V}F^;`07y+ZTo;;Sdr!=jEh6ft!Her8a8b&uO%T;1o zBGP)#oXz7BiI!&r`c-GE7=0vj`g4QvCMTi2e&BIy(Jel7PXK3R|5x6%(*8@>Rrwvh z+_a$>%Emn)ggpD@mC9$$k3iI4FAn3AKi6PkxB&(4AaDHrx_P#Yfre{N$~-P???+!R zT)3Y*iGog_CE5fzbs_#owfd3!@6-AUZ%M7Z)};5imjtq4Ulctt@^#er9s9kaB711^zmAor9q%QBRe+OIe$4mezhMVvJDz z;L1v<^Fd^mh}F!ladg1)IZ@~BuM#m-M{FiD$m;v7CFtIq5NY4Dg@MnGa!QBz3D(V1 z=yI|CRtQ=Qm@GSHx?L{C#VerQHWQb;0em{jQu{q^WI~foH=)NJ%;|E0ujO#~$QKvo z=tLZ9Kb2yfk8AFr9lKL6dC`k(-gEdvaHWR+lR1rcBL!r!y0kyrO^sgPb&XL2n+Nqr z`z2zl%|j+NijVOyK@yWFzq-QCT|>o8$~|?JMN*1lhnJq|{f*qq8ICP$B3d^@-Y#2L ztg|f*oBYQ3jv9iDthr=qdi%uDU3&5kUzlfQQBlbAGJw_dcG4T^rRz&nK|w?WJTyk6 zVP*Wbw0I`EN!Np)e>iGH9=ef{I6|rbL;=X({R8G#+%P{Wb5;Jsr}T8P&0Y-Y z`2rsY0`PWchuq*&JQ&);Q?Wk&0Pt<8&g?V4%FiDr&neS3R zNp<10OP6&lzckm#(pn_CoaiAZ># z&?!|sS4kEkrGQZsaxXo0q^u*bcX`bH*YpNSJ@B=O8LiIzlCDv>FG^uwKN=7FE=~wB zn3_)6JntQ81zJH0?Dh?0n34f{M zD~U8_=N|{#v5;(qyvY$+W*BM+lp&PsjN5$Zz(FR|w1WA~n<#FTXkqNSokD?YWP4tcEF`LvJuzr1Dx zzn6LX0JzS@U@qU>NOBe#)*~F%8PCbJQ<|a-Ug~oHbc;BiQv)S<$tik9P~ZG}TTdPn zaf7>26vwP%F*q68u)I8?+~MF^5h%o1A>$_<(pJh8)}Ek3X!gi67o0QPmpzGE>2lb` zsZ@J0*)L$e<|FvxbmD$}OJs9ZMaFh;!OaNi6N)c|K24DRMf>CzR}a5d7N!J|Kukn~ zV46UTM`5hML78ajIpRf!pHPE)hQ||ndb`H#Bl7JhqS4^oBt=mq(ubr{ZRn}%M^ua# zpb>(a;UfYwc|0v9UMPIrEh;De{yH%x5HcE6mvPvB~Hm*lR1@$49yZ!lFz15 zU&M2T*{3eP)Qd_{T+qpm5c}IY$#Cm$gP|O0a+0`% z@Nn?erx^Rup>_fxQqHVwR^#r`S_cOEcR~7=deAIye4VPFXb6jV?4mqWMUt*E{x)9u z7;|jZ5ljkqd zI1%^~#l+}bSTwYKFjTL`t8*wyI4<#7!CsEp^Cfc;2_ezL^}$t6O(=EClyPmFD=mwD zDMg*p+9$*Mb{#?;4;${PsQ>)7EK=`dgrQ`GcRbAQ3#ZcdIQlvEn|)`pbRrtM&+2`# zM?FcwZo|;HILj6>70yR%g_|~`7awD>=Uvw2U>F3(_6zFS?Y-Oe6?Ju!Jg8}nG%S8^ zBjl#O27bVhN~}4scl1bgt;7uiTUv-l!JP0@{>$(>=W_Mrc z|HMQdJR#mVm7ZJcAjo_R%eXH8+aZ_|s@JE6(#R4{@IE-F7hz?1jgsE|8(D!`d2B1` zJT~vp@FHV|>uw+^cWoJp+a@CQs1vrTN>aKs zu=dR<7C90#v^jJH=dU_MUEG76=z$=E`GiVVj?I@Eyh&Z9RIaunwu{3OP1nO1=7@Fg zGB&QAE{6qqeWP2rfcRP?&I@TVBlqihHY5(~N%c-_-mR}LCfqH4?!S@E62$7bnx?yd zCi&O`8;lPZ$9sw`MvM=yVp%CSsFg;>f-2M_rSEQrz4_?A|J3lMR;Pbe1g1VT5fo1U zh%YU=JsNqi+lwknYvan1ac?&JPpo1@R`79MfN=NaCj|fb$@)bBgj*W!+Ed-6O=$@c zW*Nu)DPDaaC?Y7K4-=zjrZO39v;%s%;#)Br`9Eac|p27Ed$j(*pkvhR; zTS&k#OKaQKys)u8xMeKtEH$UJU)}?+I8ocBpRzBmN&-Zygm?*!Bz0 z&<)bvNT&!$4Jjavq;!L{C?MU9fOMyTG)Q+h(k(6BDKQM+p6B__`<_3}UW>&rGwisp zxPMpY8tOy&mRhtUWA_tQwva_~%99^M%DE{3LtKx@F7a>Q7-UWE*Lu%TNaDRr=hf&> zW1D6IsBoUBZ4oDTYf?Ubmv5EY9&4E9GW-y!d6>B$i+T){W7Zu^c%s>D6T z?j%>EZFLS-6QyEC-9!^K%zwwCR7LOJsdYM}b#oyd{3CKU?Nx=iqnaJ{hgCn_UefMg z8*N!r{j!_jL$d#ZAi@ejyBiFQ{AG(D;%_ciPCnC$p{vJro`Q;T@%=LkTb7LMdmThn zXh*p(MN0IPap~9aY{(fp_;jt-RlhLRlUZqHF2zh7j4vFb3u7QpR<@s33V^51qzPpb zj)#U!;`UsPLs#q)PSr85h=7R9@p(9e1ik#qX5ro}hV9->5XxDC@SiT$VAIAN*=979Yk zy)*5Bfl?^V9WPxSAT0m4Hz>}j^W8sLuB%SZQ38oZ2?q^7480d;%Q;(4*Q;3C4vQ7V zfZu2mv%1;O&u#l)=8(GB1pSO#{sd)`pOd}W1rWpd;WX{5SXLJJ@fRZ!$|@uo%j91> zQU_RXa<};Im)-UwSn08HFZ$xD=_@UL2;m2o{pq@KjF>vz&zqr+Qx`guc(t_gS!(1z zO7VIBaa7?UYoZC6_36bPA5qJKPS$#vD=DrSbJg2FzLosXfs$4$XHk`#>+di&p+jea zEVs{#H2KcdRT`_k%hAdUmX%@pFm+_AvjIQfq@228ZcWJjlk@XXyrHjGgP)(kNfb9Q z1y9gqIhj)^tdcEP1KErCdx@n>xwCUyDQTSibC&ZLZ!dcs6CcDN}J({k9VzOE{Gn)MV%4=$B=9ZM85fKrwu(M0+>5-k%yupVLlMBVA zakQ7VaB_WyDFM^G)QB#1^(H`BSmf&oH<{yXp%w`8ZmWEHPB|%y=4iR{MZzK?V3`cB z!N)FAX}}@$iotIc-ROaZnNf}7SgoH5W0jDtTbw-n$v{o5YyTB6Jw)6U3$_KhashJQ z4ZJV<7pqMXQLxD^pbeIz#PBzSd>;6 z)+BL!sJH7yR3=3v&4=EH&HM{bb#af0{P;&}nYh)x`?a954b`<5&-n5*KQ`b9oCyyX zUV3RCj*)HrT6JFA9imD|nD4*pUy7FR7hb9*DG6>pEG=`M)6y~R2}Wn( zXKiU|3GxRcqL@JME`&VJX>q7U!;_PVqiG=2h$vVfP-0RNS!9mJQ=qgPO9Qn8!i5E; z!hTM!yotb6p>t(4*2~For0;bc*)YZyV+C`@7qgq8g)SHzkm+Xuid~Ab#^2AXjy3RMgUHf4`oOAHdw{ z^Z_th2JRpf?4Df7pvg`@Kahli0y;GthsCq!W=MN&)xGO}N2DvrzqFK1DUA;q#A7)^ zsHvqz)=4Aot;^8QP4c&@tu1p3E;BmR2}&JV-#qxfS@_^DmFE7!D-Xw-QnHZ{n^B>OtE+dzZhA2FRuftCa_mIWmuoFCfh_o`rKN~R zHz);YqqoYBN`xO9mx#F5`1w4n{q~RX)Q4aoUD*8J=_)C|4Ic1qUYkkUi-MRvbu>paPh=!!y$B(*P>pMzcEQiAuFZ-K&>tz5ST!SwM8Doawc$KArhJb0DYBh|3e3Ddc? zW$OnxU@QU`kn7`fEgd=tt{rwRQEDp$((K5lz7plmt(l^%9!ebagS$D=w1^KqS zYXy>Ub$ta7X186Q2*H2z3kq&uAIvOv`ay7L#4~?|ecS8}gTJE-Py#4+Dfsn^fRmHc zMrbb^O^d|lxG2NX48GVv{(6o5r#FCl4g#8-HynRg%!fSxJg3Le?Eh+(#6u{UMfvjY zir4F?56P96b9{6gM7rw6v5Z?}{XBY67PZ8Mlmjp1L~9U=@(!;1<_rtj>4o^i1^M}H zw)kMiKqv-x;=3@Rg;u2=iw4JUG)%`^x_!#NQ_5u27ID1K#Tfgv>iYVlk*HXv?rUF} zK_=truSrEccwVYzM+4nc)ncQHY?pzxUrc{(SN-KkJDThj3P6&eB3r1ije|pfDzAC2 z?dF)u1VQJQ?SYy%uDddB;^LaRLvXt#vF(;T*}(Tr(OxcES$=+C3@LBV{y$)-miP6P zoX5|0u~}ExY7UI>`Fh-G3;sf##fg3%dvekI-x1;;z{B8A)A7#;m}jM<$$fYnCYLjZ zx^=ZTL1A$nBO673!Sqf|=wJ5)Wbot}c1F7L32A#U78L~7Pv-jHOrBv+Z*DFGnOAE3 zo_(*+)@cglVh4V{FRpgoQvvje$H)&;WOTKG5hO^kG=%jT{EOk3uf5^5yj; zcZd~1s1%7DrDprl3di?@^H0m(qUe1D>6Jo7y<;x9Y}Be@L1m=hJ>`WW7_a|=(9xAt z4NeYES&7ZUgT$U&brb3AdO71a(O;U6)d>a7f0=QMJO8MEjEliJ`VhhUa$F3lWtZ`C zJ?nR|&0J`c!P}Pcp6!76g=NOk2bo}?^q;^B7y1p2=J4n!Ufwtwm_nTwFQGhhd3kk( z3hIJ9UqQ?PeQo3DH~^3a1n=rB?NH(S>R~F@7YVf3@`XJR1C^#_pI*TFcP7W2leHgwuDw)!GK{uAPl zSb&}zj38hZt%tZB>jKI$01))8*`M!8#XR{R{+-1FWoFv|BLuCy04m)+&ib<@E6rO; z)ws}78=D53V#^mZHek+@;rf!K%KRxtA4mBMUUB)~zuMaoX<85~n)8S*ZC{ zjkny`fee}i8F*}lfUdoTjKCBSU(v@An&S z2o&{JsqZeY=A?wRHrPw9a5ioL5vsneaKa&~^ibSR*cWfK+zsegj`03-l6YMd$EHn` z?Xw>QonW5OGT6j(x6Hsf$@6{AoAyu$>~1@A$@uG0Mftg%;6^%Yg491#AV1n_X|cvU z>~?Mb#D0AqH`>xjs=~2Lhv;nO0etK5pj3bX8tj(>3AU^Hf%liFylzc^D|`gl>35F^iYP$etq8Wa zT3zx|%mMQBWUB0b&_s?4HlR;$d0hDdX?&{(9}eDdbTNC}uo|DfZ8SsnZ{@!|y~LA& z>Eit=OXyPZ8E;&zw0~2?S1%ZORbakAXTV~;eGxwa#IZ=Pzz+wIv~}%Abs%^O2nXGY z-!F%X7&?lgcp{cR=MF?yBtCf@?={~-Y$$rY9^l!cZOXmRl7`FL9G+jMz5Gw9l z`gk6BZ96;mcZ!OLtAe!?q>oTwfdK3UA7EB(HJ;A#X<>Q!BOW9hNd*8e(O)Sjwbwk^ z*~R>**Z%+p9E~txBTmceox_C_NdWoN+P{vl3CJ@guwx3jY$17Ey3fq%P^?6IKRW36 z{xLKdb4=sKVE+&W0s;4j3>QTfN2o=kDM5D_2IkV1s(5$h*Q;|NI%gG<(_1G77a|P} z1kl^x`oO{XH>}7Ae68kgYDx!4@&y1P3~!sOltnJDI=#Ndq<;Fsh%`9{TUvMM{$uRsl1O*0eu9wNM}KitnxBpb25p6>I(&Lj9+Z>Mdoj=px9iC5&$2wl9EWaA zsE4mB{5XQ@q>S0y&Z$oqtxc6npI)4znNXV_i-IZ|8j_zb zcNQ)>7djC%wgFY#O^O);jei2#FuMT*C5vpy8SodEmm_JO_T@Z|DjIM99W9*wcG(^{ z@qk_oUKG$gp(Pfe`G@D5cmBpA`#xtp(a^}Ct>&K`;TKg)^$escUlfnu^^bOT`5kmp zfzC(zNeb%giHcQo28>@Oq&|+UrV8#EgFxF8+5Ma#YE}*zpHAO>_v;dKV*ny9>U3NZ z%_h5T6w7f--G|YHX4@@f@xaOV;R6Qf?PhPm#JoA6fa7n#kgP#qt3C&aH{c`+CP}$@ zt4U%Lo!9`V&Dw#1w*WFW1-d2=h`(DdM%#15NM2Iw|jr8U}|v@ zUT(4#O5s?|UZ~9p= zu{_*r5h-q&M4@`jNbN8=RrTO=w)6xeN0)#_AMa-bo42sO+wtSYT!2igU-z<7fxv!j z2Xu!U;x*@#b|PRYdmGn$DS|rh5C$)=E>0^N>8tX(7r6jv zpZyGV-EMvVI_?s!5r;BdtD@o!GpUSQ{&@jlAuFfybeEL20q`?#SF#|?|g3=Ny7=f9iByxg(-u|aCFY@nD> zGZL(5R?BLsS4NLkah)GD`w47h@FfbY$}!R;^sq>@w^cN!hGmb6`V?zAjx@5XA0@52N8%L`mF72$TtGQY8m z8eC?))1k`1&UV)M4BK9Z?h4k}EpREN@__H}?}6EqN_&9Kbcun1L0wu=(cb#==RqZ4 zWj%4ozpe(bG{9)T0PEXs9hkm$eYAiJ;&I-Ps5Sny(G>u}q89a_^-u6Os;;#fCohoi z$6^4QuVj2({c^lO;)BTm_O`xtS33`~c6QwVkNAOJ!W`xwW~$oBXio1?6Ho3?p_|G2 zJlA`W!BNQb8_>qp!pEA+Zz<;hB@sYI!Y&BEIv)*vfO*#jVgBHaAGdA}fXCoC`;|3^ zf)1ff5DhdR0A3T>vH%Lbn3AK}35J4~2=r&xYkg9%uiHbQF91iwH$%_|w^O9h{u)3{ zCMFq%0u}=ttQwGQB1(~NJT=h6u2)_eXM#b;>zy>cVYq`nM0;@K4bZG=+S;ME21fsuvxRO_pfoMZSKSAdz`m)^fRkmQFq3b((`l z@1ihU>%o^tk~!&gAw*syg?QcQ*Ef?$nA;}l1*wgcupr=Em>pVox04mM*xamMpWYM< zn_}(xX#5uDG0prQ=|Ir;DVMoV024cEbclJ0mxR6Z$KMHdsh57BYO{U}xYmpTU#0xREo8)1cTokMm{p1ZFPG*wH)z~ zb^)YqmV^PF(nHsww~hWqydFbxpFdrF`_whwAIR;d^nY>zHrA%6@#}{P@PDbTyV3#fzUwHhP+v-&4Gd4>c*Ii+Fc&6!g*0?i>E{UulZluw%%~0`O;;HGn)!ScqEhZ4tNkcNJ77%(Q4#=scw>o;RDzEEF{X(`dP`K)s4e|4(HRpK#*ZC|~+41nv z8_0tVAKcCY7=g~~>1Kf&fIUAbjRqV38M#yG`#p`P`t?%XodyD>Y`z`GejBZr9bq+( z?zGx!la?72e#_BvzE|t5csejeb;PFE`%|FnQZLWR<#sQ@kBTDICM%|GpP@qjYYM^RvEtjQikYCHZ4+%Nl5AV64WXfC>BR3=&h6z zFt5o5S(?7gwp=3BU)~BLUt+?dOIn7(b@VOyR3hv4C;IWi>%CM5Je_ye>s008DQ1O!Y^ zyNuNT@Bvm@UVdB;q@h6p)BbRJdYWc$XD91tNr_Os@6*HHuyGS@uHy3}!SV7pKIqCb z6zqn*uy;k?>KC>)v_R7fQzbFIWBPLU`}hn55_oRpy#o;V-MEuqR4XbrLhjzZ7;JBS z;En|La^`ev@WOgrP8JDXys@dX!<1&T$=)8)Z1s5lt= zkM&Xx?OjMgSa!_4p>=6grEwXlatXqIA$zv2X`6c^u|oNVbftvHU)6I(ZnU4s@zbS3 zMA>*Rlx>z0)JHL;3Xvw!^?1tglCWW1|5QFIHe~LWY(Jq%gZbI{=)6`rxvK`dF~NUR zkO7y5_FFb;P(h&fOdUA7W`bY26+r^*uSjYxB7akGQ`x+mzEnv4z!aEo4B&KXoTrv2 z-I=-w5DG{LX#>stn6ObeNcytzU&|3GD0;br>dfc)d9d?og66ZH+~b4!TS@uRzRrFt z`yO{d85sXS?cRI*H;Ai}Gq4(jvdLt6xv)1AvAO;@oicg0uYNKXM_11LT_U6dIsW>+ zq>8n5vHIo*U0uL>2E4)pu{5!O!PxeA+WPJ%HfS^S^GR+(F&Bn$CbRY*Z-4(hv_n7P zoG;z&#=_lWm1;%kWdvkWsY-=UuP2ZbRgg|BN=ev5!kNQNf8Wn9EwR>95rG**WMo`7 zgQU&@k(*O`sVbh3jUQ_JKrk4RUS!xu`k0wx6(VmO_ZJrg;G|64+yvhFpSB;U{W0@8 z$M-nQmAtj0eqE`~EXohmwJ#VB-YTUBt8+uKVVCUhooDvVK1WBIZ`H9bHr^m+KCKd$ zD~LvNzg-Qr_47q{>}#yKI%$lt@^yaT2lQ0nEKb|0&rp5fI}0waTFcTt zWgF0Ez9Q9Tvot#rO1?w00v?6eYW?4D9-#g)8<@{yn39ws{sEPd*>i;4P)}deB3Oh| zQ+Vx0aO1WWwG1*rFckuh33;kf?6p_WKb3R~j;*UJxVeSsKOtxjilg(MaGencwTz&G z?53-NTTT~wHKBuk7V#bMMezK1nj>``izw%f^7I~Q)Fqa^47b&>jPE^U#b&umgPqq+|RPpX8cJD&q|2MJ(17V01*)q zib@fIZX6bse@rJ#$%5-JTtn42HVLh+R%ElBnArlF_b~wyB8Qyk4dozgL_^bl+M5>G z@rGaFRUedXjG-yJvpElia6|Pu2=6h`w5!}1{@!Uh17Ht0+R+Et#aXIUlh+3eMB=Gh zo6mbd&%{vx_R1@2+15TMl-futz|nGy{P&W!m~xS$UdB7|f+~$= zeyBwRD_VsO<;=v@=m=>s-rr=EvtO;Az*29b5*%D{22vkBmXvfs66FQ`~Ik<%xs zEvUexs;Ckd+y3P|CoebXdQhskG_AEz`=hKIhpXVXv`Mgv1Lhn+M=OMVg z$`J_2MCCq)oq2T__lU!`cu9PCM3~#MncaL?uezObq8?f8Cd#V{+HeA4!KI+v1_c63 z`FdsSFEsBRaCtzBb8aLBXFnmLU3{IYmhxH%KPy*GmlIdo`V3ZL5k|FBf?HxowN=eP z=Us>D(H-26j|v=DUg*66>RkbqE8^!m&F!#H4#wRO52g@J(htO6U<>(rru-UABh#?{xUBEp|jZqb<|9)vxvsBtw-D!xLZUAxo=;7J&S9 zhl?a!X~Xa6ko!6w>Ke*UxU@rSv8JM4o4)pc^OKlXU|g5_@ox6rZb{pK%n5oJFdnQ74>Jj{RvpUqniL^=Ua8ld!VEM9pa z^XN?g!Bd6V7OP~Vh6oH9*k^uliHu$;7AI*SF&4TKI^z#q(1*!O!rX*z4xo~^q>oZF zzn?bvf%zs3b+NLcm2_Pt@!TAuBQ64thfsNeqI)J0nS_EBUC>fcijclfqk=GZ?FG@S ziSH4C&!nPz=spN2J#zr$Jr0;F_@Dn~-^WAc;*E_=EdJ(p-{OW?OJh7H@h+9>-n9TF zoz*aZndvdZJEeY;n2)bFAy@WS?c<*jE49Aa@jw15u0&s@`e~Te^^R>OUUpdoJ)f_9 zVEwMG%de<|*x!?|lff@wdOpuVb2M-Dt^JrB?UnJ(oM8~S>(xD?0h>Qy{s?KyM{DuY z#=}~vXe3FLvyP_Fc9rEW`Knk-SU%``+^+UG zJ!b^y?BQVB%|vVjxbu9DR6&X002rLy>%s3U@{O9WJjoLlBiWZTnx-o;`<>Wt<< z8i^0`@<%N2H}$IZMn`DFNI$VgM|}IEGsJqG6ME}s9F$P_{O$G_EK+)4JSI;)nItiU z7D9rohIP@x^vSfu-&?jc4S&bole&1N=>Ydt?HEwXB05E+r7AMiv*oL$dXdh9c{WOT zl}no)3)rfbipFPQ&F{bE)z!@=OrJ=C%dJ6G^IE)&1QOqURY4cQ$ug8BRqpGe-Yfyb z59KFPbbfvw{_*$=_;!+H-}0H}5j3^)k)^ZQdexg3GhWfYZp zgGMxzaS^0>m`@NjB;L}M%P5xb{3ON#r>8?xQ}XRp@>7HM*E@8W;wEB{p#M6tMq$4A z3{0n!)dE=kE|lc+C`x1z$gazEc|wjXdcMPhfp1pokzE_?;F8r_ZTBS!mw#{Lhi>XE z7}Y;oN(ck~zDTfQK!w-S|Kt3A#z2nFKpBPix5T7UGg+**64U%hdYn(!tsIb1)%^vI zi7_lub#!(ltbHUo#!Y%~d`M|lokM+$UZnpjpE_02eHRV8#zxz1UI}6P{VAb$PWt^{ z3!0#}rlxsr>y5uj-{q#bt|9}g=+gHlA5}9ik}eHt>i}5+ByUsa2n6g}gjpn~PyNGX zeq~1>Rbg(S$26b|XWGX_kyZ;25KxE_8iW?GC?<)8YyM~h$HJAVV!g5@r_EP3>DnSw z&xFcqu*W-hXNC_N6jOo8#UpCBCS)UO+Hc1B`A^)oKI)OSR64Lpm-f>Z$70WMuz=!*hOkFjTx8t-3;s8hOsi|`)VgAkoce}6#A8d9mh$uUcenHHOBgEw z?#}yNBDy@*t#9eJ^WIm!##V04YWhGNTB&Q;1Wm2AL;Y~~6&4`yTIy{r89Orjq?JXs1)&g&Bgyu2<@K+odeu=1J?l^gbf66pBnPBHs2=EJx<7NiJ4P zdzr4RjC)vEhhwn^{6- z1`a3D7{a}!pJKSw(Zr&J30;X)B}N7{kOZ0}tq)X5cYgiZ@mhZ&nlcim%WC5I8(mMg zwM6&K{DC9ApC8srm3iB~dUk#O%R2$4)~ADd6C9+zg-v%rYgpFrj!M@AWXGbHJ$ns^Mry{00pz7vve?yc2axIAL zkU;$8!HLI+Hz4wQ#*bu&M?PTz?;YNgY26hq7u5pPNz_u=)*ku`rbnrKr-QrsP=jrO zmTKgXiBtdSjbCAtC8ufj3i%J$S_74J<2lf8nHVEv4CnyE9*a` z7_TchW_m9U5&}6wJD z#_wl@>emCKh4qrzW?bDGqsB!_Cm>Nac2bQSI`n|#y}BO?RCoFYv7_Jwx2Y`aGK=LQ5G-I!gruOH9L zj5%xT?8p)3hjo&uzr`@~)B6n9jU<;>jhC~>Nj!P=EYxvXKpZrglP`#b@1+sCF!sNO zx=54FHkL0$nA9dS6nDo#Xr&pogDyccf4P5zaq6cFApDH!7^2A~;VA^fiZAhi&Y0ft zAP{pE=S(*=`T)b=M-@+9nvd97bp)nQf-rioz|SP#%ku%1r*`e+%Fi#8h-z$sYccuT zPF`V+Vp*!K*D9Qmh|%CnRJ-!y$9te8qNcv|L%puv$*VX6p{`xX!a(i*rb~zT017_% z)4+f5j>KT!tqD8SawxU3E9R0YRN$8%S_;BqZ%BvfScrUsLdA7LnA|Oxl#M;quq*)* zjo{3AE!wMyT>m9@jT?21_kn@s(%oVx#~JuhT4)6!It-`LEY_>S`XTK|zCGO%I+ug0 z(o%(CVI0RKGN%;X9CAtm)h$`KAz`V5EX2l>VM99iL}_Qxb*qy%A<@ne&EcXYHc~~i z$a&DTcwY7|@!ky#p-8X3Ghzl@oy@F5JwN|$VajXc_I?06Fsr<0pmtg#X?^+>`Hy13 z_DryH2DEXg;BK;h$_UW1c_F8J4Y9MgV^zWaLkE&WSS)CA*cj+tu)K?{2xNZ^gY9Si zgQ-vgCKxL^e}4(AME_~EmgsVF*ao;osL z`EcXUFKrbBS(aiV*A5DU)7cqH#B8c?N+4Wg_=4atZ4CgJ)Gb9X;M0@15> zwj%F6pH??%D2G&XH}x=|-z_V%%YLFA_K&Glf{QK@J+{L2^H)o#Cf65$p1pzgm^ug_ zC=!@?9u2*!JBdx(1uj-QY`}- z>uifOEfNvB2ggzi*=eQck+oU6Q$#0e1MSB7RYY_mnutBp=PVuaAny&{UVut)*{j8X zIA;3N2sr6Rew}!2x_%l>y5M_Qa`M$W15utWTV=OYmruEG>i{8kz(SakQq@L&{uKjK zW^{3J5O0RaB$>>k1cLlL!Ud58eo5ql^aSeIm~?8nDu(H%jESJR@9$QnH8N1)`dGk- z#HVMp%*fkBBa?Vm0ZBFj{MVOjap?Uh@z2c5syfsKSaLH?^a}rE0pMJ#xfJvkO-ReC zt-CLl#_*OV$u>mG?{WB0mtYsPu}5cb`*9cp6ZIbGOz^)KP!ISEdjW*^c8{l`S#?5x z_=(1$N05JY8VWWG8hR!;Il{-KwDUnFX|N1AGi|8c)F zKcYwSHS7=*d}LcD?oMzj4QJxr1ReMvHgN! zKg>BNM#&*z%9pv2UTTt!P&2;%jV6cK(L332``%KQ%C6_S4p+j8JasI&`!4RIm;Z~J zO1q2^VwaFN59DN9<0Pj@5te1lyai}PLU6YZ>Gzl0c!yD&`Uzc6897QWCcxZJ4%}>c(nLvv{BF(WJo3) zQIVjR-1meatZBJX56IIlIGt&EW_?HJvsT6cp}p)?Gb^ZP6#XyidQ1Jo3Yi5`obh@r zJxh@8XId2l4hBETI9hg!{H)yLH^beS^b3=}ahL4Q$HHsIoPOnFPi4=E4~5gJBG`JB ziOO)ZQ1b+XTbA9=6B=uM8KmUtjG0Ghx@XEZwhlav`{K3N`IaeP+sP2QwYkK zq~{?CNFGcvJ=3*s!6Ae&LXyF;wLII~m!`%G%tcnN&k~%(E}3>)I#f`q@@`Mg*cTFk zaPK#RWU*vlPJCnbt5vfnb=@Mn4Fh9#$5$ir3)1fVMV6DeH%kaI$nZ=RB48`B1YA;! zzbW>K`7TL_ms}Be`6-{T@q^+Xz>xEiPaFGA2;)SHQ#k+OR8H=>a?!Ch)HWO9nQ&;D z!%;Bw>xIHR2|X{t)$E_;>e7y+aoPQ%4+|sIIi1Xy4(Y(vULbraCC+H43x1HkUa4eT z`RIoZ%}i_~SDvXlpXm*M+(tbq{`OI|BRNpdXdO^JQ-F@y4TXZa&}c(kTK{g5t>5Iw zy{(iIk|+A@L)xs4$#;!Ouche`9~h6CBBt<)F{uP5X*$c*>}=DGLOD(t2KXr0qT-E1 z$?p=4@ogOaoa)g&oS0`+JW_`Fzuu>Se=`N116{!YfpKd>JMXP!7)Qvbab2hy+InF8ag`+{W^ z{8RL)@sKiv_*~lMxE)kax}q(AF80HXl=ufTfu@MUL2lj`3YpQf!$ydEb) z6GVBLCzX6YDI!>e;EM9%&q0iAzwaEssdq{~V-{idFz!Ej>f#8S8vo93)(k zYUN`cj_ixocJ9c=y4?vJzjnli8}wcT2$f`vx0Cd>Sp!v!&X#8=w+}cbzj%r$5O$bR zRjnqX@zRtf=^giwYcu7U(b$kU*ahP6&5ICF#9qfAe~2?gt##%ZwlJXoe+S`*4qk|x~>3VpJ&T0f_ANJzftM7Thh;zqWHJHWkhXiO@jBebe(GplL6 zKS{yv&U`PQWddn;r_;2CJy|22x1yTbvwQ^Eiga=;9x1ddi*59+6q89<9$w-AXd1L_^4zhRk+D+vP52iq|=+HiQxCW&(aPxb%g0!$MS3IZ65 zFSYp@O8@RVBU@bapXc19fpUaEQ^O>2P#St<<7xjSYxmgG9*O#QM)iQP9oU|f?J;(> zMspu4|J{hO$fv$W2g}iMf0oe;%%JNft?(AQKp-&X5Oorw7jncOeZucRE58`>qrJq} zk**^@#{Qx+g5c-XyWDlxl+r-3yH+Q?XDR|IXWyIsl9oi@y}drW?zqXG4#z1&sTwh= zEy~ZDhVMGBT(_ute&mJttmd}{n-O_(*_agEp9(JrFf*QMrNoQU8X&}B3azS=EuBv@ zTUqdNNHP3!XqXVqXY_T0MRX2Bu`sNvDiW43GNK<4%$0oX#g!|5=>buNWIM<#vtUk0 z+1py+r*ykYy#3*-$Eo|S^ZrbGWoW)&$1KAL`r%UX-py(>=n%2YC-H=&GkfmA@rn0} zHT<^yHe$&IX9l-Z9K~|Itpo`K@1-lPNMuAg(fOTq(cxecp-GE%uXNnJN!W z@n3EoMwk6kMeJ6^=FT}eAE@^+iZa>7fdftaq7a?1ksrarFQD?KVxlzzV(OELCsY;| zdMX3bLW9SNBqcG5>B^YAwt?};fAij=%YqEe7K+%H7Jqi0 z)u0-5(@@{B$A~?3dY&Rzhi1f)JOqXP@EG&|9t)9@Pm%z|}&^&zZod?Tk!bs&(Bk;Rw$GkTZw1<4rq|njo z1<(<7KVoP#i?kZmiMrk)wFiASzlN{)vhE-p>;i36>%EE(N5Lk0>|gAmRL!^iAFi+U z7EdGw8=hv>V{ToC#SCehA|qe<&D7WY%_aq&;N;6sU`gzhL~~MJVaGqmW48%@v>*7{uc~=$OgO41 zoz-hJz(g%HnupTs{aaeBYQk7K#049amFOG5U(znR%}vX?)H@+f-U*e^=(5t`gZ_13 zt8Mt&J1uX|X_VBH8^8^0$JsNvgE-7`xpO!>DN@A+gp z^pT3&23SiG7ru~&UO6oMroY*#*QR!R?26H%67+rm*xcwF)?`ubYxeD;oz6Krg1kFt z6>L`OtdW}i`G)Z8q2p679=2OYEfN4v!TVd`8qa@viNFSc3RXOwQb1FM<-e6{g<28J z#h7>;vkl-j@Gpk>AZGqENVsUc`}@jW0dXh{zKjXd1u{G(v8)sE4{5NX8=zMo&sR;D z`ntGARZYIx)zuWcdVYfyBppE&0lWb$YTnl6(J%2j%E^ha++ms<5iwmtB1D;v{Fi1| zM|?gik831dG@~yHwpZU>kW#ls#*~$shCxt3GAaneVJyct_0X$RoE99QJPk!vmbRJJ zZ&c7Sk(k_n-O0e3@^j0J^P`XefUI!028fTD20PlcjnqK%`|XKJej${vj!GN>WFz8@ zbd_x<^{~6be#sCqrvBU^)LARYmg1U4~d<%?f`;Ncn#U|JQV<`;Fb&1PRiz7%i(9!AQ%}x&(&8KUnWQ6 zSv>UnA21&m-yf0^3Pi;|d+cuQe=VjP%!T5^hR$PV&fqpIFYH_Y-Q`_B{ORr2s%M+H za=ba`euzQ#kY0R{@S9|1n=j6$10*3r3Csc9#52hG_E=A#lgnTl(y4;E8cMeB`_AGl z-V@u7x&mn@bh;MkOBd#O_9YPD5D(x!aQrAM-nju50FS#uP&_dK3S8J3ZpZ;Pyv_i^ z)&(qTHgAbIBoA}|Hve^5*h=upM_D+aEFw3;W>|_FFwaJXNdIe@^-4sbt!kcTjnu6; zmYLJo`ym6*4Vc`8ym#uP(LH%oC*64TFj|dnQ~( zlK347(a{rO;)&eh>suMAiRLyyw;ENH3B065;WL%PP$#gxS@{RoAZL&aKF8C-wgxKk zz%u650Jy9}^)-C;lIbal0eUGF$!80t^(0jNaK1CoDv5h%1R%A_q|%*?&##*uE3!Xz z0|O6mXn22n^#F>cO{jBvpN4iZGZj$5h$LcvKi3^Sdfb_B2;PwK-T7_{$9UuRREFPw zA=m$BZ<+E`>}mlRq7DXH*qDc+sm8^;^qW*C4>0jYmS0Z2<~lXimmE<*SyrNx4{(kM zB*geQUKcDzB|S^puf*T$BVRD@^c87##5HSs62#bc2SqEQp%&+z1+)*R2F zHR!Ezf->83%T>+GZ3C>)6h{Pd0@sF|*jc;df*8eU)E<`JE;p^A&yJy48F%vS10z-E z;%lwG1oD8=K87=IKgnMHf5XRsE1wCzDfE|Vps=Eu6<44n0FKMWw!L&UO{_oSx1_t{ z`nGryw9*K+rG(tD$&Pf>tI!`P_syQuR2~=o%^qJCOyFMwQqt<-nT8)ekT23I{XGM` zWpIT=W|0f<`9=4wjuc%$Td9^N2kziy>OX_`xj`U9o7sur@0X(hcOhzXRSFDQYX(g; zm6E>|FwQhila+EZo;A6inoBt4sl?>&P#;QgWTd}feiT*7RHECbz-3KM^pcZ_8$zd3 z%9m{R+j?_1IqLZ!JsHHc{?FeRVykk96z7MR4RDjFca*OI3U)LZqbM5wyGH|G*_Tii zr1SH^F3f-K^{s&LuKNijeJSs0|-vKBp!HPq?DH}xv z8F{;K-BRCWxpd+BUJ^$}M)Lf7c%|F?g$GD&7`5_UO zi>_6+pNH!j;CoXnAwb5+M%E(|SU=YRO-e_?;`cMzSUWisk)gxK?}7-qnwg0ez8o^# zq`&xHpvF=qnt<;PXkB0Sz6k$G@oAH*$x&q%)=n&{6Jhi=fZlqY@2A2!bfz#PBfor- zyHCERV>$=;P0csNcRbh!E8KbJYxSp^Y?$+&xpF|T0n1-SRwB6g17hwXrY@99-2x|b zB%gfRpGJ{`BZI{F;KdSz{lArsM;D`tk^;X0J(l7S+_v0KVjN^>MUf{RPFdZ+Ir9n%5M{L6{d4xdP4L236Qz3xoit7z zJy6a3aQ<+UfenE+94S%9BAoJ$34!V)4Hd1WYXwk4$CpU_IvbcSpeJtv%wV8n`HcZq zE&NfK$Xf`%;9VGA*)SOa0&@d8f3ki*AaUGCo;k#j6;{Vhb<%>%{ky79)#~UL*N^fW zg2WyqJ_qo1ZU&uHk^1<)&j&-&3~dY1$9y$&7-mL;Xv988M_6mB2xk}ewL?>3cy(WU zH45$mp4GT6G5-y2FuBK7et~&1FvT+ajw?LrLgGyTXc-MAo1Dm4iY=>FWUebJ2)haCIpDp6;7WAFD z=yIDWYX_e)_dr1!85|Hh8Z++UIKtsEpr6v2#C_`2b8e#sGOq8=4h()V`G2u{eG8~x zhtuyU9KiMrJQi6H40u%Z;WlzOf&z9?e>l{oExiuc9MAeRMyn-r_%`~RIh?p_ZAqX> zOV4P)ZbfZ>-5ceAu{|VjA}1Gis`~I!Ustz8y{WOfTCEk>{o$G|$?4|GY#Ef}F1u;y z3;K(`2w+L+iVI7A>}*lp7it>09+MI~Byi>u8r&6INKDd4?P?kVE+)rEG)914H01)w z(U{sc=t+0dWi#j9Q}CAMUtpAB2+3He^0Df)OZch>40{^37uVl^8FIegIZ+QS$i z_2;v_h}7A?kwc+=3t!LEQ^_ZiAT9%(HqkgjX;y~PhQh!k&!kUlI zh@V`}mAQ>+0y?h)oph2A`uY=Zu1h}GjRL7VkhgN7VlfQovGr<-cf+f=Hv`|qXE2eG znf8klOS(UfTCrz3mJN_+A}XGTiabm_Gxp^Q0W4{@<5{*r!I+Trr>Sm+Zmi35I~`;J zc^z+E?Vwpq5)L7z>e@n#+K8 zr${1shSYi8bjVCZ56~*2aAfX2hw^bCL;p+y45}v=wa=913p0n-rpCi(vNOy@6J)ad zAgxEm+|GCma_XcUMe{$l-R>YBb;e?jA2{!eiOfzCLZk;ls@2vQ*H={cKR}+z!oYDUFK+tsd!z$8;4CO3Q8W_-< zDz>x1GXM@1C`WZLV4G#Nk)8f`CGz_d5Ft>>69CjCx8D(k%r7Ais_2xwOALn}%#rtk zBC)9Bt0+!piw3E|{TrnbpBipu+X?%6Tmmr7cab6wM}v zb0F+{+n-q>%o-p!C6q2Yd+Z_ez{qLp4y~fh_U8UUM)Cqh1!pa6!a*f<+Vm>k zfLXUe`}UzpUL`*u?!|3S^~ZXEC$?$@veL)-19KI`k1YO2GWa||VYr8g7tAw$zpZ2b zW}$!)Ba69{VhH-WKky87ptZ2JVaaPbAcF)A%fpi#KF4`6>$Dz;lr8C%%&FViM#N>8{>lk4HHl31bfp3TL8KymRp!8LRKj|Y0 zHaj76*fS1?O}1;1-|npk%HJr}%l*oK4lw>zsP5l|XxMW5f8_NA51RO9i}IqPkM=4Y z%(Q$jiN3Vi-uNbqO(r{4!*EQUeeGEOo-#ukE%IL*;8SlR$icU$Vq+fDv6%7VzM$TQ zI--Cx1vG}6XipqU`YY1})}PV@yM@Cqx-tVbgP8r=P}|>h0ODW`_*(CEbyI8DAci^a zLg&^=6ec{KhHrG<#OOeCq3Y^u0FqN!12PQdUVXE0kDOE|0WHcVW!eppFe!e{)jwpt^i9>WYkiL4euTZFL7N}uA74`^(`)*$ofniEJIG7;V7P`2Y@eF0V(eco1-bXxJ>P-6YZ6)N_Khm3y1zDn`e!s40`Pq;tt$|Ep$x_5;YIlN4 z<><0B$n(X3Od3I#eI)z}NfAOz36L-4VN_a3Js%%)t8r zkc=P2a85KDw9T%v%}QLlj=Wr8|MSrRe@>J=XH$GL4lHH{wS*BZX3sPGsZ&?E3EY3@ zz~L)E!y=GmMdR}7Y$8j-c}BZ*^J~$J>}|%u9dKAU&{6@g$XN_4lo*8|@FROr;E6O6 z**(V7X&w#B+Wo*Yzf{wW(i2%;F^E_T_00#QZciF%jVj3|30Tz!a2HbBekTqP4VD&* zN-zLFxh7+72Sja1SGO8ZKX4_y1kmFJNcK`F#aID9>bi4zaE*Eg=_tvxSfX-mt(Lc& z1#D|myt(?oxN-z|oYU!G`L07)T9h8$|H;GHt{b8yLBb-Kt9&?sy z&5*Fv^+w6(XrJx7Tfo%q-w+SmaR;q_h+W{HR)*iR2yVz5wt%N>7yy<$VKtLax8$6U zcOhZFU_3W{*7VkHMFjozUg~X+nR-F2u_jgDAxAgs4}b`ck~z=`D}39;?6<9RCrFN- znLviVo7+Be-Fv##1^mRVjOz*+nPo{Q;1<>cm?aSBTc7`l;%EeXpa4<3tolv}K}AD$ z;6`rZ;lmrAaZN3j3SFT{tE=##!d0oAaE9Rb-JUv4dMz?9V{X-^AF_8%Woi#ok;E+0 zKP}^Z+~d6+uwb9t_xKe9wk6u}Q|wQIV7k;Eiu8IFrIWS-+Sq%M^_AVABtKUZ8>=M5 zy|#Jn033g>yxH$eXUuVY(|O$tn9F%@#<315uXm8^L>NnvMUrjC=~&Y24UNRrD*>pna~Z=QmOwQp@?)_4sN z4zcmujU7pKmw4A^-L;s2+`+}F@mLY7fvvm|u6K~O1qW56V*=|`Ceb2!cAO@EQAJMn zyI^+);^)Ly4^L*@zT$}fDUVt5K+G^?)c%rGduNdX`?Fh%2)Yak)R%F3jEnkN&<4kw z()%2f6exW?BT@Yj*)vBOwPWT0Umt)JOV$)mEU7;;QSO8RVL4hs%&sgd=xG^2^B`sH zSSb;fa#%e$Z$B%-4k*t#iA+#t4vEfPngh*KYbDDkH_2zbQbYzqU+RB`hcT(XXrgP` z|6~*;4D0yF@2@22>(dpBuR+GPCQVwu~Ze*NoWpiKOO6MOrOif3+ ztGb#S5wU<-hFCeZNZQU`E5Ug5MP2EKzAvrkC6oG6(J-Y|pe?e>GDgG=CaY&dzY7$t zqK@{2H4E6JDsqOhBsm(IE)R$eGLMNmzTmbzGU_N3(=#aZc7mGYj&q~5p?3Zq7O)6Q zK-{;Vw~T@%^1|jo0fAze;BxP6^RuQ3^sUoDNrMBl;-b~dTS%*T0?pi3XIu~I*SO4V z-!YS_y#A*L=6kj*553U61*59GqLYm_?{n2g-~sGuS!@BGMT;H{kH8)xNG!}?lG-~B zhyb~hxhUgetj&B_bi)X61PxEmq{a76-N9?0Y+g4rwk*;uCzi(qn1hb{15A3Qw7>Y| zhyOJupFx|mk>xT23pA161O{POHm8IR3!2bfV$4BB*(w*3}qxE@8!JobETfsRlhMq!+!`e%)Y-y?(1a5w!hUP6%4 zYz4iyi1Yo5O-42f-%L8iZQNHSTdVm$qp9Dc{W&*?4pxxIPWSXfOKkN+W6IZh9gSV4 z#E?27$Ry#Ipemj!^!NG`&0^l_Gad$I@nZ~bw%x#FRUx*QT}qyh&(XfIdrv-ld43n^ zB?ZDH^u88YYS|I+zTD|s1?E;}M!{ThPs~!nbE3+xlqT6lw#bJli`s-Ud*=iNOEGpRIr;YfybUc$Rwlo4`68wIFMb`MDHQRk(i z7qj0iOrxR=H55f~Tf8XUjLAmj9eWr?5k&6F)0 z&wU|!l$f%~A@trX3O$E_clp}Sr#k+~I}RY+P8w;%-Ik)C2EYz>#kWVUhTDYe=wrfn zen7EZh^w!Uri5aJZEZnpE~y-;t`6CajfuHOvfm6f{*9RV@~pAS%ODHQ*rON!_f^Ln z=)i0FF;qrJ1SxaMm*;6wO%d31__}D5DB@-*?>d?F1NNW4$-{(ZuH4~HUjDl`!mdaJ_!x5bU+s^W{uwm5&Q=uUKZyJdAth}L z`?Mke*VmT{#pv&AFVmgagq(pz`kyCY)mP(u!{v3j9V|(N*`viP+@o4IC20GYPfU|7>Eu;2P}RvcwEH=?IDBP`P6q{76>WtpaHaBT zQo%JVWCNWaF*iZ=7S9*Hbx5DSy&@2bF;_~|kZ(o*KQ4fXQolT|zv^ZqK2nxzu)#szMa69n{xo7icnFjjn~o10-e%eCe0{)}qy1<#s; z&5EcrLx#m_;?-8DfT8{R8zlVdhHsm~BY;|vsJAeCtaIvLu8LhlPCrEcn%$ukW(O>o zM|7d3tI78hQXuFS@1{(5yXB(!;<)*Xm}_nveY!f<DUU-x4f+_X23V&V3G8i`+c>5aqi zzSFt4shCPDPpTf!uVr=-$m7l*)s}=gM10?4)W6z!?9k!uP63~Nd`$b<$@td(?(S!E z>vvBHu%_GQe6g8k(sOl{o;Sgxtv(;7iezwnKbVLnSJoqhGmBgfTm07W<0Yd}A#%`R^ez`l z872`F@)ApH=aC>Su>mNv$>Y)6s>r&0&Hd@lk~F8ml)}6)lZrSSn!m4_*j48DQ=s6CpP29BBQ#M zh5eTvJDE$woMnE}vaAWw*>FDz6n`@Q{jKL??TI~Vkd%VBo}?|i!x`Jy^DsIiWd4{x zgggbRW*cqa1B^NpLJ2mUOuTSzz1tlKa#`aqn)oD3_p$q=4?f(8%xAxVe)0KA^4BtF zk>($A|749whBt z*cR3(a~x(IFO`&L3s1hF$ofo77M6KG z@5WbNck&8^2;e7953ppgc&o_jSG!-~U;apzilNerfuy%ubq#vD??c-fpGtNC&v$+5 zgd%!|8$-_rYr>I+hOw^ZY?#F-Q7A3^>BySB(^HkHCU?kmSfSt<0eh*>R3&TC{CY_F zBSsECmpiNR2jJY7#rH951896|W)a_QV*`p$AO+D<5f)*m*V12|GUQZEy1#r#o}ruC zE#sa;srSTU!TU2!g&lW(U$Cbq|>P&mSyesh0_(f&j&Ox0AA zateK2_B~xiknRLXnESHdl+kD~O5!Gbj0;+tYm45-@Ef7XmhSFijBz<^N%3E@}^fTzPl6k7d6u zqK{--WZ90KV*83+phksRti;PNKpSUq5b7d#$S{RQJ$87nguBdZZo<_?L~`Sy4OK9* zr@&rRWsrVAJOOgAL-vEszzG3nx_#Xf+ho zds9JFqekEH1RO1@hs^tWX0F+brkxdSIukFV(AIH#r!j!^-I>7>@7nP2E7G8kf}O4JG$Y zawuu(lgv$>LUoqWtd|#5@S2F;apWgyLNEi`2gb}>8I4X0ErqHpkq!hFN=^0R8T;mk zDg!whO_7}jl&Bo%v2>HQr4xH6l3X>+oEGd$26mC&)_vQu@JWo8I&#x;C029ZqwM7( zu7eL_5EA_5Jl2K`I&J?R%z<$oM-ys{w^chZ6u}mO4%B=Zy+A6+CbCKVqja0m>=SF= z{T9ydMx9pucHvHB8FNaPaU&oxE9w@Nnu+<7MgDeWSht72x3I~_iEgdl=dHZF#0~`#^w*WFuTV-oHJdQMka^-a9yJ(_#S2gR|1`G}LLu2WB{-zH+vh}nt^ z05k^2R8q+m7x62jrVow-81=}bLUWdF(9p_hh)vg^BhicwU$9J$(hu~x?EIwP#dD;j z#Oyewmkc0D@u_gWa^*6PWItviZS5JE3A1vkZ=t7Dhm<$g+Afywio)Qz{Q-Zx-qKdf zXTE-k7msbKrA?zj?Kxur&}mhgkLbP<1Ykx`1zmXr)|X@t{Xs}z@o|@w#ihU_365;h z_Z^2K&a_`-f0M{B>GoE)U77nwrxGHu()%Ski=B_#({Ry6F+ev%`fW%)ev(JCNu)in z;m=O}O@*h$d&g%+^J>~Dp_N};>JtfU?XDq8YQ9B>{w?tr5^NFv;{rw*w1wg9s?dDt z(*X{W!cF}lvE*F#)bda7BEkzZ2C-~MUVbJG3zXFx7<$C*X~izUaXYGKCM%`42< z>cdwR?keTG&!lh5R|G8{XcO<0lzqO)e&fq?D*Wo0ecSS4O>eQLTB6V~o#*l|=_GzB z;n)v>eKQu8t|9eW=CGvahnF}8byic+_(AQe{;T3$n{gC>d>{M+17-bm(JFCl6SP@` zN&<6L#h1GXph+w&qsYbg#-EI4M724r;uBg}RnesBJ%=xbcEcJi5cazhQ-e ze_Wv9#WS-Kgp4BG94g7$HmdcHE1ge`i5%J4{=Zg?G1Tl?`b|KTMYhz;l=e?Jv$}*^ zF}>$~VBozF$GGhp&+?H;j(W{3XLQwJh-wK)2?&4^1V z&4I#x`q4R2#)Dn?_QKIUbP!hrISF?b!N$9>M3SV?{ulQ>-UYRprUBA&R?BwY(cr8e zQiQBJm_KE%A32uWksZ^b0dp2Hj6SF{!QW9UC3c~Mr{cNe;9%9~_Yo-X+o)yg!Cr&f zyj;}l?;xT@ZBG?+q$urS{|I&ryyvZ^Q>-wV$Bi3|;v!%9jh!nCwa>EO2;`v%=lCaX z_wjcCS0b6(Z6bxI;Xpq3p3rt{g`L5Wm>s5I@nNm@+`kq-kH9xSxJU_lnT{Wu2+Ei? zt+ynnFW$+_B4~&F4iVDe#4WaA}tZs!kA)cYmLmKasbDH40 z?=cJ!732k4>^9b^_=Sf8bQdzZkMTiHN4(pVsegJ|RE0$oAGVMiV5rmjfI-rw&pcsc zv%W4rbr?%8cGwJEa-sc&ua@MhZ~nTmNo^-h0UnNRdMa)D=){hBA#_u{_7{bd!0`b)IYbLEe zqbMTJ-2MO&t7?Dr_iO2dh}yqjdl0Z#Cs^ai!`W)YYJ`J4WMchTeCtQ4^kkdqfBpDV z@|=+i28rm`w(yVtWcrnFP0Axh!Xw(H|6^4BYH8xkY*@ZhWNUW8vg%7q{l zOg+%f_29PPJT-tS#L$@-YRKi5$}@E!a;?gkn1yr@!b{~flQo`fJWm=(8>X*{VOu>w z;n9Gu=`|(@X^bO%pBDOW_b0{E`mDwD6H8%X8e4|2dg$vxt2Z#XXjX@XKh|2r-G7OC zVPfUBxnMe3QNAj4opn#!@h86sGNE^YX2xV8yN%<2IweFffA+@|x%y{>xE7mOM0>24 zPtLC0Ua9ZnI~|w#>Vn`y1Oe+AOhh%{Vg|yRT_`V2Zlh&zvCT^1!J=yX_$H@9=PIqF z@Dg6lbr}TISn#h;N1DvGWapG80eQIFO=F&vGGa1|U_V1$p1Gti=v(x!w7QDlnin-2 zlM6gV^aj3-$=ju(nHV;MO*nB~PO}iPm&59V-AXR{Ct?lnl)CWEWsx+S{Dxg6gZyPC zk1z9^=t3}#x5GcEsfFN0rI2+WFF9PlnsC)nmAh3ZJ5V4*@gVdwqLYDepy=(1L`yXu z?8JZ`ebm8cS-z~ew<&-;D3E=g2x}e8c?p_g4J#0+^hsTi+;vKjy5Y^1>v-Lu^)=$8 zLTTx@vp69>22|5{CE5lDGjZ%44`Yttc5iJ6M#h-i$e(gfOXQL7*YCIL^z^o5Zhu%G zZH@*MFP}P;p&oH*)w2WzQ*L>1C-&X9n_iocDLd(x7%X_s&hE-jM@p%y8qjPcDc!6$ zS~xteUL%T44S0tov4v(e^h=ryCFY&k9$uE^e1h!W3iu3_9*!5PO9~I%3j8bavgp<- zd4L?vCdnYQQ~b?Zlx}K^X_1rI9Z~9-D%32#8%FJ#rj-a+St4s@#${JtN&z)7@@jFZ zC^!P^Yf2R~@!k`kgB%Pgm4=i>oE~61_-xh`4%cZtl3#{+vGa(iW)VgR2D`YPm#UzK zVD%XDkI5r(jaxx~%#cGj`Cd)C`=Gau`z4Dd|#yHw59kZQiJv05m; z7>d#A>Cg>A*QmH-8)EzvXtT{F{w=k<s?X#uW)5<5t&B_RviCjG3JolneN3Pjeh)SgdleE*hn4Z-PQ8CFcZuQwPv12Pd z^7{+n$9An{)gC^)&+oLcHRe6s`tmqTf&8}lThdC|SMP(H<4P_BGpt#DKaI4l&`&rP#^Qa!N>rqIhR=TR-)&d@1eDt)KhLJk z`y4L&$5rotiWS5bz3xF$IPWJ5wajOBt=&r z0fEN*dYTm*EJu5G!o)hnVUu=o+r+a7HB!B~>kjw(hgNy?b`PkZ_+KL;{B6|n7jgQ(|MIoR z4a$tm21e6q@X&Ys=Zkc9{#;PBLEiHJt<{u2{=YAEGSU9VW>h!B9BRY=zn4DcJuj(j z`H1%34&ANAAGoLg+E7~|AI^tfBuCURrw28ue_uw*M2^-sL*Geaum1N*COf&d#}{@R zDbui&MIKXV+Tx2$Nl#1(u(NZmP#XaQXv+w|x44Yz>%;NLktx3Y*VFebc?r!xs(?+V zv{^@J=C$ACMOS3yKKuvfn`Ttz$jVurXyRSz<8MEB| z09Mosptr#@bw}nFKcC)no?qx1HkKDHDGdzlmJ5W_7;vLoe0WPSi(#oq6BU( zcg9H$LRGk_Enut1=PymyvtBWJRlb3`P1o72o#d!?1NRq&&mRjDSrNdL7KCzA*H;GS zDegg?q>g64j9h;g+_|SPY^*GIqd17e2T*q2cLp=JIX72c@Bj}%m`#q6z9KkvME66+ z&gs&X6?nKh^6^ETRq&yQl1)0qV!jvtS2c&{1voUEaNpv9?#w#@0t|M_RxDaPVwb6V zz@Cq1=!}he1^DLJ3IJ%eOqEySj)rr?+x8N)4*3IeX?sxafbT0>xad$?~QvMY}eLygr73f|`Y8wny*XR17 z(sU)N>#EIk1rK~ZecFAr&Cnsv;6wIwSu$|B{LmVoN3Oa!G7|Nhix`Dd<9S^?Wx|pX z9g+{DZTh21X_=^sKiT~t;I^=FPF2WoAks82wx@UhXo1x@b0;YhxMdN% ziG%sICp8CcJ_JA)QnuNAM%zZwp)Po^k*N$jU@vteDdcWEyb&LXDln99{En+%6rU# z$r+mkCJ={-aYSJ!%Pm{r)W!#_g#d4#D4hRQFp(dfK>!YV zw=GmTX|p0UWiWd{t5hIEvMP|3QYqwz(5 z-rb?lfM6ZCy;pveY>)~Ba#!vyg~QUn!c9rxijY)kKNJcl4lpmJ=xB-q}h8 zk9>&T{eVdDYr9)@%iHmA(R0OzXy|5$i(Wdn-aHzK-p(zGo}gM9LXb*)AVja9zNDnW zm*H=tFLDgxvgGM~_v42ad;6Vzk1yhHL-2D9qv*iRq>&IeY}ciGycu#`%>QO)T#4bh z$V0cqhmia_Dh4}rfJXV-6m0A&_VZVwyOE0I4Ozr2LXfFX;`nBJ*O6(VZSr>J)$8O8p_<{nNQ!BHnKVTnpp)yG1ZxPNw9=m+gH3! zIqWenY#MC({?fUb0U4>o!gH>_7F*v{@U!956dF^0B>4zU@$G&q}*%-ywn3!{G0BBh94dfH46vHI&rvYVAhS?}wn z)#tny%3P@;-G~MG)84MSoZgGSkiMq=mA(*lo<43uP{b)$JN4?yxuWeoCJNn>&*Nvj ztgG{pBDbGq7*FH6CSu}_Q3#J$fFs$@Dy+n=daqM?f4%%5(e};qr*Q+IU*UP#6U`O} zoj){@w`NbUNmdn-kA|YnzM_Z8bI}Q6r|A}AX05F@g)fqt0^%(OAi4UN&C3M z2R`@RqkCuKBe`^1@t1S~&HbF1srSE75+qDm*bQdLhx=@2x7}gkIbQ$GgW5yWQ~J=y zK&;I8$>8m{$apXG8C<;1GvBYSn`_#%h28DD=(-%!AiZzsT5kD*%hPyf*m?ysMnd*~ zCySQtkA@QgjBbcy2jfT zEhOzvon8nm%dyPBN8Z!728#>#eVKLOi?>F9&vE9HUpEe*EA@xB@Ci|R_XQIYUCsWK zSxbx7EK7V-A`?&kwh6~%m7>%y4YL#33$RB%rFd`#svB5KbA#DzElBMhT=Z%*+;1sWRq{>peXUBD>-h=r$ z4qSSG{ye_SpvVRC$ROA#VeaEFq&JYWXhTNj5;R5F+K6!XS=ptW*8U!qqeOweMM`TI zSY^*a-}H(RRySs}%RmE1W&8lPx8U0maMgEW9aaBef^K=?GVIQsTcyXs15LEGXs zQ>M#Fc|i}}*rgYdFl@hL1?Fx=4C--yiy(b6IDj%f!i%6V^r(mV?b3unR!5B*08Y*-wC?bH;nt1n((v-AeTmzSdJ6G* zkW$&4*uhUMHc(K#g7h@+Y{wu!)e)xk?{8*^;8(MeYplGus++xK1gYsJhrPWwqm>aY&~Av*T}ado9eB8we^U>LmfND zHk3fsek}1Jc_?I>)qA z7@#Q-P-~($DH{d?xDuFO8{Ry#_&UiJn}$3hZu{ribM`W7F6ED!)*r_gTsK3tr$PBz zJocT!8!OfJ-A|6*rn-p)9lhS?479(K_y2)I|9Rk>N?`o?T^?%A2 z5MfcVXG9a|r;qubc)8(6021K#SyJMOiUROBid?jYuQ!VxIE{E>5P$ zK=lViSiPo?PTx_Q_D_x6MM9&lC-wZ32h0e61%^x-p^kgv7VFuL>~*9bho9>)0re_+}ov!>o4dh zh`i--7Ru5Nco!BKynQ3-p)WwXVRY`SmoU*8!`jL;zq&C@ZQt!zr8;z#YyZaufZj{3 zeY`_P^4|H^3ct!R*#!Y6+BvfkH!J5+>;yQlpN;{@;b}z)Sx{0DV69|vf z)~J;1RfAY10Y;K(WM98%>wN zTlMjfQu+XC;LG){NA~To3H)LUl~BTO%;&_ZaW60OY{_YC-5-;FAQ)|EdAPb_(8z&y zV9O+T!es2>MBW|Bn}Z4-yHc@f*8+|6_kG}bO5~g7&OF8-z!z*Orh8jTt+14_7vEB% z&Y^!dN~+dCyfzEoGP9dk5ZwS&h!=^S4VbvQJ;$n*sZ*(P$3t}U9^HNHfwvzJaCAmS zQ)x57p~nZ*VXkEvy&+^Y{^G$~1jX_*}Z|6b7vF}fsJx}H8( zr4gJQi4>zHz;Z}D_psqu>r8Ba`Z3+v^d!Ph44@bSx*mXfHROB=90b~KcK;8d zJa*a(1Rv)B({JrdQt7aFAC)Dn$lu@JY}U{TA88FJDbo8ickS&`cfL->B{~&1r!A*a z(sDti#%&9$HI{^~#|y#0*1@r(qaz9O6j7<0-<&Wbky9Jy01{Yc=YX_nxY?SJ88l23 zdE(*-?qK%iZMskh57bm84uO|hs?7eQ+7zGc?!SwD?o zFj2>oE;j~mfzF_k5T2!LBlIMBso|ubcpJl_(l$_&e}Xs(l2nM>f!*@U9OF7t26y<_ z*--uJ=R4)G^`^E_HX4>6z4cJl3s%#k03#{fD7uFa$0!(GMiQ(7&+3^9$Q%G5c)HY& zEyzdUw*Ks)S zrPzG-vgcsBgwz1v0wQSB#W=^t@MP}t7r~p?SD3i;swjy8r~;QM$x=Kx*ZvcFTcg2? z&zH?MOZN^&hmXH?0n5>3=X)36QobP{l1SfyKe}zi1G|f2NS+pYi`0cLY(qUq1~FTt z{tiV{PvhCX;nXISR;1p?^*1j!LcL-kTz(aI173*eCBai^s%fWb^pWC2K#Z)fP!v%p zf8Y%@$w7*WR6UD@h=rCh5?&)0d?74)S<20u)G5hZceF+4$%k*1Lk)#w0FP z5SE~a`F$Yk8?ftPRvIci7qaZ7P5FGFOdNM`?2}_)B*+HJ0NbcRN|$YI zRFnW>Ja6C2?=Aqb;obKRfq3b()eO;(tY~}@YlgoS91y9cL4_zu4iZuIXF+LS zF5?Et6SdKh|LpzncDiy4yBx~_ zSqvrBta=`nA%IwD27$fSR+QzcZ*y}r-vHkcfpl)Cn8dKv2e5eo0n~=KOW7l~lF{x(I(Sod1)w>O3 z2Ilq)F6Pu^Cis2R@fKo=hqI7|OwZX16i?CWoA|%#p+ziHc6q-Zx8e+URkFwenN6}_ zZ?Q&|UVcLdfNc$3fX~Ytcn9S6p_yVX2c=C;yRN<)q&atDAg`;5wX^lzY_Air+TOb1qhWDng=K}aI)iFOu`)5zR;BssFZ zFfDulzb@8(jb>iWv@g?Oby1>E+t}R`6fJ#C;0|}wR_zCz0{R;0MpIk#t_93Q`!Z;B zE{+Ap?uL^3Pk;6q^?OyjL@s}v<6x_k)dmdG1SKl1Mj`#Q5 z?%LXWa+P(`LVlHyv?~I4sllAV>kJ*;)cv`XVlx{i9@B79QkiGH=Uc~lY$i=@R^J`WtfewkGtiQZ1E=dbG3`0ankkMAipZn}h+tmyehzv@-fO z82k&{lyfd7>1Eyra}_f^nhyXPEuHWj?+L!`qhVdV6F$MtU5e9qM#Fp2hl}|?EwnWL zj%Tf!DOQ##f(7hwBIEi$`D*)O5;aZ(zXJBD=|5(O|ABykuOaQ@MrMI>riZz>+|kGS zIQ;L$l(Cev{|8Y6IQ99bI;8Sb8ZR8kz9433IMys2xG`GV1m;L6^XcpUcSx!Yc5+Q8 zmdxr2q)pZYqs5;ea#W7(1b);-*x$R27k|j89Q+UzHIlDotY;WI#}QpzJs0PJw-)lZ zDzqm#{0YJwQks(P8WN_T^PRpNL)DuBKiiszU)q8{vH!8*%V9oE9>pR3i4c9%A=P5f zuqD-^a@snL_}ZXxIqsxxSbBO1D|S-aaC~UD^ImpffQg?3+CBWeF`VPvcTzH;VX)?r zO@eI>q$+rvG!nx5Fl&@V!o4kaOhs@GHEUz8v`kYn#oyUtpf$GmrIK@ZwSzMa~%{f$4xhVSL*evGsN@KwY>nm9-zbi;#auT8(I<{ z7d`ScZ=Cg;>h&`|; zERKTyebGpYh=aT;Z#XUO)B=DO5l*?SWZas2F*`HFU8;N#sdPmMj9&Z57#Bi&SqwO9 zm(WL|w#|#d`K!ab)hL)WQ1Gd=y7iOmNPjr7w<*Y4j)e=z zfnp{B`>~rxTHHD=LosNYQ{+@;vwoBQ$O1Z2j`&jtj+R(3`R5IlDveTN>y2OEX->Fq zY3HR>v6yes!EnhEIbZ9UnqK#k4eZ>N4aE1@HkneDF?^3a==}U}+8H-N^`sFh`k0}S z1UFzhg|p=(nky&w3X!LG>?ZEX@Jcj`1)Lie@gh<#qhE4Q2?{r6EkXyx-q}BeqbZ-|BxS^tr zH&%21M(;;khRzY+z24qHIM7I8F4pVwH7b=*(~w{`)KfF+$aA$=GbV(|TZLKdswe3o zw7w!fd0hC=AFDs-_&r)3TNPcIwLd)nYg(Z^;u24Bb$ouw^|k0Fc!*tz7?M~J)boNz zMU0R8Yi%9Veh;eXqw=%g;BbNaoS@MSr6v~Qgt(QT#pZf}7R%%FtsR6@zm-5NpPFeu zwS-wM#d+*kr63N2k<0S*xFhCf<|*oev!MrY#+($3$^BR+KS$<7(nb|S)`BwLPv}-! zx>I%*mPNF*etRTH)N~2SO#3&=j&>C%D*A&#v}o644oWobwH<@V6kqqgeC4~#E>I=x z($I;}8aCPKyp^8;lPy60CL$;%;4CTvhwqURxk!}4{Ii9&5RQ}kbYFEtR5&k$NI!E5 ztcnvg{@P+Jy&eq@IOg3CV!ZywX+nLN95RKNb5?QO{sqn}g%|zoztG-%_W%o-@Y@oP z=A6^!NqnUu+hC@|W#jSff;GoX&pEAN`!(VBMxpirsLBvC#g}xng&osFRmM-HlOGk; znimcdb4$&(kf_OivpJ>ZSh)-#Grq&q{g|f8smfi%!s2i(owhCgeX?v+u40&4C#3pv zwwh0sarJ%{O1=y)nS|@hB-(b+XH0Q?=||H`sTYfjvyn~FYS^xgJ68nuecTn4$9%y} zVxgB7hC02d;C|nHJWr%W@xQ{wxwVX7sdf2*RRiC@|77rvS>aTA&1ljo=BjlMww>AI z02&k>*tJMg-O?Eg_6YPyyU$Oq`ms{R@3&xH94Mn2heHra8g>vWlBV}d!t+98@F%v6 zuCE47m@_2pqCiDsvf4j`)9)=+ExL-qP(f4X&S!&eJ1tB=Q#wC>e+Kk_23}xzFW5Y} z<#v2I3W=scHIF!4SGIi@XPyJzcbq(br?eTTVoIy8qd*ihE(Lkr9wkt~#GtRe|DmRd z!A9HmfajY;!W6ja-tGl%oE;)@ja8b&u)|nwNLD~fNOXohPK(C0En|q)sMT?T!2+Ig zs!DD#12H@szh~Vcoh z!KV55bDhk#z==N%kxB`=(Fuz~DC<{FTBQzSGeU8-;9hEIT*uU>3uAkAZn2G*iS1U8CN3luMp}`3X z;d8L}nCH8VVAI9f$Zs=Nl+Z*gxltY2dY?r*c2qE@r2Qo0XXWm1$VoGVnkp2li=X8u zd)_F`ZDg763Z`wpHZ`Y9eJPHqBUhM;8P2jT(p#H0GC3*4dpKC{NXrXVe(fwK{|~IS z08!#$T)nZR*0pH=S7haoTSlz3;J@!-v;Py%F`!%dg3F2vqK4Q$fQ-P|xRoZW{|%+Tbg8&rl>$)~6=1&L0>5@0sSnRJkrJ5TA)ppwK8CDrezw* zn>bS}w56`E>sPf~HmLQIaMPmQbDEaIF@>9`fGt)kKH6lKR42!Z>yyPU?^FU}*9f8Y z4Pj9WN^IXE7B|!w_B73&plchx#xrhN42p)=E79V<$pMK4>M8=_RpVG;vEq{v_ch>6ZD)x{^9Hp;bSiwDWP;W@ro`tteq}1&saD0x{z>)(8E(Deg+U2X+2@pOgrgo-xG-=+%hqh)JzLCM%T9 zH3>B5-)gl{)%>eg|3$Zdoqw6_Pv$2lQymM$y5=A+Z(sq!gXeAe$vjvGCM%34Bw1Kn zZ7Xq;8&Z=2`JJsDM}f55NGlp4CsHX>+L%w~?et%s{!OwJ+5ZUbO^`a3W0RaGbUYf+ zXg{`kFpaG&hlGwdHCg}oy=lDH)=g8HCGiXUodo9qts692zxll;D^Xzz!lmh3H(x1o3wgp+HC~eX7 z8-7Ojo+LaxjF>tx={k)iUbZ9Y($R|_x+3YK(yr6EaQbgNTeSYm?ti)tIR2P)D6jt1 z-%A;pP8ej}=|#63kELFvtU5-W|r`#x#R{zpfT5I>t9kguzpTk0i{)wUMidGI}BC} zptPd!GdaOX3y`#oP#_9J%SkJtxN6d$+t{rfaAX{m40r^Z@3ale+w^%)|JY*;Hgq^j>U2!$a`kD`c~q-hk@=Td|27$mYX4Phf2I|vcJoL`OQY70 zoW$b{z}o7hEwaGaBO&DPsf#3_wUz0ZR`awv={74}g!-8zvY5(Xa(D72Wlcjqoc zY2>Z{D)hfrvBwfJB#2{ES4Uu_G+FV&Ajc}|LC5w3WQlM;M&`%hP|^{g3%->z^J+D5q)Xb5iK>dPAr0kqDV$u_dHVIPRsDi>_T--l$i( z(AEon8cz5!^^I0weta=qZH&=%&itab$Iz?bXg=1iB~HqER~VHb6&1heW1-X0zHd{& zswOFMJExB6(i6F~G|^flpOtYiX<`873Xaeg9j)syD_xvADLa4LGey*Y+3mmV_QwfF z>XBAP8Fwg&ryLaHEDDmyCex-RD(wW!GKc+!ZNU_OlSRk{&`j!0aaD36kk*&97XPSl z`p;kgW%WPpwl-PtWO?-Wy#tNswG}xIOp8{V8(J@ZP31@mnWwf$Qch`gl;b|VKdp$X zDNpt%X$fcSr_3`N>%)G29xmz?zht%bjgOVvdQ^QZw5z5HF3iV%R`Azh41I6?| z8N#BUYgHbbTRDlRNv1EYTr$+a29r@DN!}79U?kl9%=BA1-pY+YEKgkiL*3DM!F08I zTR#UhEQfjyGNI*7ATk)(v=yI1=?OP0>z@fyLAn8&2uPgR2N_?Y)01%kRIsiPxf0;B z(mf&5jtf)SiqLme@+b1Ff1<4RU*+~^g0{dA(t=8P(*|Kjl_ksaMUmOm29nBPI$lUZ z)~k+;np%pd6VR4lUdhsR<55o2%8k6LOx^K zQE39dlfQ}UZi*|LhSPuk`Zvj%cmFf#FbaVLny-F~@?0Dl^!Fx9tz0liu~xQ9-?Yfq zhku7zLX(6hXhVShj`J`-<2)s0)C&_6#t=X%QWjjt7sV+^*~nr*vQ=(arSrYCz+^G` z#kFQ;G1-@ye_A9Vk3hBBf0^yimS5D#Ku$t=EE>`d@>%2?M=w#*l~!J$xjt=+faE1f z2dDqy^k2pPr)86tzalLDn(XOCa~5%-IxIjE-7*X@68h*FX|aq{Zr}HtUU%FFU%ub? zVB`NHUNZkIp1b2d_({`DBaePVLY9^Bmi4X;B7Kx@qVAR(VQ2u&uPpFAE(pALgrN ziCboC=2e*dbm7XDA&XZQjnbAzQ93Fk|02p(<@TR<-A$yt$J<0b(aJU+WSop;%bI{i zNw>&_Us10z7SpYCkaVspUHGb3_IP`ht)o2iFS~5+k=Z%)qh;VIEf?IXL8v@iYmA-8o$)$QvrkkTI`1b^4EnIQkz?{m)_iBNqZ#bSEQ0 z>K$l4A>Fniph(#?!tyU$HiyX#+m&}kOiCOxOnKY#FZ%|HR*-i`vkYlvwCTe3IrS>7 zPbQr@{YOJy`j@{cqyITfPGm*^v+QJXA+JSgb?J4{r_{&E-*#zq+{>iP1~0=dD!=ih zo2tQdzp?%e?;SQhpXFlDL_&C~{dk=Oc?(NdM{vP?Ugfa47xgt}@@`oDTc`izNUHxT z^*@J6h%C;Mx#ywa#BrWFUdFjUI{&gxahIpB^A-2tNYlZN_dHas!zaVaUiR%VRo7G1 zUZ%dQKeN^8#s|&)KFL_XXKZ7MZJepvf!$J0%9eC|l+VO{Ue`@48Jzyh(SKF?Ul}il za*@aaC|$1dE;@NEPI}L%J)*YJ^kgM%{1O1tr4;>$vaQ=h3kaP;vQ$iflRljzY#1i zW48FYN!GF;<)$nQ_8%E;+$9}mb!&xI&xBcqcyFzgE6no8_fG!}6rumJ`=7()MJxg+ zCtjM?B{9*BF^@(lNzjH)-;-%>!7TZfSWzx0I2jC`ufn{%k{Mv&({M%FDL1 zE=L?tE-6P_Es(Rw5C9T;>P6>WhAY~%NJ*2PE$uA9NfT)9N3A9y{lA=uqvp*zqnnOt zvTk)Anuy3}@_;RE+15se8)arZ9KWXvGK~zTU8G@gcanUxg42I%&wpwG5(2YH>6-Zb-1Q1M+?eiP5nFv@O=p6|19U5%zv|2V>93bQTOcOi@ACm2| zJNNp&!0O8tt7%}&i>PS*aZqflHOLX$N6{y>QwF&pNRz*e{p9;RE!o{GgNa>ErhvUY z^BG{QMJTQXPzKAl)f$s_Tg|?U(`4z18>AlvQ5H0mS<525B0c@(Sj}1;LE`kEFQOj7 zQ&#_Tn7l}}351{%u9VY#`Af*wLg#jxKQtu0Z3)0Lo{Hp~2=|c_d-7)91C*jjQMO z`OW!}bW`V)(`Fq^D}$^9Ik=4sH`<15BUuq*O~7?%fp(YaNivQc^0zt;OXejfWd7c? z07(Klsq0Bd)`8TuY2r>A4xlGG-KK3ZQBvllacXixwdK!##{9I)PkJh})hw<&x*tjM zq2;oX54NK?ZegeYM&4!Uzs&yUFgXzEE?~NzbWkh5*Pn4Umeu4R#f8C6K>|j1EGO-u z!T1&#>B7@Ny_AdZB>|$YOnLV7H{23Bc2K%oqzsy1*;cxgNs^%~+@O>pY=uuqt8mtC z2vcA+^U-xhOIcP{Ks~Ta9os&Wa>pHrZO@q6p)KG%PJXSRCm~b%S>~(9626zjL%)wA zdlDH;eLid)ki=XPg{0&|=NF}IXz~%a{W<;H^D9FCVR97F|H5$lmA6j?U^4Rzf9vsY zjmAmK^Bg}d6Ok-{bUm3Gmu%#K*)5zFwipP0#?D3Z$NXhXUJ@dppOIzdgfFdf%oAu> z#^kDut2b?hae-;j zDh)YV5;6`l$>1*uytZ`8Jd?^C7cw?U_s1|xQJVbp|Lh-hNAf*ouvtE}RVs-L+8t;6 zElE*aD{R>BHTkeTqsa&5NYehC{>^d}rGJwQMfN`vZol&OskdKw`y2r8Ix+pkq4!+; zog=cCM`}z*v`LR<18oo$K%Pq_1U&Y5~*MG@G@T zWz`mF*+y;F=s4we`Y%@hRqB5x+QV{s$I(@B+-7ITQQ#?ZYdtyn?H* zz8WV^oWP;q9y$-eAEH_UodvL5L?VFN{RK2nc$^^Va?7g`N>{HQfJ_4wpG)crG)<~9 zZFWTF&jBcm_=U+Lzq1iRuDo@=@);XhNrSL~Rqnpa+5#BnZZXBbWZCXWqNL?D3aK(p z0#S*${++4Khdrxh)iIk{K~6$iwlH^i(!5NuP&Rj;>HoO-$^T6Rz!vUeA_#HELp`RM zVm(da2U&*QNI3nMtA7)U?0>}VSKdD7?0IJ&I_s>nFlEXVoH%g;d-v|e?Afz%{`uzv z07>B7Z$194!%@<71h8C0asitN4^8sYJ;+HbuR%z6FnKJ7bVc$zzE4X2n4aF2FQGf2 zK6|RGBRIY#3IUKYfplHd^e@w9UN%>IRN13Ku8j4dLRqwXIxFaN{-nFR)kKjt@2(Et z(>t%Z$-?B$(w}i6inIAh?gTfHTw9)clL}=`+84F{OuFU-Y5HE1fh00$NLQk^ikmD@ zNnL^LyZmdL_@#vmXt+niHVH6~Fd1||ljYF;uSoLY^k1C*tJeQcxpvPydh{p&VBfxd zc>VR)arM<##J8x+bF|87FlUhJF{46^ntv|L67o60!)y|Z6 z5(}j58JUMo2L4tajgv+vHg^Z#Yind4mS9@K2UY^8Ck@*~XmSVU zvGtq{T29Q;9cOaSChY(w*Pl!~ZTeZmL_*~ES-JvE1V5^qHj8}2+|60WAjxvd1(40U zS%&+^CI`^GFaxq(0LcIK&PV2z2l+R(@iJX+HjA^?jUFqb=F`fpsfoUg#1Lt$!A}3> z>c7nX_g_E!U*EmpLkkWbc=o`rPfR~?wTl6qIB01B)D|Vc9_Pj1COL8?O8%xiC9)tK zt@4W!dzK{;35z>1x-vg$2_~ryi-Q7^ zZ^E%XXBzzVV#Ty+D6LLR?mfN-%t7#B7Lp_|wXe7?xFl^<$6?wmTsG^Bjv;F`CYY>G z{7zb-Y~()cz97?e`Y%WSW%a*PuHSc^n115rbIv&j2lpKuIyvQJ`&nn5h4arpAG8R* z{`%`U^7|wI^NiEZ_}>7$dFt_&$HF)QSS~_i0A(BKsH=`8YQA3hwQ9icMsJFk^pl^j?+@Z`%%b;~bM6DN7j3FW8 zqU7YGtqy#jHTjb=N*S0J^KTXJ6h{`ue#zL|F!EtaL-t$hFiK2T6!M|lyR5&w7Gh5S z`RTu+{jWyyH*@ApTyW6^?I+(piPv6x4bMLNEDjtvfEQkP0l)wK?{WOZ@pqq?e&Xdf z@#e#GKQPxF3o{O2v;gXuKc1%tG@o-9M!2%H2ARz5{G7j$pJjOrh|WiMs<IWV-}qf#`Y*HpsY9M$ z1JDLw%8BVG_Pysl@4*W%yx@DD=bb!xGO*tHfOneb`zL+xH1D)G7kqHRnXkY8Iso9T zv(9Q659lm_FX$^?lK55yYK26V=+}?T;X1LTfPc~lg510hUid*=bjd|$ z0>IIuM{)G%QB0XKC2r9j3P#-mXp1>ASr`EO8A*9eeoWtV=3QRax3CqR{#-woWeg;t zuVb^xYm+&v6?xbyILoWofabwpw?mVKE(^WuGT5x0RfUw(R+hBs@-vhBO>YY0WSXRp z+G2X;B&{buQ=5rumDXfKr)85rY{zUIXdTNk$=|iwd|)b55}BO-%hi9FY*N0g`rqwW z-acpU2j(7<7CeGv?!<``0Du>sdEwuD_@}{#cj2WMo;_vC6zto#4*+oTwUhsPCeB=n zAQmt*4$xTu%SGrWkXDnfsWIjtqgA%7Tuipj6JcblYD6Heyiw~*yMV*ooLLh zqmRD!)@%NWlP6~VmmB`ePfnaTfddB)@OO9F|Aj%xmL=@b9<}KL5YtzUKe$c?kYJ4+Wp;-54DS`O+0%nwsQ!hmv8c6g{z;$e-zV zMZBU8BJP##E38cv@sh;9Y+bn5*a;-8U&_yu^jlk+QHX&_rYLf@$|H)bNz1Ay?6Su@ zr~m5BH%0cpJYNnaLsv+viN5U4PAx5mt1MsKmqWP-y$Y@hyJ_Pb zTP2?`H&&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` zS8EaooJ;5!sTfVNW5edpKyko84bcH7oL1w*#YPl}c{mG1=Nm3&q+7BK_wlneIP0Za zxTEt}r375@^2y0b2?zsSfADUms^_D7;pZXv+U-~2KT(ErQ{W6HX7xO6BrWWg!yjb) z&%hh3!TWlyM2u)1k88l?E(AaLKq=c!XtkZHjJllJN2x!KCf%X=QEr#Hd`0&j-DVJV&- zzzfd9kS!A|XxlnY1Mg4Y(9mu=xa<#LQoEoXT={&x*9Uc`Nq8=xbRSh&rhJC5ZcYJf z^rMov`5R~(V$hs{!*I&P_oZ0mi^v~FHZg>dr#l>mxFxWv-?hRH%rMsiWc3EB2G2l| zoKC_P3B)>NLdCg!C}lAz*C`HiUUA~$;(UPi$3XaiEv-H!a^l~T&p-9fYZ=hN>lZG$ zfnSNQI$)QlmF*UfPw%Jz%Ekn|)3c3wGF7W+R+eEV=-XKjMS;_ zhH?mV2=5O4q8+^NZQ z7cz6w6Bx`%&|^Opj8V#;!r zDJ{x*Oano)UHVOI)#qr`(8>oRm%CHGSq0{0vV8o_DyGZO9=UO5R7i4TNcDW9EalQ?5ePtP}FT52i^qKC7H;v@2)QkYsaxU2QQyI@Em z3V%eD{j{5UAZj2)ID&VCWwIa+diigD{xPI)3>(`rwQafqB+}r&bLSZ37<+lMZuWpE z$~Q>fuRg--9J72Cm2E8w{9i-9L z5@eTju-^P1_6gtqzqe2?Mg9L@2RNBF@)bes#d9>0l>~S^5RVaq5Ml%OuR7qff{98u z>C8CKUxU9MxWTcn*QmSQYKbc(XofYkXVS@QMbmmzzJo zJ29`n5=mspt}lt0ve>h!DbA?=qou***1=I~U!W%?7p8y1Cx`4+#XBL@-M^+0`*gQ& z();3<|DoM_St{oBq47P*ml{T&WV196mHMcj@^Zn$f}plH_l^_IkLoDX18>r3!3lhfOiW#o8n2V5lOLAAc{E?HG&ITC zM<8}%9a+u%@b%;u8r6wOLwXYynD0y6n02oy<=dgm)qErUw2|4R+*IOkT{3U0#cZ@o zO_q=QX1Bc)O-{*OQBfsFSChYn$+gQ5bG34fOEX6%zh`7Hvopsry;FK97{`f~_vQ|X z^pcFV60*^}sKgHxc%6qcH!Me(I>0IXY*I&vD)ab|4Jjk&K_ zz!`1wFu${j^wEFw{j7}S{YEB?-gAUiwAmia9sa{EJQH(x#uO4$^BTJ@sJ&X_8q*i1 z{$rlbB+NcJb@M%JoI(w2l+0JI$g;f)THF05&E)UzZ~BBvAG6%{ssvcq*`f$U%RYps z4Lz<7ucfKoCoqSpYWXKoeexSZ3vv}!reSHehxXKXOT2>=XI%6w7xP*kX4W9|-4ch>o${ByO;5(XETXj@PWb%88(OZsluh(@M2+h3zt)%X zlLLvMJJt_~N<8Yeaq1H>ZQ&!B+S}$~&t;x7zrX(4>p|*8=5VEj4CGex^^hZzDQ~MA zh~pu$%{Jm2??~pH3uFRNUe0R`s;GMR&Bc0#1fq#vy1`ewb*ANUum1%L1+^iIck9jc zE#oB7-qTSHVWxvcWPz01$|$ynPa(C?@S)D-k@42Z?`phIHb9Cne+oF^CBYBPLnW3qsAl)L zjLFp%>ydk*4OuDOI;4f-?Y-Me=U`bJwm?QnSQ&d!FAeghfvaL$UQyKR_H zuX>uOtm()t7QNe%3#r7D_cctEH7rcwySnWj}v%ia2T3+6EVZ9Ys z-U{mfJXtzQitvn|T4qbgdK-FrdTKl(@fOP*`A}|CGse&^s?E~oXm3@l?*xw2+3dC% zDKR0!id>Dk%Bh~F363v5;sL`yhgP1%q&&$jnwE3`f}VveK@faG8D*)$j`K^1CoSdcJJtldH)zo;_bu$dug+N4tSP z)%zMdu?neu0uw&0BBP<{zNcKgz4umzR0OR!#aBOfd=t0u92W^}>I$rzlh5C-X`XIUBM?YL)vg&Zc?OIWV ze*D#f#^%I0rzbyR;{}vniI+c<%2G$Ze(uC>b@fu-_r`C{LkZe3)m7Z9hCk6g@89mn zwq-cU2h~4L0^1qQB}LE@sek9m)+yMS1nU$)Cd4io-HEMyomM2jn&sf;e_gYY(cSWw zx6DVyPv)tKG(V~ssqti*SpN+~;djUDVt4(pSsspV6kZ;1Wi~Y>T4>LLW6xp%->#2N=BbJiq zNdghS*yO#L+jeiK$k$0iO$&KW2Gt8JF-wVMp9l(W@!`#)>JO5e$gL_Bwb~ujeVdB= z{4VG*@M)2-OYD9gXzEJx!Syz zOjdQJkLb4DSNt7VucyuxHV<5h3wO<2CA#XoX<#Gp{=C3to9YUbri?}7~CBy!+jLk8Ba@DlbR+^dUM@LKm@_qxCX|TL= zXV>35_wg>Wo|%Pe>M5<@MSnl*rY=<$?i~#8W{uLLYpb8eTzxewKMFpPgVxPset!F8 z42x?w`$tZ>Oy9LS$v6(&d+i1&?g#Ftvdf=fH|12S4iY-j4QSr?ET?+#Zh@f0W04;? z{)Ol=1keVrOz(}|JonG!ZwTtEzH(VnsEL26qcPI@gVq&uJSV!YB%qyqT==)hWPSD) zVTngyxaTWDKbzWVS!FhvFl8&ExR=~XAu;DJnkItEcG^;Foua=n$GBjLeQ|dp(_x2g zJ3(zIHkRRk&L>GoFKaDsK>ZruNZEt`=h(@aSX)=(bunt~g_Nllc>W%+6pH7C3l6a{ z_vQubOzU4YsaY}J4q+A57J667N-}v*T>MM5{rK?4a+$$O0nujA@H_48MtXLd$X;@y z5LTfNh9z@XyPlNmf6X~;tb9!U12ZZ4JPP9>%w%jJ+-IdPOFi*j{n&oIy4z`6S`h9WEA7`Yy!p_y z$0ypf=G+fBr22HHk1?)&dvAGtUD3>pg;Xo!v#jK`kSRe)XE!l+ZA?9fJ+oCEP>7K> za^H_nU?rJ*N-9m0Nyx03S}0;W9mBH?spg1>Y*9Y42it+%zDT@FS-V+ZSR&T&2unB; zSC^NI`oI_OgtJ??41?@MK{_=ZMl@p|+ z|3b6hkJFQ*^1!ozH?gsnXQwBGNAhf!?!z-IP%Ue3zKKE5jDYiwa(+qaftI5=tM^UB`L zxN_o5Qe%iF-^~R|X2}mmik9)MEKa*U*-ROaOo>YMY9j9m3;#1b*_9!%T1|+;-PylE z=gZn#4fd)+GClGkerRZDH3k-V@aNPNE0E#}-o2}xB+_ReJcz}{0bej@Cln9lGCUbC z<-_6A#2P2)V2m~Uul@1Bq0b#fupD%yopCcciNB4swMb)b(nrr-lLZ&bnDuIqFS8QO z`yEIAQ8{#>I{E7O|-re`v7GlEZ_KCKhgf<+Iu zEcYhon(|UZ`3$gJx$=v23X-)G2;we!d1eE?g?(S!i_$$(H;i>%EIugRJP&)oK_{pA zFqd?$>zv~5@uMax2)^^eZC_lI^b#03@rOm}<7k`o{qa4N*!71_I9YcnF%|tpe#-Sr zS!qJ?c}BMqRdQ3Zo%6miDmZV!VkI*NCh+s_@tM) z5Fj|e?$zr;;cDgmv7otEeAhHqD<4ijR{lptK#y9=?X$`t7NUvdl5oBfNzUHD9-F~D z&sXn56WvDVZCNOlX2-7pGY67cC(8)`!mj^v<+ql;7z81}MNdH^dz0i5Vzb0+ti5|s zamTl2DVsPN8gg_cnR_toZbk^MHQuiZ5lim)dS?q;$XBogu_Lz_Ud@fk9Bpm)>1bHr zxDF&1!NC)j4Xj~y7tI{4n&C6TLJ&@rQ@&2Wg; zPOW!k)R0H3Icj1fsRYnYF=+%2#QOIlsMU@u+`uIP^Lr5nIcXUfWqZdrzr7b!t%$X0`m~ zF^V3}aBc2)wKshWh(pY_LHRKUi;Q;Yf=-rz4a6GO*wCWe77< zGOXC*HfH3WAQ=))DG9z`GC|byimQB=%6b+z?k?(0zq|Y&O=G3TTAV;P%>Wi_#ySxl zQ#pdm`)($*5H)SeO{5!#8hNT%Bo!#z%YAF9c4J%agW;Umm}ZIRFwaifCz))|y%wsK zE~FCow$vJ3qa>!T-d;_qWj$qXINm-{`=Z<0j?Jjtp62+5`>n403iUP3 zx{BTEf9n9{^^91fJOUEaUfvhxnv@>;!xMdHj?XPK7pFXD7QHjNmdK*BYU$}%Ris#0 zgbT7+YxkJfS&{Om3~z}tU2JM!3nW~fduH^`f2;G_)vKLF1BLc!lOiqOl#}x6B+rhw zZ(pMGSmvdmp%{6dGhp?gJ0InVk7UEcR8cBw_P+xF0; zR(E1mSjMcF*6FhK!$;_Os9{sObit8WQUm=2pB)^UIITDnEdM2>j9#@*MMBugUKO&9&(ldUEixI?Lni`*Yd zCbs2QyN!98n<*L*{vpa^?vGg}Ity z_G+rHAY5{%py1{Ea^<&QYrZq{92r{K+HUKdEbkmdG*EiN3!zz2t41nPJJO)KqR|7^%tn3NFRv7_IvWx3TK=q)&Wwo@2O5O!g_AL%rvGKU6EGkCBpRUR5x@>_KW2 znt%v$@TuMtOQe{6RRl9YH}n8Ab)2o)lggd zulA|wASR|esryqm>a7`gQ>8Rr+Sf!QC-f9V{`gP|v-Mb-nVHERbGLn3!oCEp9-TYn z>x4P0+4ub$a(S=3tj_h{^!6?^xVg(vtVhiHj|{4VbK!lY)1>J`9m#mvCivASjt;uE zn_GPgmGAcQp4!%7-xUzPJqnfoMlss<#1OZT;^V*L_gQkdpRcabBrc5a#}#$^zkfpI zpN|g7t}g~O6Z5&G?&|Bx7SQp@UGb*P6Wa2g`8mZ-6O;0@jCX|Zx^DSu^@Y6Xo#pwm zXxyh-B=02W`ZjE|wQp)^=8wxsC1a=dH)ni|gYE5-jL6!=w649^RyGh!QNBEu{4IDj z?(WL;D&dpr{^?&05zlXvMK$JBXKl~SGb$Jt)@oa{K4#pUz~$70O;%U3TvvR)ak7t- zY462pag?!>)U-$R9HdvB&4`cwF^h|Ewd8g`j57*6DxkUzWSzU3RmJY$0!b!apV zEbmFI4lL}ElujNmC>@#c+Qn6LOjmB~D=-gqOtX()mkCYEb43ebj+NdT<*vFn?*-$3{2_F z90`fxX=7?>3t&Dz}b0D}K-mm;H1=VH(TL5$~DU^8aKpVK_ui6P9p1r{VF{47A_t zSF6%I1(^J8>P4mqS`?;;2cb`E3v> zG3RXGnjI!u-id%=uKT|1JA7Uec*>ae$_(tCuEN|1;*quel;70S_(luk)$kVd*ukd_9?1!<6OSXx@TyCs)~rTK>6`@YxzI~Rv*cUgAl z%$b>Ip1AM(SB)RJvP!{Z=#PpoUt_U^BHuq{Cz%(@!-lenZ!IjTkq8GHh{R^8qZF_^ z-ozi7D(h-#ic3eZ6xASlhaTvl$lIs63+Igr7D8`tw+S@d%D%aA_#U?16zyHWIWI&_ zwD#5E5#dNKjp9_uxKV9NuhWq^KfGkt5UFVAnzuHyuon^bw)@?i*(2W3zOv(-1Otuv z*$?q1Wkfr54BGhPmtS)rme+oMMO zeF6hLT)Sgz=oUXuRAtqn)pKTPSpE$3gLJY~v1A`j8dhJArXP(k^yRwAZi?g|rmwHeiiJx&HKK#E>nCO~{R?A+ye`TV-aLw9(IvT0MR4q%pBs z|BhNIvK&26_%T-a+PF%gYNU#q1RSd>J;ZoaG1fb{q_V-eFco{g7)MXOQKhslSVf3+ z{P;;c{rX?ecl#i=H`DARO75}C0i=@(MkxUlDn5aW{YItgbSFQ>F^|QoK@Xz}O_AR^ zKUG8krPnr=MOV4*jOJ;m5~^X>pqO5?q2!_CXZo=pF#)sk2>+QU5AnY%1?L^3>iTXA zuv}C#^=7ZSlDRR7g=X6f-*RtWT*}DXf9!A1{=?zyhjWR)G!*NRvMjyrePMoB;>#$V;J4u@k;UhVA9{Z=V1tGdx$X1dG_-Ah^lSo zd-H{6O32uh*gCnQ_8^w^w?Nd&l%x2zw?#N)J6k+Y<6q-8XTwGL)eOSVBy2r%(xVna|5q7LeCjohD7-+rjsAbZ5cvM}BO~T$|C5CCj|=#Jxjv8p z^nbNJRc2Iu$RWRTkDM^br$kl7Pl}yyaGAvw%s8cfhn{g!_rfQ)jb~pyVRauMI5eMt z3KopsX$1hjU{TtA@Y#lQi8{!R*#FW_;8y;$helyF*^BXdi?1XgNHIg*(O#o?su06C zba2C?Hs$8MFIHc4Hd{GU6>Q&@^t(Y#n%&Xw2>`m+9;!;sSpAIdr5+@~#Ij%2JH_F2cY{RhCV`20&ED7kQj3d-%{XF$Zy}by7W#wd^Nga_?7g5R!XygnpYLif|it@DmwhjV(hq6{PZOvh)JDi0)3(pGx%fz6OEJ%Lx((6fR) z;A9<}^b$yyw06s#&%Vq(>^K;$J(yrP)4gNxJ|E^Ivo;(Zl^WFJT0XuYf3=@WCx{e8 z?8KY1cg-gC7~_s>MLbf>$fs(3S0evqaJ$QO>q5wGNlY(g9SFPmqha8V(Y_1CY*+pj z<)2M{CyfxZHX!}J{JueRwDs`4T`)-0N+q)i?73Z9tp4$6#66*O)U9JX%m?s!G6I zeCydjb{~Ud;ueU*${8M3(mveE+1SqrBu9mKt`Ney8=)sdZ|hFSTdXHKenYo)MM((a zA1vmO#!V4&eD7NjHN;`og5){vOsFZxDL$OTeh%DYmZvIFQdw&*M8WTRXA};;M>zUC z6}dZj`2E%a-)S7ptIm7uu85b z`XI~BSEg?wDxW_fr=`cTXEI^+=79rw-LJGEEqE4yL?~%jTeY5_^Pd;0@VU~x;I|V) z%++xrFXFXrTBB$rA(RSB(dTsLWYg)f%0P|&M5~OdT`{WrHOO7O3o{^&2t4MMq;7}! zx(bI$8IvBml0IsuTz;-$;MT4F2=fE)Mnjw0K7Fu)<`o12f*EfF4qfL;tMgrj(`F+k z_&BaT6VQY8uXs+o7TrPJXPoAI%T)@L@0*<71R6_-$W5bea;-(e_&A;>`6TFYKKw^7 zoUh4ntVKR@Vrq^r-ULG+FT&?~72?b8wI#c>ANc)y0iaWo(2`tG zyG$pVCV0^K;@gTn7Bg(`1oY z7)Zf4Y2&V;AxZl$HU#2j@KezIrLs)0@s(p0*LU4!1XT|WH)lCjWzU<;=6>fyct6#p z@P0jcdi$9=V*+`?Qh4l$&6cM~y8n~#O*kpaKtSRo^_a9`JVA<0B{q9<=%Q9{<$FfD zP!_qe7b5PeFTr`}Gzf?}3mh|6cY9s>Cd|1D?jfCXz)#m@yxJVjWJ>NYu;MK|8I;F< zd7s8Fbi$!H(zHASCZY5=m&wZ6~h z<_v=|w4p5FT60I=(h#RCQ-%yhe0JlE>qUN!rdJjH;r8}r zg!Lb!iWL0kKQ zy92ZfABKC&5dMoL{zMyp?yJXLZD9J$;>)}KiRX9uvAq=reetYy>$g|?T{p-@*s-cQ z*LGSjA5Qz`&dyul2&PRQ-`|f8x4r2K3^3fm%YD|lQOB{-!4e&l+ZH_?Uf&INeQr0f z|K{-76Z29>84QXD-6uS`2~tWHo4kaoZ5Mw45_uq@Ikvm|J1I5wbl3adDy#ylyWQf4 zwta|~>o5&*mH6uL(D(2-{f$KFAtah42B^+~z*O0MAUvf$H#TljHAVQ#LtvH(d4Q= zuBS4qUR_f;=9VzZ<_S|y#6IEv&^a|l3Rzle{RR=^x^51{P$3AHmaG7S$Rqxqk!q?r)>X`8kCav?)js3BZpAmh_ zrdM2k5Yyg@sbOdv2Cjy(C<)B5*!`!Uv$u@CzO^Rmz61M2ww_h0T+`66D>UBBrT^V9 z19|dlYjg>aclqa)6DZWNRfYulo%Hharmsu>vcKqikhtj@Am2(ul;dGbFdS za;Pq=ko@?ba5B|8(KO0bsP<>$p6)-15INJ7-q$SxSv#jiFC>a4QJezw!r1TN zy0H0@`TC#jt?5F&)}LGzEv8f*Ehbt2e?`pgT)#sVp>~fT6z^i`UjYFVkRow_off+X z4$6I@_{SK$tNfIeB;GQKk#AW~BoKwanlY&MfZ16mj+dCYh?g1%5-F3NPXC=fv$%Y> za;B%kPg6_dc0t+c@TO>=enW|sH$6WOBes+2IB(mb?n|+uoiM$>$Bj~G{bCCV0n>U9o)73y6laHNxU$I-)a`E6u_d$i<>y|5HpMOkF~IQF zX)5e3uPuy#vJ2rS1^d`Kr_pRP<2ux_=dL>nOfoaK6h5cCC)e|fJgMP4<-5^{2ETY0 zWt8m3MER~K>Mo7tdUzn19dlG6J)}4 zh>ZlD$vZ#8e>mG`I&USUlEpPRzs?o*ZnDZh z@BJ{dPnXwIU=xo({~=KA0`hICu+)|ZNAFEJ&JX3U&RCqC_)-d=?EvPG4X#vl>D^vS2g2-?@Wh-Af~MQ5Q$qU$*uxs$9qpKd45cOHWs|w zzj(*>qWQAi#cl7=^AhwFOY&%MV@ic2YyRXeRQ1)bi#&lj+o!#NP6cIl1x;+D)73sg zkE9p&SvH46`0%4^!DMGdan{!!uT#g~C*A;TSWU)NaGBPeEHP#A2Uv0oDdq{=MB%P{ zkWX(nau04*_?9J+{`eQEvxj)iSE=FcN_1XHIsi@wdr4?j)ntFwuhxYe`;`vd}q zi2rb*1WimA&;T+&WoE?d#_ak<)6qwqPPctLw(~LYjjFTZLd6%(Smo+ALWZBu7&jWT z&Y5%lBvZP`J$`R(P(Dq9fwd$bs3`q&YNvSg;=QXRspLLCL?+-{DUy6hMJPk2<7Aw3 zvx|-7vjFv2&sC2|fm+BuTsZF1>a7jd5HQj27i0*+BM)!KMy%K-xckOWL|Nuu?h2ifx=&pUZg~aFRauQcrX+8(O+j z5g0e_Niex!U%%!x{}*Y_oy7NcXgE_+jr+NpGuMGCCzmo8t0V3uGpncbOX%#6Q7b9< z3$236e&=|qB!T|Iv(jh|5*BV-R{%5VcN&-+{nh`-|HG@*;v%-c9wmcI?~dU+2)Uiq zrzK6_+*xeB*LjH-P~in_a{u%P zzk~I~KMfn^>G%_o6vV!U(2C+>hupT6PqVV0(D?nk!Bg3zt32Zz@|j7SJ!D)pQF7oy zc!zT~n_wuWVlIX!2TCcCzb{LF*-&Ln<Kq}K?f4ZOx6iiQMxCg(Zvd% z^P^IQ`ksDZwl914NpIHk_xeMplTD>l-MK9C`i+EG_q7By*REf_!r*G3PuEolb5PWB zA?cSIYAp^GT4Na1bx=+0q@6nfx?x8@KqA=IS#jUbKS z|7rp9XTDgexBH=CjHQWqIG|Mp0e_~wn9N6@tzkQ~NV`onwwDd0dazu6J*k5n6F+n-I?gfeQ02NWNC{#PZdc}i%B!jfYIBK({XN+9+Sf_9UDrXks$ zK%kR`^Ufg%?F7|Ew14OU1jr1s;KN=(%e@6cN7f<9C`{}D1cT^g;Sx?%(u)nNpK?vZ z(TID+8^Hzq955bQKlZ~O220PzLrf(JKlYmwv|58x-b&JDWi=dgbuSE(h36e0p5e+N z#&c`^jE;pI{$B2#N90@O;D8-WIOQt-V^7n9q3bDVbF=LMU z5o#_RHo^~pZG;{*U2v_5y4LUi1@0=jXCN7FJ;t1P z+%wN+kS|5p55 zcbo7V(r?V^0a!lCy>v5oKid2k(|ckP{`0hzxr~8Y6~A|5ce>*9r%z(m3-G$VGGA)f zq(Gs)TC`=m+F{d2PMzU9K0Tejrksf)K)WMo)U5R-)6e?fHsWK2^-{h^<@0IDuKD1* zr@udX{HF99_E2lSbPt9>6g zjE$bH?~g;f04@)nax`yhW%WCMrO_PMQH)$7JWI)1l%L<6yU$k1{Ke5mMcJ6c4PO;x zT~D5XUuUxxG0svW%qIWS3%$$z(_+SlS6_gdC&Fl_?Ybh_&cI?^o08ii_0*eUQ9}H; zvcWdxcGKVOFJTJf9mWD1Qe7Oa)^>xrF(hO8o_vk1paV-y^yOVIJ)5KsGw1F*emj^x zt>vZ5T-1isb8_E=uhWriLEnab{A4>uN%&*Z~I-8MrU9|v+JhA}HGtLCZ|qn47i z=$+B~KH$)oYzyyFj;9kpU3`4^_dNsBE}lj(^oG31$fk<1Fz->-h0dplWK|~N`IA_i z1^6`Six=GIs*&N|q>u6NR(}ZXMWQf1&WcLgFg@yIcL7yrW1#uNsv?g;V?SG2eYo}K zj@0tOBgP(bkdV|MBh2#<;87q$UakWinx74}lC`ev%3ia~<7K&xKw zKvMunX#K)b)2cI|V0U0i)SUQJc z?DkU-hQAAXv_Oa(c=(4j{WaV&+RFyUc~(Z+_!OP%)lKbfh>Wv;Bhuu$Zz}T&t_AJ9Y5V*jgKNos}NGB1a3RdYm_S}z6m z=?UY|&+I%b^erhARwVK*i<_I9sp=>Jt(y)lvC7S}XU~)rgb)2IYnHG~Tv{~M> zW!)U;E5SZF{BLIx5c-tRP^S)!5xGGTm`R!f+ujKFVg7Xd#{8H_M`bhgb$7-te19Up zVa6u)v~g2+&rSFAT8NbnIt?9EXMSGBpn2>q>7L+OH$;J_J7sYt{CB~F8d`N})tHXE zOqGVKS-z80NYei_rg|jOW-tzo?j=T&>~5cJseSG6nF+RHAe)4js(VM9N@3>GvUOZS zDAx(=4@I_vNC)i@w|9M~@!R&kR-*=i=#W|lS|vsNL9NG7nC;JC`6K^zOojeE7rQ4~ zzpNUr6VUS$PMmNNsE7v6-iu>H72e?C&+i$k`no=|1P&aRrqb(p>`yPz&<}5Yl9Zb? zpc`7sav$r+P`VH|;`ccF{hW-E25$3v>fj59Eq zbSa<5xk8GHZG@u!G&r|UwBJRh9#n3#2~K4{=Wcx?e*E$5l4bVkzpIa513c^spJSH5 zD#jm|)HGX@sZx8s6i%sLQN0p55X9SA^rBmSj(Z3TJU5IRoQz{SHd6oi1GP+5=;MY| zb3nU0vWA3;F<#ex9<6tW^2sdfr~<~Y-HG|H60P}&Ba7!n0DHeJvRi%bctA}|)?KDCoBInz zh4*wvKs2<a{J*(xi3Z<7rl7{7RPOrHjd3l8 z`mnNX##)KbH>}Z`YiNPo9Ql=&?Q9AbX%JnTq2>dLKQOE|8F32Vsm&AZ@DQOAe~Fq= z<#gc3W1=)-CypS9fYZ-(R6pHHzEX!#_zHUZA_4tZ>2rllXLzdlD!F0^!#?ID z1Gl$`T^8r24yd+u9SLvU+aiRTTY42IE(sybxrCRO&63x4!HWAEN%6D1F7EvP?dd3; z^o8~SRjweWw20cobW3A_?-;K3Hwn96b1}>Tsxet6`$a%R6&|Xem|VVIEk>}2=7p80 zL8+#!IFkP(S`gEZMq@)p+qDYx)H~K8c*;|_P+D&$3JY=g*kniAtL@#XzK&d{zon;I z6&otYyNG^sADkEdnFb_JmuXQ`9~7_&yXnyTlptJ!CgM~As|TUCvt@(}^^e9Q)?u>a z8o2f6#=3Xti>z+Y`MjDJ&lw?Y1{(jgHOn_uqK;arZLraEkDjxBaO3mLU;GuMW_x&9 z^9kvJEN_ybYIrUp{hb7{(s8P<>^p+S4bm2XDWk(#Z{}Akw^463s||mKYcLoMw3|B`sTy%x1aEI zbgn&qOoeS!m!o&4#s99y&@m#)Rt4DGHHnht$$P$D|BS;L{yPqbUC$kFFCmOJc-Gfr zKbp0=bnUnV@d@J)MYt64;;Ilv2@j0^_=@-tBzTk0(DksZ=gDt``-@jqT?XcW=DUOK z-{`hmw-?`spotVuy*%8syk^zkT16Kh+*}rc_4T7qbERfiI+y89V5)nw6LG7J6g-PE zY)+7Yj%dwfCK)l;A-R*v4aHb-D<*Z273R!v*N?zI{iNX8fHU`>g^#|sbhO_B@FDF@m?#eL19m$Ti%Tu zAifMcFt-kjTC^T}?tPP6P$-m7b7v$W*NWXC;4^}`ucVH$p^|<&O-HVFu77N zd)U&#g$>u-4ETTiDSprp2$!&_tb59wWENOe^eHC`Yl0YY^!=MgbV-StFVPmNbAeEe zZQQAVo7l^pH7B*5tugC^=`jC5Y%XdP^tQ@$8%v6=FLwADm;0qz8npzDwmJW{SV&*$ zTY51Qv%~pL$=~csyyPDF3C|Zhc6Jfu0L@8RdE0lG5=Eb%*l2Yrus!R0ZNb&})l};9 zQw1RH*`?L&;&nOVFdOiIVt*K-I8>;Fd;PrlL}%OihB;e?4G`Dhd))apL4ikgcB?30 zGBZ}zm2XpY`&Qk{qf(=ZXlhB-n?rkKtI}|zD?x;J-$}>;#$2>GBl=-uU{>7&W|q+J z(t*U&P(-3tPFao4wpBOIYmRK4+zl?&1lB0cTQt+imZy3Iy%fMF6Y{U+&*J4LrT<5R zSp%`2(RE**Aega6Ab79?UTu|Am?Y3y_>EX$d+mD9@>*q(XgMb+8{<~ccsAW$K%U)hzN?4io8M_O$B~Cg-X?J*X_R!PZMh=% z7YD(gW9;Vl7n^;$NsFps10u%8?DJ(=pW6$sMAvaqm$_+QnPzqE_4!*pkCK+~d5;>u z#f-UJD(?CnUjd=1y{00RGi(K|C6TRG_ zgli{5?#1g17ehVeD5*4Ghy4l}=oZQbkCJ^GG(7MQbz_!iHZ7c^&LpDKqdKbJc$FvF z^0`mBTj^1D8X{ph0_zrDZ|!k^X@3Lx_Z&+MGM&S`^GL%-<&F?zT;cnLN_UO5cPjNu zMJ)`6^e;77I_!?JQ~Y^5w0`=-g7z*Qb%s2t@$N*ClfS2GwrF#9a1kn&t`oG+M5}Cn zx@KEjj#mpQNB%A;iLlSE#%ag-BjAYTb(oZaq}<`*hA zIfbRnvwU`Gj2E_i7Su}m+fFOGa_^`$9{Z*|a#i>jU5T~uSi>{99aYNno4O2;V^VnEt1lkEpj4^i92YcZK-}$)JONqgHcCHYGjvZV`GEw z)U9%57*Nc7WW!gW6q+uZc6SZsF!p58Wb2~+LAy2*B3viN!w#=F zZ_l}Rz3Ha!roGpr$v6`(SN`;MI|(Y!t+ubnVNbp|ZQa?S);@%pR$H*afBNLkei5?a zOVCSmY1uWw-!OM2z%e`~kjndZW3X~3;l)Y)*;y)2N$BCb(YP#%frW(g=7$@9B3q-CV8U1Adb0_U-9!R%Vxv^{ ziSdTzmVMYO^i<&BC|~A5Ih|?xb08^CsEGN$M{ormv_yz9>RF!onbiI_f4<0#1tCyr z;_D`GcQhy4ZApoYv@%HfFe^7+9p~jLg(~=WcqDrM1+Dwi{ks6?To^b%)Efx~oBzyD4PjAPbddgqR^KQBf@O!RPh z{VlBc4dvA`B@OZY`_zkd^8cm?5MF!zd_2T6IW*+k*(u>=?Jg}`j^}nKOWOLFM7TAi zJh6&&=>CI7i1%4HWhrMj{C0blUrfJYi}u_mRCov98wXv|n2VXNT`Kd{6fGep_*YpRV5&8yU;mKoFcxD#mUQ@84z{GZ`dw@L5m# zF#6!>(QQIE&lDBRm!+M1cX(>*=hDM3tEMEgYertKE6fz!(`fyt|N4_Fw!f|~9_#yF z<0(0e6J&`;L!;+aRvHtEu54#2Eo6+00DwxwAKaC&rK+p>;-e&c90p2RPPbq{_enWHqy9MFlDX@UCdQr*LhQ`M~6}ckq#=YPZYzDP3>0wsxxCi!M2@?I9kOOJLAl(NBVWM;isW4TM|yF^tbr{u8u7&8iP`Am6xnnSPVKWzs3Q$?>Yi=WQsZ!4 zsj~k<{+FM!lj7A<@$kDZ8!5Ts)%$lk?PDSo`p1b_PmVlCrj{ot$fYctdmRF zot>PlkJ-z@HpqCe%Bzy9%aw+DjfY45Mt-o%PDur%-gDR^5)oh8n2&9$Y-zbkQyz+nmbk9M77wHR^qj@M(5fmoXXs_5Q8QiDKiYhA(e3aJR@| za*Exd8t+@T0%6IeDh~ZUSE3|uR=-pb_`>hjZxl*n=J(Ve!qt>5yP8&+sqU99x-WgX zmpW~v@My}W+`uuwt9eR5Y9spdPauuYYSiV{*pXG`%J;m==*!uWk?1N#d~bm^tH1Uh z9zqb>zu9?AZdKHA=b1F)P0p7L69id1(w#pO+xy~rr2Or6gs1B!%2B-GHbsx<_I=#$ zLZzyDpD5hUX+G}R;?=cprB``JckuzQCmOq(Zdd)xgNc;*EpOjc6?UfaBj|*bszj

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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] , --- _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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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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
-!dz&ahgGTR?D!$r0LbJKGvYOSIZ}0I8>+ja{Vd5i7bCu;|p^?Lbfs0F=?q*xi;& zhe<)u6>=%Y|J4Gh)^rOudT;?M4xzrMJ3A;^jQ)-PJEFFLeA(#cXdzJw*!RG0$AA8zuz4RRA;B%y=-62Pi|wy38JQZXh5E)cPF2Vj>YR^mB|K6&!l9$=6QRg$r?{`gMj zIQ!Hk_1AfZ~Uo z0*h@`{<^QDJi)szN2Cs!O$J#TB6rv6AnMnLS4Eoo15aFxhJZ(1FQYo@Mk7iAHlu-> zzW23aaUgI-G5nl`0InlR*LSD5ElSNrGIh>yXm&F7%ZFTw_1S+Xlw(uS=Ztvj;8ja? zU@Kp8BPrqoUgP!7bEKKb@_xAmZ{)jOE?Is(d#0bi_?3CLbeo)ma_=_$)7Pp?x%RW~ z!m3Whqo_T>?Q@SUCxi%;bQ6_Rw-L#%b;U)hFnc3lbC}VO^bH92Sl)-mwLaT(^VP;Q z^@eeeO(JVE0gUAGDcWzZ&$&+WeD4q=8&xIjE9&fk(qEvH$>E%)dS<5vfFwE8?+1bAw&vDz+5dyPYK-)SS z!xf*c;Yi`L&zlBXOVNG-U>aLf8(j1g7B;qto7?=|6QK0SxH^9YrnbdgJ^^TGC9a@= z-hQtR8GE|RDkG+(EVmwAX!OL}%jlnnCx{T`yPxdIibzkKu-#suc zX_8UflHb!}U~%Ksxa-jde-=i>3?rCVG<9$*dBLC}0yx@Rjry#0Ohy=pcudV6?J3W7 z1vt6Qc8{~b8q@1l0Z@$0x9(CD6~0n~#b~o*aMXu?w}yb#8;;!wf1Q2Vbvs09v0I(9 zl}M{{hoPm%b|3tehb}ggEZ~CdrfntTi)g@w%+7$)Lz}(JBKQGh>~)<61GF{O1Gc^ObtA=eo-wWaU%X3^EsX24?^Zg2 zaKApEBP+G*b9ejwy)Q#`gX6%%yocLEsw{=Tnf8enB_(A)EkvcFZV2Wgri+wH+fKh- zK8)-OM8`if{n4%)M)D1z^kBNY(LZ+7%|OGz&WbuOb)$HyQ9m76rR=~4ae#Zgj+&Qi zZeAYZIwVK-+eb`p6iX*KVva*}y9vMu-2Ist*l?mRTj6*1Gxj>CS0bM4PE?9LN=oHa z4!3qR4#3pSJM~-x9sug_+~j8RuR=XiUXc4*v9;=WuCqFPGUU*{8|lRDNgf8cl(5?G zjR45SWj}CC>M@`N#N?ahS{%S#G~L{z&4mYyqDz*C|6*zJ>sX9vm!2~LmQ!lW8+jBM zMir^rP)Ol+WKhP!&UfsiNZrK*IWlCady4XbMn%uf*|y?0xkOV#&@9?Q@5y!$EZ{5< z&iLWk-t(PPP{RMm&uEadysUd2b%y`il{FbFyd*>WdPr{Ar@7jFV0(n396|-^+*O7g zLZIi7C-|->QvZe?CtvPu*H&EH=Fb6n5x-9^9-~K+va7|m&$jYPIp-o%;k@fL1*Y|x zqc?3ni_ewF@Ym5cRvuf-LRlM&d%cwE8Do%Tol2_1Dko#G*8NMoZ+279cEVP4G9wml z!E$-M5^+UaYXf0?(%&gubNu1K!Ji{Mx!g}|@+(Gmu*h$4zwWqqx?kS6G1hK~+c?9; z3eSSw&hR`!EH(ufGkyTEC*LLNxa<2BLghnjaMw*_w-5AmTW$AtyIT+8dgIqRebL_U z+BYfI4~4&e@#wl`>+=&`MtKk}wD^80{_G28-!%I9go*8rPs_&x0-+Tli_{C`@@Gd-fYPxay40c zHjC{7cZN!=x*AcvpJS0q@2Z;S0Mf_Uf`ts2w{WyjvFBa36OIBL?XpUH5*kB0mKw!PN{s6jYC@JMUvYVZDI$$;4n#Ui4@o5RH}9ZTHORNpjV|d}_ttGzRhR zCh7?F3_yqt52rhk4^PXtGIpz?PYg9)?yXe5!Ne;3;}yrwON;`H8vqoUY}oU78oA!x zc&V_qoll81)lXQr^KHPt119dnA^Wyj^^?8LYZn_DWf{vjqF_iUVitq&fOFqBIzj88MhBqyIQvxf5z= zkz_mqDNOHuS&g0584j#8>36yc9}LNRIil}FfmmTYH1)yF1!6v7o=`jDHLGRutPBQ2 z&krj)C_!gi@hThZAyhK9w(PnM?<>BPYBXUBU*UApNNAL4Z=V32U|L*`yMZ1n#q|vh zRM8*FvzxcSyUrbZmhB2m?h-^`xFzwu$|(9OB9Y+x&F6-S(d9yzF^F3Pu;ygwabctN zfWr7@u`9}e^Vr0iAm5r6Z|EK_F5TgrWXA&|d76j0`N=#iIfNnZFLU0AAkqs)W49X! zIDn}AipCsl`#$OUo5jv%=hA}u(kWXj)-DSl_AS`jlMV5#y<#=6A^VQk%N|nU;OdavenHOb(Bjh?`pdWob$_T*BSZiPU|%`#5xb(q3chU~KsK zdpEFLlXrh~16Y*}-Ao|Oe7fuLOv-|XP&NvdFFj}9G5NfNu;-nU#iz%Cc-~#mWR{jj zDQx!FL)h(`wxK{=s#<&0Us~M~)rxpQyPa`CXc&jvdFnHhVHZottU?q?9=v@L68YE9 zH*HOAG=ShUz|M{U3AasI&(eX%Uanz%kfcDMMSE?LY4(pKqmV2Cbq!Y8@rI#{37!ua zvvPnh`SXz`s;a>IW@J7ZQyF|ezY8T-)}jI%Yq^P{|dL2sdrH9p^!e87Iy zZ4(oST$mkC+w4Qv3aftYI+cc9p$)4(kIT2KKzo-hprO$du`Zgz(J&Ty5>piCRgA$?)j*s2Y&D6pCv3GoCD^D)@x$AhW&{Y=hTE*x|lmoaaez zeQ2q#hC<%@4~iC zrfHr~pdYW-dLSD9xaVox?Ta;#eL*ohLm+&c5yQZWI`vu)BC?zLqPf0ck=+NRW$$fQ zTE~Hg!P)ce-jAyp48gHWAfH=ZENr+2t4p4Md5uPSLS!$FO$!IybDg_qkBHR|vO;qs z)`I%q2g57&Uhn%ev?H|;Zie=?aEhWtv#_q}{hAe(zR8&v2`xWl?~XY%-aGMLGt%>w z_0Z5fTzLf_of-8m`j~)#WRr2oFoE{qt~=I~h5kIhl5Dy?vT~b58nmr!m`)~%%(SzO zm*itVo%>U(pZSv_DWhL48trkbzhOAsC_1bni{@vAltvN+fF8=}{Ep_2#iGyqwi6aA zBKs5~t+uP}&$*bm$1EI?G)`QUG$$v~9%{y`}~1At(|@r(%? zmTtdJ3{gJlpEZc`1(d_l5$Khl&%24hedT!KUlsJ<)6_BY2d-w^!Ng&ao8 zsp4pO46K0ErbZh&94xf7%EK4s$l$A9ewZcj3}u9S!t$j6$X*x@9F9z0Z%WKMG}#9# zhX*@e2(w@A!)Mz`Zb@mx%3OdqKKN3)85K>4vAOp5U3F=|40E;`Mn**@25}D5>a87P zbyf~&A*`jg7=|gmikgXAa5kjd=Bm_G$=n^;_21A_@^p9A%;7BeUuKUrH+pE zATc4TMhP|Z6dwNx2J#m{>r3Dj5+UkWMr5|=;HHHhr%}bU`}-9nt4}P@h!$i1i{Auc zlCdaa?+7-L9OyF!#y?>1zTl zf7`!#` zN8oDRqNhDB{{Ed@+57a`ol*{mGl$3R^dd#^`-xjih^Cr8wh;2I-$34Od^2@H%n56j z*pqF>M|sXS17C!OSVr)r+vyVZonFj-L0OQKN-Ag;4b=9h!;$gRbp0XP z%bMt=oBYG`@Hm1>3ft{rm$Tus(EXkxn-2N%nfe1WRjLiC>hr(LaY?ApU_Nx{JYW?; zL7>oUpP{^Rzb`hRzjl`Y8uEOVdA%dNl7(80edf+kPWH7K%&gR$+r!+3{Z>DJUw2)=Nz;}vL`K1ViZ3~a6c;xsil+kM zf-?Wps%z@l4v&}uG6P9`wz>g8^=1mQ8eRr}RSMT9+L-+FF; z^Tu^c{T!L1`+}gRn{(!e^PJFPVAX%?BqJ{w8G%kIB!wgQ@>O4WY{%QhEU8_pJ*USe zzXZfMLpLEqrCo0AMud%5UgW}qL9(*xyjdex_fW6)_l0I2{R|EJ4NIMdQ|Q@;KkxdE z$+$y?UKkETMB>qNbEF@}P00b&jVG8hia@4gy)xOrM*qVG^<(Q(AuYB&~M*IVy`R z6Sq8Pu@E9FpR{gsS@`0g*BPHf(}d|tTnf(!n?|4un8$cYGD0MU3M?5gG4-$nz>l;@ zOORiup!Z=-2F}=L?FOhfuvyJ6`)<5}Kl7%SMb+ym4{@KEAf@03YT1O?Rr1Dn#>alJ-&J?KE zJ6{N80iHhPDPOV*pAlv@OL5pr4TH?2uCUQ=3n$lB}RvVytHO4$bR=ns>l>G@OI0pO6X3FzIsY=% zzikCWEA8Q-db}Y}9~c3D>swUvmv{Sft|tUH39yvXVs!N#O*V@A~Gu!2QS{y{CGL$=TfxJm5e3`@EKduNZs9OiK%)iFl%b46;GNH8mZt$D?Z8aA`-N|Vrq!1mEaEf* zx$>sYBh%)ld2a2ptsKWn{#*{3P9F8ot$)&r$Okdfk^G+PAEe`wZ4%3`>c3e17uo-~ zC5c;>f~=Wb_fr3@bG&hidrt8zyZIZt0blKkoMDeI;!B4@Ce?=5@epSk&N6+r!B%nS}hAD#ef4@{I>k zmBArhjHV+_!kBsER(jF-o8;hW0@>BSBvGbv*<7tsUg^S$D@)$(&jua`YI4o+Nr+bJ zM8v}mY@9Sun!`hNqD!F$G(ns4NSk^bmI;B-@R2vC6zmGV!#c5HQt$ zvHA~^i)2W%|M?MlD!+{cNg`?@fIuTzvyFv3yoXyDO@!R!1~%1ISiPIbpDeTAoWiZB zVe*R#zw|i~Y7iaRdHBx%dEn|`-*+@ZH zn57Y|Y{$;Cwxw@h6c>E!ci;?*!nFNb&e>^`vvCCK>s%uFQIDs&&*8TG1 zd2pgHtuS&DOoMdTR^lc%q$C6UJ6k&r15R8dAp;tT50@zovak9tR{thh^6Y;EKQhI~ zCO%Kdcr>8ier)w%8e6Fx95UY2Wc{P>P2;_^Zkoz$BYu96q>##!lo0agCCTMvFH9Oq z`X_JWJkFomAt&Tf;^Bb+3!tAX&1CME-=|>(kt;}P5;wU-xn<1cB8-|hPn(uC$#V1!oCO5E@DGrKgf4uB|2i^kp!AV*nI5CepC{P}z=Q#=CZH~)q z$}6cQ+T`MsRww@6G$AGlM5lDAE`wbCX@r2#^Q!-Px_RioO#P3*t#ABu6FHXTGptpZ z6DM*TbC6E_#xrRlGCWilVr_5Z~ZITWPo(4~w z=hxBZ1sYSMqm2T#@{G0oO`m63{{$K6%!9C{`&Y^;18}40qYUkjHlC19Wu5Z0@`^L9k~FfD#s zDvg_jI#(n+{8jZ|e>QLZ7v2A49nkn=(jmY4Q-057q;&k?=St_}G1n`XRmP}O`CI3B z?S#8QZ8AiO=L71SWY+f9>u6p3=;MCY_KrR@UFJ)DM9RmXq4qUAWZsSLhbVo3=O?{w zz-Tf}vb0p9&G`)$z_6xz(-vgDLg8#WjTk8DO0=0@O{_f5>Wd?ctJ5ZL8gVCi=3ln@ zH(3s39aH)w18*yQFiv6tDYE?mjTQ+m2mLiox_qV1WeBSWzqn3Hi%*KOd}&x<{o1i9 z_BHM**ajYZ#jPI%>3#(oC(b0Uf7O4n`ZvjuXa5UhJ(X@?E*s@h$5Cl@G_@)2 zeg^6uDbfKUO4{f0;rpb?f&sPjVRv;T=t@e#R#$a80!Z}jDF;gTR^#Gkn}{Ikt~OPow980&$I%SZXOP9X_WfmlX#Q? zSX!N=MHU!+Bn1CG=^_ru+Dhq|R`aw1mTi{12<0syd;06o zL}`DV>`^-03Mk1TFR$%D@Tg@a*{OeX@&`0pK;`ptap;E{0kl<)w5r$|p7)7#V z)8dAEwW!SeFF`I?!sKftfPNiD5)qyuuW()o^nH|$Xd^9TilvTbGxJhK@!g_vI;1Qw zACye#nHqkQj!;DYWvG8S&=aWx8sq9n7jh7y&L5^sCX}W9nI;1{SkPyDfZ)%`|HC4R z8){v<`Ev3!$q%I^!wM{i2t?(H>H;R+k@14kmF{i%98k9$ z$~njn+{H|gZd{5pG!bso|6ve#5VQ$gL9zjw2uPIJ2OeJ{)8lafq+nSgd?i57a`yyJ zJ75%+@wI( z;y6YCB2IpmRZd2@x5_p@M9rVZSc1t4%G*j%UP0vv^Sr5T+T@~k8Ycuo&MRc$rO%RV z{vd=RfKeL|{XXn-HbNmg1X+UQZZr7|Fxq5F&nB4!>De@PHjkzJv#x&$J_+#MRVFid zS}V=5(Ehl*d~h%kZYcwoH%@*wnPnZP<@$*NzezDH_%o&*l_t=4{5MH&J_?deLiL}$ z{!OxG-TzEF3_~D+#;f1LJQqa<`Mt?f%NNXHtd&9On-W%7*{_^_F`&DH7v*j05xA#5-_uhx2TeP*GHr1{_b&}e<} z`lQe4H$}Bc)qno_FJu3c@=(5cv<0qvQ=Z*h>arv)8|jk&pS4cIydHSWlZDDjWlmCV zzdp^|QX0Aq%sj5pvhvbWM%-6gjWLOQVd>t7DCWt(8*zOrh6L9(YgScKJ6)^(Ou zS%N07GAyW6|HbP%N_n#Cf3l9V9NTSaaYAPLKJ7A_<^x(7gvl=r9dR;hk|m7=kl+7l zFD63&u;__6tydOSxx95$ME-e{t!(5k&$=5=d5^V;dc2iwEXdf5WlNiYg-JKhg^e?DHla)FDOc1*<7W0mi2kQg z6oFI-AiowR=+f&vcFfrF3CiDgX>`=fq>Bb!hMiY_V@Wqs>Lf_l3U;)47u;u64x4*XUSr1ZhLyin{l`aK{g0n2?@};OVfufW>?*o*_`icETzf7mQo36t$J%+#13AQb${(W!+?L zuvy%rY&hWQR{QF~@;qjXJ~zo)6u8_Z3kCZR57jSZ_p`bMA?O)D%TP2Y6Ne~2Ti4#`vY<5S zcSVyNl8ejHQt{->GZu)5J?TZ}U4$#zv`9&ko-OS(L6auX*pGrHA^AU_h{NVhbw+MF zN|WkV<{^m)ey2a4@~3Pn+f zOaT4jApmcJY@OqEKzijtmU{ZVd_JFS$>76(Xiex?bY1|PBl7Tvkm_B!t1Kz+q( z8W^)8DpG$mD7IAULQyS% zJXpS^QlGS2D)wERCQDD$ApI~1v!EfFr7Se5ll(>W-Jl~#RR7r`>=8Ug^*@E8C`2ZJ zwiOU{er_QIMt1}o$qEDh9CbFCR_mP6GIHV!8FOkJAT#{FCy4}?r2WB zvmS8C0zog1w8@{TPB_`@T+vv+Y2+`{>s(PMg{EUI(y0H=74=DoyQF&hy)xQdh9(zR z7|Rg1)|f!~+K32EoVLJvk}bI8_55t<5cq}(A{w#{Ql2Dtn&jQj`osx`Bp;?Sss5uQ zP5n#c-TxGdq7aGz@<~m0I_lK)mxv&(U};Ax{S6{vHW1MuP)Fkyx#6MFF>tg3jT!^U zpCt?qH15hH62?1yRy*Bj_1rqAF+U>Rq;rzfW*tl_1Fr)Mvl{fLtfDVL3WP&wjs$!)b^+Px969K{{7_0qyPEgo@?%z z2*6}d9s2gu-yVsQmR<$d+z4d>w8cR1;8>te{%FABF?n%_fP98`Xqxc3RgUrm>XtFS zDx=k#v_jJVGLD8UZj?T^K=HhL`Ws_-{K^mq>)J=V7D(69@|P9)<9V6NO0IK0*z&l* zBnV1_PnHB82N`GZ=LB9_I(eRPWsV9SnE*2miorjgdwhHET67}dE8@TmTmY?TI|Iu~bqNgV$5;R^u#HmoI3Er899&;$@@boI&s$TU#Vb8%gPrb(5jO&yW)rvb>1`1#4g zzq1iRT6xQS`7<`Mk_3JOE8l&Wwgu47-C~M=NptWc62&dAVMvu}5(rDgw-tSo{ ztBl!93w#oiviZ5gik8(^i#d?~;527AD5*Die zV)buAp8bz-&o%eVIB)iOhtE0Z988!n0VhwM#NNGoF@5@UTzKJy06-*g=C_~z_K`4Y zDgkV6gx&>A?o&zZ2AiLGKZ4(lokV!6S8Hj5EH|f#T7EJvvY2634Il$iEW!`DU zVe$0+EKmHmVaKB&i#E4>aZiIy2htK2wNI%2i`74+A)m>s|8cbcUi+lCPQEq!+H0@< z_3`7!p%y?zS_n-5sX_CJnY-gm?%B8Ik{`qX5B2p{bQ2@sJp7uaE<%9_vFq;$}0=-$!4I2HkXus{ zeH)1(B(Vmo{)^Rrk^S$#e*C}w?%XTp9(w(y*MD_#^2zHo22ha}0tsN0PLu}W2+A)^ z>{*&b#4ql|l&{G};a8q8;F}RlX>dzamJ@-rZW4G*kV(Fzc~O4c5=^ApFAfTbzX`|o zoN4fvixtzRp`c1HM7uEkxyM8}-a`MRo=bwK*4(&fQcxu9_)^pA|2Nzy=A;=>5_Sl8)ox)TvW&T^BfsW509W@0@?? ztyBMW!NnJRB#bps31D+0Gyyd2crvZD=(lMS5ovjnJ8#S229Y`f(vgSAB_A|xgfpx7 zH@N_?fy)txbo2a7Apk*^HNGh+ix@zXftM@DQVB#S$WbODIr;L%hHaN(64)lyAgfGN zL?t+3JOg22azE00TmLrYm-gaV%4Ygp^`BgZBKw~>PZ}?q348 z{7LH?&yOYunk15tKTfVG57Qyn!$YHYo11n@rvXZrmuqcr-2zB5ktLAiqrMYmH+V-| z@O54$x3`>xDPK+u;(|YKON%D%B>B;fPf0%Ld%qYji6rDh?x5}IZ;Zp^;~+0Lmy3Uv z6srIH^j}o}BX{r2i)S8w7wew5@M`D?0hPd@hOg z$p(2Hn@wJu%xSI2{Z_$gUcCl14*qfgGg;`;(7P-{kbAvsu!SiA$?C^1%)u0=D&2)~ z`l!uS$0uny`I*{GSgW)o8!|1M{C+!Tqd@AImx=!_X!C)oOmSpV{THi$KiRl^Y4yK* zuDNH%%!_9p<`z5xk-3v6PXYj5dGVEhap9f;7tSS@Uvl1r2@|k?|9$|#skcu3)7dzC z3A|W9-#9?E05&&b9|L1^3&(+N^MoJSDjN}qDsR{gGtvd@=jKeC0P=KA$MJCMAdpS$ zA;Hh}m4(|o2!4Zl8k3DJU3zcYS!s(;lCs7*5<}(>*f(gIh(y#nic3C%ejk)4$w@kr zv7Gc-5#x{Q-}{@j{)_5=%mR4e_19moeLmr>2^Ro(_x0nipSR%p1uy^ju^->?)_ZTc zCr_Q6_MdM4Pd_<%@+4k={dM{s-o?8+&&Js|yp6ZF|IO2XbCq9Nl>jz3LdO7_tXlk> zKC=E~MM9bpHeLF~1!gIaZ34=gke8A02O&$D{j9+BJ-wIlNJ-psk`zc%;paMxVvX{% zL`kGcKxDdd(&oAhDnlA4A`n#n#p>TC8zIg9Ct?5zL*IV-+asU-=w~O-o;v&7v(7y0 zU%&Ircivs_y9=gXclXm{?djiF5Ml=~paih#;kvHx>w(AMKJXY^ z`oDXN_y4^Qd4K7YVDI+Cb4dY1S9D1*!|#N9ixs z7yZxQC&{1ZXOheG8Ye8|2$5=wWS$`7?@-V zBWF+^VPuV4Ryko8J>IGQ%QxTT+5fV9DViKfI;g&id*w;Q$l6tNG~=RdX_l6IB1r1+@S+H~v3IUze{+ Spr&L10000 Date: Mon, 3 Jun 2019 20:06:25 -0500 Subject: [PATCH 040/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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/115] 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 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

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/115] 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/115] 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 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 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 zcmb4~bx<2$*zY%i;O=gvI23ocLeb(b#T|-!aEe)4lPhL6fG{rB{#o2 z@B8naxii_BY&O}P-F?nE&-eR$&Ie8P*Vq^o7ytlZD=W!s0RRY!*euXc5T7(e)JPz9 zR04DiyyR^>t=>DhdpWqd0)SuMWJZ^31UFHX-6N6y*ectun^i?DTl6+@%KTyY%Y+wl zvJcnP`*=FBK`lv28+|t+RGnq5TY=tRFLXY1Tt|3F5NCAL$n%ra7_+f_Q26OM-?a6} zo#6OWXQqbdlOB7GuAP_pcz*2CZ5YNIg@1oP{z4*VBz@d}gms&(nm(up$1u9;xA%{$ z6|DUn03D$@2`eHkq5m*e(ki2j9U0c36OG!(D)H0_ylBnSsD5F3;)SG7i>_pSO%|qK z<(!<#;2zy80yZ9)Nm}4$JoAZi_tD0M%;akM8;7!ldPq~^ht#}Ci`C!Xlf(}piDNXX zCNt`#81{i`^nQ8A4sX@4z-BHMIy?=;wYZD8jk+m{G$}^vM4d(FSH_qnm*2yCx(!9< zbi}rzp`{=nd_~coy)=JrqUHZ>5O;V&(6jmTj|~8z1C-@ubo}y;x?G&87qgjeiKwSB z5*P-Yjr7oxVwUaOus*(}RE=b!=s&9>p~D(<;O-a&fBy9~9|c=ZwpKCgJXr>gM)CAw zpZ0IG5v3Bhs#iu;CU#T3)4LTA82nk%2+a`kCRRR{IK0}0$1JRcF*=Nxv)H9o=V2?a zb;@{8Z_W5-Ve!e27WQY|xYadZTeqy>=CYG{#z>A14-GjYrue(qe{aGA=)ls5Hz-7f z-#U=MVMRAZKX+0joq~DG8()P_(UU->>FhD1AMJn%>BDpoDN6WyI2sTpokE`U`1he2 zPZ)#`?)p&R4f=r2hUbOaM1zqLjs~TX=fbq`@o8zvbyW&QDGAm=`ob0SW)0(G0L8_j zON%+q#{jmQqG{=ymIFA(H#siQ+1aMt#MD&u{QUgKwf(kTDQe&lP}lj@x%jCJNpN%# zsCpe@?t8*)aS~BvZgFxf2+eLG=GbFeCfTVP$KTFJ6BHApH0ufJA|XvUmjd?^L3e(b z%DgefIrNcY^=9V}uZwG$is}`I>H?p+aqlRw-cEe}7J~LIj1YXueM7E9a;<$G{JVP^ zI;^xd{W`n+;x{{HyQ%bItvT*N9YA%r_kv1|!-b^Tg z{`4&wZ`nf^j@<2|!b;e;(LyQsl}De>q3L(3cI4ix!^Mc-zki=CR2vgJt*=QxBL{Hr zvcK3<6f*c|5YY$*EPfGUg@1!(BoBM+5v7sC%UWQOfMI~s`l;OY`sGID?BfU2rUIOA ze~{yR)ig9>PF4d++Z&)tmxTodT&8GE*Fqf@?gA0h?Q%_$#ztKH?b(l)LK_-@usJ&@ z*Yh-3yUld)^u}lBrngmi>nS^oJXhMoh|S@exp%Fa>9z+;h-AEwRI~QlZHo3*ulnS) zWacfFbVXV5f?VIxk#n2fv^i3iEb-h7|a{cC?e4a z$a;^6U^04dnk1`yWb>P9U_SZcBc5+T;+}akul0S}Y5SojQ2Nj@&TRJiZoLN%Ia+DO z#if-Te17Ty99}9IgRIxieCKH-+@0(TqJA2>FNeBsz2PJ)ru9W%z#_%@C z$=)&YW`(!Y>|loJ)n_u)BDFT`FYQW_g{dr%rpkWQ!*iRz`T#>?JAHBoLruhSPF6)s z-b?qOK<`B6{n)q2xBFY)f_N~>vLj^T@E}Kxm;UO=;0KtArc+xe+!(Q8UOxo%S6=#K zoa6}QwEui{KQ-^+@bK@Sm%)@t;-xdRIvlORx$V#oMSUgDu2jlMwsO3P$Cc*2=&AP# z^LHVq4{$D|6Va+=9*u1&Twl|RyJu4|YfG?K@LxmU!s)?~WYolXxyrrrII_IP&fR0* zIJvwltMn5bbDq=bkrU46!2dM77uxR4J7z9 zyKP9470;jvX%uU#ez_N>l?;lF!KGD<2$?SENs0tt`EGOvvy8mCv@67Mso5beOM@4s# z^)f8Njnag$BzO`wxkuQ8Xt{JI3jW_}<5sZxH%6kg`-zQ}D8izUANl9-(+xOg${Al4 z7`^iE-@n||=KipgvOwSuavl*S3z7$Dn}4Q3+A4t9WF^U|U-!FMP%D(2a2Ou6fDz`B zAs~}h=$ix9{3=%U_AaZ|Z@1nJl)?8rk@X%!QGB3jH0=hHTs zv{i3i)-_jPe`d`U`XN#k6H3Z@tt0rfX3{Zyh70MCickZc8DIsN6b zEE=_oFo*kLS!4{sO!SB(Du-G$Tr2#~ioA4X+kRiY3V3h7Iy5@naUQhwn8$gYWeD(V z3?xh=R~;y-A_fy8w3+}eaPL!CqM@`67RvmtjjiLb_S<;pGUH7`03tI!BkWI-0=lUd zM3Iko?ICAD8f-QvzRNzO#eK7m@gb#+S4;Aa(B3xS-kasXaC^j~&$ocsI*l<-^z_!* zxyaDHaCQB-Y0Za3)5?fUQ=b*3XkCklN_SEw*3JfNonw^|yN=`HUo2u9z)HaE^@DSI?%**U+1l`!>C|p+uF)(a$rkL3x%u;LT=}khEonikcR{sXVDoqlQS-R=p;qjjq`sjCk8DHnZBO&~V2uKN zHC<;nVxkvWABHIlKTx^#-0txn3iB;WJY-GiV%40ybC!M@+CLzPUeipeVN>Gyej+_v zlke=p^w3IaI-jV_vg*jSA__bH?y|DK(C_DB3^;h(9|((>#g!bigxzx%GiaFxLQIgn zDEv*3h;)$DpLMH{HigUH&L&*qB*tX#hbDTG|Bw?!o%)>Ku&i6;0-DKkzGSLS7PzI&03d_I zETmJNWXQr02mW!%18B(LKBz1*V#deAV)=jXO6vNeB7R?_-4TJ?IH8ON zL$@RsH%kk;&sGg^@3H3rVp3uS_?@&k&0wx_(BF>_gIqR=$NOvn6=ePXy@U}rHidvG_dvc9JN ztUTJUoV^Podv7X7)}2_XUpuU~nw^`AS!>pX0SK5Cz0I;&{OV-C!lAfUjVXyplK}G- zZztlym<78C2GWL85+^$KvmjIF`=IU}o*W}!>eObTiGMqk%j?i3$Hmjr(-ih1w?Y|H zXxm(Oo%p_O})}L{UMqy-iytltHT58wtiG zxt!{AQ))dLK3)k;JSR2Nyep@SaS0;UkY@5$v{6So8`hB8_ZrB#h#Lrkj&AT9Vbi z$B3ZGh-_dpJ!ox#?kWb^hXkavqzV%?!STifdT_TRYCqH3gcBBA^31ik2&+UkOXtK8S1esb@|n`|dn1C| zP7Uq{=l&xRGf$Q19)xL5ogOY^bnnX#jQDdl!b?(0ExcDEHLXDE#io+booZI=a_}K<;P_*W}(c4PX*Xx{F`xP)%^RiqZ?yODRzr| zsIiiRo{R=*#8${(QMZt_?j9L=ai+J0n3|drMv!L(JnPrAL=nc(%Ao2-qKI5FW<0bX zQ48~+t{fLic}6uwC&9PXdz=94uwYio7XTuOGKT%rdBH=BC#8S{kiPl3gQpWe%s&&* z*oPd>rs*}TJ^c#f749RfWYn-0Ec2>pAFHgO^}lgQdWQU-4vphKJ)-`HEd-ra;zvZC%}rO_HZXu?&b7teQtqzG~@#S3lCmwEx$ zz7~+G_$f>73hJh^n;p6Con{s-OItZ2uM3piaNH>2iDoaO`aACEZ1WCNr8c*Dq;Em0 z%zJd&H)vJX3Ls9AaUqMUN3qzL+^fihujsI?Ho@63-{fOfb2Bs~^m*bF%@z2+dJeI} zGhjgG_(pV#er!ZWaNv7UE7sCbe3iCf_gkRgLznM&lJ{Jscy3L!qlIV%CKBmyqD&rW zA@1^~IAQGn<+Dr6J+ze=*n1L|@Wu)qvb%Q~7|d@x=@a`M-)&zw;DHrn4;y_r&9;&` z2o|F1-vzI*r@xuiC<9EI3iVOfu(wk~u@o>LGkhK>*2rRVbR6*wBHJG;X9G>Rn_}{~ ziad+8G~`H&gh2=;$%qx8#*(mnqg=U3c$dsV?D{$|A4pvv-5LR)R@Vv|5Qis1Bh(e{ z=#_*uGqY1W?&v7r-_h|bA6Pz$l2UB;nEfk$q1ki%z;<+(V7d7-dV$^c=xX7XjbPoo zg5VNRcd(%tHI{8zEY#7z3%c!}+Tocjzm#Gj%mop&s;-&98%9Tpv_l9N8>J9K$k8XzWz zRAJLZevKO#`KG2`w3d)17Urp|-iUw&yhKlpLCeQp0SSfzZ)=}+4!7S%}&~0jk3?Z(I^h)$+$X=vr_bo~{IJKFGOPI{Y#T>`f4fi%Heev2{H1 z9~Z*pZtbtgb*L%f_o71L{(8NW!bE$^c+}lGmEq8HT--|?`fHeB%A3PpG0UyMIllDg zv@T$55axlD9p4=_Pc{(VMIQZVKEPlWp-hqWdX++{!SrIlKuQ-c_0lQRlgSV^<&B+K zyHj4MklG_Qg)V$J&=vRZ$`*82)LN(245x)^b0<6$n`HT;jB{fweqZx}^rAnkh;!Vf z7Z8sVj1#_6ikIsfELn%>)kn>fhS@l8wmp%eM-X1O^17o~6_u9WEeX?IOy@M~NMivL zds5U{MQ7UA+#H|2(hoJuk`f)2N}RlPmDn6N1a=k42q#8Lv1vvKTLK8Dn%1M+jV{Z@ zZaU&xwmhj9KG&bLxI`2nbyshb4T=L~i@2-?zl=b;-}5kA-R}{Bq53a|G(zAs7)5QpN-P-tdlG!X<(OBpQtZMs)UtClo-CWWP6b{J)OZ3XNCXe_vy06YiHw z82S~2Z(r@{J&_`@mf~k*@f+7(tFBgiGPw#MKwgP8mpSQSc9BYYD+Z8wq+=^`8MORv z(QWgZRhQwSd*L^J>E8&fe#0I$Dxu69lj2`U`11FUTGGF*uc4`~$~aPFKO*XMH!y2o zMWGh^(>0$5jMPVciI08QWk-(-bg2Jgf||R@hxFi?Q(Y_A%b~xD>NBf;yBX6{-IeSWr-+edgB73S&zd(W@aMnBi#Z47eMu5& z-gdJ2_*4GRIoPpPzF1E7grP)d6=ec27#AgF`~>M0kTKV~p-?1v|4&(43dLf{b&KNJ zzUdeY6<8f4Na{s9JGW!%}n`42W%^D&$ z+$Akw@h$X3i>XBSW889;29O7rlvC8ufEt3N@8vb(AXPTl$fTMW;rz+J3SLHfs5}p> zJCW|joi2Z(|3^+$&sD@@(#r+S6}-AsvQDcW8kNc^!?aT)vIAv}3Hyh`Twp{{e^1>5 zOt3E{!5dzHgG@POpMif!=A*KRQ-@u#nt7`O7E16$r<*Pm<|b@otTqMh~eX{V(K}L%pD#G zI?PtYi0p%3NSI>Figyx_BcXxM!OmHyIy$f>!u0X`3~u)x2W(GNX>ScTg}84<_KkSEuwx)iC@g|A7mE0k;Y-|n=5*lcGotd47Ds5CHzT{%jTcb;qK~r~m;vWl{ z0jHxIg*E~wOqG{%JB7^7uulbP=#<9$AP}BRQ)pNboDNI}$$b;W=k5tY>&zQSdcED9 zd1_@+!9Di4T zzOTF^QYebmqKxFX+_%f+p` zDs))%6uRgdo|Fz@P_51QH&L{@;+bYTY^5QcMLM@cz0Wi>q=@XW-6B&ih+?iGmjA(@ zEXkeuci=3ACjqO_i-Ri0?!U*c*WMu zh&Fp+=^uo%X%)nVT(Vbci5xe@Roe71KUS3$XzHil$jg1GjPcOsfX18N(Nk={hz zG~ql$pohTv07e0D`?}Wc{G~?+C89CZpFQaBZ2;zyx!=mVI=)q6Cqu^Y^3P&GxgCcbJ`lb-b8qcVsM7Y~ zw*{_Q0>CKO^fpY^nql;qQ8% zP8=R|sBzmOKiVg#Zejp0N(aGsSd2+^5D%c$Hmk?SAQfEnu}4Z-njcek-mQtkg#8HI z7Hxf#QY3u4{XE#cF)zv@h5|DtDI5WRt%H8Pe!zZsrb&8%T$i*ZkxtDBmeyoxTiHV+ zsmCmn*aP8m3&|0HS`R;K7(Ka=_Ij#4H=>X-<7LFy%_xoDWVy3M_(?VV3NEX|gXD#N zAjaxTIDSjkI$hZoZWrgeDmS~J@Oq~x-XyJxMYHh7iJb27KL-0$Duzc+4u$1sGLp|< zcwd8#yxbp~hSVFl>VG@i2$_|;VfXUX77hTCGM}&9C%dPYriZGpIF$O+BV9VdZse|X zt?Sq1K{R#%prQ8Bt22(>4|k-#LdOriR}$y}y&*(4!iAt_V2tf#M0!&t2fO*GEjIv6 zAC0Ul=X+d)(&zXFLS7-4UY%PpQ5Rl0d>y@BaTz(a)2nW#bw@tGn)20bN7~h5t(r4)79_G*N zKnGqZ(-7zjc=S?<7o`ndW(q9+L66)kC z+FGcBO*rN9Vy}MH{A@ons~}nO2ck_rIDhan*I^UKfZ?f1w`E5cL?Zdn^nt$gKRJh! zhjt-)qR`5>*_XVOMj;*k3LJth6%luW?z0JMfcnyl86B;f_5)5Nv;6078LA?yjJK?1@ zsyA4jE5`lhoU_@$$E>LHs+*p%ghQT`+_)EsKny5|{QRhhVU{a3X~~;I@FNB*)9eSl zqATv`-+QSPk-(bqT#(4`x2n4=Id-VT@fAuB`UehvSvGLMV{-;a@*P*zgApoyLN8^* zsn>h?$K)f`{XoI$oT?;d?t~_c7qKTmRtuQb;Y7Ye21YiUWI5Z-WiinXEC7v>7P%wp zy$z-+zQnrUxN4}{#;4g+vR3OYi`dX{BS^Gr zA|1yYG(a9_yncH4!eEd&)@k2x_AgZwn=Qn1e2*Zr6d$FN z(-BT!B3xzPihI|2CrDs#@*pHnwG|G2a2K4pcLwqh-bLRl&OY=0bCx|gx!1}4xrzyp zwC_;3w;8$dRf~SQ3els*k?o?iEGW1$L53t}*KX*CK88q$>=(1>(>!#tx=t2q;LbT- zpDS~i9!9SD+5PZv&c(bHxp4}v_4Q?nyK@ij&mMo^v*y8jgJ{;(M3`$n!Y@klinu}+ zh4{99acVlbJ$0hKC6N|mRLhoL_!h5}VxrV>?Z?g?{xxpQC5S`Ko?6wOS`+I}U81r{ zg#X$8=4Ytjq?`ROltR?LeA9@In{k!+S zO60|8X$%A!p$1{Chs}20(7P5}L-3^vH-n(97{0*;i|Amup#KMe0?{any zhnm;?R2TI+anGNzqfZN0!K>i2OL(G+J-M+k%_RQ*VE&BoWftKSFVx1Q!G-0D{}K7_ z2met&a&4<~;m7Y(bBsdoUv}9FRQ=kP%K&Q!j&%;ZLn^rkRb?C~!bXmqvbthncix*T zx846j>$bGSD!DzV*FQB(Qv#Bxup5imWJF=nfy=5)e5RdX%yj?{u9zf(PXC85Z|q5~ zHraA2_k=Sa&I0XPFcO~lgHziuE#wThALfNsCE@IW@Cs*o2#Ir(Llfg4gP=*R`*kA4`r$ri|H`jS3o{qH5kY(k;2gzC*pF;%2KB?Ct0+@A1C8vk5d#4Thhg%Ot z;ttht!_P3z#~u2VT;@F2zCJJNhtr$9IrY(4a+TN5;&l8$IBEL#6YzrU6v*nAWpsun zL3+s(!b~17VWi!+kGF($Lg@(KmdB*7fA}^dUpn^O)AdFhyu@SI*)rA>yqR%MT(d0c zdvdW4K|HM0SyAC_8}SU&vqYM1mCSAB+^)ngqYOp2I%N)JQ2IeTOXLZB4kH&h@_zSy z|JpQ$6DcJP=)w93yz~{9F*1mKkMPu>8+y?yuo7byA|AEOAMC!^&ebaf{0|EdiJTC+ z+SJ{IgyGj+q@$Gc$}n5^=LXMoOCJT+-3HWiD>mW~8vQfLq%Cqy7Y3{9$GMAlfcB4j^CBcnx&qy;2lyT)b0}2x z;V*QQmYZZ4alO9jb%_JT92aGRmJzV?78BaX%d!ws5wbD2kUGFq^c594`QaWK7mO)s zOVG0`A>j1Uljfq9S34$X-MD4OH1DkPC44dqb5y!wyrR!^V`GEuWyYw~-yY?WBxBKG zh>i~@Jx5~Qe`XqU1SdzA>$*Ny zKeEI8E;G@Gc))C<|A)eQ4DWQPe8pLjKp=<^uY`XjV%_3A3K=gnE56*+t?Bt{KfkK! zMH^Jk=j_gvZi9H<6)y|!M%s%@uuON0Yqj8wHmqx1gKKkmg$4pSzWF&mM&r;7W zM(Hp(H~KDIYeCjP`57 z3E);ZyhY}V6F3uAK;`hotQvl_(jAx*i4FQ^lUmOV*u|lF2|2J|pD~K80he|6 zf0O<_5uWD5%gTFSwtpXeL#aVeU}lkM!gtJtJtpu|pbf@&*XdA*ew6z+!BQ*Q~?5DIUF&UadUO3Y491nPY+rZy~}eiAm>tKEYvr zgU3ole$&@W&0^QF$Zji_Sr*I9|5;!f1Kw1vIj2NQd|Wx{ekq?;6KDt2lpe4Xa(6<| zYYI7(8Ul<=BPNDm38%rEF0UV*V1J(x97}uUS2pg8S07VA%m(F?%3rvMetoUYexPvD zQczoFcIlsQWbHX_xV|7D>)Atm-EDb#dyiT6x6O*Ei?8gVMIt&#OHQ~rh`hJ)N43a| zGM;d?^&kZl{aWI9>39MTi#jsGfAO)^5BjpR*4te^AFb7$%F4iNdmNc8l-Bn2(x(TT zX@aS%#iwiftzhz+qD#^y27^liD*NjXMoCDc9Lgv@X>F=&a( zX42?afap>fio>`G8qr&V07S>9a*eJuZ?s!|A=L}Xw}Y_-3KB{h@@0*(owc?eVmSJ| zdfYngN52|)6J<=EoL+`oQMcC~wdJQrzrA3)U?aTZa6=B@TJD-VGMXG-q8SDY;GHSYLaD&^-yS~28X4RMx#wro-)k)Mh4$jU*UQ>62fhx0#VHYi0m3W={fzGf zW(_Mi{iUK{MLBbQS3#FqL*YlikSX|UL8S7fy>y~~t&mR@Zt z`(4T(!LPj3jMQ_D)hy5-In~k%7g%x4{6aTB^#WbDbW^Lx|3h>ssU=yBD=xG9ciTx0 zP$=zpHyv{phimuc%Kh^%SDMn+3O0$%O*m#MdFk3TIn~07-q3)k$1ogyWI`fb26^6( zzLsdYO+F_hdlXVbm`aCNPft*fCn_B_MpDf(Lt+2=&y>uz#E|#6FWVENrOK zy;reIOC+S@inL#eeCoC`&&OElSU*2mz9|)C?m8c@?zJ76!btyXh1{ndb%vw*?J^Lk z8886pLZ_E^NKm_Oauhkainst@DS+!KWzlC->BmWN@T1pT2HYBdeVIpbIu#0fmrGM2 z|7F--zc$h9*({3X1HVZvvGhopS#Zg(^8>u);}TukOS49#A0PQ?!Yf=FlZYP)C-^i^ z!ntw8QF^0*8DkPC8k7rpap`toTchA&O|1K4@6&0>N$79uG_N43_0-nj2BuqoH8yRb zAr0Kg`BTx9GFpWZ-wT@B1gAGI6Xn{lsN#@_eyg*0+CM$h`u7+8klYSKoDvi|YLsgC z>a$X{h%%5dn^YvW*_?l<|UlJ9@*{s#`oehhQW z3?xE3ke)_^@{+8c5GhPJ5^ul8k2;Q%Zv7`mXHP2e0tm{un-LHb{3v2y7EB*|0ej_Q z@Oq`obrTKczoXy0I+}8-avb@hrVAqZoap?b4_?;b3=R;@Z zG=6|0;7+QUS@iBL?pF;K%4JTuPYRcmtPX$Xi{9no^K!nQ3S}RVXvNn56sk3JxEg=` zs+=PFpPFu!xh3nO5s?Hv@HnK}U~lG6J7GKjIIqN1q0uG#+*LHjR4oA8*gK94zJ%^- zQZ?3^^6Sw<5}DSx|2(%fn#_DJZrNUA&6pPWl86O~&Dmq}>JGAUXEOyAi? zwEuI$w96tU@a^4F6$kI@S+FIUM>q)Uyws3B$T-^rQ`^T6h4Jahu*HOM$A;V|hv;uf zaE1E{SKhwLARAcx>ZCtsBSA)n+ifLm@ zrw3Tf2)BiPaf*gAINA-qaQx=tsef3c%XVzaZvPk3#^AKLRPTFiSIE7e|1cW7Im>#o z{H;K~Nq#V$c+jAR-t-Q(=YzfWu|^e!A>9~>{M>;S7GPO$=>qU&uZek0=jGaW?1bh{ zAz!N$3L5*kP>-mvhs$4$eE?#Q9&K3S&B{KK3@HVaGk?Swsf%54rq=06Kq4hGTybXZ z4Mrm^x@t0|^%gOD(ZWLDs3*_qK#fF@*7+<>9kbD@E^R}*|NOQ3v-Hz`Q$FL&eJxZQ z0}vvacNEgaHYWp}`$2RQ)pD1H_1`=BPi(+i;FmS%*c1;W1kK zrrRG3UrUQ#ZDe{SU#=r;JUTxb)SGGq;fEkZAwK*Pa2?byjk=ag(&NS@q&{ z2smL!?(|=F>)4p^^uWlPnb#3Mr8(K#a|IipPGM|x$8JW(<4^xYRLp~JC{oGMEt9?} z#Z*l>xtAIu-_7q$B9nfq1w2TTaer7ik_HV4;G8fxl8}}x87`lO3(uk5OK|knO;RKX z;F)7x`3#Od`pP{&W(9WHC5FVK1K;e0qS&*BiC4os9;%k*(xv@SY+(p{(C=-u4&I}2$i4`Dsmefx zO<->grbyQ~{0rma$1?=;A=HK+B|CO$s@EgF4U>k;z&`mu>R7wwTlTlCSNuN%SQysi z+QL^5p%tnX=wAzg!^ucIj4RGGAu8bat?7iWE5ecNGd?TGhgJnGN{74h6N~P{m>GxE&X+!D<;RucwK$t}}9;o~^6_!bB%hLtKr5{fdoBJ-G z5w-y;_cX`4&FU}#&ToT0da?Hz->L4O;xLIKSkP24IUZj?Bd$j%-D{HcJzid1A@x$X zi8~u9<%HzEHj$nQ$Ih?HNzbs7a;1G-$%IlyF!Z|Q*>a^1$EOk#{bckVO_0{UIRzjO-wul-o4-9#bjKm$C-7m3=ut{`Q+^fiu1m6>H+oI zmxA8UU88px=6wj&5FIXNa&i0J(tafqX4lS;TIfw#sJY5Z_vmM)FmM~A0I)?Hjz^?T)Mt+_6Zxqpc*%5Oe7`atX$U1+6R8^hvhcTpZzwF9AJI^$Z6f$oFxI*UUsPA$mvld%kK4SuU zSp-2e>ObeQl)8sk3CO?+f;9bAwf?A6&Y~DFPws3fBU}Z^kZ+^z(W&ACngPq9s}xh{7U% zFw(Pli*yEDIl5mR{G!9!ND3)K*9pwPxY?#b^&JhlpPgHf^33&pKl?GRI$wl+|2VRtGhI2hp(Phu?TmnV`+= z7|N}>$Y<3pOQM739#;%o8(m3Nb-7s9)!BtG(Cq>2lPu0E`4bAdwa~m@FSlzd$#1u9 zd2?Wp>tt4<8ZTS9=}ibqYxSL7%_TX) ze#T>+u`a|uX0n~7E4@+P`Jupnn7q<&_j1ZW&3##{_Nb9$MWI2_t;Sy~zo6kBRx`$u z>+fGv?B>sjmlN@)Fn1PXdN}r`CV2hCk!j$i<#lWEY{VrL}zS2TAo>Qjss7r6( zkYrX^jW^)WM)l6?3H;^w&bC*RF7`B+`61Gn)a%6<15dCp(%y?g@Z|6dwRY`9VNSZ& zMwVrJ=|i;HK3!Dpg>|g!ERp50#*Xi;hQsdj?FLJ@_3y% zKwHw6EQsp&Y}CP12~u9{FLV^+QXJ5r4rOaxeget%;5f$Mf;44DK@xntyY&S`v6RQNIaV6a z;fKy2I@VvQDD3z$G#AC5JL%v291B9#m2)~@A&VWyym|yKBAC>a%~d8wrd0;z+o1FE z!M>>Iqv(nyx)=am$f+1PQpg+Ej;Q0gCd~lRhNLJxxI?QHzh}Wzbv}s=sVlX1!`@98Pin~jmLhH>^T~vnEU!qDms54Cz`-l|x+o&Y^BA!NF31(}t zw*?n8HDK3fg64$ALHCIplc~!5H~<#j-+A&T0~`IqLCjQZnuq{NfzlE(a?4HqpvU9DVY_$ec2 z^DlVgzv}dBk!yp^spgPR9_ct2Po50ULhP~Aer}4(&z-1KVv=v|Dn?bNDFBm(ZH>Kp zYzq?ocahUlr-;V?2&B@W3#E&IXp$<8?~x;$7z_RqR+|x;oHlDA*>?(3(0g%JP5UEK z>4MmkFeCSr2$^=7Jh+QiPh9Hs!_W?4xqzzP5J^CB;+%djb2E#fNXVg)h;RSHek z+O(>U7%@V1*w!$Tgz<(xuXjsY_uyNmK~n5O0Ag8Wtj!aqP6YIa`$wy*TF;8VIvO{z zi&c31kHnxplG8`mTq6XfDm^E_y8qW{d9taR0o>5Z@<}6Zt?KXH(3+9Wv%3q^_*KFy zb#0ux^xijfxBgN>r6&2 zfY38b?)TFDmjgB<8CxycpAlACGM_8tENf6+RoN+WL(d!ykewUiV8F}UwmP-_;}&K1 zH;~;ast`$nN?h9Pp9sRxupH1v`QaRj*9U=WocMASBSquEojRUQXS4dY2}8|fQZg(@ z_+lQ%{6an?R~_G8@;pWo_25v>?4!5{l62?+z&UE1+g`S0b<*rq_wm2VU+0mCA)>5M zYjk?z(H?79|2MM~SN}(FJ@8F|AeFRw$4iF2cY_kQYGdn}@bHE|ViblM$47Mt->_(Z-+0YV z%7TmR`vtJS*1YsqS;_uw5G^K+EZtT9Kyxcwbn=XLPpQlvluA7F;TqSg0#p^C|Wh5RSkE>BfQj=Sl`=(G*^-oqN~pxQbU{^XLDT=mtW#(u96*R= z9$|D+|FgcMqyq5E_;aJa!u21~vo50zO3_IVcO#Xd!_&e2!nD&)NED7>k{Lm%UuM$K zaKeg$Sp-Pg1W3WB(iMd7H*O9@)(5Jr;yI^QUBC2n7G1p_XB*L2MKDksfEDqXHydpu9S?j1(NDUD{!v1WK~6-sY=Dl;GvEM6v1-F31pg`txhT7W z9v%(Qm6)Sfh@BzOIT3hKO;SeEC}i+MfOdsDU-229!)0%%gk`eX8vi{*na8Vafua2C-`(t^zcRXd!f zjiSHzV8^n5pxHguKhSIY4_rYcIn`uirgh_EjKw+xNNb{ zA=&QaFLM0udzerTA?vl`M~R9zsX7KtnJBCGUmFy{5*11#!ld|wh}k0zPC)?V@|OO@5)+Z9Eui9izO6?SEvR?hUtOH^z2ZkEDT=o* zXCxz#n%@kSjMO@fd{PI8_bE(({i-Ivoj-Q;4DS#@4~40_gxg?CYD0 zWNuwoD$nynog?ZI9`z|LYUA9h{;wLl&@Kvf91$2l=1Ok|%^gy2h14MRqrf`YeK-w{ zl>itG;&Ti){i6zwt?J|C_$|0#Idz2$wILhdGC67aF>)u!q#2BTZZiZ4f0kziV#{wF zshtO`o6i1CH4#i8ROsm@KMP))!2MmqmEW7rpwk-~hyD=aG^xn9i z>BRT!_Od_)R3dG|`X6q3pd-nlv^S@reJ734xdv>d&DhoYf=x+`M>9g*_+qW6n{>}; zZoMgI=)z*h^8ZA`*{LzX8~Oah91^{G4S%|lXO&|T8I~8*Z0R^hV+a= zEHZ#EaCfU*wlgT@w1#yUTl+=|BKO#6Fo+-=Ons^(-b7V5#2U#UXl?|S&UbfUf;M4= z$-dN&5fU33QMqsxN_;un&BT4r-#YVwa1(2|4k&w~c)WamqGRBCf$c@vpe%AHsrcD zU_1GWncT{^gzFCDpPa6V>1S}c>+{YhtlVc-gLz2t3_;1+#J#4{r+3j`GtS~9yuDML0UScdw?j?2uMi@(hULv!bam)LO`WMX_PLhjSxXXLPBzs zbT^D`&;0$K=f7vKZGYTx?sLx0IoCPYxjye*cw!aIqQ_gX!i$=`a}QAJe!u1hpOBHyU}5Ar?Fbr;vlBFm8I1M`;1 z;9YA@l>@v%Z^CaUqy>b&5zCD|5mBufc5&LeZlibZ5|CfRZ;D@sa|b-Y_yzZfSnr_2 zhOwO^$ys!I2LxK5?fGk=Sn*ny(G-zm&<~Xdh>RB3b&l0v4^hbqw~SZ&N?3ev2ST|g zn7h*Kv_Rs&4DGQnT}50Q#NgyJk+|LN9C=Dd?Qt@Rs2|@tFf2ZO0~|np#AW*vi3nVw zp3b=G{Ft#i#H$u0y(YWixX);0T=5GR_>1x0Vub4Ht#jk+BgOZ}F(}X~o_n$@x5Wgv z_*n=YoCr!(Owx8J{Ny7w|E+l)SQ9kfWDUQ@P4&u$aM8SFMEt^CLiQ7qhwyU-qoM*7 zSWK@e3l{r&SB%NViAhDe+Px;8ojsk`hEmDdi<&tWBR`iLEAT_vtS`~ky zxyF%XhNl24>Fh_SNn~2Ek!l?DXwT|pjFzlu<8Mln{BUDXvrxjHHYu|L+%IHTRXOst zyiy`}+U1|O1k*_mZX+}}#riMWR1jL~X1x}2D-tJgcEnsdJ-Y1*6nU79;K5(xmY9RI zk`H*9S}VAEli-5PgM8}~dS&~HjsFeNXL$<}C33m2HXHFDY?C6okH>1ZlInk=pY=5` z=N@^4W8UDwJhqa*y7;p7(^5Iaz-IeNBE61)`x5_M*1pfV4Q`}-CJid_?YvJ0 z!7*^XiU6D~MOS(qAKi z{?s(Vj&qAcK!%ypxHZOGOUm3x5Ldj@Mk8|j1r62ffTIvXZn}RWTHAX>k>Sz-NSq(y z>Px~g5{)G}Cc}wogE=$E2DH)&sgVerB=;phDLsIb%5iS7Nf$?w;%>B;_^G;*uS}Z@Q8863lL-AOeiW7 z0jg&+BM%r#1#l5*Q|}t#ESb%2g!iDl#V5muSJwfbu~xj{5?*ksDns(K-r`9M@E)-* z$F0q70mWG$%^7>>AfALK#0_7;9KQ-GSKc$pyDC-S_VgaNHI%vIQg@d)4`DoHM%_VG zaN7j8%09ZU3xX4tY-p5x>^-Or-RTOpf6U=)))l_XvO_6w-dnx>wlHkm1g~q^5X8yN zbsC}|@*Dk}Kwq}1#dF_cH%V=mHd0};WpDa){P2<52mYA5OZ8?yW`tb7wAA~{4s=;_D3{Oq6(%swsWb0#2ItMY{*3x%8i-e0i0e~(Tlvte)V|4 z-<2dZx@JNV&Nkxlx?YQ|!Pz7%NZzO9)(g?TeC|Wv)`)n-?2RE<;KwCo$aZF*9SUoU zRa@LA3nfGa=agN+NbBxfmOPP%^@<6X~m))K;Jr` zJrNf-_^2C*Q7N^A0`@j+t#kUOB$E0^)a}-NkQ!(-xMTm&bOR-ueZabhdiu=eMNt|| z+Wsr&F_TYR0U;Yid16!VH1U? zj{27#%NDbbQaF^%sprLtNc^uw^{7H?B-9ZyfX6w+AE7eH`JiZ}-$Xx8?Nu~MPkjv4 zInVXNM2wH$%xaFroCYRC3;79Pkn758xKlefhE8qa(53*3 zV$=0~3NGwrZ%rQy!Kcft>7m%zP}hq)kYVJbajXk?ATYnF2!s5$AYz3Tk*LYQ^JZh> zIwJ0q_IiGBF8=2umUksMl2a+vncL!0|9dvs&~(szEKNkbZY}}CsO)OBysCQD0!c_Z z7s>PA)wFQGmOo12=2ZO)(Q64aXs%nlt`Be}7xmUHW)R>@(LeHtm%9|X4icbRl%UOQ zU)Brk|NF;+v*rCXYou}d^QS*SrU9i>&A(C%9g)FMydQV2IG!|~@SF$SaERKdElSU) zJ7fIu{NbDK&V*Ew!{?%MQ}nJcos5|6eiL(}{u+7QTk_!!=ONhWaHN;}_#srmbC}%U zEwe8T%X}{#0pTx6xF|P0*^T9RHfH1M2FmQdbOIpM`&LFI*_HufKLVKC4&*0pZDy&( zz@cAE{fl-fTcZD5UwtRPV2keYw^acerv`p!)I$3hK^j~Oy za2z@`cT_Hve=pp1CHY1ZQ}5}p={s{WQ&%GJ3@t7e1GTvcA8-ZTE6R`&QupCe<*Koz z%i1@QdyM~qywIVms^UTvb|PAruY*qy2B%#JZ}Gllz{d%a|1Hi7HD79MJtc|E7x+g? zAm~gmc$3@zVlc+y-=Hs1NKN(+-#|q7{~79W7zZxALhkY+9p|T{1X0yE0267U*ca+U zUU;mnl^HOPp2@(F$AkkEH%l%?=(8$A&&(J?~Y@jH`4LX&bY3k`Rc-(s1&!Xz{R z*c=@f?pZtWU|4;v!_p*(9&^?LOoMKjVKzWNa88RuK9Qc+H|-HbvE!~uE98GkoqCIh zO9JQxoN-;M5K&x`V40%6Uw0YMxsePeAXFz%`#Hw34HPuNv4X&^851~^@}{oU=cbOb z)*{%ajn;wroS{tz7#3!!J=XDRIGHZW7DHnANR zf=E6*#Hvmjn#!L~=&sxla}4y3aU~pKPzY2z09>Hsu|^{rhvHwTeOQE(8yAG;ya>Z* ztg`7>pP}V&SiuzC!12?mhUm~b=CG38WwoawK+RyQk z_2S>oeh;c|etgB(q^qI6|Aebmd5WFhfnGzp<4{* zaIGZ6c4t0d&%9hk=$>30uBsn_zT!hK`|WyM;OPB{gR-`-8X`S?sm9iV|MO(c;lRiR zH4Ea}d-rR+wYc!qyeg@&Kf-4aUf5FTQ8)3*%ptV1<~Psg#zqg0AK`#2n5RnUWXq-{ z@q|cpPqJaQYAP!rl6APgDo|y^jg{NwpLEuEwC|VYjSKyW9L7@%e-xYh=Q{YDIc$wY z#8C0A1g-+8dSst}t@@!8^>~>%O*CG>*6hd8T5V@&vRRGC5wL2oP5mOaAi2O>ua%+KMGctDeuGsl0y7w0%tAU&cd>ev)Z0~zw!|#0+s_BHD&p%CWTtY zE?TwSNFgynFy72MS$C99>jv-YPvM%F^?=JK7cai5b3y}WKc?E(7^Hm2xSDcOD!pp< z&K_{?hm15Iytoa1Po$&4$-oNRCie#9-4V2(a1Y)ouSh9))lpDRO$NZ-`T$>C!$?3s&w2t0e;29=~<|H_#V{Bz_r$+)<71^+@glhbA zPCIqDp}F7Q?AHw)45CFxCa`*iraY%rGQyH}#RF!Eoak*Regl#Ek8a%|i-=pM%5%c}#{OBPYvhv6N)BJ&I z9-DWblU&PbpfzJ7wmk!9-)G{mcu=3{&$}PHu*}Z%^+n7M_qD31F)k=%V3>$5M*CFy zUl&s(yL#9S7mJW5^nzvRyL``QqAI-6K+4(`MFqS))+zStyJI}pAA0#Titr=}TU|l; z{YmlDai79$ZByyPovAONDaM-{bWQ)}^Sz$$Ppk1Wy?E#^VWiuTE2(dpi7K*9CAiLz zz48@N>>=z&a~gf&$1qmNd8m>&!6SP1^J1aUZ9mw<-7WtZ`2kPuU1Do%>k&u9jY+mX zxfu8rNs>U3J4IZ_IQ&p@;$_hDk99AsQg7anTIM{l`*Cs5hrp~d3X5-;yBwJtQGRBk z6Bg@tc`UaMZwR^buo-#a6UaGw#RwXUt~FDWXb$#yg`O52Ho(o32EbP=`0M@sG7YMJ z{QKqlyObxZ#3tgMbgB!ppeFtBROVk%LQkg1k0Rp0Fx4(%j@Q)ivkBcu#F!pU`qr(Z z5$mLLz9Siqr-&OJ|Hn|w0awN@U@=;y=KukIQV39X6{lUoc~3&(9SYe`&1e+6 zMMyiBeKYbJUIq+b_O!la4PD9piRKVV0LmFs1sAI#|JUcJs!}l-HFaXPLK< zlBgAnn;(3G2}Ok$8vGCVgb#lUgd7WXG8UZc7=+Tkh+lxJ%YEjL>cY7&l-e#`Zu}Zr zXV|$*X-E}gaHm>6?b@i}P8D5r9>CWl!>=}JM$5OD2YL%|B_v!-s161t;Y3x6TTY-Z zc8rN9D=-}94N~XOIDj5H8dvn;WQtoV+bu$#|uF z4!nYUI}?4X&GJLkzdJjkU0*qb4xkUIs9V#hfx9&34>35j%bctW(BUOFI;MnDk(v;N z393~!G(pQckTZ)Bru?=@-(3P18`89BaQ-bChbmzmzJ!nhK?P4T%iLum7x?#}I8orw zCEKS$x#e8R%Y@@BkJZMIxY~t09y@cXoWL+2<9pxj+}{sMy%?D*(?B;3q*e^v~Ah&m_x-G#^qgwISS2)!E z)slqd#tYq;4zoC!cN2U*89vZO_~;A2`^_1IXKoK}cchMaS%2acj^?F7EP(|=%>so; z{J5(cE^m_IhT!}cDn3}b|8CUM-Eqn3;gSpY<&OB}1y4w`2{SAI%4Ku9Iq$OPA?k!= znxh4;H0&uLI%NSdlJFOhvNqdlP>=5bZ!jP_Tr zrQjh5n!RrZ8h-Xk17y!x^!O{Yz+O2Oq4NxQFk&RzT4SMWoGft-<)QK6BLC?(%ICYV2);5o@_R5mW6 z&c|Qw-DZ@|TZ%?ab1=~5hE`sr^?iZZ=?sYCh~q&&`35^IzvRf*u+ri)l6plO7ehcq z?vD+_W9$q@5>r{Miif7zX?R9nI#IAWa|R{>M{B^mFD5L1%}|p{J_;H8me7;ufPKyx zy8>GAt_QM580gO+xGczJZcs>%-fUaYj!qEEc6*GFX1={RH7?sOv*7}Mh%!@!)z~nd zEH#NkVC`NlsH02XFMzLG(V{cx6}71Ezls>@iUCHyhb%^vUM9;N%ieUQwpYy&0{qy; z7)I;}BX#dyFeMae^KG^V_d_n4Cg10Mrsn*X61 z_rQP8nd&*53))j}na#MUpx$S-yP5}3(AEmdPNA&_@8}CG?P2ZPZ_W8Q62fcHgz!-S zf|s#Fs+Jg0=6*1M7ANWq#qMgFi-6ZW{%UI;WW*6!x4N)TmZ14QkfJ~P!g8K3I1TCj z!nXh=8d~gpZ=o8E)%bleuCX9a58qN%&=)efL2TwMQ_ z@DVw6=+PUd?=4GM+z`Z$^TgfUxueJCIe;D|!mVA6-@R|*r3SZ=+1#hm8-og@-SV4k zK=p*^o3mND1=xxI$UuzN&dZv2_a4+dzyTB_*SU7}+x1*i(KL<3+;b_7l#~MW@N(0u zC;Dbf5hXokfUUj8@%+8sD? z{N?;b9H4CSv^SjeUuITlBg`f)_;<%YL!=VOBA>4}h!E^Y{$C`*@amNofD?NY`7UB2 zYT{JS6>){pd01u@IuWH}O5e;l9dw}e4}F07U-SX}db?ePFStt`pu*)6FO!h-E0P&^ zi~lG3ZvNKS|L_K~wPF8@H+b^Y9Qy}zGalujzK+pI_po+WhP}o-kjRGEA6zHZv)rY| zxjNT1grU$hn5$WGbVSkAvek3OE}47n@dSO{{K4ESIFYbZKR{_w1&Q&y1^^oD6Vw5f zfFGe#G#F6-^q6}&DE#bok_&vll@Dtf{gxIy*em6FZzfDn{=Iew-BEa9paiKSeVRRx zsPrGfQ=3`s&bWmsHLnkyGJw?6;f|ueqk~qV`eUl~1~=}_^{nEPEkq5kHw9p97f8b~ zR~74qL#c~^mZzcna?09&ntuxIeSFwq2q;rEOkXw|uL$Vfg{|Is>WqJ_k$fZZ0)ny% zEStGk!R8)4H#BeHP1co$A%`{L_FPZD8qShl{E-5j)8ou}%KHOS5nTjcQ}+Mz#AbczcGe=3flm-?Cxp^eW6*XzK{m`V`A4 ztphfBJKO|EDXQ?T=F(MLgnp`2n?Cj~Y!C9|K=v$uZy@-F z6R2h-+sCxEKCtuZg$p~fft0khFu&_th1qk0ZZ`SIDfa^c5;6btg}Q!=rvBnnDA9)H zXW*76jABdi-Z>gRt#16f*bCIPDDjvNZSvS}{3Yo$pBtt_G?bSVPhI9uqZLYQ7>521 zpLRAUBp)@X>q_JEDZuI+9U=-aebK>%D z?{IW&=mIDCPdX_1U&a55EDGz>5%Er@apso^=a*Px%il+I-uXD88&kh+^9>h7YiUDv zK_#Rx@JJbzR6yL4xTP#b7-<6jkbwPs$!1@jh37XImU46#mQv+Qy(-SJp1eG((*NhM zANZ$K{MKvPrRK;tMy{upi4*xt9B^4Nw(aZ`y{2#n3Iooy3-IP@5iWjEP?x+C12hxv zIe$aIhj}uk0Ey&E*J_5+Ud(aCj+++v+#EU_b-B+Y>bwq`=H)(+rmiXau5K2zLRH-R z9W-{A`*mWCgkBRon1*p3GwwHQ>BQzpFig4DXdY52wp-tYe91&6cG*yG)vmgDek ztbKn;klFL<6zJFbV+8;~8~}ZD>tdhZ9mY$-!(G8x^$uDXSWEGswrHxz?ThvsQu{2-IwVbv=Kv}OMEOu zQ+%E^_5Zab!a$7xl9M2G#JxOWl20T+yQdvQNpQzeLkZUK@-`eN(8uzB<-pne;Qh^e zTwPWCSZl>5mRDmmI6w*E5D5I&UOHIBn5}KOc%%L20*~~Ol!J99* zIBrI5b{~Zz1LV3fkLCyHP0jd7^L(t3{j>)U$E%s`T*uDcnth&x7mDN(F_QBXOE$o8 zcF>=3QkKQW=%EFd>T!D4TCuKFN`*eRjUtqtoI^vIXH!vckvj_KA)4dYR3_?KqlR&z zWWFyxiXjm<5zwx6VgM3jLWD|FjHQnWc6lmn=w_Ye9MT9259*PxlbT$GS863g zt|lq@Sx<&e>5T5}We{+SbIT82VnG(k_gACJ3Qbme_Spb{uJhl21PmtXJGs+0{SKOb zZJqF3m)N9t@5aS1tIhQxZ6WM7W>d}e8sOIP{J?g7j`7_&ZtUrFqSj5mu#C&fB zoSx%Eyjr`&{vwQ)ilRi^i6+<&a%71HHT?c(yQ6H$I7X`AT*Kw`bZDn9UXGBZC2PijfT( zRlv3hzrx-SX8M+oG`v0LX~-h z;rEfMECnkvdapFrOJ+|!(rFiS<85lN?!Wh`8+|*Hoc@z=ofcvEZAoNtVnHH*Ot9(V zUCm$bvOT%PA0&qVSL>c9Ip{{9=m}j*FTD!hITc{}Eu=L5qcyHA?v-y^vX&T#TVcYq z6;+hA%lDH|Q{y@7vGLf*?Q$OH7pGnqcG}lH;j?eU$2yN{2qO(|@fK8y9dCzE(I@s- z64_)gIQEyqxJ%|QlwW61m9WGK%n&}P7C49sp%h~vd=KKtzaOZZjVW(Wq)U&ue53T1FV9pz-DeZ+ouT%oJmKgz5ucrPS>661 z+m#o1^%E=xTt(ZO7B=KvQ?e}`3pTXX4rgtKGWCdD-k{~h!1Er zx-YBo0S~4IKk^nxPmNP9wkeh1TCXP3DVMymirX->%!%D@;sn;YTz;! z;P+qp=#z9c_ZcDHLVe;of@>SEqbBYj2Jb)+W-mI&G{qWSA^PPvk98RL2}ZyYf~Rpm z`f-edY~OTqaNrGATNsxA)cF^oC$e6wch;bNv}>~YQ^%#&V6jX@b$aq9K&3$|e{HUw zz0YZAS1F&;L!bs(7CT)u$@a*WrI4@x9L#MM$`q2l7XTbsOz8aXc=gO}eRTe~dyxVz z9En}p{%Uy=5;ekdV9sSUyPbE7kVnT1K5I z+%f?wXRnX%+zc-=Xj`(oMMQAmK6CjDw4A>Ct!x^ZV~Q3H*i$k@NhGmgPHRM3gvUb* zrx*6)_vQX%x}F!@vx6)@zF~rSOzV#i+tmHM_{4zuk%$qtNsgw?w!Q zrYG{H7j!!rr?^-1^O-aahtaX3;<|t3{3dc&K!j*ae0lCJ4XXb!zY?N(y?`5pGc*x0}Q8j-Ay32QZjgRC_<8W5xgl|Jzj=&P=&!irz)ux3txGc5l z!_zIizhEuy=Q?D(`nf3V(97;47Ddx~P=d=C4ob&Pw1mf*D3z2M(}hJYO*ITuy%?YO zl+28beSW8xVC}p7l4~?c;~VIi?pJ$=^Z4sWVjOO**Ckd|zs-*a}wv+Ps1$!dsV$XO7qhiCvxs9V((+giTtT&32?R_*wee z4IfK|B1AQV^dXt4Gdn}sH_c2Y#o`flKS??QnaVdBkZqkvP!cH7X#1I6W)%tT=J0W` zy-0Z|3vY->LS@$KCpva~z#y*xv2ylDag~3n8sjaX=Z9I4tS-tIPO>Rl8ef&WFH3 zX=^%e(-kEnpTx=%@u)+G)<{U5MH*%um7Zf)%EiHc{8xs&Y3>_~<6LKe?KjT{y){uj zk*#csaDumbY6>*>n{4%X1*p)qT#c6b>ziJAe`@c_X}+ubsZcQAqkQSwYZZn5BYOy* zD#pgy(Pu=qCauXZsWaermHw`a)%mYU+}U$GJYnEfxchem`>WRv1S#3`>OEjG@3pTa&{!JLDJ!a(+uk#|1c4y|fKg$$*x&9^xWf zczy!4sahhUl0~wSp^gD~jNoIWsPHL zBuX_{K;-b(IaLn$r8dLJUHh-^z!U-Rn0xf)UW{tmxi{O9RX!9K{e2Wl9cIgQs!s_I zT-4nPHEhE^DxGm@6`M+VAt}G^8?u91WUadltsr+-v<^XaMC*UCEx2)etF}*!tUPv0Q%`%*Zpce$!xvx7LSfQNQ!nYtuZSzzo;A zX^bR*X&vb#`~*J|keHvZM=S6C2ToI{xBU9tt?Yn)&DvLSO|PE5XX5^CPQ!gh2c;$t zvQlRk>>|I`eTwy3%DvceOI&#gaP8pvHN0P)iAUwWc zgJqE+qy$Hu3rCT~4i_d{7YPapUKUX)8D;&RlWCr;r}*F_lbEeiJ+KD}F)g&gQ44Jr z^E2S)6aLb!++1BQU%o!1z9w_fWOoG8Q~_!xYA)&*GWfn(*{?p|d;%#aA|P|OvGR{CKYq-Rz}q9k zk=RNzP6Fii--d2Z*02_4oPnIKBRV7@cRwxGS}M(*--MHT>c8k{jSZ)BpT)?`k$fuK zap}1_+_rj8_#Ot8Ziv@JDVKrJkhcjeGB0bO!Lo>y4RbIL-7`eYkz=l7wwgf9X;9@IpzuEjbRk92D_V=4=BSid?MiAU1`U8KAu=8}0^|n2J3dev>`t5hQv{tf6q` zQ!(7Fz!6|jMy>mBWSDC@UKEU2N|&s}Q9}5yJ~3U&s-!gOfi-jTeznC*EuZrQVW@IO zS*f67ftp)dAGy%=?5S2lC*L&hRdkYy0hyATG(zvG~(mMhpnRA+1ziA z2Lj#ZaqpTayFA6-#1Ae#Q%xUGANUF0euN5;(m`9pOCQ}y`~Cn9Qni~i+iH7X1=V%1 zUiGb7q^e3O+2!S9psMUv%|0|aQQaa|bq;8t`_;dJH|o)8yK8Vxc-hn5f86N_qR_9V zsT_7Z+>gmZN5(TU;j*%BD)|Q9~^hUR?2;=HJ}VuQHtr@ zZMYz~khgNR_xO?p{%cB0wU^Ukda;x|a$lFn|NU6(fv(p9PBL0&w6UrEst)c$&sKEj zN@0Zb)8^;Pe7uami<9#AGA{28gfPAr49QNvP#^lvl#^X@byI|zXnq zl4|Ae`&&PPic0TQOC~L@msx5=<$n+@&&b;7=90+oo#!dO|AP!Igki8$NcMGNVze6d{awp8^K|t3xyGJ(}*2G<`Zyc8&Ow`GBPkUQ#b-wuYCJ|)8 zy>cYO^$f06s2+3ZHAkMup)(M%M?+LYZfHMAfsJnw@kgZg^;%{x`HNH^Xd|vNpnHtGB(N!*FDKd|x6GL0k=jCnHPrU~Wk* zPla+as`~?St6)RV_jI<5yceL94yQD-q0Lhs1AI$paarZyl&rcRxLw>OsRT*jap4lC zp+mLHQ+2r{>w(E~L=3pe+*>eJw=W&y3 z;bgD%NZE3OU~1#-0!DVcCSg;CCr14)N{(fPeQ$jt#1 zwG60Fk$ig~9dBgAjcoc(J_l9ky`zdg8yT-dz?N@8ZsxE83CyRC3|DK#b^U#3+%3#e zIU_}{HYdgUn#(F;M5?R7c?ADk!_NZ?cc{4fu!#ACfiZX(p1~V&qP4T=$QKt6*}CuB z!DcuX;&0r2;V(M8om3Cn5B@G*p}tUP+LA!P;vC}RK>i~sVkuC^r3h!%NHn+nJ!QGz zER8o1GB=N|H8xVhzhF+lxqxg(7d&GH-?jDh)Tcd`{i#gKngvhL`KCQNhgmLt~i*so>i8?Ik#Q`r7Q=%%9dz zRgnYlt35C0+IQMAMrFa2tpQwt`fgBD7O|{!=^>tm8~9Vg~v3)xHKrF&)Pk%jAX= z$$%p(C*84U!)m-7d)@B;Ef5Y>KHdI+E;bOb}b&ftBb42_c zIZaUhX=QBY2%~Ejo7BS~y!biU(_R_f9}91<-ZZh=5Ci>uUHQQg)JEOI8)>B(8lUM} z!V%Fgw-pdqmtpaoWnJl!P~>lD@?X_66F7%iODATlsbtJU#kouNIQop^^80zrK}#`5 z=y2GNXVm;7Y0Un3HH14WAtTsxi(luw;X|FOWj?xdF4l>|Y}+LM$3eFeT*I?pVUcK-#N`!65?~1OM&CA`2FzMd(IuF zLi+)%&d&?#Ex?EYOXlR%4a2hzU!l#Gx6rrdVF&CxGRxhE#+(B0`Wo4MVKg;Dc_IfwnNW$ z{a4GA>xO@rA6e?_8s`hQ+t(!loSC^<^_sNyoXnqR z8;zeKW(mF!?*-P}!&>it)@h9N0;jR(Xt9u4>oI^LbH zx0{i@&-#n3={xx!33U^23|NL1V<<}^f@OioV}Hh7qaN=lK2`n9TaB8uwLy#RMEX0P<*r^$I-685z-krjBt5 zn*aD)r6FboCh{#d+=rq3Xq4g>i#a5y=jrU<^ZqbI7A!>51Ni*YDtrsCLr_P_=P zdNt2f{ida6O0Hq;+T5{PMjDW_xjd1RLLsjT@Y!%PrM>`g*)8C4K{mZx_at$)Fje5# zrB)C;(@xHLVZ5n{eLvYkmjue?*o+_=B>1&h5NF4lZ(8N1)SL zM_5D9f;GZ0*M!WK0I{-gl=e3dKi|2|o!1w^sRjs0B|qu MhX$I}8un5D2W#Z^od5s; literal 0 HcmV?d00001 From 1d5e21d137a6760c09f7be1b8451b66d8995b9f4 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 31 Jul 2019 19:35:27 -0500 Subject: [PATCH 051/115] 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 052/115] 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 zOH#X@|F^xe{ssM-cz{(az=957otj5R@OK~$%UnC_OrYVy;b#$%;Wa5=>a!>o{;2#w zL`HtUSCC(OSI&0_SI%}bP!x1RW^oCLFT49ig@rG`H|+^bx)6vnRr5EB1w$=c`Ylg|_zg6Ohc3lD^Bw8Sq|Cuh{<0 zs3`@Y;?gXCHt+iU)TFQ0Ze~TMK}T1&TIBU>P+OQ)HW^%JXa#*XaPgHQHpR!`*y^sZ zLh&|67iICb0udq^NsI!SUVQGX&*jsA1^P9G1?D5-;p1m94HMW7%^qHVBA;#cZJ7RT z`jmiCD#M0C2v96BDvdN6VsRuurHF z!St(`e%f_7zpX|n|GFm)Sk4=dWJ{RL*Ew6++P>!`?#Px17k~ZY#Yuso{X6HC;0Fj_ z^BymZ0j4~v6ZjOy(*E85&J?n!SK*S3B99WZvn)d0`HhgI>(=i(8Zx5EXs%3o{M7h3 zb;9HN&~%MG3BY>Cy$lu0usmW=o_aS|`$O0mG_?qo%%QVpLU>Wx{Yl>*+>LMorvDz7 z3m)W?Wx8MAQPC@FX(hSdze357h?c;EeEJ{UOFWRslzArDR5pNt_&H!}XJ>RvRo|kT z2_>}d-iW)HhcuziRaIG;V$uK6_ud0oMcOVSAagM3OJGXkw8qI-%!p#rt;qyEy578b z(@gFGWgkrDkoq3L(^ldhgL1Z!;@Angtto40gmm8+#4TvA%^cU-ptEvT+}jzC^K68n zAKnT+c%KMigoX|G{uI7-Z;m*aEBa+S#r)g*(%}`T2#5T#93q3X24M+>0*3Q;<6>-j zIurm+h{)8E5B^+VMVs4{{-(_RT&*J^__T)eji7~IsctPMzsEuQvH9=CByhXChWMr! zGeJD_0z8iN25!_9X`m((9wTFwQg9QdZS(^ru6Yx7rPuVS8WK?daTE55l*o;umxo1u zELZ@hpsATCi5oTmaL`uU$F^Wp=XKb2CAgA8MTh2pmgqn8!!DQn$@k4;K5`sRiF=b@H70v7UZ)$| z=do82;*{y`e=77FG+0tf2VED&94mG#er(Rjx3p$V`jA1KJpXR`;AaG ze*P1ws8^!O%GhW>(UgYqPNh6-P~GGMxCPE$!*QsfptnE+_SxAUw%U+VuGz-(rapar z$>wYWvPU^%5S(d&RodFy8xNSq2ni0*M4*5NYcLjZZS9#%3Nj$n>HtwCn?*m-D`CG^ zV9nZ-*i2oIZ$QuPt$LgVXb3oOpcHRa3;$R{C#}AzT6wq(G&kX$8X!8BKA7cA1R@#9_RpB2aOBsAdo-U-esU9qTNY(Kl@)7W(4h2Bdl;_h z5HFe-@{3bZ3C3s8qD%x6j4VmU zwJ@HU8fa)d+5hYwmzdbFNRv~3P*cP0>fw=7R)(RkuRjZ#T<+cqT7zRu#9{HA+i@`h z(9Pf&&sD;J6O+)@B>`;WZ}UEaR6aK}$glyyNQEynI`;#xWOzpsfn(BIhjXKYmmnR!m|QCCo@P z^m~Vfj&7g0FY{tl7}@dTy~UnH@(f~_0{_Y&gLC;L(<4ob>d!`koV2vGSiI>li+x_pl{2>sFfuCPc&R9TOZs-$Q7WnmLPX*e+uA!~>AA&df!jmMI|eXdU;7KU1cj)bos za1-;&9sp0W`|#s!<;ATI@G`XyO{f+3`v%B09e1rQm6I)Wo>YX8QvFry`;*7J?ieaq zpQ4N{D)2k!u1;SuN!!36Ap68V>m+EXtBzmfsF<>cKR|SUtCSYJFWSPZluEedjRsTe zyr^;LP~?F<bVeO_T2)V$blPekD-z}+ihPj#-(gIgT&PBF38W$&2h<( zon_^(?9|ul+g|2sEW_W38^mGGd(&(f5E_M4I>4!6M@pW%9T18I<)aEf1e6Rgk6q-R z&$9%(w@3jB+wk#bssn(HGtl_M^LD@X7*KK*vw}(=Y*MY!zEvy&Z zj^ub|BG-|N;F=I9(RKyqEGGwdZ>O#4<BgpJrpBpyK z(|bm}I@UqM2uin#h66skrDj2kx9?YsNf_wq#X%J^ja*VD`s{@?^18V>ult^s-r5rA z{p&O&cxeQ#i`Q)j&+jORJT+X&m9AgyAFZPyaOK$}@D)Kw?URt1Ti@KwVHytkp|QGU z=T&+pZlC$}4j5Ju#Bd>m_JQ4l1H|5n5YKD#C5JYPu*tWYd4xirUDBun?k)tMBO|T= zO9*RuqfObpLKZ3MYahE{+ly-E+ycLSASgwHyhhj|fELQPgD#g$e!$*ahi!NbfU-YE zaM)W!2Jb{7NcjoCkqpEANiD=uw~V+qU(dmWIKJbz;XyKA*icj?<8yks)ZSR`wFUZJ z96x%JOEGW3vF~U-YuXF6FK`O-=>GisvTOg%T!oPQOgP_A_#J*sFO zHJ!M*8}hrTgrtTmw!TOB;FnqCp4OlqmC|khqeH9wHosS_%6rIw6L>#3WB0*g5b~l= zojzR2E1hK15!{cH3t&fUcM;VHGH4Z2MOcZ(%Q69kj(Eu-d664{j*-Z?A3?Ob8G0;XvL7xfZfA`83)c*&WJIF$RZ|*J&A&uaNc)*rV0@&Gb{ffKQ(-5#!pw zrIK}TU$oXAEXd({06>8p#;~jx%om*^rgre5;E-BqqLr4<(qWw{evD~<-ivgje+Cmm zNA%(|*bgILtU!9&;brb!q>WB401(S7;Ve%iMo5hD=3S@sJ&Zw%1HhDOx!>`Uc|tx> zE(7Pa4BIV#51P8bKlcJ(Ns#Tg~AELzz+krkS~>8n#i zSi0)uVYO`S_uBs@Q=kZiG-g(Zxwj*t9%D@}Lv@5FPdNboY zXo>CP+j@DpnX-iN;-ggk`K0dgAphYqm|^_%o`u^X;w2(8*#CMy#~q%lkvvWyzxxlc zbw_u^JsmzB;3ljLXT67*=#Ry@)4kj^WDgdj_-*tDQ2@BePxmK|6}uiJQeb<7+U)Z@nO6R24pZ22(N}Wn>=7Ft5M-|g?^b98j3vPh4calBB8f%>m3ee&l@tZ zun@*b^P{0Lhv6n#G$+J~lZ3uGQ8;^{EI|j+4|o7^Vd;}2k;^Z1*Ilyb<|nY8MZ0zP z1iH7}AOss(TrAf$H$T2U&3M$i13QenERpOPXi}CyDY57XJ;<*_AIF@X&_u7QwG2iX zwnacoJylJpa1-7cP*3-}v3A}qtEGaFoBppBzy{#yg7i;lOOFqi@?#%*E-`59LqS+s z;t#hitGz`TE%r*FE)B5@q0Mv@l?lV;(>^Qo*NaKuk!6J!{@i*eOcTp z5$@*`fu$8E9w9PMaPm$B>ScXT)_M>j#l^+1Z-W+nFBcF)?+v$G3ehG2{1v^-02uff z%u_-TzP>Sq1f-BPVP`y?6|Bxu2Z!QsAz?CM(()A%~;p1dilE-6w-BBAl z0tBuY8p)Az-p)(J#K|~pzGa3igP0e2ISnv0aCKx1JnNXnEcA87FXf**a?OInM;aP2 zgaE|fA%V}#p`be&vFO4wXpLgB^Ci*fdV*(F)6$suRqk|EaSeRW)f-QG8LohfiU1a!5M1;5>*IP5X+e%U2;+?Vff^4H zF5d$*z}H-ed6L}UGCN2zrmo1x?_VFbpRRZ=Wdx|E9Q7R}VeN!sQ$Zkx4=euvG#&AX z9H!iSdGZA=QSLTsTRKko4_d*`k6MJ4D+>DF9X6gifi`pzuioK6&=qMomc`HBo`7uE zZ{xpD_Ca>ObnRuxF$O_K{d;-&NQjB3=+gC|M>|7>KA1XM^l_`qMDFJqYAg=S`40-A zk+mBaCKh#ZM$pW(mpw-USxG0j)4GsWu(?5HrJ_~sf_sV)c5g0;V#vy?4{*;1&p`mH z1T=sO>4Ag7YN#=!SkZbiVu!!rUj%GTlGcic4S;oHBt=mc=u z>{TjmY!8i%jZHh~;tv5yMS4tI8yh$pazB_a8UXae@bFJ?l6tuRC;1BKzvea}@XY^5 z9yj$VoIUKJ{~#-SzWgOB3KO%aL2PtSU>jhJuAO}!^Sg$|= zAACij7K-;Otf;V*rTc64(hk8qiJFdy37<2sf$2F%Tv2hc$-f>}?PuspG`8EjyRs=) zyIWhs@E6n7MJLEwR0S_>V{0oRD=VA2Rgf5vkU${x^qnLt4!1LJZKAb=BsKu%CfOG-|2P$Ry(y1H6r;N^fTF!O#v_J2M-E_kjEA7f^+(`h1kKXq>-O&U)_c{#Jb zT=Z4$5cr6x_{1|GiYZ0$vye`~q7(Cs_`G%(yrK|VfAohPpi~{cN4VBgc@iu~@#0x1 zrvXynY;@F(>Kki>S-_A1?amvqtmx@xUvG_r#wp+-N5;o<6@60Y->|SKf{{45emWwb z`(I=rFNAImrtPNisx7>@D~#RR-u?rC*2v5ZDg=D82;BS#e=Y57H3m0m^t1i#ZBau* za6`#uNju<_Q`~N2!$8uC&0(Gwd>N9kqV#|N zj;QDRS3?k@Q@6ulFoE3={Is}3!a>p5 znQdb*P4-m3=sROdb#=9KIW4%Y*!L-ZHOqTH6DKk**a7?r z*@~dn3fFJZJCY8xB?52j_lU*M$ERdySaGe+GlBaIIhcgyQ`BjI0i6B5f&!rypyGff zdkVC5Sl|G!OzKuzV3dQvMk;a+P_SAJ?o6|Nl+!|&kD>(GGc;l{0UBy*&-q$GFG=lc zmSjm;+3>>R;!*fvpu-abm&8(})!ov+l{Gsu@;N=7>|S*Hd?3I9`3#cpJ~1`bXYW#t zarP_kzTgvRvyF}R#fSgt8ajO}CQ$usdASYh>gXUh?R6v0?GasFAE6^7f~C$XFULHS z0g3XlGn2SpFXdA|u(f+vkVN+Q3JBRvUK|~v>Wp|9g|g+=;1_z5h(a0T?)xBk84Ohk zH~`!aw*32?w8VMiCj?pNE0Papj8+jOKa0*|c7HkR;bmZ8kj^aW!Ud68 zw1h1-USa(VW4M-REH3`gvI!Pqn}xzpFI@8c#&>aIcWek0M>z-|cmt~d8LXd(uHbSy z@K+F1Pq+MHPd=QVPlEuFM?ukY7qCFEN3Yt36aRs5pbzwqaK!{*y-jPkc-4-R2gIwU zj~yKyrvM#L4M5Ke?WL3r4Rdm^mtnCyf>+=$z>feZfy6rV24j$KU>dwgWR=~r2zS9HeqP@;})s-*+?5C=#s&*8ULREUN58Fv3ZX7BNTeYc};Tuvp z%Ks$FCt)zYdxWW(nQdJ>0n#odx?JI-ty!eZrHF-G_~D6siiofPlbC{}kqG+^Z}GYU z8~Nhd*2+itB{(}%NsC8WJsl)9yr~$wRHDPH)x*?ri4}jO688Dkb0T-ExS3Hp;82@Y zSvhtzo1NGUEQzm{+Na~AQ=L8FL*O6k=H^qAK?~*DK>3hfF0dbP-(p4%jM?T6g7N4_ zLWo^M+w=tj=-WQt!h?@z1c+;k~yua@J->*WOGe={~iHM%zj1 zi!5`oOpr8%M+A^TUq{7{f1%H>?fLM~wio&Vl*`V`Ls3^(x3adzcDa0Yj{q>LO1U8> zcXR{s>B&h|aWOsIQGzdJIXUkSe{jjZTn%n+7INMhe+$ff=p$IQxP$~18_F?Zui`)0 zd3kyHLJkEAX^0Rtb@lD+((-bJOIfPldtbim(BX~FNoep2=ZKj1QH8Ox>}1($VRGi& zCj|W(MY(=GMw|9@2Jz>Ism%E%TH)a>PZClO7GII|d!^m{r&WaK#pm5_eN#f`kZ%3T zqR9gH%dy{igjDKwKg`E>nTI-`Y~~bz2MP%j$jyMfp$bi z`=ZFDJS2EN=*U7Kfa3lG2q@QMZL+tOx_hr(dOl2pu*VnxchG`teLeerCv^}11Ov+5 zTa?&MKLfCEQL{4hMA67VBe*qGBiPT7#SIM&Q{RM6?t}ZJavs*-*EiNZ`az6YSlBRD zLLZzRNfRae%De42;NBwxN&80^;Y*T`KRT)c=V7UT49v!(xeD#>?5rRY2?j*oQ8tO- zx0-!EMT6x73rC?#VlJDRfhAI{n@}DG_KWD_cd+t9PpqOZb!$ZWJZDfCGrVoWGrZoa zqZevU8G>_8)3V$xG<0T2RiZ_VlElqQF|dC`3Y8qKUY@#FEMKyLs)pF3Z$ZubICnx? z$RT79vMr%+Kl~f<3KTP*KmcKHg$)U%-rpn&t3rCS>6aKEkCYTIr)*u&*r->PD3Pfv z0+>|)`se$X1r6piVRjfQR3kk*bRJ=zC@Aw+q{tG{wg}gAg;<}?|LumLeA`gQ6PVCd zSIpS#5r$O@%#su5@v`pQWc#M+q&fQ%qJ2(e-!<~$V+yI?E7-!28@(EKGK8< zR@QV+eM@w^H9oFxV+yZb;*AP)w6Vc4L%j!;VVOhz7A71=g0EeN1ZAE+2UMiKT)MzZ z$Ci8UMZa77QvC*knDeH(&Byr!H&JO3#uwWseJoS{h9HQK;y_|$D;<5^qdXJfkA?UF zNn&BmZ~X0h#CAHg#gdfl`H7tTK$psNISIcPeWJVu^LOiXp05{&#^_#m?cbC|2jM^- zA3jPh^qo=CNChD+hACc~Ls&68S!X9BO{o*#|1osod55xHU%f=Vwf>sC)l;}<->Ptp zHol_6HP=XGE++EQxXVi+dNZMZH?r^Z|D#pXZ#iYcCT=f;f{i=1d&RFOT&sj9Y>Hh*FU0vqf7PR) z4>Nwbb5`$X8lTaxz;-b?bA6@+u_leA#+8H+f0)FaSr-}PkVS$%Hl2hlRksW?O?I2s;KwrQ6vzFl|JlizaI{NRwavz?6LqX z?)IYl{PDrbKkDOWcSfqI&IJEljV_n?pxJTt-Eb-+Zg*<9B^D7O zthu?l&Q+pF=k-&A3*>99-qSY>d#~BVi#`!K8XYGS&x33*Cl^;3$b~Ee@(x6n7;v(o z4!a=T|G}$NSMw>wa!-cX?sXMiL*+B!yMI{cUZ4=5jaK+thLf9nB|pWXZL!JQcRNba zq3fIhSQ8;vN1b8L8f+l z2ccmE=!t#LgW5cOl*i_*g?WgxAVs+k(yGx#!(gIO7x;}m`E?MyMZAT^bC9T>u)fDS z2pkft0rdS=uJVCeOZIYPFb(Ytyoivf6Z8Mq@&2Rp{7>ae)T#M@g^&M}V`DhcZ}H z@L~VG$14@Uz^nafMQjs{h^oK_P8iqyOR=t}SNb)vNh2lx@2!w&&Oj8p*a_excm9s` z{2gVBnCfmT$j)x_por_Ms;RMYFAW5VCE{q3w#agFzu(4tCe&zU!P)xQ*5>EAhYniW z+5zm^=wb52=*=MMSGI2)f?3S_fm%pgocb#%_RiOF4%EAO;yj|)0q8C085l77 zR(HSs7Q_GHE|D|xDGsX2#DU)jN+3Yg3VhX?@gWF#w1e5pW48Vsh@Y92xTy&~0a~dV zSm#3NTtBpeL7X!!4s;RqAF7Ot&$hQ zm@+YAd@*JYSt~P7U+YS|q`^0nCD8t3l^$=-JOk_RjV&`X3(Ms0&k$bv#Z)}O74MEl z@k$r8=Vb-~$83%L9H_xOJGr^NJwH70O5$-$7y4e~HcP;;oBoNk+dg{Ewm>iEo>ND& z>A{K|w|YvxBzMG5S39+-Mv`MwdhO8K451qOjmDG>e?<>B)xE0{A|D6_^WDdGC~T~3 zgd?vdKBs{h~h2R zZLQT?NV?2Hnwxk+&~Eyd=sse9!?W$_$@FBAFDTOVZ~DvvLKx} z^0b@gx7YzW5{06{l%}q3it3b~t!;_qN{C-cTXA-_*mIyl9Y&gzTcbX0<-+wZo|urM zds#haO)~DwhU;Om&wk@N`-Fd={jW6gEcS*ZC38&P(B2mb{BHL-2Wt9(s66`M3BK{f zH?)PfR4rFT6H<>DZo1bVH8*0G><+n7Kl(C1TAgJmno+pfh=RHiWNPtloZj3F@jwRk zp5zp*=7wJSP(ieV5T{8^U_onc{{e=~pDxZzsMs+iX`-m8!@nueYmM zbprLsIaCeXQoUlfV^57YR$8{2LC@`y)wX4%ny#YKey%2WsA#_^Ya`JG4hqT_fwSTQ$k)Et>NrH7d+h2$E4Ha=a`k zWvb0|%PMLnwo+-^dTq=m-5a{Ir%UDCFWB(MFZu%8rPt>0@8x!e>!qn5Y8)1dlgp?w z6k#C~w%P_#_(fIyMJTS(+G#R!ASedW_!GAd%VIaX!YAwS3k8T9vKed*f;Yf*INxhU zAC-V88r*Dgb@h15uAl9$KK8FUY)Jun01mZMOG!yd zb->GaC)f`4FDdE|^+Q){9`&=C_l*CBB;VMeQUEdBs$QPL+|zb470IC&KPz;cVvD-A z8mE7Y>0Z0=l?{3I4OLUb-}BgfjZxRDj?354%yuWz*L631L3A076xr|M$0tt)A37j< zNvK`bI|pX{7!Lb(%FNK)A;|v#yA*I<`SSB`zID>Z2;dc!l)MMJ92#9Xd$v7R%>(y5 zqJiPfV})`K6BJa3v3BcmUo61gkW7%N@Dc5S3V0mo30~S*TfYUneg*Lqs_jE8s@!d% zzvK=JNi(@Hs)dFWE1#%g4t!K;(dOZdx3p+w#mR6-(u&wo-Yi<_>P6gIOXc-Kb=I+9 zzpY51I^;(UGGnY!U_Et=uMn+#3?Qx^@(hZ(lI!G&tNA@P_oMg<89I+h44^-_(v8}@ z@9k+e$HzGi^%!SqrN5!-8Z<>cR==QH4VWb*Uai-B3T?-`hxCmV!7Yf3k4 z`hqZ*oOBRu4CkW#2GPb+kbbI|*l*yuWiNb23S})~F2IM1-j$YeN1h=K*oe8x{kYau zUtCc!wdKEk@mL974*iQ5NRKc>j6h@z&ew;VMq=Z&77K1XlWg{RtDpt@()NO}3nB^L z6cmb{Nml5$T%5aXF*n`)@OX*1(n*E(f(X3|oBJn&`;{YXv9&z54cfY;ezeeW8r1@w z^cg=Ais0dnf*3{Ca79Pf(Mz=bY3$~iDHpi^$>>v?v0`5v=e zCU`GnI|1^`^rc2(o=R;@DBI~5IkhO&a5Ks!m1?_^)#yUzlA8eorz|gc`h_bn z*a&2~7_gA|?J1S_Bm!izVE~wOR={}Es)A;-2UWq_3mH!?WMGcGL1(V$NKhSpE7>GO zhPTGGj8t6Ix3=V0PX)X|Ok(2G*VU#D1V*BL5jDS|lJC4;6qvA8whfePl^j@VbJC9O z+gFz-*Qsv4TjD>3;e^>$))ejMxB;&4i!xz#+J%;O&Q}bQ5JE#AXC)X-?f0+W?!>6k z30U;8*ion+KePlF(u)khItE}H`w5Pd6Xgl}^$?W7YoC!w1AGDK7de7r1FENiWW9c*G{&&un^_a1Pi{a@nPtBV#dvl_y;J&m^=9oi>dy`hm+rzn+`;L9CbN{{;C!y$>5`%L|!fL0N{JUpifr!$n zH`W+&9Tgb_!&zdmhPX1Nh7_>eA*BofFAdy#RPlU3rg{|n*%sFck~+Z`c4#K&4otCH zc6{rPW5NYp46oZ5y@dq@XUX5~pkDe=>2yn)z}N+r9Cuzf@95t!zkWULQUet$()tJ> znLh@}@t+1k7H;qUggx^ZyKgHbJ^S(g^bW7aJ-atDIFoN_z5iX%!Bq)V=h4>)L* zI2hH!^!H&DL~hqGF3!$)+ z8&}5E8?%yg+>_(#lxK^DO$srW-^&?h)+O{Spiq^<{VG-NGDrOVLBu$et>`YgBXc^_ zwa4xFiqcn*t*=Y9iAku0w4y}8G5CF9tn5(wS$tuadxLA_;%NLqMiCnPzKVGNvIxT4 zjgZGOZ1QKc-{G@IE|-L8OMVHai}Uo~qWFYU07Zu_*-)b35I zY7vXFmjdGoy~U(9|9)<{TeYCgwR^h>)B#!2?Pr)`Ne#`cq4w3ZbxABCdyaiKds6o& z>o;^<@+9L=8oJ)SM6gWITeL}aheq?g)99i3tr${T6VPj&27SWzb%4R_= z7Xh0Zm^GzdDKjYjv0%uMVd+I$a{s3Bg`ngkI{&0Fi_D}=lGQ7Z5@|Quw@Ek>lO?+} zl`P^K=pbEOf5K`;)Jcw`?OHm?p}XXe>^^IbA8b0Yznxod7Sr*Y5P{a>G!i)~(cy{9 zy_#kA?jO0NH)x#DxhJjD1tW}B3ijdZGw#7P@s768%{FPXmtozYYrsn5>EK5-_w1pk zyp{i}1yKI1#!wm?fh(DW^8DvSMyMKc;R2t!vUU9C7zV=6YSTY`RAWhzDj>UO`bE2z zPSCZ8f381!Z1$6bkAs(Bz1+_&W06%;62a+-PyNApGc}U?&V7l>q*J3pYj?c~ zbBBWpY5Yp4I& z{Wwr|F@o&Z!>3*Z^_5KcB)nF_-(gK2_?w!=B>~TX=F^tF7OIjPz1_A}t~2 zxdmlU?{{Sb3v;(PnHrKs#=oNMehD?2+^vjs-G!L62_GumWpW9?rs}v zGv6xHWLYzO^*I_Ao{~NcVI|sARf%e8RY3p<#@0@=bOd5iaa?kIT}UDsmrh)GSaAX* zyW0D09HuJAVrpN_cJ#d_FS+;l zMlSUGzp!?h(T0$<7H8z5*r|H1+FIkQvfv3f6vDO}*z|C-ODe3^Kf9kOF;PsW?wQxu zYYXBwyYLvRnl|ay-o79EE<9oce(q&9VaOSc^M!KP9_HqG(=fM^eCwa)_eEy}s>$vj zU1pgS@9kan_RxCFLiXkG4+25x&h|$pF^~A&Vg75C2H!H6|3W#x>PxiSLX$JG9|xw( z?j-$)mTPOfJ<)W5x`W9wZb^}LX5!g3^`xQ>1j!C+8L{m5uk^pc%XuRZdIYo<_HJra zHDMi3|JHpT+2Y@EVfms=xtpPVJNjf!vv_ zBMeV!r+8Y+4BTY#av%uHooJvMC!e)#np*uBWOi!Cs*`q7+(Tg&_;_@zmN??bQQ9kA zMfUeO+ce@&M9DDw1wXp(9+&O0?`l*L@BDOM?Nh&SAEl{Df+0x^j5-#C<*8DP5KRI` zBN-EY7%y5%6LRNGHyrexTqybT)aIW9w~nbGe^QhJ0p_*T|(;1TG)U!WcFlCy}=ul@CHvWkDQf^eUhzA$@mP$|$LE8oy~ zq=!|G`wt=~%9@_Bi)Nu=!Z4U~7H;-2n{9&{$7Sc;#cEcD+%=>4e1}aPKmTsN4hy;* zsINgK$dobZx*TNbBNC3jqZqkr*yh99kquS%<1M+4co%l()bvWCy|@(qVh;}wxi#i^ zf!^(zVa7y5@b*@&reN0eUgmWX8g`Al`4fexqNRl+m$~2<`BVCQ4WS>CL8$RE{UggK zVVtxnkp+$dR|-bi`nu3J43V_6(Max%Vcj z&D{NZA`!E3GTGEAO5aJeN$>Ccd+jqJ(j3RhGG+tl)x=uueB1731{s976&B&l+SbrMS2hzCq# z{$VL4KF^x?zc|gUrC?R!ebZ&0%>XAo!&n7w$Z?RZ&{gZnV;U1;JW8Q#5~@h8LsD2^ zBrj2qK3!{H|Ie~?O|CbIhW5yV>tEj35@}0MoZodavdb78Od#hl;MTqhO5AY&sOVa{?geNdYiv)O3Zz@%TUlxxY;$vSr2=pPfq!0; z+mdVX`8C3oBa8HJ|LDGXLq|tPL@hQp!QD_-t`~u9S}Y`zOefal5RRK=gpblkjfG0C zewD0!bXO-7IS+}LH8pc~#d&Q?a}xm*A9&c6Y(i9EG6G!`D5tjGOhge~Ahry)Bnox8 z8`U@cbwcR4;UAZ)=x zW#bgB$vgA3)>nx`zcE?x`{)E&1*i^RS>kC9V6smERSn$sVqn~1@C#7>Ln$o0ROua^ zZ>_TujRWm;7H)A;RXiqh|FJ^n@y}l_E&jmHp5@RG`oS ziXHa*K3*I&3OECQv^q8<{2gXLcQnCyCPV;s5WKQvsHw40pb=Q}>4!~W?@!O&AJ=F- zPbV~w3-lX~HcBeKdC$(Nma}Zj zEiqIm5WVJ)wC*T~bv~O4n!RoVh#!cwOZs6WrDXGxJoq`#eVs4!?Y)$=tN9XxkuEqB z6fGSzx)n1)fxSFXs~%AMk`#4d)-}=kA-MO}vVdW_Jo9|^#Bp3`V#n%&{KL55b}oaV z{?LaPCH8Vpa>%eae%re~FP$y-^FY&=1@vQxhEA>Wr6XVzX9H2tpXht^AXELk--H(- zzn{XLV7I5ygNJLtSc|?>jVwp6Bz#%_9KVtsw+U~iiO`%9?7_C5T(+R?!f(%GlV=pq z8`=b49}>1)br|;c_JaR*!~P(b#)l7a?b`xN41q*OMgr~bTg``2%@#DUid(&XLGFJs zAP|gJP^W;gx@>GVwX{%mDlR$3KB6E34my zB>~TBd^=v#cS}SoRCeN9+&3Ccq883p+|u%R2D((44m|q`DjKq^iGhelNke19?VgT> zr3;+Wo-SOtO#lrmb`5~E2J;nf0Mb*;Ey^k|C^4`6D!-UM#{Ytmz{Bld0Z?ETE8deH zbxlKuWiJEJn)Ykvocfq*L#;T!c`SN8gLa6Z5$#E(v(>yEAVc zQfofU3$&1`qlU5<>l+&6QnTUIh0U(UOaG#Z9yPv~%iA3&KX1j@(~~k7UtjxIC=?x8 znksqPM366ePK|@5Fl#~cqSSzRVwFZWabxIv{TQ#WXturCZ>l9t9PPA$3ySztQwwFT zk4Q%=WL9eBc7M)Rn@ulHGEL4IrOym=uiYbw73N-jo&QpfCZ{8LIFq0FPUr>>c|`f$x7Xj12VvL>^0&;_z$U!$U;OhNWbM^8lsYCG_g zs}4w0MZ{i0P}S%5`A(CE+DR*Jgdbl%+O|JSO}b}E`n7ut39$8ZfebnL5R6HBAVRn^ z{DnaMh0xV9(tMRAR)W33H^+sWSCH4kQ(sXa5ARs8B6B2-$H^b98kkT}P~dGEo^52b zDL(K%Av|0Nw-mUj?x!xVTR{VLO;`}E>fJ=o$3N#+Q#X=#7qu;J>qOHyne;sZcKZ&i z<}(h)nsoIeWWvaWdf(MO%5@VAa}HQa$}i1&dFUBph&XVa&h(l3>_~+r3U3y+*8eDY z)Xl((np2bX72Vr|(hP{IOU3OKFJ8UFUY6YdfI@GG|4;I~-rP%mvM{>pnd|T8w4G>> zgJ(({$3+Q_8j6U4pf_lvC!0gl`Q)w8?aYv$vIq8nST+Z@*rN8j?R06{CUf z0__+rH~7pqSEi}2gkCk26tk9At1lgt{lF1$xv6@XE9Z*4lb#bkMis!1%ol9JzD~Uv ziNdCm4Ari*Fh1KF0pioHV*Qr(yUPW1#*b!FTqk*1hwf!GVK5_Ara8NNyEn;Se-XOX zZ@Y_#TA#e1+dql?1^xL3N5_3IhWUa}qX__Ju!2PTQae zPooL+NVDK6%eue62Op~CcT0=#)vnT*AZIC9ZD#Q z9B3&ZgY|=b6_|hzC5=1uBkUVb^e~OUk`p<11zl~OPOZ*F4k1=PzHzv(7_2Ar_V6Xg zb@wH20_Ab1!nZHEANDLE0b@f?M_f-iruEfPAf6j(9>3NSbWKRo1-9$Z$sp;VW}uoh zM=IPA$hqF$+--#{O(aQw z202O4J7p!gY-SqT^O+*r_>%!fOZOec5VJvZsGF9XZpoaMpiyMPyWi}vFKG^z{Q9Zx zyG|ye)i$c^)T-qp=s}5(!qxf?Ezd~mwLFczYN026r)8grN_*ux5pAZfjK*o^vbAe$ zicQ#KP{yOKTze2<76ZgS=Ou=M{3h+s_JIy_3`nN)eD99CKyA%h7idZL58Q#TkCz~M zC?tg-qFSIJ50gz7XSwzQP1-b zlJ}P5+_b7-nTAmZ`V4ZknRB@OcrYJg>bMl7-6Cjc=-=t#u>$`e(kqmjma`v1kNqr< zC_Ll)of3rl!I8qZ$;?8E=>lF3f>%~UEoQ$+V&uE1lKJ|{ZXDddB5jB<;fux>Mrtg~ zDfB_x_C)Q^jVet$epK-Dw@otPpt7I;l+~Cnxiu=70-3ASQV4ftgid_Qx9Txw7uVW} z@Gugsrc!O~89N2=L6m)XRRo6NV2gqmdu1`z+?{^Iy;iCIQphMgI(sEPM z^2rs{7S$erq}`t3#JyfsaW2KQE~4?;#czzb^i1(e%;D6b3d`O-~5d?d1{b^@VkJ;eMd;^ zyDaTm62iL&s?>HFUwv&K8;B6m5u2cpwTcSCi0g{wFfIh{LS}))UtoI#0a6B1_#;ST zVNTM)gzMA|EDF+V6Vl?f5%CMQ?}35v*kJ2+hCmdu+0S_ z4#ltNk$XSR)=Xb>8a-%gDzIUfpz9w43DKVJM%Uyzud0L-5!JpY@h2SiNF2hF#g3SfD<270jWAAlCgtmETj zTADrQ3y-*s)*tA z!T-D5hEB|>UHn1X)$=QBR_5F13kDvT@5L@yK-^*@{K;O_e$sYgTDBIrOw>D_4f^_^ zRb~vJGxxpyZImf_Yw87;+P&|AF3qBC_5??h`d%&lWb3Tho25#{%1@dLOlfw-q5^?o zQyymcLbpd!d=7bys`_S2^`(uBv2TKxK#3-(GI`DiPAwic$TGHqFwTsRSoZEZOiSOs zCz$|jh9jncGUb>YfzB};6ej*)yX(7t%9;Wzic7In8uSrH z658$5rJ^ulhC+e8dIfs?fN|PZ-|VY!Dr*_nHaZt(@U*^uy&3O{qbq#}zdH9VApZV@ z_T~heeZB$P=V=+(JW3k&?GH7rr*C2QElC!@u=3M}mhvqX$bJDL7N+8JpYH;!kA!o~ zl8&(w$dfw~X2CiFZM{@FCmMB(m~i4M)f%w$d>$?&hrjHil{T*I zc8x`aSk~DzI!GuF$WIclP6^4H9P;c{DK@@>kqOY3Crm{clwCkr7YVFvvO_G% za4E~np)QW0K$a_@!1C8QX#L9`HZS)b+os^+BkS$58zp3Z{^XRrEx20GnIDw1zoNMs z4RATI9mS62pC&(gdw!bbVh5f4PHqe2baGkyH!XkQE)ohuPW8m( zE+E0OQb-MzaY9SeVD+AEq@bOjN1GerjrC5#SIw0zY^cxn$!RQIl(|GL4$0 z{j7Hqk9ONb2hKNYpkv1+>@<_~|6M>xA9MDwK6p2r8voV&Xz-US6Xy1X$Qgs<_VU-^ zw?J+B$E%CSFZSC9b6vw5qT@zv7-8JOD*3S803?X9BN{duJ+KY>NI+K9RAM^`|IuV4(auc%jFVTkK_wQ|pd;;ZC(00L#Y#Wl-b zXV2)NfZTR9Z9Cf!2PsMJZ$?ziu8e;y{UITwrV4F|p7>myiaypG&OrEXo+(a6Sh~V* z%pzNRJCdCHc#AHh3`sQWHm<)}+mAFEsa&Sea;zfDEU^EmU#(BFDrBOYlPov)+nm>z z2v1#>02zylZPBqdiestS@bqwEE-O2>^%BWAI)~j!Z!GSYRqCkrYb-?Fh_j0>)uOO{ z^wL1_1;P_G+(^r(gw!y^uL}2(Hg+?A8h?C7eEi{buYCSoU}e(8u?3v{4&8&q6C6(S zfPZrTB_V&L)X#vObNc4lvuEM}1tYOuD^Dgx0ZT_$Umpx6LTuk08ly35xt+@u%cO?> zW8VhW_KDh9gRl*ch9Op=v4fW?7Eudhge`OhhS#qw^& z=eD%1`ntXIBv4VjG9@C)TR?t??f0&%$TUO3AU{Kd+r|X0V~M$rWF^GmJ-TVrY~d4=C@TpL$yK9G~j(2g|kmkrdtoSFPpu7QYK^ zXk~gi^!^Jgb0ieUo%qOJvTkf9EX&~0;N^w#VYRr7xdFnjc4QsdH^qivFh7_z>IZ{! zu&}~?S(zCEoQOxAlB;tNFGF<1TmSPaAo()E#e$=B&_AedM+U$Xh}SzJIV26>djEUL zup}T0`{$~UPUgx5SnUr`N+>Kn4N&Cb+p1qZ@xTs8CeN~QfUii_vhl{h67l(nR{B3< z;|N7Yw?}j;2gKINnm7V1-`3kZW6B$9692u7N+eTPLkP*fjm=gK$~T(bI`wAjr>0sX zz6XT3Klj(9KmlQ8Jbn1Q>e{^f0!h9NsMmiFSy>A3B-FKAvl($P0>!ZC(L$QrKJR)5 zH}`9oe13)PT&Z#8gKA{6g!BIDdm~54)O2FqeDk=G>k}ywHIv(`_r~O8_x#iH+0p*~ z$R_6I`8heDrlzLep`o6%-3dguEC54jhy|;U0@os+y0Ii-9M)2x1W7dFnI{63lZToa zV`~4P#h`lewcRWR^d?Bg^`=xJY+$BW)-*8k8HGQ1jNJ%>%GKA9?w7aaE{7N?hI3+* zM--GbEHb!xx^5JmFpqMN)fj^mCHMDV8Y}r~11o@a0nKXPLGKp~oCt+|-j~xk905ZS zSD)+rY*hGqwgJEB>gK!ZV+*i~GMf0Q?-m&Y}0yUILN^6(PN;$CQY&#`NV+@*R6EAY<_!RMA5|#HNdEc>b#v zwPFKV+nC@a=ttj+4b!CMDa~>Hw)jv@dK4UHqgWf;m{HJ~#2yHvruT|S)1N3f#~uCT zMn`u+Y-#firb^U?l`&;Rj3lt%BOrzWDO-|S9Op{Y^S6^4f2^AODI}?VlU+hZ|081Tn_mP^e-}4$3z;raTP-yx z{NEFRCmE;F0Y!DZkd98;|@?mpzW%}|~44g1CU{tAvDvo%SCM4VDFNMFE~$+uOXi0M&sRbU7aE zbAIJPOMvn0Wm%qh9McXL5*yr+Xb)wZ+AqA9W7FH>N(^K1iB6e@DO<|OVGZ--mhYL- zT*xGk{4nG;XP$M%2)>(zE$)PVg64(s%s*69DxOzD8Y3k;UU?5Bk&AMDuZxMyECCXw zg=9;7DsBULO3->@Fs;6`!rj^?_Efe>IOe-?8bQku-1}h5Oin#SO`xGdCq&Fg$YnRI zrpwW}!HY^)ueMU$wNRUjH&pVD*Wp)&r;BgAs9SpM^L{Cg`B!%_x(E8YCwKd|JX%fm{eRZ^i04#yE?d0Uc z6B5YnxcU*x&XUSICieHohsP^vhFv7zq0Bi!pGT4C7ef93dD1!%MpB4*BmRpFay#0f z0C;(eH*bMRJ_+FL_zu7mxtGzN2wc^1d$=dlb-9o1o2)k&LFPj&TN&@H`0T=;vQ?xv zOw*mfZSMHpoP-7VwC=M%2mBoy@aO6spt$NvxHu9yx0)Ya2tcX(5%(E6NjJWCD6p*D zOS-#)e$kTXglvW{RmuJ}dS8$*V1ug?1~J613$3%9+28$%t16RB^nI8$Ge3nr~@~HvBh@+LMdCj7X0+; z9eZkjQc(9U&=GOAFj)W+OcU5<8T#6#M%C)NTV`%s;!YhCwvN~Ee`*0jO#cbfp+W~Q zdUj4+tarp|Mi;G%-QM9`$|ia#A0}tBe|W;_E$Ah57&fX7gDxXB3xbiEQtniV#(y==y~=c|X&9Dv*5>gxQg0>=G`}ZJ4b- zht6LMCuYh4deRMrgoJ<{B&f2QHpw!)_Fw%}xRvQ!5c1%2iKdD25&cSr-+n>6^YxYm z*rEU#WNV5;Z2OD!DZl8?P+7qXr^6@DOLl-?3I~MH1q9Wyb<0W!B-@h+!COCc41hkC zyhaF#A`IEqur=_welj!!0ace4KVz-~e!4~eIchyqd=1nvBEHq&x?v17v;)k`<^TYc z?f{nC_=BFal^%O2^%%OQMZ0P;sG@G~GXWOkOI!C!_sjbbz9 z{K71|)W<3>>@3Pt^}S?(mvSbn*vFGZ!u|&%v<9$lmAx8i9yp_|8#w0at^Pf zPg{2Oh0+HBV@En)I#0qWE^R-<8svhE+g0rJErokEV#N%xS;*8Z`cx@=9nFBUV|!+Y zqIk+6bJ5LDxLT$n+_{HSAfW{>_tQEtL)bh071P`*9)wLKjB_O?;}^(BaR=4-Y1u=B zCEtu8Ol7Zra)jOn*^232cACYSCw;a$J*|3i|2J|^Q`BQzB}=EsiM?u?Yc&iJeK+-M z)8MM>FAl<8C)XymjkeFqD+i1ac9Jko0RQS(C|E6pfZOrMQCI1-SF?jKnh;GC|=sBm3w$XO%|FCRSVtmS$dGO-O%*ck8kYm}fh(*9DoKHv= zNH=$z5K)soE2An0(6GCh z>vMeKk^@+3q#mQZg~itB_%*!^k7G%W`I(?FI^j`2VG49vce|P*yl`k03iWee3`+gr zPfi3cFW}#n;8J<-Z7e7}O&zRv0vZOxvBf*tv

    t(P%K^S}z1YMGepl8k@$aNBNV^~xkL{EP0m3DocAqwh`wAV( zkYg{;UlQ#w#?2>*Lr>39E1E#sOsm3kLM2Fy>=YHgvq+w8L(Pg`Xh%tdh*|H2J%`4~7gz341Hd+<@O z6$vB$6Q>NRlx-;SR(}R;NYP%M{XaX=via5VXSnR1SzV5N&*4<7D2{>z%p>Z+e#CZaZc2f>HlJB@JWUZ z(oxKX1mY@8OmA1>*dISYmF|Jd^1~$*>hFK5oFpt}aB*>g{!n<@wS|44>=F=t^6Zta zYzjhz@&ng!WY6v5^6~L!cE^@LkxXlP9lWOk^$9)^g##)Y%8pui^bl=a8i8aLa-wqs zU3wsK2?-?7>PBCD01s*Rz(Azq1sXlv_UWNx z&hNd>%XujAEZ-!@BrUlTN+$K~htw&25sZowcV-mxX~>Qrgb#^klHU}Z)dvcN(ogEP^ivsQpuobXJ}scdJ;a@8MSZ32_zO&ZZrq*u}A@@FWM9> z2kuPDhXEpGKE3%uAVEg~9o7{ zicPxFx0D`u9V*Yb>ewvu2|i8oDg@0*Sym~!sB1=Rn}|u z>wVomoLO>4W=uKnr;IM#+9U3mf=bMN*>AqaFd2q}=3BBA^gx4+w92e#gnZS-P>;+k zlICP`Kab9TIa!_32rMA!<7r)_v(uDDjGA0$Kd{hA;bO(3rvLAB_Wn9Z?5V3GnQuY> zKkOeM5Rfm>Y0gf?Z$)s^x~Mtd2MAq0UF?m`Chf`@$L*7&Ykxm6@q!Pa2lbCni&5)e zm!)K7F|#axA-^}kLvVLa(VrvAxmQ+b&-9!`^S!$Dih+`-v4@ZC25y)Dl~ebk))Ov5 zXAZ8jTnUf$6#YU6AB@D5!Pyr^cWrjM+cV{-lq%Qu)`h2X31z*ufEJfexmPS zRaW&2!$gt5JdDD%nDHZY$DrThXy*N|dm-XTe2j}P4$nRd?_#6hpEz`*fK6h`3%qB) zpm4Eevt=OtzVPj3IB2wZG2C>lg^s|{!O}Kfi4?_Z&(KS3~Di53P;e}P9(9`7yo=aF(@;} z(@+e9UkQM|!<#zY)$QM|ny5XA9pGaR+B0E20=$6pUypx<0Nhmgz|J+&Ky7!{+drEc zU+RjVq=hj_>6@P{x8MIftlnOq{$Ll?yrquX7lY~9Q(oO%b>DZD(7PV4WiZutHlZ;O zkR%mGiPhi(z=az?iUm4ZENF54K>ycFu0+NVa16fz*&7msrld}@DXXgH5uY62J0-%L zorEvcWoHbDrVh8gbNE*xHAUb0*{>=T^A;2z(0%ilM$>*zr@L6X{9aJ-Ig|s&82+&OY`wml4j$m_Zs++52dFs;^Q70>6yx_(;;K0+_zE51z?Y^{R+7 zjQZgLw-5-wcztAn_cht$jo@wp#{JfoGf0_Sw6W_$>+i6|3N)AmUnTE}%s!5YJ~K;p zkTkdHqlk#U;P2RsobqI6OT^Nj(Muhb@`#jm7vDw>4kv)wPa3BGg7-n3`|sVG$L0LA z^S*YnI0+@Ap98X|lFA{zNg!l9-jD$ohB!dz#l*5-(d5?xkg?IigJ>ibKUTzFiwa;> zr@XOh*8lclE7{66b=h)PkyjP+sF?k(DgFYKOD`Qw2cQ^^TZ0nP($ebLvh|#!tV*C0 zKx1AC2#~MiA9Nvv;5jP`aeTOKEIa+^0dAI`}uw5Q+Vsf*16!d0J*?8 zH|ZSYk{cdK+6J~wrjo(@0e=yvD6H6CP&W7>Mbu;rrvO z7pP+E5##gQF-wKYWS0r$+P*{Ux7Ph;TuX%d3b0^C^~8a&PxMA$zUV zpfqR1S9h}y5OWCil zwQVyUCf2%IS}OU*9fnMTFE^CHtSASK^W;{+SmcZyDOQNCMNuUb%Ecw_?>zZdd3WMu zMDCm4%xTe0{(Ydf`}z~0WLPhH1_aC5>dJk_3lvx~$niw6*g8Yov%DnPUWNrSWZ|#K z=zkRf1g`*uW(bZ*X=(JvrQ@#g<#vaXGZiMM+=&vC4F zr0!Q@JMY3c378h4=l8nxyDO!_fm*@HT7~#{STH#Kr(jMa#UElF0s6wDwMOXkGq14k z=p2ycykleA71O+s6uY6c@98RFV7qr54l}V-EOBBjwxBNq_?vmd3z1U)gh8=<^0D-p zrSAZIk)FT4s63LekKD^)_exod(y{pgiRR&#hfchva&i}q<=Y6gpouQjgnKZ(PbQrY zxR*TMlie>g+tfy%g`QuP!N+9@w3f7z7Ep}+ZO!B-o-aW~0lf<~kz5x;S;i^TS*&=Q z3Bk?a;9xhfVW3m|36SV4Lth?D9&2jqU=t7pUwwET)6b&32Ry9A2mf zRmO1v!!b|JB8oibr?rX1>?}UzsEZ^0p&u5&R+%1qOjX=QPWlxF)qXzzzauo!X9S1EOKfA*P#iF@4ldg#{GxgLP38}B%U&^tZpg33s)Wr`NQBF-Aq9x*L2Bk^$?KRg67JPrs9l>K z{oRG#c+3~p;O`CiguYlS!Ai{$vz(J?^G`6|L`Qc8!2=={iSV_AK{sl6@E|Bx70Y7C zP?|oG)kjgUZP60+{3I4<#US~`?DHI0*e*3vtT5I+ro`2MM+L}O-_iN>OSHx8)O^BP zF-#6jOU@>L9QIO9#w3I*mc@kK#(OwY@yp2{V}wpNjJxi5$BfCY5pI_6lJsWB$v+lf z0y~k~{NW7}Yd9z|LmV#l@;>t}M-&Y0{h(q%%=6nInjmZdK)gY!;s71RNpkzW)XF#c zp1d$OhO&-RL+E*&CAzA-E3n(r&JXp5&&HT36ej8#gqUqezHyMBw9EwDUn200bUyF%7(egz6oDL^tA)o{CH)Ol+oP7tcHtL*eKZ@W^Dpqv| z$MC5ARJmEsDCYYyxV#Is(Z?eOChKsnI9?ItMrr<~J?koNa5*;c&~`ea*l+%C;;iQE z>!1ae?Bv9*IH7iM4maIhZ8Rls@DM=d4rEsm+_H#08GvK}r~{D$F&}<`SWW>aOG)Nb zjVoBqX8`HT)w%g6ykqKss`7jBGqy2KmDXAg3CyUj$q&6DkQA0V8{{RLPgLmWU?qSo zqWNp>Mv~~IJ{fE9)iZO%u^s^J<#;0k^0I9RqTKLcL;>583@N<-QuP=nbI>W8UHLBn zi(W!p6WkGBNlv&3^7Vb;c!F>A_ zkyrz^4D&cqvE}etAL{Mx04Si&19t&0@_I$#iTvuEvF)*`a}?=D6Il`}0LGjP3k@Go zLq00ct{v4zCc}V1%v>jNGR+D!O*h*TeRFJ)B_&7(ygL*Sc~iNpW(6mTC>}8iNB&> z4=A$Qt|_TFnBhW;FQ3)8;Up;1#nC-HiW7KekKFWLF~rElF|p=Y3jBUkSs#wX-u7D# zvI5DVdrPp2ITjL#DeTN(Q-hq|w(qKI8HHtdil-@jqxcVXcL?w-U6`(l^$X$(`mn5p zt5+-w6G@anu~R;}yI-&E*bLICzeXGNdzw4=%m>9=nTzydRq*_72?g?o2UQW|&J!NO zLtR)b$Y@8_(J8e({Jkuoka60=`AO^G+)r4vM>!qTiq@fqQbZH``&nuoO5qAaTNG49 zC;#wX+MB-v;4Kv={)ejSuQZB2307*~DTBjVJbwltyCPCM0>;wvOP$Tz|IVdtQNAN%y=!AZ9?6bsR7Ce$0b&z3{ zr*MYd1gjhew4anz7j4@x$Wu5Icq1h_*Cs_u0Bglk#iWMqNFuHC36E|cFEC` zX=DR_+4hPoGn)GUPX0ym`4eJR zvTJ>cA!SAu4m8qusPi|$3>W!5Gx_n(62 z-7kr8zI;+_crwWA<{b-R${IH>5cy+;of^onpa?4nWy-StcKWEeM9ivI5poSsVmwdn zkJliM>QCs)B^|ev8am#kX|)p}V)ap)8kj4BMO|E772Bxp9DSZC8agkO^2)t)YFfn< zo5(U)?|JUmqg_`3gFLVeq-g$HjM&@!$gZPmEJzk<5~;2VB``Q)9Y{5M{S6fv66FpRPU=l7c=Y}=uy=TI2-srfvyatFf zxxTD*CnW6l^&4w^cz0XyqtJ>QtEz>1;fGd{`l&NKRgo;KLZs1ttc#_|1x!3)c57eU zjxnL_+SOsfm zzL_#Ss)!KYZE2!fS-MR z$Iv==DDBk>-8V-WKr)m!sGw9&BGuAHYpacs^C8Bo0_Qe_P+bn)I2cVeY;cY41r>!2 zJSr$aPGGq0#A~nieupB{ufgrY78{C&e9>wK@`ZPP+94N6#-HPtE{}m@hcAK=HwoP9 zDlpf;GyqS)KZ!e@)OVsG&2g$-4!g=(2r!4zvF?iA7481D!J7 z2Cz*n&TR%6hV0U3zh3k%s7d)3d$f0U_hrp5+5CtIdHs6-iTI|Vovp0tR(8WvkWB+> zUlJv2Lh$z?%_C~eyHwM&)JE2efB#z_5x?*Z%C{i8IAxIF&Dcj0J=d?3A&n@lVuA{y zrAxa#ObaLkH;&;Lx;tpx~^Wz^ACoGmmG!0e`Wtf z{FzSCEG7w}>29BhS^9HnSloKc+~Qd*bCan*`n5P6F>UIG4x<;m$(Y)BE054Fy#nv~ zltimmfjHAbaGk1^rfWID!eoV_X4RM_P)1>a|1@OYOq9kt9*YNOxwLE^cExKeGT@9= zf;?nLA%rA!6ORP#rBxWTU37Jqe*-8npvyZ}Z*W1tk0@X!@+*U$M2YT=!{k-(+G@(& zMnwU+x_RSX`7lZ*U`=T;b)j0hdbl$&3R8w!u7n2Ch!J&PfBE=Aj3{zG89AnVW#l6G zq{BG3L>Qt)j7Rlt^UK9n+*fT=p^0UoYhAet!g4FV%eD27FJ?8PLfXIlA)Fz9M?2c! z%sWf6VF;w-ZGgI;OF&a}fjI9STg@#*;R`k+@_v1uaGVie6IH1a-}M0Mq#Rvne9f&g z<30*&dA6Bo3Tpmu7?XqI-QTp-j7?!d70n78Gvcwr-}jsZuuBe zR+-D(E?6vnsNBFGNUlk`Z*qdp`TE@vzG5QFr4JnG0GK;q9<^1Ld|zoq)aErK+1~BM z-jNbQRj;#7TGs8_O=NM2@6u%2da3H4)1CJ;kHu>8~*Yw7Jz-iaVzW#DsttEJ^DJ-yc;dFL; z?sPV(1S2rOSQ1zG^#{*-edcS$g;;E6W>mvSRD*M70EUH)zIKl_nleU)BzX~Ch!47N zXTBR%N1v&F02X7M++AiTsv42*9dA_SqwE@Kb!OHOsN?FiL1n>i-%5dH&WpF0tL&fu zj5iKQ+p7Zd&m%=ad#wYa*lM=@MGc9IYI2Q`*j-%S#Ga3*1$d6oW81dLk!)Uhwp`aB z2lUDDY;=UqYQOY?H$tm~QoT&4rotW#VP!psFix~jcYn*i>m?-$6C=f;BoYaQO!0)y zhRdw1%KV>NfF}XlvOkxHiMl>MVl90|olde5EV`M&^5T%wc!kvwkt zgru$Wr=Ib>)ohEx!Z`>R9zkCxxn)s2FUfaEj8yC}psD$f9G~Qk_b(ocit>*~)X+B2 zs-B$;L<06OjyH|YcNv&{x45h|=c{E!w(rL&-hJ?%16h$!1u*+}%imuvZ6_v}gFhX= zwwZX^+E8-I1R)W^S=ROJFq9s%;yds2LKEpyL2s$vMfykY^t@wOUmGCsLrx}Y6Gs`1 zK#wYYyA&&Q90jBs+Z<2$|Nil!uP7Uv{X9a3-|W3d58QyIK=NW2(Jp#0mIVoBk0|Ku z8b7E5C}Pl+(8v3V+OfxlSqT&b39Iy|RD7H+tOSaLYPM7I&93Kn=j55Pz#O^cT80^) zP0oihBw?m0FWnCR%El^Fu9+~gi2zSSJoQMZQxEp*xDg{)IzF%%Y(^2k_}Ulw4+HZU zyfQ|SvNqI+=OShx+LeZvR+}v#-t*f!q3ri$6gu5X*Dgj$@39ykNB?_@w_jnzbO=Rk zDGOBDxWeYF0F_qbzpaxrJ9{++!-GKFJ(RG3n;8;}IKR7T^L<=RPqy!e(xx)8f0PzY_viv-9 zX$Ob`(JPk|(mSK6i zsq#y`8zMGEN&>YJIdG|recau_vJgdmHz5ePE{WQ~F~F<5tTCjYB=`<-xeru-qf z3rH-73@@NjeAvUMIAnn34wJfu2Vh{hX}ew$3n#MbM!xm8e7COtR|-fJGlDdl%CxzpCN zr^YbKi6X7PPC#kz_F}OQjeZXmdR-PVcQGc^bI18)OE#Cy%sl_~{nRJGd!}Nc#<#Kl zga6U`Pt!7i101pr$c-N2!_%n#>JJ-##6LhB?~^74kCGbzcWAa@U1;f;#Mc(t(@5h> zg08Uuvjwn_0?fqmHdc`vB8LDU{L{$giC5kC@95O;vDE9@ETN)G-u14d=%9~oMrhFu zkHuBp8TS^Pz&C2wE=OuiM;HJCB;I@vM&#O+(2;B4!F2LpnsO0l#mb^1LU}{**Uh6T zMZZ~HYoUY_IphA^=?yXCD^aD%V&Gz>OLN-Ya=J@zTy{@oX6=00g!mc)Q#S5-gf3&qXgMf4LD;LbNEsyPQ=QPr(&kE=#ZzkacQ}_ zIj@vv@Z9@=#c$pFL_jdl>quEUPc|7+LL2tzwbrz8_iCDP*;%LO4Z6WZZv|hA6H7EL z=H5nxjPiPsl~*44qN|id0x%)@(#>rP^|%NZbOP6U?hV-lc6%fc@-TnULE{#LWO-Pi zQBqP;#Wrt0a%n=Geb%iQRjZg}V!#w0({GrAi+VzW#e9f$A>o^6=9LbhjIuS4Y?0YEQ*Y7r9YGZa*y3 zm$zJRpPxjahdT>Iq0?ahj!!ff;t|`DlR;#ApzKZV)QH+Y#awJa&VswvnMn08RgSj` ze;)%a)$FHL;FNpqfqjQF-3)p4*~Dh{oqNV_bxWR92YHmXz5Ia>d@sMhlkCA%f4v#H z5&!Htz5hQGaaaYjTRy`@U)s{9@PIS<6zq$5k&DIWTG%kLU+k^<7BV3l7du%biCV2^ zzHqPH=hix+FrsAHHxK-3&!ZYCW0k^{qcj>Zs5&-9nb_38bIyA~12_e*mjQ$5^}I9= zczC1XQ4XIZOG;;E5pvg57cc}|e89L?#77&5C`X>Ix2jl8hVMOF1ePrzAQ=i{)&M)R zZDo(iQpffKQcwAKZ7Om;N(Q1x$O;BFDYHQbKfoC3i;F{MAd3)Q9v(iPALfAT2pDI? zc4{^Q%e8$ZmG7MPU!FA!B1NFu-wRe(Y0k0o;n06ZN;y3nZN_KL zK(9wuBB$x02mNHl0!e=X;3fH&6JF&Fz3#k|iX&#rk!%Ee?WnP#;ahHCA74k&6f@^s zhaR3%J-a`oDU04wkL}c8Yp7WXaSTeGNN;F-+jH+w@%m$kP5K*4{LAdrW0}#|iu$kx zsV8#oonDN!wzV6gCe0>mO7M+M8LVLr<6oQBX>VgU1O` z8DYPxOKeBCGo+9CtKOB}i}#^VG815hGUu&$w^EK&*CvPgIYh4hWH|6oe|%@62qGsT1m|R%cRujaD-$|qQvyJI|kbZR|83Lm&B2hx-JG1 zagrMb9xQ0ynwpe2%U-4o#D;j^vY4h8`R&freco@Yg$nMk_Sc=BpfD*q2=W(rb?J8b z1O=h;7oRubC4?I}CWUV=tfs-*xfxO=T*f9Rmf*_d_ME z+B1ewXq0Mv7$>`8tdgNcfdsgK2RC7HxZRB|4tW<)vFK-FVL64;yY~(x_rL-o{#)5r z>WN4-^O-Dr@}rUl6*KswS>t{1{J+7}20Ea<|MhmQc@a+YYM&hw&T>5>E#E8_?^PR`oaqpcx%lN) zs%sEkV2okGj5vjq+}G`{k5gjpDQ|AlmI<}#BOhjH&1Wmc0?(V&qvK=q50}vjI!9`B zJS_2G+5YPI*mj;0B@vHf!@TDMw_J-aKV+C7%W;A}8Mx}YCu#s&L{j)KFw_HBMIACO z&M=CcyJQ$U(>_g&XihD@D@%BRca)ZvqyWEFWG}tp!*Xv~btpOQ)mq<5$g@qxx4;Cmqo1E zUA{JyuL!>+6dK=O4LGbq5~6;g_)NbCM|d@T7T?BDswGu)EQuV^HB4bC2rr<;OZ=-Gl zwY6^C-f*26kp^@efU}32~2A5 zLQ0kZw|I{NGRLJ)?Tat6lJ4!XAoq+!(i$L;1D2oKDovqN>+qf3=n5Vw=hy){gF|)Z zoO(F^&4%~!T#ONshw95xA10~V zi7u;*W#(_M^a$%9Nh=g1gPK-8A3lhY8r!)=LdgdYYd|h$GN312E)hM|EOL;` zDr?guL8f>oO)|$kK3d@qKph$^-4Rd4YL*uJ6bDwIL@~PoKXw9s9RN$wZse_DA(47P zNh=W71Ep2$(4$Pq?}+k5&Mb*1g|m47Sbt(s0@wA8g+?+yPcSazfS;cBD?xh{8WmwP z`$^T+dW`@$=$-4ZWP<#;2bK1iv75O>mMPDPCe?R7HKz}v!jS9oFc=qU?1BB=A z(NB|N<>2ugp_u>r0Du85A(x(4$&e&=pKYefF&dKsjCyke?D)ejHAIN$LgbGwllnL7?K9cpR#$ zT=cJDcc}{3n)i?;Iwo7;m2{TQ`k`LPa238bI}ar%)}kz!A|f#Lmvw<88jtEbW2yFt zi}-I!jd%_pVf5HY51i=(8P?h9?~ja<%Ws7yxyEHnDtyEC$U6GM7N8c)VEwDie#W5D zDB<2c2%6}a8{4xk6{pseuy@gMN(r7c(e~O)KPD=k0MrkGTL%xE{82TeRud=2RaIRL zErf@SwTe4!d=+tE%6g-z6DHqViyWIFDRMDT5j7ZE@-us>Zu2a4ivFXJrr}gnN7+Jf zd<_vvV#!`A^9CbNDf_8_`%82c%!UP5DW5VYHeak#_ZvBK=!%faDe?9*9<*;xn~o(N zy@!7lLX*g27yGa*Tn$>xHuiTfDH=pO!UPF0hrx;7^YXNV(;>7jqB+Uf7M~a`7X~Xn zL3#XQiP7Y0JThU#Dm*ryU}j5Tb(m?o{`XLIq7k=?cpu)fVzn4d6ZT~EAAL3c{tL<* z4i>*H#TMLhl5x3(^$+mPI5127Q!;ak)2negS!>KtNg}x~D8bp=Pn;>&?bmOoxnXx> zE;ku{ljXOj>+6G!Z>FBrR*mg6cRzeO%(n0v+}r5BiMJvCes^H@_F#Ifv~KO<4Xe_k z(&84ZU4!;QC3|2$zU&K>W?*nHrmA*j7;;FeOnau(if0OKh0RMdX=;XQ*0uND_0VU( zs~if^^;*2uro1-(RnLrECc2j|s^}R!uFaFM_vs>E{^Z>YO@-iHEIC=yitFlrvom%5 zug&xB3`+*(GC{O;Kufm2|D7_b6Gm6*eIh++GCh*oe~A_fOl8#nFHKVe?Be0?%+P$0 ztf8$l@1T}{vB^nVkzcgzCM)AkE3oi!$p?|S35rFQ5-0YZ3R{X&$AEfQT(_`f3vS2C zv_P6Yi%3iE{_8#Dip#;+;qseHTQE~*O>vZ|e?|OD%Qi#pe}>4#K@6cmv>J@LjH{Zz ziWiKGr14V(0X-s~9wp7JM_JcQfUS%K$lNHCuTEQ`&ShP1G*(KL8rb@3riBJw`0eob zX9hPvVSz)fkLFKbfZAw&0{7Wz?+4Bylh~K}kh-|U0Mf*ahNC#)X)cT_z=2qL@9~>R zZ(Glj*Wo-OXjpMQbhDL-RlWchh(=w3A@yX^ZkAgG!;;pO&&KbP71OVIQzrmutigGe2Q0T5ALz?00PHhk=ZEIV z%PM(()w`U7@c5%IKpyL-B%yLd4HfFzv|)jK^{%wA!l~w6V)N6k-}BNR7*0w(+$F{7 z?J*VXypR;Y2WcE&;{Wc^L=OBK{P12~L|XU;^=G0ViAB@ll5*D2s#*4PTV)$=5pHXY z5{gZs1bWdW^?`Za4AFf53HyDTs0~anhK@=`BPmJxwpofMU3DAWTp)Uz)GBKXK3|Ea zWRo2t8G$@9CEK09O-$K)z#20+pHN@sbBm^wg%7sv_Ee$aWF2@ zA&>)jGYhO%^69(p-@jeMt+7oLuY4xKQh?4QtE^mu?fxS675Dia5V1Kswv17{jLz1i zOB)y9hYjAY-I)3dPyS(o$dt_D6?mlSbY&=KnD#Q5Ybb2A5HT!Du$TK|2rVc8h-MMF zNo}y*D?U#lHHt_h32{4)rV#f!xVEdo8^F)S`1=j@%e_pDx0%oVI<1;Z{)B0GHM@D* z6dm)$<)KJL#DEnggp+QkT znY~ojN(9U=b1uY~mw4pORF=7RF$AE&02UQ5T3ullegz8cMg~Hy99nt+k*O7%yYcPU z)5zxrXQxxS6Qs%bCQxnTm>`8^amQXq+)V>#7;3RI!Cleqb-CuPxoB+qxfQS2>V6fq z=dCTShs^47uO2XX0DV1!&ewXb&Hd-w*&f!;t#9y~qn{|HTzywge@9MJ4`rV^D(;Ok z&~a~fD*_VXGw5s8I@PN$RR7({(h|oH%ZmBp>ElfSYH>IyXKRaLL{MjX!$6iaz^q zq~qM5edg#d@`yGpdlyY-aHtMLJzBdl^DHX*V!eziY6$B?GjQG0)5z8pks<_YzYL53 zF99>%wE~d|2GqA39d93n>PTlIQb*L#bnfek$>zVPj!z=(O!$B+YJV@IET+hpE*MMU z&77iHIsN;UPyGNT+ko4uMC-$%BGe9T@9_;jSOW^O^!&1b!zx{?MoU22*O;`^b_yiI zMCxmW_GbO}ZD;;Ue?QfI-7?|wg{X?%oa$lvXQ}SUTMxqz&VnyRpFZdu^=?Z0VQj`R z^2@6WBBr!@J2Rkq_l`hTAt6+?B`i?M$p`G89WN%tdbQX0?ef#Se0Ei&YP4pHe|K5h z@2a=zVte1{y$bnmZs=(wO&0O`$ZKnP95_50+vlHfb9R1!e2en%&&?};+~IgM`z?I* z$xi-y6;%ODrLxX&z5es|KC-0;%vFUt{N%)iJ(b94#$k@5|)Xkekb3#+;%wDpXqP(u24_iuAQj5kBCp=2@F2 zKAQcnvaT{LsxDd&A&p2QEg&t8bV^INQc5UDgLH?|U6O-zN;k~VjkHL2cjqwojNkon zpXbgWo-@pxbN1e6)?Vv<*Ls(jZwBc<_6RM|{2#{|lwyK9H6;(W^N~bZ={cpBilpfq zp^=duka=11#5Hc`O_m+8c85n}U1w4P*;5zF=py!QPFkmX2)=$K)5B2;XS7&VZw}Lg z^3atGI)+X%ukAoRIf9kFD^b)P`$NDjkPz17=|NpO_eJzq0UhQeKt?B(N9qPz@0B9> zq%HPxWc4rv+MjY%0{Gd=Z+r2y4ab$eQ|TuJK3fql*|PR#KB5sFl>H&r>jc0~N5FG^ z%pr)lFp%}dhtePj-}B5+=e8H3xA(D+(zV4JX7szV+Pc0yhyFF^w!kG6K8|oAFLl^o z9$uVHU(hn;%swN6qtkP8LKhr}jrH9~mrfr^W?)VvBsU36Ry2-uXZSC7`=UhFpB=3fc_(k>8aA; zN3tC*4eN^qwgA6qs+|5@$e1gIsa$j-NEMH&Enwn0>qr51WAF(>?WTzi>m-C|rGT!G z2+K*i{_OR7F9qHQ*b54)Ahl*G*tk-9^X*z(Ka2(oQbdm_qqH--1Q5{xL3R4OV}{Rj zHvjYppyvMiB;h6-x|aF>rcbYzt(!RTO@MFzq8k17N++pcv%hbWEZqb(b76z@^lq&2 zZsYikryX%7RugVh2G+T5Oe?n69#Rq^#a!w#%ycapf+GsN{cCOE3NIO`06b(V$fGt&|)C z?FiK3___e|Lvk|`1Nxwz`l@ao@mY7iu=6jGvRN@IQRE_&sQm|zJ8i~BIt);-dz>#| zSkxUB4-t^L=!rh_pt=2%94n+yQTH0}@hvp+$gGp|JHlI3y6%Ll5l$yNp6D6J9>q>8 z$ZUhR0B96s1ZwU9s3g3(Z->gCNzN~D#CR3 zR<<{;WgwaJ?jb=jeh^=A2Y@dCFgL%Ya4Z6z0L7biMZvGo`RbM39D4Z^^0@l@i_Nle zF}k7cva!_=AH`4#|9sbWUrG6kOdHMjjB(H6t&vB-VN>6Z-neH?7ST*xKCT6<6~Soc z{!;2lG;`)acO2;Q3L9+Aa%*Z%V{9Y1?XQt9T-{c3p(15)jLf`=-f7K^IoE zkBoSygOvByHq^G+TGu; zY*i@!RW%MYDX4ZHAS&VA$U6bZ@2L)KxeL7{EN*Xc6(!|A#_#^{*BqmWIXf1wTL0>8 z3^BlG$!V*d;S*yr<1-1rj;m6fk5<}r^yC8tT4($=O(}+TBW6#}}dJ2~8)A(fG zG?7PrF3^np(mYcGinwF!43@wj6}Z}av;w+*%#F{?@#{(4LjGYPztdd+5_ zjcE}|s9DxrfpT!O@NBiq7L1OvDB)SQ5gnzWQk;p@+OBCtS}M8t-Pw(Mp- z^38%GYN8>3S-B_$1_(slsVF0*Z72c)1S+=ndV719fXr89(ADvBOp385W`HCpQWgv} zPYbkNYJCpkb2QM>A_VFzqJR#lQRnxtwlIPjlCtj;p&s1@Dg+72v+DreVv0#N+=`#_z_pg{KFO4(Q|<~ zngz^*2ulXqQq&!XNI|qE-gE_ekN1A7uwy^}KogGkwdI3w1H3oLtObTSAvvB+Zn0}D zkE(c`AtLnRoS))yKgEjtu=J#bYBvv{VyVW%c+Mhjy5v!lA1uqJx^Q&SoEy9)317&D zDGSR5l|D#t{n#15-Sqk-gSIK9Ng3HA>cwXjhLV5N;=XK_DjE5!E0nTNnmv$y359+l z`9RVP?esAHgAC&cqo)u!llVs+z(O(~AJ+?0usxIi1;)sQm?gy$bTByI1I&?4akz}| zka#R2$K-IHjVjC+4b7yc5j7A0pb;swK#q29f%$Hgu-lO|H1x@ukohGEmz|r?a;<`K zPb9Opov4Ihu3`cpv8c!dUjN`r($_p_*|s2ymDW-MSek%ta4#K%F?(9j5wfbFU^0y5P2jQPL^ z6yEdmlN&_!@_tzsIEKW-(#cdi4tK|+#hsiD|QXz!gUh_S`X3m&w z9qhpmt32y8EAb~V_d~xOk*2Ja;n~yfiV%3OD-dQFK3J4W@VP-e>{+|{FqQ6aD~nF$ zKa^Io&vW6M0e^>WEG{2-Ho7}`W|J_plB}Z(kr{J*2m6LL`fx4OwP~X;>{_pg@AC*} zIFIN}py^nZH>Mw^NQnG#JmnQgcr%6k|9v{jQdv^e<{pIXU*v zmKM_BfT?j_<(x4>Ma5TRVySD+yQ}m1Eyhi92dF}IQIPBi;C@@$vLkA6AKIK?MkkZu zEJFX3Te%NacKDPMze~}P!hGWQQY=s64tyEGdcHsDxI^a{<_R?(wndK9WD?0`4(g*PwY%AS$N#f2znxV-h*)CP zJT?;Z)%3IJFNOOo5bsdmcXkaS3Qke9X`YK^=+9u%)K^lnDs3eB{rDOM&GXMuc6=vp z!%)M6`}<3zP?cmvukq-eSkxBQf~l>oG)|2L^A$7}Wh1Cxc}mAlD~MoD$O`ZU{w#mS|&hwg~tVufL-SVM3(G;>K{0Te>9Pkpe{s@1Q^|=GragRvlKZeCL>%yZ z=vWyQ|5+iXCEaFAxeUvXu5!u@-DAII$bCxVQwG&X8&EN(q=44^HwFdnV^SY8i@;_kuLhPCaHOI_OU9+n*{B{%CL{w<>H0%dgf#luP zSdM-dH~QIb1);p%7H^3AcJ+G!5v7{Ad40NP$9@11w8j3U-aaNP<~9Eusc3ie^C#nD zug6Ui4QV2y<38#j9Riw_s3$TvX5k2{kH*zbMgj5%6ca>Ifaarp%Yg8r+3Mn>37bW) z^l9?G28wS~gm1&MpD`k!gl#qNk2#O2{q8@tho(MgH?uv%=D&!1pI1&aSinCry+}}V zOkX6nFGJ)=RMR-rhs=Bgo-T6G{6=3SJ9!bKMhNpUZg|98hqBW+2DOQ zR!43WbJLkx@;RQ!^7Q!5zt@z-O`DTD&8w)3y+vWPcW1le?3z9oY-C3^fwiL^sH5{% znaK zB6uqP z$QmD=!yO8>R;gJKse@nHhbyb%6S$Nr7@FlGQE}?F)jEW5tOy^}->5az1%s~P!Dn7=ayPE= zBvT1?{k4qM-Tk-tyGC=K_9l}GDYNimm~&KZeG}!2v~{z?!elF5GFAtE+)0Hlb$v52 z>SBDRH5o?Y@vmw9;cs|m!}6sy=4a^w@u{G6 z&J08Sn-YS;h~=nX%gh=OZy0LnUQK!v_ek~oewX;^uQf2B-hzl|0uNCQLNtMVM=ybaLD=K*+0IY9dU9r*59d?St( ztFG~Xx37Sv$d-*QYBn1~1Eu&(9&LI)@7H^DG^!~){^}&sg1EsODS>3PeU!#aY;%(> z(z}1ia&SnSU}ICU$5wS(>Vd7o!>*Qn)8WO>|AZPFMdK=wh1+N&RF2w$+wFaW)%@Bh z^hHsKR}cGCuky`bry9rhP~#G|yCZlX^!_V=kDn(uAD&dnyho={pL?|hepsSg4J-*Ll^ zJ47OZ*?rV*ThtVrS#0GnTO8SM1vzmVyHxoMUTV$tkw)5&rpL{QLq2$m_%Cn?{ikFZ z8kU!{q88JFj0mn6uZ^W?P!Qo3Vyc0KFk&(__oQ*Y{(8Z!DklNEw9BA&`!+8tKfM}O zk!0F8sBt$0w~9Km!B4WPYyf`w4|*-WY`aB`2>w9Uk!6CLngD?2 z{;mb!)9@ZI64S#R4@-=PX9(PAmRL{deMOd?G1vx=39RN_PIOPb@Qni8gd_riV2eDA zx2l!3G>&}Y7bUG|{_DFn`6~uc;sb$z?GxzeLMC8GdG=|;2US-3-_L`c_66YsFwcUz z4cMSD(yYN`XcG;t-~F46j`74;NmjE#($8k6-{C<6(nitKhfYReMgVY<)zU&_i_$uF z4TU2q0au>Ar1=2g@oG1Vmksne_vZ%CP@iQuNUidlpmy!h2p#S|S49Dh*rFtm_2^(h z2%KTzs!Qx5v!c2l>AMfME1o9mqO<`vRL(y|J}?~M=*8xn3&MD3Y0r`#&aD{*JLwZ=y-!}6k&nY9{JdE8;7|B!ApcL+5K%_*#i5#HK7i!91! zo}~oaNMM$x>AAYNAb}7%ObF@DWCJ^-;-CMN+SGu{(n;=P({fv3Q_7O{DsyK=VYNJ6bGuD+s#1U=MLN1|WX)`1KpM85&|DUYxW z&Tc7d1+TC#&0h06StKF{WT;cJ#2YQR0+X5zaFQXq2jo-evTJPU3@;6s;3+V(`TMzw zbSD_m;)OU+?GEVCtsOQjqs3|dXL(B%Lj8}99+eH?$0|ioACC858g}RJ$;L7}gRd4N zcR#s-EQ=Sv-_38E!k_|8SbW%nW)r*$ZkSnm>4C`(wq+nih5))1P{)F?+ zki}jHm&u{VyS;Z118JBO8L@D>uw7J=dpI7oZyV-5yiHNSarB;;Dc6G3FFIw27eP8_ zm9-XOT$xMeRTZWa4%0v{O+cVgts1mTsk!C;4b^bVoJ|vto}`)Isl3}e#S)pGEv2Q{ zAxmB~ZEbC2VxD}ADrv!h3kd>o7`KLAekw4Sx`{<9R_um@K3pw^`eZbFQLPlaG}(xA;B$F4>>9eB2M zo6^bo8Snh->tu#^&%$K@`fFYfnj;=@iH@9XLW*W5dN&V5IB|CUZ2%Zgg z2@^ietBy=mJHsa4w|Vk$((9NgWQkZNwdxU^7iy3%g^K3_{DN4I5`TO}U3zb=U z-d7I;9SY9Ue+%aYxocHw7+|Zz@kGZg0YG@TbQe8t#Ej|w!ugJ|Go*5~~1uQTaRS#T3u zdEyns69&*(U#7x|+IPmm(OGlT(=G^QTcC@?i%B`Fx%PGtp9%`ahcP)T9Gtl#?%e7^ z<6s|ZHtIyJE?ewiW% z8#TpD8)AE|3acxffMV5BQHl~FiNP%lQ+-G)&8{)8I^;s#RS7SLSq1CH|73U-ct! z54RBeBQ2xLhF=Stk{zXOxosh&VhJED(Ct(T2n#1Y?|da85X@4O?yAD*J!kQdS9O=K zm3tfcf)5e{Y4)jwdAZot35vZI6L<32nE8F5+3Yq%kxm89w5hX9i@V5mf#bSVp%~No zBTE|NO9uR?}8(;UzQy0qKeoiWC9qB`7a7 zR1re20z&9Wlaf2U-@WVpxIZszK|=DBd1lU>*=O%PQ94>GG?&;eK@dcvrmCa|K_sa2 zUrGw_33YE5F9eaA1{oOpDA{}4dO3OcIJvt)P(Wt#7|v}1K~FwVb$azdg)7=P>=U~? znoJobFaM1t?W^jmpOg=~JNHo!m$K|pw|^|Evg!7@?(MBi?Dns2ckKGO-w50& z@~t`yQOIfxO0uXbUE1@RFLt-!BC4iUl#C4behDlOBt)D!+!M3Zt14w0>e7Ob8L1X?XS4vlFQrQ}R%>Isj9y`cxNE&I`*74y3+#`j$ar)Y#Q9V5%kfy_vPaY6GgJ119}nw-`V?hd^nkFqUzCG z@QE8D*GiSLnEM0EEph+yq^kKF+wk9|Pnt$cqL)(P=J!3=536pKD!K5@-1y1q(xK|l zre0xRUhw*nzpdJPe|7MOQ_)tfn?0WQ)jn734bPPB)Mx#J%VBT0Ml-MzJ3BM3b)=is zldt4dat4bXwIq1cMR#Gb?~YKIo)E>C4)U{2uO9W5=Uj@W*|N2|HbLgFP;mPucJS&^ zmph92#3m%;MQO<3BctZ0A8%Qe4kmLG2TK$Wbo@G8zfF~G#O7{%{GS{YpLpXe!6wdHHYkhrdc1gYb4NgfFno~dZ-Vf+)F#J>SK3Pyl`czk- z`{2F#uUsp)Too-W9Iex=A}2@*UshjaDE~)^p5F2I6Gq2E#Sb)UlRo2`l`()6lsv2BHBh=z%k`kJS7RK#(%l2=Mb!^l$)YprM8oG!-w>rR^h##o!62>?liR-Tkwc&DGWVs@dJCyiQxpLg1Mj zc4o$z<&jRx;xX*~$B(TH%G(@SYJOK=;ty?iDx34 zBh6mEGBq_trG7aF0~>xu6fLB}#^7C;7!uhUu%bUx2s2Hl}x zbr{$*eaxs_H?;0&rH?+$g;(D~?}%v*tx9NC-a^l_va!uKTDmLgGSWd3ckY}@r4Gdh zWY0iQg;0(WI>aHpw6t`pLTHzx!(t2!1Q#Tb)MY+4IA{|no9!&2IdOyXJMIWcS0P0F zU|eo*awder+EtE$)^|EojuBVa*PG~}`i6$oFG3B@*4DE(;ua#H-<+JBv2AG0N4`Ej z)Fe=crx7hR^+|&L*z2QXD?`J*=XWzKZh`BLx$H|pt!<4&hzGah1X9P~=C>ILe1|2pd6_*4x{u~_iR2N%FT2a?!oG@5M41*BROj*P{JPPeF z9{F}>9FF!1FDkkd8yj1;wj9i1StjZGrR&W~S$=*8$yVXXsS)Gi^D=y})w5^$caUcx z{6=Ia7~=zMe*UtqTH?JX%gyxf>tM{xdFT;#CMlrXK<6Rn!jyG4MkLl@AQ}u~WF2xR z>E6bs*voYyG{{km9iC>?t&~x@0Tmc0$y?~~^z?KZAzXxaAXt{Ge}+$u?Q#B)2-F&3GwEnD!p#~{XwR}#3Duv55#9MS zS~Z?{5V>oFJ}20`Lwa$flD(M=v>ft19X~m}phE`<;V3w1JNzPSvJZ|zHns0YI!Xi; z*_#9jCZp3ZfwxdZvNtQ6n`H+SY&dj%$JMF|H@Pu_E#x@MRTMc>-@4f+5 zlhg)ONcVV5(MB$0*Lg2nt{xnVZXKWAqG?t2=J1~y7#QeDyqbp+$HvZHcHxbU$w-~g z$`3kd>*dRr(XDe|`VrLl$vSVWJ4=K&xP_<(#{oYoi642f(|E{6ND2yQnpSE)#D!Xn z%xmkuZBW)-yR5uT(APa#bn(5H#ZFjVEv*tFe0#}x=F?*Jqt2>$e{vZHeHnA{k9hDQ zXHnitY}(VZ3@`gmsq>G-{+ZE}CucsH$Hbk{1+*s-q%u|Ax9VQxoKOpbTBa3|mzn%YLlG&LrEv;DxWn%+qwtL`CtH5cwIa+`-@eG_A&?Q&Vz;S68%te---d zb#`*}vcA*^LA@)iteZkc@B}aWp4L~E9TKhBen=n4gRFA z&WbfI4vt^ODN`6iP=w99$I7~^BrjT=!TpRJ#91%4l%ah%RbP1ZlIt+GB_G%Jcgej@ zf>Bjl7<4yYav_I6(ufwq5in2J>hOe6*_ny&VDk6xa?8A1pfiSonx=&yfrG#rKDC^$ z6YE5I_vuCgj0b-;K*i?P`&@WwR17=c(9Gy@e}#)Uk{BEmR2*XD!N+ia;iAc0B zk&5_&6y(Z&&SOp%slK?0!&Fd~|N@ zwT#|oPD-*qGDvfX2{vkH^2G4$SV?z{LAm_L=0POw9Y4Y3dDpuW(bTPz6p(z*rWPcR zt6(Bgl;tXep5^xz#$eLwIIHPypTrfFZq3bZ~ZiXw$hD8!O3~9E4Z5gL54okSo zL+(8Ezq=eNlf!w0wu723TW?}v!pV>KwD{$ZzIgSMZv{1VO?Ie$J94dyHv-F6=#WGi zVQuZJ*TbZp4mrbO4%#;}(=(d6@C~Qu&(rl|b|YHnp1~AT?6q{?I-`)WHKKgDo%+e< z5K=YtLhUoK79b>Ti7472Y97Qr+T!x^giDRAAi6&r8lKwQ+VUoGAEeGm?h_c=u&P5} zgLD~*WY!QQp~+4%yK{W{FfT@KsH>t;1gwDF6>FbcTU(zQ85-U<9Hv!E)Pm`(92~3v zW%jVLnnB*C9q>7={KNQz0N zgPg%C$KStypNLWKwr_2DV5i*t>1b)k1qB6zG>3{o$n1q-k?MusJd0^mIsuKj@Nhg~ zc=tFcC`hPb>dcrw>B#qP#%XD2@AyrEN5QhkJ`&aBPa;6?D=NH_ zF-|#TTk;*AjTk2@(AoE%q$~zOH~*fVDXfc*T#Fs*W=4L{aWo5?Fo?gvvpBaGw27NR zg7LQu3ufIUI)!10%Me&?{Raqpw0}>-)ahS+#4#ecZn+*;%+GEZ{jtY|uBy;?{eWVX9tHPaZ9y`V^b6}hM%R|marv$fg25HrF%U@+QO znR1okXDrwmcaTD@x+{9FG9k}1vPlYaRPLc^>0&QUO!fE0C#o%WXl$k}+5G?xC?K17 z1yyNpBF}{S*wApSnbUt@23ecz4+qGGIfG$f>+ob|jkr7?c$NVm)Hlz`Rnn`-mTQct z*F&Yty&3+Qxo}xUXVN~#;|5}$+bQm1S49uFdt7*?{KD?hH2mQjYyYBG2`w2(OzT`h zkMG5^>CJ<(xVEQB>3=+VUMTXgM7LcB0JmVkzs`Ic4Sw|6`H6bEx}LGP#d|YuHAV-2 z{$v99w3(%~tX^)s_Ct|J=LeDaLebh^h)HI6#b=!C{y%$v{_w5)H4H6!d0xGGwOp?~ zdj&IOj?#gD6`ono;6|t52)t9DBEN4Qm>uncRKt64bOW6`nRTlM5G=G zmfsH=Axp5X73s|oo12@DB5Zzxp=`KReWzUL^HE6i)>+(*w#%`PIJ@k;l5mTr$r}6$ zUnbUbD7G&3?-HK%rW@{jI{=jcF-eH3+Y?*as}upG%rpeNdP?$ zGH2A}@{D%=5che@yuy&$+Wq`c4YN;MJw(my?N^!$Z^RQcng5l&nbBKXR#fy?E6hwF zjCRqKT-YRqRhJQ2>@@Czoxy_mm2s?@C}URMPV|bC0nm~`bBGH-2{OpQFqZb)hy)E4 zlhC^@?x&GIWk18wh$R9mmSsUheEL+>Xgl?az{z#1ldA+##R~Tdp&6%|39Dp#Y2w2r z$y~T)u2VYpttW3nCxDXs<1W>7Rex9_bg6hoCMJS4CD^hox;ZG{JB^F3`yKP+D(q5m zdsM$Rkb=pA>ags`d28SbOSsW>N-kp;ho&>D3ybyA!oo2yR3h;m-kKXnYZsKF z?<8Hkl^LgCXlGIls<(~ruIOBjg@a>FW!=7+Em&G}{YK9NHpctD*afT~eXYt=9U3la$mwj~A~{JM*^Pj^TvB|Mk*8t^@}9FlN` zexcsVUTofk`3K1vR4udY^V!F@0)4=RyqQrjWR9}{if+RrY3fhKlpZ zyp&yY`HZ#$_9jfArkS2DHMfzXYk8tM6dqwC+v90&RVou;Q3^K`A1g7O!-@#=dfFW~Dyt z0S|q^CFuLy)@#3pQ%$I-lt58JZYpn!U&6(bi%xiaIY*1I$n%f?+M&yyE_!^i zGYK2mJmCK6AtVTOeFAii-&`$?*RSr=3S{Gl4>pE#cN?ZQc8^cH4VE4~b}!n*3gK>o z3|R)SCi~6=xSMNzsWTvCZXU~|aF{SE+ca91<-sq>498~+FAK8R&VzhpdIeWO#YwA@ zfpH=(f$A&s_qGJZ8x6Lr$lDL4IKrOLzmkDb&UplEdZz$x<3>`K(r!HBx(cSSnKu77ckV+S#@22QIWUP@_5ifhz?<-o zw79rs&su@IsyQM#CmQC@+yhreA-*q7rS?5u7A`yTJYBoAuVO{r&y*F1wuxUteGQK#9xO zUcF7iIMF$$@AE;gT5Y&m@Hh@4J{=?Xgq|3^7^6)o5a*-|VTPP!AcYQ3Nl>ld)*M<} z2+61q*q)b*W)i*xM)M#bn;Sw|BOIOG-OEd zr}TYOP0e0Xjt+Z1wZCEZ_KPbM)vm!p8NHT#l;6|pONk%<-6opq>+iD1Ef}aJh8dZd zjMcbKR9Cy)l`*1!RZvQp5wSlx9jkVoNVF5LtNQ7g*!61!93U*T2|{45q2+)HcG#MT~lZBW@wvM2r5_=~<7^gA?uF^&8*-+|zPnIVh)f&hhJ*izxJ)k?cdm z+wBA8p|9@uIO6y-daFPGEC&mSNM!5aC#P{qbxvp5bj;Yp4?6dlqC>q#icMw&@yFSH z4nIystDS17d;abbEXG`_*%i4_+EN^Gb5tU=v%G56H8t2i&q*AJx*GNf8)5U>fzC}T zikF$Ka{=>OG-)-D>FA^=^yaVC8cAs z9MUlfU3Ou^Gc!ny(9qK^j8hS$mB6<`fF4Wl*MXLs4oO&b+lfCsJw3g%x3{N>aoV7O z)Dk72a)$PPZxR;P23^BpeVC7Wq8;qFs8?`YBP;B>{?&E=q7d z6wg>>9&RFd)vbcgd0A+%nnb{tEw_hRsjK4( zBWzAOjyJLKI=@>92r%K~Dc_GHVoU%)K5@BAs2OuPa$EG*FMNADOUo#EZk_&tYPk!& z@^j!+d-;v%IPFvk=WBTmdc>%M^4cSkR!9Q=jqngmnFXjQXyQnq=bY-W|y5F zr1UobkaT}L`Yvd1B43+M`t<^<#803`yG+ZUf1UlZ@}RV=Y)JmZ`q?F1#Q{LEP06?w z*0&!H^$qvZm9Fb@MkxtC_@E<<5`A<%p#vr);=4xjKac4QBSYaWgJZq#WogI9#ALqJ z%AWzp$3DN`QB_$=)sOA29gyQuNI=_*5Lo2Q;K7Z@&#K*ckCq2Ma!Z=C* z7IfYOmm*9MY@GlpP;E#;*g75auFKAE|KOk>lpfp#MfDnqpAMi9Dn+%1Jg;pqxWCTM z&WaRy=s_dR)e@_rcQn>!0t=fr%le~pjYpPsv~_z{0Wc2$Y|lk7O85~xo;WDc`wySm z^+z}P-`ZZ+xr2%+D)LLQe?2`t-3?gK4=-N4V0Y+E-?PwVj3v$f(CN^9D*76vHu-}| z@1DlM-7g+<-SrhAVF_i=< z4P6-JEbMKdK&AjXO6j@{I}1xEsLTTZ_={iIKHSyH-{recA4YBcg<1enUpn#V(WBYz z05Ygc2X0_uVUgw2Fr{y((ev)u%0=H2lHVV-)o^t!`J9`3z0w&k61v!(9DHTGDY)ie z&&fsu!8-x1SvttvOVr*k)w{`ho&V5wRGz zW_bk46s+j85X~Wgm%j#}S<*5E++i-Ru33f_7N_+6yA#rJ$5BHoYZmoBD=LXW2UGs6 z;L%q68i;+K=9gOJz)TR!>GyAu9GIT&gB>!Ua$o^9~f*rl!ztGkLm4&d!95@ctPbGFw#MOL<`A1P=mfk{g}%@GP^A#ccPr(S6vT50jU? zMKDqAqRCO_M7`|*S!xu1VY~Kfe8*=H;w5$QPe2rnN!-$UTsnzwS=j#Cwy>QO+jN$P zmV_Cc^qMn4p@L`yh+bLjqTm^AaFWO?kPl0o(mzYZ9p6F4MtWRoMNkhTVjj05LZEhw z>>F8H3PTeU$L11jQ{>iHP(I>m9LKKDL0gkvvp+3ok&07~jfrWrXKDWo`dEO2e}Q>? ze7uho${(t`hF^URs4#Az0a%|8fbz$|GK!bq8m>hBTLD1ABLqw1_@dWo>1bW8dFc%K z%Wt2-H>^=gPffr#GHkJ7Rdsbo&D&leNwQy>c_^kK5hkGd>u;){U+HK7bxSYw1Uig% zN?(Q!IZ+4dSN+*C(9T=(sF}s5XE#zwuf5{%NuV*K<AlS|Tr!|A1ULb=g$w;nPzWrKKvVJkL z)sqor6qrpkzMfF~X={ahv-w!$A-# zC{X2N=#Ptuk*#_@T=a1Dx|6$m4S0V3s)F;_P!U-J$%Ae+)790r2B1YQYxgv-&_moVxUqW+|X6yuZ) zsNJhar*$IptT&jV<&68B-{ia^g)mO?24-f*ReJ5buiogf)=)`t&?-;?mDC$hs-zG| zg6pQO>3)RGnE>T?Dp00TV2)U( z*+Hw3VgHDle(fwOE#>+lQ6ie98(PM_@yP~CT@&6oKZAeb(^F$U?_qYZtv z7pedyhg(K36JWS1cV?KWDMT+)yiC=oKEy53cjt&=g|oE!E5=;5&8e*X&QGWtsZ|o` zXuQ!Taz@LD9W8J7Y#~?)a>YM`KB|XhQd@_XZjDjTMq-@8oX{N~HKV*NUk1opx~4Cs zLMQYsOW(gI(LbP-JZ2-Ut!ikPU?7_-0#vEG1l#HBUWbWl@8v!#m5;hAd<=DfFPi`u zG4;{MLEIfpnP*_y)p&5Ea&U3U>(alH&t5hHYU7zwqN9^jAgSVzt_r8GG$h&KsdAIy zqP7IvB6X`Z!~>SiD5daCAZkA5W6;W8Hfcr3Q_cQsjTrs%d{__=o}u7(FFKdyin8aw zi(YC9Cv$W+%>$}xYRp<9%{D>lQF5{$RRCCz0kI@uIOsh0E@ndzkOZg}5C)k03gK&ax*4+rd|6^X~PR}Z&- zV(H*%o2YW57;V6*`VFv-Q*2>jLJ<9hS=bvGBGP^=#r%cT(A#yk0NHF=yho@Sl^(Bm(ujZ!;t0Z5UL!3F>u7obF@ z*s%DMb}sD@!);iq>aG)R(MIyl``kMib*aAGig=fjl5$bo$H~db=6XWs^hkZkwEzUU z`5DKNEttsfUJCFWJUdTfASYv#t|x%HFZdh-fXYzY%xvOb&BT;>49k@{zlIENv4f>I zs(ck7bL$s2+^1v2{w&Ym`5P>o?OPYm9U#laZ?qP|)siE})$a?qSM$=j_FICE)rZL^Q+t>&oD>^-$Eou2^Q7ixUzn+=hyCDwvQj05bR-+{Eh>dx9 zubo_7tJ>LzYRbGpw)ff;do7G=gOg3U9bCkviXz1mR43D&lPA(|)u(X$9=&dw7+rV1 zXl;Y#jj*$b%K#J`=5@590C0kr~FJjKu^f_g>BjU zZQR#>dHCxjDFXepAHZSB>j{+S3}uf)HzY^#T=v5w*d6GJAnJCuFCqZ*}!~%JR`8NU(qR!#V8S+=%Xk_HCQxbV4*(}`7{ouKo z89Shu%LMVcopp=G8&=IBb%tNoH@tcyvM9Fm|NOlI*pnpRmW@G2iNCwRpYR-r@uv8_ zMUXj%0LvT9%ggHvI$--Czd%93fX;1M^lGXPJ>GxlwsLRrt-hXmiqM#`zP@** z4T~%Clwc)e88G*n69iq`c$IT6C?K@S-+OW#XhV3L9=*HK%%as46cmY7RaI)Oh#%lz z`2w*Ju&O+<`D_Iq04x(aMn;lz3mtB^Vyr%G%$9)pA55hVNKG~A=y*U{9D|Z@TJ2h$ zd3E30!*}xpZ9pYyjMNgKbJ`aO&Fql52%ZMxWcjVaB^8dY0W=1XA($O1P3|+c9fMI~ z7Ejag_VvA^F*Nz6*MaB`=t_Wj!epFBiq+|E23ix1n4>FXA9V41 z#`m(~NTr^GwbUnj8L#qj(48`T3uA9$23#Q*20(VFh4vzB%q69y0{EeafV$P-y9ly_ zqr~%$-@7z7AD5MtEvr0w!~wkvvAG)isIIhBq_Da=WvcR7zY4l~WMm|icElYdksaaC z*OdWunBh_|Z3KjNb}YUfg;snX zr|Wd1N$qlWFc7+EfKw@Ccd54w9JW3AEGP8IXk*~*%D`QR_6i}{?SHTIbHnp#*zX!& z=?X=b-OLX7&USosMO)V9s++W`|_@Z%%Ck8V+*Z(@78c~DhdF;H$feZ zt)JSEYWJC;czM4M5hDqklouD*BUkjhmqp}YWi6Cih`Aj!jU=7|LGeps7ayQBL+Wf; z@_}4pz{e0Mou&0Gsf!OJ?_xUnL)6h>heC6|WEeb2o_4+|>{D=HEd4J$uZkywJvM^-D>&xKsFAk{C7b$d4b1tQq~I|paWcEL095`!#MFRnv1A~)mvhUgRQA(@ z0#+N|g&t5@a$D4SEvDvQS2!QhH&4+W3#niQj(qrGARmaP zdqzVNSU?Ol&-*nf1R>%e|!3}Iv2p8Dp+a7VYDNumOP#bW85g{LkfFJR+=jkKjXI@arI z%W<^f>H|3Pv}3|(l~Cq1?hPC%=e|_i^3laSv>bnY=oGOG$g5{hb+2hqN@wc80uE~p z7~2%UY7quKk>c=!P{3dTurFyYoa?6A4}qehv-gbOfGs7NPb~$GKCl;03k0_$hk)cH z53P7e75|fa2%#h&U*?9MmXE4I)xdSB-@f)&As6oVJbhoI@aZyGb7J7=Ea*&oZr@zX z%uAZdVr~yFv7T@1caVJemuSJ*cH#Tn7wXxD*D?~CGNz1ebbM-$0rU5Tto#7o_7otd zd(-l|jQ)=4`@?$e7l4JRSr9!R7rHi`j!OW-ft(;jM+(SairG7m8K2ry3C$rkHntd5 zKJgBT-i3f{tQ64oTmu4(Nw$D#tcLM+b1qy4Iiz!loa2B0Kj89k|hqY^2_ zvC-Wo%MLs`GQgNRs-zpDp7_b9+&0et)X*?gyyo~!&l0IQ1S$Yg$TEdb;Iq>>5>`tO z^mmKzyCnlB z@4p9>6hNrbx{T5(_SjBDj|>1a&%l5IPviq&-#Pn00o5`u)d%R2TrQ;TR`QVCHxR zVr8qP1?9cJHa47&@hul}z7)R2h00~Nw*8ZKZhd?5@4~iff-0F`LzcG`2NfWIqJb;q zn%WO*F%r(-e?J!mwO!y2*(zbMBm$LD?t{~K4s~lS&?B1?dL2kXI&0)pJ5A(Ue`+!! zfPR`{KPDV&;Hu?8&u2jV6P!oDjX?w_ z<-Eg~0BgsAkA(tYi!orv96`@HXjO809h}Lw}@ zL8=6UX)h`$fIHNlS|ZgF+jvr1A-TDq0N(;#H_@MsGGBCCO*P z-;%aC>6B7J&86@bpj9P-X6}0$8ZxUUGJ=u?i@{KUn5h1rP*o(KmB2WeGAiD{RZyTV zz|5Uk+Ql$VAU%2??C*Plp)(Uq?uH7;bU+Sr-VQkF_PHkvI~?ZI58%tvnqi3Vs8LV+ za|v}DI^j=#96IDs>H2$p{SF|Ccd;5njo%P4u}~P?c`3hlpjq8z>sV&W$6Pw3IcTpa+6yt6W%oMB0ncYtZf)g1 zbNhj(00d&m-`fK#Xr;R6=^f1pl9t|zwTmq4Bxj{IEL4VuS-`1%q6H-bI1f~xB9fLG zNGO5NNne)B9WbbOpfLHagR{%IaDE>P=87>P=IFNPH`Izcr--(YIWS5cM00{FEyfwN zN(>Y@Z}|$ZGer*rsIGu2;)?IccS^?;J>TS8*!(H6js;F`=Q_=@s9fXQva*dp5XDyr z1@8|G=veS46_Ow*XYWEl_>%-5HWU>pq-mUZ{)8PG2qp)OI8^$Av8i9~NvoWa=+$aP z_}P4g1gn4#yc|SIpS1Uq%O(J@z!J9sK!OlTd(le>eQJS(C|^HthTb#cfula#evG+t zY|XV!)1PDuq=%3-Hi(6bs}vZM0)O#8`*pVNYG_!st7E&Vas!1i5F7>|^H>{N?#odi z;xSImZY+-!P%@9{y^Ce2TYpPx?(QA!E)&^W>OhYZHS+YDpmZ;3h6kNrJB**`2Ct~D zl#pyi6cwEc;p&5fgI(|3xzps=(3EID1}v2|Zw0?#oD?KA^?U5Z{r?;s5Wh4xpIsZ0 zuubI4O2-j0_1Z+Xlp$mf@^X|?GZ0Bvflp09?T3Z^KXitM*sLx)P?ryz0YyULxVvQZ zQWJ?ebruB+3sW00K#$u}w2d=>bSbTq*Y2Ov>9U3?1A?fUfLv ztMN|cJFVr|HZW|ulhnlm3Po3eg<_M+_SN6N5vjsv`*wFTs;t6}7H`q|^t93`G+G)C zCrP@F|C0Xu`(xf6=Mh9w6dliP1Om0&uYf#$Ccm3T+UF5=I2Vb>9xY|$+@W4rAFF(p zBcFD-5J)Jg5doT|x{&b~#V3ZoecK(}#Qg84baHmu4+lrpHPtMfM0HS#JhT8bl z;NV=&9p{wef3IkVd@|k!a;_~XK~S@!DmOy zRwsS_&E96^n^-=zo8>|>z^fpxV`8$x#lkXb*|W>dvu{{bloFCVXU7@5R*v75&2a_h zwrRDSSrX331C%L5$6Hj?2isz{!29Rx3EXE?HnX?4kDYQ;0K$a9+loU{NSCp!*G{}_ zbbTNBxwtsw0i$xTVDfkYA&41;r*gogyuvt9iD6nm;u~G_YxoF;)2w^+HJ{o&{JNjY zEkVJ%@nd@(=5aT415UlI+#!^gInvM&7(6AIsdC|NBv8Xt*c1MwG_$yQ?V+zS?IEFe zp<2KJt0l$>`<}>x7r-USy_R0P)zLND92&ei-xfWi2DV06;FGRMKf>>Qf}=ON{3kts z0MY&CFzJ_P{aj68TgO>le`x9PpbEEKSnhTz(2;=uO$%(f2>tb^9L%1rbWE?I;qYxg zEDxo!uoSJ2o1vi`_$=%8Gg|Dk{_I@Z`z8&3>-ymL`5o$qAU<@W12@3lzu!7Q#WOW3 zG4-7Q97B%a{*i@z2NC7nf>cyn|EWdGSKr(_oFbu%J zG^W=MBAFMt4t6ixjav|5CY$p$G|YL+w=%D{^d@?{zLa1AlAvbdr@#x{&F=trLII-{>{=0=MYfqhoHg$CWg z@5v2q5uRo>7=Zdm8>qLrt#hgtK7-1JZSq7Q*XNzjFVA#L6#HG5Lta!l@>Qw^obeuM zOXwon|6Fs>mIgIDcEdwT?`EdQcg$(1s4t8=>`Z^?>jenpDd6n(3BH~X(6{dAeqq2U z;*bv1T3mn!DlaOUu{9YXqX#Wvhf0MXhKNGs&|SC5fImQDZQqr}K1f;ASGPbdbyb`+ z0z0f+mR1?@c!roQPbjY3!Db#TJ$XO}NpUNNeyf&&8GQJIN6JH-Ev4bEnveuE$IvmI zvsfY2x_MBO%==CVhdT{ZfZobZ1I+Uw4I{vzVKkn8$5|-Fes97Z8~THMG|PY53G7pF zD4LI7j+5CKfGBHb!j8W>Ce$s&$p}F=0$lw zBneQaC*wxhXbvs?lUu8V-z(;!B>MZR2zT!HLOFw7}_#PX9J-e*p^{Pz;|353+IJedRx;A(Z4AmIv7ICbZapyV(=ml zk#?32+TW|K)w@Rn(OKK3&1bzH+~X%&Vgg>#>-k7fY#{)gP=msF(YZkQ3cJxTB?9&& zNJ64-rA~kuoU3wTeF}<$Z5in@hC&-)()?oR=u0BMKL9oIs_8K)Cd1KI_m6KlNfnW96Hg#2 zZ*o-=kWMc{R8V7rs3PuaL(6I1s5@l*23PpD8mcu&vFBkcYsfc8Ziv&$@Uk_R3Rn3%q*yT2HN4xd?lubk2|`KrXEih-il& zD}NZWms_C}lEd35E0V+4U~Qh+R3L9zxIv996vCbF)%s^}qa_atBY6+hTOw-tXeJf0 zZy8}TDjg?7qe$P92AQ)oF)jX)hSZ=8NCMc-{NonH?fYH;MnanJCrLm+U9VdWU13oW zzZZFYE*uF%{608d0A;IL_bm7e9IU(_ZIT2vZV5`C$q6<9NS zF;4dYL+Qup(m>N<3s`0>aA@;VePohucDJ*$<3$OhbJr}A00qhi=uSm}j`y)$wpHLx z{YYW8AI!MRH99sLW%!9wc=xK;c`5jcqv&Eh3{)|GYKa>I66;D0Q}XXr`BDJcc~)9k zxjO?u+%9K?%@45M<=@})KgJRrXm~)0Z072^zWJE*S?=|Oe*kyh@m^yy=e(i6bTkXd z5kQ^2q4t9ln0bVu$AZcAtqzq_6p;5)Pu;jg?+n;(#tk-J$e>){jDjmY42Fi>y=_Dv z5q^+3XT8OvZ!lgefl#V^Uj8Ec{$LT_S@>3P$O{OT&aZbrkPIwrpMWFQVII${ta4;! zWjTO%SCX^^WX>NN{2u}9J41SS6#`mzu>Fc21yC5G3_)ED2-eBf)zxeuSJ(m_FBH!B z*Fj)`L=nzdk*T#@2+3QRm;?fTtNhaRIk^n(rGjfYeYm*Vpo}Uhqm1{Qds2t2j?vQ6#k~y-n zoVSSa^6gGzj~UY0%8%?LA|!6lFO)jM`pCA1gB6vn1F!nQ`m2lcVS@jWTY5@8L|dVd zJqzoO>$BRBAH>qN-bmUqg!28UOm3a_3ylq7-ikgVc~g%%=fd*$& z_bXhp=!_R1VUy&>bb8xHBIIo|!{igtta&=wc|+bX1kk^WMP5b96dc~l-$r8_$5MQ0 zd|~JEh<-nbhtgFQ4N2QM5uI(x*DOoVm^|cyh2q=@moV3R-M#*(Hi=#FyWFy-CU)VfW4emX%4{Z>AG{kn}?@joA~c;1dMs&0Ps z9~aI_x34TqmJ~=NF|^pS>F+-w@k2vNUy2E7<^T6!VD>sbzYE8QHmkVdFg+P9pv)Ea zz5MmRTaw^Q7%|D`^rkLmFX44Nv4Ta{rQQ!!CSMY@2;yU|8yaY<+n9~NXAP@$=w*vu zKH?6Wqp}(eIY-XO_nSG-6ZtF*`vQPoP9+_evF=qD2Rw_PyxRGJA`)QM6m&;_WgAtO z%9;h=uHr4DwA-*B0Bs10jEt{M>x+zx?wAT{A@NuruhK3tty--HbmvH19BtL_z^f)a z^l*X|GtlR~8m723hg?KbKbK~fU$o+f1^yo|07w|qJC#pM*i~*mmh~FpRWVn8@B6Xs zr;&jUmG#*Ax8IK^wc{ENQ1RgnzjLFD0AC@<5G7PpQZfvk)Yo2QGCD^xADyS(f_;Xm znf}v(R*cHJ!M_qzs$l`u=I5Ly$F%%czHZuCadV0_77L}ZOB~WvH?0SY=b~(s2EjaG6OoXMPC5ee*#D6QnawJvetb9 zj{z>t`mRju$ypTZp#TaK99Ns7$T5~=j^V`BXO9^H@4+AVxhvZ4QfR?p@Ncg71c&zm zuwviV`t439a-o|`L@_22sJQ51Ls$=w?VMA~-|mFqQ@T-djq{oC!+OJBD1^Oby^iL5 zuG3gYvP=E7Kvc!}@-bg)tF9UTgYk#S(mk>l!UcNZ<5_KlYByn9CW!LEUCyZ2Qo^JU z!BsSpGd5s%VICv_#i4)F>Li<}IOI%QX2T0LHnzU|+-7pCzfdaxTQeq`t!$xzT8pzh zjBd6TS9y>=ik~WX{9`UTbvtN-m%8dd8e0F~3b&^$6ilVHtcN*Fv!B-$@z-ZXAO&*T z>b>Wfr=YoO(EDlXwXUjMKtI4{9T3!Dfpx;-6KzJ~rX$@+11MW^AfGywn?I%@gv#xa zgr5wm!so1aCu2o%28*l@od?^a=#~Zuyt|5A==9wVE4UMP#AYiuA8hw^?+*o}c@Ptq zZ{9%Z`20fOzm7HmJgdDQXC{8i2d%|T*116*68lwJAAM`JMn0(VoL^U>1*FjeNzxy3 zQaaAV8gG#fUbv-{rhZL_4Nl=Rk?1&)oJxQ3Udl%eKZ*JFU%$xzZNa~_88IF8yuIZg zQ~hu0bJq3r{+!!JWR^@#LJIr?-J)KhQl*}%|Kq2}$b9z3G5w*X``A2Be75OoyH@+- zcKNdENc)CZMB-qYvQ@0y?Fm;6b<-UcTsY;+a^ZGIYQ>U4bK6AJH)`oFSEqE30w@il zaX6Gto$5$mj^;F``#xUGf)vJK( z8(VKzymxl+bkJsDy`k@CH{=(t_a2)i@!nclMP|!|%coLUS~ap>tXLDz|Dx%tquOeo zb_nj);tmB$ad&HREmEMxDOR)vS~Lkx3&kCZ6nA$CR=hx=xEFU%uq0pJ@0{O1IVbn* z-8*+@c6R4^X7+x!e03wu;D?!=nVF;yAMb&%Cx`&V0RbavD32KX9~>ap84ra!j@meb zRZ-53pb$OzyY~bD5b`P)buR$Ah_*sA+ekf(4K9VdkuU#$nKT!4e^7I0;nG(8A6cGz zfA9ETJ8gFl50qm!5_P|)fV!J2LANSi_u&8)Rf20a92FjD*9$*Lp&E~%%TCp(Q`;64 zikRULiIM;S($_(k8ZV2gZjPX_Y0zt7(B+bgFDe(hx;$c8k3$bY5=~^kgFIsNF@VR@ zScjPbov6w6K|RX=Vgc}h{cyAIjmLVt0szv~YzDi%`~rr5S+AS>cha(s>_>yOR_KcU zHSon|Bs21C?kzeA@$sZ90KR*++5ykq70IA&*A| z6$I*Xtt$Zh2t&sh2k-_TSY#=R)NBuZJJQ!^e(S#{*tziiM=hcj=Me%&l?q4qXRuES zmZ+}AV;BkrGFL^QJW`K$(3KR;b8kCqa%67hdCzOy7C!}p-7bPSVjUSPy`Tc$fvu$H z!|ZX79cWpR+Z9%bL$EIj0Y}9Jz)umd|AYww+&(~24_pcl#|;9Y^Ilv9oby~$mlG4{ z{p@;aJ#zi_`}!>@`b|%Ox6J5>29djl?yD=38FUM!z5(B(OD!G)00O|Cfq?z&1$_IAh4b?ZbBV*uF^SEX1#4sTju0Vvp;zf{W^7&2s;JA)y$Fx`%$kge^0o(?mny_k;-;1R` zhvIKU*22uM95Q3gZfPmtAFNg8Zg6Y&p*77@ZJCy%q%Lk-?!EFSOaw4z7oyDGmflk~ zRWgse-u;7^;Of_8^eY0~M}(zM6?+ooc8jVB0(3Droc>+qRsg7i2|-6vfc01U0o{x5 z!1}YfHk;-NUW*r9lqybyM+y5-AY#-Vtl`$5DW4Wz$Y*9=xK^to*S44Qln5z@!6hpj9s zo=@DV{FFH?KB2#r&rX7VX^>OtIa+sVXp66dfBhr+f!b#GyW1m*ZaDarObF@A`uZpB z?*>h)PAwz`+c6Hw8GiWsFdvxkNw57)T zx>+EKEWDx@#m|Gj<4cn0A!&3vN@k%n95y-~gSZxmlwRiD)H>74_21abD{wfe`eX5V zg4I>Y!u1hnIM~wcGR4Pyyzzne6mVP8wSEaI1p4;9^%|q;kjs0-(O9|IZf6aCz#JP~ zFl(xIx;`TbX)~#o!P?kLwwv2@sDAN*X-xu4zkv4q@?|^}yN(3l0RPEsZDtxU!C*wO zAXfZc9Ma4cGJ|~RtYfs!IVCN)wetS%JT#|g+F|r%HKEx&ECBgC=AWhbZpg_-_}%Lt zFTOG;w8YdIO5#drJil;Ezg*`XO@LO~;iR-g^e?Ci8Z!R6+y7_=3MT$X6DcC%E`cEt zK;_3CFeKcpk*F>#!QUK*aZ7|a+|)ryZ9%DDqabp}mX`iwPv)I`OR)5hH;D)ZzpA>g1SfVBgBSrPd?@p_Y^(zn&2@> z4H|yyWsw3WOT_==6XwZZs23Kv2HYbZ2pfVwOk?ay_xvKUMtrKn951qh$6|~BnqI-} z=*lA|%x<~GqjIT*G+ipZg^L{m+)Q$xYH?jGV(`~n6znIFOu=%gEgo_jdi=(2Qefcg zmB~nZ%B~}bm}#TU1vv!*(zNZ-X8tlT%N&Zopwk0HwP4F1K5WC3>>b=Xh!$KRzqo3B zf6v1+QG99h1OBMCh+5F^G-&Fd2nP-R7L0&**CuK~XSXLU{a!1UvAmaWM-iVN9!dVy zm)&R0@3Nytg0|tZ_G?tA9o_Bp*!E`GVyA}!g1mqk;)LdK8vD?$Se5M@oh@m|kz~}j zCD2Pp{HwVf5#Lr!UJNIC?{i=+Oxga!jCE% zSbx90k&AiT11=%B#V8KcXMpP%0%x?_TRJiC8fxyI&h!q15nG=So;IXKPNOUXrh}M* ze%D}nK0yH$p^GiAfip@;R`V|cMPIC4bSJGiGRQNASbZ56FbXZb|Is|>in*Yw;Zv%_ z%J6b}{2_j6?e_tpWJKW|wL0{(ou^HluyiY#ZRJ$g>g7rIYcTBU-;-}TFN}IhFVj|X z39P+N;L{;GrW;cEjdG4Mo=2si+1CP3#Y^hVWSlmUDY;<1k9N%7k9SAnMioFDA0aa} zU)6h9;}7X&j3pz~lb9)hKhC7e2ONvFQ8fA)j)^u(0)z z#q})_dAB!43S|IyqYA)fr>*9&(%aHgjc1YT0)*J-^{u3h6bl-6oqVyYCs(rSW5uoV z^>L{6C}8>?GG#Q!2yo-GCC_}clafo~YX8(x`-d8?0AKTYw#kwu z7DQ!3#ru5P7FS?=-sno&|LcA(yuzD@33&?a@i$hYFnXw#yGd?>Wp7GJH+=;1dEYM? zs3~}#QzSYUPq1?53ESW;f{n*}qpgndw-k^;dt71eViv{#x;^;DIWD&1q zbB-~HSn>+r|3>7tz*Un@1Ibw_7Fi{hX;efUI9?*|Ty;QaH%1b#!n$lS$T4J1N^926 zJIor-;VX)mU^9Q=F5^~ZW;`_hQwZAx|1M-OJ5a_m=#e%e0Ao?<64||Vg*oaUceieT z)h_nBhnVj8#p8=>F4?o6p;VCgZ}vTbqv1VH9}~4o+MR_(H<#b=jd#{L_16&reiSGY zPU3_6yXSsl8nyxV)$L{f1mZf>g{Doh;a+XmXxF=IOmH}VI7&NpIVlu z@|a@-gD7L2oPCgyo>%XovDHGMfSH{=n7#M$xZEyQ`jYdY9er zVl4xqiQ69ZfQkHBoI>DI96!LQ8X#@(T;mLTE}ZIEnQ$`S>o4}W}nxlTbm_D zw@ulWa(ErLY)G2nCN~(%fNwanBTXbw_JmS=ET~%UV0cX&qQfvqYpQ*R?a2`zj5nX- zJyaRQngJ|!Iv--x+bH$*#_p8~x$5f8{Xo0%gc3$Q=||tMM^ZNP?=iJ$H;U_*g4p0c zK?v6*{QXQp4ql?iA+ttV**p%a_p8MC0HHEvY| z)+wv+jvFT#nH)A77>XzPPc64=^bdN)o*+WV0?tKlIo-SUyU))s$9?c_pPxO#C!Xxq zIRsib2;H)MPPoR%Mw?QK$4i2H_UK8!*`{Uoz8FmqY}Vv=Sd*50&W{70)!e?a0KmDz z*E1||jSVF!SM#+RIj)mc7mXQf9olvO;}Qy&!EZQk=IMw+(c*rw<2OyDzklWPy)Mf) zUt;0YV3>x>Z}RM+bkv0U(nlgSK-%{@5r80Zx{sRZc)QjBXq$55MQ*E`?@2hQJ^TbchV))W~{mewfbDmOejd_3sqSHAQ@O*(n0CxpC z`dQo8R(x-Hpn3S!M7^7edfpp+1=9%qtSv2-SW?hQ5=h?XD;ICESj0L!v z0_HHj-feZ3pob^<%$7~fquW1hh70?|0XIy!n?LE*Ka_C|_pQe$UzS5uaMwh$sXj0l z2alZ#NLuYj{Q~MOS-xe^zPggF-GniV5{}x;>T$UFpX!1%LnI;;?+3|&@`JNN!r|Jq zeTr;1hBf@Lqcw>OIG)Q%U`zOOZ_j~sQX{NQg}4n_al}n|B37#0nQ-w^Q<7f%v0*k~uSz?} zpw%^nmzMdiaMWdg70S;TtKP?O5L!Md#nA_vxKEa(ZtE_WPA`7OcQaP3j$4PnzJ8n~ zcG2-ewpe}jUczvu^{>btpQqZ5Segu#q(>W6wp-guut>F3!hCC)Y;RdB_&R%eXgy%1 zdZs+tZOE;-Rf)^Y@g2v|=}ovE#RSJ98=r2D|NHvAF`m`vwKa0YlXn7XW87&p_u|&; z^_}IwC=_ZD8m%dqueRoE$f2)HH76N z?$%+CSJH;*xwW51RtOxH%csPOb*LTKc+#JLA0;U>)d* zF@LU{d)Myza9k&JhVk0Ok@^J)p$A{LzBc6-iJuMo+8VQm|5AO(b z>kse!85h1Y>V-a9QwBt|ekv$p7!dMfn62fz3RPaN4{j;@`G0UCb|B(~?U&ZAQV( z>=n>^thZpM?B+RjRJSq52=j)+&aG+kiyA}A!URLcS(EVS(7L%M<5ERMkz3MN|xFQ#^8tsb2<3p{h6$! z4(lw-*HjaME2PJrtJM|KjuH&-JkWV_(`lyS9TG&ul| zKZrypTj(F#$SFz4Wm@rd(<{`MSJ38HD3{A2M7bcw5FQI8XCwoQ3-rJfPjBmlbejae?%p@BioYT@5ofV5LcEDzsG;!&TMCT-LdeSU9E^~1&(YD z|5p4q)|YRA^UfR=eT-^kN$m7F(34-5L<#KSIao&#>1(_Y5TF0JF89|VV-D6m=2QDq zPC*lkeHeh(xV0W_$(&PTxpqN#UO<-qZy7fmzC6)!^l!dS)*_O`C_#zv-g4w^L>Edt z$ZEuz4Fu*Y(p^LepNGwduG79^3uX82u*0DLF`U>s(Tz${V%bBSUHxm%*86J(18so$ z#GwMq$OKaXRD;<(w|L|iuAP7sLP97vPrIp_3a(9pM0$)U5l5{Wl7hptCMg*0XxdJ*9;hNo#TxdtZY z*_DThQiG=!B;Jqr%zhN-=EBnHxgq26vQMPWBo6{6>MiGS83Uy15P?>5nYYB>2N{QG@PkczG<}&WQHGIzYSV7$oONBGjV-xqgkvjlq#$ zSEIA{GmbCQxrUdxw{+^NjQ$QlR7l3<;F}JAga5cI=Z-medyt$>p+XpCO>idIy%%(p zdBm*t1`w4ix1(r|5>~&(m?OguRCvjGTy&Sl$>uH-8V6~Ltn>Suv8OtVLc?8l>YT;c z*|`Qw$)El7ubG5*{aj9>chOi}ZPQ?&D{nV-^Osa}!IzHDu}qRPN+jNJ=?s2)=W1a# z@M*$613?o$dIsrWx@O(-fIW>%af5$D7lhTfw4T?JPJq(7{9= zL#7cAT;g=^X#Ey78;SO~p#XU})PqejWL=!t0&QY=;EsC6;kE zaLja&9J*0%m_ZnFHXB{x#2gM$2Y1DcHwVshmfUivPqgRZwbc+o3W6VfD!ON0rsQqB zC}|csL==%MKo&n+;4oe+nl{z-I_1qu=qMj@a&j0ds)tmz%y$#0GJ+sA%FXd4Fg5`u~t+P+( zRY!Y%X7!(#|Dp9n(b6ODUjpbwhl5uGXZ|i|xjFxb^y55Gk{*A?gt4ztbmMvKTx*p! zFm^0PJYWZW^(?x3Cq~2fP4}5GHB3{6PSmLuIz`q4WchR7-n5I>UxX0ssN)sUn&=>s zqK7^N%Uu++cUXTfFUwe*3tPYd{F3Z2G-uLV;*hCm#`ixGfP@ZcN@n1e1tVR1O;Lkh z7Ci3nnE>Y-r99n}`Rp5qVcHpF%evTt0-Netl#NP$1H;sYI!0zgjCQWP)Y-bLfBq9# zoDL)^#2Sb~5!HV~fauC56 zJ@rDc*>)aRKo4~YsSZn3 z$&b8_3MQxNr#^P;wS{+A07C;HT&nm%Qn z?Q0gtFN3ePS?R-Ks=Az2Vv#`#M_U}u+kSD=Tp|%}SS=7*tPt_n7tt6GhcqE{cpUhf zsUN*A>-mi5te!T0v;3U9+T*_NqO!5an7dWa?8tgZ=k>bmZG~*Eh09;2U$tQ<6CU@; z;GxicE|VEs#Uzlw&tGE6nKKJ=JljpYJW;i?H{O>@n2x5Bm3Ss|Mykd(xVnFA=+jYW zwYlTj-wH`yZNPcTzj*tJHCD35=L-E`bmd!M1 zG{ZXD>~3Z2b#;FkQD59M^swWRY;JjiAlF(9_M)|%J+A$j$d1&MF_=ar(_HU;d8s3r zs{=rtubM7}qpTUZZpNXZ^qp9*T{h@Q$SVZeH(>Gv6J(n#n8@dm4i} z`;vXH|gM6nmJW9QwAVee3BEtqpQ008y@IvAcmw z{urS9&V_R`xo615pQbn?z76SBX9_)+X`%E;-KX>;8cXy!f7r8q$P-TsHVRS)&U}Iz zyCG#FJbwo()}|Bc-)Ct|58W4y2ntN&m^kM||DM5@>?>xss{rn;%4SawaVVQ{4%mFf z+~Z!Qn9m=*oFOB;k3X`V_g!#dc@T;-OP!A#r1bAW8-nvuLTUek09PUNgwiu!-cD<^{{OhA@vf3tRmngQ0$Lbz~p zq$Tvp1!koRMj_khA(|IDruL&5!2$bc;rNq&Eqb>w+3%oHIg6L{;De)_5JQBxwmMJ; zcq_%giZz;%|4id&U-8$h$KH0Q&kmmBp`M^`A^_xC%NR?>D;W+IP>)(zA~yAi0WN9p$v2^WfIaB7-n2b&zAn%HrK+uRsV*P;_JS%}{Br&rl>Xq9^! z_|1R}g!NVh%jw7R{Pc57DnZq0ZZ*;@n4a(u4iO;(S%RW()c_9dq|%7Ti-&rB`5l-k znbEjjD*3pIQmz{D0XqRlXkFt&XrSMim)td2b+T8QBr%5`u%?1LROfn6Dd?GPyM7T6 zv^6jJSiu%qAWvcXtg`C^!)7*)XVG+hSAB~zN~Ojcc$!UxfX_ZyV8oPly&~_kx-;*2 zq^x2u?v`J@h^ocK#5{Fom0F6AP`v(^(M{+vE4BhgtC0K z{ltFcV@%joi!Le8N(ukEj5D&(BhjcxJ&Yt;&yU3ZuyC|!R>wI)HsZtY8o%FD?Zjj! zQzz9FMjf0+sN#%&73Fd8+|MdetC1^jiuva-uHh9cdTN|5Kh=O-D2dQ&H50_-_Qk8p zHBn>#DZl;pvdS?Q=2+(~z}r>~HGdE(z>{`8;+ile1QO_nHTpf&Z$te6O(J{O)<-F( zeqhxc%x(Nm^$?hQ=?1XUWGX(Gb3Tx)xyE96E%}A?)?u+qzr;h@8R>8?{&=g zZi!E{F4NNRG%rgqm2enEcrk_ver^y_!DoDom5`8a2;W#{%yC6Ze&a^6(y+ly;dJI~ zM0->&=Uboq2l7O7%}ceFSFKF_@E*HkQvOwwDM+-PO}~0$ENld zPg-RcsB#k@{{VMJ+X3@33OImlC3;5Q{BSArL4t`5HvTPMhlD5i4vz*+6g0!RhPz?T zjjAcGjSUHCcGPzKpRsiiMtU%N&WLy`XaQ#=zsclG!q)WLIcXK(Qs;pc_2BJ8itOEWmmUysoN$dJ4SdLO$4)cX32|MAut}pL@Mb#9LSKwH|8*oL)TU zFQjc7<-D_eDp*`xm?3fJ$*dau$J(gM2;S&t*rL{4ak~FY)X+uy=?g>m)IQ_l6&qH> zi<^d$(W9I<68J1ujXo%%8Hvjk034O*u)qtR=1tM1Z01#%>9pT=8zbox2|Kd8F?^l2 zt(OUD3wqi^iv@2O^V~Y29nTLHgk73F@4C{!Ibwwzv0%`t+*6yKaT`hUfJlNuDL8+Bgk>9sE}*US4(X!xQ5?yGbjJFbD_jDBHGkRMYF0 z{Bq%@Go}%GGG_3#yeOttH11F?)h+;im?g$^JITbon;W3Vo)-g8px7rt(fNM%RjGSS zCIB{1Ja7^{Ay7Apx1-d{-=QR0=G!h)F1x9d4zV|)|6TdWIJU|0Tj|q!k~} z!k76oI8UO->LuM(peff^_r*q`q@Rr5?aW0KP4*#PGRuZOjP2tzci4%X8uyC7*`%H= z<@GAKWnFg^-uFSUG$OoZ0w#;TJ=l{yPbh4N4X~Yl>m^b^Y>)4uEms_XJz~VW@l4gX zAK-BWu)dsQBCgU&G`WacL^%hTBdO=P;Puxgwk1UQz?T77jR;@Nx7Z-Jm$(3W>$M>c^3T_n)fJ1lAE^Luodm*+ULDbPloTZ6x5kt`_t2!t zxPRuc7|8wiDV{R3EDLQ|KIW4{QH&$$9azam;Ps*COG*zKy9~^Pa`u#w#=^g@m9FWW z*1}Vq%?f0J6wU-(`7+z{;HVGmbv|Sf9A3h|u*i^vndiogM8d-ox~C?^YmHm=+I4S> zF!~5h#v3^m$j!Lm3fTtk}De#p`7Ct&Nw~N9SJw%7>A=f&X|3rcTBY^O7)=+9lp$GocR-O^PR6nD8CC&QhP%V)r z&O+y}^=-l~;2_Z3#W87=Fz0%uQs|-jI61Sr?mKbb3v1fCz%a9+kWsra6&503xiGA6syY*Xoy6gnPg- zHkS@@OfbSolr(Qe!C^Noswr~sBX7Oc5-OoA=@zK`Z_ttVcPk(BO$YG?9{)GKqcvPl zdNof>MuxML-*SV$&JKTl^VhD=^rZ2+JhaqDsS@+}f3){lPV%Hq#;|U7nV5ST#Xf9B zANweTS1O4^q1gRhD8?eBSPkL$7QJ>u3>``-Mr7YCrG*}`z@Cv{EQk+UMqUauu>NU$ zESO{|{jMkm7A53`3}Lv=)!ZqdT8{O$gQ%dRF|c&BZSlla*^%=>5YSv6iBG@vTB~XziOHkV4X@ z`CjA{&eb%|NA{Neri_mhAX^!qtO^#5OIp?QHe+K^q##X1U_Gjk;Kl4*Bl?W7b{NKP zLu=Gs(kl=SLjG6#gwhE{;vHhzT-X+kR)D3Si?u{-{m2Rb zrzH8bLYI|BV(lRxRdr*+=Kw1r&w?rl5Ng z>#03UsP<^8(q)5Nj6HwfOQ}h&;#Y$`qP)V?ITJw=nn3j_YIgzcq_hYd_2p9hT-8(s z9*sN(QCkcab*XMAnZg4hw+(jkvOWgxuL4JU>>#s3yYv8&qlNT;&+)A)5%v!%@_XBj zF2ehf4|5uz%WY)EPhw{bk-95}ZF(N)o|{P}QmH$~%x$dPiivv68w2Z7V)({(G^uCV z^zcMx=XYO^qe*Ptr(TLK5f z8S~vLk3KJ;fB-n$F8Wov>TsuV@I>yq|bFL5064BpcVz$!?|stVBzM0c@!=I`A&`!2tvC zZ81f+1t`mF05#OJDgYVN%MY%;|ERjC@A2}oKe&;7Of1Gjz(gagVT=y^)-35u-gjmh ztIxh=8xjc~3Zbc%$;R8J+2 zJ9{`pmXb$Kj5Ez6gHJIjS{61kRMKyx+hdM7+Y%*lnBab&#AOeZzL6xb*Qqr7I+GsnaeB@jxD3$ zNC`Fg5mPEfjD>Uel9)0@#)j^`ARq(PPv@w^m;|1M9x3 zG@U73k7wjep>2T+hIxk>228){i8pLI2&?ofHhocG@Sc&f!mzpG#oETSzQaagJG@v3 z<`!1A(7b8X)2IAx9Vmm`y;_fyQ^?w32hxN;@a^_MTA1T{`6KXl3Pe1iOOmcwR62Ev z2J#5pR+ePxuQX5Pbwufbrlhv;L{QtX7BDhsVP2?TJ=7Jg#BASB%kD)MHV8#ot}PH7 zRlw70rTORP@9%|v90`kKm%X~mb*r6^Kg5)DMe^q@$?Ehcn+!3>$p=&Qa+rU4Qk$dD za(aJiLS&GOtAe6>UK1-WPDA|pf$oXM(9C}rDqYbo(0xPSalj+T{|1gzpk(aVNyk8R z96o&XUt%}+w+Mi^lRjC8jf0DJ0Qv$tDO{5%2I!7Pj43*l24M7eNlNzps+%yvGy2>S2y;?Z|(pgL`0>}A%@X<64? zPoonGCa7yF>uIq}3z1!qi3?;sXmOJx(2!laN#%n#;l|IxyN#o7ljY12LI$ZSe=ieT z?VHw#%%#cNy795-P=mI&hVA@1MRp%f2>7~>DTV=^v_ z?s=?`|Arx4aCY`7bl1ou3$%aI^GuuhroR^bg%$t7pF)xplA#><$*)?J5K~{z)y&}U z_?ldqP~vK)A-#WV zF0-bWxR3)hCqKj8|I~Ku9m)H(v7cAM)GBi#Jil=T=Zd?uk&yosIAyJF8ZfdlNa1dW zpCuXlyzv1>8yes_dN5nw!xBOr5bsFL#NZUmssX&4Vt%R5{(ccnBhfg!>Jt~PTP(>J zz;HWbQr6^zztaO4G~Ax_9M;;$bR9s?SaKc%Tb5LbGE0AwwVqZ>}8$|N~j5`sA znSfE80lJyIx2;Hvi4J2PpuKmnpfgQm{PZp;j?04s!8rZn$^J z-HZSUatTt2Qj*M-pi_ksg!#VDTvf`iA;C!J@y+L`2V;~U@sJIM>xM5SqdB>IUz^=j zxgee~WuH(hs*(2#{Q*y*xk<_T&xX!%fF!ovZk1?s(*A|a@_^sT&Xor@c5P_Uuk&R7^Xp0cu3fe$SPqwVp#P>~{NV zGA#Q?lbfuj#CHF=&nckOZkkL~n7L9+*6@6Ox@a#`=FtMuyk8E$G!ZzT3Wlu z89rs%UNgO9VnWY+K{y4rIMTy!2qtD2qHGNwLMT4)x?e}3q{~^s&YGO_(Acd%;qk9B zM$MVR`I~EaUsS9qx$$ErD)b~kv((GMmjPoPc}Dg)@;G1Q@XKAsvGK;O3EZHqd%4$! z+Js?a%5;7O&(ppYaDWGFTy*|aVuj=9ae)hxvOeQm*zt3I<$u#LI9}#c;BL6Qn%LlJ zHUhAIs$pyDxGHB-f(^Y-L`_V7(@3YEC=2}j-PzF35L8mH(-g1x5qa+O+i86s-zCjd zVmS~>gY6NZg5@bMY}gu1g_hq&s}#5Y9`M0d=|(THCXSu7_iN0)(%ps})iMU+aLw`G zgXyTeao+xz*u&;TeDL$JzO+&&DIYwbYfo4crz`>(BjsG;Vr(q{@C=J8jKp&4r$JAe z=aNOdT71!)e7S1p=qaDY$&sEqMnAYP8H7L+WlSw|vK!EbZ1hNS0+o;qJ@ji_uU~`; zO@S|n8P3R|Y5-TZGTza4=9aly3y)IqF|UNZ^cJgqR7ox^8gX`^_D8w~avC{*`q4Od zeo&Q5-z(iC=Ri4GB-8i!wi#)9EdrovaJm~gtJl>~#!cuICfMMGgp;Ihj6;tA4yu=` zhxqB74o&E}(Lgy@jW;bZ_RIre+>Nbu$^NHz^rukt=U1cD8^e>fqt%4ZkF;!;Ok@b{ zsN4uowDR>@dW*uP=H7ioyygX*`$UM>T2z0Jo?GP+K{A{QF!U0)_Fe*|O)r#K=({AY zZCFRbulhfJ_(i*--uY3XF!qQoP9I_*q(z zl-<98*Cj9>b(R`FjZhAm>ybc$#Xr5Xw(TWI+N*Ct%CAsBjZdanqBEe?w^!*+gMH*{ zxQ|?Vv0+E;A4T%D1Hhu?vAO+n32!!|_ALN$0m{B8J9Qif9e?OJ*%MkITY7ljx4JZx^W92%?OdZj zRh%(67q=?@;c}t=+jgPCnGnFx>ETLhwq>0Yed203yVDll(pSYer9ad5cpE&j7@i#G zPZE`#<;XZ(F=E5MhvE6xTJkr9{>d=L6Hwo>6qh&}Aq^YAZB4{+LTuK0^5kEQ3^Gb+v0DT@eVdmb{*wuj?u3_S=(d5zA$DQ3g zX{bspF3RmvR$XvMiWG=Ar0G2zo+3U=lOo(@@|jE{28hThwAolGz89?;w6CiE~Q5%+E;Q`TJ(~!EN0ijTu1peo&VjrJZoH%#~+=SY9;I@fODne zcw+E13Yg_xZeZCgnLqhJuN*=O=XSRtVXXA*q`BXwJz)S^ZnJ|i87uQru2ti)d_W8L zPuX}1+%cCW2(1|h$4L=nO9Jr;4U8NpkWH<0czu{@Qf_ORSSKTTsyENRti{vVx@+}c z?)obpm^ahe;2QHo1*w>9!*cd4M*)Aa8LsiSFb;z+^ivA?N*wYHZ>Z$v5pcz#da^C{ zA&5@mTsk%sJsT&$i&++DFjyyGBcr^6x)oq&T~(9iat6GmW6;Q|oqJ-;{_G-Y-KQtI zGHDMyMk8~2gsaTd=K`pvr%u027C7REfPre4OosE{uV|qsWB!ao7d((7oX;z1ckSzG z_Fd)Gzv^2BTG#27fBfCcDDm)B(0t}TLn9L|<@%4e*b`G4GXm`xL@qj3ywVe(nFDQU zIwfjm4>60vLwsKklLZkSh$U`sk@qYyk->m=FFC@zszI$tCDcQ`v-KN{;^0Na9|U<7 zTTfcm{~a{D^`|Gj$@~y$jKfuFkx>h)WJ!{nodNTIuJsn?mY>1XAZIO>l#!1ju8Tr-k z=@U;n6arDV5xh?of1oBa!fNtDx8&H22eTIxuA(>?OaSJ+_EwQXH4Br1*)MNNRtQVL z2ioarw~BIG%(oR6Y#)L}0@{jpbi7ILRMvur9)&rnPE4?xbWg{&SV!&UDm+0y>iK+f zB>>tHWF~+9mkR*&rHds>cpL%0jasN8m7V`6nb<^J;;plADTU9MD3U!DHo9ZidbQiM za~FpxxoO~oqCJ;Q^5+{-h(7=veXNItY(S~EG0^yC`JwsdmN6Ammzpl@8SJj`$ zGV?%GWVk2CnJMP@)1OOXCSNDKz%2fh|9mM071I{;G#*~d4{yUj??B9*Qu*K3Aaf(G z_Oz}=A3di5mn=h+ln`gld8h5$L#vbN-FD$>&*qVZ+oXdSk zm$h=@{}@c2MWzgO(i>jT^n5ZSQ_}D)H$b+pWxx1cX|DW)<@cJ2Kj!z($z0^gucJht zX+YURpj-%fS>|f43ruD2YiE~VEPG3K<1e~CJN(dEMCMP@W6G62VqaRs;Y;Gf>wkmg zQ(A~OlS~>1(BJVfpxtUiGx{VLt>K>426xGa%Uj6y&e*N=Yjo)jjZAKL8`I)@IS%`o z^nMF03d9qJP0(sqdl7!-&FWL1%6oAp1GluB^UjE`L^+LfXuhv_>NKO&=auWNMHeXy zo#9BdTYF$78VveL3rZWC)cQB*En(PofdoQmUH?gnf9#Y{3cJE2`WG7TT5c8&tOTd& zV*SQ-$92?84fEbLG?{#7M*vU@!DO7bW{i9M zquH;0W}qkkLOKNY#aGX21LCd6U!c?895hvA-$>1<5e1H0z&PSan{;?@abmOP(9VHb3MhvFE*_9?98+7hTK8l`MY?qa~V^r*vwq z29Fa_-8M#w_nir@nzl+%+2WuC4#BgP-s=myZYXL2`Wm;y>$*Gc{yqXj9<_l^-sp(! zb^btekp*8G9v*1F@4d^Fsuw7*V1{=)mdLfGH}ea(OdR!gm;4`1Ujfv{^Zp$|&|<}1 zgS)%6NP@c+D_V-XyA%q=T?)mmKq>C-#ih6f*W%8b?{D7!&fH|?lHBa=?X5f?dE&DB zY|dU8{nyH?Ug0DIyuSM`_fI-68lsNCq7g^TK}m)CDHdD2M3u@g~W_}(l=^+^uXE_%ekh%LQsyK5zl8B z%>(LMJex;JMIR);VA+4Y_FWPt2nGkyp#Rm67$Sg&8NRd|FwN8?`>&nrB}!43{;R^= z!=cN=7-FiB_^fR*F2py6@0v-S$`JJS0wo6GPBzH^2)^5i++QV%jPD}ef1@XiU`9s% z4;|#B6;(R3v`v?6b8#w5y#N7pxA^6$@kyGez_nQ7AbBr_r(Wf8#m5g@AM>DQZ1?|a z9Q#7aD{Nlk!SCeIl9W=^0cT$CJn@Db#g$KqQ$|rdzkgw%x-r5_Y~raO!6J`J0V!ay zxy$;^Br`-UYE3Zy6B@tUm-HV)dwn+l6@WtX&9AaE{S(w!aLsyQN|pRuMq}D9I8?RR z_YX8B154+jUd%(k2E1EqAGD8b@dpyohy#ykgXWD-WDz7W_ijB5>IxJHV)~eOP0}&E z4j99`knBn$pQOQ+fe($%GTzVb*SEaO2J{C>EaXrnr}tY0f$f5;;Im#97uOLfL2(L- z+XS<@n(_iaE9p5BUxxwUAs?E`dv6Gh(h>RnOz!CuHdQb5;iWJH~&`fTRNIoPoM*xm>)fq%>_$;h>Ti#A#RzrMh>qk zZjQR=QT`T*22TO7 zgvG`JwNzwLKs*B*G0NHDerPLfLR8gYo5W*a@bU1vdBSxq$Fm*TRW`*}0MNg9!ASG< zl(DeL2M+%UUpt;^aQScvu8XXgdwYN{-^wq|X}-$IJ{*<0s%3`ialJRF>3_fFs`d`X zf)>Laebb=v3PvCqJl{3JC6KtO&!ksw06T~}VV|~v)Nr++fTA+hERDqHcoR&vM9KJ> zWq;(fy~%W4JCwnxccOy#iRo&48lcMGJIY(fp49RE(nG$djwFIeOLV9YYeI%TxS0`2 z0nXPrQfLRhOi8R~^uSLib3e3%D9Kno(>-=&QzbvcW2Nsz6O2r!8BEy9VlXR!a7E|^ zO4D8r`DM8e^K4(*b;;Y#$~}^^nYxw;h9IextECN78qoS!*Ah|^#(*$V+Uut)&^h(T zQSAI&n)udAruo{pRql_N7ntI^*g|878kvE?@!JmX#89zmaEvoYqd_^4+*~%`(B-VZ zexIW^j#*#KEs7+9{D54J(@MIx;xvhEQeVw&7N4SuZ_jYpWKzJhd3tY_-T@NFth9!i z#aB>#FjZ&Y>D#VQki`2!1NJ!{c|eY&-BP=WEFh8t8-lB>FQ1|lOpGS>AM7)|^2e03 z15EW^gK2W2O95XB`cR%8RnWcm9`(g3w(41Zu^=u&Eb^}G&U_}&7H4XkD%(mFt7rQ4 z2q(MRG}T3$;Ep<(0Rli<&*s5~+5=MX?0|!-#s^<7i#)G*2Ow{aqThLT==zR#b z=){fbL9RuVoTh%vd@dWE@MVvNgFP-*F|AG`RGI)dd!b5(#aR0;*D`q56j$nj_Oux2 z72jozI$7NY)huK9Xn;V@U>4?Miww9Xg2;kX>C}%D?9{CECV1H0TIR!x1yTnQlUwC#29+6|WogEKTZ1iG# zia5$x&Z#+xg>5%NSRnu^DRE}gQ^uh*$WH^CBKBxE?YHsLK+-o1%k2NddvM%!%SJ#e zr2%mMH#YP;7)?nN!5uIJXQ%ncFmOyOsUzK6_z-2Bp+hor+)W{CF6JksDZuoIwg8_i zPf#Md)Ko`m?A}#la-lEI;eHyNu|3l?6^$IQ@>pVTYH0ydORYwu#>usAly=6a36eSP z{4n=B0a+hU+ z(-)-Sb*|s8g~0)wOUD?=s~n{W=~+w44QUX+5P=hZJWLf=B_Q>?L4`E%*OhkI6=!PXs^+gfX>}M) zCaG@*wT{F8Kn(9sgT_!`uvaFLJ=U&-h*6AAkleNDblDr&Jppt~tQ5pOfA6UK z<$usXp3br7#S(@PT+vRU^>KO?+dUTeKkNpMOu(U!riq&B(9{vRM(uCy)3N`Z`BdZU zb=H3SFc9*$1sU@Oc*BnXN`%?Y%2bY9wEPbuGCiZlPVl{&l7IZ~H!V(TL%Y(#aqY4G ziU4z%?Q}$0Zh853?1T-$a`7I_cG6Uf%WBP~tRnV^`PSnwroU5`G}Ev+QxXjP!vm}LEj{%;AAd zE!--VSA{}T`}?oT6A?7_y*HKRFUXjD!22Y4*ad0cc4YKa6YJ2T4Mfv3oj0f(>d+1I9v#H@@VDCO$A79@gn z%jTejODnkCt-JIbEB5v$nNAL?Puq$~VyB+4dweIHrl6gc5iUCLS3Q06Owfrd2^QB` zhU!9+BBE7Ci8T&yk2N(I_P*{TrT>+Bk}d)JJN(}rzg6a0I|pMo>$f_1W`^=Qltdfr zHZtKi@r}FHOoTx_`p3RFo~`8LA~7O|AvVZmEP&}U7m^;-D3-7V9uq~~omjxQR6p)jxDHli_a;9}Fk4waH@V<_N`t#u91V%8hz#y4G!GunTh~+UGk#WlCx#PLHt>T;+-kzwFY^6xCO_9>q+pq2{8#bI z{en1B@r}=Bz*$EZONw7-QX2n~%C!hiBFpl$aX$J79IM*I+SePPC5csI60mwxc>RF| z%rAwtq#)bcZ$0rLq`nz-tT(XI>f@{)ZvW)l)XC5#qD)mC>ZiWN`1oTekXjnR_>({J z3E^Ynbr!0o`pMl{CfB*~Bbs-Eq%QU~1nN(;d;>P&lMmB^%z zf~vG06HdiIa+~PZ1PDxa>(>XkaqXrcmPsfSL6fk=_b&v|P>1s=LDBJrmHy_t18i_L zRBj_?3wsMEu<6@!kiUy>F^ZF@5T)-=3t-R8lEKE|rlGMlm82{e?7uT3Av^0RNElIjN! z8OsGaImpbJIghDJ1I0?}nm@>6D$4~+r6VldI2TSNuR#KnB&`9JK;nrLqV%E%%!|d=oinnZz}TLJvsg_kRUjOOV0E9DZ92lOLWJhkDa4dh zw4U7BjOEvR{FoMq=ZiP&_X8A>C{-x9KcFeVCFD}8awm_v^Cn7IcZqfgi(!QdCj9>6 zhSgC&tCGU1OTBei!!rwpUN-z`<9^Oiah(`m8b{N**HHRn_nmsLVtX&glOXviJlWoV(gYDpInsthSknUmg0pmxoWt%*wL`$?Dc z)a^+3XM>wfJ~gL=U3O`W8cVP#t~WtggvhSztwghvc)Z*TGP7f1DfgCTe@8D(>H5!N2}wnq=!Q{Do0MqnvISP~D&ikQLpxJfmJ*ax}v)GwJhq%YwcL z)Gn=bfeUnC2Q~lEwOq%Qv)?W zm4N&Ey?>)rPXGWRmzks#T4I-aR&Z~0x7`UWX3uJ@ZRd8m2V_i87l^lzAT!j>@y#Nh zc$XfaZ(|4pWEOFJrp?rLc>9T#Of&ZacZ^s+sy?BRb9b5X=;0!*b4C6Ic27jV`K!S> z0sT{qT4K75Wcx={gJU5QKboW1lMfB2>FZ?}z>iczX+L;4NyPEE=IUyb;J!~`y-5rd z+U2g`R6AB>nrVC^OHx8*3rC<(sDQvP{GYbzB=6kncpuf%>MdjD5{6qQpc@{2XVMF4 zVFDgvZz}}nC7K)$?HfGN7*hEitQLo{y5F{OJ;{5xNRM+jz_ZDpX~y`Xj98$&D!Y_sNyxU0 z3@AH^EaGBL1j?DbH`Xn?DE<)%twWt&%1t?xTer15Lr~@lhK4GZBoWgdAH;%+n z-~r)jT^GH;EL<}Z`C6_MhEt--->=j z=DoZ&_$(MaWVa9{E$fx7ysB3~rKVq5rv!E!2mSR`-qI3>-mpjCm-hRueckPviIfdj z=jJ{-%tUcPuVUWN^$GqtEK@_2Ht$G6s=bXpO z^-s6n-{9=M*G^5q8iB7LNmt4bXc}^;A?4k;XO)kpAi$KwBvcb1DX#`LXIfw|-?f)t zk^C8UD2lmZiXISuB!wlr{d^Wgt#+| z#FphqwWylJJQ3LIDj`@bR(`-`qa>mex1611!%g>y)%Y=YqH6o$yT{PF%^pSTjrY-s zB1qXp6w8=>Me2<`dAIB3o*7ZcP+{5LI%L$26QGlFx6&&3%4w5$%CY1C4T% zS*NJ{>M9|O|1UbBvvE?gTIszdCL{Hurgu@a0!Cs<`)MJaY1CpTf~Om?Hcpnv(d(82ja`n%oV$h433{kl1{vxTIN z3q`&uWO_F;p0{`5Em9k%;qwNHWLLGst60GG{ob#b^}@NLFZEO}I8<#4o`k&KZ?EgKkP~t+gnLPsd*KA{`Sempda4>9yT#Q zq2~=JTf?@YAdeJqZYYV-7XEvi_Iv43jyAR9?0lcmqZ`JcJo(QbC2jQ6=R{2E(=6d| z;p&jehZdrk`iZN^eDd?_joe~L|McQMk6uIlMEb_r4x~mapFwLG+t+M}=`{bj;GZT{ z7|c(y)3Wk8)fw>zA{|{tl!WpCL0I<{`a7oxLn}ab2=}G<1xg?P3^7>v_f6v2-ak;Y zr+@ob=CS)TBA;aeUuin5i`TTBR}^rG^Ris$p(m!Ic)l01tI*-mUVZ2Bve)XZXsBd_ z_RGq1`^GEYUYB(O9d+lI&Yrzbo5(Ndl9%$67{2sBhk!yUY9XD$fiYOI+hkriU2(oF z>B|A#6F9Y>D!hd0y|;ep|%29ZUBwV^f zZn?X3eEA@DB^VfL;{S4AA;mQ#c|jDYu5druVIuMufQtBCNvx9KM;!_4bRL?L!4h5r zYq4EIr9ywP5(^H==I~jjlV#3e%~Y9~LZl$W)DOedCN^X(8a+>l`TY&J>GnjRnKnJ z>bxX9tFTSU-EBh_a&`6uTC7ZTGyYf9CM|ll1v?XREC+1 zh?HEAo|(VwzusB`BnJe~^8~wJiE}&dXeIpr$@(3Lt|PeerXpy^>75Ew`!;}-eXbhv z?V~XF$@k6e5yu)pmfv>6f_!Ik-)HdgwZ)~vEz6vWjU67#xNlg+fn1?^n$6vv zM?`@1bH%s79*f;rr?H-lm!C#<^O-XhM&i{} zcF#AZBvAr!8{qt7jc3l8?R2)67E|W}2yIQr(i$ld)}OG(4u}Id5G8CWQRMu;nm*LPG3OgRSHc{?2s`}qceFdstdx(n@+l|S1isg zzEg(S=N;^TnxQi|6D;-51QQwtifp;!5<-U(79XZ^UQocgU^9nDrIr;kz1?_pIw!eu z;*!|tgJo>f-}@cu7`56Lc`E-7@D#jJVE}IW^_1 zLnqy+<8S6zr?K@<;rgRmOm4h-34sO<1NF=dwPNYNea=eP87S}YN&nz!%lOCgU@9iu zXk|pmp$vb5DZ=hf_bNn_F;gy0`ZW3h=p1GLXRz6t}tO9ylMRtQfxZ> z9j$15k-Ly{@4tCR;&FAoKds~WWa)4;C}yjgV+jdy-RZ7%si#f3!#fP zNV~X-#L9y(V+(0Nmq1$HVplnV=ToQNVwj3BUCzsl#ykcd05|I%%>Gw85y$(OE3(Lg zWcHLLL}S`YBjGubz*5W(Zpp*8!Ki9LO2LM!_*SzRlbfoStu|NNq&Tz~Os~<8iudCP z<=169iHyeAkgzwX3dz}cdMXnhOITDk*^T0GjBr24cX3~pMGnlBX^QbK6J2(qt}V1X z&-`n{7tOJMD_=1bJY#;z!?lb7*l@2$u`IP8*=OsST;anj?s%x5P2b`UA;jIT;xFxc zxj^^DqB!2&5h!*p)`9kIOl!hUO`x#i$pKNl9_y%+V8DnuAdN|6!oL)e|1QhInG~nY z3Uc?(?IM#gM}F#*IasWteBZ>A6G9O0)K_wdxu{4>ZR*|0T^OaJNGeX6es8^Wi%_+X|trBOy2{ z(MHxHGo$VTSyq13qd&Q_%|3=ANj5b)IcttmxqQd{Yf*Js`6(N2=~29Gg}QVtRj^Idk7A0oJth|i$-*c*|4h>;ZJ?_1=rIr(+3BDp>b0ww$@>Fi0kv(F2qNE}hJ7W9 zor-PD`Ycp<2%~W*S0LW+#)Ot>owCGBQ;Qu%D0|xBzhC zWYu%M9wT<@?MTbnSFqXmZz`PJ$F$Nd5g7fscDa9TET5%4&XnS12Kh~ZlBW6P_rT*8 zOBE!>Zd7e?CODT?(3uc}co_YG>4=Ev@?X-CnS_peJl=TdXl=cB>)|KslU9Q0auvmc z{5a0(hPJ^yn-6f!qJy_fuGTZLa~9Ua3zSxik9f1DehEzyJ?GX*zH&y!9!G!U^~<2i z4J>Z&7v=_&0~j^;DWJyyPf@)sMKfw!;-5d_{fFK}>UCWwd_k%FLDRgWh+w`=10z8W z_OU#V!rIg|l#wY_%y+Zw6tE~iPw%U|Uz z=*d`DJhW-K^Q!!e{*#3!I*U(%iF)xE1CfxJr(YD7iCnhtN{*5qEl(OU$A{d8AU6(E+ecbUf1(}bF7GZ|sw`gp zg2)3=E0ri=Hl0)iIF)>kSlJ7r{*eT>?V+EePn>O0>Jr>+%Yy}}n;rV`K46g4alZIqLr!r*EP9m6dk&= zXC?xXjCdb*x*`ZF&JRaoMA@EM_ufRwkYHkPU{^{)nMudXnjH~Uz-?=TQdKMRVkG8@ zO)!GZqwXqYUM}kA`fo=TzLzY)BJuAj$>@@oRN+1!{u&YF7Bqik40Nt5%ax_-g#nlI zB=5BmsHI*Fx4i$jtS^-@VZYfFF;On+J^yAr+nlQA;{&xkMnc#7JImdd$M zrzJG{bo@o`{fKja)RWLbB2-&6*QL90`o(g4*S5;X!Qcd!n`sp~W^anaUGSOljJFJ^ zK+8mMuBY#PG@Yw;>n&bKwWTh}_%nL;R27L{vrkJJXh~6U{+vWC&{8iQuphacKRCB2 zFwe_m2{opY@~*OxM#@~V>8xQh84^KrRZ94Y9vWgiZH#^xa)TIC7W-6%C_j?8-Ns_7 zo}5{1sYMJEWI*A?igjlWsukCuNkJ5Wx*1)s$Hjxxl3LemX>9%>2U$No=uT2~S4OSZ z$Z!cv)Wndd+C(>DF;%@B_{Ch%M{{Hu*P2k5uutMDN|jTr`X5EnOcPU zmsi04u`X}F`-mvF@zC1hOP1vt-9xr_dG%$K#1fDqES}CiG-?!eAN;9O{4A#cE&J(! zgz4jDrl11Zm?7<-7dx^s_&}(MbY}Qvq7?Mh0@k`lxNIy~c*x;w0H!2SDq7{9MHe6Z2glbn?N zTbvMtj5%UDO8iJ2H1X_su;nyLOqO-v9{;AV=5w}KfIi4_5`~+6M0c0K4)QUyrA8MO zpcVrsvNQv7!tq!hD~E14G?sLC%PDCWpzD=9q@{v0JL%D8 zKSdgcs+)0Q)uJFNuc!7JpEmj{1EN;75XgEKOdGoaX{!!{uM=ynD1*+cdm$#<{a*kK z5tWMA5FFX0e6U8CMSqa{upO$f;6+5;LJYb5bc;iF3dO@xlxEr(|Z^?sofxl}0 zS4uI|t1;f9eEty|KukgLZHH7&UOr{LIrKP*UJt&(k94ug<{K@=w{f%5cffuV-4F61 z`hBjVlQyc+Znb|2NE^X&ITad-d&4ga_@jqn9i!Gz@J)2h#%SJDt3LZL zo@>|QlPi^B_Yn8TLG^X&`0IottfL$3-{LG|fBqmXabjH%)EyhVmj!VR2lw#VZjbKD z=u-t$<=tn(TsYMi-Z%Q2nZ5H)QDpd{fE)bqtP&RIsbL`kiIxGc+PIwaQzhvoi*uYK zjfL7xup|ax*_PQ8k}+YM$jg7(7E-YT_gmP<``0aqRLz#a(~}D+l=W!|H4m_L^L1Es z*KUOiDc6*!RPlz8NX}L+|%6filg6qMc;6Z7C7C9nNKhXTqvc z6%5I((0?~v%?{71x`VU1U3j+A?D|z?u~3=araaDAM*P4sAs^7be9^MsQLJ4}y`kWi zX`gfLQSLcu5zqMXhSoS>Z!4Ge-*ysc)D5d+yzz^&iFiUucDCBrTZk$79gjN zLgB_qP#-nCq6WP;wlcE0fZe_ih%@Jc?PPrqZW2*mwHU0PspNl0&1eW9thC8YvEBO2 z_p?1yCgbV1VPQLAWPrGoiqC;0^QWsZ9fg+=@@;+um|}~1`_uT~ZOL8+!{Za_^GG$w zPeXORogpB=Ql32q{s@ayDxXG5;BH<>SM)*BR9r7=I_9|iWejbU(sU{NcM8V1DtDzy z-bNQ~#p9C4T{h?!8w-`TL`C?WehNZA%8;dkKpj9}Dq(19^TXxT5G)98=THkT8QQ(&fUk z1v%iXc{usO|G~&WktJB=`4Shg+#9Qm3TgL|SYk2xx#E;uebsZdX>c@kr;kLIT+3e( z?_+-WZ@@ZXN|=(Tt2?42K6W0|ve5OCpHO(;vy3n9ZpPJEv8N`J*2r8HEgx^H z2^nTMQ{+Q6vIDfFyL07NyU0th^Ri)6mt85iP?@dLFIctfk-z;o!`n%T@F_wJ5p_rR zNm49^N6X(bhBSQfb7)4>GtQ+dZ$8skLQ1j%psEEHo4jLE_(Q<3WR+D842@{;k_mA8kj!HYWEx?$+q+MvsO@mFGc^8UIHy3$H$;7Yw zR(oJhr?#{}HERy;Dv=`lZ9;wyLN<7S#C_f-BGC#d9EV?|$D7IwC9mTOGKq2@e?u)b z<-L?UQF4$D@pWnI5-rrMyF^= zH9*vjs>o)fn%rm^&tg!;QbxK(dC>LU(446-q+hzF3Abl-`z*B5WL6>hfD)&aP18xI z-g0!fkS*FVZ9<7Ww9b#w+q*_8NOYuOH^~nd>F%Yi`oS^ll zp?1eyFO&rKiQ zR&pSf9)%4aKF|rPoV)A`SGn6I%o`!sCdzfz#p-d+?M$|cUgy&Y#}@gWSY zl8t|9We=jhqzA!!G4ER=p(RR!nK3Rj9c>^UVnWAW>O4yk$O`2ynJ8F}7}WR@AV z7^|0`NF&|R?I#5i%F%Py3mwwG+rErF)MJXjU-A4JyK|d*%6}`L2+ubbxuwsA1V(s+ zR<{1Ak9l`J!t-eoh8U=oq|)iSKa{p0j)r*8<`TXzE3b&FXXDlYPB%W3Ji`vvs|B~+ z2quWF!g3$b*Q|9Ov4$?aj5@2%N(+_NVxKbGRyacvdq1y5kvX<;UxF%AwR(_1Y9&B` z4~n+b`Y@D$YY1}>_D-T}`gj-(9p!agn?nP!7cw*57%g$R*m1Cv%G+Ioh;Y_)U#W`a zU`(M{lp}d&2WGzh3M!HoambY{Lms}k?@%9?Dq6>!>#olJy!77MEcvj)K@EoJmhQV{ z>5_Dg?v{XPl|0hgW~`5`ACSC(SW~rHG|c<;Hn^gdA>~VlE3U$IS>4I~#>6X(|0pjj zUgjU=kmvVCUPhzZG3w`_SfR|N*qanQ`xnD7_2;%K{k=Eiqddy^1^bVMq)gQbH~(mx zYsFdV`}89LRfAGEjQe9sg2dkU%Ts4E`ynjvS1h{Xid?fqsFKh^Vhb*wDW#ZKvu=2q zF`qK;Z}LJDhdX7gJyISYyN@K=ULKAtp^cU#Qr?fcJfoFYJ81#@ZAubS7Y%WtAT|A3 zKhqbI8F8YI)mf)WM8Bf8N!$IhyeO2;z@38Xr8wjtqdc|j%|BZ=uPWx0H~2NP#~dh2 zl&C9BDxGjVb9+k?7aO%bs4RABWK6HH+e4C5nXHrL7_eJT0hCwqP=)s5Z21COqCD20W1 zg*KfMI!?9X%0_wlFo;x6`ey@&#&d#u!Gl_$`ZrSgiIWoK3oSO6m2jY`m&78Q1wJxMsOs(;dHyFhb<_Tw?aX1?z>Pd74s zV7&zp>)HkQM${AU$5uIp8p-1xVr91MzLnPneS$mpACNLHV^St$vMjJJPQ@nau=q67 za`B^<=AwZ5_`^Y4@uf3;>{*58SkJt?1d5^kwnFGI9}y#q`lpcZx+TDi%S&t763CDz zuTpE)sV0tP$PGVp{>LAh%StSHdWW<`pqG$Eqf=w`WpgVNI;>eoi?#T=|&$6sA?`kd-Mqrc$xEX_~&HdeDlg_%=Q zN~I%T=jc!!0lxBRLD7|uhbeZemo3HxETapi=>XF)`CD^nj!Gj#l3WZy{B5tXBP$cy1D&W#auNU&qjxaXOYS9 zw@!J|CTpX8L%s*z*XCAM$Vo{_X&Hk8V8039>LDcWas*_973azWi))p_2KaclQMX?i zt)*qsVR;jyCEMOPMVzK^TOV?2fTN4SPh2vX(5nATLJ=1ivqD$TQA{W(;-IeptQ&AU zs_Oku6Fam=1`slSTyXyWLR6mot4X}i`GXAfrEP>KMRhQ}5_itPG$?#{&2q6#Vy^Ad z_i$hc=2>GbAY!ri@(nz);lIUdY(i_v-%#U#@Pl>vzt zqi`{}3R{nuOY_^ks&SS{j>Vz~e|cis`c>P%%M2wabzFp;d;<49!a^)Rsl;0o2}co4 znrFgUu$4;=SH|ELF^*+?l%21ntC!ZKIATzvBBUsOLOf-!=;@xhb8cSt_IS8KaJA&~ z2r^+J2Odqn|AC;UB#sv9hWmL13Wa=buL>lj$?*K)E}`o)h}h^pK!ytyEhYp2Tq|A` zLNiq})5Sz6d_a6t5Uadb=rOeef$dFFP%WXvzsJR;paGQ!0*Z2pI88>T0yu3ZZSybx z*>bttiOg{y26rnG%w?n(xyU_cj=w$}RkJz}rshNs55|q`SRNpkbIGj0E*VEJJ}(IU z2{dNtWQu~s52N@CDEBBa_~c#OYFN8`9eo;Hcb4oSAtFiJ<-p6Qm6~pYa4EAL{Ep4m zM(6z9A{Iz~iY#vTyb;z@z0+>B>oi2R)OWue;bX*MX}c1BHb6mx5Vmd9G2Nvq>!r(C;Vn-gM_XL}u@vE!YP zPiyG1TST``&W9-Kd1|;gR%76v%$m^V_nCDOVbm8^f>CKu&!wAOw!L%6_9{N!tu9y) zr(uZ!3}|PVlTXBH5xm0CdLW+^J*$ta`WAvC$2s(HArO~^aj-&x8gOFF+&1fy1Qk%> z*D`SNqWamoK36A=534qqyzCzYzmR$Qqvp3=G<+?O)ha$PN`oGa+-P8r?_*; z;yZJ-IOcf2zVKimMC0n~MS-zEEiA%LLuZEnl6FZF$LXCnCNsR0LE{y_x7{@qY)rQD z)XM!91vzuy+>3U`Dxer1`1TO+XnuL`&ajxf5S`0vC*E}bUVgG&grp_52C=X$Enx65 zL!mraj8kxC7=aF5Fib&ef+e?Z$Y1DfOu-XZClX1d8-uA&D(ra|?|bPFx=uf{f%QhA z4cVZ49{xk>M{42WxHsyo&C)bybZ3`$FkT2*;T-n9n*BO4%)sK&$qa(Z6BPrrN#Zx+ zlGAxxT6EVXZ2@4q6`i@?NheQL#!ilsdFz(b=D?tG&2^83jKEkQ@Hj%GvD9Q6XJa3STdRagY8y*P&BtHN>RqQnyWCBo0|`2q; zTk74OBa=U6zS5VjQ2V>v&((COZGNoJPrW@o6N7k>3_n%qQEgSAq%FScQHWmi8`nzU zVDLjtKUPkz{ofm`&mveFC8XE-EL z^P8~st+*9C=9inQnhQ$0V+xVl8t>IT@wR101#1A) z-Ae3u>KXJ)>aZYQ92$<3M z01pQ0>CLj%o{#qn|58S@sk522_d1+qw&&RfZ_1Y|p=E|<>o(?~be_+N?Te~aL3|Qq zpy=@EPzrqz;eRDVig3uJJ%4^#fWwj#;|cOfOCl(72&%#SXR3B3&t97s#8vvd>X>U# z9U2ZVvTyJGUKUSJPkpB=dp9;V8hw0yU%`Jw^a?}S!~*B?tfoJp&}gOn9SNny`1Kn$ z(L*Z?yS!gY?>FcR9tXc6BPV|%1i;Vy=>3AN3jefbzgNWm?~;6@x(cfq6MJ8#E8p{% zq5+8)E;yX?36JbPsw)b)z#>K9$KmOzieHcRXik8*G;=-6u`aMMn7EQo+*-%4mx7N0}*yio} z`Sasu@0U6F!8pwl_^W{L?{2aNRb_qfLcWiir{}usvVEgFfLOHx&TPqM^&eBunJ!nP zFC_sI%cvJ%tT@v`NOYc~DT^|0LsTSKDLUy(4`?v)oIE`}7_fEN^N!CIulT%=Q^PG!1= z+2@??8oT|}CWCB?{@-PhP5YoNOjn|xC@Rs3+3%#X2r|S^u!ewM*K@j>{u8wqY#cfe zevV-miott%-`AvIlwp+a2v1^|CroR=)-qet)E^a}=v=)Oj zkNaq}BGk%Rs}J=T`3rQlxWOM-e?R*KLrRs^xlN_IR>Ya zA+aFf(40n~nx-wn#GgOiwlr20hSFE49()Mz-?zQ2$rc;ny2V%7o!tXt_ii zHq$j46&q5t-{esf*AQ-oMKjUxI!}W{e53?M@f_cuBP{`5BqE$&sy-_n-{8IZzqmHx zbPY({GyTC}mP3Iv;E+X&Fz+a`;52(i<-zV<`<>SudP{5T88iJy4{f0v*B|)g@r68D zcvkAP@(D}{7Hhk~>^2Xb7x-*Nl8qAT9dE`e9qmT>=&EJa%qHv`SLfA7w0&dObNwV< zE3J@NO>pkNY1;e|Ljcnf@U<&u_p$CbmsO>L7($an5i~sIRPbguFSSUV+2gDg9)<hBn$4tr?h`zuZuyFssfi!V! z6h4qMCTj>s4owKr_Ab_@G4v;(?s;h>X=rwG3klt^b7~M4`^&fqX3Qh>ksX|%RK3Wl zWB+k)@h^R19|@SH50Y^JoCOUV&&8gb0#UZlx|(i8M^G^Z^?w?PR(5M;~m7obVWTM^n)I_hFio$nt`i3(L` zX1j&{B`ru>L>y*M?7eC;Uk7k*Rq@uBKwp@U^bRWiz4#iwvUGi;{0^)MTbgk*$_B}K zpNt>Ol&m6r5LC;0`r9O2_v6RM?pvljx;H#TRQ?NdyezbzL>kLDq+_e`pC}KO#2g65 zWkPxl&1b`EzT=>j!TRXXrb%T<%;K46x4yF0QZ!|74Asv95pHPfjV**?MZn56HghQ6 z{wZRw?_^5=(MWrQkJZ4SWrxe0d(mQ$4`IWeO6&hI^%X!-eo^~Nmo$P(H%Ll%cXy|P zlr%`gQc}_--6t!eMF8ga}TcGD@JtM-Ys?RBdBvKUkDBQzE*M?tav}oo;b&f%zBg|4Y)({buX9zz?hvYi+XQLHwhoFkv z)NqO@%HOpj1;$Lu+BBTLIv)2tD(FBFzr)gOHeY~dj5Wum5t$-u7f6U{=IGO`C- z{x-siTg+j*ua_Hj4>_|w;_|JGfjD+D#o(2um4+e)t!T{(T*8&?yMH)xMHt>HW^m0Q zNJs@|*hcT{;^jqf?mi}z2Um-y;?FG?w;!qeNI%F4ZF2_(0!;Vg7O z{p^sUl~nb$wf-~|xQw(aUImF?)qzR^HYFxC3_;kD`uY*S&W9)JNP6$)gge(H_869e zgN|ZwB`SnYVmC^x=0&RqG_4e7RqioXmY0_NuoqH1Eqp2yMX`+UUR}0^m2h*kuM}CW zJ|-^wC=M-Sg8w45wpl^%VbbW3g|Ex{lOlv|;4(hTFg+KJ{ZJbf?|?us;`k3mwpueG zTzsgu_37CS`O*1Gt2ZL4Tp|>N!~`1Yx0`6AKZhhJ$FqOf5zCJ4*UOI(NnFl|FO*JB zXE)OTyrCwXQ}#-peV<*DkNl1uC_>$j#@&uNo1Tk5aOI z{=FIy2Y_%)%3leQ84K^NKuH;vI$pz*#9{7&C6oLqY;0@{=Sv8kwAOyKlO^ut3Fkzj zV8-_>Kb|p`lq>~2E(m45Hrs1yo#9oRE-u`t$jtc&6YsJ18S&dC_Nxjy)Lh2D?6~+H zEQc+}9Btw1=?~88sicz?neJzvnWft?;|anTq}S;+@+!ZsTYpinC%(?1Rz|`Le_X0R z^8cuweoZhdc+8A*n9ZFj;I0r2eBQ09D0pkz%_C8SaKE!-J$D1^aQ(8^6PuNhVTe;? zATO*;LA9Za&8A&5zK;!W8_bohxc&OxGf5g> z73@ylmy6bxI_}VsChNgxPL!xJX-b%rdajuce(yuW-W;5uwc}wSE)ne9)l=b6YJON7 z4l4<6^Y64f4m#A+kJ)Y6y(&F>e%j(Q6-6IJ_oa%L3HK);6v>nrHUgf@KWT=Fxa7Xa zMfT-CbWIFNrK6_z<72KRd2*c>QSW;6gZ>`b=9;s@tt@AbxBbUZ>a27h>Iq(E?>$K*$A!~7DoAsn6|$D z6e=BADi7bEV6-)UaQz=VXA+(5rbim9<+o|<)YuCS!zRyWpjBxYSw(yIrUXuZ`2VLO zi|sW3MEZKD&?jl&nDZb6C@WkhGK0|Aw`3LNsgJd&*akc(U7iN+W;dfQS|#;+wR(Aq zU(ylBV|t7aX4|~#>b%ajCViu@$wev@-a$j9mGh?onl~lMBnf!aspp#4+PWYBR|3t& z_|S)$j%r~Z?+t1-KKY8|q@!D}ctjb{78PfB)j{FB?ED};BKjhigB#zowgVt;JC4)b@BA^| zCp`ssetG#IzeuA-=au5`u8)SyAnfS77XL+c?X84|$CYrAn_${WbK+>Bv`fFl0)5t} z;T|emDFujP+8=z^*9QQD_vQ9zVN!X+V6QZfJOS$rGeyCfGD{8>kBv*3iw-wQ`OPc= zCpV8t$r*lkzm4Bj|GQ(6p8vP^j+)}A5;yo#D@!U{b9FQ-40uL&7*b(UDhry`;uH2= z!7zOV(*@{RqZ(`PRA8MsEWvR<`zzOiE>WgfCrblKymRMcTjhj*$&QKDJsHYwH8Zm< z=8dlji($iuw>PJoq(E$}<)`>6W`Ul&&iCl~#H0&pBj|AxMg=uv^)Fu+X<^ZJc6rkT z&{k+DY$}Mef4g3*ku!YPlFGG^nz{sD|FQ3+EOr>cxzy?u==Ga0;t&dh@`{>S}KKmoI8Jz9NaE zWmxgJVpOs=zxfz>O*J+L#7mRH;@F;%*%&7byS~8LCh22LnwC&G&sL;L)kRDF?~>GJNB`{V~zKM&Ti_%Gia-lI;n2`0qz$Y&)gA|fK4A~60If3jbEcpcmKfLZQX5b)>9XIa>zcYqupwCnp2Wz0ay1Lrv(&JE3LMz@KZ6LfDosqT? z{`nA3X>S=KSlU+_w4ry`BL5APSa9Z%>z5vPBr#_BlN!xp#bGw^i+^@8AHnB-fg2@d zi5p1{At33y@fxVGCF!qY&$ak_zrAOTSIDR&D+sYIcD&AUgllAg3G=m>A?acIX4u^ zdDJbMylc-69d}R0?cjosM$H_C7Ez2Jl-MJ9n<#F4MDN1u^cm76lRukxms`8Pk{oA( z^J@R9PW2B;)aCP>?mb?otcMc!6?GX;44%Jzazm8VAilym`o2ovO0QeYK`TrJXfp6c(1qAT~jlIw{1bm*l$Jg!RLui z?A5J#gXCpgM;Iw7X*Lb}sni$;=_f>KMV<u>?b@SLMQ{MRCOy=z_51#d`f$U5nf* z+;_yfU1t8G{Ff!aQ>C}~TR!3CF(gs>4EbWhRlJ`1iqOUHwS)(|(vUjmHy+no?ta5* zrC%et8!$3Nl3q-1RCdVb1-o?hHkrHaHAr~7C%1dMvy^wr@!~~N|J`W(uXbz=I#qrA zOV~My9B27Ry{$lJxSGfBWAQ<{i8uSaulL?H`$Vp|4(3?i9&JCwx%Z!ReHFg;D{P3f zi?%|e+e{5c6*|JM-KaB)Mcog30ghR#!&44ZEu?NpYx3mB(+uX~6o|a7wEgtsc@0BV zDARlM_olVRfuXh}VL5}iT@`I+m!;G=wOF9xADT~qJEzs$G(ZCWL|u3k`iV}2%K@70 zHtMLeq_g)N z_(pCXo)H$)jz#^}kCoM3MClL(Q{t=uLYzm;Z5sM$716!0g~`A$Zd$J!GbDb~qK!WV zBG0kOzRR4u<=UYNh;cqjs8S_Q(=ad{bz)g~t4uhmG!=y?+~e1Nu0@kb3dtS6Vzq9a z`QejAS9)J72Txn^l5e3@4sP=IHPT!1xbaNmr1v%+39*JaIZdyJFkpDvUlBbS8TFmy zs=2iUW|7n}&u(B|MU$QDcR&4NYfm5c`GvEdttm&I_W0CheJK0p24CMa zmdc{!MZK}YRn6)JtGkCsbx1${7csInrM5>r|BkRXsrSrkZH-eM0pi{F;+APsLI|+- z%M!#K{zL4^FeOY)2>>RcT|oPlr|wG#54QZ)WpTG0=UFKM{zLg^vl z+_CmJ?66ri4ra+CniksoR(!rAEd@3uLZynB#Wn5%L#`DUOO)V_uxEMO?KuEzu~ufg z)UVeY?uV|L86|b)^Qgt6&3?*}tusmtmHsZbelt3L=lCCBe)(1(W44D%fdD;}-nDs= zXuK*+TA=1?rKgAL8G2~Y;HFFV{;I)bAlhvHgBk-tHZuXb;9Rj}sDydR?0fZ+|E|n` z1u6x=#X7W11n9QDzHPntruAQc*7q^((dF5^FRJ(}Qg=pZ#Cc9BjRBo|I3 zb?6@(!Q$q7?2{GdpdZUmPt`k^yn8|#!RH1(A-(Z!FZwfVY$gqOHkG!h=cJ0?KFo2< zY{!0$l6q0(^2J>b{sn}Zn%efqCroblceDx!yDAUDzi&g};-LoRuG9YwL%O}2X(?)# zw>md^WJJZv*Vo9n-J3gZoL5jVDvF4$<<4bX52J?8jQsQG&!r6wJm8 zQ<};C_1$0xmuuHmGcoPZsg6Cq84Ty@YG7c<+TO-Em&~Ni6IbjH+wod&6t@+81G<@* z({m>a3#sVOpBa`uNWS&-Nn-wt2aT*FCx*z0X__Litmy*@q^$n#spuC(4bc@ zUpf!0^!JCixa}sis)Etb(bK=-*U!YQ(EA3@q*LK!g&>8>YL&cZ^xwyHL(*oey9Vyi~FjX51%F596Q3*(2zEuCo-B14~%0rJ_ z44KLc{HBW|ois#~+60V%lauq1IS_^({;Z*~F*qff63NNMrItCuV!RG9P2mUDLlnm4 z!;A=5BpyB03Nqda60Gg|(f)*#;dVVwjX~&TSXAJr&wG2<{}>j6lI87L7U0aTAT{V_ z<1fg_bSxgS($d836a@_oe&o?y{DbEXoCRPS&j`AQ3lf#VoD>+dXc~bRvICf#JXrQKX@l(y3b{>tjq6QL6E^?@4^Ef7S8qypQ4>a z&yzLj;o;#Xq0pb@CnwHDoB@XL3}XKNi;s?;o_fxwztG6i{1?FTLyGrbsJBUcr-6*$ zUW#|H+Sz1&6mXyW?OVJ^3T|SPQYQn=rf! z_u8r%n{+gSTom}oP-!WO=VQvDc&TX95Gr%F#9i*aTBMtG%RQVhP*e1}?7kCob+b1g zGTxN-=_o_qnYu`Ymj^|jNU~U~Big9x{rmUzbW=vG+e#`bIxKs~E|$U;^_*&CO+8mx z{s`6qrZ*R7`&)Mg@OtpN*Dx|``JMhl)*wlv9C2@JTS|Ev!{Dj6xIN2{A0#B9(9q)1 zQBKoQKDoFkyP2x^)7}Bq4;_w5NQeq_PSNNJ*Gx%FAJw6a^u}z)ckrjFZVtZ+-*9l` zGpq(p7E-_wszZO740g-%!>rSIsEVcX-8L9e1q21NzUiXdPN4AcudlCL&L}c{l5!SC zlvmmH0kKS3Sy=}E^7^`IZEG*($}6Mw#xVtwFL&+fohp%+%P<=pe0S|^)b2gClqyFS z`znQk(}_^x7e9klrtwER=cjS^h&}KTBAQbmb23CpJbZljZas)1iH~x)yv;X;gX7g3 z3mZ8nd0vl(5Oh%%R`!tMqc_9<+3lWB~Y7XLrvZs7HeQCO7?%4js^mY}FHXkn$ZCWce6}MnF zF)eujJKh)95+cX^UN4s7i(^44*DvpTL@GV2kxX@9wX~$3xzqtLK_v6z(R1O!BCW*F zlUW^~^Bs+ST786VqCuVa4}c&Rqdyk6_0rL5+}`bK^h|;?w??JVBfZ0>5%YC>uU&>pMM;Zy7IGEy6#HqE+LIQde-T%SW%0YpR2sKV|GjgV zt?A}>-TG|M;#S6U;Mz-x)5WtbRD*Y&@q$qWX{|6BF!A{MY?DdV9iRS=E8Wnp*GxwN{)buUQYy7Fxm z;`o`^uKA~cj|$%#8{fLD8AG}vV~SXH(=s!qSW^)odd8-*f}Z8P#&dGoJWRSzU0D;noZX4Q?w7B+)yS_ryh5sp;1FNyas*41psIAL zKT}HU5UTdo(F`kB>H-i>T2k^4$K6(jBhY>d(kEVm@|k@|_&*pdaDxpl)E`Ct(v2b@ ztnkOi*DlH~x@T2{+?fi!%a5pPKdx4&q}@J#6nHY>4R0<^&UG6vDhcUzeB4Tp6_)h- zrcMJ_SI+4w<9)T`@EES+TBVKHRBG`%=NX0$wtEvs=e0B*r4CQbBM?=7wpu%8nWC_U zU#Lj%>d^mf=tV1Oh;}(6kI>!GSc>x^V`#`IJJe=`iv5wT&da0ZxnM)<4@sGbKyP(f*#NCCxM>y) zp`@|_pah~rFyJNKHt}u7lWk7V5+9&0rtqpRBq^vGYKYjw8|V}eqfE~kZaB?B0JL;VX#(EIUDoS)DDhVPM+49{$|2B~ZqXQ`s3fF z3KTL6!WX7eUo?%QvUd-0`Zxa_t0*d79IMv1g8@GI$8({?n;E88FBo_=ebV`u5E+XE zTpf$n?Gq436?fMQ^<8k9eT`;a4UxtmkvwaRM$psE#T`pZ+ELZ%%Se&hQu`Nj(CA`g z8o&tiHTsKs`Opvv%Y6x!m>S_Q5V#8A3yFjI7z_PqZI035;Rx|0^{vR%UQWGWs1Ds8 zrp}jN2#yo8J*x+W;%B|xsYEogKNa$HW7PxT zpVG8(dl@8c>vVKd#ZW4^$z)aW_{F{CVz$;82wrWH9q&*L;#dzA@~l~8FXoeV?jc+# z(XqhQm!erP+6pMT|IaSlQp9hS)x`8F*+OM*ITPiw>F#>W{dj*lqdev+#dX-Ey-X%B9*FRUUPu6W69I*OgNL}SuBk<`D#Nu#* z1ZZUa4gpwTHEtm&hw<&V%ytjxj!S(W+~3<99NzfZ19&-uEoe@@X}j>7cjW*gmhf|b zV<2%4d>c9h2+oV{aV%@0pP^Cs{uqUc@Gp{P)22fjN=XDxr>3ShrEW4mM@NIavP=>y z+Wze9m%Y6`mx@~}^=dx9+xp8n9{a{p;YkuWnv2*6dVQW`3VzkbQ^es}=R zL#0h63du!Yq%*v!REt-h!KFDh?SL<*7o+j=jU7oa}sAEfX@L9uGqTAELl9tJ1mAmMMce@z~fuNrvY^@jg-2CsD)h6vN6a$uo zuzeVwBVDrIJQ`XJd@I1VW*IAzd5z^AdVNNGVK!LkCjMU-(KAu6mSN> zUrMJVRJy1%#UfNV`)CCS+&c~UN`v{*r=X^gVSqHgCd08~E@A=Y7(CJPygWDsMxYLa z=dANtKHj`>p0@e63L?=gAO;17>*`^pXoIzuL+nCAMlz9Ly;x{b-ZT`#2qT)DHIyt} zC1fLv+(YW?>L%uD%!4H#B4KER0C+wA4xV_QcYG1WAHf#msjTIc5%8fysLoB5yn&nTNEFC zPTSJbk~x&h*19!AtC#{|Sa!W7A!0S{IKUG{6S+14Rg2#2Pt);wK{OX;)MY>_T7F#8oc6?%a{dU*>t zA!I8;#|V)rb%-D6T9MU_Hm??yhxncp8n^Ksb~siSQI)Zvlx-yaqxg8-qSowOJ5`;! z%qcL-wvLW{V4VVcBKA|viFl#m=3qoOySux~aS{{QB=uT&Y4ijwZq{OQ%^)7e-1 z#+p4}o~JzoO*Z4<+#o=x0*#W_at2^T$uB*@Emx@$v8&cF5K-J@#J@#Ox?^NDY+!c7 z36G#S5qq&DkR=vh1E@MPp=di`yx)P~l}a$k5f1ad!O>AvDk&)$LQU23T?f5zbFn*= zOR#jl<~mE$hwFd*@Ifg)qNS(^>EFM9Kp{k7S4Fl0^l-lz@5$$k3X)20|J}yYNM(0# zWT$41CnhGINZ=OTj3$@FJv!wT2our;Tlghk=hAo)5Udfs0A-v)sXQc_728oElt&LSSnL|vZ% zN!i`{!w0E%@2Cw744j@g2UsvM>rJ*)jjpc9XaOVC#_)9%_`gfF~QYNDeGeM;wh6VwOHDdHhRIp=8XAXDzS@vsJX;ez;Nu(kX{HUaDC_*2TId)Q8_8HWfe4U%q zU-UiuJu+8k^*mnKESq6G$`>p;&CZDqe zH#c{4osgt<`AaZ0#1Z5xSVa9btE41? z14!9g0llcww6jC$&dq3tVUac@#%Xr zVMw$=nXuhS+Uj@Zw1I6#Hw!@O&43u`>JV&TGtjH~Z=Y(2|CkiFdYiI+!J+K|5Wh37 zsC@m}`4zR3%fJA+xD2AMCSg1)#|k{dnb*c~dDtOPbLBT&_(xBhZTrxwXS@PKXO;lW z0C(71U7#cGrvk>ojQ=VK>_}61aKon%HSLIr!IG6ZH)(b$s_>P+wHD3ITr~DDK6x1* zQa#5sp`Jk}R5HEOuDh{0_jFz5WmHza~rygTv_*} zL^Zm9ibd(^={-Q@&jcZUlP_jJ!)0^u`A>1k0OIg~vZ5l!bhYUb&daYUkRkV&K$ir0 zI0nQP|J>5^6Mb(mq3P+7i~hE@gW89{qK$GI3>}(_DmtXFGBPrjTp5duo;!d1*zg&( z@hLu1RAZ@hUWqIA>bp~zBM>Cdm`+X`FM6rTsO{&)73R7UbU1QM26Z~K0ZEE%k4f(N2)?6h_BTj zp$YK)f^Jk;U2Xc?0FLy&+_f}I5C|Qx0SYyh6QY^c7ob@H@0dUp09o7^H8LjwPParg zM@KP*xf?{|sl5V?L1Tp&Iey*e)ke)hAQ~})tZ1}U@%}d3^tX3?Mmb`8g~=KeobKRT zwzjqiOP#gIDxG@JNbM8fA3phz-CY~q_z!k=Kfq9(HV2byTP7~l(##RuVRERlNe=;H z&CO{7k0T=^wU?A?P;|D=akzddj!l1~v_yLiWy5}{1#{Rf&CU6O=(9q2qM|ZhW+es1 z*=~czo(LLZ3$MI;cRDL9w(*j$b%&V(MX_Cec$+6}Rb6eZi1Ax|5d!pn>It2|kT+bK zkqR|Tm;yWN%$F!V$9ius_P=U0x%ch$ztBBNVKY5MM-o_*eQ&0L@U)Z$JU~QhB~MEL zca3Kw(j^&&1qW4p098g)BUysq0v`Q6a!P-H2lxi%Q&nFB+Y)-8GXZ^|pP%0z2;F+E zA6Z7Sg`?~j8sH$ecXwG;Rje0{0e6kr8?|^w0rwY&+tmU0`_D5mk(reR%1zZ20#PZYPh5}=i!&TtlzUlNSgObYMy*Q2 z?}C5Z1fX}LrmjM>yPch#>+h*9UkjdOd8x+n`ZozsY2{lOyNJl444tN5KC5K*MExlm zcBGB1Z4Z!}LE2@>Cy#o>f6MS83&sjGwnf*`k&zY=Xd7v1wsXriip8iX&Uw$mR`8h6FmAT`kx|ZPfl<6ZOG?yP&KvS{u3^w)c9Uf z>lOjD-%F1^^@a3?PiE5@kHOEi=qqBh4@hd9a(5zZZd4d(vWr%I{W_#fyPmp{b_aLL zr6;xVWK2`@^O0$3FS&SmTP@<{DAM8+*{>8%uc94&5wJzBDWLhLBx(oLotNLM%|S$j zK!JEs8M!Sz)?mNzi8F^U*gl{JGv^VuJ>*Y(y`}!)Zk*@Yvu9=t4fZ=LJkX9n`$K;D zn<%`T>!0+;tHIc7v)|s$HaWlR-9GsYzZJ(w)PJ*Nw^BO%L;j0ddt4Hl0iGyToA21) zt;LiSLXX^%eQ=r_D3rCtZGI97Nz=6;?sp7DgG!x3s3;70!B04{?oA*J`R3wyA0wz< zxkf%MSD8+ity4s$r(ZV}zM%ggWoWbBKe1Sg!-ZS~`llIyt*$c;NIxsd+uCKzSFOITRc+5`y5$ewP9oa+-IzC(wtegQsscvwmMzK#_EDPBxP%`Nv5 zLs7=lRPvsZ{LFJw7%BKq=Lsi7;LMcc&TbYJ7~B8QsZ~`kwnN72fF-uKU9{?ORD{RT#?Ut4H4>6 zJ3BK|5=nEclL|BTSaRocT7}j>)2f8Oyu2(YhpnQ3X%z{4dgBR-iJb2KH3}xbhGL*n zsNUn9({SPRO80~VPA&d|LyVFYpZ#he@%0Ne8cRR}zNP1(JyCRJ&O(6%4tXi%@;sM0 z0kb@8GWx)l`#`T8DReGM30bzg&7oB4=$|R#FEWQuU{Eoyu%Vo#(qM6z@A|cWa+00E z2vZ}OsEkTSKMXl3k?$7UtedAp^m`HOEB$mY%l04>L!2)`>~hHk9rP;j{m+?I#6Vj) zwPw#G$1kV`*}p=&G$#=mGj4g8yn-?%iQtTE40nDNa9WL6=kUv?49KSWVqeG7tKtIZgqLtL>hfN%VRkr)x;Yu2ev`aq}y~uZ}Cy=w9F>J0N3?_3uq-B)RQgYv{;O?Hyo0{Zk zUA9$q;w4rS>03KE$Y^R#1aUE+3*vS&xc)uy4H1tiD->eWWK(N%NZa}pkWx-S?&i`= z0_qWLfd}$Sf05)6FyU2{mU@ez0dW%vo{AHtG6GK)LoSyl#F>_C`sP;szMOQ?E#{$x z#Jk1XaDu-qtIhYuZS`(HKijh1(r-tgu$u0kthjwck3&f4K&C9=@jH!wq29?q^GSM+ zGZ#EhQ0|3>9$oTwOEQBs@&I2?eyD6&#{+(?h zCsDuiUGUnQKK0l&_4A`$SLJrdan_M93ZQOoXr=)Hovx4fS6{1rH<@M|?1>LSJM*@) z5y8O07sSM_9}i~pz|NmNhyDG1&3god7qbnRs=^lphl0*I@KEmUnbjx!Y5H)Qdh!!r zwP|Y$gNQXL{zvYHs?4>EOEY*{NRX%NA*+cwu)+yIw8=bvVDhe-9f_Zl?EJYEQ&^FP zGD4H4Ly=$fEM`c@cs5(QbPw?Xq}@*V`j+`j>lLXO*CVwjsKe;rDBUEKf zYE1lUCUEanub&(zE~hAcoDr36_9za+)!9T^f(4$nSzfh9(W)1wyJf$hvU?RBFEu!C zElp}zd>`MP%2vZJ!s7T0h2KP%?Bb7kg@AuwNM)?nj~<~!SaU&FEdWDp+rmfsIG@E< zoA>#|pGm^ICkjU*(v3N`bjZ-DVi!DkeP=7HF{k4f&z39`I;Gu#QUzj2tTmzcr`BK? z=&}iI@s(G1lKc7H?;Nq=iIKVcJixqs4_$LywY$K|{qB3?GQ*1vK}JS~PYa0nAbdV1 z2_`=SVfc<<88*y0+xQ+6vN~<(*c*yLw7Blj^cUHv$q8;FRZp26JziWO495CbXp7-O zj&Gtt5#qIG1!>|tVTI(jw?9uzO#Swh8Y$+@&HOXb^@3|#Q*T9#iZ(hrn&MHg86DuI z0%CdMtwnP&siX`u#@DH+W|_r16yZ^@Uw#gxh51SrA=nJ#M9Fv0WN`CXm4A;P{U*pF zsaHxfO3z3unoCoyE#yy6CFk1tfere@ZMv@gzR%@j-0;sloo`>2hA^&VD!svT#|hV} zfqIE{F(`LVO-AF;pD5>(L;xj1dP8;Fa0`hlIQcqfmri(b??fJ2boTio88$dRYY`b zztEYvav04PwtalKpPys~S&C1(=r1*$1_0POd0Oh&nZi-Bk4Qa8d_UpXRyu0JB`_5?%Vi1JfX#hTPeppg-^(BN3^y}!yWYaEC63}yiI0qoI5CLvldb&%pgnt#g-S|^pGTQ9YTgR&y5gqyOpR?0U6Uzj&`z5B{ zb(@O6jJgb0WPt%DfDROB?*008ZilG2LlpEeG!95{@AEAp zQ#NTU6Q-EtHrH`OjNat0v@1oamxTR6g7!n6RqtHaSUO)M%Dzw>?^9M=^zB>XMD<6& z(G|Yth+Cv7<%~UPSQUR+n5*-($7MfA3l2?4juMMD2Ae8A0^ilHz*+`F6Z)RZe+%E-_jPpNBz05! zJCVp67KWN$>D4=VWclt}Y$izmoiN9&w8z(KkSm{<+A<>RI z&R*=N@^<*4^p{N@^n+s#pFT_n7ov5MI5CHZO{v5?e3>*H0haTN3l{6B{i@cgVIuZ&sma3QP}%@-bs30FO@Y2( zKyFbX3tAqUIwnEA*2`Gb;uc;|j8s{O8wT%jx*^Za%Zow<_3gz{e8@+^6*C?S)|&63 z;l;wpwo@ek$*V(x%=^<1s_*I#!xMs4JCbkB(4aIhuuG@RZ&4g74GwJ>cuY>iXsz7L)4S^on`nGq$vD3K0q4Kj?%Fk*8s!|NIwJO|2 z3FP5w20WenM1CvFNU~-uK`4>~j=E@+fW`>ExK9~WeX5)4l_#E9XR-+N)G}a4(C<cLUX}aK)U32EOu$X@7%2T9J#`3H?^mMxKbWSex_(2){<{C#x zx=Z}l{Cu|#5vCv2wQ<6+{1Hrx{Go^%aDg{%Y9UR*V*Nzwc*=^9^}s{@gv6*^8uoHu zPZRgLB}7t$|EmQECj?muTW@dl%1V2g34H^F48|EVg3Q&s7vFiRn)8g=ZA!@{7rUoL;!D zvpRn3QT4lwdcbt;;M=o~e>TojrvT3E@nha27SL8^T_EZ^vr@oQUg1Yes*z$_2seUL z!gH2^Av5awH^?DRmG=`~gmP(%DPA*=BdfM1(f!w~cZkO}9b&+&QfU6Zu2>iYyrR5= z{O5S^>xAdI+65Q(&?NBUIqtatIej*e z#TTB&;d@>{4%%&%r?#9;SE6~EnTY`zqtap1urII$9MuCfaJIMLOPl_FB8EVSSdF?? zSIsJBmKGMiBBP*?s=$8z`nA_k2?~0d!2@}k69vXpGq^LvxWuxRhkq+NfcjztiCI53 z?f37~?!Ratb1wp^dN+6XGH$yTr!&q`2xKHjG`2uCb`8+U*=ARIpt`(!cky&Hp!8&3 zpjW#X6h`a0d)M8bjDW3z-$B9gT2~-~3W#2F9ySh3K$n6)mA%`O)1}?Z9r($lExTl; z*{*CkRSExvfNw6+&|V=*+KL!!0t74xrpx~pQteiQmg7>!W!A9#Xu39>+YwrqeuvSzv-)ffDJp5!R;t{#Sb24qdD}q%cKHs za>9?Wv+L_V(U|qV*!4gZGP!z~-`!;y5LA&yg|A3NV1KdK4_l8K?qj+Rms+Pl*jYRR zkgDOI1$4x1Fd{Vun#KnuVtl6f!Yd7AQdZH6h=Nkg(agja10L_uA=zGAFM(KPw$$Pd zdRw#HJ)Tdf(iemD777Hi!#@_BM{g?mC@9($j4gsn;f*I}yA7bqbcKE}m;kzbZ-Yq` z|E4S9y?3q4D(7Ci0F8imqvcA^_N#-r^%!DoQJB+jW7WkmT+XaD zx~Xo8ZlbBlJ}D96SFhN4c}s*-U@w9igLK59V~_gV$*arl)by1!MW~;cA`Nf1MX#Y6Qsa z>CvOGL-S@zY2>lAsw#E|Y?Ce3{_Z$Tl*G_042x6)7}eg*c23{U4g=_1_|4U^|C_7_6oEg~52#KU&QPFk)eqy%6uhsCOi#PV|LaIY=SC?1?0wf1i(?8xv zCXqe}SJkq-?wff0_tjuI23({1`;R_`Z07`sG@L&1%S_P#vZqvt+5y7HfAgWB7u}-w zex+WWWAuJ33BCS&yHBGx@HLHXhK}ve!3v%IZb!tx9=#{8kK2>~$co~Juy7n7yBIy{ zy9MXF#fdHDg%*(y964#53(`^B8P>AbHYthkft4qim+>l{t<~pk-Dr~lQxe4D#I&lk zTzqQJ<;32HmjZ{|m8UQUn@k4=!U5e9g6X$&bQBB20?rIeSXlUavP2|Q*Tf46ya$sc z2x)pu>={gEg3GO#Fl=-ntuktcH(S;sMX{!92H;l+=n|0Cgia6yn%$!iEE-m48okcm zL%KK}+su{!yzC_>Z$%S}hgCkBjuyGZTIb^+bzHR{!9gBUQOLS}^Dc#eEWmp2%57Pz zFq-dG>q>9q!(SfQT#oWP#m9g?6h;3|=f8kZ_JRs;=gR|qK%PkMu8uqcsEG*BWe_6Y zpO)^6Z5Kj$O?cEY3)#S@R-@TZ7oPy68jt(`SxqI6EeFR71RCwy$TRy>i#J< zzFp0b)vVIK%v1b+`YqOvd6LuE-l0ojd~iogyc3$zg%~$%zj%<+06MAE5)SkM?RQmZ zKDMKyqkms&%QPk!1^X>vL@3x~Qm^RD%sM7~w$iL>d~Z(kRaKOBfS3b5`T3_n_9++e zRILpe>#Ur8KtMpKl2Bs-5o;+88&`z%o3P7<+==94?B7NAnS4zMFzft=4|55-`z9Bn zYzPn%(~q>%=TiPpJ)Wo;?@m6wZ@ZW_^t_q1<8wZeZ@V@Wl|B-^SY6>3BJ15n5Vs2Q zZ_8tBIL-DsY_7dB!rKGRvSq^&Y(n|=<%eVQCZU?xkB)@LH+`T#^WwMMfCb3Ym63xl zpJeQXX6KgUBoNfIEhN8Zx&G+B` z-t#<+hvAvyoU_+n`L1_~q>BldB6Im7dN%LcqzJru`MMICerL7RL;-fR>)%Mhj1OGx zzXux*-gc9DL%KhW#)k~LJx1gVucKIWwVePv8hTJrknLl_kTDzfY(TUbVOo&e{NLrJ zC~&~sbOr|8>Xvt+b3d+t!nF$kY8H*82(LrhfWS}T2rj@tda&+REbALm?|WBb*XlC7 z-QMo@D}vmV*ZPI(Pp+DmZ^eJvZ@z)gx85Z;TG`tZ0&vTj`Oh}8)+?EF&WBS@kb{>t z7k>bW9lMP_f|A%YSVE)LMf6KHjbOPKNvgJF_ zGAF5|6uoE9^KZk#wHnP8xlMwYq)ljU4LA?Beb{hxh#01r$iFA^W#lL)!Lzn30w+h1z_LM?2MtaJBQXD!NP2@mop zwVqd_L-Hpb*~)F%xHMkGuEdyc+TDiih`n$fR;471 zKHxj%%>c_WH9ZYbYnZ{-&%O%D#jwZ8W&FF{+u5l=AW+o@$tX;gq#31jiGxRgV5)@I z=lQ&bWg7SGr|0`sqc=2^!~mL}Zf<5K1q%9@fiHhhBI*I>?P_uP4nWE|y-%>3F6J!g zPSJ=RWC<@07n5hs0LHlpoP|HiAb8;X50;1XwMya_GX{{bqLU`q%kam7f<(Gf1Z2tM zs2T8kpaa_%1mIBmKu26HUACylF+Q{SnIHxujqlt*`-!ytn#o)srj%ga%9b1K!_2RvMS@N^kt3S4fs1zJfd!y@cAtelyt1&EHAhBDIBcwuI!TxexHa zc28ZeO24z5754(F-EProI`h{r5;R<@wxf8@)|Q7MP6+YhQ;EABrS-?H$-Vh%r}^r( z^}z!o3B(NW4@7!OMC&}9>-7Hjav!k`_nYt*EJ9Jwpz(p*1&^mOW_lxFC1kvHkQV{5 zs;_(|R)ZK-@W>>kEW+e7-|xm-benJKDF=|>h0*>Hnc!BRf>G%KgseA1vRg}a7%e>Evda4Cd>g@csf`La@mrm<_wOV<$KlkhH z=9wF4>A-wAUtjK^z3bfKmXL@7sawnCmPG~Lm&jvwFs0Hj(LPs`EGf}iI^ly4DCgs7VAy0|EJC8hE3LypAhDB!Sx$vs`}QD^`jnmWW5ge|aJ zBnhySF(EA{kv4Va#f)K%&If*Cm!(>blU-fN_hrks0+5v@W@zXo@KTHb>1;ef+mu(r z3E6`g>3oYL+n@4}R5=iBP?vPwj90gv)^b6BXnS89J>sAaukW{`?^y&8f6iNDWCY4s z8C)JNnu7}R)h4G;D9{M??y}B6dyNj$KRti+EY-a? z)yrLumI_I175Dp6Snsa3t3GaY$l`j$bGG_`*jp8P^ER5Sv2cY^W0J7 zE$-Ln&^g+>jw1?Lb@hZb%nX_8ugEwMp=;jj3jzxG&2;ObHI_b)H>jDGgStL^*1^XQ zlwsiaM-LK^l}N#*wn5I;2v9&+a9xkgxP;S6@P|P~)jvLejvgZMFjsb$^c{W&Mxb|% zdSCE*Zoi_%oJ5V+uW0fI$qx)W#_K4|c-i&A+(pR4zZc$ygBH|!01lgO-N=~Ipi5j< ziC$5L9E%Jfhvy;oH#fIj)!F34nci@N{G~V~Kubtdh_g=z{y zBcxofObKf1gEc!J>c(iF1ulWGVa=%TrqAK*K)WTx z@kOPC_TTje9t5J4UaDN00v{crBFG=wmh)CGh167cth%e^4x4LfGp;EYt3CC7<^GtK>%dt70`?jMnYtLkk5fWTHM{e zJqKR@v4B&hhkr_o{HwP|_ORD$cFo{@6<|zVuQwmkn=hlI3meXQmIawmr5S!p20a;< zynfkV^Gt-`I+JAKV_U#YaoF1zVMdKa2P$MG&<^w3MW-o+!qUpm@z>t8YMQylGZN9? zSxnV*Uu5*nlpo0IxgjF9Bqr*bveSoecs|sf)jRwhs&73??Th)$7J-AX*PIsL;^eOiW>Q<*6;1ZSlTc?~3{)Q1K}p_55>NCv_Mchq_Cjn>4(8 z=HS6L9ToDhr0tuPMeh$sXj?LT(Q+DJCZ_{S+wqu)6r_)lTREs*?kN^D-aY>f0niyV zU?z|<;-K7v8d6eH?U*DaBr}yp;U^D3I>H@B#i!|fK#x@Nsb-x2UxEX>o70@7C(l;y-hTZEAt6R3vToR6x&UAmvklxd z0jno#Cqj9OsbLgEEm1$t{^~A&zdYWC7I8(IR{TP{DG{NqeX^mb8khaKN5Jl`IYbgT z1gvaq?>~I-1HJ@ytqnV=K^QtK3kyqPr`esvr@!S1Q_%ezJsHTgm7*2iC&ZuTYtONn zz=N0FB$kaJkI5bH*5|&sU4Ebef%dfVa8kFanc#i1A2?oe9XEP@ArH$i9W0A{`W8Hw z|9fnZkIB<1`Y{D#22E732H>#@XJlk>RmU7HySE&$x%R@CVAg*|uo^k_I{P~&FfkSN z)cYoJhOCc4PVe0!{0#4&D!@tNrEY2%GK=_79nC)JBD$E zCeiz1>a~w*FLh7(XMpKz>UUoz#bh z+983bSjOfgzJUwxq_y$@c9_3*OSg?s(vOIc+_2$SJdWVGcS@{)9kj~nfs{j&#Y!pW z6$)F3AaZ_=LJjS+h)}CSN}qelUD`XGN-I&B-t8) zE;P>8RoWV4Ww!zx;zj&RiCQr=!}9`UO`7s-XYqY&h|jn$9l5jPfDC zN|t5VGC(z6vxZ5p)PRd*+?MB)&}@&7G1)W&A@(NWka$X$_U0Rk4_o4b_>101GNEL& zh=zyqG^~zY;wej27>d0!6E4B_lsV^>o8rhXZX@dOE|L0c@km(Ne6$Ug%su>zGVzGgVCY}NpiIz>t+bSs@4u8r)dvNPj32Ro16Bf7 z=@&pK9TX-hdK3wpM&r3h!363*S8x@*N8#6)jZo=}D~nEcWT`*Q zx%Y1VLe`Ga7q_>3&tPlF*0QD2JchqqE7GHq&Ihr12#x=sv7Ha^dWg+d*()^4(-0hl zfq|pR$;??R%%SGf`Xp;+(j=EMxL zpI90n8&dEop?3P#-*|YxT1d-g74L^}DAsnxD+cJOvr}iQMle{d-*V1*0-YnK1X0_X z+V_R&OLtqy5VXQOhH;`w^}G>d6-2xbSdh_p5lJVn%imro_tUle5n2vSYMwNOJ@d7n zdQImQosahV1A6zJJ;h>9kpY;d^=h- z4)J@>aej8~LAV6H{7^3C04^M7d=zIv{^gLQ@2pp^4QXB6(b?taz!kdt(gW`;y@!h- zxm2Q4+G={MKN8J?D%T54Dt$Fu>)Ld&=5tIQc*uz;?;?|9Bt)*WzKjpkeR{5-#_@@b zC*LfoX#9n-mFP1SV>=b?z8tNGp~}?mOR1N64Pnxw#hh>M2E`3A=$xGvU4cf_U~(}{ zLhVUBxpkRvPW(zB&?=9E6oVYJNG7=Tp*tc7iJpf3gh!>^-p*@)=AYqR%yVmNLgFF0 zgezMUnGwUnx_M-wDvykzmf2=z^-CO1XUqd%JfW&$l77GnhT2rI9#;+HYEY)R~ znwX>$3ABEA)mpg=dsjKb{td%ugSpT%B8aD__n!H7B|1clfh&Enq#* zc20S>t9Bx(*SYK3*|7R~w$FrHyXX!T@j2cTM>rfQ1pS`3mDO~{+0Z#vyH}3`2@DdR zt)3r!S7JY|^c%NZFl?RPVq)}F+0`8gqjx;nm%dz|lWY$yMRd?NqV$60S*6S+^OrcyoIkTZ%R%Ihql2_s9XO$LIs6%IZ*v zYN7!hO}?p4p2X+K_=H2!t1v-*o+o$YU2}FmU!!-3 zl}5dwTbBGG7hCNwRcPu(w_++Er32?y+o5OpN^hczO1OE6pU*Mqc@>0;2r61*K0bLi z78b5jGsK71AH%*GexC~X=@%4J)U38nXP$R;<4Uo9P`o%Z0Bx}C$4r6o%4<2_OC~DL z&1r3E$~jdQ3|j@OZl%b}8!wO3e`~m(zf5eGZ~CIVt|z0v*t3Xo4Ov=V#v@eUPI4|B zJ1uuYAR1aI{-+M+uqoU$C4r$!&gLl*Lnl_B4mkJx>(W&q1RGSZ1ktk^e8{`(e}2Ln*T1vXhS@@)kUp@6?S=fY4Wa14KGZpUdu>nM(sA7 z=&OpK@t@K~3D1RWc8jsXbSc73-$c8;TI`6S5@!HANwMpp@coB3cJxXu2d3#QRVe3( zZLOIh=K8Fk(&hJxpNnX|$^LaH!t=AdRQv2Dnc0am**6$?GdUfq) zDo_cg`6vqo&!Z9F;QnGO{Na3PRb_Bo6g#+|Sf7c+024C|2w|r3G-<+zP{{K*G!N*? z&^3Q0XsxjDCj2mT^OPaMSb8d2t5Lw{;=1J&+Tr`JYnMbj?X;tT`wM|66nV_rFUITd zmQYjMV4}#KVxkpVpk|%n;@qjl=x!3qLjA=7odXKm&JF)w5j6!5gYrLZ%R$R@%~;8z zU`au|5aZh$FQMc07N^}=+n1+zgieCU8h>zH7$`j^IeV)dyk#rpGCR>q8z=Lnzv zy^64MMA{uxRo9Ala)>#vYSA7otg)X6?R_^Z3pbI9QT(AG8bEQ|3pE_8(Imv@6hxZ6 zpu5%k8_SpsJhjgL9`aB9tC1UGGPRj{PaPZgUR^*YP%u!`IG8pkQ4qfqr_}AaetlW+4L2!>PRDg zKjWxQ{$C#ocdRe-xuRw8s(bA0$wbQ(GAXLmnLS7IT)BO6*s@*L{#knc`&mD~IJ9SM zn4L4Qdg?s%|q4%jnACb5@ zdO|UoESTT9#3eXzNNfu|!?DJI6>D);$neZt$GojA-uE3eW6vS;@bmzqLz(gR6w64; z4o!G3Qxbt}eVMEnnOi zhK7dO8EEq=8=aV_L0>{I_UEb?B-FT6m{b47X*TNnbX}x=<%bUP3qM_T?pi){y$+v| z*J)n(c761f$5;?UgFr-KqVi_NF{ODSafs;^8xKS2%xbS9`HIa)MXgD=FcC)Lg!dqm zV&h%66%WeH@b$mKnVHnljJ3_78&WmWO4HGunZ8o>{EgB5TW2fbyT}md{fmTOqw|@! z1dB=zJNM5#n$)HC{pG%;d|R@^oIUDRR6Q4wP+aV?hF;E*oqVoJHc7c?2lQeLKF&Yt zq)f6!`ulKHaH<^?!oS9FGaJe|BN`oQH5yV>1rVGxYDZ5;?0bYtVf#DwF}-5mRZl#2 z_qRR$_riK>T_dHqk6s18gg8{Q2*>#;q&{HEHGICa+9HsSSWeU)l)e6Ap5Z0d$r+vH@dHtc@m*uRy6|j5U&-tOVa}=9g-1RY{wLG$ ziS_dXM5b4IDDY&f1cC_7Z`5{$sGkWK8l~~_y&xOhR)F@RMMrVY`K4otK4o(n7H_VM z7!4ue=r zH9yQfx?odf&opmjbtkdB6<>0)*Wg~MV(u^o3})7(jiyV1w> z7m8u57_VUcRA&|~Scc?gJo`||qUFX}Bs&&lWp+l&JVaf!zg_*_@CUt%VQlS>P)@IM zh7Pq{14FM$N&^}xBfUnaZnwZIe?E^S=Xn4ceiLdEuv#F;VzD^FW54 zlOoG~Y)^Ys_531viS-roQc#{5K9=#IWs>(clHy{tRGQ$4;QGZXJsJ9$$Z+7=LD%`r zSjKeC`l|p_(dN-jrv$7r*!~=Eqf)3B=6DOW@YXGPjuwF@c1B$~<-9MWFEUOQ4?T!< z`ofF`pPf|grCTuHm&D+9sY2fsv7u z5yF{z*{)G|1Jphj^7(vlr^S(D=#5le#cQjL8@Pz?Vj^+@JoMu9PIm=_IFeGA{X?X5 zE>g+$xx+Ps5?I+~O{sKKR{5+Y6LuJw-Usfg0mF2JHr^f?m>H>}e`*lY%PZsF+Uuh* zdtr-^j_*3Sb28Xj-{}8wDXNsz)@9xbw{84e6pz&%?gd3R*UziDdbn$#Szv+b6}&aZ z*Lor8exUE2Tx`XOJa+ihSKW3|8!8o%T+ESY%CH^!37%Ybd!X!3c^b=!XgHOg(I1`O z5;6~O$nZC1W4V>OG?HY6X>)5@%PK}quzw$YE?=WU?9Vu#6+nZGQN@Z!e{cIUf*_rO zz3Pa$F*X_pgNPs!qtXJhJ{{F>5&c^B?wF|I#s z8eOJ&-U$rT1T6-%g;<^3e)&Z^$vt!4y)Sl4eJP~?3C3DoC#XIpl}(3t?04j2^x|Qx z&+~Zr38?&DXb4`MbHSR8>?@-*&G^dRS}IC+C6wX|uo%3OZW}zLZ`wr{g3QKl=~Qi? zEtSJawvt~AjZ_YTwD43!U0VKm;3eXYY;k1J*}PLdSj6P z*Bi^_U0TGzz?*O1zGYNa5^ip8vT$1h$ayNbN{~Y=J%y5@#V>@n@|;(kVe!5N+F7_>!$vGr$0@Bmi+*}i@B2T zuV*k*^JF(ip4vm&e!kD<^15*ZZB1iW0GPc) z&TsxmgyDO7dWt<>T-pw6tJfD@Z|fp2r)kTYtf~22-k^n0rz2c@)J0w`O;yZ`i|UK5 z7=gff&s&a&0eSC_TpI2FB8!^3F4{kc^A=ZYNvfj?EAce|Fzg)(RmfWj*$sxJdpylk zB#U((ClmBiKMn#Q4xW?vBMBVAk7{a_$#34yD&*!;82A8zP5OXwCnc*b8%+}la0vz* zeK8PNWhKvoissP$R2z5xYhG( zYgibjY*|)T)>Ah{mZhk23Cu1cjN?MOmER}>F|8v)8pI+e;evTCpNRdP?=E3`t!V6@ zb5&YHpO33PnZBL)E*WG_f&OmJqG(Fq+=OZ<;SScH9(Urh-});I340D_XudKW3K}u= zw9(aoe0-_1&0P0pB_wADsoVjMR=9mg8Mwhp&}Pd2N4O2#ndNwnyqvZtcPyC>kkSEm z!o;$cz)--zQVC@CqIFa(?$^){qMKhmaT&wOf}n1Q1U%R}uijP!i1+QVjec<6YTBCq zMG@_tX`l9OQNvr?wJwaNhx=P{ad$ou5fLu;f2NPWLSVgkq?sT~&Dq;}+H|HNBZE>@ zTG}%($i}7DfjpGRjRa~7&x$z5#V!ke{tP+E;pvm`Xm=mMX=KSHN|nJ_>DC~2YRow4 z>Mg@^)W@C!3ogTLTA^yDeuRmGjgjG&XDx~VTj(Y-5RoblN1X08it)Xt>tPJz4)LA2 zl+(PPk!zd1YBaW{6tEnVdydsfvMXKBkYEWO(%{zT9%8iTq#e$MjJU=*a-{POPHbST z(@4P$7>1!H02b16v4MZD3es;-EEXl=gDi@_WT0w^nUV@bYUW_FP}U1-;7B0-Y@*l-rnAZ zKpY(%S2BZXIvVz}UAHrX$A16zecZ_a#U$dRH zWPatF^*&lKh1_4(k+lIcQHa;KfdzYteF?qT<{kNfo(Zw3HVJ>El4fQ-!>7u`t~oLmQQeyfI#GaVSa~!&&uk9#KF$JUMupKJ=|^>S15g(q?t5*B~%}v!XQo zH?5!`yz`br>TsbEdW$`Mx8 zljsp@3rY^F&pzd!6Hfs8ma*mK=op6APj;Ep0kiD4-GnEEkR~FTEx4ILp58Pk0XF=xfzqp{)PVHiDb_Lvju6UJ}vsP!z|2pSq z7dAl?nGS-8$~UegccaZ;-tTf*L}YvfW6H*OWgD*4d>6>)5RE3QO-aPQ9?!5~+le#du>uV_eo7O~Ksv$P&27*V zAdASaz{bMPPK5$WmP!u+6uib6KtBM$5()%t7?Q|H_l!OO*)@Q)0T3qsH_@xHPbL+h zL~H!h8}Rd5G;>n*o+T&+!S)XoIA+wFz&0RhW;O;(nlxWt(f z_wGoe?TGLe1mbM^c|@L!cDcr6l%^y<|FH7 z%&C&Z@9#dRp?}=N%z(Djfa@cIe@w-@t2=}7EG8NxFdHdRw-eRVTxgPo9hgJ~yhy=f zayk43RV>aBg+QLIn}JZcJqm1wz9}N^=1O7y#A*1 z{ja>n^-ap2tb5%KU>OE#PXzytqIqnR?6Y$OT^!gTLHHmhX>LpqahfRgwmhZuk(L{s zhrk_XrJEY9PoMfh14>Zx+lG^mr+nlFpmIwqkh@S;AMvX(I|CwUy%dpFRMrD(Btay? zALv|6pFG;3wOUA+VtUW19J0@MqQSO>dWXo%=ux-|j9c^S=ppJy#Omn%ZR^<$<>CJR zQ1ac>v}R{mD>qrf&<|>NTCmpgL6HDYYzl;+=fcWubmnjO)Gn&0+C|HYBRx>FoQcr6 zd*b3{f%`{`7Nsyt13vburx|@L&iUr%hJBu=69D45eC|CN*4_RN{Qwhfc%u~31Ap+E zRCaq@=w36Y|99aI5i~Kkf_W62U+-lf>E_a`mv)<@+vjzDn9a zZ%=8F`4+@K3pvqlS`0JiCjp8tRSNa^zS9TzVa@G}nOf^_UsbZe6c;{!`SPo%v|->U z+V<-^1|GB5f6ze?P+VS)&)EvEWS}>mPFuWR+fvu@;=cu*2=78uW-B%pWY|^EwI<0Y z9U}nL^}!P8VW5ARe&GRyEyGUAE2rk-A_%Mr(RM|QSI>+Itq+_V{ObP*?*}47u~7;} z_|SQaVWjYy;F6yS2p6~feIoGppP8q{mZGNv+*OnJMr6H;#DRx zBf<53nSIo?9b-;X`&+Lgi@X;;ejX@oF~?MMN`OFGuGX;j=W9om7q0Yc^@!RZwSO2M zwCnJTbvuxd@2lRp6Bm!0@Y5#>2syV6K;#NPg;tKU0R!S{d9+k)Kx3V2qkT2cJd-0# zwiy6PnuT7|CRgmMw+<9|iHu6a(if^pL3r?}x(}N#wE>3@HYkN7#Fy^u?)s?~(9Al$ z0(^=75NAinZE2#mH8P^BVahL($XAU%9$!Wdk*t2{vI*>#u8h}}x|cA&{FB%wE&ZO1 zpPAZv|6N4xl%V$L=jBAMNkK{GG$NuML;Rbr(E&Q1+izEdN{nMotYM)AfbEP$fnXyP zm9+J zt({ry#g-*EUw{L>`+AU!kd_hJ6(Ny*u=cRlVmvQX#{ff#sF;9M1BdWp?W}C&p{W5- zXn}pp)${VHk6~+h`B&h!gqbDvgdl@Srt7`Xd+sHGy1rwOji_4%^09Q%hJ?5B_%@3y z0fa!N_wL4Xp)TUYy||VP49|8PhEsk!y7GXukwA~yIMW_b?hQ8tAZ-m*qq0C`9-Vur z5@WgLqC%a~PAeiLFI_CO2w_28GvX?QfZT2)WWD9l4SxhonNm#zr_%~!k+j}fZC5xW zVSwPqz@R4r0m5*y${gKY0bt81kq9~?*$oX(q7N1=JbQ?2?dFxGy<&Rg%pMi>JOG3P z&m3%4-1WqMElOjk+#SOj5mU<7Lf{b{aI``IEnp(>(jMXEsiH3WAVLF0=OD9*Jnl5W zZ_SGadS-fF;fV);friK`MofphGf zXri(Cdx@2}qK+>GDpJlsrUeVDBYnsc5~RrfjoZpgzo3NXdIe> zf)*6Zg*v+mFn>#2a()>!141Nye0-ElOtw-0sT@3w*$38)Sa&)8cDC$cz4bVfQ&so0 z`2nrf^`6WW`tON(4`-XpcTY5%`_bKqyHIpzu-uMKw|K6{8}jgT{^^zVXlPHZ&lzRJ z-5Qpsrbb9@Sv@LBNlDM;W4yr(y&bw*E_fnm7w~077;V(qWh+$|f3{x+`e^SXD0m}^ z2j*Silux39_jcpj*+<4hF@?T;lVX+ODcNJ7N|wNa7K%jrh}ojb9xX(%jXp>DdQeJj zSx`XKQbrGV>w zadFX@*6e9$46SCX;l(YUL2tS$f=#dIN(ZTmWbSOnDy&6H&f{iW2S3kBm~-(Oz@b7% zAlg@n(D}mJp8cHUzL_Pr?LEQv`R|WvrORt0es`hVcXb9uj^nfT;$xZ#rNeT_PQMF( z61=YKTk{l(LO|wOzYW<&`Sqp;)DyaaeOBGsr53v;f{wb>loUfNRpngIzeVvERj9rn zj_v!=KIpQ*mrn1KpyMsPWd;$VX zlS@n9>!7XZ{+S$qIS^Oi#DoJ}1LZPkbci75Mua^2MqlqLL9+ zJ}ksKZu*%X$LW-Y4EM(|a|1xX=W#ol+fyG&V?7IZPEqGsY3N7LKiv_4F@uuo423W>10+spMmVNXePB+u585UAJ1Hd#8-fAk#~L`*9e11hd?T>_8|Qr6av za-*gedS>;+Z;WU&hH`+hR+bX z5H(4V<>KmOQ{gYx;B8LtGu%+CM-tPJrAjsENCe5Hp~$z4Qovz5oj$b^|LspGUCw&f z!i)Ro2V@tqT*&|rVm0m09~~q>aKk-bTF?+GY4vR?S8iE4`L7mWd=Tq+#^58i6ZhQj zA4O{`WoJR!p8*5ZW6TV?(UqdfxnJI{(?0x+ zd^~}ljoN|ci3>8&)c7umZ%2vNbp-(gi14=n3lJ4T^?Z51Qt$>{qyMj=$w5Z9C&^(*4>R4ZSBXYdt~D zFvF%9nau8nqYhZr_$XkE)WA`y>FyG>mfS{A>Lp}J8CuBY+WRH&3BazCZiUve? zh(I6L6=WlgQj3e2#w$^{B@`_6NGxm#BCsqv5#NqNX#p>n1{h@m(dz#@&GOyX#$$<0 zN7vd-_|dR{;Fmlnc3@HLrhBWd$~NGnS@3m~p>xg{UIclQkOt8|#*jS~4y6z25q^DA z(}={k9o-#HJ?*aQ`|h@2XE`u{r&P)k6?>#1j)taWp-U1IiSh~Os&HqgGiDXPfB}#f=LG_ z^3Pz}`o^GruU9EW=wumCh)D!@25XWA2q$o zKkmPxZ@TZH)Hq!{%InuL=TelWhrs-GuEUsRZ0YC{;zVivO$0+(1HyH@T~NPFY59Tp z7ICcVa7SwI?sEC{dZGmTvO76gG)!GnLOtF-^qD5k7RbtB!wXhceTS`)ZlIUT!3>gb z2?^_u>5hr(t@)^;Pp(1B%X^qO5eresZ<rsh9V1f@O{NCISOxix{I17C4d=T-G zBj1ND_jf+KoD&D7t`MD_nNXX91q?`OtRyNXYEe@53Z7WO>iPmpOQh|^tck(o&-XoH zRFC_jxR3TJ3rQ4>y8wx?=#D*qDe;-Coj2Q)iGDnY@@+;MGGY#|ZYRBueru)vYD@k! zJo}07xB9os80=4_^?mf)%yl?cSup~Z&eHq)-nXouqEa{EOL~84+de!r&RIj?;xXk{ zpzJ2U&CW9;LLf#Eisr8I{|KEsihaxR>E&*w4n50-1+X1N8GuGMDQ_5=3$yJhgqFJ} z%At{0h|$M`v-ulB+c&HE;}N`joyP~G_eWw*@JNvGWrOiO&XP1`OO*jyOF|NII+ZXX zRLl-hFp?&6D`2fmDG#x;)#tGO(F?q|uCue`ij@ppMTz;R^763*EoSwzrY1H7@PaXb z2r|mg53%X)V*X754n(iP@jw^J>WDToy{c2do3^5%2EI zuG2~}Q4hj~%hQqPN#twUoElLx#2RD{xVe@TEKzijzt(u&&MzCUy`cz0ZfJurz>LTE z4zMA25!`t@Qi&#rEV>b1sCcE?v=_G^4MKMdQRL~_c>8NcaG))*C$0_puuG*W{EOI2 zB`ZH2yiV#xj zw&~x^0ve+Ts!%r02Gg+yPm&-!L+dV(J_WsPJp0S7kBUz=vT<$gHH9?u|6&33AET2; z7Zvnbya&dvb?!oTDb|VD525=Hf|(PZ9GNr|eII8uYCzfjr_2&k%kl>OR66YV-*H%p zD_#7BD-gX#7!nH-??%jLLD!@G*&e2};t~+4p+eHF7SJK6CmykEw~%dCT1c_N3k;{7 zUfS%_hx=vh+M}hnoJIgWi!B{eNPDMbXZBcJ0QHvtswpnC^NnQD-Y0I`Z1yYxcoKPK zAG7`;>>zee_Y#H3Wc$`@+|ebJYG@-2HDb+Vk8iVJX+-E$F}Q@muLD%<$v#l6*mgc% zAMVH$Th*MPJs<&;9sIazw3>NTB>WDX@Ih9V!!?ZclwzQPzL>weA1pDncY#iyYtY+Atr)>HAffPO`Md+9Vpc1+9c_F1ETcx6(up6ChN7 z78%}Y!F(zeBe}eS@u{XX(?@aMt;0n29u%PnpQyf*mSZz0swb`1KqapUdUJ7Z>&N6e0))uaQ7GdVc1XT9<|~v&4{Jw9i8yg5_E`tAw-*b!BM-VMQK@;KD*U(OHJuFQ{m`U#1#sG zY*}-9G%jtknZy%>qyj^lU2fj)H^xAAE7*P((cUT#ILO*qmJ& zam^{E>%^x)fw>brD76o)%g~<=F9oi>kB^LcIUJ_lpH3SK$ncM0?C@3{388ZN%93^$ zeq6Uh?TV2ke(&#gfSDMWFQ<(t$(Oftk!_Ym7MV@jRw|7cQo2^t`!PiZeP+>tAzAH$ z^ND0mF|`(Xussz5M0#Kjk=o_e@LR-~GV!c~!}^%`Y%zs@^amP9x@MJFAw#@1uUjrc zL>`{5l=7?0Fuc7qg~U{f3k95U)4WE23?^J4iyQ_exj;1TC#>ec@|2&jyd`Qb6n7Vu;6RUwwX9W2WH-&)Q|Ql*U{Io(0`$P;tD3HrQHAOBr4I`x(= zE2$ZxgNt)xYtH9RE;R6-y?VQL5vz%Pc*rzN&e=#{AHA+_xB@Ye$p?auhX0C>KnC%K zjpZ5F!~rEQx(Vv_1hkW*>nm4?&Tf2274nlG4wrUq$9hm3FJ}n7kH{RtWQN$MD2|9% zWIZT($fwrJ9FF4H+lE}AlLBI1PRzf}gPwW+=Kh|erg2O5@1z$MAADw1Jv|lHmmVb! z$uIEKV! z59Ll*Y8!YppL!iI8A83dk)G>0Z;VDhG0k%fHBZ@FO8=JIUGHB?2-+F3NBk=LXbkq@gq(CJwrDv%n&oDz|WQlHeP-Kk8Y)E z5}79184uO9CmOJDd?{yW=Q2M%TivkiRx>(}Ab^mF2H6gC6mKGUeTWLn?SDdt=$MJM z$$~b9%V+_U^N`i?gOvFhUsOdQ@E1IER2`9e_by{MiMaeMe9i2KR$~CCO2sDp)U@aE z#A749S;wb|T2~bI3E~)E#v>ziB*umE6A?EPZT&r}E}pF}rt&Z5Y)&bdx)ks2rykhz z|GlD5UAz34kB-gXfYhRWZQfWkLn3sF%;PLb7>9PPGzT`x@gI?EyNRtVEzYgp9hZfO zV2V$F+tbz4w!;eZsST~|c#{teAVhYuZ#3x(_k2Q45ktBm`{P-1}G6S|m}Y5u+R)Ylw0Em~B?s|^8sZ^ic0bn6M+ zRZrbPZRp=zQ0XByz`vWnEJQx7h=Dzv&?<7N$ZtP<*-Mlq;x4PHQ@v~Ysh8!>Oh|j9 z`JH>e_uPWi#27X0XTT;Rs-qu6tZfw|26LAxd|_YI_$i|EytLEDKWO)w{4d7K_{$7f zSObl{&=&9|>B-(_2n-NWE|O5m(97T&oE~`uD1!Pm{=_(=1&LZWO5ls%A<|g{B4(3X zJ-=sI6C3ih$Vx|?UrlFye;TtA@*J_+CIL<_#d^<;O;#txLEn~yu4L(`ZYvxG_N}*I zEdMF0n7+$sB>SvNZ^PKRZIa<|C)`;}59zpksa;|FjrB{i1{#jn*NdAhuib{lRHm!v zJEnL99p5TZzp5Oh%afz$x^?d7;;dU&z>SWop*4O|DeY9*AR|YeO|y%Sfpqyk5I|3$}F%yRvltyoTGH%gP*HEq~9N+8Nx}Y z;zp>|>mA2q$l**uAow<^++yA`*^(-yi{jMF*?zyNVesK79(lZeg;v+_R+t$keM9)X zmMx>vdp)v%S|63*O}#!+J%UV(Bz>B(R;cMqW)bdYywJKH#}7|r_>$-~F&3YtNFx4% zcpC$MtZPG$8&e{=>KQfjLyV?}dEE7sPitoImUv5gYbuy;RJD zld4|^+as&S=2E>Ln_4o0FO%%NRL|Mdo6HF@_PAXXdH&+Hn<34B-Nqp?!7H+ca@5mz zn|;$M1qN!|p_Sy)trq|gZjiVyUsT$kCh|vLmQ{r@2ECpH!?D>OE2ahMe{Q4JQt5!J zo9^ZM`=E?Bm5-u6XFqxMpsX6L==k>?>eqql5=5F35!&^l4*`3yLqdrF8Zk__ywlTk zk=wg3-HdMx@V(}?LYX302l&mVoPfbqGy8x4)4vA$!GZo~mYW-d7s-`{5eW%3aLH<= zyVLRS6lUwH#2-?nc^G29X2f&y@@z@Z5)nx@eSMkM7V_AcF8|!Nj`vQu>{}Re7ZyQv zn9cfS=4g}Qa?*i?EN=I`MuDewDaMa4jX57_4cz%(=s$UAr7rGSlET(~@z&((Po=b2 z%!ir}D{GK*#)!!amak0jmh|f4Vjy4be;Iedcf!8(Tu2j3G7$dOXybPM!5#YRx2YPo zKG(&tJ}rV|w9f(xotO3+I|C|VV>R*lH&K>TK*~@VaMy^b$z7b+9899sNqB zqZ3&v?Yv|XY-hITxjGx!+3Uxv8w$e|w!ygr)#&SVUh+EoGPs7S`%1WKT$D<#7a6 zx%j*gnC<+g7ap_rz2Z)i0(KzukzaU>T#TFPGcvL{m)<_d8Dd+VjuEJ41(bT;b`9oo5?J3u{ zwy%;56a7Xa_4KK>zC%MRELLxF(6cYc`4kVB>u{xs-fLwdBUYs=h#1TSB7c>mBZx#e zsVns)yp9Tc5z{D<$RlpX&!*5b{!DM6o*F@VPCOwv6ZEo(3-Y9D=Ebp%W03U?VJklW zDncQ$R>T*na;qg*6t~%LFU~}O-X&pf?r4u?n^T4Q)(% zYk$^>IJK&ALv}5~Joe^w1c<7K*ngLA{PRvvr2ZYVdJYlC*B=y`xevel$KLDYnx)J^ z18COou8@q}-_heI-dT8~wH2lW(q6#WEGS*tyLjC@k(0IG`lnc7fD21S>H(dN?kf(*E~Bgg*D zP9}b}BBMEuehj@2#-i1a5JALHS)C2M4CJ8Ci_}jd%}{sVJk#8EzT(X3Pb_WgUg^cL zGKR){m>n;*q4(gjjQhO9j2pe5ACafIT;zBfOb$~O*^H7w`Ndxv{WdFxA-{dfl##vy zl^89N-ba4XYIdpxL(ckC<{l#M`xID5z^~cc&oTNOyOKlyrA@H{am@y>G2|7Yk+P&YYPY zza8hCy?sk3Bt8YT{5V2BGc*(XCH7Zshh#<$Gto#CXMLsUbE3zEg*HE%X z!ve4I-mBWX`dC@UkgYCM`Mr@iZK@2;Wci~;Jz59;rYJ9t4!*3Qd^nkKNyeV$gL(XS zFI7p>ggsJn4L`t_ED3=h(#s{PRntzEa)ECq^cV?iYN~K&i^9{ zSfhjG5j##@mvv0xeMCy|pzJ%kT)kUX(^dSz|rR=hYsB~qUC^h%c% zdN`PpAGm`#nP8lWfBH%kLvNRxqxFp?2S^l;qUADOy*X1Cd2SeH`tpHI>|S!*^!Ta+ zq{iQmVk|FBGYm2N$C6EGBE)5TpcYwGB->9+tKMEnL@V;(JV2F?d;bfDp{C=O;=_r2 z@{U>nG|Qmg#nyLi+b!)cXU#imN88?PBy{gA$yQx z@wtB)*r2|jldd*evkG3+oH4!qn+Q4?B1f+c$0YuWuvI>D#j_Igb;9X8Y!+*kHGv|5 zEJ(7yDdr#n-ur3bh#Flsp(P{-13@H4lr3K@r&y_ogjS4g^Ks>vz!;6YGm>hfsEWhx zD?tQ74}s!do*iaHQOU9T*YEiCW|;7zK-8<))$QT)RLXoGNfI5J-(Q;tpBCfTj9@{o z16uG&NeQ}s{xMyQq~jB?jVNPq*rs+#DS}2mu0)xi`SfFBK=yLN+U=vx7P2b$7$>(KsA;oLfFxR-= zhl!iekQutnIIm#O>|4V==J_qw-1`zOY6j!;yAc(wVj2DF=OquS!zhiT9Q9Di&*D$c zdq4NwFa`^T@jEzKW6_nE&Gvizex7m6<*n1;Mj0M~_(vmSNm&My^f+otpGC22CtO0$ zFegI4CztJJK4eDmWfoU8H}s^&>*OwXcx=eoN`4^NlY%e8XUn-`F=u&!ZDk|u-B1iC zidNcWI$5`mUzIf{ly7@#%Cb79919Yq!w1QY@#if`8R zf1?RDAb&ylBOX_s_tQ3vZ0pBn_`;RefCWthi{>o^?Zd_lt#64$htOR@(n16Z z#?CN^p6GGS@IEbA9i#F^<`jyP_{=<4KZD5?)<(*Jr5BzCeYiYshnUXE(^`9!=vw_oMy7S@#29BgA5l?v z{@zl|*;+c&W}S(oKpP9tu++3|bQ6)tv~L$i2T4Jc>%Utx8g>`{?=4pPRNmpIg~Lb) z-Wy}-8cZ+ud{<+(`f@WhKZEiEYN$pBAn9LLJyW}YNY>3u-!d2)L*D;$m-0y*4*sv@ zEUK`9*v*;2_!*X6^d(KdIFIS_tpMG4yA9I2d!(=DrZ+>cwK=momT2uFdk^m{@XNaA-wUxTb>X11`)8I^PRe%2} zmnw{jwHl-Cdw%^oVfcukIU9|t*f3#WQKyM6Cey|mOBkC-Y{&r#wtNx}QjmWs{pV2C z6g^Bc>x`FKBXsBUcS8`rZBI54oWHB!bEBgdW%qZ7i>S?@B{D%>Ntsd-k0Oo@|m;2vK*8xa>j}v%DeF{?gK1zB>X)#p_V$9xV=Y|((aqJ0W<&jcb4FHLJ8Li)UJjynaK}ZiTHy{-1w$RmEC{~W@UkhNT%sMOWj@oef3&|b=u1PpHav#;Au}Nz+(%=X1 zjAUu+FSDtH0ciWZ(1bY&8KmLk6!|@R+we`vF)F_+hz@bW&L?aL>1G|jqF2*d##ZD% zR5~Ft4fllr#2dz+&F4= zHtE38-Sr>>X2Oa@rtVKHe2>&}$xV8O$!v-KZdXDn%8?_AJ}XB)0pte)iTa)asim}$ zym#2|HkSvi+wkI%)Dtbq52KP1_iET;U?6hy29)MY`jl*WE2Vp%?0PdIls@|4>f=6| zU?EBPGhuwW=8&}i_Dx_Kt~);x`n`sW5t)Qj`;wn@VeY_6x0{lXv;k|dD&0;L{fo>N z(*Wd%Vf&HcdN4YJ>lF4t5k&*O5biQOuPWweUT|Lk6 z1vR%#CBaD*R>NE4C`sodAx0MunvB#n2PZJ@>Ym6DmDO8<4R=QUr_fQ7FDsDrX66q> zV^ZtuF@~#7C40**u@WuaPn)ty&EVd=mPkFX6+&1(PR%+--x)_=WZlIpN z`a>8J_9GRhWE;vC$e$W&j4(N*EEt_v7iJHu71ILrxnJo9X~I*-UZ5kEio$D}pgW4( zy%o`ugGr||D3tK)9!z13@-WMo>@%&$c`1_UD1d2~)FwE5n3xdwi{TuI^rmuAC zh!k+!utf0q40J|i2I3!$ACqMpKT5zXkD0e4_cagu+e^pJ{4 zTKFVgrjzy!pQdcC6ID9Z1yJbjh!m&VE=ljq3wo#kZ)9w>lCCuv*~}oGzX&8~(le?_ zF}$SOkkM$Id~)yR&seCw8MB1j(|@b`6PYZ*5R#$u+B0VSJOXJna#IUb$zi}XlDknY z&$=}~)$LknPAa?h|{>@dnMKwR^^U?iAV;Y%%IlG7n{^>b$hN!JOMm zzg&o6{%U@ms&MyrFW2pCNsVpyi0L^WOShTxOa+b{Z10+IBo7CVDY%F9^dU@~KO{F~ z5Zx1)8S#%lY;JAae?b2?TNAJjQE<}d@d0KFQEmfItlp|Dl231w7kjka0`h0D#Yei3 z00n&Fx#b(j&p?oJ@Pwwkbj=qr(bSBHDDqBdx}4xQJ|eVPg9z>aO!Xilb|V9dY)!BG z-)szx@kW~qr$bR(-g3INL)+6YUx%8KF;_^8enA)MM2mb8eX4U7(4|hW!+`-k8{hmViuadc_W;O6C6%mZPm%${tMTI>C7 z#qvu%?}T*=^@RjDiM`(UL4TWp5Si3h$VkR6l5O-V{pRqH&?=Pjf7b$_FkULazSkOZ zV{ImG#r$AyF(@CqCPfN*S&=}m&&QB(t3X%0rCmO#K6hDM~=xDeM9Lt@B?fP9hh}?z-_2%cr3<7EWGOA~f zXaU`byiE`1S=ddNkf+AMl^fql#Z7gMUKr5iR+zPnL8|k4U_Br-Lv##+W9v~M5J1_k zPx3Vc^132q{ILUs5vQ#6)5gbtJshCrm$Ui>Fv$jcw@70ZAtQJKB%(17VLaw($$cJI zBGq&S;vRZVU+MNhxwsNY~g-y(5EIw3TV(4uzMpUpIDrUItfLfVw!HPTS*Qdn4ni zjMw?d+&=uZa+A$Qh(UVyK}VS zFz1%td#9EuB^zk7p!-d%O{CMXg4f;YMp8>Yd?U^6B*yOCBE@)BZSN$_10e*)KO7QF z52;s&$&2Q;I?5Ju1C0NOhYuaEV#n>oZ#4TwhRU-(1}(IKM_#`?ZZL3a^GrqcT?78L7!-+^%!e&NkEKcRs+e9>defZPas>M-H4OcmxkQe zI^0h`2)<=L(#Es`82hF{*aXsxz<$CDh0|7OYH4?=?=J`)w#Aq+NW9C5uXFa)H-Cif zN1}y5$8D0<2IQpK}VIo8FBref6sfMG7A*zZgzh2O!8`a*Br7O(RNK``q%zcn`*7rwpGGT zv1&YmGBvLezcz@_lo`KdJ8{$t(tq+S%HyZDUQ4`wPazgdos}zkbDb|W`Q_8~Tw~e1 zW4jsV@gYoly8z#O62Oq#x>DA%_TAH{HGrx{z131J^;SfHjCUO1T>k_t7jOpJzJ=xb zbV!~44N!;FEoNQ}*4@6^92Z-<1QC%d{u`Vp(^1>zEZ{i3tovv zQsKrWKJtD4SKePeB8=4Me*Lj~d|uF?aa#$V6W2DP(~|`d$c0Zg3Q)Fi3x8p%!n91P zW1qDJhlQXlUEfb6w%qv!c)m`M9J_i(Ba5eglBABI9MTyuLeQEshbNRxl{eQzI)?u4 z={9J!x>zxprs*1i0Ed9W_&^WhuLM{aMPx!fBpQuN)S?W=00u?ID(OJ9ZYNH|BEUoo zjVPU9%|2%tv3LI>AmK19V@PSmALFe?2JkuTFyAvA*eGTOteE>)2%VOA?e_E`Cc}@U zEg-#{B&%ct5&$BWH)=(Crm#ucNPTDG5Z0ZhqpfYb0rAN(4_HJ|slPWB1`tGjW+`-< z{s4u;r7S)OU?Bdy$4=dQZ8rBxp^h>ObN0Ty?D?>W)qte7m|=&>slxS*ZJ`@i!bi66 zM!Qw?8xEY8w*ug`*N1&TUfwrrrP$AEmvsysJl2bS#q$HO5; zy}%|dHGDKZz+8BDiQJuG3wYAdPAABx`>RP@+kp=vEt>%lT7!%Fz&fgm-i}n@kTT7; z$Y{oZoMRQBkG{i&m}8}kSE1o4&{gW_79LgNL>hfBa-I{Y0A#mtt{ZA2zvp@^U--XJ zx*Ywbd=nMEv3df;4nV-N5@^Wqkb8+BnN%7~t&0cYa89O)M|}xl0KGNZI!o ztK^vx8yj14s+5|oCgwe`+KIM00)?0#JW|mb^&i}PrfniR0BzI0`=+RyujC?ZhFbSZ~`8~q?+W?($We_N`^h!&)*gqCuV0& zDR)Y|ET9YJa?~C@(s*=V+RSbY{njp^ktK_vg$kL0tksRa%ot4_d1ec_$W{j<#@?Z< zfZ%w~jKdv8H-o(3CCmyA+TQH1pQKZOQ@Cp!4fr_#Sh3R=`30XYWK69A;Lkz~0{pK@ zQeUs?&inAuHw-b_Kb(F%8?j=)o5x&!Ss&F`0b~4l#=39Z4simMEsc3ctxxm3`UAW8 z_uLNx6Bfp9u4g&!PL6Cq*|K}e50To3Hr5_XlB4T-*kMmoL>Mk1M7gWnukI8dqNu%y z5T3OK@QqxU`V_d$Q!8IXO|K6FD$I&FatxlYmHI;0{4kheaC;s0(-m@Vd5XDyv z!M@Y+F@H*ms216C2=6}6zU;5^(Ef1X7n1OO%8GK1QjbKyJP@4BK3+@_xlMdOCv<5f z8H%^zhmBDK=|#)M1_xQeM*AR-2jS2e1fT8hSmBs0$t%xBuSsi+MQ0ULy4Zlq~Zo`Bh#y;)`c~1pnb!O_c)CU>IpQSY!@L zTp4jdrJ)I`@jHmU6zWxNAwiPBeL<7ZJ)VFXSRa*%1#n`TRE)89iokyhfQfK8pR~i2 z^J!Olj}MS%VwtC{+?PvOg=cJ;#or7YkUeJyZQ`7{Vp0aNGIoAZh{tvVEPUsW>>We7 zecM0_;Rny2VGOZn&KtuNI_-Xd+A1@1)k|;Npe&CMv9yYI&s-RJU``qR4vHoct;j#S zSdMbsi^_}|?am+;RB-!Q;1cbcWPp&Tcr)KFhF0ZUn0RmlV|pZysXjZl(TE}~tyUn#6C?aPIV8_*JzQSii8SUN3F zwStdoGBV9IJed2U#05sAeprSdFi{0=jE`YuK_>q49%#m^rX#V2#>U}gC=-zbcz4Dm zZJz1!XV2?aLrX7D?)7CFtU@A`3czNiMPzf-t=8Yr?~++5>e-wJ^!FimHq}O8{Z5fv zcia1$<(^UDF*@GjfRer#Mo1UH;lH_~r>L-u)V-m^`~G13i^}k2P+))s{Tuq1A#Fgv zeZRKDlJ7n2sNx9&Fl9I>IUtW_gaiRUiZMlKx zTZjYc@V*VigTy4(q=A~z2fZYW*GXMpK`w5BIhr21)~&5=D-A1O%L_T;71G0@+;|Dg ze?qL3;e@(VqIZ%zo&p~6`DyRiv-d6e;1nOZ^OIc)ts+nsJJ9<)9YNr8@8>jh*ZKpT zS3Vw-@Rcw!#HZVlhy8EX@v4ODQL>cka*^}WFq@CNHJ{GCknbMT=6!DA2jTOV?}l1T zyu+7UgJJhX9i7 z4(go>XkHqksjNu#JqdxoRplpUV%jA3uDf3`anuTo%u-LzJqW=Y4+CwS`_S*8#Om(v zHaR%>t)n%6i}eSIqwm#AtzJum?(aUQ9|eO$pq2W5IIYI&U^7-EiL z$5jIpmr-(*cN^hD0QvNR|-u& zV}eBuP8Q%rzMTVDVA=2+429CDl6e842(d9uM0yNMIAlaB(l*L7{~_RGIDhZ~Nu!n+ zi>;ov9&WS>fAvQLj@!b5MYfq3T&%ozb%GBMT0ko34I0sUpG1O5VC+ddej~rLa##q= zFeatG#3M<^_<@|M{D}RYdFez93c^4Y5@9lIsQXgM*29+DYSZ)L2`zzpl*E5E#80ga zc2m}>(151d`(E=~3nb~vk?MWG64`7S!%!d|D|yJ1;-^Ug#I+mTw$!RYy zpYk5X_D7u^BX+8q0=0>q??JYTf&x6`Hz{hN%^B`X_JI3i^P;k>Fdr5h zuEv!hH>oo1?vgrUlPxTJJ4Vb)dOE5htffQQ&xFedE~bJ`5!wpRZ8r?13Tc zS?ID>!&yJ{zgUggey`xf*3ONJ#^0tUbA!=7OcHg(d5k*_|K1~(yd5)gp80H;h7Ph2 z*vF8Wsqg2ba4;0<4~qju6U!W<5^5f+PTMJeZtKO4cdowNV~F_<_Gp%!3UZ`;rxP5t zRuJsQVCZkMi!#9L)uvGUzdJ16((YN5KL0jAy!}Gfrum-%fYR?Hnec0*5^ptdfOIZ? zDNo92t0QgfKdUpexsmPR}V8(1^bPOAUbp zCxjTJgCf52Tj?>N_!xncL&c%+IO07_29yNoPa|Fp#%oo6kma@cSp)`E_GUO2(psF0+ZIZ8(Hd#{> zcq=3a|Ne>4<8(TvV^?1c1ji{#PS!-Se+dNC%uB6RNP;(0`Y?6~1WjjmH)6h=VW&1Oe^2qew$|IA&owl<6FQQQ~eKU z_sbBAxu$z?*G^*Oz&+>KC!)@oKd)FfKm)(6-nOoB35Fg01ZWm-G6wrU<;pZoem1Vz zL~lVK;B+(q;SG?FLyl!6mqYd9iZ#;kNz(imi=+C?V(^+pV?uFbUr$$8OWtEte|S5v}629L`I2x zVbKW!B$xjDOP<5X{%P-Sl9_CxwbA(V%?XXj{DsSstplvRy;_c?EALQZzmaSJd3X#$ z-C1kBp~ed#%2Q0Qo+~h;k*iYM)`^)&DWt7i01wvnt16b>kY{jkUioNHrUKseiZ*J# zp~^TFw(cc$T2_nd!zne>o(NsYR*;d8oI3U}Cg_HK2L6lfmMEscWk2thM4P0eb6#`o zxL)?{jVR(`LWZZdnZJE{Rt)fQU}o7fB!DxEHwU2wj(n>u^L{|edt zfkR5a>YNa-{ZvwY_-C(Zs6+P zL7pUxXyeZN@U8zzzGDI+ae2KM=lEK}nlQuwEc>T=(0CP3XE6-!6iNx$yUdnfw@_BA z`-R%=W5+Q&+_e4Ww-A7QOgM;nUVop-IZk;W{Q3XFnhmZy_AooM?~ToAgXOyiAr>cA_+j&u*ceo<1X@ZPQxzW zP6FTIBw|+_GnAM%*woP|Y^^8Ou*uDF5~KeLcScC);!??Jf+LxdsqZLD!Scs1XOirS zY7w6*@hj@a6oUT#E?2`gP#Q>;v;5?y)4s=a{V@!NABx4{_}1qsVa!PN@ou{k^aJZy zh?>7>pudm&c{qunL!IcQk3371fGAExHb9tm&H$IIvDm6Ou%WvM%e(=rB8YQ1kve$N zD$+L&zK3#Z+c8wVYG?w1T`dt2;LFY@dKi6SfC)=KOlg1r_TP{t&gAVI`%@z|?9^~U$n-$M;Jb_xFFw^_k&DO4$v$F>zjJc<&v^l(2 zekEOb5vQ0}?!DcU2C0_Vr0q5SEITwz_n?@)C`j$-IiB!rxD28XPIQ-5XG=sJA$nkY zmD!s_;P|G^3>4@=yzF4R`Iq7|iF^)LKO}iqVR#Y8sL%`27=_~R;d72dM`!Zt2!oA; zmXE1bzXOOpT5vQN^C+6C*h#;WZrxco9E-E@t%OF9!@(&XUVohYP6Tjgud;A<*Ibzb z9RwlMRZrX8*$F*~)rgk=IF^FQz5!L}sk(gv{|J}51lMPd_Yt)0FA70>b-^uW`RPx8 zTl(DI51`$szO z*HzCo8?giEmGwCFy@&Dx_ZB&3abls>l{Bu8{d3Xr;OuH_77C}M@UnOsguYEisY#aY zG;R2-Mr=1ty}*5EhsNV#43BcAg6Fc4Vh^k`%KMMP$uFY0b1nR6-mOFrw(1qfW^gQ2 z?-g{;*&bHS1v5b8IHVgBmY@etdjN10&qp;u_^LZ0uPZ)Q5bcm?@E1}BN-c-so=pa_ZZYz$Br!95kwiv%O zfujCN4ts^jjwK68(5Wb2c7))?;ryJf7T%2KdBVvyq#yvFvEszy*A1gv5J6H!H}3B< zSHeEFC;Q~;5p|DtDIAIZRM$ixv^lL_KHMk9v8q`W=x-XcL(L=@7kUQ7-rYGq3or`+ zlnhmw4{StTl+z&ZmlrT|9U;vvGdkq)?GDew>zm7{s#5i0!Ts(j3GV*Xv5u=MsSqU1 z5buO}@S85qN{ZVa(Gv$8zbI}pY?xwy2D%0>EYH>98y?9;Uc*TE;3Oe96jEB#e9i&CFx;|s$i0#p!Q|kjSw5|ACw6{L zn`JReXMh9xAvOK}x7*p@6X!E4*$8#ztl*JAOME>UD1AH+$3VwAf~}3tN6TY>Nk*a{ zji={jvfO&?_}{RZn64i+cvP(n5(BQ?9wjLSh~y zk?Zmfcpki>ZAkMIs|<9Sba1QQVhii%C8wNE4~g^95lf*$%R@(%h0l!Fo!AibPBl

    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 zcmb4~bx<2$*zY%i;O=gvI23ocLeb(b#T|-!aEe)4lPhL6fG{rB{#o2 z@B8naxii_BY&O}P-F?nE&-eR$&Ie8P*Vq^o7ytlZD=W!s0RRY!*euXc5T7(e)JPz9 zR04DiyyR^>t=>DhdpWqd0)SuMWJZ^31UFHX-6N6y*ectun^i?DTl6+@%KTyY%Y+wl zvJcnP`*=FBK`lv28+|t+RGnq5TY=tRFLXY1Tt|3F5NCAL$n%ra7_+f_Q26OM-?a6} zo#6OWXQqbdlOB7GuAP_pcz*2CZ5YNIg@1oP{z4*VBz@d}gms&(nm(up$1u9;xA%{$ z6|DUn03D$@2`eHkq5m*e(ki2j9U0c36OG!(D)H0_ylBnSsD5F3;)SG7i>_pSO%|qK z<(!<#;2zy80yZ9)Nm}4$JoAZi_tD0M%;akM8;7!ldPq~^ht#}Ci`C!Xlf(}piDNXX zCNt`#81{i`^nQ8A4sX@4z-BHMIy?=;wYZD8jk+m{G$}^vM4d(FSH_qnm*2yCx(!9< zbi}rzp`{=nd_~coy)=JrqUHZ>5O;V&(6jmTj|~8z1C-@ubo}y;x?G&87qgjeiKwSB z5*P-Yjr7oxVwUaOus*(}RE=b!=s&9>p~D(<;O-a&fBy9~9|c=ZwpKCgJXr>gM)CAw zpZ0IG5v3Bhs#iu;CU#T3)4LTA82nk%2+a`kCRRR{IK0}0$1JRcF*=Nxv)H9o=V2?a zb;@{8Z_W5-Ve!e27WQY|xYadZTeqy>=CYG{#z>A14-GjYrue(qe{aGA=)ls5Hz-7f z-#U=MVMRAZKX+0joq~DG8()P_(UU->>FhD1AMJn%>BDpoDN6WyI2sTpokE`U`1he2 zPZ)#`?)p&R4f=r2hUbOaM1zqLjs~TX=fbq`@o8zvbyW&QDGAm=`ob0SW)0(G0L8_j zON%+q#{jmQqG{=ymIFA(H#siQ+1aMt#MD&u{QUgKwf(kTDQe&lP}lj@x%jCJNpN%# zsCpe@?t8*)aS~BvZgFxf2+eLG=GbFeCfTVP$KTFJ6BHApH0ufJA|XvUmjd?^L3e(b z%DgefIrNcY^=9V}uZwG$is}`I>H?p+aqlRw-cEe}7J~LIj1YXueM7E9a;<$G{JVP^ zI;^xd{W`n+;x{{HyQ%bItvT*N9YA%r_kv1|!-b^Tg z{`4&wZ`nf^j@<2|!b;e;(LyQsl}De>q3L(3cI4ix!^Mc-zki=CR2vgJt*=QxBL{Hr zvcK3<6f*c|5YY$*EPfGUg@1!(BoBM+5v7sC%UWQOfMI~s`l;OY`sGID?BfU2rUIOA ze~{yR)ig9>PF4d++Z&)tmxTodT&8GE*Fqf@?gA0h?Q%_$#ztKH?b(l)LK_-@usJ&@ z*Yh-3yUld)^u}lBrngmi>nS^oJXhMoh|S@exp%Fa>9z+;h-AEwRI~QlZHo3*ulnS) zWacfFbVXV5f?VIxk#n2fv^i3iEb-h7|a{cC?e4a z$a;^6U^04dnk1`yWb>P9U_SZcBc5+T;+}akul0S}Y5SojQ2Nj@&TRJiZoLN%Ia+DO z#if-Te17Ty99}9IgRIxieCKH-+@0(TqJA2>FNeBsz2PJ)ru9W%z#_%@C z$=)&YW`(!Y>|loJ)n_u)BDFT`FYQW_g{dr%rpkWQ!*iRz`T#>?JAHBoLruhSPF6)s z-b?qOK<`B6{n)q2xBFY)f_N~>vLj^T@E}Kxm;UO=;0KtArc+xe+!(Q8UOxo%S6=#K zoa6}QwEui{KQ-^+@bK@Sm%)@t;-xdRIvlORx$V#oMSUgDu2jlMwsO3P$Cc*2=&AP# z^LHVq4{$D|6Va+=9*u1&Twl|RyJu4|YfG?K@LxmU!s)?~WYolXxyrrrII_IP&fR0* zIJvwltMn5bbDq=bkrU46!2dM77uxR4J7z9 zyKP9470;jvX%uU#ez_N>l?;lF!KGD<2$?SENs0tt`EGOvvy8mCv@67Mso5beOM@4s# z^)f8Njnag$BzO`wxkuQ8Xt{JI3jW_}<5sZxH%6kg`-zQ}D8izUANl9-(+xOg${Al4 z7`^iE-@n||=KipgvOwSuavl*S3z7$Dn}4Q3+A4t9WF^U|U-!FMP%D(2a2Ou6fDz`B zAs~}h=$ix9{3=%U_AaZ|Z@1nJl)?8rk@X%!QGB3jH0=hHTs zv{i3i)-_jPe`d`U`XN#k6H3Z@tt0rfX3{Zyh70MCickZc8DIsN6b zEE=_oFo*kLS!4{sO!SB(Du-G$Tr2#~ioA4X+kRiY3V3h7Iy5@naUQhwn8$gYWeD(V z3?xh=R~;y-A_fy8w3+}eaPL!CqM@`67RvmtjjiLb_S<;pGUH7`03tI!BkWI-0=lUd zM3Iko?ICAD8f-QvzRNzO#eK7m@gb#+S4;Aa(B3xS-kasXaC^j~&$ocsI*l<-^z_!* zxyaDHaCQB-Y0Za3)5?fUQ=b*3XkCklN_SEw*3JfNonw^|yN=`HUo2u9z)HaE^@DSI?%**U+1l`!>C|p+uF)(a$rkL3x%u;LT=}khEonikcR{sXVDoqlQS-R=p;qjjq`sjCk8DHnZBO&~V2uKN zHC<;nVxkvWABHIlKTx^#-0txn3iB;WJY-GiV%40ybC!M@+CLzPUeipeVN>Gyej+_v zlke=p^w3IaI-jV_vg*jSA__bH?y|DK(C_DB3^;h(9|((>#g!bigxzx%GiaFxLQIgn zDEv*3h;)$DpLMH{HigUH&L&*qB*tX#hbDTG|Bw?!o%)>Ku&i6;0-DKkzGSLS7PzI&03d_I zETmJNWXQr02mW!%18B(LKBz1*V#deAV)=jXO6vNeB7R?_-4TJ?IH8ON zL$@RsH%kk;&sGg^@3H3rVp3uS_?@&k&0wx_(BF>_gIqR=$NOvn6=ePXy@U}rHidvG_dvc9JN ztUTJUoV^Podv7X7)}2_XUpuU~nw^`AS!>pX0SK5Cz0I;&{OV-C!lAfUjVXyplK}G- zZztlym<78C2GWL85+^$KvmjIF`=IU}o*W}!>eObTiGMqk%j?i3$Hmjr(-ih1w?Y|H zXxm(Oo%p_O})}L{UMqy-iytltHT58wtiG zxt!{AQ))dLK3)k;JSR2Nyep@SaS0;UkY@5$v{6So8`hB8_ZrB#h#Lrkj&AT9Vbi z$B3ZGh-_dpJ!ox#?kWb^hXkavqzV%?!STifdT_TRYCqH3gcBBA^31ik2&+UkOXtK8S1esb@|n`|dn1C| zP7Uq{=l&xRGf$Q19)xL5ogOY^bnnX#jQDdl!b?(0ExcDEHLXDE#io+booZI=a_}K<;P_*W}(c4PX*Xx{F`xP)%^RiqZ?yODRzr| zsIiiRo{R=*#8${(QMZt_?j9L=ai+J0n3|drMv!L(JnPrAL=nc(%Ao2-qKI5FW<0bX zQ48~+t{fLic}6uwC&9PXdz=94uwYio7XTuOGKT%rdBH=BC#8S{kiPl3gQpWe%s&&* z*oPd>rs*}TJ^c#f749RfWYn-0Ec2>pAFHgO^}lgQdWQU-4vphKJ)-`HEd-ra;zvZC%}rO_HZXu?&b7teQtqzG~@#S3lCmwEx$ zz7~+G_$f>73hJh^n;p6Con{s-OItZ2uM3piaNH>2iDoaO`aACEZ1WCNr8c*Dq;Em0 z%zJd&H)vJX3Ls9AaUqMUN3qzL+^fihujsI?Ho@63-{fOfb2Bs~^m*bF%@z2+dJeI} zGhjgG_(pV#er!ZWaNv7UE7sCbe3iCf_gkRgLznM&lJ{Jscy3L!qlIV%CKBmyqD&rW zA@1^~IAQGn<+Dr6J+ze=*n1L|@Wu)qvb%Q~7|d@x=@a`M-)&zw;DHrn4;y_r&9;&` z2o|F1-vzI*r@xuiC<9EI3iVOfu(wk~u@o>LGkhK>*2rRVbR6*wBHJG;X9G>Rn_}{~ ziad+8G~`H&gh2=;$%qx8#*(mnqg=U3c$dsV?D{$|A4pvv-5LR)R@Vv|5Qis1Bh(e{ z=#_*uGqY1W?&v7r-_h|bA6Pz$l2UB;nEfk$q1ki%z;<+(V7d7-dV$^c=xX7XjbPoo zg5VNRcd(%tHI{8zEY#7z3%c!}+Tocjzm#Gj%mop&s;-&98%9Tpv_l9N8>J9K$k8XzWz zRAJLZevKO#`KG2`w3d)17Urp|-iUw&yhKlpLCeQp0SSfzZ)=}+4!7S%}&~0jk3?Z(I^h)$+$X=vr_bo~{IJKFGOPI{Y#T>`f4fi%Heev2{H1 z9~Z*pZtbtgb*L%f_o71L{(8NW!bE$^c+}lGmEq8HT--|?`fHeB%A3PpG0UyMIllDg zv@T$55axlD9p4=_Pc{(VMIQZVKEPlWp-hqWdX++{!SrIlKuQ-c_0lQRlgSV^<&B+K zyHj4MklG_Qg)V$J&=vRZ$`*82)LN(245x)^b0<6$n`HT;jB{fweqZx}^rAnkh;!Vf z7Z8sVj1#_6ikIsfELn%>)kn>fhS@l8wmp%eM-X1O^17o~6_u9WEeX?IOy@M~NMivL zds5U{MQ7UA+#H|2(hoJuk`f)2N}RlPmDn6N1a=k42q#8Lv1vvKTLK8Dn%1M+jV{Z@ zZaU&xwmhj9KG&bLxI`2nbyshb4T=L~i@2-?zl=b;-}5kA-R}{Bq53a|G(zAs7)5QpN-P-tdlG!X<(OBpQtZMs)UtClo-CWWP6b{J)OZ3XNCXe_vy06YiHw z82S~2Z(r@{J&_`@mf~k*@f+7(tFBgiGPw#MKwgP8mpSQSc9BYYD+Z8wq+=^`8MORv z(QWgZRhQwSd*L^J>E8&fe#0I$Dxu69lj2`U`11FUTGGF*uc4`~$~aPFKO*XMH!y2o zMWGh^(>0$5jMPVciI08QWk-(-bg2Jgf||R@hxFi?Q(Y_A%b~xD>NBf;yBX6{-IeSWr-+edgB73S&zd(W@aMnBi#Z47eMu5& z-gdJ2_*4GRIoPpPzF1E7grP)d6=ec27#AgF`~>M0kTKV~p-?1v|4&(43dLf{b&KNJ zzUdeY6<8f4Na{s9JGW!%}n`42W%^D&$ z+$Akw@h$X3i>XBSW889;29O7rlvC8ufEt3N@8vb(AXPTl$fTMW;rz+J3SLHfs5}p> zJCW|joi2Z(|3^+$&sD@@(#r+S6}-AsvQDcW8kNc^!?aT)vIAv}3Hyh`Twp{{e^1>5 zOt3E{!5dzHgG@POpMif!=A*KRQ-@u#nt7`O7E16$r<*Pm<|b@otTqMh~eX{V(K}L%pD#G zI?PtYi0p%3NSI>Figyx_BcXxM!OmHyIy$f>!u0X`3~u)x2W(GNX>ScTg}84<_KkSEuwx)iC@g|A7mE0k;Y-|n=5*lcGotd47Ds5CHzT{%jTcb;qK~r~m;vWl{ z0jHxIg*E~wOqG{%JB7^7uulbP=#<9$AP}BRQ)pNboDNI}$$b;W=k5tY>&zQSdcED9 zd1_@+!9Di4T zzOTF^QYebmqKxFX+_%f+p` zDs))%6uRgdo|Fz@P_51QH&L{@;+bYTY^5QcMLM@cz0Wi>q=@XW-6B&ih+?iGmjA(@ zEXkeuci=3ACjqO_i-Ri0?!U*c*WMu zh&Fp+=^uo%X%)nVT(Vbci5xe@Roe71KUS3$XzHil$jg1GjPcOsfX18N(Nk={hz zG~ql$pohTv07e0D`?}Wc{G~?+C89CZpFQaBZ2;zyx!=mVI=)q6Cqu^Y^3P&GxgCcbJ`lb-b8qcVsM7Y~ zw*{_Q0>CKO^fpY^nql;qQ8% zP8=R|sBzmOKiVg#Zejp0N(aGsSd2+^5D%c$Hmk?SAQfEnu}4Z-njcek-mQtkg#8HI z7Hxf#QY3u4{XE#cF)zv@h5|DtDI5WRt%H8Pe!zZsrb&8%T$i*ZkxtDBmeyoxTiHV+ zsmCmn*aP8m3&|0HS`R;K7(Ka=_Ij#4H=>X-<7LFy%_xoDWVy3M_(?VV3NEX|gXD#N zAjaxTIDSjkI$hZoZWrgeDmS~J@Oq~x-XyJxMYHh7iJb27KL-0$Duzc+4u$1sGLp|< zcwd8#yxbp~hSVFl>VG@i2$_|;VfXUX77hTCGM}&9C%dPYriZGpIF$O+BV9VdZse|X zt?Sq1K{R#%prQ8Bt22(>4|k-#LdOriR}$y}y&*(4!iAt_V2tf#M0!&t2fO*GEjIv6 zAC0Ul=X+d)(&zXFLS7-4UY%PpQ5Rl0d>y@BaTz(a)2nW#bw@tGn)20bN7~h5t(r4)79_G*N zKnGqZ(-7zjc=S?<7o`ndW(q9+L66)kC z+FGcBO*rN9Vy}MH{A@ons~}nO2ck_rIDhan*I^UKfZ?f1w`E5cL?Zdn^nt$gKRJh! zhjt-)qR`5>*_XVOMj;*k3LJth6%luW?z0JMfcnyl86B;f_5)5Nv;6078LA?yjJK?1@ zsyA4jE5`lhoU_@$$E>LHs+*p%ghQT`+_)EsKny5|{QRhhVU{a3X~~;I@FNB*)9eSl zqATv`-+QSPk-(bqT#(4`x2n4=Id-VT@fAuB`UehvSvGLMV{-;a@*P*zgApoyLN8^* zsn>h?$K)f`{XoI$oT?;d?t~_c7qKTmRtuQb;Y7Ye21YiUWI5Z-WiinXEC7v>7P%wp zy$z-+zQnrUxN4}{#;4g+vR3OYi`dX{BS^Gr zA|1yYG(a9_yncH4!eEd&)@k2x_AgZwn=Qn1e2*Zr6d$FN z(-BT!B3xzPihI|2CrDs#@*pHnwG|G2a2K4pcLwqh-bLRl&OY=0bCx|gx!1}4xrzyp zwC_;3w;8$dRf~SQ3els*k?o?iEGW1$L53t}*KX*CK88q$>=(1>(>!#tx=t2q;LbT- zpDS~i9!9SD+5PZv&c(bHxp4}v_4Q?nyK@ij&mMo^v*y8jgJ{;(M3`$n!Y@klinu}+ zh4{99acVlbJ$0hKC6N|mRLhoL_!h5}VxrV>?Z?g?{xxpQC5S`Ko?6wOS`+I}U81r{ zg#X$8=4Ytjq?`ROltR?LeA9@In{k!+S zO60|8X$%A!p$1{Chs}20(7P5}L-3^vH-n(97{0*;i|Amup#KMe0?{any zhnm;?R2TI+anGNzqfZN0!K>i2OL(G+J-M+k%_RQ*VE&BoWftKSFVx1Q!G-0D{}K7_ z2met&a&4<~;m7Y(bBsdoUv}9FRQ=kP%K&Q!j&%;ZLn^rkRb?C~!bXmqvbthncix*T zx846j>$bGSD!DzV*FQB(Qv#Bxup5imWJF=nfy=5)e5RdX%yj?{u9zf(PXC85Z|q5~ zHraA2_k=Sa&I0XPFcO~lgHziuE#wThALfNsCE@IW@Cs*o2#Ir(Llfg4gP=*R`*kA4`r$ri|H`jS3o{qH5kY(k;2gzC*pF;%2KB?Ct0+@A1C8vk5d#4Thhg%Ot z;ttht!_P3z#~u2VT;@F2zCJJNhtr$9IrY(4a+TN5;&l8$IBEL#6YzrU6v*nAWpsun zL3+s(!b~17VWi!+kGF($Lg@(KmdB*7fA}^dUpn^O)AdFhyu@SI*)rA>yqR%MT(d0c zdvdW4K|HM0SyAC_8}SU&vqYM1mCSAB+^)ngqYOp2I%N)JQ2IeTOXLZB4kH&h@_zSy z|JpQ$6DcJP=)w93yz~{9F*1mKkMPu>8+y?yuo7byA|AEOAMC!^&ebaf{0|EdiJTC+ z+SJ{IgyGj+q@$Gc$}n5^=LXMoOCJT+-3HWiD>mW~8vQfLq%Cqy7Y3{9$GMAlfcB4j^CBcnx&qy;2lyT)b0}2x z;V*QQmYZZ4alO9jb%_JT92aGRmJzV?78BaX%d!ws5wbD2kUGFq^c594`QaWK7mO)s zOVG0`A>j1Uljfq9S34$X-MD4OH1DkPC44dqb5y!wyrR!^V`GEuWyYw~-yY?WBxBKG zh>i~@Jx5~Qe`XqU1SdzA>$*Ny zKeEI8E;G@Gc))C<|A)eQ4DWQPe8pLjKp=<^uY`XjV%_3A3K=gnE56*+t?Bt{KfkK! zMH^Jk=j_gvZi9H<6)y|!M%s%@uuON0Yqj8wHmqx1gKKkmg$4pSzWF&mM&r;7W zM(Hp(H~KDIYeCjP`57 z3E);ZyhY}V6F3uAK;`hotQvl_(jAx*i4FQ^lUmOV*u|lF2|2J|pD~K80he|6 zf0O<_5uWD5%gTFSwtpXeL#aVeU}lkM!gtJtJtpu|pbf@&*XdA*ew6z+!BQ*Q~?5DIUF&UadUO3Y491nPY+rZy~}eiAm>tKEYvr zgU3ole$&@W&0^QF$Zji_Sr*I9|5;!f1Kw1vIj2NQd|Wx{ekq?;6KDt2lpe4Xa(6<| zYYI7(8Ul<=BPNDm38%rEF0UV*V1J(x97}uUS2pg8S07VA%m(F?%3rvMetoUYexPvD zQczoFcIlsQWbHX_xV|7D>)Atm-EDb#dyiT6x6O*Ei?8gVMIt&#OHQ~rh`hJ)N43a| zGM;d?^&kZl{aWI9>39MTi#jsGfAO)^5BjpR*4te^AFb7$%F4iNdmNc8l-Bn2(x(TT zX@aS%#iwiftzhz+qD#^y27^liD*NjXMoCDc9Lgv@X>F=&a( zX42?afap>fio>`G8qr&V07S>9a*eJuZ?s!|A=L}Xw}Y_-3KB{h@@0*(owc?eVmSJ| zdfYngN52|)6J<=EoL+`oQMcC~wdJQrzrA3)U?aTZa6=B@TJD-VGMXG-q8SDY;GHSYLaD&^-yS~28X4RMx#wro-)k)Mh4$jU*UQ>62fhx0#VHYi0m3W={fzGf zW(_Mi{iUK{MLBbQS3#FqL*YlikSX|UL8S7fy>y~~t&mR@Zt z`(4T(!LPj3jMQ_D)hy5-In~k%7g%x4{6aTB^#WbDbW^Lx|3h>ssU=yBD=xG9ciTx0 zP$=zpHyv{phimuc%Kh^%SDMn+3O0$%O*m#MdFk3TIn~07-q3)k$1ogyWI`fb26^6( zzLsdYO+F_hdlXVbm`aCNPft*fCn_B_MpDf(Lt+2=&y>uz#E|#6FWVENrOK zy;reIOC+S@inL#eeCoC`&&OElSU*2mz9|)C?m8c@?zJ76!btyXh1{ndb%vw*?J^Lk z8886pLZ_E^NKm_Oauhkainst@DS+!KWzlC->BmWN@T1pT2HYBdeVIpbIu#0fmrGM2 z|7F--zc$h9*({3X1HVZvvGhopS#Zg(^8>u);}TukOS49#A0PQ?!Yf=FlZYP)C-^i^ z!ntw8QF^0*8DkPC8k7rpap`toTchA&O|1K4@6&0>N$79uG_N43_0-nj2BuqoH8yRb zAr0Kg`BTx9GFpWZ-wT@B1gAGI6Xn{lsN#@_eyg*0+CM$h`u7+8klYSKoDvi|YLsgC z>a$X{h%%5dn^YvW*_?l<|UlJ9@*{s#`oehhQW z3?xE3ke)_^@{+8c5GhPJ5^ul8k2;Q%Zv7`mXHP2e0tm{un-LHb{3v2y7EB*|0ej_Q z@Oq`obrTKczoXy0I+}8-avb@hrVAqZoap?b4_?;b3=R;@Z zG=6|0;7+QUS@iBL?pF;K%4JTuPYRcmtPX$Xi{9no^K!nQ3S}RVXvNn56sk3JxEg=` zs+=PFpPFu!xh3nO5s?Hv@HnK}U~lG6J7GKjIIqN1q0uG#+*LHjR4oA8*gK94zJ%^- zQZ?3^^6Sw<5}DSx|2(%fn#_DJZrNUA&6pPWl86O~&Dmq}>JGAUXEOyAi? zwEuI$w96tU@a^4F6$kI@S+FIUM>q)Uyws3B$T-^rQ`^T6h4Jahu*HOM$A;V|hv;uf zaE1E{SKhwLARAcx>ZCtsBSA)n+ifLm@ zrw3Tf2)BiPaf*gAINA-qaQx=tsef3c%XVzaZvPk3#^AKLRPTFiSIE7e|1cW7Im>#o z{H;K~Nq#V$c+jAR-t-Q(=YzfWu|^e!A>9~>{M>;S7GPO$=>qU&uZek0=jGaW?1bh{ zAz!N$3L5*kP>-mvhs$4$eE?#Q9&K3S&B{KK3@HVaGk?Swsf%54rq=06Kq4hGTybXZ z4Mrm^x@t0|^%gOD(ZWLDs3*_qK#fF@*7+<>9kbD@E^R}*|NOQ3v-Hz`Q$FL&eJxZQ z0}vvacNEgaHYWp}`$2RQ)pD1H_1`=BPi(+i;FmS%*c1;W1kK zrrRG3UrUQ#ZDe{SU#=r;JUTxb)SGGq;fEkZAwK*Pa2?byjk=ag(&NS@q&{ z2smL!?(|=F>)4p^^uWlPnb#3Mr8(K#a|IipPGM|x$8JW(<4^xYRLp~JC{oGMEt9?} z#Z*l>xtAIu-_7q$B9nfq1w2TTaer7ik_HV4;G8fxl8}}x87`lO3(uk5OK|knO;RKX z;F)7x`3#Od`pP{&W(9WHC5FVK1K;e0qS&*BiC4os9;%k*(xv@SY+(p{(C=-u4&I}2$i4`Dsmefx zO<->grbyQ~{0rma$1?=;A=HK+B|CO$s@EgF4U>k;z&`mu>R7wwTlTlCSNuN%SQysi z+QL^5p%tnX=wAzg!^ucIj4RGGAu8bat?7iWE5ecNGd?TGhgJnGN{74h6N~P{m>GxE&X+!D<;RucwK$t}}9;o~^6_!bB%hLtKr5{fdoBJ-G z5w-y;_cX`4&FU}#&ToT0da?Hz->L4O;xLIKSkP24IUZj?Bd$j%-D{HcJzid1A@x$X zi8~u9<%HzEHj$nQ$Ih?HNzbs7a;1G-$%IlyF!Z|Q*>a^1$EOk#{bckVO_0{UIRzjO-wul-o4-9#bjKm$C-7m3=ut{`Q+^fiu1m6>H+oI zmxA8UU88px=6wj&5FIXNa&i0J(tafqX4lS;TIfw#sJY5Z_vmM)FmM~A0I)?Hjz^?T)Mt+_6Zxqpc*%5Oe7`atX$U1+6R8^hvhcTpZzwF9AJI^$Z6f$oFxI*UUsPA$mvld%kK4SuU zSp-2e>ObeQl)8sk3CO?+f;9bAwf?A6&Y~DFPws3fBU}Z^kZ+^z(W&ACngPq9s}xh{7U% zFw(Pli*yEDIl5mR{G!9!ND3)K*9pwPxY?#b^&JhlpPgHf^33&pKl?GRI$wl+|2VRtGhI2hp(Phu?TmnV`+= z7|N}>$Y<3pOQM739#;%o8(m3Nb-7s9)!BtG(Cq>2lPu0E`4bAdwa~m@FSlzd$#1u9 zd2?Wp>tt4<8ZTS9=}ibqYxSL7%_TX) ze#T>+u`a|uX0n~7E4@+P`Jupnn7q<&_j1ZW&3##{_Nb9$MWI2_t;Sy~zo6kBRx`$u z>+fGv?B>sjmlN@)Fn1PXdN}r`CV2hCk!j$i<#lWEY{VrL}zS2TAo>Qjss7r6( zkYrX^jW^)WM)l6?3H;^w&bC*RF7`B+`61Gn)a%6<15dCp(%y?g@Z|6dwRY`9VNSZ& zMwVrJ=|i;HK3!Dpg>|g!ERp50#*Xi;hQsdj?FLJ@_3y% zKwHw6EQsp&Y}CP12~u9{FLV^+QXJ5r4rOaxeget%;5f$Mf;44DK@xntyY&S`v6RQNIaV6a z;fKy2I@VvQDD3z$G#AC5JL%v291B9#m2)~@A&VWyym|yKBAC>a%~d8wrd0;z+o1FE z!M>>Iqv(nyx)=am$f+1PQpg+Ej;Q0gCd~lRhNLJxxI?QHzh}Wzbv}s=sVlX1!`@98Pin~jmLhH>^T~vnEU!qDms54Cz`-l|x+o&Y^BA!NF31(}t zw*?n8HDK3fg64$ALHCIplc~!5H~<#j-+A&T0~`IqLCjQZnuq{NfzlE(a?4HqpvU9DVY_$ec2 z^DlVgzv}dBk!yp^spgPR9_ct2Po50ULhP~Aer}4(&z-1KVv=v|Dn?bNDFBm(ZH>Kp zYzq?ocahUlr-;V?2&B@W3#E&IXp$<8?~x;$7z_RqR+|x;oHlDA*>?(3(0g%JP5UEK z>4MmkFeCSr2$^=7Jh+QiPh9Hs!_W?4xqzzP5J^CB;+%djb2E#fNXVg)h;RSHek z+O(>U7%@V1*w!$Tgz<(xuXjsY_uyNmK~n5O0Ag8Wtj!aqP6YIa`$wy*TF;8VIvO{z zi&c31kHnxplG8`mTq6XfDm^E_y8qW{d9taR0o>5Z@<}6Zt?KXH(3+9Wv%3q^_*KFy zb#0ux^xijfxBgN>r6&2 zfY38b?)TFDmjgB<8CxycpAlACGM_8tENf6+RoN+WL(d!ykewUiV8F}UwmP-_;}&K1 zH;~;ast`$nN?h9Pp9sRxupH1v`QaRj*9U=WocMASBSquEojRUQXS4dY2}8|fQZg(@ z_+lQ%{6an?R~_G8@;pWo_25v>?4!5{l62?+z&UE1+g`S0b<*rq_wm2VU+0mCA)>5M zYjk?z(H?79|2MM~SN}(FJ@8F|AeFRw$4iF2cY_kQYGdn}@bHE|ViblM$47Mt->_(Z-+0YV z%7TmR`vtJS*1YsqS;_uw5G^K+EZtT9Kyxcwbn=XLPpQlvluA7F;TqSg0#p^C|Wh5RSkE>BfQj=Sl`=(G*^-oqN~pxQbU{^XLDT=mtW#(u96*R= z9$|D+|FgcMqyq5E_;aJa!u21~vo50zO3_IVcO#Xd!_&e2!nD&)NED7>k{Lm%UuM$K zaKeg$Sp-Pg1W3WB(iMd7H*O9@)(5Jr;yI^QUBC2n7G1p_XB*L2MKDksfEDqXHydpu9S?j1(NDUD{!v1WK~6-sY=Dl;GvEM6v1-F31pg`txhT7W z9v%(Qm6)Sfh@BzOIT3hKO;SeEC}i+MfOdsDU-229!)0%%gk`eX8vi{*na8Vafua2C-`(t^zcRXd!f zjiSHzV8^n5pxHguKhSIY4_rYcIn`uirgh_EjKw+xNNb{ zA=&QaFLM0udzerTA?vl`M~R9zsX7KtnJBCGUmFy{5*11#!ld|wh}k0zPC)?V@|OO@5)+Z9Eui9izO6?SEvR?hUtOH^z2ZkEDT=o* zXCxz#n%@kSjMO@fd{PI8_bE(({i-Ivoj-Q;4DS#@4~40_gxg?CYD0 zWNuwoD$nynog?ZI9`z|LYUA9h{;wLl&@Kvf91$2l=1Ok|%^gy2h14MRqrf`YeK-w{ zl>itG;&Ti){i6zwt?J|C_$|0#Idz2$wILhdGC67aF>)u!q#2BTZZiZ4f0kziV#{wF zshtO`o6i1CH4#i8ROsm@KMP))!2MmqmEW7rpwk-~hyD=aG^xn9i z>BRT!_Od_)R3dG|`X6q3pd-nlv^S@reJ734xdv>d&DhoYf=x+`M>9g*_+qW6n{>}; zZoMgI=)z*h^8ZA`*{LzX8~Oah91^{G4S%|lXO&|T8I~8*Z0R^hV+a= zEHZ#EaCfU*wlgT@w1#yUTl+=|BKO#6Fo+-=Ons^(-b7V5#2U#UXl?|S&UbfUf;M4= z$-dN&5fU33QMqsxN_;un&BT4r-#YVwa1(2|4k&w~c)WamqGRBCf$c@vpe%AHsrcD zU_1GWncT{^gzFCDpPa6V>1S}c>+{YhtlVc-gLz2t3_;1+#J#4{r+3j`GtS~9yuDML0UScdw?j?2uMi@(hULv!bam)LO`WMX_PLhjSxXXLPBzs zbT^D`&;0$K=f7vKZGYTx?sLx0IoCPYxjye*cw!aIqQ_gX!i$=`a}QAJe!u1hpOBHyU}5Ar?Fbr;vlBFm8I1M`;1 z;9YA@l>@v%Z^CaUqy>b&5zCD|5mBufc5&LeZlibZ5|CfRZ;D@sa|b-Y_yzZfSnr_2 zhOwO^$ys!I2LxK5?fGk=Sn*ny(G-zm&<~Xdh>RB3b&l0v4^hbqw~SZ&N?3ev2ST|g zn7h*Kv_Rs&4DGQnT}50Q#NgyJk+|LN9C=Dd?Qt@Rs2|@tFf2ZO0~|np#AW*vi3nVw zp3b=G{Ft#i#H$u0y(YWixX);0T=5GR_>1x0Vub4Ht#jk+BgOZ}F(}X~o_n$@x5Wgv z_*n=YoCr!(Owx8J{Ny7w|E+l)SQ9kfWDUQ@P4&u$aM8SFMEt^CLiQ7qhwyU-qoM*7 zSWK@e3l{r&SB%NViAhDe+Px;8ojsk`hEmDdi<&tWBR`iLEAT_vtS`~ky zxyF%XhNl24>Fh_SNn~2Ek!l?DXwT|pjFzlu<8Mln{BUDXvrxjHHYu|L+%IHTRXOst zyiy`}+U1|O1k*_mZX+}}#riMWR1jL~X1x}2D-tJgcEnsdJ-Y1*6nU79;K5(xmY9RI zk`H*9S}VAEli-5PgM8}~dS&~HjsFeNXL$<}C33m2HXHFDY?C6okH>1ZlInk=pY=5` z=N@^4W8UDwJhqa*y7;p7(^5Iaz-IeNBE61)`x5_M*1pfV4Q`}-CJid_?YvJ0 z!7*^XiU6D~MOS(qAKi z{?s(Vj&qAcK!%ypxHZOGOUm3x5Ldj@Mk8|j1r62ffTIvXZn}RWTHAX>k>Sz-NSq(y z>Px~g5{)G}Cc}wogE=$E2DH)&sgVerB=;phDLsIb%5iS7Nf$?w;%>B;_^G;*uS}Z@Q8863lL-AOeiW7 z0jg&+BM%r#1#l5*Q|}t#ESb%2g!iDl#V5muSJwfbu~xj{5?*ksDns(K-r`9M@E)-* z$F0q70mWG$%^7>>AfALK#0_7;9KQ-GSKc$pyDC-S_VgaNHI%vIQg@d)4`DoHM%_VG zaN7j8%09ZU3xX4tY-p5x>^-Or-RTOpf6U=)))l_XvO_6w-dnx>wlHkm1g~q^5X8yN zbsC}|@*Dk}Kwq}1#dF_cH%V=mHd0};WpDa){P2<52mYA5OZ8?yW`tb7wAA~{4s=;_D3{Oq6(%swsWb0#2ItMY{*3x%8i-e0i0e~(Tlvte)V|4 z-<2dZx@JNV&Nkxlx?YQ|!Pz7%NZzO9)(g?TeC|Wv)`)n-?2RE<;KwCo$aZF*9SUoU zRa@LA3nfGa=agN+NbBxfmOPP%^@<6X~m))K;Jr` zJrNf-_^2C*Q7N^A0`@j+t#kUOB$E0^)a}-NkQ!(-xMTm&bOR-ueZabhdiu=eMNt|| z+Wsr&F_TYR0U;Yid16!VH1U? zj{27#%NDbbQaF^%sprLtNc^uw^{7H?B-9ZyfX6w+AE7eH`JiZ}-$Xx8?Nu~MPkjv4 zInVXNM2wH$%xaFroCYRC3;79Pkn758xKlefhE8qa(53*3 zV$=0~3NGwrZ%rQy!Kcft>7m%zP}hq)kYVJbajXk?ATYnF2!s5$AYz3Tk*LYQ^JZh> zIwJ0q_IiGBF8=2umUksMl2a+vncL!0|9dvs&~(szEKNkbZY}}CsO)OBysCQD0!c_Z z7s>PA)wFQGmOo12=2ZO)(Q64aXs%nlt`Be}7xmUHW)R>@(LeHtm%9|X4icbRl%UOQ zU)Brk|NF;+v*rCXYou}d^QS*SrU9i>&A(C%9g)FMydQV2IG!|~@SF$SaERKdElSU) zJ7fIu{NbDK&V*Ew!{?%MQ}nJcos5|6eiL(}{u+7QTk_!!=ONhWaHN;}_#srmbC}%U zEwe8T%X}{#0pTx6xF|P0*^T9RHfH1M2FmQdbOIpM`&LFI*_HufKLVKC4&*0pZDy&( zz@cAE{fl-fTcZD5UwtRPV2keYw^acerv`p!)I$3hK^j~Oy za2z@`cT_Hve=pp1CHY1ZQ}5}p={s{WQ&%GJ3@t7e1GTvcA8-ZTE6R`&QupCe<*Koz z%i1@QdyM~qywIVms^UTvb|PAruY*qy2B%#JZ}Gllz{d%a|1Hi7HD79MJtc|E7x+g? zAm~gmc$3@zVlc+y-=Hs1NKN(+-#|q7{~79W7zZxALhkY+9p|T{1X0yE0267U*ca+U zUU;mnl^HOPp2@(F$AkkEH%l%?=(8$A&&(J?~Y@jH`4LX&bY3k`Rc-(s1&!Xz{R z*c=@f?pZtWU|4;v!_p*(9&^?LOoMKjVKzWNa88RuK9Qc+H|-HbvE!~uE98GkoqCIh zO9JQxoN-;M5K&x`V40%6Uw0YMxsePeAXFz%`#Hw34HPuNv4X&^851~^@}{oU=cbOb z)*{%ajn;wroS{tz7#3!!J=XDRIGHZW7DHnANR zf=E6*#Hvmjn#!L~=&sxla}4y3aU~pKPzY2z09>Hsu|^{rhvHwTeOQE(8yAG;ya>Z* ztg`7>pP}V&SiuzC!12?mhUm~b=CG38WwoawK+RyQk z_2S>oeh;c|etgB(q^qI6|Aebmd5WFhfnGzp<4{* zaIGZ6c4t0d&%9hk=$>30uBsn_zT!hK`|WyM;OPB{gR-`-8X`S?sm9iV|MO(c;lRiR zH4Ea}d-rR+wYc!qyeg@&Kf-4aUf5FTQ8)3*%ptV1<~Psg#zqg0AK`#2n5RnUWXq-{ z@q|cpPqJaQYAP!rl6APgDo|y^jg{NwpLEuEwC|VYjSKyW9L7@%e-xYh=Q{YDIc$wY z#8C0A1g-+8dSst}t@@!8^>~>%O*CG>*6hd8T5V@&vRRGC5wL2oP5mOaAi2O>ua%+KMGctDeuGsl0y7w0%tAU&cd>ev)Z0~zw!|#0+s_BHD&p%CWTtY zE?TwSNFgynFy72MS$C99>jv-YPvM%F^?=JK7cai5b3y}WKc?E(7^Hm2xSDcOD!pp< z&K_{?hm15Iytoa1Po$&4$-oNRCie#9-4V2(a1Y)ouSh9))lpDRO$NZ-`T$>C!$?3s&w2t0e;29=~<|H_#V{Bz_r$+)<71^+@glhbA zPCIqDp}F7Q?AHw)45CFxCa`*iraY%rGQyH}#RF!Eoak*Regl#Ek8a%|i-=pM%5%c}#{OBPYvhv6N)BJ&I z9-DWblU&PbpfzJ7wmk!9-)G{mcu=3{&$}PHu*}Z%^+n7M_qD31F)k=%V3>$5M*CFy zUl&s(yL#9S7mJW5^nzvRyL``QqAI-6K+4(`MFqS))+zStyJI}pAA0#Titr=}TU|l; z{YmlDai79$ZByyPovAONDaM-{bWQ)}^Sz$$Ppk1Wy?E#^VWiuTE2(dpi7K*9CAiLz zz48@N>>=z&a~gf&$1qmNd8m>&!6SP1^J1aUZ9mw<-7WtZ`2kPuU1Do%>k&u9jY+mX zxfu8rNs>U3J4IZ_IQ&p@;$_hDk99AsQg7anTIM{l`*Cs5hrp~d3X5-;yBwJtQGRBk z6Bg@tc`UaMZwR^buo-#a6UaGw#RwXUt~FDWXb$#yg`O52Ho(o32EbP=`0M@sG7YMJ z{QKqlyObxZ#3tgMbgB!ppeFtBROVk%LQkg1k0Rp0Fx4(%j@Q)ivkBcu#F!pU`qr(Z z5$mLLz9Siqr-&OJ|Hn|w0awN@U@=;y=KukIQV39X6{lUoc~3&(9SYe`&1e+6 zMMyiBeKYbJUIq+b_O!la4PD9piRKVV0LmFs1sAI#|JUcJs!}l-HFaXPLK< zlBgAnn;(3G2}Ok$8vGCVgb#lUgd7WXG8UZc7=+Tkh+lxJ%YEjL>cY7&l-e#`Zu}Zr zXV|$*X-E}gaHm>6?b@i}P8D5r9>CWl!>=}JM$5OD2YL%|B_v!-s161t;Y3x6TTY-Z zc8rN9D=-}94N~XOIDj5H8dvn;WQtoV+bu$#|uF z4!nYUI}?4X&GJLkzdJjkU0*qb4xkUIs9V#hfx9&34>35j%bctW(BUOFI;MnDk(v;N z393~!G(pQckTZ)Bru?=@-(3P18`89BaQ-bChbmzmzJ!nhK?P4T%iLum7x?#}I8orw zCEKS$x#e8R%Y@@BkJZMIxY~t09y@cXoWL+2<9pxj+}{sMy%?D*(?B;3q*e^v~Ah&m_x-G#^qgwISS2)!E z)slqd#tYq;4zoC!cN2U*89vZO_~;A2`^_1IXKoK}cchMaS%2acj^?F7EP(|=%>so; z{J5(cE^m_IhT!}cDn3}b|8CUM-Eqn3;gSpY<&OB}1y4w`2{SAI%4Ku9Iq$OPA?k!= znxh4;H0&uLI%NSdlJFOhvNqdlP>=5bZ!jP_Tr zrQjh5n!RrZ8h-Xk17y!x^!O{Yz+O2Oq4NxQFk&RzT4SMWoGft-<)QK6BLC?(%ICYV2);5o@_R5mW6 z&c|Qw-DZ@|TZ%?ab1=~5hE`sr^?iZZ=?sYCh~q&&`35^IzvRf*u+ri)l6plO7ehcq z?vD+_W9$q@5>r{Miif7zX?R9nI#IAWa|R{>M{B^mFD5L1%}|p{J_;H8me7;ufPKyx zy8>GAt_QM580gO+xGczJZcs>%-fUaYj!qEEc6*GFX1={RH7?sOv*7}Mh%!@!)z~nd zEH#NkVC`NlsH02XFMzLG(V{cx6}71Ezls>@iUCHyhb%^vUM9;N%ieUQwpYy&0{qy; z7)I;}BX#dyFeMae^KG^V_d_n4Cg10Mrsn*X61 z_rQP8nd&*53))j}na#MUpx$S-yP5}3(AEmdPNA&_@8}CG?P2ZPZ_W8Q62fcHgz!-S zf|s#Fs+Jg0=6*1M7ANWq#qMgFi-6ZW{%UI;WW*6!x4N)TmZ14QkfJ~P!g8K3I1TCj z!nXh=8d~gpZ=o8E)%bleuCX9a58qN%&=)efL2TwMQ_ z@DVw6=+PUd?=4GM+z`Z$^TgfUxueJCIe;D|!mVA6-@R|*r3SZ=+1#hm8-og@-SV4k zK=p*^o3mND1=xxI$UuzN&dZv2_a4+dzyTB_*SU7}+x1*i(KL<3+;b_7l#~MW@N(0u zC;Dbf5hXokfUUj8@%+8sD? z{N?;b9H4CSv^SjeUuITlBg`f)_;<%YL!=VOBA>4}h!E^Y{$C`*@amNofD?NY`7UB2 zYT{JS6>){pd01u@IuWH}O5e;l9dw}e4}F07U-SX}db?ePFStt`pu*)6FO!h-E0P&^ zi~lG3ZvNKS|L_K~wPF8@H+b^Y9Qy}zGalujzK+pI_po+WhP}o-kjRGEA6zHZv)rY| zxjNT1grU$hn5$WGbVSkAvek3OE}47n@dSO{{K4ESIFYbZKR{_w1&Q&y1^^oD6Vw5f zfFGe#G#F6-^q6}&DE#bok_&vll@Dtf{gxIy*em6FZzfDn{=Iew-BEa9paiKSeVRRx zsPrGfQ=3`s&bWmsHLnkyGJw?6;f|ueqk~qV`eUl~1~=}_^{nEPEkq5kHw9p97f8b~ zR~74qL#c~^mZzcna?09&ntuxIeSFwq2q;rEOkXw|uL$Vfg{|Is>WqJ_k$fZZ0)ny% zEStGk!R8)4H#BeHP1co$A%`{L_FPZD8qShl{E-5j)8ou}%KHOS5nTjcQ}+Mz#AbczcGe=3flm-?Cxp^eW6*XzK{m`V`A4 ztphfBJKO|EDXQ?T=F(MLgnp`2n?Cj~Y!C9|K=v$uZy@-F z6R2h-+sCxEKCtuZg$p~fft0khFu&_th1qk0ZZ`SIDfa^c5;6btg}Q!=rvBnnDA9)H zXW*76jABdi-Z>gRt#16f*bCIPDDjvNZSvS}{3Yo$pBtt_G?bSVPhI9uqZLYQ7>521 zpLRAUBp)@X>q_JEDZuI+9U=-aebK>%D z?{IW&=mIDCPdX_1U&a55EDGz>5%Er@apso^=a*Px%il+I-uXD88&kh+^9>h7YiUDv zK_#Rx@JJbzR6yL4xTP#b7-<6jkbwPs$!1@jh37XImU46#mQv+Qy(-SJp1eG((*NhM zANZ$K{MKvPrRK;tMy{upi4*xt9B^4Nw(aZ`y{2#n3Iooy3-IP@5iWjEP?x+C12hxv zIe$aIhj}uk0Ey&E*J_5+Ud(aCj+++v+#EU_b-B+Y>bwq`=H)(+rmiXau5K2zLRH-R z9W-{A`*mWCgkBRon1*p3GwwHQ>BQzpFig4DXdY52wp-tYe91&6cG*yG)vmgDek ztbKn;klFL<6zJFbV+8;~8~}ZD>tdhZ9mY$-!(G8x^$uDXSWEGswrHxz?ThvsQu{2-IwVbv=Kv}OMEOu zQ+%E^_5Zab!a$7xl9M2G#JxOWl20T+yQdvQNpQzeLkZUK@-`eN(8uzB<-pne;Qh^e zTwPWCSZl>5mRDmmI6w*E5D5I&UOHIBn5}KOc%%L20*~~Ol!J99* zIBrI5b{~Zz1LV3fkLCyHP0jd7^L(t3{j>)U$E%s`T*uDcnth&x7mDN(F_QBXOE$o8 zcF>=3QkKQW=%EFd>T!D4TCuKFN`*eRjUtqtoI^vIXH!vckvj_KA)4dYR3_?KqlR&z zWWFyxiXjm<5zwx6VgM3jLWD|FjHQnWc6lmn=w_Ye9MT9259*PxlbT$GS863g zt|lq@Sx<&e>5T5}We{+SbIT82VnG(k_gACJ3Qbme_Spb{uJhl21PmtXJGs+0{SKOb zZJqF3m)N9t@5aS1tIhQxZ6WM7W>d}e8sOIP{J?g7j`7_&ZtUrFqSj5mu#C&fB zoSx%Eyjr`&{vwQ)ilRi^i6+<&a%71HHT?c(yQ6H$I7X`AT*Kw`bZDn9UXGBZC2PijfT( zRlv3hzrx-SX8M+oG`v0LX~-h z;rEfMECnkvdapFrOJ+|!(rFiS<85lN?!Wh`8+|*Hoc@z=ofcvEZAoNtVnHH*Ot9(V zUCm$bvOT%PA0&qVSL>c9Ip{{9=m}j*FTD!hITc{}Eu=L5qcyHA?v-y^vX&T#TVcYq z6;+hA%lDH|Q{y@7vGLf*?Q$OH7pGnqcG}lH;j?eU$2yN{2qO(|@fK8y9dCzE(I@s- z64_)gIQEyqxJ%|QlwW61m9WGK%n&}P7C49sp%h~vd=KKtzaOZZjVW(Wq)U&ue53T1FV9pz-DeZ+ouT%oJmKgz5ucrPS>661 z+m#o1^%E=xTt(ZO7B=KvQ?e}`3pTXX4rgtKGWCdD-k{~h!1Er zx-YBo0S~4IKk^nxPmNP9wkeh1TCXP3DVMymirX->%!%D@;sn;YTz;! z;P+qp=#z9c_ZcDHLVe;of@>SEqbBYj2Jb)+W-mI&G{qWSA^PPvk98RL2}ZyYf~Rpm z`f-edY~OTqaNrGATNsxA)cF^oC$e6wch;bNv}>~YQ^%#&V6jX@b$aq9K&3$|e{HUw zz0YZAS1F&;L!bs(7CT)u$@a*WrI4@x9L#MM$`q2l7XTbsOz8aXc=gO}eRTe~dyxVz z9En}p{%Uy=5;ekdV9sSUyPbE7kVnT1K5I z+%f?wXRnX%+zc-=Xj`(oMMQAmK6CjDw4A>Ct!x^ZV~Q3H*i$k@NhGmgPHRM3gvUb* zrx*6)_vQX%x}F!@vx6)@zF~rSOzV#i+tmHM_{4zuk%$qtNsgw?w!Q zrYG{H7j!!rr?^-1^O-aahtaX3;<|t3{3dc&K!j*ae0lCJ4XXb!zY?N(y?`5pGc*x0}Q8j-Ay32QZjgRC_<8W5xgl|Jzj=&P=&!irz)ux3txGc5l z!_zIizhEuy=Q?D(`nf3V(97;47Ddx~P=d=C4ob&Pw1mf*D3z2M(}hJYO*ITuy%?YO zl+28beSW8xVC}p7l4~?c;~VIi?pJ$=^Z4sWVjOO**Ckd|zs-*a}wv+Ps1$!dsV$XO7qhiCvxs9V((+giTtT&32?R_*wee z4IfK|B1AQV^dXt4Gdn}sH_c2Y#o`flKS??QnaVdBkZqkvP!cH7X#1I6W)%tT=J0W` zy-0Z|3vY->LS@$KCpva~z#y*xv2ylDag~3n8sjaX=Z9I4tS-tIPO>Rl8ef&WFH3 zX=^%e(-kEnpTx=%@u)+G)<{U5MH*%um7Zf)%EiHc{8xs&Y3>_~<6LKe?KjT{y){uj zk*#csaDumbY6>*>n{4%X1*p)qT#c6b>ziJAe`@c_X}+ubsZcQAqkQSwYZZn5BYOy* zD#pgy(Pu=qCauXZsWaermHw`a)%mYU+}U$GJYnEfxchem`>WRv1S#3`>OEjG@3pTa&{!JLDJ!a(+uk#|1c4y|fKg$$*x&9^xWf zczy!4sahhUl0~wSp^gD~jNoIWsPHL zBuX_{K;-b(IaLn$r8dLJUHh-^z!U-Rn0xf)UW{tmxi{O9RX!9K{e2Wl9cIgQs!s_I zT-4nPHEhE^DxGm@6`M+VAt}G^8?u91WUadltsr+-v<^XaMC*UCEx2)etF}*!tUPv0Q%`%*Zpce$!xvx7LSfQNQ!nYtuZSzzo;A zX^bR*X&vb#`~*J|keHvZM=S6C2ToI{xBU9tt?Yn)&DvLSO|PE5XX5^CPQ!gh2c;$t zvQlRk>>|I`eTwy3%DvceOI&#gaP8pvHN0P)iAUwWc zgJqE+qy$Hu3rCT~4i_d{7YPapUKUX)8D;&RlWCr;r}*F_lbEeiJ+KD}F)g&gQ44Jr z^E2S)6aLb!++1BQU%o!1z9w_fWOoG8Q~_!xYA)&*GWfn(*{?p|d;%#aA|P|OvGR{CKYq-Rz}q9k zk=RNzP6Fii--d2Z*02_4oPnIKBRV7@cRwxGS}M(*--MHT>c8k{jSZ)BpT)?`k$fuK zap}1_+_rj8_#Ot8Ziv@JDVKrJkhcjeGB0bO!Lo>y4RbIL-7`eYkz=l7wwgf9X;9@IpzuEjbRk92D_V=4=BSid?MiAU1`U8KAu=8}0^|n2J3dev>`t5hQv{tf6q` zQ!(7Fz!6|jMy>mBWSDC@UKEU2N|&s}Q9}5yJ~3U&s-!gOfi-jTeznC*EuZrQVW@IO zS*f67ftp)dAGy%=?5S2lC*L&hRdkYy0hyATG(zvG~(mMhpnRA+1ziA z2Lj#ZaqpTayFA6-#1Ae#Q%xUGANUF0euN5;(m`9pOCQ}y`~Cn9Qni~i+iH7X1=V%1 zUiGb7q^e3O+2!S9psMUv%|0|aQQaa|bq;8t`_;dJH|o)8yK8Vxc-hn5f86N_qR_9V zsT_7Z+>gmZN5(TU;j*%BD)|Q9~^hUR?2;=HJ}VuQHtr@ zZMYz~khgNR_xO?p{%cB0wU^Ukda;x|a$lFn|NU6(fv(p9PBL0&w6UrEst)c$&sKEj zN@0Zb)8^;Pe7uami<9#AGA{28gfPAr49QNvP#^lvl#^X@byI|zXnq zl4|Ae`&&PPic0TQOC~L@msx5=<$n+@&&b;7=90+oo#!dO|AP!Igki8$NcMGNVze6d{awp8^K|t3xyGJ(}*2G<`Zyc8&Ow`GBPkUQ#b-wuYCJ|)8 zy>cYO^$f06s2+3ZHAkMup)(M%M?+LYZfHMAfsJnw@kgZg^;%{x`HNH^Xd|vNpnHtGB(N!*FDKd|x6GL0k=jCnHPrU~Wk* zPla+as`~?St6)RV_jI<5yceL94yQD-q0Lhs1AI$paarZyl&rcRxLw>OsRT*jap4lC zp+mLHQ+2r{>w(E~L=3pe+*>eJw=W&y3 z;bgD%NZE3OU~1#-0!DVcCSg;CCr14)N{(fPeQ$jt#1 zwG60Fk$ig~9dBgAjcoc(J_l9ky`zdg8yT-dz?N@8ZsxE83CyRC3|DK#b^U#3+%3#e zIU_}{HYdgUn#(F;M5?R7c?ADk!_NZ?cc{4fu!#ACfiZX(p1~V&qP4T=$QKt6*}CuB z!DcuX;&0r2;V(M8om3Cn5B@G*p}tUP+LA!P;vC}RK>i~sVkuC^r3h!%NHn+nJ!QGz zER8o1GB=N|H8xVhzhF+lxqxg(7d&GH-?jDh)Tcd`{i#gKngvhL`KCQNhgmLt~i*so>i8?Ik#Q`r7Q=%%9dz zRgnYlt35C0+IQMAMrFa2tpQwt`fgBD7O|{!=^>tm8~9Vg~v3)xHKrF&)Pk%jAX= z$$%p(C*84U!)m-7d)@B;Ef5Y>KHdI+E;bOb}b&ftBb42_c zIZaUhX=QBY2%~Ejo7BS~y!biU(_R_f9}91<-ZZh=5Ci>uUHQQg)JEOI8)>B(8lUM} z!V%Fgw-pdqmtpaoWnJl!P~>lD@?X_66F7%iODATlsbtJU#kouNIQop^^80zrK}#`5 z=y2GNXVm;7Y0Un3HH14WAtTsxi(luw;X|FOWj?xdF4l>|Y}+LM$3eFeT*I?pVUcK-#N`!65?~1OM&CA`2FzMd(IuF zLi+)%&d&?#Ex?EYOXlR%4a2hzU!l#Gx6rrdVF&CxGRxhE#+(B0`Wo4MVKg;Dc_IfwnNW$ z{a4GA>xO@rA6e?_8s`hQ+t(!loSC^<^_sNyoXnqR z8;zeKW(mF!?*-P}!&>it)@h9N0;jR(Xt9u4>oI^LbH zx0{i@&-#n3={xx!33U^23|NL1V<<}^f@OioV}Hh7qaN=lK2`n9TaB8uwLy#RMEX0P<*r^$I-685z-krjBt5 zn*aD)r6FboCh{#d+=rq3Xq4g>i#a5y=jrU<^ZqbI7A!>51Ni*YDtrsCLr_P_=P zdNt2f{ida6O0Hq;+T5{PMjDW_xjd1RLLsjT@Y!%PrM>`g*)8C4K{mZx_at$)Fje5# zrB)C;(@xHLVZ5n{eLvYkmjue?*o+_=B>1&h5NF4lZ(8N1)SL zM_5D9f;GZ0*M!WK0I{-gl=e3dKi|2|o!1w^sRjs0B|qu 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 053/115] 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 054/115] 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 055/115] 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 056/115] 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 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 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 057/115] 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 058/115] 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 98a279a6dbc273421584d3e4079aa0955ea59f56 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 8 Aug 2019 17:45:01 -0500 Subject: [PATCH 059/115] 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 060/115] 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 061/115] 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 062/115] 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 063/115] 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 064/115] 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 065/115] 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 066/115] 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 067/115] 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 068/115] 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 069/115] 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 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 From 7fef33160d2c97f94a67c73c22e7b63972ef421f Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 18 Aug 2019 15:25:48 -0500 Subject: [PATCH 070/115] 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 071/115] 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 072/115] 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 073/115] 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