From 6b15aeb69ad096d3c17742ca9b5dedb561048a1b Mon Sep 17 00:00:00 2001 From: Remie Richards Date: Sun, 3 May 2015 23:34:05 +0100 Subject: [PATCH 01/38] Fixes centerX and centerY not being correctly centered, corrects sphere logic. why is it called sphereMagic? because as far as I'm concerned, it is magic, it was previously named centerZ but it actually was quite a ways off being the center of any spheres. Idk what it does, but It serves a vital part of building mathematically correct spheres. --- .../procedural mapping/mapGenerator.dm | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/code/modules/procedural mapping/mapGenerator.dm b/code/modules/procedural mapping/mapGenerator.dm index 887ddfc40a4..f480a2b11f3 100644 --- a/code/modules/procedural mapping/mapGenerator.dm +++ b/code/modules/procedural mapping/mapGenerator.dm @@ -49,30 +49,29 @@ if(!checkRegion(Start, End)) return 0 - var/centerX = abs(max(End.x-Start.x,1)) - var/centerY = abs(max(End.y-Start.y,1)) - + var/centerX = max(abs((End.x+Start.x)/2),1) + var/centerY = max(abs((End.y+Start.y)/2),1) var/lilZ = min(Start.z,End.z) var/bigZ = max(Start.z,End.z) - var/centerZ = max(abs(bigZ-(lilZ/2)),1) //Spherical maps! woo! + var/sphereMagic = max(abs(bigZ-(lilZ/2)),1) //Spherical maps! woo! var/radius = abs(max(centerX,centerY)) //take the biggest displacement as the radius if(replace) undefineRegion() - //Sphere mode engage - var/evenCheckZ = 0 - if(max(bigZ,lilZ) % 2 == 0) - evenCheckZ = centerZ+1 + //Even sphere correction engage + var/offByOneOffset = 1 + if(bigZ % 2 == 0) + offByOneOffset = 0 - for(var/i = lilZ, i <= bigZ, i++) + for(var/i = lilZ, i <= bigZ+offByOneOffset, i++) var/theRadius = radius - if(i != centerZ) + if(i != sphereMagic) if(i != evenCheckZ) - theRadius = max(radius/max((2*abs(centerZ-i)),1),1) + theRadius = max(radius/max((2*abs(sphereMagic-i)),1),1) map |= circlerange(locate(centerX,centerY,i),theRadius) From 984e337c47d1fe8ea7e86be85919b928b8e3e640 Mon Sep 17 00:00:00 2001 From: Remie Richards Date: Sun, 3 May 2015 23:39:04 +0100 Subject: [PATCH 02/38] minor correction. --- code/modules/procedural mapping/mapGenerator.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/procedural mapping/mapGenerator.dm b/code/modules/procedural mapping/mapGenerator.dm index f480a2b11f3..c0b89549f3e 100644 --- a/code/modules/procedural mapping/mapGenerator.dm +++ b/code/modules/procedural mapping/mapGenerator.dm @@ -70,8 +70,7 @@ for(var/i = lilZ, i <= bigZ+offByOneOffset, i++) var/theRadius = radius if(i != sphereMagic) - if(i != evenCheckZ) - theRadius = max(radius/max((2*abs(sphereMagic-i)),1),1) + theRadius = max(radius/max((2*abs(sphereMagic-i)),1),1) map |= circlerange(locate(centerX,centerY,i),theRadius) From dd4aba0c9e23a47f4df02d89bcb4940ff94f1789 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 7 May 2015 03:12:11 -0400 Subject: [PATCH 03/38] Panel oversight --- code/modules/mob/living/carbon/superheroes.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/mob/living/carbon/superheroes.dm b/code/modules/mob/living/carbon/superheroes.dm index b9182040923..9b7d0f8fe50 100644 --- a/code/modules/mob/living/carbon/superheroes.dm +++ b/code/modules/mob/living/carbon/superheroes.dm @@ -120,7 +120,6 @@ /obj/effect/proc_holder/spell/wizard/targeted/recruit name = "Recruit Greyshirt" desc = "Allows you to recruit a conscious, non-braindead, non-catatonic human to be part of the Greyshirts, your personal henchmen. This works on Civilians only and you can recruit a maximum of 3!." - panel = "Shadowling Abilities" charge_max = 450 clothes_req = 0 range = 1 //Adjacent to user From d2dc8030e8353992225b189cf86599e3add2afd6 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 7 May 2015 15:33:54 -0400 Subject: [PATCH 04/38] Add hooting ability to owlman's mask --- code/modules/clothing/masks/gasmask.dm | 17 +++++++++++++++++ sound/misc/hoot.ogg | Bin 0 -> 35754 bytes 2 files changed, 17 insertions(+) create mode 100644 sound/misc/hoot.ogg diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 63d660cf78b..eac240c5073 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -136,7 +136,24 @@ icon_state = "owl" species_fit = list("Vox") flags = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS | NODROP + var/cooldown = 0 + action_button_name = "Hoot" + icon_action_button = "action_owlman" +/obj/item/clothing/mask/gas/owl_mask/attack_self() + hoot() + +/obj/item/clothing/mask/gas/owl_mask/verb/hoot() + + set category = "Object" + set name = "Hoot" + set src in usr + if(!istype(usr, /mob/living)) return + if(usr.stat) return + + if(cooldown < world.time - 35) // A cooldown, to stop people being jerks + playsound(src.loc, "sound/misc/hoot.ogg", 50, 1) + cooldown = world.time // ******************************************************************** diff --git a/sound/misc/hoot.ogg b/sound/misc/hoot.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a1b6b5f18fa4277dae2e3d54b1ab54008621878f GIT binary patch literal 35754 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 IUL(K@03ze({{R30 literal 0 HcmV?d00001 From 0980c744db379b57b0a53281ddab3dd9c2d86e3d Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 7 May 2015 15:42:52 -0400 Subject: [PATCH 05/38] Fix henchman IDs and gave basic radios to eveyrone --- code/modules/mob/living/carbon/superheroes.dm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/superheroes.dm b/code/modules/mob/living/carbon/superheroes.dm index 9b7d0f8fe50..8e7d9b2637d 100644 --- a/code/modules/mob/living/carbon/superheroes.dm +++ b/code/modules/mob/living/carbon/superheroes.dm @@ -21,6 +21,7 @@ for(var/obj/item/W in H) if(istype(W,/obj/item/organ)) continue H.unEquip(W) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset(H), slot_l_ear) /datum/superheroes/proc/assign_genes(var/mob/living/carbon/human/H) if(default_genes.len) @@ -197,4 +198,12 @@ target.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey/greytide(target), slot_w_uniform) target.equip_to_slot_or_del(new /obj/item/clothing/shoes/black/greytide(target), slot_shoes) target.equip_to_slot_or_del(new /obj/item/weapon/storage/toolbox/mechanical/greytide(target), slot_l_hand) - target.regenerate_icons() \ No newline at end of file + var/obj/item/weapon/card/id/syndicate/W = new(target) + W.registered_name = target.real_name + W.access = list(access_maint_tunnels) + W.name = "[target.real_name]'s ID Card (Greyshirt)" + W.assignment = "Greyshirt" + target.equip_to_slot_or_del(W, slot_wear_id) + target.equip_to_slot_or_del(new /obj/item/device/radio/headset(target), slot_l_ear) + target.regenerate_icons() + From d249a7994e29eac3edade396500440bac88a0906 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 7 May 2015 15:49:33 -0400 Subject: [PATCH 06/38] Made greyshirts look like greyshirt --- code/modules/mob/living/carbon/superheroes.dm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/superheroes.dm b/code/modules/mob/living/carbon/superheroes.dm index 8e7d9b2637d..df274a45d0f 100644 --- a/code/modules/mob/living/carbon/superheroes.dm +++ b/code/modules/mob/living/carbon/superheroes.dm @@ -191,10 +191,15 @@ ticker.mode.greyshirts += target.mind target.set_species("Human") target.h_style = "Bald" - target.fully_replace_character_name(target.real_name, "Generic Henchman ([rand(1, 1000)])") + target.f_style = "Shaved" + target.s_tone = 35 + target.r_eyes = 1 + target.b_eyes = 1 + target.g_eyes = 1 for(var/obj/item/W in target) if(istype(W,/obj/item/organ)) continue target.unEquip(W) + target.fully_replace_character_name(target.real_name, "Generic Henchman ([rand(1, 1000)])") target.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey/greytide(target), slot_w_uniform) target.equip_to_slot_or_del(new /obj/item/clothing/shoes/black/greytide(target), slot_shoes) target.equip_to_slot_or_del(new /obj/item/weapon/storage/toolbox/mechanical/greytide(target), slot_l_hand) From 71a23c338a9f55830ca2eaaab68d5d0e35074d1b Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 7 May 2015 15:51:25 -0400 Subject: [PATCH 07/38] Gave griffin a freedom implant --- code/modules/mob/living/carbon/superheroes.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/modules/mob/living/carbon/superheroes.dm b/code/modules/mob/living/carbon/superheroes.dm index df274a45d0f..eb3af274b09 100644 --- a/code/modules/mob/living/carbon/superheroes.dm +++ b/code/modules/mob/living/carbon/superheroes.dm @@ -89,6 +89,14 @@ H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/owlwings/griffinwings(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/clothing/head/griffin(H), slot_head) + var/obj/item/weapon/implant/freedom/L = new/obj/item/weapon/implant/freedom(H) + L.imp_in = H + L.implanted = 1 + var/obj/item/organ/external/affected = H.organs_by_name["head"] + affected.implants += L + L.part = affected + return 1 + /datum/superheroes/lightnian name = "LightnIan" From 0a7d2b869763bdf6c73a8f9e837816a70dc89638 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 7 May 2015 16:00:29 -0400 Subject: [PATCH 08/38] Added griffin headgear caw ability --- code/modules/clothing/head/misc.dm | 19 +++++++++++++++++++ sound/misc/caw.ogg | Bin 0 -> 8407 bytes 2 files changed, 19 insertions(+) create mode 100644 sound/misc/caw.ogg diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 753f0454fe7..7951454db39 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -344,6 +344,25 @@ item_state = "griffinhat" flags = BLOCKHAIR|NODROP flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE + var/cooldown = 0 + action_button_name = "Caw" + icon_action_button = "action_griffin" + +/obj/item/clothing/head/griffin/attack_self() + caw() + +/obj/item/clothing/head/griffin/verb/caw() + + set category = "Object" + set name = "Caw" + set src in usr + if(!istype(usr, /mob/living)) return + if(usr.stat) return + + if(cooldown < world.time - 20) // A cooldown, to stop people being jerks + playsound(src.loc, "sound/misc/caw.ogg", 50, 1) + cooldown = world.time + /obj/item/clothing/head/lordadmiralhat name = "Lord Admiral's Hat" diff --git a/sound/misc/caw.ogg b/sound/misc/caw.ogg new file mode 100644 index 0000000000000000000000000000000000000000..dc199f7f4fe6fb4b95b6bd1d09d80b4e3a636890 GIT binary patch literal 8407 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 JWVnd~{|}*`HmU#s literal 0 HcmV?d00001 From 7423d56c06d234a72a4661ad47237f3cacc89b75 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 7 May 2015 16:12:43 -0400 Subject: [PATCH 09/38] Adds E-N and gear --- code/modules/clothing/head/misc.dm | 4 ++++ code/modules/clothing/suits/miscellaneous.dm | 4 ++++ code/modules/mob/living/carbon/superheroes.dm | 15 +++++++++++++++ icons/mob/head.dmi | Bin 205391 -> 211452 bytes icons/mob/suit.dmi | Bin 385091 -> 385896 bytes icons/obj/clothing/hats.dmi | Bin 104750 -> 104912 bytes icons/obj/clothing/suits.dmi | Bin 127640 -> 128068 bytes 7 files changed, 23 insertions(+) diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 7951454db39..1cd2a19525e 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -240,6 +240,10 @@ flags = BLOCKHAIR | NODROP siemens_coefficient = 2.0 +/obj/item/clothing/head/corgi/en + name = "E-N suit head" + icon_state = "enhead" + /obj/item/clothing/head/bearpelt name = "bear pelt hat" desc = "Fuzzy." diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 6b5b86e00f5..fa7465bdf23 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -158,6 +158,10 @@ siemens_coefficient = 2.0 flags = NODROP +/obj/item/clothing/suit/corgisuit/en + name = "E-N Suit" + icon_state = "ensuit" + /obj/item/clothing/suit/monkeysuit name = "Monkey Suit" desc = "A suit that looks like a primate" diff --git a/code/modules/mob/living/carbon/superheroes.dm b/code/modules/mob/living/carbon/superheroes.dm index eb3af274b09..8af0c4aaedf 100644 --- a/code/modules/mob/living/carbon/superheroes.dm +++ b/code/modules/mob/living/carbon/superheroes.dm @@ -117,7 +117,22 @@ H.equip_to_slot_or_del(new /obj/item/weapon/bedsheet/orange(H), slot_back) +/datum/superheroes/electro + name = "Electro Negmatic" + class = "Supevillain" +// desc = "You are LightnIan, the lord of lightning! A freak electrical accident while working in the station's kennel \ + has given you mastery over lightning and a peculiar desire to sniff butts. Although you are a recent addition to the \ + station's hero roster, you intend to leave your mark." +// default_spells = list(/obj/effect/proc_holder/spell/wizard/targeted/lightning/lightnian) +/datum/superheroes/electro/equip(var/mob/living/carbon/human/H) + ..() + + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/grey(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/corgisuit/en(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/head/corgi/en(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/weapon/bedsheet/cult(H), slot_back) diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index c1eb19660430a154ea1d34f28335dca88bf3528d..bcd4eedbc16ee2c7bcad12d759ee6794c27e2f91 100644 GIT binary patch literal 211452 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 fwoQ@HKA{iA)U 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 S)e3YD85x?KDmdwI|NjAUGiCb# literal 205391 zcmd?QbyOU|*EZO=26ra}LU4D7KoUrBcTWPr3C`doBuGMVhY%omaCZwH+%4z?w_zA& zw)ws9x8L{e?%BWhoIR(fyQie9y87N*x1Q(LN3BfLo%+-^ZC%tN zxJ2MJZWVBZ%_~^X1wYa8Fx$86z$waX)OsUJJ8v6u{mdl)S&UxrD&lJYdfZZ+xg)S$ z{+9|lV#oa)x>kSfQ!rVwB;yk7=L4Cme$ygy_u(U%E0egqw=-i=&e3u0mqx#3gg>N# z+JiwnK4ZnnNXGBoFQd_K&9JplFRI1V5UYb^S%L-A`4+zK^U<|_%l}s8TbE>8^O<8Y z=@-erbN{02eME>*S^du9=j`^9K_fWNGUReTtycg+Ou+k|G08edV}$-;=T%>}-m2s zdT;4MnmVSO_wPH*M5Qg`9X`h+)!15BaPtcNAM1_EpyOr1o6zqmM(m!L-K@9Y!<4%n z9wy3r%3fw_D!3U)r-z>!uC=sSn-AOu&M4$dzgU9z&PI{;9pj%a(a9XwAcPQ98vQk} zhp>9phhsb~Kx?@uMS$Z1jhTjNB-DQ^>eFYA623|qm8U_g!{MSa()BmtH4WbmB1cT+ z82ULfe^ssGl0Bk7OPAU1=+%*~BEm1Bm*!wBN6WY9L7zTV{x`_{ELxD+Xl$OfLsGZ5 z{L0H{L$<-KtV>~)aFxxS*XUL5;AG%2=aWx7Q(fOptuOCN1M5fL;3WPT@+DR|{!%X1 z-quFxBNl;t`3kM)OKPgmx{=>j&RL_az)h0DG~0ls_q3@{`;pQh!6gPR1^Jm{KQS5Y z6N+>J6CTQeDx8BFJj3Ji{Q#DOhVFlpoYPfqKk5G{&;>dWPjkm5vPiFbh8awKsg66_ z)qEhPm{E@HGPwHsAz~}G0A3X^FWZW`or%Mo!&Ps0oYd9`x8fT#!LpJR`P8z4*7Vw? z$Sab8OYM*(l$`5b2*Z2TO+KgR^h#uT4<}zH)MInSq#P76n?V4sy(Xk0UMyanho89B zT7NdhoK?z8cTzKrmhvhSU5%EWyrq~RCz%=qODK;$HCg@4>-KO1+s=2}pQA_ns+aJg z{xNTSB)m+Y8bI!dUPR`;t-^a>+x4TFK#?s7-TDC|N|;Cv5z9zJhCt^Tj!4*}#T(A9 z_>pizP}_S({uWm9?96LB(#|rs%FB^~;}#27{Rn5Dm*W;avXFpwEo8|rGAN}@#3Iz% zwwa{b)NKAZ)~2hI?W04yb&!Eb zU=%#8&;Kj1M-=f@G{&juo4`yFClu&{(PVt~;PxafY1j8IMv{D`+Dtk zkuQP?$8`&VWeppAKBd@TH?Q2V3nSDfVFW?FFG>AX;68eh+%9YZH}N2W*KDto17@@M zE@`i%n;x%42~i)Dxi*>|!QfQDC8zU6^uqEtJd6 z%imQvOk+IHUn83AG}a06gz&$t56<1hCWeT-9}*?Y&)c#xCG+%jI*w4=x?HjwZ7|Jr zCA$u1QQZDRyU8`Fs~CXWKYmt}p#2@aXvE})g6?-L@Y;;F0C!>+unj;Sob7B&t(H|5 zZ}RV&L7&WoUbjca&OPI7^{)qn^b%$js4v~erJe=*V|CM!>}pnwQwzqjdjs^zj*nKO zg%0au`WwO@D9DOt#WVM~%KwOAV=wOX_cM=?_)4H`XGerQ3bgkVhQHDYmY{$nipN^y zNt^e0spN%{;YKo2GdOfQGNQf3le2t!VQp9P+>8d3@sXCf&@+ygK{gLYPW;scX=k+L z$fT*fyZi41zeF;0JVs^ZNv$u_g=7mD$HXz*oNw;ryl8j$E3KtFfa9cRwkUU!W%FW) zeV@K5|M$kGfW@_kU?3HYN?^Ajv+i|OYAOy8VhU7wqgTrdkgk|N^BJKv<1krHv~ z`*+>1oI|IQ_+E8T$vCc+YF6}QqLQ_8$;#T<7AI;Oza|i6UYjIYs3Nrl$@TolT#n$#En+c=UwcPI=0|QAxXJAhI!65H9jBr1 zOYTWAc^e*sMmwrKgjf4iGBmJ{XX55~sBKuE?;{pnhX!MlN36QdN7b!4o&(Wxg{6iP zQlkpj=RA|XM-MBsn(V0dzZDo?CK1?#_M;rx<%HXbaER_=6igtg4j;HvQTUJwn;=u$ z?G*XhD!Fo&yWK7PKh#?WFul93DEHAnkiGfx7q*u<{8L{kmkSe<8h8H;y-1~g%x!yL z>7U)xGEMGhHHk?H6`5s&o!pPPH+eJ5B5oFk&did%vgNo^j;qZk20MKCUw@DHRurDd z@5s#wK?~FDzDdvd53m+#r?i?UmGD;Vv}v$@+dQRkoFL?CWO+OAuoxFzN39c057YgL0CNt@S}|^2 zg#cbQKK3R+ez)!X$LPwg ztlHPKG`uht-2dg6U;nd)MKZ@UE?4sb+I)EEBlg^dA_#aEaLrp$F~%YT@!M9}-tNI;1j{Uj)5WSzj1LZy=+gs8IY<1IZCOJ1SnAVhwY85wQ6@TMb1s*GeW4in z%<@2)`U^4{H}tC3oP+<_E>igG+7w#K*RS1vjV%P@u^i;}E-PG%(ei3j)GblSX~${JBB=^ng8yaE&e?24#vDI;D zNk~|JLtT-G8wQ~DTgE5iBFzEiwZL%Ex1xa6a5C@69)2JUlk0`r-xt<9-}B3ueH^*7i$Q z7Oyk4?wZMxKQolBEIuc?@+o0Zco#0P-qHaJ2$pst#4aF_IHmB+d<_qr#|46egS+3$ zkp$G&C)-kDo^7yA(8ACZ-o4`m6wddlJG*y{o?+|}u61{J3l!8+Xg_^ANKDwf+7+&? zr`LdzOv8k z>4a(~i`^O9x=wCpyL2s;6hy~Wn;st@r@pGLu=arugrT&xwY%R}_ji&GbaY(0K0-A( zuZ-{-!wBCJ`depoEECYL21S#zg?OmkZEo6FgQE$4t&x}MGI#(99UYf5wG$!oI6P}P zrcXV$!T&Dc`AW6R7WS*pz;Dt^eoHK*-2BkX963gSgp`!enc9<3Xw`C+7nqj0 zN`JkP!*=k=SQ!FE)jH{l-rM|QEQ@^21 zvm-R5W_%$&JD@Fa#2uH zD)Oa-AAh!e?&&GKxVQ)aU?vb!UoQrJci}l~z|hcedUjT++<*=I#G<02#U&+ZKp-=q2Mzh2?Uoqugl0<%G#oWySiV9a0remN=COH=<11Tzx7$;sE4ctWy=+j2EtOwsM_@%0)ujewxAf3-l{uDwK-bi6aT)xz7qx(EMS`E zB2~nXY)Wvwr$~6$^YrfAj~#J1a${Cz)cSp3jK=_Oq2sf`@dJ6WKh+ZH$}6ppWAgqd zk;aT{*D|W4`7zOnf8YrY;9r9`Rix=ChfRCTzpKNP6JA1YV->V!%IPJ0pqWJyULjun zwn`3JAuf0US*-hLS_Nm+NPkaUb{s%ZSfO_JeCkMXZt1u@PZKROx4mnjMO;+^$qzWw(a{I> zXCxP+4#Hp+zUBM6MscChEiD2&h*)B_LY*g@WMrua7|HAV;hiiL)F}WE^GW?g(JFxi zy*ldn3f*c7&#^6w9Xp&fz05L!)Q4PX)1|wA9#caqkfg7V9k!ifwgc}#eEqb!Np_z` zZ%ZB_C1TtmaEPt}nn-Y70CF9E*UPR&M4|!hcm&F$-`)iP!(a6b&;&Xz^eX3UQ~3yh zlarxD0SuZS!(kSc4L4E&Jw6>xEiKCB1_j@H&*0)Tgq+RWqq4{KbzN2h>-$AH4p*P< zFFSJ}Ky)A1N>ks)>P!oR{kio9&f>tdPU8Srl^o z&OvqnN)b!EvLqS-mEybV?MI#c#qbp%MI6SR*@4|DfVr-CV*?FL9ncW#&*({zX4?B7 zv4Lz|PSRDlzUJYsH=!-X9$k0!#hMg?YvJzcke&Vs7SiC?Ex~_YM`KzmBS=tN`6oLmezUx>-yYW(u%984b#Rh)0z-Et{UCSFFd?6QWncUeU+Wrdo8GwcP4BVO6$ zd_;69SGBMW=VyHr>)WvpdGqbI^ygGY(8BWgarK?%S-0bDnLrYn-rA^q)751RpyIk6 zMI3BO5rP2!lD|jX+#0_<51lH^&2U@o(4Rj#IKbcY5}+YmS5^wprJ%xgEhQ3u{P=MN zs0$axiWs99XzO1zdA6z{U2GcodsbG_M3rfl7W|h|)pk?>o)zt<{5ZF1a9A@uzrv?y z$Rpj(!1=u&*nM=Am=pn(1I~v|E{EM%KHUi<)k)!fskXo~i5&f0=4P zEZQrihhA!h9zfEcd3k!iLH{)>M<|OE9bvEVQaC{bG0kY%7IkMdHjT>ere>0hupS-q zG!|pk_)^k@4n&+%HJd~)x1pgnGF4>dIPSi)dec?+X*TpqRj%i3ljF7DJS*3pkNoz4WvK`Rzn zcpp>~co&b@Rm=pZa`u)EPFm>+RM?nR*s?LYGJSM4#vMPy(jC?bkcz}O?iGA$x;@)O_Ew0II)2mmUB0R3p!wz>3j7<6O#u*h*-@GDf<_Q@Ay& zKuHRNev}QN>h9Wi8wLm{+s^auL{78q9DYx{B?s2{(+12;a*HL1%Xv9i0UoX~Wh2g( z6WTqqD`P$9G~3V@!%n#`Og|W+g1a4LjAnBEM&6HD2L7%mf|?lfs*OtelkhvkEX&NV z(;s>FdBk-M!7zZ_s3PQ%%H!1YCTv1Ga$AQ24z68zO?37caET&0`M^-clre!xe|V~5$yNe^V4-Ri~yQy*Vi|^rOR;Nlq1i0~_`??a&I0~s zss2=IG2kU{J(z5;MUt{RqQSv8-elR2_*1Cf_|ARz)=Bpb@5HoSz%iim^r0V z<6X@fH+wyC7|Z-9$gIY09ItG{)g(YX-~m=$KHtd?4?V ztEKvNn}6M$pzB*f;i6G<>pK+$pCxS+zf75HP?!* zC@UJ1paPdVSBh37Rx?-}$?eh6kMr|+9(PhgH;H8@>xc@fKQ7RmRNjF?t3Myv;D7-f z1)-P&=Q0!@TKlt4^P1K_+ZoLmun$n(YV9ESrt{?Y@87w4T-CPg3TAEolzbfIHQad> z5^f4#Gc!k?SQ}$6xf4m?$y1e=mk)LvuE-YDE}~8ngXLe8Qx*M&7KX?1wC2dKWvp6- zn3P9ZR7R(yPzwbHRr9iiFUS3T8-Idk>(u!R-VpEuZCu!4%$F4EtXL~ z;?u2;zIlquFQp(K+61)eRd=4Dzr)Y1L-#_}ejoNSdVKel>XdNx$?=ccx&6-G?lY%DS zi3cqt0S8GT^j3w3h*@f+HMzfE)i)sE8iu$q*X^pOMt560mkUILp@-}oCFFmuj9f2Q z*cdG%C{x(T!ZcUL0~(tfS)O_NJOe!v?VbkOj4fp$Dn!`M?AZDGkXc*qLZI#k8b%{v zLTe4k36*P;qyF^agPWD2^WVi3P2ePDRoI663xBUU?I&Q0}WSv4gUkJXlf@4@_ ze7C8@APZ+Z%8??GZWrl(ErRaWeW#0)|3fu?hM%u@_K;a{1_wx7IFszqw#2#yhHu@C z_OxWg=wVmucnARKR<+E8X>4#KxRiIv3uZURU|tpv=!|(r1@Bgeqwt0Oo4~#021I*qWNuXNlF@NH! zt2x^tj2`g^GTq88^=Yi7uNTvN+s;u&44Q^a4NOW*5XZ*G?m6L@<)Al4>#QYO9g;6A zmt-lDGfM?EUf~_(O<$*Cvt+^RrA!-Kl0M{(JDtYMo84kI>^-MZ% zGLOY=Vpy{Omtxt})Rb3Jf+r^@H}SSki<1I8pPZg5>gtl$Y!}T^P*5n88xR`wU$}dQN1_-c?r{otmHB={PzvXqyI~rj9xk>v26R)cL!!)7=w3s&sPZp^o!; z(oU)CR~8r4^CjI&5cW()NhQN~lBuR=<_K;_ctPAJ;CA7(x_Ul7CBi=B&6_tGm)HD8 zY_IzU`rku+9lQ~gl#~F^!;6kdXR=os;}Aympsg8$-1b-Vj;)LMj{Weq zyMLh14MQ&pdz>Ne>hQAzwQq=74koSe;dXAq*x1-kFEi6p@rGfR*=M$2+2A=jIq{avUMAsLq2zQz)9s>(3o1jw5jie9am2 z=@Tg(9i5Ju*=KDw8*SSOw#*52~6zRKKcq&gon3OerN!gZoaU7UzZRxUhN= zpe4ZPD3=#I%4?u&wj~hrF4>C-<<^MY712OjZ$uJh68M_8nu|1yoA#opONT@^Yjh;k z=zxC7Bm_Q2WMykgkVyl*zN#UQDh)02R0f9os$aDZ7(n2jXkjSODHo%T*eh2J0B4S9 z5P-k{5O?GFO9lCxk#{^BDd{FSu0XRaH9UwP8tEAZ2Lx6*ynu-x@>J`s3^HRspX7KB_OLwxr-hl3T@^I$Qm2 zt>UGbWku9t5qoh6JLaw1A-R~jmQAE(Yp`W~O+_Kp=)=dJbfQf0@$vfz5ITmb^CIcxgWBN1=O%nWlSEDZg=s1mIH9eu`JcdlZ1LUMAHdJ5kL=p88S zIf$f1yaQ#C1~l9Re)K_EuW(8-GTf&2y+$t4tS0lHlC@(4-4ZIQst<*P$iRX|wI5ct zC;Wme;+X^5sgmJbN%)`;ss;zkot>XYP83$N!Pa|-lVV2Ste0Ju{`|Sl<4NrTqA%d% z)^B#H)M0c0?iL9pWn^(Nr}Jtn?YMkHY8t9lu5ut=){=lb2pRZxE(TRLhMJv0r3pLQ z?Efj8YeNCKTAWqjvQ8o?F;=$a8UU1(c~`EZi5dGre4`8!BujyhMc~Itf&Xuz4F^Oq zic3qw6I(LeN=r+X-Q5MR{;l?CFarkVX1p6t0FR-VyY4&v=s~14Uj3Z6% z`1LOYgXOg`^!&BA_eg&y9Pw6@$Mmr?XmmjndpVjItq9YWgK;+#CVjTB%?Vsv@BObN8t9DVCo`Plsi}N%S~aRb-a+eg9U_&y5cJ z_5YO-!3~3X!vl#V{uh!2%np{O=p_BGZvOXKnKOj#f2$Xz1*rY^oBUT1!aN}Ef07>L^2ojGtnKnOZoTG~w2 zf-fiImXJ&RjTGcBYRhjI2=jk?FFTyFY@nY$dOxr!Fm5%N7@JS!f}gJK!ENTM;7R(+ zzf%nH=s?34b`^$2pdyc4y%2X<9^|!XO?@M)sHiw!WgVW|VK?+O_%x?dF;7ciE?wG( zufcQo)rQ3Gcn&`UDw)^xKh+Ww6Pw;G)eDxZ@ujdyN*Yf%me0`#K44;E8mU9p`?Fuq zC6z{QEq}d=b3>d{%do*uuYaI+`X4Nxe_9wD$jxPGt+p=6MRk+aAB(qj&5`8d+EqM7 z`Y0hS<&o+_!or7UbOB^3u9bVuyytZT`rL%a8b!}6ktciNL6#k4hDqHBhX^x9}jgmUiKcH)=@?vcyceWLCye_Y=T3Sxe%xtWw#o@xsFdFA9gOU=5ws8snAqvz+wsxHW_yC671+5fZ%-VGI`7rDg zsfuJw`^bT^Yt1BQdN5?BbG)>+R)p{IW1Qc)V{;w#zwp^qKa;S3*a~lWp2&f>M8qsd z*h$t~osFUwb6(HP$`W*2SFkpH`SJm98YUs4)!N#+yB=h;fMk}q%EY8#4-cWoU!JWW9q~Ckxwv4nSlky9O4F#N zgZb65A2RYu@5<=?9-C-TDpmgXVIx0~WLMr-GgIX0{MFsYF<>P3p(Y#U>O4Q#Bq6;p zf;vby0SP=orIXF$$0iT{c3_>M;AbcwEI0YX1HYl6@)~ME=8)d)C2kV`j_r>nWuDPT zkG0Wrk+VJ#bZ}kB?;=h8TJ|-3fJRG?&DmAjP5T?Lr#g3hO!ppA`*{f-C>_Tj#pC%hgY2k=O_CR-`qd*8J{}X^^`{iTp3p5s4*{r43s&m-+rGtdN;d*C>lhxVM zpa`zC_W{MOMGMVy$cb7&2)?$34uhl@dc#Ym@S-)waN`;W!CNe|gq-*jR^@fjv5aSo0TBouR2!7=__ z8d`35M-wXQ>r?i}F%kg2;`|5@J!_d!RmUEze%sITqq0jsU|6!EFQl70m>RI!nCN~D zOzeAE9fmrbn!MWC2wmS0XRSJ+j3D}&+nA}W4;$u`MiHdPs{Ua8Ru^mt*X{U+;HTNH zr_Kw11e+?rNrR*MP%pP*h9xtbg$f3wjA9j4Rk4d^-hN3;4Dan#>Fw{wzXd0%FKKB* zG7;+P>RaDl6bhhh|3gbY=oCWLnecvl!CrIIVcmm0wzkH6d3iZFJRGiCKpMsm433QS z&X${|!E-=rmz{$HfBf$5?#q`ip`cXeH8s(Kgpr0)KPZ~n(!EKK!{PnMiiIQm=*oi|Ci;E^88OaJm z=TWo*UtkFm@>(R*8^)P9l#r3}>Ey(%w!S{UsVVI_ZpxQ0UHi3^gJY6wP=wI8u9xjAKy6+kSld0M*txKZjQkBM#_)F4Te>OA@_DA zq?=4eApjI$pDIqc(t|r$?7Q!-j376qp4veINIrhh^G!47rxh*m^5&uhfA_ofYm9Y| zV&IT*DeGbD)2ZX}El{dqCs2=?#|WH-qkxSk#I2{-_6)-$pXc~FIaTzlw^K_2%t*K` z^nBx)Ut+l&5O_IbxO_e}^`-Kdup>O=?@`Z%MNtw_X}P^1v}$y7`-vk)ir;R7LD^=r-Y;N`mX{Qx?h5xS zd7vNfUN{91_A>rcFUnB%btDKgcQ~2?*A!h?^jbvO6qH2VBeE(MGUn4={eA3$*R8#V z3Mp5+?eu8XgEGC(Nz#Bd7nJ*>w#StZ&l?GTVtYlo+V4V0-+K07QvCsd_H$lgVRC9d z{3+(e-&~yG=%7^hXk--q_<=2yMyOMw2isb57F)t(<@qvXClQR05TSb@BqZc4g;vg7 zqeM&bTKXzYUx|0tJd|f$dMzd<##zqytcx0Y&D{BCe;Y*Q9UUE61D%|ldXl&eQ=KqE zN=v!#ktBoCFBut5Q+TiMQYk%}T9@X}>ms6~g=co8Ey4Naiw~>eyhYxOVxb<3^e&<@ zupy|pydJp&OeW^Fhyn4>C=i`ua6249wZqnmfTJSwj7HF(Qw1rHgx`O0<6^28 znui=&&yezC!Pjk9PgaWaRe=sjuzbYjq-b8Rq=m|fLrW^acy{tjjiN9Cdx zACG$sqYz?=bDbgibhQyT1o5{RDau%{{dTMpESx0Yqb{0~UXiY9h{hlJe+s8a0;gS6 zNmN10>Sq6F@K^=%82Os^x?7j2ahXu%s29!Z*Cc0-fw|q&r)ZrId_$5XLQwAK5-0MvTL8f2BOWNf zvHSh^CY_4k^Do4d=^4T3Zt*MLH%ATk_BYjIS9X_Q-0LXg{^mN6U|F`8=I-7K^GH>} z>{INww;Q*2GA5mc@NTi;FcyA(;%p`+&>S~3)aEkF+2Mj~A@EooB{&u%+Gs%Doa+b3 zZy0%Zl`oo(MXtej$6Mm=TGoQuBiuHWqe3Ea?j=$JP1KAN5!*K??T4wE*~%Ege(`fd ziS-yJMTPe5URGnKhzF(aFaY&E3K;|kYv6CGHX=84kxyM3mZ16O{t-t)q_DE@x-sj5 z*Lo&^$Lz3RS|_cEI6h>I=hla>DB=PPikP&xz3C+<6YN-_)W!@AX?2z*D2iqt$p zd=(QDx`BLxI7@#M0|V@w4IN*9?%-Sp4uhLKm-iTe19;oqkpcnHE}vLb`FU%rE>c{1p|!17vjadfCA z2)w43N1=lL;{4@HF-LQ@biEZi+FBOP5jtJ_=FaTn=3+#RvQKS3$H}+>ZF+2GTTAZP zuAS*^JQHFdb{(}Hrham9feC=MH&jm`7jA5-#5pk_4Us7q1aCg;&_r7Xy^`nI#?_go zEk~k51l-A<$E~f;a5q3m9MAHaJp5JTy~D!tpiX9=*XwJP5VZ5xYz|e8cyWavXFL3_ zW#jI6gRRNPYHm>BlO&!?KZ9{y%yL9=*{?Z%k~f6@7rE7hrMpkU;4rF|xY;2n7U+8)zzNQW7STdU)G{jaaXkZ8|d-sukY zSMhdRm7&8)f1*QfX;g`cw=g;v>2elonhj+VeA-@jt8ny<{COv@Ms1dvT3#*-UJk;`w{!1yZ0Volvqb$AQ+0KM3xCam%1hZ!1B(7$ZsF$o*3GGZjS^`in`m573A)s$&ww|fMGu9c5{1CkX_-oUp zEyK^yEME6hvOcnlEOpuinICz>F}q7mmg>Fdo*_A<>mA;)JihNIZep65(jVk7dbMvR ziec%ZxNDP%hApE;x=2equw*Eh6yDcQeC)x8HeEXZy=I{EhZo6jLAk`t4(j(8233zR zIgCajw?2xewzvOs&-eNufq(kzF-AxcyDguK>Rh^FH&J2sIRH>gX+M{R3i99vc|JZ7 z9;L>$>jgfI79TO-o{6atp%*w@U6{XKsF0&PHKid(1WkPW^)cx+Cd(z}MOG+ts}0~u zZpGK1x_%rUGH_TS|4z?fqR|)2AXv{p^601p2>C?K2Q)HnZ5G+AH3^kv+u}?48$>{q zF*=h}JIjYLop~@u`clQXJ`FK%OsU#q9ZF+;!ZDXdR*3vcpn$1|8cv`TOc#jOe_jI; zIb5Vyb+P!N>b3-p>L!T7&QC+tm4a$GD{}wPKDWWHe=i*e;R9})yW|RIGRwio7%*sG z$JTsRQ5Z6*ha>RUkHXmqwBRGLrA2=6u$J$Abek>e2eKES6YHk-sx2zNF6QkFIHFULsOPayzAEhn8bnGnD1!E8%DXWQ>fl&COCkvS(#mz?p8w9qaB|OglaxJS#BS;UCDo9PgTC zEQDwxm|eO#?>rU#b!Jt?ioQdx9>y2HpoIsJnlq^vk`_DM-gFpNNZhf!#l^XhVfwwq zZ2zOE^-kMr?Q<}_CurlpY5n|djn}Q3{4&@wp)E8# zpKx3FTx~nBIbUsiLd%DRKB7?ftpp5Ie{=xl9ggSfsQ3a@k%|Pm)+45tj!^#9S{LTv zDw5kLQS;kkCPwoalnzfMOB4)yxwtq)iGmKf$Dn@f1PBV7Vd&SD>r(=qqEe+`jLbQp zB?Ji6?oBScVRdzNadLBqgBJfQ8Zg(bN7vrot^^nunyrmO3hLAL_xaxrA845x?C#`! zTYy;_n(=G@43D6rr(X!9DxNqv`RI|4&%TBMjHwnDZ=N?80G*HDk?T{MFd`6$;7dnD zgGQr2wl$V9XxB3ZP|RQKt=DJXBi6rm>Mi*r`K5)-&@&rOA)^Z!>_C-8k1Aw)T)FDZ zv9XN;RTGOEjw4KYUA6;pe_mqlea|sw2BOHfRg7-pVTf`dM01g&TN~k6hnVh1ecq_r zN5`nz`8Ntw$fI%s&z=t@*ZMTZ-9XH5j;E!22iB4T3Qj=9XLgRvi&-`rHqct7Fd zzBkxiW`uj=8=dLV;qNOOWnW*%EQROF&-8m>|4EK`lkd%BaMR=uY%ufN*!*ve9OBMLb*dDB9yFPggsxe%nUkNx zG>MdToNnSH*o$lAXXSkwXBPT@zH(TQaV%WB+y%p&?A;%n9S^>cYJ$?csR}O+(+3|e zp`5^LC+(;NnD}??OH!{7Qa@`%Nvl}CX3O$w^V8SQ7hXIJCNzHcs+Dl=`cxiq(sQqF z7b_Lf`8_>7U%q6I{X++aEdsSSk9M%dODG&_Xh9zxj2cZCvJ=P{bxVA)akSH~C(pLx zvAxjUtpp^mJKZmTpv{1{+NeL?6(Kuxacjd!d{!DMdj^jRKsB2QU^ue-{AnChcaUPzY} zFt=BB=J`PHNzw~g6ZTKoN$mDhntJDjhwkp~p=JkoCB2L<3d!v4?X|d)5?(B`rucXF z^+l#3>)$OsLIjk7o|;Lys=0gH_riMpKRQcXf^Rd}5kgwY;6j?FZZymV%u*>gP_Ar< z$d8PS1e+FsbP0c*C+*>7HCs}dStzE^S5iX1SKa%jpU>~|`>HoM z_{%DW@Lx}JaIjp{jZ5Z|S#S4PRX9G^ysnt1_S*kfjXGKB$oV5Qyyybr5@)}Z2+`M% zsBv}QC2cp2sKc7w2`|w?TE0iB+wJP4lv4lHzUkgo-1c)!+dmimwwv{IA%8qPY;{7f zSp{c)+V0N#sv=LvQF8UzRW@7Xw8)fb{@=7^*L4GvCVI%(nTIsDX>o~E7zV1MYg)cP zuYN?#tMpx!R|q3ah(J_d4H&V}!LX8S_YacJ&&NoB2}QAR9|_9Pl-`CD5tq>N?o4LegX%z7kSmR>EM2@52dPr7h4QXuFd zpK65D39(@?*nFm!IagACUS4RE+=L$j#2q^)3)D8YwCvnAdLVSL{PQzrj)trL=;%Q@isr3@@ANK*xQzs|4IzigD=9|uAvLMJ&ZI#`x5 zI_GfYLM_)7su}?W!#hP}m)o1ft)De$pw5h3GUkDMLgbsFycM-&=;zsftNF4bOrR`B z1_1M?V;M9IWnpdnz(hf?n*_@_dio_NKX>cVJ#x-_EZ1`bZ?=8a?XH2?PsXtQl$nT* z&Vy#9sE8ItNE-$Y6`){ZlD-lz4+65KpoDwJ8;4C?g^W$bO6Z%`m-|{`p*oiYoMw4` zFh_~MTkLJ~LdDbUZAXA$0O;K*Uo0Kre3eb`S}PNUiQKVQHIqCoeDx6w2Vx*_l6KoL z)+JlJF{pGMNSEEJeofj#aMI}^h>kRK22E!-4!YYvkQ=M-?Pk%a|7jLho_%)ESpf+9lx1Ob+^TjjsAa+>N=3EkNE;KZ>JL%cBhh)uB&FV!tsk*$RWSa2R z8IqZVBn0g3yma8!hH~SesE2cWeoQG7$ixjtL(N=Jjki{55%@dwZg=3 zW~&{UjY5l2;8@X|O+fucUH*mSU`PPneygoAyyo(7jnN_ z7ssk*R6XGy@OVlmmtf0?E=krRZ_+>dTq2HDIpkY81QP%^2H37Nd%tH6r{p%c7f+Ba z?+ksgtEB}5dhJkgSg*N;Zf~zvKJBF;rt|F9&YjEW<&k2BD{nQN4YI|%p$$KJjkH1V=B0K#IdD!cL31e^e_U8DJmue*Sf3kUV^!LP_`^)Ov0(%Ca7mGp7 z;F6aD`+t&(M8y9$?ym^R7xKR`h!u|izh@mgxI;`q^XYi3grsLE&xU4!cx5!5t6J%< zKWK#|i9}c948||x3St`yW<1-rUT+=VlaBw*FiOXX{l8=fb!}e<>S}3`tjS6`W`h$$$Iutr==5(~&v^&_G zN;dg0i%!w(s z5Rd$I6ys8_d@!K&ApWA~7UE#@u)z`LwhTeakO}w6Bbmv`o8o8Q%A{s|I!)VzGn<;n zdOv@jb&l!`MW&$`MXPe|WZO`WJ?1gigINTtnRg)k@Xb~fsP$6ZD8q|Hu*ip#D@~-S zI~#mFMh?gAzezjR&Nbq29Ac_^G;rgc(#g*8+&lVGy6&DHG^4P};S~O!@k-rWaAMnj z`0$|$-X?7Q-QU44EA{1OO*;8{TxkdQU+2}US0`6j^$XY^sC!TSZDzsn6acIZnm&-> zvCdH~*g!`||4-#uh^&e0QnPny@4!HG$$zttEQv$T|7pH8J5|){GA9v(BegRRf=G#y zW@FgkRBSIsjz7!pFL{*bmeRE3jL}Q5>D$Ko>-FT@y#sjx0**wykP1tLkH=!z$w`j; z>86VIo#qRZfyij;o|Tmq2l{(b6IwDObzdF@ZW`o~_PX1;C!#?b$|}DRS!vo3$IVxN znM2&&i@)hBoAv5HW6*rFc8aW2Mzx|`@qD_+aR*e)C}vQ1Lm!tNzgmkOqxNv`i^J9r zO^w4|i+Y_ihYUSxN1gAE?*djeiR5unksI{{)DiDY>z%FTQHft0H&5J_Zq`U6K2n0C zBvofpOV`|i!l**PkBhD$kJlXm^1i!U$V&60ipIuIC`QE(Mv8=$MN=g$?`-ukZd|(- zQ42MWTi_-m@d(uH_wV1`m<%c*1w$7tZO2n&)8b;zf9dEC-0R92!6nx?%AP_so+jwnqCf%JsYHPW zW(;)8K;8-DKog!l0?(kTh7=V&_PqQ1*Dj8@4P;~1x3{sVsi}Sa{JMsR3Fu;@no!_r z>(ciS+`$OOr7CkIE_m%M&^w`4R3&V|#hn}d#xg&$;b4*V%d?4}PSm3)+My{4xr<*{ zkW@p$D8D|I=faUqsORZV7%CkPA+2& z`%UJ2{{pe7SByyMkGrUQ|D?%`C`}{k(;*|W!Bp4xPF&u1e zCdl{+-QLLi2@OC&3LoaXH~ltaOy>V!?k#|#{NlgShfW0*1SAzf0Rd4-fkhB8Na+Rv zDPci67nPDW5T!w-Ly)c|B$Sp|VS%Mr1t4zuT(C07rKI{>t28UWNN*j_B z-(7L5OIRhBL6G-v4&c^L@I!CvP|qKOL$`>;6K5f{JQt(ci``t}BQn zwESjkIsdsooP>RZUH1K>@u(`2~Qal}HI1jy1fP&{-QTXCCRH z&qG&m%#cHK@APxVAPXk8h`W2-JuXs2)7hRb9Qbp33gPD`^ZfbqzKPVB%*?n8)Lv!lb}H_c#QACIhvkPvo@Ao`LhJbj269sNaOiXgrtYSCznF%q^n zQsBU)Gcqy~9v!Xh=_vsW8-VzK1Aqaz@^k8d|9+6vun~QVy&6KmPNo+?17?-;y(NKp zUWZ1l-qs@b>dsc}lC&9XS7Sdnyeio}nDV?5HYPy=X&M-LWtP*QR2JxvBX$aoP8p0rC4CFE7*aCf z1@vvd-D}OnjRa>i9hRfn-Cw0XsJA6ENG8T`AV$l4<< z&Y#5R*^e8C9BhTI=LB5WCW26>V-xY^Je{X`#PWSY!utZMNt<&0*toc_s>h&KMHECg zH|D=D7Mmlv%*@R81M%*vNAv89INxigzlISFhpR>#<{6rQ0tE7S4-l2wG_r*g#3Z8^ z#b~9E_+BrhDIEbb;@<{7e~3mj)OG{bWb50r-o~qrv_1A9O7`Z3>~l41GnMdfHR_G< z48T{q@u}c*C;i9a8Vb9OwW<6-lm}Rll9J?;TQXU+>SKuN@s6 zo@5QN%h}6FOVbdHQ5~cz8$^DhR^}mhaGYZsktdY++Krs35qZXYF({Ank4cY1<1hcuzl%ntc{9jCDft&gVSEY}Y2daDvJ-UKwGIOmn) z^G?```rYa74%qktH!8dA8o)6Fv=0a&99fkBxG8@ z`(lPiX~7IXIaclFf}>Nx2EA}`%C*hotHsSYV$ z8KWeRD%(V6?1z&p@zaTK6&~!iSzK=%7|?Ew1syWkwUU^a=MhSn&xM}T(fg> zQU>ni+gCh#)0#ee_8Rg~iKKrv+tWcQ@7Ke8xBy~T{y3+W}&Q3u|=~WV7L~kNL zpU=3bM^eDMZ$51Fax3vMy#x2Pee*RP+M;-+Z$h<`xo7#VANukR-l7kh!541}-x>E< zK|J`meN{l~(q-%1N#s{v^~kt5$xlo3bK_K3vL95fR)|9!D57@uaAy7S^>YC#8_4o< zW=X(uI}g3)4h-)K<7$Q=;BXWRAR+-u;azg_xA_V*BvnLo)JSQb;*#eXAye5vm^jiL zIXv9(@C(0AT=x{b<0Rzre(I1I(9v?){7QkCbQQ57+ofs~k0X}6J$v=hLoj-?iJ~9g zE6_~_gg#PeiHNv9+DWG(BOi1-k66iae)>xaI~l;kTs}HLf`+r4gVEB_kw9Q(X0##1 z3cW}(r)eOJIuJ0XFGr0g7yB7A%>1ySA`Uk8^|d@=s(6M9IL{Y$xh`I1mI_t`05m1Acu>^L^x6GL=hv3}@F4z_3b#GxcT+ zU=2ue3j&x2TE|Toevy}79KdkHX2kayl8&UI{lqdOVZcT6#39uUY0RA%4`S7ch_3D* z4Y7pQFQN8s&I@h%=Q!Jlzkjo_%6f~QTxQ_RYw^N3SwC)hFA!P%^IZVA%y#ps#k$!R z_u>w+sOU7iWa%bibGkLTxOiqCspWGavYhuP!X3~3@laHD^GuS^n+C}%Z}J~w)~*wJ zuL`$<dl6XV z=U!q>jnbd0H*biM*)9zYv#oQzodJ^}8AL8Xe*u#o7;VbXhYvsg z^UzXjl8$W`{JrftllBM0Mf`TAGmx|(snHj`5NhD=F&gF@J2w-NN z{`A%$LCX`PCV@mP!#s-jLGRAS+580GLxmFiNqDb2^{gh>D^;C{N+#JosbC`ifK?xs zN-100$O+S|{g@a$UB&+|f+4}={b)~efBJCHj>@C$~QhSQN=YTiDa!E^MO8r1hnvmDf!i<-Oi zR&O1rE=-wKai_Yi4Su;iwaPN3{qF5u4!pv(+ljMQYi&^IywE z`lRL&Dh9F>4I1YrPEVcuce{DI{}*!ejV$U4J@5e^hFLDzZrHdY*8Up;j=3``sByZ#sPO=hNT4uBdJbzI1i`k{k z23a&(?wI`ymsCRKBNBM`Zg60Yqn%yOZ)Bi%9^6{*cyp%RuYdspuvs9*`Zc8L!yA`x z-O?E`hh3i8Pq>?`aNn7|USa`8Z-0>cC&!K=n10G1%-o#pFLzgw{f=&gmblclVs{FY zXU{@fuF(?+gopZ#x;pzkM=*9*YSDSKOw{~Q*hPMr?hCm4U@>bH^MHf2*lQRW(M*K0rd?H?K2QQxQK^DUZ z$HxQlML~HvlSgiZ!X!ka+%reJeac%rLHVyE;^BIOIr#t_{5ph=1%FqxL80}Rq>#hl z5WqCF0-9AoCX0Fcler{j@#To^b=AKwGB030{r#j+5Au7ib~df#bi=WVoh zUGQi<@EU$U598%kTKQ8#CMG7fIFzsd>TuHmQn~xj;V$+QtU4@b8%ToEDibe)+2pUI z=8p*|^z|U#e@{G)AmKRk&+$f)eiGP9e;-Uw{(IRMMlz{?AGj34+W7ASX9RvgG5
+x{rblPDw|-=8xO6rw6coWd7#duT?%o~TxvXX+991cKtxoBn z_mYqU{t3gx@++aq@Cz^OwX>w;{wy?XMZ^&c7PD*c#XV`ob!qA;GE<`43v>q>9`(x| zc+06Ny>bP$kEY*^ck9>baD{74zeZob6W8)rB0qb@@xzXVM?k*cM#v1eOGx+c_B2od zo+9%)8#x0*kVDO7y-=-2zRx|4Sol6U`C69Rr%d7_b#>>rGZtUJJjhpe$(ADbSfpsI zV|+MFv)o75lrlZ0n3MJURb?CUj?f7{UD?j%TVQQf8B^qW;Tyss?uBqqh6X*%@@8dC z!-$-L7Hn!cpG4|qF&S7t3_$e9(7k^4Y?n9Qey&}VtkT%Ie#i+Om7P}Mu{5e{e~j!( z6HPog{KOqcze{qGUwr_uHnXtwhkH3m9mlXbnE~|Lm>|ANQ1(>3L zR}kJWamKTDJa6j*iYmyn5N$9F?j*6$=n?32I8+Qsx0fdxAK-;R5$qB}|NJosF!uG8 z0W}C=E+)}PcrWFI*zT5$-@R_xOrHHMTls!?>81wIPP}P7-|`opzr*Q!=Y1NN*g<5ea@9i9@LV1@%lf$%K2r2Kx@$U30C_+1 zk>BnQ;Iw(avypJHt!xl>`ULq6)ZFU;2@iZfi-(2YM_!A4Btm)xjbKXDeEj(3(M!^= z7n6swgN#hM?P{{q`TdVQ3K2_>stLXx2=Z@Lfu?v(Q;fc2Qa>00*xytOY1N z$`TcDBp(fthoO{IGkJGjjV%**W@57_UbKn*0Uqs!fW{yagDRJdQbuP$Eq?O*%L8X| z-Dre|Q0>dxt&LnQ|}gmVJ4gdCUD!cpDz1ZS^e-0&;sEtmpR(4cSP^$Z#wefD8dD-%LfJqwDj~s`z9^saAag;uKOF7kS@uesg|%a ztgLpU`?iE#_8L>)T&^G+!fw)*mE-W5gVoo z0&-JEeM;H;E_qSi)B**7e*l+v>$#h&(dHiFiCLoxw=?ym7%U#nPeBpgHO?i4*`0@`;?{AEFhl1Mdd4m{Q#Uy~%3qu%dK`f`du8-uZV z_;*({&gTY_J)RM&Y^z;+hi18EkpAolMC1gZbhm{b=R@nO`&*r&LMg=gJ9m7KTf!J- zRzBTy-n;2Wki&h>B#h~so%zd(5^lvew>X;aVaAHK!$D63hlB|D(En-=)N&Oo5)ipZ z)xv;&`TMay_l1ZL85tlY9#zK>yuZI6I0e!ILcgMRT-n2LehlD%OBYF_p1%;(l`B+qTY@{oJWC6wPy1B`E-2wukz2%(?21AbA zhA@$a<*&9Ns-Vr7wN+kRLUrI{;$IiIlKtpm-=)jsL3k9R&8Uq_XXryl4E;+JeQUNo z5`{ge{oyw{(=%7}lSmo~&sD01R%X@ZHg1G!woRVenD`}W1@Rm9lWB^#fxcckv}VXW zisCwY;6VeiyPuL`t1x^JYHI8!|1M&;zOrLAwmprDA;*wL%%%C#kz9G}lYo{IIkGo0 zwTuHkyyQX5Olipj)grRMi#rn!V=o&wIK3(r=g?l|EdKp}m zMC_K(dvcA({Rg`8*=NtX{P;F~1+cO2Yp7_smT)!aGCn7SaY0eaQ)iH5sUPGd_4T+R z*&&X|X5IsZD~;7E@Eh2jhvtRrbYQhZ?5>P}Mpr4^Ls!DNosq}8kwyQCe*Rk1GTvkL z6_ES|ptgxtjJ~a#9|1}MNEtcnE}=)KjP$#(I`W+g;KZEKXrQy!NlbDCe*K!YJhM5U z1Rv#B{m2uQ-R5gt`AAgR*SE&((XPdc8U@>Q2Tx87_U+H!n>&X)&+E|?gB}G08LEYE z8e5)=bJbM)_ZWtTB$7$7`>?e=H(iiK*L!pCNz0OaYDF#&vVk5G@#syJ=vwuTu759Znk1GR z=6rA@$w2$NMbi8eB3s%9=I=>$sbtBDP~YA;|E96ULt!mXSpAMorPzbYfV;ULQi zRb)DyQi;(c;IZxx9+abePNsjw9K_9sN!?jtE})L;D8HMOR)QTHYQv<-7<$G2GOPpb z2OYD+Zk(eZ_7Nz?M^yKN*uCSJNK#ad`ouIS((2)ygA%Yy>R0>Z7p&=JFavVA{9 z>^wTiL?8n@e*IE(cP|?dpFBzwA1H1Gj&oT)In^|I(~b-A3q2$`HI&IK_J_T&?G(+| zK(+1=IuSw8Qj6Kr>Pa`0Sz$2K$C*c_3K+za*3^=?nFm@o&N8k0sheND4aYh7_D;Fu za!8H@E|5jX+#51799ZTm;6mhMjZFuBam@pz^Qxdo8ySOaP(#4sbQpJ_LcU%h1g+Qa zaT$e%3L;nrGpC=pV@H`kQJr37v5c?OMV%D=5=@lg^Sx-r^@;it53F9BV*q+oDR>q43B^CBO=Tt}-D1GBg|L zr)0sGV&874y}dYAWLhh`X1jmy#OM&*z?sKq?c!raM55(`$bzDx==<~aMYXx9^#*Sl zft*zxKY!i<>eyP9(rR^YgEMY;m=8{J(O{ zH>#E7vO% zcYQk7#%o*EB*%k+h)g%WAamwM9&J4`@f@*HE0Tw_eO(IS1&+h4P|PH+lW1QSpGzin zIF{z;pJ8xR+`4bfQ*KfJAuxg z40=PuW`UYK{2au!a*Fk$t@f(hLN0!73KlA<0(atew_Y_57ji-h!4j_u_mgL~yA%gr zUS+F0P$_Tv^&;2XD;}oDJ35H>;-Q;aD`@Nx-puKcCuvOP5wV|sHpTKTcy4q6e-vAR zeEEx$U6tnLTmGK&f#dkw&cPKF5wT>D;LXaU^LKwvc1xXhd>;DIhzQy_xsB_(XgJ-e zQ_KLtv%iamyN-LHNUlqgm)10tQ2kuN-|#030;!FeSXh$uh%;eaXIu-7mMRB;Eo@3O zd17>|+X80>D$XDrSj$XaffZRlIgq+In~vSzuU_>D7vu##B?xrkQL)eq_t&+!YK<0o-`wPOd%9 zX8%0r&>6!Kl}(!n?o_|;XPt~>+N_53(`H)c9Pm|MW&CS(O=9y`B7#`>_nXRDhAt*^ z5Px7!wPG;d?6I)Ts}jdvR-aRdPfyuj5^MEY8qXr%{;h%<)!X^@bZ1>|*9E&Js=5Rg ztD-55Cr>i3--Nb8@V2p8*vcfYDDiSCpQARet^&~(?irPvN<8Md>owg4Tqf8~^wXFZ z^yU+$a|}N|>Xt`PJ7po>Urc7RhG-xuS3T~qp?pvi|zUZ$#twj}b)=>V*rkBr#A&LA;$FN^&I1ochD^phS*%pwU2JW4S2WYar^ z)cts-*)ZTp4~1B2x>L1WTEtb^$*3+~jsGQB09QK(-FL{H}A2UUObTA~Kot{&S(VgQc z2V;aRE=)zmgFG&*o;{RS7kGj{B^nT8*A#4MWXzFg8b9yve2-Y<8a* z39D5I@A8E@d9e}$ALcF*DQ9m~#Teb`{I@mvS2>9;%Ew2HLylIRVSI}|$Q-i(=B%1KEy;6zY{d8sV za-KEchap_FT-4avV)(iCM?1Yjk-dWEAzAfD=^J!TMVN~6Q~fY=>Fc^9ngrNWmU1OM#^VO|j*qr`@vGpBJ9hXK^bJrwig6Ym$BDimNdY+oPIi~!OFtCQ zNwsCDB}x2RCesxvt_drHAosJ{;BqmN% zNt=Pk=&lE3JGW_UYEJ3$LXsa1rLVvu zgE!qy{J$Oxs6OJKdOxo-C{Z)_^@;Jfl`qH5^`FbT6{8>FwK5 zWCsOMRarnBSj)g5+_ctni5P{}DaG#>7NvbcEWg}6cSb8-hQcNG*z++_7W6hKyJ?x- zIITS_d(^1RIRvN_k$rudUo8g*^HUXfZL7c*1v%OVE^w`jEt2OzHuVQ@Nxcj$*jyZ%l(@RE}PBhnXH14jcO8=~Q5 zNUAXS(0-4EiJRKQcq#5DT^mu?0H0aQ=K`9kCB@%5db+6Hd8Iq}p? z--}UjXcM%)T-;4FVnNFh9~1=qmcHd-AZcmD?KRdA5Kve&ueHJIWg73T;R6WY36a^i zJy)c%Pfjh)3h-I+Aa{Y)P4u7XMxu(zQ>qa#Yc-Afw_eOFEGG?>cEQ+u<-~#!IlYcN zi8T$QosqUWl_@yUBK+OEvz#8l(xIP{zi^8>Wudn{T9P=iDo->dQk>RE3Kha2%$JgQ zAeWkkPjwP#D`d*uJ9k86+`~1`%5%#3>UiT5xn4@yG@(EVLR?p(n~Y6;`A&3n2Wr%} z?A#ET9yf9b_d0yBdFa4Y^Q+SyM)V$hVx^3B?W7F?aYGMVDn~ow%_%6VPm~=s(_@=^ z)cUB6=o4lBeh9E0PAGK%$&s#KY^Juhr}@`t1$|}-43!64GA`K~sm+Ar!+>e36V?#L zxT0aXJ>NaCvhdP< z-PsI+k!#x5(C8{WkgUGxK#q@=ZE6@7vSzoQEH0hnFufqRTK5%!= znd4{?C5V}@ruXks3Oz?@q59;kK^s3*`X0r{kq$Tr@v6i zh;y!l7v+w_ug_FYJQ+DMHiX@{@i>i$sHw@aEwdR$12%yIF5bUym7ck^x!~1( zT;Hz0Oq9Xj3n0KwNz;8l{CHFSTxI+%6x_Vw2=>>lBx=TjE4w8hx{>j?@~~3efy(^7 zkKB`~q7D0mW8A*2c`qJcoN{ z6qo76&OQrk6eGsM3Ix_?Hp9dN2+?w^WEY2K_gPFbTnVSP;kz@KyaV&vrzt1THXIU+ z$8H;)b3_%~^f)Rk;$~wLFsgJub->`#MT}y*`F>B#s*V1?mn1MbFC4MYV^-Rcy4x_@ z^03sKrcx88)m+Q-$3VAz2O`W$;DG;e+8b%rjC_-_%s*l)bwhJQqS=O*fP zBSE`>THL)^&|3dlJj4Ex8YiL?3wtjdC(Vk7NzD^|oyxZ4i%|El+whep0mjFwF^H{K zR8qvy1Ifcp_|TE@R0Z1k+{KF*foLn-y-Pk?X8#IItiUAC9Ob!hBU&T}gq7#=<-3NW z4em#!-0-M7^<+|P4az|Mg#15Ehn3YgrbyDaJc|5qXYQ5DNh5z%?sQo=)e={M(qach zdYQ!Y%}(A9IR-wZz@8vgIv1Lu_Q+xmY}&;9vI8#^daDIZmT1`;_cUubVd_y1a%MO6 z9OfUKb54#JM9|{Y1ikr2_#~ zWO(JIC+>Q22j`18#V)SB+8E!%G#4=59VWU|a{{M!Ygp&%UtdX*Z~`f#G*W+*?#*Lo zGVq(C?fxTv+pb%)4sL!NE{)A2LD={yAeJeE z?4|0-QZLS3QRe|0u_)m3OX}2yT~{xH9{`-GU30dZB?e>A$!=xw9lh$&@SVPji<3E~ zQh!!@)o)F$J#s^9CR->am^pIcwXS(U3=6-MZCG2XPD)J8RBpzThXpXj;}=EPU;Td> z`BE;Apa`KL)Ni5psS&mX<|bO@rW1NVjo~;(qrV-0+}=A(fh8*?eP{$mzn@?;u==O( zp84kRZF^+kua{PxymX#9aHDdh&%;#OnO&YKEwJJYl{1Y(2&4A_OL_JaJpL%@V88Oo zU%j2xyMOLPUY)gGgs;g{8y+I=KJ{cfsj!b5F>^;p*6JA4d=Wk8G=#Hh?Em_Rg+tc6 z&pyplP4q-as@)a@Q%)dI;Q;O4Ob7@a@U+s%Q&%wo!`k~G9&A%Go=J*pM}T)i7V`t& z6L6RTJI(==Fi)`Xg&h7&7oRYX}o!rK?WGuViV-K0>WYfEm2Ckgy-? z;Kh+y$`?3#yWv4E@>48AXr9|87>-xSrFY*o%FMm`u^Hx3i35!hT`jp3Et%Bclvw|R#Raig$7 z%zx9}xE#a)FM;e}&_&HM{n0qFg%% z_YA~ych%$PeAK{Q_cE(4Sjfy^yUi+R?;*Ffc<~g%HzAqW1(&!a^261y-hL>+i?A0! zl%Dq|R{uVr;;@3x9l=L#GB>tBLCO9+R}g|hhWx{#1)CLHcw3kf^4l8-AX8*Xpblvm zmtgUudFu3gJXg3C2=^cbF3E=}F-S<29dx)6`lE#*fpJ@^Kz9JGO4e%Z!mYcK~ zk>g9aP3ryU?Ezx4=*@JfD>-IJu^0fz|ohoU3su?~5R`nt` z$Sod?cCJ;+q0X>Ao@tN8qGfTPYZ`>U$6)@vl59`!5t_8#pL5u})-I5q6oar{4%s-1 zo)9iAjeX)TUhG%LNqRwJGwCcgmIp?HNIJ!=IH~&eRPk5+uRMaJ)K0j#1e)A?*d?vKO53`B1`@2`;i8#6T)yMj-Gx^V`e%+z>n6d@T0Ta@&D$kbX&rw8AvA+y;`f^Bk1k_wj z=;T@x8~B007sG70P1uag-G&`A=u=lOcbS}Ew4e$&w0tw%x= zUaK9wSl%>^XDhCi+<65EV{wzv-1yqj8j-1vkUai#`^7kfIIoF%|iM( zZ96xsdhG8Xd|GezFA1>(91Akmn2d8PMyNPGvHc3OW`O#51awZFP?hJ2Kxywoj*r{+6v5c&#-<;Ofm=gyAHBv8OHhplWp zjmrLly=>P>sTZyC8~GN!|ZfRc$S_RqHC_ z;l+o=%2&H;6Nm2Yfwca+xQpr^AI|DonfWgpL?`3 z4x+iL&dk0{M-NV8G{mq#_y3kCh(<&$6s82$@VaF>8;0GV`{|a{ff% zZGUp8uSGB88V_ArF3oP8)8wyH5~!e3{{QTg`&aZEt5baim87dl)hQ0vGNbPV_}ctW z58th6rr;jkr9sH~N3QwHd*?5(Gu*msWpK*AhH`1WQAY)$Z`^ob zFk)rZ@}Gs|{@ez|Vpt7vfNiildp5nf^Vt7;diE(OS4B!ZVet%eE>fCQzd@Y-zXsg0 zJGolWB8~T$tlBEHOf(#a{>8r?6!pz{8fOft-Fj|9@;}hK|C7*iW?A-$c3tLaIbv7Q z4SJA5Q$nOFLKZj|wNCz>WRtf`6bRv5ab(vYES&u6hnElMcn+0jUnQ0%u*@TU&j`ihWOWRXKivf;Ji|m(g3E zMI_M4Bs{l08Hwv&0Y3Exg;2Qi!3Y%e`{rDDgVWosnGdn`0Pyl9I~$7znORS4ZfIV1 z7oe%2f3TrckoNMU8yg@eKI+hWt$N|v>({SIA)x+$`9d{=LQI9Q1k3K$)yabVOKJYk z`w{Es409{Knd7!&hj96y<%o4bPpMWetn|W)*KC6xcr1^_j&Jx?J?;5}wX%4kmiNTV zhu-15+AH$;-|O8*69+?Vqw>+(5sT1rt0 zB@cPbT*o0W%)&}CIjpH+c{^enXTWRF-jr|_>Cxa#zh3FvV_Igl{+wP_Lq7#Zhh2)jy6rVmwUPMUkkM)S2}e{!s!e0 z%oF0Xo*u7MW(GP1d}IzZG{wa49&N`2_Jk=0C0cZ_dNvhF%NwvZ+k2{Y$oIfCxx$yM zEKnA@jM7R2Ke|QG70^fL-+SgyBDVL4Ah6P~ZrV~Q3{f`MF*>Jay?!Br?&3J)b4$zJ zmEM2D_C0`j11uq1YD%@XLN;p99q{evF?=_=GF2-!+OoY&cxIt*zH+ zXoxA~wz|5T44HispbL?u2nd1~kOGawY%&RMp}#X$jC!ET^AOPyCl zcpJW(bwpSYfXKRNCTC0F(g<`p!;svyPlr+AQMFm4$I|u~p;IIux&rPUIXBKb>=C`N zL%)=$tr(DNwKNHP`;Ut`*}P75QCmF!-Js$jmm?EsSXptPFHV^nV|>HywDrcE%xS^c z@thi;jt7TaLDCmbaDvXgP3-3<`qOK=m)#ZsqNen!3+}d=0u-xl-Q}t}_;TXv8 z8y*pH!-m2LU<3eEa;ySmwbl1C%91RnJ~aez5++d~-4FKmvBaP||w*ICF2e7eUZw5UN)z z@)wf9Qjgb^yZc|0p(~?zSMj-8VEox>?& zur!lf5^IN7+VePH0f`cm9+uk|lA2k}^>8b<($wDP-OD#4vDFQ*+SnWS!VLMs;Cq%H z#|}T^4WJ#14n7`jb4=ayp%NIePR*~0|2_91oyb7mNXCdbh)phCkauz&DVFh1@*?=5 zwV~bnYhstP>=bbhRZE_=g*A*l*Pa%7=Br!Vwr^n%7wTW{WotmtEJu&ziLLX-n)>r& zwW*{LLM_e#2-j1SiJ3?B37AuVqQE3_CQpe~XaVCrR)p3Cq^f!@g-$W3>v%%)#x5j< ze_T%s-zTmy0d#M*(+S%5*5%;*J@HAXU9cckE}uYO@3n3=P(*x+6UZ5=CK3*D4HF1r zfK9+h-E5g!&(*WrX6Ex10r($&ec2k^bH@gz=Dr)7wyis__tI^9Q@vMWiTQ9M3S+J_ z+VUzEmfuS>MjUdljMuV&2eax#CaM2Cu2@xCxVop03Hz?WGxdv0ldbUqg}KOC;g&qb z{kj6xuc#n5QxeL?r3)?+NuS+8+%M3y0%eXEcRW5>n^}wZ^v*HkNP4X%b9dXK*#Y-} zUB=xmdM5oj4n3%qxXASQn83@|m@hO~FBO-+E*oNwOw~lvYNX-?v7L!UI+QL&=%|@Z zERA^fjKr*(dL0{NXqx6=TPMPnzR#q?EpFO5|eiz zdl(7yT=nz<^HsLUo+(c9Nme+d=G*l;@qz|Q{^pIFLGLW}@8nuxBGWz|lCF%1#jpf% zz9d1V>J$X!W0!B}=Jze1YZmkW9!lS#Q`GhrW$G9)m2}G^mcK$ekm9B3cl2y-wVID= z!3~XpAFW&sBt0Z19(!U!LGPmS`!0Vcm9pB;l5x+C*(_7F(um$PvhdI{h4^#n)AI6* zYqE-Wv_Sw<9EclAAm?rn@4j@hzD1prrR4CtJ0D$Db>f=Lw7KD#S$3n3Yn=!NYUF=7 zGTyz{gWl6^Pmnh)15lg4XB0o}L(cjfJ(T7n-ThY0?!8a07ruaU`A@yq7OEdbJ1ec{ zq3I_I2AG;9%`IiS`@An?j${Yn756EV%{?f?iOv*(k_yKHReJf(xD;39GM9;lWVt`V zk(D8S#k2OKjL!`-({E5>mbf?lUu+I>(i_2@@~37$ke+Fp4~CyCH*t`K)rW0Qp=L=d zC${FF4I=hm2}a&PD}3sAvS7ch?xjZcsX15X6!K?OU?V?milpmNnduD`#f->t%DCS* z87bz@QcsO?%FV6FeRm~N$VC2|8*+LdJQj7| zd<15NF991@MPA1YS8@Va-dF$}b=#lp?*Qd&z#Yk8DedbZ0yHoXe-Rf(Z|3}L^Bx5GhoD(SM4RMFp@8MyTOc-_Mkho=7}rjut` zi4MuKXW5}L`{%BcXxHQL|BS|PrfJ&$Pb3`;FH=B@`#Ued{~?5(|LnnVCWogUWIB=z z|9Ehch5`oLqT~ZyuN5rX$7a#YtWJ2=ZsGL?cUrl+mOt0knV6hmr-SzSTQX!!nz7@u7t{b z`PE5hu_TQK2{|e3Q@z|u}B1KAL?3>1Vuh(+mYSc0CH( zW(7efF12%BPzQM&t(#JgTq6H8i96Z1(b>_4->=waM9I?3e*@0QmYc>4jes?@!7}Qr zB&04r=LAQI*P1z z!HIsM9IBVkGVTiD3OG_np)b7aWSaulR=x}V<@z>Q*PF1p6`wPu+cW82(F%who^D(k*`cqc(k&Q zPqntN)&5sOY5-FaLTx(?F*BKn`cmK;*|g}PMdm>=3JO%x4I=m(iIopzKeJ9?DjLihY?AUFoCbb{0*_F-dZO8MNk7okC-A zbS2HAB#S0qsA<1)_3+R5&Vi$MjB3^T9;azBx8W`KiXAp10GK*DN& z_|$wf@t{uy$YrEytrr&EO^XD)urkLzXJgQ~*N5L9=PtGkp!5tiwwRV#UvbY=Q1sUG z>J&9UKb2zQn4gD^!+V|f;cApL%k}F>y{Z?mU1!|AjNh2&0Ocw=WDWP;>*ZR{f6h0& z{3Z6soSeCm@~|QKh$4vs0|`>@vqaEa4wCfkiecz^d$%igYWHcSiHn@;fc@sW8#cKD zN1OOL7J=PHUxJvJ>V#$7_l{|r7L0Fm5}d3=x#mOGfCSvhv807I{Qc{lY^Zf&h(vyEQCZ!C#k=7 zQ8)g>uF|d5@BoO%Ub!mn?!-OCNcA`2%M;96DZFu8t45biBuPiY+*~uSamZP;vlsWA z(@;%W!*NY`d!)J)62XpuVz}1?b(|N+*!t@4nxGGo>B`y9SMFnC-_DcRnFVslSsC%< z9V#SWr3)Jt*D!Q?P@Bb|{yu~^&rd&j9|!HONkxAranf@4WIg-j5u=M>qhq-*dR2l= zibR3%QLKZU(UVZYL}}6aQOuWmb_qLJS&=>2tG&TTcGX8FXT@prqZo_7(NiT~DCmXR zaz^F2v+*-lqHrirPkBRSJ9m!!j#wxl!$i?iQ|D|F#oO>6OT{AS3y$?*$|(^Bv(FUu zyP&aVB`7G|Gofl+vT{SS{EmSVX-48pm=~S28PsjO) zo0+Uz?tN=>fVYB3GxloAw((t?60hXq;E;n9(%ce!zEYt!F+&B*KI^luhzsr*@BpE| zdvn!nJqnrMSS7Ur!~p6Wm`fl~tz8h9ZD_2jq7$A2W|u+q;ap_;=-Ptt$-LZ=h&jcc zHLGl^*1#@7j|wDIPed-WOeG_10i6Z5!0j8*gRHIt`#RQ8p4f8gQ%MBno-miMS7NW4 zQp{fnOcCgC$4K#Lkxx8d5(hh+xkWkPl-3#%mXSp zX~?MV=t5VpkNP_auM7ORe#7$%h}}bS!3DbR640uX&;E)^`-6|qRlkI7Z^w5LZ(Ca8 zMN!Y|NG$f#ou&Aj`%8VKq4p~Jk-A=N{$v~bOFsP>Q$=YXBppq9)KuE#mSR<@FilI5 zdLKu=kHtHXPPA)-<&h1;ryN?sWq5Gh-5XJFFUDaVuFc4&3tq12!@gzHPi9l9OkC~^ zn4m^RO?}oeg`Uz+)ahc%S<;uK9I;AU_x>;DzO${VZd*HuGzC!+>CFNvN=J|`h$tQD zQk5dTNK+sX1VKcKN-qM^yY!wQRp~wS&|BybNVF>Rv0Z%efE_Me&b0o3$hTa*3`eh{AQVL z6uTurZvKs48lr2_Aj_$O;_(r``57~-vGQvc1N*y*Yk25&xuiGkTRZu4-jn>MJy$Io6fBc~tseN0Yg< zV>yVpU+hiO9zJiDKx&k_H=h14tjT4fPTyY`yiXh}pTR)x5Idw0ZZ(zT@$KLDocxkc5lpJv#2 zuD3FWrFb*4RHL`fCN)SZh1ssHKI-L2AU~_DmiE%xfe!CX=m@BipD!9RX0iVl9Qeub zJJD4&#zOaOPSU=a@#|-GJ&$|NMfq>U(?GUrFnZCGoP&Pqy4WyHP($Ww0O_wQm3+poDvZ=dyHlEj2#5O3I@%G#3*h+o9$vnc+77{k;i*zvd zS<$qr?2viXHQL~txH?|Xn)Ab-qep2vVlJ>Q#f-#@kw@m8yctPID}r~8%eBpBm3MZ2 zufN*sK2Vl4(HtGU(vD~UATiFXWtzeDnEd$Zn5ES}^H7W7KW_r>57hPLawsdKFcT+a zTLS4j2eZxbHpy)tbyi4lO%C_C-#A@e5*e6J@Ws~@3>n}KZ-+yv(Sryx6U5jVzED|% zeLzFhBkL_DNlP=t^quR7Ya!m9X3%Tv2{`!%KrusL6{*^eV3l4RIvImMgQV~pzug;! zP@k`GH=a?yI&%JEiDD5@b-e8-5uD<4Zs##kc5bBDzv+m!u%*C+2&2UksU(li&(^0# zB!I>u1n1x6_=V+q>zn8wA<;+*n06l`Qm+pc`9tu*&Uj>k!LM6vs2q=W{-ef#+A9{N zw!?3&D#gNIMu0cFT~Oy)Tt)BMIjQ*gP;d!Yt=h7>vlu!2HCO<7_#aJ2^x>v;^zP^O zVf4p|I;fcca%9FKTXdt91@tt*_l zK*D59*tHZet%&J*uba>nbx2cs;r&)j7=yj6Nk$=ILIZh*?-q|tmaquH#m5Tvg6y z?sd1Al`dJmI_Zq*7wIX$gF}Mei_aQ^sZk9kIWjWdj)}j7c1r7H&QdXk3PU1-Y5xAV zb1wX4I1b-zYwQ%<6;1Z{QnMoT#HY3&O7~w|HZ5+|fu0E`8Y^v7Lhtg;^>%U$(113H z*57&OB3L`~@v_F8W>hGM0eqr!9h4|Od16TehP`m_&W)ehkI7YhXAlB37iMAk!1_J| zASE06a{2z7NI{5Hq2?lT7IF!u5#;oCpQ;4I8Lm zJk({l1^`dBSJf5eviI!i&W?$4-!uEvWlubwub0(RI-D3QHX6R1uMmHx#98_g{uxQc z_IK0y!DB$UUcY`_=oHBJB7Ap`98+sOr%2yKqRAX3_|I^DX7?WRW#yj>A;IGcj?0uq z+kfys(WXrLQx2j_DQ>7IqS@x%3?}Ypn5;Z~Q`24!_>(7U;Npe6XKInIgwR}D!G%bE z2FbG&nGQdQ!OR0Pj3N1&_G^ct*`}eNn41fCiUd=F$D-9`qs583iSwrgqw(qr&dNEd zNtjanWwcKXVN|MVg<4lQ2+D-{{UID0EpZtGjsq20S%h|@&(YI%XWUMQ zmuwR)QTn5FS9Y5Aij9t*-aG*40;U&!Z*)=h%lGAn7Ln4P_wL^>v;ujmxs{cWn<3@> zxF1M?W3Qr}YS*K5WR~==H+}5j%Bq)OqF=@A>&qlyl>j(Fd-5I-Q`mCtoB_yPZS(vl zH!RF{ro_%cJlPC`Wm2|CAifCnw#{T!(ctCWx>+g#u~V=#u#F6j93Ph+dfEkzi}iPC zN&H`qsQr-uZucc{9XZ5X7Tn}#F(YWiwImrL=enORwL zfwVH3pjmo_?dyKPKGxgWyoK^pz{RFxWnS$oxwr@b2BIA(EXKY|KN zP$czHO=lGsK~KL>1^~}G?jnAta}?c4C0h(-0I`{Fn<%pd(bUo+0eVsS@+~y!ziBa= zDzNP`6V=Xc?*TqShc!bp=Yx-gf1{zzF9J#p6F98NR6K- zoU_#a@SY#$TMB1tG|**m2{N;neHlUJpZMX=uS=i8LmwNz;>fI={CL178TH)^CPv(2 zemW)n@;T*l9^CRN^eEt$(9hNkxCBP&_ES9YqPb7 zGYZNB^#F=fT3AbVRgiYe=89o5;-0 zo-gso^TzU-*eO$jl>O>tdBITCps>|gsz>XvN}7A*7Ql%ay`GGqX6yiatQuxL9Ym!; z*x`VA{S&9<2i(9kHr)phI|`xYi39@oix1CYhRR)%^OZEXSHQvB}0 zP$$nkcC#hc>+C%UKwEl>du_1-@*K_}SdVoJXy1M? z@`l6jIDK&EE}+Z+%m&X?)W~KHpd;|cg)c*32|zE2pKk%98$lGB63i^?=lcWJC%Xe4!l^>>^5L29=mzxK7TbATZmk za0fZtR~hS?lruSV>9^fQ5))i~6xM@^%>?~C-;b#g$dsUOYo*hqtPw8dE?579o55kc z^Yei81Cg1PcwK&akGPTI+?eM5>Tt`oBg6eYYEw|pO zs1+O_H1X-{PFWFqvpkjXerr2fcr`M(IPyHCRcs~@nvfHX<~dpmyYxIf%D+q)(zNhi zKh&?2dHNkbm0nh=GR%e+!sv_gyv=POzKW<_1^p>(w>%N(X`&q5V%OkkT-nlX+p9Hb z4xKgf+r(l^u!1Xt1QLqpldtxq`C4boX?;jwmMqg)u)+30APWm8@zUFl9TvZa7;^h5 z8kUm;rXiden3HE4URNN;^Y8iXI0uz)GyVEn=c@D<32DGlLzIU6pYEkQ!ae+^D-;r` zc)CljKX_>la+>fxfD@np^Y!MSnm{?6o*sLH{M83G>6d~NT~&_s9dg#RkX_F zYtdY0p$mT?d8m^gxz6murO_NUnjaH8m=pOG{H-#dZBp*K-a!0XMQ-~2Y4*w0KgK?5 zG5Qq@KYaLR`Jbql&Eg{~lnAG9GC;QV)8T@0*R47Yj*8PYp2fw*JAYxq9RBr7_T-m_ zEjfrTZAA+ui9p=#0FS}WWc!TozFJ-fVT#Y>7l``-Zk{Fq>edc@_+7QFX`^f@Nc3`w z_?5feVh{mpQtfQj0SG7PDExM`&@jtS)kCs(D5F4baB;6ZTV;mjKcF z*dAwKE!vbUXX$BJjqdZM>+*7#{(=vQ99FKcjSKx?17SJ!Z+gr<<%8HUc;?E?>#W8x`o*o*N%0dheBffAnMPa{SsZ$(bUvD z18+i}QNRGI&abTE+qZ8~pijaj$YhlxIxadosAkVcZX`ZD8?@NEjr4OnOcIz0y5gnY zQT1Z`y`@%>p=MwLZ&^>Ad4gl4G@<4Nox0_GR^C;SGm$+UTZrUE7WV9w(~BKW7S+W% zmXR$aU!N>3m0BPq-#RuuS|f*;WZLy5KPvy-cr;^wT4q5pQE5vGdDk^O;=bISFxbs6 z84l99+ARJh)x0kbe+SwOWz$##N*xbtG?>zCrx%J0a-eWxLIK-Wia21B7ZOzW3)PT0 zfNu>I?d>9&&CtZas{%3MU@jH5`di8ut!pC z8dVAeFy~p^_qeUU^q{^!di`#PFYt-R;A5Phn4+3|`_xeN=xW|HUTOJ-nNE+tg5v{*X z^{g&LGFV-o^%Cp?ojN_rbNh4j$YkmKqV1PN{7lO|5&YWy8g#@OQpD+#bG=vF`NBA6 zg^u^9aw zk{NA(BuPBocRg6uGP|DaAjKYOtxZhqSlE?(I5GaT<<9oa(O5PgU(DB7Jz<7t>n(}j zgC>e}6pys!KY1ToT5;tu{n{ZdA=x>lt9#|w$iu7RP5s)T+AC+qVxtRn*My(Z>|T;Z-3kSUekkWUBG@009HsIcFyH=!NLNHW8z>5J8hPC7Mnfj#BhZj z9DEiJ^7I1)&aB@qTWjWaB?}-5DTP(zRS2e%MUK<5k_zgrJVvN3Zlqn!-&~)^#tsVI ziI0$saT23BV)o0%H~FewrA0o<=U_n5@LW)}+MU)kZZHfbz#BoOU-61}2uJDYM`i1t zWP8X=aZLhZYp+d@<1gQ2i7Fb{sSu}n8iP{R1Z&Pga^vmr=P$Qtt{e;ho@)IV|F)Bu zGDQ3>a^h;4dhLnMflpzd+O$ zDo{O@S=(hY-}G~1m`U-D6x{n;U5SuE51hRzGc$iGb5eD<*s?{OcN5}ZJSl8&Vz5?L zY5eOoQRh!)%opY&PI&#L5p>Z~_(DXMztM0o6d0%&ZF^DCMZi&25sv6UfqEE!J7}ii zYn}G#`DYhKbD`?)r{6d2$IlDhw6Z|9$!E`5Kec>ELf<}AnBW%P4V8@Y+4yxJ_~+h% zScc*2k0jn3tJb%%AC`MwzFH}E9>7c$xc=m17JeiBW}{2$>g0q*TeOC@fhgNj{wo4rBqzvuC+}}?Tl5wNrH{k3p68BdUT{Cy?^1ny;=*A~TG%9V{*wwT*{}A6 z-NJ7V7I)w2#c0UK-Z0{wavk~<7V5c7p~UR+`0{tj+#gF7Rl_4SRJ$F2cu-ZMhEK-- z@Qg5OeaIV{ozOsc)7B^HV+RQWhRFW zx2Em_BCGIF-Op2PA=tnL$)>wL->d;hIZ7!Utz!owwj+ z-ekpHrrLBZsgh(Cc~_YF73}ZBb3My9XGI}>Yre(H?Sh<`$TK4@keo(nc9S69QgMeY zDmC|wNn_}tK$(|1mf(UJ@TH4KD|kxh4&Mm6EKhlbnptEu zeW@$1Z|4XuBVgUlsPJ)@{=(d~Fx7vVvW9ojG`aCH2gpW>^<*I2!n5buBbA0crp>b% zxPo#6+BK|nMk&xgz;|&unTt-YC!IWa6=BVGSr*%h=R&?Du>Bt(j_`gm&JNK>U z3;mvllIyaPi&g5{LesdTw!+kpL2tr1(CD<=i4c{uKpigni()j@}B_* z9V1zn~(~4ut$|uQen!ZZ>0SsMV zy7=m;Q;xPfejIL=+Kt?EU+w?B+kWL4F+y_djAg68*6mHh(TtBWrstg$yG3`rAOzNn zJG!~q&6MYwDPm*3VT)pi2mq3?)w-=tKf1F88s?FzbBafy*=e_bKWlsp#zabGalNg| zCIB$vuKKX|Xxc*7b|bAtWVTBcc_LX!Iy=)88fC7w-~a3|cs}d)?U}N`_1FCi96fUN zxa+?KU?0wL-cz<^d*YOLil=~-meX*W{Isb<&Prn5CR&g1ZyN4zqnMdo>P#!oL7FmF z<)ac4?OHq9u`??S*Ixsxw3APMF1tj6Tnr=49=SWLtwAzAF7AD@wA$b=D}i#Q`0;+3 zN#P?C*qXk85CgWmTH5FExN}-4L&9r|8X`WCb#Zq0*@(p16%Jz${jIu_9}T@D;*X%) z&Ir6G2(H{Kz+sEGJ*mxT*D0K!yiLg~JH*qY&Cx==AX8w}XON zScrhbDyP|afTQBOd1leg?QwdA@T!%L;~9R_GFC|R$Zv}}r_HV9K)w=X`+zLmXlkw}j+J;A%@T3wBYn(~_Mp)Y`T~z-3@Yzbwn}l7y67a#Z zh1?#U!>@?m4LeYTeLCjt>VL$34!D=2|>96;4c9^K3f<&W}D#`A>7T89} zwf@Y%)XmL0QQ0EgCzT;W*R`mHUl-y}f$Y1Z~tbBb;4gc=gJHD3RZWArLdJ2!RzTepIIB zO!t3W|Cyp6e4>o0f9UYZZ^L@%kziK1L@$8VBaF` zAJmB@Z6Y;q_^{uXfqu#XNl~>jgglfFr>fROhPysoGK3IlPPoV9O~i^7mhcSSFVbY+ zY};5^yyPZVJq<5$z*G=_YAAoZO1E_;8tSC;QAhhu8xyq2lk7I$S`3y&d{Is?s)b#6 zM{tv{7Z2okoy#A}1$kBy_{c|z1#;Ox;0X5ye91Y;L8-}Z`$Y~FF@+-X;XsNq5=cp< zV@@k&nJ|iEHf6M@6a+3ZQ~f>38Pk^QJ2KGi;2gpHqN6(Ja0O3lf-1YPQ25;uteBZ> zcMY~Kw5kh^KN88C2>4YHBIhbWAIDC#2_7X76s=aiuuYlwon`^PU7Nv7s=b%gOoe!_ z(HD!S_BE=c%4dqhk^8U3-usUwO-^lJ@GMi7RZbsB#@{x~i%c>24ay)e~X1(CmxRDDt$!38V``KFU z)2zv1k5jdd>+}j7Dx&5e4bjGRG}*&r>`9wCg%8)fe$VG=ksE{72)jA5cq-6^PDyLm z79tn&@IgAdj%%Mw)zTD@k(`A~WfpR3Y8ZD*OP{H!iCQwt0rtjr7zwGSvGEsx&`2fG z11~_gt2+Z?+lUwn4qr_>>a$aTe`26$v?K_Dm>?^CwrV>-r#PYPDL2}u;mlbRzWu+EqYpb;mM(+r>AGkTY7R$D3UggF^I(a;hfH1 z&y4o7FAlJbtT$1Nd49J-4)7o0NIl`+a7LXMgIw$>hf5Y}A@2@QagiIBc5NE?&1|U+ zcM>%Xm34X1^`W|`-l*@t=Wllj+8Hw}mhkV#VCwTOUhjSxA<4t0eT~fJXQt>+^|;w5 z&#xukP!C;BVOz2HQkMvRRIfq}b# z@+n{23BCO_rKUIJBzry8{?TSf8`Qt*X_szTg**M}4aS9aWSj`k>Fm6m^enclpZ3KI zWS~#*@-H=luiQS6yloOt*v*lDpJ7RT4F!%_to~skIsNRhhAX&VE!<$aS+CooK3S~J zw}E6=P?}k_G5-4XYyZPW_^^%ix~bZb-(TS``#1bjaG;oCt93c>TYn)_1czjBy}kpp zfw3lFjBeW-PJ)AO9#6mKclCX(4(afKS`I{w6UBBG>IplQRrb9v78jdpRy&^B+S#h$aM50`&z&9K+#pu$*j(LR_Uhyk;m^|&}y+rcVZ}mYUm<_4?#WirCe7R*?3wM z_Ny#6wa8YVPP=#Xv^>!n#(!~Zj~oy4%N}FS49PUgX@`YHhPUB|-bmrGEws`!5ZNLV zw2>$AfT<5b*irD0$wSp@^RSK~I8yo^<-Bj{-Q-Nfyw*dUskc{_e!Jz*4|=S2GaW>P>SZG;|JX~h-RJOEIMr|K9m?TFprFi> zD#|YJ{yZRud^t8y=WcJ_+e{Vc+#xuLiZysvOvXjt?;?g@z_`u!G<69z#)YpQzP~!7 zDl9qU%^u~0+ZLD+MZBg34f(P zF}Lc(S*mhvd4t_?YTOmhU6H|7rU&(i3ftmiezY?{D_~JykEfFF@jW!wri%^?@1lk6K&6Lf91FX z46njB(uo1FM|^`Kn+%YC@M|N1EZJM%`!J4&*k%cx%wV#S@EmAJ;>UZBA!Im?w{lTX zkd=i6Ix8djb7&#A3jL}u_0`hiG_|$;^Yi8+PSikb^PD2v*MHhh@Q;bHfW|y`K+5d{ zn*X?NbNvlZtm)oZ#r$+hr|=x4&{%iNS2TB`UGI7fzof<64tbH^=hlDhT3~ZBnm^IC zPv(CflOHLnB8iLD8|WBa*p)+iEF?!b4hSfx#CZV;(=hrh0_h~rp4dm1MoX^Dj;bh5T1vnz?zxpLDC8*K6DE7c-XZ`%`ZoAvkkkB0GaOo?y8%(!<*ZSkCp1% zz13>?k<7sZ@ekABMSmjqp zT(*uCm_H4#wmxFw@gOl@VuCbNioBWE9eTG9EsPaB2YGGrQ_DbSqcz*^gV4UChF&ax z%YDSJpSW<71nSnqk0;iH+IDg;Eha!z9(%B9boVK+uooR}0uOvhI{T5aweDTdMVsgDT?mw21rirn!-s0+S_g$V(6-r_2mnY zE21==s;ce^JP);5M8qrj18P7FZSUemsIcE>SuIaPidvJeAV!>5WZKAFpkG1`ad&oS zB{F(#4+$hV`^*s46X70{|Gb}Od0&4cv__|wT;i1vL5TXn|s+{k;)N_8@;;AfNc7Ivc#B}(Q z+(XDIw0kwj(kqblWO0%?d&c66@7|^|y^Pzk>ZVE3Tc&uL;eN9qxz;2ph z6(WAR_E-N{@oWZB{e+&W)ri4Zw)S(EmXko1sRS+EMQ>-yXy$Ogihtym9Sh9if5ubP^)n+Q#?tIW zcw8smxhhe6Tkw8%=7k#s8S4Y0G1MuD7pL}*PfPg-X9!kf^XqedW`@H+D^{Ux)%1JR zX+Im}TSbZ_228Ym)TMh(iPYJYU72T1)GoJPT`J$pP2_UM9d5P*n)5RbWI$xsXzG90 z0R^9aM|khdumPHvs1$|OZ`E}{Uf+zLel@M8^j{8XivGKQb&h8Qm@lJ6)Fy?eh&o(~syKWV3g{{2s5q&Ge3A+_AeNZ%pY@#5#^29!5ZsgY~syw7GO zvLbTSlRxm`h*7`0)e`-l*d5`ynL*4w?!|YJ5~LH3P=CSPPc08jgoh^7gsT`Fm9z}6 zc;4PV2g%IJ>uT~aLcoQKrYr8P%(iZXDn}xcuo$*#GzvfyBPKE1ResQpO{^Cs5xd&(^?1zGw7B{FRr2As z?6TBr>tT$1mwu`0u{y0KCX6~ImR3x@n0!mm@VFX71~@I-XW0Uw+i{*o`Q7K;wS8XJ z+dh@ARw;;8nBMi$MzMxes>Z-sCcZLZ69+9d{OxhP!kw4X70m_6Rf>o%0}R_m9Zfxl zv^p|`QG=A$&BK){IA9kZAD<%hOgL2_Tn5BCUOgz_??~N5;VovftETbQMw@1pa1++~ zmxb8lB#f@@WPa(4Mri%LBU*wc@URE^5!ARPbkKW zx`fJ$^{sGe(24aMH>dl=k{hII@#Z+yB?{FND`uB@4FoteGs>w^ zhT}#m&9v<*Pq2VmcF|lf3gQvZ8f4)XMZ=6!qt)%NvWM@qzkkLs`+_vX{J)9?5rG0u{`mz0If_YH-v@~g)Lvp}}Q1+s=naoc!p{Yuz zRhS#7)ccMBD?mNgw4?EW<$$njm0%1u8e4`y@=Kjewsl{=yiA=y&s1N<~Z$?l5HFy?h$M-!?= z406l8UMJtvwk(G@%Vs($%Pk*wn{E`F_4fxMPS$-bOQoJIw@ixr26fhH9tq8FlH70;~gk}T!}B<>t}Cs-b{<4Y!uZU z9J4WH!zz^uwqq8-A%z6(LfE17{LjC|-Fxe9N6%#|6 z)_M?UVOV_bE8dgURGV7vAxyF5mUUW;v(FXShN2wSRpowJsi#lb)m7wL`Qy~4!#RG< zlksd0N_xTE8I64!-vljkbG4IHruSlqxlCG!DP6y*EcXrWRWBV!#s-UDYjcxzefFHx z$^k>PW?)U_GOq{J8t7RWW?r8&`H^1o6*Ie01s^L;k%8Rrm%+4gD)`t|lNzK!?dpwN zZ@Hnmt|cVT<#RZ&Nm_K<$`81#v))lVJSgd@vYWh)u7}g5dd+t*CdjT1i{j<_80|`k zx`G|co+%%d|9F)*pD#~*6{E@@5-#R1cz!UJjg%{Qr@=FpxOCn?|FcUjNb#Ch=2FTr z=gTDgHCL#@}?)pNOHRg<`NR#C#Eal3bUB8^kS+~-Y)HhqRr z>Rv6bDH)K_cTzueA0rEIFEQJ9ipE^sm>+c0?kj&Odu`Yl_FVkuPnP8TVo%Q}HdpT4 z<1LH!b|w$&{G4e;3<`rwTh|gOF(i%L@2VaB*tP2mu8`DuM+i9;ehcubTBCS<->Lo1 z!qYX0j4v#L*Tqzjr5Qi{0)5U2eUYoi@Kyn`uzj!Z-?7V%x_AQJftRtqL&?L*LPsf# zA)+d^h}TflBh-a(MJm~1KLm%@qs$AuZwB|xKGx294~gNCr1VIjE?g+d6F{BX<}qL7 z8-pY{vqBZtX-S;Wq`%b!#Dr%pS={N$dF(p83XAqG8{0+SWrB@4Ld#8S(r;vkj?-1n z)dwfBpX2Q=0WWSo*d(KgIzrb^Vqw+ch8VJD&ZrTxfkLf-aac5pps{(Hr+i|3Ut5SI zU=mB9jQ;BR&{njXJ3# zk7rco=Jyb!5B*;!ICPhPx!xox*z95+b#6_Wnu7dxTG6g9mD$ zDs!m)Asa8=y3G*}9IGWUk`Lx$oT9Z5y^vD1j^c66U#~VFJ}4hF*?IWDZ8P`-jlC5T z0cPw^C)alWll)|_gZ3-APgpZt%Y?Foy}v<0C^qh-;GZ?Y)1pKhlxu59u5+icI&N2O zIyEp9+R3e$!J0&CCP1)W_ z!o5U8K(zEw(C4SMK2d!%a1txm76}=>FOI(dNqyC*S_?x#`Pl!iu)xdmTriP(?gIO+ z)Q1*FFUv_9nCg+%9*!s9bN$gW$OFkoQwIST==ysh4BTmS*wMZx)~oiXOi^y7-J>w~ z8y9;UXa)!yTL`gh4xhg7rm(1EVYPVu?A$_1!7FtKI7B?<^fm@n_<)!6g_J!R??w8a zgtCzL8k_-Yw8CJ*3XmWQev3I$r10AyBn8Cff78 zgsRTesr|wq34+r)MVLZW@uc8+$?DcI1*b~?aqRDT7rQ33=1va1`X*`(>tZBpz&cvB zk_q=Pnj0hZpdUP&ByAesigH3zgtZu(PVUwh8dUS(u+Cmv!GnbCo_I31Y^a{FfWHez~|mdB*}P>Wn-mNJhU4`li2k3^yVOKHicgy&-Y7uf3sgk*TJVfd$1WV zBzPYY<{xXcTAA=s->F{`9jTC90Ymv1N*i8qFk@!yVTdwgy@%oTXe+l#L`jYidT2M& zEf2(}FRhos9Z0#O8N1OsNMEXvoyr@%Z4*BN=dwBMScj~;zscY%Era3hQ!_=!lU_M~ zmo-lmv}@MF?43E?^x818QGfI2*;}8Fk;O#Wz5XX(te2W=xTH<>?^=L0#kRaHm=hZ5 zm2dAyBDcS2&ngYp9jR1ETmG6{uAYzmXF=dew)^9WA1_Dz#n+PF$eq^MdzNS(SVfSm zXlU=aA~#Gug}FvWvezpRU_Sf!+5v*qsy>Blac6Rdk95EBJeTCxHQ8oueH@dqg zX%bPj$!~nnGkHnp=yk2C8|O8edN)m9|B)v{#rTA9YvE?bZ&18`o^yySl-_YDH5d_Z z7gouxAdN_o0%J=`ND>n(x*ltU7{6*g<*cgdQu^v}$RejrJ4GNRN!L*{L0l z*Ij&-V#2Rx-tx<+S!&?)RAQXuE^h@O$zrp|3DdrHB$V?}+?z=KzR;UHdIXk3(k_Ez zqkJSZgFAi_^`SzVWD-@uRGwMoFLuy#zQ8PocHwtLvIN7^EcbSB6uwE8-v`Xw@FApG zHHOq`W?~Kbv_K+=Ig)O{Z`{PcCn4Kf$AqZ6hHFWMv;2u@+rnNv=2$eNj+`B){q2Ot zwWy<{4g#rf2p`<*Qz#QE)_n{rujJ2Zvfb?NAu+I83;BGZrGrL0Pr@Sq?7pJb?q93M zpe08S-)vsxc9LMo+|2Vh>T?;czWU7Ukf!Eclfav*KX9s}IOyx%=Bu=@vI*eY>783E zXexXY-e%kS-s*>WlXpZ?A5pGd-?2<C-+9{%^Uy}r{lWg$&`jKLmC9>!{O<~Z_+LJ06+VB2BL%N@&dz!$qPE=f z4@f=y%UKp448OBi21Y1CoPD|QqHcm2ur@9Ut~QKET@-otPE9aUa>?1@w`O}zfvvF< zdNQ1XM@4o_V!8O(b3tBDiTAQ~IYL6*W9ws}pUKt)kIQS>sfSSDfCQb6xsNobbU57{tSsP;sQ)1TM2`v)>WFe)ZB3 z(SznJ^m6rlbv>-E$Sl?NhcAtMuYmurj6%&ySNd0Irq3$k2NuaX6#L({&cVMd?c zzSydO1p@cMvxM%?YQ$QVpNFcbq42BVZ?A4gy*d~Cl1P{^b6jvWGFw`iju?s1EGa0X zeqD`GP|Sv}L(3DN|L)FOFXq_7K9K?HmFpIz)0?!~A`XX1i=+sXjQI~7s!Dp)PJQz0 zRepEs?p5fnQJ%B%Buo6LYKa~`d?jFfuo-K}0~6?2ZC#`!a3}s+*Ad%F6u6fq{DDah zXjv6WF`&M!VN2G9l+3Ag=O>j6$vHL0A-{ekjUIAaNR_!Dt64Hixv>Nx!y=|wPZX_? zDzjjFn$dDB(B77*!Ce^C-}}bs^OOPYuPTbS&x1!`5}pE2IwCH=TYq^@p0t{jGbqZX zHTi|fG_?rNU=|2F@Z~!}bns=4a9Eg?@1X) zRZ%=E5U=h4=0Wy*%2c;}>6#+vo*S34w?_)_8|4A7sXRF>z1T;&ucI;g@lk}}XSsi+ zeZVN?-T z-G<_Gn>xxH?{(w4zhjq!XQ)RZF{Q~7YJWc;zEGgjCLZmi^g-QLazx(rr#$wfJyGpMGwqqa_7{cQiB zTn5s)apO84cDah@pvQt<`C=NYTlV)yr5}mqDyLSlxQ&g5IiXd!kSsdx+3Y zUd;hTk>S1(E2tZe0VO%QRa({#yH)};CY2rh?-#|{!+3kAHT|Orv@20nl5z(P-D|=e1{YCEhby3k<&ANy>VJ(SQe}d|0+@{B%+1a$O z2?vU7pF+&htrY4BT66i%P)MvOY0-35Q0zE_a>-5IVr$(RDPy%z1#g--wDfpf^w%p& z^$B^I$2?t32TBdvG)Z2xoKv{KZ+ek#Z0)c02Q9Phqd+Z=?Z%W3XA$2h=7shW4G#CEHWF-}x zI_Mcw`#f6_Je^6aZeK$}b5^&;MHj(UqHE!*dSdKu@*7vi*f(;Q#l82rs-%^i1<0qSpIXV|A`xG5Wz{Yki=_I&#K z$fDb*c<%Notw80py5mugZ{%J3;}Dlo+87s6^Ok>Co{{Xt1^irRcvFoD^a#-j?X3GH z19{mYCDdV=0%=;ipXSmp7WsS8S(@iyv&yPk+8!$I2#Mz)Ouf5YxD8afqAywBFO|NILD_#qsRzvArA9(gXPlXXgb zo1W%nJ+Sh`=U+;9|9H^@Z!U48puIuOpGlt}6kzw0trtt^Rq#(R5FM$;H6S(S~=xomQee!!4mVl_ke#wZ2}><{+(oAX?JW27lH14cmY04?sZF;`N&YV_uJ^ds^wwUVZ3 z9x0y{hl@<=FJwuYI#Mw}B~Pso;>_R?!X?3e=NaVt5XA9#BjiB~6^{i2#!eKmX&vOD zES!8mmLBmt_gsvHCbmEy4b54{$?9UCT%!3Wf6$z;u3G+}h4QVD>@^*A#bWP?{WJFs z>|tvCm{ti3;pA`-Bhqy5uzu%!s>76?KCI;U%lh=pM)7wt-NCFZlVrSTFQ%$+0?x;w z`9ey#2CILqMbjsWUb&S7ZIglSW<5w&f5ru}K7f#25N1H1g2+ zK2Sdl$Ru+|<&FC9$Q+k`+N$2EhFW}^tCq*9f+JDgb`Q&8aO6-=FcMW5=V#jFXFX6D zpvgHji%UBzW_)~^LA3rNtX6fjtq(-QOUHWJZ?T}^1!LRBvb67h$EG~M&ZVto`=y!1 z>YlD|RQZY9)a7k^;@pg6Sw*IYz0QJ;9G4QE*6XJUQ=_yLYSjllN7M6-?;IQXWmzzr zxz3wr*8%LnRg(M#>8RgHBA2O|_h#Tr=#ZCWu*;bL3k0K(<)+&a-c=N(S<7Ib3+c!!{(Aie}*c z3DsIDYuCHcKac#F$Lq_}BNKG(rI}qkqAJbc*2bQ;w6`i&KP)JDT8vB-DXVc-W2Pgx zSPxT&`GcvMUbnWlzXqVdnzigC2PDA1X}Aoji9Hwm(B1xB_9h<>k5VWVefOtmTluXGnbL{P9@bq|`_M(j^8I=L3*>Ph~RcbqqZ%O!?C#{Y7kM{L2(w zTjd0i+2gU=^XGYQ>0)DJ+b;@mUHH^FR8WEVmd$PjqK_bZQFA5aLeL301VCT+nH;TU zP8R6^+b1>Xsd%=obD2z*qCWsyIzQe8^qq+r)wOy$4It6~oo<`MAzbFH^3mQ8`i2-f7uuAF>*y7JKV7>6ouN6fqooGf;X076kv>VuQH{WRVP zE1b%1+u920NqVwyz(n)Z@LF+g1Jm2cIL^A~RLm*=#oSx?MHO{z!)Hk8R2nP<0SQ5d z4pBlR1OcTH6e$O!V;GQ@QUU3fZt0pKB$V!E=oE(TnfZ?Q^WNY0`~~mtn;#SVoE?XA z*4nZ5TG!RxTA!MHdu{Smd3=$dBRX5R2orhIm((WlHK6Sq{R*d0>!WyRd)vUr{ly6H zh+rzpl{8-E7j$1PTsDricPJ&K4>dA|1D!{}t&f=$IJb6U&}t2GMx?G8|H89@Zj79l zKm0K6=@Z6`m2%d@-wtp(C980WnYTGAQL`(*^sEe`J_Zh0WnRt9AC)WFh1y#r6*|-@@MgCz$M|cw7JG92G!|&VP~P zDqdnL)Ipnkws1!o17Ui}*CX#r4(x5`av&cjzMK8`gl2tQ>46N)TSA{zHvJM3K;Tkb z*Y;kLFdA6+iQYyY=$Ux}fLV!T{#}OM$*{Q2#X0Gs*wbcvfLtq;M^C8QBwMhO~31w6(+qx5qeWfJ>Puj@s*-bpE@x#m)$Q(8#fR)GTz zphj2?ng`%z3L&8$~skl@lC(aqm{9(L?H8*-ynwMyb$+EP1hM z7kmF@>4$rV!Oz)$iQf9=(kym~oE7zw%BZSkFLUT|AZ)t&E+ZCcV1 zOOU7>-(SI5roa$f;S!&`z0FqL=e$i>-!y6K@AtevM2#Y&U4%Q~`;0fPA1UnnW6wAi zJUAxDhSA8qxi+#h z9TYz3FfxFAiu`VJt0>ZN^f%1O-Tk;^8|-u9_ur1!8X0_Nc`J@KbS?0pm2dLq5id53)HnG^ znK+HInzZAZZ)Vsa0Db?)VfTL#%UV|WhD%Re!EnyxVPsz=yqXxnuRq5nmk!pU`J)CJ z5~HZ(^>lF4we#Hl>gD}!)8d`EJKXQ_BP2ejCe%7yT5Ygz1O7M0h~#}v0v=*(g9R0` z@4evVHwhxfXliF6z$gDcI)dv>Y>J3uAIxZZ@CD&z^o`|disik{_{PC^+hj)#<@~;C z-hU*7R$01`Aqep2hDRT4Z;VHNVPT$KEb6l#Pc}dzR;4)#7P%}xW1|vk*28jPi{clqo3=y{ zpskjx!1G?{3}{L``{4u{J7&m%fAR)Roz=ci!b7RrV%MgpGVvP@Wth;060m5{(Gl}X zJQyH)xIL3-_VXCxP1tYD^H6l5m?TBd%>C{QgVHS{;>c|>-3NK&mGGRVy z6nwQkU}w+kd_b(}o2Gs`eT>T|>Y(Y;7*qB;K%fE)9mg`6U+d zID3+0vKi0pIhF)juZoe0^n`7+De&%>I%Ho1L*fi`a$6n?|{!*s;VniQg8FKK& zHJ^E=maA=iu4^y{E}Ft86Oc8+{eJE)Yfv7={!(&JVU8N1U~hFF%lk~LSUq>F`Q*EW zY6ltsNht$Jd^ATq4Q5X1X`x^w1*+c9aC(36osA2b@9#+yjbfiPyOKduXLwa*RedCwPw2%>0AwZIz4)W9>48Ww zZa&WkkN$h$nq2aMXLX>*GxV(UHxdM*i@wV++5|V5h|EdX+-Gq-C+>KkFlg8SAqDUk zUFO+FdBMn2>7Sa*^C$tT1`E`L2P8LMv{;*L` zRYCOZ2eHtI#{sHT8f-Romtp5Ry=9@Qge6Ije#uT$sSx$wgys?_F>xr`8xzV%T0^D8 z?II@Yu5}%=rFwKpI297{N_}>hpAR?tc|ga-7Pb*g*Db9VdgX(0p5(9mZWGgqwr{%9 zKYm`WO*?}LZhRVMwBafls2vR5D8vUovV(KyaC!Ja4%U?fD zHdpZOdi=QQ1rs2bzVTR%8ad`cpW&TLog}X4&WAQvM zjR|d>D|;Gmq5N8n%uxJTZVT(AP;`((w=tGOhkPav(b6@;2AP}=0_*wDN<=6Da}tq2mgE-t$}3S zW?QmyB5QCDC8iBO37cO@NlRU&l)qEs-R`G9iKqhU+=~HKd-lk0!y{mk!CVb?LpS>{ zWipKl^W70;UKS5JohYz4qv>z_ynKo`eLRXQ8v#0tJodcN@G^? z3sL*_*#s6-^ZaUW>{+kZI-5`RTE>767%P@2gNyDke6yV^fr^=+Y_KhcPUTwmy!tDp zA8dpFW{D(A;(1~*()vc`5j;^G+aAy@^D1!4jHBbneXjT0)PFnAQ;TrIx<(CV=T#?d zx|rp3Aw*c+y^3z>#Av7Jf$@)rE?>!S>bPrlLPH@)>935#0%gSKVK_o|RBLr*YZX|3&VkG0!epo5zWf4MnHc=}Ml)^EBa#%BLyz}`k+lkz74?!N98{{e8AM2o zJx|710B#@)5Ziba3Nre%bcof>0}E`<{SnM;8slen1R@MYEY7J_VJBi=bKvE#2CiEG zgHkuLzDj=o*1o{}F97hzPp=*CPCs?bASfowWTY=giMNw!m+lG4J2i?pc`zA!br4I8 ztg+8ZZfVF|tw{et#h9k~B#YSmAuaV~@|Bk#+en;cg$qg2upwq6-~HB74PSrNS*e_^ z-eBGyjWSp7yk#ueaI)MqG3iGE)zQ(R)FVlF_TVv*2vsTcSu~?LjM7~8T#8X~i-_nk zS2=Ww;6cn&Vv{g*{!=z4CAdQ<9-3$d2><0|Hs=>)x^It1Jt_zdKv!zBW&{jlIP`r z4R!x>pZHxnkQdgoCdXwLs=h);P`LEs*AGX&U{AqM>V8vTFRjcq5Z_23@w?AQJ(@7MKgGqsU-*I4!v?4x5R>Wt7(nh0p8_v}28gdVby)bNlkwX;)*&rK zbbtL;p#}|eY>Ac-%r4WhRqg7rtReP))on=DVA1Hsub?Iy#!! zvAtby%NPIc@^+)#!hR~#npBaRfWKTiZrqj1o6Z}qxND;q`?`=ALS&jb^g~;ELze}h&;o1%c zP~$Iq8J9ueHs1+55L*RzGHRt!%;nO4YpDjQumPK^VUg{}To)$EtM0pS3r(=vG8^}* zwqQ*2)4zD|=Y&1PZPy%pSYAx`j) z`!{a&h}Hm7LZHE|{-md#dbQ7Dzw7E`> zRK4es#C;KgWceQVtEcefWncyKPbid&G*cZV_$frK1r=GE z1azDH5pxdlngkKW2YLuKb?IugVBd^o zmKbO>4~-4UY9g(S4A^8rL9j}`yOK8q?&X6^l>?*7|UAx%*7{=w=+v6 zy7V974idX-H|y2YS0mE>c*E#?FZ*rXMWMgybNjm*W-@1J@s&p@!k_mr@q9~lyI)h^ zXYI6;a><868t*Ybqy#cyDZT#w^9u9NGAu^Ommz+j$gEx{bqSn|cU|@5Y#CYBxw%Ls zy*DbiN=uTWolc)Wzwzx}l~VeR>pkL}Hh#VL(Tkmu%iDANW^${--|mSiq;q~eE)lV^ z?^9VzM!y-PbalPin-`&x4EplFn990ByT?~~U%(LUBlt^H@N>fM;`G_Z+A88;%ih~-1Ob@LBBZ%( zlDFZMdyD8kR|rhD`<^o%@?3gsS^uwQ*-JS(Qn{v|@{T%LCs&fh%y8=z3^vG%U2wE{ z^&Nxey?1aS;#cKsK&}Jd5hq>{t9@KL$kKcKuT;vJfwPInwj!|;nFhq_9A5Seg!$*v zFNBGkNuBNnd|LKgomN<%*Ql@_QMTM3mRC7p!(;eZ=rwOXL`$8PdUWzjq=oc1UoL>9 zZrqEw^*d0FV6aASCO6b(m@%ZX?cl8Tff+Z2-?A(1##y@i3sH9Yx(VL<9}wOzU5d}o zk~ONf2ImgAm`?cK*KN(n$~U@P!K*&Z(<`K*Pk+*R!KFF%{#{FHb1@tB>RPNF;lx!9 zw|*}t>~5^pv;TBU&&ryMlgs{Uf1v)Csoa)S{I3SlyJ+ZL77I0CS{yb)Qo^Qu=Xo@0 z^n~m08D{1v>V?-7TW4G<4Nx$Xxb~9P+xqV6y&9+5TUe&1@d>NL?Rdz>svnT-TF@=f2NrIu!-lG*HarX^C>)zZ<_ z4%bDPd7K@WQ}*jN#>eBT1RJU!eMk{SnsVY5V~q3)Xs(MGyV%)LCe0T9k^1?jJPF3M zNjThrcEvn-OTo}v>iuKn;@u$?@Xh-)*dAW_T_FKBWqq{jWZ;3{H8Z`ffyb?K2M_+1 z%N9yM!+icLZD;@R%-5uzOw947<9^3H>f_qmck_j9K&4U~7|*6ritybjq4*jJ`j86` zZVgI?=DSzkYjVmLMvr@vH{H{YF7g+|HX&A@&%E>~A}8#n)>~s+cvQbOaK8l{cgrpd zrhJs5i&n$Jy`Xk&-o{|iP7D_(?0Kpbhr{$s99^A8a%qB;tJFPt8PhHIvPtA%I+*Ik zyxpeA)l7|YYTxZ_U*@rx-D`x4Fux_S0(k`Y9E|>Anr{bNxLQLKhEvEq=Tz+mK$O1MUNY#Djg)uKo9a?WgY_xcD4)sDwt1gKI3iU%$kkymYZw z@#y<}_t5%rWXC(%ijp6leMYX3Q4R!unap8bg$3+3z0^zOfa=B|8{5gfr8sNOc(1FD zlOSAhbC@tHzC>uU97>0Ol@eZW_H=;@v;LTHu*y=XMSBF-fkWPW^D1S#h=QlW4nI`l z6|%FB+T0?ItwJ2`<8uU9b}p}OICvS8Fe_LEM{YTx6Z>6%^ZTw$h=G2Yu|E#A9!*SLb~G09 zyp&CrNup`E$mXdc2RIsLSz)*VziMZY?l|^u^AA%l{D@H_I2yJcF0Bu*$_n{Xvzu;? zQQi{gp<6R*gCUY}&PO(XB}x|8H%3&?c3|*(DfV#0y%^y|E6cITno0|Cp!kr{V%>ds zwc=2^?EC8(GkeWDos!AEeUEB-XiW56?In05UB*_Pb;b*)J%NsLdSu;)P>6?Ev%nfpiBCpysQ= zJ03fYRx(a^Inzz$r=fC*l;kw9M{?)w@BbYWMeYRXt#(;@c+Q=o>dFM}uFlWt>lc1kMmyD+@p#XlhP!RKPmHll8oq$%y3=p%03x(e??{O=n~2mV~< z8dzo?Ild^quWTk^(57`ZoA<-$oM5cfq#px%6L)6C?2DnBNQF z95AxIEN}UES8HKTl%k^P%7YnDp8ZI8VK!^tB|Ahs4LbQ%bv8-3CeK>+9?FOxIUAiuU{URM6;j zTP)rh)4!a>cPj6P2dve`*y6@5e-oS~CZ?8m~!)931*Kd$gvotX=jV$`ba5 ztf#!-tX+Nk)spwVB&;&m&^hCfTmh4(l_+Estk9e;N4!og>nMn+N?0OBJvQ*(e_Prx zO+U76)Zeu>&>30;V{Km>V5M=aC@!IuB$X-y>=O*kkv@mnwTY;C;j)FKzo=CoN?$j> zJsb`A**8s|>1?j^*Ek}0>(9OPvbWrjF7qS#$Zvj@p{gbV#hOpHmhM%L=BBLwoqAv- z=+)ePVdUN4mN9>@s@S}$^w{#sZ`C*Yrcl{={qMgTWDP%m{!HSE;!8Mg;u8G6u8`HyKeUvMi6bPVr%qm5E(w12H3tH~#taq`FO(#js)X(W zo3ABbVds>Owr40BPq2c8f6ogk4&>p_dU}R3KZu&1$_?{f;?u7?1Lq!Mw=VtP;wk!n zBTijhr~JtrDxLC_fhx1&_sHJr5tAjiVHlLd`Z&{f3bXy*friv&%_tX z;O$s#A;43f<)J&ycYJ8N79UTorUov5>xWqH3@!%r)f`9E??2n!5>iTxS;(N(+j=j8 z*73YW{lSY28s)*ZGv_*a)o#L!bL1m0obPPa5XzLp*YPb6j(u17xnGY&njT+}es@vA zIHhMdH&V;PhfU%x?&RiWWo$803vA|Yv8%2IG1r^Z)}T&^n}W}>v^;Jc6(wPUv)z9H}Rl8x3{ZS4vB@Wg%8lE}<1) zW{%=caxs8c4#DY*L_RRpSAX(^NL)*UiWB#g&c*km1RMSB-F1Yj>NWNQT}y}p-%0CQ zL8o~S^bKu^))sm3d;HSVvXFAo42Wr$fjMkmxXCN#Dwh-lFaCJ8Lb|fLYT>ea11P&z zgg;+TSAUkuEN>oSvzj`{kZ$s8H1mMGF6@ZQs?F5GYSvx=lH4brA@iNy- zWEzB&l;WXB5oh#%U)&X{cJVb1joOAUs3+J=pG*fyF?vg8m&LOIy!fzgVK{Quxg|BQ z$@X6R8zYj8*ZBRmzqKwcs2^LE``1`%x%gp0v-nB{RYL9NMjGH&QCX7qg^$UA5#6NV zYq={&yHB2tGMXY@LD!e(_bo*Zn~8vfLqt`k{NvrJPi4Wt20-Kk!s1<5KN9tqA)rsO7#?MC1>me-*pxpD2p$-#A8m8ZHc|?XGcEt^2AcvEi=S) zC|Mfg&O`iXf;u}{`^u+@F>Q}4@Ihm?yY6eJ6UP%dYC6+25_Oy0KucW(S0ar{+_0~L z+PqCl#MJG3p44YgCQyzCPvcL&r(C>_xga%|BQ99EwhQN@9zfj6MLrCs;pE_U@PZOZ zrL*0PW4Cc*d*PgMgsxa3A_46*TZhq>mv&|g-}7L>F>>VpT5^v(LF`o$f_W9&zR5bK z3fABsVdjM*)5c7XaqBDHc$=c)!nT4bx>nBJ-L-ALqQYL-^Nd+dD{RuVA!9nsc+*JN zh`-5K{d7)LiZz)_gPNoX0)#V#m!ND4-OGJ`ho%h;Y0T4R<%mqHM{o)Ej2+K-w#bf8 z^s!3p8QE*m>azj2Q~jeaV6EBKpL&btVh2P`Y8T2EhR!^mb zirFo+!2F30UjgQzir9Bo!ad4mX9tPTS~jn02WB?#q<0#8DO&M}jWxnvI1Va<%4qhi zPCoGLOpsU%2@ntVd4I55#1*k|v2&QLSu~BOQFg)VpBsA4W_xv7EZ=hKdAN@CE)YE3 z)8CAuHiMA*`_@Kw>;|9-aV_VSl5Ga*eV3;?CVH(Rn^#lpDVkF>fP_f{mo6uY6v^>8 z5JkAsdJK~w%=flkk_~MtKy|Ru6%$Z1ub$IN0sw4WuiKdum=)QU1P=JhW1Abxy|+(= zo5=!AY`O30vyX50<<*{h?Ug6f)8M?UrZZX|26D*EY+cB|neD?sbU0U-kUT=`sVYJp zU@LWm`9F72@gMjd723*iN?-1w#o8~tg!F9!vAX=^);qhBHr3lG!q4S|7y zJ*>Y7Pqp6fKi%8H8*yJz(Hc6#A9ZH9!np&>T@#Y?_X3WM2AHdSuO__UC7tE(`dIJt z@Q{L7>BPXR(k7kxYv!Og6-X}aAL_n1+JIaF*Kl9Jxg*GSehq|26KClHxs*fJ(-Ec{ za(m#yPW2yT`}xm@!5|2#fN9e!5BQuniJBx+N>0npA+4<0728ej0Wnp-rfEA+&JL}C zwr$k;TJkV|SyPs7XT~Jg{%PmGnQJX-WF1c?%nnXuHaFwnZN`f5Qm@JTY2H%Q z_~5<#Wyp=Ar`3TiX|%Wdw`iG5;*`P>2nDMw0IS@N?fH(SVKJd--=|_0 z{u`W@Thxc~^N_TxxVDhg6tI+A?M+iKhcH@-*ZM|&xdT0wH+KgqrvKN4LHy3og;4x! zo{aNNG|Z(+Eo>ESo%AT5Z!gab>C2}={bb>pO?UDhKQUn&K=k@rwKbNM;GOl0b+*qD zLpb!_xkb)W}l7S=u0vYY^X}k)0*Wuh(e^jnP{f=?GkX zeVR{Q+4G(Hfl2!>v4i*T@X$a>O7*#Y>>LCFBzg|Z!X$_oztH&WA-~g{#@UFRe!mr( zw5V=Zeu=W=fMh@fhtp;SH?HeP;Ih+TfZvL%Q2p%D%0)vsx;;+KP^zt<%LFq4IY>dt zubWB1LjwFZeN?jM{f90%uIL%~scUm_@qg3v8l9&lUQ_xATS6pWk1Dl z12;YA)H$KD^|()~DJH*PflIgHVY)QgT`v^7@F{v|6rloyrdAc4*m6#+mQyN@QkoeO z8Vw*6CIBGqxc+fEKBqr*3-Ig*8E?V1?Dnqk?Krco!}R~q#+W?p+1oUvL<ag<*uj^fO`97%$WdjC9rIAh&ifJ^^?n8?}8LqLDB$`LIwEuI9uyLF8 z^z>Dn?bj2foEm=kG<%#kHrN#)-#Vz?3Pzpn$F#zM zmx*%yifPeB-zDFf-%Jwd^6PZ1K;B6{*cj)Uwk|w}8-O(vx(o!LIwo zFP>iKz1@R>zyZ|wu~DIe8q5FW<-Yr9@`{7Ui}MCp{~Wt~8yO((W~4`xO(d})yfsS1 z157$^=X%k(G8~af0j1s_=3XAFU{R93fzp1gN?EP%qDx1)PEbyqcY$xs+sSJR22SV+ zYBDt{S7C9KcXe6_C=dv@2c>=^+p?CiWelLM7@5XbxdiGKIOj=iW9nVAq=Y`@YNiMV z5xXf$YavpKc-uz9Mz|j-2|w7@N|i9#x<1de&iC0dvyk0kwiy6+WUzWHA#dTJnuV6a z=zP!R4u;DLn!R0u%JQJ(>gpo6DUL++mAAIApBLQxO-T!FFN1=@(GHu=gG(;>W$;Vg zYX;Xco@+Y*8tbUiQg+21_)z}@i^UFhZ>jAE7SqHoO`;&T66ar?J7CaGreFm40|aKq z300ctMy8+SpPhDnI1b4B+oxXp;7g99_7okxVJkOc7Zq&7Sh@Se1rzVS9!J+%efwbu zxHuw5rQ7m;=PsPguQ?S6Q!nSET#0~{8)8#qt`ZU`2(;g&%3X2QeJH8))*yI;#072U z5j|)Fg+uh~ll-z-Ovgpp?0DL7a@{YS*^ZC#%B3C#RlUiO{-uG)%@37F`k9YU1ir-Z zjdfAiE?*w}rGwsc{K0girDu+CRWELXevorBh`2D~&aHyh4b0BlQX5HMz0SR>Y?D}2=?t8J_w_5eOHPBQ~7E$Q!okX;a^%C_@x`w%YV*{gFKV6 zfx5QPO@sz_1ChJJJ2g7-uF?XoG?y}{pOp7_Z35wXY99L^0%?!T>}dI6=Yh5!y;Pi$ z;r}kGn%NoBQm->Al-9O znSJ9Wp~j{B`Wa>B@q-eNkDq^xZ0=2kAtW_E`!>%1o}#0UqCR_%KE!>&OTIg=#b1x^ zIuKEkTk0nBYnQ+D)wZ%1&O(+#)MLy(dSzW29e=x9aKWA;>YaNo(w8P`c3h5nG-lw< zZa9uB8mslBmI#+emgx#^AEyodIsVr}d%2$aA3y+<_4zH|`W<}l%*fR(Gc`ZzMFkmhhk}!R}G|XR_3HiQCrKbC)+cxy<|b-nMm$Sf4%I1XDMQ zggN|VNExL1+EQ`4B4B=kk6BORNLJuut6Y{Jb>U6Mi0XRvZ?!ndnv}< zsJnrKr1!iCuQ9tRz2h5f!sqTla%ad!Ch_+@gs-^8#EkuF^X^16fROMw(^bB>iU z+Yi9(^VZet71w0vfGTgqht`IQ2{c7^Df4_<)cf~!ex&VY|1M&5Lmn`n6Xof>tbGfZ z*PE1F#Q&U2`zQ9RH)1U?TG5ZrU!9)MbwA)$!dy$gVW2Wq zv-1}#H@-{R8$T>)O?#w)3NIyeG*Nx;?IR+)^W|geTfD|hnXa4w!fdKY&QT3pYX?`4 zpGFj+(QD|%c*DFPO!RmbejLgE@Ckw6LE$q-y_Z={g+G704b^CQO}~S`ZB%`Bro+G$ zvar&=H{D3l`a9$Wm=c8S3~`q$g%>UV)kCS9le&<-hdEQi+uMUip~MOw`W;NZOq`-} zI2RpWa4q?f%aa`|Qtw?mRW?o6Qcs;}0Q{0SPfoH37bwrUwBv{I3L`r^xKH4U^K|F2 z>NMFX*GxdEh{eWuEd@OctxY0HNg>`kFBj* z`h9=6pzzuAL-(#bu%;**+^&S4-qc-2dYhS*g5i@tAMMKox}?())T?&fu?!9!F}goi z@2k+cPNcp9^+`?Mm%Ve=UFdrryWU&s*bB?uMy8AX<#MoAolz6_!WU?W-^?N54ZZjp z*G>vqB}a6G!QSHm+E_68?{M}$fNjuIN(9rT+B?^R-;3GAB2KUZc4se_dtjVZ&4 z_jX*@NX!8z-oY@YZPW&BsSTc?{L<=nXP|6Q@P+LWOr9O9l9MT34ty~KBxWkAM1l3` z7J?(LxM18)NOmTY)v_(EZ8s)t()FQY98M+8n=!ln9t7|u3vU-V$c(jtf*Po=f{M-`RC-z;l zE`qk7&qo)D7YDvlAWbEA!SmYaU8y7XEuJR)_$Rl&?aOz%Zr;1YVYE)J0U61Atk_HeG5^(dE$oP6x&8vF+R@DT3}wI8cp$!?(+0- zaiExl5{Z$1;WU|P>spr4b|#6kn7}LwGeL zBBnh?t4W6P>gYzfdv~}P$og&F;3NXBQ6E5ILc9X>oNf0PjT9}udL}<4sSZ#z<0`wC zjxSDVm<6Z;aD`Mi)@28+G^e{%U;M=`aTk=+f2~}Z+2Q!z0q{l^ffstGIjDZ z+1%<)`_(gaV6?@;nHk*+ORW`)@C4UAH}myx{(Ov$Q`vS8t-w9zTj1 z@JmJo(c&7l91jjUHZGn@y!KLfzY}ty_D}s3j27l7un^#DPITM-148EAgwK1kC8|At zzRI*`1qI%O)t-t4uXo(qi7HTig_qMz^MSCXr1?`zMYP>k7`|0jPDxPqRm)NN@AZf>Z@-N^R-X1*J?8-hv6mVNuM(~E*;%NNs&DTPfBaALd-n%xIqv1sp zFyJQKjo`h}=UtZS$%_%{jDFq*JiywXBV=nUg6?7ppyv7&mB6uX5s{i0bC zZ;wUe`q^pcRjRs?5jJ`KSPO7G|JJSaLWzTY&+w(#&q!q#=hGHw2Z%GMeUSVnlcKB_ zJm#Zo9H6TgckOtu4Lr56w(D=7O$RFYol(U}33fBi12rU!REVA8up@B$6Rk&=z)D$q z2nWyMf{_cg5Y72r#A3~F&a8hU`WKq2S^U%sii36b^jn3#F*vjJ&9HPk0HvVyGRSk; z-h;F*PCwJ`IWyoAay2VNs_k^0n`4N%#TCQKKr%7RmqLXBhauLw39*IsURGnU@ZUnI zAuR0n{)E-xgo#wGK~8RUwY+^-T_cH|&P>v(PiWOi$PNHt6&kq~_CsRFUm$3Y2xrYwm&u-2`Gm6*c3boE#)?3=YaR_I0#=z~eq=gm}F)b1jlUic5trvwQ%?S6;Aviy`sVcz$FOs+Y&qeIX&18~Yl@-; zK!`||IbaUPp->i8n^AYhWR98l3@?UOxU;ko-!pLqg75tI^|@D{L1k}=cb1E%WDO&BD{$dar@q>f)!&_ z$NhD2iCqY#tDrBY$J z|NfyNNOYAQX*?NMyU>RE=pz5w+z?swf$7ue-ph)g<*c-)Xs)@OBScgSUhee?>c>1? zxSdc2LzD2&R3RByT4cYX86VVv;+$$E#nE+nC~>!)Lt!R)cZ(d5h&dJZVtn2{P;lOz z-|SaVTDrIINI!=-BriG=C3c){JOlu%iEK`0$C!`J8$hm+2koZ-)`0j=ZMP5kgoloe zzMa`UOgY(Y0)Q9&Zs&R78bhS+ALL9!06>+<%Z{!M(z1BRx?I+2{aUz2a;&*#)ofFz zuTd#cZy&$yrjg**&-gseIT5a$so$^4PuPcHNIER6fvyNO6N-b*g`!V58P8C#sohbD z6)$X5tj)~g#>Qt@8l1RPb5~)D3sEM!lKZZ`XMipGuf#R*PXPy2`e0ilMJPO`(^k7$ zP}b7Z!*pM$`|y^b-VU)3zHNK&-~hzj-$|In_T9Uc!V9XZC49%=Y;~iI_fY=Rie%%$ z-@l*H)`A3gtyk6|%Go~Bkm{Zz|1bcQoggrGChS*6uPZ+E))}T^f_7tu`gbKFpfQ=P zKkg;L0mbe|V=S9+iwjo{5HV%V|3c5?)169r|L|<68@u|i06LhtHCB8POKMK-eetq6 zpk)qn4a5AYs+WDm;QCU;rq|GxmxJQ7??QfuU$lY|oS@PVRZrYFzh0owe8*>R>_ck( z_-3)OfH&q*%SSn)Qa`ryW%6v#{vwK@^*Mw6IV~fISbvWa_Aa~X1G*RZl^XnxqLWi% zA1+>;;cR2%J4gpzTawv0PMSfl?6p`fc7#f^)q4)E#I}%qgWLGiw>CG zVDTk`X23s{@aEhSSs6Ezwr)CMw-DRvWS zSoaR=K58-9tthd(OjPHobgIDkgZsB1TuH$hxc^9X&*vuVa9$TAo#e^W+V=11?f})d z4IJSY1Fw!m{mCCbFXmS?n3uM;g1CaEKy4IN@3$-uVFHI@D?~GiU(-XiDM20R$YTHc zA2wP89=uH+k^CWk;5U1BBvSV|Ru=so!W(0k)Rv#fy-sIf5S_WI(Z%Z*tN+>`8#k7J z@#c0`W4iMD6^(AqsqhsBhDB3PPMf&vetzqzI(Yg^p}*-`-?3UQVp*+fA!M4nlb*XW zw@>>zH1kIC8?*!HPL0jT&-3FhirAyA8lw4t949nqh&P+Tld*x08t2V~g_WrKW945H z;tFQmk65x*HND+ALq94nCWv>xa)+cwVdgwDaJi7?Af}ouH{h-3+5JH=N`jR=hv#gJ zp9|%4sUA8)v>!{nr6gY!ep&sv8{CoWBMGpmW37H-bKg&z%=3E6s)ZN}Q2s=op*x1w zP-wBXx;MTCwTh1~}SB$fX6)Hr1n6Q8DoF?uG$FgExC0|}{(Oj14pS_#H>rSy;+p{6H3}ATHvkh60@$>Qy{CcBkVN1Pd zdvWb=;Fck&RjgG@dmmGeu64mU-iaZ7=s}98l9c1dwFs~>LTMwf>(`PzpM&!bIJYKW%!DIHq?7xgY*3HG%FeWkCm65pg7QPhQDV& zxk%a+`za-VFvrzH9Px+yLQpcM_@I!yy>8igLVK?Lp&AIkf5sOy9rrZG}h1qG~ zSgY*y+4i^MEvZ=@zUn8Pxe1`PjvNB+;{KVll0!2y#^$|WC4;$(+x%tCXXLKu8h>@Nf%GX zb_Z6UMsdvuSZ#y8TWs`)v^O@Qz#aPjiWu=J%hgDY!w?_t>u$0HP$n9W2Jg(QLiV_^ z)eXmcB%-ylcdtlW{u!)IedqH(cPszTcFZSlTi!q6Jui#oKa5(wioG(9*#Q;#g`pE? zcsz>Vg;JMCGd|Yvds-Nd)(+|`=tDh;4?mR$cfO)->q7_*8ncwq$V|l^9HE~ik?0H2 zE1fMf4EpRW`o?*oj+tl3NcK}CIF^tCUZ+hE|D9FDvsEU>+cGEmw=C7vKgX{~Nv$w3 zF0^Fc0nDk*1lE38jE<=99NeDl#AL>BZN-Kc!sZY!jvtuV z;(3scDq178yvuTAK)e*^w!5MM5^;XH{hz(-|8xLuwss(pEb`^?I?4sv>GOJhyYLx& zmE)d6>V_Ol+l=uY#QcV1XBx3;q75Me_T(@A?*5<_ zE~#=H&uqyge*rtivaKAZtrF%xyvzF66z@8>4bbkLwqhR^U*b_ajnWWapZ|xt_l%0_ zU)BaUAW1TUfMih-kR+0`pd^V(&LBBwBsED;0Rc%W2$C~M&NPC8O3s-kNNh4Rp`m-v z=6~+F@A)um&3b3K1((8^21{zgh7)-H*h=Rc=~<9slp&3 zA-{yAbdj{HNgEC!D}9{b(e-bh7edTzS$kyxN>)Yl3Ie@oAc)W>!y%-hh56G_E*r#8 zHo&BId)e*b(<(&Zx~myeY-BL)BmQtd!0uAD#P*;CHQNGz9>Dw?6-q>x(?(Q(tkN#` z;0Z}p7Id%b40PGNA{SV#zQt3StZSbdmgH$zj!un-on)L#^oq*T`%PMuVJutbdvaQF zB0R~(kTZ@bi-GM=A8Y_Z01`}R7MM_V#}mX%$_Z$N!^8&SxMBy-x0UWOaR>1dPdO`g zWVWA4_foWVzUxQ$Ar(FLI_!3`;^FoSn=(cx?@QpoI>ouF#B9?+U98cPrrMRu5r>kc z-9dNo<_UbbZVG(uW&81>axG?WLirQP@KHi4O=WN2@6jFUk8@wgj9Y>d2P8tPPGk6c zMG15s-!aBaBBcX6Yqz>Gm(t47ymK1L7+EWbeB)N&-Lz7L!Wf|tH)TLZuJ5rM`|6vZ zCbC}iK5A?W{)7@D$N7NF#w3dy0CVURYm|57W=0{vM^8<*#Y~-DbuBo2cbx^a^LF>` zc%!f~i&uoBMJO2+`e!csfk^X9y1y+hSdSh<>n~Is@$-9HXTO$gaawN;f>39ROln!L zsyo>-5a2H3%GYg8J^aUeCi9pR;PXShs_c_5jL`nD--UHpNYMW>fhVx5Oj>t=wKGK= z8_J00o9NqPV&d!+<3&rDnVGY_hU6cro^ib@FkS0H3nEyg;m?YPhlWDcd(6CAW^U4JVUOi3jh37bNv67$nd{U$I#F} zRQIwSOm=q3lD2E#-HJL|FUqnIcvR}9tgMv}1qjq@gE(=>Qt_w>1M~iKx3~*d_nl*e zg|dU5EIYeS9kd5E&ZOW}R*AZFGBxiPv^SHrF*-Vr57KNq*L1)h@w4l+Wr3s4QXzo9 zX1@4PbNj?mB??=3b-3)Di+v5+Vcesn9|m1vjo!#QxP09liFSN1k3>U-&z# zqyLMpKaulU`|2|QpFtVVUh=${0(A;h-l$g#Vya3a*`jD7BBu-(QAsa|!wT}BC4DGk zg{y2AR&^>QIB<>T<#8r`Hc!0vbPLJTimUTFo_)@x=!F^muyc!%*U+tX^Br`#3zpV#8wNF9QfF7!(%PEsf}W{q z9F)yl_iU~hzcUzRHdJ|C&+ppy&HmjbN0b%pAr;8pAEluE+Rq6 z^=zwdlcVI|+p2$~0y=nFbjAe@WL=HJ-h4)lj~T6*mtr)FEAN&=qFz_CY_sO3OkI&1 zPb_6W+M`q&%A;sHd~40T7o&+hpY#Vu{n6I4_#dportX~AY*ic-!b(5FWH5}ya}iKW zxI;k@V*a(N^PTr*LrO!+VbGK0CtPSOIiv4IuC$gi;)qh4>8>p+V-__qw zHaFHh zqKMVY&*Xibpf6`*WTN-n-S_Upav4^=;*$~ljy#6?N*<+^rLYsTw|R4J;(ycHdEf|a#ifQ8coILe_)d+m6s1lG zfLpt;awqIK0{r||7$tpE?nCn+XaJ~GdG_ZSu-&XG*$IY{h`*^z@xAkVQavKb|7)B6 zZLVnMdw1`$pFE#+P}9+&rgRuAsdo?u<07>DKqua#%5iL=!O0WJ+9Maa_zKrwlE(4m zI~g9^-omND!{kvHiZ7h`B;hQ8dv^1top9N?2<7QQlJ!w@p_yyMVra`M99|G&hk%20 zy{GBMQv{&l$9M7sv(_=pHvhVh(azNi8qa`#gDZIf!HcYXg=lj22M_v!#Cdo~GBY!C z{s<>QrMdty7&a(r&{0{V{>#xz8yj|U@#!G{f;RmeuG3i^jBN8j=C(MP=0j9cjXU6p zVq}YUo4w)JP7Xw%@XY9%a0ja2`w*q2>*xKkEJDu{IJ|#CBoK&`Fs0e%6*^QGcac?3 z8a4g_B`8NsOyQ1Ip`8P3Z46u_NVOA_BO?jVj?%`yV>FGy;0wNDVAw#v|7nBo9?I0oW!{kbwN&^$#KZg7A5mlY|DxHw;rkLX zfyef5VTIO!{^5-) zbNgrOp=NBgibwyJY`b^S|Jko0;o0X1)~IVJEcUQg8~*qwnu{P}3?q1s-2SEUQQ#5Y zMhz=5F>OigcZ>bxZ*U5|pFWT6RSAH_AM0{?@4UX=Ex&-oVWkgPw*azc9p=z5ja2=v zpUZgm;NpyVe9PEOue4%${G3&|Sk`Y%wz9FEkDYy~y4`ZV*+<9UUu`CUh$+j}O%V$J*?oJ_y($W&PM$?08+EmJO@dLs=n-MLB~};#8qHp&7gd3} zy1FW+&EE1aU*^3sR#m+|GCHbD43w0V_mC609B= zKQARL_rO9*b6K%CXtWFKz4ucEgBvY6+b#*Kfdr{j(cT_QB!p|KcMpxMX!1(N=9EbF zZ<(uMuKH;X^xm7suCoHlqd!254Ns7E5ml!_GzHKH8B|N`k>3}&WJ8_r9&L=(p>*(5g zNth5CpIj8CXY4q=bT7>X|F+|VembNf2}62NDTY5#uJC3hiFS6#sx>!F6H)q7#P0|( z!VX<~450@(&+vdrpsoq$OQkYR=rj5&pCl<%$1U~T)gk(;t@48zQJTT$h zQ(HH)NJk_;l^Ob~1znA+lBcSvt%#dq)#vV77v4@AwMrA>u$g*$01;$pT_ei7&N^iK zZ^`&A=(`JV_G87L1<7>S`XZ`Og9*{WCs~++eVnsCEe@QH8^jg9Utp^tIM0bj?PR~f zHIpa_wCu=h^PuTE0~)JcZOe;a{VHCz;^{a00wyM>CvgRl_R54P*&!+CczmX#zv6cE z^1~mX_7I4mSCbW{2954Z<^h{7PKRBxWIB<4E30D<7c1hiGiq7Is6}jHITWs-lARsb z1Ehx&4#*aVL$VDD&oBSGx^3NVVx}Lyo{H!?=hSrvM^nEi+?IYbu-41tK|oBLm;r0P z=MHj~8?w9$5Vrgab?d(+i{j+Fp2F7qrv0jN|7qHY+e-ugmLoavhyVH0e;7;uuh6$) zf&`io$u$>LDyNz9BLNQ-|66)&@c)F23+m>(^z@xn4srjcjt`svir6SaQNHOMs5*M$Wydg-Sekxp!bdrvm*gt#w23wX< z%K|_eMI9en9vcCXpZ#cdh8&q7r7DGhf+aRvAsSkrJS2?6MxlDK-V+TMrDF|H1yl=z z2?|ouYixv8F*kXsbw+2P>hT+-QDZ_LVXjdvW=2{m zMP6CiX(c!BT!&q%GUr!3B)2hvq0pfx(rn_Fs%B|WLmisei2$(-ugq(*;K&dx`g5^n zNB7;NyeuDWdM@UkqQbNinNy>Qtiyw7k%+zcLaD+(Vzm_%mpocS z2XI%sK8%&JGV%P7C|2ZP>8G}eq!LU%slS3-?QC&`jsJ2WCVGk46h?p zqFg57D1H_I`1?ZCrs$6YG`;8_-4%XVRfhtt<4N0AT@(rQASz}l+2DhAIA^Fr>S?Yo z2(5qI>KS5Go12@z1_zaT-p9$p937#nou8i*k&-H=@tJ-LI`^EC46P|cG2kL@YJGNU@xU-ZqvN8vP5z4$TVVPF@oMJ3C?Ag++3 z*U|x&Ye^Q5+kE35uRHP6c{t8o@|z1myurV?O-GI%j+YmoCwizTGCoV{Z_qclp-Une zxwCC30P$n-8Ng(ZsE7euTYv_>#^PwXL0n`Op+gz2+uZfP>)(HImA@>Y&?Wxf9owqe z?DNCxSKnFw?~}0=mCh}Y0asSIr_tm0onpU8iguz_y!f@sp0F`$T?KlGYJYyF;GpMk zmgMq%r)?GK`-+I-dqL1;_OS=33dp(28zv#w^6`m_D<=cH@0)W%!E3G#*m5_!J@lVo zvodg^0mA`l{9C0*vLAFBR&PV1s!9CQ+Rk@&=JeONIjs_4t}RZ-`*H-kSe|u_h2qQL z-uNroRjh4X?Dk4rl=Jy`lcscir7jBAGqJbd>(x6AOK~i0yHV%>!if{RC^Cdy#GL9( zy)jb;#CGLdSuUhDicZw+fL!L~fjXu2G7%84yI_OE-{Ag-_x(J$40L_1@Qme!?3|xDk3j(v7GbXZFx%VEOFl% zER5QGUq4uvoSV{up*OeQz)GiKuYERNSW<}?5X#>^-WbLsCqD#v;+}GNOEBM2!5Tj+ z9Q{5#Ooc+BHimPf6VSlo)|R80N8$ed{#9=W1qDTp*X519efO^OV5P_9y>{N~K(FB) zHPOF_t+z)ia2(EFE!|c+o)S&Vo0-%`jDX%>z8~TZuI}Jn#$U4G4_++G9?*)_HQdrv zr!m9kpuk1XSie$Wj@9(Hp=W$JHrRTU3ew3if|s3aYd4w6Ok196GW!TA$A)DB(( z{a;Qu7aI)R>z8aM#$y&HimUv*y=Q^lL~Yl>kNmZS9YF6?!s?24mWe#(js!v@a-Ywz z&THkV;Mf=#ZN$ajFwl9TFMPuN22$Q`VNa?mWZ;;Z9p`w+hyD(bmN5&E?Y0U z!Fjx(UC;nKgGg>_X#$>TabA1AC0cBXOCQ0|S^QgKUk6t(kicvrImNYptMu+gLohwU ztu-hcFI0!E1mS<_d_8BZh}GIU(9k!N8%6tG_Ky;dKf<4b!1iaZ=YGgX&E5|jMfM4; z#<~liBNGpT_iGerm|$}Nvv(2Piw0nW$fu#v(xtvSCD8=&*8uO$2Bih7VbFWjNAAN& zCaGjRJAr)@I30I^uo(v-*6vnyJYu;2%em(K+$V6Xn7JLGqhK3jO7dYA4$qnh#iW_W zU|_HTcphrj?>Ak&k!cex5zo2uCEKCTT7bCI>JcAT7HtlBS54~CUxB0OyNS^`A$*cj?#{K~ed!zcpgA^(aR=>L59q}g-cYa^`E&N9a@&h72( zDUF_s!_#%_9I{0ZkB+La$jU0`>4!g{{#A@}yPiK#ZPWV=+L@S@<(BDZrH5#p5P`XwAaNA>jw~)OV6?Y^^Qy zq&{e*yeYXQ-k?V9I(J&%k3}@@x%BOPxCVrTZ(W#Lf&8V|Ebh?Ur>d0sKUD=r79iv4 zo_x&BXf{YK5Unp~dv+&(0^=7SE}net?@<_WK`)_2)1h4r738TKXz0rBE~P+l$NYR* zo)0?JAwfHHI2mgXLGmN9+h0q5zbYDe#;RX~=IviTIt}&3nAbU`>`ql#ukH66UCp(> zzd<@)qrBeU-iX}X+*j$V*TqymxbM!1Te^i>@XE@vLW=W9is+*aMd`H|L+Ip+)@=C( z`{CQnc%nM#3;k?g<~U#z0T0T*_mdM87cmh@+;No&C;u(%>f7kMZqonNX@1ZgIZuJ&rj7LMKMrM44oGRvFF z31Wii+)!gjV$1oj;w|hG`K@ApfaKfEOQU)JrfwY<2Na&m=0BOaeq0_xm(_N`tzq}O zr=90$MDp=ev4BoJ#*N}#Ot13^805il^##ZyDlsR8DBJv{GI))$O-@`v*=rRkSh&Ci z?>ut^nAH{-A5+o?0$6c>JjEx8rQu(#{BhJDjz0QT+c#5Tv};t%Am-05>QYx*HYOs9 z)PEWNAwMO3p5M44-8LsRWf>n|U56&Il<2l6)zUdeFk^|7lt^swlc3DrWDH#&)5krb z_1=t6=Y3uS3{h9Pa(IO8Iv=%|eWgnmRzGkc~6rr{-2 zpWr6qQvLHI6(}`Lon5obeDxFbwrGdgkuy}O)7{s1BH!$}uAW}!^fW`ds9S0?DLcH{Y}q!+`;}Gjq^$2apSMz%()Lx zM#uWht#sY-IwY~_79Cxd(+El*S*p&MBK!W%ay&=(O29Z>_wSD$wr}%4&j{jl3w8bx zcyxXF%81LQkG+g5kc_Qv1aYH&dxUXVw6B%)%P)HDVz|$`6O@WLcUJUfhUZu9u7+i14@-F6<|( zd)H;A-t(~n22ty>8d)%*U+;!+owuZ>QmGEX1S}zuF|A5jBBtxu@1GAtPoN;Ob!-NdhI2g0HV;bcu%4pXiy=_Km z+E!$Ulc5@TG8V~f=QouDmZ&7%dyA}uv#hSJLO6=$7n#!U8D)m zF1^%Qh`#hxx<{``005t&L&Mn*{kmQtTf`Xsq(403BRIqAEgj{tv2xr zbbN+~*k!)NR63zSi8<}PQ|w^+MG5dA+THQ2X1T5~KW?er~RXTGhbkZ@41 z%$IwpJ47=z?(R6h>s z=!jg1a_r9XC-x9^KzedJJ?DG2b7wo#tw94+lok?40AD_WkUX?7S`uL66s2f;tfa!w zd+@`h(?CgH!?l8o=y{i@&liK0YosMxLNSiajG~Sc-)H{mbGfk$0UY4HX+JUjBUBxy zmE7aU2X-hFe8PZH_bO3<>GOJ**?WhrnIbHw79@+A81AQWACB^@-`)zh-=xBh=_4j5 zCuusH*2@y=`K}JF^%)y_a@UD@?E2C-{{vCMlL^poa^Q;&vgFa%^CkV~Ta&wB48Igj z0bh-6urbP7R%ar9C!BnM@L7khzc{4JB@sJt6nIOA;zi%BRQtgX|GA5-*(p|Y`wY^3LJw! zFkw2U-2h=7*_C&)BA43T6EFR&0lOGfMJ5p&->!%E_7oM=;sW#wKkNJ5lqo`h4uLkT z^<{VY#NIWNx-K!}YwiJ2u64XHkFZTFlA(Q?!^d=^j^((bP@Iu_OsiK1@V3aZlI>XZ9~yzPOSnpnpJwX+9A0x>`Bk_9R;awzg|4{c?N zOBBSCe#XF6v|#lRrYQ8Y_E_wqcx!M5?2dHfW?;{dI4aM{!A(g?*@qqYWSCsi04uI( zGuE9@r+ZA0F4ZFCbR|Pa2jrjyDl-`jgKBCJsR`|m&2U3#-ksjym3!~3Ig_5@n6QGB z^LT77l!bQtwr@pZliFC0%bpzD_51^nZ4czBBq_o}FaW^E$LD|en-dv446dcSy<4_g znXW2h=y(+vm>w<++~?zqiishic@jq1>1}A!Z|I)dDf-nFD11K-^~W+_^Tanui5b>1 z<&A=FPZGg)yLsZ^4k?5~zSOT>N{@(8h*)9-YF42Yq-E=dP|;F)eiF+I-A|e)qnT8? z+BA(#P3#g9Gu(s2>=lvKim|A2ti#!xzy zIJC4Ap;lc){qnMvn51Oa_w2R&B3^FxaQnT^GaPc{3LR$KRwL)ih$%oY}#zdh|okNM4R1?bzgL2|>Y=RGrY2#;Oi zRhEeHe_@f^15o)Wq7HhgIA+QEg+&MGW>(u%RRxsF7)hrw`0C9Sago}VPq^J*i%&?! z0eW%II}nQGkb;&|Cn|KbH~mH0_F&$32SpybbVY*E#``B#MxyC7^eoGpn+`WSg%ugw zUj+o1`4H9mAocR0B-U4{b^$pe96LKZF$oD=z^KmgwO+Z=QdNT)z6Hw=3OPAg!v4bE z{(cB#BRs7nk#?B8fS&Tr(2y2m{FMvxSIEJGqN`3!%M3m-JeYNZf8v`Iy`hFVhw3=| zfZ%QCx_urA2_t`h{|?CHrKP1Un3o^#P$#lPH&s_tLkn=-9|ofb% z)2`~-6&KJQpb0qaX!rFl1Vp2S{*@5qWmtg7^Bo3l<2pzD4u4M~3JMAcPI9f-bSq=- zz*%FTJ6!GE;a>bK3v0JHyKz6i&0ssQV}88E%=dl74*u z3{zFLVhVsl`Zz%ghJ~udd6&CrS~nW~fiU3oOC=$_HueXmaK~;YQ@!wVq|%coZ%;Hd z3VP|()TkI41J$v3k91$WctHo8t0H~fS!HOKN1nW3!CXJbf1*W$4-EY5?rv5o%cA%i zLy7D9MKVWsC|GNzUTI-)Pu_%&5NMd1n)0gNx}n``i`)TQ3o}cOE*q9nlc<1QR|Oj)ID0CH9lvs8vi z2P9r-ON->;;UOTGhUOMNJKWzFh_i;0MX7#_@dzUR>Dm3Y4MS%RIUP@>p=_CSk#!b%v1AZTLLzr&Tz`1E{O9g*_re1+(BQP3gMs@zlXlInUY1IM<_wL_h9s%7ii*6VV&r%O z2rYL{+rbjIWyliV_S{NLNw%l+gZOP}j2X7|Tb(&;<^yme;p7k5%WO4#kx1t4e zRhfm2ACjFf?^Xyldb#uGwa6CC(g%4>zEytB*w;Imdc9SH9#r^ta#0}g}W($dmnvUc)v$=Dx^kJWo0pWeIe{|A65NVi2r z^;L-q$}0)XcV_AoUcC|rK05Z6P>hi+Kwf?KLFv;)Xr+B(W|ryDM&kxkR}D_vZ+dJx zxx2gDc(L1Z&@YN$gACVD8TqTh_%n~?3l6}^mz-@!s04IGJ;(3AzVw-Jn%FgKvHtgZ?0KyabaFykTJ+hOe`!3l;6H9`Y3YKDE8}}K z7JtzqQ|Dgzz*qDAyLo+%BzJHXPPxt|-_ed>388sgEkK zH5=Q#$I#tN9O4<#@$DGDn+`KyigfH5-ceYbOc@RC`)@8lejGbApQVoagowzq3-KVv*3 zq?!GodD1E+otWy2+uj~B1&7H-ku$#oU1uWCNp2bhUqF5*_JwzEzZX$V8k=OET*eqQ zdEO0~Z!?~$XBEIwKrm7^GRcPA(!B_g`-@OQvV@eqRiPxu z>vA_8tf1cvoOp_I!vX%F82bwIdjPSn^^LT^=`+PRP+6~09%;xpa~(Ji*iNy zq+u_?^eMbMxWN$$ixb(>zA1YI)M4pvEMZybz0UnEQMFfKVf*RDs}9XZ@mJSqwBMTI z#nxSzUH_h_paM)Rb~7%Qqc2%mSok3C%;M5g*xZ~6q}hD5h2LGEd^gng7O=R!2z(3~ zyd|HIk7i+Ev7fB?vg!Ayw^w~By$*@z6CrADZVt$)s1QTzf&1ya-%8u*f`Y3npQp&G z>KB}K@d1CZ5K24f2FKil))5G4AOJFCf^UVkvT2YZm@W_iV9??~QV_?82i#X%m@T8M z80NGbigJ6xV7Rd{$;^yt&b`k;l51DqxmpqI-nq|=J=u~B6%=E{`>KS}XZ^ZcCZgu} z+HDJ(havtU9_Qp8fVF>5TOhdDDrr*jlMpec0ZF!RaC$j$h3Y)E(KvPeT?Xh3p0vq2aCjuv7G^GMWBBrnIroS|3B~We2gly-OLq zIY8=dM?xDe9iLgUHVgCw?e=?rUtW$`HhXl%Y`(Q0FQJ{06jw0^>v!R*jP0*UZ$;{k zhIF0nVG=$6zL_q}dAL=;Bp!Z%xUe3tMNmGpr~IR;y12G>udd<~G|?-w@HAeI2Vq*! z0nAMg#7J88Fs7WuA(i)u4Z-ILi6%E%@i`g08dl)+@R!e#FYlyByD|J${)NuEEeW)q zE(B^r!U?h&mPWSx5)O}XUzD3h_t{kbdf?=FR$S;Ijy1j7lblTRLQgNJsE7!1_^v14~O$#@WJVy` zr!c_%dAj9&Uf!QXg^3-Xh3S_bQPc66bS$=IH%oyCw#Nr&E2Bg0>WtgBzA*-?p)G&B zNrbf8V84^36Rc+N-lU(M>`FxidHFE(VKi{KhczpTk)Sg5@UoIX^Jslg2};x4E$vr0 zedsYb|283kvM);(aoplabSJl6BnU57XzAs|&nZ!|@=3y{WZIzIB`HZ%B!gSd@X##z?jAlcI>@L&Ymt=X zm*iG6&1q?mLc#Vs6dIPsc+9Pim+rbZ@-Zze6qr5^1hkZrbb}d+GKnXN9M1^)cP#8t zJD|jpPpnMiHUCw$GZ(Wrl`zve%>qL1#uD)HJo~6Xfh%4IeT=-;Sb_Z`MN2upFAm#+7=$*W2rWhBMQq`OXCJ8 zX=%qD`#%e(kS%oT8r9gUmlhQj=|QD+%C7+t-`S$dL}U)2WkJi}MWl$!j5345NEqG* z6=f)tb#uBEG;YX&fmme;cffyJkRcyu>IvAt5QNk1Gjf_p4gB6P36$1ZBri^Jy2FZ#CdB(96?P=v-AnyCpPzDzufTGX z#zL}Lc1bn{8=|gmHX5OT0V4gj;<@-In`3sH*!C}h#flsvkwCjB7=@=PH zNtq>T7xbH|8^AVPT!Dj1*b}G|BPs0>3zx54E!@BL9m=6jWH&o-Mri|FL0*@OaT^sv za^?AxQelafrlkpErE$X(Tb&OTv#@e#*_d{|FgMV8vm_cHN{K6rJ>%F#Z(C=?2`Cpc z-((@j58XQ=!2wj1V);2yb66#}R$|=?zMKw)dGTBdiFGuap!^%oPMXac_XQQo9PYcM zh>SKCSHc!H*%c;<_0$f_ePt=Cdo9f#YYh8zS3;KwC)DznY~dbhB1LZKXM48~)fipE<#mDk8(@M7rfHUJAiKlNVy|71N&b3H4q7Gn(g^_; zTNf|f!5dmX2mOscZ=S<7vnIdx8y*K?5iR^wQ-p8WW@SKxfEZ0+isE)K-NwA+(AFS0 z+u)`@#$d76cAB{vuu34etsd!#2VBwt3CYRV{QUf`%rq!Iq4p2h37M}chBdat(B2w! z-4~f)Bh}yzv828ciK71b`FW$ejAhv@7i7SnKYyOdme%Y8$iWavpRHsdmVNHvulKR1 z171fXa`RyM`sMDf9lDK0I^a>WZxU`}FpS3PTD@i3-hDQHMjYv&eMPz38ckB6Vh8UOSeQi1?Xe!yv#$#U2(qBJYYz$;db>0jax}nV+w-^78{7j{SwqPz_uiNEPu} zUS3Y#q@uzF9@f+>K?cy&lmV9=lqK5~ry%RcaT_bHKtB}CR@QDQ@y$p+Jht;z{WknA zG*wtePb;3@4<+-ERV`f&Ia>MnvXSv=4v)$mW;@Kq^r zG=Ql1r{R;g9Z)we&9oQwgSUlueB_QAw)GMcbZ=Z1vs+FbxU(M_c-JprPqza|Rf@-D zPeV7?6XXD*1fyA&da!=xr1WV#OPsMxSqlbsn5eY4ylt|FFpPl|%UJ2j6U5C~P@|&a zN}+I~<6|3}q|5#C_yEdk$we#e@y*An_2TrE!8wfQj&3nRlK3&CH+Ef0v}C;RzOvB1 zMDpnZbIR zy)IP&KV&t_|NHl4OgzXeA%)$O5}r6dJM|!Zj9bXTr5ns^Z$d7`;X?|1bDGouI>;gv zaBxgs(8OLY;z0`OPSCOTC`y!+ynKPy)X3om6n&QkR+2ml0jTKgF4jTh5aB20>g@ZT znIMwHi~3!dZAMr1?=pr0VSQ`7^2p_%Bi#vFt)_+#_SP7aQ&Xen11T)0$iBOO&I;=j z1X_WYcpAn)t0Ys)DN84_g9F3_Imn89w3+4O?xr8K9}})s$dmyj_;TNfz7dZH%-GQ7 zUY;0_oA-yGlQynZ`%A)a`h@B)urR68iM`^!0Z;~r5dOB4Tp3QkCc+GV_s)0wWq?G0 zHvtw?d_cCwGZ;m(GsrnQnjbI!#q4sanp3g+r)=J&Q!H@$!rKkO82u>{I*V3kOkv=ny7<)U&DGDBFlrTF;B z!TN6)&FjpOVHf18>WOe{j6-pu9;?K|U>G1^pP25aaM2w7rf$>wAH|m*~Mb{i6FKUGi#f^AcSNy|IM%RwOHI zE~-8FViT%RB^R`dukb<_5S&AYNglL0x%_aLxXxv?fdBxBoXlcb_puD7;yJ1Z9ISlyFq%%syS1$_gU4z>`-QhV6j?6dcx+D}C1$aS37InD-g7ytS&8VMXn+=que~Qw z<%}rvPBVw|@cCT!D?$NBgc&XSeX7xOsTO#zU+5S;W&**;XUOmFLeMB?ljLY^9!_U5Os0rv+@@ zzbNO;!Pn#r;jA(BpE^5I_tAqa=t{@8gW#AaM9fkUPf8(~6T-RDxm5n%dhjZQELE}M zJA|HeNZ)Y3$3v$+jiIscHq`2Q%b_geBt_<=Y0e6CEQaANZfe(nd#3TENgg*}1f4GJ zZpDA3{rh*#3L(ETtvt404x7Yv)(+^>crz>p;no+x3|Ge%JYCsCKM zfTm(QIsDJ`9piTAG2PPyM|6`+$IT}Unv9I?!fSiH;~cZ+>q1MnL8)(6DIttquY@{Z z8*|F-iCSDWU6WIqpucgFJzB;yQU)iZ4dT>Mb9rS5Vgq48C+F+U*W6cFgDA7+Lq;AQ zsXyht?a0*D0M<`k*;Zh89HU2ZE7SU5R!=!=nGo;n$p($0l2XI39Wdehror6>aTu3=>8bN3EenA$3UCCcNvYYoFKGb2lINj^GwX#Zh)U)E%u!Z;VDQ+;< z*EA;RlGQ^)kcE;$4)Ns>w+cecJYH(NJ9wNkXEf%|yLz5Q1c+1ws(H^Qg{nwPSa%iU zW-w4ky?t&gii8bw<1lHfQ86%Zg~;mp=_eu4#||F+?V+Ewr~%*InS3=s)bj@sV4oPq zNj0qj;UQDiHY79kE+hbCfqaK*TUJ?o55L*O`wkjjP7`I{A^4Jzlan(Df+IF2%F~lk zLv>F2Rgm}U*{6s2{O!lo?U&0jH=722`#!5#^xcURd>ixQ4HddCq(-R#HSEUuG%q$; zf@9p9U_vR*&SIygZ52OL@ns@xB90=IgH~e>KQH zFBAN_Ha1yPZ%cYTl)GQo>hEmUCbj*{EV{u5lR5!=D0QjQSm(0Bq?fD5UwRuz2XKxL51Pv0Nc2WbO6CqgRsuExM~TWXyB8(Kdcg~-zAna5*$(!AQ0eHKXX{WX(vCz$j`RytoT>P5hUpD-{oA{kVzI4Gwo`JRfo z1rPA0wNYm6LLX?7xJajDo|=+{)*h2*Js1{B7Hm`U7G~b4E^_G#s6LHO%J6w^-RWT!=V~wI!;AGet=s2h@Z;l(BKs}cY z{;@1_-@P-sIrjSm%B2nKVv3kRA|_D9HZjl~+BI!iPO;(7DUIgL{4CUS5As6V@Dpp} zKk(N8XNGI+V&18(+K)HW>a{aFCH2ggebUZ3^t?M$>k|F3VZm{N{vRkl#u{V<0516U zV|e;g0DyD~RSL_o{U_!4Kv%Qa6>^`^s1-H8u9_b$AZhoWuFi=YxOeU+KO2(m?>CxS zlIRAr9jCnapzrQAAeEdxP^$$y={ghcu+j|_8G$mhl!m7G2VP zV$NJC+^v04?>r3Sbpi77_0Pt>Pu}2@mO?(@kx7XlDfIFt&T(!dch+STpn#h8dRFVK zc&>g6pHC_?zif2bA+>4ved9_z<8gvMJgE0N3l~^imL}SF6%m&)x@R1xANb^x%O}Ii z9ZPR>aQuWwci9B)5FerYv#^tQAXPKe6HvBP$L5TWABzHs=olCr4%GMmDzQFE_uWZI zObqMmd)D_^7+KO?2Zbswt*k^qqck_Cl?f?(*0H>|S%)or_UhRKq5F;P@Ed$g<%-c? z^`^2+-WhieE-p@2E-o+Mc42~eu~rt77vHP{MPpDXB1;|FU`4Tu`c4$)%hrPn2d}DQ z$~&l0r62v)rtXgoEqyWPT|(NP%{l?WCvcln#D|#p_td!=VIRG46=X4q>|ZsG&GsM! zuoK=Q%F+tM4X=Q+yf4R5>hUe2(fufZt!!>5FlgVtOC{`eQ^Id66rY5SV{hAVeoJXE zlec?5m~OWjBSLeN#%l9Wzbfb)?u~(G$%3rQ2R((if2>fln18FAW;a0=Tpr%zbbI!g z0U8LOAJccxw-@y)iTGSoPd@DB3;JjliI|5d89k$;2X9!P)nr4f1OLlN_btBYnf;%S z$l2X5_Z_5kYDsXvIqqx$MHIj#i_|qn@}2K@wuO21Cozx~BX-l1V+=t?;#GC!X+nI& z@>hFeW^Rpw-?k{Vm|rZh_U!Wq z{#2wn8SH&pR%wm1V$ZIDEY{(`4#9hWw%>EBje69XEr zPMbi=Lc$Sp@^AkdGAl8eta2qJ5EQLVNEiWxZrx-d&olzdGm1q85tQ{>k(_r-rUExDw@%_2wn37 zGQj(B{vdVh4fr)p#XcG+*j0~JDIfsKz@AtWw78DcEyQ+;h4~=MOzSFa5aJ!bt9V0I zYmoEvEo>NX;tBNxa|D0!jjxxz+vwK0`un^*X=dOcqKA zBBozFD-79ckPN6ig|w;;CPS?d*;QRSsape*|8wr>;`YDlP%q1?)W0%qY8B7nJ78$3q%RD z45sAR`J6rEnjAh3lnyvfpbC8psTC{ve@!6ZgRpD+)tf*k{1Cs>uISB8;N4JfKG}OZ zePv>tcshN07$q)irUb?Pj=f!J2=CY^q+&ecmU$){w~h|H&uII;vby`A?L zC)8x$#qa-p=lkC?=g!=7&)hR-h6y`+@2p+cTJL(x^FD8EW#x|GWdDgFIPKuR}ikJ+$B!oN8CnHN+)Psn6p=J|@8>oy%^4gaW2B~;3)X9xSd^$9Y zUV*;0`nz-;+$!uWzB8K2tZ}XxPX_zZdRJg$hO0BpaK7EY(|rZSw-lS!+E4*6-P!j! zF0t{Dx#VeeU=>OB6nx76q7W^mfZ2}p)gHW!^?O`nzzunIs_B+QNc5j>@y3jZb;TR& zMEFWJKU*RNh;KbGIfU!4n2816C>q|_4DaF#g>lY~{bCE5YR+0ee3y%E(7e%9h$ICJ znv=0@G`Om5rwP_7Ds z`ze^L1Dw&u&b5xJpUl5=w3g;I(+Z^FiAd{Bky2%9y%~xK6iXZw3;}>V92-Ey&f;*< zjg4}km>;h|SAE72A0J=RbRLKsf@3`aHUJn@AL8PGu6xlIA-;^R;CIxJ(GEMOs2ClX zZozxSj|`@$sQ4F@|6`Svvi^hNF&KSLsxfeLY3ym^F&tmp`s8ivmmJDx7m>UXg)H;a zg0*0*{hdefnKSEw+!rED((Sgq6b_2l)5%6hwV?KyI!2MEt4mePM+hEb%>sI4^5cnI z4DY54o3Nx5ikrbU>2@++7Z7S6EtwRx{jGGo-CedH(5-)hw*(-ckr$K_!f@e}fTFg~ zH#WUCGC=&>mR1wnp#ncvG3*_$uzq7IPw_inQ_~&082qdJ?B^xxc|1DaVg)rbjFXt1 zvPm~!A0d-V&{{tYN@Q@4UhS=FCT26aQi)kBPX@h?1XLC0f z(LE0wyX>;rl%j62wYS%~TBCnydChLu-Ol2Z$%`toXV%tpbUZu;etQ`v`@$Bkh7H_`^%$70e0>r8}@xa+e-MvZ+XsfQIaEM0n%AbI~xma2jId66TebhH=b5 zlqEEc^i!1H-p2PrEEXGA6=iY{b}W?Uy;MrLn)R^S0-23Q>pS+&&PEZ_-VM zcUjiD`1b9@vnHs@#4ha98vC;o?I=|q6x&G92Lu1(!lLRlgKkM#`FZ7u*OJE{>ljOK zw?84!7vtwMSkjCd5?_myls}<4Z!8Qz%Xx-ykN%Dyo&!jyeE~NvA1pQ-%u?{ z1vj)xD14{w{e0Cq(cb@4?xjJN%DMa=50J(#aQK-NWD(Say{TK4zz#bRY46^x&cp4= zuX{Xvrla#=cUr5mA-%q#Aw_7YPpx9nxvuIyYGTd^Ko(YPI3v+aX!=GzNhzYg(Ob&FpYh86x33m{7xP#L{hG!v`);DKJPmN#7j@{nDV$A=@v zZm}Vdp9&s}@jbXF?H(8#`+VQ>)1mqrs%jOTMNkCerpdR#+}vCA4s?e`no*h>9(&pB zL1#nzBH40Q4Dp8QMMVCS>#R~ZZ~P0GRXBk{ON%++iqD=W)k%Ow;Yto-ITxN~fP4#Zm*HWMEaF16om;LJyuoG^aSPXaC&$AL~O?ko<%U!{II*h4(GXvRr{Xy&CjQqFd*mGn2lse%|6u0lb zQv>U^b=Enpa{()N8QMR5_>jqPbwupBEUj^cb+q|PqMJPqgw1r9^TQ`zsMZSWb(wyJ zl!dzEoj_gtYZ{;D90SNkzn4|5IAl)rm+6v7b&2u_UL8iBj(iTqGw1jfEb&`EN=? z=+k5{o3M}1kjCy`8#2%+hh6BDXq`6{}sB+S-h%$!RHF99MQ6n0(xEucsu6)c07&1N;5S zHX~AFrYe@cF6Y`&yhyFH`ZR7caj2~ez1n<2jP>7OFB&x%Sx0VW&TMY3MCAzNYkhll zZhL0G3|v}I>tmJGOxfaMb{;@Je$;o+d6K-FZe}7w zKHnDUrSX#C`P@Th7R`#gz8^nO8~X_6q}t-myboXw(I6k;CCVk_iv1gZ{g+U zlr5Bj9MGp*032;%v@+sX>8A--&7QGdTT?Kg!i^9< zM7Ev;i_P&pbMT;eWr0Fp;dEgEX^_l4EmzEL0GvyvCEzLy@Xg(N~|&Pq0vC!Yw-|@8Zg{tOf3x!#2T{Y zR4sFbjl1pVeUR?}>AG|h-a49+nPEyksgzmGtf*>l?M9%c&f#!Ql1FN?vV9X|skwK+ zps&v$1E5jT@#q813%cer4SDHsh37RIAJrH4v0F{#{b(VGVL$)}jfgFo8`Y1Jp^7|}$4b5N4^GEr37 z+%35-hg7Ao;b9lbIpdrgpmj0>Yv_Y)w5)N0=Ew%yryHo;g?){~vh;DYR z6`;wewA|tc1+b|2n$z~*DHxZ8_4LU_(?Xwe)UKtESYWi{ExLinCdHCgu>*#>PUEF*{7u}ED!utTTigZT%!Sbts+vlD&+sQw= zz(Q~lePGy>!2*RSSjYGF42K2}HUB}lf(njdihBRWZe)qzbo@8M3Pth%Cz$O2SD(y3 zZm0iuNZkM3m*}ONrPmh!{vlT+#h*Rfn%04-RAIF@4xXKEMPA- zl_=Fos(^&Dto^ITkpzss#W$KY#Usqw6FwTE4df)j;_D)@hw37m0yh!qJYAn+Qe(D` z8EEjjv`ageZbXRRTv?>SC8YB{#kC0SsQIK}Ek|Q~aeS8Pk5v|v+=uY1cYa&YgS%+! z?Ce~tm(73;miuL@Fk1?24vL2qnkb5k5B*8B90}NE=drZ5z6`#)HvyQ8v&HXZX`2{z z$wrXolbzM=6B!w)3o0ewVxzw-EUYn5Wa>YLyh4D(Pj2_ORns@<&>R|v!i2HWL^SJB zKS|2{IRX&gS^=#wnq+lKA2lOGkV$TXi8icjZkyf;e6ebwd zvvRH&cmGoB-u2Omh>2kl6B7fNO}sv)18s=CPryle-CRSRIV#)m9z$Yh0^B-53=Q0E zOgOP-{eO7SL>-yzPhTr;bBmd^;mMmwlibD&J9(F70pO%{azd}{hAK;6=?+zkqkiH| z2ZN@hOV1=T#$n`@(D$F4fAt5f*yt z;Op-0l*dh4%geMawP*B2YQ7iz1mKXwQI(R7(Pum!qjif7GuRYjStJ+%U{qxM=RX86 z(Fu_KA?7nk81ekHJ(X?qX^BO?NOe}<=>FW$htP^oRYj&FR%%t)u^aD(QY4QDuecPI zWNkj~7aJ+HC{ofuIpwarMUCl=f6#2d0hRYX@-xIakTUuI_UPOxO zAkHoIoEe{+Q_^A158r?;qry#O zyB+WiS$QNyO|TsJW{Ea1kKer;h(h+_N3gVa@3LW+Y1=dJsw-Frx0*4NXc*1hp0m5` zez7Aar^=lw1BmO@4Xa$)AyHi@h#I09gY1(bvUYVTi6Te^dGO=q2H7Nm=gS__EW5RZ zR8)w5|KiujMLcr)PInWHBL>;>2Wt7A;%p98y?&kS(ZdbEG%RVm1|HOTL{)YP>V>N_ITo z&yfqIR#q-Tg2A9=<0j*1Oi|hCmmZ&F16LWGKyt?Go}1?vmQoNdBMjeSj7^$mSFIW` z6ZlMxy96e>womDggk)arUOx_gtyWWHvZvG=SC&2o)q`PoG6>23`OF3L9QhT39YHoL ziYJ*@*|oLOKf1eXTMgonuD^E(3{gP8rpGp5*#U`~tVM*~Gh|8g{_$@uibp3yXEV=uSXU18GtL z0Xg&U|B!Bn{UDpG>n{qKGcbKgQ;81M6UyGARWa}ZK={#GASXU3M%~Lv!YHP zL+jIrvB^Fu6PmiilRk5ytZFqmB?YVm%q{R54ZcC!U%@lAkkF<7zVDd*=%2@WpiTf( zTVHum=FxQ$3tNF5x8N*%B>?2 z8t}5PI$z$G=0S2GvLi8ZTBOm8@VMtwDMG;1dyeV^^8)auL;1>K{OJc@6jq%^N?$}z zI^XzLoBzBAl+{U3|I_D2d5eU9RWSZ%wSKQGcZ%YlE%5RF|F9U(|AapA@0mT6FpxOX z2b-W+CZFXDj0FCCzG^N#2461tv&2a96aRi23sTddc_wb3yITV46 zpp66Y2v#gu)pZo#WjSMIYHD+J`y0a>zdW&fAep+CaTcsh5s{GEBLTt#^S3U4wQ;_?d0-;!3Yd&5v?Wbq9!~%JY~mX zEfo9T4?RXEn{@oK2Bi<4>dB}-35)cSttg7D_;qGW8F>ckGaR@0;-2izCT!|d)Olr7 z=P|8;BvRosW@aPEWQ!oKeZ|%&5XjVcA>=+hI0;Qe`BQF0zBPxr_D1 zH7CNglk|t*CVa$J<$Zq@TK_0=*Na14m+KZ;JcF! zRQG)E4H-%J>n?ucc*`R`dU@mRlJ&IL$ownkQGat~B>LgVQ&h2bO?3?>z{vJ~eqhao zxxFr-pFX>+Sq#B50Y^>(@?T8gB?ZLiKpWM^b?;%2sFz?=3sxm`4QrXmcVvYrR-v#z zxL1M9T4K97GMdx8)eG_dOKm*&WBhMkMjAg?p_lc$s6&`mstF^kemFLfPNKt2NX(n3ORPc}>D=hmj^K7Gn%rpomkIq9Z5R4r!1J!1}tk;7yX#{DI? z^G)Lz*-6Crk_)chV+ZQB8ZuEA1WnJvoT)`QTbN<(rP&K#S0~vRXRSGQF@P>MgqD%9 z<1rh$j^OL!@>Q5v<4Jtj8(6XXXGUM7ZR8tJ*vV8>D!K`qdB0hDM&E>0jnW(;FknrD zADR3h)zAxNLH4s1f_2QYOss~-X=g@w6QkIlk)_9c)guDG=vGfV>H5uPb`Awu zId@oaY*vpZDpXRF6j6Qn17AYKJKp=B%P4$H%Ft|%dWrxX2^7|BgFfwrg#~h$@aW<5 zSaCYj9vQlpePqD5?d!MPZuPEqC!b0oNdAbIIvGz;0?4aRtDu$kRGw7$l-RjH0Hi(hDP~eIFr*F5%zQx8E#5SCU72(1R zB^GscAuhxL+w{~-=jL3{ShbU)u(56MHBNYNViP$4_T!7fxi8{*13h6AA)$4}&a19d zg|Uz)O&}fYum9mO?hNR1WriA%oa|bjzOlN|<$Y|2?f0K0gSB+6TDkFfXO82`*jm`> zskMQ6ZXjZC-kLSpAAR(|8}|(sNO-C0cg|Xr4QTJHyB&tuU}6p8KlBphA_>h1>^!;< zR9u|hLD!(pO}SJ$B@J4AI59mu&edEAS%A0TNx%NuuUGMrh;Y%VW{t&R@E8C#U zt$9;@IJ9{Xj)UIj;H2Nxi{%%a3#zvJ3^F(WSnd1XNe<}z@h#8#9pcD(q(l?&o2C8k zItor%rMyc;MKyZe=9>a+n6>a)PHhJK>{&lS3P7dxUBiY_B z`T{!}?ZV>lL3(oXTVR7YBuM0tP_KM^F5MDkZWRrCxr$dGF@xm?Y~u{|sZ)C-J@4;u zkxc8GR|MQ|H;?IJ{E|x1jqDDOho#{0KJ$eKX^RA49D<(h5e6$CQg!g`Ax8LEGAIkA z`hhuaUR}mhF7hdb%4Iy^m)Inl3Bje&3Fc}ZN)SV8*Ng4e@t5$UFgsSrL{%QTz1(&I zeXn*XeM;NQL+Ui9az@rkPI%@ijNPVtcJyb-4fKaDXCY(2 z>)>G5<=?z-uHDlD2JYx7m$5_Ulf;RYm6((CttlSvj;|OlQBGtlXhw1GzMzACOl&Nx z2;YP1t+c;dV)V$?{y&OiT)WJ2g~4Bjhb>MTcu8gb}{wGZQiVBV1lnv|K?CSS*Cwzo{3dno`UXN^f@jfOH;GY z01p^-?Zp=lf87y|llknrn*bLb9XONH{VOm>C5VD13PU!#@Yp*|?vw$tY;h`0_Hn$L(Lby7RN_9}XWhr0|U()-ca=n&U4vr}YQ~`{;x; z?p$D_kaEOY$z9(|RQ)Uc<^#2tfzu6qwLNK6=zhf)I^_A!ZLPig%u#SI#MaFMgLbd#`xngUWl7S$ z=b3{Zsmohm3=a>d3B2(+AV5~(VBwsD(`jMypAYem83-GiT;ru_;sJZ|5oZ&0KF^;Q zp8L>*N5b*m6-Awh3tL+bAH%upO}-FCu3ztL4er#|(~Hr~AAB!9N3**;cshNv&1ApZ z3+kU~>U^NLgycjrWM{v=^iq5N&jp0Hs*$>OhiA7vdU|kpAu_PMFq8fR14fA#Nd&5HG~C-!^w zh0F9bF8TJ6C0odzUR~$7-oQR-Ax)L~T{$Z92p*I?tv|hkSsq6`(b5tfw_oIvA{&0~bLX?_ObAFVvJaSUh|9>(vwHZ*N=Vk-%+ztsBl__n{QWNK#tM>s1+@zoiX+L6 zd^m#~eQOkdc6?AW$3fXeoW#bayjlkg=}O1nflzmsb%{h|!4<=om#QMd3eu%5_Ec2x z4L(Ot$EiG!+F87KYznf7D|)Rbn1-;kiAY(QOUbCgu{jDPE!D>5S;A{!N?J`mpR2Er zb{6$3H}s8r6Ff#N?32d7-b;&4%{GaoK796+c5ePelY?yGJF?QvY_8KiJv0#=8 zPfTPh$;^a-98U6@PyL={5sh{G!g@>@-j{LdlVuc6Km%0ocC&kb|58G9ueor)~ zK6qbMoKB6Kc36mQCT-hQPqxS>|y7^O_N7_CwSjF`b+rb>H*bw={#6X+m1 z^)lpGpb(Qrb-)?D=6ByiuU5Z~QR~IcfM~hLRq<0=(-UgFaz%3IG=4?P7$UKiUyf;32jgRj+ za?Rv&!-pX>Ak+4j{0aJ47dWBfhswBQv~eeBW-YtL*u3{u*P}8>qnv8|`COr;H@`n2 zukJ}QIJW-YBfI}*O|H*lYeT->%ZPrq9 zwEXB%Oaxn!TM1F>vS08v$rC8ZZ9DMj&QC<1Gv}2zGBY{oFtay01G_b!494;e6+agT zc#miG?gavplKNL9BK^u?yH*eTUZ3o;13xwdXq9 zeDrqPQADn&=cVlcCj!bl&n0d4^i`T6nqZT^lheplXb`~1w{VT`E<3zV3fc}U> z2c|LZ3cBN{(lT-dkIU2-y#2ok8o*hWjS~E+LJ#*=uhOp)hTWEG|5C3WzVbcGzTO)& z|KP&v!g=F`qlJ5n`59I&8?ec-zW5o?qZ(8i1m4sTt$Vc(fg{3he{;^T!Sl>v`Nxlz z?Vi3xJ!ZF2A4bm?fYVX3u{V(?zJ3NpA);)Q8 z(iLzM6tVdt4l0Mwq=8(wA)rX6B{v%6%@`L@ILp@ea;^DhS-<^){~T|!;r|3G`tZ+q zh1ca3J%YFz*bku|#nF^S)Mg+H`+79|ie~fJCx-@JF6uqTOIKUE-)-Wa;8B-Y10<_S zwN*SR<~*b(>ZghL>c2_>q3mAv=%*h1gTMA%uXudQK07Hkv*uONt7!Bqo}$`BPxn^8 zt2FT@6IA^?8cWCfedPE9#$8tTIV~{o+OgnOz_;=Ek_yM99nCgCb5%YF_@dD2j~_RG z8Eq=WF%Cj+hkHb?pt}KcCw-Y~iG4d;>fGCg%zFpdFrRE#*<>bX4Li(HlifW@;t~ci zU1^AF&Vo{@zGpmxP~m525Sehk{^7|W$-$zkNs2qMc>ap<;vk`2ou_OG@638y^KsaI zbB!j3_1kVcH0-UW zs(2i`^5e~(-3|AOvaEZxLNwb&#a=2F7w*x%h$8UC0_P^&El;hOZ8KwJ>KSWYxJ+`Xau4>6EYaf*shX7RX)EIJw3>V~!-U zYbV#(I&H~Ady$K>zC0d$!?mj3m@_OpGO;^e@|x!~guTJ1k>?q7T8uac$y z+hOVtuz$7xuOCo6hW&Gq|M+##)xdNA)l{3(*_KoP*)HgVOQ&Z4<02>Lh`#&3-^Zi> zh0DrK%ftTTLSGp4lfgU151cy1e9jsocZe_0&97hhhR!>TiN`!8qGUr0;5GM6>Kh^F z(hb{#-a%xq<7m1qI>t*^M=OD!wRzvoiwM?7_sW`6EkK9a-!agg-e}m_&>ZpFBcP}8 zTtcXVLy<}7hI2d#-u3;>xhep?xZ}_HaC!rOQPMH7+Ijj;O>Fxan;56u@!}>P8Y9(9 zg>cQWrj*WJYuppw*h4NKf+epbj1;{pP) z6H)>KmBp2E7itChAG)d=-|Zn7n=zkO4;J5z4u5p|Orgl!lu-i`ou7FN5@ zo;@4k+G|mE0Wak^rc|U~a^t3==NeluHN(rtP*DM*-r@HpG#=6vxN7@1L3jhjfkh;y z-Ya6fkia8LA8fpPT$b1Tq90lY1nNqnza3iwPhk+H*sjdG!J_$}$Aoob#b$r7R`#Z_ zPE%Ww=||=+XP*JCjE4ak^cS%CpPA2`%i+6LCic0x$zhtLqT=gIrXF-}R*j+i0H!c7 zFq3~XKKra5DjBEf_2awk2K(loK^+8mD>OrK8}ULZuLeSiWzI)noriZ5Fh5BK22knU zU}H4Y`gal|#JyMB3^7(i!dOVc5n{k0CGgQcBm=^rst73L1Aq1RLPFD)mkQBtD9;XL zYSXkhN*!Hq?F|aA8&tavrZ^rqnIPk~IQ6@yLJW}*3OB8`GE()~4lu^^K6_<08h70h zRZ~UT(a0cJD$e%OizpbaS~gJT_@Y1Eak}F|=b~EG3;KHzDRKG)h`--C2{~@1&VSd~ z0G2=F*P9{z9>lMUM;(DT0A@RoO@+B>Z2OFMFCmdF?vyYx?n4{a3QtyEqW}7JupKze z!7994JJiAqM({%{P~-rp9I$4q!PAqH9)r3K^h|dFI*5ToauaaXNv}bGYKQ*x+*1gL zz5j!RtauR|{+`!36pu`#JL$ueRnUiR9O2hK9Fzo;G)=*U^Y<{N3Qt#|g;4H3#<^cJ z#{`P{=AFK42*tx?f6Ea8K3Unwrw14MCO^*WkUSuO zJLm%cfhb~Rtg|3O* zmJ2!Ip0xh;@8&O}eJxGKmOiZwaD!tf65&QE4|39pZ9hUuRAu<1T)zKI@vr z%uMgwa;XH8?9Jd5@sGLyQXa=UZHiC( zdCJy365?*Jb)BzlYrA*r)-Bpor&>EZ!}(O>r-rjIiDDMJm;8Rby%1J>+F+PD`%Zq3 zbuW+6K4B%8>6X>6^NYPHo$vIDHbokmRy@L7&{f@|4FUpk;+7HI&6YMs-wZ3jUsq4h zLK5$NZz;aq2@^`^kW<2)dWDE8Ym45}XUOMI-tuay;S<3$co=>0N4mW4Zkcw@!xvT7 z2KzEsu!6pXwE>h=y+X@Wo!cwIxJ?lb0_OlCz|t4Q3_u46ju%uz{R&4ncNY63ETxo> z@Sy36CE5$Z(*sCf;T33FK<>y1-w)ZKxZ0)~qJ2pQrSMz`!}wxmTA*(oDf$}^IOlzR zXIqTyhWHb+OL4U>Ss_mWtI657_0>7*DQ47+jh_(B2kTCm4&xg#CI5`@*3l)KFnTh_ ziauC6`z_@Sh*OWkBir`dSYq}yW%SB;7}RP^X}VNtZ6+Cgqvh8MWqA^u&D${w=}-mxg98OV}EC^U(5q}aw4$jmM3dO5=7vO z;XDDbOa!JGR6Sh5N0)=QsgWw(x+Buq(kSCL*7!=?ZK*H!RU}K)t6lB;4wJfblb}z> z!Tz1ap1A{7(^;@8I!;t}$vp5O6f+0lroIMWFPkn-q~9=U?(t0!sTgz|9o`eCIuF!vFy&A2x=LNnsHa3E&R4H>uUAJzAuR8Ydd!r-E_ndb>R2!$}q4IHqfeGH?zr5YC&xbY;2Zc5xQTd%T_iuSQPX96CgJ>G0*TC1aCB`DI>ZtoyhnL6Z21@J10(&J;~(8UJ? zw1z)PisIO)lJ@GY@(Tc8F<(?&BAUA~_r?M1@T(mYKj?Y&vct<m)=7s(W zl&79DR%yos?u_qNxda8x%&(T9n)*t}V4TD;glxb84AsW;5!|_skGZ0bhV3_$qjFB> zJ!tbGL*YNO;5W(F+qTgwQ+9k@<<*9g7d7Ls?dqQ;NUs{A#-sd>;L|(M7wAz>N%Sic zPcK5{C_+#X>aK>udfEtETXSP?=nbdMQ}Ek_NyPm8{QV-Md(xhlg9#>=1+HJu^xBxw zD48s`Qq|Gbt@|5qbTSPBNs1c_U2(S&GpT@T0hE!OAFh83ysWZb>y)zq%JRj<$ld)m zti-U|vL`3j{$YQJ?p+L^eZf!s0%(yIz)JVMFHQEcVK4q@iMdhK@44Zc9rUYPeODcyDNuXOeH{%zQ3 zE^=wmU4^%fIx&y*OLoU(pRUH58bD3(ZnmfUEC40l0@T0dv2QsJZ_&4I_z7OW-g4qv z0?6t+o@)`~j-$@*tR6rKntrvE#(Bp*0!$`Ah7O+n_kC%D{tylhDHRG^=CP1Wqsg7& zeAP-fnS8Pc4q04Y>ZknC$5Uf={CNNUOa(do%2`|q@4T~Z+R3KS@+g55^EK|9tK03P zi|fxYJf+0%yPFYNhM=q~FqvV-*MBXwS7i*_-b7cOUM+Sq!Uy(}en=}}7Vb>-nR#wf zS=>}jYc@aRE|@1XZcb};L^qqM9H|~U-M!li79BA%*J_G5j?qL=qH1=h>#noS*Jei= zxR!LKZfIb~&qKxIO$so{^cs$zK6CzzBH;z(EsIKs8RA~TU^fxJ2Vp(0iah2uPZff> zKZX#~hAh&fe@K&zPn@4Y9Jg(imgD%jeFoJSO-_C1VWP9!bfd_5qMvz~3LK(oAz6bj zuK*Q?Lu$QLWMg_#t;V-PO#2tR#z0WaDW!;WPYw$ZVN9qibE4rr(JR4uul{^urTiEl zoqKA090PurrZw?xVi4(tfE*l7Mxw@b+_RDuR7wp5ygXLda$Tw)M6%dzZEaODp89Ls zu>_NYjty`35(K=l?~e9Yi^_llNV>rjXWkZaN~0((Ir#}NZ0x4%CA7GkxfBCZflSv( zmwW8uA_~BsfT-tEp5&>C#m+V26Mma*F?y77#knJ<*+uTw~-ippOPG0@x=PoI~YMr-eJ$ppW=1pJy z$r@x_`3HA)DwyEdes$RXWCOB2@3o}F>C&%Xzqa8@rTMdS#^LKzd=;6QfgmPFw%oAb zJXO0DcEZFn;vX6kvdlwSdu5XojA_C2TN$#!!Q%vU_|F-)5HPA&_7+tfD-GFYH`sfB zYCWRTl4zR#A{NTD+MYBV7Zsh7Q{dt1HzTf52Z57inqOSAZ;B;i?;FMu=59NWPYK1c zesLXJ{3$`>0(wK70l?)P35F zqJfVJ@s>0><5yP?RUI8D1~>(=@N5h(Az9ufB-y2yXgzfg8lKJh{3`#w3O8y0oc{TT z6{&rxvR*MgJ)D=X82$Z3OdndE6wxAaFcFjGX&{RSxLw)uJmAQGOweCYMiC2v{_Sl&8Ik2NJMkRN9Zw z0VZuAR#kur3rL#sjB1?0&cZfV-ZUqm%to<`ho#ASm0R~-wC+oNyfHIB4yqx4O#!)! z;-E$uX*&TW>VN3&L|7Zwz_sqK3{@q-Uxl8SobdkNaez2vsMghDwD@^WI6_c=YG1qm zDXlfq>>J8#^4cA2aKYN{W+waQLHN*$+rh0orhJNOW?H(y>Eg`AxrCgXKN1kNt`S&U8pH#y-m9fZPLVS5tu zdpd$QZ+^DujPaSJtQP&L5FtJYH1yj5`03A|SnuBHD0(!lHsYw{8yX5mbjVjy49f%s z#@ZA;Hi{Xzcly++f^t)w4OgL9?Y6S07c~v=2LCxFkV2Nwv_uQl2&XGDa`Z_WFudM= zZZk_t^0Lv<)cIf|tM-~$Ps=mB6n5{{g>^2>S6%pq`rR_TgV_^Mmp+e&6S$nK1!Ys7 znkkQ`%y{B1|Lm(?6``f58MlV@%GmatGdHxU2&0xEPOM0PPzI3j9hAkref;#x=gu#z zvCaiLNzqpg=*C`foY(G-R-g^IdzZ}2Xs@;P?z56{;EbeTGlVxC&@nQa1C{EK&0ZHe zdhlQc+y0Xz!u`INLnK}VdAK1O;Pg)Q2<5FT3BXpkx3>dIa0j;TkXQ3ZlPpswER
6@FEUI$ZX(Y&Ccm!WM~{U@+=FBJE! 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犋jv&fbrg{}irnt)pWGXm1H8mL$NFD{K;< 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π!Jm!l#=>ru$O+ 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 diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 6ab4a1cb1ceb4c30236feaf05a0401ba502c3030..4d12b0c59c7fe9ae39e46a08c85fc7c2b9c3d505 100644 GIT binary patch delta 14403 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 NN=#m~?DH4@{|6KU(}(~7 From b6ee03a3be0bd806b705e77afa7a6d3d5f22191b Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 7 May 2015 17:01:38 -0400 Subject: [PATCH 10/38] Minor shoe fix --- code/modules/mob/living/carbon/superheroes.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/superheroes.dm b/code/modules/mob/living/carbon/superheroes.dm index 8af0c4aaedf..182ff52dadf 100644 --- a/code/modules/mob/living/carbon/superheroes.dm +++ b/code/modules/mob/living/carbon/superheroes.dm @@ -65,7 +65,7 @@ /datum/superheroes/owlman/equip(var/mob/living/carbon/human/H) ..() - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black/greytide(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/under/owl(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/owlwings(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/owl_mask(H), slot_wear_mask) @@ -109,7 +109,7 @@ /datum/superheroes/lightnian/equip(var/mob/living/carbon/human/H) ..() - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/under/color/brown(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/suit/corgisuit(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/clothing/head/corgi(H), slot_head) @@ -128,7 +128,7 @@ /datum/superheroes/electro/equip(var/mob/living/carbon/human/H) ..() - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/grey(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black/greytide(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/suit/corgisuit/en(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/clothing/head/corgi/en(H), slot_head) From 55d3937c8ce016811a541d0ff67ad0c2285ffdb2 Mon Sep 17 00:00:00 2001 From: DZD Date: Thu, 7 May 2015 17:18:12 -0400 Subject: [PATCH 11/38] Fluff item convenience Along with a database change that I've made, this should allow fluff items to be renamed on spawn without having to define them as a new item. --- code/modules/customitems/item_spawning.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/customitems/item_spawning.dm b/code/modules/customitems/item_spawning.dm index 98321a82954..e68e41abed1 100644 --- a/code/modules/customitems/item_spawning.dm +++ b/code/modules/customitems/item_spawning.dm @@ -37,7 +37,7 @@ */ // Grab the info we want. - var/DBQuery/query = dbcon.NewQuery("SELECT cuiPath, cuiPropAdjust, cuiJobMask, cuiDescription FROM CustomUserItems WHERE cuiCKey='[M.ckey]' AND (cuiRealName='[M.real_name]' OR cuiRealName='*')") + var/DBQuery/query = dbcon.NewQuery("SELECT cuiPath, cuiPropAdjust, cuiJobMask, cuiDescription, cuiItemName FROM CustomUserItems WHERE cuiCKey='[M.ckey]' AND (cuiRealName='[M.real_name]' OR cuiRealName='*')") query.Execute() while(query.NextRow()) @@ -59,6 +59,7 @@ var/obj/item/Item = new path() var/description = query.item[4] + var/newname = query.item[5] testing("Adding new custom item [query.item[1]] to [key_name_admin(M)]...") if(istype(Item,/obj/item/weapon/card/id)) var/obj/item/weapon/card/id/I = Item @@ -92,6 +93,8 @@ break if(description) Item.desc = description + if(newname) + Item.name = newname //skip: if (ok == 0) // Finally, since everything else failed, place it on the ground From a8ead35ea5cb2e9d7adcb784f07d07dd125ec20e Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Thu, 7 May 2015 17:35:43 -0400 Subject: [PATCH 12/38] Fixes Blob Zombies --- code/game/gamemodes/blob/blobs/factory.dm | 20 ++++++++++---------- code/modules/reagents/Chemistry-Reagents.dm | 13 +++++++++++++ icons/mob/human.dmi | Bin 76003 -> 77982 bytes 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/code/game/gamemodes/blob/blobs/factory.dm b/code/game/gamemodes/blob/blobs/factory.dm index 8a6d9b11013..3b50e03533f 100644 --- a/code/game/gamemodes/blob/blobs/factory.dm +++ b/code/game/gamemodes/blob/blobs/factory.dm @@ -21,7 +21,7 @@ return 0 if(spore_delay > world.time) return 0 - spore_delay = world.time + 150 // 15 seconds + spore_delay = world.time + 100 // 10 seconds new/mob/living/simple_animal/hostile/blobspore(src.loc, src) return 1 @@ -73,14 +73,15 @@ /mob/living/simple_animal/hostile/blobspore/Life() - if(!is_zombie) - for(var/mob/living/carbon/human/H in ListTargets(0)) //Only for people in the same tile + if(!is_zombie && isturf(src.loc)) + for(var/mob/living/carbon/human/H in oview(src,1)) //Only for corpse right next to/on same tile if(H.stat == DEAD) Zombify(H) break ..() /mob/living/simple_animal/hostile/blobspore/proc/Zombify(var/mob/living/carbon/human/H) + is_zombie = 1 if(H.wear_suit) var/obj/item/clothing/suit/armor/A = H.wear_suit if(A.armor && A.armor["melee"]) @@ -92,13 +93,13 @@ melee_damage_lower = 10 melee_damage_upper = 15 icon = H.icon - icon_state = "husk_s" + speak_emote = list("groans") + icon_state = "zombie2_s" H.h_style = null H.update_hair() overlays = H.overlays overlays += image('icons/mob/blob.dmi', icon_state = "blob_head") H.loc = src - is_zombie = 1 loc.visible_message(" The corpse of [H.name] suddenly rises!") /mob/living/simple_animal/hostile/blobspore/Die() @@ -107,17 +108,16 @@ var/turf/location = get_turf(src) // Create the reagents to put into the air, s-acid is yellow and stings a little - create_reagents(50) - reagents.add_reagent("condensedcapsaicin", 10) - reagents.add_reagent("neurotoxin2", 25) - reagents.add_reagent("haloperidol", 15) + create_reagents(25) + + reagents.add_reagent("spores", 25) // Attach the smoke spreader and setup/start it. S.attach(location) S.set_up(reagents, 1, 1, location, 15, 1) // only 1-2 smoke cloud S.start() - del(src) + qdel(src) /mob/living/simple_animal/hostile/blobspore/Destroy() diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 8766271a170..6a7d90a5d32 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -1371,6 +1371,19 @@ datum return + spores + name = "Spore Toxin" + id = "spores" + description = "A toxic spore cloud which blocks vision when ingested." + color = "#9ACD32" + + on_mob_life(var/mob/living/M as mob) + M.adjustToxLoss(0.5) + M.damageoverlaytemp = 60 + M.eye_blurry = max(M.eye_blurry, 3) + ..() + return + /////////////////////////////////////////////////////////////////////////////////////////////////////////////// /* nanites diff --git a/icons/mob/human.dmi b/icons/mob/human.dmi index de5f30e018b9301a186955a9f985cc447e397f9a..cc7cd462bab72aabfb6f1c398894a6f9d2c15f87 100644 GIT binary patch delta 13989 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 delta 12449 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 Date: Thu, 7 May 2015 18:04:12 -0400 Subject: [PATCH 13/38] Makes Owlman's belt reload every 60 seconds --- .../objects/items/weapons/storage/belt.dm | 60 +++++++++++++++---- 1 file changed, 48 insertions(+), 12 deletions(-) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index db68c73ee56..f499f14d2b7 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -346,22 +346,56 @@ desc = "Sometimes people choose justice. Sometimes, justice chooses you..." icon_state = "securitybelt" item_state = "security" - storage_slots = 14 + storage_slots = 6 max_w_class = 3 - max_combined_w_class = 28 // = 14 * 2 + max_combined_w_class = 18 origin_tech = "bluespace=4;syndicate=2" allow_quick_empty = 1 - can_hold = list() - flags = NODROP - New() - ..() - new /obj/item/weapon/grenade/smokebomb(src) - new /obj/item/weapon/grenade/smokebomb(src) - new /obj/item/weapon/grenade/smokebomb(src) - new /obj/item/weapon/grenade/smokebomb(src) - new /obj/item/weapon/legcuffs/bolas(src) - new /obj/item/weapon/legcuffs/bolas(src) + can_hold = list( + "/obj/item/weapon/grenade/smokebomb", + "/obj/item/weapon/legcuffs/bolas" + ) + flags = NODROP + var/smokecount = 0 + var/bolacount = 0 + var/cooldown = 0 + +/obj/item/weapon/storage/belt/bluespace/owlman/New() + ..() + new /obj/item/weapon/grenade/smokebomb(src) + new /obj/item/weapon/grenade/smokebomb(src) + new /obj/item/weapon/grenade/smokebomb(src) + new /obj/item/weapon/grenade/smokebomb(src) + new /obj/item/weapon/legcuffs/bolas(src) + new /obj/item/weapon/legcuffs/bolas(src) + processing_objects.Add(src) + cooldown = world.time + +/obj/item/weapon/storage/belt/bluespace/owlman/process() + if(cooldown < world.time - 600) + smokecount = 0 + var/obj/item/weapon/grenade/smokebomb/S + for(S in src) + smokecount++ + bolacount = 0 + var/obj/item/weapon/legcuffs/bolas/B + for(B in src) + bolacount++ + if(smokecount < 4) + while(smokecount < 4) + new /obj/item/weapon/grenade/smokebomb(src) + smokecount++ + if(bolacount < 2) + while(bolacount < 2) + new /obj/item/weapon/legcuffs/bolas(src) + bolacount++ + cooldown = world.time + update_icon() + + + +/* DEPRECATED DUE TO SUPERHERO CODE AND NODROP // As a last resort, the belt can be used as a plastic explosive with a fixed timer (15 seconds). Naturally, you'll lose all your gear... // Of course, it could be worse. It could spawn a singularity! /obj/item/weapon/storage/belt/bluespace/owlman/afterattack(atom/target as obj|turf, mob/user as mob, flag) @@ -400,6 +434,8 @@ del(target) if (src) del(src) +*/ + /obj/item/weapon/storage/belt/bluespace/attack(mob/M as mob, mob/user as mob, def_zone) return From 547f606677ffd78f9e4d07c77f017ceeb0e29c55 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 7 May 2015 18:20:55 -0400 Subject: [PATCH 14/38] Gave EN's suit minor magnitis, also made affect machine people --- code/modules/clothing/suits/miscellaneous.dm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index fa7465bdf23..dbe8020102f 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -162,6 +162,15 @@ name = "E-N Suit" icon_state = "ensuit" +/obj/item/clothing/suit/corgisuit/en/New() + ..() + processing_objects.Add(src) + +/obj/item/clothing/suit/corgisuit/en/process() + if(prob(2)) + if(!M.anchored && (M.flags & CONDUCT)) + if(istype(S, /mob/living/silicon/ai)) continue + /obj/item/clothing/suit/monkeysuit name = "Monkey Suit" desc = "A suit that looks like a primate" From bfb997f3d2e97a1380b8a927c97acd7b30642652 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 7 May 2015 20:51:47 -0400 Subject: [PATCH 15/38] Gave EN a prototype magnetic spell --- code/datums/spells/magnet.dm | 122 +++++++++++++++++++ code/modules/clothing/suits/miscellaneous.dm | 6 + paradise.dme | 1 + 3 files changed, 129 insertions(+) create mode 100644 code/datums/spells/magnet.dm diff --git a/code/datums/spells/magnet.dm b/code/datums/spells/magnet.dm new file mode 100644 index 00000000000..dbb4b572bbc --- /dev/null +++ b/code/datums/spells/magnet.dm @@ -0,0 +1,122 @@ +/obj/effect/proc_holder/spell/wizard/targeted/magnet + name = "Magnetic Pull" + desc = "Pulls metalic objects from enemies hands with the power of MAGNETS." + charge_type = "recharge" + charge_max = 300 + clothes_req = 0 + invocation = "UN'LTD P'WAH!" + invocation_type = "none" + range = 7 + cooldown_min = 30 + selection_type = "view" + random_target = 1 + var/energy = 0 + var/ready = 0 + var/image/halo = null + icon_power_button = "spell_tech" + + +/obj/effect/proc_holder/spell/wizard/targeted/magnet/Click() + if(!ready) + if(cast_check()) + StartChargeup() + else + if(cast_check(skipcharge=1)) + choose_targets() + return 1 + +/obj/effect/proc_holder/spell/wizard/targeted/magnet/proc/StartChargeup(mob/user = usr) + ready = 1 + user << "You start gathering the power." + halo = image("icon"='icons/effects/effects.dmi',"icon_state" ="electricity","layer" = EFFECTS_LAYER) + user.overlays.Add(halo) + spawn(0) + while(ready) + sleep(1) + energy++ + if(energy >= 100 && ready) + Discharge() + +obj/effect/proc_holder/spell/wizard/targeted/magnet/proc/Reset(mob/user = usr) + ready = 0 + energy = 0 + if(halo) + user.overlays.Remove(halo) + +/obj/effect/proc_holder/spell/wizard/targeted/magnet/revert_cast(mob/user = usr) + user << "No target found in range." + Reset(user) + ..() + +/obj/effect/proc_holder/spell/wizard/targeted/magnet/proc/Discharge(mob/user = usr) + var/mob/living/M = user + //M.electrocute_act(25,"magnet Bolt") + M << "You lose control over the power." + Reset(user) + start_recharge() + + +/obj/effect/proc_holder/spell/wizard/targeted/magnet/cast(list/targets, mob/user = usr) + + var/mob/living/carbon/target = targets[1] + + if(get_dist(user,target)>range) + user << "They are too far away!" + Reset(user) + return + + user.Beam(target,icon_state="lightning",icon='icons/effects/effects.dmi',time=5) + + switch(energy) + if(0 to 25) + if(prob(50)) + for(var/obj/item/I in target.l_hand) + if(I.flags & CONDUCT) + I.throw_at(user, I.throw_range, 4, target) + else + for(var/obj/item/I in target.r_hand) + if(I.flags & CONDUCT) + I.throw_at(user, I.throw_range, 4, target) + playsound(get_turf(target), 'sound/machines/defib_zap.ogg', 50, 1, -1) + if(25 to 75) + for(var/obj/item/I in target.l_hand) + if(I.flags & CONDUCT) + I.throw_at(user, I.throw_range, 4, target) + for(var/obj/item/I in target.r_hand) + if(I.flags & CONDUCT) + I.throw_at(user, I.throw_range, 4, target) + playsound(get_turf(target), 'sound/machines/defib_zap.ogg', 50, 1, -1) + if(75 to 100) + //CHAIN magnet + Bolt(user,target,energy,user) + Reset(user) + +/obj/effect/proc_holder/spell/wizard/targeted/magnet/proc/Bolt(mob/origin,mob/target,bolt_energy,mob/user = usr) + origin.Beam(target,icon_state="lightning",icon='icons/effects/effects.dmi',time=5) + var/mob/living/carbon/current = target + if(bolt_energy < 75) + for(var/obj/item/I in target.l_hand) + if(I.flags & CONDUCT) + I.throw_at(user, I.throw_range, 4, target) + for(var/obj/item/I in target.r_hand) + if(I.flags & CONDUCT) + I.throw_at(user, I.throw_range, 4, target) + playsound(get_turf(current), 'sound/machines/defib_zap.ogg', 50, 1, -1) + else + for(var/obj/item/I in target.l_hand) + if(I.flags & CONDUCT) + I.throw_at(user, I.throw_range, 4, target) + for(var/obj/item/I in target.r_hand) + if(I.flags & CONDUCT) + I.throw_at(user, I.throw_range, 4, target) + playsound(get_turf(current), 'sound/machines/defib_zap.ogg', 50, 1, -1) + var/list/possible_targets = new + for(var/mob/living/M in view_or_range(range,target,"view")) + if(user == M || target == M && los_check(current,M)) // || origin == M ? Not sure double shockings is good or not + continue + possible_targets += M + if(!possible_targets.len) + return + var/mob/living/next = pick(possible_targets) + if(next) + Bolt(current,next,bolt_energy-6,user) // 5 max bounces \ No newline at end of file diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index dbe8020102f..9f819f9985b 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -168,8 +168,14 @@ /obj/item/clothing/suit/corgisuit/en/process() if(prob(2)) + for(var/obj/M in orange(2,src)) if(!M.anchored && (M.flags & CONDUCT)) + step_towards(M,src) + for(var/mob/living/silicon/S in orange(2,src)) if(istype(S, /mob/living/silicon/ai)) continue + step_towards(S,src) + for(var/mob/living/carbon/human/machine/M in orange(2,src)) + step_towards(M,src) /obj/item/clothing/suit/monkeysuit name = "Monkey Suit" diff --git a/paradise.dme b/paradise.dme index 87370cb5516..26da97bd657 100644 --- a/paradise.dme +++ b/paradise.dme @@ -168,6 +168,7 @@ #include "code\datums\spells\inflict_handler.dm" #include "code\datums\spells\knock.dm" #include "code\datums\spells\lightning.dm" +#include "code\datums\spells\magnet.dm" #include "code\datums\spells\mind_transfer.dm" #include "code\datums\spells\projectile.dm" #include "code\datums\spells\summonitem.dm" From a7a927b424ed57c5b7171c612e63aa37b3ae2d3c Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 7 May 2015 20:56:09 -0400 Subject: [PATCH 16/38] Finish up the E-N desc and default spell --- code/modules/mob/living/carbon/superheroes.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/carbon/superheroes.dm b/code/modules/mob/living/carbon/superheroes.dm index 182ff52dadf..d57ff5b56f1 100644 --- a/code/modules/mob/living/carbon/superheroes.dm +++ b/code/modules/mob/living/carbon/superheroes.dm @@ -118,12 +118,12 @@ /datum/superheroes/electro - name = "Electro Negmatic" + name = "Electro-Negmatic" class = "Supevillain" -// desc = "You are LightnIan, the lord of lightning! A freak electrical accident while working in the station's kennel \ - has given you mastery over lightning and a peculiar desire to sniff butts. Although you are a recent addition to the \ - station's hero roster, you intend to leave your mark." -// default_spells = list(/obj/effect/proc_holder/spell/wizard/targeted/lightning/lightnian) + desc = "You were a roboticist, once. Now you are Electro-Negmatic, a name this station will learn to fear. You designed \ + your costume to resemble E-N, your faithful dog that some callous RD destroyed because it was sparking up the plasma. You \ + intend to take your revenge and make them all pay thanks to your magnetic powers." + default_spells = list(/obj/effect/proc_holder/spell/wizard/targeted/magnet) /datum/superheroes/electro/equip(var/mob/living/carbon/human/H) ..() From b20104b3606503905eef8215d46facdd965e594d Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Thu, 7 May 2015 23:31:39 -0400 Subject: [PATCH 17/38] Various Fixes and Tweaks --- code/datums/supplypacks.dm | 7 ++++++ code/game/jobs/job/civilian.dm | 4 ++++ code/game/jobs/job/support.dm | 24 +++++++++++++++++++ .../objects/items/weapons/storage/bags.dm | 5 ++-- .../research/designs/medical_designs.dm | 12 +++++++++- 5 files changed, 49 insertions(+), 3 deletions(-) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 8d0d0b77859..8261ecdf294 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -1022,6 +1022,13 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine containername = "sandstone blocks crate" +/datum/supply_packs/materials/plastic30 + name = "30 Plastic Sheets" + contains = list(/obj/item/stack/sheet/mineral/plastic) + amount = 30 + cost = 25 + containername = "plastic sheets crate" + ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Miscellaneous /////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 5aecb2bb79a..0f33f91769e 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -12,6 +12,10 @@ /datum/job/civilian/equip(var/mob/living/carbon/human/H) if(!H) return 0 + switch(H.backbag) + if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back) + if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) + if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) H.equip_or_collect(new /obj/item/clothing/under/color/random(H), slot_w_uniform) H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes) if(H.backbag == 1) diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm index 832f3422199..46d25c59ea7 100644 --- a/code/game/jobs/job/support.dm +++ b/code/game/jobs/job/support.dm @@ -53,6 +53,10 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 + switch(H.backbag) + if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back) + if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) + if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear) H.equip_or_collect(new /obj/item/clothing/under/rank/chef(H), slot_w_uniform) H.equip_or_collect(new /obj/item/clothing/suit/chef(H), slot_wear_suit) @@ -114,6 +118,10 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 + switch(H.backbag) + if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back) + if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) + if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) H.equip_or_collect(new /obj/item/device/radio/headset/headset_cargo(H), slot_l_ear) H.equip_or_collect(new /obj/item/clothing/under/rank/cargo(H), slot_w_uniform) H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes) @@ -142,6 +150,10 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 + switch(H.backbag) + if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back) + if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) + if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) H.equip_or_collect(new /obj/item/device/radio/headset/headset_cargo(H), slot_l_ear) H.equip_or_collect(new /obj/item/clothing/under/rank/cargotech(H), slot_w_uniform) H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes) @@ -284,6 +296,10 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 + switch(H.backbag) + if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back) + if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) + if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear) H.equip_or_collect(new /obj/item/clothing/under/rank/janitor(H), slot_w_uniform) H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes) @@ -312,6 +328,10 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 + switch(H.backbag) + if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back) + if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) + if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear) H.equip_or_collect(new /obj/item/clothing/under/suit_jacket/red(H), slot_w_uniform) H.equip_or_collect(new /obj/item/device/pda/librarian(H), slot_wear_pda) @@ -338,6 +358,10 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 + switch(H.backbag) + if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back) + if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) + if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear) H.equip_or_collect(new /obj/item/clothing/under/barber(H), slot_w_uniform) H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes) diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index a9dd6356bc0..349aaa62553 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -78,7 +78,8 @@ throwforce = 0 w_class = 4 max_w_class = 2 - storage_slots = 21 + storage_slots = 7 + display_contents_with_number = 0 //or else this will lead to stupid behavior. can_hold = list() // any cant_hold = list("/obj/item/weapon/disk/nuclear","/obj/item/flag/nation") var/head = 0 @@ -107,7 +108,7 @@ H.losebreath += 1 else head = 0 - storage_slots = 21 + storage_slots = 7 processing_objects.Remove(src) return diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 44eb8c6cf1e..ab00accccca 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -45,11 +45,21 @@ build_path = /obj/item/device/robotanalyzer category = list("Medical") +/datum/design/healthanalyzer + name = "Health Analyzer Upgrade" + desc = "A hand-held body scanner able to distinguish vital signs of the subject." + id = "healthanalyzer" + req_tech = list("biotech" = 2, "magnets" = 2) + build_type = PROTOLATHE + materials = list("$metal" = 20, "$glass" = 20) + build_path = /obj/item/device/healthanalyzer + category = list("Medical") + /datum/design/healthanalyzer_upgrade name = "Health Analyzer Upgrade" desc = "An upgrade unit for expanding the functionality of a health analyzer." id = "healthanalyzer_upgrade" - req_tech = list("biotech" = 2, "magnets" = 2) + req_tech = list("biotech" = 2, "magnets" = 3) build_type = PROTOLATHE materials = list("$metal" = 20, "$glass" = 20) build_path = /obj/item/device/healthupgrade From 01a8fabaac68604ed225f7528488f00ee493e9ad Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 7 May 2015 23:51:15 -0400 Subject: [PATCH 18/38] Removed full access for supers --- code/modules/mob/living/carbon/superheroes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/superheroes.dm b/code/modules/mob/living/carbon/superheroes.dm index d57ff5b56f1..fb4f597bbae 100644 --- a/code/modules/mob/living/carbon/superheroes.dm +++ b/code/modules/mob/living/carbon/superheroes.dm @@ -40,7 +40,7 @@ /datum/superheroes/proc/assign_id(var/mob/living/carbon/human/H) var/obj/item/weapon/card/id/syndicate/W = new(H) W.registered_name = H.real_name - W.access = get_all_accesses() + W.access = list(access_maint_tunnels) if(class == "Superhero") W.name = "[H.real_name]'s ID Card (Superhero)" W.assignment = "Superhero" From d8e6893e359a635127d4cd2920e324b60154bf89 Mon Sep 17 00:00:00 2001 From: Krausus Date: Fri, 8 May 2015 07:20:44 -0400 Subject: [PATCH 19/38] Improves dumping of "quick" containers Allows all "quick" containers to be dumped into a disposal (click) or onto a table (drag-drop). --- .../objects/items/weapons/storage/storage.dm | 12 ++++++++++ code/modules/recycling/disposal.dm | 24 +++++++------------ 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index b22b813d1c1..e705521954d 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -38,6 +38,18 @@ show_to(M) return + if((allow_quick_empty || allow_quick_gather) && istype(over_object, /obj/structure/table) \ + && contents.len && over_object.Adjacent(usr)) + var/turf/T = get_turf(over_object) + hide_from(usr) + usr.face_atom(src) + usr.visible_message("[usr] empties \the [src] onto \the [over_object].", + "You empty \the [src] onto \the [over_object].") + for(var/obj/item/I in contents) + remove_from_storage(I, T) + update_icon() // For content-sensitive icons + return + if (!( istype(over_object, /obj/screen) )) return ..() if (!(src.loc == usr) || (src.loc && src.loc.loc == usr)) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index d1506aa8dbc..5bc8b20a6bb 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -93,22 +93,14 @@ user << "You can't place that item inside the disposal unit." return - if(istype(I, /obj/item/weapon/storage/bag/trash)) - var/obj/item/weapon/storage/bag/trash/T = I - if(T.contents.len) - user << "\blue You empty the bag." - for(var/obj/item/O in T.contents) - T.remove_from_storage(O,src) - T.update_icon() - update() - return - - if(istype(I, /obj/item/weapon/storage/part_replacer)) - var/obj/item/weapon/storage/part_replacer/P = I - if(P.contents.len) - user << "\blue You empty the RPED's contents." - for(var/obj/item/O in P.contents) - P.remove_from_storage(O,src) + if(istype(I, /obj/item/weapon/storage)) + var/obj/item/weapon/storage/S = I + if((S.allow_quick_empty || S.allow_quick_gather) && S.contents.len) + S.hide_from(user) + user.visible_message("[user] empties \the [S] into \the [src].", "You empty \the [S] into \the [src].") + for(var/obj/item/O in S.contents) + S.remove_from_storage(O, src) + S.update_icon() // For content-sensitive icons update() return From a764cfdadac7bc3ef1586a9dd18d6a7d6374a986 Mon Sep 17 00:00:00 2001 From: SirBloodBuske Date: Fri, 8 May 2015 05:49:22 -0700 Subject: [PATCH 20/38] Intercom Frame Icon fix --- .../items/mountable_frames/intercom.dm | 2 +- icons/obj/monitors.dmi | Bin 44940 -> 45282 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/mountable_frames/intercom.dm b/code/game/objects/items/mountable_frames/intercom.dm index 3b0f95f927a..e6e2cd3a6bd 100644 --- a/code/game/objects/items/mountable_frames/intercom.dm +++ b/code/game/objects/items/mountable_frames/intercom.dm @@ -2,7 +2,7 @@ name = "Intercom Frame" desc = "Used for building intercoms" icon = 'icons/obj/monitors.dmi' - icon_state = "intercom_f" + icon_state = "intercom-frame" mount_reqs = list("simfloor", "nospace") /obj/item/mounted/frame/intercom/do_build(turf/on_wall, mob/user) diff --git a/icons/obj/monitors.dmi b/icons/obj/monitors.dmi index 118d6d20a109c1560c9f710238b489c303107e29..5b836b68395ee4f4dcb1044cc9ca35f6b38ac523 100644 GIT binary patch delta 19953 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 PDAaC8H;4OnfiZsplGf2Z From ac14f6ebc803b29841b5349aefb416caa8bf40ad Mon Sep 17 00:00:00 2001 From: DZD Date: Fri, 8 May 2015 15:19:35 -0400 Subject: [PATCH 21/38] Removes NO_PAIN species being stun immune --- code/modules/mob/living/carbon/human/life.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 46258883eb5..71226aa8bfb 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1808,9 +1808,6 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc return slurring /mob/living/carbon/human/handle_stunned() - if(species.flags & NO_PAIN) - stunned = 0 - return 0 if(..()) speech_problem_flag = 1 return stunned From cb0a65b96fb8a1424222b13e2ff90332915a4c69 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Fri, 8 May 2015 17:32:34 -0400 Subject: [PATCH 22/38] Let's try this --- code/modules/projectiles/ammunition.dm | 9 +- .../projectiles/ammunition/ammo_casings.dm | 12 +-- code/modules/projectiles/gun.dm | 84 +++++++++++-------- code/modules/projectiles/projectile.dm | 4 + 4 files changed, 67 insertions(+), 42 deletions(-) diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 136d589b75d..4bd1032aa4a 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -10,8 +10,9 @@ var/caliber = "" //Which kind of guns it can be loaded into var/projectile_type = ""//The bullet type to create when New() is called var/obj/item/projectile/BB = null //The loaded bullet - var/buck = 0 + var/pellets = 0 var/deviation = 0 + var/spread = 0 /obj/item/ammo_casing/New() @@ -50,6 +51,12 @@ else user << "\blue There is no bullet in the casing to inscribe anything into." +/obj/item/ammo_casing/proc/newshot() //For energy weapons, shotgun shells and wands (!). + if (!BB) + BB = new projectile_type(src) + return + + //Boxes of ammo /obj/item/ammo_box diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index b6313d6eae4..0e56fb17009 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -46,7 +46,7 @@ desc = "A 12 gauge buckshot shell." icon_state = "gshell" projectile_type = "/obj/item/projectile/bullet/pellet" - buck = 5 + pellets = 5 deviation = 0.8 @@ -64,7 +64,7 @@ icon_state = "gshell" projectile_type = "/obj/item/projectile/bullet/pellet/weak" m_amt = 250 - buck = 5 + pellets = 5 deviation = 0.8 /obj/item/ammo_casing/shotgun/improvised/overload @@ -74,12 +74,12 @@ icon_state = "improvshell" projectile_type = /obj/item/projectile/bullet/pellet/random m_amt = 250 - buck = 5 + pellets = 5 deviation = 1.0 /obj/item/ammo_casing/shotgun/improvised/overload/New() ..() - buck = rand(3, 8) + pellets = rand(3, 8) /obj/item/ammo_casing/shotgun/stunslug name = "taser slug" @@ -120,7 +120,7 @@ desc = "A shotgun shell which fires a spread of incendiary pellets." icon_state = "ishell2" projectile_type = "/obj/item/projectile/bullet/incendiary/shell/dragonsbreath" - buck = 4 + pellets = 4 deviation = 0.9 /obj/item/ammo_casing/shotgun/ion @@ -129,7 +129,7 @@ The unique properties of the crystal splot the pulse into a spread of individually weaker bolts." icon_state = "ionshell" projectile_type = /obj/item/projectile/ion/weak - buck = 4 + pellets = 4 deviation = 0.9 /obj/item/ammo_casing/shotgun/laserslug diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index a9ef5784dcc..f086b38988b 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -35,13 +35,14 @@ var/automatic = 0 //Used to determine if you can target multiple people. var/tmp/mob/living/last_moved_mob //Used to fire faster at more than one person. var/tmp/told_cant_shoot = 0 //So that it doesn't spam them with the fact they cannot hit them. - var/firerate = 1 // 0 for one bullet after tarrget moves and aim is lowered, + var/firerate = 1 // 0 for one bullet after tarrget moves and aim is lowered, //1 for keep shooting until aim is lowered var/fire_delay = 0 var/last_fired = 0 var/obj/item/device/flashlight/F = null var/can_flashlight = 0 var/heavy_weapon = 0 + var/randomspread = 0 proc/ready_to_fire() if(world.time >= last_fired + fire_delay) @@ -73,8 +74,8 @@ return /obj/item/weapon/gun/afterattack(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, flag, params) - if(flag) return //we're placing gun on a table or in backpack - if(istype(target, /obj/machinery/recharger) && istype(src, /obj/item/weapon/gun/energy)) return//Shouldnt flag take care of this? + if(flag) return //we're placing gun on a table or in backpack + if(istype(target, /obj/machinery/recharger) && istype(src, /obj/item/weapon/gun/energy)) return//Shouldnt flag take care of this? if(user && user.client && user.client.gun_mode && !(A in target)) PreFire(A,user,params) //They're using the new gun system, locate what they're aiming at. else @@ -180,28 +181,47 @@ in_chamber.yo = targloc.y - curloc.y in_chamber.xo = targloc.x - curloc.x - if(istype(user, /mob/living/carbon)) + + var/spread = 0 + if(istype(user, /mob/living/carbon)) //Instead of modifying projectile's originl pixels, we can increase spread. var/mob/living/carbon/mob = user if(mob.shock_stage > 120) - in_chamber.yo += rand(-2,2) - in_chamber.xo += rand(-2,2) + spread += rand(-2,2) else if(mob.shock_stage > 70) - in_chamber.yo += rand(-1,1) - in_chamber.xo += rand(-1,1) + spread += rand(-1,1) + if(params) + var/list/mouse_control = params2list(params) + if(mouse_control["icon-x"]) + in_chamber.p_x = text2num(mouse_control["icon-x"]) + if(mouse_control["icon-y"]) + in_chamber.p_y = text2num(mouse_control["icon-y"]) + if(mouse_control["screen-loc"]) + //Split screen-loc up into X+Pixel_X and Y+Pixel_Y + var/list/screen_loc_params = text2list(mouse_control["screen-loc"], ",") + + //Split X+Pixel_X up into list(X, Pixel_X) + var/list/screen_loc_X = text2list(screen_loc_params[1],":") + + //Split Y+Pixel_Y up into list(Y, Pixel_Y) + var/list/screen_loc_Y = text2list(screen_loc_params[2],":") + + var/x = text2num(screen_loc_X[1]) * 32 + text2num(screen_loc_X[2]) - 32 + var/y = text2num(screen_loc_Y[1]) * 32 + text2num(screen_loc_Y[2]) - 32 + var/ox = round(544/2) //"origin" x - Basically center of the screen. This is a bad way of doing it because if you are able to view MORE than 17 tiles at a time your aim will get fucked. + var/oy = round(544/2) //"origin" y - Basically center of the screen. + + var/angle = Atan2(y - oy, x - ox) + + in_chamber.Angle = angle + + if(chambered) + for (var/i = max(1, chambered.pellets), i > 0, i--) //Previous way of doing it fucked up math for spreading. This way, even the first projectile is part of the spread code. + if(randomspread) //Random spread + spread = (rand() - 0.5) * chambered.deviation + else //Smart spread + spread = (i / chambered.pellets - 0.5) * chambered.deviation - if(chambered) // Beep boop buckshot - var/target_x = targloc.x - var/target_y = targloc.y - var/target_z = targloc.z - if(in_chamber) - in_chamber.process() - while(chambered.buck > 0) - var/dx = round(gaussian(0,chambered.deviation),1) - var/dy = round(gaussian(0,chambered.deviation),1) - targloc = locate(target_x+dx, target_y+dy, target_z) - if(!targloc || targloc == curloc) - break in_chamber = new chambered.projectile_type() prepare_shot(in_chamber) in_chamber.original = target @@ -210,26 +230,19 @@ in_chamber.current = curloc in_chamber.yo = targloc.y - curloc.y in_chamber.xo = targloc.x - curloc.x + if(spread) + in_chamber.Angle += chambered.spread if(in_chamber) in_chamber.process() - chambered.buck-- - - - if(params) - var/list/mouse_control = params2list(params) - if(mouse_control["icon-x"]) - in_chamber.p_x = text2num(mouse_control["icon-x"]) - if(mouse_control["icon-y"]) - in_chamber.p_y = text2num(mouse_control["icon-y"]) - - spawn() + else + if(spread) + in_chamber.Angle += chambered.spread if(in_chamber) in_chamber.process() - sleep(1) - in_chamber = null + sleep(1) + in_chamber = null update_icon() - if(user.hand) user.update_inv_l_hand() else @@ -378,4 +391,5 @@ if(F) if(F.on) user.AddLuminosity(-F.brightness_on) - SetLuminosity(F.brightness_on) \ No newline at end of file + SetLuminosity(F.brightness_on) + diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 8424fb54b69..0bb0b887a6e 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -60,6 +60,10 @@ var/chatlog_attacks = 1 + var/speed = 1 //Amount of deciseconds it takes for projectile to travel. Animation is adjusted accordingly. + var/Angle = 0 //For new projectiles + var/spread = 0 //Amount of degrees by which the projectiles will be spread DURING MOVEMENT. It exists for chaotic types of projectiles, like bees or something. + proc/delete() // Garbage collect the projectiles loc = null From a05e70585e8c111b559a96436f97ab3558810b97 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Fri, 8 May 2015 17:59:42 -0400 Subject: [PATCH 23/38] Fixes --- code/modules/projectiles/ammunition.dm | 2 +- code/modules/projectiles/ammunition/ammo_casings.dm | 7 ++++--- code/modules/projectiles/projectile.dm | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 4bd1032aa4a..6b23a7dae2f 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -10,7 +10,7 @@ var/caliber = "" //Which kind of guns it can be loaded into var/projectile_type = ""//The bullet type to create when New() is called var/obj/item/projectile/BB = null //The loaded bullet - var/pellets = 0 + var/pellets = 1 var/deviation = 0 var/spread = 0 diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index 0e56fb17009..50b5aa6ad6c 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -48,6 +48,7 @@ projectile_type = "/obj/item/projectile/bullet/pellet" pellets = 5 deviation = 0.8 + deviation = 30 /obj/item/ammo_casing/shotgun/beanbag @@ -65,7 +66,7 @@ projectile_type = "/obj/item/projectile/bullet/pellet/weak" m_amt = 250 pellets = 5 - deviation = 0.8 + deviation = 30 /obj/item/ammo_casing/shotgun/improvised/overload name = "overloaded improvised shell" @@ -121,7 +122,7 @@ icon_state = "ishell2" projectile_type = "/obj/item/projectile/bullet/incendiary/shell/dragonsbreath" pellets = 4 - deviation = 0.9 + deviation = 30 /obj/item/ammo_casing/shotgun/ion name = "ion shell" @@ -130,7 +131,7 @@ icon_state = "ionshell" projectile_type = /obj/item/projectile/ion/weak pellets = 4 - deviation = 0.9 + deviation = 30 /obj/item/ammo_casing/shotgun/laserslug name = "laser slug" diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 0bb0b887a6e..251b9b568ea 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -19,6 +19,7 @@ pass_flags = PASSTABLE mouse_opacity = 0 hitsound = 'sound/weapons/pierce.ogg' + animate_movement = 0 var/bumped = 0 //Prevents it from hitting more than one guy at once var/def_zone = "" //Aiming at var/mob/firer = null//Who shot it From a02f56071138d4860ef3a2afa27205e4340f6d6d Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Fri, 8 May 2015 18:32:00 -0400 Subject: [PATCH 24/38] [Goonchem] Cryox/Clonex Change --- code/game/objects/items/random_items.dm | 2 +- code/game/objects/items/weapons/grenades.dm | 2 +- code/modules/reagents/Chemistry-Reagents.dm | 18 ++---------------- code/modules/reagents/Chemistry-Recipes.dm | 14 +++----------- code/setup.dm | 2 +- 5 files changed, 8 insertions(+), 30 deletions(-) diff --git a/code/game/objects/items/random_items.dm b/code/game/objects/items/random_items.dm index 0bbd8ba35aa..1a6ab66a72e 100644 --- a/code/game/objects/items/random_items.dm +++ b/code/game/objects/items/random_items.dm @@ -61,7 +61,7 @@ // identify_probability = 0 New() ..() - var/global/list/chems_only = list("slimejelly","blood","water","lube","charcoal","toxin","cyanide","morphine","epinephrine","space_drugs","serotrotium","oxygen","copper","nitrogen","hydrogen","potassium","mercury","sulfur","carbon","chlorine","fluorine","sodium","phosphorus","lithium","sugar","sacid","facid","glycerol","radium","mutadone","thermite","mutagen","virusfood","iron","gold","silver","uranium","aluminum","silicon","fuel","cleaner","atrazine","plasma","teporone","lexorin","silver_sulfadiazine","salbutamol","perfluorodecalin","omnizine","synaptizine","haloperidol","potass_iodide","pen_acid","mannitol","oculine","styptic_powder","methamphetamine","cryoxadone","clonexadone","spaceacillin","carpotoxin","mindbreaker","fluorosurfactant","fluorosurfactant","ethanol","ammonia","diethylamine","antihol","pancuronium","lipolicide","condensedcapsaicin","frostoil","amanitin","psilocybin","enzyme","nothing","salglu_solution","antifreeze","neurotoxin") + var/global/list/chems_only = list("slimejelly","blood","water","lube","charcoal","toxin","cyanide","morphine","epinephrine","space_drugs","serotrotium","oxygen","copper","nitrogen","hydrogen","potassium","mercury","sulfur","carbon","chlorine","fluorine","sodium","phosphorus","lithium","sugar","sacid","facid","glycerol","radium","mutadone","thermite","mutagen","virusfood","iron","gold","silver","uranium","aluminum","silicon","fuel","cleaner","atrazine","plasma","teporone","lexorin","silver_sulfadiazine","salbutamol","perfluorodecalin","omnizine","synaptizine","haloperidol","potass_iodide","pen_acid","mannitol","oculine","styptic_powder","methamphetamine","cryoxadone","spaceacillin","carpotoxin","mindbreaker","fluorosurfactant","fluorosurfactant","ethanol","ammonia","diethylamine","antihol","pancuronium","lipolicide","condensedcapsaicin","frostoil","amanitin","psilocybin","enzyme","nothing","salglu_solution","antifreeze","neurotoxin") var/global/list/rare_chems = list("minttoxin","nanites","xenomicrobes","adminordrazine") var/datum/reagent/R = pick(chems_only + rare_chems) diff --git a/code/game/objects/items/weapons/grenades.dm b/code/game/objects/items/weapons/grenades.dm index 74d2038edb7..3d6c101a109 100644 --- a/code/game/objects/items/weapons/grenades.dm +++ b/code/game/objects/items/weapons/grenades.dm @@ -30,7 +30,7 @@ B1.reagents.add_reagent("blood",60) if(prob(5)) B1.reagents.add_reagent("blood",1) // Quality control problems, causes a mess - B2.reagents.add_reagent("clonexadone",30) + B2.reagents.add_reagent("cryoxadone",30) beakers += B1 beakers += B2 diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 8766271a170..b8aab9cf616 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -1270,25 +1270,11 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom - if(M.bodytemperature < 170) - M.adjustCloneLoss(-1) + if(M.bodytemperature < 265) + M.adjustCloneLoss(-4) M.adjustOxyLoss(-10) M.heal_organ_damage(12,12) M.adjustToxLoss(-3) - ..() - return - - clonexadone - name = "Clonexadone" - id = "clonexadone" - description = "A liquid compound similar to that used in the cloning process. Can be used to 'finish' clones that get ejected early when used in conjunction with a cryo tube." - reagent_state = LIQUID - color = "#0000C8" // rgb: 200, 165, 220 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(M.bodytemperature < 170) - M.adjustCloneLoss(-3) M.status_flags &= ~DISFIGURED ..() return diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 00f9a662b91..f4fc2e30b34 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -113,8 +113,8 @@ datum name = "mitocholide" id = "mitocholide" result = "mitocholide" - required_reagents = list("synthflesh" = 1, "clonexadone" = 1) - result_amount = 2 + required_reagents = list("synthflesh" = 1, "cryoxadone" = 1, "plasma" = 1) + result_amount = 3 holy_water name = "Holy Water" @@ -132,14 +132,6 @@ datum result_amount = 4 mix_message = "The solution bubbles softly." - clonexadone - name = "Clonexadone" - id = "clonexadone" - result = "clonexadone" - required_reagents = list("cryoxadone" = 1, "sodium" = 1) - required_catalysts = list("plasma" = 5) - result_amount = 2 - spaceacillin name = "Spaceacillin" id = "spaceacillin" @@ -983,7 +975,7 @@ datum name = "Syntiflesh" id = "syntiflesh" result = null - required_reagents = list("blood" = 5, "clonexadone" = 1) + required_reagents = list("blood" = 5, "cryoxadone" = 1) result_amount = 1 on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) diff --git a/code/setup.dm b/code/setup.dm index f629ab3b14f..c14124cb929 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -795,7 +795,7 @@ var/list/be_special_flags = list( #define PULSE_THREADY 5 //occurs during hypovolemic shock //feel free to add shit to lists below var/list/tachycardics = list("coffee", "methamphetamine", "nitroglycerin", "thirteenloko", "nicotine") //increase heart rate -var/list/bradycardics = list("neurotoxin", "cryoxadone", "clonexadone", "space_drugs") //decrease heart rate +var/list/bradycardics = list("neurotoxin", "cryoxadone", "space_drugs") //decrease heart rate var/list/heartstopper = list("capulettium", "capulettium_plus") //this stops the heart var/list/cheartstopper = list() //this stops the heart when overdose is met -- c = conditional From ad691e42bfbd1f01dcc719a05e73038829e23924 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Sat, 9 May 2015 00:11:32 -0400 Subject: [PATCH 25/38] uniquelist proc optimization (used once in code) --- code/__HELPERS/lists.dm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index 6f5a9d4e5c1..07e37e1fa9c 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -168,11 +168,9 @@ proc/listclearnulls(list/list) //Return a list with no duplicate entries /proc/uniquelist(var/list/L) - var/list/K = list() - for(var/item in L) - if(!(item in K)) - K += item - return K + . = list() + for(var/i in L) + . |= i //Mergesort: divides up the list into halves to begin the sort /proc/sortKey(var/list/client/L, var/order = 1) From 1029e9afe1f8dbee78c0bfeeee378e0d58e2ee52 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Sat, 9 May 2015 01:56:25 -0400 Subject: [PATCH 26/38] Ports VG's DeityLink's new explosion method --- code/controllers/configuration.dm | 4 + code/game/atoms.dm | 4 + code/game/machinery/doors/airlock.dm | 2 + code/game/machinery/doors/poddoor.dm | 25 +++++ code/game/machinery/doors/unpowered.dm | 2 +- code/game/objects/explosion.dm | 102 +++++++++++++++++- code/game/turfs/simulated/floor_types.dm | 13 +++ code/game/turfs/simulated/walls.dm | 1 + code/game/turfs/simulated/walls_mineral.dm | 4 + code/game/turfs/simulated/walls_reinforced.dm | 2 +- code/game/turfs/unsimulated/walls.dm | 1 + code/modules/admin/admin_verbs.dm | 3 +- 12 files changed, 155 insertions(+), 8 deletions(-) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index e512fefc53a..a25c43cbbaf 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -62,6 +62,7 @@ var/automute_on = 0 //enables automuting/spam prevention var/jobs_have_minimal_access = 0 //determines whether jobs use minimal access or expanded access. + var/reactionary_explosions = 0 //If we use reactionary explosions, explosions that react to walls and doors var/assistantlimit = 0 //enables assistant limiting var/assistantratio = 2 //how many assistants to security members @@ -340,6 +341,9 @@ if("protect_roles_from_antagonist") config.protect_roles_from_antagonist = 1 + if("reactionary_explosions") + config.reactionary_explosions = 1 + if ("probability") var/prob_pos = findtext(value, " ") var/prob_name = null diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 108c4c8b2f6..d5317a1586d 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -22,6 +22,10 @@ var/global/list/ghdel_profiling = list() // replaced by OPENCONTAINER flags and atom/proc/is_open_container() ///Chemistry. + + //Value used to increment ex_act() if reactionary_explosions is on + var/explosion_block = 0 + //Detective Work, used for the duplicate data points kept in the scanners var/list/original_atom diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 64f9bc02add..ec8b45ef78b 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -49,6 +49,7 @@ var/hasShocked = 0 //Prevents multiple shocks from happening var/frozen = 0 //special condition for airlocks that are frozen shut, this will look weird on not normal airlocks because of a lack of special overlays. autoclose = 1 + explosion_block = 1 /obj/machinery/door/airlock/command name = "Airlock" @@ -283,6 +284,7 @@ name = "High Tech Security Airlock" icon = 'icons/obj/doors/hightechsecurity.dmi' assembly_type = /obj/structure/door_assembly/door_assembly_highsecurity + explosion_block = 2 /obj/machinery/door/airlock/highsecurity/red name = "Secure Armory Airlock" diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index 7348a57181c..36f62d6befd 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/doors/rapid_pdoor.dmi' icon_state = "pdoor1" var/id = 1.0 + explosion_block = 3 /obj/machinery/door/poddoor/preopen icon_state = "pdoor0" @@ -24,6 +25,30 @@ else return 0 +//"BLAST" doors are obviously stronger than regular doors when it comes to BLASTS. +/obj/machinery/door/poddoor/ex_act(severity, target) + switch(severity) + if(1.0) + if(prob(80)) + qdel(src) + else + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(2, 1, src) + s.start() + if(2.0) + if(prob(20)) + qdel(src) + else + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(2, 1, src) + s.start() + + if(3.0) + if(prob(80)) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(2, 1, src) + s.start() + /obj/machinery/door/poddoor/attackby(obj/item/weapon/C as obj, mob/user as mob, params) src.add_fingerprint(user) if (!( istype(C, /obj/item/weapon/crowbar) || (istype(C, /obj/item/weapon/twohanded/fireaxe) && C:wielded == 1) )) diff --git a/code/game/machinery/doors/unpowered.dm b/code/game/machinery/doors/unpowered.dm index 8e03e874a71..90e71dc7b83 100644 --- a/code/game/machinery/doors/unpowered.dm +++ b/code/game/machinery/doors/unpowered.dm @@ -1,7 +1,7 @@ /obj/machinery/door/unpowered autoclose = 0 var/locked = 0 - + explosion_block = 1 Bumped(atom/AM) if(src.locked) diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index d8a5172888f..139788890b9 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -74,16 +74,40 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa for(var/turf/T in trange(max_range, epicenter)) var/dist = cheap_pythag(T.x - x0,T.y - y0) + if(config.reactionary_explosions) + var/turf/Trajectory = T + while(Trajectory != epicenter) + Trajectory = get_step_towards(Trajectory, epicenter) + if(Trajectory.density && Trajectory.explosion_block) + dist += Trajectory.explosion_block + + for(var/obj/machinery/door/D in Trajectory) + if(D.density && D.explosion_block) + dist += D.explosion_block + + var/throw_dist = dist + if(dist < devastation_range) dist = 1 else if(dist < heavy_impact_range) dist = 2 else if(dist < light_impact_range) dist = 3 - else continue + else dist = 0 - T.ex_act(dist) if(T) - for(var/atom_movable in T.contents) //bypass type checking since only atom/movable can be contained by turfs anyway - var/atom/movable/AM = atom_movable - if(AM) AM.ex_act(dist) +// if(flame_dist && prob(40) && !istype(T, /turf/space) && !T.density) +// PoolOrNew(/obj/effect/hotspot, T) //Mostly for ambience! + if(dist > 0) + T.ex_act(dist) + + //--- THROW ITEMS AROUND --- + + var/throw_dir = get_dir(epicenter,T) + for(var/obj/item/I in T) + spawn(0) //Simultaneously not one at a time + if(I) + var/throw_range = rand(throw_dist, max_range) + var/turf/throw_at = get_ranged_target_turf(I, throw_dir, throw_range) + I.throw_speed = 4 //Temporarily change their throw_speed for embedding purposes (Reset when it finishes throwing, regardless of hitting anything) + I.throw_at(throw_at, throw_range, 2)//Throw it at 2 speed, this is purely visual anyway. var/took = (world.timeofday-start)/10 //You need to press the DebugGame verb to see these now....they were getting annoying and we've collected a fair bit of data. Just -test- changes to explosion code using this please so we can compare @@ -109,3 +133,71 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa proc/secondaryexplosion(turf/epicenter, range) for(var/turf/tile in trange(range, epicenter)) tile.ex_act(2) + +/client/proc/check_bomb_impacts() + set name = "Check Bomb Impact" + set category = "Debug" + + var/newmode = alert("Use reactionary explosions?","Check Bomb Impact", "Yes", "No") + + var/turf/epicenter = get_turf(src) + var/dev = 0 + var/heavy = 0 + var/light = 0 + var/list/choices = list("Small Bomb","Medium Bomb","Big Bomb","Custom Bomb") + var/choice = input("Bomb Size?") in choices + switch(choice) + if(null) + return 0 + if("Small Bomb") + dev = 1 + heavy = 2 + light = 3 + if("Medium Bomb") + dev = 2 + heavy = 3 + light = 4 + if("Big Bomb") + dev = 3 + heavy = 5 + light = 7 + if("Custom Bomb") + dev = input("Devestation range (Tiles):") as num + heavy = input("Heavy impact range (Tiles):") as num + light = input("Light impact range (Tiles):") as num + + var/max_range = max(dev, heavy, light) + var/x0 = epicenter.x + var/y0 = epicenter.y + var/list/wipe_colours = list() + for(var/turf/T in trange(max_range, epicenter)) + wipe_colours += T + var/dist = cheap_pythag(T.x - x0, T.y - y0) + + if(newmode == "Yes") + var/turf/TT = T + while(TT != epicenter) + TT = get_step_towards(TT,epicenter) + if(TT.density && TT.explosion_block) + dist += TT.explosion_block + + for(var/obj/machinery/door/D in TT) + if(D.density && D.explosion_block) + dist += D.explosion_block + + if(dist < dev) + T.color = "red" + T.maptext = "Dev" + else if (dist < heavy) + T.color = "yellow" + T.maptext = "Heavy" + else if (dist < light) + T.color = "blue" + T.maptext = "Light" + else + continue + + sleep(100) + for(var/turf/T in wipe_colours) + T.color = null + T.maptext = "" diff --git a/code/game/turfs/simulated/floor_types.dm b/code/game/turfs/simulated/floor_types.dm index 91e4fd2a9b9..5ea347aa51e 100644 --- a/code/game/turfs/simulated/floor_types.dm +++ b/code/game/turfs/simulated/floor_types.dm @@ -66,6 +66,19 @@ F.make_plating() return +/turf/simulated/floor/engine/ex_act(severity,target) + switch(severity) + if(1.0) + if(prob(80)) + ReplaceWithLattice() + else if(prob(50)) + qdel(src) + else + make_plating(1) + if(2.0) + if(prob(50)) + make_plating(1) + /turf/simulated/floor/engine/cult name = "engraved floor" icon_state = "cult" diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 7dbaa7b2492..e4c61e1c754 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -16,6 +16,7 @@ opacity = 1 density = 1 blocks_air = 1 + explosion_block = 1 thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT heat_capacity = 312500 //a little over 5 cm thick , 312500 for 1 m by 2.5 m by 0.25 m plasteel wall diff --git a/code/game/turfs/simulated/walls_mineral.dm b/code/game/turfs/simulated/walls_mineral.dm index 393ff4beb8e..6e5aa0c33a8 100644 --- a/code/game/turfs/simulated/walls_mineral.dm +++ b/code/game/turfs/simulated/walls_mineral.dm @@ -11,6 +11,7 @@ icon_state = "gold0" walltype = "gold" mineral = "gold" + explosion_block = 0 //gold is a soft metal you dingus. //var/electro = 1 //var/shocked = null @@ -29,6 +30,7 @@ icon_state = "diamond0" walltype = "diamond" mineral = "diamond" + explosion_block = 3 /turf/simulated/wall/mineral/clown name = "bananium wall" @@ -43,6 +45,7 @@ icon_state = "sandstone0" walltype = "sandstone" mineral = "sandstone" + explosion_block = 0 /turf/simulated/wall/mineral/uranium name = "uranium wall" @@ -50,6 +53,7 @@ icon_state = "uranium0" walltype = "uranium" mineral = "uranium" + explosion_block = 0 /turf/simulated/wall/mineral/uranium/proc/radiate() if(!active) diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm index 2ef06abefae..bf79c84e7c0 100644 --- a/code/game/turfs/simulated/walls_reinforced.dm +++ b/code/game/turfs/simulated/walls_reinforced.dm @@ -4,7 +4,7 @@ icon_state = "r_wall" opacity = 1 density = 1 - + explosion_block = 2 damage_cap = 200 max_temperature = 6000 diff --git a/code/game/turfs/unsimulated/walls.dm b/code/game/turfs/unsimulated/walls.dm index ca422c46cd6..27b057e5fce 100644 --- a/code/game/turfs/unsimulated/walls.dm +++ b/code/game/turfs/unsimulated/walls.dm @@ -4,6 +4,7 @@ icon_state = "riveted" opacity = 1 density = 1 + explosion_block = 2 /turf/unsimulated/wall/fakeglass name = "window" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 5b151c850c2..ae3f2c2a5d9 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -144,7 +144,8 @@ var/list/admin_verbs_debug = list( /client/proc/toggledebuglogs, /client/proc/qdel_toggle, // /vg/ /client/proc/gc_dump_hdl, - /client/proc/debugNatureMapGenerator + /client/proc/debugNatureMapGenerator, + /client/proc/check_bomb_impacts ) var/list/admin_verbs_possess = list( /proc/possess, From 5567c99a44ff6ef512c4689f14569db7b454e90d Mon Sep 17 00:00:00 2001 From: Krausus Date: Sat, 9 May 2015 02:25:38 -0400 Subject: [PATCH 27/38] Adds drag-drop emptying to all containers Also, fixes several missing checks and a facing mistake. --- code/game/objects/items/weapons/storage/storage.dm | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index e705521954d..db813980846 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -38,11 +38,19 @@ show_to(M) return - if((allow_quick_empty || allow_quick_gather) && istype(over_object, /obj/structure/table) \ - && contents.len && over_object.Adjacent(usr)) + if ((istype(over_object, /obj/structure/table) || istype(over_object, /turf/simulated/floor)) \ + && contents.len && loc == usr && !usr.stat && !usr.restrained() && over_object.Adjacent(usr) \ + && !istype(src, /obj/item/weapon/storage/lockbox)) var/turf/T = get_turf(over_object) + if (istype(over_object, /turf/simulated/floor)) + if (get_turf(usr) != T) + return // Can only empty containers onto the floor under you + if("Yes" != alert(usr,"Empty \the [src] onto \the [T]?","Confirm","Yes","No")) + return + if(!(usr && over_object && contents.len && loc == usr && !usr.stat && !usr.restrained() && get_turf(usr) == T)) + return // Something happened while the player was thinking hide_from(usr) - usr.face_atom(src) + usr.face_atom(over_object) usr.visible_message("[usr] empties \the [src] onto \the [over_object].", "You empty \the [src] onto \the [over_object].") for(var/obj/item/I in contents) From db9d9fc647668144c980ad9fc2e357178b555354 Mon Sep 17 00:00:00 2001 From: FalseIncarnate Date: Sat, 9 May 2015 06:00:24 -0400 Subject: [PATCH 28/38] Botany / Xenobotany Update Largely a port of https://github.com/Baystation12/Baystation12/pull/8038 (Credit to Zuhayr for his hard work on botany) Breakdown of the port: - Plant traits have been expanded drastically - You want a bio-luminescent tomato that explodes into a cloud of acid when thrown or stepped on? Or maybe a corn vine that entangles people and injects them with mannitol and it's harvests that can be used as a battery? Totally possible. - Adds new random seeds! Replaces the egg-plant seed in the exotic seeds crate from cargo with 2 of these. - Literally random, they have randomly generated stats, chemicals, and traits. Great for researching, and/or wasting cargo's supply points. - Plant analyzers can now print off the last scan they recorded, meaning you can distribute copies of the report to validate your claims of having the dankest weed on station. - Potatoes, carrots, watermelons, soybeans, and pumpkins can all be sliced/diced/carved with ANY sharp object, such as knives, hatchets, glass shards, and e-swords. - This should give the chef a bit more room to make it look like he actually is doing the work by slicing up fries by hand. The processor still also works. - New reagent: Wood Pulp - Currently has no use in recipes, but any plant with this reagent in it can be chopped into planks with a hatchet. Did someone order some Ambrosia Deus planks? - Also, vines with woodpulp are dense. You have been warned. Now onto the stuff I did in addition to the stuff from Bay. - Fixed typos where plasma was mistakenly called "phoron" in the port. (Sorry bay) - Replaced bay's botany mutation chances with our tiered mutation system. - Re-re-added tobacco, space tobacco, tea aspera, tea astra, coffee arabica, and coffee robusta. - Re-enabled the rolling of joints - Made it possible to hand-roll cigarettes from tobacco / space tobacco. (A requested / promised addition) - Just like with joints, it will inherit any chems in the tobacco, has the same reagent capacity as a joint, but looks and smokes like a cig (lasts as long as the cigarettes) with a different name/description to differentiate it from pre-made cigs. - Corn can now be juiced in the grinder, in addition to grinding it. Grinding corn will result in it's contained reagents (like corn starch), while juicing corn will result in corn oil. - Re-added the additional plant analyzer information when scanning trays (displays age, weed level, etc) Also cleaned up the recipes_microwave.dm file, removing the commented out recipes that were distributed to the other machines during the Kitchen Overhaul. Shortens the file a bit and makes it more readable. I probably forgot stuff, so I will add things as I remember them / they get pointed out. --- code/__HELPERS/unsorted.dm | 14 +- code/controllers/master_controller.dm | 2 +- code/datums/recipe.dm | 77 +- code/datums/supplypacks.dm | 4 +- code/defines/obj/weapon.dm | 4 +- code/game/atoms.dm | 4 + .../atmoalter/portable_atmospherics.dm | 8 + code/game/machinery/kitchen/juicer.dm | 37 +- code/game/machinery/kitchen/microwave.dm | 1 + code/game/machinery/kitchen/processor.dm | 14 +- code/game/machinery/seed_extractor.dm | 4 +- .../objects/effects/decals/Cleanable/misc.dm | 10 + code/game/objects/effects/effect_system.dm | 51 +- code/game/objects/items/random_items.dm | 4 +- .../objects/items/weapons/cigs_lighters.dm | 12 +- .../game/objects/items/weapons/hydroponics.dm | 3 +- code/modules/food/candy_maker.dm | 1 + code/modules/food/grill_new.dm | 1 + code/modules/food/oven_new.dm | 1 + code/modules/food/recipes_microwave.dm | 757 +------ code/modules/food/recipes_oven.dm | 102 +- code/modules/hydroponics/_hydro_setup.dm | 58 + code/modules/hydroponics/grown.dm | 394 ++++ code/modules/hydroponics/grown_inedible.dm | 174 +- code/modules/hydroponics/grown_predefined.dm | 40 + code/modules/hydroponics/seed.dm | 743 ++++++ code/modules/hydroponics/seed_controller.dm | 150 ++ code/modules/hydroponics/seed_datums.dm | 1998 +++++++---------- code/modules/hydroponics/seed_machines.dm | 39 +- code/modules/hydroponics/seed_mobs.dm | 32 +- .../hydroponics/{seeds.dm => seed_packets.dm} | 106 +- code/modules/hydroponics/seed_storage.dm | 245 ++ .../hydroponics/spreading/spreading.dm | 262 +++ .../hydroponics/spreading/spreading_growth.dm | 106 + .../spreading/spreading_response.dm | 78 + .../hydroponics/trays/tray.dm} | 720 +++--- code/modules/hydroponics/trays/tray_apiary.dm | 240 ++ .../modules/hydroponics/trays/tray_process.dm | 124 + .../hydroponics/trays/tray_reagents.dm | 126 ++ code/modules/hydroponics/trays/tray_soil.dm | 67 + .../{hydro_tools.dm => trays/tray_tools.dm} | 288 +-- .../hydroponics/trays/tray_update_icons.dm | 84 + code/modules/hydroponics/vines.dm | 386 ---- .../simple_animal/friendly/farm_animals.dm | 30 +- code/modules/reagents/Chemistry-Machinery.dm | 72 +- code/modules/reagents/Chemistry-Reagents.dm | 10 + code/modules/reagents/newchem/toxins.dm | 2 +- code/setup.dm | 2 + code/world.dm | 1 + icons/obj/cigarettes.dmi | Bin 10203 -> 10200 bytes icons/obj/clothing/masks.dmi | Bin 22317 -> 22621 bytes icons/obj/hydroponics_growing.dmi | Bin 0 -> 16762 bytes icons/obj/hydroponics_machines.dmi | Bin 0 -> 14407 bytes icons/obj/hydroponics_products.dmi | Bin 0 -> 8652 bytes icons/obj/hydroponics_vines.dmi | Bin 0 -> 18093 bytes icons/obj/seeds.dmi | Bin 17404 -> 7330 bytes icons/obj/seeds_OLD.dmi | Bin 0 -> 17623 bytes paradise.dme | 26 +- 58 files changed, 4431 insertions(+), 3283 deletions(-) create mode 100644 code/modules/hydroponics/_hydro_setup.dm create mode 100644 code/modules/hydroponics/grown.dm create mode 100644 code/modules/hydroponics/grown_predefined.dm create mode 100644 code/modules/hydroponics/seed.dm create mode 100644 code/modules/hydroponics/seed_controller.dm rename code/modules/hydroponics/{seeds.dm => seed_packets.dm} (65%) create mode 100644 code/modules/hydroponics/seed_storage.dm create mode 100644 code/modules/hydroponics/spreading/spreading.dm create mode 100644 code/modules/hydroponics/spreading/spreading_growth.dm create mode 100644 code/modules/hydroponics/spreading/spreading_response.dm rename code/{game/machinery/hydroponics.dm => modules/hydroponics/trays/tray.dm} (53%) create mode 100644 code/modules/hydroponics/trays/tray_apiary.dm create mode 100644 code/modules/hydroponics/trays/tray_process.dm create mode 100644 code/modules/hydroponics/trays/tray_reagents.dm create mode 100644 code/modules/hydroponics/trays/tray_soil.dm rename code/modules/hydroponics/{hydro_tools.dm => trays/tray_tools.dm} (53%) create mode 100644 code/modules/hydroponics/trays/tray_update_icons.dm delete mode 100644 code/modules/hydroponics/vines.dm create mode 100644 icons/obj/hydroponics_growing.dmi create mode 100644 icons/obj/hydroponics_machines.dmi create mode 100644 icons/obj/hydroponics_products.dmi create mode 100644 icons/obj/hydroponics_vines.dmi create mode 100644 icons/obj/seeds_OLD.dmi diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index c269df248b5..f3e125f31dd 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1670,4 +1670,16 @@ atom/proc/GetTypeInAllContents(typepath) if(prob(chance)) step(AM, pick(alldirs)) chance = max(chance - (initial_chance / steps), 0) - steps-- \ No newline at end of file + steps-- + +/proc/get_random_colour(var/simple, var/lower, var/upper) + var/colour + if(simple) + colour = pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF")) + else + for(var/i=1;i<=3;i++) + var/temp_col = "[num2hex(rand(lower,upper))]" + if(length(temp_col )<2) + temp_col = "0[temp_col]" + colour += temp_col + return colour diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm index c1f46efe5ad..1cf1997259e 100644 --- a/code/controllers/master_controller.dm +++ b/code/controllers/master_controller.dm @@ -120,7 +120,7 @@ datum/controller/game_controller/proc/setup_objects() //Set up roundstart seed list. - populate_seed_list() + //populate_seed_list() world << "\red \b Initializations complete." sleep(-1) diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm index 0f7dcd15b4a..aa21efd793e 100644 --- a/code/datums/recipe.dm +++ b/code/datums/recipe.dm @@ -34,11 +34,12 @@ * */ /datum/recipe - var/list/reagents // example: = list("berryjuice" = 5) // do not list same reagent twice - var/list/items // example: =list(/obj/item/weapon/crowbar, /obj/item/weapon/welder) // place /foo/bar before /foo - var/result //example: = /obj/item/weapon/reagent_containers/food/snacks/donut/normal - var/time = 100 // 1/10 part of second - var/byproduct //example: = /obj/item/weapon/kitchen/mould // byproduct to return, such as a mould or trash + var/list/reagents // example: = list("berryjuice" = 5) // do not list same reagent twice + var/list/items // example: = list(/obj/item/weapon/crowbar, /obj/item/weapon/welder) // place /foo/bar before /foo + var/list/fruit // example: = list("fruit" = 3) + var/result // example: = /obj/item/weapon/reagent_containers/food/snacks/donut/normal + var/time = 100 // 1/10 part of second + var/byproduct // example: = /obj/item/weapon/kitchen/mould // byproduct to return, such as a mould or trash /datum/recipe/proc/check_reagents(var/datum/reagents/avail_reagents) //1=precisely, 0=insufficiently, -1=superfluous @@ -54,25 +55,44 @@ return -1 return . -/datum/recipe/proc/check_items(var/obj/container as obj) //1=precisely, 0=insufficiently, -1=superfluous - if (!items) - if (locate(/obj/) in container) - return -1 - else - return 1 +/datum/recipe/proc/check_fruit(var/obj/container) . = 1 - var/list/checklist = items.Copy() - for (var/obj/O in container) - var/found = 0 - for (var/type in checklist) - if (istype(O,type)) - checklist-=type - found = 1 - break - if (!found) + if(fruit && fruit.len) + var/list/checklist = list() + // You should trust Copy(). + checklist = fruit.Copy() + for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in container) + if(!G.seed || !G.seed.kitchen_tag || isnull(checklist[G.seed.kitchen_tag])) + continue + checklist[G.seed.kitchen_tag]-- + for(var/ktag in checklist) + if(!isnull(checklist[ktag])) + if(checklist[ktag] < 0) + . = 0 + else if(checklist[ktag] > 0) + . = -1 + break + return . + +/datum/recipe/proc/check_items(var/obj/container as obj) + . = 1 + if (items && items.len) + var/list/checklist = list() + checklist = items.Copy() // You should really trust Copy + for(var/obj/O in container) + if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown)) + continue // Fruit is handled in check_fruit(). + var/found = 0 + for(var/i = 1; i < checklist.len+1; i++) + var/item_type = checklist[i] + if (istype(O,item_type)) + checklist.Cut(i, i+1) + found = 1 + break + if (!found) + . = 0 + if (checklist.len) . = -1 - if (checklist.len) - return 0 return . //general version @@ -101,22 +121,19 @@ exact = -1 var/list/datum/recipe/possible_recipes = new for (var/datum/recipe/recipe in avaiable_recipes) - if (recipe.check_reagents(obj.reagents)==exact && recipe.check_items(obj)==exact) + if (recipe.check_reagents(obj.reagents)==exact && recipe.check_items(obj)==exact && recipe.check_fruit(obj)==exact) possible_recipes+=recipe if (possible_recipes.len==0) return null else if (possible_recipes.len==1) return possible_recipes[1] else //okay, let's select the most complicated recipe - var/r_count = 0 - var/i_count = 0 + var/highest_count = 0 . = possible_recipes[1] for (var/datum/recipe/recipe in possible_recipes) - var/N_i = (recipe.items)?(recipe.items.len):0 - var/N_r = (recipe.reagents)?(recipe.reagents.len):0 - if (N_i > i_count || (N_i== i_count && N_r > r_count )) - r_count = N_r - i_count = N_i + var/count = ((recipe.items)?(recipe.items.len):0) + ((recipe.reagents)?(recipe.reagents.len):0) + ((recipe.fruit)?(recipe.fruit.len):0) + if (count >= highest_count) + highest_count = count . = recipe return . diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 8d0d0b77859..e707d5e9349 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -910,7 +910,9 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/seeds/amanitamycelium, /obj/item/seeds/reishimycelium, /obj/item/seeds/bananaseed, - /obj/item/seeds/eggyseed) + /obj/item/seeds/random, + /obj/item/seeds/random, + ) cost = 15 containername = "exotic seeds crate" diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 2462c13c2a7..d4560ed0a4a 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -583,8 +583,8 @@ /obj/item/weapon/scythe/afterattack(atom/A, mob/user as mob, proximity) if(!proximity) return - if(istype(A, /obj/effect/plantsegment)) - for(var/obj/effect/plantsegment/B in orange(A,1)) + if(istype(A, /obj/effect/plant)) + for(var/obj/effect/plant/B in orange(A,1)) if(prob(80)) qdel(B) qdel(A) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 108c4c8b2f6..20d49ce6c91 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -241,6 +241,10 @@ its easier to just keep the beam vertical. /atom/proc/relaymove() return +/atom/proc/set_dir(new_dir) + . = new_dir != dir + dir = new_dir + /atom/proc/ex_act() return diff --git a/code/game/machinery/atmoalter/portable_atmospherics.dm b/code/game/machinery/atmoalter/portable_atmospherics.dm index ed56300120d..1be7ef4b3c3 100644 --- a/code/game/machinery/atmoalter/portable_atmospherics.dm +++ b/code/game/machinery/atmoalter/portable_atmospherics.dm @@ -67,6 +67,14 @@ return 1 + update_connected_network() + if(!connected_port) + return + + var/datum/pipe_network/network = connected_port.return_network(src) + if (network) + network.update = 1 + disconnect() if(!connected_port) return 0 diff --git a/code/game/machinery/kitchen/juicer.dm b/code/game/machinery/kitchen/juicer.dm index 86d59679f76..bf963ea3c0d 100644 --- a/code/game/machinery/kitchen/juicer.dm +++ b/code/game/machinery/kitchen/juicer.dm @@ -10,17 +10,21 @@ idle_power_usage = 5 active_power_usage = 100 var/obj/item/weapon/reagent_containers/beaker = null - var/global/list/allowed_items = list ( - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = "tomatojuice", - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot = "carrotjuice", - /obj/item/weapon/reagent_containers/food/snacks/grown/berries = "berryjuice", - /obj/item/weapon/reagent_containers/food/snacks/grown/banana = "banana", - /obj/item/weapon/reagent_containers/food/snacks/grown/potato = "potato", - /obj/item/weapon/reagent_containers/food/snacks/grown/lemon = "lemonjuice", - /obj/item/weapon/reagent_containers/food/snacks/grown/orange = "orangejuice", - /obj/item/weapon/reagent_containers/food/snacks/grown/lime = "limejuice", + var/global/list/allowed_items = list( /obj/item/weapon/reagent_containers/food/snacks/watermelonslice = "watermelonjuice", - /obj/item/weapon/reagent_containers/food/snacks/grown/poisonberries = "poisonberryjuice", + /obj/item/weapon/reagent_containers/food/snacks/grown = "water", + ) + + var/global/list/allowed_tags = list ( + "tomato" = "tomatojuice", + "carrot" = "carrotjuice", + "berries" = "berryjuice", + "banana" = "banana", + "potato" = "potato", + "lemon" = "lemonjuice", + "orange" = "orangejuice", + "lime" = "limejuice", + "poisonberries" = "poisonberryjuice", ) /obj/machinery/juicer/New() @@ -132,10 +136,15 @@ beaker = null update_icon() -/obj/machinery/juicer/proc/get_juice_id(var/obj/item/weapon/reagent_containers/food/snacks/grown/O) - for (var/i in allowed_items) - if (istype(O, i)) - return allowed_items[i] +/obj/machinery/juicer/proc/get_juice_id(var/obj/item/weapon/reagent_containers/food/snacks/O) + if (istype(O, /obj/item/weapon/reagent_containers/food/snacks/watermelonslice)) + return "watermelonjuice" + else if(istype(O, /obj.item/weapon/reagent_containers/food/snacks/grown)) + var/obj/item/weapon/reagent_containers/food/snacks/grown/G = O + for(var/i in allowed_tags) + if(G.seed.kitchen_tag == allowed_tags[i]) + return allowed_tags[i] + return "water" /obj/machinery/juicer/proc/get_juice_amount(var/obj/item/weapon/reagent_containers/food/snacks/grown/O) if (!istype(O)) diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm index aaeef39d8d6..17b260747dd 100644 --- a/code/game/machinery/kitchen/microwave.dm +++ b/code/game/machinery/kitchen/microwave.dm @@ -43,6 +43,7 @@ acceptable_reagents |= reagent if (recipe.items) max_n_of_items = max(max_n_of_items,recipe.items.len) + acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown component_parts = list() component_parts += new /obj/item/weapon/circuitboard/microwave(null) diff --git a/code/game/machinery/kitchen/processor.dm b/code/game/machinery/kitchen/processor.dm index 0fe8596d380..9cc323b8b25 100644 --- a/code/game/machinery/kitchen/processor.dm +++ b/code/game/machinery/kitchen/processor.dm @@ -34,19 +34,19 @@ output = /obj/item/weapon/reagent_containers/food/snacks/meatball /datum/food_processor_process/potato - input = /obj/item/weapon/reagent_containers/food/snacks/grown/potato + input = "potato" output = /obj/item/weapon/reagent_containers/food/snacks/fries /datum/food_processor_process/carrot - input = /obj/item/weapon/reagent_containers/food/snacks/grown/carrot + input = "carrot" output = /obj/item/weapon/reagent_containers/food/snacks/carrotfries /datum/food_processor_process/soybeans - input = /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans + input = "soybeans" output = /obj/item/weapon/reagent_containers/food/snacks/soydope /datum/food_processor_process/wheat - input = /obj/item/weapon/reagent_containers/food/snacks/grown/wheat + input = "wheat" output = /obj/item/weapon/reagent_containers/food/snacks/flour /datum/food_processor_process/spaghetti @@ -111,7 +111,11 @@ /obj/machinery/processor/proc/select_recipe(var/X) for (var/Type in typesof(/datum/food_processor_process) - /datum/food_processor_process - /datum/food_processor_process/mob) var/datum/food_processor_process/P = new Type() - if (!istype(X, P.input)) + if(istype(X, /obj/item/weapon/reagent_containers/food/snacks/grown)) + var/obj/item/weapon/reagent_containers/food/snacks/grown/G = X + if(G.seed.kitchen_tag != P.input) + continue + else if (!istype(X, P.input)) continue return P return 0 diff --git a/code/game/machinery/seed_extractor.dm b/code/game/machinery/seed_extractor.dm index f2e45ccdc41..6934ee0ac6c 100644 --- a/code/game/machinery/seed_extractor.dm +++ b/code/game/machinery/seed_extractor.dm @@ -16,10 +16,10 @@ obj/machinery/seed_extractor/attackby(var/obj/item/O as obj, var/mob/user as mob var/datum/seed/new_seed_type if(istype(O, /obj/item/weapon/grown)) var/obj/item/weapon/grown/F = O - new_seed_type = seed_types[F.plantname] + new_seed_type = plant_controller.seeds[F.plantname] else var/obj/item/weapon/reagent_containers/food/snacks/grown/F = O - new_seed_type = seed_types[F.plantname] + new_seed_type = plant_controller.seeds[F.plantname] if(new_seed_type) user << "You extract some seeds from [O]." diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm index bc73b6689b4..5e70291404b 100644 --- a/code/game/objects/effects/decals/Cleanable/misc.dm +++ b/code/game/objects/effects/decals/Cleanable/misc.dm @@ -171,6 +171,16 @@ icon = 'icons/effects/tomatodecal.dmi' random_icon_states = list("smashed_pie") +/obj/effect/decal/cleanable/fruit_smudge + name = "smudge" + desc = "Some kind of fruit smear." + density = 0 + anchored = 1 + layer = 2 + icon = 'icons/effects/blood.dmi' + icon_state = "mfloor1" + random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7") + /obj/effect/decal/cleanable/fungus name = "space fungus" desc = "A fungal growth. Looks pretty nasty." diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index d5d3555e12d..93e017d4ef4 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -423,6 +423,28 @@ steam.start() -- spawns the effect return +// Spores +/datum/effect/effect/system/chem_smoke_spread/spores + var/datum/seed/seed + +/datum/effect/effect/system/chem_smoke_spread/spores/New(seed_name) + if(seed_name && plant_controller) + seed = plant_controller.seeds[seed_name] + if(!seed) + del(src) + ..() + + + +/datum/effect/effect/system/chem_smoke_spread/New() + ..() + chemholder = new/obj() + var/datum/reagents/R = new/datum/reagents(500) + chemholder.reagents = R + R.my_atom = chemholder + + + /datum/effect/effect/system/chem_smoke_spread var/total_smoke = 0 // To stop it being spammed and lagging! var/direction @@ -460,16 +482,20 @@ steam.start() -- spawns the effect var/where = "[A.name] | [location.x], [location.y]" var/whereLink = "[where]" - if(carry.my_atom.fingerprintslast) - var/mob/M = get_mob_by_key(carry.my_atom.fingerprintslast) - var/more = "" - if(M) - more = "(?)" - msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink])[contained]. Last associated key is [carry.my_atom.fingerprintslast][more].", 0, 1) - log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].") + if(carry && carry.my_atom) + if(carry.my_atom.fingerprintslast) + var/mob/M = get_mob_by_key(carry.my_atom.fingerprintslast) + var/more = "" + if(M) + more = "(?)" + msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink])[contained]. Last associated key is [carry.my_atom.fingerprintslast][more].", 0, 1) + log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].") + else + msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink]). No associated key.", 0, 1) + log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.") else - msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink]). No associated key.", 0, 1) - log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.") + msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink]). No associated key. CODERS: carry.my_atom may be null.", 0, 1) + log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key. CODERS: carry.my_atom may be null.") start(effect_range = 2) var/i = 0 @@ -482,6 +508,13 @@ steam.start() -- spawns the effect var/mob/living/carbon/C = A if(!(C.wear_mask && (C.internals != null || C.wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT))) chemholder.reagents.copy_to(C, chemholder.reagents.total_volume) + if(istype(A, /obj/machinery/portable_atmospherics/hydroponics)) + var/obj/machinery/portable_atmospherics/hydroponics/tray = A + chemholder.reagents.copy_to(tray, chemholder.reagents.total_volume) + if(istype(A, /obj/effect/plant)) + var/obj/effect/plant/plant = A + if(chemholder.reagents.has_reagent("atrazine")) + plant.die_off() qdel(smokeholder) for(i=0, i 20) diff --git a/code/game/objects/items/random_items.dm b/code/game/objects/items/random_items.dm index 0bbd8ba35aa..e19a9af8cff 100644 --- a/code/game/objects/items/random_items.dm +++ b/code/game/objects/items/random_items.dm @@ -198,7 +198,7 @@ B.desc = "Looks like the label fell off." // B.identify_probability = 0 - +/* /obj/structure/closet/crate/bin/flowers name = "flower barrel" desc = "A bin full of fresh flowers for the bereaved." @@ -211,7 +211,6 @@ AM.pixel_x = rand(-10,10) AM.pixel_y = rand(-5,5) - /obj/structure/closet/crate/bin/plants name = "plant barrel" desc = "Caution: Contents may contain vitamins and minerals. It is recommended that you deep fry them before eating." @@ -234,6 +233,7 @@ var/obj/O = new ptype(src) O.pixel_x = rand(-10,10) O.pixel_y = rand(-5,5) +*/ /obj/structure/closet/secure_closet/random_drinks name = "Unlabelled Booze" diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index aacdc9c6e37..9ec5123a7b8 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -245,6 +245,16 @@ CIGARETTE PACKETS ARE IN FANCY.DM src.pixel_x = rand(-5.0, 5) src.pixel_y = rand(-5.0, 5) +/obj/item/clothing/mask/cigarette/handroll + name = "hand-rolled cigarette" + desc = "A roll of tobacco and nicotine, freshly rolled by hand." + icon_state = "hr_cigoff" + item_state = "hr_cigoff" + icon_on = "hr_cigon" //Note - these are in masks.dmi not in cigarette.dmi + icon_off = "hr_cigoff" + type_butt = /obj/item/weapon/cigbutt + chem_volume = 50 + //////////// // CIGARS // //////////// @@ -498,7 +508,7 @@ obj/item/weapon/rollingpaper name = "rolling paper" desc = "A thin piece of paper used to make fine smokeables." icon = 'icons/obj/cigarettes.dmi' - icon_state = "cig paper" + icon_state = "cig_paper" w_class = 1 diff --git a/code/game/objects/items/weapons/hydroponics.dm b/code/game/objects/items/weapons/hydroponics.dm index a32f7d6d152..9b34938d480 100644 --- a/code/game/objects/items/weapons/hydroponics.dm +++ b/code/game/objects/items/weapons/hydroponics.dm @@ -146,7 +146,7 @@ if(!user.gloves) user << "\red The [name] burns your bare hand!" user.adjustFireLoss(rand(1,5)) - +/* /* * Nettle */ @@ -237,3 +237,4 @@ new /obj/item/clothing/mask/cigarette/pipe/cobpipe (user.loc) del(src) return +*/ \ No newline at end of file diff --git a/code/modules/food/candy_maker.dm b/code/modules/food/candy_maker.dm index cfe59a95209..269c2fcc33b 100644 --- a/code/modules/food/candy_maker.dm +++ b/code/modules/food/candy_maker.dm @@ -43,6 +43,7 @@ acceptable_reagents |= reagent if (recipe.items) max_n_of_items = max(max_n_of_items,recipe.items.len) + acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown component_parts = list() component_parts += new /obj/item/weapon/circuitboard/candy_maker(null) diff --git a/code/modules/food/grill_new.dm b/code/modules/food/grill_new.dm index 757b5a4ca58..6fcd5e3a31a 100644 --- a/code/modules/food/grill_new.dm +++ b/code/modules/food/grill_new.dm @@ -44,6 +44,7 @@ acceptable_reagents |= reagent if (recipe.items) max_n_of_items = max(max_n_of_items,recipe.items.len) + acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown component_parts = list() component_parts += new /obj/item/weapon/circuitboard/grill(null) diff --git a/code/modules/food/oven_new.dm b/code/modules/food/oven_new.dm index 4fe0f79b396..1b0c3559cf0 100644 --- a/code/modules/food/oven_new.dm +++ b/code/modules/food/oven_new.dm @@ -44,6 +44,7 @@ acceptable_reagents |= reagent if (recipe.items) max_n_of_items = max(max_n_of_items,recipe.items.len) + acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown component_parts = list() component_parts += new /obj/item/weapon/circuitboard/oven(null) diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index 71c04ed3851..27c47f30fde 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -2,37 +2,6 @@ // see code/datums/recipe.dm - -/* -/datum/recipe/microwave/telebacon - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/device/assembly/signaler - ) - result = /obj/item/weapon/reagent_containers/food/snacks/telebacon - - -/datum/recipe/microwave/syntitelebacon - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, - /obj/item/device/assembly/signaler - ) - result = /obj/item/weapon/reagent_containers/food/snacks/telebacon - -/datum/recipe/microwave/bun - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough - ) - result = /obj/item/weapon/reagent_containers/food/snacks/bun - -/datum/recipe/microwave/friedegg - reagents = list("sodiumchloride" = 1, "blackpepper" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg - ) - result = /obj/item/weapon/reagent_containers/food/snacks/friedegg -*/ - /datum/recipe/microwave/boiledegg reagents = list("water" = 5) items = list( @@ -41,24 +10,13 @@ result = /obj/item/weapon/reagent_containers/food/snacks/boiledegg /datum/recipe/microwave/dionaroast + fruit = list("apple" = 1) reagents = list("facid" = 5) //It dissolves the carapace. Still poisonous, though. items = list( /obj/item/weapon/holder/diona, - /obj/item/weapon/reagent_containers/food/snacks/grown/apple ) result = /obj/item/weapon/reagent_containers/food/snacks/dionaroast - -/* -/datum/recipe/microwave/bananaphone - reagents = list("psilocybin" = 5) //Trippin' balls, man. - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/banana, - /obj/item/device/radio - ) - result = /obj/item/weapon/reagent_containers/food/snacks/bananaphone -*/ - /datum/recipe/microwave/jellydonut reagents = list("berryjuice" = 5, "sugar" = 5) items = list( @@ -203,16 +161,6 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/hotdog -/* -/datum/recipe/microwave/waffles - reagents = list("sugar" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough - ) - result = /obj/item/weapon/reagent_containers/food/snacks/waffles -*/ - /datum/recipe/microwave/donkpocket items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, @@ -226,91 +174,20 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/warmdonkpocket - -/* -/datum/recipe/microwave/meatbread - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread - -/datum/recipe/microwave/syntibread - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, - /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, - /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread - -/datum/recipe/microwave/xenomeatbread - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/xenomeat, - /obj/item/weapon/reagent_containers/food/snacks/xenomeat, - /obj/item/weapon/reagent_containers/food/snacks/xenomeat, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread - -/datum/recipe/microwave/bananabread - reagents = list("milk" = 5, "sugar" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/grown/banana, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread - -/datum/recipe/microwave/omelette - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/omelette - -/datum/recipe/microwave/muffin - reagents = list("milk" = 5, "sugar" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/muffin -*/ - /datum/recipe/microwave/eggplantparm + fruit = list("eggplant" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant ) result = /obj/item/weapon/reagent_containers/food/snacks/eggplantparm /datum/recipe/microwave/soylenviridians + fruit = list("soybeans" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/flour, /obj/item/weapon/reagent_containers/food/snacks/flour, /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans ) result = /obj/item/weapon/reagent_containers/food/snacks/soylenviridians @@ -324,91 +201,6 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/soylentgreen -/* -/datum/recipe/microwave/carrotcake - reagents = list("milk" = 5, "sugar" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake - -/datum/recipe/microwave/cheesecake - reagents = list("milk" = 5, "sugar" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake - -/datum/recipe/microwave/plaincake - reagents = list("milk" = 5, "sugar" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake - -/datum/recipe/microwave/meatpie - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/meat, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/meatpie - -/datum/recipe/microwave/tofupie - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/tofu, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/tofupie - -/datum/recipe/microwave/xemeatpie - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/xenomeat, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/xemeatpie - -/datum/recipe/microwave/pie - reagents = list("sugar" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/grown/banana, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/pie - -/datum/recipe/microwave/cherrypie - reagents = list("sugar" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/grown/cherries, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/cherrypie - -/datum/recipe/microwave/berryclafoutis - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/grown/berries, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/berryclafoutis - -/datum/recipe/microwave/wingfangchu - reagents = list("soysauce" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/xenomeat, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/wingfangchu -*/ - /datum/recipe/microwave/chaosdonut reagents = list("frostoil" = 5, "capsaicin" = 5, "sugar" = 5) items = list( @@ -416,61 +208,6 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/donut/chaos -/* -/datum/recipe/microwave/human/kabob - items = list( - /obj/item/stack/rods, - /obj/item/weapon/reagent_containers/food/snacks/meat/human, - /obj/item/weapon/reagent_containers/food/snacks/meat/human, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/human/kabob - -/datum/recipe/microwave/monkeykabob - items = list( - /obj/item/stack/rods, - /obj/item/weapon/reagent_containers/food/snacks/meat/monkey, - /obj/item/weapon/reagent_containers/food/snacks/meat/monkey, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/monkeykabob - -/datum/recipe/microwave/syntikabob - items = list( - /obj/item/stack/rods, - /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, - /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/monkeykabob - -/datum/recipe/microwave/tofukabob - items = list( - /obj/item/stack/rods, - /obj/item/weapon/reagent_containers/food/snacks/tofu, - /obj/item/weapon/reagent_containers/food/snacks/tofu, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/tofukabob - -/datum/recipe/microwave/tofubread - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/tofu, - /obj/item/weapon/reagent_containers/food/snacks/tofu, - /obj/item/weapon/reagent_containers/food/snacks/tofu, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread - -/datum/recipe/microwave/loadedbakedpotato - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/potato, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato -*/ - /datum/recipe/microwave/cheesyfries items = list( /obj/item/weapon/reagent_containers/food/snacks/fries, @@ -479,138 +216,25 @@ result = /obj/item/weapon/reagent_containers/food/snacks/cheesyfries /datum/recipe/microwave/cubancarp + fruit = list("chili" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/grown/chili, /obj/item/weapon/reagent_containers/food/snacks/carpmeat, ) result = /obj/item/weapon/reagent_containers/food/snacks/cubancarp /datum/recipe/microwave/popcorn - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/corn - ) + fruit = list("corn" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/popcorn -/* -/datum/recipe/microwave/cookie - reagents = list("milk" = 5, "sugar" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/chocolatebar, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/cookie - -/datum/recipe/microwave/fortunecookie - reagents = list("sugar" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/doughslice, - /obj/item/weapon/paper, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/fortunecookie - make_food(var/obj/container as obj) - var/obj/item/weapon/paper/paper = locate() in container - paper.loc = null //prevent deletion - var/obj/item/weapon/reagent_containers/food/snacks/fortunecookie/being_cooked = ..(container) - paper.loc = being_cooked - being_cooked.trash = paper //so the paper is left behind as trash without special-snowflake(TM Nodrak) code ~carn - return being_cooked - check_items(var/obj/container as obj) - . = ..() - if (.) - var/obj/item/weapon/paper/paper = locate() in container - if (!paper.info) - return 0 - return . - -/datum/recipe/microwave/meatsteak - reagents = list("sodiumchloride" = 1, "blackpepper" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat - ) - result = /obj/item/weapon/reagent_containers/food/snacks/meatsteak - -/datum/recipe/microwave/syntisteak - reagents = list("sodiumchloride" = 1, "blackpepper" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh - ) - result = /obj/item/weapon/reagent_containers/food/snacks/meatsteak - -/datum/recipe/microwave/pizzamargherita - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita - -/datum/recipe/microwave/meatpizza - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza - -/datum/recipe/microwave/syntipizza - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, - /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, - /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza - -/datum/recipe/microwave/mushroompizza - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza - -/datum/recipe/microwave/vegetablepizza - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant, - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, - /obj/item/weapon/reagent_containers/food/snacks/grown/corn, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza -*/ - /datum/recipe/microwave/spacylibertyduff reagents = list("water" = 5, "vodka" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap, - ) + fruit = list("libertycap" = 3) result = /obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff /datum/recipe/microwave/amanitajelly reagents = list("water" = 5, "vodka" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita, - ) + fruit = list("amanita" = 3) result = /obj/item/weapon/reagent_containers/food/snacks/amanitajelly make_food(var/obj/container as obj) var/obj/item/weapon/reagent_containers/food/snacks/amanitajelly/being_cooked = ..(container) @@ -619,28 +243,21 @@ /datum/recipe/microwave/meatballsoup reagents = list("water" = 10) + fruit = list("potato" = 1, "carrot" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/meatball , - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, - /obj/item/weapon/reagent_containers/food/snacks/grown/potato, ) result = /obj/item/weapon/reagent_containers/food/snacks/meatballsoup /datum/recipe/microwave/vegetablesoup reagents = list("water" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, - /obj/item/weapon/reagent_containers/food/snacks/grown/corn, - /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant, - /obj/item/weapon/reagent_containers/food/snacks/grown/potato, - ) + fruit = list("carrot" = 1, "corn" = 1, "eggplant" = 1, "potato" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/vegetablesoup /datum/recipe/microwave/nettlesoup reagents = list("water" = 10) + fruit = list("nettle" = 1, "potato" = 1) items = list( - /obj/item/weapon/grown/nettle, - /obj/item/weapon/reagent_containers/food/snacks/grown/potato, /obj/item/weapon/reagent_containers/food/snacks/egg, ) result = /obj/item/weapon/reagent_containers/food/snacks/nettlesoup @@ -650,37 +267,19 @@ result= /obj/item/weapon/reagent_containers/food/snacks/wishsoup /datum/recipe/microwave/hotchili + fruit = list("chili" = 1, "tomato" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/grown/chili, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, ) result = /obj/item/weapon/reagent_containers/food/snacks/hotchili /datum/recipe/microwave/coldchili + fruit = list("icechili" = 1, "tomato" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/grown/icepepper, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, ) result = /obj/item/weapon/reagent_containers/food/snacks/coldchili -/* -/datum/recipe/microwave/amanita_pie - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/amanita_pie - -/datum/recipe/microwave/plump_pie - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/plump_pie -*/ - /datum/recipe/microwave/spellburger items = list( /obj/item/weapon/reagent_containers/food/snacks/monkeyburger, @@ -706,45 +305,21 @@ result = /obj/item/weapon/reagent_containers/food/snacks/bigbiteburger /datum/recipe/microwave/enchiladas + fruit = list("chili" = 2, "corn" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/cutlet, - /obj/item/weapon/reagent_containers/food/snacks/grown/chili, - /obj/item/weapon/reagent_containers/food/snacks/grown/chili, - /obj/item/weapon/reagent_containers/food/snacks/grown/corn, ) result = /obj/item/weapon/reagent_containers/food/snacks/enchiladas -/* -/datum/recipe/microwave/creamcheesebread - items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/creamcheesebread -*/ - /datum/recipe/microwave/monkeysdelight reagents = list("sodiumchloride" = 1, "blackpepper" = 1) + fruit = list("banana" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/flour, /obj/item/weapon/reagent_containers/food/snacks/monkeycube, - /obj/item/weapon/reagent_containers/food/snacks/grown/banana, ) result = /obj/item/weapon/reagent_containers/food/snacks/monkeysdelight -/* -/datum/recipe/microwave/baguette - reagents = list("sodiumchloride" = 1, "blackpepper" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/baguette -*/ - /datum/recipe/microwave/fishandchips items = list( /obj/item/weapon/reagent_containers/food/snacks/fries, @@ -752,25 +327,6 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/fishandchips -/* -/datum/recipe/microwave/birthdaycake - reagents = list("milk" = 5, "sugar" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/clothing/head/cakehat - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake - -/datum/recipe/microwave/bread - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/egg - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/bread -*/ - /datum/recipe/microwave/sandwich items = list( /obj/item/weapon/reagent_containers/food/snacks/meatsteak, @@ -784,45 +340,17 @@ items = list( /obj/item/weapon/reagent_containers/food/snacks/sandwich ) - result = /obj/item/weapon/reagent_containers/food/snacks/toastedsandwich - -/* -/datum/recipe/microwave/grilledcheese - items = list( - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/grilledcheese -*/ /datum/recipe/microwave/tomatosoup reagents = list("water" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - ) + fruit = list("tomato" = 2) result = /obj/item/weapon/reagent_containers/food/snacks/tomatosoup -/* -/datum/recipe/microwave/rofflewaffles - reagents = list("psilocybin" = 5, "sugar" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/rofflewaffles -*/ - /datum/recipe/microwave/stew reagents = list("water" = 10) + fruit = list("tomato" = 1, "potato" = 1, "carrot" = 1, "eggplant" = 1, "mushroom" = 1) items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/grown/potato, - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, - /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom, ) result = /obj/item/weapon/reagent_containers/food/snacks/stew @@ -851,20 +379,13 @@ result = /obj/item/weapon/reagent_containers/food/snacks/milosoup /datum/recipe/microwave/stewedsoymeat + fruit = list("carrot" = 1, "tomato" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/soydope, /obj/item/weapon/reagent_containers/food/snacks/soydope, - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, ) result = /obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat -/*/datum/recipe/microwave/spagetti We have the processor now - items = list( - /obj/item/weapon/reagent_containers/food/snacks/doughslice - ) - result= /obj/item/weapon/reagent_containers/food/snacks/spagetti*/ - /datum/recipe/microwave/boiledspagetti reagents = list("water" = 5) items = list( @@ -882,10 +403,9 @@ /datum/recipe/microwave/pastatomato reagents = list("water" = 5) + fruit = list("tomato" = 2) items = list( /obj/item/weapon/reagent_containers/food/snacks/spagetti, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, ) result = /obj/item/weapon/reagent_containers/food/snacks/pastatomato @@ -918,11 +438,11 @@ /datum/recipe/microwave/superbiteburger reagents = list("sodiumchloride" = 5, "blackpepper" = 5) + fruit = list("tomato" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/bigbiteburger, /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, /obj/item/weapon/reagent_containers/food/snacks/boiledegg, ) @@ -930,31 +450,9 @@ /datum/recipe/microwave/candiedapple reagents = list("water" = 5, "sugar" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/apple - ) + fruit = list("apple" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/candiedapple -/* -/datum/recipe/microwave/applepie - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/grown/apple, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/applepie - -/datum/recipe/microwave/applecake - reagents = list("milk" = 5, "sugar" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/grown/apple, - /obj/item/weapon/reagent_containers/food/snacks/grown/apple, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake -*/ - /datum/recipe/microwave/slimeburger reagents = list("slimejelly" = 5) items = list( @@ -993,70 +491,9 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry -/* -/datum/recipe/microwave/orangecake - reagents = list("milk" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/orange, - /obj/item/weapon/reagent_containers/food/snacks/grown/orange, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake - -/datum/recipe/microwave/limecake - reagents = list("milk" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/lime, - /obj/item/weapon/reagent_containers/food/snacks/grown/lime, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/limecake - -/datum/recipe/microwave/lemoncake - reagents = list("milk" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/lemon, - /obj/item/weapon/reagent_containers/food/snacks/grown/lemon, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/lemoncake - -/datum/recipe/microwave/chocolatecake - reagents = list("milk" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/chocolatebar, - /obj/item/weapon/reagent_containers/food/snacks/chocolatebar, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake -*/ - /datum/recipe/microwave/bloodsoup reagents = list("blood" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/bloodtomato, - /obj/item/weapon/reagent_containers/food/snacks/grown/bloodtomato, - ) + fruit = list("bloodtomato" = 2) result = /obj/item/weapon/reagent_containers/food/snacks/bloodsoup /datum/recipe/microwave/slimesoup @@ -1066,8 +503,8 @@ /datum/recipe/microwave/clownstears reagents = list("water" = 10) + fruit = list("banana" = 1) items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/banana, /obj/item/weapon/ore/clown, ) result = /obj/item/weapon/reagent_containers/food/snacks/clownstears @@ -1083,21 +520,6 @@ reagents = list("toxin" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/mint -/* -/datum/recipe/microwave/braincake - reagents = list("milk" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/brain - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake -*/ - /datum/recipe/microwave/chocolateegg items = list( /obj/item/weapon/reagent_containers/food/snacks/egg, @@ -1105,24 +527,6 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/chocolateegg -/* -/datum/recipe/microwave/sausage - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meatball, - /obj/item/weapon/reagent_containers/food/snacks/cutlet, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sausage - -/datum/recipe/microwave/fishfingers - items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/carpmeat, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/fishfingers -*/ - /datum/recipe/microwave/mysterysoup reagents = list("water" = 10) items = list( @@ -1133,69 +537,27 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/mysterysoup -/* -/datum/recipe/microwave/pumpkinpie - reagents = list("milk" = 5, "sugar" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin, - /obj/item/weapon/reagent_containers/food/snacks/egg, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie - -/datum/recipe/microwave/plumphelmetbiscuit - reagents = list("water" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit -*/ - /datum/recipe/microwave/mushroomsoup reagents = list("water" = 5, "milk" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle, - ) + fruit = list("mushroom" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/mushroomsoup /datum/recipe/microwave/chawanmushi reagents = list("water" = 5, "soysauce" = 5) + fruit = list("mushroom" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/egg, /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle, ) result = /obj/item/weapon/reagent_containers/food/snacks/chawanmushi /datum/recipe/microwave/beetsoup reagents = list("water" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet, - /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage, - ) + fruit = list("whitebeet" = 1, "cabbage" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/beetsoup -/* -/datum/recipe/microwave/appletart - reagents = list("sugar" = 5, "milk" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/goldapple, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/appletart -*/ - /datum/recipe/microwave/herbsalad - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris, - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris, - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris, - /obj/item/weapon/reagent_containers/food/snacks/grown/apple, - ) + fruit = list("ambrosia" = 3, "apple" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/herbsalad make_food(var/obj/container as obj) var/obj/item/weapon/reagent_containers/food/snacks/herbsalad/being_cooked = ..(container) @@ -1203,20 +565,12 @@ return being_cooked /datum/recipe/microwave/aesirsalad - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus, - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus, - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus, - /obj/item/weapon/reagent_containers/food/snacks/grown/goldapple, - ) + fruit = list("ambrosiadeus" = 3, "goldapple" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/aesirsalad /datum/recipe/microwave/validsalad + fruit = list("ambrosia" = 3, "potato" = 1) items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris, - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris, - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris, - /obj/item/weapon/reagent_containers/food/snacks/grown/potato, /obj/item/weapon/reagent_containers/food/snacks/meatball, ) result = /obj/item/weapon/reagent_containers/food/snacks/validsalad @@ -1225,31 +579,19 @@ being_cooked.reagents.del_reagent("toxin") return being_cooked -/* -/datum/recipe/microwave/cracker - reagents = list("sodiumchloride" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/doughslice - ) - result = /obj/item/weapon/reagent_containers/food/snacks/cracker -*/ - ////////////////////////////FOOD ADDITTIONS/////////////////////////////// /datum/recipe/microwave/wrap reagents = list("soysauce" = 10) + fruit = list("cabbage" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/friedegg, - /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage, ) result = /obj/item/weapon/reagent_containers/food/snacks/wrap /datum/recipe/microwave/beans reagents = list("ketchup" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans, - /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans, - ) + fruit = list("soybeans" = 2) result = /obj/item/weapon/reagent_containers/food/snacks/beans /datum/recipe/microwave/benedict @@ -1262,10 +604,10 @@ /datum/recipe/microwave/meatbun reagents = list("soysauce" = 5) + fruit = list("cabbage" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/meatball, - /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage, ) result = /obj/item/weapon/reagent_containers/food/snacks/meatbun @@ -1284,23 +626,12 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/notasandwich -/* -/datum/recipe/microwave/sugarcookie - reagents = list("sugar" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/egg, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sugarcookie -*/ - /datum/recipe/microwave/friedbanana + reagents = list("sugar" = 10, "cornoil" = 5) + fruit = list("banana" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/grown/banana ) - /obj/item/weapon/ - reagents = list("sugar" = 10, "cornoil" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/friedbanana /datum/recipe/microwave/stuffing @@ -1361,34 +692,12 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/taco -/* -/datum/recipe/microwave/bun - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough - ) - result = /obj/item/weapon/reagent_containers/food/snacks/bun - -/datum/recipe/microwave/flatbread - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough - ) - result = /obj/item/weapon/reagent_containers/food/snacks/flatbread -*/ - /datum/recipe/microwave/meatball items = list( /obj/item/weapon/reagent_containers/food/snacks/rawmeatball ) result = /obj/item/weapon/reagent_containers/food/snacks/meatball -/* -/datum/recipe/microwave/cutlet - items = list( - /obj/item/weapon/reagent_containers/food/snacks/rawcutlet - ) - result = /obj/item/weapon/reagent_containers/food/snacks/cutlet -*/ - /datum/recipe/microwave/fries items = list( /obj/item/weapon/reagent_containers/food/snacks/rawsticks diff --git a/code/modules/food/recipes_oven.dm b/code/modules/food/recipes_oven.dm index 298636c8820..c9b1703dc54 100644 --- a/code/modules/food/recipes_oven.dm +++ b/code/modules/food/recipes_oven.dm @@ -51,11 +51,11 @@ /datum/recipe/oven/bananabread reagents = list("milk" = 5, "sugar" = 15) + fruit = list("banana" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/grown/banana, ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread @@ -68,13 +68,11 @@ /datum/recipe/oven/carrotcake reagents = list("milk" = 5, "sugar" = 15) + fruit = list("carrot" = 3) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake @@ -121,24 +119,24 @@ /datum/recipe/oven/pie reagents = list("sugar" = 5) + fruit = list("banana" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/grown/banana, ) result = /obj/item/weapon/reagent_containers/food/snacks/pie /datum/recipe/oven/cherrypie reagents = list("sugar" = 10) + fruit = list("cherries" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/grown/cherries, ) result = /obj/item/weapon/reagent_containers/food/snacks/cherrypie /datum/recipe/oven/berryclafoutis + fruit = list("berries" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/grown/berries, ) result = /obj/item/weapon/reagent_containers/food/snacks/berryclafoutis @@ -157,8 +155,8 @@ result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread /datum/recipe/oven/loadedbakedpotato + fruit = list("potato" = 1) items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/potato, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, ) result = /obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato @@ -194,73 +192,65 @@ return . /datum/recipe/oven/pizzamargherita + fruit = list("tomato" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita /datum/recipe/oven/meatpizza + fruit = list("tomato" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, /obj/item/weapon/reagent_containers/food/snacks/meat, /obj/item/weapon/reagent_containers/food/snacks/meat, /obj/item/weapon/reagent_containers/food/snacks/meat, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza /datum/recipe/oven/syntipizza + fruit = list("tomato" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza /datum/recipe/oven/mushroompizza + fruit = list("mushroom" = 5, "tomato" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza /datum/recipe/oven/vegetablepizza + fruit = list("eggplant" = 1, "carrot" = 1, "corn" = 1, "tomato" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant, - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, - /obj/item/weapon/reagent_containers/food/snacks/grown/corn, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza /datum/recipe/oven/amanita_pie + fruit = list("amanita" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita, ) result = /obj/item/weapon/reagent_containers/food/snacks/amanita_pie /datum/recipe/oven/plump_pie + fruit = list("plumphelmet" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet, ) result = /obj/item/weapon/reagent_containers/food/snacks/plump_pie @@ -300,74 +290,58 @@ result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/bread /datum/recipe/oven/applepie + fruit = list("apple" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/grown/apple, ) result = /obj/item/weapon/reagent_containers/food/snacks/applepie /datum/recipe/oven/applecake reagents = list("milk" = 5, "sugar" = 5) + fruit = list("apple" = 2) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/grown/apple, - /obj/item/weapon/reagent_containers/food/snacks/grown/apple, ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake /datum/recipe/oven/orangecake reagents = list("milk" = 5) + fruit = list("orange" = 2) items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/orange, - /obj/item/weapon/reagent_containers/food/snacks/grown/orange, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake /datum/recipe/oven/limecake reagents = list("milk" = 5) + fruit = list("lime" = 2) items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/lime, - /obj/item/weapon/reagent_containers/food/snacks/grown/lime, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/limecake /datum/recipe/oven/lemoncake reagents = list("milk" = 5) + fruit = list("lemon" = 2) items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/lemon, - /obj/item/weapon/reagent_containers/food/snacks/grown/lemon, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/lemoncake /datum/recipe/oven/chocolatecake reagents = list("milk" = 5) items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/chocolatebar, /obj/item/weapon/reagent_containers/food/snacks/chocolatebar, ) @@ -376,33 +350,29 @@ /datum/recipe/oven/braincake reagents = list("milk" = 5) items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/organ/brain ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake /datum/recipe/oven/pumpkinpie reagents = list("milk" = 5, "sugar" = 5) + fruit = list("pumpkin" = 1) items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin, - /obj/item/weapon/reagent_containers/food/snacks/egg, + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie /datum/recipe/oven/appletart reagents = list("sugar" = 5, "milk" = 5) + fruit = list("goldapple" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/flour, /obj/item/weapon/reagent_containers/food/snacks/flour, /obj/item/weapon/reagent_containers/food/snacks/flour, /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/goldapple, ) result = /obj/item/weapon/reagent_containers/food/snacks/appletart diff --git a/code/modules/hydroponics/_hydro_setup.dm b/code/modules/hydroponics/_hydro_setup.dm new file mode 100644 index 00000000000..a3fd4604a66 --- /dev/null +++ b/code/modules/hydroponics/_hydro_setup.dm @@ -0,0 +1,58 @@ +//Misc +#define DEAD_PLANT_COLOUR "#C2A180" + +// Definitions for genes (trait groupings) +#define GENE_BIOCHEMISTRY "biochemistry" +#define GENE_HARDINESS "hardiness" +#define GENE_ENVIRONMENT "environment" +#define GENE_METABOLISM "metabolism" +#define GENE_STRUCTURE "appearance" +#define GENE_DIET "diet" +#define GENE_PIGMENT "pigment" +#define GENE_OUTPUT "output" +#define GENE_ATMOSPHERE "atmosphere" +#define GENE_VIGOUR "vigour" +#define GENE_FRUIT "fruit" +#define GENE_SPECIAL "special" + +#define ALL_GENES list(GENE_BIOCHEMISTRY,GENE_HARDINESS,GENE_ENVIRONMENT,GENE_METABOLISM,GENE_STRUCTURE,GENE_DIET,GENE_PIGMENT,GENE_OUTPUT,GENE_ATMOSPHERE,GENE_VIGOUR,GENE_FRUIT,GENE_SPECIAL) + +//Definitions for traits (individual descriptors) +#define TRAIT_CHEMS 1 +#define TRAIT_EXUDE_GASSES 2 +#define TRAIT_ALTER_TEMP 3 +#define TRAIT_POTENCY 4 +#define TRAIT_HARVEST_REPEAT 5 +#define TRAIT_PRODUCES_POWER 6 +#define TRAIT_JUICY 7 +#define TRAIT_PRODUCT_ICON 8 +#define TRAIT_PLANT_ICON 0 +#define TRAIT_CONSUME_GASSES 10 +#define TRAIT_REQUIRES_NUTRIENTS 11 +#define TRAIT_NUTRIENT_CONSUMPTION 12 +#define TRAIT_REQUIRES_WATER 13 +#define TRAIT_WATER_CONSUMPTION 14 +#define TRAIT_CARNIVOROUS 15 +#define TRAIT_PARASITE 16 +#define TRAIT_STINGS 17 +#define TRAIT_IDEAL_HEAT 18 +#define TRAIT_HEAT_TOLERANCE 19 +#define TRAIT_IDEAL_LIGHT 20 +#define TRAIT_LIGHT_TOLERANCE 21 +#define TRAIT_LOWKPA_TOLERANCE 22 +#define TRAIT_HIGHKPA_TOLERANCE 23 +#define TRAIT_EXPLOSIVE 24 +#define TRAIT_TOXINS_TOLERANCE 25 +#define TRAIT_PEST_TOLERANCE 26 +#define TRAIT_WEED_TOLERANCE 27 +#define TRAIT_ENDURANCE 28 +#define TRAIT_YIELD 29 +#define TRAIT_SPREAD 30 +#define TRAIT_MATURATION 31 +#define TRAIT_PRODUCTION 32 +#define TRAIT_TELEPORTING 33 +#define TRAIT_PLANT_COLOUR 34 +#define TRAIT_PRODUCT_COLOUR 35 +#define TRAIT_BIOLUM 36 +#define TRAIT_BIOLUM_COLOUR 37 +#define TRAIT_IMMUTABLE 38 \ No newline at end of file diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm new file mode 100644 index 00000000000..056edc02d6f --- /dev/null +++ b/code/modules/hydroponics/grown.dm @@ -0,0 +1,394 @@ +//Grown foods. +/obj/item/weapon/reagent_containers/food/snacks/grown + + name = "fruit" + icon = 'icons/obj/hydroponics_products.dmi' + icon_state = "blank" + desc = "Nutritious! Probably." + + var/plantname + var/datum/seed/seed + var/potency = -1 + +/obj/item/weapon/reagent_containers/food/snacks/grown/New(newloc,planttype) + + ..() + if(!dried_type) + dried_type = type + src.pixel_x = rand(-5.0, 5) + src.pixel_y = rand(-5.0, 5) + + // Fill the object up with the appropriate reagents. + if(planttype) + plantname = planttype + + if(!plantname) + return + + if(!plant_controller) + sleep(250) // ugly hack, should mean roundstart plants are fine. + if(!plant_controller) + world << "Plant controller does not exist and [src] requires it. Aborting." + del(src) + return + + seed = plant_controller.seeds[plantname] + + if(!seed) + return + + name = "[seed.seed_name]" + + update_icon() + + if(!seed.chems) + return + + potency = seed.get_trait(TRAIT_POTENCY) + + for(var/rid in seed.chems) + var/list/reagent_data = seed.chems[rid] + if(reagent_data && reagent_data.len) + var/rtotal = reagent_data[1] + if(reagent_data.len > 1 && potency > 0) + rtotal += round(potency/reagent_data[2]) + reagents.add_reagent(rid,max(1,rtotal)) + update_desc() + if(reagents.total_volume > 0) + bitesize = 1+round(reagents.total_volume / 2, 1) + +/obj/item/weapon/reagent_containers/food/snacks/grown/proc/update_desc() + + if(!seed) + return + if(!plant_controller) + sleep(250) // ugly hack, should mean roundstart plants are fine. + if(!plant_controller) + world << "Plant controller does not exist and [src] requires it. Aborting." + del(src) + return + + if(plant_controller.product_descs["[seed.uid]"]) + desc = plant_controller.product_descs["[seed.uid]"] + else + var/list/descriptors = list() + if(reagents.has_reagent("sugar") || reagents.has_reagent("cherryjelly") || reagents.has_reagent("honey") || reagents.has_reagent("berryjuice")) + descriptors |= "sweet" + if(reagents.has_reagent("anti_toxin")) + descriptors |= "astringent" + if(reagents.has_reagent("frostoil")) + descriptors |= "numbing" + if(reagents.has_reagent("nutriment")) + descriptors |= "nutritious" + if(reagents.has_reagent("condensedcapsaicin") || reagents.has_reagent("capsaicin")) + descriptors |= "spicy" + if(reagents.has_reagent("coco")) + descriptors |= "bitter" + if(reagents.has_reagent("orangejuice") || reagents.has_reagent("lemonjuice") || reagents.has_reagent("limejuice")) + descriptors |= "sweet-sour" + if(reagents.has_reagent("radium") || reagents.has_reagent("uranium")) + descriptors |= "radioactive" + if(reagents.has_reagent("amatoxin") || reagents.has_reagent("toxin")) + descriptors |= "poisonous" + if(reagents.has_reagent("psilocybin") || reagents.has_reagent("space_drugs")) + descriptors |= "hallucinogenic" + if(reagents.has_reagent("bicaridine")) + descriptors |= "medicinal" + if(reagents.has_reagent("gold")) + descriptors |= "shiny" + if(reagents.has_reagent("lube")) + descriptors |= "slippery" + if(reagents.has_reagent("pacid") || reagents.has_reagent("sacid")) + descriptors |= "acidic" + if(seed.get_trait(TRAIT_JUICY)) + descriptors |= "juicy" + if(seed.get_trait(TRAIT_STINGS)) + descriptors |= "stinging" + if(seed.get_trait(TRAIT_TELEPORTING)) + descriptors |= "glowing" + if(seed.get_trait(TRAIT_EXPLOSIVE)) + descriptors |= "bulbous" + + var/descriptor_num = rand(2,4) + var/descriptor_count = descriptor_num + desc = "A" + while(descriptors.len && descriptor_num > 0) + var/chosen = pick(descriptors) + descriptors -= chosen + desc += "[(descriptor_count>1 && descriptor_count!=descriptor_num) ? "," : "" ] [chosen]" + descriptor_num-- + if(seed.seed_noun == "spores") + desc += " mushroom" + else + desc += " fruit" + plant_controller.product_descs["[seed.uid]"] = desc + desc += ". Delicious! Probably." + +/obj/item/weapon/reagent_containers/food/snacks/grown/update_icon() + if(!seed || !plant_controller || !plant_controller.plant_icon_cache) + return + overlays.Cut() + var/image/plant_icon + var/icon_key = "fruit-[seed.get_trait(TRAIT_PRODUCT_ICON)]-[seed.get_trait(TRAIT_PRODUCT_COLOUR)]-[seed.get_trait(TRAIT_PLANT_COLOUR)]" + if(plant_controller.plant_icon_cache[icon_key]) + plant_icon = plant_controller.plant_icon_cache[icon_key] + else + plant_icon = image('icons/obj/hydroponics_products.dmi',"blank") + var/image/fruit_base = image('icons/obj/hydroponics_products.dmi',"[seed.get_trait(TRAIT_PRODUCT_ICON)]-product") + fruit_base.color = "[seed.get_trait(TRAIT_PRODUCT_COLOUR)]" + plant_icon.overlays |= fruit_base + if("[seed.get_trait(TRAIT_PRODUCT_ICON)]-leaf" in icon_states('icons/obj/hydroponics_products.dmi')) + var/image/fruit_leaves = image('icons/obj/hydroponics_products.dmi',"[seed.get_trait(TRAIT_PRODUCT_ICON)]-leaf") + fruit_leaves.color = "[seed.get_trait(TRAIT_PLANT_COLOUR)]" + plant_icon.overlays |= fruit_leaves + plant_controller.plant_icon_cache[icon_key] = plant_icon + overlays |= plant_icon + +/obj/item/weapon/reagent_containers/food/snacks/grown/Crossed(var/mob/living/M) + if(seed && seed.get_trait(TRAIT_JUICY) == 2) + if(istype(M)) + + if(M.buckled) + return + + if(istype(M,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + if(H.shoes && H.shoes.flags & NOSLIP) + return + + M.stop_pulling() + M << "You slipped on the [name]!" + playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3) + M.Stun(8) + M.Weaken(5) + seed.thrown_at(src,M) + sleep(-1) + if(src) del(src) + return + +/obj/item/weapon/reagent_containers/food/snacks/grown/throw_impact(atom/hit_atom) + ..() + if(seed) seed.thrown_at(src,hit_atom) + +/obj/item/weapon/reagent_containers/food/snacks/grown/attackby(var/obj/item/weapon/W, var/mob/user) + + if(seed) + if(seed.get_trait(TRAIT_PRODUCES_POWER) && istype(W, /obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/C = W + if(C.use(5)) + //TODO: generalize this. + user << "You add some cable to the [src.name] and slide it inside the battery casing." + var/obj/item/weapon/stock_parts/cell/potato/pocell = new /obj/item/weapon/stock_parts/cell/potato(get_turf(user)) + if(src.loc == user && !(user.l_hand && user.r_hand) && istype(user,/mob/living/carbon/human)) + user.put_in_hands(pocell) + pocell.maxcharge = src.potency * 10 + pocell.charge = pocell.maxcharge + del(src) + return + else if(W.sharp) + if(seed.kitchen_tag == "pumpkin") // Ugggh these checks are awful. + user.show_message("You carve a face into [src]!", 1) + new /obj/item/clothing/head/hardhat/pumpkinhead (user.loc) + del(src) + return + else if(seed.kitchen_tag == "potato") + user << "You slice \the [src] into sticks." + new /obj/item/weapon/reagent_containers/food/snacks/rawsticks(get_turf(src)) + del(src) + return + else if(seed.kitchen_tag == "carrot") + user << "You slice \the [src] into sticks." + new /obj/item/weapon/reagent_containers/food/snacks/carrotfries(get_turf(src)) + del(src) + return + else if(seed.kitchen_tag == "watermelon") + user << "You slice \the [src] into large slices." + for(var/i=0,i<5,i++) + new /obj/item/weapon/reagent_containers/food/snacks/watermelonslice(get_turf(src)) + del(src) + return + else if(seed.kitchen_tag == "soybeans") + user << "You roughly chop up \the [src]." + new /obj/item/weapon/reagent_containers/food/snacks/soydope(get_turf(src)) + del(src) + return + else if(seed.chems) + if(istype(W,/obj/item/weapon/hatchet) && !isnull(seed.chems["woodpulp"])) + user.show_message("You make planks out of \the [src]!", 1) + for(var/i=0,i<2,i++) + var/obj/item/stack/sheet/wood/NG = new (user.loc) + NG.color = seed.get_trait(TRAIT_PRODUCT_COLOUR) + for (var/obj/item/stack/sheet/wood/G in user.loc) + if(G==NG) + continue + if(G.amount>=G.max_amount) + continue + G.attackby(NG, user) + user << "You add the newly-formed wood to the stack. It now contains [NG.amount] planks." + del(src) + return + else if(istype(W, /obj/item/weapon/rollingpaper)) + if(seed.kitchen_tag == "ambrosia" || seed.kitchen_tag == "ambrosiadeus" || seed.kitchen_tag == "tobacco" || seed.kitchen_tag == "stobacco") + user.unEquip(W) + if(seed.kitchen_tag == "ambrosia") + var/obj/item/clothing/mask/cigarette/joint/J = new /obj/item/clothing/mask/cigarette/joint(user.loc) + J.chem_volume = src.reagents.total_volume + src.reagents.trans_to(J, J.chem_volume) + del(W) + user.put_in_active_hand(J) + else if(seed.kitchen_tag == "ambrosiadeus") + var/obj/item/clothing/mask/cigarette/joint/deus/J = new /obj/item/clothing/mask/cigarette/joint/deus(user.loc) + J.chem_volume = src.reagents.total_volume + src.reagents.trans_to(J, J.chem_volume) + del(W) + user.put_in_active_hand(J) + else if(seed.kitchen_tag == "tobacco" || seed.kitchen_tag == "stobacco") + var/obj/item/clothing/mask/cigarette/handroll/J = new /obj/item/clothing/mask/cigarette/handroll(user.loc) + J.chem_volume = src.reagents.total_volume + src.reagents.trans_to(J, J.chem_volume) + del(W) + user.put_in_active_hand(J) + user << "\blue You roll the [src] into a rolling paper." + del(src) + else + user << "\red You can't roll a smokable from the [src]." + + ..() + +/obj/item/weapon/reagent_containers/food/snacks/grown/attack(var/mob/living/carbon/M, var/mob/user, var/def_zone) + if(user == M) + return ..() + + if(user.a_intent == "hurt") + + // This is being copypasted here because reagent_containers (WHY DOES FOOD DESCEND FROM THAT) overrides it completely. + // TODO: refactor all food paths to be less horrible and difficult to work with in this respect. ~Z + if(!istype(M) || (can_operate(M) && do_surgery(M,user,src))) return 0 + + user.lastattacked = M + M.lastattacker = user + user.attack_log += "\[[time_stamp()]\] Attacked [M.name] ([M.ckey]) with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])" + M.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])" + msg_admin_attack("[user.name] ([user.ckey])[isAntag(user) ? "(ANTAG)" : ""] attacked [M.name] ([M.ckey]) with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])" ) + + if(istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + var/hit = H.attacked_by(src, user, def_zone) + if(hit && hitsound) + playsound(loc, hitsound, 50, 1, -1) + return hit + else + if(attack_verb.len) + user.visible_message("[M] has been [pick(attack_verb)] with [src] by [user]!") + else + user.visible_message("[M] has been attacked with [src] by [user]!") + + if (hitsound) + playsound(loc, hitsound, 50, 1, -1) + switch(damtype) + if("brute") + M.take_organ_damage(force) + if(prob(33)) + var/turf/simulated/location = get_turf(M) + if(istype(location)) location.add_blood_floor(M) + if("fire") + if (!(RESIST_COLD in M.mutations)) + M.take_organ_damage(0, force) + M.updatehealth() + + if(seed && seed.get_trait(TRAIT_STINGS)) + if(!reagents || reagents.total_volume <= 0) + return + reagents.remove_any(rand(1,3)) + seed.thrown_at(src,M) + sleep(-1) + if(!src) + return + if(prob(35)) + if(user) + user << "\The [src] has fallen to bits." + //user.drop_from_inventory(src) + del(src) + + add_fingerprint(user) + return 1 + + else + ..() + +/obj/item/weapon/reagent_containers/food/snacks/grown/attack_self(mob/user as mob) + + if(!seed) + return + + if(istype(user.loc,/turf/space)) + return + + if(user.a_intent == "hurt") + user.visible_message("\The [user] squashes \the [src]!") + seed.thrown_at(src,user) + sleep(-1) + if(src) del(src) + return + + if(seed.kitchen_tag == "grass") + user.show_message("You make a grass tile out of \the [src]!", 1) + for(var/i=0,i<2,i++) + var/obj/item/stack/tile/grass/G = new (user.loc) + G.color = seed.get_trait(TRAIT_PRODUCT_COLOUR) + for (var/obj/item/stack/tile/grass/NG in user.loc) + if(G==NG) + continue + if(NG.amount>=NG.max_amount) + continue + NG.attackby(G, user) + user << "You add the newly-formed grass to the stack. It now contains [G.amount] tiles." + del(src) + return + + if(seed.get_trait(TRAIT_SPREAD) > 0) + user << "You plant the [src.name]." + new /obj/machinery/portable_atmospherics/hydroponics/soil/invisible(get_turf(user),src.seed) + new /obj/effect/plant(get_turf(user), src.seed) + del(src) + return + + /* + if(seed.kitchen_tag) + switch(seed.kitchen_tag) + if("shand") + var/obj/item/stack/medical/bruise_pack/tajaran/poultice = new /obj/item/stack/medical/bruise_pack/tajaran(user.loc) + poultice.heal_brute = potency + user << "You mash the leaves into a poultice." + del(src) + return + if("mtear") + var/obj/item/stack/medical/ointment/tajaran/poultice = new /obj/item/stack/medical/ointment/tajaran(user.loc) + poultice.heal_burn = potency + user << "You mash the petals into a poultice." + del(src) + return + */ + +/obj/item/weapon/reagent_containers/food/snacks/grown/pickup(mob/user) + ..() + if(!seed) + return + if(seed.get_trait(TRAIT_BIOLUM)) + user.SetLuminosity(user.luminosity + seed.get_trait(TRAIT_BIOLUM)) + SetLuminosity(0) + if(seed.get_trait(TRAIT_STINGS)) + var/mob/living/carbon/human/H = user + if(istype(H) && H.gloves) + return + if(!reagents || reagents.total_volume <= 0) + return + reagents.remove_any(rand(1,3)) //Todo, make it actually remove the reagents the seed uses. + seed.do_thorns(H,src) + seed.do_sting(H,src,pick("r_hand","l_hand")) + +/obj/item/weapon/reagent_containers/food/snacks/grown/dropped(mob/user) + ..() + if(seed && seed.get_trait(TRAIT_BIOLUM)) + user.SetLuminosity(user.luminosity - seed.get_trait(TRAIT_BIOLUM)) + SetLuminosity(seed.get_trait(TRAIT_BIOLUM)) diff --git a/code/modules/hydroponics/grown_inedible.dm b/code/modules/hydroponics/grown_inedible.dm index a7cb080602b..8c23033a586 100644 --- a/code/modules/hydroponics/grown_inedible.dm +++ b/code/modules/hydroponics/grown_inedible.dm @@ -8,7 +8,7 @@ var/plantname var/potency = 1 -/obj/item/weapon/grown/New() +/obj/item/weapon/grown/New(newloc,planttype) ..() @@ -17,112 +17,20 @@ R.my_atom = src //Handle some post-spawn var stuff. - spawn(1) - // Fill the object up with the appropriate reagents. - if(!isnull(plantname)) - var/datum/seed/S = seed_types[plantname] - if(!S || !S.chems) - return - - potency = S.potency - - for(var/rid in S.chems) - var/list/reagent_data = S.chems[rid] - var/rtotal = reagent_data[1] - if(reagent_data.len > 1 && potency > 0) - rtotal += round(potency/reagent_data[2]) - reagents.add_reagent(rid,max(1,rtotal)) - -/obj/item/weapon/grown/proc/changePotency(newValue) //-QualityVan - potency = newValue - -/obj/item/weapon/grown/log - name = "towercap" - name = "tower-cap log" - desc = "It's better than bad, it's good!" - icon = 'icons/obj/harvest.dmi' - icon_state = "logs" - force = 5 - throwforce = 5 - w_class = 3.0 - throw_speed = 3 - throw_range = 3 - origin_tech = "materials=1" - attack_verb = list("bashed", "battered", "bludgeoned", "whacked") - - attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || (istype(W, /obj/item/weapon/twohanded/fireaxe) && W:wielded) || istype(W, /obj/item/weapon/melee/energy)) - user.show_message("You make planks out of \the [src]!", 1) - for(var/i=0,i<2,i++) - var/obj/item/stack/sheet/wood/NG = new (user.loc) - for (var/obj/item/stack/sheet/wood/G in user.loc) - if(G==NG) - continue - if(G.amount>=G.max_amount) - continue - G.attackby(NG, user, params) - usr << "You add the newly-formed wood to the stack. It now contains [NG.amount] planks." - del(src) + if(planttype) + plantname = planttype + var/datum/seed/S = plant_controller.seeds[plantname] + if(!S || !S.chems) return -/obj/item/weapon/grown/sunflower // FLOWER POWER! - plantname = "sunflowers" - name = "sunflower" - desc = "It's beautiful! A certain person might beat you to death if you trample these." - icon = 'icons/obj/harvest.dmi' - icon_state = "sunflower" - damtype = "fire" - force = 0 - throwforce = 1 - w_class = 1.0 - throw_speed = 1 - throw_range = 3 + potency = S.get_trait(TRAIT_POTENCY) -/obj/item/weapon/grown/sunflower/attack(mob/M as mob, mob/user as mob) - M << " [user] smacks you with a sunflower!FLOWER POWER" - user << " Your sunflower's FLOWER POWER strikes [M]" - -/obj/item/weapon/grown/nettle // -- Skie - plantname = "nettle" - desc = "It's probably not wise to touch it with bare hands..." - icon = 'icons/obj/weapons.dmi' - name = "nettle" - icon_state = "nettle" - damtype = "fire" - force = 15 - throwforce = 1 - w_class = 2.0 - throw_speed = 1 - throw_range = 3 - origin_tech = "combat=1" - New() - ..() - spawn(5) - force = round((5+potency/5), 1) - -/obj/item/weapon/grown/nettle/pickup(mob/living/carbon/human/user as mob) - if(!user.gloves) - user << "\red The nettle burns your bare hand!" - if(istype(user, /mob/living/carbon/human)) - var/organ = ((user.hand ? "l_":"r_") + "arm") - var/obj/item/organ/external/affecting = user.get_organ(organ) - if(affecting.take_damage(0,force)) - user.UpdateDamageIcon() - else - user.take_organ_damage(0,force) - -/obj/item/weapon/grown/nettle/afterattack(atom/A as mob|obj, mob/user as mob, proximity) - if(!proximity) return - if(force > 0) - force -= rand(1,(force/3)+1) // When you whack someone with it, leaves fall off - playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) - else - usr << "All the leaves have fallen off the nettle from violent whacking." - del(src) - -/obj/item/weapon/grown/nettle/changePotency(newValue) //-QualityVan - potency = newValue - force = round((5+potency/5), 1) + for(var/rid in S.chems) + var/list/reagent_data = S.chems[rid] + var/rtotal = reagent_data[1] + if(reagent_data.len > 1 && potency > 0) + rtotal += round(potency/reagent_data[2]) + reagents.add_reagent(rid,max(1,rtotal)) /obj/item/weapon/grown/deathnettle // -- Skie plantname = "deathnettle" @@ -147,53 +55,10 @@ viewers(user) << "\red [user] is eating some of the [src.name]! It looks like \he's trying to commit suicide." return (BRUTELOSS|TOXLOSS) -/obj/item/weapon/grown/deathnettle/pickup(mob/living/carbon/human/user as mob) - if(!user.gloves) - if(istype(user, /mob/living/carbon/human)) - var/organ = ((user.hand ? "l_":"r_") + "arm") - var/obj/item/organ/external/affecting = user.get_organ(organ) - if(affecting.take_damage(0,force)) - user.UpdateDamageIcon() - else - user.take_organ_damage(0,force) - if(prob(50)) - user.Paralyse(5) - user << "\red You are stunned by the Deathnettle when you try picking it up!" - -/obj/item/weapon/grown/deathnettle/attack(mob/living/carbon/M as mob, mob/user as mob) - if(!..()) return - if(istype(M, /mob/living)) - M << "\red You are stunned by the powerful acid of the Deathnettle!" - - M.attack_log += text("\[[time_stamp()]\] Had the [src.name] used on them by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] on [M.name] ([M.ckey])") - msg_admin_attack("[user.name] ([user.ckey])[isAntag(user) ? "(ANTAG)" : ""] used the [src.name] on [M.name] ([M.ckey]) (JMP)") - - playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) - - M.eye_blurry += force/7 - if(prob(20)) - M.Paralyse(force/6) - M.Weaken(force/15) - M.drop_item() - -/obj/item/weapon/grown/deathnettle/afterattack(atom/A as mob|obj, mob/user as mob, proximity) - if(!proximity) return - if (force > 0) - force -= rand(1,(force/3)+1) // When you whack someone with it, leaves fall off - - else - usr << "All the leaves have fallen off the deathnettle from violent whacking." - del(src) - -/obj/item/weapon/grown/deathnettle/changePotency(newValue) //-QualityVan - potency = newValue - force = round((5+potency/2.5), 1) - /obj/item/weapon/corncob name = "corn cob" desc = "A reminder of meals gone by." - icon = 'icons/obj/harvest.dmi' + icon = 'icons/obj/trash.dmi' icon_state = "corncob" item_state = "corncob" w_class = 2.0 @@ -201,10 +66,21 @@ throw_speed = 4 throw_range = 20 -/obj/item/weapon/corncob/attackby(obj/item/weapon/W as obj, mob/user as mob, params) +/obj/item/weapon/corncob/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || istype(W, /obj/item/weapon/kitchen/utensil/knife) || istype(W, /obj/item/weapon/kitchenknife) || istype(W, /obj/item/weapon/kitchenknife/ritual)) user << "You use [W] to fashion a pipe out of the corn cob!" new /obj/item/clothing/mask/cigarette/pipe/cobpipe (user.loc) del(src) return + +/obj/item/weapon/bananapeel + name = "banana peel" + desc = "A peel from a banana." + icon = 'icons/obj/items.dmi' + icon_state = "banana_peel" + item_state = "banana_peel" + w_class = 2.0 + throwforce = 0 + throw_speed = 4 + throw_range = 20 diff --git a/code/modules/hydroponics/grown_predefined.dm b/code/modules/hydroponics/grown_predefined.dm new file mode 100644 index 00000000000..682ce791e91 --- /dev/null +++ b/code/modules/hydroponics/grown_predefined.dm @@ -0,0 +1,40 @@ +// Predefined types for placing on the map. + +/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap + plantname = "libertycap" + +/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris + plantname = "ambrosia" + +/obj/item/weapon/reagent_containers/food/snacks/grown/tomato + plantname = "tomato" + +/obj/item/weapon/reagent_containers/food/snacks/grown/carrot + plantname = "carrot" + +/obj/item/weapon/reagent_containers/food/snacks/grown/berries + plantname = "berries" + +/obj/item/weapon/reagent_containers/food/snacks/grown/banana + plantname = "banana" + +/obj/item/weapon/reagent_containers/food/snacks/grown/chili + plantname = "chili" + +/obj/item/weapon/reagent_containers/food/snacks/grown/lemon + plantname = "lemon" + +/obj/item/weapon/reagent_containers/food/snacks/grown/cherries + plantname = "cherry" + +/obj/item/weapon/reagent_containers/food/snacks/grown/orange + plantname = "orange" + +/obj/item/weapon/reagent_containers/food/snacks/grown/corn + plantname = "corn" + +/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita + plantname = "amanita" + +/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus + plantname = "ambrosiadeus" \ No newline at end of file diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm new file mode 100644 index 00000000000..abb67db4615 --- /dev/null +++ b/code/modules/hydroponics/seed.dm @@ -0,0 +1,743 @@ +/datum/plantgene + var/genetype // Label used when applying trait. + var/list/values // Values to copy into the target seed datum. + +/datum/seed + //Tracking. + var/uid // Unique identifier. + var/name // Index for global list. + var/seed_name // Plant name for seed packet. + var/seed_noun = "seeds" // Descriptor for packet. + var/display_name // Prettier name. + var/roundstart // If set, seed will not display variety number. + var/mysterious // Only used for the random seed packets. + var/can_self_harvest = 0 // Mostly used for living mobs. + var/growth_stages = 0 // Number of stages the plant passes through before it is mature. + var/list/traits = list() // Initialized in New() + var/list/mutants // Possible predefined mutant varieties, if any. + var/list/chems // Chemicals that plant produces in products/injects into victim. + var/list/consume_gasses // The plant will absorb these gasses during its life. + var/list/exude_gasses // The plant will exude these gasses during its life. + var/kitchen_tag // Used by the reagent grinder. + var/trash_type // Garbage item produced when eaten. + var/splat_type = /obj/effect/decal/cleanable/fruit_smudge // Graffiti decal. + var/has_mob_product + +/datum/seed/New() + + set_trait(TRAIT_IMMUTABLE, 0) // If set, plant will never mutate. If -1, plant is highly mutable. + set_trait(TRAIT_HARVEST_REPEAT, 0) // If 1, this plant will fruit repeatedly. + set_trait(TRAIT_PRODUCES_POWER, 0) // Can be used to make a battery. + set_trait(TRAIT_JUICY, 0) // When thrown, causes a splatter decal. + set_trait(TRAIT_EXPLOSIVE, 0) // When thrown, acts as a grenade. + set_trait(TRAIT_CARNIVOROUS, 0) // 0 = none, 1 = eat pests in tray, 2 = eat living things (when a vine). + set_trait(TRAIT_PARASITE, 0) // 0 = no, 1 = gain health from weed level. + set_trait(TRAIT_STINGS, 0) // Can cause damage/inject reagents when thrown or handled. + set_trait(TRAIT_YIELD, 0) // Amount of product. + set_trait(TRAIT_SPREAD, 0) // 0 limits plant to tray, 1 = creepers, 2 = vines. + set_trait(TRAIT_MATURATION, 0) // Time taken before the plant is mature. + set_trait(TRAIT_PRODUCTION, 0) // Time before harvesting can be undertaken again. + set_trait(TRAIT_TELEPORTING, 0) // Uses the bluespace tomato effect. + set_trait(TRAIT_BIOLUM, 0) // Plant is bioluminescent. + set_trait(TRAIT_ALTER_TEMP, 0) // If set, the plant will periodically alter local temp by this amount. + set_trait(TRAIT_PRODUCT_ICON, 0) // Icon to use for fruit coming from this plant. + set_trait(TRAIT_PLANT_ICON, 0) // Icon to use for the plant growing in the tray. + set_trait(TRAIT_PRODUCT_COLOUR, 0) // Colour to apply to product icon. + set_trait(TRAIT_BIOLUM_COLOUR, 0) // The colour of the plant's radiance. + set_trait(TRAIT_POTENCY, 1) // General purpose plant strength value. + set_trait(TRAIT_REQUIRES_NUTRIENTS, 1) // The plant can starve. + set_trait(TRAIT_REQUIRES_WATER, 1) // The plant can become dehydrated. + set_trait(TRAIT_WATER_CONSUMPTION, 3) // Plant drinks this much per tick. + set_trait(TRAIT_LIGHT_TOLERANCE, 5) // Departure from ideal that is survivable. + set_trait(TRAIT_TOXINS_TOLERANCE, 5) // Resistance to poison. + set_trait(TRAIT_PEST_TOLERANCE, 5) // Threshold for pests to impact health. + set_trait(TRAIT_WEED_TOLERANCE, 5) // Threshold for weeds to impact health. + set_trait(TRAIT_IDEAL_LIGHT, 8) // Preferred light level in luminosity. + set_trait(TRAIT_HEAT_TOLERANCE, 20) // Departure from ideal that is survivable. + set_trait(TRAIT_LOWKPA_TOLERANCE, 25) // Low pressure capacity. + set_trait(TRAIT_ENDURANCE, 100) // Maximum plant HP when growing. + set_trait(TRAIT_HIGHKPA_TOLERANCE, 200) // High pressure capacity. + set_trait(TRAIT_IDEAL_HEAT, 293) // Preferred temperature in Kelvin. + set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.25) // Plant eats this much per tick. + set_trait(TRAIT_PLANT_COLOUR, "#46B543") // Colour of the plant icon. + + spawn(5) + sleep(-1) + update_growth_stages() + +/datum/seed/proc/get_trait(var/trait) + return traits["[trait]"] + +/datum/seed/proc/set_trait(var/trait,var/nval,var/ubound,var/lbound, var/degrade) + if(!isnull(degrade)) nval *= degrade + if(!isnull(ubound)) nval = min(nval,ubound) + if(!isnull(lbound)) nval = max(nval,lbound) + traits["[trait]"] = nval + +/datum/seed/proc/create_spores(var/turf/T, var/obj/item/thrown) + if(!T) + return + if(!istype(T)) + T = get_turf(T) + if(!T) + return + + var/datum/reagents/R = new/datum/reagents(100) + R.my_atom = thrown + if(chems.len) + for(var/rid in chems) + var/injecting = min(5,max(1,get_trait(TRAIT_POTENCY)/3)) + R.add_reagent(rid,injecting) + + var/datum/effect/effect/system/chem_smoke_spread/S = new() + S.attach(T) + S.set_up(R, round(get_trait(TRAIT_POTENCY)/4), 0, T) + S.start() + +// Does brute damage to a target. +/datum/seed/proc/do_thorns(var/mob/living/carbon/human/target, var/obj/item/fruit, var/target_limb) + + if(!get_trait(TRAIT_CARNIVOROUS)) + return + + if(!istype(target)) + if(istype(target, /mob/living/simple_animal/mouse) || istype(target, /mob/living/simple_animal/lizard)) + new /obj/effect/decal/cleanable/blood/splatter(get_turf(target)) + del(target) + return + + + if(!target_limb) target_limb = pick("l_foot","r_foot","l_leg","r_leg","l_hand","r_hand","l_arm", "r_arm","head","chest","groin") + var/obj/item/organ/external/affecting = target.get_organ(target_limb) + var/damage = 0 + + if(get_trait(TRAIT_CARNIVOROUS)) + if(get_trait(TRAIT_CARNIVOROUS) == 2) + if(affecting) + target << "\The [fruit]'s thorns pierce your [affecting.name] greedily!" + else + target << "\The [fruit]'s thorns pierce your flesh greedily!" + damage = get_trait(TRAIT_POTENCY)/2 + else + if(affecting) + target << "\The [fruit]'s thorns dig deeply into your [affecting.name]!" + else + target << "\The [fruit]'s thorns dig deeply into your flesh!" + damage = get_trait(TRAIT_POTENCY)/5 + else + return + + if(affecting) + affecting.take_damage(damage, 0) + affecting.add_autopsy_data("Thorns",damage) + else + target.adjustBruteLoss(damage) + target.UpdateDamageIcon() + target.updatehealth() + +// Adds reagents to a target. +/datum/seed/proc/do_sting(var/mob/living/carbon/human/target, var/obj/item/fruit) + if(!get_trait(TRAIT_STINGS)) + return + if(chems && chems.len) + + var/body_coverage = HEAD|HEADCOVERSMOUTH|HEADCOVERSEYES|UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS + + for(var/obj/item/clothing/clothes in target) + if(target.l_hand == clothes|| target.r_hand == clothes) + continue + body_coverage &= ~(clothes.body_parts_covered) + + if(!body_coverage) + return + + target << "You are stung by \the [fruit]!" + for(var/rid in chems) + var/injecting = min(5,max(1,get_trait(TRAIT_POTENCY)/5)) + target.reagents.add_reagent(rid,injecting) + +//Splatter a turf. +/datum/seed/proc/splatter(var/turf/T,var/obj/item/thrown) + if(splat_type) + var/obj/effect/plant/splat = new splat_type(T, src) + if(!istype(splat)) // Plants handle their own stuff. + splat.name = "[thrown.name] [pick("smear","smudge","splatter")]" + if(get_trait(TRAIT_BIOLUM)) + if(get_trait(TRAIT_BIOLUM_COLOUR)) + splat.l_color = get_trait(TRAIT_BIOLUM_COLOUR) + splat.SetLuminosity(get_trait(TRAIT_BIOLUM)) + if(get_trait(TRAIT_PRODUCT_COLOUR)) + splat.color = get_trait(TRAIT_PRODUCT_COLOUR) + + if(chems) + for(var/mob/living/M in T.contents) + if(!M.reagents) + continue + for(var/chem in chems) + var/injecting = min(5,max(1,get_trait(TRAIT_POTENCY)/3)) + M.reagents.add_reagent(chem,injecting) + +//Applies an effect to a target atom. +/datum/seed/proc/thrown_at(var/obj/item/thrown,var/atom/target, var/force_explode) + + var/splatted + var/turf/origin_turf = get_turf(target) + + if(force_explode || get_trait(TRAIT_EXPLOSIVE)) + + create_spores(origin_turf, thrown) + + var/flood_dist = min(10,max(1,get_trait(TRAIT_POTENCY)/15)) + var/list/open_turfs = list() + var/list/closed_turfs = list() + var/list/valid_turfs = list() + open_turfs |= origin_turf + + // Flood fill to get affected turfs. + while(open_turfs.len) + var/turf/T = pick(open_turfs) + open_turfs -= T + closed_turfs |= T + valid_turfs |= T + + for(var/dir in alldirs) + var/turf/neighbor = get_step(T,dir) + if(!neighbor || (neighbor in closed_turfs) || (neighbor in open_turfs)) + continue + if(neighbor.density || get_dist(neighbor,origin_turf) > flood_dist || istype(neighbor,/turf/space)) + closed_turfs |= neighbor + continue + // Check for windows. + var/no_los + var/turf/last_turf = origin_turf + for(var/turf/target_turf in getline(origin_turf,neighbor)) + if(!last_turf.Enter(target_turf) || target_turf.density) + no_los = 1 + break + last_turf = target_turf + if(!no_los && !origin_turf.Enter(neighbor)) + no_los = 1 + if(no_los) + closed_turfs |= neighbor + continue + open_turfs |= neighbor + + for(var/turf/T in valid_turfs) + for(var/mob/living/M in T.contents) + apply_special_effect(M) + splatter(T,thrown) + origin_turf.visible_message("The [thrown.name] explodes!") + del(thrown) + return + + if(istype(target,/mob/living)) + splatted = apply_special_effect(target,thrown) + else if(istype(target,/turf)) + splatted = 1 + for(var/mob/living/M in target.contents) + apply_special_effect(M) + + if(get_trait(TRAIT_JUICY) && splatted) + splatter(origin_turf,thrown) + origin_turf.visible_message("The [thrown.name] splatters against [target]!") + del(thrown) + +/datum/seed/proc/handle_environment(var/turf/current_turf, var/datum/gas_mixture/environment, var/light_supplied, var/check_only) + + var/health_change = 0 + /* + // Handle gas consumption. + if(consume_gasses && consume_gasses.len) + var/missing_gas = 0 + for(var/gas in consume_gasses) + if(environment && environment.gas && environment.gas[gas] && \ + environment.gas[gas] >= consume_gasses[gas]) + if(!check_only) + environment.adjust_gas(gas,-consume_gasses[gas],1) + else + missing_gas++ + + if(missing_gas > 0) + health_change += missing_gas * HYDRO_SPEED_MULTIPLIER + */ + + // Process it. + var/pressure = environment.return_pressure() + if(pressure < get_trait(TRAIT_LOWKPA_TOLERANCE)|| pressure > get_trait(TRAIT_HIGHKPA_TOLERANCE)) + health_change += rand(1,3) * HYDRO_SPEED_MULTIPLIER + + if(abs(environment.temperature - get_trait(TRAIT_IDEAL_HEAT)) > get_trait(TRAIT_HEAT_TOLERANCE)) + health_change += rand(1,3) * HYDRO_SPEED_MULTIPLIER + + /* + // Handle gas production. + if(exude_gasses && exude_gasses.len && !check_only) + for(var/gas in exude_gasses) + environment.adjust_gas(gas, max(1,round((exude_gasses[gas]*(get_trait(TRAIT_POTENCY)/5))/exude_gasses.len))) + */ + + // Handle light requirements. + if(!light_supplied) + var/area/A = get_area(current_turf) + if(A) + if(A.lighting_use_dynamic) + light_supplied = max(0,min(10,current_turf.lighting_lumcount)-5) + else + light_supplied = 5 + if(light_supplied) + if(abs(light_supplied - get_trait(TRAIT_IDEAL_LIGHT)) > get_trait(TRAIT_LIGHT_TOLERANCE)) + health_change += rand(1,3) * HYDRO_SPEED_MULTIPLIER + + return health_change + +/datum/seed/proc/apply_special_effect(var/mob/living/target,var/obj/item/thrown) + + var/impact = 1 + do_sting(target,thrown) + do_thorns(target,thrown) + + // Bluespace tomato code copied over from grown.dm. + if(get_trait(TRAIT_TELEPORTING)) + + //Plant potency determines radius of teleport. + var/outer_teleport_radius = get_trait(TRAIT_POTENCY)/5 + var/inner_teleport_radius = get_trait(TRAIT_POTENCY)/15 + + var/list/turfs = list() + if(inner_teleport_radius > 0) + for(var/turf/T in orange(target,outer_teleport_radius)) + if(get_dist(target,T) >= inner_teleport_radius) + turfs |= T + + if(turfs.len) + // Moves the mob, causes sparks. + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(3, 1, get_turf(target)) + s.start() + var/turf/picked = get_turf(pick(turfs)) // Just in case... + new/obj/effect/decal/cleanable/molten_item(get_turf(target)) // Leave a pile of goo behind for dramatic effect... + target.loc = picked // And teleport them to the chosen location. + + impact = 1 + + return impact + +//Creates a random seed. MAKE SURE THE LINE HAS DIVERGED BEFORE THIS IS CALLED. +/datum/seed/proc/randomize() + + roundstart = 0 + seed_name = "strange plant" // TODO: name generator. + display_name = "strange plants" // TODO: name generator. + mysterious = 1 + seed_noun = pick("spores","nodes","cuttings","seeds") + + set_trait(TRAIT_POTENCY,rand(5,30),200,0) + set_trait(TRAIT_PRODUCT_ICON,pick(plant_controller.plant_product_sprites)) + set_trait(TRAIT_PLANT_ICON,pick(plant_controller.plant_sprites)) + set_trait(TRAIT_PLANT_COLOUR,"#[get_random_colour(0,75,190)]") + set_trait(TRAIT_PRODUCT_COLOUR,"#[get_random_colour(0,75,190)]") + update_growth_stages() + + if(prob(20)) + set_trait(TRAIT_HARVEST_REPEAT,1) + + if(prob(15)) + if(prob(15)) + set_trait(TRAIT_JUICY,2) + else + set_trait(TRAIT_JUICY,1) + + if(prob(5)) + set_trait(TRAIT_STINGS,1) + + if(prob(5)) + set_trait(TRAIT_PRODUCES_POWER,1) + + if(prob(1)) + set_trait(TRAIT_EXPLOSIVE,1) + else if(prob(1)) + set_trait(TRAIT_TELEPORTING,1) + + if(prob(5)) + consume_gasses = list() + var/gas = pick("oxygen","nitrogen","plasma","carbon_dioxide") + consume_gasses[gas] = rand(3,9) + + if(prob(5)) + exude_gasses = list() + var/gas = pick("oxygen","nitrogen","plasma","carbon_dioxide") + exude_gasses[gas] = rand(3,9) + + chems = list() + if(prob(80)) + chems["nutriment"] = list(rand(1,10),rand(10,20)) + + var/additional_chems = rand(0,5) + + if(additional_chems) + var/list/possible_chems = list( + "woodpulp", + "styptic_powder", + "methamphetamine", + "cryoxadone", + "blood", + "water", + "potassium", + "plasticide", + "mutationtoxin", + "amutationtoxin", + "epinephrine", + "space_drugs", + "salglu_solution", + "mercury", + "sugar", + "radium", + "mutadone", + "mannitol", + "thermite", + "sal_acid", + "atropine", + "omnizine", + "salbutamol", + "plasma", + "synaptizine", + "haloperidol", + "potass_iodide", + "mitocholide", + "toxin", + "rezadone", + "antihol", + "slimejelly", + "cyanide", + "lsd", + "morphine" + ) + + for(var/x=1;x<=additional_chems;x++) + if(!possible_chems.len) + break + var/new_chem = pick(possible_chems) + possible_chems -= new_chem + chems[new_chem] = list(rand(1,10),rand(10,20)) + + if(prob(90)) + set_trait(TRAIT_REQUIRES_NUTRIENTS,1) + set_trait(TRAIT_NUTRIENT_CONSUMPTION,rand(25)/25) + else + set_trait(TRAIT_REQUIRES_NUTRIENTS,0) + + if(prob(90)) + set_trait(TRAIT_REQUIRES_WATER,1) + set_trait(TRAIT_WATER_CONSUMPTION,rand(10)) + else + set_trait(TRAIT_REQUIRES_WATER,0) + + set_trait(TRAIT_IDEAL_HEAT, rand(100,400)) + set_trait(TRAIT_HEAT_TOLERANCE, rand(10,30)) + set_trait(TRAIT_IDEAL_LIGHT, rand(2,10)) + set_trait(TRAIT_LIGHT_TOLERANCE, rand(2,7)) + set_trait(TRAIT_TOXINS_TOLERANCE, rand(2,7)) + set_trait(TRAIT_PEST_TOLERANCE, rand(2,7)) + set_trait(TRAIT_WEED_TOLERANCE, rand(2,7)) + set_trait(TRAIT_LOWKPA_TOLERANCE, rand(10,50)) + set_trait(TRAIT_HIGHKPA_TOLERANCE,rand(100,300)) + + if(prob(5)) + set_trait(TRAIT_ALTER_TEMP,rand(-5,5)) + + if(prob(1)) + set_trait(TRAIT_IMMUTABLE,-1) + + var/carnivore_prob = rand(100) + if(carnivore_prob < 5) + set_trait(TRAIT_CARNIVOROUS,2) + else if(carnivore_prob < 10) + set_trait(TRAIT_CARNIVOROUS,1) + + if(prob(10)) + set_trait(TRAIT_PARASITE,1) + + var/vine_prob = rand(100) + if(vine_prob < 5) + set_trait(TRAIT_SPREAD,2) + else if(vine_prob < 10) + set_trait(TRAIT_SPREAD,1) + + if(prob(5)) + set_trait(TRAIT_BIOLUM,1) + set_trait(TRAIT_BIOLUM_COLOUR,"#[get_random_colour(0,75,190)]") + + set_trait(TRAIT_ENDURANCE,rand(60,100)) + set_trait(TRAIT_YIELD,rand(3,15)) + set_trait(TRAIT_MATURATION,rand(5,15)) + set_trait(TRAIT_PRODUCTION,get_trait(TRAIT_MATURATION)+rand(2,5)) + +//Returns a key corresponding to an entry in the global seed list. +/datum/seed/proc/get_mutant_variant() + if(!mutants || !mutants.len || get_trait(TRAIT_IMMUTABLE) > 0) return 0 + return pick(mutants) + +//Mutates the plant overall (randomly). +/datum/seed/proc/mutate(var/degree,var/turf/source_turf) + + if(!degree || get_trait(TRAIT_IMMUTABLE) > 0) return + + source_turf.visible_message("\The [display_name] quivers!") + + //This looks like shit, but it's a lot easier to read/change this way. + var/total_mutations = rand(1,1+degree) + for(var/i = 0;i\The [display_name] withers rapidly!") + if(1) + set_trait(TRAIT_NUTRIENT_CONSUMPTION,get_trait(TRAIT_NUTRIENT_CONSUMPTION)+rand(-(degree*0.1),(degree*0.1)),5,0) + set_trait(TRAIT_WATER_CONSUMPTION, get_trait(TRAIT_WATER_CONSUMPTION) +rand(-degree,degree),50,0) + set_trait(TRAIT_JUICY, !get_trait(TRAIT_JUICY)) + set_trait(TRAIT_STINGS, !get_trait(TRAIT_STINGS)) + if(2) + set_trait(TRAIT_IDEAL_HEAT, get_trait(TRAIT_IDEAL_HEAT) + (rand(-5,5)*degree),800,70) + set_trait(TRAIT_HEAT_TOLERANCE, get_trait(TRAIT_HEAT_TOLERANCE) + (rand(-5,5)*degree),800,70) + set_trait(TRAIT_LOWKPA_TOLERANCE, get_trait(TRAIT_LOWKPA_TOLERANCE)+ (rand(-5,5)*degree),80,0) + set_trait(TRAIT_HIGHKPA_TOLERANCE, get_trait(TRAIT_HIGHKPA_TOLERANCE)+(rand(-5,5)*degree),500,110) + set_trait(TRAIT_EXPLOSIVE,1) + if(3) + set_trait(TRAIT_IDEAL_LIGHT, get_trait(TRAIT_IDEAL_LIGHT)+(rand(-1,1)*degree),30,0) + set_trait(TRAIT_LIGHT_TOLERANCE, get_trait(TRAIT_LIGHT_TOLERANCE)+(rand(-2,2)*degree),10,0) + if(4) + set_trait(TRAIT_TOXINS_TOLERANCE, get_trait(TRAIT_TOXINS_TOLERANCE)+(rand(-2,2)*degree),10,0) + if(5) + set_trait(TRAIT_WEED_TOLERANCE, get_trait(TRAIT_WEED_TOLERANCE)+(rand(-2,2)*degree),10, 0) + if(prob(degree*5)) + set_trait(TRAIT_CARNIVOROUS, get_trait(TRAIT_CARNIVOROUS)+rand(-degree,degree),2, 0) + if(get_trait(TRAIT_CARNIVOROUS)) + source_turf.visible_message("\The [display_name] shudders hungrily.") + if(6) + set_trait(TRAIT_WEED_TOLERANCE, get_trait(TRAIT_WEED_TOLERANCE)+(rand(-2,2)*degree),10, 0) + if(prob(degree*5)) + set_trait(TRAIT_PARASITE,!get_trait(TRAIT_PARASITE)) + if(7) + if(get_trait(TRAIT_YIELD) != -1) + set_trait(TRAIT_YIELD, get_trait(TRAIT_YIELD)+(rand(-2,2)*degree),10,0) + if(8) + set_trait(TRAIT_ENDURANCE, get_trait(TRAIT_ENDURANCE)+(rand(-5,5)*degree),100,10) + set_trait(TRAIT_PRODUCTION, get_trait(TRAIT_PRODUCTION)+(rand(-1,1)*degree),10, 1) + set_trait(TRAIT_POTENCY, get_trait(TRAIT_POTENCY)+(rand(-20,20)*degree),200, 0) + if(prob(degree*5)) + set_trait(TRAIT_SPREAD, get_trait(TRAIT_SPREAD)+rand(-1,1),2, 0) + source_turf.visible_message("\The [display_name] spasms visibly, shifting in the tray.") + if(9) + set_trait(TRAIT_MATURATION, get_trait(TRAIT_MATURATION)+(rand(-1,1)*degree),30, 0) + if(prob(degree*5)) + set_trait(TRAIT_HARVEST_REPEAT, !get_trait(TRAIT_HARVEST_REPEAT)) + if(10) + if(prob(degree*2)) + set_trait(TRAIT_BIOLUM, !get_trait(TRAIT_BIOLUM)) + if(get_trait(TRAIT_BIOLUM)) + source_turf.visible_message("\The [display_name] begins to glow!") + if(prob(degree*2)) + set_trait(TRAIT_BIOLUM_COLOUR,"#[get_random_colour(0,75,190)]") + source_turf.visible_message("\The [display_name]'s glow changes colour!") + else + source_turf.visible_message("\The [display_name]'s glow dims...") + if(11) + set_trait(TRAIT_TELEPORTING,1) + + return + +//Mutates a specific trait/set of traits. +/datum/seed/proc/apply_gene(var/datum/plantgene/gene) + + if(!gene || !gene.values || get_trait(TRAIT_IMMUTABLE) > 0) return + + // Splicing products has some detrimental effects on yield and lifespan. + // We handle this before we do the rest of the looping, as normal traits don't really include lists. + switch(gene.genetype) + if(GENE_BIOCHEMISTRY) + for(var/trait in list(TRAIT_YIELD, TRAIT_ENDURANCE)) + if(get_trait(trait) > 0) set_trait(trait,get_trait(trait),null,1,0.85) + + if(!chems) chems = list() + + var/list/gene_value = gene.values["[TRAIT_CHEMS]"] + for(var/rid in gene_value) + + var/list/gene_chem = gene_value[rid] + + if(!chems[rid]) + chems[rid] = gene_chem.Copy() + continue + + for(var/i=1;i<=gene_chem.len;i++) + + if(isnull(gene_chem[i])) gene_chem[i] = 0 + + if(chems[rid][i]) + chems[rid][i] = max(1,round((gene_chem[i] + chems[rid][i])/2)) + else + chems[rid][i] = gene_chem[i] + + var/list/new_gasses = gene.values["[TRAIT_EXUDE_GASSES]"] + if(islist(new_gasses)) + if(!exude_gasses) exude_gasses = list() + exude_gasses |= new_gasses + for(var/gas in exude_gasses) + exude_gasses[gas] = max(1,round(exude_gasses[gas]*0.8)) + + gene.values["[TRAIT_EXUDE_GASSES]"] = null + gene.values["[TRAIT_CHEMS]"] = null + + if(GENE_DIET) + var/list/new_gasses = gene.values["[TRAIT_CONSUME_GASSES]"] + consume_gasses |= new_gasses + gene.values["[TRAIT_CONSUME_GASSES]"] = null + if(GENE_METABOLISM) + has_mob_product = gene.values["mob_product"] + gene.values["mob_product"] = null + + for(var/trait in gene.values) + set_trait(trait,gene.values["[trait]"]) + + update_growth_stages() + +//Returns a list of the desired trait values. +/datum/seed/proc/get_gene(var/genetype) + + if(!genetype) return 0 + + var/list/traits_to_copy + var/datum/plantgene/P = new() + P.genetype = genetype + P.values = list() + + switch(genetype) + if(GENE_BIOCHEMISTRY) + P.values["[TRAIT_CHEMS]"] = chems + P.values["[TRAIT_EXUDE_GASSES]"] = exude_gasses + traits_to_copy = list(TRAIT_POTENCY) + if(GENE_OUTPUT) + traits_to_copy = list(TRAIT_PRODUCES_POWER,TRAIT_BIOLUM) + if(GENE_ATMOSPHERE) + traits_to_copy = list(TRAIT_HEAT_TOLERANCE,TRAIT_LOWKPA_TOLERANCE,TRAIT_HIGHKPA_TOLERANCE) + if(GENE_HARDINESS) + traits_to_copy = list(TRAIT_TOXINS_TOLERANCE,TRAIT_PEST_TOLERANCE,TRAIT_WEED_TOLERANCE,TRAIT_ENDURANCE) + if(GENE_METABOLISM) + P.values["mob_product"] = has_mob_product + traits_to_copy = list(TRAIT_REQUIRES_NUTRIENTS,TRAIT_REQUIRES_WATER,TRAIT_ALTER_TEMP) + if(GENE_VIGOUR) + traits_to_copy = list(TRAIT_PRODUCTION,TRAIT_MATURATION,TRAIT_YIELD,TRAIT_SPREAD) + if(GENE_DIET) + P.values["[TRAIT_CONSUME_GASSES]"] = consume_gasses + traits_to_copy = list(TRAIT_CARNIVOROUS,TRAIT_PARASITE,TRAIT_NUTRIENT_CONSUMPTION,TRAIT_WATER_CONSUMPTION) + if(GENE_ENVIRONMENT) + traits_to_copy = list(TRAIT_IDEAL_HEAT,TRAIT_IDEAL_LIGHT,TRAIT_LIGHT_TOLERANCE) + if(GENE_PIGMENT) + traits_to_copy = list(TRAIT_PLANT_COLOUR,TRAIT_PRODUCT_COLOUR,TRAIT_BIOLUM_COLOUR) + if(GENE_STRUCTURE) + traits_to_copy = list(TRAIT_PLANT_ICON,TRAIT_PRODUCT_ICON,TRAIT_HARVEST_REPEAT) + if(GENE_FRUIT) + traits_to_copy = list(TRAIT_STINGS,TRAIT_EXPLOSIVE,TRAIT_JUICY) + if(GENE_SPECIAL) + traits_to_copy = list(TRAIT_TELEPORTING) + + for(var/trait in traits_to_copy) + P.values["[trait]"] = get_trait(trait) + return (P ? P : 0) + +//Place the plant products at the feet of the user. +/datum/seed/proc/harvest(var/mob/user,var/yield_mod,var/harvest_sample,var/force_amount) + + if(!user) + return + + if(!force_amount && get_trait(TRAIT_YIELD) == 0 && !harvest_sample) + if(istype(user)) user << "You fail to harvest anything useful." + else + if(istype(user)) user << "You [harvest_sample ? "take a sample" : "harvest"] from the [display_name]." + + //This may be a new line. Update the global if it is. + if(name == "new line" || !(name in plant_controller.seeds)) + uid = plant_controller.seeds.len + 1 + name = "[uid]" + plant_controller.seeds[name] = src + + if(harvest_sample) + var/obj/item/seeds/seeds = new(get_turf(user)) + seeds.seed_type = name + seeds.update_seed() + return + + var/total_yield = 0 + if(!isnull(force_amount)) + total_yield = force_amount + else + if(get_trait(TRAIT_YIELD) > -1) + if(isnull(yield_mod) || yield_mod < 1) + yield_mod = 0 + total_yield = get_trait(TRAIT_YIELD) + else + total_yield = get_trait(TRAIT_YIELD) + rand(yield_mod) + total_yield = max(1,total_yield) + + currently_querying = list() + for(var/i = 0;iThe pod disgorges [product]!") + handle_living_product(product) + +// When the seed in this machine mutates/is modified, the tray seed value +// is set to a new datum copied from the original. This datum won't actually +// be put into the global datum list until the product is harvested, though. +/datum/seed/proc/diverge(var/modified) + + if(get_trait(TRAIT_IMMUTABLE) > 0) return + + //Set up some basic information. + var/datum/seed/new_seed = new + new_seed.name = "new line" + new_seed.uid = 0 + new_seed.roundstart = 0 + new_seed.can_self_harvest = can_self_harvest + new_seed.kitchen_tag = kitchen_tag + new_seed.trash_type = trash_type + new_seed.has_mob_product = has_mob_product + //Copy over everything else. + if(mutants) new_seed.mutants = mutants.Copy() + if(chems) new_seed.chems = chems.Copy() + if(consume_gasses) new_seed.consume_gasses = consume_gasses.Copy() + if(exude_gasses) new_seed.exude_gasses = exude_gasses.Copy() + + new_seed.seed_name = "[(roundstart ? "[(modified ? "modified" : "mutant")] " : "")][seed_name]" + new_seed.display_name = "[(roundstart ? "[(modified ? "modified" : "mutant")] " : "")][display_name]" + new_seed.seed_noun = seed_noun + new_seed.traits = traits.Copy() + new_seed.update_growth_stages() + return new_seed + +/datum/seed/proc/update_growth_stages() + if(get_trait(TRAIT_PLANT_ICON)) + growth_stages = plant_controller.plant_sprites[get_trait(TRAIT_PLANT_ICON)] + else + growth_stages = 0 diff --git a/code/modules/hydroponics/seed_controller.dm b/code/modules/hydroponics/seed_controller.dm new file mode 100644 index 00000000000..6a329b9d974 --- /dev/null +++ b/code/modules/hydroponics/seed_controller.dm @@ -0,0 +1,150 @@ +// Attempts to offload processing for the spreading plants from the MC. +// Processes vines/spreading plants. + +#define PLANTS_PER_TICK 500 // Cap on number of plant segments processed. +#define PLANT_TICK_TIME 75 // Number of ticks between the plant processor cycling. + +// Debug for testing seed genes. +/client/proc/show_plant_genes() + set category = "Debug" + set name = "Show Plant Genes" + set desc = "Prints the round's plant gene masks." + + if(!holder) return + + if(!plant_controller || !plant_controller.gene_tag_masks) + usr << "Gene masks not set." + return + + for(var/mask in plant_controller.gene_tag_masks) + usr << "[mask]: [plant_controller.gene_tag_masks[mask]]" + +var/global/datum/controller/plants/plant_controller // Set in New(). + +/datum/controller/plants + + var/plants_per_tick = PLANTS_PER_TICK + var/plant_tick_time = PLANT_TICK_TIME + var/list/product_descs = list() // Stores generated fruit descs. + var/list/plant_queue = list() // All queued plants. + var/list/seeds = list() // All seed data stored here. + var/list/gene_tag_masks = list() // Gene obfuscation for delicious trial and error goodness. + var/list/plant_icon_cache = list() // Stores images of growth, fruits and seeds. + var/list/plant_sprites = list() // List of all harvested product sprites. + var/list/plant_product_sprites = list() // List of all growth sprites plus number of growth stages. + //var/processing = 0 // Off/on. + +/datum/controller/plants/New() + if(plant_controller && plant_controller != src) + log_debug("Rebuilding plant controller.") + del(plant_controller) + plant_controller = src + setup() + process() + +// Predefined/roundstart varieties use a string key to make it +// easier to grab the new variety when mutating. Post-roundstart +// and mutant varieties use their uid converted to a string instead. +// Looks like shit but it's sort of necessary. +/datum/controller/plants/proc/setup() + + // Build the icon lists. + for(var/icostate in icon_states('icons/obj/hydroponics_growing.dmi')) + var/split = findtext(icostate,"-") + if(!split) + // invalid icon_state + continue + + var/ikey = copytext(icostate,(split+1)) + if(ikey == "dead") + // don't count dead icons + continue + ikey = text2num(ikey) + var/base = copytext(icostate,1,split) + + if(!(plant_sprites[base]) || (plant_sprites[base] 0) return 0 - return pick(mutants) - -//Mutates the plant overall (randomly). -/datum/seed/proc/mutate(var/degree,var/turf/source_turf) - - if(!degree || immutable > 0) return - - source_turf.visible_message("\blue \The [display_name] quivers!") - - //This looks like shit, but it's a lot easier to read/change this way. - var/total_mutations = rand(1,1+degree) - for(var/i = 0;ichanges colour!") - else - source_turf.visible_message("\blue \The [display_name]'s glow dims...") - if(11) - if(prob(degree*2)) - flowers = !flowers - if(flowers) - source_turf.visible_message("\blue \The [display_name] sprouts a bevy of flowers!") - if(prob(degree*2)) - flower_colour = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" - source_turf.visible_message("\blue \The [display_name]'s flowers changes colour!") - else - source_turf.visible_message("\blue \The [display_name]'s flowers wither and fall off.") - return - -//Mutates a specific trait/set of traits. -/datum/seed/proc/apply_gene(var/datum/plantgene/gene) - - if(!gene || !gene.values || immutable > 0) return - - switch(gene.genetype) - - //Splicing products has some detrimental effects on yield and lifespan. - if("products") - - if(gene.values.len < 6) return - - yield = round(yield*0.5) - endurance = round(endurance*0.5) - lifespan = round(lifespan*0.8) - - if(!products) products = list() - products |= gene.values[1] - - if(!chems) chems = list() - for(var/rid in gene.values[2]) - var/existing_chem - for(var/chem in chems) - if(rid == chem) - existing_chem = 1 - break - - if(existing_chem) - chems[rid][1] = max(1,round((chems[rid][1]+gene.values[2][rid][1])/2)) - chems[rid][2] = max(1,round((chems[rid][2]+gene.values[2][rid][2])/2)) - else - chems[rid] = gene.values[2][rid] - - var/list/new_gasses = gene.values[3] - if(istype(new_gasses)) - if(!exude_gasses) exude_gasses = list() - exude_gasses |= new_gasses - for(var/gas in exude_gasses) - exude_gasses[gas] = max(1,round(exude_gasses[gas]*0.8)) - - alter_temp = gene.values[4] - potency = gene.values[5] - harvest_repeat = gene.values[6] - - if("consumption") - - if(gene.values.len < 7) return - - consume_gasses = gene.values[1] - requires_nutrients = gene.values[2] - nutrient_consumption = gene.values[3] - requires_water = gene.values[4] - water_consumption = gene.values[5] - carnivorous = gene.values[6] - parasite = gene.values[7] - - if("environment") - - if(gene.values.len < 6) return - - ideal_heat = gene.values[1] - heat_tolerance = gene.values[2] - ideal_light = gene.values[3] - light_tolerance = gene.values[4] - lowkpa_tolerance = gene.values[5] - highkpa_tolerance = gene.values[6] - - if("resistance") - - if(gene.values.len < 3) return - - toxins_tolerance = gene.values[1] - pest_tolerance = gene.values[2] - weed_tolerance = gene.values[3] - - if("vigour") - - if(gene.values.len < 6) return - - endurance = gene.values[1] - yield = gene.values[2] - lifespan = gene.values[3] - spread = gene.values[4] - maturation = gene.values[5] - production = gene.values[6] - - if("flowers") - - if(gene.values.len < 7) return - - product_icon = gene.values[1] - product_colour = gene.values[2] - biolum = gene.values[3] - biolum_colour = gene.values[4] - flowers = gene.values[5] - flower_icon = gene.values[6] - flower_colour = gene.values[7] - -//Returns a list of the desired trait values. -/datum/seed/proc/get_gene(var/genetype) - - if(!genetype) return 0 - - var/datum/plantgene/P = new() - P.genetype = genetype - - switch(genetype) - if("products") - P.values = list( - (products ? products : 0), - (chems ? chems : 0), - (exude_gasses ? exude_gasses : 0), - (alter_temp ? alter_temp : 0), - (potency ? potency : 0), - (harvest_repeat ? harvest_repeat : 0) - ) - - if("consumption") - P.values = list( - (consume_gasses ? consume_gasses : 0), - (requires_nutrients ? requires_nutrients : 0), - (nutrient_consumption ? nutrient_consumption : 0), - (requires_water ? requires_water : 0), - (water_consumption ? water_consumption : 0), - (carnivorous ? carnivorous : 0), - (parasite ? parasite : 0) - ) - - if("environment") - P.values = list( - (ideal_heat ? ideal_heat : 0), - (heat_tolerance ? heat_tolerance : 0), - (ideal_light ? ideal_light : 0), - (light_tolerance ? light_tolerance : 0), - (lowkpa_tolerance ? lowkpa_tolerance : 0), - (highkpa_tolerance ? highkpa_tolerance : 0) - ) - - if("resistance") - P.values = list( - (toxins_tolerance ? toxins_tolerance : 0), - (pest_tolerance ? pest_tolerance : 0), - (weed_tolerance ? weed_tolerance : 0) - ) - - if("vigour") - P.values = list( - (endurance ? endurance : 0), - (yield ? yield : 0), - (lifespan ? lifespan : 0), - (spread ? spread : 0), - (maturation ? maturation : 0), - (production ? production : 0) - ) - - if("flowers") - P.values = list( - (product_icon ? product_icon : 0), - (product_colour ? product_colour : 0), - (biolum ? biolum : 0), - (biolum_colour ? biolum_colour : 0), - (flowers ? flowers : 0), - (flower_icon ? flower_icon : 0), - (flower_colour ? flower_colour : 0) - ) - - return (P ? P : 0) - -//Place the plant products at the feet of the user. -/datum/seed/proc/harvest(var/mob/user,var/yield_mod,var/harvest_sample) - if(!user) - return - - var/got_product - if(!isnull(products) && products.len && yield > 0) - got_product = 1 - - if(!got_product) - user << "\red You fail to harvest anything useful." - else - user << "You [harvest_sample ? "take a sample" : "harvest"] from the [display_name]." - - //This may be a new line. Update the global if it is. - if(name == "new line" || !(name in seed_types)) - uid = seed_types.len + 1 - name = "[uid]" - seed_types[name] = src - - if(harvest_sample) - var/obj/item/seeds/seeds = new(get_turf(user)) - seeds.seed_type = name - seeds.update_seed() - return - - var/total_yield - if(isnull(yield_mod) || yield_mod < 1) - yield_mod = 0 - total_yield = yield - else - total_yield = max(1,rand(yield_mod,yield_mod+yield)) - - currently_querying = list() - for(var/i = 0;i 0) return - - //Set up some basic information. - var/datum/seed/new_seed = new - new_seed.name = "new line" - new_seed.uid = 0 - new_seed.roundstart = 0 - - //Copy over everything else. - if(products) new_seed.products = products.Copy() - if(mutants) new_seed.mutants = mutants.Copy() - if(chems) new_seed.chems = chems.Copy() - if(consume_gasses) new_seed.consume_gasses = consume_gasses.Copy() - if(exude_gasses) new_seed.exude_gasses = exude_gasses.Copy() - - new_seed.seed_name = "[(roundstart ? "[(modified ? "modified" : "mutant")] " : " ")][seed_name]" - new_seed.display_name = "[(roundstart ? "[(modified ? "modified" : "mutant")] " : " ")][display_name]" - new_seed.seed_noun = seed_noun - - new_seed.requires_nutrients = requires_nutrients - new_seed.nutrient_consumption = nutrient_consumption - new_seed.requires_water = requires_water - new_seed.water_consumption = water_consumption - new_seed.ideal_heat = ideal_heat - new_seed.heat_tolerance = heat_tolerance - new_seed.ideal_light = ideal_light - new_seed.light_tolerance = light_tolerance - new_seed.toxins_tolerance = toxins_tolerance - new_seed.lowkpa_tolerance = lowkpa_tolerance - new_seed.highkpa_tolerance = highkpa_tolerance - new_seed.pest_tolerance = pest_tolerance - new_seed.weed_tolerance = weed_tolerance - new_seed.endurance = endurance - new_seed.yield = yield - new_seed.lifespan = lifespan - new_seed.maturation = maturation - new_seed.production = production - new_seed.growth_stages = growth_stages - new_seed.harvest_repeat = harvest_repeat - new_seed.potency = potency - new_seed.spread = spread - new_seed.carnivorous = carnivorous - new_seed.parasite = parasite - new_seed.plant_icon = plant_icon - new_seed.product_icon = product_icon - new_seed.product_colour = product_colour - new_seed.packet_icon = packet_icon - new_seed.biolum = biolum - new_seed.biolum_colour = biolum_colour - new_seed.flowers = flowers - new_seed.flower_icon = flower_icon - new_seed.alter_temp = alter_temp - - return new_seed - -// Actual roundstart seed types after this point. // Chili plants/variants. /datum/seed/chili - name = "chili" seed_name = "chili" display_name = "chili plants" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/chili) chems = list("capsaicin" = list(3,5), "nutriment" = list(1,25)) - mutants = list("icechili", "ghostchili") - packet_icon = "seed-chili" - plant_icon = "chili" - harvest_repeat = 1 + mutants = list("icechili") + kitchen_tag = "chili" - lifespan = 20 - maturation = 5 - production = 5 - yield = 4 - potency = 20 +/datum/seed/chili/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,5) + set_trait(TRAIT_PRODUCTION,5) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,20) + set_trait(TRAIT_PRODUCT_ICON,"chili") + set_trait(TRAIT_PRODUCT_COLOUR,"#ED3300") + set_trait(TRAIT_PLANT_ICON,"bush2") /datum/seed/chili/ice name = "icechili" seed_name = "ice pepper" display_name = "ice-pepper plants" mutants = null - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/icepepper) chems = list("frostoil" = list(3,5), "nutriment" = list(1,50)) - packet_icon = "seed-icepepper" - plant_icon = "chiliice" + kitchen_tag = "icechili" - maturation = 4 - production = 4 - -/datum/seed/chili/ghost - name = "ghostchili" - seed_name = "ghost chili pepper" - display_name = "ghost chili pepper plants" - mutants = null - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chilli) - chems = list("capsaicin" = list(8,2), "condensedcapsaicin" = list(4,4), "nutriment" = list(1,25)) - packet_icon = "seed-chilighost" - plant_icon = "chilighost" - growth_stages = 6 - - maturation = 10 - production = 10 - yield = 3 +/datum/seed/chili/ice/New() + ..() + set_trait(TRAIT_MATURATION,4) + set_trait(TRAIT_PRODUCTION,4) + set_trait(TRAIT_PRODUCT_COLOUR,"#00EDC6") // Berry plants/variants. /datum/seed/berry name = "berries" seed_name = "berry" display_name = "berry bush" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/berries) mutants = list("glowberries","poisonberries") - packet_icon = "seed-berry" - plant_icon = "berry" - harvest_repeat = 1 chems = list("nutriment" = list(1,10)) + kitchen_tag = "berries" - lifespan = 20 - maturation = 5 - production = 5 - yield = 2 - potency = 10 +/datum/seed/berry/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_JUICY,1) + set_trait(TRAIT_MATURATION,5) + set_trait(TRAIT_PRODUCTION,5) + set_trait(TRAIT_YIELD,2) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"berry") + set_trait(TRAIT_PRODUCT_COLOUR,"#FA1616") + set_trait(TRAIT_PLANT_ICON,"bush") /datum/seed/berry/glow name = "glowberries" seed_name = "glowberry" display_name = "glowberry bush" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/glowberries) mutants = null - packet_icon = "seed-glowberry" - plant_icon = "glowberry" chems = list("nutriment" = list(1,10), "uranium" = list(3,5)) - lifespan = 30 - maturation = 5 - production = 5 - yield = 2 - potency = 10 +/datum/seed/berry/glow/New() + ..() + set_trait(TRAIT_SPREAD,1) + set_trait(TRAIT_BIOLUM,1) + set_trait(TRAIT_BIOLUM_COLOUR,"#006622") + set_trait(TRAIT_MATURATION,5) + set_trait(TRAIT_PRODUCTION,5) + set_trait(TRAIT_YIELD,2) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_COLOUR,"c9fa16") /datum/seed/berry/poison name = "poisonberries" seed_name = "poison berry" display_name = "poison berry bush" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/poisonberries) mutants = list("deathberries") - packet_icon = "seed-poisonberry" - plant_icon = "poisonberry" chems = list("nutriment" = list(1), "toxin" = list(3,5)) + kitchen_tag = "poisonberries" + +/datum/seed/berry/poison/New() + ..() + set_trait(TRAIT_PRODUCT_COLOUR,"#6DC961") /datum/seed/berry/poison/death name = "deathberries" seed_name = "death berry" display_name = "death berry bush" mutants = null - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/deathberries) - packet_icon = "seed-deathberry" - plant_icon = "deathberry" chems = list("nutriment" = list(1), "toxin" = list(3,3), "lexorin" = list(1,5)) - yield = 3 - potency = 50 +/datum/seed/berry/poison/death/New() + ..() + set_trait(TRAIT_YIELD,3) + set_trait(TRAIT_POTENCY,50) + set_trait(TRAIT_PRODUCT_COLOUR,"#7A5454") // Nettles/variants. /datum/seed/nettle name = "nettle" seed_name = "nettle" display_name = "nettles" - products = list(/obj/item/weapon/grown/nettle) mutants = list("deathnettle") - packet_icon = "seed-nettle" - plant_icon = "nettle" - harvest_repeat = 1 chems = list("nutriment" = list(1,50), "sacid" = list(0,1)) - lifespan = 30 - maturation = 6 - production = 6 - yield = 4 - potency = 10 - growth_stages = 5 + kitchen_tag = "nettle" + +/datum/seed/nettle/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,6) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_STINGS,1) + set_trait(TRAIT_PLANT_ICON,"bush5") + set_trait(TRAIT_PRODUCT_ICON,"nettles") + set_trait(TRAIT_PRODUCT_COLOUR,"#728A54") /datum/seed/nettle/death name = "deathnettle" seed_name = "death nettle" display_name = "death nettles" - products = list(/obj/item/weapon/grown/deathnettle) mutants = null - packet_icon = "seed-deathnettle" - plant_icon = "deathnettle" chems = list("nutriment" = list(1,50), "facid" = list(0,1)) + kitchen_tag = "deathnettle" - maturation = 8 - yield = 2 +/datum/seed/nettle/death/New() + ..() + set_trait(TRAIT_MATURATION,8) + set_trait(TRAIT_YIELD,2) + set_trait(TRAIT_PRODUCT_COLOUR,"#8C5030") + set_trait(TRAIT_PLANT_COLOUR,"#634941") //Tomatoes/variants. /datum/seed/tomato name = "tomato" seed_name = "tomato" display_name = "tomato plant" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/tomato) mutants = list("bluetomato","bloodtomato") - packet_icon = "seed-tomato" - plant_icon = "tomato" - harvest_repeat = 1 chems = list("nutriment" = list(1,10)) + kitchen_tag = "tomato" - lifespan = 25 - maturation = 8 - production = 6 - yield = 2 - potency = 10 +/datum/seed/tomato/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_JUICY,1) + set_trait(TRAIT_MATURATION,8) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,2) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"tomato") + set_trait(TRAIT_PRODUCT_COLOUR,"#D10000") + set_trait(TRAIT_PLANT_ICON,"bush3") /datum/seed/tomato/blood name = "bloodtomato" seed_name = "blood tomato" display_name = "blood tomato plant" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/bloodtomato) - mutants = list("killertomato") - packet_icon = "seed-bloodtomato" - plant_icon = "bloodtomato" + mutants = list("killer") chems = list("nutriment" = list(1,10), "blood" = list(1,5)) + splat_type = /obj/effect/decal/cleanable/blood/splatter + kitchen_tag = "bloodtomato" - yield = 3 +/datum/seed/tomato/blood/New() + ..() + set_trait(TRAIT_YIELD,3) + set_trait(TRAIT_PRODUCT_COLOUR,"#FF0000") /datum/seed/tomato/killer name = "killertomato" seed_name = "killer tomato" display_name = "killer tomato plant" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/killertomato) mutants = null - packet_icon = "seed-killertomato" - plant_icon = "killertomato" + can_self_harvest = 1 + has_mob_product = /mob/living/simple_animal/tomato - yield = 2 - growth_stages = 2 +/datum/seed/tomato/killer/New() + ..() + set_trait(TRAIT_YIELD,2) + set_trait(TRAIT_PRODUCT_COLOUR,"#A86747") /datum/seed/tomato/blue name = "bluetomato" seed_name = "blue tomato" display_name = "blue tomato plant" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/bluetomato) mutants = list("bluespacetomato") - packet_icon = "seed-bluetomato" - plant_icon = "bluetomato" chems = list("nutriment" = list(1,20), "lube" = list(1,5)) +/datum/seed/tomato/blue/New() + ..() + set_trait(TRAIT_PRODUCT_COLOUR,"#4D86E8") + set_trait(TRAIT_PLANT_COLOUR,"#070AAD") + /datum/seed/tomato/blue/teleport name = "bluespacetomato" seed_name = "bluespace tomato" display_name = "bluespace tomato plant" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/bluespacetomato) mutants = null - packet_icon = "seed-bluespacetomato" - plant_icon = "bluespacetomato" - chems = list("nutriment" = list(1,20), "singulo" = list(1,5)) + chems = list("nutriment" = list(1,20), "singulo" = list(10,5)) + +/datum/seed/tomato/blue/teleport/New() + ..() + set_trait(TRAIT_TELEPORTING,1) + set_trait(TRAIT_PRODUCT_COLOUR,"#00E5FF") + set_trait(TRAIT_BIOLUM,1) + set_trait(TRAIT_BIOLUM_COLOUR,"#4DA4A8") //Eggplants/varieties. /datum/seed/eggplant name = "eggplant" seed_name = "eggplant" display_name = "eggplants" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/eggplant) mutants = list("realeggplant") - packet_icon = "seed-eggplant" - plant_icon = "eggplant" - harvest_repeat = 1 chems = list("nutriment" = list(1,10)) + kitchen_tag = "eggplant" - lifespan = 25 - maturation = 6 - production = 6 - yield = 2 - potency = 20 - -/datum/seed/eggplant/eggs - name = "realeggplant" - seed_name = "egg-plant" - display_name = "egg-plants" - products = list(/obj/item/weapon/reagent_containers/food/snacks/egg) - mutants = null - packet_icon = "seed-eggy" - plant_icon = "eggy" - - lifespan = 75 - production = 12 +/datum/seed/eggplant/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,6) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,2) + set_trait(TRAIT_POTENCY,20) + set_trait(TRAIT_PRODUCT_ICON,"eggplant") + set_trait(TRAIT_PRODUCT_COLOUR,"#892694") + set_trait(TRAIT_PLANT_ICON,"bush4") //Apples/varieties. - /datum/seed/apple name = "apple" seed_name = "apple" display_name = "apple tree" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/apple) mutants = list("poisonapple","goldapple") - packet_icon = "seed-apple" - plant_icon = "apple" - harvest_repeat = 1 chems = list("nutriment" = list(1,10)) + kitchen_tag = "apple" - lifespan = 55 - maturation = 6 - production = 6 - yield = 5 - potency = 10 +/datum/seed/apple/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,6) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,5) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"apple") + set_trait(TRAIT_PRODUCT_COLOUR,"#FF540A") + set_trait(TRAIT_PLANT_ICON,"tree2") /datum/seed/apple/poison name = "poisonapple" mutants = null - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/apple/poisoned) chems = list("cyanide" = list(1,5)) /datum/seed/apple/gold name = "goldapple" seed_name = "golden apple" display_name = "gold apple tree" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/goldapple) mutants = null - packet_icon = "seed-goldapple" - plant_icon = "goldapple" chems = list("nutriment" = list(1,10), "gold" = list(1,5)) + kitchen_tag = "goldapple" - maturation = 10 - production = 10 - yield = 3 +/datum/seed/apple/gold/New() + ..() + set_trait(TRAIT_MATURATION,10) + set_trait(TRAIT_PRODUCTION,10) + set_trait(TRAIT_YIELD,3) + set_trait(TRAIT_PRODUCT_COLOUR,"#FFDD00") + set_trait(TRAIT_PLANT_COLOUR,"#D6B44D") //Ambrosia/varieties. /datum/seed/ambrosia name = "ambrosia" seed_name = "ambrosia vulgaris" display_name = "ambrosia vulgaris" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris) mutants = list("ambrosiadeus") - packet_icon = "seed-ambrosiavulgaris" - plant_icon = "ambrosiavulgaris" - harvest_repeat = 1 chems = list("nutriment" = list(1), "thc" = list(1,8), "silver_sulfadiazine" = list(1,8,1), "styptic_powder" = list(1,10,1), "toxin" = list(1,10)) + kitchen_tag = "ambrosia" - lifespan = 60 - maturation = 6 - production = 6 - yield = 6 - potency = 5 +/datum/seed/ambrosia/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,6) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,6) + set_trait(TRAIT_POTENCY,5) + set_trait(TRAIT_PRODUCT_ICON,"ambrosia") + set_trait(TRAIT_PRODUCT_COLOUR,"#9FAD55") + set_trait(TRAIT_PLANT_ICON,"ambrosia") /datum/seed/ambrosia/deus name = "ambrosiadeus" seed_name = "ambrosia deus" display_name = "ambrosia deus" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus) mutants = null - packet_icon = "seed-ambrosiadeus" - plant_icon = "ambrosiadeus" chems = list("nutriment" = list(1), "styptic_powder" = list(1,8), "synaptizine" = list(1,8,1), "methamphetamine" = list(1,10,1), "thc" = list(1,10)) + kitchen_tag = "ambrosiadeus" + +//Tobacco/varieties +/datum/seed/tobacco + name = "tobacco" + seed_name = "tobacco" + display_name = "tobacco" + mutants = list("stobacco") + chems = list("nutriment" = list(1,40), "nicotine" = list(1,40)) + kitchen_tag = "tobacco" + +/datum/seed/tobacco/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,5) + set_trait(TRAIT_PRODUCTION,5) + set_trait(TRAIT_YIELD,6) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"leaf") + set_trait(TRAIT_PRODUCT_COLOUR,"#9FAD55") + set_trait(TRAIT_PLANT_ICON,"bush7") + +/datum/seed/tobacco/space + name = "stobacco" + seed_name = "space tobacco" + display_name = "space tobacco" + mutants = null + chems = list("nutriment" = list(1,40), "nicotine" = list(1,20), "epinephrine" = list(1,30)) + kitchen_tag = "stobacco" + +/datum/seed/tobacco/space/New() + ..() + set_trait(TRAIT_YIELD, 4) + set_trait(TRAIT_POTENCY, 5) + set_trait(TRAIT_PRODUCT_COLOUR,"#A3F0AD") + set_trait(TRAIT_PLANT_COLOUR,"#2A9C61") + +//Tea/varieties +/datum/seed/teaaspera + name = "teaaspera" + seed_name = "tea aspera" + display_name = "tea aspera" + mutants = list("teaastra") + chems = list("teapowder" = list(1,20), "charcoal" = list(1,30)) + +/datum/seed/teaaspera/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,5) + set_trait(TRAIT_PRODUCTION,5) + set_trait(TRAIT_YIELD,6) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"leaf2") + set_trait(TRAIT_PRODUCT_COLOUR,"#9FAD55") + set_trait(TRAIT_PLANT_ICON,"tree6") + +/datum/seed/teaastra + name = "teaastra" + seed_name = "tea astra" + display_name = "tea astra" + chems = list("teapowder" = list(1,20), "haloperidol" = list(1,30)) + +/datum/seed/teaastra/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,5) + set_trait(TRAIT_PRODUCTION,5) + set_trait(TRAIT_YIELD,6) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"leaf2") + set_trait(TRAIT_PRODUCT_COLOUR,"#A3F0AD") + set_trait(TRAIT_PLANT_COLOUR,"#2A9C61") + set_trait(TRAIT_PLANT_ICON,"tree6") + +//Coffee/varieties +/datum/seed/coffeea + name = "coffeea" + seed_name = "coffee arabica" + display_name = "coffee arabica" + mutants = list("coffeer") + chems = list("coffeepowder" = list(1,20), "synaptizine" = list(1,40)) + kitchen_tag = "coffeea" + +/datum/seed/coffeea/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,5) + set_trait(TRAIT_PRODUCTION,5) + set_trait(TRAIT_YIELD,6) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"coffee") + set_trait(TRAIT_PRODUCT_COLOUR,"#ED0000") + set_trait(TRAIT_PLANT_ICON,"bush8") + +/datum/seed/coffeer + name = "coffeer" + seed_name = "coffee robusta" + display_name = "coffee robusta" + chems = list("coffeepowder" = list(1,20), "synaptizine" = list(1,20), "methamphetamine" = list(1,40)) + kitchen_tag = "coffeer" + +/datum/seed/coffeer/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,5) + set_trait(TRAIT_PRODUCTION,5) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"coffee") + set_trait(TRAIT_PRODUCT_COLOUR,"#A22043") + set_trait(TRAIT_PLANT_ICON,"bush8") //Mushrooms/varieties. /datum/seed/mushroom @@ -758,824 +411,841 @@ proc/populate_seed_list() seed_name = "chanterelle" seed_noun = "spores" display_name = "chanterelle mushrooms" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle) mutants = list("reishi","amanita","plumphelmet") - packet_icon = "mycelium-chanter" - plant_icon = "chanter" chems = list("nutriment" = list(1,25), "fungus" = list(1,10)) + splat_type = /obj/effect/plant + kitchen_tag = "mushroom" - lifespan = 35 - maturation = 7 - production = 1 - yield = 5 - potency = 1 - growth_stages = 3 +/datum/seed/mushroom/New() + ..() + set_trait(TRAIT_MATURATION,7) + set_trait(TRAIT_PRODUCTION,1) + set_trait(TRAIT_YIELD,5) + set_trait(TRAIT_POTENCY,1) + set_trait(TRAIT_PRODUCT_ICON,"mushroom4") + set_trait(TRAIT_PRODUCT_COLOUR,"#DBDA72") + set_trait(TRAIT_PLANT_COLOUR,"#D9C94E") + set_trait(TRAIT_PLANT_ICON,"mushroom") /datum/seed/mushroom/mold name = "mold" seed_name = "brown mold" display_name = "brown mold" - products = null mutants = null - //mutants = list("wallrot") //TBD. - plant_icon = "mold" - lifespan = 50 - maturation = 10 - yield = -1 +/datum/seed/mushroom/mold/New() + ..() + set_trait(TRAIT_SPREAD,1) + set_trait(TRAIT_MATURATION,10) + set_trait(TRAIT_YIELD,-1) + set_trait(TRAIT_PRODUCT_ICON,"mushroom5") + set_trait(TRAIT_PRODUCT_COLOUR,"#7A5F20") + set_trait(TRAIT_PLANT_COLOUR,"#7A5F20") + set_trait(TRAIT_PLANT_ICON,"mushroom9") /datum/seed/mushroom/plump name = "plumphelmet" seed_name = "plump helmet" display_name = "plump helmet mushrooms" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet) mutants = list("walkingmushroom","towercap") - packet_icon = "mycelium-plump" - plant_icon = "plump" chems = list("nutriment" = list(2,10)) + kitchen_tag = "plumphelmet" - lifespan = 25 - maturation = 8 - yield = 4 - potency = 0 +/datum/seed/mushroom/plump/New() + ..() + set_trait(TRAIT_MATURATION,8) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,0) + set_trait(TRAIT_PRODUCT_ICON,"mushroom10") + set_trait(TRAIT_PRODUCT_COLOUR,"#B57BB0") + set_trait(TRAIT_PLANT_COLOUR,"#9E4F9D") + set_trait(TRAIT_PLANT_ICON,"mushroom2") + +/datum/seed/mushroom/plump/walking + name = "walkingmushroom" + seed_name = "walking mushroom" + display_name = "walking mushrooms" + mutants = null + can_self_harvest = 1 + has_mob_product = /mob/living/simple_animal/hostile/mushroom + +/datum/seed/mushroom/plump/walking/New() + ..() + set_trait(TRAIT_MATURATION,5) + set_trait(TRAIT_YIELD,1) + set_trait(TRAIT_PRODUCT_COLOUR,"#FAC0F2") + set_trait(TRAIT_PLANT_COLOUR,"#C4B1C2") /datum/seed/mushroom/hallucinogenic name = "reishi" seed_name = "reishi" display_name = "reishi" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi) mutants = list("libertycap","glowshroom") - packet_icon = "mycelium-reishi" - plant_icon = "reishi" chems = list("nutriment" = list(1,50), "psilocybin" = list(3,5)) - maturation = 10 - production = 5 - yield = 4 - potency = 15 - growth_stages = 4 +/datum/seed/mushroom/hallucinogenic/New() + ..() + set_trait(TRAIT_MATURATION,10) + set_trait(TRAIT_PRODUCTION,5) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,15) + set_trait(TRAIT_PRODUCT_ICON,"mushroom11") + set_trait(TRAIT_PRODUCT_COLOUR,"#FFB70F") + set_trait(TRAIT_PLANT_COLOUR,"#F58A18") + set_trait(TRAIT_PLANT_ICON,"mushroom6") /datum/seed/mushroom/hallucinogenic/strong name = "libertycap" seed_name = "liberty cap" display_name = "liberty cap mushrooms" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap) mutants = null - packet_icon = "mycelium-liberty" - plant_icon = "liberty" chems = list("nutriment" = list(1), "morphine" = list(3,3), "space_drugs" = list(1,25)) + kitchen_tag = "libertycap" - lifespan = 25 - production = 1 - potency = 15 - growth_stages = 3 +/datum/seed/mushroom/hallucinogenic/strong/New() + ..() + set_trait(TRAIT_PRODUCTION,1) + set_trait(TRAIT_POTENCY,15) + set_trait(TRAIT_PRODUCT_ICON,"mushroom8") + set_trait(TRAIT_PRODUCT_COLOUR,"#F2E550") + set_trait(TRAIT_PLANT_COLOUR,"#D1CA82") + set_trait(TRAIT_PLANT_ICON,"mushroom3") /datum/seed/mushroom/poison name = "amanita" seed_name = "fly amanita" display_name = "fly amanita mushrooms" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita) mutants = list("destroyingangel","plastic") - packet_icon = "mycelium-amanita" - plant_icon = "amanita" chems = list("nutriment" = list(1), "amanitin" = list(3,3), "psilocybin" = list(1,25)) + kitchen_tag = "amanita" - lifespan = 50 - maturation = 10 - production = 5 - yield = 4 - potency = 10 +/datum/seed/mushroom/poison/New() + ..() + set_trait(TRAIT_MATURATION,10) + set_trait(TRAIT_PRODUCTION,5) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"mushroom") + set_trait(TRAIT_PRODUCT_COLOUR,"#FF4545") + set_trait(TRAIT_PLANT_COLOUR,"#E0DDBA") + set_trait(TRAIT_PLANT_ICON,"mushroom4") /datum/seed/mushroom/poison/death name = "destroyingangel" seed_name = "destroying angel" display_name = "destroying angel mushrooms" mutants = null - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel) - packet_icon = "mycelium-angel" - plant_icon = "angel" chems = list("nutriment" = list(1,50), "amanitin" = list(13,3), "psilocybin" = list(1,25)) - maturation = 12 - yield = 2 - potency = 35 +/datum/seed/mushroom/poison/death/New() + ..() + set_trait(TRAIT_MATURATION,12) + set_trait(TRAIT_YIELD,2) + set_trait(TRAIT_POTENCY,35) + set_trait(TRAIT_PRODUCT_ICON,"mushroom3") + set_trait(TRAIT_PRODUCT_COLOUR,"#EDE8EA") + set_trait(TRAIT_PLANT_COLOUR,"#E6D8DD") + set_trait(TRAIT_PLANT_ICON,"mushroom5") /datum/seed/mushroom/towercap name = "towercap" seed_name = "tower cap" display_name = "tower caps" + chems = list("woodpulp" = list(10,1)) mutants = null - products = list(/obj/item/weapon/grown/log) - packet_icon = "mycelium-tower" - plant_icon = "towercap" - lifespan = 80 - maturation = 15 +/datum/seed/mushroom/towercap/New() + ..() + set_trait(TRAIT_MATURATION,15) + set_trait(TRAIT_PRODUCT_ICON,"mushroom7") + set_trait(TRAIT_PRODUCT_COLOUR,"#79A36D") + set_trait(TRAIT_PLANT_COLOUR,"#857F41") + set_trait(TRAIT_PLANT_ICON,"mushroom8") /datum/seed/mushroom/glowshroom name = "glowshroom" seed_name = "glowshroom" display_name = "glowshrooms" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom) mutants = null - packet_icon = "mycelium-glowshroom" - plant_icon = "glowshroom" chems = list("radium" = list(1,20)) - lifespan = 120 - maturation = 15 - yield = 3 - potency = 30 - growth_stages = 4 - biolum = 1 - biolum_colour = "#006622" - -/datum/seed/mushroom/walking - name = "walkingmushroom" - seed_name = "walking mushroom" - display_name = "walking mushrooms" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom) - mutants = null - packet_icon = "mycelium-walkingmushroom" - plant_icon = "walkingmushroom" - chems = list("nutriment" = list(2,10)) - - lifespan = 30 - maturation = 5 - yield = 1 - potency = 0 - growth_stages = 3 +/datum/seed/mushroom/glowshroom/New() + ..() + set_trait(TRAIT_SPREAD,1) + set_trait(TRAIT_MATURATION,15) + set_trait(TRAIT_YIELD,3) + set_trait(TRAIT_POTENCY,30) + set_trait(TRAIT_BIOLUM,1) + set_trait(TRAIT_BIOLUM_COLOUR,"#006622") + set_trait(TRAIT_PRODUCT_ICON,"mushroom2") + set_trait(TRAIT_PRODUCT_COLOUR,"#DDFAB6") + set_trait(TRAIT_PLANT_COLOUR,"#EFFF8A") + set_trait(TRAIT_PLANT_ICON,"mushroom7") /datum/seed/mushroom/plastic name = "plastic" seed_name = "plastellium" display_name = "plastellium" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/plastellium) mutants = null - packet_icon = "mycelium-plast" - plant_icon = "plastellium" chems = list("plasticide" = list(1,10)) - lifespan = 15 - maturation = 5 - production = 6 - yield = 6 - potency = 20 +/datum/seed/mushroom/plastic/New() + ..() + set_trait(TRAIT_MATURATION,5) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,6) + set_trait(TRAIT_POTENCY,20) + set_trait(TRAIT_PRODUCT_ICON,"mushroom6") + set_trait(TRAIT_PRODUCT_COLOUR,"#E6E6E6") + set_trait(TRAIT_PLANT_COLOUR,"#E6E6E6") + set_trait(TRAIT_PLANT_ICON,"mushroom10") //Flowers/varieties /datum/seed/flower name = "harebells" seed_name = "harebell" display_name = "harebells" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/harebell) - packet_icon = "seed-harebell" - plant_icon = "harebell" chems = list("nutriment" = list(1,20)) - lifespan = 100 - maturation = 7 - production = 1 - yield = 2 - growth_stages = 4 +/datum/seed/flower/New() + ..() + set_trait(TRAIT_MATURATION,7) + set_trait(TRAIT_PRODUCTION,1) + set_trait(TRAIT_YIELD,2) + set_trait(TRAIT_PRODUCT_ICON,"flower5") + set_trait(TRAIT_PRODUCT_COLOUR,"#C492D6") + set_trait(TRAIT_PLANT_COLOUR,"#6B8C5E") + set_trait(TRAIT_PLANT_ICON,"flower") /datum/seed/flower/poppy name = "poppies" seed_name = "poppy" display_name = "poppies" - packet_icon = "seed-poppy" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/poppy) - plant_icon = "poppy" chems = list("nutriment" = list(1,20), "styptic_powder" = list(1,10)) + kitchen_tag = "poppy" - lifespan = 25 - potency = 20 - maturation = 8 - production = 6 - yield = 6 - growth_stages = 3 +/datum/seed/flower/poppy/New() + ..() + set_trait(TRAIT_POTENCY,20) + set_trait(TRAIT_MATURATION,8) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,6) + set_trait(TRAIT_PRODUCT_ICON,"flower3") + set_trait(TRAIT_PRODUCT_COLOUR,"#B33715") + set_trait(TRAIT_PLANT_ICON,"flower3") /datum/seed/flower/sunflower name = "sunflowers" seed_name = "sunflower" display_name = "sunflowers" - packet_icon = "seed-sunflower" - mutants = list("moonflower", "novaflower") - products = list(/obj/item/weapon/grown/sunflower) - plant_icon = "sunflower" - lifespan = 25 - maturation = 6 - growth_stages = 3 - -/datum/seed/flower/moonflower - name = "moonflowers" - seed_name = "moonflower" - display_name = "moonflowers" - packet_icon = "seed-moonflower" - mutants = null - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/moonflower) - plant_icon = "moonflower" - chems = list("nutriment" = list(1,50), "moonshine" = list(1,10)) - - lifespan = 25 - maturation = 6 - growth_stages = 3 - -/datum/seed/flower/novaflower - name = "novaflowers" - seed_name = "novaflower" - display_name = "novaflowers" - packet_icon = "seed-novaflower" - mutants = null - products = list(/obj/item/weapon/grown/novaflower) - plant_icon = "novaflower" - - lifespan = 25 - maturation = 6 - growth_stages = 3 +/datum/seed/flower/sunflower/New() + ..() + set_trait(TRAIT_MATURATION,6) + set_trait(TRAIT_PRODUCT_ICON,"flower2") + set_trait(TRAIT_PRODUCT_COLOUR,"#FFF700") + set_trait(TRAIT_PLANT_ICON,"flower2") //Grapes/varieties /datum/seed/grapes name = "grapes" seed_name = "grape" display_name = "grapevines" - packet_icon = "seed-grapes" mutants = list("greengrapes") - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/grapes) - plant_icon = "grape" - harvest_repeat = 1 chems = list("nutriment" = list(1,10), "sugar" = list(1,5)) - lifespan = 50 - maturation = 3 - production = 5 - yield = 4 - potency = 10 +/datum/seed/grapes/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,3) + set_trait(TRAIT_PRODUCTION,5) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"grapes") + set_trait(TRAIT_PRODUCT_COLOUR,"#BB6AC4") + set_trait(TRAIT_PLANT_COLOUR,"#378F2E") + set_trait(TRAIT_PLANT_ICON,"vine") /datum/seed/grapes/green name = "greengrapes" seed_name = "green grape" display_name = "green grapevines" - packet_icon = "seed-greengrapes" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/greengrapes) mutants = null - plant_icon = "greengrape" - chems = list("nutriment" = list(1,10)) + chems = list("nutriment" = list(1,10), "silver_sulfadiazine" = list(3,5)) -//Soybeans/varieties -/datum/seed/soybean - name = "soybean" - seed_name = "soybean" - display_name = "soybeans" - packet_icon = "seed-soybean" - mutants = list("koibean") - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans) - plant_icon = "soybean" - harvest_repeat = 1 - chems = list("nutriment" = list(1,20), "soybeanoil" = list(1,20)) - - lifespan = 25 - maturation = 4 - production = 4 - yield = 3 - potency = 5 - -/datum/seed/soybean/koi - name = "koibean" - seed_name = "koibean" - display_name = "koi beans" - packet_icon = "seed-koibean" - mutants = null - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/koibeans) - plant_icon = "soybean" - harvest_repeat = 1 - chems = list("nutriment" = list(1,30), "carpotoxin" = list(1,20)) - - lifespan = 25 - maturation = 4 - production = 4 - yield = 3 - potency = 5 - -//Tobacco/varieties -/datum/seed/tobacco - name = "tobacco" - seed_name = "tobacco" - display_name = "tobacco" - packet_icon = "seed-tobacco" - mutants = list("stobacco") - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco) - plant_icon = "tobacco" - harvest_repeat = 1 - chems = list("nutriment" = list(1,40), "nicotine" = list(1,40)) - - lifespan = 25 - maturation = 5 - production = 5 - yield = 6 - potency = 10 - growth_stages = 3 - -/datum/seed/tobacco/space - name = "stobacco" - seed_name = "space tobacco" - display_name = "space tobacco" - packet_icon = "seed-stobacco" - mutants = null - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco/space) - plant_icon = "stobacco" - harvest_repeat = 1 - chems = list("nutriment" = list(1,40), "nicotine" = list(1,20), "epinephrine" = list(1,30)) - - lifespan = 25 - maturation = 5 - production = 5 - yield = 4 - potency = 5 - growth_stages = 3 - -//Tea/varieties -/datum/seed/teaaspera - name = "teaaspera" - seed_name = "tea aspera" - display_name = "tea aspera" - packet_icon = "seed-teaaspera" - mutants = list("teaastra") - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/teaaspera) - plant_icon = "teaaspera" - harvest_repeat = 1 - chems = list("teapowder" = list(1,20), "charcoal" = list(1,30)) - - lifespan = 30 - maturation = 5 - production = 5 - yield = 6 - potency = 10 - growth_stages = 5 - -/datum/seed/teaastra - name = "teaastra" - seed_name = "tea astra" - display_name = "tea astra" - packet_icon = "seed-teaastra" - mutants = null - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/teaastra) - plant_icon = "teaastra" - harvest_repeat = 1 - chems = list("teapowder" = list(1,20), "haloperidol" = list(1,30)) - - lifespan = 30 - maturation = 5 - production = 5 - yield = 6 - potency = 10 - growth_stages = 5 - -//Coffee/varieties -/datum/seed/coffeea - name = "coffeea" - seed_name = "coffee arabica" - display_name = "coffee arabica" - packet_icon = "seed-coffeea" - mutants = list("coffeer") - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/coffeea) - plant_icon = "coffeea" - harvest_repeat = 1 - chems = list("coffeepowder" = list(1,20), "synaptizine" = list(1,40)) - - lifespan = 30 - maturation = 5 - production = 5 - yield = 6 - potency = 10 - growth_stages = 5 - -/datum/seed/coffeer - name = "coffeer" - seed_name = "coffee robusta" - display_name = "coffee robusta" - mutants = null - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/coffeer) - plant_icon = "coffeer" - harvest_repeat = 1 - chems = list("coffeepowder" = list(1,20), "synaptizine" = list(1,20), "methamphetamine" = list(1,40)) - - lifespan = 30 - maturation = 5 - production = 5 - yield = 4 - potency = 10 - growth_stages = 5 +/datum/seed/grapes/green/New() + ..() + set_trait(TRAIT_PRODUCT_COLOUR,"42ed2f") //Everything else /datum/seed/peanuts name = "peanut" seed_name = "peanut" display_name = "peanut vines" - packet_icon = "seed-peanut" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/peanut) - plant_icon = "peanut" - harvest_repeat = 1 chems = list("nutriment" = list(1,10)) - lifespan = 55 - maturation = 6 - production = 6 - yield = 6 - potency = 10 +/datum/seed/peanuts/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,6) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,6) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"potato") + set_trait(TRAIT_PRODUCT_COLOUR,"#C4AE7A") + set_trait(TRAIT_PLANT_ICON,"bush2") /datum/seed/cabbage name = "cabbage" seed_name = "cabbage" display_name = "cabbages" - packet_icon = "seed-cabbage" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/cabbage) - plant_icon = "cabbage" - harvest_repeat = 1 chems = list("nutriment" = list(1,10)) + kitchen_tag = "cabbage" - lifespan = 50 - maturation = 3 - production = 5 - yield = 4 - potency = 10 - growth_stages = 1 - -/datum/seed/shand - name = "shand" - seed_name = "S'randar's hand" - display_name = "S'randar's hand leaves" - packet_icon = "seed-shand" - products = list(/obj/item/stack/medical/bruise_pack/tajaran) - plant_icon = "shand" - chems = list("styptic_powder" = list(0,10)) - - lifespan = 50 - maturation = 3 - production = 5 - yield = 4 - potency = 10 - growth_stages = 3 - -/datum/seed/mtear - name = "mtear" - seed_name = "Messa's tear" - display_name = "Messa's tear leaves" - packet_icon = "seed-mtear" - products = list(/obj/item/stack/medical/ointment/tajaran) - plant_icon = "mtear" - chems = list("honey" = list(1,10), "silver_sulfadiazine" = list(3,5)) - - lifespan = 50 - maturation = 3 - production = 5 - yield = 4 - potency = 10 - growth_stages = 3 +/datum/seed/cabbage/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,3) + set_trait(TRAIT_PRODUCTION,5) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"cabbage") + set_trait(TRAIT_PRODUCT_COLOUR,"#84BD82") + set_trait(TRAIT_PLANT_COLOUR,"#6D9C6B") + set_trait(TRAIT_PLANT_ICON,"vine2") /datum/seed/banana name = "banana" seed_name = "banana" display_name = "banana tree" - packet_icon = "seed-banana" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/banana) - plant_icon = "banana" - harvest_repeat = 1 - chems = list("banana" = list(1,10)) + chems = list("banana" = list(10,10)) + trash_type = /obj/item/weapon/bananapeel + kitchen_tag = "banana" - lifespan = 50 - maturation = 6 - production = 6 - yield = 3 +/datum/seed/banana/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,6) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,3) + set_trait(TRAIT_PRODUCT_ICON,"bananas") + set_trait(TRAIT_PRODUCT_COLOUR,"#FFEC1F") + set_trait(TRAIT_PLANT_COLOUR,"#69AD50") + set_trait(TRAIT_PLANT_ICON,"tree4") /datum/seed/corn name = "corn" seed_name = "corn" display_name = "ears of corn" - packet_icon = "seed-corn" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/corn) - plant_icon = "corn" chems = list("nutriment" = list(1,10), "corn_starch" = list(3,5)) + kitchen_tag = "corn" + trash_type = /obj/item/weapon/corncob - lifespan = 25 - maturation = 8 - production = 6 - yield = 3 - potency = 20 - growth_stages = 3 +/datum/seed/corn/New() + ..() + set_trait(TRAIT_MATURATION,8) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,3) + set_trait(TRAIT_POTENCY,20) + set_trait(TRAIT_PRODUCT_ICON,"corn") + set_trait(TRAIT_PRODUCT_COLOUR,"#FFF23B") + set_trait(TRAIT_PLANT_COLOUR,"#87C969") + set_trait(TRAIT_PLANT_ICON,"corn") /datum/seed/potato name = "potato" seed_name = "potato" display_name = "potatoes" - packet_icon = "seed-potato" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/potato) - plant_icon = "potato" chems = list("nutriment" = list(1,10)) + kitchen_tag = "potato" - lifespan = 30 - maturation = 10 - production = 1 - yield = 4 - potency = 10 - growth_stages = 4 +/datum/seed/potato/New() + ..() + set_trait(TRAIT_PRODUCES_POWER,1) + set_trait(TRAIT_MATURATION,10) + set_trait(TRAIT_PRODUCTION,1) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"potato") + set_trait(TRAIT_PRODUCT_COLOUR,"#D4CAB4") + set_trait(TRAIT_PLANT_ICON,"bush2") + +/datum/seed/soybean + name = "soybean" + seed_name = "soybean" + display_name = "soybeans" + chems = list("nutriment" = list(1,20), "soybeanoil" = list(1,20)) + kitchen_tag = "soybeans" + +/datum/seed/soybean/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,4) + set_trait(TRAIT_PRODUCTION,4) + set_trait(TRAIT_YIELD,3) + set_trait(TRAIT_POTENCY,5) + set_trait(TRAIT_PRODUCT_ICON,"bean") + set_trait(TRAIT_PRODUCT_COLOUR,"#EBE7C0") + set_trait(TRAIT_PLANT_ICON,"stalk") /datum/seed/wheat name = "wheat" seed_name = "wheat" display_name = "wheat stalks" - packet_icon = "seed-wheat" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/wheat) - plant_icon = "wheat" chems = list("nutriment" = list(1,25)) + kitchen_tag = "wheat" - lifespan = 25 - maturation = 6 - production = 1 - yield = 4 - potency = 5 +/datum/seed/wheat/New() + ..() + set_trait(TRAIT_MATURATION,6) + set_trait(TRAIT_PRODUCTION,1) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,5) + set_trait(TRAIT_PRODUCT_ICON,"wheat") + set_trait(TRAIT_PRODUCT_COLOUR,"#DBD37D") + set_trait(TRAIT_PLANT_COLOUR,"#BFAF82") + set_trait(TRAIT_PLANT_ICON,"stalk2") /datum/seed/rice name = "rice" seed_name = "rice" display_name = "rice stalks" - packet_icon = "seed-rice" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/ricestalk) - plant_icon = "rice" chems = list("nutriment" = list(1,25)) + kitchen_tag = "rice" - lifespan = 25 - maturation = 6 - production = 1 - yield = 4 - potency = 5 - growth_stages = 4 +/datum/seed/rice/New() + ..() + set_trait(TRAIT_MATURATION,6) + set_trait(TRAIT_PRODUCTION,1) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,5) + set_trait(TRAIT_PRODUCT_ICON,"rice") + set_trait(TRAIT_PRODUCT_COLOUR,"#D5E6D1") + set_trait(TRAIT_PLANT_COLOUR,"#8ED17D") + set_trait(TRAIT_PLANT_ICON,"stalk2") /datum/seed/carrots name = "carrot" seed_name = "carrot" display_name = "carrots" - packet_icon = "seed-carrot" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/carrot) - plant_icon = "carrot" chems = list("nutriment" = list(1,20), "oculine" = list(3,5)) + kitchen_tag = "carrot" - lifespan = 25 - maturation = 10 - production = 1 - yield = 5 - potency = 10 - growth_stages = 3 +/datum/seed/carrots/New() + ..() + set_trait(TRAIT_MATURATION,10) + set_trait(TRAIT_PRODUCTION,1) + set_trait(TRAIT_YIELD,5) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"carrot") + set_trait(TRAIT_PRODUCT_COLOUR,"#FFDB4A") + set_trait(TRAIT_PLANT_ICON,"carrot") /datum/seed/weeds name = "weeds" seed_name = "weed" display_name = "weeds" - packet_icon = "seed-ambrosiavulgaris" - plant_icon = "weeds" - lifespan = 100 - maturation = 5 - production = 1 - yield = -1 - potency = -1 - growth_stages = 4 - immutable = -1 +/datum/seed/weeds/New() + ..() + set_trait(TRAIT_MATURATION,5) + set_trait(TRAIT_PRODUCTION,1) + set_trait(TRAIT_YIELD,-1) + set_trait(TRAIT_POTENCY,-1) + set_trait(TRAIT_IMMUTABLE,-1) + set_trait(TRAIT_PRODUCT_ICON,"flower4") + set_trait(TRAIT_PRODUCT_COLOUR,"#FCEB2B") + set_trait(TRAIT_PLANT_COLOUR,"#59945A") + set_trait(TRAIT_PLANT_ICON,"bush6") /datum/seed/whitebeets name = "whitebeet" seed_name = "white-beet" display_name = "white-beets" - packet_icon = "seed-whitebeet" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet) - plant_icon = "whitebeet" chems = list("nutriment" = list(0,20), "sugar" = list(1,5)) + kitchen_tag = "whitebeet" - lifespan = 60 - maturation = 6 - production = 6 - yield = 6 - potency = 10 +/datum/seed/whitebeets/New() + ..() + set_trait(TRAIT_MATURATION,6) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,6) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"carrot2") + set_trait(TRAIT_PRODUCT_COLOUR,"#EEF5B0") + set_trait(TRAIT_PLANT_COLOUR,"#4D8F53") + set_trait(TRAIT_PLANT_ICON,"carrot2") /datum/seed/sugarcane name = "sugarcane" seed_name = "sugarcane" display_name = "sugarcanes" - packet_icon = "seed-sugarcane" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane) - plant_icon = "sugarcane" - harvest_repeat = 1 chems = list("sugar" = list(4,5)) - lifespan = 60 - maturation = 3 - production = 6 - yield = 4 - potency = 10 - growth_stages = 3 +/datum/seed/sugarcane/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,3) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"stalk") + set_trait(TRAIT_PRODUCT_COLOUR,"#B4D6BD") + set_trait(TRAIT_PLANT_COLOUR,"#6BBD68") + set_trait(TRAIT_PLANT_ICON,"stalk3") /datum/seed/watermelon name = "watermelon" seed_name = "watermelon" display_name = "watermelon vine" - packet_icon = "seed-watermelon" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon) - plant_icon = "watermelon" - harvest_repeat = 1 chems = list("nutriment" = list(1,6)) + kitchen_tag = "watermelon" - lifespan = 50 - maturation = 6 - production = 6 - yield = 3 - potency = 1 +/datum/seed/watermelon/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_JUICY,1) + set_trait(TRAIT_MATURATION,6) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,3) + set_trait(TRAIT_POTENCY,1) + set_trait(TRAIT_PRODUCT_ICON,"vine") + set_trait(TRAIT_PRODUCT_COLOUR,"#326B30") + set_trait(TRAIT_PLANT_COLOUR,"#257522") + set_trait(TRAIT_PLANT_ICON,"vine2") /datum/seed/pumpkin name = "pumpkin" seed_name = "pumpkin" display_name = "pumpkin vine" - packet_icon = "seed-pumpkin" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin) - plant_icon = "pumpkin" - harvest_repeat = 1 chems = list("nutriment" = list(1,6)) + kitchen_tag = "pumpkin" - lifespan = 50 - maturation = 6 - production = 6 - yield = 3 - potency = 10 - growth_stages = 3 +/datum/seed/pumpkin/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,6) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,3) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"vine") + set_trait(TRAIT_PRODUCT_COLOUR,"#B4D4B9") + set_trait(TRAIT_PLANT_COLOUR,"#BAE8C1") + set_trait(TRAIT_PLANT_ICON,"vine2") -/datum/seed/lime +/datum/seed/citrus name = "lime" seed_name = "lime" display_name = "lime trees" - packet_icon = "seed-lime" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/lime) - plant_icon = "lime" - harvest_repeat = 1 chems = list("nutriment" = list(1,20)) + kitchen_tag = "lime" - lifespan = 55 - maturation = 6 - production = 6 - yield = 4 - potency = 15 +/datum/seed/citrus/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_JUICY,1) + set_trait(TRAIT_MATURATION,6) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,15) + set_trait(TRAIT_PRODUCT_ICON,"treefruit") + set_trait(TRAIT_PRODUCT_COLOUR,"#3AF026") + set_trait(TRAIT_PLANT_ICON,"tree") -/datum/seed/lemon +/datum/seed/citrus/lemon name = "lemon" seed_name = "lemon" display_name = "lemon trees" - packet_icon = "seed-lemon" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/lemon) - plant_icon = "lemon" - harvest_repeat = 1 chems = list("nutriment" = list(1,20)) + kitchen_tag = "lemon" - lifespan = 55 - maturation = 6 - production = 6 - yield = 4 - potency = 10 +/datum/seed/citrus/lemon/New() + ..() + set_trait(TRAIT_PRODUCES_POWER,1) + set_trait(TRAIT_PRODUCT_COLOUR,"#F0E226") -/datum/seed/orange +/datum/seed/citrus/orange name = "orange" seed_name = "orange" display_name = "orange trees" - packet_icon = "seed-orange" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/orange) - plant_icon = "orange" - harvest_repeat = 1 + kitchen_tag = "orange" chems = list("nutriment" = list(1,20)) - lifespan = 60 - maturation = 6 - production = 6 - yield = 5 - potency = 1 +/datum/seed/citrus/orange/New() + ..() + set_trait(TRAIT_PRODUCT_COLOUR,"#FFC20A") /datum/seed/grass name = "grass" seed_name = "grass" display_name = "grass" - packet_icon = "seed-grass" - products = list(/obj/item/stack/tile/grass) - plant_icon = "grass" - harvest_repeat = 1 + chems = list("nutriment" = list(1,20)) + kitchen_tag = "grass" - lifespan = 60 - maturation = 2 - production = 5 - yield = 5 - growth_stages = 2 +/datum/seed/grass/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,2) + set_trait(TRAIT_PRODUCTION,5) + set_trait(TRAIT_YIELD,5) + set_trait(TRAIT_PRODUCT_ICON,"grass") + set_trait(TRAIT_PRODUCT_COLOUR,"#09FF00") + set_trait(TRAIT_PLANT_COLOUR,"#07D900") + set_trait(TRAIT_PLANT_ICON,"grass") /datum/seed/cocoa name = "cocoa" seed_name = "cacao" display_name = "cacao tree" - packet_icon = "seed-cocoapod" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod) - plant_icon = "cocoapod" - harvest_repeat = 1 chems = list("nutriment" = list(1,10), "coco" = list(4,5)) - lifespan = 20 - maturation = 5 - production = 5 - yield = 2 - potency = 10 - growth_stages = 5 +/datum/seed/cocoa/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,5) + set_trait(TRAIT_PRODUCTION,5) + set_trait(TRAIT_YIELD,2) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"treefruit") + set_trait(TRAIT_PRODUCT_COLOUR,"#CCA935") + set_trait(TRAIT_PLANT_ICON,"tree2") /datum/seed/cherries name = "cherry" seed_name = "cherry" seed_noun = "pits" display_name = "cherry tree" - packet_icon = "seed-cherry" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/cherries) - plant_icon = "cherry" - harvest_repeat = 1 chems = list("nutriment" = list(1,15), "sugar" = list(1,15)) + kitchen_tag = "cherries" - lifespan = 35 - maturation = 5 - production = 5 - yield = 3 - potency = 10 - growth_stages = 5 +/datum/seed/cherries/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_JUICY,1) + set_trait(TRAIT_MATURATION,5) + set_trait(TRAIT_PRODUCTION,5) + set_trait(TRAIT_YIELD,3) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"cherry") + set_trait(TRAIT_PRODUCT_COLOUR,"#A80000") + set_trait(TRAIT_PLANT_ICON,"tree2") + set_trait(TRAIT_PLANT_COLOUR,"#2F7D2D") /datum/seed/kudzu name = "kudzu" seed_name = "kudzu" display_name = "kudzu vines" - packet_icon = "seed-kudzu" - products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod) - plant_icon = "kudzu" - product_colour = "#96D278" chems = list("nutriment" = list(1,50), "charcoal" = list(1,25)) - lifespan = 20 - maturation = 6 - production = 6 - yield = 4 - potency = 10 - growth_stages = 4 - spread = 2 +/datum/seed/kudzu/New() + ..() + set_trait(TRAIT_MATURATION,6) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_SPREAD,2) + set_trait(TRAIT_PRODUCT_ICON,"treefruit") + set_trait(TRAIT_PRODUCT_COLOUR,"#96D278") + set_trait(TRAIT_PLANT_COLOUR,"#6F7A63") + set_trait(TRAIT_PLANT_ICON,"vine2") /datum/seed/diona name = "diona" seed_name = "diona" seed_noun = "nodes" display_name = "replicant pods" - packet_icon = "seed-replicapod" - products = list(/mob/living/carbon/monkey/diona) - plant_icon = "replicapod" - product_requires_player = 1 - immutable = 1 + can_self_harvest = 1 + has_mob_product = /mob/living/carbon/monkey/diona - lifespan = 50 - endurance = 8 - maturation = 5 - production = 10 - yield = 1 - potency = 30 +/datum/seed/diona/New() + ..() + set_trait(TRAIT_IMMUTABLE,1) + set_trait(TRAIT_ENDURANCE,8) + set_trait(TRAIT_MATURATION,5) + set_trait(TRAIT_PRODUCTION,10) + set_trait(TRAIT_YIELD,1) + set_trait(TRAIT_POTENCY,30) + set_trait(TRAIT_PRODUCT_ICON,"diona") + set_trait(TRAIT_PRODUCT_COLOUR,"#799957") + set_trait(TRAIT_PLANT_COLOUR,"#66804B") + set_trait(TRAIT_PLANT_ICON,"alien4") /datum/seed/clown name = "clown" seed_name = "clown" seed_noun = "pods" display_name = "laughing clowns" - packet_icon = "seed-replicapod" - products = list(/mob/living/simple_animal/hostile/retaliate/clown) - plant_icon = "replicapod" - product_requires_player = 1 + can_self_harvest = 1 + has_mob_product = /mob/living/simple_animal/hostile/retaliate/clown - lifespan = 100 - endurance = 8 - maturation = 1 - production = 1 - yield = 10 - potency = 30 +/datum/seed/clown/New() + ..() + set_trait(TRAIT_ENDURANCE,8) + set_trait(TRAIT_MATURATION,1) + set_trait(TRAIT_PRODUCTION,1) + set_trait(TRAIT_YIELD,10) + set_trait(TRAIT_POTENCY,30) + set_trait(TRAIT_PRODUCT_ICON,"diona") + set_trait(TRAIT_PRODUCT_COLOUR,"#799957") + set_trait(TRAIT_PLANT_COLOUR,"#66804B") + set_trait(TRAIT_PLANT_ICON,"alien4") + +/datum/seed/shand + name = "shand" + seed_name = "S'randar's hand" + display_name = "S'randar's hand leaves" + chems = list("styptic_powder" = list(0,10)) + kitchen_tag = "shand" + +/datum/seed/shand/New() + ..() + set_trait(TRAIT_MATURATION,3) + set_trait(TRAIT_PRODUCTION,5) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"alien3") + set_trait(TRAIT_PRODUCT_COLOUR,"#378C61") + set_trait(TRAIT_PLANT_COLOUR,"#378C61") + set_trait(TRAIT_PLANT_ICON,"tree5") + +/datum/seed/mtear + name = "mtear" + seed_name = "Messa's tear" + display_name = "Messa's tear leaves" + chems = list("honey" = list(1,10), "silver_sulfadiazine" = list(3,5)) + kitchen_tag = "mtear" + +/datum/seed/mtear/New() + ..() + set_trait(TRAIT_MATURATION,3) + set_trait(TRAIT_PRODUCTION,5) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,10) + set_trait(TRAIT_PRODUCT_ICON,"alien4") + set_trait(TRAIT_PRODUCT_COLOUR,"#4CC5C7") + set_trait(TRAIT_PLANT_COLOUR,"#4CC789") + set_trait(TRAIT_PLANT_ICON,"bush7") + +/datum/seed/telriis + name = "telriis" + seed_name = "telriis" + display_name = "telriis grass" + chems = list("wine" = list(1,5), "toxin" = list(1,5), "nutriment" = list(1,6)) + +/datum/seed/telriis/New() + ..() + set_trait(TRAIT_PLANT_ICON,"telriis") + set_trait(TRAIT_ENDURANCE,50) + set_trait(TRAIT_MATURATION,5) + set_trait(TRAIT_PRODUCTION,5) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,5) + +/datum/seed/thaadra + name = "thaadra" + seed_name = "thaa'dra" + display_name = "thaa'dra lichen" + chems = list("frostoil" = list(1,5),"nutriment" = list(1,5)) + +/datum/seed/thaadra/New() + ..() + set_trait(TRAIT_PLANT_ICON,"thaadra") + set_trait(TRAIT_ENDURANCE,10) + set_trait(TRAIT_MATURATION,5) + set_trait(TRAIT_PRODUCTION,9) + set_trait(TRAIT_YIELD,2) + set_trait(TRAIT_POTENCY,5) + +/datum/seed/jurlmah + name = "jurlmah" + seed_name = "jurl'mah" + display_name = "jurl'mah reeds" + chems = list("serotrotium" = list(1,5),"nutriment" = list(1,5)) + +/datum/seed/jurlmah/New() + ..() + set_trait(TRAIT_PLANT_ICON,"jurlmah") + set_trait(TRAIT_ENDURANCE,12) + set_trait(TRAIT_MATURATION,8) + set_trait(TRAIT_PRODUCTION,9) + set_trait(TRAIT_YIELD,3) + set_trait(TRAIT_POTENCY,10) + +/datum/seed/amauri + name = "amauri" + seed_name = "amauri" + display_name = "amauri plant" + chems = list("condensedcapsaicin" = list(1,5),"nutriment" = list(1,5)) + +/datum/seed/amauri/New() + ..() + set_trait(TRAIT_PLANT_ICON,"amauri") + set_trait(TRAIT_ENDURANCE,10) + set_trait(TRAIT_MATURATION,8) + set_trait(TRAIT_PRODUCTION,9) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,10) + +/datum/seed/gelthi + name = "gelthi" + seed_name = "gelthi" + display_name = "gelthi plant" + chems = list("morphine" = list(1,5),"capsaicin" = list(1,5),"nutriment" = list(1,5)) + +/datum/seed/gelthi/New() + ..() + set_trait(TRAIT_PLANT_ICON,"gelthi") + set_trait(TRAIT_ENDURANCE,15) + set_trait(TRAIT_MATURATION,6) + set_trait(TRAIT_PRODUCTION,6) + set_trait(TRAIT_YIELD,2) + set_trait(TRAIT_POTENCY,1) + +/datum/seed/vale + name = "vale" + seed_name = "vale" + display_name = "vale bush" + chems = list("sal_acid" = list(1,5),"salbutamol" = list(1,2),"nutriment"= list(1,5)) + +/datum/seed/vale/New() + ..() + set_trait(TRAIT_PLANT_ICON,"vale") + set_trait(TRAIT_ENDURANCE,15) + set_trait(TRAIT_MATURATION,8) + set_trait(TRAIT_PRODUCTION,10) + set_trait(TRAIT_YIELD,3) + set_trait(TRAIT_POTENCY,3) + +/datum/seed/surik + name = "surik" + seed_name = "surik" + display_name = "surik vine" + chems = list("haloperidol" = list(1,3),"synaptizine" = list(1,2),"nutriment" = list(1,5)) + +/datum/seed/surik/New() + ..() + set_trait(TRAIT_PLANT_ICON,"surik") + set_trait(TRAIT_ENDURANCE,18) + set_trait(TRAIT_MATURATION,7) + set_trait(TRAIT_PRODUCTION,7) + set_trait(TRAIT_YIELD,3) + set_trait(TRAIT_POTENCY,3) /datum/seed/test name = "test" - seed_name = "testing" - seed_noun = "data" - display_name = "runtimes" - packet_icon = "seed-replicapod" - products = list(/mob/living/simple_animal/cat/Runtime) - plant_icon = "replicapod" + seed_name = "test" + display_name = "test trees" + chems = list("omnizine" = list(1,20)) - requires_nutrients = 0 - nutrient_consumption = 0 - requires_water = 0 - water_consumption = 0 - pest_tolerance = 11 - weed_tolerance = 11 - lifespan = 1000 - endurance = 100 - maturation = 1 - production = 1 - yield = 1 - potency = 1 \ No newline at end of file +/datum/seed/test/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_JUICY,1) + set_trait(TRAIT_MATURATION,1) + set_trait(TRAIT_PRODUCTION,1) + set_trait(TRAIT_YIELD,4) + set_trait(TRAIT_POTENCY,15) + set_trait(TRAIT_PRODUCT_ICON,"treefruit") + set_trait(TRAIT_PRODUCT_COLOUR,"#BB6AC4") + set_trait(TRAIT_PLANT_ICON,"tree") + set_trait(TRAIT_EXPLOSIVE, 1) diff --git a/code/modules/hydroponics/seed_machines.dm b/code/modules/hydroponics/seed_machines.dm index e2416733cc3..cce982372c0 100644 --- a/code/modules/hydroponics/seed_machines.dm +++ b/code/modules/hydroponics/seed_machines.dm @@ -1,7 +1,7 @@ /obj/item/weapon/disk/botany name = "flora data disk" desc = "A small disk used for carrying data on plant genetics." - icon = 'icons/obj/hydroponics.dmi' + icon = 'icons/obj/hydroponics_machines.dmi' icon_state = "disk" w_class = 1.0 @@ -16,7 +16,7 @@ /obj/item/weapon/disk/botany/attack_self(var/mob/user as mob) if(genes.len) var/choice = alert(user, "Are you sure you want to wipe the disk?", "Xenobotany Data", "No", "Yes") - if(src && user && genes && choice == "Yes") + if(src && user && genes && choice && choice == "Yes" && user.Adjacent(get_turf(src))) user << "You wipe the disk data." name = initial(name) desc = initial(name) @@ -33,7 +33,7 @@ new /obj/item/weapon/disk/botany(src) /obj/machinery/botany - icon = 'icons/obj/hydroponics.dmi' + icon = 'icons/obj/hydroponics_machines.dmi' icon_state = "hydrotray3" density = 1 anchored = 1 @@ -44,7 +44,7 @@ var/open = 0 var/active = 0 - var/action_time = 100 + var/action_time = 5 var/last_action = 0 var/eject_disk = 0 var/failed_task = 0 @@ -58,9 +58,6 @@ if(world.time > last_action + action_time) finished_task() -/obj/machinery/botany/attack_paw(mob/user as mob) - return attack_hand(user) - /obj/machinery/botany/attack_ai(mob/user as mob) return attack_hand(user) @@ -82,13 +79,13 @@ visible_message("\icon[src] [src] beeps and spits out [loaded_disk].") loaded_disk = null -/obj/machinery/botany/attackby(obj/item/weapon/W as obj, mob/user as mob, params) +/obj/machinery/botany/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W,/obj/item/seeds)) if(seed) user << "There is already a seed loaded." - + return var/obj/item/seeds/S =W - if(S.seed && S.seed.immutable > 0) + if(S.seed && S.seed.get_trait(TRAIT_IMMUTABLE) > 0) user << "That seed is not compatible with our genetics technology." else user.drop_item(W) @@ -99,7 +96,7 @@ if(istype(W,/obj/item/weapon/screwdriver)) open = !open - user << "\blue You [open ? "open" : "close"] the maintenance panel." + user << "You [open ? "open" : "close"] the maintenance panel." return if(open) @@ -147,8 +144,8 @@ var/list/data = list() var/list/geneMasks[0] - for(var/gene_tag in gene_tag_masks) - geneMasks.Add(list(list("tag" = gene_tag, "mask" = gene_tag_masks[gene_tag]))) + for(var/gene_tag in plant_controller.gene_tag_masks) + geneMasks.Add(list(list("tag" = gene_tag, "mask" = plant_controller.gene_tag_masks[gene_tag]))) data["geneMasks"] = geneMasks data["activity"] = active @@ -189,10 +186,10 @@ if(!seed) return seed.loc = get_turf(src) - if(seed.seed.name == "new line" || isnull(seed_types[seed.seed.name])) - seed.seed.uid = seed_types.len + 1 + if(seed.seed.name == "new line" || isnull(plant_controller.seeds[seed.seed.name])) + seed.seed.uid = plant_controller.seeds.len + 1 seed.seed.name = "[seed.seed.uid]" - seed_types[seed.seed.name] = seed.seed + plant_controller.seeds[seed.seed.name] = seed.seed seed.update_seed() visible_message("\icon[src] [src] beeps and spits out [seed].") @@ -245,8 +242,8 @@ if(!genetics.roundstart) loaded_disk.genesource += " (variety #[genetics.uid])" - loaded_disk.name += " ([gene_tag_masks[href_list["get_gene"]]], #[genetics.uid])" - loaded_disk.desc += " The label reads \'gene [gene_tag_masks[href_list["get_gene"]]], sampled from [genetics.display_name]\'." + loaded_disk.name += " ([plant_controller.gene_tag_masks[href_list["get_gene"]]], #[genetics.uid])" + loaded_disk.desc += " The label reads \'gene [plant_controller.gene_tag_masks[href_list["get_gene"]]], sampled from [genetics.display_name]\'." eject_disk = 1 degradation += rand(20,60) @@ -291,7 +288,7 @@ for(var/datum/plantgene/P in loaded_disk.genes) if(data["locus"] != "") data["locus"] += ", " - data["locus"] += "[gene_tag_masks[P.genetype]]" + data["locus"] += "[plant_controller.gene_tag_masks[P.genetype]]" else data["disk"] = 0 @@ -321,7 +318,7 @@ last_action = world.time active = 1 - if(!isnull(seed_types[seed.seed.name])) + if(!isnull(plant_controller.seeds[seed.seed.name])) seed.seed = seed.seed.diverge(1) seed.seed_type = seed.seed.name seed.update_seed() @@ -335,4 +332,4 @@ seed.modified += rand(5,10) usr.set_machine(src) - src.add_fingerprint(usr) \ No newline at end of file + src.add_fingerprint(usr) diff --git a/code/modules/hydroponics/seed_mobs.dm b/code/modules/hydroponics/seed_mobs.dm index 4bef08248bc..8b240124550 100644 --- a/code/modules/hydroponics/seed_mobs.dm +++ b/code/modules/hydroponics/seed_mobs.dm @@ -1,5 +1,4 @@ /datum/seed - var/product_requires_player // If yes, product will ask for a player among the ghosts. var/list/currently_querying // Used to avoid asking the same ghost repeatedly. // The following procs are used to grab players for mobs produced by a seed (mostly for dionaea). @@ -7,25 +6,26 @@ /* if(!host || !istype(host)) return - if(product_requires_player) - spawn(0) - request_player(host) - spawn(75) - if(!host.ckey && !host.client) - host.death() // This seems redundant, but a lot of mobs don't - host.stat = 2 // handle death() properly. Better safe than etc. - host.visible_message("\red [host] is malformed and unable to survive. It expires pitifully, leaving behind some seeds.") + spawn(0) + request_player(host) + if(istype(host,/mob/living/simple_animal)) + return + spawn(75) + if(!host.ckey && !host.client) + host.death() // This seems redundant, but a lot of mobs don't + host.stat = 2 // handle death() properly. Better safe than etc. + host.visible_message("[host] is malformed and unable to survive. It expires pitifully, leaving behind some seeds.") - var/total_yield = rand(1,3) - for(var/j = 0;j<=total_yield;j++) - var/obj/item/seeds/S = new(get_turf(host)) - S.seed_type = name - S.update_seed() + var/total_yield = rand(1,3) + for(var/j = 0;j<=total_yield;j++) + var/obj/item/seeds/S = new(get_turf(host)) + S.seed_type = name + S.update_seed() /datum/seed/proc/request_player(var/mob/living/host) if(!host) return for(var/mob/dead/observer/O in player_list) - if(jobban_isbanned(O, "Dionaea") || (!is_alien_whitelisted(src, "Diona") && config.usealienwhitelist)) + if(jobban_isbanned(O, "Dionaea")) continue if(O.client) if(O.client.prefs.be_special & BE_PLANT && !(O.client in currently_querying)) @@ -69,7 +69,7 @@ host << "\green You awaken slowly, stirring into sluggish motion as the air caresses you." // This is a hack, replace with some kind of species blurb proc. - if(istype(host,/mob/living/carbon/monkey/diona)) + if(istype(host,/mob/living/carbon/alien/diona)) host << "You are [host], one of a race of drifting interstellar plantlike creatures that sometimes share their seeds with human traders." host << "Too much darkness will send you into shock and starve you, but light will help you heal." diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seed_packets.dm similarity index 65% rename from code/modules/hydroponics/seeds.dm rename to code/modules/hydroponics/seed_packets.dm index a572b2c8d19..3a2afb74f2a 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seed_packets.dm @@ -1,8 +1,10 @@ +var/global/list/plant_seed_sprites = list() + //Seed packet object/procs. /obj/item/seeds name = "packet of seeds" icon = 'icons/obj/seeds.dmi' - icon_state = "seed" + icon_state = "blank" w_class = 2.0 var/seed_type @@ -10,26 +12,57 @@ var/modified = 0 /obj/item/seeds/New() + while(!plant_controller) + sleep(30) update_seed() ..() //Grabs the appropriate seed datum from the global list. /obj/item/seeds/proc/update_seed() - if(!seed && seed_type && !isnull(seed_types) && seed_types[seed_type]) - seed = seed_types[seed_type] + if(!seed && seed_type && !isnull(plant_controller.seeds) && plant_controller.seeds[seed_type]) + seed = plant_controller.seeds[seed_type] update_appearance() //Updates strings and icon appropriately based on seed datum. /obj/item/seeds/proc/update_appearance() if(!seed) return - icon_state = seed.packet_icon - src.name = "packet of [seed.seed_name] [seed.seed_noun]" - src.desc = "It has a picture of [seed.display_name] on the front." -/obj/item/seeds/examine() - ..() + // Update icon. + overlays.Cut() + var/is_seeds = ((seed.seed_noun in list("seeds","pits","nodes")) ? 1 : 0) + var/image/seed_mask + var/seed_base_key = "base-[is_seeds ? seed.get_trait(TRAIT_PLANT_COLOUR) : "spores"]" + if(plant_seed_sprites[seed_base_key]) + seed_mask = plant_seed_sprites[seed_base_key] + else + seed_mask = image('icons/obj/seeds.dmi',"[is_seeds ? "seed" : "spore"]-mask") + if(is_seeds) // Spore glass bits aren't coloured. + seed_mask.color = seed.get_trait(TRAIT_PLANT_COLOUR) + plant_seed_sprites[seed_base_key] = seed_mask + + var/image/seed_overlay + var/seed_overlay_key = "[seed.get_trait(TRAIT_PRODUCT_ICON)]-[seed.get_trait(TRAIT_PRODUCT_COLOUR)]" + if(plant_seed_sprites[seed_overlay_key]) + seed_overlay = plant_seed_sprites[seed_overlay_key] + else + seed_overlay = image('icons/obj/seeds.dmi',"[seed.get_trait(TRAIT_PRODUCT_ICON)]") + seed_overlay.color = seed.get_trait(TRAIT_PRODUCT_COLOUR) + plant_seed_sprites[seed_overlay_key] = seed_overlay + + overlays |= seed_mask + overlays |= seed_overlay + + if(is_seeds) + src.name = "packet of [seed.seed_name] [seed.seed_noun]" + src.desc = "It has a picture of [seed.display_name] on the front." + else + src.name = "sample of [seed.seed_name] [seed.seed_noun]" + src.desc = "It's labelled as coming from [seed.display_name]." + +/obj/item/seeds/examine(mob/user) + ..(user) if(seed && !seed.roundstart) - usr << "It's tagged as variety #[seed.uid]." + user << "It's tagged as variety #[seed.uid]." /obj/item/seeds/cutting name = "cuttings" @@ -39,12 +72,17 @@ ..() src.name = "packet of [seed.seed_name] cuttings" +/obj/item/seeds/random + seed_type = null + +/obj/item/seeds/random/New() + seed = plant_controller.create_random_seed() + seed_type = seed.name + update_seed() + /obj/item/seeds/replicapod seed_type = "diona" -/obj/item/seeds/poppyseed - seed_type = "poppies" - /obj/item/seeds/chiliseed seed_type = "chili" @@ -81,9 +119,6 @@ /obj/item/seeds/eggplantseed seed_type = "eggplant" -/obj/item/seeds/eggyseed - seed_type = "realeggplant" - /obj/item/seeds/bloodtomatoseed seed_type = "bloodtomato" @@ -114,9 +149,6 @@ /obj/item/seeds/soyaseed seed_type = "soybean" -/obj/item/seeds/koiseed - seed_type = "koibean" - /obj/item/seeds/wheatseed seed_type = "wheat" @@ -222,11 +254,38 @@ /obj/item/seeds/cherryseed seed_type = "cherry" +/obj/item/seeds/tobaccoseed + seed_type = "tobacco" + /obj/item/seeds/kudzuseed seed_type = "kudzu" -/obj/item/seeds/tobaccoseed - seed_type = "tobacco" +/obj/item/seeds/jurlmah + seed_type = "jurlmah" + +/obj/item/seeds/amauri + seed_type = "amauri" + +/obj/item/seeds/gelthi + seed_type = "gelthi" + +/obj/item/seeds/vale + seed_type = "vale" + +/obj/item/seeds/surik + seed_type = "surik" + +/obj/item/seeds/telriis + seed_type = "telriis" + +/obj/item/seeds/thaadra + seed_type = "thaadra" + +/obj/item/seeds/clown + seed_type = "clown" + +/obj/item/seeds/test + seed_type = "test" /obj/item/seeds/stobaccoseed seed_type = "stobacco" @@ -242,10 +301,3 @@ /obj/item/seeds/coffeerseed seed_type = "coffeer" - -/obj/item/seeds/moonflowerseed - seed_type = "moonflower" - -/obj/item/seeds/novaflowerseed - seed_type = "novaflower" - diff --git a/code/modules/hydroponics/seed_storage.dm b/code/modules/hydroponics/seed_storage.dm new file mode 100644 index 00000000000..e64ad1e8131 --- /dev/null +++ b/code/modules/hydroponics/seed_storage.dm @@ -0,0 +1,245 @@ +/datum/seed_pile + var/name + var/amount + var/datum/seed/seed_type // Keeps track of what our seed is + var/list/obj/item/seeds/seeds = list() // Tracks actual objects contained in the pile + var/ID + +/datum/seed_pile/New(var/obj/item/seeds/O, var/ID) + name = O.name + amount = 1 + seed_type = O.seed + seeds += O + src.ID = ID + +/datum/seed_pile/proc/matches(var/obj/item/seeds/O) + if (O.seed == seed_type) + return 1 + return 0 + +/obj/machinery/seed_storage + name = "Seed storage" + desc = "It stores, sorts, and dispenses seeds." + icon = 'icons/obj/vending.dmi' + icon_state = "seeds" + density = 1 + anchored = 1 + use_power = 1 + idle_power_usage = 100 + + var/initialized = 0 // Map-placed ones break if seeds are loaded right at the start of the round, so we do it on the first interaction + var/list/datum/seed_pile/piles = list() + var/list/starting_seeds = list() + var/list/scanner = list() // What properties we can view + +/obj/machinery/seed_storage/random // This is mostly for testing, but I guess admins could spawn it + name = "Random seed storage" + scanner = list("stats", "produce", "soil", "temperature", "light") + starting_seeds = list(/obj/item/seeds/random = 50) + +/obj/machinery/seed_storage/garden + name = "Garden seed storage" + scanner = list("stats") + starting_seeds = list(/obj/item/seeds/appleseed = 3, /obj/item/seeds/bananaseed = 3, /obj/item/seeds/berryseed = 3, /obj/item/seeds/cabbageseed = 3, /obj/item/seeds/carrotseed = 3, /obj/item/seeds/chantermycelium = 3, /obj/item/seeds/cherryseed = 3, /obj/item/seeds/chiliseed = 3, /obj/item/seeds/cocoapodseed = 3, /obj/item/seeds/cornseed = 3, /obj/item/seeds/eggplantseed = 3, /obj/item/seeds/grapeseed = 3, /obj/item/seeds/grassseed = 3, /obj/item/seeds/replicapod = 3, /obj/item/seeds/lemonseed = 3, /obj/item/seeds/limeseed = 3, /obj/item/seeds/mtearseed = 2, /obj/item/seeds/orangeseed = 3, /obj/item/seeds/peanutseed = 3, /obj/item/seeds/plumpmycelium = 3, /obj/item/seeds/poppyseed = 3, /obj/item/seeds/potatoseed = 3, /obj/item/seeds/pumpkinseed = 3, /obj/item/seeds/riceseed = 3, /obj/item/seeds/soyaseed = 3, /obj/item/seeds/sugarcaneseed = 3, /obj/item/seeds/sunflowerseed = 3, /obj/item/seeds/shandseed = 2, /obj/item/seeds/tobaccoseed = 3, /obj/item/seeds/tomatoseed = 3, /obj/item/seeds/towermycelium = 3, /obj/item/seeds/watermelonseed = 3, /obj/item/seeds/wheatseed = 3, /obj/item/seeds/whitebeetseed = 3) + +/obj/machinery/seed_storage/xenobotany + name = "Xenobotany seed storage" + scanner = list("stats", "produce", "soil", "temperature", "light") + starting_seeds = list(/obj/item/seeds/ambrosiavulgarisseed = 3, /obj/item/seeds/appleseed = 3, /obj/item/seeds/amanitamycelium = 2, /obj/item/seeds/bananaseed = 3, /obj/item/seeds/berryseed = 3, /obj/item/seeds/cabbageseed = 3, /obj/item/seeds/carrotseed = 3, /obj/item/seeds/chantermycelium = 3, /obj/item/seeds/cherryseed = 3, /obj/item/seeds/chiliseed = 3, /obj/item/seeds/cocoapodseed = 3, /obj/item/seeds/cornseed = 3, /obj/item/seeds/replicapod = 3, /obj/item/seeds/eggplantseed = 3, /obj/item/seeds/glowshroom = 2, /obj/item/seeds/grapeseed = 3, /obj/item/seeds/grassseed = 3, /obj/item/seeds/lemonseed = 3, /obj/item/seeds/libertymycelium = 2, /obj/item/seeds/limeseed = 3, /obj/item/seeds/mtearseed = 2, /obj/item/seeds/nettleseed = 2, /obj/item/seeds/orangeseed = 3, /obj/item/seeds/peanutseed = 3, /obj/item/seeds/plastiseed = 3, /obj/item/seeds/plumpmycelium = 3, /obj/item/seeds/poppyseed = 3, /obj/item/seeds/potatoseed = 3, /obj/item/seeds/pumpkinseed = 3, /obj/item/seeds/reishimycelium = 2, /obj/item/seeds/riceseed = 3, /obj/item/seeds/soyaseed = 3, /obj/item/seeds/sugarcaneseed = 3, /obj/item/seeds/sunflowerseed = 3, /obj/item/seeds/shandseed = 2, /obj/item/seeds/tobaccoseed = 3, /obj/item/seeds/tomatoseed = 3, /obj/item/seeds/towermycelium = 3, /obj/item/seeds/watermelonseed = 3, /obj/item/seeds/wheatseed = 3, /obj/item/seeds/whitebeetseed = 3) + +/obj/machinery/seed_storage/attack_hand(mob/user as mob) + user.set_machine(src) + interact(user) + +/obj/machinery/seed_storage/interact(mob/user as mob) + if (..()) + return + + if (!initialized) + for(var/typepath in starting_seeds) + var/amount = starting_seeds[typepath] + if(isnull(amount)) amount = 1 + + for (var/i = 1 to amount) + var/O = new typepath + add(O) + initialized = 1 + + var/dat = "

Seed storage contents

" + if (piles.len == 0) + dat += "No seeds" + else + dat += "" + dat += "" + if ("stats" in scanner) + dat += "" + if ("temperature" in scanner) + dat += "" + if ("light" in scanner) + dat += "" + if ("soil" in scanner) + dat += "" + dat += "" + for (var/datum/seed_pile/S in piles) + var/datum/seed/seed = S.seed_type + if(!seed) + continue + dat += "" + dat += "" + dat += "" + if ("stats" in scanner) + dat += "" + if(seed.get_trait(TRAIT_HARVEST_REPEAT)) + dat += "" + else + dat += "" + if ("temperature" in scanner) + dat += "" + if ("light" in scanner) + dat += "" + if ("soil" in scanner) + if(seed.get_trait(TRAIT_REQUIRES_NUTRIENTS)) + if(seed.get_trait(TRAIT_NUTRIENT_CONSUMPTION) < 0.05) + dat += "" + else if(seed.get_trait(TRAIT_REQUIRES_NUTRIENTS) > 0.2) + dat += "" + else + dat += "" + else + dat += "" + if(seed.get_trait(TRAIT_REQUIRES_WATER)) + if(seed.get_trait(TRAIT_WATER_CONSUMPTION) < 1) + dat += "" + else if(seed.get_trait(TRAIT_WATER_CONSUMPTION) > 5) + dat += "" + else + dat += "" + else + dat += "" + + dat += "" + dat += "" + dat += "" + dat += "" + dat += "
NameVarietyEYMPrPtHarvestTempLightNutriWaterNotesAmount
[seed.seed_name]#[seed.uid][seed.get_trait(TRAIT_ENDURANCE)][seed.get_trait(TRAIT_YIELD)][seed.get_trait(TRAIT_MATURATION)][seed.get_trait(TRAIT_PRODUCTION)][seed.get_trait(TRAIT_POTENCY)]MultipleSingle[seed.get_trait(TRAIT_IDEAL_HEAT)] K[seed.get_trait(TRAIT_IDEAL_LIGHT)] LLowHighNormNoLowHighNormNo" + switch(seed.get_trait(TRAIT_CARNIVOROUS)) + if(1) + dat += "CARN " + if(2) + dat += "CARN " + switch(seed.get_trait(TRAIT_SPREAD)) + if(1) + dat += "VINE " + if(2) + dat += "VINE " + if ("pressure" in scanner) + if(seed.get_trait(TRAIT_LOWKPA_TOLERANCE) < 20) + dat += "LP " + if(seed.get_trait(TRAIT_HIGHKPA_TOLERANCE) > 220) + dat += "HP " + if ("temperature" in scanner) + if(seed.get_trait(TRAIT_HEAT_TOLERANCE) > 30) + dat += "TEMRES " + else if(seed.get_trait(TRAIT_HEAT_TOLERANCE) < 10) + dat += "TEMSEN " + if ("light" in scanner) + if(seed.get_trait(TRAIT_LIGHT_TOLERANCE) > 10) + dat += "LIGRES " + else if(seed.get_trait(TRAIT_LIGHT_TOLERANCE) < 3) + dat += "LIGSEN " + if(seed.get_trait(TRAIT_TOXINS_TOLERANCE) < 3) + dat += "TOXSEN " + else if(seed.get_trait(TRAIT_TOXINS_TOLERANCE) > 6) + dat += "TOXRES " + if(seed.get_trait(TRAIT_PEST_TOLERANCE) < 3) + dat += "PESTSEN " + else if(seed.get_trait(TRAIT_PEST_TOLERANCE) > 6) + dat += "PESTRES " + if(seed.get_trait(TRAIT_WEED_TOLERANCE) < 3) + dat += "WEEDSEN " + else if(seed.get_trait(TRAIT_WEED_TOLERANCE) > 6) + dat += "WEEDRES " + if(seed.get_trait(TRAIT_PARASITE)) + dat += "PAR " + if ("temperature" in scanner) + if(seed.get_trait(TRAIT_ALTER_TEMP) > 0) + dat += "TEMP+ " + if(seed.get_trait(TRAIT_ALTER_TEMP) < 0) + dat += "TEMP- " + if(seed.get_trait(TRAIT_BIOLUM)) + dat += "LUM " + dat += "[S.amount]Vend Purge
" + + user << browse(dat, "window=seedstorage") + onclose(user, "seedstorage") + +/obj/machinery/seed_storage/Topic(var/href, var/list/href_list) + if (..()) + return + var/task = href_list["task"] + var/ID = text2num(href_list["id"]) + + for (var/datum/seed_pile/N in piles) + if (N.ID == ID) + if (task == "vend") + var/obj/O = pick(N.seeds) + if (O) + --N.amount + N.seeds -= O + if (N.amount <= 0 || N.seeds.len <= 0) + piles -= N + del(N) + O.loc = src.loc + else + piles -= N + del(N) + else if (task == "purge") + for (var/obj/O in N.seeds) + del(O) + piles -= N + del(N) + break + updateUsrDialog() + +/obj/machinery/seed_storage/attackby(var/obj/item/O as obj, var/mob/user as mob) + if (istype(O, /obj/item/seeds)) + add(O) + user.visible_message("[user] puts \the [O.name] into \the [src].", "You put \the [O] into \the [src].") + return + else if (istype(O, /obj/item/weapon/storage/bag/plants)) + var/obj/item/weapon/storage/P = O + var/loaded = 0 + for(var/obj/item/seeds/G in P.contents) + ++loaded + add(G) + if (loaded) + user.visible_message("[user] puts the seeds from \the [O.name] into \the [src].", "You put the seeds from \the [O.name] into \the [src].") + else + user << "There are no seeds in \the [O.name]." + return + else if(istype(O, /obj/item/weapon/wrench)) + playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) + anchored = !anchored + user << "You [anchored ? "wrench" : "unwrench"] \the [src]." + +/obj/machinery/seed_storage/proc/add(var/obj/item/seeds/O as obj) + if (istype(O.loc, /mob)) + var/mob/user = O.loc + user.drop_item(O) + else if(istype(O.loc,/obj/item/weapon/storage)) + var/obj/item/weapon/storage/S = O.loc + S.remove_from_storage(O, src) + + O.loc = src + var/newID = 0 + + for (var/datum/seed_pile/N in piles) + if (N.matches(O)) + ++N.amount + N.seeds += (O) + return + else if(N.ID >= newID) + newID = N.ID + 1 + + piles += new /datum/seed_pile(O, newID) + return diff --git a/code/modules/hydroponics/spreading/spreading.dm b/code/modules/hydroponics/spreading/spreading.dm new file mode 100644 index 00000000000..d4bd00c9c05 --- /dev/null +++ b/code/modules/hydroponics/spreading/spreading.dm @@ -0,0 +1,262 @@ +#define DEFAULT_SEED "glowshroom" +#define VINE_GROWTH_STAGES 5 + +/proc/spacevine_infestation() + spawn() //to stop the secrets panel hanging + var/list/turf/simulated/floor/turfs = list() //list of all the empty floor turfs in the hallway areas + for(var/areapath in typesof(/area/hallway)) + var/area/A = locate(areapath) + for(var/area/B in A.related) + for(var/turf/simulated/floor/F in B.contents) + if(!F.contents.len) + turfs += F + + if(turfs.len) //Pick a turf to spawn at if we can + var/turf/simulated/floor/T = pick(turfs) + var/datum/seed/seed = plant_controller.create_random_seed(1) + seed.set_trait(TRAIT_SPREAD,2) // So it will function properly as vines. + seed.set_trait(TRAIT_POTENCY,rand(70,100)) // Guarantee a wide spread and powerful effects. + new /obj/effect/plant(T,seed) + message_admins("Event: Spacevines spawned at [T.loc] ([T.x],[T.y],[T.z])") + +/obj/effect/dead_plant + anchored = 1 + opacity = 0 + density = 0 + color = DEAD_PLANT_COLOUR + +/obj/effect/dead_plant/attack_hand() + del(src) + +/obj/effect/dead_plant/attackby() + ..() + for(var/obj/effect/plant/neighbor in range(1)) + neighbor.update_neighbors() + del(src) + +/obj/effect/plant + name = "plant" + anchored = 1 + opacity = 0 + density = 0 + icon = 'icons/obj/hydroponics_growing.dmi' + icon_state = "bush4-1" + layer = 3 + pass_flags = PASSTABLE + + var/health = 10 + var/max_health = 100 + var/growth_threshold = 0 + var/growth_type = 0 + var/max_growth = 0 + + var/list/neighbors = list() + var/obj/effect/plant/parent + var/datum/seed/seed + var/floor = 0 + var/spread_chance = 40 + var/spread_distance = 3 + var/evolve_chance = 2 + var/last_tick = 0 + var/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/plant + + var/mob/living/buckled_mob = null + var/movable = 0 + +/obj/effect/plant/Del() + if(plant_controller) + plant_controller.remove_plant(src) + for(var/obj/effect/plant/neighbor in range(1,src)) + plant_controller.add_plant(neighbor) + ..() +/obj/effect/plant/single + spread_chance = 0 + +/obj/effect/plant/New(var/newloc, var/datum/seed/newseed, var/obj/effect/plant/newparent) + ..() + + if(!newparent) + parent = src + else + parent = newparent + + if(!plant_controller) + sleep(250) // ugly hack, should mean roundstart plants are fine. + if(!plant_controller) + world << "Plant controller does not exist and [src] requires it. Aborting." + del(src) + return + + if(!istype(newseed)) + newseed = plant_controller.seeds[DEFAULT_SEED] + seed = newseed + if(!seed) + del(src) + return + + name = seed.display_name + max_health = round(seed.get_trait(TRAIT_ENDURANCE)/2) + if(seed.get_trait(TRAIT_SPREAD)==2) + max_growth = VINE_GROWTH_STAGES + growth_threshold = max_health/VINE_GROWTH_STAGES + icon = 'icons/obj/hydroponics_vines.dmi' + growth_type = 2 // Vines by default. + if(seed.get_trait(TRAIT_CARNIVOROUS) == 2) + growth_type = 1 // WOOOORMS. + else if(!(seed.seed_noun in list("seeds","pits"))) + if(seed.seed_noun == "nodes") + growth_type = 3 // Biomass + else + growth_type = 4 // Mold + else + max_growth = seed.growth_stages + growth_threshold = max_health/seed.growth_stages + + if(max_growth > 2 && prob(50)) + max_growth-- //Ensure some variation in final sprite, makes the carpet of crap look less wonky. + + spread_chance = seed.get_trait(TRAIT_POTENCY) * 4 + spread_distance = ((growth_type>0) ? round(spread_chance*0.6) : round(spread_chance*0.3)) + update_icon() + + spawn(1) // Plants will sometimes be spawned in the turf adjacent to the one they need to end up in, for the sake of correct dir/etc being set. + set_dir(calc_dir()) + update_icon() + plant_controller.add_plant(src) + // Some plants eat through plating. + if(!isnull(seed.chems["facid"])) + var/turf/T = get_turf(src) + T.ex_act(prob(80) ? 3 : 2) + +/obj/effect/plant/update_icon() + //TODO: should really be caching this. + refresh_icon() + if(growth_type == 0 && !floor) + src.transform = null + var/matrix/M = matrix() + // should make the plant flush against the wall it's meant to be growing from. + M.Translate(0,-(rand(12,14))) + switch(dir) + if(WEST) + M.Turn(90) + if(NORTH) + M.Turn(180) + if(EAST) + M.Turn(270) + src.transform = M + var/icon_colour = seed.get_trait(TRAIT_PLANT_COLOUR) + if(icon_colour) + color = icon_colour + // Apply colour and light from seed datum. + if(seed.get_trait(TRAIT_BIOLUM)) + SetLuminosity(1+round(seed.get_trait(TRAIT_POTENCY)/20)) + if(seed.get_trait(TRAIT_BIOLUM_COLOUR)) + l_color = seed.get_trait(TRAIT_BIOLUM_COLOUR) + else + l_color = null + return + else + SetLuminosity(0) + +/obj/effect/plant/proc/refresh_icon() + var/growth = min(max_growth,round(health/growth_threshold)) + var/at_fringe = get_dist(src,parent) + if(spread_distance > 5) + if(at_fringe >= (spread_distance-3)) + max_growth-- + if(at_fringe >= (spread_distance-2)) + max_growth-- + max_growth = max(1,max_growth) + if(growth_type > 0) + switch(growth_type) + if(1) + icon_state = "worms" + if(2) + icon_state = "vines-[growth]" + if(3) + icon_state = "mass-[growth]" + if(4) + icon_state = "mold-[growth]" + else + icon_state = "[seed.get_trait(TRAIT_PLANT_ICON)]-[growth]" + + if(growth>2 && growth == max_growth) + layer = 5 + opacity = 1 + if(!isnull(seed.chems["woodpulp"])) + density = 1 + else + layer = 3 + density = 0 + +/obj/effect/plant/proc/calc_dir(turf/location = loc) + set background = 1 + var/direction = 16 + + for(var/wallDir in cardinal) + var/turf/newTurf = get_step(location,wallDir) + if(newTurf.density) + direction |= wallDir + + for(var/obj/effect/plant/shroom in location) + if(shroom == src) + continue + if(shroom.floor) //special + direction &= ~16 + else + direction &= ~shroom.dir + + var/list/dirList = list() + + for(var/i=1,i<=16,i <<= 1) + if(direction & i) + dirList += i + + if(dirList.len) + var/newDir = pick(dirList) + if(newDir == 16) + floor = 1 + newDir = 1 + return newDir + + floor = 1 + return 1 + +/obj/effect/plant/attackby(var/obj/item/weapon/W, var/mob/user) + + plant_controller.add_plant(src) + + if(istype(W, /obj/item/weapon/wirecutters) || istype(W, /obj/item/weapon/scalpel)) + if(!seed) + user << "There is nothing to take a sample from." + return + seed.harvest(user,0,1) + health -= (rand(3,5)*10) + else + ..() + if(W.force) + health -= W.force + check_health() + +/obj/effect/plant/ex_act(severity) + switch(severity) + if(1.0) + die_off() + return + if(2.0) + if (prob(50)) + die_off() + return + if(3.0) + if (prob(5)) + die_off() + return + else + return + +/obj/effect/plant/proc/check_health() + if(health <= 0) + die_off() + +/obj/effect/plant/proc/is_mature() + return (health >= (max_health/3)) \ No newline at end of file diff --git a/code/modules/hydroponics/spreading/spreading_growth.dm b/code/modules/hydroponics/spreading/spreading_growth.dm new file mode 100644 index 00000000000..cdd06639a1c --- /dev/null +++ b/code/modules/hydroponics/spreading/spreading_growth.dm @@ -0,0 +1,106 @@ +#define NEIGHBOR_REFRESH_TIME 100 + +/obj/effect/plant/proc/get_cardinal_neighbors() + var/list/cardinal_neighbors = list() + for(var/check_dir in cardinal) + var/turf/simulated/T = get_step(get_turf(src), check_dir) + if(istype(T)) + cardinal_neighbors |= T + return cardinal_neighbors + +/obj/effect/plant/proc/update_neighbors() + // Update our list of valid neighboring turfs. + neighbors = list() + for(var/turf/simulated/floor in get_cardinal_neighbors()) + if(get_dist(parent, floor) > spread_distance) + continue + if((locate(/obj/effect/plant) in floor.contents) || (locate(/obj/effect/dead_plant) in floor.contents) ) + continue + if(floor.density) + if(!isnull(seed.chems["pacid"])) + spawn(rand(5,25)) floor.ex_act(3) + continue + if(!Adjacent(floor) || !floor.Enter(src)) + continue + neighbors |= floor + // Update all of our friends. + var/turf/T = get_turf(src) + for(var/obj/effect/plant/neighbor in range(1,src)) + neighbor.neighbors -= T + +/obj/effect/plant/process() + + // Something is very wrong, kill ourselves. + if(!seed) + die_off() + return 0 + + /* MOVED INTO code\game\objects\effects\effect_system.dm + for(var/obj/effect/effect/smoke/chem/smoke in view(1, src)) + if(smoke.reagents.has_reagent("plantbgone")) + die_off() + return + */ + + // Handle life. + var/turf/simulated/T = get_turf(src) + if(istype(T)) + health -= seed.handle_environment(T,T.return_air(),null,1) + if(health < max_health) + health += rand(3,5) + refresh_icon() + if(health > max_health) + health = max_health + else if(health == max_health && !plant) + plant = new(T,seed) + plant.dir = src.dir + plant.transform = src.transform + plant.age = seed.get_trait(TRAIT_MATURATION)-1 + plant.update_icon() + if(growth_type==0) //Vines do not become invisible. + invisibility = INVISIBILITY_MAXIMUM + else + plant.layer = layer + 0.1 + + if(buckled_mob) + seed.do_sting(buckled_mob,src) + if(seed.get_trait(TRAIT_CARNIVOROUS)) + seed.do_thorns(buckled_mob,src) + + if(world.time >= last_tick+NEIGHBOR_REFRESH_TIME) + last_tick = world.time + update_neighbors() + + if(is_mature() && neighbors.len && prob(spread_chance)) + for(var/i=1,i<=seed.get_trait(TRAIT_YIELD),i++) + if(prob(spread_chance)) + sleep(rand(3,5)) + if(!neighbors.len) + break + var/turf/target_turf = pick(neighbors) + var/obj/effect/plant/child = new(get_turf(src),seed,parent) + spawn(1) // This should do a little bit of animation. + child.loc = target_turf + child.update_icon() + // Update neighboring squares. + for(var/obj/effect/plant/neighbor in range(1,target_turf)) + neighbor.neighbors -= target_turf + + // We shouldn't have spawned if the controller doesn't exist. + check_health() + if(neighbors.len || health != max_health) + plant_controller.add_plant(src) + +/obj/effect/plant/proc/die_off() + // Kill off our plant. + if(plant) plant.die() + // This turf is clear now, let our buddies know. + for(var/turf/simulated/check_turf in get_cardinal_neighbors()) + if(!istype(check_turf)) + continue + for(var/obj/effect/plant/neighbor in check_turf.contents) + neighbor.neighbors |= check_turf + plant_controller.add_plant(neighbor) + spawn(1) if(src) del(src) + +#undef NEIGHBOR_REFRESH_TIME \ No newline at end of file diff --git a/code/modules/hydroponics/spreading/spreading_response.dm b/code/modules/hydroponics/spreading/spreading_response.dm new file mode 100644 index 00000000000..d175fdda221 --- /dev/null +++ b/code/modules/hydroponics/spreading/spreading_response.dm @@ -0,0 +1,78 @@ +/obj/effect/plant/HasProximity(var/atom/movable/AM) + + if(!is_mature() || seed.get_trait(TRAIT_SPREAD) != 2) + return + + var/mob/living/M = AM + if(!istype(M)) + return + + if(!buckled_mob && !M.buckled && !M.anchored && (M.small || prob(round(seed.get_trait(TRAIT_POTENCY)/2)))) + entangle(M) + +/obj/effect/plant/attack_hand(mob/user as mob) + // Todo, cause damage. + manual_unbuckle(user) + +/obj/effect/plant/proc/trodden_on(var/mob/living/victim) + if(!is_mature()) + return + var/mob/living/carbon/human/H = victim + if(istype(H) && H.shoes) + return + seed.do_thorns(victim,src) + seed.do_sting(victim,src,pick("r_foot","l_foot","r_leg","l_leg")) + +/obj/effect/plant/proc/unbuckle() + if(buckled_mob) + if(buckled_mob.buckled == src) + buckled_mob.buckled = null + buckled_mob.anchored = initial(buckled_mob.anchored) + buckled_mob.update_canmove() + buckled_mob = null + return + +/obj/effect/plant/proc/manual_unbuckle(mob/user as mob) + if(buckled_mob) + if(prob(seed ? min(max(0,100 - seed.get_trait(TRAIT_POTENCY)/2),100) : 50)) + if(buckled_mob.buckled == src) + if(buckled_mob != user) + buckled_mob.visible_message(\ + "[user.name] frees [buckled_mob.name] from \the [src].",\ + "[user.name] frees you from \the [src].",\ + "You hear shredding and ripping.") + else + buckled_mob.visible_message(\ + "[buckled_mob.name] struggles free of \the [src].",\ + "You untangle \the [src] from around yourself.",\ + "You hear shredding and ripping.") + unbuckle() + else + var/text = pick("rip","tear","pull") + user.visible_message(\ + "[user.name] [text]s at \the [src].",\ + "You [text] at \the [src].",\ + "You hear shredding and ripping.") + return + +/obj/effect/plant/proc/entangle(var/mob/living/victim) + + if(buckled_mob) + return + + if(!Adjacent(victim)) + return + + victim.buckled = src + victim.update_canmove() + buckled_mob = victim + if(!victim.anchored && !victim.buckled && victim.loc != get_turf(src)) + var/can_grab = 1 + if(istype(victim, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = victim + if(istype(H.shoes, /obj/item/clothing/shoes/magboots) && (H.shoes.flags & NOSLIP)) + can_grab = 0 + if(can_grab) + src.visible_message("Tendrils lash out from \the [src] and drag \the [victim] in!") + victim.loc = src.loc + victim << "Tendrils [pick("wind", "tangle", "tighten")] around you!" diff --git a/code/game/machinery/hydroponics.dm b/code/modules/hydroponics/trays/tray.dm similarity index 53% rename from code/game/machinery/hydroponics.dm rename to code/modules/hydroponics/trays/tray.dm index d5fb43f4d97..958f69beee2 100644 --- a/code/game/machinery/hydroponics.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -1,14 +1,14 @@ -#define HYDRO_SPEED_MULTIPLIER 1 - /obj/machinery/portable_atmospherics/hydroponics name = "hydroponics tray" - icon = 'icons/obj/hydroponics.dmi' + icon = 'icons/obj/hydroponics_machines.dmi' icon_state = "hydrotray3" density = 1 anchored = 1 flags = OPENCONTAINER + volume = 100 - var/draw_warnings = 1 //Set to 0 to stop it from drawing the alert lights. + var/mechanical = 1 // Set to 0 to stop it from drawing the alert lights. + var/base_name = "tray" // Plant maintenance vars. var/waterlevel = 100 // Water level (max 100) @@ -16,17 +16,19 @@ var/nutrilevel = 10 // Nutrient level (max 10) var/maxnutri = 10 var/pestlevel = 0 // Pests (max 10) - var/weedlevel = 0 // Weeds (max 10)s + var/weedlevel = 0 // Weeds (max 10) // Tray state vars. var/dead = 0 // Is it dead? var/harvest = 0 // Is it ready to harvest? var/age = 0 // Current plant age + var/sampled = 0 // Have we taken a sample? // Harvest/mutation mods. var/yield_mod = 0 // Modifier to yield var/mutation_mod = 0 // Modifier to mutation chance var/toxins = 0 // Toxicity in the tray? + var/tray_light = 1 // Supplied lighting. // Mechanical concerns. var/health = 0 // Plant health. @@ -35,6 +37,8 @@ var/cycledelay = 150 // Delay per cycle. var/closed_system // If set, the tray will attempt to take atmos from a pipe. var/force_update // Set this to bypass the cycle time check. + var/obj/temp_chem_holder // Something to hold reagents during process_reagents() + var/labelled // Seed details/line data. var/datum/seed/seed = null // The currently planted seed @@ -46,12 +50,12 @@ // with cycle information under 'mechanical concerns' at some point. var/global/list/toxic_reagents = list( "charcoal" = -2, - "toxin" = 2, + "toxin" = 2, "fluorine" = 2.5, "chlorine" = 1.5, "sacid" = 1.5, "facid" = 3, - "atrazine" = 3, + "atrazine" = 3, "cryoxadone" = -3, "radium" = 2 ) @@ -76,7 +80,7 @@ "sugar" = 2, "sacid" = -2, "facid" = -4, - "atrazine" = -8, + "atrazine" = -8, "adminordrazine" = -5 ) var/global/list/pestkiller_reagents = list( @@ -89,7 +93,7 @@ "adminordrazine" = 1, "milk" = 0.9, "beer" = 0.7, - "flourine" = -0.5, + "fluorine" = -0.5, "chlorine" = -0.5, "phosphorus" = -0.5, "water" = 1, @@ -98,22 +102,23 @@ // Beneficial reagents also have values for modifying yield_mod and mut_mod (in that order). var/global/list/beneficial_reagents = list( - "beer" = list( -0.05, 0, 0 ), - "fluorine" = list( -2, 0, 0 ), - "chlorine" = list( -1, 0, 0 ), - "phosphorus" = list( -0.75, 0, 0 ), - "sodawater" = list( 0.1, 0, 0 ), - "sacid" = list( -1, 0, 0 ), - "facid" = list( -2, 0, 0 ), - "atrazine" = list( -2, 0, 0.2 ), - "cryoxadone" = list( 3, 0, 0 ), - "ammonia" = list( 0.5, 0, 0 ), - "diethylamine" = list( 1, 0, 0 ), - "nutriment" = list( 0.25, 0.15, 0 ), - "radium" = list( -1.5, 0, 0.2 ), - "adminordrazine" = list( 1, 1, 1 ), - "robustharvest" = list( 0, 0.2, 0 ), - "left4zed" = list( 0, 0, 0.2 ) + // "reagent" = list(health, yield_Mod, mut_mod), + "beer" = list( -0.05, 0, 0 ), + "fluorine" = list( -2, 0, 0 ), + "chlorine" = list( -1, 0, 0 ), + "phosphorus" = list( -0.75, 0, 0 ), + "sodawater" = list( 0.1, 0, 0 ), + "sacid" = list( -1, 0, 0 ), + "facid" = list( -2, 0, 0 ), + "atrazine" = list( -2, 0, 0.2), + "cryoxadone" = list( 3, 0, 0 ), + "ammonia" = list( 0.5, 0, 0 ), + "diethylamine" = list( 1, 0, 0 ), + "nutriment" = list( 0.25, 0.15, 0 ), + "radium" = list( -1.5, 0, 0.2), + "adminordrazine" = list( 1, 1, 1 ), + "robustharvest" = list( 0, 0.2, 0 ), + "left4zed" = list( 0, 0, 0.2) ) //--FalseIncarnate @@ -126,6 +131,31 @@ ) //--FalseIncarnate +/obj/machinery/portable_atmospherics/hydroponics/AltClick() + if(mechanical && !usr.stat && !usr.lying && Adjacent(usr)) + close_lid(usr) + return + return ..() + +/obj/machinery/portable_atmospherics/hydroponics/proc/attack_generic(var/mob/user) + if(istype(user,/mob/living/carbon/monkey/diona)) + var/mob/living/carbon/monkey/diona/nymph = user + + if(nymph.stat == DEAD || nymph.paralysis || nymph.weakened || nymph.stunned || nymph.restrained()) + return + + if(weedlevel > 0) + nymph.reagents.add_reagent("nutriment", weedlevel) + weedlevel = 0 + nymph.visible_message("[nymph] begins rooting through [src], ripping out weeds and eating them noisily.","You begin rooting through [src], ripping out weeds and eating them noisily.") + else if(nymph.nutrition > 100 && nutrilevel < 10) + nymph.nutrition -= ((10-nutrilevel)*5) + nutrilevel = 10 + nymph.visible_message("[nymph] secretes a trickle of green liquid, refilling [src].","You secrete a trickle of green liquid, refilling [src].") + else + nymph.visible_message("[nymph] rolls around in [src] for a bit.","You roll around in [src] for a bit.") + return + /obj/machinery/portable_atmospherics/hydroponics/New() ..() @@ -136,6 +166,9 @@ component_parts += new /obj/item/weapon/stock_parts/console_screen(src) RefreshParts() + temp_chem_holder = new() + temp_chem_holder.create_reagents(10) + create_reagents(200) connect() update_icon() @@ -163,7 +196,7 @@ /obj/machinery/portable_atmospherics/hydroponics/bullet_act(var/obj/item/projectile/Proj) //Don't act on seeds like dionaea that shouldn't change. - if(seed && seed.immutable > 0) + if(seed && seed.get_trait(TRAIT_IMMUTABLE) > 0) return //--FalseIncarnate @@ -186,162 +219,17 @@ else return 0 -/obj/machinery/portable_atmospherics/hydroponics/process() - - //Do this even if we're not ready for a plant cycle. - process_reagents() - - // Update values every cycle rather than every process() tick. - if(force_update) - force_update = 0 - else if(world.time < (lastcycle + cycledelay)) - return - lastcycle = world.time - - // Weeds like water and nutrients, there's a chance the weed population will increase. - // Bonus chance if the tray is unoccupied. - if(waterlevel > 10 && nutrilevel > 2 && prob(isnull(seed) ? 6 : 3)) - weedlevel += 1 * HYDRO_SPEED_MULTIPLIER - - // There's a chance for a weed explosion to happen if the weeds take over. - // Plants that are themselves weeds (weed_tolernace > 10) are unaffected. - if (weedlevel >= 10 && prob(10)) - if(!seed || weedlevel >= seed.weed_tolerance) - weed_invasion() - - // If there is no seed data (and hence nothing planted), - // or the plant is dead, process nothing further. - if(!seed || dead) - return - - // Advance plant age. - if(prob(25)) age += 1 * HYDRO_SPEED_MULTIPLIER - - //Highly mutable plants have a chance of mutating every tick. - if(seed.immutable == -1) - var/mut_prob = rand(1,100) - if(mut_prob <= 5) mutate(mut_prob == 1 ? 2 : 1) - - // Maintain tray nutrient and water levels. - if(seed.nutrient_consumption > 0 && nutrilevel > 0 && prob(25)) - nutrilevel -= max(0,seed.nutrient_consumption * HYDRO_SPEED_MULTIPLIER) - if(seed.water_consumption > 0 && waterlevel > 0 && prob(25)) - waterlevel -= max(0,seed.water_consumption * HYDRO_SPEED_MULTIPLIER) - - // Make sure the plant is not starving or thirsty. Adequate - // water and nutrients will cause a plant to become healthier. - var/healthmod = rand(1,3) * HYDRO_SPEED_MULTIPLIER - if(seed.requires_nutrients && prob(35)) - health += (nutrilevel < 2 ? -healthmod : healthmod) - if(seed.requires_water && prob(35)) - health += (waterlevel < 10 ? -healthmod : healthmod) - - // Check that pressure, heat and light are all within bounds. - // First, handle an open system or an unconnected closed system. - - var/turf/T = loc - var/datum/gas_mixture/environment - - // If we're closed, take from our internal sources. - if(closed_system && (connected_port || holding)) - environment = air_contents - - // If atmos input is not there, grab from turf. - if(!environment) - if(istype(T)) - environment = T.return_air() - - if(!environment) return - -/* - // Handle gas consumption. - if(seed.consume_gasses && seed.consume_gasses.len) - var/missing_gas = 0 - for(var/gas in seed.consume_gasses) - if(environment && environment.gas && environment.gas[gas] && \ - environment.gas[gas] >= seed.consume_gasses[gas]) - environment.adjust_gas(gas,-seed.consume_gasses[gas],1) - else - missing_gas++ - - if(missing_gas > 0) - health -= missing_gas * HYDRO_SPEED_MULTIPLIER - - // Process it. - var/pressure = environment.return_pressure() - if(pressure < seed.lowkpa_tolerance || pressure > seed.highkpa_tolerance) - health -= healthmod - - if(abs(environment.temperature - seed.ideal_heat) > seed.heat_tolerance) - health -= healthmod - - // Handle gas production. - if(seed.exude_gasses && seed.exude_gasses.len) - for(var/gas in seed.exude_gasses) - environment.adjust_gas(gas, max(1,round((seed.exude_gasses[gas]*seed.potency)/seed.exude_gasses.len))) - -*/ - - // Handle light requirements. - var/area/A = T.loc - if(A) - var/light_available - if(A.lighting_use_dynamic) - light_available = max(0,min(10,T.lighting_lumcount)-5) - else - light_available = 5 - if(abs(light_available - seed.ideal_light) > seed.light_tolerance) - health -= healthmod - - // Toxin levels beyond the plant's tolerance cause damage, but - // toxins are sucked up each tick and slowly reduce over time. - if(toxins > 0) - var/toxin_uptake = max(1,round(toxins/10)) - if(toxins > seed.toxins_tolerance) - health -= toxin_uptake - toxins -= toxin_uptake - - // Check for pests and weeds. - // Some carnivorous plants happily eat pests. - if(pestlevel > 0) - if(seed.carnivorous) - health += HYDRO_SPEED_MULTIPLIER - pestlevel -= HYDRO_SPEED_MULTIPLIER - else if (pestlevel >= seed.pest_tolerance) - health -= HYDRO_SPEED_MULTIPLIER - - // Some plants thrive and live off of weeds. - if(weedlevel > 0) - if(seed.parasite) - health += HYDRO_SPEED_MULTIPLIER - weedlevel -= HYDRO_SPEED_MULTIPLIER - else if (weedlevel >= seed.weed_tolerance) - health -= HYDRO_SPEED_MULTIPLIER - - // Handle life and death. - // If the plant is too old, it loses health fast. - if(age > seed.lifespan) - health -= rand(3,5) * HYDRO_SPEED_MULTIPLIER - - // When the plant dies, weeds thrive and pests die off. - if(health <= 0) - dead = 1 - harvest = 0 - weedlevel += 1 * HYDRO_SPEED_MULTIPLIER - pestlevel = 0 - - // If enough time (in cycles, not ticks) has passed since the plant was harvested, we're ready to harvest again. - else if(seed.products && seed.products.len && age > seed.production && \ - (age - lastproduce) > seed.production && (!harvest && !dead)) - harvest = 1 - lastproduce = age - - if(prob(3)) // On each tick, there's a chance the pest population will increase - pestlevel += 1 * HYDRO_SPEED_MULTIPLIER - +/obj/machinery/portable_atmospherics/hydroponics/proc/check_health() + if(seed && !dead && health <= 0) + die() check_level_sanity() update_icon() - return + +/obj/machinery/portable_atmospherics/hydroponics/proc/die() + dead = 1 + harvest = 0 + weedlevel += 1 * HYDRO_SPEED_MULTIPLIER + pestlevel = 0 //Process reagents being input into the tray. /obj/machinery/portable_atmospherics/hydroponics/proc/process_reagents() @@ -351,8 +239,16 @@ if(reagents.total_volume <= 0) return - for(var/datum/reagent/R in reagents.reagent_list) +/* I have plans for this at a later date, so it's just being commented out for now --FalseIncarnate + reagents.trans_to(temp_chem_holder, min(reagents.total_volume,rand(1,3))) + + for(var/datum/reagent/R in temp_chem_holder.reagents.reagent_list) + + var/reagent_total = temp_chem_holder.reagents.get_reagent_amount(R.id) +*/ + + for(var/datum/reagent/R in reagents.reagent_list) var/reagent_total = reagents.get_reagent_amount(R.id) @@ -361,14 +257,14 @@ if(toxic_reagents[R.id]) toxins += toxic_reagents[R.id] * reagent_total if(weedkiller_reagents[R.id]) - weedlevel += weedkiller_reagents[R.id] * reagent_total + weedlevel -= weedkiller_reagents[R.id] * reagent_total if(pestkiller_reagents[R.id]) pestlevel += pestkiller_reagents[R.id] * reagent_total // Beneficial reagents have a few impacts along with health buffs. if(beneficial_reagents[R.id]) - health += beneficial_reagents[R.id][1] * reagent_total - yield_mod = min(100, yield_mod + (beneficial_reagents[R.id][2] * reagent_total)) + health += beneficial_reagents[R.id][1] * reagent_total + yield_mod = min(100, yield_mod + (beneficial_reagents[R.id][2] * reagent_total)) mutation_mod += beneficial_reagents[R.id][3] * reagent_total // Mutagen is distinct from the previous types and mostly has a chance of proccing a mutation. @@ -392,7 +288,7 @@ //--FalseIncarnate - // Handle nutrient refilling + // Handle nutrient refilling. if(nutrient_reagents[R.id]) nutrilevel += nutrient_reagents[R.id] * reagent_total @@ -403,42 +299,43 @@ water_added += water_input waterlevel += water_input + // Water dilutes toxin level. if(water_added > 0) toxins -= round(water_added/4) +// temp_chem_holder.reagents.clear_reagents() reagents.clear_reagents() - check_level_sanity() - update_icon() + check_health() //Harvests the product of a plant. /obj/machinery/portable_atmospherics/hydroponics/proc/harvest(var/mob/user) //Harvest the product of the plant, - if(!seed || !harvest || !user) + if(!seed || !harvest) return if(closed_system) - user << "You can't harvest from the plant while the lid is shut." + if(user) user << "You can't harvest from the plant while the lid is shut." return - seed.harvest(user,yield_mod) - //Increases harvest count for round-end score - //Currently per-plant (not per-item) harvested - // --FalseIncarnate - score_stuffharvested++ + if(user) + seed.harvest(user,yield_mod) + else + seed.harvest(get_turf(src),yield_mod) // Reset values. harvest = 0 lastproduce = age - if(!seed.harvest_repeat) + if(!seed.get_trait(TRAIT_HARVEST_REPEAT)) yield_mod = 0 seed = null dead = 0 age = 0 + sampled = 0 + mutation_mod = 0 - check_level_sanity() - update_icon() + check_health() return //Clears out a dead plant. @@ -451,101 +348,36 @@ seed = null dead = 0 - user << "You remove the dead plant from the [src]." - check_level_sanity() - update_icon() + sampled = 0 + age = 0 + yield_mod = 0 + mutation_mod = 0 + + user << "You remove the dead plant." + check_health() return -//Refreshes the icon and sets the luminosity -/obj/machinery/portable_atmospherics/hydroponics/update_icon() - - overlays.Cut() - - // Updates the plant overlay. - if(!isnull(seed)) - - if(draw_warnings && health <= (seed.endurance / 2)) - overlays += "over_lowhealth3" - - if(dead) - overlays += "[seed.plant_icon]-dead" - else if(harvest) - overlays += "[seed.plant_icon]-harvest" - else if(age < seed.maturation) - - var/t_growthstate - if(age >= seed.maturation) - t_growthstate = seed.growth_stages - else - t_growthstate = round(seed.maturation / seed.growth_stages) - - overlays += "[seed.plant_icon]-grow[t_growthstate]" - lastproduce = age - else - overlays += "[seed.plant_icon]-grow[seed.growth_stages]" - - //Draw the cover. - if(closed_system) - overlays += "hydrocover" - - //Updated the various alert icons. - if(draw_warnings) - if(waterlevel <= 10) - overlays += "over_lowwater3" - if(nutrilevel <= 2) - overlays += "over_lownutri3" - if(weedlevel >= 5 || pestlevel >= 5 || toxins >= 40) - overlays += "over_alert3" - if(harvest) - overlays += "over_harvest3" - - // Update bioluminescence. - if(seed) - if(seed.biolum) - SetLuminosity(round(seed.potency/10)) - if(seed.biolum_colour) - l_color = seed.biolum_colour - else - l_color = null - return - - SetLuminosity(0) - return - - // If a weed growth is sufficient, this proc is called. +// If a weed growth is sufficient, this proc is called. /obj/machinery/portable_atmospherics/hydroponics/proc/weed_invasion() //Remove the seed if something is already planted. if(seed) seed = null - seed = seed_types[pick(list("reishi","nettles","amanita","mushrooms","plumphelmet","towercap","harebells","weeds"))] + seed = plant_controller.seeds[pick(list("reishi","nettles","amanita","mushrooms","plumphelmet","towercap","harebells","weeds"))] if(!seed) return //Weed does not exist, someone fucked up. dead = 0 age = 0 - health = seed.endurance + health = seed.get_trait(TRAIT_ENDURANCE) lastcycle = world.time harvest = 0 weedlevel = 0 pestlevel = 0 + sampled = 0 update_icon() - visible_message("\blue [src] has been overtaken by [seed.display_name].") + visible_message("[src] has been overtaken by [seed.display_name].") return -/obj/machinery/portable_atmospherics/hydroponics/proc/check_level_sanity() - //Make sure various values are sane. - if(seed) - health = max(0,min(seed.endurance,health)) - else - health = 0 - dead = 0 - - nutrilevel = max(0,min(nutrilevel,maxnutri)) - waterlevel = max(0,min(waterlevel,maxwater)) - pestlevel = max(0,min(pestlevel,10)) - weedlevel = max(0,min(weedlevel,10)) - toxins = max(0,min(toxins,10)) - /obj/machinery/portable_atmospherics/hydroponics/proc/mutate(var/severity) // No seed, no mutations. @@ -561,20 +393,19 @@ Tier 4 has a higher chance of causing a species shift (if possible), and will ALWAYS cause a stat mutation if it does not shift species Tier 4 also has a low chance to cause a SECOND stat mutation when it does not shift species All mutation chances are increased by the mutation_mod value. Mutation_mod is not transferred into seeds/harvests, and is reset when the plant dies - */ switch(severity) //Reagent Tiers if(1) //Tier 1 if(prob(20+mutation_mod)) //Low chance of stat mutation - if(!isnull(seed_types[seed.name])) + if(!isnull(plant_controller.seeds[seed.name])) seed = seed.diverge() seed.mutate(1,get_turf(src)) return if(2) //Tier 2 if(prob(60+mutation_mod)) //Higher chance of stat mutation - if(!isnull(seed_types[seed.name])) + if(!isnull(plant_controller.seeds[seed.name])) seed = seed.diverge() seed.mutate(1,get_turf(src)) return @@ -583,12 +414,12 @@ if(seed.mutants. && seed.mutants.len) //Check if current seed/plant has mutant species mutate_species() else //No mutant species, mutate stats instead - if(!isnull(seed_types[seed.name])) + if(!isnull(plant_controller.seeds[seed.name])) seed = seed.diverge() seed.mutate(1,get_turf(src)) return else //Failed to shift, mutate stats instead - if(!isnull(seed_types[seed.name])) + if(!isnull(plant_controller.seeds[seed.name])) seed = seed.diverge() seed.mutate(1,get_turf(src)) return @@ -597,38 +428,38 @@ if(seed.mutants. && seed.mutants.len) //Check if current seed/plant has mutant species mutate_species() else //No mutant species, mutate stats instead - if(!isnull(seed_types[seed.name])) + if(!isnull(plant_controller.seeds[seed.name])) seed = seed.diverge() seed.mutate(1,get_turf(src)) if(prob(20+mutation_mod)) //Low chance for second stat mutation - if(!isnull(seed_types[seed.name])) + if(!isnull(plant_controller.seeds[seed.name])) seed = seed.diverge() seed.mutate(1,get_turf(src)) return else //Failed to shift, mutate stats instead - if(!isnull(seed_types[seed.name])) + if(!isnull(plant_controller.seeds[seed.name])) seed = seed.diverge() seed.mutate(1,get_turf(src)) if(prob(20+mutation_mod)) //Low chance for second stat mutation - if(!isnull(seed_types[seed.name])) + if(!isnull(plant_controller.seeds[seed.name])) seed = seed.diverge() seed.mutate(1,get_turf(src)) return //Floral Somatoray Tiers if("F1") //Random Stat Tier if(prob(80+mutation_mod)) //EVEN Higher chance of stat mutation - if(!isnull(seed_types[seed.name])) + if(!isnull(plant_controller.seeds[seed.name])) seed = seed.diverge() seed.mutate(1,get_turf(src)) return if("F2") //Yield Tier if(prob(40+mutation_mod)) //Medium chance of Yield stat mutation - if(!isnull(seed_types[seed.name])) + if(!isnull(plant_controller.seeds[seed.name])) seed = seed.diverge() - if(seed.immutable <= 0 && seed.yield != -1) //Check if the plant can be mutated and has a yield to mutate - seed.yield = seed.yield + rand(-2, 2) //Randomly adjust yield - if(seed.yield < 0) //If yield would drop below 0 after adjustment, set to 0 to allow further attempts - seed.yield = 0 + if(seed.get_trait(TRAIT_IMMUTABLE) <= 0 && seed.get_trait(TRAIT_YIELD) != -1) //Check if the plant can be mutated and has a yield to mutate + seed.set_trait(TRAIT_YIELD, (seed.get_trait(TRAIT_YIELD) + rand(-2, 2))) //Randomly adjust yield + if(seed.get_trait(TRAIT_YIELD) < 0) //If yield would drop below 0 after adjustment, set to 0 to allow further attempts + seed.set_trait(TRAIT_YIELD, 0) return /* code references @@ -642,19 +473,57 @@ //--FalseIncarnate +/obj/machinery/portable_atmospherics/hydroponics/verb/remove_label() + + set name = "Remove Label" + set category = "Object" + set src in view(1) + + if(labelled) + usr << "You remove the label." + labelled = null + update_icon() + else + usr << "There is no label to remove." + return + +/obj/machinery/portable_atmospherics/hydroponics/verb/set_light() + set name = "Set Light" + set category = "Object" + set src in view(1) + + var/new_light = input("Specify a light level.") as null|anything in list(0,1,2,3,4,5,6,7,8,9,10) + if(new_light) + tray_light = new_light + usr << "You set the tray to a light level of [tray_light] lumens." + +/obj/machinery/portable_atmospherics/hydroponics/proc/check_level_sanity() + //Make sure various values are sane. + if(seed) + health = max(0,min(seed.get_trait(TRAIT_ENDURANCE),health)) + else + health = 0 + dead = 0 + + nutrilevel = max(0,min(nutrilevel,10)) + waterlevel = max(0,min(waterlevel,100)) + pestlevel = max(0,min(pestlevel,10)) + weedlevel = max(0,min(weedlevel,10)) + toxins = max(0,min(toxins,10)) + /obj/machinery/portable_atmospherics/hydroponics/proc/mutate_species() var/previous_plant = seed.display_name var/newseed = seed.get_mutant_variant() - if(newseed in seed_types) - seed = seed_types[newseed] + if(newseed in plant_controller.seeds) + seed = plant_controller.seeds[newseed] else return dead = 0 //mutate(1) age = 0 - health = seed.endurance + health = seed.get_trait(TRAIT_ENDURANCE) lastcycle = world.time harvest = 0 weedlevel = 0 @@ -664,7 +533,8 @@ return -/obj/machinery/portable_atmospherics/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob, params) + +/obj/machinery/portable_atmospherics/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) if(exchange_parts(user, O)) return @@ -692,35 +562,32 @@ process_reagents() update_icon() - //Check if container is one of the botany sprays (defined in hydro_tools.dm) + //Check if container is one of the plantsprays (defined in tray_reagents.dm) else if(istype(O, /obj/item/weapon/plantspray)) - //Check if spray is pest-spray - if(istype(O, /obj/item/weapon/plantspray/pests)) - var/obj/item/weapon/plantspray/P = O - user.drop_item(O) - toxins += P.toxicity - pestlevel -= P.pest_kill_str - weedlevel -= P.weed_kill_str - user << "You spray [src] with [O]." - playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6) - del(O) + var/obj/item/weapon/plantspray/P = O + user.drop_item(O) + toxins += P.toxicity + pestlevel -= P.pest_kill_str + weedlevel -= P.weed_kill_str + user << "You spray [src] with [O]." + playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6) + del(O) - check_level_sanity() - update_icon() + check_level_sanity() + update_icon() - //Check if spray is weed-spray (un-obtainable, fixed for possible repurposing?) - else if(istype(O, /obj/item/weapon/plantspray/weeds)) - var/obj/item/weapon/plantspray/W = O - user.drop_item(O) - toxins += W.toxicity - pestlevel -= W.pest_kill_str - weedlevel -= W.weed_kill_str - user << "You spray [src] with [O]." - playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6) - del(O) + //Check if spray is weedkiller (defined in tray_reagents.dm, un-obtainable currently) + else if(istype(O, /obj/item/weedkiller)) + var/obj/item/weedkiller/W = O + user.drop_item(O) + toxins += W.toxicity + weedlevel -= W.weed_kill_str + user << "You spray [src] with [O]." + playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6) + del(O) - check_level_sanity() - update_icon() + check_level_sanity() + update_icon() //Check if container is any spray container else if (istype(O, /obj/item/weapon/reagent_containers/spray)) @@ -739,35 +606,47 @@ else user << "There's nothing in [src] to spray!" - else if(istype(O, /obj/item/weapon/screwdriver) && unwrenchable) //THIS NEED TO BE DONE DIFFERENTLY, SOMEONE REFACTOR THE TRAY CODE ALREADY - if(anchored) - if(anchored == 2) - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - anchored = 1 - user << "You unscrew the [src]'s hoses." - panel_open = 0 + else if(istype(O, /obj/item/weapon/screwdriver) && unwrenchable) //THIS NEED TO BE DONE DIFFERENTLY, SOMEONE REFACTOR THE TRAY CODE ALREADY + if(anchored) + if(anchored == 2) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + anchored = 1 + user << "You unscrew the [src]'s hoses." + panel_open = 0 - else if(anchored == 1) - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - anchored = 2 - user << "You screw in the [src]'s hoses." - panel_open = 1 + else if(anchored == 1) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + anchored = 2 + user << "You screw in the [src]'s hoses." + panel_open = 1 - for(var/obj/machinery/portable_atmospherics/hydroponics/h in range(1,src)) - spawn() - h.update_icon() + for(var/obj/machinery/portable_atmospherics/hydroponics/h in range(1,src)) + spawn() + h.update_icon() - //Held item is not an open container, check to see if it can be used (this code was already here) --FalseIncarnate if(istype(O, /obj/item/weapon/wirecutters) || istype(O, /obj/item/weapon/scalpel)) if(!seed) user << "There is nothing to take a sample from in \the [src]." return - seed.harvest(user,yield_mod,1) - health -= (rand(1,5)*10) - check_level_sanity() + if(sampled) + user << "You have already sampled from this plant." + return + if(dead) + user << "The plant is dead." + return + + // Create a sample. + seed.harvest(user,yield_mod,1) + health -= (rand(3,5)*10) + + if(prob(30)) + sampled = 1 + + // Bookkeeping. + check_health() force_update = 1 process() @@ -781,14 +660,14 @@ if(seed) return ..() else - user << "There's no plant in the tray to inject." + user << "There's no plant to inject." return 1 else if(seed) //Leaving this in in case we want to extract from plants later. user << "You can't get any extract out of this plant." else - user << "There's nothing in the tray to draw something from." + user << "There's nothing to draw something from." return 1 else if (istype(O, /obj/item/seeds)) @@ -804,42 +683,28 @@ return user << "You plant the [S.seed.seed_name] [S.seed.seed_noun]." - - if(S.seed.spread == 1) - msg_admin_attack("[key_name(user)][isAntag(user) ? "(ANTAG)" : ""] has planted a creeper packet.") - var/obj/effect/plant_controller/creeper/PC = new(get_turf(src)) - if(PC) - PC.seed = S.seed - else if(S.seed.spread == 2) - msg_admin_attack("[key_name(user)][isAntag(user) ? "(ANTAG)" : ""] has planted a spreading vine packet.") - var/obj/effect/plant_controller/PC = new(get_turf(src)) - if(PC) - PC.seed = S.seed - else - seed = S.seed //Grab the seed datum. - dead = 0 - age = 1 - //Snowflakey, maybe move this to the seed datum - health = (istype(S, /obj/item/seeds/cutting) ? round(seed.endurance/rand(2,5)) : seed.endurance) - - lastcycle = world.time + seed = S.seed //Grab the seed datum. + dead = 0 + age = 1 + //Snowflakey, maybe move this to the seed datum + health = (istype(S, /obj/item/seeds/cutting) ? round(seed.get_trait(TRAIT_ENDURANCE)/rand(2,5)) : seed.get_trait(TRAIT_ENDURANCE)) + lastcycle = world.time del(O) - check_level_sanity() - update_icon() + check_health() else - user << "\red \The [src] already has seeds in it!" + user << "\The [src] already has seeds in it!" else if (istype(O, /obj/item/weapon/minihoe)) // The minihoe - //var/deweeding + if(weedlevel > 0) - user.visible_message("\red [user] starts uprooting the weeds.", "\red You remove the weeds from the [src].") + user.visible_message("[user] starts uprooting the weeds.", "You remove the weeds from the [src].") weedlevel = 0 update_icon() else - user << "\red This plot is completely devoid of weeds. It doesn't need uprooting." + user << "This plot is completely devoid of weeds. It doesn't need uprooting." else if (istype(O, /obj/item/weapon/storage/bag/plants)) @@ -851,7 +716,7 @@ return S.handle_item_insertion(G, 1) - else if(istype(O, /obj/item/weapon/wrench)) + else if(mechanical && istype(O, /obj/item/weapon/wrench)) //If there's a connector here, the portable_atmospherics setup can handle it. if(locate(/obj/machinery/atmospherics/portables_connector/) in loc) @@ -864,7 +729,7 @@ else if(istype(O, /obj/item/apiary)) if(seed) - user << "\red [src] is already occupied!" + user << "[src] is already occupied!" else user.drop_item() del(O) @@ -874,15 +739,18 @@ A.icon_state = src.icon_state A.hydrotray_type = src.type del(src) + else if(O && O.force && seed) + user.visible_message("\The [seed.display_name] has been attacked by [user] with \the [O]!") + if(!dead) + health -= O.force + check_health() return /obj/machinery/portable_atmospherics/hydroponics/attack_tk(mob/user as mob) - - if(harvest) - harvest(user) - - else if(dead) + if(dead) remove_dead(user) + else if(harvest) + harvest(user) /obj/machinery/portable_atmospherics/hydroponics/attack_hand(mob/user as mob) @@ -894,35 +762,50 @@ else if(dead) remove_dead(user) - else - if(seed && !dead) - usr << "[src] has \blue [seed.display_name] \black planted." - if(health <= (seed.endurance / 2)) - usr << "The plant looks \red unhealthy." +/obj/machinery/portable_atmospherics/hydroponics/examine() + + ..() + + if(!seed) + usr << "[src] is empty." + return + + usr << "[seed.display_name] are growing here." + + if(!Adjacent(usr)) + return + + usr << "Water: [round(waterlevel,0.1)]/100" + usr << "Nutrient: [round(nutrilevel,0.1)]/10" + + if(weedlevel >= 5) + usr << "\The [src] is infested with weeds!" + if(pestlevel >= 5) + usr << "\The [src] is infested with tiny worms!" + + if(dead) + usr << "The plant is dead." + else if(health <= (seed.get_trait(TRAIT_ENDURANCE)/ 2)) + usr << "The plant looks unhealthy." + + if(mechanical) + var/turf/T = loc + var/datum/gas_mixture/environment + + if(closed_system && (connected_port || holding)) + environment = air_contents + + if(!environment) + if(istype(T)) + environment = T.return_air() + + if(!environment) //We're in a crate or nullspace, bail out. + return + + var/light_string + if(closed_system && mechanical) + light_string = "that the internal lights are set to [tray_light] lumens" else - usr << "[src] is empty." - usr << "Water: [round(waterlevel,0.1)]/[maxwater]" - usr << "Nutrient: [round(nutrilevel,0.1)]/[maxnutri]" - if(weedlevel >= 5) - usr << "[src] is \red filled with weeds!" - if(pestlevel >= 5) - usr << "[src] is \red filled with tiny worms!" - - if(!istype(src,/obj/machinery/portable_atmospherics/hydroponics/soil)) - - var/turf/T = loc - var/datum/gas_mixture/environment - - if(closed_system && (connected_port || holding)) - environment = air_contents - - if(!environment) - if(istype(T)) - environment = T.return_air() - - if(!environment) //We're in a crate or nullspace, bail out. - return - var/area/A = T.loc var/light_available if(A) @@ -930,45 +813,20 @@ light_available = max(0,min(10,T.lighting_lumcount)-5) else light_available = 5 + light_string = "a light level of [light_available] lumens" - usr << "The tray's sensor suite is reporting a light level of [light_available] lumens and a temperature of [environment.temperature]K." + usr << "The tray's sensor suite is reporting [light_string] and a temperature of [environment.temperature]K." -/obj/machinery/portable_atmospherics/hydroponics/verb/close_lid() +/obj/machinery/portable_atmospherics/hydroponics/verb/close_lid_verb() set name = "Toggle Tray Lid" set category = "Object" set src in view(1) + close_lid(usr) - if(!usr || usr.stat || usr.restrained()) +/obj/machinery/portable_atmospherics/hydroponics/proc/close_lid(var/mob/living/user) + if(!user || user.stat || user.restrained()) return closed_system = !closed_system - usr << "You [closed_system ? "close" : "open"] the tray's lid." - if(closed_system) - flags &= ~OPENCONTAINER - else - flags |= OPENCONTAINER - + user << "You [closed_system ? "close" : "open"] the tray's lid." update_icon() - -/obj/machinery/portable_atmospherics/hydroponics/soil - name = "soil" - icon = 'icons/obj/hydroponics.dmi' - icon_state = "soil" - density = 0 - use_power = 0 - draw_warnings = 0 - -/obj/machinery/portable_atmospherics/hydroponics/soil/attackby(var/obj/item/O as obj, var/mob/user as mob, params) - if(istype(O, /obj/item/weapon/shovel)) - user << "You clear up [src]!" - del(src) - else if(istype(O,/obj/item/weapon/shovel) || istype(O,/obj/item/weapon/tank)) - return - else - ..() - -/obj/machinery/portable_atmospherics/hydroponics/soil/New() - ..() - verbs -= /obj/machinery/portable_atmospherics/hydroponics/verb/close_lid - -#undef HYDRO_SPEED_MULTIPLIER diff --git a/code/modules/hydroponics/trays/tray_apiary.dm b/code/modules/hydroponics/trays/tray_apiary.dm new file mode 100644 index 00000000000..f2098e7481c --- /dev/null +++ b/code/modules/hydroponics/trays/tray_apiary.dm @@ -0,0 +1,240 @@ +//http://www.youtube.com/watch?v=-1GadTfGFvU +//i could have done these as just an ordinary plant, but fuck it - there would have been too much snowflake code + +/obj/machinery/apiary + name = "apiary tray" + icon = 'icons/obj/hydroponics_machines.dmi' + icon_state = "hydrotray3" + density = 1 + anchored = 1 + var/nutrilevel = 0 + var/yieldmod = 1 + var/mut = 1 + var/toxic = 0 + var/dead = 0 + var/health = -1 + var/maxhealth = 100 + var/lastcycle = 0 + var/cycledelay = 100 + var/harvestable_honey = 0 + var/beezeez = 0 + var/swarming = 0 + + var/bees_in_hive = 0 + var/list/owned_bee_swarms = list() + var/hydrotray_type = /obj/machinery/portable_atmospherics/hydroponics + +//overwrite this after it's created if the apiary needs a custom machinery sprite +/obj/machinery/apiary/New() + ..() + overlays += image('icons/obj/apiary_bees_etc.dmi', icon_state="apiary") + +/obj/machinery/apiary/bullet_act(var/obj/item/projectile/Proj) //Works with the Somatoray to modify plant variables. + if(istype(Proj ,/obj/item/projectile/energy/floramut)) + mut++ + else if(istype(Proj ,/obj/item/projectile/energy/florayield)) + if(!yieldmod) + yieldmod += 1 + //world << "Yield increased by 1, from 0, to a total of [myseed.yield]" + else if (prob(1/(yieldmod * yieldmod) *100))//This formula gives you diminishing returns based on yield. 100% with 1 yield, decreasing to 25%, 11%, 6, 4, 2... + yieldmod += 1 + //world << "Yield increased by 1, to a total of [myseed.yield]" + else + ..() + return + +/obj/machinery/apiary/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(istype(O, /obj/item/queen_bee)) + if(health > 0) + user << "\red There is already a queen in there." + else + health = 10 + nutrilevel += 10 + user.drop_item() + del(O) + user << "\blue You carefully insert the queen into [src], she gets busy making a hive." + bees_in_hive = 0 + else if(istype(O, /obj/item/beezeez)) + beezeez += 100 + nutrilevel += 10 + user.drop_item() + if(health > 0) + user << "\blue You insert [O] into [src]. A relaxed humming appears to pick up." + else + user << "\blue You insert [O] into [src]. Now it just needs some bees." + del(O) + else if(istype(O, /obj/item/weapon/minihoe)) + if(health > 0) + user << "\red You begin to dislodge the apiary from the tray, the bees don't like that." + angry_swarm(user) + else + user << "\blue You begin to dislodge the dead apiary from the tray." + if(do_after(user, 50)) + new hydrotray_type(src.loc) + new /obj/item/apiary(src.loc) + user << "\red You dislodge the apiary from the tray." + del(src) + else if(istype(O, /obj/item/weapon/bee_net)) + var/obj/item/weapon/bee_net/N = O + if(N.caught_bees > 0) + user << "\blue You empty the bees into the apiary." + bees_in_hive += N.caught_bees + N.caught_bees = 0 + else + user << "\blue There are no more bees in the net." + else if(istype(O, /obj/item/weapon/reagent_containers/glass)) + var/obj/item/weapon/reagent_containers/glass/G = O + if(harvestable_honey > 0) + if(health > 0) + user << "\red You begin to harvest the honey. The bees don't seem to like it." + angry_swarm(user) + else + user << "\blue You begin to harvest the honey." + if(do_after(user,50)) + G.reagents.add_reagent("honey",harvestable_honey) + harvestable_honey = 0 + user << "\blue You successfully harvest the honey." + else + user << "\blue There is no honey left to harvest." + else + angry_swarm(user) + ..() + +/obj/machinery/apiary/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) + if(air_group || (height==0)) return 1 + + if(istype(mover) && mover.checkpass(PASSTABLE)) + return 1 + else + return 0 + +/obj/machinery/apiary/process() + + if(swarming > 0) + swarming -= 1 + if(swarming <= 0) + for(var/mob/living/simple_animal/bee/B in src.loc) + bees_in_hive += B.strength + del(B) + else if(bees_in_hive < 10) + for(var/mob/living/simple_animal/bee/B in src.loc) + bees_in_hive += B.strength + del(B) + + if(world.time > (lastcycle + cycledelay)) + lastcycle = world.time + if(health < 0) + return + + //magical bee formula + if(beezeez > 0) + beezeez -= 1 + + nutrilevel += 2 + health += 1 + toxic = max(0, toxic - 1) + + //handle nutrients + nutrilevel -= bees_in_hive / 10 + owned_bee_swarms.len / 5 + if(nutrilevel > 0) + bees_in_hive += 1 * yieldmod + if(health < maxhealth) + health++ + else + //nutrilevel is less than 1, so we're effectively subtracting here + health += max(nutrilevel - 1, round(-health / 2)) + bees_in_hive += max(nutrilevel - 1, round(-bees_in_hive / 2)) + if(owned_bee_swarms.len) + var/mob/living/simple_animal/bee/B = pick(owned_bee_swarms) + B.target_turf = get_turf(src) + + //clear out some toxins + if(toxic > 0) + toxic -= 1 + health -= 1 + + if(health <= 0) + return + + //make a bit of honey + if(harvestable_honey < 50) + harvestable_honey += 0.5 + + //make some new bees + if(bees_in_hive >= 10 && prob(bees_in_hive * 10)) + var/mob/living/simple_animal/bee/B = new(get_turf(src), src) + owned_bee_swarms.Add(B) + B.mut = mut + B.toxic = toxic + bees_in_hive -= 1 + + //find some plants, harvest + for(var/obj/machinery/portable_atmospherics/hydroponics/H in view(7, src)) + if(H.seed && !H.dead && prob(owned_bee_swarms.len * 10)) + src.nutrilevel++ + H.nutrilevel++ + if(mut < H.mutation_mod - 1) + mut = H.mutation_mod - 1 + else if(mut > H.mutation_mod - 1) + H.mutation_mod = mut + + //flowers give us pollen (nutrients) +/* - All plants should be giving nutrients to the hive. + if(H.myseed.type == /obj/item/seeds/harebell || H.myseed.type == /obj/item/seeds/sunflowerseed) + src.nutrilevel++ + H.nutrilevel++ +*/ + //have a few beneficial effects on nearby plants + if(prob(10)) + H.lastcycle -= 5 + if(prob(10)) + H.seed.set_trait(TRAIT_ENDURANCE,max(H.seed.get_trait(TRAIT_ENDURANCE)*1.5,H.seed.get_trait(TRAIT_ENDURANCE)+1)) + if(H.toxins && prob(10)) + H.toxins = min(0, H.toxins - 1) + toxic++ + +/obj/machinery/apiary/proc/die() + if(owned_bee_swarms.len) + var/mob/living/simple_animal/bee/B = pick(owned_bee_swarms) + B.target_turf = get_turf(src) + B.strength -= 1 + if(B.strength <= 0) + del(B) + else if(B.strength <= 5) + B.icon_state = "bees[B.strength]" + bees_in_hive = 0 + health = 0 + +/obj/machinery/apiary/proc/angry_swarm(var/mob/M) + for(var/mob/living/simple_animal/bee/B in owned_bee_swarms) + B.feral = 25 + B.target_mob = M + + swarming = 25 + + while(bees_in_hive > 0) + var/spawn_strength = bees_in_hive + if(bees_in_hive >= 5) + spawn_strength = 6 + + var/mob/living/simple_animal/bee/B = new(get_turf(src), src) + B.target_mob = M + B.strength = spawn_strength + B.feral = 25 + B.mut = mut + B.toxic = toxic + bees_in_hive -= spawn_strength + +/obj/machinery/apiary/verb/harvest_honeycomb() + set src in oview(1) + set name = "Harvest honeycomb" + set category = "Object" + + while(health > 15) + health -= 15 + var/obj/item/weapon/reagent_containers/food/snacks/honeycomb/H = new(src.loc) + if(toxic > 0) + H.reagents.add_reagent("toxin", toxic) + + usr << "\blue You harvest the honeycomb from the hive. There is a wild buzzing!" + angry_swarm(usr) diff --git a/code/modules/hydroponics/trays/tray_process.dm b/code/modules/hydroponics/trays/tray_process.dm new file mode 100644 index 00000000000..d16ca75cc97 --- /dev/null +++ b/code/modules/hydroponics/trays/tray_process.dm @@ -0,0 +1,124 @@ +/obj/machinery/portable_atmospherics/hydroponics/process() + + /* MOVED INTO code\game\objects\effects\effect_system.dm + // Handle nearby smoke if any. + for(var/obj/effect/effect/smoke/chem/smoke in view(1, src)) + if(smoke.reagents.total_volume) + smoke.reagents.copy_to(src, 5) + */ + + //Do this even if we're not ready for a plant cycle. + process_reagents() + + // Update values every cycle rather than every process() tick. + if(force_update) + force_update = 0 + else if(world.time < (lastcycle + cycledelay)) + return + lastcycle = world.time + + // Weeds like water and nutrients, there's a chance the weed population will increase. + // Bonus chance if the tray is unoccupied. + if(waterlevel > 10 && nutrilevel > 2 && prob(isnull(seed) ? 5 : 1)) + weedlevel += 1 * HYDRO_SPEED_MULTIPLIER + + // There's a chance for a weed explosion to happen if the weeds take over. + // Plants that are themselves weeds (weed_tolerance > 10) are unaffected. + if (weedlevel >= 10 && prob(10)) + if(!seed || weedlevel >= seed.get_trait(TRAIT_WEED_TOLERANCE)) + weed_invasion() + + // If there is no seed data (and hence nothing planted), + // or the plant is dead, process nothing further. + if(!seed || dead) + if(mechanical) update_icon() //Harvesting would fail to set alert icons properly. + return + + // Advance plant age. + if(prob(30)) age += 1 * HYDRO_SPEED_MULTIPLIER + + //Highly mutable plants have a chance of mutating every tick. + if(seed.get_trait(TRAIT_IMMUTABLE) == -1) + var/mut_prob = rand(1,100) + if(mut_prob <= 5) mutate(mut_prob == 1 ? 2 : 1) + + // Maintain tray nutrient and water levels. + if(seed.get_trait(TRAIT_NUTRIENT_CONSUMPTION) > 0 && nutrilevel > 0 && prob(25)) + nutrilevel -= max(0,seed.get_trait(TRAIT_NUTRIENT_CONSUMPTION) * HYDRO_SPEED_MULTIPLIER) + if(seed.get_trait(TRAIT_WATER_CONSUMPTION) > 0 && waterlevel > 0 && prob(25)) + waterlevel -= max(0,seed.get_trait(TRAIT_WATER_CONSUMPTION) * HYDRO_SPEED_MULTIPLIER) + + // Make sure the plant is not starving or thirsty. Adequate + // water and nutrients will cause a plant to become healthier. + var/healthmod = rand(1,3) * HYDRO_SPEED_MULTIPLIER + if(seed.get_trait(TRAIT_REQUIRES_NUTRIENTS) && prob(35)) + health += (nutrilevel < 2 ? -healthmod : healthmod) + if(seed.get_trait(TRAIT_REQUIRES_WATER) && prob(35)) + health += (waterlevel < 10 ? -healthmod : healthmod) + + // Check that pressure, heat and light are all within bounds. + // First, handle an open system or an unconnected closed system. + var/turf/T = loc + var/datum/gas_mixture/environment + // If we're closed, take from our internal sources. + if(closed_system && (connected_port || holding)) + environment = air_contents + // If atmos input is not there, grab from turf. + if(!environment && istype(T)) environment = T.return_air() + if(!environment) return + + // Seed datum handles gasses, light and pressure. + if(mechanical && closed_system) + health -= seed.handle_environment(T,environment,tray_light) + else + health -= seed.handle_environment(T,environment) + + // If we're attached to a pipenet, then we should let the pipenet know we might have modified some gasses + if (closed_system && connected_port) + update_connected_network() + + // Toxin levels beyond the plant's tolerance cause damage, but + // toxins are sucked up each tick and slowly reduce over time. + if(toxins > 0) + var/toxin_uptake = max(1,round(toxins/10)) + if(toxins > seed.get_trait(TRAIT_TOXINS_TOLERANCE)) + health -= toxin_uptake + toxins -= toxin_uptake + + // Check for pests and weeds. + // Some carnivorous plants happily eat pests. + if(pestlevel > 0) + if(seed.get_trait(TRAIT_CARNIVOROUS)) + health += HYDRO_SPEED_MULTIPLIER + pestlevel -= HYDRO_SPEED_MULTIPLIER + else if (pestlevel >= seed.get_trait(TRAIT_PEST_TOLERANCE)) + health -= HYDRO_SPEED_MULTIPLIER + + // Some plants thrive and live off of weeds. + if(weedlevel > 0) + if(seed.get_trait(TRAIT_PARASITE)) + health += HYDRO_SPEED_MULTIPLIER + weedlevel -= HYDRO_SPEED_MULTIPLIER + else if (weedlevel >= seed.get_trait(TRAIT_WEED_TOLERANCE)) + health -= HYDRO_SPEED_MULTIPLIER + + // Handle life and death. + // When the plant dies, weeds thrive and pests die off. + check_health() + + // If enough time (in cycles, not ticks) has passed since the plant was harvested, we're ready to harvest again. + if((age > seed.get_trait(TRAIT_MATURATION)) && \ + ((age - lastproduce) > seed.get_trait(TRAIT_PRODUCTION)) && \ + (!harvest && !dead)) + harvest = 1 + lastproduce = age + + if(prob(3)) // On each tick, there's a chance the pest population will increase + pestlevel += 0.1 * HYDRO_SPEED_MULTIPLIER + + // Some seeds will self-harvest if you don't keep a lid on them. + if(seed && seed.can_self_harvest && harvest && !closed_system && prob(5)) + harvest() + + check_health() + return diff --git a/code/modules/hydroponics/trays/tray_reagents.dm b/code/modules/hydroponics/trays/tray_reagents.dm new file mode 100644 index 00000000000..5e5cb819b98 --- /dev/null +++ b/code/modules/hydroponics/trays/tray_reagents.dm @@ -0,0 +1,126 @@ + +/obj/item/weapon/plantspray + icon = 'icons/obj/hydroponics_machines.dmi' + item_state = "spray" + flags = OPENCONTAINER | NOBLUDGEON + slot_flags = SLOT_BELT + throwforce = 4 + w_class = 2.0 + throw_speed = 2 + throw_range = 10 + var/toxicity = 4 + var/pest_kill_str = 0 + var/weed_kill_str = 0 + +/obj/item/weapon/plantspray/weeds // -- Skie + + name = "weed-spray" + desc = "It's a toxic mixture, in spray form, to kill small weeds." + icon_state = "weedspray" + weed_kill_str = 6 + +/obj/item/weapon/plantspray/pests + name = "pest-spray" + desc = "It's some pest eliminator spray! Do not inhale!" + icon_state = "pestspray" + pest_kill_str = 6 + +/obj/item/weapon/plantspray/pests/old + name = "bottle of pestkiller" + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle16" + +/obj/item/weapon/plantspray/pests/old/carbaryl + name = "bottle of carbaryl" + icon_state = "bottle16" + toxicity = 4 + pest_kill_str = 2 + +/obj/item/weapon/plantspray/pests/old/lindane + name = "bottle of lindane" + icon_state = "bottle18" + toxicity = 6 + pest_kill_str = 4 + +/obj/item/weapon/plantspray/pests/old/phosmet + name = "bottle of phosmet" + icon_state = "bottle15" + toxicity = 8 + pest_kill_str = 7 + + +// ************************************* +// Weedkiller defines for hydroponics +// ************************************* + +/obj/item/weedkiller + name = "bottle of weedkiller" + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle16" + flags = OPENCONTAINER | NOBLUDGEON + var/toxicity = 0 + var/weed_kill_str = 0 + +/obj/item/weedkiller/triclopyr + name = "bottle of glyphosate" + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle16" + toxicity = 4 + weed_kill_str = 2 + +/obj/item/weedkiller/lindane + name = "bottle of triclopyr" + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle18" + toxicity = 6 + weed_kill_str = 4 + +/obj/item/weedkiller/D24 + name = "bottle of 2,4-D" + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle15" + toxicity = 8 + weed_kill_str = 7 + +// ************************************* +// Nutrient defines for hydroponics +// ************************************* + +/obj/item/weapon/reagent_containers/glass/fertilizer + name = "fertilizer bottle" + desc = "A small glass bottle. Can hold up to 10 units." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle16" + flags = OPENCONTAINER + possible_transfer_amounts = null + w_class = 2.0 + + var/fertilizer //Reagent contained, if any. + + //Like a shot glass! + amount_per_transfer_from_this = 10 + volume = 10 + +/obj/item/weapon/reagent_containers/glass/fertilizer/New() + ..() + + src.pixel_x = rand(-5.0, 5) + src.pixel_y = rand(-5.0, 5) + + if(fertilizer) + reagents.add_reagent(fertilizer,10) + +/obj/item/weapon/reagent_containers/glass/fertilizer/ez + name = "bottle of E-Z-Nutrient" + icon_state = "bottle16" + fertilizer = "eznutrient" + +/obj/item/weapon/reagent_containers/glass/fertilizer/l4z + name = "bottle of Left 4 Zed" + icon_state = "bottle18" + fertilizer = "left4zed" + +/obj/item/weapon/reagent_containers/glass/fertilizer/rh + name = "bottle of Robust Harvest" + icon_state = "bottle15" + fertilizer = "robustharvest" diff --git a/code/modules/hydroponics/trays/tray_soil.dm b/code/modules/hydroponics/trays/tray_soil.dm new file mode 100644 index 00000000000..ff8e3e23df0 --- /dev/null +++ b/code/modules/hydroponics/trays/tray_soil.dm @@ -0,0 +1,67 @@ +/obj/machinery/portable_atmospherics/hydroponics/soil + name = "soil" + icon_state = "soil" + density = 0 + use_power = 0 + mechanical = 0 + tray_light = 0 + +/obj/machinery/portable_atmospherics/hydroponics/soil/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(istype(O,/obj/item/weapon/tank)) + return + else + ..() + +/obj/machinery/portable_atmospherics/hydroponics/soil/New() + ..() + verbs -= /obj/machinery/portable_atmospherics/hydroponics/verb/close_lid_verb + verbs -= /obj/machinery/portable_atmospherics/hydroponics/verb/remove_label + verbs -= /obj/machinery/portable_atmospherics/hydroponics/verb/set_light + +/obj/machinery/portable_atmospherics/hydroponics/soil/CanPass() + return 1 + +// Holder for vine plants. +// Icons for plants are generated as overlays, so setting it to invisible wouldn't work. +// Hence using a blank icon. +/obj/machinery/portable_atmospherics/hydroponics/soil/invisible + name = "plant" + icon = 'icons/obj/seeds.dmi' + icon_state = "blank" + +/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/New(var/newloc,var/datum/seed/newseed) + ..() + seed = newseed + dead = 0 + age = 1 + health = seed.get_trait(TRAIT_ENDURANCE) + lastcycle = world.time + pixel_y = rand(-5,5) + check_health() + +/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/remove_dead() + ..() + del(src) + +/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/harvest() + ..() + if(!seed) // Repeat harvests are a thing. + del(src) + +/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/die() + del(src) + +/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/process() + if(!seed) + del(src) + return + else if(name=="plant") + name = seed.display_name + ..() + +/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/Del() + // Check if we're masking a decal that needs to be visible again. + for(var/obj/effect/plant/plant in get_turf(src)) + if(plant.invisibility == INVISIBILITY_MAXIMUM) + plant.invisibility = initial(plant.invisibility) + ..() diff --git a/code/modules/hydroponics/hydro_tools.dm b/code/modules/hydroponics/trays/tray_tools.dm similarity index 53% rename from code/modules/hydroponics/hydro_tools.dm rename to code/modules/hydroponics/trays/tray_tools.dm index 70cf1f9cf4b..df21cfa90d6 100644 --- a/code/modules/hydroponics/hydro_tools.dm +++ b/code/modules/hydroponics/trays/tray_tools.dm @@ -9,8 +9,38 @@ icon = 'icons/obj/device.dmi' icon_state = "hydro" item_state = "analyzer" + var/form_title + var/last_data + +/obj/item/device/analyzer/plant_analyzer/proc/print_report_verb() + set name = "Print Plant Report" + set category = "Object" + set src = usr + + if(usr.stat || usr.restrained() || usr.lying) + return + print_report(usr) + +/obj/item/device/analyzer/plant_analyzer/Topic(href, href_list) + if(..()) + return + if(href_list["print"]) + print_report(usr) + +/obj/item/device/analyzer/plant_analyzer/proc/print_report(var/mob/living/user) + if(!last_data) + user << "There is no scan data to print." + return + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(get_turf(src)) + P.name = "paper - [form_title]" + P.info = "[last_data]" + if(istype(user,/mob/living/carbon/human) && !(user.l_hand && user.r_hand)) + user.put_in_hands(P) + user.visible_message("\The [src] spits out a piece of paper.") + return /obj/item/device/analyzer/plant_analyzer/attack_self(mob/user as mob) + print_report(user) return 0 /obj/item/device/analyzer/plant_analyzer/afterattack(obj/target, mob/user, flag) @@ -29,16 +59,18 @@ var/tray_mutation_mod //mutation modifier of the tray //--FalseIncarnate - if(istype(target,/obj/item/weapon/reagent_containers/food/snacks/grown)) + if(istype(target,/obj/structure/table)) + return ..() + else if(istype(target,/obj/item/weapon/reagent_containers/food/snacks/grown)) var/obj/item/weapon/reagent_containers/food/snacks/grown/G = target - grown_seed = seed_types[G.plantname] + grown_seed = plant_controller.seeds[G.plantname] grown_reagents = G.reagents else if(istype(target,/obj/item/weapon/grown)) var/obj/item/weapon/grown/G = target - grown_seed = seed_types[G.plantname] + grown_seed = plant_controller.seeds[G.plantname] grown_reagents = G.reagents else if(istype(target,/obj/item/seeds)) @@ -66,21 +98,21 @@ grown_reagents = H.reagents if(!grown_seed) - user << "\red [src] can tell you nothing about [target]." + user << "[src] can tell you nothing about \the [target]." return - var/dat = "

Plant data for [target]

" - user.visible_message("\blue [user] runs the scanner over [target].") + form_title = "[grown_seed.seed_name] (#[grown_seed.uid])" + var/dat = "

Plant data for [form_title]

" + user.visible_message("[user] runs the scanner over \the [target].") dat += "

General Data

" dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" //--FalseIncarnate //Tray-specific stats like Age and Mutation Modifier, not shown if target was not a hydroponics tray or soil @@ -105,29 +137,26 @@ dat += "

Other Data

" - if(grown_seed.harvest_repeat) + if(grown_seed.get_trait(TRAIT_HARVEST_REPEAT)) dat += "This plant can be harvested repeatedly.
" - if(grown_seed.immutable == -1) + if(grown_seed.get_trait(TRAIT_IMMUTABLE) == -1) dat += "This plant is highly mutable.
" - else if(grown_seed.immutable > 0) + else if(grown_seed.get_trait(TRAIT_IMMUTABLE) > 0) dat += "This plant does not possess genetics that are alterable.
" - if(grown_seed.products && grown_seed.products.len) - dat += "The mature plant will produce [grown_seed.products.len == 1 ? "fruit" : "[grown_seed.products.len] varieties of fruit"].
" - - if(grown_seed.requires_nutrients) - if(grown_seed.nutrient_consumption < 0.05) + if(grown_seed.get_trait(TRAIT_REQUIRES_NUTRIENTS)) + if(grown_seed.get_trait(TRAIT_NUTRIENT_CONSUMPTION) < 0.05) dat += "It consumes a small amount of nutrient fluid.
" - else if(grown_seed.nutrient_consumption > 0.2) + else if(grown_seed.get_trait(TRAIT_NUTRIENT_CONSUMPTION) > 0.2) dat += "It requires a heavy supply of nutrient fluid.
" else dat += "It requires a supply of nutrient fluid.
" - if(grown_seed.requires_water) - if(grown_seed.water_consumption < 1) + if(grown_seed.get_trait(TRAIT_REQUIRES_WATER)) + if(grown_seed.get_trait(TRAIT_WATER_CONSUMPTION) < 1) dat += "It requires very little water.
" - else if(grown_seed.water_consumption > 5) + else if(grown_seed.get_trait(TRAIT_WATER_CONSUMPTION) > 5) dat += "It requires a large amount of water.
" else dat += "It requires a stable supply of water.
" @@ -135,120 +164,84 @@ if(grown_seed.mutants && grown_seed.mutants.len) dat += "It exhibits a high degree of potential subspecies shift.
" - dat += "It thrives in a temperature of [grown_seed.ideal_heat] Kelvin." + dat += "It thrives in a temperature of [grown_seed.get_trait(TRAIT_IDEAL_HEAT)] Kelvin." - if(grown_seed.lowkpa_tolerance < 20) + if(grown_seed.get_trait(TRAIT_LOWKPA_TOLERANCE) < 20) dat += "
It is well adapted to low pressure levels." - if(grown_seed.highkpa_tolerance > 220) + if(grown_seed.get_trait(TRAIT_HIGHKPA_TOLERANCE) > 220) dat += "
It is well adapted to high pressure levels." - if(grown_seed.heat_tolerance > 30) + if(grown_seed.get_trait(TRAIT_HEAT_TOLERANCE) > 30) dat += "
It is well adapted to a range of temperatures." - else if(grown_seed.heat_tolerance < 10) + else if(grown_seed.get_trait(TRAIT_HEAT_TOLERANCE) < 10) dat += "
It is very sensitive to temperature shifts." - dat += "
It thrives in a light level of [grown_seed.ideal_light] lumen[grown_seed.ideal_light == 1 ? "" : "s"]." + dat += "
It thrives in a light level of [grown_seed.get_trait(TRAIT_IDEAL_LIGHT)] lumen[grown_seed.get_trait(TRAIT_IDEAL_LIGHT) == 1 ? "" : "s"]." - if(grown_seed.light_tolerance > 10) + if(grown_seed.get_trait(TRAIT_LIGHT_TOLERANCE) > 10) dat += "
It is well adapted to a range of light levels." - else if(grown_seed.light_tolerance < 3) + else if(grown_seed.get_trait(TRAIT_LIGHT_TOLERANCE) < 3) dat += "
It is very sensitive to light level shifts." - if(grown_seed.toxins_tolerance < 3) + if(grown_seed.get_trait(TRAIT_TOXINS_TOLERANCE) < 3) dat += "
It is highly sensitive to toxins." - else if(grown_seed.toxins_tolerance > 6) + else if(grown_seed.get_trait(TRAIT_TOXINS_TOLERANCE) > 6) dat += "
It is remarkably resistant to toxins." - if(grown_seed.pest_tolerance < 3) + if(grown_seed.get_trait(TRAIT_PEST_TOLERANCE) < 3) dat += "
It is highly sensitive to pests." - else if(grown_seed.pest_tolerance > 6) + else if(grown_seed.get_trait(TRAIT_PEST_TOLERANCE) > 6) dat += "
It is remarkably resistant to pests." - if(grown_seed.weed_tolerance < 3) + if(grown_seed.get_trait(TRAIT_WEED_TOLERANCE) < 3) dat += "
It is highly sensitive to weeds." - else if(grown_seed.weed_tolerance > 6) + else if(grown_seed.get_trait(TRAIT_WEED_TOLERANCE) > 6) dat += "
It is remarkably resistant to weeds." - switch(grown_seed.spread) + switch(grown_seed.get_trait(TRAIT_SPREAD)) if(1) - dat += "
It is capable of growing beyond the confines of a tray." + dat += "
It is able to be planted outside of a tray." if(2) dat += "
It is a robust and vigorous vine that will spread rapidly." - switch(grown_seed.carnivorous) + switch(grown_seed.get_trait(TRAIT_CARNIVOROUS)) if(1) dat += "
It is carniovorous and will eat tray pests for sustenance." if(2) dat += "
It is carnivorous and poses a significant threat to living things around it." - if(grown_seed.parasite) + if(grown_seed.get_trait(TRAIT_PARASITE)) dat += "
It is capable of parisitizing and gaining sustenance from tray weeds." - if(grown_seed.alter_temp) - dat += "
It will periodically alter the local temperature by [grown_seed.alter_temp] degrees Kelvin." + if(grown_seed.get_trait(TRAIT_ALTER_TEMP)) + dat += "
It will periodically alter the local temperature by [grown_seed.get_trait(TRAIT_ALTER_TEMP)] degrees Kelvin." - if(grown_seed.biolum) - dat += "
It is [grown_seed.biolum_colour ? "bio-luminescent" : "bio-luminescent"]." - if(grown_seed.flowers) - dat += "
It has [grown_seed.flower_colour ? "flowers" : "flowers"]." + if(grown_seed.get_trait(TRAIT_BIOLUM)) + dat += "
It is [grown_seed.get_trait(TRAIT_BIOLUM_COLOUR) ? "bio-luminescent" : "bio-luminescent"]." + + if(grown_seed.get_trait(TRAIT_PRODUCES_POWER)) + dat += "
The fruit will function as a battery if prepared appropriately." + + if(grown_seed.get_trait(TRAIT_STINGS)) + dat += "
The fruit is covered in stinging spines." + + if(grown_seed.get_trait(TRAIT_JUICY) == 1) + dat += "
The fruit is soft-skinned and juicy." + else if(grown_seed.get_trait(TRAIT_JUICY) == 2) + dat += "
The fruit is excessively juicy." + + if(grown_seed.get_trait(TRAIT_EXPLOSIVE)) + dat += "
The fruit is internally unstable." + + if(grown_seed.get_trait(TRAIT_TELEPORTING)) + dat += "
The fruit is temporal/spatially unstable." if(dat) + last_data = dat + dat += "

\[print report\]" user << browse(dat,"window=plant_analyzer") return -// ************************************* -// Hydroponics Tools -// ************************************* - -/obj/item/weapon/plantspray - icon = 'icons/obj/hydroponics.dmi' - item_state = "spray" - flags = OPENCONTAINER | NOBLUDGEON - slot_flags = SLOT_BELT - throwforce = 4 - w_class = 2.0 - throw_speed = 2 - throw_range = 10 - var/toxicity = 4 - var/pest_kill_str = 0 - var/weed_kill_str = 0 - -/obj/item/weapon/plantspray/weeds // -- Skie - - name = "weed-spray" - desc = "It's a toxic mixture, in spray form, to kill small weeds." - icon_state = "weedspray" - weed_kill_str = 2 - -/obj/item/weapon/plantspray/pests - name = "pest-spray" - desc = "It's some pest eliminator spray! Do not inhale!" - icon_state = "pestspray" - pest_kill_str = 2 - -/obj/item/weapon/plantspray/pests/old - name = "bottle of pestkiller" - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle16" - -/obj/item/weapon/plantspray/pests/old/carbaryl - name = "bottle of carbaryl" - icon_state = "bottle16" - toxicity = 4 - pest_kill_str = 2 - -/obj/item/weapon/plantspray/pests/old/lindane - name = "bottle of lindane" - icon_state = "bottle18" - toxicity = 6 - pest_kill_str = 4 - -/obj/item/weapon/plantspray/pests/old/phosmet - name = "bottle of phosmet" - icon_state = "bottle15" - toxicity = 8 - pest_kill_str = 7 - /obj/item/weapon/minihoe // -- Numbers name = "mini hoe" desc = "It's used for removing weeds or scratching your back." @@ -259,85 +252,9 @@ force = 5.0 throwforce = 7.0 w_class = 2.0 + m_amt = 50 attack_verb = list("slashed", "sliced", "cut", "clawed") - -// ************************************* -// Weedkiller defines for hydroponics -// ************************************* - -/obj/item/weedkiller - name = "bottle of weedkiller" - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle16" - var/toxicity = 0 - var/weed_kill_str = 0 - -/obj/item/weedkiller/triclopyr - name = "bottle of glyphosate" - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle16" - toxicity = 4 - weed_kill_str = 2 - -/obj/item/weedkiller/lindane - name = "bottle of triclopyr" - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle18" - toxicity = 6 - weed_kill_str = 4 - -/obj/item/weedkiller/D24 - name = "bottle of 2,4-D" - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle15" - toxicity = 8 - weed_kill_str = 7 - - -// ************************************* -// Nutrient defines for hydroponics -// ************************************* - -/obj/item/weapon/reagent_containers/glass/fertilizer - name = "fertilizer bottle" - desc = "A small glass bottle. Can hold up to 10 units." - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle16" - flags = OPENCONTAINER - possible_transfer_amounts = null - w_class = 2.0 - - var/fertilizer //Reagent contained, if any. - - //Like a shot glass! - amount_per_transfer_from_this = 10 - volume = 10 - -/obj/item/weapon/reagent_containers/glass/fertilizer/New() - ..() - - src.pixel_x = rand(-5.0, 5) - src.pixel_y = rand(-5.0, 5) - - if(fertilizer) - reagents.add_reagent(fertilizer,10) - -/obj/item/weapon/reagent_containers/glass/fertilizer/ez - name = "bottle of E-Z-Nutrient" - icon_state = "bottle16" - fertilizer = "eznutrient" - -/obj/item/weapon/reagent_containers/glass/fertilizer/l4z - name = "bottle of Left 4 Zed" - icon_state = "bottle18" - fertilizer = "left4zed" - -/obj/item/weapon/reagent_containers/glass/fertilizer/rh - name = "bottle of Robust Harvest" - icon_state = "bottle15" - fertilizer = "robustharvest" - //Hatchets and things to kill kudzu /obj/item/weapon/hatchet name = "hatchet" @@ -368,6 +285,15 @@ icon_state = "unathiknife" attack_verb = list("ripped", "torn", "cut") +/obj/item/weapon/hatchet/tacknife + name = "tactical knife" + desc = "You'd be killing loads of people if this was Medal of Valor: Heroes of Nyx." + icon = 'icons/obj/weapons.dmi' + icon_state = "tacknife" + item_state = "knife" + attack_verb = list("stabbed", "chopped", "cut") + + /obj/item/weapon/scythe icon_state = "scythe0" name = "scythe" @@ -384,8 +310,8 @@ /obj/item/weapon/scythe/afterattack(atom/A, mob/user as mob, proximity) if(!proximity) return - if(istype(A, /obj/effect/plantsegment)) - for(var/obj/effect/plantsegment/B in orange(A,1)) + if(istype(A, /obj/effect/plant)) + for(var/obj/effect/plant/B in orange(A,1)) if(prob(80)) - del B + B.die_off(1) del A \ No newline at end of file diff --git a/code/modules/hydroponics/trays/tray_update_icons.dm b/code/modules/hydroponics/trays/tray_update_icons.dm new file mode 100644 index 00000000000..61e19632ea1 --- /dev/null +++ b/code/modules/hydroponics/trays/tray_update_icons.dm @@ -0,0 +1,84 @@ +//Refreshes the icon and sets the luminosity +/obj/machinery/portable_atmospherics/hydroponics/update_icon() + // Update name. + if(seed) + if(mechanical) + name = "[base_name] (#[seed.uid])" + else + name = "[seed.seed_name]" + else + name = initial(name) + + if(labelled) + name += " ([labelled])" + + overlays.Cut() + // Updates the plant overlay. + if(!isnull(seed)) + + if(mechanical && health <= (seed.get_trait(TRAIT_ENDURANCE) / 2)) + overlays += "over_lowhealth3" + + if(dead) + var/ikey = "[seed.get_trait(TRAIT_PLANT_ICON)]-dead" + var/image/dead_overlay = plant_controller.plant_icon_cache["[ikey]"] + if(!dead_overlay) + dead_overlay = image('icons/obj/hydroponics_growing.dmi', "[ikey]") + dead_overlay.color = DEAD_PLANT_COLOUR + overlays |= dead_overlay + else + if(!seed.growth_stages) + seed.update_growth_stages() + if(!seed.growth_stages) + world << "Seed type [seed.get_trait(TRAIT_PLANT_ICON)] cannot find a growth stage value." + return + var/overlay_stage = 1 + if(age >= seed.get_trait(TRAIT_MATURATION)) + overlay_stage = seed.growth_stages + else + var/maturation = round(seed.get_trait(TRAIT_MATURATION)/seed.growth_stages) + overlay_stage = maturation ? max(1,round(age/maturation)) : 1 + var/ikey = "[seed.get_trait(TRAIT_PLANT_ICON)]-[overlay_stage]" + var/image/plant_overlay = plant_controller.plant_icon_cache["[ikey]-[seed.get_trait(TRAIT_PLANT_COLOUR)]"] + if(!plant_overlay) + plant_overlay = image('icons/obj/hydroponics_growing.dmi', "[ikey]") + plant_overlay.color = seed.get_trait(TRAIT_PLANT_COLOUR) + plant_controller.plant_icon_cache["[ikey]-[seed.get_trait(TRAIT_PLANT_COLOUR)]"] = plant_overlay + overlays |= plant_overlay + + if(harvest && overlay_stage == seed.growth_stages) + ikey = "[seed.get_trait(TRAIT_PRODUCT_ICON)]" + var/image/harvest_overlay = plant_controller.plant_icon_cache["product-[ikey]-[seed.get_trait(TRAIT_PLANT_COLOUR)]"] + if(!harvest_overlay) + harvest_overlay = image('icons/obj/hydroponics_products.dmi', "[ikey]") + harvest_overlay.color = seed.get_trait(TRAIT_PRODUCT_COLOUR) + plant_controller.plant_icon_cache["product-[ikey]-[seed.get_trait(TRAIT_PRODUCT_COLOUR)]"] = harvest_overlay + overlays |= harvest_overlay + + //Draw the cover. + if(closed_system) + overlays += "hydrocover" + + //Updated the various alert icons. + if(mechanical) + if(waterlevel <= 10) + overlays += "over_lowwater3" + if(nutrilevel <= 2) + overlays += "over_lownutri3" + if(weedlevel >= 5 || pestlevel >= 5 || toxins >= 40) + overlays += "over_alert3" + if(harvest) + overlays += "over_harvest3" + + // Update bioluminescence. + if(seed) + if(seed.get_trait(TRAIT_BIOLUM)) + SetLuminosity(round(seed.get_trait(TRAIT_POTENCY)/10)) + if(seed.get_trait(TRAIT_BIOLUM_COLOUR)) + l_color = seed.get_trait(TRAIT_BIOLUM_COLOUR) + else + l_color = null + return + + SetLuminosity(0) + return \ No newline at end of file diff --git a/code/modules/hydroponics/vines.dm b/code/modules/hydroponics/vines.dm deleted file mode 100644 index 35d321789e0..00000000000 --- a/code/modules/hydroponics/vines.dm +++ /dev/null @@ -1,386 +0,0 @@ -// SPACE VINES (Note that this code is very similar to Biomass code) -/obj/effect/plantsegment - name = "space vines" - desc = "An extremely expansionistic species of vine." - icon = 'icons/effects/spacevines.dmi' - icon_state = "Light1" - anchored = 1 - density = 0 - layer = 5 - pass_flags = PASSTABLE | PASSGRILLE - - // Vars used by vines with seed data. - var/age = 0 - var/lastproduce = 0 - var/harvest = 0 - var/list/chems - var/plant_damage_noun = "Thorns" - var/limited_growth = 0 - - // Life vars/ - var/energy = 0 - var/obj/effect/plant_controller/master = null - var/mob/living/buckled_mob - var/datum/seed/seed - -/obj/effect/plantsegment/New() - return - -/obj/effect/plantsegment/Del() - if(master) - master.vines -= src - master.growth_queue -= src - ..() - -/obj/effect/plantsegment/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if (!W || !user || !W.type) return - switch(W.type) - if(/obj/item/weapon/circular_saw) del src - if(/obj/item/weapon/kitchen/utensil/knife) del src - if(/obj/item/weapon/scalpel) del src - if(/obj/item/weapon/twohanded/fireaxe) del src - if(/obj/item/weapon/hatchet) del src - if(/obj/item/weapon/melee/energy) del src - - // Less effective weapons - if(/obj/item/weapon/wirecutters) - if(prob(25)) del src - if(/obj/item/weapon/shard) - if(prob(25)) del src - - // Weapons with subtypes - else - if(istype(W, /obj/item/weapon/melee/energy/sword)) del src - else if(istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - if(WT.remove_fuel(0, user)) del src - else - manual_unbuckle(user) - return - // Plant-b-gone damage is handled in its entry in chemistry-reagents.dm - ..() - - -/obj/effect/plantsegment/attack_hand(mob/user as mob) - - if(user.a_intent == "help" && seed && harvest) - seed.harvest(user,1) - harvest = 0 - lastproduce = age - update() - return - - manual_unbuckle(user) - - -/obj/effect/plantsegment/attack_paw(mob/user as mob) - manual_unbuckle(user) - -/obj/effect/plantsegment/proc/unbuckle() - if(buckled_mob) - if(buckled_mob.buckled == src) //this is probably unneccesary, but it doesn't hurt - buckled_mob.buckled = null - buckled_mob.anchored = initial(buckled_mob.anchored) - buckled_mob.update_canmove() - buckled_mob = null - return - -/obj/effect/plantsegment/proc/manual_unbuckle(mob/user as mob) - if(buckled_mob) - if(prob(seed ? min(max(0,100 - seed.potency),100) : 50)) - if(buckled_mob.buckled == src) - if(buckled_mob != user) - buckled_mob.visible_message(\ - "[user.name] frees [buckled_mob.name] from [src].",\ - "[user.name] frees you from [src].",\ - "You hear shredding and ripping.") - else - buckled_mob.visible_message(\ - "[buckled_mob.name] struggles free of [src].",\ - "You untangle [src] from around yourself.",\ - "You hear shredding and ripping.") - unbuckle() - else - var/text = pick("rips","tears","pulls") - user.visible_message(\ - "[user.name] [text] at [src].",\ - "You [text] at [src].",\ - "You hear shredding and ripping.") - return - -/obj/effect/plantsegment/proc/grow() - - if(!energy) - src.icon_state = pick("Med1", "Med2", "Med3") - energy = 1 - - //Low-lying creepers do not block vision or grow thickly. - if(limited_growth) - energy = 2 - return - - src.opacity = 1 - layer = 5 - else if(!limited_growth) - src.icon_state = pick("Hvy1", "Hvy2", "Hvy3") - energy = 2 - -/obj/effect/plantsegment/proc/entangle_mob() - - if(limited_growth) - return - - if(prob(seed ? seed.potency : 25)) - - if(!buckled_mob) - var/mob/living/carbon/V = locate() in src.loc - if(V && (V.stat != DEAD) && (V.buckled != src)) // If mob exists and is not dead or captured. - V.buckled = src - V.loc = src.loc - V.update_canmove() - src.buckled_mob = V - V << "The vines [pick("wind", "tangle", "tighten")] around you!" - - // FEED ME, SEYMOUR. - if(buckled_mob && seed && (buckled_mob.stat != DEAD)) //Don't bother with a dead mob. - - var/mob/living/M = buckled_mob - if(!istype(M)) return - var/mob/living/carbon/human/H = buckled_mob - - // Drink some blood/cause some brute. - if(seed.carnivorous == 2) - buckled_mob << "\The [src] pierces your flesh greedily!" - - var/damage = rand(round(seed.potency/2),seed.potency) - if(!istype(H)) - H.adjustBruteLoss(damage) - return - - var/obj/item/organ/external/affecting = H.get_organ(pick("l_foot","r_foot","l_leg","r_leg","l_hand","r_hand","l_arm", "r_arm","head","chest","groin")) - - if(affecting) - affecting.take_damage(damage, 0) - if(affecting.parent) - affecting.parent.add_autopsy_data("[plant_damage_noun]", damage) - else - H.adjustBruteLoss(damage) - - H.UpdateDamageIcon() - H.updatehealth() - - // Inject some chems. - if(seed.chems && seed.chems.len && istype(H)) - H << "You feel something seeping into your skin!" - for(var/rid in seed.chems) - var/injecting = min(5,max(1,seed.potency/5)) - H.reagents.add_reagent(rid,injecting) - -/obj/effect/plantsegment/proc/update() - if(!seed) return - - // Update bioluminescence. - if(seed.biolum) - SetLuminosity(1+round(seed.potency/10)) - if(seed.biolum_colour) - l_color = seed.biolum_colour - else - l_color = null - return - else - SetLuminosity(0) - - // Update flower/product overlay. - overlays.Cut() - if(age >= seed.maturation) - if(prob(20) && seed.products && seed.products.len && !harvest && ((age-lastproduce) > seed.production)) - harvest = 1 - lastproduce = age - - if(harvest) - var/image/fruit_overlay = image('icons/obj/hydroponics.dmi',"") - if(seed.product_colour) - fruit_overlay.color = seed.product_colour - overlays += fruit_overlay - - if(seed.flowers) - var/image/flower_overlay = image('icons/obj/hydroponics.dmi',"[seed.flower_icon]") - if(seed.flower_colour) - flower_overlay.color = seed.flower_colour - overlays += flower_overlay - -/obj/effect/plantsegment/proc/spread() - var/direction = pick(cardinal) - var/step = get_step(src,direction) - if(istype(step,/turf/simulated/floor)) - var/turf/simulated/floor/F = step - if(!locate(/obj/effect/plantsegment,F)) - if(F.Enter(src)) - if(master) - master.spawn_piece( F ) - -// Explosion damage. -/obj/effect/plantsegment/ex_act(severity) - switch(severity) - if(1.0) - die() - return - if(2.0) - if (prob(90)) - die() - return - if(3.0) - if (prob(50)) - die() - return - return - -// Hotspots kill vines. -/obj/effect/plantsegment/fire_act(null, temp, volume) - del src - -/obj/effect/plantsegment/proc/die() - if(seed && harvest) - seed.harvest(src,1) - del(src) - -/obj/effect/plantsegment/proc/life() - - if(!seed) - return - - if(prob(30)) - age++ - - var/turf/T = loc - var/datum/gas_mixture/environment - if(T) environment = T.return_air() - - if(!environment) - return - - var/pressure = environment.return_pressure() - if(pressure < seed.lowkpa_tolerance || pressure > seed.highkpa_tolerance) - die() - return - - if(abs(environment.temperature - seed.ideal_heat) > seed.heat_tolerance) - die() - return - - var/area/A = T.loc - if(A) - var/light_available - if(A.lighting_use_dynamic) - light_available = max(0,min(10,T.lighting_lumcount)-5) - else - light_available = 5 - if(abs(light_available - seed.ideal_light) > seed.light_tolerance) - die() - return - -/obj/effect/plant_controller - - //What this does is that instead of having the grow minimum of 1, required to start growing, the minimum will be 0, - //meaning if you get the spacevines' size to something less than 20 plots, it won't grow anymore. - - var/list/obj/effect/plantsegment/vines = list() - var/list/growth_queue = list() - var/reached_collapse_size - var/reached_slowdown_size - var/datum/seed/seed - - var/collapse_limit = 250 - var/slowdown_limit = 30 - var/limited_growth = 0 - -/obj/effect/plant_controller/creeper - collapse_limit = 6 - slowdown_limit = 3 - limited_growth = 1 - -/obj/effect/plant_controller/New() - if(!istype(src.loc,/turf/simulated/floor)) - del(src) - - spawn(0) - spawn_piece(src.loc) - - processing_objects.Add(src) - -/obj/effect/plant_controller/Del() - processing_objects.Remove(src) - ..() - -/obj/effect/plant_controller/proc/spawn_piece(var/turf/location) - var/obj/effect/plantsegment/SV = new(location) - SV.limited_growth = src.limited_growth - growth_queue += SV - vines += SV - SV.master = src - if(seed) - SV.seed = seed - SV.name = "[seed.seed_name] vines" - SV.update() - -/obj/effect/plant_controller/process() - - // Space vines exterminated. Remove the controller - if(!vines) - del(src) - return - - // Sanity check. - if(!growth_queue) - del(src) - return - - // Check if we're too big for our own good. - if(vines.len >= (seed ? seed.potency * collapse_limit : 250) && !reached_collapse_size) - reached_collapse_size = 1 - if(vines.len >= (seed ? seed.potency * slowdown_limit : 30) && !reached_slowdown_size ) - reached_slowdown_size = 1 - - var/length = 0 - if(reached_collapse_size) - length = 0 - else if(reached_slowdown_size) - if(prob(seed ? seed.potency : 25)) - length = 1 - else - length = 0 - else - length = 1 - - length = min(30, max(length, vines.len/5)) - - // Update as many pieces of vine as we're allowed to. - // Append updated vines to the end of the growth queue. - var/i = 0 - var/list/obj/effect/plantsegment/queue_end = list() - for(var/obj/effect/plantsegment/SV in growth_queue) - i++ - queue_end += SV - growth_queue -= SV - - SV.life() - - if(SV.energy < 2) //If tile isn't fully grown - var/chance - if(seed) - chance = limited_growth ? round(seed.potency/2,1) : seed.potency - else - chance = 20 - - if(prob(chance)) - SV.grow() - - else if(!seed || !limited_growth) //If tile is fully grown and not just a creeper. - SV.entangle_mob() - - SV.update() - SV.spread() - if(i >= length) - break - - growth_queue = growth_queue + queue_end \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 20c1259b857..dfeef3b004e 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -46,8 +46,8 @@ if(udder && prob(5)) udder.add_reagent("milk", rand(5, 10)) - if(locate(/obj/effect/plantsegment) in loc) - var/obj/effect/plantsegment/SV = locate(/obj/effect/plantsegment) in loc + if(locate(/obj/effect/plant) in loc) + var/obj/effect/plant/SV = locate(/obj/effect/plant) in loc del(SV) if(prob(10)) say("Nom") @@ -56,7 +56,7 @@ for(var/direction in shuffle(list(1,2,4,8,5,6,9,10))) var/step = get_step(src, direction) if(step) - if(locate(/obj/effect/plantsegment) in step) + if(locate(/obj/effect/plant) in step) Move(step) /mob/living/simple_animal/hostile/retaliate/goat/Retaliate() @@ -66,8 +66,8 @@ /mob/living/simple_animal/hostile/retaliate/goat/Move() ..() if(!stat) - if(locate(/obj/effect/plantsegment) in loc) - var/obj/effect/plantsegment/SV = locate(/obj/effect/plantsegment) in loc + if(locate(/obj/effect/plant) in loc) + var/obj/effect/plant/SV = locate(/obj/effect/plant) in loc del(SV) if(prob(10)) say("Nom") @@ -231,15 +231,19 @@ var/global/chicken_count = 0 chicken_count -= 1 /mob/living/simple_animal/chicken/attackby(var/obj/item/O as obj, var/mob/user as mob, params) - if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown/wheat)) //feedin' dem chickens - if(!stat && eggsleft < 8) - user.visible_message("\blue [user] feeds [O] to [name]! It clucks happily.","\blue You feed [O] to [name]! It clucks happily.") - user.drop_item() - del(O) - eggsleft += rand(1, 4) - //world << eggsleft + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown)) //feedin' dem chickens + var/obj/item/weapon/reagent_containers/food/snacks/grown/G = O + if(G.seed.kitchen_tag == "wheat") + if(!stat && eggsleft < 8) + user.visible_message("\blue [user] feeds [O] to [name]! It clucks happily.","\blue You feed [O] to [name]! It clucks happily.") + user.drop_item() + del(O) + eggsleft += rand(1, 4) + //world << eggsleft + else + user << "\blue [name] doesn't seem hungry!" else - user << "\blue [name] doesn't seem hungry!" + user << "\blue [name] doesn't seem interested in [O]!" else ..() diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 289c388b17b..b3ee7bb18a5 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -1008,19 +1008,8 @@ /obj/item/stack/sheet/mineral/clown = list("banana" = 20), /obj/item/stack/sheet/mineral/silver = list("silver" = 20), /obj/item/stack/sheet/mineral/gold = list("gold" = 20), - /obj/item/weapon/grown/nettle = list("sacid" = 0), - /obj/item/weapon/grown/deathnettle = list("facid" = 0), /obj/item/weapon/grown/novaflower = list("capsaicin" = 0), - //Blender Stuff - /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = list("soymilk" = 0), - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = list("ketchup" = 0), - /obj/item/weapon/reagent_containers/food/snacks/grown/corn = list("cornoil" = 0), - ///obj/item/weapon/reagent_containers/food/snacks/grown/wheat = list("flour" = -5), - /obj/item/weapon/reagent_containers/food/snacks/grown/ricestalk = list("rice" = -5), - /obj/item/weapon/reagent_containers/food/snacks/grown/cherries = list("cherryjelly" = 0), - /obj/item/weapon/reagent_containers/food/snacks/grown/plastellium = list("plasticide" = 5), - //archaeology! /obj/item/weapon/rocksliver = list("ground_rock" = 50), @@ -1032,20 +1021,33 @@ /obj/item/weapon/reagent_containers/food = list() ) - var/list/juice_items = list ( + var/list/blend_tags = list ( + "nettle" = list("sacid" = 0), + "deathnettle" = list("facid" = 0), + "soybeans" = list("soymilk" = 0), + "tomato" = list("ketchup" = 0), + ///obj/item/weapon/reagent_containers/food/snacks/grown/wheat = list("flour" = -5), + "ricestalk" = list("rice" = -5), + "cherries" = list("cherryjelly" = 0), + "plastellium" = list("plasticide" = 5), + ) - //Juicer Stuff - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = list("tomatojuice" = 0), - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot = list("carrotjuice" = 0), - /obj/item/weapon/reagent_containers/food/snacks/grown/berries = list("berryjuice" = 0), - /obj/item/weapon/reagent_containers/food/snacks/grown/banana = list("banana" = 0), - /obj/item/weapon/reagent_containers/food/snacks/grown/potato = list("potato" = 0), - /obj/item/weapon/reagent_containers/food/snacks/grown/lemon = list("lemonjuice" = 0), - /obj/item/weapon/reagent_containers/food/snacks/grown/orange = list("orangejuice" = 0), - /obj/item/weapon/reagent_containers/food/snacks/grown/lime = list("limejuice" = 0), + var/list/juice_items = list ( /obj/item/weapon/reagent_containers/food/snacks/watermelonslice = list("watermelonjuice" = 0), - /obj/item/weapon/reagent_containers/food/snacks/grown/poisonberries = list("poisonberryjuice" = 0), - /obj/item/weapon/reagent_containers/food/snacks/grown/grapes = list("grapejuice" = 0), + ) + + var/list/juice_tags = list ( + "tomato" = list("tomatojuice" = 0), + "carrot" = list("carrotjuice" = 0), + "berries" = list("berryjuice" = 0), + "banana" = list("banana" = 0), + "potato" = list("potato" = 0), + "lemon" = list("lemonjuice" = 0), + "orange" = list("orangejuice" = 0), + "lime" = list("limejuice" = 0), + "poisonberries" = list("poisonberryjuice" = 0), + "grapes" = list("grapejuice" = 0), + "corn" = list("cornoil" = 0), ) @@ -1223,10 +1225,20 @@ return blend_items[i] /obj/machinery/reagentgrinder/proc/get_allowed_juice_by_id(var/obj/item/weapon/reagent_containers/food/snacks/O) - for(var/i in juice_items) + for(var/i in juice_tags) if(istype(O, i)) return juice_items[i] +/obj/machinery/reagentgrinder/proc/get_allowed_snack_by_tag(var/obj/item/weapon/reagent_containers/food/snacks/grown/O) + for(var/i in blend_tags) + if(O.seed.kitchen_tag == i) + return blend_tags[i] + +/obj/machinery/reagentgrinder/proc/get_allowed_juice_by_tag(var/obj/item/weapon/reagent_containers/food/snacks/grown/O) + for(var/i in juice_tags) + if(O.seed.kitchen_tag == i) + return juice_tags[i] + /obj/machinery/reagentgrinder/proc/get_grownweapon_amount(var/obj/item/weapon/grown/O) if (!istype(O)) return 5 @@ -1263,7 +1275,11 @@ if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) break - var/allowed = get_allowed_juice_by_id(O) + var/allowed = null + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown)) + allowed = get_allowed_juice_by_tag(O) + else + allowed = get_allowed_juice_by_id(O) if(isnull(allowed)) break @@ -1296,7 +1312,11 @@ if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) break - var/allowed = get_allowed_snack_by_id(O) + var/allowed = null + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown)) + allowed = get_allowed_snack_by_tag(O) + else + allowed = get_allowed_snack_by_id(O) if(isnull(allowed)) break diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 8766271a170..e60befb5006 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -202,6 +202,16 @@ datum return */ + // Ported from Bay as part of the Botany Update + // Allows you to make planks from any plant that has this reagent in it. + // Also vines with this reagent are considered dense. + woodpulp + name = "Wood Pulp" + id = "woodpulp" + description = "A mass of wood fibers." + reagent_state = LIQUID + color = "#B97A57" + water name = "Water" id = "water" diff --git a/code/modules/reagents/newchem/toxins.dm b/code/modules/reagents/newchem/toxins.dm index b2779e42e4c..9cfa220198b 100644 --- a/code/modules/reagents/newchem/toxins.dm +++ b/code/modules/reagents/newchem/toxins.dm @@ -585,7 +585,7 @@ datum/reagent/atrazine/reaction_obj(var/obj/O, var/volume) alien_weeds.healthcheck() else if(istype(O,/obj/effect/glowshroom)) //even a small amount is enough to kill it del(O) - else if(istype(O,/obj/effect/plantsegment)) + else if(istype(O,/obj/effect/plant)) if(prob(50)) del(O) //Kills kudzu too. // Damage that is done to growing plants is separately at code/game/machinery/hydroponics at obj/item/hydroponics diff --git a/code/setup.dm b/code/setup.dm index f629ab3b14f..d4308bb1a66 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -964,6 +964,8 @@ var/list/hit_appends = list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF") #define STATUS_DISABLED 0 // RED Visability #define STATUS_CLOSE -1 // Close the interface +#define HYDRO_SPEED_MULTIPLIER 1 + #define NANO_IGNORE_DISTANCE 1 //Click cooldowns, in tenths of a second diff --git a/code/world.dm b/code/world.dm index e890c6164eb..0ed1f72ced8 100644 --- a/code/world.dm +++ b/code/world.dm @@ -41,6 +41,7 @@ sleep_offline = 1 + plant_controller = new() // Create robolimbs for chargen. populate_robolimb_list() diff --git a/icons/obj/cigarettes.dmi b/icons/obj/cigarettes.dmi index 89f3d1bdac8581da7bd27c5c32e76cc48286491a..7b6275972c056b5968538857c7d1073088702dcc 100644 GIT binary patch delta 523 zcmV+m0`&dcPuNe8B!B37R9JLGWpiV4X>fFDZ*Bkpc$}5j&u)T15C-rwJjFz>q*1i? z#HCr&c+giME3C4We}SbfZ{LFnovpR=dDG;#ntU@bvvYdgzU>aA_Pg-IbiHkAN@)GG z2!l_XyMhv0#bHnwdoJAdOYgKZl+Y}*=T>JI<7Q!y+pedCmVaSz>U3qUpKs+7r!h`f zI9=oP8K)bZE<{>smlbJg@5H(agWQyQq=e!qj^f`3hx+c(n?E@YT@Bh}^993HmsQid z(@>W98T07Ro2qrAcu0XQs?Y{iXnQKOIThNP3T;e@!j0VpG!@={wcfFDZ*Bkpc$}5j!EVAZ3*q|O;*{&xfE3rN4++L_YJ>UF&(wOOa{#`m^6Q$fpz zS(<#UOqireWqnTt&41J6;B{-RpKs+Hr#Vg+ zI9=lO5vNZ$or$#7p{#d}y%XyqO)Asq3l)@Sd6xe?IGpbuz4?><;Lo7lcb_oa>89=a za2T2fKV$y;^QLv-A|6s;iz>81722K(ZBB)@ra~K2p>3(qrY!Ao=d?3^=X7}zx$pKv zAO4O$sk_j-E`Lx#&)NJbyK`Kw2-k91xRz_fwOk;sO1MnbKt%bRV{p%8IkEJPj{43P&$L*#+s5P4ucL>?Fr zk(cAY&TsU_6lrt?f^SX{N0%V@1{HC14T5h{5x*PzlvZ0sYO_wi0J2bRPv4dAYybct N07*naRI?odyCvst`)>dM diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi index 7df20eeb250e397d0bbbe55ff3b666931e1b2bba..09247ec05ea6de68e707a5a86392cab33b457049 100644 GIT binary patch delta 2995 zcma)8c`)0H7EXfNMQg26q)M*V(q68emZ-HFw6v%#wHC2P6#1#0s-@NvT&|^r>O-j7 z_o9~8PVIH=d&ClHo_A;7oA=Ls^JdPRIe&aJ-<)s0`OYbS51#n|PUHh@nJ$1ppa{D^ z3_&1>?2CtweGv{mC~p@}Ul+6o2!zEKrnh=b%d$ld?wK-eInbrq^)b?bks$#=7(-fp$VOdaS({sd5&;qckGfOU;OwHD%VRt>WIA5*;lUZ;X2x;trsMOgO~F|8vst4@ z9A6@@K3;?FI$fm>x{t(ODKC)Byrrp;cg-?pIVeKRiBRVA8K~I3&Q)9ilY$7beKe9w zWf{9sme49HkvRTt-sNj*Q0s6$i<9@MoPomdlF*vFN#xAx+8_Kp!rmeg(au^0MJK2_BIfsd?=r7$`X8%a ze$ch__C%0!qQ~14myC{VNgl6Qp*Y$rEjKNKqy6`zsztu1zTX6rC((LeLIb^*>QgAO zj3To=!Y0d*J3u2<1i-yJgQm_rFgk|p4TMstgM6m6Qyre>UK-?%6gGSJzAbrXsXM_` zSOeD)1r^@?Nez_ng+ig=5yy7$S8F=AC%oU*H-UAJzP{Tc{OET59UUY4(TQ5V9c~b(MKi#5cSm5z}7hvw}D4c>AjpvIIfv!g7mlNQ`)=cmXm> zlWU9C-j&0hjX$0hzY6T>G2%OVlid9_Cx=|7FRb>$cM&JflaA`OqwVX|?Ekr*(i|w$SyF9jcxpL(|ztE&Wl)C`fpP8HUmz*;c z4>KwGQ7s0t_3)6ES5k5r?C+2Gi(sVf=YD$NW35cj-rKG9$AM=(A(hd0`LN zQ>*Tmax%BWfi{J;14h>c6mXWo0-|Rz3uUXY7-E!qRno@?9^A8dBI&} ze5LoKzTG_Z=wJM~&FlUVq3(42{QMyRu`;yy9V5*3Wic*iU^!905Vm#MfQRDCmg>~< zqSf#P!lTmvVT<6Kl!NI}e{gZ~q z#zyw}gK*Xp)q&l@V}h}e#V59{lYd9Er(4(We z8?%a9$bq>H$!IYN8^Mx$Pp9i0f{3Swgpe>?0zBbz!S{iGW`dJXN;h-(a~Jr zjbqo{3*{l&3iL89F(UcJmYkaGd17td=wJq+)^ySdVWeePsL8sUdquH-iqmx-GQ;)B z1J9IiBiIbmtcV2C9v=IyPq8RV+Az-=G0%zVUCB3xjI&CFuJY&{&UiDhdG>T#YXFaA ze%>CsYr(PJ3$(Yl8+G284%vRL=39mAGbX<{CY_$JMxra9wM8ZN&4FxveYyK*W%33( zRqQ#lK_;W`D=JW)o+O2xw)fV2~@ef5ka3{lD{js_Dk< zuX<^H%f7;pLs_%`k>>w*?4JYYK-Sh4l~gji+ltGDf-nz*&|0Pnp9wjlC+3 zDUfaOo|DwlhB~mNK|^mW0ToU``R}yJ;@`WV^&ihhkrW;7OWiBS%H0wy*NBys`4s+W zlj?=1NqQ3G|J<~1-k<{uTUfqxwO~sFZ$>m+!0j&Q-<&!cqg2%MqT-^Yg!9)Nq^E6! Jc&}+2`cKW(&aVIf delta 2689 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 I!pQ%>0mKhwK>z>% literal 0 HcmV?d00001 diff --git a/icons/obj/hydroponics_products.dmi b/icons/obj/hydroponics_products.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b02a15b309a8d2d2d75894551105f1a72533530e GIT binary patch literal 8652 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 literal 0 HcmV?d00001 diff --git a/icons/obj/hydroponics_vines.dmi b/icons/obj/hydroponics_vines.dmi new file mode 100644 index 0000000000000000000000000000000000000000..2bad94b350dc2c77ab7c3ca60bd816aee1c4bf0c GIT binary patch literal 18093 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 literal 17404 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 E0~^BL>;M1& diff --git a/icons/obj/seeds_OLD.dmi b/icons/obj/seeds_OLD.dmi new file mode 100644 index 0000000000000000000000000000000000000000..98eb6e2292bc20d7a08d613bad744c4d0f88f189 GIT binary patch literal 17623 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≧@h`` zW+yTUTVKBfP!N>|7Sz2z5O_o+M_|gfW^D;*^~KRthvl_l@Ey(ryH=M> z3L|4p2U0qbcd6qHadH2KmW%@Yvt;tsJI;#CoO`2p2{;yB|2lOh#p$ftv z<4erU96nj9Us>{V%*xmuI}|%kU#3$18Ewq?{Zb( zsRG%Lj!6~$UJ)4fSj{ojiVDQby^@seFGq+TrHh5J1oJF#RlGwQ(LBfVmGIQU!dY*$ ziUBn?GYp<*+WZ`MjJp?FZY%gLW)Wo9a2d_Vg*tXkj^h+S@-A^wtnU{qNR*ooUi$(! zVBp&71-Ez>NsFFT&eCIiC@?V>M0?Nyi-yw{X1g;G3fJH71@wHX+%ZOu-qh zVV8vyO{RaC9tq3(m#ZEu1x};h$z=R2*QSO*MJsRK}A&A>vr z_ok3lf|naX)9|EsOw=aZrv*tlOZqz3~_nP~8 zM@+wmARopFGOjn+zZtweCT?Kq_ZilgjYNNyE;{=Q+sDiSh4?K#r8QpOzVU})(a!9C zMEI>o>p4<(V(fFMB$%Ft1~`&y`gC(f;kxcy3;hjXU({Bb)&ak%{}`lFjTQ8{pd!MD zoDXL@%w^1h7GH``FSThk)ylDxgP5tizISqd>X%H?3vPjDf@!wCp+-|vbnGbp6>9`b zB0Uo;jYB0b^Ho1AZQ!vRcN#sh0Y=)vimuk;c`aG1P(jSAN10l)xdNlG!1iju1H(rW zSe2x&pUTS1O>g?rLPwqCO=bt*ZLuf$`E0RA7uai6I{1~=BzW3?NsJhxo=eJFpU$7nPYfj z-nt}dq*q~Yfes0@QY{6M>c|?smJog=DRz<6V1rS?$CKq>BcJ?qQUZxuk5~qBus^G~ z1A>`F#zQsTv!^N+l+-RY7RBaR8MBd0>kH)4ayk5jB&PMM*Eot$-g_)T>mBUCSJ3O@ z4`Rl$<5Dt_vL&r%0aqyKp0xP3mpI7yF9Z~RFO*mcLpU}W>zDmr>zyQ%5Q(Mhr7uBu zNYO>_RDUX|iGA{GUZ!HbfxLJty+snn@!y*HeTSsb_hy1$$a{r~sdBdhZuuNFZvcKe zhU1&l*V)weZ<}mmd9Ns;CkS(pn7|V7%mx`hhxRG-sBFT$c_PoiUh`DkTCJzzjw-uk zQ%mmV`eW6Ov*BcJIMvr3QKKdOdD6w13s?dmHgj+Kiu%&U?-T3A|-1U(aS}1M=Q2uM?l8!IZ)>GuqiIjd*5mORk7uc^zoRK zcaIX6!+WlX_ccf1t^pRIzim<|G73WOr65wWz;rzZ-$H!G$<(VX4YRXP&^6uF<)5=B ziL=tw2dM5x^fy`+;#g&!7rFaDy-*RoqHGE33*{05*bYF7P3r97K#k?LDp+Fj5LqDz za`VgF&%;XWY35zAF*&=80`&z>XZW@{f)xnbKyK$!*=t6GB)W(X=68|Cy|)q8(G?`yV2VTc@#avkxen^Gj{P-zY^Txkd-+5LbuuPp3)90h><0 zrkOjhZExE9V2h^H=j9K#-`jZ8pz> Date: Sat, 9 May 2015 07:12:54 -0400 Subject: [PATCH 29/38] Finally done --- .../projectiles/ammunition/ammo_casings.dm | 3 +- code/modules/projectiles/gun.dm | 121 ++++++++------- code/modules/projectiles/projectile.dm | 138 +++++++++++++----- icons/obj/projectiles.dmi | Bin 33441 -> 27509 bytes 4 files changed, 161 insertions(+), 101 deletions(-) diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index 50b5aa6ad6c..5ceb6aa386b 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -47,7 +47,6 @@ icon_state = "gshell" projectile_type = "/obj/item/projectile/bullet/pellet" pellets = 5 - deviation = 0.8 deviation = 30 @@ -76,7 +75,7 @@ projectile_type = /obj/item/projectile/bullet/pellet/random m_amt = 250 pellets = 5 - deviation = 1.0 + deviation = 30 /obj/item/ammo_casing/shotgun/improvised/overload/New() ..() diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index f086b38988b..4efee86bb44 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -114,11 +114,6 @@ add_fingerprint(user) - var/turf/curloc = get_turf(user) - var/turf/targloc = get_turf(target) - if (!istype(targloc) || !istype(curloc)) - return - if(!special_check(user)) return @@ -130,23 +125,40 @@ if(!process_chambered()) //CHECK return click_empty(user) - if(!in_chamber) - return - if(heavy_weapon) if(user.get_inactive_hand()) recoil = 4 //one-handed kick else recoil = initial(recoil) - in_chamber.firer = user - in_chamber.def_zone = user.zone_sel.selecting - if(targloc == curloc) - user.bullet_act(in_chamber) - qdel(in_chamber) - update_icon() + if (istype(in_chamber, /obj/item/projectile/bullet/blank)) // A hacky way of making blank shotgun shells work again. Honk. + in_chamber.delete() + in_chamber = null return + user.changeNext_move(CLICK_CD_RANGE) + + var/spread = 0 + var/turf/targloc = get_turf(target) + if(chambered) + for (var/i = max(1, chambered.pellets), i > 0, i--) //Previous way of doing it fucked up math for spreading. This way, even the first projectile is part of the spread code. + if(i != max(1, chambered.pellets)) //Have we fired the initial chambered bullet yet? + in_chamber = new chambered.projectile_type() + ready_projectile(target, user) + prepare_shot(in_chamber) + if(chambered.deviation) + if(randomspread) //Random spread + spread = (rand() - 0.5) * chambered.deviation + else //Smart spread + spread = (i / chambered.pellets - 0.5) * chambered.deviation + if(!process_projectile(targloc, user, params, spread)) + return 0 + else + ready_projectile(target, user) + prepare_shot(in_chamber) + if(!process_projectile(targloc, user, params, spread)) + return 0 + if(recoil) spawn() shake_camera(user, recoil + 1, recoil) @@ -165,31 +177,33 @@ user.visible_message("[src] flies out of [user]'s hands!", "[src] kicks out of your grip!") user.drop_item() - if (istype(in_chamber, /obj/item/projectile/bullet/blank)) // A hacky way of making blank shotgun shells work again. Honk. - in_chamber.delete() - in_chamber = null - return - + update_icon() + if(user.hand) + user.update_inv_l_hand() + else + user.update_inv_r_hand() +/obj/item/weapon/gun/proc/ready_projectile(atom/target as mob|obj|turf, mob/living/user) + in_chamber.firer = user + in_chamber.def_zone = user.zone_sel.selecting in_chamber.original = target + return + +/obj/item/weapon/gun/proc/process_projectile(var/turf/targloc, mob/living/user as mob|obj, params, spread) + var/turf/curloc = user.loc + if (!istype(targloc) || !istype(curloc) || !in_chamber) + return 0 + if(targloc == curloc) //Fire the projectile + user.bullet_act(in_chamber) + qdel(in_chamber) + update_icon() + return 1 + in_chamber.loc = get_turf(user) in_chamber.starting = get_turf(user) - in_chamber.shot_from = src - user.changeNext_move(CLICK_CD_RANGE) - in_chamber.silenced = silenced in_chamber.current = curloc in_chamber.yo = targloc.y - curloc.y in_chamber.xo = targloc.x - curloc.x - - - var/spread = 0 - if(istype(user, /mob/living/carbon)) //Instead of modifying projectile's originl pixels, we can increase spread. - var/mob/living/carbon/mob = user - if(mob.shock_stage > 120) - spread += rand(-2,2) - else if(mob.shock_stage > 70) - spread += rand(-1,1) - if(params) var/list/mouse_control = params2list(params) if(mouse_control["icon-x"]) @@ -215,38 +229,19 @@ in_chamber.Angle = angle - if(chambered) - for (var/i = max(1, chambered.pellets), i > 0, i--) //Previous way of doing it fucked up math for spreading. This way, even the first projectile is part of the spread code. - if(randomspread) //Random spread - spread = (rand() - 0.5) * chambered.deviation - else //Smart spread - spread = (i / chambered.pellets - 0.5) * chambered.deviation + if(istype(user, /mob/living/carbon)) //Increase spread based on shock + var/mob/living/carbon/mob = user + if(mob.shock_stage > 120) + spread += rand(-5,5) + else if(mob.shock_stage > 70) + spread += rand(-2,2) - in_chamber = new chambered.projectile_type() - prepare_shot(in_chamber) - in_chamber.original = target - in_chamber.loc = get_turf(user) - in_chamber.starting = get_turf(user) - in_chamber.current = curloc - in_chamber.yo = targloc.y - curloc.y - in_chamber.xo = targloc.x - curloc.x - if(spread) - in_chamber.Angle += chambered.spread - if(in_chamber) - in_chamber.process() - else - if(spread) - in_chamber.Angle += chambered.spread - if(in_chamber) - in_chamber.process() - sleep(1) - in_chamber = null - - update_icon() - if(user.hand) - user.update_inv_l_hand() - else - user.update_inv_r_hand() + if(spread) + in_chamber.Angle += spread + if(in_chamber) + in_chamber.process() + in_chamber = null + return 1 /obj/item/weapon/gun/proc/can_fire() return process_chambered() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 251b9b568ea..a4ce8cdeac2 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -64,6 +64,7 @@ var/speed = 1 //Amount of deciseconds it takes for projectile to travel. Animation is adjusted accordingly. var/Angle = 0 //For new projectiles var/spread = 0 //Amount of degrees by which the projectiles will be spread DURING MOVEMENT. It exists for chaotic types of projectiles, like bees or something. + var/legacy = 0 //Use the legacy projectile system or new pixel movement? proc/delete() // Garbage collect the projectiles @@ -179,43 +180,108 @@ return 1 - process() - spawn while(src) - if(kill_count < 1) - del(src) - return - kill_count-- - if((!( current ) || loc == current)) - current = locate(min(max(x + xo, 1), world.maxx), min(max(y + yo, 1), world.maxy), z) - if((x == 1 || x == world.maxx || y == 1 || y == world.maxy)) - del(src) - return - step_towards(src, current) - sleep(1) - if(!bumped && !isturf(original)) - if(loc == get_turf(original)) - if(!(original in permutated)) - Bump(original) - sleep(1) - Range() - return - proc/dumbfire(var/dir) // for spacepods, go snowflake go - if(!dir) - del(src) - if(kill_count < 1) - del(src) - kill_count-- - spawn while(src) - var/turf/T = get_step(src, dir) - step_towards(src, T) - sleep(1) - if(!bumped && !isturf(original)) - if(loc == get_turf(original)) - if(!(original in permutated)) - Bump(original) - sleep(1) - return + process(var/setAngle) + if(setAngle) Angle = setAngle + if(!legacy) + spawn() //New projectile system + while(loc) + if(kill_count < 1) + qdel(src) + return + kill_count-- + if((!( current ) || loc == current)) + current = locate(Clamp(x+xo,1,world.maxx),Clamp(y+yo,1,world.maxy),z) + if(!Angle) + Angle=round(Get_Angle(src,current)) + //world << "[Angle] angle" + //overlays.Cut() + //var/icon/I=new(initial(icon),icon_state) //using initial(icon) makes sure that the angle for that is reset as well + //I.Turn(Angle) + //I.DrawBox(rgb(255,0,0,50),1,1,32,32) + //icon = I + if(spread) //Chaotic spread + Angle += (rand() - 0.5) * spread + var/matrix/M = new//matrix(transform) + M.Turn(Angle) + transform = M + + var/Pixel_x=round(sin(Angle)+16*sin(Angle)*2) + var/Pixel_y=round(cos(Angle)+16*cos(Angle)*2) + var/pixel_x_offset = pixel_x + Pixel_x + var/pixel_y_offset = pixel_y + Pixel_y + var/new_x = x + var/new_y = y + //Not sure if using whiles for this is good + while(pixel_x_offset > 16) + //world << "Pre-adjust coords (x++): xy [pixel_x] xy offset [pixel_x_offset]" + pixel_x_offset -= 32 + pixel_x -= 32 + new_x++// x++ + while(pixel_x_offset < -16) + //world << "Pre-adjust coords (x--): xy [pixel_x] xy offset [pixel_x_offset]" + pixel_x_offset += 32 + pixel_x += 32 + new_x-- + + while(pixel_y_offset > 16) + //world << "Pre-adjust coords (y++): py [pixel_y] py offset [pixel_y_offset]" + pixel_y_offset -= 32 + pixel_y -= 32 + new_y++ + while(pixel_y_offset < -16) + //world << "Pre-adjust coords (y--): py [pixel_y] py offset [pixel_y_offset]" + pixel_y_offset += 32 + pixel_y += 32 + new_y-- + + speed = round(speed) //Just in case. + step_towards(src, locate(new_x, new_y, z)) //Original projectiles stepped towards 'current' + if(speed <= 1) //We should really only animate at speed 2 + pixel_x = pixel_x_offset + pixel_y = pixel_y_offset + else + animate(src, pixel_x = pixel_x_offset, pixel_y = pixel_y_offset, time = max(1, (speed <= 3 ? speed - 1 : speed))) + +/* + var/turf/T = get_turf(src) + if(T) + T.color = "#6666FF" + spawn(10) + T.color = initial(T.color) +*/ + + if(!bumped && ((original && original.layer>=2.75) || ismob(original))) + if(loc == get_turf(original)) + if(!(original in permutated)) + Bump(original) + Range() + sleep(max(1, speed)) + else + spawn() //Old projectile system + while(loc) + if(kill_count < 1) + qdel(src) + return + kill_count-- + if((!( current ) || loc == current)) + current = locate(Clamp(x+xo,1,world.maxx),Clamp(y+yo,1,world.maxy),z) + if(!Angle) + Angle=round(Get_Angle(src,current)) + var/matrix/M = new//matrix(transform) + M.Turn(Angle) + transform = M //So there's no need to give icons directions again + step_towards(src, current) + if(!bumped && ((original && original.layer>=2.75) || ismob(original))) + if(loc == get_turf(original)) + if(!(original in permutated)) + Bump(original) + Range() + sleep(1) + + proc/dumbfire(var/dir) + current = get_ranged_target_turf(src, dir, world.maxx) //world.maxx is the range. Not sure how to handle this better. + process() /obj/item/projectile/test //Used to see if you can hit them. invisibility = 101 //Nope! Can't see me! diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index 57f75b0f54e2975a7017da2a1241f3ef9dbe96f2..73177afd0bd91f531983b97bf6bfb170f3d42c7f 100644 GIT binary patch literal 27509 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

w|PPO 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 From 6ef0c009214be9e2b13001fd5cbaa9a806ff405a Mon Sep 17 00:00:00 2001 From: Krausus Date: Sat, 9 May 2015 07:41:21 -0400 Subject: [PATCH 30/38] Adds missing canmove check --- code/game/objects/items/weapons/storage/storage.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index db813980846..613fe2d844c 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -39,7 +39,7 @@ return if ((istype(over_object, /obj/structure/table) || istype(over_object, /turf/simulated/floor)) \ - && contents.len && loc == usr && !usr.stat && !usr.restrained() && over_object.Adjacent(usr) \ + && contents.len && loc == usr && !usr.stat && !usr.restrained() && usr.canmove && over_object.Adjacent(usr) \ && !istype(src, /obj/item/weapon/storage/lockbox)) var/turf/T = get_turf(over_object) if (istype(over_object, /turf/simulated/floor)) @@ -47,7 +47,7 @@ return // Can only empty containers onto the floor under you if("Yes" != alert(usr,"Empty \the [src] onto \the [T]?","Confirm","Yes","No")) return - if(!(usr && over_object && contents.len && loc == usr && !usr.stat && !usr.restrained() && get_turf(usr) == T)) + if(!(usr && over_object && contents.len && loc == usr && !usr.stat && !usr.restrained() && usr.canmove && get_turf(usr) == T)) return // Something happened while the player was thinking hide_from(usr) usr.face_atom(over_object) From e33e6581781666c574cb66064c96830518ec6682 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Sat, 9 May 2015 05:43:47 -0700 Subject: [PATCH 31/38] Water_act system - for all your watery needs This is the first commit of the Water_act system for monkey cubes, showers, and mobs. The idea of the system is to outsource the effects of water to the object/mob being affected instead of a bunch of snowflake code. --- code/game/atoms_movable.dm | 2 ++ code/game/objects/structures/watercloset.dm | 24 +++++++++++++++---- code/modules/mob/living/carbon/carbon.dm | 1 - .../mob/living/carbon/human/human_defense.dm | 5 ++++ code/modules/mob/living/living_defense.dm | 4 ++++ .../reagent_containers/food/snacks.dm | 3 +++ 6 files changed, 34 insertions(+), 5 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index dcbe4e4462e..b34f3412a5d 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -282,3 +282,5 @@ /atom/movable/proc/canSingulothPull(var/obj/machinery/singularity/singulo) return 1 +/atom/movable/proc/water_act(var/volume, var/temperature, var/source) //amount of water acting : temperature of water in kelvin : object that called it (for shennagins) + return 1 \ No newline at end of file diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 2fdd133801b..2081f911325 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -146,8 +146,10 @@ if (M.loc == loc) wash(M) check_heat(M) + M.water_act(100, convertHeat(), src) for (var/atom/movable/G in src.loc) G.clean_blood() + G.water_act(100, convertHeat(), src) /obj/machinery/shower/attackby(obj/item/I as obj, mob/user as mob, params) if(I.type == /obj/item/device/analyzer) @@ -163,6 +165,8 @@ if("boiling") watertemp = "normal" user.visible_message("[user] adjusts the shower with the [I].", "You adjust the shower with the [I].") + if(on) + I.water_act(100, convertHeat(), src) /obj/machinery/shower/update_icon() //this is terribly unreadable, but basically it makes the shower mist up overlays.Cut() //once it's been on for a while, in addition to handling the water overlay. @@ -201,10 +205,21 @@ mobpresent -= 1 ..() +/obj/machinery/shower/proc/convertHeat() + switch(watertemp) + if("boiling") + return 340.15 + if("normal") + return 310.15 + if("freezing") + return 230.15 + //Yes, showers are super powerful as far as washing goes. /obj/machinery/shower/proc/wash(atom/movable/O as obj|mob) if(!on) return + O.water_act(100, convertHeat(), src) + if(isliving(O)) var/mob/living/L = O L.ExtinguishMob() @@ -298,17 +313,16 @@ var/mob/living/carbon/C = M if(watertemp == "freezing") - C.bodytemperature = max(80, C.bodytemperature - 80) + //C.bodytemperature = max(80, C.bodytemperature - 80) C << "The water is freezing!" return if(watertemp == "boiling") - C.bodytemperature = min(500, C.bodytemperature + 35) + //C.bodytemperature = min(500, C.bodytemperature + 35) C.adjustFireLoss(5) C << "The water is searing!" return - /obj/item/weapon/bikehorn/rubberducky name = "rubber ducky" desc = "Rubber ducky you're so fine, you make bathtime lots of fuuun. Rubber ducky I'm awfully fooooond of yooooouuuu~" //thanks doohl @@ -372,7 +386,9 @@ user.visible_message("\blue [user] fills the [RG] using \the [src].","\blue You fill the [RG] using \the [src].") return - else if (istype(O, /obj/item/weapon/melee/baton)) + O.water_act(20,310.15,src) + + if (istype(O, /obj/item/weapon/melee/baton)) var/obj/item/weapon/melee/baton/B = O if (B.bcell.charge > 0 && B.status == 1) flick("baton_active", src) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 683228e97e8..5da86e83455 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -92,7 +92,6 @@ mob/living return return - /mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null) if(status_flags & GODMODE) //godmode return 0 diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 3ff64431933..d8d12108b20 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -488,3 +488,8 @@ emp_act ..() return + +/mob/living/carbon/human/water_act(volume, temperature) + ..() + if(temperature >= 330) bodytemperature = bodytemperature + (temperature - bodytemperature) + if(temperature <= 280) bodytemperature = bodytemperature - (bodytemperature - temperature) \ No newline at end of file diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index b61d58223c6..aff6a6d415e 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -238,6 +238,10 @@ //Mobs on Fire end +/mob/living/water_act(volume, temperature) + if(volume >= 20) fire_stacks -= 0.5 + if(volume >= 50) fire_stacks -= 1 + //This is called when the mob is thrown into a dense turf /mob/living/proc/turf_collision(var/turf/T, var/speed) src.take_organ_damage(speed*5) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 8cc0229c548..6d332a5cbc1 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -1722,6 +1722,9 @@ M.gib() ..() + water_act(volume, temperature) + if(volume >= 5) return Expand() + proc/Expand() for(var/mob/M in viewers(src,7)) M << "\red \The [src] expands!" From 5549925516e1d5efd2bf23751b9c2c4a25379396 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Sat, 9 May 2015 12:07:05 -0700 Subject: [PATCH 32/38] Autogibber + Minor patches This replaces the old autogibber with a spawnable version that is actually an automatic gibber. This also fixes a few minor issues I did not notice before with the gibber code. Namely, overlays getting messed up. The gibber will now spit out things inside of it 1 by 1 instead of all at once. --- code/game/machinery/kitchen/gibber.dm | 127 +++++++++++++++++++++++--- 1 file changed, 114 insertions(+), 13 deletions(-) diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm index 60a4d3d094f..af98ded7bd5 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/game/machinery/kitchen/gibber.dm @@ -14,10 +14,96 @@ var/gib_throw_dir = WEST // Direction to spit meat and gibs in. Defaults to west. var/gibtime = 40 // Time from starting until meat appears + var/list/victims = list() + use_power = 1 idle_power_usage = 2 active_power_usage = 500 +//gibs anything that stands on it's input + +/obj/machinery/gibber/autogibber + var/acceptdir = NORTH + var/turf/lturf + +/obj/machinery/gibber/autogibber/New() + ..() + spawn(5) + var/turf/T = get_step(src, acceptdir) + if(istype(T)) + lturf = T + +/obj/machinery/gibber/autogibber/process() + if(!lturf || occupant || locked || dirty || operating) + return + + for(var/mob/living/carbon/human/H in lturf) + if(istype(H) && H.loc == lturf) + visible_message({"\The [src] states, "Food detected!""}) + sleep(30) + if(H.loc == lturf) //still standing there + if(force_move_into_gibber(H)) + ejectclothes(occupant) + cleanbay() + startgibbing(null, 1) + break + +/obj/machinery/gibber/autogibber/proc/force_move_into_gibber(var/mob/living/carbon/human/victim) + if(!istype(victim)) return 0 + visible_message("\The [victim.name] gets sucked into \the [src]!") + + if(victim.client) + victim.client.perspective = EYE_PERSPECTIVE + victim.client.eye = src + + victim.loc = src + src.occupant = victim + + update_icon() + feedinTopanim() + return 1 + +/obj/machinery/gibber/autogibber/proc/ejectclothes(var/mob/living/carbon/human/H) + if(!istype(H)) return 0 + if(H != occupant) return 0 //only using H as a shortcut to typecast + for(var/obj/O in H) + if(istype(O,/obj/item/clothing)) //clothing gets skipped to avoid cleaning out shit + continue + if(istype(O,/obj/item/weapon/implant)) + var/obj/item/weapon/implant/I = O + if(I.implanted) + continue + if(istype(O,/obj/item/organ)) + continue + if(O.flags & NODROP) + qdel(O) //they are already dead by now + H.unEquip(O) + O.loc = src.loc + O.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(1,5),15) + sleep(1) + + for(var/obj/item/clothing/C in H) + if(C.flags & NODROP) + qdel(C) + H.unEquip(C) + C.loc = src.loc + C.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(1,5),15) + sleep(1) + + visible_message("\The [src] spits out \the [H.name]'s possessions!") + +/obj/machinery/gibber/autogibber/proc/cleanbay() + var/spats = 0 //keeps track of how many items get spit out. Don't show a message if none are found. + for(var/obj/O in src) + if(istype(O)) + O.loc = src.loc + O.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(1,5),15) + spats++ + sleep(1) + if(spats) + visible_message("\The [src] spits out more possessions!") + +/* //auto-gibs anything that bumps into it /obj/machinery/gibber/autogibber var/turf/input_plate @@ -46,7 +132,7 @@ if(M.loc == input_plate) M.loc = src M.gib() - +*/ /obj/machinery/gibber/New() ..() @@ -233,9 +319,18 @@ sleep(1) + overlays -= feedee + overlays -= gibberoverlay src.layer = 3 -/obj/machinery/gibber/proc/startgibbing(mob/user as mob) +/obj/machinery/gibber/proc/startgibbing(var/mob/user, var/UserOverride=0) + if(!istype(user) && !UserOverride) + log_debug("Some shit just went down with the gibber at X[x], Y[y], Z[z] with an invalid user. (JMP)") + return + + if(UserOverride) + msg_admin_attack("[occupant] ([occupant.ckey]) was gibbed by an autogibber (\the [src]) at (JMP)") + if(src.operating) return @@ -266,16 +361,20 @@ new /obj/effect/decal/cleanable/blood/gibs(src) - src.occupant.attack_log += "\[[time_stamp()]\] Was gibbed by [user]/[user.ckey]" //One shall not simply gib a mob unnoticed! - user.attack_log += "\[[time_stamp()]\] Gibbed [src.occupant]/[src.occupant.ckey]" + if(!UserOverride) + src.occupant.attack_log += "\[[time_stamp()]\] Was gibbed by [user]/[user.ckey]" //One shall not simply gib a mob unnoticed! + user.attack_log += "\[[time_stamp()]\] Gibbed [src.occupant]/[src.occupant.ckey]" - if(src.occupant.ckey) - msg_admin_attack("[user.name] ([user.ckey])[isAntag(user) ? "(ANTAG)" : ""] gibbed [src.occupant] ([src.occupant.ckey]) (JMP)") + if(src.occupant.ckey) + msg_admin_attack("[user.name] ([user.ckey])[isAntag(user) ? "(ANTAG)" : ""] gibbed [src.occupant] ([src.occupant.ckey]) (JMP)") - if(!iscarbon(user)) - src.occupant.LAssailant = null - else - src.occupant.LAssailant = user + if(!iscarbon(user)) + src.occupant.LAssailant = null + else + src.occupant.LAssailant = user + + if(UserOverride) //this looks ugly but it's better than a copy-pasted startgibbing proc override + occupant.attack_log += "\[[time_stamp()]\] Was gibbed by an autogibber (\the [src])" src.occupant.emote("scream") playsound(src.loc, 'sound/effects/gib.ogg', 50, 1) @@ -283,6 +382,8 @@ src.occupant.death(1) src.occupant.ghostize() + victims += "\[[time_stamp()]\] [occupant.name] ([occupant.ckey]) killed." + del(src.occupant) spawn(src.gibtime) @@ -293,12 +394,12 @@ for (var/obj/item/thing in contents) //Meat is spawned inside the gibber and thrown out afterwards. thing.loc = get_turf(thing) // Drop it onto the turf for throwing. thing.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(1,5),15) // Being pelted with bits of meat and bone would hurt. + sleep(1) for (var/obj/effect/gibs in contents) //throw out the gibs too gibs.loc = get_turf(gibs) //drop onto turf for throwing gibs.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(1,5),15) + sleep(1) src.operating = 0 - update_icon() - - + update_icon() \ No newline at end of file From 597b15b85051777cde21da8e631fd9f017a33f8d Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Sat, 9 May 2015 12:28:54 -0700 Subject: [PATCH 33/38] Gibber: More logging, Autogibber fix This commit adds the user name and ckey (where applicable) to the gibber victim list. victims = /list (1) - [12:27:52] unknown () killed by The unknown (tigercat2000) = null victims = /list (1) - [12:26:56] Shadow Larkens (tigercat2000) killed by Autogibbing = null This commit also fixes admin-vareditting the autogibber direction, it will actually update it's linked turf now. --- code/game/machinery/kitchen/gibber.dm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm index af98ded7bd5..b9ab86027ce 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/game/machinery/kitchen/gibber.dm @@ -24,6 +24,7 @@ /obj/machinery/gibber/autogibber var/acceptdir = NORTH + var/lastacceptdir = NORTH var/turf/lturf /obj/machinery/gibber/autogibber/New() @@ -37,6 +38,13 @@ if(!lturf || occupant || locked || dirty || operating) return + if(acceptdir != lastacceptdir) + lturf = null + lastacceptdir = acceptdir + var/turf/T = get_step(src, acceptdir) + if(istype(T)) + lturf = T + for(var/mob/living/carbon/human/H in lturf) if(istype(H) && H.loc == lturf) visible_message({"\The [src] states, "Food detected!""}) @@ -379,11 +387,10 @@ src.occupant.emote("scream") playsound(src.loc, 'sound/effects/gib.ogg', 50, 1) + victims += "\[[time_stamp()]\] [occupant.name] ([occupant.ckey]) killed by [UserOverride ? "Autogibbing" : "[user] ([user.ckey])"]" //have to do this before ghostizing src.occupant.death(1) src.occupant.ghostize() - victims += "\[[time_stamp()]\] [occupant.name] ([occupant.ckey]) killed." - del(src.occupant) spawn(src.gibtime) From bccabe6d4f87949e0e5f986c8b0a0554a32ffea1 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Sat, 9 May 2015 18:55:37 -0700 Subject: [PATCH 34/38] Add magboots stopping airflow push to LINDA This commit adds an airflow push override to humans, which triggers when the shoes they are wearing are a subtype of magboots and magpulse is active. Therefore, magboots will prevent people from being pushed around by "spacewind" or also known as airflow. --- code/modules/mob/living/carbon/human/human_defense.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 3ff64431933..9d58b19f77f 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -488,3 +488,11 @@ emp_act ..() return + +/mob/living/carbon/human/experience_pressure_difference(pressure_difference, direction) + if(shoes) + if(istype(shoes,/obj/item/clothing/shoes/magboots)) //TODO: Make a not-shit shoe var system to negate airflow. + var/obj/item/clothing/shoes/magboots/MB = shoes + if(MB.magpulse) + return 0 + ..() \ No newline at end of file From 533841c0a572932eb0795d7d6492c47ecd490d2c Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Sun, 10 May 2015 00:19:28 -0400 Subject: [PATCH 35/38] Fixed mobs not taking damage from explosions --- code/game/objects/explosion.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 139788890b9..b88f63baab8 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -93,6 +93,9 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa else dist = 0 if(T) + for(var/atom_movable in T.contents) //bypass type checking since only atom/movable can be contained by turfs anyway + var/atom/movable/AM = atom_movable + if(AM) AM.ex_act(dist) // if(flame_dist && prob(40) && !istype(T, /turf/space) && !T.density) // PoolOrNew(/obj/effect/hotspot, T) //Mostly for ambience! if(dist > 0) From 2ac1304df5e76ede45b6fd82795fb710f2e13d87 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sun, 10 May 2015 05:59:03 -0400 Subject: [PATCH 36/38] Health Analyzer Name Fix --- code/modules/research/designs/medical_designs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index ab00accccca..37d524c689c 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -46,7 +46,7 @@ category = list("Medical") /datum/design/healthanalyzer - name = "Health Analyzer Upgrade" + name = "Health Analyzer" desc = "A hand-held body scanner able to distinguish vital signs of the subject." id = "healthanalyzer" req_tech = list("biotech" = 2, "magnets" = 2) From 27442f95392e6e4900a1cfec793f6f3fbb190974 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Sun, 10 May 2015 05:39:26 -0700 Subject: [PATCH 37/38] Water_act: Wetlevel for carbon mobs All carbon mobs have a new variable called wetness, which is increased upon water_act's that have a volume over 10, and is decreased every 22~ cycles of mob_master. This variable currently does absolutely nothing but change their examine text. --- code/game/objects/effects/effect_system.dm | 3 +++ code/game/objects/structures/watercloset.dm | 1 + code/modules/mob/living/carbon/alien/alien.dm | 4 ++++ .../mob/living/carbon/alien/humanoid/life.dm | 3 +++ code/modules/mob/living/carbon/carbon_defenses.dm | 5 +++++ code/modules/mob/living/carbon/carbon_defines.dm | 3 ++- code/modules/mob/living/carbon/human/examine.dm | 12 ++++++++++++ .../mob/living/carbon/human/human_defense.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 7 +++++++ code/modules/mob/living/carbon/metroid/examine.dm | 14 ++++++++++++++ code/modules/mob/living/carbon/metroid/life.dm | 7 +++++++ code/modules/mob/living/carbon/monkey/examine.dm | 14 ++++++++++++++ code/modules/mob/living/carbon/monkey/life.dm | 10 +++++++++- 13 files changed, 82 insertions(+), 3 deletions(-) diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index d5d3555e12d..26d669038ba 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -79,6 +79,9 @@ would spawn and follow the beaker, even if it is carried or thrown. /obj/effect/effect/water/Bump(atom/A) if(reagents) reagents.reaction(A) + if(istype(A,/atom/movable)) + var/atom/movable/AM = A + AM.water_act(life, 310.15, src) return ..() diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 2081f911325..76c6715b0da 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -308,6 +308,7 @@ check_heat(C) /obj/machinery/shower/proc/check_heat(mob/M as mob) + M.water_act(100, convertHeat(), src) //convenience if(!on || watertemp == "normal") return if(iscarbon(M)) var/mob/living/carbon/C = M diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 6e5dcdc3dea..a2e7be0928d 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -152,6 +152,10 @@ bodytemperature += BODYTEMP_HEATING_MAX //If you're on fire, you heat up! return +/mob/living/carbon/alien/proc/handle_wetness() + if(mob_master.current_cycle%20==2) //dry off a bit once every 20 ticks or so + wetlevel = max(wetlevel - 1,0) + return /mob/living/carbon/alien/IsAdvancedToolUser() return has_fine_manipulation diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm index eda8df77ee7..9ecf410a4d3 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/life.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm @@ -53,6 +53,9 @@ //Handle being on fire handle_fire() + //Decrease wetness over time + handle_wetness() + //Status updates, death etc. handle_regular_status_updates() update_canmove() diff --git a/code/modules/mob/living/carbon/carbon_defenses.dm b/code/modules/mob/living/carbon/carbon_defenses.dm index fddbd0d3cda..ab1c27ca2ee 100644 --- a/code/modules/mob/living/carbon/carbon_defenses.dm +++ b/code/modules/mob/living/carbon/carbon_defenses.dm @@ -14,4 +14,9 @@ visible_message("[src] catches [I]!") throw_mode_off() return + ..() + +/mob/living/carbon/water_act(volume, temperature, source) + if(volume > 10) //anything over 10 volume will make the mob wetter. + wetlevel = min(wetlevel + 1,5) ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index f9b61a3bd10..b6852c8a8dc 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -20,4 +20,5 @@ var/pulse = PULSE_NORM //current pulse level - var/heart_attack = 0 \ No newline at end of file + var/heart_attack = 0 + var/wetlevel = 0 //how wet the mob is \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index fac498d9219..00ec9e67181 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -231,6 +231,18 @@ if(fire_stacks < 0) msg += "[t_He] looks a little soaked.\n" + switch(wetlevel) + if(1) + msg += "[t_He] looks a bit damp.\n" + if(2) + msg += "[t_He] looks a little bit wet.\n" + if(3) + msg += "[t_He] looks wet.\n" + if(4) + msg += "[t_He] looks very wet.\n" + if(5) + msg += "[t_He] looks absolutely soaked.\n" + if(nutrition < 100) msg += "[t_He] [t_is] severely malnourished.\n" else if(nutrition >= 500) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index d8d12108b20..c2498a5a740 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -489,7 +489,7 @@ emp_act return -/mob/living/carbon/human/water_act(volume, temperature) +/mob/living/carbon/human/water_act(volume, temperature, source) ..() if(temperature >= 330) bodytemperature = bodytemperature + (temperature - bodytemperature) if(temperature <= 280) bodytemperature = bodytemperature - (bodytemperature - temperature) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 71226aa8bfb..ec2e253e100 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -108,6 +108,9 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc //Check if we're on fire handle_fire() + //Decrease wetness over time + handle_wetness() + //stuff in the stomach handle_stomach() @@ -547,6 +550,10 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc return //END FIRE CODE + proc/handle_wetness() + if(mob_master.current_cycle%20==2) //dry off a bit once every 20 ticks or so + wetlevel = max(wetlevel - 1,0) + return /* proc/adjust_body_temperature(current, loc_temp, boost) diff --git a/code/modules/mob/living/carbon/metroid/examine.dm b/code/modules/mob/living/carbon/metroid/examine.dm index f8fc23ad2e9..38087b35795 100644 --- a/code/modules/mob/living/carbon/metroid/examine.dm +++ b/code/modules/mob/living/carbon/metroid/examine.dm @@ -32,6 +32,20 @@ if(10) msg += "It is radiating with massive levels of electrical activity!\n" + msg += "" + switch(wetlevel) + if(1) + msg += "It looks a bit damp.\n" + if(2) + msg += "It looks a little bit wet.\n" + if(3) + msg += "It looks wet.\n" + if(4) + msg += "It looks very wet.\n" + if(5) + msg += "It looks absolutely soaked.\n" + msg += "" + msg += "*---------*" usr << msg return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 8b11c8a1b2f..afcb48726bd 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -42,6 +42,8 @@ handle_regular_status_updates() // Status updates, death etc. + handle_wetness() + /mob/living/carbon/slime/proc/AIprocess() // the master AI process if(AIproc || stat == DEAD || client) return @@ -285,6 +287,11 @@ else Evolve() +/mob/living/carbon/slime/proc/handle_wetness() + if(mob_master.current_cycle%20==2) //dry off a bit once every 20 ticks or so + wetlevel = max(wetlevel - 1,0) + return + /mob/living/carbon/slime/proc/handle_targets() if(Tempstun) if(!Victim) // not while they're eating! diff --git a/code/modules/mob/living/carbon/monkey/examine.dm b/code/modules/mob/living/carbon/monkey/examine.dm index 5cbb5c6c7ce..9c9d0ef5082 100644 --- a/code/modules/mob/living/carbon/monkey/examine.dm +++ b/code/modules/mob/living/carbon/monkey/examine.dm @@ -40,6 +40,20 @@ msg += "It isn't responding to anything around it; it seems to be asleep.\n" msg += "" + msg += "" + switch(wetlevel) + if(1) + msg += "It looks a bit damp.\n" + if(2) + msg += "It looks a little bit wet.\n" + if(3) + msg += "It looks wet.\n" + if(4) + msg += "It looks very wet.\n" + if(5) + msg += "It looks absolutely soaked.\n" + msg += "" + if (src.digitalcamo) msg += "It is repulsively uncanny!\n" diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 1a3bfc3f05a..cc1808ff6c5 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -62,6 +62,9 @@ //Check if we're on fire handle_fire() + //Decrease wetness over time + handle_wetness() + //Status updates, death etc. handle_regular_status_updates() update_canmove() @@ -660,4 +663,9 @@ return adjustFireLoss(6) return - //END FIRE CODE \ No newline at end of file + //END FIRE CODE + + proc/handle_wetness() + if(mob_master.current_cycle%20==2) //dry off a bit once every 20 ticks or so + wetlevel = max(wetlevel - 1,0) + return \ No newline at end of file From 6cda382c5e343fda04615ae7cfc7fd356e20dd0e Mon Sep 17 00:00:00 2001 From: Robertha89 Date: Sun, 10 May 2015 17:10:17 +0200 Subject: [PATCH 38/38] Adds service radio to ai Fixes an oversight. --- code/modules/mob/living/silicon/ai/laws.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/ai/laws.dm b/code/modules/mob/living/silicon/ai/laws.dm index 8e8ceb33c3f..c8670539eae 100755 --- a/code/modules/mob/living/silicon/ai/laws.dm +++ b/code/modules/mob/living/silicon/ai/laws.dm @@ -67,6 +67,7 @@ if("Engineering") prefix = ":e " if("Security") prefix = ":s " if("Supply") prefix = ":u " + if("Service") prefix = ":z " if("Binary") prefix = ":b " if("Holopad") prefix = ":h " else prefix = "" @@ -158,4 +159,4 @@ list += {"
Channel: [src.lawchannel]
"} list += {"State Laws"} - usr << browse(list, "window=laws") \ No newline at end of file + usr << browse(list, "window=laws")

Endurance[grown_seed.endurance]
Yield[grown_seed.yield]
Lifespan[grown_seed.lifespan]
Maturation time[grown_seed.maturation]
Production time[grown_seed.production]
Potency[grown_seed.potency]
Endurance[grown_seed.get_trait(TRAIT_ENDURANCE)]
Yield[grown_seed.get_trait(TRAIT_YIELD)]
Maturation time[grown_seed.get_trait(TRAIT_MATURATION)]
Production time[grown_seed.get_trait(TRAIT_PRODUCTION)]
Potency[grown_seed.get_trait(TRAIT_POTENCY)]