From 4ec5d79e97bc88bdca8c89c1da9378a798e18350 Mon Sep 17 00:00:00 2001 From: Alffd Date: Wed, 19 Apr 2017 03:00:50 -0400 Subject: [PATCH 001/244] No more Human Vulp. --- code/game/sound.dm | 3 +++ code/modules/mob/living/carbon/human/emote.dm | 25 +++++++++++++++++- .../living/carbon/human/species/station.dm | 4 +++ sound/goonstation/voice/growl1.ogg | Bin 0 -> 10931 bytes sound/goonstation/voice/growl2.ogg | Bin 0 -> 10464 bytes sound/goonstation/voice/growl3.ogg | Bin 0 -> 11074 bytes sound/goonstation/voice/howl.ogg | Bin 0 -> 22339 bytes sound/voice/vulp_yelp.ogg | Bin 0 -> 18645 bytes 8 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 sound/goonstation/voice/growl1.ogg create mode 100644 sound/goonstation/voice/growl2.ogg create mode 100644 sound/goonstation/voice/growl3.ogg create mode 100644 sound/goonstation/voice/howl.ogg create mode 100644 sound/voice/vulp_yelp.ogg diff --git a/code/game/sound.dm b/code/game/sound.dm index 14269acb81f..8033e928173 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -15,6 +15,7 @@ var/list/ricochet = list('sound/weapons/effects/ric1.ogg', 'sound/weapons/effect var/list/terminal_type = list('sound/machines/terminal_button01.ogg', 'sound/machines/terminal_button02.ogg', 'sound/machines/terminal_button03.ogg', 'sound/machines/terminal_button04.ogg', 'sound/machines/terminal_button05.ogg', 'sound/machines/terminal_button06.ogg', 'sound/machines/terminal_button07.ogg', 'sound/machines/terminal_button08.ogg') +var/list/growls = list('sound/goonstation/voice/growl1.ogg', 'sound/goonstation/voice/growl2.ogg', 'sound/goonstation/voice/growl3.ogg') /proc/playsound(var/atom/source, soundin, vol as num, vary, extrarange as num, falloff, var/is_global, var/pitch) @@ -142,4 +143,6 @@ var/list/terminal_type = list('sound/machines/terminal_button01.ogg', 'sound/mac soundin = pick(ricochet) if("terminal_type") soundin = pick(terminal_type) + if("growls") + soundin = pick(growls) return soundin diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 7b325eeeb8a..1a93e891217 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -36,8 +36,18 @@ if("drone","drones","hum","hums","rumble","rumbles") if(species.name == "Drask") //Only Drask can make whale noises on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm + else + return + if("howl", "howls") + if (species.name == "Vulpkanin") //Only Vulpkanin can howl + on_CD = handle_emote_CD(100) else return + if("growl", "growls") + if (species.name == "Vulpkanin") //Only Vulpkanin can growl + on_CD = handle_emote_CD() + else + return if("squish", "squishes") var/found_slime_bodypart = 0 @@ -85,8 +95,21 @@ if("me") //OKAY SO RANT TIME, THIS FUCKING HAS TO BE HERE OR A SHITLOAD OF THINGS BREAK return custom_emote(m_type, message) //DO YOU KNOW WHY SHIT BREAKS? BECAUSE SO MUCH OLDCODE CALLS mob.emote("me",1,"whatever_the_fuck_it_wants_to_emote") //WHO THE FUCK THOUGHT THAT WAS A GOOD FUCKING IDEA!?!? - if("ping", "pings") + + if("howl", "howls") var/M = handle_emote_param(param) //Check to see if the param is valid (mob with the param name is in view). + message = "[src] howls[M ? " at [M]" : ""]!" + playsound(loc, 'sound/goonstation/voice/howl.ogg', 100, 0, 10) + m_type = 2 + + if("growl", "growls") + var/M = handle_emote_param(param) + message = "[src] growls[M ? " at [M]" : ""]." + playsound(loc, "growls", 80, 0) + m_type = 2 + + if("ping", "pings") + var/M = handle_emote_param(param) message = "[src] pings[M ? " at [M]" : ""]." playsound(loc, 'sound/machines/ping.ogg', 50, 0) diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm index 10e39022315..295e7ec91ab 100644 --- a/code/modules/mob/living/carbon/human/species/station.dm +++ b/code/modules/mob/living/carbon/human/species/station.dm @@ -169,6 +169,10 @@ base_color = "#CF4D2F" butt_sprite = "vulp" + scream_verb = "yelps" + male_scream_sound = 'sound/voice/vulp_yelp.ogg' + female_scream_sound = 'sound/voice/vulp_yelp.ogg' + has_organ = list( "heart" = /obj/item/organ/internal/heart, "lungs" = /obj/item/organ/internal/lungs, diff --git a/sound/goonstation/voice/growl1.ogg b/sound/goonstation/voice/growl1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d5152d9c0577ed845ce091000b6dd2285ffcb790 GIT binary patch literal 10931 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 literal 0 HcmV?d00001 diff --git a/sound/goonstation/voice/howl.ogg b/sound/goonstation/voice/howl.ogg new file mode 100644 index 0000000000000000000000000000000000000000..778fd6b2483b3c69ecb0d18fdb435ee3ca38e4f0 GIT binary patch literal 22339 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 G0Q?s&1Ggdo literal 0 HcmV?d00001 diff --git a/sound/voice/vulp_yelp.ogg b/sound/voice/vulp_yelp.ogg new file mode 100644 index 0000000000000000000000000000000000000000..740fef48cabb01169efc7c22acb1f71264a01564 GIT binary patch literal 18645 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 Date: Fri, 5 May 2017 14:42:44 +0200 Subject: [PATCH 002/244] Fluffs --- code/modules/customitems/item_defines.dm | 79 +++++++++++++++++++++++ icons/mob/inhands/fluff_lefthand.dmi | Bin 528 -> 718 bytes icons/mob/inhands/fluff_righthand.dmi | Bin 568 -> 667 bytes icons/mob/species/plasmaman/helmet.dmi | Bin 35027 -> 33400 bytes icons/mob/species/plasmaman/suit.dmi | Bin 46186 -> 50532 bytes icons/mob/uniform.dmi | Bin 342050 -> 343798 bytes icons/obj/custom_items.dmi | Bin 72645 -> 76174 bytes 7 files changed, 79 insertions(+) diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 7a9620a1d1a..5f0d2ca58cb 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -360,6 +360,75 @@ return to_chat(user, "You can't modify [target]!") +/obj/item/device/fluff/lighty_plasman_modkit // LightFire53: Ikelos + name = "plasmaman suit modkit" + desc = "A kit containing nanites that are able to modify the look of a plasmaman suit and helmet without exposing the wearer to hostile environments." + icon_state = "modkit" + w_class = 2 + force = 0 + throwforce = 0 + var/list/options = list("Blue", "Gold", "Red") + var/picked_color = null + +/obj/item/device/fluff/lighty_plasman_modkit/afterattack(atom/target, mob/user, proximity) + if(!proximity || !ishuman(user) || user.incapacitated()) + return + var/mob/living/carbon/human/H = user + + if(istype(target, /obj/item/clothing/head/helmet/space/eva/plasmaman)) + if(used & USED_MOD_HELM) + to_chat(H, "The kit's helmet modifier has already been used.") + return + + picked_color = input(H, "Which color would you like to paint [target]?", "Recolor") as null|anything in options + var/obj/item/clothing/head/helmet/space/eva/plasmaman/P = target + + switch(picked_color) + if("Blue") + P.icon_state = "plasmaman_ikelosdefault_helmet[P.on]" + P.base_state = "plasmaman_ikelosdefault_helmet" + if("Gold") + P.icon_state = "plasmaman_ikelosgold_helmet[P.on]" + P.base_state = "plasmaman_ikelosgold_helmet" + if("Red") + P.icon_state = "plasmaman_ikelossecurity_helmet[P.on]" + P.base_state = "plasmaman_ikelossecurity_helmet" + else + return + + to_chat(H, "You modify the appearance of [target].") + P.icon = 'icons/obj/custom_items.dmi' + used |= USED_MOD_HELM + + if(P == H.head) + H.update_inv_head() + return + if(istype(target, /obj/item/clothing/suit/space/eva/plasmaman)) + if(used & USED_MOD_SUIT) + to_chat(user, "The kit's suit modifier has already been used.") + return + picked_color = input(H, "Which color would you like to paint [target]?", "Recolor") as null|anything in options + var/obj/item/clothing/suit/space/eva/plasmaman/P = target + + switch(picked_color) + if("Blue") + P.icon_state = "plasmaman_ikelosdefault" + if("Gold") + P.icon_state = "plasmaman_ikelosgold" + if("Red") + P.icon_state = "plasmaman_ikelossecurity" + else + return + + to_chat(H, "You modify the appearance of [target].") + P.icon = 'icons/obj/custom_items.dmi' + used |= USED_MOD_SUIT + + if(P == H.wear_suit) + H.update_inv_wear_suit() + return + to_chat(user, "You can't modify [target]!") + #undef USED_MOD_HELM #undef USED_MOD_SUIT @@ -560,6 +629,16 @@ item_state = "castile_dress" item_color = "castile_dress" +/obj/item/clothing/under/fluff/xantholne //Xantholne: Meex Zwichsnicrur + name = "Stripped Shorts and Shirt" + desc = "A silky pair of dark shorts with a matching shirt. The shirt's collar has a tag on the inside that reads 'Meexy' on it." + icon = 'icons/obj/custom_items.dmi' + lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi' + righthand_file = 'icons/mob/inhands/fluff_righthand.dmi' + icon_state = "xantholne" + item_state = "xantholne" + item_color = "xantholne" + /obj/item/clothing/under/fluff/elishirt // FlattestGuitar9: Eli Randolph name = "casual dress shirt" desc = "A soft, white dress shirt paired up with black suit pants. The set looks comfortable." diff --git a/icons/mob/inhands/fluff_lefthand.dmi b/icons/mob/inhands/fluff_lefthand.dmi index 84380f038edc280645384c635a2e438ca514a7fa..209f7660781e0df6989f1e6b491bbde22f616b0e 100644 GIT binary patch delta 576 zcmV-G0>Ax`1kME|iBL{Q4GJ0x0000DNk~Le0001h0001B2m=5B0OF*IdjJ3cNRcHd zIl}+|?d|Of3JM<|AM5}C*x1-DEiDEH1~M`-OiWBHEG(%30iPRRX8-^I0d!JMQvg8b z*k%9#0F04kc7F*fu1L%)$;i*iOU0#9S;5uM1?+49k-<0ax**N>0004;NklLR$X+Kb@0p8l@>o+(^@=`yNus_MMLs9ylBT004j_$J4L*oQ|KT zRQX&h_4!uFmHQI>%*Q@Y`Tk;`M;E#BsZ-)2R_43bnSU%J_Zn3C=~bmxrW~L6%v+@d zX`fn~0000000000{8f|==d$Jxts>L=z1K61e%=;zT;H1@<{giW{IzH5*#Zg9(q^CXk+;KvL*_UM~(Bdmt*F*twe3WiA5Ams9)?@*4 ze3ZYce1A<;q9#g^<LAKSHU+u3AILM0##Vwq=^%b<*y*EAIMq1+)XZe2`F@I zm>P=r=jfHc0X`#b{BI@-eMefbKS$4fx>EcKhW-@#n*oyncIpB6*L(oBSQsp@y!x5| O0000T>_;5 delta 385 zcmV-{0e=3@1&{}g6hoSf zkKjcNdDoa{u*)?g6en!zY+f;ups2?06m82oV#8#Gx5qdeCVN3smJJ&wD?ZQjwUX?d z_J^aItlX0HswOLs^X0B4f*=SJ(hfMJHyyA8-gZDD?SKU7gx-~KPUscjoFKtEL4tIG f1nC6HFFD}}t&2S`tj+&`00000NkvXXu0mjfWu2l7 diff --git a/icons/mob/inhands/fluff_righthand.dmi b/icons/mob/inhands/fluff_righthand.dmi index d93ab0ffc683824209883a16dd27cefe19e38685..d048ff860034d2af5d4f584f893efa3ecbaa45af 100644 GIT binary patch delta 525 zcmdnNGMiPkGr-TCmrII^fq{Y7)59eQNH+j+0tYjYe6*yi8c2CeRMoIN%)s#W?OQG` zE_r$RHw+9nZrsq-)n#L2Gcq#r@$u2o(OJpJ7`OG*1fY7xk|4ie28U-i(twbK%&hu2mwV2|{PTHCaW_hV<~lGhFE0F2v#Pr6LjC@t{B<$k zUPQ+J-}~EtM#I(r-~T4PdD{PP=kL<}&kFx$*WWU~VtX$5x7MDv=RVPSwb^DL_SA>+ z15E*e2TMCPcmz(H`n{{_$0?exSYLCUpjVUSbHr#`>@W*Y5g~aZkBGBSJ$00001bW%=J06^y0W&i*HfsuxGe{m^RR&e!m0Xqf&C{QbWKo=t|0003p zNklo3kSZ2t zo{rWQ!f+QSw^T^=H=X|f&cB`E0^sqSgfXGrIQj$243h6dMvj0HQ3s9)JK(3L?r8|^ zf7%L5{x(vEU5C)k?;gjqIRp-mjJS0)Ty%tW`5uqwya>6A%(cI1T)zl9BH>1yniS#` ztKw*oL^;R;t1<_ynxp1WR_HKM=YUmBrl4LUD^v3URyEVRMop1Lt0w$l34A3|HP*Ii zws?S4HIb;QNl(@AyjVWSl@|FMz@tPA6 z)vHUj;0$b3`MBW>6o&!Um1bo*V|}KHlts!JxLRiSoPM~j!~<(!xZl0A2L2UaoYXm3 T^N)Q=00000NkvXXu0mjfJ8QCY diff --git a/icons/mob/species/plasmaman/helmet.dmi b/icons/mob/species/plasmaman/helmet.dmi index f4771885c778e1b3d26a2d8cb8494fea5c762339..2e5cce0425691d38d481a95e68de4aadcb02393c 100644 GIT binary patch literal 33400 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%0ARq-MPt$$MmKC?3 zfFe&Tpq|DTrd;%l0^C`~8nAlqVbWsmwMJIS-?F6i?%g||r(u;04&uC0W?R20S#d^d z{@4V%r*;b4Hk}ILw@q69JuL=!@Uvrk!0x35ga=3;?b52v2kX$gtw@g}5= z5YiiNMsTV0X>Sw=oR3GIk&;?>qYJy9|7IUNC3;;#yuP+6Bjt+-*?uB}o%f7Lw2Zqj zGYi2ej%3p>uPxEzo@V0@TG^*TjYB-14+<(N1ogSG?Za^@Rn5yS{NDaHKV`QTc1Nm~ z_%ng97c?0RlO?)vZ&axplnG*9TuHO%`E~FB2vsq{iU#gXnk$z96d=Rv_d%!qrFcW4 zWZPKI;PP^*d09-%seEnTe1nV*y|~ejk!FZyiKSPHi^7}}*yk-THlB>GuClp=%D;@prCuTU zZv)d}I4#MZ{5($L!tKx#2oa4S&xk2>5P;hbhrM{Q-=#aX^`N0@IJaOgnj55PU;uMz zz3{xw*yYk-?#m?qBI-!bbCWT>mrC6gvqZDO&R{Gu7t83r%z$(SWD@dWz+EA3 zxh-_k$IQCMqp%wT$80W-n3!6AequLt=rI4c=1}Ae9)oREZviV{s%xK5s;>8H{+XZO zAO^}(^MlBG!4}gwm%PSDoroqTCd_J1Fc*WiYFobU7_H#ZpDY)oPwB7CE~y5dL^~0i zG9YZ`SL_8K+wqC^JqH7+4anMhCczX+oKaF)P4L9bd0$<_D@e4UV8xXndc(a6PnY!N z!yHjku$~@Gt+d_F@+XJ20=wufFW6%$n?C5*_!>SwM_T|i`{0QepwIv)Utn`?amkE9j@|@@fi4#O7cxLM+nAA}W(a3tYm#dlDm~LMz^)nC2c4%LrapKY z)zne6xN-1F}KNt=~nwN~O!`AxGFw{4>W>}P=SkLmcJspd@ z-G<%>`Vn2jmR=egfHg1T`rNs@4JU}d*q&-jXa6&;vBMdxz7Zd_OP>%m%>T84J_!M_ z&xy;?-}^+b0Z9{RJYbhB3%rjMXBx}FR7)H!Aj5Fs<~n)){PVlt^XqvZfbueC?R#CF zQi-FZ(rlM;#XhGWaX{Mx^guusq+4ts@p-5r3FKEm@RL{7d^{Ku%6WG!-huQ?R;*2@ zJU>553{5k#S_ZFQ)kt7AAb%$KA_EjekH>M>tvtUVB&h9QeT=m!x=f-}M8a>~jZrHg z{h&bTL~ESR(#weiNIF6PJ`+%)wFHQl4F!JeN!4d>ca%b@z8ZOE)_;d9An5>6A@v zXsdqhjj8Sd#Oe3ruObNiCf4Rra-q!?+l6OeR%`5+IF5X* zF~$An1{t>+UD`-4X2VRQo2h5id35xCbZNMxY8Knfe%5)jO&a<~vcl1FlcEJ%;HCK~ z&vt!dwlsuc1sWvj4N`GQ)2;cd($2#%X4rCY=0+uBZ0 zF`XkIlWsPf!2wHsX>h68zYKiM;~uS|IgO_Wi|n{N%q+xx>FyR+P%xjzlZt63Ca2w- zg4=GQ@5KTyHMN1SW#SJ~Dzt`4YuRvfq#7BQa2gaX($;W) z#z|q2D@K&}x!WC`aSq&Exs9~XL8Rh!6VCnsepQFnHj<-owe9(VATg8BHN^$wy?7ev z&mM`Iq@aPC1|%r5p=SKB`uh4*pX$l`^}s02%xt*Zf*KuFqe2=L^1Y8IRKn=TO791Sw+~^u^3J+s5!xm@`snQqPJ85)!A(DNLL?Si)a^!)P zm>0Ltw6t7#xJfsH^PM@6D15!Q84g(L0=JC%}w}z-(Q+b%jjdr9KtLX z&OdwR^WhO0Xhs%TsoGjJ4rC?e$yqQy+Lpm(K5QD=sqzvdm5+^3BT(!Y8C0IGFZUrlx;#?_1`pPhLj_>gFk>{_8*t5FQ>*w4u@Q^%p%ot`}I?+3D|JEL^D2#htiLYH9Kj z-*4K)Xsm7^i0XTKma226q`0|pa$-zI>b8qZOCK$4w1_4C;5c(Oh_|>;_r_W&8(W={ ze-}Q~W_mbi=8+QMgz{hGI+OIw4iB2#a~zO`!^}%wFL*396xJitdDZJ~6U&`YgS%`^ z&6e33)6hVbF?*ZCsJ`$i-^YhxZrEwKgxs4iOOT(JySsbJ%RMQSGiSLkmC|vAQwTJ~ zyW4wp{rlaXwlbvb4wyWUkj0U8&ihn&^$=6ou;D0fMh}w-%YIL6H+y=Az<)>Y%TGDZ z#?cD_g4<5xe0|Cv=mbtKJ>c_CRL&NA8&sLlV3w3*8p@)fxv?u8gAvQ{XfrmoY3?vV z!pim@)rrJB3xf%am^YR|C5Sm0hEw~mH+$DjtZ{`iB$60!-C$)f_hdsdQ0FsGF4oG| z$~LAFG=F1_%sym?v}*%&6ePi!rmYX-SY_&<0tql36#@=TI9_@}>#krfuhx3v>L(bO z%=Myg+xqelVvT|R>ct``cH!JYMO;ytA>XA-uXz-NH8dj%7q$;wv)c>`K{)yTEmS7* z`xy-KEsq=+limwJ^B(2O#PgaP%ikja=L4vXTL2evsr)%xfZ4hnQ_XkiD41F5ruPMr zwqe)`nG7}o;N&ETpGusfkn^~ z1YV7{uE)1iIkfc_e^u{100M#UdrM}4>Asdq(g3S(8#&S2d83H<^ zEBy;_OE5EURgqKi+)V{uNKQ<3g+h^d>mhn=t}{0!B}Eq{@GV81a4Ry+fyC8f5!9#U z_x#v@%}NNZH~uL7NrW+yV7ZNBBHFrYPV$clmymi7tAu%XK8vAgbY|#V>1GW4PIzpZ8 zj?^l!RWtz;NRBJW^)!SxcTXn3if`BSyf+*|~ach2^T|NKhp23nm_+rZ#2_ zc;Z480&rSMZuq(D#vhrt0FqHq@_RaoSaH;(Yv}4`lPI+q#WnHj1@x?zWM+;dhU}a` zgHdO{jM{IAN}Ts|e4{aW6XB=_T4`h9$j7oVBoji?11!ig4dLBjA$g38(M8TOUoU}43{O+j(xwQ3sQBOM!f})+ zbpZAVupHy5f*JfJO7T>X=>=>pJWJs zr3ZKEQv6HZv^m%E7m0~~%5S!$-ls2rynbiX1*Hn)y7AKMHb^;m4N&if{3E$&9wG|> zL`P_pnP1!my>UqPU7(-*#if7p!i8RUPDjK5Q#b2!G^EtLct^705$a-t%ct0mHlOat z!qq7L&LDSqf6*h0zXLv)iTdi}&USGe`-){TKN|-J2+8^mPS58~fYiXrmgWBNBM?r3 zIL*Fr44;FovMx1`TL%9cqami5pEDdUO@qN%cd5CKf@o-My&#(A#=^48^5E<*suK$I z?Yos`wEZ@a9gBa5asw(G_FrVsTnP-=dnR8yna2r{m zRGQ6uKt@`61JpmAJ=^}~m^R>{xEZp?Pni!g^36&J5kCSn=Ty|+btw?gEK8QEBk$;+0HIxM_llK zjaohL)pJ5^z!>ds=>D5uZ*yqy{xRvN00alaX;6nnqpeHgc$_@h*f}MOMGhUk5nZkT zqtR#p&$Ima0o2%t1NB1a&iYOBk5}s9~&|b`JWVk>Rt9N&PZ1SIfo+?Ew^N!waVs+1$o>g&or@GEl zn9npb@~A(V0&Kf14-u#*U?E8s`k=uNEQKm>dCG!rTj~3(V=gLnd8b)%fxrqh47G{LNk&#d zGv7B|4HQ5jO9w9lmYuz<%EN$x@()X3ohj`%tCiG1&dAKXSBPBUd<_Qd2ZV+VtU{Rv zFu(7!?R{aZ0s}F;LY`s@S8bYtt9On)&_BtuboE~bsuHh(_hToJ=wEvF0jKK-A4x%%Mm|BxBKp-F| zpt)}{qr*Dq9Tyl3hSt&2F#T_j6n{skY>0Dr^@q^|b_NaLP+&UO47AFwIz0RjP|+Yg literal 35027 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%0AWmGYP%Gh4B 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 P2zV&UsmlJ4HVgh=6m4<*%auW{H z?d|8M=47kJoOu*HU)o)80<VmzY71 z^NF0TAil{&aY+nABlftd>;}0X?3ss#C*W~$wC$vlORDY~i4UIFJl`F2w7{cOv&H!p zLDkrn);*ur`+n>%rjd? zv%F0Hw~9=KDtNZW>XP{832%t*n6@jeGeAVmYpFsuS_Itqn@@A)-x7yG(w|C!`Pl3k zUjj5j3|U_{*Sr>^=P}h!p&H;}cul%5y@plnFmH-k(qDuhac>0le4>g}$}ubA+y_BrrCs|Zz9^;UcS|Erx_vOtQ!I9%c8!tDy*+Dc|nIY9d*rl@RxK zjr9XKEcA?M?bJ%;10(O&NhAK{kB8&3B&vMN(P_y^4w7dVgm6b((RoX0jV@KQckF|S zP~Y+kxSU=yyL(_Dk5S{?B7K`M-cn3YR4?iPSaW*^k_srPfjDK`QU&yC9KmvVs-bIm zQBpc@R@=xR!DIPNv8(81>W?+zTn)cy@t(~-2UcTCq~cng6D6syuCrw2!{l=c<&#w# z^P}P!_3j0K9&3fgq3@Py^~L{|^B>aw_-S~nY-0$+C~kU|Mo&9ycpQhA7ItUs>zm)Y zS#9{V6-geY(%{+_cOZ;zm>1GY7vCk-^|SpM63_9tL{{k6(`VK8iTvgbSWhORBJp5s zB?49MhM2!6S;&1juz%>QbhR#FLsUYeUb2K)r!{mtbNqDXY!@<1`9iLrSFIJRSb2fx zu8~pA;CGaA3*PPvA$!2@hr@{2OMBY-$ZBIuJ68vO7m(x3@J?8sr$_Ehz}eNKZ-vNk z878JuE7_L;eThdV}yjB2Ua%8cN3puo53vN&^z}o z8L=E9FBq{Z&U`DMqrXXq26Gp1EFWbpTGgtOtJs2BhqGziS|+ehNh&m%Sbz@^;1=s~iS%x;!O2@*tJjr47co7%5n+W$9ya zt%29xp|v%!_X+x`=1lkY%zvdux{Z1Bpn0!OLxRtv)@9^lSJBMt&lIBJ0iJ=k$+xLL z*Y#sTYLP8jTC_6?E&&}KvTiY4M3+)LQR$^)>}nUminwX0d>g*ij2dnXiM-IW7Z)!{ zwoZsJXVU^-%Y5M~pi@~ zsU|L^D`(7?*6ha1K_U#Q2_kpG?!Ah4AGMa7aJuDTGVf=1AB&7XzZQ$h`4x)vuRP?v z-111xo4WuGeq({einI0-u#x0T03I0Hr{{6G1SC4HT+uSTC zKn`Awo&v>ax39n3P23;Z{_LQ(7sLrR4C+pK(1gI@hr6sld&*O8M;h)e!CuW^!wsSk z9)r5PP7RyqACmhYA}n> z_xjwkjK61TzE$P0&Yu(O2Mrp%6J4-R>1el3sCi;Ocm0iKvoD%Ej=bwMYQOtQJ=W;1 z{!LhP&(X5W<}!6Pp2e9eO{cN=&Z|x;yH-kt1;a+|RY6*bopjcDZ`&C4`X^#%BL<2{h-RI>7B-2k!`Sp#Yq3~-W@Ldx2ixY#*iqbNZb4#>nqr8+TBaE zp$uXfp389;{2FSJ?IdEmZC=*avNAltc`@*TIUjY~>jATguas4k;yJ|9($YmS0GCHc zw>1=~sW{{@aw#N^ii!$;NL8T=HqMQLE#MKM=E*t6TN3o}eEN)G)6p~U!ah(!b;e$3 za702-Mf$^NlsR8mck7w_iSRJlgBYB$GJj+stMkkPuTeE+R#uj7v$M%8L~?q1`q$2m zjFOU)$y1WLXkM&xgVUYwVaa;^UPA8L*)u^u>+B_kMEh`+PB!%*n%6v z5W6y(TT$Ux9KPaoVszQ74-*tVoAQd#5H-&`em2DrS@=+NkbhPC;b|8o_uZWGs|7Wr z6tXFhGOYhw^t>KD#eKF+XNV?vos@LYJU`}6>*3g;HRnA6nOum=BL9scU65iJjpw_$ zroG%b%6`4v+S_sbo8$0evdzqH#trmj?M!$+r`58N6~ld7WA_u*s7K+4F=oy#go0Jbuzwv-=hL9xK4GB)g>?J(5uGjQw-J(RjE8Dn-Ut4W1cYd?4F(B z!vSIk>;>k=F556ty{tbarZqO6b4K$Px{ zm0N>_lsQX_%NgCk*XuF*LQ@BeJwdLT0n3&SwilotvJe!xZ{sF5mjdFuyp&K2P!F_XbmHIH=ZWb%WA9L{jzy}?-Q8_oRjJCKQnYHX)2qT zmsT=Qrix{`bKuuKaWLt)7&-sVS(*^0_3A(#nlQ;x(7)kZ-19)g`=+6xfj))b z13c^wTXlJY`s#9QGP^w9OkR7_iEtlFCq{ws{C-*|F8^EU=w|i}`OMPKy2y+D_G{h2 z;@{9IA%vwP=*K4X<5y11a#l%&sX0VYnOy9KD#2#@u(Rt(X<(yvrRvd-+)XHly%1_a zgO-WF$tgGkOpcQoK{J;Ij!ED2Rjy7(%C&3E&Tu;5{A6~t>qlEZ=5 zPBV(p5k>dN25Cu!jF0~PDqWMF@VOW~y;0=OLxV%=qhiKahiN3)7qd#i+mBo%;!y*n zQRC2)lI(F4Y^3x-_VEi@c)*qnBlj3-q5Y)LnKJ#=*VwH+N}id|gzE)AMPQ>X z(Ow<}Ql)sZsFNzoI(vU<|`DSBt=kWP?12Hah@ zD~$7s35RvGP~E!q)BUj_BQGY|HFevYX^j#^GRkjAu!wndAlQ9WspT zc^#zSFB0F~oi`{MuwV1P8O(A@E$e@U`+6+HPzv|g<*((zc=J7*vGZ|QpF9hiE7_sj?tlTZx>*$MzWJkT?hJahP&LNjMu&I`B_p6*jZ@PK74<-C$re$Sh z+?b&i*d(MV(%a8Urwjk-0DgWyX=L0Jh+2pxn2?_FU&=SjJSi6@rG18u5Ke5x{M$OI zQpu%-8u$+t(F?u(uO9u{9{9ub57DlGGr->ojL^PXG?~BT7HNj@--KUO{r`%AnlR2A z{lDwB&tZ+Na)FoVq)~l%h`?^Zs2%AwP==h$5rY9;IWOAn_0|_$3a6$2W$RXGf?<7k zeXd^q+*iEWfV=H*6nspcPH2VPF~}?9h#z2X{5fOs@}B9)(}>Tx zDYKOo_(x09@#hNRPsb!maSSfMCN1|$IG_QX&<^a6Rnp0z#jlUih-%OAcWfzI|55!*9YNC%LTzo* zC^hG?=;uR{<+%_NS zguk!9iJU#*qanKghTsQDm<$OKoHR_vdE%NCzaCF8)9rR3U&OV)hL8wOSifz-nRR0I zNA-u*CZ~q9j9z`ixbPl%mV^WEb`Td1%TQf%ra~nXwYmh{Dfk2Yj(t0=P{o&ladZ*= z^n-jFo0zBvAmbjai_{gfRP4xGJAK12$oKi{e$W1y^s564K+@HfpN0rWwaue;v;X$9 z4<$al=iU0cCGfUmaS#=8Ngj0)>m`r7__S^c{^QXo*K=T*2D}eJHT{E#6x+jIS9q?C zS4k<)UGm8|)#5xhyt`pRdhQgcjbsZCaDzt4^ty$%5vdHWL~IZ(Q9hpjM3tq*A$RoN z522|}hIMjs5^F(SR>qhxAgQhWr7rUF(z~QA{M1k_so{=hCNc1_s%O(#`Z*aYLqnOi zxQEaXftI^^u>zLTrsSEdNdFoUVmN`r$LHoEWf;*^COOkW-j{I*s7N!${ZUQ>^rV`f zWf8FV#kK9XDB8I9uVc|hv9#mQs8>;(U6+vpx$NvH1?*2Ep3gSkef?bfH+p|W1cz2* zWl*I*uZ+>-Isb)f2ybFJm(7dG2x43yb^1sIoZ@!^02J;PPTB-XF`y(@XTvl^m?$e~ zjJBcGdq1E%I@egkL8760B8!Y)s?eJ2^);kJ%>}UPIGGlS69qs%1iA(<%%A z<)l)R0-sH5W4z2aQE8lY`is=)jU7WcYCy^NL%TuSzpw#K_sw@$YzJ>3){1zFzErj@ zg<67soPtjR1ke0vf!I;oqBRkO#GNzQGbV}%lk+sEF3bAv?GqIDG!JCnKh~u})B1`G+c_MPJ?etW zvsRYAFGRIiz{+VF-kwrl$N5p|Hi7!=KtQ-Wr$u4%${ zxTN7*)){e^u5Y8mJ7M!li|ngsd%^pR8l429j(f?Os;nBNWGGie`b(JWg)HpDdzK_Q zk^&|-KSyV@zL&q|TQxf8c8TcFnDAXW^%aMM#<>ubA*o8_gi_eWiV`pGmEw0sI4BUy zY*@Pvthq2eh|w2EXL}ISv*v;Z$ZRCcBp>H;BdaX_-;Y&T=7Dg+eHcd)w?TD9woxjc z<@*KkTJNC~Esm&}gPVBEX5s30-s_dI9&H4`mo*pEsXOo#3+-P)<;sVkCk-m6M;*Qv z10sNa-;;VPt?5&{mx{ts`%gvGCBXV)xHTsV3P_`5V}~szXtK2QCXitS-#DM`1&+%_ z46X&Bo~mtY2L~>%Z+Q)kjZ%mcDRE#`+>Hkr-M<$6Wo??XgW-QOw(AVd3byR; zoIAkKdZ7km1YLj<=ajatz*Vx)w&+p66PDF_$b;513P4g;7K<;9pz3BM>tO_ky3=`*ycT@;Xv?Y0S$eQA*Gg-(J}q!B zyQEKJz?=_d66e-=`Qk~`^#b+&Q)fvi5`K%aUj8^6UwVKR2bxdty;3c7YL#aK5LsE- z;L-~znmPUQk`j}TyzDgMoW~kW>s)fQ%?FNdGziRMW}f=IqJyPGOlY)S zz!h>oBiUhf)G;&Umpnmt84%D71Zbn7f>P?d2uLV$MWK1bpGKhS=ccf9VRW;)$(W?b zptT*SGh&+SU5k>8N4=fO=t+cnC2^@1-e8VcyZUHp3^!@oP`ApnzbQzmDk{L%KpppF%I@8oI%OT1s3vwYx~_WIe>(+B!DX5(K?CkuRmz=Zy0U0XFJ5A6{%2Nb zys`_PE%>6h+$rTi9$_A;1wh5V#ExP4C<1A~cMpJR&{2TP$G4+xkH|jh2Yq#GPaR6iY}e>1 z{T4D{Y)Ut(+j(vR#lFq!q;=xd&yR|rAAdOK=hydOg5%BKh^RuIkd01Z*nSe~7e{N@ zuFdC)r|WxNuM4fFt$yH~?|!?_Ll*Yu?_dj!HF?AihUzS`pxihk3|cyB=5<)4Jr{F4 zCJf>l5Dp4ika1emU>G=?@ zuYDYRf$=xV8aLJ;%q`uMJYj5WFU8^Cvg@A{FX*6fa@y*CwW^(ru=l5b_2xxyV+)0e@#US+zDAR^A;07`$oi0dcSJ4q%#jIU9y8*6&iE?rksE&hq*bJ6I( zP}P@!x|5`|V&~W0F<4OFyZg6UxnJ;qlKxv_vEr8$RHUXZF~ zzb;M^I^0_*GN&Xw%U%Hc~& zSGNU{tThwdI+VqN@jJnm>S~yw3Fq_OgSx@<$ya6_-ObH;vxcR!4dz*zUMwvErcZ(q zUPm~O1(~&RUhfd)wis#YLDaPmo3 zN)^!&m5ao&&{nP+nR_Z|Ff(6K_r*!L0e+}q}+Cq3nm zF`Jv~TaSfRxleE2uiM|YU%V-RhceT$x99jUXJQIzaY<_98}J184XtQA#o@~V+1C;~ zzX@boKUU$%eN|8yLq`1z2=|xapC;rKD3_WMY`4Q?n9GKT%GQwYy-N38`*I*XY?^1e+)734YXkg|L3GdF0IL@d?dLK6?N|#NhTp24jzp11Q)EVeRbj*Zkz6X z+cuW_w$1OBiA9lg;q@p)*uYrSs7;DSm9}+pS#olcphEs+=0uJEcMILWef2MraZ{h? zA}1~ikeG*TQVm+XhKbv$DYmZ3K~Eo!%h=5(w0Q`Lh8iEFt>faGv1VrT)q?mvWVVAf zJZ4!6y4TuKBK*pPvfoOqrJ6gbBA*KX;Sa&&_atn8OeU#EtvV?|9$Bp@V482%Q(h_} zCBUmDqfk=BwK0`c`0O4-^5ZevkP56c5o}u)hLtnD=6~w13;5IHb5kV}m2>t+Z2E#o z9fQ!$(JL2xz0D+|eXj{_F4{q?qfm`ksI0e^W+TiB-0QC1Pb;2%Uh)5?Zg_b7Vp+Jk zl#+(;uR)|T-SuWugteq1W4VmBv?Je?x};*grx&{{)(Xc?lqp6qBl{7Wk>HG2S!18y zruMyA!PK8l^DH4x9_j)mE$eUKYGy1y5*I#y9*HJo@UQhMC1t|d3~n(4$HH4gzk0Gc z?6DH!54pm*K4UVnOWHXVySJ1l8+wnkrg6U@Cn|N_GntzdnL(d)e!#b_-zIM`EmL4V z5X`P{3>Qnvmb@{X))pZq{I$P%h1QSW+B5KJo4Cd7Ggi2)NGBgXHtqMB<-dhA%MtXR zRCF?-b_xVsggZ8SH0E5ipjZdm`|A?nwt2yEA(Mb6N0&eS_RA5G@i8z+ zVouC;4<#CQ&ZwD!M}M)BB9QuKALBsnC@!IjE?hiTU-IhjsFhl9UD`Zt5?c>iQqDpo zo0vKgLDB?&9bZ`)r`+ykkARtk?kCIvMa%A@)|a}=5eZc|cs&-WjG&;OrMmVrjc_pv zG^6XuDj8|MQsHe6H;;GuHdS?=!*QC~R1t?4v*G#W+EKHj8k4Qz`pUG0weD9vrYfWA zR+uX1Lb9(F%Vs^!tWR9m5B3JvA+VzX}*v^Wg2RdKG zCo`F5rzn_ZKhgY0l9@$*oI1CM&|6siVAsqkdm6W!Hs9b3%6*_#kIqEUx;9PQ8(Ldw zw=mU)O3Nlvntd>795zjvU+7af;LuYhYVtZ~y)^3$V-$1Vtz8%w#7{ab8Wu4`t@JghBg1j55ReweqM2gb-E2+j~(&+ zsNAoY$|z754hp&_Ko*dIsXQR5GoetB@%{xVI{sP@Um7MhDNXuoMmdL|73CK$i5s0Y zKtR~P+%DW2?<{N_Y%KkOuvjcKJX31LZBBLWzXzu`MRJpqNe2Q8FBh1c4t95n-#>bJ z`Dk+T(}8E^mJAN;ERw|SAuX*Gh^hQmekd`cPP0u`!fFv%`SDqNcdL z{rwyvNMEa2ghxlvQi8 zj`1fzt%Qw`kdnh3JB~~=&?19o=Sd(tdQg*x%_pgm&}@XJo{b3V==5%7t3SK~BVrw@ z!A{-0_CA(_i_rLH>1^=Uv5kAofpurc;dRdZ+s6Z}0W8J-EXD0cNns&B(I5ZYRAve2 z{Uszsd9^{;T)n{t-!BB&^QDb$4+fTu?o3LTe$DF5t{x;A_f%JvEov5P5x2LJ>-igcMFHmajh~u^1AUuj5zCvOgwTxBoidWIx z&Qr+nqK7(Rli$gxiWOZxQ0C^oOlh=5Pi;b?Vv)=hP3ao%ZkjzThMH+&LvJ5u4G8^< z%x%yR|H!T(4t`|c|A?_p!_pnYVqY3z>J#W=Y^R=o*0pt(*%tv>9h~B ze5Zx^%8c6nv9`4h=rnI#Z1ke4B^JwK(yHN+XQIFYi-4pE44TeE4ortf?)+hSv*BMn zX{t(4dU2iu|D1%vBVH>}VPv%Jg!fS6Y!hx z4-DRSt!Hv{bd;>w_F&sodUmYv>)jyzZ}8TalA5|o%FWJBsCK_<{%As1i`Vs*zm=sD zYrQrDwCY)EmJ*Obx;9)3(d0>2sO6-F1Scc~DalA&%_%a#UrQWDQueR}|}HU1bG6Qkdtfo=tdwup&^s%?db@)iB!Wtj1rS4Bu_pvoIAGMZy{$V#7-O{7$Sfbkz7dIvZw3 z@2QjF5r|`Zo{i3N@Y@J6qwypNbW*+DecAfYad%o6fA#S*viqhjfOk!PSRT7yM4aZA z*T*aI>~<}FXihp;8;8}x85E~uo@evP%%q@ps&;3_?fKd(9Ooa|hDdd_UQ4TePVUKz6AV!e{XJ2ZueX+RU)eKzPiuseWU;?Cd`Ldz{Mpb z`ukw-H{5fhqtFXiTO9rJda+353pU|Qa`J|L<11~w)v5qcT6f4VxhFKcBT~OD{CGi( zp6?T-0Bpj)vc|OLkxscEDfi0mnBuan>+uq?2UhHYo$Bxssw(LZhCKf<8UO{SyWOJ9 zn?q^aPhreBS4gUFXj{EcxZN8UU01WU2azcg$T5)!N^ zKS9>L!K`C9H{UvM&Z;bZ(rs;B-u!u=B(lhWA$^XvK^AqMw13ixnl~BcO}Rf{uU?#o zwy(4-4c%*f_a~>emX0`7>B8lDJb6h=k_yKG=teW7j7_A9$p?SBH??#7^{YGl-NJ6D z&Zai;zF=!Y>?wJlomt9% zdxKh1V9-G?fW~}yFs-|QnDKLek`>^-Dx05W(Cn+@2w5H+91MqI)cR3&J7ihz1|W>> z-D%0=-_`~y3PGWKdKOu3CoC+N8)|^DNuuWWxUD_wSj?A8E|G%8Po!I&e>cE_T|8^v zXaBGW_rJWmeDfFK_Sa^`c{&GMKfH<7H=nHw;BEv(baPylT=hg{q4? zXZP9)vKRoM7Mxx?nD?)@$LSK7Zrvb6ISqq6=}I-$R7<+w0U>%d`qYU0xZZ&C&dI%w zg0df@&-){Ztr{^(-_b0`Z!iT^m9f=9MkafOHQ0SIv0sdq0Pt`^FVpFnD9z`7h2?T-vW-<`AV-u%NUH${D0=(S zLA*Zp{;PfiImv*_X^{TxMm-&q?+-p>Hx!FN(Xxxwm5(51={xS7i%9^`w@m}6Orl8_ zsW@md(^)g&b*Oj~t zfpFIz9gQ%_(ij^XlkypQh8L^mju7+h8tw=^SneWSW@6QgamB3%B0cZDqk_FC19j^mo33E5GaEQ)Dp+cl%M|3u!mB%J*n@ASTsw*db_lWf(yR-aFDY?A^bd zj*FD`Ja$r*zAbGVUS`Q5XOOEs^a@Nv9k-WYjrg2!(Z9u&og-3Q`16qER__wq@2KHQ z)VGTT52>F~YEao+GL(fK6d{QJaS(StQ!?zaZ%9wa)HS%coS)?|9nR)n$t&+kNUP{% z*U0oO@D{({W$`nV1E`Us=F=f*L$8eH3G|iWI@SY3=c|Y+I16N%sVS~3vd;AGukH|B z%fNeU+hgsiNGNl9G&eplPtgl~p z{ut}(DnalVCn*AK?j0H;?m3fNjgzSH*=6P$9@se2!ya*Jx{rX*;+9gjs#wgmzOG1P>Xp_aGRpavFxE`*Gh-;A~;PteckG+J8a#TjD^ZKR3O4>4o zS(N(;n95~rUVuGU<9sPkHAEHbQ(S^wLnsE&p}_FNBA|AdueQIu@-wP<7i9t+VV#|w zZBCk+MBj^xl^{^`fSzc=_F>a4>e_D+`%gh+Z;lb83Igs5; z8RZq^D%v}Y^Wn|=+8-L?W?ru;SSX)s;3`jYGC=phTBLW=;7XB!6|3IpGvV_^w#LK! z%iMbJ*MHiA$up=~Rq{r+qSox|;keSb&Urqk*R#F_#~3Y%;S{}IYmhP}hx9Erne86w;UEtum_Sp)nU+knvZ5lo`2+f=UmvJDvi$}%9p@-@hwpXlP`=B-d^-SagcRH26}T+Efx`INaPepGOc%>k|=9!ZLI}_znJMBQq*Bc>6J{qvUHJRg5b$7yTfXcIwX^h+c90$fE9wdaE{y)Uv#F z4!=59CV*b%Qr>M|4)O#IixnmY`;N6zCF2IJoH>m_7}a1@RG8)ybfBZFE4QkSo)2(F z8HV5a(9QKAF#|mPmt^tpr_A0h$|ha%E6Gq@2I;~JhpBxY*f=gL^|;lB+1)!f+br3< zYCg`DN9AQS#jgftO7DJsP_%<=T+OUBG*8 zV<=YU`vO(OiHFp+=J0)few=5tr)uA>H5+~sX7^L-TwVP};iP+b7++SUBy_QAfE>SQ zDXYJO#Y8cvqvU&lddq`}p1pNKX;%_F6mv4L1$q|~SaDcX}0jFxy&ts{b)ykIGw zPMFQuz583kNq`>|hT*-vHOu0EOp1!+&7HveP%HusxTz0p;(sDvcqb-h`YoEaw8o>{ zPsfdCPCIGto)Oc(d`B1vdH7}7!bl%obskxIWY42v3Ia&SO~QV^Mp0&cBgWiGosqe> zqzp8Hn6G8@&oJLi=lAxhF9?}4%6Zo;tWgW-wM)W z6E;sq({$m6CDtsAsPGG$e~rC7ejioA(9&;-EF8FbWHykn4|8ZsQQh|79kwHb?I+BW zhZ&7BncYW=_QGy`=iI$f`SvRNWA*F@2e?>K|00<4xSpES)-0RdPoLe%*@IsR%G5Yl z)URK^YPK@HdbYAa=Ck%0>j&}R%*@OyBoyQ8o15g|YM{Paz~&N^$fzQ$*Q)?LLq^%q zkP*P0m*j8BaFah*y%He%c#Hv@rEBAGBDgibK8E1xv6+s&UdiHW+4t}2dQ*R0X7p2t zGoFPG3}8Y@9^P<$P_J-mZ`>RYmqNNi{%vW+xJ3uxQV7P<8%>a8PcG&2>|3D~L@&1Y z>Dvga+oO5Q>Yy+|(k5-sTt%H@N5s4atz51!z*=WdsJ*7BI}5)?r(IpXL@o01ve zLGUe3lcCCS7`3K@4*YT))jL^_%qV^R@?}yv5_Nq@0o*}#ZCzasmk*6zmzx&{3mSyj z7yyi^ zYfqbl*ulWyYg$_HjUp4}YT?LV7i0Dyg?76=t z3-}jscNeQDZJnwvaR$hPrh?fk*iApBv;KvDqPvlF7?ku_5Z0nT-jddd zRqZRn`WE=5=;=|wJ#L(q(1uT@pJ+(g1ce9K++W39NfiG&mPWbRXaLE{7-g2=r6097 z!`9MI>LH4o*B%FrYh8~X??h8@{5v0kuL;IKb~m=Gc3Pf$hMb;rX@!y`{@XXM2M-^5 zd=metVE6?)3LF3U*c_#*GS~sN^Ju{Cg=a@>4YAXa?lg{DCfFi1G#l)*Q*U4e=3m#I z62CEIGe%Ogr!Ub|lOreo>AVJCPn%VLnY2|lGGc;K$r| zoIv)Zt&Xm4U`PlyEg^Qgj0ZVT-usD`@@ zVlw?_y03^OwR*OEa~#0T<<8I)0^q(F;^S)Fm2<*q)o7IppT2R5QlHytYyPU)Xqn~Z z(VN9&+M+rOih$QK{Vs<|Xfs9!C;(yg=r-pTt=4_6&2f!U@rvixPNz{SExufnpa)_b z{-aegB8tPp!xf%BC4^`dtcy>-RX!f+lC6?4Nhy3D7#Ai7FUBQ~O|Q^mUglW$+6~n> z60QtM>%UAm~uL4wn1YH`7R%?G`XRjqfzYKB zV``RB)AB@PC@#=qmU_w#iQDj1PiGsvJFYtux>97srr+{5h?539lSg{VU4OMIWdRR8 zkI(me)C$G1a1RgM{|t@_KUaHuAD@6=UiMoaa&U0a*p8Myg)jOhHUZ2#_Asn-!E5Zg z*qLy=t=YFZ+nFRlXtqqq+|JM-f`4Uxe6bxAz~aX$*O8LxMPJsO#fRJUx3=)uZ1jAe znMQz~fgxwq8rkLdxVxigNL{s7`#tzL#+~W@Z^ZS=*x!D@FUz-*-A9{{Z>X>TqqJ_! z?(g&RH~S+y2=}}dj(=_M{$OCYm~n@RVGO+^CT3EYd)ZqgX&~5oIQvx}y&Cz50$-fOGCAjU z+W#W~vp4d$B3^(ETbgONQ8wL*x>;dZdXErSrhR=^pR$Dfotg~k0-RxuP#bn1-arR< zbKc{1Yd(MX?#NuraQeO*gKN7qYf3e-b=<>8vHHA`U-2;U4mPNY2bXJjMwXQEe<6-6 z(cb);3lG9W{woJ|6oYXZL043OewL3W%Wt#6Gvl!@C#hcZKVB2h(XfBSkA-+GJ0uT> z&7*83h;*@fKp(CLn6l{O0rV;VAl{NkfKUkcMISgUd+CnVfo@IZ#m;^EXWDqzr=fEm zFsq(#Jk-2I&D+&$eo4!bMZKE0*rdUUdzQ9IXWkb{6w|LDAU6TpKCJqf0Hf9YTxBkw z*bxJpiHoC(vX;X{ckHE4%(Pat{n1~%mQ0{|{H*A`Vb~56QQBlQ1?*wVUx($o53&%H zT^_&`R}!-oe06qU<2U~I>_?z`t(YS#)UVNsm;(Cx`lL)uQN5!Q>wq_-nxbNWwve3M zVqvEeW6Ru|y$Y~o0e}rhtsO`+${qRd$5k< zM)gT>nar?bSE#Y+aGwTgAEUWPlGs>jB=`4S)$I#i;&MAObYxHYt5F6$xPdj=6YJq9 z7XMk9_^zvWQT&CZe9&4@uCL#}*1DxnZj$zaH7T*4?y(oRKa92n-nFJpUW#o$1%_Sc zj=hNH7w_8oprPD*r3?$N>H@WX2~#tOUtU!0OdW{8Ns=iYSJUZN$#{W=4jdm2ApwDP zIYV+JE+vTc>*l=YI;h>#dq^;J_(8EDcrBf2=uq)m%PGBrL*-vp*=7)#=##e%$1p%f zh_;Ry#Mdi%wc^~+F!$bw7it8e#F+S0|4kz6-Yj5N)Zy7O#JVP#R{}t2^fLU-;^6&l z+lS_B4+0R&p2|5@T@j1lu_s=9o&T)#_bH>Aib{wB*xAvM4RL>hf`U-hQPJ0@Kl7A@ zejvOulBY^irsd<~BW-m^+weQP4wkpT0!q#QIP9)3V0>g41H&Xir$R1K3C2tglNZjoxf97PeGR`GYzv85+VUkTen`DNt$F zuKeU%P>U9)f$6ssqrZLb`FP>yd98`M?|6f^B^0R&6hG@neR;?2c`=5+JJJmQRorEzlG@nFyq{|K+>xn6?~g52;iRo2giu7n^nC4fqlO49r?E%Q`KvAvd4Z>DE>XKfT@J*#B63K9%J#^psB`@7vl1LtFU;q!#X*a=>>5-#k_cU7w@gUd!aYmdLPd0QvgM7E^(oF8~ z@C6y5cV@!h`uF)LnA?o6Dv14}sw3|a7uso-dslHfe5TTjq44=+?ypwj;y&W70_q3i zGmih_k)<>dw~Qs7FEI?YmA{YZO$PmZ@5L$}O(J9$=IkETqSJ1vZ9F*$i{Z?;0x7b$ti&m)i8Nq9hE;Y)gUW|38FkCL&KBA)lx z^)I>E9%a;Jl zYq#|xUKYP{bm6hH+NFGssI|{`9uD8i#t3M>-Tv8AxwdF!(66(Lwve3Mojm!)(~#lL z!(0i!UxB3GuT>4J8)S_Av~^aC?V7k)_grGwG=;dHT~I~ftrU%rMG~3JC(4h;FE9e$ z!Sg|{dMpV0D2?^tMz8T-sdNEo1y$lL5 z)x1)bH+p2|sJ%Bh!o$PKszTfF$1_0DMFdOh!m5V#X9*OJz3)ByCl0*ZBAusO!*92S zGT_jhUj5Z8YH|t+D$$!r1!aZjgMSLmi_YZT;DiW zC@T5({7{i6+1riMDU1aFJMLeBx_kr>biG;e5-M{xDfgf(8Jc`ho| zzS#jPMP1zl>!N+GGPb%Wpn-gy^dgdnsPv0%QEpzNO5M{m@u-Pcula@Kyx&N;@`)T9 zsb*IqvT?Cgy+mjUdwP2OdM(t$S+_gT4thbfD%JA)_Y{6ViFdOGkYo zF>~?#NG5=vnoB0KYX7%sVWYu;r`EJH(U1wRy?u(%NGB%lC$z^T)vIGxEtJv2esk~hsU%6i=AzDJB> zNPI|38QPBKz-T_P6I&zShG&};hG|C12VrfR^Yinb-d_J+3-ZS*P%j5eNqH|LsWzg%!`9s2uLLocqpTi&6$zyyUMKY);qMU};8qCZOZ_L*#H?fCd#qQF89 zQa4;K3WvcA0TIPSE!yZ2AI)o2L93or` zzI{_^LI4d13{4-26}(3-o`+4_JW7i>b-_HVQxBBzm<~bIe@Y!=I)F3c8_2K!G)N|A z1t0Lf=|^LVh(I*lg9tujidC$%tHf3qGMwNMSH|v>?PsePfRJGg&}bY34FU<7WoRKw z)t)|moF(U@ZD2sqXe_KJZxP7j+P>?*h~}Pjs3^+18l8$C7q#^0D6~=qxrx0TuIUY& z@Rv2TQBiKjxxpV%H~%>LPX-2ys7D;Xm4BOn0Szet z?B*>SlB%D742h{Jj&Di@H?STa&KWA3Oj3_Nv*qjqBaEuNOuj5ut(h|9Axdg2#G5&y{|!{1+lSx+^54j*}MzibR+LTiuG%&1Or!TRh4jtK%lk*fe#;PsB5 zr>TRwhjlUud9D+t(mYdCvzrLnfip>clb!0*RwfhpQ_57U{`xBv|Bum zonEk59ZyMn3fwCt{HvDeBd!Av{{ClI>6rzT&!az!udbNN3=F=c3US^I;S@=}W|{vT zE4atYix*VM{80-G?ymc^YvBPrS^CD;?4IH>foa$8*}i4)=C!I9Q$6BpD6QR~u={|g zh`(k10ABR4phSwt;);YopL24@l<$*Gt^5HjC+{+@baDEsqcmoy;!~4dn-AygR;8Oz`L=O`7bu3~53|{E?mcF&if=(3uJZh5Nae?s zO<~`DwUAn?Iyo2op3H*1$6;|@;CgA?z0fsY&7kEjVc71gyQ!`b%WH4aAAh#h6{S%Q zxMZA&;2{&~Kyb-)p8Po(G=81CT5=L@M(t;gMEE(Jjt|{(y`%(|%lql>UPT>*Ij(hi zaGLP)@GMLH79ML2(5{zYpF>xa{tyAlYgdP|n1yAn?wx9g+QB8`Gct$*3uxaRNAIxH z3V4-!UwJ$?H2gV(!Sfsu8A+rkIz+g)Qq3ZTB_IrnuwDkG8N;MdeH+ zzM(-TJ~cHw5X9+WYcUl$5>lkoL4FyHyiE#4d_*B4m+tp*d%^>T7UaT45UJ! z_OKdUzbVd$yP49zx(G`u#wR3<$Z1Dk_s3yo<>loqDl1ck01UOD{$sAEDe`yEw(s9V z?fr^_1EN7XoF z@SPI$q1$`OfByUlgH&uUUs6Gozpb4&BZ}Xtn>qz*AwAGQpJ(L(_SOv3Gqa4O>)HR7w*Eg{7q> z&sQqO%ikef>*?RY7RZ{m^MWrtq9@~J==2PYzJb$2FOHhYFqAN%iGX5f_wu;?n&DfH z=g*%*Oa@W?LNo;L0r}xf*}DMlPZoZA^tW2a>3Ye6itTxI_j28|&uzu;3ctE(yyqYZ zz+*$-)+>5)4~~SszfGyJg!c2C@uDz)0ah#EVsS!IvFU8e-VFbc%=z6gdqi_xA(7e(deZN9N=ubGmSm# z%1r!cXBx(DDa0ChQEiV-YV1Ag@RxmJ>GHi#KxE60{O@R|)i@~4!k&uOkN%`-ElH2> z9bNyHcj5Lmp$_AZhJ7R#cF{s5kJN(DU?TeQssz!snWJ#p;Jczp+Z6CrhNX}a)7S%- zR=nqPoN#;O?YwLz+YE5DI&I@ukDYj1(LIQiCC7xaMHz~-A3uIHOx@)C_<@gguu+RK z-Y~VHm^i9dT2i76@gGo?;Etp-zpAh9(rc2@OpQ;V4>&M#-+d zq}C!Ck#CrmmAqdxg|~MWD7;~kY8USOu`9lMwABhJ1t66Gyj?C5B0hsyn}7V^lQ;MG zvy3Tk{{5SrIuZ+n=H@BlAL(bSJ{riM$DSnLY)Z)AqFS;QT1u)To)CvznTih-K116Y zVmn<|S4MR1(`>C|E3zi;gD>DHX*5GGk^KLEYi#!t$3Yu)p$jdSl8VaFI8XC~0Z>_0 ziMxS~-996CTYca)B;5R2yLd81#4KR?(RYvsZJG1QU0s>5wZxV%wt5gB$;pXWIP?uI zE^DH9Tk?_6DV}tYWP|`%jJ6##G71VO4T;Vkls*q6kz0nO(TYL^@PI~P**4j;5v3q~ zdB{Z$S0|RO+;2=wVrFLa8g4G;;YHk2amMw@ta>z0vmGfyVM_uUzkgLBZuCKz#d;xB z^NW7`P@IKt`ID_7q8_c1dx)f+91#I~{C;MgXW~nV=o_IXzQD2D(b6@(_9uBdU&m{E zs?#M*Q^LBJ*N2HGX{9X}^=q)c{Q2TYKa0GPtMM5e(fcK>-Tos85;a?gZAun*ICV3l zBdhHndN+8h$#jg|Kin)?JFrXe^6TiSP~h}=$&Vjx8^VJKR}z+cUbi=w1l>KsJb7^r zfBvL+PaDxnx$yWRk5vub7Cse0k!5bq4h{OCgAEfpEt-6;?~}ESuvPLWEqQD)t#CO> zW!%+07ncXnK{q-!#!lEA868ax7x6Oj48ma6DW79T{Ps-@;srOPS`1)M?ys*@>j_Bu z{HrYYRc+OfZ`I%t60)QEtgh~bfOo!}%hZheI_8z>n2H$Zl zg=3UBe+dfANR8;U)HiybiVPctA5m~DPsbTT0ckJr&Q_QyCvti+&lw!j6g%u)NA@ zNYJW0Tb;J9xT%Dnpa-rZn;?}xc$=5>5b%3F;(BdUnNRCqQK0u&iY0Z*B&Z?=YX>Dg0qLQZoDk)(AEh`T4d7~}w zDtMnOh(00TbO8ApVgO_jC7KmlK8l%BQ;D*1MFYBjY1dft5SF-hyXgXxU(&*rDv^AM zVRP$^NgbD!)r9tXSzJyv;3L5R(DaCimedeuIi@++MXOlC6w)dXBC#p36)9cx{b_D0 zZ+oTr%dOdNxxhN}bh;J^9wG5c$BULLpFbves9!iFW&+E2QYAlI`F-bZtu2W*mA^aA zY^-nDK61zHRCw2M)_quf<8(Ui_so%$hYI6NNufG2P(F|eoxu)O<&edN%_1SbCZ|cL zZ-pJl0z)A^Ue)bA&DZ^b~|LbdH@B?O*p=cN!X)f^Ix~-vtCg|)Eo}A^_53g0Q zd#-GjFrI_?ksnI))vF4txSOl3J0S|-4%QoIy079rH!$cA!d0r@P6X5u7g!w^JK>mt z)IjWvZp>Ui^*!3ku&8jAla*w@M`?kjl!NVL0~QWOsVokK*{%i@`B#Kv+TcWpB^j$V$YNJ)P89&@=t|0VFZmSu)sq22c`#?{i(->I@Y89@i zyKlB(~;HeJQLQTM!FZAk??oU+uuzn3$GX`|Br`ngy8bAc7DeZd+SfUD#@EPk4f zDPIXg%We-^)yD=XWl@l0P|g=azf!}}||uQ!zlT^>TMn>}L6>w&+@xYTj7N?u%| zGY)W|(1I%g+ee;`mz`{e+WR`zHjG zO$&~JIXd|@!mAqZ<)lzQWrF^oYj&?!WZlD5?Kp)^b;dgXUQv_Q2~JRx0yWt3kQj1o zeBAM3@6FlXtS&9tI2=w`JW2n%PQ=B?<%yr(QkIRaQ96 z5Jv0ulm)2Bj4N?s0}qcl!m{KH{ik}PJM0ZseO5Of>}|ch54ZUtokjxbk!LF+YLpJ} z8qrrkXwzgotgwhPRxuO_q*7y`S0#L}=O~Gk7 zghPCvePM}Lo(ip%@2nTmyI|#1Zn`p=TQxD(<~*Vq1XrDdX$g@>dXF|ivb7!~4t3&g zJoCW1nvUrQkev|}K z2I>T1Fw|@2fTNNite}XPv==%ekC=>8?KRmdT@V<5{D206cl}=k(h1_d#=4>!_ya?Y%eJKdDHt^59ua+!^&TnuNFZWOP{dHc zf1)9MyMdL-R)YLoiL|B=y*)w4fTAPjO=T=h_4P)wD~exPN&nna)=851GYwI!YuU6ItMqk*U6Z>+_{#DeLpuR2Ul3X)?iP`^`2R%Yh59MAe2jr&!b;gN&F zKUHQ2LKUBrU}G2L4E$6kJXx6_1RM;=-ES`-e2oaLa}BYY;RlZMO}cE#;!LeDqA-1J zr-m|Lc8p5m_ksP5nPz3rQA+l7y=-((S64O*{e$m9SM>(GPR!!UJ?Xq-Y#tNq`bZ)U zHF3UZZY|K~v78BDAkU3!A7+oc(xG}2xSavmc_$=pRY*oN-5$w-5Mj}8Du^&5liCk3 z3uC0ENj|}gnR*x8`H#{LHN(DGH)8Q(ijn0za{WLD6Q~isaMkb)DJ9tq_`7II9a~D+ z+7>(c`qg*-FIk&gJ>nt3a(l>$NvF5&+wDWckU0KNs{kv+8xazkp;h>~*tp+JM zYmnTZSzOE>00B3p*N0mxXGoJu%HC70{(=61wHhUj%{vQijcvb_nvJ0M-ye}SHv{`o z>POC~uYoEjo@%nC*;#0L1yQl5_xw7-zLXcfvbdNyW5iv374I*!=MTXSWhaHJOw$v8 zs)Oj#<8r!o{QZg@PB)JCdezAGiI~_lZB=-LkF+3rrx|g?Xc(em^wvmrkdM8_Y@n!< zc1VxpYO(d4ku5SbHb`8P7(EWGbGd=x7 zHnFd0%%Jxo)7?5?l&$?Ma5IE~kLK^u;p3$$%TSbp$_UM(U7ETcj~pTnJ~cq!;TQZ! z!7`lDURzl_wlW$`31?Nb(VERHWU|wV(u-+&6nzc0+nH=y53e~2ma+P|G z^Y@@5cE1XSq@V8w{|Wjn^GF(Ci5T~KFH`(6k(TFkZUVC4Y4s=UEppoaX6JW3B=dcJ zB!PRw)g8|YZjIxY2jX>AQ!0nM2^A`JMbtdcx;PUhnk2?!I9(!x+}|^+J$s|DCvV@( zCe`U5jkoja5jnFT%h%8ITnw*<1QHC-^Ifu326I!cSwur+DWX}6l*`fGfN%qTZslp4 z(cgF_gw_SoxqUUHFE%O~%#*eXc4HViW9WK$U!vlD>K!|a>w)hPU{lyp@RdD@#e4CH zNL}Me$@50fwPNC=IF)DP_L0?S>AdLnQE@JQyC%2!r4yuT&&LLLe&uO+ZE9J`MvHU> z`yu_MlY&)K_qE)n1)ba>UjnzxtoOSj`V=*aqgai5(1|i)3!fZ2qA7m~(!+Wa-5BiT z)7tL5*uWEGc>x**JUzOiOcBzZ$27U~t&&Muk%xq5ew87zc!Zb1<%GLwQ^r=(?n;km zxYEkpX6Yi81z$nFb*zfcDVae_KF-I+j-KOChcx={6VM`^$adt8zXgIV1kYqUT*G+T zMEYFQd5K)2mx@+(j)Kj28ZYZ)gw%^3QyHyH12u0sEq`)EMv%ZDakQZqzkFGw- zW!o7pBN=upJBVr#DFT=}wx7xSG+X^$QyJBbFZR;U)$vY11ZU8fa7xyc)@pCbu*Z1M z9JWloeKX|f?EAGk$Kv`N(}r-v#r^S;m9}5~9}Ye!m5yELywI-^v$6s<3KgkF>Khl^$VFrqVWR(Pk8Bhr51$my&>EO_J%MV5)U6 z=FWUtlBvt{_QJR(Tji+ggVuZV#k>(Nm;+b;ZBBvlVFvi9$)D?q>4smLj_)6I)WliH z**U%qxa0q#4ZKH|v@k{3czIBe*{Outv?s9OkjmjtzT8(k(s;~R-)`QP7^=7B!ado3 zf8*z5(%ybGyvU@2^HZ-tq`BMTuWsudvFn(xT1D3JyC?X#Z*r@mM!$&hk-vIw>=hhh zjvf)hA-E;w8>HN0<5#^>+0;5S7xdzEP_ewi_~g%3rM}T)QERxx^p$bD=IC%vu(%tK zw;vmO*EDzQh-vEV#4nkBCOvuFwkE&C>q^UK@svsXyg=$HRJFkFUJ-6M@@M%=?9Q>-cW zO=T>-rouQGTc%f2zap3=Ke#B)SR=?jc^z5%^wZvWg9bKZa;df)w>=<5{jq^W(I}BK z>?au})^jCmmbBZeTi10__jOC__x&0AvRM~9f)%2(86)o2!x;w~0oiLy17l5=HH{sk0(Q-#j zU9$Aksk5qh3jf!N4WfU{=5e<<0wyYsM({O8#?apUN`jV}x&FipG;iskAigNj2Ui zYm|^S)ZcKsjSzdYtX}9HUldsO-#=mQh4Qdo1lGjP8Q!KhY?m*zWtM?|;Is}WaWQ~K z(oX;`q?kbW@O5yvo1^g*E)+iJeWN^KiuZ0CwIK80Kb>T{u}6@kHTQ4UhcZ>lKcADd zScnm2`Q{+{5qD{@3iU#swH0!2xdLrMI7hUPxBQE`pc1|}e>n4|c9uQF#%5;T-djAE5}`q7iJqx^>EF2X23-GqZla(6&i^g zNpJ$n5z!@$u}^dBp-0ovuR(IFN#oW)aXYb>7?7WoQZM!PT|^Q;eTr1qxs$OyVJN)H zahR?Qp^@+*NKQ_cJb$gF^~|Yhi>1t!hAxH2kV!(>nsBoH@QM?L)jC@Q?LhxC%;vy3*vCSnD@RA zQAim;Yo5oepT#ZEq$Hnbeq%%E*+jH`8hmwlg&9pwZ`^)G4`H~2_bx*#FJHq}a`{Sf zN7*`xZy8i&00>$KyC~a4vc|TS-X+3Ze>g&eGX5*Er;7*;ctGe|6cMUrAbUu*i*-my zNeLk`2Vm>;Q*NRh;J@)T5iu(+e5N90jUpR%UnJT)ef#$fR{M1#`n~1W#Jl@#(G_9@ ztU{P3S@KuZ!c|kro$%T*tYBe=;6)FD;7iN^x_0)X{_8WI zt82}?VJ*4LVx+>=j$%@JCulVF&A=8418UE}j+@agfbsb(2c2mzPtHeldpmp&@4k

g%XmS$lT3LPns8kBkL7JhL^2y>frQu#QjPxS2OQqz>A)D}Wn% zzn?S(5v9R1I{yMa`{@PQG=o9txwvq5R8*`a4{ZO)NKVEKU3)Lx*}Z#d4;W!VEPs7u zcT<)h6*l$XV40J0d|KzdFJ0`)91|0RC|Eqe!E8RUL4>`|Rx^p|Q|HI5DJ>@1I@Xwt zej!sc6AiAA2p2mjHWE#WY&{z$g|40rMM>xj>r=Drw65)3bL(6=`U#u6lT@F3E`o;P z0_j7_Ao}@his6Y#A4UK&aM^klpr257&VT9cdgehmrETcmUy80z2>M&Zxm?bwLB z-7(hER}}$jLld+f1;0YkuV16zsdHeshP(TYoy+jgeQVh|{406b7!a(U)gCz=F0zg6 zC?(q(e3_Q;fmPl74?i%kYuYG#EehNDwN$nB~s6m&7-E2E2-^tD>dZbC#I}R@c^+u>>FxEscj| z!FAA9P6&KxjM)NPu;^=sqIgCZP#{_cXf51Og~8t^Y54I=XI$6jFsZjG(z%+!Dd|%6PceZ2cc>O8|A^z<8q9Qw>^oU?w5x zvBQ(}O3X~PC?VhwgW%K{G?g9}E7t_FnQ9pJVt$*{?|x2yxA?MPqxFB-1Dp_IxnAgs zX1{&!aI3XZ0o=ZsUJUpVOWCvM)eVYVNu&F`;hbc`1=l+M_}Ya5n*UmCNKq`6&t8xPe62Lb7?57L#}p)6ruy__z$Y3@ zck-paem|FC9p^qJtnutx0#Av<=q3#|VYAM3H_5Hp6Jl(zM(C7DaimAPOclmrm`#|b z!LpiM3#k0`_8l?2Ae^+aUkGMHd0%eLI=9DtNdp7C9s{PZyCyf`>r4zttF?4wZ2B{@ zIWf}yrc3_7ui1|fA62d{yV2ZSbI8>%1TXPP0u_9Stb}Ck7mpad!70xKq`iNNk5Vul zo&Lo(0h**AKlf+6p4Hx*m_&pnii(@+a{l-V(y5M zHITVk6^NaFYy0oLs=^C6C#+EBHP?j)1-R|mY)5RD8aa2Gd=9}(c};*3emr8>2UvXe{wcQ*eoInq!8=~RIU>6CX#{FkhT*`208)iu!b zXNu|9)nQ#VUB%C@R`>$J@gEAIxNz3r%D70(S?KgL2mlA2$xBwJ^YO|4yR8SB8_XoQ zD3vM_NiOOB`zVJ~-^W_$VV$PD6gZ8WQxh(fIRCE9LnsOU(~TAN&>|#`P$%72^`fM} z`Oy*fpB^4AA3K?P% zgM^_i#~Y5jCwJE;XgH0p);h zi)(c-4dB;cySz>ZjpoIZGh>(gcXJ^_7fGxsZa%!^F2d(Q8&bJQK2^vK``n?S*CsT) z?0{>n%5Wvl=%6D0NfKOx_&s(z)^~`uvrDSJdH4)Ys)ho(vZrcDTkLNX-rEwI`|Asg zrJ%3)X@wqWs_h(6GcD+72tGc7c>c6X9L%szpyPOLpz(FHS42yP({v?68R)Vq+7QaA zPIh(-dwYAMTOLa4>QTxCUF0SKV-?LZfq|4)8`LykQ7T6bchJZD!z>rt=RF|z0b$g< z-gDsGnlF*2kA>YfW*xeYL#$zJ%zrHT^QJq*R_<9hXZ!C{B-6VLQOo77h^{wa18ai&33lM} zqxy_7Zz^hPId14vb5uxMoRagkNFYK0(qUcQXBh{L%sxR=~@bglV-fm;$J?5RC>$^p~$Q7nr8W%d>}h7KNC~Wq4;0CmVwd5C6}n z9+uYDjI68}X=!Pr`GpqybB(UTjN)}=%;dAPFTESYlnVD<1RJLp;%NcHKP+?MAGuAG zlv8*f!>^ugM)+|Vx1{#uwcAf}ICV$ju8x4E0HjO%G+b&Sg1^`-M$}25v|tPYh^<0M zuti^dZb1Q>Q+;#0JW-`qfAeb&vjKdy3B^Z7pR^qAmsvGu^7|f3u4}Dj#;9p&UD^~~ zZT9+TX`Svi_F%rq{tERf`35KUbiV|l?u*)YEQ{6TYEhWX}7{hSv)@?GT0Ag*8_&;ATP%G!milpm;~l=9d*bc(xsDmwT+aIAP+Zg zMBRUu`k((SZ?_mQa2t6~L~{dw`J1jBVlyuvZH6SW!>y<0fieouVrHKHZpEeF0zV3W zJy+*E-#?ZERX>rr$OI4a}93QsW4Hx z%+XWan*A~7tU=_&2nYK2AD^MJV>3Mm(Vcc)t-%d_K(V42ix%pq(c@s*>adh^ z+}``PdzkTGVG<}UB`(-cwfzQ-n6a=eRU-|fiAH)5oj&91R+EuPljkV)c#aNxuD5N@ ziwXLP!mwGTM3C6}f_Am`h`)9R2$@=J@zHD3Dbqq=DR> z(Ee6h=_HEL2>n?=050TQ5IC&hfQ$$qR-oUP)>S^MyMLf&?sb8fHe(>w2PVp%5ItHm zA(Sjb)(-2F`hhLx6Pbj0P{-YO!jb&%nBN=o(+hMEQ_(oR0 z;P=G$p!LGMje?wvjOd%rtlXl8g*2$eST-=*$j8>Vj{MQ^6hFYlldc20%5G<82chR& zDT7RHhQL#ftr!`%P$01x8j(JmBbnkU525MM_Hv~`*iiPw7Rgs!bQI&_7G(4=BwydO zRB>-^-@V!?^FNEAI5xU&57`z~^s)*W{^>p=JHetmJkN=ZpM-3~}0 z1&3kaKUxXBS;hx8FD{N$&7RI&_?iYJE%4F9&j7d=27i#Is;1`>H~Y??Z%iFNsYB!t zRCs2C4VKjp00a1B%}|ns&)KZ})$Q$@+OJYQ?JE4-$?aIG6IC%QwKF)s_4>Y8&x;*z zeo4TKUhK9+{#++0Q!$01s)Wi(*70e`dFuCX)DO=iP+9>8jfqmEG5cD`r74pj62uP` z_y*`ulccUbD>*3NvV--kC1Vdi@`?A7i#Vkx&Ka}4+$Kj2ZQrmJ{`jSUTL%4>AFn78 z{j!>iJ4Hp0=Ocp}f&^3)OW93t+?*)Uqz~%$ur5gzWz?{vWnrenW#Nu#8q@1V90+og z@0IRya>|pg-D2Ru*7p4PGO%zmN9FGe)DhgQ{T6)P7nPa4z)J$XUBPj>yQ26_Bl4~o z?Mq@DPR3QFFjNQLQB<=G3GSmaVMz^Vy&r)#E>`$Q-()LhCo~yR3pvp18o8oD+9abi zi+eV*f%y1%JV-~Q`^L|oNleQ}KH(!q?n8niK{p~l;;5$%R=%#73|>B`k9+X~kQX6l zG*(YL`k-dU8KWi4@W2D1bX>ny*%>v;@4d@o@sXkE|Yu5I_(lhLkAV-dqm^X z{JepK&(=bOAF~h#3t#PaG$EPF&W(@|OIY<(?PyP*Q{Fc}7LRHiDGuJja{C=CLl`=4;a$+h;Zk;>!Y?PT8{eJv`A7Rgi-$sEoxCB{0c zs~NKe2m#|V0CW)3EdU0@^yDs>k|;$6FVNtuQ}CEvZ-g?cQq5CkWDL6HS3bt1qOFt| z#7cM$RTig12waaXEG%r;bCpiUoS%DvdepB;TJ6)jG6yG3aIa_qj6$kuA9;9rESZ#x zCX9<;9e-S~>uoo3r^}?J6`9TLc*3KLnf+Fqdg(=QpF8FD8}%=3=N|Yct_ZE_!}rAB zuS8DmsPO=&-XSSySa-HzgeoQ^wvmO}R|JfDUcr z;&jp!sipQGbCJuN?a}K+M~M7-v_Y#GNPe`C<*}(4PADb2U^&U33GpMnvk+;WTt81zT`+oCrjnGb zA`rMn0)iKvZawm3{T#X=qy5?H=C_q=r}q+7+r|#2Di8>%{_|%tS}3;8&Wb83*d}-h z4MJ(%crEW3oyn*g8_cHPg7qGJSeYt8^oj8zgD8FD9i0~BPH!t??-uQ6eh1lw}o^yFs$Gd1%kIdWQ z`vWOz0C&wr5cJ|dOr9d2)fPtVMdArAeeX*lwD^$-78MlYs7M8z>t}OyN|Q1(Y1fI7 znwpyOk{&%zejGfeDs5a8$2_{X$(?_#EdS`#>RCYHi(=Uv4!M9`GF0jkn{zY_AZz0s z3DVB_XE5P+!}D4y$gY2u$)_j!Y6&tpLwNby^sg1M-(hiGpD;_yN6-bc?w-p~LSNcc z63U&iu_MtTu%t{#<;ddWZBA}BI)$@p;`%?Rprmz`UNaG(!52@8rO>j@h>f`0S^~GW zNXCK>Cu!3e&x4W}9Y28C{LGFGfG9a|YYZ(hv+dS$oy8YDt0%ofa&&a05OcTH%D%pR zkzl?#n%jYo;2PQ)35d*2rPNc1Q)4_u!d#adl$2jwiI{Rn?e3T?k`NKFXZldsWL>*hr{4a|H9wq_maq>ufXgnBt zV#!q=oY6fU`GNnU#!;~tUU)g+d>4A-enkNb5OG2dHea%8p*eYa@WIH^<|dzi_Yk_A zGyD7^x#a99MBMRC_-hCdffvXqWJ-285@uIfcY6LKGQ;)Y)B2Gd=gAYPSRj=Pb|d2m4VZ`b)m;n-PS<3)fExK{k3HVQ%f{@=plg`&O8?WK|)-Nt0Zx? zu7UyTfX2xSfIjh4W<0`x)y*wHCd7n0LySj@3&s{zYE~_#aqURnLWdtDGJ{#zjaDAk z@o8E1O(AJF&p`0h4lYNSkJx7~dXvC2QqZYjfYtX}gE-%9c9vjgjQ442><)z!Te8*? zJ-B*b)`A_GyiHF6EfHLlMSkrlkf{U3Y>C!#6b~t&Sc234d8)YM_oH7Z(4S~0NwX99 zm?6C6KhLPcj7~?wHBOLF)A8*p3np;M+8ne$1-lYK!zez}D#^M6+zF$S_9*`^N z-}V_&6KKDMXxwPxe;LDEJ3|18J1fN%mjy6eQOa+j^*>@9BY@~qScJ7i(a{H;_MUf+ zBa#s@FV=WDnw~B!^~RQ-QaB%W6>Tc?esy#3-!E?1o(h_c;1+k5fOLGp&=OkeiWqM2 z=+tH-6>(RHSe^;csQ)d#Ha-9 zkfEVY^upFw+SjjNZ*FfBQI#Sm4uwbOPU3nLooO62HU_?7eIIk^{TGpF@pZJ0z7jQl zBs6#ivx!=<@+#Vj!uyE-wJl}7LZ3O7!-oxW(i9n0UtiI}shyV=v{1QXqIc5)&q|Q< z6GHptI>LLD?^@zAPJuL0O?QJF9;SYZ=@;cyXS2adC_#)k5L_RFZ$h>PO`OJ@{u_ih zPMcv5G?S;z<}O%qdbrd(A7*+xR)MWH=@v(KbN6@BbxODRl1kj}N7(Sh*-^)oXBMR6 z*S#M0a3V_mksHnap!5erj1(5)fuL*4Q7^aZz#TQUTw6fiI|W520%bu+xT%@uvhBrP z3Hh(7C_~pP5h#f=TGNPl5^zRfJ8}7=_qAPC4xPwR5%T!XnTY>6r_)tHS@D-IC}6aR zflt>1CR>NgQP3{)?@M6yL&WctO)X2}El>Lm5!pNDqIW*+&(jG6RGPo!F&z6R&@;@a zbI3L?DFZ`MQa?^8Bj=VZh`qx|o3wIONhvQ+W0y;&HRk?LGkr@x#9;C^`tqa=pWtEG-p*TtbAg>KW^o zg@PFIi`v-R@bhvI_bJZjrW%6>Ew3AP zp6I=-;AYL*$xLL-BUq}g*2kpx@A=&5pRK5UU=MP9qxv;#?cG-gYyRMyC99W|i3w7%(zF%s1qrk}Qw>C=^V{I{ zkBszHnsvk9Bgo}m$moy(FB5bp-)SWb&$heEemi>9>Ig4>q2CrDT5sO_sLPcGtd1n6 zrC~*NhfEZzTl}rDg9QKiqXQPbWOJ8@OH2Ze8c@)w#~5`GRE9RS4E4j6^g$0le9UoyfUTsbI^1rY0vP@ za1qPQE3cakYufxFj>0$XyX9=L>@F;qtAlaoq2J)bVCU!*-+YCcJP%A0M`0|UMfjxS zD>DlCF)=ZrG&VN!rVpj^njsHb^MjiW#4ZD1V66LKX*YLw!^dpHpO@=o>wZMh3jsym z=uTpZ{l52)<)iuOA%}I78fF-f+ng|Zo6na3L$K95&5Ko84^e3v8xOCI%>EoY^)@@b z`||21+v;1tj_5_8V5fw$#kENMP45jO3c_E`fe)!d#{h*TpL||p=cCld3j$n?H-E|) zKtV2s5tUrtqzjhE=5G|_Ui)cRY?w6ZL^y4r0Zg-Z*?_?GD~nEyfVLMA(~#(TB%%}~ zLh39RtDSG@+`Jt)nBR~=kTGxXwJEGGAz18G=!wRM)N&v-EICu$+wC1W4+|LG!_-}< zNfP={TxbM1v}H@A-(w9a=Z8L3BKe{a7dr10)o&R(<3OgW;O{Ta$Im}D({IDN**vuq z_xf~BrOWcx=??xWd&GMW+c#tgW7Dsx)kCTnN00$u;!s*c@VqLU+I4aSMdm;Z6*)wN zK6R)=TMF1Hv_aI5Wb1aOom%C$BfS-NCk>Enmr9ovB$J?-RxtRqLy)>~o_23=LUQCNQfq+_Pq#!P@JcVdgz75;2` z&kKiI2!}~A{@I&1Phu6mBqAl@zMPHA!S;h<{tbfEA`xO(+dr!dT<_%h;kAPC3e2K5 zsOj&I5`fi(a!!T{M4#Txl832ipz*u@p2ftY&KzKk5UATPBlT^(akr-PSwadO2{wt{ z1JJp`xY|SgO{q=RH_Xq;$Mhd?SGpd44>BGF$7UyzdS$iJ`~79sVce?(eV z6vD0H&!r?3Q&UR%9^J!t%pTT>nK17JM5z^q%{%phwF+LhRV4^!iC0o7ZTuC0?73mh zpBQ9G+IUlr+lv1Em2(;6{BVc7UQ2dJxPWQKtboX z$$$sZDbtfNFf>Gh=1Wn1oJ?y^Hp*)dxoULfUA&C(rtV+jbxgi^G7 zSEoUL%sHUb7yn8;e6^-rjJ%sxmRtT)eTVz>~G zAl^+-0?@;fV)AQ{lB{v_aOdDl>Qc}bEQ}8bFNlsBmE@NpC7~a<4CGziNRR)UXGN2R z1Kh;5AOY^bN&>e=y+{|r>hxUumE5!J0^&qw7yI*10gQQ<&U9-6KkVHjUg+E3|9!A< z1l{s{cgAus^{K6sQzWP$zmlIkx3FMRNT7=YT^(DpvX2DaV3uV1?tHVbU8k_-p?dgJ zuulIEs6`2ZorR`J`U`!Zzo7ty)2w8xT{E@7GauD08)WbpX?aC^D@rp)FOw7e>3JB9+BLP81mqsI72Z!+4Jq3`+yI$fR zVzeUh-4Ur|-aR+Iq zk`|3_d9cu$QExB!S79!=)&If`1OvbYf$5sU7ef15D)0=p!5*;R|6(6l1IIy}C+&L- z&?XkWh@%!}8B`7v@}cb43@QKNW(r4Z9g^?aq;7=t_L(2(AwYhNfi>;=*|_0hwbj*C z>2EsSPW32|b182rj5%nZIR<9(ZIO!kAHIk!2X7hZ~Y!?wHo86520s| zU_cstju^o*SI*Rq6+eA$DDc|)sct-)<>VR||3E+9{^X2TnN$HgFIH17i2f2JTO0Q{ zxU|NJ+3fyTSGJ#7NoT0B8gY}40}~TtlapwWLm!C;oOj6joeEO#Z!0qQ_L7z`NI(Ti z$Sa6jP^8#Kegpb_)1dkOqH$w!A<D$b(-0D3AsB#H_@hQFvQYt7X6GjLtCYI)0bw zb+h#AyNK7M<_tE)Be~^jqfC!neui=O-2Xf!%~~QvpOy_n`KAEG4dO_O#LMYeql0Jb zNIHW!s+p*)4+R>_SybsoW6wT(`|q37v?vqLsp&%Y!U|n)Yl&aZ2x4{9Kv(pJ9oeXk zxnS2#c>5+242GSuX~ECH-G4j(42CN^vFl?k_Ie&5=4MtT6o1(6Y1aZhr&Ps2H;;nY zQ9COj+R}RVoGkxKa9sGW2NCL2($eN#nPY`Onm$!PAn6=lE^yzbtbZ&-XCeZF>=&fs z4I^#k-Km7#XeZx`%`t?ndt3s}Ju@p~|KBL>PTtih@B|ty3tl4a2Lt`kmc#pB+xMTA l2x!#)k3szZZ$I3 Date: Sun, 7 May 2017 14:49:36 +0200 Subject: [PATCH 003/244] Associative lists --- code/modules/customitems/item_defines.dm | 43 +++++++++++------------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 5f0d2ca58cb..f1b2937565c 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -367,8 +367,15 @@ w_class = 2 force = 0 throwforce = 0 - var/list/options = list("Blue", "Gold", "Red") var/picked_color = null + var/list/helmets = list( + "Blue" = "plasmaman_ikelosdefault_helmet", + "Gold" = "plasmaman_ikelosgold_helmet", + "Red" = "plasmaman_ikelossecurity_helmet") + var/list/suits = list( + "Blue" = "plasmaman_ikelosdefault", + "Gold" = "plasmaman_ikelosgold", + "Red" = "plasmaman_ikelossecurity") /obj/item/device/fluff/lighty_plasman_modkit/afterattack(atom/target, mob/user, proximity) if(!proximity || !ishuman(user) || user.incapacitated()) @@ -380,21 +387,14 @@ to_chat(H, "The kit's helmet modifier has already been used.") return - picked_color = input(H, "Which color would you like to paint [target]?", "Recolor") as null|anything in options + picked_color = input(H, "Which color would you like to paint [target]?", "Recolor") as null|anything in helmets var/obj/item/clothing/head/helmet/space/eva/plasmaman/P = target - switch(picked_color) - if("Blue") - P.icon_state = "plasmaman_ikelosdefault_helmet[P.on]" - P.base_state = "plasmaman_ikelosdefault_helmet" - if("Gold") - P.icon_state = "plasmaman_ikelosgold_helmet[P.on]" - P.base_state = "plasmaman_ikelosgold_helmet" - if("Red") - P.icon_state = "plasmaman_ikelossecurity_helmet[P.on]" - P.base_state = "plasmaman_ikelossecurity_helmet" - else - return + if(picked_color) + P.icon_state = helmets[picked_color] + "[P.on]" + P.base_state = helmets[picked_color] + else + return to_chat(H, "You modify the appearance of [target].") P.icon = 'icons/obj/custom_items.dmi' @@ -407,18 +407,13 @@ if(used & USED_MOD_SUIT) to_chat(user, "The kit's suit modifier has already been used.") return - picked_color = input(H, "Which color would you like to paint [target]?", "Recolor") as null|anything in options + picked_color = input(H, "Which color would you like to paint [target]?", "Recolor") as null|anything in suits var/obj/item/clothing/suit/space/eva/plasmaman/P = target - switch(picked_color) - if("Blue") - P.icon_state = "plasmaman_ikelosdefault" - if("Gold") - P.icon_state = "plasmaman_ikelosgold" - if("Red") - P.icon_state = "plasmaman_ikelossecurity" - else - return + if(picked_color) + P.icon_state = suits[picked_color] + else + return to_chat(H, "You modify the appearance of [target].") P.icon = 'icons/obj/custom_items.dmi' From 5a0fb81ec3461b03ab418c5242ae2a1f97cf3e78 Mon Sep 17 00:00:00 2001 From: Alffd Date: Mon, 15 May 2017 22:14:51 -0400 Subject: [PATCH 004/244] Less obnoxious scream --- sound/voice/vulp_yelp.ogg | Bin 18645 -> 15861 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/sound/voice/vulp_yelp.ogg b/sound/voice/vulp_yelp.ogg index 740fef48cabb01169efc7c22acb1f71264a01564..898cc953823dbfa72169a6a26b4d0499464801fe 100644 GIT binary patch delta 14420 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 Date: Sat, 20 May 2017 14:41:44 +0100 Subject: [PATCH 005/244] Adds a Coroner Report Printer --- code/game/objects/items/devices/autopsy.dm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/autopsy.dm b/code/game/objects/items/devices/autopsy.dm index 2839715d7d7..268ee2fae79 100644 --- a/code/game/objects/items/devices/autopsy.dm +++ b/code/game/objects/items/devices/autopsy.dm @@ -74,6 +74,18 @@ if(O.trace_chemicals[V] > 0 && !chemtraces.Find(V)) chemtraces += V +/obj/item/weapon/autopsy_scanner/attackby(obj/item/weapon/P, mob/user) + if(istype(P, /obj/item/weapon/pen)) + var/dead_name = input("Insert name of deceased individual") + var/dead_rank = input("Insert rank of deceased individual") + var/dead_tod = input("Insert time of death") + var/dead_cause = input("Insert cause of death") + var/dead_notes = input("Insert any relevant notes") + var/obj/item/weapon/paper/R = new(user.loc) + R.name = "Official Coroner's Report - [dead_name]" + R.info = "NanoTrasen Science Station Cyberiad - Coroner's Report
Name of Deceased: [dead_name]
Rank of Deceased: [dead_rank]
Time of Death: [dead_tod]
Cause of Death: [dead_cause]
Additional Coroner's Notes: [dead_notes]" + user.put_in_hands(R) + /obj/item/weapon/autopsy_scanner/attack_self(mob/user) if(!wdata.len && !chemtraces.len) return @@ -181,4 +193,4 @@ M.visible_message("[user] scans the wounds on [M]'s [S] with [src]") add_data(S) - return 1 \ No newline at end of file + return 1 From 6c8ede0275437eb94a4b1ac1ef9c9611fdf35d99 Mon Sep 17 00:00:00 2001 From: TullyBurnalot Date: Sat, 20 May 2017 15:11:50 +0100 Subject: [PATCH 006/244] Adds sound --- code/game/objects/items/devices/autopsy.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/autopsy.dm b/code/game/objects/items/devices/autopsy.dm index 268ee2fae79..6396e9e20e4 100644 --- a/code/game/objects/items/devices/autopsy.dm +++ b/code/game/objects/items/devices/autopsy.dm @@ -83,7 +83,9 @@ var/dead_notes = input("Insert any relevant notes") var/obj/item/weapon/paper/R = new(user.loc) R.name = "Official Coroner's Report - [dead_name]" - R.info = "NanoTrasen Science Station Cyberiad - Coroner's Report
Name of Deceased: [dead_name]
Rank of Deceased: [dead_rank]
Time of Death: [dead_tod]
Cause of Death: [dead_cause]
Additional Coroner's Notes: [dead_notes]" + R.info = "NanoTrasen Science Station Cyberiad - Coroner's Report

Name of Deceased: [dead_name]

Rank of Deceased: [dead_rank]

Time of Death: [dead_tod]

Cause of Death: [dead_cause]

Additional Coroner's Notes: [dead_notes]" + playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1) + sleep(10) user.put_in_hands(R) /obj/item/weapon/autopsy_scanner/attack_self(mob/user) From df4e30ae617e210f17bc9f1ce0b5d1ec566f15cc Mon Sep 17 00:00:00 2001 From: TullyBurnalot Date: Sat, 20 May 2017 15:48:18 +0100 Subject: [PATCH 007/244] Adds Chemical Traces, Signature Area --- code/game/objects/items/devices/autopsy.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/autopsy.dm b/code/game/objects/items/devices/autopsy.dm index 6396e9e20e4..6b7a842d274 100644 --- a/code/game/objects/items/devices/autopsy.dm +++ b/code/game/objects/items/devices/autopsy.dm @@ -80,10 +80,11 @@ var/dead_rank = input("Insert rank of deceased individual") var/dead_tod = input("Insert time of death") var/dead_cause = input("Insert cause of death") + var/dead_chems = input("Insert any chemical traces") var/dead_notes = input("Insert any relevant notes") var/obj/item/weapon/paper/R = new(user.loc) R.name = "Official Coroner's Report - [dead_name]" - R.info = "NanoTrasen Science Station Cyberiad - Coroner's Report

Name of Deceased: [dead_name]

Rank of Deceased: [dead_rank]

Time of Death: [dead_tod]

Cause of Death: [dead_cause]

Additional Coroner's Notes: [dead_notes]" + R.info = "NanoTrasen Science Station Cyberiad - Coroner's Report

Name of Deceased: [dead_name]

Rank of Deceased: [dead_rank]

Time of Death: [dead_tod]

Cause of Death: [dead_cause]

Trace Chemicals: [dead_chems]

Additional Coroner's Notes: [dead_notes]

Coroner's Signature: " playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1) sleep(10) user.put_in_hands(R) From 519c23886d8581c583370512785b7c718a652479 Mon Sep 17 00:00:00 2001 From: Alffd Date: Tue, 23 May 2017 19:51:59 -0400 Subject: [PATCH 008/244] Makes PR atomic --- .../mob/living/carbon/human/species/station.dm | 2 -- sound/voice/vulp_yelp.ogg | Bin 15861 -> 0 bytes 2 files changed, 2 deletions(-) delete mode 100644 sound/voice/vulp_yelp.ogg diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm index 295e7ec91ab..e1dc9dee6b7 100644 --- a/code/modules/mob/living/carbon/human/species/station.dm +++ b/code/modules/mob/living/carbon/human/species/station.dm @@ -170,8 +170,6 @@ butt_sprite = "vulp" scream_verb = "yelps" - male_scream_sound = 'sound/voice/vulp_yelp.ogg' - female_scream_sound = 'sound/voice/vulp_yelp.ogg' has_organ = list( "heart" = /obj/item/organ/internal/heart, diff --git a/sound/voice/vulp_yelp.ogg b/sound/voice/vulp_yelp.ogg deleted file mode 100644 index 898cc953823dbfa72169a6a26b4d0499464801fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15861 zcmb`tby!u+_cy!|q@)F;L%Kb5cS|0+I}ZYqA}xqWBi$ezI;6X#q`L(~q)R0wpAFvk z_xZlR_r0FypLbuIxn^d~teN?&^;t7#HmWu@8o&eKpC^vsZ^pMi+ZTZX!NbYL+|Ko` z3PHN`ujE+~;(ew8LG`ZZf1bOZ2w(}-xq%&5==T5lOe6l)!~!I+9ZXBR71D@Qk`JLL!u|LH0zrHufff;A8&s-A$c7%c$6 z0RU54CagGX1txfW4x?9cy!>6R=h^$@`1d_T77>u%e-kQhOK^fnKma3JRPKg?{fK}K z5kr(qwt$@qe*qOrnEE#Xw9hB>7LNHf`7p;3COTA1y@vn@jJQ1YTYTtUVjfBzLIfu7 z$Xvcq7o@wOGZ$vRLFfEJ6{N(uofoGfxLueVCAh;_GbZ_nt!6?|2{Ns1QQnGdU3kkSW$%0OxRTv$==5&i;t3?L3=?Q!9j zbLH-H6$W29H|hR(rQu^G?0=1LXLbM(hmiHWB7Kc@_&8; z@BIZ_2z7>aqJ01=SB%*`ECHZeq8wByjK3p+4MKB%P^FHg9t{g%rLJce;ipY@zSm4+ zXe>%jySJdj2=N+dOQwO8p6rydRM!y&j8ypFoEKgiN?FkaSVz2>j@3(S2DY=CNJS}{ z*9H6PjiqiBHsXW1_wi{AwT+s8_5I@(MaJnPodT<1kM|2{utqc^F!#qY{a_gFuI_)j zk2q*IvpJ&Pj5k!iQOM@_)cMqL6mHR2aoLbBOnDTMQL>6fL26K92Dsas`;}7xKrqg| z7yp~wyYgQz&ifF?Jiu5z#5u@%my~vm2=0FB!jZy&fL_eX1A1{}?M9|+xqv(jUOS`D z0*{9(GQs~c3N$K}WsC$e@jXdGl3fOv3P4u;x8Z)$j^dJ!|JOVEi%cDl4t&Qs*)+IB zv^2GJJYMJ}xi8kgHJWo@ne|#Pjw zef8@8AC#dP5uMY|7K1$W7K#4C>n(iw0a-ty%KHSrxvATZWnz- z{~ye;4J$|vD+mqS42@!ZpJ?|!wYc%4!$A3N)BpAT4|C*PXu%g`j*JWKe=(;6LM8>W zsftzk=cWS;!D0RW&Q2IKjC98rg|O+$I6p=?^3BL8Q`fYNDhVz0* zHxXFurwWdjR3MIzfy%=HAOJuC{~qOx#SkEfrvt#77}rn;DuD%#AZn2t4z!pkC`N#R z&J|0Mkq(Zds0a!;H)$ zy1sg%UBZk$ z43a-%j&ZN5EN{x(o~dp|zx00ayt~2g1PW}fDvBu72_q6rU=MIERwH++CL|c)c@z2y z@LDy+=XCHHNv5*e8FQtgS`tMCP?f$yQSFp|Sy?TS5GvE#yIIvF>W4w#gcgkO`@!Mh z;I(ykgV$(6?e2Qmm-T{!7l8|eLF#7gBO$$H7Q+H?d<%P~-YNYEwmLG4QXbFyl@o%q zss#mXy&xp_vtk2#D3$e)DBi0A2cOZ8EUP8aPy`ofuT%tXr9-u~M6O_uyD@5sKvjK2 zFg9@e?LYviI)XXXY`-W1ROsO5j7;5|&V|abJD1#^o1 zcR42VV7xoK;3zUNf!ng$H*haE4a)ES4!jL1MFJ!r07Sv@=0gITRGOXq^78t09Ar)+|}6^K@}mr_jN^95qEVspypa|>rW5Dkz``3odNs0fuq6U zbAn)Ba7YkueNZ3R4i29&-@R`~2cOaprw)cHD$v0b&BGyJ4r~{%9}Y>>gen$+?ZPX2 zp^9MKn*r;3Q^9dTgGE&K>T4+8!3Eao!@%XBji~^CGDu;N{aGyd4vL>pFug9a^PxEdb&JKeen3R2g1A8 zA<4*XNe9HBfV)>7K6t1Ji3efmC6iJFQMQNxeHyIWjE90tPId(oGH|~D&pjY|WEMjp zT&__d7GPc9onSNF;_q&P1^~>?;O6^D-O}|{Vm2r{}!3(?xfV9b?&5+AnopoAZUsicg39ecu7=nn*fn}3jz+0*VJc*gN;F` zwEyC2Uj_g_kx+o_2c+6^{7fW|Snt<}0Ca#{mO!SqxH}mIg9$iKqPuxM%fY}Wslo%~ z!BZIqxPBCnUH87FsK9jR6?dL;=W2Jx|ECB8=W$NklHi)t|JctDsFxtfPC(g;Ae$#UDF(D7K8v{0FY<8KUjk7x&!^r z8vmX%A^HEw{qMT_+{QnGp*!P52yBqu^-XtG0o^|k5fBfEe46$+0*T;mji{ihBh2pI zKSnV({vO~2Z4!8T5Z;|fg8_;T4thRY-H-qiQv$dYHV-_o2s&wLB^bG2MYV($k>p@B z3uEggaoq=@0oMciCm00hz$P=PQcQPEz=axu-9W)`?dBaIV6LpO;7-eoq3fZ@otD~- zbZ-!bWMO_loNkW4OL0PP)zmN%c{H5t%!!d)5zjukdqU9Zb-Tn$B zzxC3h)#e;qm{fg5UA-pC)*Bjs+F`>n4BCB!5-i zdmK~|?QgsL!%95f-6a3^03GnIUCv(tRPo+#?^NCC1D%)pUjaDK{owZks3a=ge*|z) z0XVC_0&t*zb9Y(*VC>$WxCw;j1;jcOfi&pE^ndxa3T}V@wza4Iw?7RSXa3Rj?=1fR zFaCcH0Td2mpmc1Zk=p1g2(pl2vfp!%5M*3evPF~x14v_iSn?Y+$*sJ+2}OrW9z}^e zu%IAKW;nMB<3A`Wmh})?M5F{kq0C?e1>@limZTzEEulep<%T{CB_|Jzpmz>d-Wn96 z2rFABviKyhxgf#FR6A!L!85Dxja5_wDyTg*gbfRXf)O4vL*hEjbN2N)s5uo@&V!QW zijxnYvybH2O!vkSJfG5!Y}}x58{X4Fn}+S&Vab#vkx(XgP$fsNmV;=0>Su# z4upamS_Bw?g8$mYJnS#k|BKAvj|6&t@BpscSw1vT9Qi$8<@ZPI2U%mdX|dEvP)OWk ziRdY{@C4I$+Ri~w0`507@K+8_D2Rw_6i)n%`F^9OqJVwnW<2$q^qTbN{TLD|`Y<-j zFN_S3I(*Jx{F(**Z7`ghmsGk%Kop945*0VW^E>bc01$CGAEV-n2L@sQ{NnO44*>K> z801|t;^OSoxgFWgO8g8NyZ|5(I)w8+w1*0kL&C_Mj~LMNFvJJ=GBzjQ+z`NyXgJnm zgd&M5iStI6OdJ7?pMN!kVfkk;X?nJX=FZ(XcfYH@fhf!aPd}!ltZn@~2hebdshJ=G z5(?^II0hdo;2aEs+5w@q)*JkS!lL4m(z5c3N-Anl&Hr2_1Ox=!w-pD|fPlZ31>%(V zRlwb4!Ck}dL_2R{BQvwxTdUh!yxZGHx3|Q%w@+?w5pOSV_oc@_Bgdm0D?2!Ol~5*W z7vIu&_Dxm`l^7lV+0{I2D{DGi*yqkTi5A^pTxljU~H%pj;b^7In|a5Yt^j6n4uhpKi}epUBGc<9KduW_e7iSowom-Y3g zsc)&1RTkW?echSR2zAR+r*aiP*;K@jcyFU>m24`#Si_FZ&}OS-$0Yu;Y-hi1|HoNI zJl@&CSPm%7UxMU0<}VIX8$* zU)s)i&!6ZT=W)*pT3d)lU@JdB9^@SLY>~c(&dz`M!1MMteIzE@qy~}(2of6_bjO)1$3>Go)NYT($c)LJ35!#iWuV&l#iX>s6@ z$JiKPllGJ`OM;A5#uz zqTwt1`%eoRK2a_XJQMpvHKOfxN>Mt~H(F_Iv7px+d$VmwC4ZrZD4%afS!>d?D{y^& zC^c)n+m5Zj+a{WBtK4<78qAG3t=JxlD`cQd0QrQ%qA((P?nt-spc;kk+uIeJ3S2?N zmB=3mH!_c=4MtNLVYo>v>1^&Xex79_Om@1@Yg@`!=Go>E7cD7QPmSx6q8S|e0D-iI z%qPR!14;A+6!Cfmw<5DERW;j{SxNdTMUA#vM^=M|TCt|w+<4YM2~`ckD($Kkl^^d`i|TqlZGHqK1?fP#$08bg-|hc7_3-fuM^Zuj26V$p(Cpu! zhKK7S0hw9nu#)IsH&WQ!*iAj?52+Guo=TA3(_-?`ug_XXd zA+s25%!cS%{dAbv2|u_?nnk>zIt4yewsvXh9JokB9PMu#U#5+(bZpKFi@zIZ4x6JDj zDf;NfGSVZMr;gnXx{}SxLSFyx8)1~y9A8cmXsR}JoL>2tDeC7Nkn4W-4O6ium%HYc4%7ts{GNV9Lg#9UJ&SDTdD zdM#3luEq7@O`iDYzCYTpoaBRCRj%!PygvA3T$Mwz0~23=`Pq4KYLVe?7!nxt*6Z3& zp9F~qd6u;zdT8$J@?d$BI&9J*+-2Ba+)vlHde&C9g#`PA<8a|4r);F9LW6MPVOR#B z{ZJ9%HeHv>)K(C(vHgw$t8~F$K|%e;Kn{wN`tIvPL*u?Q=<~}_B7I!Dm*kYy7wb(5 zPkB67pm9IkD_pfKC@7t#fVs&L0x~&Han8>K^yr2*wcQ2wr%$^EaOs!k%$-%c{#bVZ z4rK6i``Br}6ITLoL?+OfP>%lcz6hY1Cf6Kc!O<}6yfjSG-gFZAnB5BN?>cnc2s?DM znu+4U%&pWVW%9WyrS&;g3Jd8`_#WuZYRR44TudmMWpw>F@*r% zzij)a)}y;o;|YiTK~FiWrmHo&pL17x{g{5!D|{h7GJM0JcSVjp?i_{zw6#>~Our`h z8gCOeQzLEI9WbLJen|&cZf$m*x{Yyhl6}^LSaYd*k8F6*mGZ2Ltu~|#&bp~2Rfbhy z@_b0CpB{`JUb^IIUZi9&fnsz$6zwIIt-qd-)ONWkEYv79P`Q4F_Imr%yqD<>iH=T5tKvLA0WJSxLwT608$OKe2W7 z6Jw`ilE{=)K?Zp^Ve_Z(^Pn!~Z>U?}SNBHjT*D;lU&wj1E|}HR_s$2DTxQK#0V9Pm-|V{tCZ7){TIhg4BWg?$9hEwlly9JgZg0MIDT!8W$8Y+i+GkGLLF;ar+-TfAu`vDo+c8nJv6VaI=t zxJq8eoAp{}ycVoBQbu8$(p#6Xdv$6a8M(ujS#3AHN&b@K7ZR|%PKw-24$SzCbLiM< z%KbiVKi`FW6=F;ZcyxuV7<;mroo!c?Dwl7%v>o+veW-J^-!9Yd+s_=iO=GRZrRgdaiQoUOa+?AQ+o}xWo zN0SZP#y~pdyQAf~K>_SN@`Llb?u8{NAdHht@7|%P@cj2|!F#m6$mH4j$2=hy-Y!u^ zWzmokgXzZkhu3_6_8Fw(emi=aaVtky-1=Sptg3f|9lI61NByLG6oabTFpz+heE2H9W~^{YGzpxs>VC`k42EPOZPh zd7V9LT}(MYN!yh~eHrI)R*UK)7YAx4w8Keub`ur08>tK~z>lo%PVr z@X@=bWnFoiny*%>1wIH^yQCJrThz}WdkeZQjBj@#9-D(^p8>|JPG=Eb<)ec7dv*?sNa z*@`xcd;z`o7_5VfOZj~6JWu3SDyBRdjMwCdg-$Pb%4UbkpB51=^bcD(E?wIn_>f$q z69L9EqycLUnbKa=ewtH1>`&pm%}BM%B%T^_nZ_TH%|zO#{On8gJnK0jJdrY6xbD|J z^}=Gl2@uM)04Cck^8B(|TU+(=KN*?`t8l zZ?;uD^^pbs?wc`#N56Ewt);*|Rm{FlSg`41=xJEX%snT)wf($!?FF3>(h%O6DMG>? zdSz41UQ1q(Gx>yUY0lY+A}vm}vaMAThgt#{lQBmF)-Pt#_4wrnczG`$%Cj1fAMhP# z9XPX&&E}ycjGE3%TJXuiepmhc-iP_)wWrf$Yw6FdMR!AWYEP#tr*0d~(-|ksTi9X) zDsv+a6GwE{Mo(mw8d~!8+7DU7Lzn%})yr`uD{1i99fQ6?Y!Kp%Bw@YIM{MNSQ)L&ElySYxb$h& zazV4_C-YUDadk%O0hV9y)gtq}*9qb&sce$%(Xpq1Qpq&dvX>!$J1RxTwh~(M^GU_k zAuAj}_*}&nRqu6L8Mnjed@$Wypkd=K&9Et(VZSxxcvm$-?i#tsHzBX@HL> zmk@`no&Fn-M|G&PdxC8hdjpZk(@xbS`?|0eYY%6=`p&>` zvV%^hTr6ZozpE0TlA;`i$)kVjeKYu#YqM7~v@+^*oSG)kwockHj?VpfU1vJMct)e| zdugps+;R?mTI~s^7JVkat5Vr{hgB*xZ$lElh>E3Hw^PlMSp(ESvV#XXAc|u^>51z zi;uNp638<>BUhb@P4)!T!(*j8uvMLWm)uFv-Lz(By{{DZKkM!6_`F~0T%VJ%z$hZ9 zCHEfOZH=QfIO2US6-1R7qK{xvy=3O3GJ%coyM7B5$1ZY%h>DDYoRwV3F+5dKh968Q9HynPH6%95D(0)Qda?qlNt|t0r1|iGKY) zw>tbA(Gk|erD^*r+WzGTc;CFus(Ma?lPN6o^g|8%hmqtISAIBFpGgTo_=QW%Nf=KI^o+Zqm3ZdMemYk<)ed zno|eHM$hx@IN~A{;i`4of{S7zko$D1qLCodgX75VS^v|JWj(fM8<1$h$fCyfrZ8Pf zlZlxwDq(>F8q1TWEdJZf=urIm>_Fc+2rFmA4*FCx^%?kmvtzzp8;9AUH;=5Q@Fy74y)%ChH=uSIPN-l7FmNt*rfw$s#|o9YqnBD5q< zYkz`sBga!!FSy+I0ovNO7{YAkm7cwz@u9^|SCng$zYqXYKZ@uN&cA1wAHO~jd4!Pd zKfN|Y9N68Hzq9OSQXvz?(&z5&zjjgfb&~Wg%MgX_O_d9#xNbg!gWvg2l&_EcY6Y7; zRWypSU?YM%+H7Y6Q%i0kL5W$Fovy;B4@BQj{0=?2?x$mYD2GRI;rE)=pxs!d>?_Wz z%M*$^I8VhHIuG_&`)vhL`I=v8!Dvt7xp%0^Xt_P-!@GCU@%`Y7$@4}XYzj|G;qdaU z(h!l+wXy_)u3askvA$`F%z6bkox4yBK1o8tA!1h2kdh4YyjGjI z8B($sDsyQ~R)XtIyEhT@J?7Sdv}$S7d}3=?c;Rxp{{AeIKE-eY_o(IKV}1_(%nj-O zH2T-IVIHR!-rD}Jl2gl(*daL6ItaZ)4?j~F(r2iJ!jn}AFfjB-hQA|AIB^G`Hyz}t zbNoqM`iTW===ERfkc{S^p586fe%Hl!%BLnqIwP-PNI6lsRo&O<>L`N+ndoMgELgtD zHO%YESnT7pG;*4FUG;NrRr-{W!iM9Og3tp6Z{Ey>uba73Equ+QKVK!G4Qt>ms?Kf4 zA=3Zuji*HQ?l&+jMt_4$rG|dtSh1hNF&{U0;FX&({QF(sWX0jodUA0tVgA!G(iY;O z!|-gXS8bPDrjw-8O9Odugxc8~5$3rF6rtsUPa!cH+8_pVEdcYM=*n|zo-VaPa8kE(ZxlVOt*}*hR1CwC+hKzk5)09HicIG&%M98aNV-{_w9wKO&lJR8%S=ckgQ3+ zI_^5hY1UlQM_RSa%V(o)a!GVuL!*Lh!`>Xyl3aA_m)%GvZ$Xk# zE(d2HF;eoRkNh&k)c)E}gEzyem~Zr>@<^5kf@vGR*a}hdgmj!?+cp_@Z)n#yY8(Ne z^QR#WhGck!(3_L5l(p{l>}hne_Al(W$}YD9Ik#icU{K{ZkfFi2dCTh*p?KAGaa_Zzx#ilj9ZhZAt+yTnw zGai`2ZSSOCl?9JINm}?wP0V2UvKE#g3oU!p|8rgIoWq4eZWf}P^x0&@o7J^dRhj*WkTQJ`ty<2n&B3zyR~KLe?|p^FZF04&QaW^=qjR}|Yk%j;owHwx`r7UUK)*=58|dls*- zRw(v*2iv&GLbG7}74&7MV(ntGKclJ(k9|g6-TQ?oM5eOeb3w&pQqq`aXJ5-s?4d@# znOZqSKfc&0kJrLGA>7{ieM^5)pEO~g|7TpP*~1{wn+J<`8vi3+->>2yRb>5^-SSVF zwmw||`Uf6|!`~40&MuS|9mlgat95Lcri;87E6kqP+u>iVh+XJk9>E_+KGO&~nc^_1 zIsIdX5zXYRN9Mk#p$~qCkVR7ibS;iNvORo)7X6$EbXC&hd7snHe9(~7(&S`pR?{(@ zsumI6X5QY?A-z)C%rQj6xpsglj{8UMy{!6ip`ZA~`}d^k+nw8}kH$3^y^!iR@;90X z*1pe`RYc{NIPzN&5!|+Y3s(HE8Y9hqvXsXgIE<`1@U0|B&LH3T_vf(+C%#`>wNn`> zvRtx0cjoqh`5auCyI?FHdzu>5^VR=Jq$Jn1Ue-Kg&pol|Xk?^JSA6_rejml@acS*I znf+#0+LW2d?sfDkT_2$%M=Rj`u;gSw!ylU(yX>qsdg;rR~wNXj*5sSM%-c3{>}>CO1tn*Tl=lC7X4-cUKFDcn9$>Q@A7|Z zTHxwrrR1wIM6nWufQ(^Z@x9Gi^#1qmqZ%;ip!p7el2flnc**o74 zOf9Dsv4&T>jb?_|GV?^84G~%}i4b}L|D?`#Nl#wV*cd{*1!d`a5#=pUloxaFoY6U= z-StBVbGM%Oc4My7{dgApo3YGKHjBeT)rx}-%ad=``~?YS<*TcL_;)|Ng5|D{H3%^m z`f1D^$G8?MT_5?CXfAbbo)FjA!oCXDosEj@r0-mI@#Lhth*K;hHP~j^m@hrTh#1<3 z?^aY2gk;W{M%dQM@{{{Hy~bE4A8^E-we_3+@QX;OFagIXh&4xHy{cThwK>ac*8-`W zOP`;-AmE2eA|XE#J`yk%62q)-5|HPz$BK}QEwerCU9nq;Lnj{mWhk$kto^Yk=+@wO=HkQYl1g?O+PIyh2mPHyzw zUdsg~%RQuPRkF;uE7Gq8iYRcn^j_hoB?J9naYxbei~NGAUl8n}k|${s#QU(v2?@hf zuob>V)V<=8OKZQio~5&ohdeG>yo5!m=*CyW<7;l@5*$O>RsPnnF&!7$_jN<(^Zos3dPLXMBF_t z`~E;bn(6wDRige`Kcx$)$rfAVOPkauOp{m4%8%3RwSN@8vGv(W#rZI}Zdx)pmb>vK z-;dKT4g11w%Co{@=iF`E{>oI)u3euEA~O6?iBB4)UFKUNtnnSUlTmvj*@L|;TpnSi zj#ZEY#e#EU=c32{C~Yz(h`+Pu5EWBQMT#IZY}9W{YrlrXZV=5JyPedj10svC*73~i z-6u}SY>ldU`DjiRKIeYE8H@0~bJ+Jiih25{&N=D)#ex>E zd@tRoQ*eVE2J&C&4cQpMqLx;?b8n`CeRiG{ViBm&c{hr@^kg1-n{Wt z-{!l%n(g(*MtIDth3j_(Wo6yx^RA@|W z!|N)PGQ|f^Hkzc%ge_{@^stFVqUls?#88;BE7Mw9Y<=GpD|?ck$18o=s*8e) zs>KSOdnauI*%(8Za~+>Xr}&X86d>4^`)=x{knCpL8iHnG+z!if3!vPmnC}zIZPPS} zN(&*G>7VDCx4m=8Ulxy~%g$ce7@p$K&AZ zP8J@WUEkr`%&S)Swjs$6^xkDFo26ggA+K-EOG;{PjC0ZO2BnDEc0bPc{B=B^{Tg_Z zbdVpIbx0v0r!^cTy+%(TMa!9}-PecJs@&aW6uNqL=xez?^Xq$6Z0>G@+F*5k^h`m& zL&elIzi6z#>^u7UO#j5_8)H)HsyC>%HRow(OYz%IoksSrga|@BV`pl#+tc5|-#du! z9Okz+==aG!^DE|z5&ul~;T!$Bp6vUOq+>@db@eDz)Pslj_YX*OhWFPG_xBIrKk5K! z>y%S?xAC|6x7oKHw_nv%G?X=<>iRd*q{x0&d&PN5rF^gh6Wj~)QA#|G?Qz?+0(Lm z^&=IGqhxK>SlcK8b;7h@0is&58Fq&xY@*3M;e`umPexq~!>&fC z8%(@7-F<_fy#y_OKuY3On5`&#TUzc?+mr5y4`d0=E<#rh34CXM|Y!@r;usxtbCt2O+c;(zs8Mgd;G9 z^nB+AfZdPaf6js?nNyWOWcRxq?_XUtoSi6>-7Kj)B* zo?j|YqQ0+mE3)&&XwR_FR9&rc9ubrA*v2vSYHo(EfU&&FZ}&ZYUE<|=jGd!x)x+v0 zGo9BqEmx|=*t72JzW$-=#$k$(-H&!gMh0zdqWtewi^{)`XaWH{IHqEiRMX|%EG(;;b{xxFzY20N&6ql+lp+IF4}fPzx!)5WX??Gq`Nj82!QNYmJ79nwsW3XUpQUK>BP z_BWEjLZI!ly(Eu&chyaQNZHHv{UHE;m!8f~e8E?c7nLYkAggak!PfSN==B5hAz|fV z!?fO?I-BlIO+s-B3$UYV!y0BXOH3$dnxEa!>eJfi5DqN>*y+OjCb?nDx>RIO`Kn|X ziHp9*n{4By%AnEuC%g-w*7P7VnjM85c#VVzP;v5Y@^9{=xy`h%wZ>t$JeC;{dFfP~ zk%)aNmFl6fL^fkLxW0%eU)Yv^@!CVEw`^(06~*z!5Al&Drfv{I4z1+_#?udanTJ2378)M$ z*DAlwM{)(ot|d^AkO56o0BDnbbTR{AZ|S-%(H+fghL=on=1E1qN5@88=XA$_Ma6fsYF*C_^>9G2@DHjqJl=!;pqdut|F!Qh7@ZJP8F$nA!ZrQz zX@f@A#w>t-N^#>SWU7PCtH0*IHWG5BPoABMYpi)#RvV(U!tJve zka=_Q;2B%Ezj3B0yWFp}+tx=%Pg|y;kMnQ&m<9;co6Nh{Iz2GdF_^yuN`zF$K$}3d`!`-1L>|#BM09v^a#L%5jf?l zUOK>H)YTJpo9URW5Ms??%N4!#R~?lRJRm>+bT((F5&0wYbV^^l<&4=0F-Nt7LQ@lHo6Cr<+^2hv|lsNdCuZ6`h=!ji2hmSwI;A8Qm zNYm_6sXX>qXye~0aDAJ9R2jYn{JK!Hmkp+h-_gTM%}?bxwJNhq zZn87f=(^Ul_)O|l`0*wS+u~{8xS_*=_QRHM z$|kN;uS2d~y~6246a>hJlONz90C^M`x1?efCe??`ms-(>{FwB!@xz{omua4VcH4ak zgI3m?nKceJO)GrsQ}S0#54m33=bWznp^9#moJyakw{N*N@;l~H9|$~Ih@5g)9s zKN}o|3Lw%pqC3_VICc?fKD80sY2lVb(`X{+5o-JB5#=UE>hu7Uf^}d_ha(ypxJmuq z|NC-9-n-lS!Rn>R+dw9w@)$ z+(S@XZjwGmYoaJ$X!WMta9}|esFe+9X*g}z9^x)+FR@M|jIK=~LZI!rihjVL^{`;_ z)W(Tp<&iyka~Vt^JlUg<-Jyj*Cu8sosZlB`W;l|c23Qtd3MDzY9+$v&5{pDz{@^{J ztpnZuQ+-_T{HO`}+Tb;Qk4Gz`Py!9<*PMgrAr>M}j^kg09m<>Ti=)|7whEf&tL%JWi_; z3$vO2cDtA8)GBs+n7r2OJMgESu5!2@ uSvE6WmpuD)8f(WFi}od@9wA40Rs%IMExX3hxXfHw^P=4~e2_2-_kRH)w#3H( From 47c4cf35384b166afa7faeca690c653db8b2f5e6 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 24 May 2017 10:27:11 +0100 Subject: [PATCH 009/244] Adds a jobs board to the newscaster --- code/game/machinery/newscaster.dm | 30 ++++++++++++++++++++++++++++++ nano/styles/_formatting.less | 5 +++++ nano/templates/newscaster.tmpl | 18 ++++++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 6040f72ab6b..fbbe6f68cc8 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -68,6 +68,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co #define NEWSCASTER_D_NOTICE_FC 9 // D-Notice feed channel #define NEWSCASTER_W_ISSUE_H 10 // Wanted Issue handler #define NEWSCASTER_W_ISSUE 11 // STATIONWIDE WANTED ISSUE +#define NEWSCASTER_JOBS 12 // Available jobs /obj/machinery/newscaster name = "newscaster" @@ -94,6 +95,21 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co var/silence = 0 var/temp = null var/temp_back_screen = NEWSCASTER_MAIN + var/list/jobblacklist = list( + /datum/job/ai, + /datum/job/cyborg, + /datum/job/captain, + /datum/job/judge, + /datum/job/blueshield, + /datum/job/nanotrasenrep, + /datum/job/pilot, + /datum/job/brigdoc, + /datum/job/mechanic, + /datum/job/barber, + /datum/job/chaplain, + /datum/job/ntnavyofficer, + /datum/job/ntspecops, + /datum/job/civilian) var/static/REDACTED = "\[REDACTED\]" light_range = 0 @@ -252,6 +268,14 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co data["criminal"] = news_network.wanted_issue.author data["description"] = news_network.wanted_issue.body data["photo"] = news_network.wanted_issue.img ? icon2base64(news_network.wanted_issue.img) : 0 + if(12) + var/list/jobs = list() + data["jobs"] = jobs + for(var/datum/job/job in job_master.occupations) + if(job_blacklisted(job)) + continue + if(job.is_position_available()) + jobs[++jobs.len] = list("title" = job.title) return data /obj/machinery/newscaster/Topic(href, href_list) @@ -535,6 +559,9 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co if(can_scan(usr)) scan_user(usr) //Newscaster scans you + else if(href_list["jobs"]) + screen = NEWSCASTER_JOBS + nanomanager.update_uis(src) return 1 @@ -748,6 +775,9 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co ////////////////////////////////////helper procs +/obj/machinery/newscaster/proc/job_blacklisted(datum/job/job) + return (job.type in jobblacklist) + /obj/machinery/newscaster/proc/scan_user(mob/user) if(ishuman(user)) //User is a human var/mob/living/carbon/human/human_user = user diff --git a/nano/styles/_formatting.less b/nano/styles/_formatting.less index e8f65be969c..19ff288dd3f 100644 --- a/nano/styles/_formatting.less +++ b/nano/styles/_formatting.less @@ -156,6 +156,11 @@ float: left; } +.jobValues { + float: left; + width: 30%; +} + // CHROMELESS STUFF .fancy { diff --git a/nano/templates/newscaster.tmpl b/nano/templates/newscaster.tmpl index af4edb702ad..c589bde4702 100644 --- a/nano/templates/newscaster.tmpl +++ b/nano/templates/newscaster.tmpl @@ -31,6 +31,7 @@ Property of Nanotrasen
{{if data.wanted_issue}}

{{:helper.link('Read Wanted issue', 'exclamation-triangle', {'view_wanted' : 1})}}
{{/if}} +
{{:helper.link('View available NT jobs', 'share', {'jobs' : 1})}}
{{:helper.link('Create feed channel', 'plus', {'create_channel' : 1})}}
{{:helper.link('View feed channels', 'arrow-right', {'view' : 1})}}
{{:helper.link('Submit new feed story', 'share', {'create_feed_story' : 1})}}
@@ -297,5 +298,22 @@ Property of Nanotrasen
{{:helper.link('Back', 'arrow-left', {'setScreen' : 0})}}
+ {{else data.screen == 12}} +

CAREERS AT NANOTRASEN

+ Work for a better future.
+
+ {{for data.jobs}} +
+ {{:value.title}}
+
+ {{empty}} + No available jobs... + {{/for}} + +
+
+
{{:helper.link('Refresh', 'refresh', {'refresh' : 0})}}
+
{{:helper.link('Back', 'arrow-left', {'setScreen' : 1})}}
+
{{/if}} {{/if}} \ No newline at end of file From b6311e4d4d796d471e06070d729f67e37646e6d4 Mon Sep 17 00:00:00 2001 From: Kyep Date: Sun, 28 May 2017 20:47:24 -0700 Subject: [PATCH 010/244] Wirecutters destroy glowshrooms Two hits with a wirecutter now destroy glowshrooms. This makes it possible to remove glowshroom infestations more easily without scythes. --- code/game/objects/effects/glowshroom.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index f641cb26c32..d78aa5965f4 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -162,6 +162,9 @@ G.endurance -= damage_to_do G.CheckEndurance() return + if(istype(I, /obj/item/weapon/wirecutters)) + endurance -= 15 // two hits + CheckEndurance() if(I.damtype != STAMINA) endurance -= damage_to_do CheckEndurance() From 4efc4cc3a5a2faa29123351f55cae5c66694ae2b Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 29 May 2017 18:54:17 -0700 Subject: [PATCH 011/244] Updates to make sharp items effective more generally --- code/game/objects/effects/glowshroom.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index d78aa5965f4..9af07df67b4 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -162,9 +162,8 @@ G.endurance -= damage_to_do G.CheckEndurance() return - if(istype(I, /obj/item/weapon/wirecutters)) - endurance -= 15 // two hits - CheckEndurance() + else if(I.sharp) + damage_to_do = I.force * 3 // wirecutter: 6->18, knife 10->30, hatchet 12->36 if(I.damtype != STAMINA) endurance -= damage_to_do CheckEndurance() From 66bbd956b236c28c9397d34407fd337aa585b511 Mon Sep 17 00:00:00 2001 From: Chakirski Date: Thu, 1 Jun 2017 00:16:43 -0500 Subject: [PATCH 012/244] tegir --- code/game/objects/items/devices/radio/radio.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index d324de69231..6de8ab9b98c 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -600,9 +600,9 @@ var/global/list/default_medbay_channels = list( /obj/item/device/radio/emp_act(severity) frequency = get_random_freq() - if(listening == 1) - visible_message("\The [src] screeches violently!") - + if(listening) + visible_message("[src] buzzes violently!") + broadcasting = 0 listening = 0 for(var/ch_name in channels) @@ -610,7 +610,7 @@ var/global/list/default_medbay_channels = list( ..() /obj/item/device/radio/proc/get_random_freq() - var/rand_freq = round(rand(1440, 1480), 10) + pick(1, 3, 5, 9) + var/rand_freq = round(rand(PUBLIC_LOW_FREQ, PUBLIC_HIGH_FREQ - 9), 10) + pick(1, 3, 5, 9) return rand_freq /////////////////////////////// From e4bafed7dfe6e882a2e202ae876ea492a6f281a8 Mon Sep 17 00:00:00 2001 From: Chakirski Date: Thu, 1 Jun 2017 11:36:40 -0500 Subject: [PATCH 013/244] rip-freq --- code/game/objects/items/devices/radio/radio.dm | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 6de8ab9b98c..5798d77f890 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -599,7 +599,14 @@ var/global/list/default_medbay_channels = list( else return /obj/item/device/radio/emp_act(severity) - frequency = get_random_freq() + var/emp + on = 0 + emp++ + spawn(70) + emp-- + if(!emp) + on = 1 + if(listening) visible_message("[src] buzzes violently!") @@ -609,10 +616,6 @@ var/global/list/default_medbay_channels = list( channels[ch_name] = 0 ..() -/obj/item/device/radio/proc/get_random_freq() - var/rand_freq = round(rand(PUBLIC_LOW_FREQ, PUBLIC_HIGH_FREQ - 9), 10) + pick(1, 3, 5, 9) - return rand_freq - /////////////////////////////// //////////Borg Radios////////// /////////////////////////////// From 90de04c77ba5524d8807fb3df423ebc9f9d5500a Mon Sep 17 00:00:00 2001 From: Chakirski Date: Thu, 1 Jun 2017 11:37:44 -0500 Subject: [PATCH 014/244] randomness --- code/game/objects/items/devices/radio/radio.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 5798d77f890..6fa955b461f 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -602,7 +602,7 @@ var/global/list/default_medbay_channels = list( var/emp on = 0 emp++ - spawn(70) + spawn(rand(100, 200)) emp-- if(!emp) on = 1 From 93c7b4c6c321b2bfe169d763404a7c7b2ff476b2 Mon Sep 17 00:00:00 2001 From: Chakirski Date: Thu, 1 Jun 2017 13:38:53 -0500 Subject: [PATCH 015/244] faux --- code/game/objects/items/devices/radio/radio.dm | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 6fa955b461f..3930192ba47 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -37,6 +37,7 @@ var/global/list/default_medbay_channels = list( var/list/channels = list() //see communications.dm for full list. First channes is a "default" for :h var/subspace_transmission = 0 var/syndie = 0//Holder to see if it's a syndicate encrpyed radio + var/emp = 0 //How many times this is affected by EMPs var/is_special = 0 //For electropacks mostly, skips Topic() checks @@ -599,13 +600,9 @@ var/global/list/default_medbay_channels = list( else return /obj/item/device/radio/emp_act(severity) - var/emp on = 0 emp++ - spawn(rand(100, 200)) - emp-- - if(!emp) - on = 1 + addtimer(src, "enable_radio", rand(100, 200)) if(listening) visible_message("[src] buzzes violently!") @@ -616,6 +613,12 @@ var/global/list/default_medbay_channels = list( channels[ch_name] = 0 ..() +/obj/item/device/radio/proc/enable_radio() + if(emp > 0) + emp-- + if(!emp) + on = 1 + /////////////////////////////// //////////Borg Radios////////// /////////////////////////////// From db378ae8a7bd9dcebb7a1f48a5e1147efce04d5a Mon Sep 17 00:00:00 2001 From: Chakirski Date: Thu, 1 Jun 2017 13:54:39 -0500 Subject: [PATCH 016/244] faux2.0 --- code/game/objects/items/devices/radio/radio.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 3930192ba47..3c9c0211663 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -37,7 +37,7 @@ var/global/list/default_medbay_channels = list( var/list/channels = list() //see communications.dm for full list. First channes is a "default" for :h var/subspace_transmission = 0 var/syndie = 0//Holder to see if it's a syndicate encrpyed radio - var/emp = 0 //How many times this is affected by EMPs + var/disable_timer = 0 //How many times this is disabled by EMPs var/is_special = 0 //For electropacks mostly, skips Topic() checks @@ -601,7 +601,7 @@ var/global/list/default_medbay_channels = list( /obj/item/device/radio/emp_act(severity) on = 0 - emp++ + disable_timer++ addtimer(src, "enable_radio", rand(100, 200)) if(listening) @@ -614,9 +614,9 @@ var/global/list/default_medbay_channels = list( ..() /obj/item/device/radio/proc/enable_radio() - if(emp > 0) - emp-- - if(!emp) + if(disable_timer > 0) + disable_timer-- + if(!disable_timer) on = 1 /////////////////////////////// From 658a5215c66a89fd2150e771fb0b4f5b9fe095cb Mon Sep 17 00:00:00 2001 From: DarkPyrolord Date: Fri, 2 Jun 2017 08:43:33 +1200 Subject: [PATCH 017/244] Easy fix --- code/game/gamemodes/vampire/vampire.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm index f3dc8e4e41a..406f21bdcdb 100644 --- a/code/game/gamemodes/vampire/vampire.dm +++ b/code/game/gamemodes/vampire/vampire.dm @@ -10,7 +10,7 @@ config_tag = "vampire" restricted_jobs = list("AI", "Cyborg") protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Chaplain", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer") - protected_species = list("Machine", "Plasmaman") + protected_species = list("Machine") required_players = 15 required_enemies = 1 recommended_enemies = 4 From 247aa415f4e9ba25e24d8eca53f5f4f3be9a5850 Mon Sep 17 00:00:00 2001 From: Alffd Date: Sun, 23 Apr 2017 18:06:22 -0400 Subject: [PATCH 018/244] Ports Catsplosion from TG --- .../mob/living/simple_animal/friendly/cat.dm | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 95a1d100161..e98d1007676 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -37,6 +37,59 @@ icon_resting = "cat_rest" gender = FEMALE gold_core_spawnable = CHEM_MOB_SPAWN_INVALID + var/list/family = list() + var/lives = 9 + var/memory_saved = 0 + +/mob/living/simple_animal/pet/cat/Runtime/New() + Read_Memory() + ..() + +/mob/living/simple_animal/pet/cat/Runtime/Life() + if(!stat && ticker.current_state == GAME_STATE_FINISHED && !memory_saved) + Write_Memory() + ..() + +/mob/living/simple_animal/pet/cat/Runtime/death() + if(!memory_saved) + Write_Memory(1) + ..() + +/mob/living/simple_animal/pet/cat/Runtime/proc/Read_Memory() + var/savefile/S = new /savefile("data/npc_saves/Runtime.sav") + S["family"] >> family + S["lives"] >> lives + + if(isnull(family)) + family = list() + + if(isnull(lives)) + lives = 9 + + if(lives <= 0) + lives = 10 //Lowers to 9 in Write_Memory + Write_Memory(1) + qdel(src) + + for(var/cat_type in family) + if(family[cat_type] > 0) + for(var/i in 1 to family[cat_type]) + new cat_type(loc) + +/mob/living/simple_animal/pet/cat/Runtime/proc/Write_Memory(dead) + var/savefile/S = new /savefile("data/npc_saves/Runtime.sav") + if(dead) + S["lives"] << lives - 1 + family = list() + for(var/mob/living/simple_animal/pet/cat/C in mob_list) + if(istype(C,type) || C.stat || !C.butcher_results || C.name == "SyndiCat") + continue + if(C.type in family) + family[C.type] += 1 + else + family[C.type] = 1 + S["family"] << family + memory_saved = 1 /mob/living/simple_animal/pet/cat/handle_automated_action() ..() From 0d6163445165a583914494d12c0f1a58fd674ae2 Mon Sep 17 00:00:00 2001 From: Alffd Date: Thu, 4 May 2017 15:07:07 -0400 Subject: [PATCH 019/244] Ports current TG version better handling of cat creation Limits cats to 500 #nofunallowed --- .../mob/living/simple_animal/friendly/cat.dm | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index e98d1007676..3b8808c1e2c 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -40,12 +40,16 @@ var/list/family = list() var/lives = 9 var/memory_saved = 0 + var/list/children = list() //Actual mob instances of children + var/cats_deployed = 0 /mob/living/simple_animal/pet/cat/Runtime/New() Read_Memory() ..() /mob/living/simple_animal/pet/cat/Runtime/Life() + if(!cats_deployed && ticker.current_state >= GAME_STATE_SETTING_UP) + Deploy_The_Cats() if(!stat && ticker.current_state == GAME_STATE_FINISHED && !memory_saved) Write_Memory() ..() @@ -58,24 +62,9 @@ /mob/living/simple_animal/pet/cat/Runtime/proc/Read_Memory() var/savefile/S = new /savefile("data/npc_saves/Runtime.sav") S["family"] >> family - S["lives"] >> lives - if(isnull(family)) family = list() - if(isnull(lives)) - lives = 9 - - if(lives <= 0) - lives = 10 //Lowers to 9 in Write_Memory - Write_Memory(1) - qdel(src) - - for(var/cat_type in family) - if(family[cat_type] > 0) - for(var/i in 1 to family[cat_type]) - new cat_type(loc) - /mob/living/simple_animal/pet/cat/Runtime/proc/Write_Memory(dead) var/savefile/S = new /savefile("data/npc_saves/Runtime.sav") if(dead) @@ -91,6 +80,13 @@ S["family"] << family memory_saved = 1 +/mob/living/simple_animal/pet/cat/Runtime/proc/Deploy_The_Cats() + cats_deployed = 1 + for(var/cat_type in family) + if(family[cat_type] > 0) + for(var/i in 1 to min(family[cat_type],100)) //Limits to about 500 cats, you wouldn't think this would be needed (BUT IT IS) + new cat_type(loc) + /mob/living/simple_animal/pet/cat/handle_automated_action() ..() @@ -107,6 +103,12 @@ //attempt to mate make_babies() +/mob/living/simple_animal/pet/cat/Runtime/make_babies() + var/mob/baby = ..() + if(baby) + children += baby + return baby + /mob/living/simple_animal/pet/cat/handle_automated_movement() ..() if(eats_mice && !incapacitated()) From 993db34b8f3518a7189b74da38ea7276ed55e31a Mon Sep 17 00:00:00 2001 From: Alffd Date: Sat, 13 May 2017 18:47:05 -0400 Subject: [PATCH 020/244] Fixes make_babies not returning the baby --- code/modules/mob/living/simple_animal/simple_animal.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 1aa6c82b4a8..f24068bf35d 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -592,7 +592,7 @@ alone = 0 continue if(alone && partner && children < 3) - new childtype(loc) + return new childtype(loc) /mob/living/simple_animal/say_quote(var/message) var/verb = "says" From cecea25fd3ac2a8300a38446d93631fac25fbea4 Mon Sep 17 00:00:00 2001 From: Alffd Date: Wed, 24 May 2017 18:11:46 -0400 Subject: [PATCH 021/244] Ports rest of TG Cat --- .../mob/living/simple_animal/friendly/cat.dm | 85 ++++++++++++------- 1 file changed, 55 insertions(+), 30 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 3b8808c1e2c..b20d492a829 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -38,7 +38,6 @@ gender = FEMALE gold_core_spawnable = CHEM_MOB_SPAWN_INVALID var/list/family = list() - var/lives = 9 var/memory_saved = 0 var/list/children = list() //Actual mob instances of children var/cats_deployed = 0 @@ -54,6 +53,12 @@ Write_Memory() ..() +/mob/living/simple_animal/pet/cat/Runtime/make_babies() + var/mob/baby = ..() + if(baby) + children += baby + return baby + /mob/living/simple_animal/pet/cat/Runtime/death() if(!memory_saved) Write_Memory(1) @@ -62,21 +67,21 @@ /mob/living/simple_animal/pet/cat/Runtime/proc/Read_Memory() var/savefile/S = new /savefile("data/npc_saves/Runtime.sav") S["family"] >> family + if(isnull(family)) family = list() /mob/living/simple_animal/pet/cat/Runtime/proc/Write_Memory(dead) var/savefile/S = new /savefile("data/npc_saves/Runtime.sav") - if(dead) - S["lives"] << lives - 1 family = list() - for(var/mob/living/simple_animal/pet/cat/C in mob_list) - if(istype(C,type) || C.stat || !C.butcher_results || C.name == "SyndiCat") - continue - if(C.type in family) - family[C.type] += 1 - else - family[C.type] = 1 + if(!dead) + for(var/mob/living/simple_animal/pet/cat/kitten/C in children) + if(istype(C,type) || C.stat || !C.z || !C.butcher_results) + continue + if(C.type in family) + family[C.type] += 1 + else + family[C.type] = 1 S["family"] << family memory_saved = 1 @@ -87,31 +92,44 @@ for(var/i in 1 to min(family[cat_type],100)) //Limits to about 500 cats, you wouldn't think this would be needed (BUT IT IS) new cat_type(loc) -/mob/living/simple_animal/pet/cat/handle_automated_action() - ..() + +/mob/living/simple_animal/pet/cat/Life() + if(!stat && !buckled && !client) + if(prob(1)) + custom_emote(1, pick("stretches out for a belly rub.", "wags its tail.", "lies down.")) + icon_state = "[icon_living]_rest" + resting = 1 + update_canmove() + else if (prob(1)) + custom_emote(1, pick("sits down.", "crouches on its hind legs.", "looks alert.")) + icon_state = "[icon_living]_sit" + resting = 1 + update_canmove() + else if (prob(1)) + if (resting) + custom_emote(1, pick("gets up and meows.", "walks around.", "stops resting.")) + icon_state = "[icon_living]" + resting = 0 + update_canmove() + else + custom_emote(1, pick("grooms its fur.", "twitches its whiskers.", "shakes out its coat.")) //MICE! - if(eats_mice && loc && isturf(loc) && !incapacitated()) - for(var/mob/living/simple_animal/mouse/M in view(1,src)) - if(!M.stat && Adjacent(M)) - custom_emote(1, "splats \the [M]!") - M.splat() - movement_target = null - stop_automated_movement = 0 - break + if((src.loc) && isturf(src.loc)) + if(!stat && !resting && !buckled) + for(var/mob/living/simple_animal/mouse/M in view(1,src)) + if(!M.stat && Adjacent(M)) + custom_emote(1, "splats \the [M]!") + M.splat() + movement_target = null + stop_automated_movement = 0 + break + + ..() - //attempt to mate make_babies() -/mob/living/simple_animal/pet/cat/Runtime/make_babies() - var/mob/baby = ..() - if(baby) - children += baby - return baby - -/mob/living/simple_animal/pet/cat/handle_automated_movement() - ..() - if(eats_mice && !incapacitated()) + if(!stat && !resting && !buckled) turns_since_scan++ if(turns_since_scan > 5) walk_to(src,0) @@ -130,6 +148,13 @@ stop_automated_movement = 1 walk_to(src,movement_target,0,3) + +/mob/living/simple_animal/pet/cat/Runtime/make_babies() + var/mob/baby = ..() + if(baby) + children += baby + return baby + /mob/living/simple_animal/pet/cat/Proc name = "Proc" From 7ab60d613fe3a07ffda22c99c2684248d07574af Mon Sep 17 00:00:00 2001 From: Alffd Date: Wed, 31 May 2017 20:50:20 -0500 Subject: [PATCH 022/244] Fox fixes --- .../mob/living/simple_animal/friendly/cat.dm | 45 +++++++++---------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index b20d492a829..fa911ee8b5a 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -93,29 +93,29 @@ new cat_type(loc) -/mob/living/simple_animal/pet/cat/Life() - if(!stat && !buckled && !client) - if(prob(1)) - custom_emote(1, pick("stretches out for a belly rub.", "wags its tail.", "lies down.")) - icon_state = "[icon_living]_rest" - resting = 1 +/mob/living/simple_animal/pet/cat/handle_automated_action() + ..() + if(prob(1)) + custom_emote(1, pick("stretches out for a belly rub.", "wags its tail.", "lies down.")) + icon_state = "[icon_living]_rest" + resting = 1 + update_canmove() + else if (prob(1)) + custom_emote(1, pick("sits down.", "crouches on its hind legs.", "looks alert.")) + icon_state = "[icon_living]_sit" + resting = 1 + update_canmove() + else if (prob(1)) + if (resting) + custom_emote(1, pick("gets up and meows.", "walks around.", "stops resting.")) + icon_state = "[icon_living]" + resting = 0 update_canmove() - else if (prob(1)) - custom_emote(1, pick("sits down.", "crouches on its hind legs.", "looks alert.")) - icon_state = "[icon_living]_sit" - resting = 1 - update_canmove() - else if (prob(1)) - if (resting) - custom_emote(1, pick("gets up and meows.", "walks around.", "stops resting.")) - icon_state = "[icon_living]" - resting = 0 - update_canmove() - else - custom_emote(1, pick("grooms its fur.", "twitches its whiskers.", "shakes out its coat.")) + else + custom_emote(1, pick("grooms its fur.", "twitches its whiskers.", "shakes out its coat.")) //MICE! - if((src.loc) && isturf(src.loc)) + if(eats_mice && loc && isturf(loc) && !incapacitated()) if(!stat && !resting && !buckled) for(var/mob/living/simple_animal/mouse/M in view(1,src)) if(!M.stat && Adjacent(M)) @@ -124,11 +124,10 @@ movement_target = null stop_automated_movement = 0 break - - ..() - make_babies() +/mob/living/simple_animal/pet/cat/handle_automated_movement() + ..() if(!stat && !resting && !buckled) turns_since_scan++ if(turns_since_scan > 5) From 1176929d44017d6bfae28f37fbedc97ff92a7851 Mon Sep 17 00:00:00 2001 From: Alffd Date: Thu, 1 Jun 2017 17:16:53 -0500 Subject: [PATCH 023/244] More fixes --- .../mob/living/simple_animal/friendly/cat.dm | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index fa911ee8b5a..aa23cad4a25 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -115,15 +115,14 @@ custom_emote(1, pick("grooms its fur.", "twitches its whiskers.", "shakes out its coat.")) //MICE! - if(eats_mice && loc && isturf(loc) && !incapacitated()) - if(!stat && !resting && !buckled) - for(var/mob/living/simple_animal/mouse/M in view(1,src)) - if(!M.stat && Adjacent(M)) - custom_emote(1, "splats \the [M]!") - M.splat() - movement_target = null - stop_automated_movement = 0 - break + if(eats_mice && isturf(loc) && !incapacitated()) + for(var/mob/living/simple_animal/mouse/M in view(1,src)) + if(!M.stat && Adjacent(M)) + custom_emote(1, "splats \the [M]!") + M.splat() + movement_target = null + stop_automated_movement = 0 + break make_babies() /mob/living/simple_animal/pet/cat/handle_automated_movement() From 952f6ffd0b440a205dbe8e8a57c15fdb33a01cc4 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Thu, 1 Jun 2017 20:02:44 -0400 Subject: [PATCH 024/244] itsucanny --- code/datums/uplink_item.dm | 8 + code/game/objects/items/cardboard_cutouts.dm | 176 ++++++++++++++++++ .../items/stacks/sheets/sheet_types.dm | 1 + .../items/weapons/storage/uplink_kits.dm | 6 + icons/obj/cardboard_cutout.dmi | Bin 0 -> 17062 bytes paradise.dme | 1 + 6 files changed, 192 insertions(+) create mode 100644 code/game/objects/items/cardboard_cutouts.dm create mode 100644 icons/obj/cardboard_cutout.dmi diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 1cf08abebd0..cf30e5f1585 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -922,6 +922,14 @@ var/list/uplink_items = list() cost = 2 surplus = 30 +/datum/uplink_item/stealthy_tools/cutouts + name = "Adaptive Cardboard Cutouts" + desc = "These cardboard cutouts are coated with a thin material that prevents discoloration and makes the images on them appear more lifelike. This pack contains three as well as a \ + crayon for changing their appearances." + item = /obj/item/weapon/storage/box/syndie_kit/cutouts + cost = 1 + surplus = 20 + // DEVICE AND TOOLS /datum/uplink_item/device_tools diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm new file mode 100644 index 00000000000..aeb5e19a9c6 --- /dev/null +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -0,0 +1,176 @@ +//Cardboard cutouts! They're man-shaped and can be colored with a crayon to look like a human in a certain outfit, although it's limited, discolored, and obvious to more than a cursory glance. +/obj/item/cardboard_cutout + name = "cardboard cutout" + desc = "A vaguely humanoid cardboard cutout. It's completely blank." + icon = 'icons/obj/cardboard_cutout.dmi' + icon_state = "cutout_basic" + burn_state = FLAMMABLE + w_class = 4 + var/list/possible_appearances = list("Assistant", "Clown", "Mime", + "Traitor", "Nuke Op", "Cultist", "Clockwork Cultist", + "Revolutionary", "Wizard", "Shadowling", "Xenomorph", "Swarmer", + "Ash Walker", "Deathsquad Officer", "Ian", "Slaughter Demon", + "Laughter Demon", "Xenomorph Maid", "Private Security Officer") + var/pushed_over = FALSE //If the cutout is pushed over and has to be righted + var/deceptive = FALSE //If the cutout actually appears as what it portray and not a discolored version + var/lastattacker = null + +/obj/item/cardboard_cutout/attack_hand(mob/living/user) + if(user.a_intent == "help" || pushed_over) + return ..() + user.visible_message("[user] pushes over [src]!", "You push over [src]!") + playsound(src, 'sound/weapons/Genhit.ogg', 50, 1) + push_over() + +/obj/item/cardboard_cutout/proc/push_over() + name = initial(name) + desc = "[initial(desc)] It's been pushed over." + icon = initial(icon) + icon_state = "cutout_pushed_over" + color = initial(color) + alpha = initial(alpha) + pushed_over = TRUE + +/obj/item/cardboard_cutout/attack_self(mob/living/user) + if(!pushed_over) + return + user << "You right [src]." + desc = initial(desc) + icon = initial(icon) + icon_state = initial(icon_state) //This resets a cutout to its blank state - this is intentional to allow for resetting + pushed_over = FALSE + +/obj/item/cardboard_cutout/attackby(obj/item/I, mob/living/user, params) + if(istype(I, /obj/item/toy/crayon)) + change_appearance(I, user) + return + // Why yes, this does closely resemble mob and object attack code. + if(I.flags & NOBLUDGEON) + return + if(!I.force) + playsound(loc, 'sound/weapons/tap.ogg', 20, 1, -1) + else if(I.hitsound) + playsound(loc, I.hitsound, 20, 1, -1) + + user.changeNext_move(CLICK_CD_MELEE) + user.do_attack_animation(src) + + if(I.force) + user.visible_message("[user] has hit \ + [src] with [I]!", "You hit [src] \ + with [I]!") + + if(prob(I.force)) + push_over() + +/obj/item/cardboard_cutout/bullet_act(obj/item/projectile/P) + visible_message("[src] has been hit by [P]!") + playsound(src, 'sound/weapons/slice.ogg', 50, 1) + if(prob(P.damage)) + push_over() + +/obj/item/cardboard_cutout/proc/change_appearance(obj/item/toy/crayon/crayon, mob/living/user) + if(!crayon || !user) + return + if(pushed_over) + to_chat(user, "Right [src] first!") + return + var/new_appearance = input(user, "Choose a new appearance for [src].", "26th Century Deception") as null|anything in possible_appearances + if(!new_appearance || !crayon) + return + if(!do_after(user, 10, FALSE, src, TRUE)) + return + user.visible_message("[user] gives [src] a new look.", "Voila! You give [src] a new look.") + alpha = 255 + icon = initial(icon) + if(!deceptive) + color = "#FFD7A7" + switch(new_appearance) + if("Assistant") + name = "[pick(first_names_male)] [pick(last_names)]" + desc = "A cardboat cutout of an assistant." + icon_state = "cutout_greytide" + if("Clown") + name = pick(clown_names) + desc = "A cardboard cutout of a clown. You get the feeling that it should be in a corner." + icon_state = "cutout_clown" + if("Mime") + name = pick(mime_names) + desc = "...(A cardboard cutout of a mime.)" + icon_state = "cutout_mime" + if("Traitor") + name = "[pick("Unknown", "Captain")]" + desc = "A cardboard cutout of a traitor." + icon_state = "cutout_traitor" + if("Nuke Op") + name = "[pick("Unknown", "COMMS", "Telecomms", "AI", "stealthy op", "STEALTH", "sneakybeaky", "MEDIC", "Medic")]" + desc = "A cardboard cutout of a nuclear operative." + icon_state = "cutout_fluke" + if("Cultist") + name = "Unknown" + desc = "A cardboard cutout of a cultist." + icon_state = "cutout_cultist" + if("Clockwork Cultist") + name = "[random_name(pick(MALE,FEMALE))]" + desc = "A cardboard cutout of a servant of Ratvar." + icon_state = "cutout_servant" + if("Revolutionary") + name = "Unknown" + desc = "A cardboard cutout of a revolutionary." + icon_state = "cutout_viva" + if("Wizard") + name = "[pick(wizard_first)], [pick(wizard_second)]" + desc = "A cardboard cutout of a wizard." + icon_state = "cutout_wizard" + if("Shadowling") + name = "Unknown" + desc = "A cardboard cutout of a shadowling." + icon_state = "cutout_shadowling" + if("Xenomorph") + name = "alien hunter ([rand(1, 999)])" + desc = "A cardboard cutout of a xenomorph." + icon_state = "cutout_fukken_xeno" + if(prob(25)) + alpha = 75 //Spooky sneaking! + if("Swarmer") + name = "Swarmer ([rand(1, 999)])" + desc = "A cardboard cutout of a swarmer." + icon_state = "cutout_swarmer" + if("Ash Walker") + name = random_name(pick(MALE,FEMALE),"Unathi") + desc = "A cardboard cutout of an ash walker." + icon_state = "cutout_free_antag" + if("Deathsquad Officer") + name = pick(commando_names) + desc = "A cardboard cutout of a death commando." + icon_state = "cutout_deathsquad" + if("Ian") + name = "Ian" + desc = "A cardboard cutout of the HoP's beloved corgi." + icon_state = "cutout_ian" + if("Slaughter Demon") + name = "slaughter demon" + desc = "A cardboard cutout of a slaughter demon." + icon = 'icons/mob/mob.dmi' + icon_state = "daemon" + if("Laughter Demon") + name = "laughter demon" + desc = "A cardboard cutout of a laughter demon." + icon = 'icons/mob/mob.dmi' + icon_state = "bowmon" + if("Xenomorph Maid") + name = "lusty xenomorph maid ([rand(1, 999)])" + desc = "A cardboard cutout of a xenomorph maid." + icon_state = "cutout_lusty" + if("Private Security Officer") + name = "Private Security Officer" + desc = "A cardboard cutout of a private security officer." + icon = 'icons/mob/mob.dmi' + icon_state = "cutout_ntsec" + return 1 + +/obj/item/cardboard_cutout/setDir(newdir) + dir = SOUTH + +/obj/item/cardboard_cutout/adaptive //Purchased by Syndicate agents, these cutouts are indistinguishable from normal cutouts but aren't discolored when their appearance is changed + deceptive = TRUE \ No newline at end of file diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 858365f6d29..67755655fe3 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -237,6 +237,7 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( new /datum/stack_recipe("folder", /obj/item/weapon/folder), new /datum/stack_recipe("cardboard tube", /obj/item/weapon/c_tube), new /datum/stack_recipe("cardboard box", /obj/structure/closet/cardboard, 4), + new/datum/stack_recipe("cardboard cutout", /obj/item/cardboard_cutout, 5), ) /obj/item/stack/sheet/cardboard //BubbleWrap diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index d721cb46271..5e8d6ce0fa7 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -216,3 +216,9 @@ B.deity_name = "Success" B.icon_state = "greentext" B.item_state = "greentext" + +/obj/item/weapon/storage/box/syndie_kit/cutouts/New() + ..() + for(var/i in 1 to 3) + new/obj/item/cardboard_cutout/adaptive(src) + new/obj/item/toy/crayon/rainbow(src) \ No newline at end of file diff --git a/icons/obj/cardboard_cutout.dmi b/icons/obj/cardboard_cutout.dmi new file mode 100644 index 0000000000000000000000000000000000000000..da5f58d7f7c6f86d2e3ecc394f2db9ab3e997615 GIT binary patch literal 17062 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 Date: Thu, 1 Jun 2017 20:59:00 -0400 Subject: [PATCH 025/244] tochat fix --- code/game/objects/items/cardboard_cutouts.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm index aeb5e19a9c6..260ed245a53 100644 --- a/code/game/objects/items/cardboard_cutouts.dm +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -34,7 +34,7 @@ /obj/item/cardboard_cutout/attack_self(mob/living/user) if(!pushed_over) return - user << "You right [src]." + to_chat(user, "You right [src].") desc = initial(desc) icon = initial(icon) icon_state = initial(icon_state) //This resets a cutout to its blank state - this is intentional to allow for resetting @@ -165,7 +165,6 @@ if("Private Security Officer") name = "Private Security Officer" desc = "A cardboard cutout of a private security officer." - icon = 'icons/mob/mob.dmi' icon_state = "cutout_ntsec" return 1 From 72c874fd50681f675fe98b158ce47ceb2c32d4ab Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Thu, 1 Jun 2017 21:32:07 -0400 Subject: [PATCH 026/244] What deathsquad? --- code/game/objects/items/cardboard_cutouts.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm index 260ed245a53..401397e04c1 100644 --- a/code/game/objects/items/cardboard_cutouts.dm +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -9,7 +9,7 @@ var/list/possible_appearances = list("Assistant", "Clown", "Mime", "Traitor", "Nuke Op", "Cultist", "Clockwork Cultist", "Revolutionary", "Wizard", "Shadowling", "Xenomorph", "Swarmer", - "Ash Walker", "Deathsquad Officer", "Ian", "Slaughter Demon", + "Ash Walker", "Commando", "Ian", "Slaughter Demon", "Laughter Demon", "Xenomorph Maid", "Private Security Officer") var/pushed_over = FALSE //If the cutout is pushed over and has to be righted var/deceptive = FALSE //If the cutout actually appears as what it portray and not a discolored version @@ -140,9 +140,9 @@ name = random_name(pick(MALE,FEMALE),"Unathi") desc = "A cardboard cutout of an ash walker." icon_state = "cutout_free_antag" - if("Deathsquad Officer") + if("Commando") name = pick(commando_names) - desc = "A cardboard cutout of a death commando." + desc = "A cardboard cutout of a strange commando." icon_state = "cutout_deathsquad" if("Ian") name = "Ian" From 69e373bbfa020b8961bb7e5f228f95667662c9c4 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Thu, 1 Jun 2017 22:18:05 -0400 Subject: [PATCH 027/244] ops need this. --- code/game/objects/items/cardboard_cutouts.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm index 401397e04c1..8a0b09bd24b 100644 --- a/code/game/objects/items/cardboard_cutouts.dm +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -5,7 +5,7 @@ icon = 'icons/obj/cardboard_cutout.dmi' icon_state = "cutout_basic" burn_state = FLAMMABLE - w_class = 4 + w_class = WEIGHT_CLASS_BULKY var/list/possible_appearances = list("Assistant", "Clown", "Mime", "Traitor", "Nuke Op", "Cultist", "Clockwork Cultist", "Revolutionary", "Wizard", "Shadowling", "Xenomorph", "Swarmer", @@ -88,7 +88,7 @@ switch(new_appearance) if("Assistant") name = "[pick(first_names_male)] [pick(last_names)]" - desc = "A cardboat cutout of an assistant." + desc = "A cardboard cutout of an assistant." icon_state = "cutout_greytide" if("Clown") name = pick(clown_names) From bf42389916d1cff7f4867e410a37c676c8283fa4 Mon Sep 17 00:00:00 2001 From: MarcellusPye Date: Sat, 3 Jun 2017 14:20:38 +1200 Subject: [PATCH 028/244] Fixes slime people lmbs --- code/modules/mob/living/carbon/human/emote.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 1b15dccdc2c..6967d4e1598 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -789,6 +789,14 @@ emotelist += "\nMachine specific emotes :- beep(s)-(none)/mob, buzz(es)-none/mob, no-(none)/mob, ping(s)-(none)/mob, yes-(none)/mob" else if(species.name == "Slime People") emotelist += "\nSlime people specific emotes :- squish(es)-(none)/mob" + else if(species.name == "Drask") + emotelist += "\nDrask specific emotes :- drone(s)-(none)/mob, hum(s)-(none)/mob, rumble(s)-(none)/mob" + else if(species.name == "Kidan") + emotelist += "\nKidan specific emotes :- click(s), clack(s)" + else if(species.name == "Unathi") + emotelist += "\nUnathi specific emotes :- hiss(es)" + if(!species.name == "Slime People" && found_slime_bodypart) + emotelist += "\nSlime people body part specific emotes :- squish(es)-(none)/mob" to_chat(src, emotelist) else From d1b8c2da1f6f22e3b3d5e699f10422ef0b620687 Mon Sep 17 00:00:00 2001 From: MarcellusPye Date: Sat, 3 Jun 2017 14:28:28 +1200 Subject: [PATCH 029/244] found_slime_bodypart is a diffrent function --- code/modules/mob/living/carbon/human/emote.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 6967d4e1598..0365009e2bf 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -795,8 +795,11 @@ emotelist += "\nKidan specific emotes :- click(s), clack(s)" else if(species.name == "Unathi") emotelist += "\nUnathi specific emotes :- hiss(es)" - if(!species.name == "Slime People" && found_slime_bodypart) - emotelist += "\nSlime people body part specific emotes :- squish(es)-(none)/mob" + if (!(species.name == "Slime People")) + for(var/obj/item/organ/external/L in bodyparts) // if your limbs are squishy you can squish too! + if(L.dna.species in list("Slime People")) + emotelist += "\nSlime people body part specific emotes :- squish(es)-(none)/mob" + break to_chat(src, emotelist) else From 4df3e0219053905887e0cc1b093ad73775c0dd15 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Fri, 2 Jun 2017 23:27:55 -0400 Subject: [PATCH 030/244] adds a terrror spider. --- code/game/objects/items/cardboard_cutouts.dm | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm index 8a0b09bd24b..4986a0f5401 100644 --- a/code/game/objects/items/cardboard_cutouts.dm +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -10,7 +10,7 @@ "Traitor", "Nuke Op", "Cultist", "Clockwork Cultist", "Revolutionary", "Wizard", "Shadowling", "Xenomorph", "Swarmer", "Ash Walker", "Commando", "Ian", "Slaughter Demon", - "Laughter Demon", "Xenomorph Maid", "Private Security Officer") + "Laughter Demon", "Xenomorph Maid", "Private Security Officer", "Terror Spider") var/pushed_over = FALSE //If the cutout is pushed over and has to be righted var/deceptive = FALSE //If the cutout actually appears as what it portray and not a discolored version var/lastattacker = null @@ -153,11 +153,13 @@ desc = "A cardboard cutout of a slaughter demon." icon = 'icons/mob/mob.dmi' icon_state = "daemon" + dir = "SOUTH" if("Laughter Demon") name = "laughter demon" desc = "A cardboard cutout of a laughter demon." icon = 'icons/mob/mob.dmi' icon_state = "bowmon" + dir = "SOUTH" if("Xenomorph Maid") name = "lusty xenomorph maid ([rand(1, 999)])" desc = "A cardboard cutout of a xenomorph maid." @@ -166,9 +168,16 @@ name = "Private Security Officer" desc = "A cardboard cutout of a private security officer." icon_state = "cutout_ntsec" + if("Terror Spider") + name = "Gray Terror Spider" + desc = "A cardboard cutout of a laughter demon." + icon = 'icons/mob/terrorspider.dmi' + icon_state = "terror_gray" + dir = "SOUTH" + return 1 -/obj/item/cardboard_cutout/setDir(newdir) +/obj/item/cardboard_cutout/setDir() dir = SOUTH /obj/item/cardboard_cutout/adaptive //Purchased by Syndicate agents, these cutouts are indistinguishable from normal cutouts but aren't discolored when their appearance is changed From 2b85c80464417c2ac5f230b1cda4f080a09ada8f Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sat, 3 Jun 2017 01:03:02 -0400 Subject: [PATCH 031/244] well they COULD be demons... --- code/game/objects/items/cardboard_cutouts.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm index 4986a0f5401..03e9649f739 100644 --- a/code/game/objects/items/cardboard_cutouts.dm +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -170,7 +170,7 @@ icon_state = "cutout_ntsec" if("Terror Spider") name = "Gray Terror Spider" - desc = "A cardboard cutout of a laughter demon." + desc = "A cardboard cutout of a terror spider." icon = 'icons/mob/terrorspider.dmi' icon_state = "terror_gray" dir = "SOUTH" From e0ea07fc8670265440b92563b339ced3f8035b12 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sat, 3 Jun 2017 12:11:46 -0400 Subject: [PATCH 032/244] Fixes/Tweaks Old Origin Techs --- code/game/mecha/equipment/weapons/weapons.dm | 5 +++-- code/modules/research/designs/mechfabricator_designs.dm | 8 ++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 9c554407afa..77bcc4c1966 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -77,6 +77,7 @@ /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/disabler name = "CH-PD Disabler" + origin_tech = "combat=3" projectile = /obj/item/projectile/beam/disabler projectiles_per_shot = 2 projectile_delay = 1 @@ -104,7 +105,7 @@ name = "P-X Tesla Cannon" desc = "A weapon for combat exosuits. Fires bolts of electricity similar to the experimental tesla engine" icon_state = "mecha_laser" - origin_tech = "materials=4;combat=5;magnets=4" + origin_tech = "materials=4;engineering=4;combat=6;magnets=6" energy_drain = 500 projectile = /obj/item/projectile/energy/shock_revolver fire_sound = 'sound/magic/lightningbolt.ogg' @@ -129,7 +130,7 @@ name = "ZFI Immolation Beam Gun" desc = "A weapon for combat exosuits. Fires beams of extreme heat that set targets on fire." icon_state = "mecha_laser" - origin_tech = "materials=4;combat=4;magnets=3;plasmatech=2" + origin_tech = "materials=4;engineering=4;combat=6;magnets=6" energy_drain = 80 projectile = /obj/item/projectile/beam/immolator fire_sound = 'sound/weapons/laser3.ogg' diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 42b4151fcf0..7f47b68d76a 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -898,7 +898,7 @@ desc = "Allows for the construction of CH-PD Disabler." id = "mech_laser" build_type = MECHFAB - req_tech = list("combat" = 3, "magnets" = 3) + req_tech = list("combat" = 3) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/disabler materials = list(MAT_METAL=10000) construction_time = 100 @@ -977,7 +977,7 @@ build_type = MECHFAB req_tech = list("combat" = 6, "magnets" = 5, "materials" = 5) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/tesla - materials = list(MAT_METAL = 10000, MAT_GLASS = 10000, MAT_SILVER = 10000) + materials = list(MAT_METAL=20000,MAT_SILVER=8000) construction_time = 100 category = list("Exosuit Equipment") @@ -986,9 +986,9 @@ desc = "Allows for the construction of ZFI Immolation Beam Gun." id = "mech_tesla" build_type = MECHFAB - req_tech = list("combat" = 4, "materials" = 4, "plasmatech" = 2, "magnets" = 3) + req_tech = list("combat" = 6, "magnets" = 5, "materials" = 5) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/immolator - materials = list(MAT_METAL = 4000, MAT_GLASS = 1000, MAT_SILVER = 3000, MAT_PLASMA = 2000) + materials = list(MAT_METAL = 10000, MAT_SILVER = 8000, MAT_PLASMA = 8000) construction_time = 100 category = list("Exosuit Equipment") From c1cc319f62515de040395d9234b78c58cce8f781 Mon Sep 17 00:00:00 2001 From: Sam Date: Sat, 3 Jun 2017 18:29:50 +0100 Subject: [PATCH 033/244] Uses more intent defines --- code/game/gamemodes/miniantags/morph/morph.dm | 3 +-- code/game/machinery/dye_generator.dm | 2 +- code/game/objects/items/weapons/scissors.dm | 4 ++-- code/modules/customitems/item_defines.dm | 2 +- code/modules/food_and_drinks/drinks/drinks/cans.dm | 2 +- code/modules/martial_arts/martial.dm | 2 +- code/modules/mob/living/carbon/carbon_defenses.dm | 4 ++-- .../mob/living/carbon/human/human_attackhand.dm | 2 +- .../mob/living/carbon/human/interactive/functions.dm | 4 ++-- .../mob/living/carbon/human/interactive/interactive.dm | 6 +++--- code/modules/mob/living/simple_animal/bot/bot.dm | 4 ++-- code/modules/mob/living/simple_animal/bot/ed209bot.dm | 4 ++-- code/modules/mob/living/simple_animal/bot/mulebot.dm | 2 +- code/modules/mob/living/simple_animal/bot/secbot.dm | 4 ++-- code/modules/mob/living/simple_animal/hostile/alien.dm | 2 +- .../mob/living/simple_animal/hostile/illusion.dm | 2 +- .../simple_animal/hostile/megafauna/megafauna.dm | 4 ++-- code/modules/mob/living/simple_animal/spawner.dm | 4 ++-- code/modules/ninja/martial_art.dm | 10 +++++----- code/modules/projectiles/gun.dm | 4 ++-- code/modules/projectiles/guns/projectile/revolver.dm | 2 +- code/modules/recycling/conveyor2.dm | 2 +- 22 files changed, 37 insertions(+), 38 deletions(-) diff --git a/code/game/gamemodes/miniantags/morph/morph.dm b/code/game/gamemodes/miniantags/morph/morph.dm index be21008d5f2..809fa5ff34d 100644 --- a/code/game/gamemodes/miniantags/morph/morph.dm +++ b/code/game/gamemodes/miniantags/morph/morph.dm @@ -11,7 +11,7 @@ icon_living = "morph" icon_dead = "morph_dead" speed = 2 - a_intent = "harm" + a_intent = I_HARM stop_automated_movement = 1 status_flags = CANPUSH pass_flags = PASSTABLE @@ -168,4 +168,3 @@ eat(I) return target.attack_animal(src) - diff --git a/code/game/machinery/dye_generator.dm b/code/game/machinery/dye_generator.dm index a4d70d78023..02d203797be 100644 --- a/code/game/machinery/dye_generator.dm +++ b/code/game/machinery/dye_generator.dm @@ -88,7 +88,7 @@ overlays += I /obj/item/hair_dye_bottle/attack(mob/living/carbon/M as mob, mob/user as mob) - if(user.a_intent != "help") + if(user.a_intent != I_HELP) ..() return if(!(M in view(1))) diff --git a/code/game/objects/items/weapons/scissors.dm b/code/game/objects/items/weapons/scissors.dm index 5571640f08f..8654765d6f3 100644 --- a/code/game/objects/items/weapons/scissors.dm +++ b/code/game/objects/items/weapons/scissors.dm @@ -20,7 +20,7 @@ toolspeed = 0.75 /obj/item/weapon/scissors/attack(mob/living/carbon/M as mob, mob/user as mob) - if(user.a_intent != "help") + if(user.a_intent != I_HELP) ..() return if(!(M in view(1))) //Adjacency test @@ -101,7 +101,7 @@ var/is_cutting = 0 //to prevent spam clicking this for huge accumulation of losebreath. /obj/item/weapon/scissors/safety/attack(mob/living/carbon/M as mob, mob/user as mob) - if(user.a_intent != "help") + if(user.a_intent != I_HELP) ..() return if(!(M in view(1))) diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index faf381ffd8d..bd96b480be8 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -30,7 +30,7 @@ usesound = 'sound/items/Welder2.ogg' /obj/item/device/fluff/tattoo_gun/attack(mob/living/carbon/M as mob, mob/user as mob) - if(user.a_intent == "harm") + if(user.a_intent == I_HARM) user.visible_message("[user] stabs [M] with the [src]!", "You stab [M] with the [src]!") to_chat(M, "[user] stabs you with the [src]!
You feel a tiny prick!") return diff --git a/code/modules/food_and_drinks/drinks/drinks/cans.dm b/code/modules/food_and_drinks/drinks/drinks/cans.dm index 89deed5dedd..796b6af37f9 100644 --- a/code/modules/food_and_drinks/drinks/drinks/cans.dm +++ b/code/modules/food_and_drinks/drinks/drinks/cans.dm @@ -32,7 +32,7 @@ if(canopened == 0) to_chat(user, "You need to open the drink!") return - else if(M == user && !reagents.total_volume && user.a_intent == "harm" && user.zone_sel.selecting == "head") + else if(M == user && !reagents.total_volume && user.a_intent == I_HARM && user.zone_sel.selecting == "head") user.visible_message("[user] crushes ["\the [src]"] on \his forehead!", "You crush \the [src] on your forehead.") crush(user) return diff --git a/code/modules/martial_arts/martial.dm b/code/modules/martial_arts/martial.dm index 3f1705f4651..56fb71b20aa 100644 --- a/code/modules/martial_arts/martial.dm +++ b/code/modules/martial_arts/martial.dm @@ -207,7 +207,7 @@ to_chat(user, "It would be dishonorable to attack a foe while they cannot retaliate.") return switch(user.a_intent) - if("disarm") + if(I_DISARM) if(!wielded) return ..() if(!ishuman(target)) diff --git a/code/modules/mob/living/carbon/carbon_defenses.dm b/code/modules/mob/living/carbon/carbon_defenses.dm index 1c911a3f661..64268a35f83 100644 --- a/code/modules/mob/living/carbon/carbon_defenses.dm +++ b/code/modules/mob/living/carbon/carbon_defenses.dm @@ -20,7 +20,7 @@ /mob/living/carbon/attackby(obj/item/I, mob/user, params) if(lying) if(surgeries.len) - if(user != src && user.a_intent == "help") + if(user != src && user.a_intent == I_HELP) for(var/datum/surgery/S in surgeries) if(S.next_step(user, src)) return 1 @@ -37,4 +37,4 @@ for(var/datum/disease/D in user.viruses) if(D.IsSpreadByTouch()) ContractDisease(D) - return 0 \ No newline at end of file + return 0 diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index b0d2fb3e315..2e0fa4803d6 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -18,7 +18,7 @@ ..() - if((M != src) && M.a_intent != "help" && check_shields(0, M.name, attack_type = UNARMED_ATTACK)) + if((M != src) && M.a_intent != I_HELP && check_shields(0, M.name, attack_type = UNARMED_ATTACK)) add_logs(M, src, "attempted to touch") visible_message("[M] attempted to touch [src]!") return 0 diff --git a/code/modules/mob/living/carbon/human/interactive/functions.dm b/code/modules/mob/living/carbon/human/interactive/functions.dm index ad4d8226c4a..d4127409ce1 100644 --- a/code/modules/mob/living/carbon/human/interactive/functions.dm +++ b/code/modules/mob/living/carbon/human/interactive/functions.dm @@ -638,7 +638,7 @@ if(canmove) if((graytide || (TRAITS & TRAIT_MEAN)) || retal) interest += targetInterestShift - a_intent = "harm" + a_intent = I_HARM zone_sel.selecting = pick("chest","r_leg","l_leg","r_arm","l_arm","head") doing |= SNPC_FIGHTING if(retal) @@ -746,7 +746,7 @@ tryWalk(TARGET) else if(Adjacent(TARGET)) - a_intent = pick("disarm", "harm") + a_intent = pick(I_DISARM, I_HARM) M.attack_hand(src) timeout++ else if(timeout >= 10 || !(targetRange(M) > 14)) diff --git a/code/modules/mob/living/carbon/human/interactive/interactive.dm b/code/modules/mob/living/carbon/human/interactive/interactive.dm index 9f27956b764..59350e03961 100644 --- a/code/modules/mob/living/carbon/human/interactive/interactive.dm +++ b/code/modules/mob/living/carbon/human/interactive/interactive.dm @@ -431,7 +431,7 @@ var/mob/living/M = target if(istype(M)) if(health > 0) - if(M.a_intent == "help" && !incapacitated()) + if(M.a_intent == I_HELP && !incapacitated()) chatter() if(istype(target, /mob/living/carbon) && !retal && prob(SNPC_FUZZY_CHANCE_LOW)) var/mob/living/carbon/C = target @@ -439,7 +439,7 @@ tryWalk(target) else C.help_shake_act(src) - if(M.a_intent == "harm") + if(M.a_intent == I_HARM) retal = 1 retal_target = target @@ -658,7 +658,7 @@ if(grabbed_by.len > 0) for(var/obj/item/weapon/grab/G in grabbed_by) if(Adjacent(G)) - a_intent = "disarm" + a_intent = I_DISARM G.assailant.attack_hand(src) inactivity_period = 10 diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 063fc07badf..02a6c3aa88f 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -256,7 +256,7 @@ new /obj/effect/decal/cleanable/blood/oil(loc) /mob/living/simple_animal/bot/attack_hand(mob/living/carbon/human/H) - if(H.a_intent == "help") + if(H.a_intent == I_HELP) interact(H) else return ..() @@ -329,7 +329,7 @@ ejectpai(user) else user.changeNext_move(CLICK_CD_MELEE) - if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm") + if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != I_HARM) if(health >= maxHealth) to_chat(user, "[src] does not need a repair!") return diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 8a160d25c4f..12b69a249b7 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -161,13 +161,13 @@ Auto Patrol[]"}, mode = BOT_HUNT /mob/living/simple_animal/bot/ed209/attack_hand(mob/living/carbon/human/H) - if(H.a_intent == "harm") + if(H.a_intent == I_HARM) retaliate(H) return ..() /mob/living/simple_animal/bot/ed209/attackby(obj/item/weapon/W, mob/user, params) ..() - if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm") // Any intent but harm will heal, so we shouldn't get angry. + if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != I_HARM) // Any intent but harm will heal, so we shouldn't get angry. return if(!istype(W, /obj/item/weapon/screwdriver) && (!target)) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass. if(W.force && W.damtype != STAMINA)//If force is non-zero and damage type isn't stamina. diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index e95d2409921..e2f643d46e1 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -18,7 +18,7 @@ health = 50 maxHealth = 50 damage_coeff = list(BRUTE = 0.5, BURN = 0.7, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) - a_intent = "harm" //No swapping + a_intent = I_HARM //No swapping buckle_lying = 0 mob_size = MOB_SIZE_LARGE radio_channel = "Supply" diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index a77429eb631..f1614e54816 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -173,13 +173,13 @@ Auto Patrol: []"}, mode = BOT_HUNT /mob/living/simple_animal/bot/secbot/attack_hand(mob/living/carbon/human/H) - if(H.a_intent == "harm") + if(H.a_intent == I_HARM) retaliate(H) return ..() /mob/living/simple_animal/bot/secbot/attackby(obj/item/weapon/W, mob/user, params) ..() - if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm") // Any intent but harm will heal, so we shouldn't get angry. + if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != I_HARM) // Any intent but harm will heal, so we shouldn't get angry. return if(!istype(W, /obj/item/weapon/screwdriver) && (W.force) && (!target) && (W.damtype != STAMINA) ) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass. retaliate(user) diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 85e0cba9073..1f1ab0d0431 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -141,7 +141,7 @@ name = "lusty xenomorph maid" melee_damage_lower = 0 melee_damage_upper = 0 - a_intent = "help" + a_intent = I_HELP friendly = "caresses" environment_smash = 0 icon_state = "maid" diff --git a/code/modules/mob/living/simple_animal/hostile/illusion.dm b/code/modules/mob/living/simple_animal/hostile/illusion.dm index b6cda2e0e3c..f08f5479a2a 100644 --- a/code/modules/mob/living/simple_animal/hostile/illusion.dm +++ b/code/modules/mob/living/simple_animal/hostile/illusion.dm @@ -7,7 +7,7 @@ icon_dead = "null" melee_damage_lower = 5 melee_damage_upper = 5 - a_intent = "harm" + a_intent = I_HARM attacktext = "gores" maxHealth = 100 health = 100 diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index a8102b94b94..7d5e157e068 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -5,7 +5,7 @@ desc = "Attack the weak point for massive damage." health = 1000 maxHealth = 1000 - a_intent = "harm" + a_intent = I_HARM sentience_type = SENTIENCE_BOSS environment_smash = 3 luminosity = 3 @@ -228,4 +228,4 @@ /proc/ClearScore(client/player) world.SetScores(player.ckey, "", global.medal_hub, global.medal_pass) -#undef MEDAL_PREFIX \ No newline at end of file +#undef MEDAL_PREFIX diff --git a/code/modules/mob/living/simple_animal/spawner.dm b/code/modules/mob/living/simple_animal/spawner.dm index 46a05daba98..ac3f0ef44ca 100644 --- a/code/modules/mob/living/simple_animal/spawner.dm +++ b/code/modules/mob/living/simple_animal/spawner.dm @@ -12,7 +12,7 @@ status_flags = 0 anchored = 1 AIStatus = AI_OFF - a_intent = "harm" + a_intent = I_HARM stop_automated_movement = 1 wander = 0 atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) @@ -81,4 +81,4 @@ /mob/living/simple_animal/hostile/spawner/mining/basilisk name = "basilisk den" desc = "A den housing a nest of basilisks, bring a coat." - mob_type = /mob/living/simple_animal/hostile/asteroid/basilisk \ No newline at end of file + mob_type = /mob/living/simple_animal/hostile/asteroid/basilisk diff --git a/code/modules/ninja/martial_art.dm b/code/modules/ninja/martial_art.dm index 35969ab8d5e..705098c9298 100644 --- a/code/modules/ninja/martial_art.dm +++ b/code/modules/ninja/martial_art.dm @@ -162,7 +162,7 @@ if(!istype(A, /mob/living/carbon/human)) // Special moves only work on humans. user.pointed(A) return 0 - if(user.a_intent == "help") // No special move for help intent. + if(user.a_intent == I_HELP) // No special move for help intent. user.pointed(A) return 0 if(!(A in range(1,user))) // Is the target within one tile of us? @@ -173,10 +173,10 @@ var/mob/living/carbon/human/target = A switch(user.a_intent) - if("disarm") + if(I_DISARM) user_martial_art.wrist_wrench(user, target) - if("grab") + if(I_GRAB) user_martial_art.choke_hold(user, target) - if("harm") + if(I_HARM) user_martial_art.palm_strike(user, target) - return 1 \ No newline at end of file + return 1 diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 0304f4a48a9..1417907bb6c 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -117,7 +117,7 @@ if(flag) //It's adjacent, is the user, or is on the user's person if(target in user.contents) //can't shoot stuff inside us. return - if(!ismob(target) || user.a_intent == "harm") //melee attack + if(!ismob(target) || user.a_intent == I_HARM) //melee attack return if(target == user && user.zone_sel.selecting != "mouth") //so we can't shoot ourselves (unless mouth selected) return @@ -232,7 +232,7 @@ obj/item/weapon/gun/proc/newshot() feedback_add_details("gun_fired","[type]") /obj/item/weapon/gun/attack(mob/M as mob, mob/user) - if(user.a_intent == "harm") //Flogging + if(user.a_intent == I_HARM) //Flogging ..() else return diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index ef7a17fa28a..2c02695d84d 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -218,7 +218,7 @@ /obj/item/weapon/gun/projectile/revolver/russian/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) if(flag) if(!(target in user.contents) && ismob(target)) - if(user.a_intent == "harm") // Flogging action + if(user.a_intent == I_HARM) // Flogging action return if(isliving(user)) diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 8896d939e2f..9e5b93f8927 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -140,7 +140,7 @@ update_move_direction() to_chat(user, "You rotate [src].") - else if(user.a_intent != "harm") + else if(user.a_intent != I_HARM) if(user.drop_item()) I.forceMove(loc) else From 3b5e6e4ff59c6a97a01ade5343a6e4da60a81376 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sat, 3 Jun 2017 22:01:00 -0400 Subject: [PATCH 034/244] fixes --- code/game/objects/items/cardboard_cutouts.dm | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm index 03e9649f739..ec29fdc7546 100644 --- a/code/game/objects/items/cardboard_cutouts.dm +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -9,14 +9,14 @@ var/list/possible_appearances = list("Assistant", "Clown", "Mime", "Traitor", "Nuke Op", "Cultist", "Clockwork Cultist", "Revolutionary", "Wizard", "Shadowling", "Xenomorph", "Swarmer", - "Ash Walker", "Commando", "Ian", "Slaughter Demon", + "Ash Walker", "Deathsquad Officer", "Ian", "Slaughter Demon", "Laughter Demon", "Xenomorph Maid", "Private Security Officer", "Terror Spider") var/pushed_over = FALSE //If the cutout is pushed over and has to be righted var/deceptive = FALSE //If the cutout actually appears as what it portray and not a discolored version var/lastattacker = null /obj/item/cardboard_cutout/attack_hand(mob/living/user) - if(user.a_intent == "help" || pushed_over) + if(user.a_intent == I_HELP || pushed_over) return ..() user.visible_message("[user] pushes over [src]!", "You push over [src]!") playsound(src, 'sound/weapons/Genhit.ogg', 50, 1) @@ -72,6 +72,11 @@ /obj/item/cardboard_cutout/proc/change_appearance(obj/item/toy/crayon/crayon, mob/living/user) if(!crayon || !user) return + if(istype(crayon, /obj/item/toy/crayon/spraycan)) + var/obj/item/toy/crayon/spraycan/can = crayon + if(can.capped) + to_chat(user, "The cap is on [src] remove it first!") + return if(pushed_over) to_chat(user, "Right [src] first!") return @@ -103,7 +108,7 @@ desc = "A cardboard cutout of a traitor." icon_state = "cutout_traitor" if("Nuke Op") - name = "[pick("Unknown", "COMMS", "Telecomms", "AI", "stealthy op", "STEALTH", "sneakybeaky", "MEDIC", "Medic")]" + name = "[pick("Unknown", "COMMS", "Telecomms", "AI", "stealthy op", "STEALTH", "sneakybeaky", "MEDIC", "Medic", "Gonk op")]" desc = "A cardboard cutout of a nuclear operative." icon_state = "cutout_fluke" if("Cultist") @@ -140,9 +145,9 @@ name = random_name(pick(MALE,FEMALE),"Unathi") desc = "A cardboard cutout of an ash walker." icon_state = "cutout_free_antag" - if("Commando") + if("Deathsquad Officer") name = pick(commando_names) - desc = "A cardboard cutout of a strange commando." + desc = "A cardboard cutout of a death commando." icon_state = "cutout_deathsquad" if("Ian") name = "Ian" From 59c13d47b534e7cee4a28eec6a6f952c05d3400f Mon Sep 17 00:00:00 2001 From: MarcellusPye Date: Sun, 4 Jun 2017 17:28:40 +1200 Subject: [PATCH 035/244] Changed from an IF chain to case --- code/modules/mob/living/carbon/human/emote.dm | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 0365009e2bf..740f7aaa327 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -785,23 +785,26 @@ + " handshake-mob, hug(s)-(none)/mob, johnny, jump, laugh(s), look(s)-(none)/mob, moan(s), mumble(s), nod(s), pale(s), point(s)-atom, quiver(s), raise(s), salute(s)-(none)/mob, scream(s), shake(s)," \ + " shiver(s), shrug(s), sigh(s), signal(s)-#1-10,slap(s)-(none)/mob, smile(s),snap(s), sneeze(s), sniff(s), snore(s), stare(s)-(none)/mob, swag(s), tremble(s), twitch(es), twitch(es)_s," \ + " wag(s), wave(s), whimper(s), wink(s), yawn(s)" - if(species.name == "Machine") - emotelist += "\nMachine specific emotes :- beep(s)-(none)/mob, buzz(es)-none/mob, no-(none)/mob, ping(s)-(none)/mob, yes-(none)/mob" - else if(species.name == "Slime People") - emotelist += "\nSlime people specific emotes :- squish(es)-(none)/mob" - else if(species.name == "Drask") - emotelist += "\nDrask specific emotes :- drone(s)-(none)/mob, hum(s)-(none)/mob, rumble(s)-(none)/mob" - else if(species.name == "Kidan") - emotelist += "\nKidan specific emotes :- click(s), clack(s)" - else if(species.name == "Unathi") - emotelist += "\nUnathi specific emotes :- hiss(es)" - if (!(species.name == "Slime People")) - for(var/obj/item/organ/external/L in bodyparts) // if your limbs are squishy you can squish too! - if(L.dna.species in list("Slime People")) - emotelist += "\nSlime people body part specific emotes :- squish(es)-(none)/mob" - break - to_chat(src, emotelist) + switch(species.name) + if("Machine") + emotelist += "\nMachine specific emotes :- beep(s)-(none)/mob, buzz(es)-none/mob, no-(none)/mob, ping(s)-(none)/mob, yes-(none)/mob" + if("Drask") + emotelist += "\nDrask specific emotes :- drone(s)-(none)/mob, hum(s)-(none)/mob, rumble(s)-(none)/mob" + if("Kidan") + emotelist += "\nKidan specific emotes :- click(s), clack(s)" + if("Unathi") + emotelist += "\nUnathi specific emotes :- hiss(es)" + + if (species.name == "Slime People") + emotelist += "\nSlime people specific emotes :- squish(es)-(none)/mob" + else + for(var/obj/item/organ/external/L in bodyparts) // if your limbs are squishy you can squish too! + if(L.dna.species in list("Slime People")) + emotelist += "\nSlime people body part specific emotes :- squish(es)-(none)/mob" + break + + to_chat(src, emotelist) else to_chat(src, "Unusable emote '[act]'. Say *help for a list.") From dfdcca8c4607b9ec05eb5d63c9389696b94b7cf5 Mon Sep 17 00:00:00 2001 From: MarcellusPye Date: Sun, 4 Jun 2017 18:15:53 +1200 Subject: [PATCH 036/244] Fixed formatting so it compiles --- code/modules/mob/living/carbon/human/emote.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 740f7aaa327..2b4dbb68db0 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -800,9 +800,9 @@ emotelist += "\nSlime people specific emotes :- squish(es)-(none)/mob" else for(var/obj/item/organ/external/L in bodyparts) // if your limbs are squishy you can squish too! - if(L.dna.species in list("Slime People")) - emotelist += "\nSlime people body part specific emotes :- squish(es)-(none)/mob" - break + if(L.dna.species in list("Slime People")) + emotelist += "\nSlime people body part specific emotes :- squish(es)-(none)/mob" + break to_chat(src, emotelist) else From 4d775a70a5a2d8cb8724e2363c52a719c81de927 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sun, 4 Jun 2017 02:48:34 -0400 Subject: [PATCH 037/244] syndiekit update --- code/game/objects/items/weapons/storage/uplink_kits.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 5e8d6ce0fa7..ca1ae26a843 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -219,6 +219,7 @@ /obj/item/weapon/storage/box/syndie_kit/cutouts/New() ..() + name = "Fortified Artistic Box" for(var/i in 1 to 3) new/obj/item/cardboard_cutout/adaptive(src) - new/obj/item/toy/crayon/rainbow(src) \ No newline at end of file + new/obj/item/toy/crayon/spraycan(src) \ No newline at end of file From ec3af5684d7ca4f75d253b6a525b742c9ce8d498 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sun, 4 Jun 2017 03:53:23 -0400 Subject: [PATCH 038/244] Its late --- code/game/objects/items/cardboard_cutouts.dm | 27 +++++++++---------- .../items/weapons/storage/uplink_kits.dm | 5 +++- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm index ec29fdc7546..d815e8c262f 100644 --- a/code/game/objects/items/cardboard_cutouts.dm +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -7,10 +7,9 @@ burn_state = FLAMMABLE w_class = WEIGHT_CLASS_BULKY var/list/possible_appearances = list("Assistant", "Clown", "Mime", - "Traitor", "Nuke Op", "Cultist", "Clockwork Cultist", - "Revolutionary", "Wizard", "Shadowling", "Xenomorph", "Swarmer", - "Ash Walker", "Deathsquad Officer", "Ian", "Slaughter Demon", - "Laughter Demon", "Xenomorph Maid", "Private Security Officer", "Terror Spider") + "Traitor", "Nuke Op", "Cultist", "Revolutionary", "Wizard", "Shadowling", "Xenomorph", "Swarmer", + "Deathsquad Officer", "Ian", "Slaughter Demon", + "Laughter Demon", "Xenomorph Maid", "Security Officer", "Terror Spider") var/pushed_over = FALSE //If the cutout is pushed over and has to be righted var/deceptive = FALSE //If the cutout actually appears as what it portray and not a discolored version var/lastattacker = null @@ -115,10 +114,10 @@ name = "Unknown" desc = "A cardboard cutout of a cultist." icon_state = "cutout_cultist" - if("Clockwork Cultist") - name = "[random_name(pick(MALE,FEMALE))]" - desc = "A cardboard cutout of a servant of Ratvar." - icon_state = "cutout_servant" + //if("Clockwork Cultist") + // name = "[random_name(pick(MALE,FEMALE))]" + // desc = "A cardboard cutout of a servant of Ratvar." + // icon_state = "cutout_servant" if("Revolutionary") name = "Unknown" desc = "A cardboard cutout of a revolutionary." @@ -135,16 +134,16 @@ name = "alien hunter ([rand(1, 999)])" desc = "A cardboard cutout of a xenomorph." icon_state = "cutout_fukken_xeno" - if(prob(25)) + if(prob(10)) alpha = 75 //Spooky sneaking! if("Swarmer") name = "Swarmer ([rand(1, 999)])" desc = "A cardboard cutout of a swarmer." icon_state = "cutout_swarmer" - if("Ash Walker") - name = random_name(pick(MALE,FEMALE),"Unathi") - desc = "A cardboard cutout of an ash walker." - icon_state = "cutout_free_antag" + //if("Ash Walker") + // name = random_name(pick(MALE,FEMALE),"Unathi") + // desc = "A cardboard cutout of an ash walker." + // icon_state = "cutout_free_antag" if("Deathsquad Officer") name = pick(commando_names) desc = "A cardboard cutout of a death commando." @@ -169,7 +168,7 @@ name = "lusty xenomorph maid ([rand(1, 999)])" desc = "A cardboard cutout of a xenomorph maid." icon_state = "cutout_lusty" - if("Private Security Officer") + if("Security Officer") name = "Private Security Officer" desc = "A cardboard cutout of a private security officer." icon_state = "cutout_ntsec" diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index ca1ae26a843..9efc5f625a6 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -217,9 +217,12 @@ B.icon_state = "greentext" B.item_state = "greentext" + +/obj/item/weapon/storage/box/syndie_kit/cutouts + name = "Fortified Artistic Box" + /obj/item/weapon/storage/box/syndie_kit/cutouts/New() ..() - name = "Fortified Artistic Box" for(var/i in 1 to 3) new/obj/item/cardboard_cutout/adaptive(src) new/obj/item/toy/crayon/spraycan(src) \ No newline at end of file From abd27b5ef250a4c5c7d8e49a370d734b67008b2e Mon Sep 17 00:00:00 2001 From: MarcellusPye Date: Sun, 4 Jun 2017 20:24:58 +1200 Subject: [PATCH 039/244] Machene People Completion Adds Buzz2 to machene people *help because it wasen't there before for some reason. --- code/modules/mob/living/carbon/human/emote.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 2b4dbb68db0..d1f73360874 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -788,7 +788,7 @@ switch(species.name) if("Machine") - emotelist += "\nMachine specific emotes :- beep(s)-(none)/mob, buzz(es)-none/mob, no-(none)/mob, ping(s)-(none)/mob, yes-(none)/mob" + emotelist += "\nMachine specific emotes :- beep(s)-(none)/mob, buzz(es)-none/mob, no-(none)/mob, ping(s)-(none)/mob, yes-(none)/mob, buzz2-(none)/mob" if("Drask") emotelist += "\nDrask specific emotes :- drone(s)-(none)/mob, hum(s)-(none)/mob, rumble(s)-(none)/mob" if("Kidan") From e3b6f799203249f8556080da09322dc953f805dc Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Sun, 4 Jun 2017 01:47:06 -0700 Subject: [PATCH 040/244] POrts over tg soullinks --- code/datums/soullink.dm | 157 ++++++++++++++++++ code/modules/mob/living/carbon/human/death.dm | 4 +- code/modules/mob/living/death.dm | 8 + code/modules/mob/living/stat_states.dm | 5 +- paradise.dme | 3 +- 5 files changed, 172 insertions(+), 5 deletions(-) create mode 100644 code/datums/soullink.dm diff --git a/code/datums/soullink.dm b/code/datums/soullink.dm new file mode 100644 index 00000000000..1240c9db402 --- /dev/null +++ b/code/datums/soullink.dm @@ -0,0 +1,157 @@ +/mob/living + var/list/ownedSoullinks //soullinks we are the owner of + var/list/sharedSoullinks //soullinks we are a/the sharer of + +/mob/living/Destroy() + for(var/s in ownedSoullinks) + var/datum/soullink/S = s + S.ownerDies(FALSE) + qdel(s) //If the owner is destroy()'d, the soullink is destroy()'d + ownedSoullinks = null + for(var/s in sharedSoullinks) + var/datum/soullink/S = s + S.sharerDies(FALSE) + S.removeSoulsharer(src) //If a sharer is destroy()'d, they are simply removed + sharedSoullinks = null + return ..() + +//Keeps track of a Mob->Mob (potentially Player->Player) connection +//Can be used to trigger actions on one party when events happen to another +//Eg: shared deaths +//Can be used to form a linked list of mob-hopping +//Does NOT transfer with minds +/datum/soullink + var/mob/living/soulowner + var/mob/living/soulsharer + var/id //Optional ID, for tagging and finding specific instances + +/datum/soullink/Destroy() + if(soulowner) + LAZYREMOVE(soulowner.ownedSoullinks, src) + soulowner = null + if(soulsharer) + LAZYREMOVE(soulsharer.sharedSoullinks, src) + soulsharer = null + return ..() + +/datum/soullink/proc/removeSoulsharer(mob/living/sharer) + if(soulsharer == sharer) + soulsharer = null + LAZYREMOVE(sharer.sharedSoullinks, src) + +//Used to assign variables, called primarily by soullink() +//Override this to create more unique soullinks (Eg: 1->Many relationships) +//Return TRUE/FALSE to return the soullink/null in soullink() +/datum/soullink/proc/parseArgs(mob/living/owner, mob/living/sharer) + if(!owner || !sharer) + return FALSE + soulowner = owner + soulsharer = sharer + LAZYADD(owner.ownedSoullinks, src) + LAZYADD(sharer.sharedSoullinks, src) + return TRUE + +//Runs after /living death() +//Override this for content +/datum/soullink/proc/ownerDies(gibbed, mob/living/owner) + +//Runs after /living death() +//Override this for content +/datum/soullink/proc/sharerDies(gibbed, mob/living/owner) + + +//Quick-use helper +/proc/soullink(typepath, ...) + var/datum/soullink/S = new typepath() + if(S.parseArgs(arglist(args.Copy(2, 0)))) + return S + + + +///////////////// +// MULTISHARER // +///////////////// +//Abstract soullink for use with 1 Owner -> Many Sharer setups +/datum/soullink/multisharer + var/list/soulsharers + +/datum/soullink/multisharer/parseArgs(mob/living/owner, list/sharers) + if(!owner || !LAZYLEN(sharers)) + return FALSE + soulowner = owner + soulsharers = sharers + LAZYADD(owner.ownedSoullinks, src) + for(var/l in sharers) + var/mob/living/L = l + LAZYADD(L.sharedSoullinks, src) + return TRUE + +/datum/soullink/multisharer/removeSoulsharer(mob/living/sharer) + LAZYREMOVE(soulsharers, sharer) + + + +///////////////// +// SHARED FATE // +///////////////// +//When the soulowner dies, the soulsharer dies, and vice versa +//This is intended for two players(or AI) and two mobs + +/datum/soullink/sharedfate/ownerDies(gibbed, mob/living/owner) + if(soulsharer) + soulsharer.death(gibbed) + +/datum/soullink/sharedfate/sharerDies(gibbed, mob/living/sharer) + if(soulowner) + soulowner.death(gibbed) + +///////////////// +// Demon Bind // +///////////////// +//When the soulowner dies, the soulsharer dies, but NOT vice versa +//This is intended for two players(or AI) and two mobs + +/datum/soullink/oneway/ownerDies(gibbed, mob/living/owner) + if(soulsharer) + soulsharer.dust(FALSE) + + +///////////////// +// SHARED BODY // +///////////////// +//When the soulsharer dies, they're placed in the soulowner, who remains alive +//If the soulowner dies, the soulsharer is killed and placed into the soulowner (who is still dying) +//This one is intended for one player moving between many mobs + +/datum/soullink/sharedbody/ownerDies(gibbed, mob/living/owner) + if(soulowner && soulsharer) + if(soulsharer.mind) + soulsharer.mind.transfer_to(soulowner) + soulsharer.death(gibbed) + +/datum/soullink/sharedbody/sharerDies(gibbed, mob/living/sharer) + if(soulowner && soulsharer && soulsharer.mind) + soulsharer.mind.transfer_to(soulowner) + + + +////////////////////// +// REPLACEMENT POOL // +////////////////////// +//When the owner dies, one of the sharers is placed in the owner's body, fully healed +//Sort of a "winner-stays-on" soullink +//Gibbing ends it immediately + +/datum/soullink/multisharer/replacementpool/ownerDies(gibbed, mob/living/owner) + if(LAZYLEN(soulsharers) && !gibbed) //let's not put them in some gibs + var/list/souls = shuffle(soulsharers.Copy()) + for(var/l in souls) + var/mob/living/L = l + if(L.stat != DEAD && L.mind) + L.mind.transfer_to(soulowner) + soulowner.revive(TRUE, TRUE) + L.death(FALSE) + +//Lose your claim to the throne! +/datum/soullink/multisharer/replacementpool/sharerDies(gibbed, mob/living/sharer) + removeSoulsharer(sharer) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 69e86de81e6..206571bec93 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -143,9 +143,9 @@ return ..(gibbed) /mob/living/carbon/human/update_revive() - ..() + . = ..() // Update healthdoll - if(healthdoll) + if(. && healthdoll) // We're alive again, so re-build the entire healthdoll healthdoll.cached_healthdoll_overlays.Cut() diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index c5ce705ba17..435c3f6da08 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -3,4 +3,12 @@ clear_fullscreens() update_action_buttons_icon() + + for(var/s in ownedSoullinks) + var/datum/soullink/S = s + S.ownerDies(gibbed) + for(var/s in sharedSoullinks) + var/datum/soullink/S = s + S.sharerDies(gibbed) + ..(gibbed) diff --git a/code/modules/mob/living/stat_states.dm b/code/modules/mob/living/stat_states.dm index 58c4221504d..e5ea3738e0c 100644 --- a/code/modules/mob/living/stat_states.dm +++ b/code/modules/mob/living/stat_states.dm @@ -37,9 +37,9 @@ // handles revival through other means than cloning or adminbus (defib, IPC repair) /mob/living/proc/update_revive(updating = TRUE) if(stat != DEAD) - return + return 0 if(!can_be_revived()) - return + return 0 add_logs(src, null, "came back to life at [atom_loc_line(get_turf(src))]", admin=0, print_attack_log = 0) stat = CONSCIOUS dead_mob_list -= src @@ -49,3 +49,4 @@ update_canmove() // update_blind_effects() updatehealth() + return 1 diff --git a/paradise.dme b/paradise.dme index 869bffe601b..20ee20bd23a 100644 --- a/paradise.dme +++ b/paradise.dme @@ -218,6 +218,7 @@ #include "code\datums\recipe.dm" #include "code\datums\ruins.dm" #include "code\datums\shuttles.dm" +#include "code\datums\soullink.dm #include "code\datums\spell.dm" #include "code\datums\statclick.dm" #include "code\datums\supplypacks.dm" @@ -321,7 +322,7 @@ #include "code\datums\spells\touch_attacks.dm" #include "code\datums\spells\trigger.dm" #include "code\datums\spells\turf_teleport.dm" -#include "code\datums\spells\wizard.dm" +#include "code\datums\spells\wizard.dm"" #include "code\datums\vr\level.dm" #include "code\datums\weather\weather.dm" #include "code\datums\weather\weather_types.dm" From ebadfa8276f6964aea98475f4c5cca6906064aa5 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Sun, 4 Jun 2017 04:14:16 -0700 Subject: [PATCH 041/244] Reviving while a clone is "baking" causes the clone to fail --- code/datums/soullink.dm | 57 ++++++++++++++++++++++++++ code/game/machinery/cloning.dm | 39 ++++++++++++++---- code/modules/mob/living/death.dm | 4 +- code/modules/mob/living/stat_states.dm | 7 ++++ paradise.dme | 4 +- 5 files changed, 98 insertions(+), 13 deletions(-) diff --git a/code/datums/soullink.dm b/code/datums/soullink.dm index 1240c9db402..1f17c635e84 100644 --- a/code/datums/soullink.dm +++ b/code/datums/soullink.dm @@ -59,6 +59,13 @@ //Override this for content /datum/soullink/proc/sharerDies(gibbed, mob/living/owner) +//Runs after /living update_revive() +//Override this for content +/datum/soullink/proc/ownerRevives(mob/living/owner) + +//Runs after /living update_revive() +//Override this for content +/datum/soullink/proc/sharerRevives(mob/living/owner) //Quick-use helper /proc/soullink(typepath, ...) @@ -155,3 +162,53 @@ //Lose your claim to the throne! /datum/soullink/multisharer/replacementpool/sharerDies(gibbed, mob/living/sharer) removeSoulsharer(sharer) + + +//////////////// +// SOUL HOOK // +//////////////// +// When the owner transitions from dead to alive or vice versa, +// the linked atom is notified + +// Atoms that actually utilize this system are responsible for handling the GC cleanup themselves +// Splashing the GC handling onto every atom would be a big old waste + +/datum/soullink/soulhook + var/atom/movable/otherend + +/datum/soullink/soulhook/Destroy() + if(otherend) + LAZYREMOVE(otherend.sharedSoulhooks, src) + otherend = null + return ..() + +/datum/soullink/soulhook/parseArgs(mob/living/owner, atom/movable/other) + if(!owner || !other) + return FALSE + soulowner = owner + otherend = other + LAZYADD(owner.ownedSoullinks, src) + LAZYADD(other.sharedSoulhooks, src) + return TRUE + +/datum/soullink/soulhook/ownerDies(gibbed, mob/living/owner) + if(otherend) + otherend.onSoullinkDeath(gibbed, owner) + +/datum/soullink/soulhook/ownerRevives(mob/living/owner) + if(otherend) + otherend.onSoullinkRevive(owner) + +// oops I'm butchering the application of this +/datum/soullink/soulhook/removeSoulsharer(atom/movable/other) + if(otherend == other) + otherend = null + LAZYREMOVE(other.sharedSoulhooks, src) + qdel(src) // not much point in a soul link with one end out of the picture for good + +/atom/movable + var/list/sharedSoulhooks = null + +/atom/movable/proc/onSoullinkDeath(gibbed, mob/living/owner) + +/atom/movable/proc/onSoullinkRevive(mob/living/owner) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 721372b56f5..b85fb249c2e 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -87,6 +87,10 @@ /obj/machinery/clonepod/Destroy() if(connected) connected.pods -= src + for(var/s in sharedSoulhooks) + var/datum/soullink/S = s + S.removeSoulsharer(src) //If a sharer is destroy()'d, they are simply removed + sharedSoulhooks = null QDEL_NULL(Radio) QDEL_NULL(countdown) QDEL_LIST(missing_organs) @@ -288,6 +292,8 @@ to_chat(clonemind.current, {"Your body is beginning to regenerate in a cloning pod. You will become conscious when it is complete."}) + // Set up a soul link with the dead body to catch a revival + soullink(/datum/soullink/soulhook, clonemind.current, src) update_icon() @@ -467,7 +473,12 @@ update_clone_antag(occupant) to_chat(occupant, "There is a bright flash!
\ You feel like a new being.
") - occupant.flash_eyes(visual = 1) + occupant.flash_eyes(visual = 1) + for(var/s in sharedSoulhooks) + var/datum/soullink/S = s + S.removeSoulsharer(src) //If a sharer is destroy()'d, they are simply removed + sharedSoulhooks = null + for(var/i in missing_organs) qdel(i) @@ -479,17 +490,22 @@ occupant = null update_icon() -/obj/machinery/clonepod/proc/malfunction() +/obj/machinery/clonepod/proc/malfunction(go_easy = FALSE) if(occupant) connected_message("Critical Error!") announce_radio_message("Critical error! Please contact a Thinktronic Systems technician, as your warranty may be affected.") - if(occupant.mind != clonemind) - clonemind.transfer_to(occupant) - occupant.grab_ghost() // We really just want to make you suffer. - to_chat(occupant, {"Agony blazes across your - consciousness as your body is torn apart.
- Is this what dying is like? Yes it is.
"}) - occupant << sound('sound/hallucinations/veryfar_noise.ogg',0,1,50) + for(var/s in sharedSoulhooks) + var/datum/soullink/S = s + S.removeSoulsharer(src) //If a sharer is destroy()'d, they are simply removed + sharedSoulhooks = null + if(!go_easy) + if(occupant.mind != clonemind) + clonemind.transfer_to(occupant) + occupant.grab_ghost() // We really just want to make you suffer. + to_chat(occupant, {"Agony blazes across your + consciousness as your body is torn apart.
+ Is this what dying is like? Yes it is.
"}) + occupant << sound('sound/hallucinations/veryfar_noise.ogg',0,1,50) for(var/i in missing_organs) qdel(i) missing_organs.Cut() @@ -542,6 +558,11 @@ else return +/obj/machinery/clonepod/onSoullinkRevive(mob/living/L) + if(occupant && L == clonemind.current) + // The old body's back in shape, time to ditch the cloning one + malfunction(go_easy = TRUE) + /obj/machinery/clonepod/proc/maim_clone(mob/living/carbon/human/H) LAZYINITLIST(missing_organs) for(var/i in missing_organs) diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 435c3f6da08..8a043dbf591 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -6,9 +6,9 @@ for(var/s in ownedSoullinks) var/datum/soullink/S = s - S.ownerDies(gibbed) + S.ownerDies(gibbed, src) for(var/s in sharedSoullinks) var/datum/soullink/S = s - S.sharerDies(gibbed) + S.sharerDies(gibbed, src) ..(gibbed) diff --git a/code/modules/mob/living/stat_states.dm b/code/modules/mob/living/stat_states.dm index e5ea3738e0c..812eeaa0821 100644 --- a/code/modules/mob/living/stat_states.dm +++ b/code/modules/mob/living/stat_states.dm @@ -49,4 +49,11 @@ update_canmove() // update_blind_effects() updatehealth() + + for(var/s in ownedSoullinks) + var/datum/soullink/S = s + S.ownerRevives(src) + for(var/s in sharedSoullinks) + var/datum/soullink/S = s + S.sharerRevives(src) return 1 diff --git a/paradise.dme b/paradise.dme index 20ee20bd23a..47e40c716d6 100644 --- a/paradise.dme +++ b/paradise.dme @@ -218,7 +218,7 @@ #include "code\datums\recipe.dm" #include "code\datums\ruins.dm" #include "code\datums\shuttles.dm" -#include "code\datums\soullink.dm +#include "code\datums\soullink.dm" #include "code\datums\spell.dm" #include "code\datums\statclick.dm" #include "code\datums\supplypacks.dm" @@ -322,7 +322,7 @@ #include "code\datums\spells\touch_attacks.dm" #include "code\datums\spells\trigger.dm" #include "code\datums\spells\turf_teleport.dm" -#include "code\datums\spells\wizard.dm"" +#include "code\datums\spells\wizard.dm" #include "code\datums\vr\level.dm" #include "code\datums\weather\weather.dm" #include "code\datums\weather\weather_types.dm" From 998474fe36691646f53c50510bb666553e3f4d27 Mon Sep 17 00:00:00 2001 From: Vivalas Date: Sun, 4 Jun 2017 21:51:26 -0500 Subject: [PATCH 042/244] Adds security QOL stuff --- code/__HELPERS/mobs.dm | 4 ++ code/game/machinery/computer/security.dm | 4 -- code/game/machinery/doors/brigdoors.dm | 59 ++++++++++++++++-------- 3 files changed, 44 insertions(+), 23 deletions(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 0abf2ac1af3..f20be8c1c0b 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -464,3 +464,7 @@ proc/add_logs(mob/user, mob/target, what_done, var/object=null, var/addition=nul set hidden = 1 set name = ".mouse" LogMouseMacro(".mouse", params) + +/proc/update_all_mob_security_hud() + for(var/mob/living/carbon/human/H in mob_list) + H.sec_hud_set_security_status() \ No newline at end of file diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 16efcb7de76..fca20841cfa 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -485,10 +485,6 @@ /obj/machinery/computer/secure_data/proc/setTemp(text, list/buttons = list()) temp = list("text" = text, "buttons" = buttons, "has_buttons" = buttons.len > 0) -/obj/machinery/computer/secure_data/proc/update_all_mob_security_hud() - for(var/mob/living/carbon/human/H in mob_list) - H.sec_hud_set_security_status() - /obj/machinery/computer/secure_data/proc/create_record_photo(datum/data/record/R) // basically copy-pasted from the camera code but different enough that it has to be redone var/icon/photoimage = get_record_photo(R) diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index a24af37dc72..4ecf6ba3318 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -29,32 +29,48 @@ var/timetoset = 0 // Used to set releasetime upon starting the timer var/obj/item/device/radio/Radio var/printed = 0 + var/datum/data/record/prisoner maptext_height = 26 maptext_width = 32 /obj/machinery/door_timer/proc/print_report() - var/logname = input(usr, "Name of the guilty?","[id] log name") - var/logcharges = stripped_multiline_input(usr, "What have they been charged with?","[id] log charges") + var/logname = input(usr, "Name of the guilty?","[id] log name") + var/logcharges = stripped_multiline_input(usr, "What have they been charged with?","[id] log charges") - if(!logname || !logcharges) - return 0 + if(!logname || !logcharges) + return 0 - for(var/obj/machinery/computer/prisoner/C in prisoncomputer_list) - var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(C.loc) - P.name = "[id] log - [logname] [worldtime2text()]" - P.info = "
[id] - Brig record



" - P.info += {"
[station_name()] - Security Department

-
Admission data:

- Log generated at: [worldtime2text()]
- Detainee: [logname]
- Duration: [timetoset/10] seconds
- Charge(s): [logcharges]
- Arresting Officer: [usr.name]


- This log file was generated automatically upon activation of a cell timer."} + for(var/obj/machinery/computer/prisoner/C in prisoncomputer_list) + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(C.loc) + P.name = "[id] log - [logname] [worldtime2text()]" + P.info = "
[id] - Brig record



" + P.info += {"
[station_name()] - Security Department

+
Admission data:

+ Log generated at: [worldtime2text()]
+ Detainee: [logname]
+ Duration: [timetoset/10] seconds
+ Charge(s): [logcharges]
+ Arresting Officer: [usr.name]


+ This log file was generated automatically upon activation of a cell timer."} - playsound(C.loc, "sound/goonstation/machines/printer_dotmatrix.ogg", 50, 1) - cell_logs += P - return 1 + playsound(C.loc, "sound/goonstation/machines/printer_dotmatrix.ogg", 50, 1) + cell_logs += P + + var/datum/data/record/R = find_security_record("name", logname) + Radio.autosay("Detainee [logname] has been incarcerated for [timetoset/10] seconds for the charges of, '[logcharges]'. Arresting Officer: [usr.name].[R ? "" : " Detainee record not found, manual record update required."]", name, "Security", list(z)) + + if(R) + prisoner = R + R.fields["criminal"] = "Incarcerated" + var/mob/living/carbon/human/M = usr + var/rank = "UNKNOWN RANK" + if(istype(M) && M.wear_id) + var/obj/item/weapon/card/id/I = M.wear_id + rank = I.assignment + R.fields["comments"] += "Autogenerated by [name] on [current_date_string] [worldtime2text()]
Sentenced to [timetoset/10] seconds for the charges of \"[logcharges]\" by [rank] [usr.name]." + update_all_mob_security_hud() + + return 1 /obj/machinery/door_timer/initialize() ..() @@ -166,6 +182,10 @@ // Reset releasetime releasetime = 0 printed = 0 + if(prisoner) + prisoner.fields["criminal"] = "Released" + update_all_mob_security_hud() + prisoner = null for(var/obj/machinery/door/window/brigdoor/door in targets) if(!door.density) @@ -294,6 +314,7 @@ timer_start() else timer_end() + Radio.autosay("Timer stopped manually by [usr.name].", name, "Security", list(z)) else if(href_list["tp"]) //adjust timer, close door if not already closed From 604270a44f03bd93d393582a24b323a6e4b4f27b Mon Sep 17 00:00:00 2001 From: Kyep Date: Sun, 4 Jun 2017 20:20:51 -0700 Subject: [PATCH 043/244] More Smiting Updates the admin "smite" command, adding several new options for dealing with people who keep annoying the gods with requests for freebies: - Mutagenic & hellwater cookies are now NODROP, so not as easy to get rid of. - Adds a 'Hallucinate' option, which triggers chronic hallucinations. - Adds a 'Starvation' option, which causes chronic hunger. (and slowdown) - Adds an 'Assassin' option, which creates a new traitor with an objective to kill them. - Adds a 'Lynch' option, which gives everyone without mindshields a directive to kill them. - "Bless" and "Smite" now show up as options in the player panel. --- code/__DEFINES/genetics.dm | 1 + code/modules/admin/admin.dm | 4 ++- code/modules/admin/topic.dm | 57 +++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/genetics.dm b/code/__DEFINES/genetics.dm index 8e7be007d12..6dacafa4302 100644 --- a/code/__DEFINES/genetics.dm +++ b/code/__DEFINES/genetics.dm @@ -96,6 +96,7 @@ #define NUTRITION_LEVEL_FED 350 #define NUTRITION_LEVEL_HUNGRY 250 #define NUTRITION_LEVEL_STARVING 150 +#define NUTRITION_LEVEL_CURSED -1000 //Blood levels #define BLOOD_VOLUME_NORMAL 560 diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 6853baf0755..d7de6dd6844 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -101,7 +101,9 @@ var/global/nologevent = 0

[check_rights(R_ADMIN,0) ? "Traitor panel | " : "" ] Narrate to | - Subtle message + Subtle message | + Bless | + Smite "} if(M.client) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 605c4acd1f3..a56b957ca09 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1790,9 +1790,13 @@ H = M ptypes += "Brain Damage" ptypes += "Honk Tumor" + ptypes += "Hallucinate" + ptypes += "Starvation" ptypes += "Cluwne" ptypes += "Mutagen Cookie" ptypes += "Hellwater Cookie" + ptypes += "Assassin" + ptypes += "Lynch" var/punishment = input(owner, "How would you like to smite [M]?", "Its good to be baaaad...", "") as null|anything in ptypes if(!(punishment in ptypes)) return @@ -1820,6 +1824,12 @@ to_chat(H, "Life seems funnier, somehow.") organ.insert(H) logmsg = "a honk tumor." + if("Hallucinate") + H.Hallucinate(1000) + logmsg = "hallucinations." + if("Starvation") + H.nutrition = NUTRITION_LEVEL_CURSED; + logmsg = "starvation." if("Cluwne") H.makeCluwne() logmsg = "cluwned." @@ -1828,6 +1838,7 @@ evilcookie.reagents.add_reagent("mutagen", 10) evilcookie.desc = "It has a faint green glow." evilcookie.bitesize = 100 + evilcookie.flags = NODROP H.drop_l_hand() H.equip_to_slot_or_del(evilcookie, slot_l_hand) logmsg = "a mutagen cookie." @@ -1836,9 +1847,55 @@ evilcookie.reagents.add_reagent("hell_water", 25) evilcookie.desc = "Sulphur-flavored." evilcookie.bitesize = 100 + evilcookie.flags = NODROP H.drop_l_hand() H.equip_to_slot_or_del(evilcookie, slot_l_hand) logmsg = "a hellwater cookie." + if("Assassin") + logmsg = "assassin." + var/list/possible_traitors = list() + for(var/mob/living/player in mob_list) + if(player.client && player.mind && !player.mind.special_role && player.stat != DEAD && player != H) + if(ishuman(player)) + if(player.client && (ROLE_TRAITOR in player.client.prefs.be_special) && !jobban_isbanned(player, ROLE_TRAITOR) && !jobban_isbanned(player, "Syndicate")) + possible_traitors += player.mind + for(var/datum/mind/player in possible_traitors) + if(player.current) + if(ismindshielded(player.current)) + possible_traitors -= player + if(possible_traitors.len > 0) + var/datum/mind/newtraitormind = pick(possible_traitors) + var/mob/living/newtraitor = newtraitormind.current + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = newtraitormind + kill_objective.target = H.mind + kill_objective.explanation_text = "Assassinate [H.real_name], the [H.mind.assigned_role]." + newtraitormind.objectives += kill_objective + ticker.mode.equip_traitor(newtraitor) + ticker.mode.traitors |= newtraitor.mind + to_chat(newtraitor, "ATTENTION: It is time to pay your debt to the Syndicate...") + to_chat(newtraitor, "You are now a traitor.") + to_chat(newtraitor, "Goal: KILL [H.real_name], currently in [get_area(H.loc)]"); + newtraitor.mind.special_role = SPECIAL_ROLE_TRAITOR + var/datum/atom_hud/antag/tatorhud = huds[ANTAG_HUD_TRAITOR] + tatorhud.join_hud(newtraitor) + ticker.mode.set_antag_hud(newtraitor, "hudsyndicate") + else + to_chat(usr, "ERROR: Failed to create a traitor.") + return + if("Lynch") + logmsg = "lynch." + for(var/datum/mind/m in ticker.minds) + if(!m.current) + continue + if(istype(m.current, /mob/dead/observer)) + continue + if(m == H.mind) + continue + if(ismindshielded(m.current)) + continue + to_chat(m.current, "
The gods have given you a task: find [H.real_name], located in [get_area(H.loc)], and slay them!"); + to_chat(m.current, "Do not harm anyone other than [H.real_name] while carrying out this task.
"); if("Gib") logmsg = "gibbed." M.gib(FALSE) From 837154727b1a06b3e81c351cbd3a2b1e4e646fa3 Mon Sep 17 00:00:00 2001 From: Vivalas Date: Sun, 4 Jun 2017 23:12:02 -0500 Subject: [PATCH 044/244] Fixes and formatting --- code/game/machinery/doors/brigdoors.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 4ecf6ba3318..5045acdafe8 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -57,7 +57,8 @@ cell_logs += P var/datum/data/record/R = find_security_record("name", logname) - Radio.autosay("Detainee [logname] has been incarcerated for [timetoset/10] seconds for the charges of, '[logcharges]'. Arresting Officer: [usr.name].[R ? "" : " Detainee record not found, manual record update required."]", name, "Security", list(z)) + Radio.autosay("Detainee [logname] has been incarcerated for [timetoset/10] seconds for the charges of, '[logcharges]'. \ + Arresting Officer: [usr.name].[R ? "" : " Detainee record not found, manual record update required."]", name, "Security", list(z)) if(R) prisoner = R @@ -67,6 +68,8 @@ if(istype(M) && M.wear_id) var/obj/item/weapon/card/id/I = M.wear_id rank = I.assignment + if(!R.fields["comments"] || !islist(R.fields["comments"])) //copied from security computer code because apparently these need to be initialized + R.fields["comments"] = list() R.fields["comments"] += "Autogenerated by [name] on [current_date_string] [worldtime2text()]
Sentenced to [timetoset/10] seconds for the charges of \"[logcharges]\" by [rank] [usr.name]." update_all_mob_security_hud() From efd4bb5594eb269c44cb0c0b3c9da3b710bd906f Mon Sep 17 00:00:00 2001 From: Kyep Date: Sun, 4 Jun 2017 21:29:25 -0700 Subject: [PATCH 045/244] Fox requests --- code/modules/admin/topic.dm | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index a56b957ca09..540b9136fe8 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1885,17 +1885,15 @@ return if("Lynch") logmsg = "lynch." - for(var/datum/mind/m in ticker.minds) - if(!m.current) + for(var/datum/mind/crew in ticker.minds) + if(!crew.current) continue - if(istype(m.current, /mob/dead/observer)) + if(!isliving(crew.current)) continue - if(m == H.mind) + if(crew == H.mind) continue - if(ismindshielded(m.current)) - continue - to_chat(m.current, "
The gods have given you a task: find [H.real_name], located in [get_area(H.loc)], and slay them!"); - to_chat(m.current, "Do not harm anyone other than [H.real_name] while carrying out this task.
"); + to_chat(crew.current, "
The gods have given you a task: find [H.real_name], located in [get_area(H.loc)], and slay them!"); + to_chat(crew.current, "Do not harm anyone other than [H.real_name] while carrying out this task.
"); if("Gib") logmsg = "gibbed." M.gib(FALSE) From ed3d8cb278f7be64d34741c5beff651d8a777b14 Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 5 Jun 2017 03:55:08 -0700 Subject: [PATCH 046/244] Tweaks instagib lasers Instagib lasers now work on non-carbon mobs (such as simple_animals), and turfs. No CL, as admin-only. --- code/modules/projectiles/projectile/beams.dm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 6cddc1c1b91..0e4e6486bbb 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -130,7 +130,9 @@ /obj/item/projectile/beam/instakill/on_hit(atom/target) . = ..() - if(iscarbon(target)) - var/mob/living/carbon/M = target - M.visible_message("[M] explodes into a shower of gibs!") - M.gib() + if(isliving(target)) + var/mob/living/L = target + L.visible_message("[L] explodes!") + L.gib() + else if(isturf(target) || istype(target,/obj/structure/)) + target.ex_act(2) \ No newline at end of file From 957ef0583fa76b52f15213d527f8329e3968426e Mon Sep 17 00:00:00 2001 From: imsxz Date: Mon, 5 Jun 2017 17:18:58 +0200 Subject: [PATCH 047/244] Update pet.dm --- code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm index 5a0798874e4..687e0b7c73a 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm @@ -12,7 +12,7 @@ response_help = "pets" emote_hear = list("chitters") maxHealth = 250 - health = 200 + health = 250 harm_intent_damage = 3 melee_damage_lower = 15 melee_damage_upper = 20 From 960f70f2fb30627bcd40360ae171a64eadac4445 Mon Sep 17 00:00:00 2001 From: Liam Warner Date: Tue, 6 Jun 2017 00:58:34 +0100 Subject: [PATCH 048/244] Fixed website link Old website link was broken --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dade37afd8e..5a182f9ddfd 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ [![forthebadge](http://forthebadge.com/images/badges/contains-technical-debt.svg)](http://forthebadge.com) [![forthebadge](http://forthebadge.com/images/badges/fuck-it-ship-it.svg)](http://forthebadge.com) -[Website](http://www.nanotrasen.se/) - [Code](https://github.com/ParadiseSS13/Paradise) - [Discord](https://discordapp.com/invite/gXZMc?utm_source=Discord%20Widget&utm_medium=Connect) +[Website](https://nanotrasen.se/) - [Code](https://github.com/ParadiseSS13/Paradise) - [Discord](https://discordapp.com/invite/gXZMc?utm_source=Discord%20Widget&utm_medium=Connect) --- From 0365dcb2a29b6050a1740e14c26789ffa2282501 Mon Sep 17 00:00:00 2001 From: tigercat2000 Date: Mon, 5 Jun 2017 18:21:08 -0700 Subject: [PATCH 049/244] Fix admin control_freak setting --- code/modules/admin/admin_verbs.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index d6a5ede9ed8..4c9194d1225 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -229,7 +229,8 @@ var/list/admin_verbs_snpc = list( verbs += /client/proc/togglebuildmodeself if(holder.rights & R_ADMIN) verbs += admin_verbs_admin - control_freak = 0 + spawn(1) + control_freak = 0 if(holder.rights & R_BAN) verbs += admin_verbs_ban if(holder.rights & R_EVENT) From f0a75a99485fa5e01026fa9889d1211655c303f7 Mon Sep 17 00:00:00 2001 From: tigercat2000 Date: Mon, 5 Jun 2017 18:21:18 -0700 Subject: [PATCH 050/244] Fix SQL schema for windows --- SQL/paradise_schema.sql | 2 +- SQL/paradise_schema_prefixed.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SQL/paradise_schema.sql b/SQL/paradise_schema.sql index bd90e0be9f0..8cf94d61835 100644 --- a/SQL/paradise_schema.sql +++ b/SQL/paradise_schema.sql @@ -266,7 +266,7 @@ CREATE TABLE `player` ( `UI_style` varchar(10) DEFAULT 'Midnight', `UI_style_color` varchar(7) DEFAULT '#ffffff', `UI_style_alpha` smallint(4) DEFAULT '255', - `be_role` mediumtext NOT NULL, + `be_role` mediumtext, `default_slot` smallint(4) DEFAULT '1', `toggles` mediumint(8) DEFAULT '383', `sound` mediumint(8) DEFAULT '31', diff --git a/SQL/paradise_schema_prefixed.sql b/SQL/paradise_schema_prefixed.sql index 94010ad1b74..d1b62ae3767 100644 --- a/SQL/paradise_schema_prefixed.sql +++ b/SQL/paradise_schema_prefixed.sql @@ -265,7 +265,7 @@ CREATE TABLE `SS13_player` ( `UI_style` varchar(10) DEFAULT 'Midnight', `UI_style_color` varchar(7) DEFAULT '#ffffff', `UI_style_alpha` smallint(4) DEFAULT '255', - `be_role` mediumtext NOT NULL, + `be_role` mediumtext, `default_slot` smallint(4) DEFAULT '1', `toggles` mediumint(8) DEFAULT '383', `sound` mediumint(8) DEFAULT '31', From ee2eb3eb4bbfe71de84656bc9772280a9d8dd95f Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 5 Jun 2017 22:07:06 -0700 Subject: [PATCH 051/244] Fox request --- code/modules/projectiles/projectile/beams.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 0e4e6486bbb..01dcbd5228d 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -133,6 +133,4 @@ if(isliving(target)) var/mob/living/L = target L.visible_message("[L] explodes!") - L.gib() - else if(isturf(target) || istype(target,/obj/structure/)) - target.ex_act(2) \ No newline at end of file + L.gib() \ No newline at end of file From 5fd4dac3f87e51adab4f96e69faa0485763362a9 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 6 Jun 2017 15:24:47 -0400 Subject: [PATCH 052/244] Automatic changelog generation for PR #7473 [ci skip] --- html/changelogs/AutoChangeLog-pr-7473.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7473.yml diff --git a/html/changelogs/AutoChangeLog-pr-7473.yml b/html/changelogs/AutoChangeLog-pr-7473.yml new file mode 100644 index 00000000000..78ae146b57d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7473.yml @@ -0,0 +1,4 @@ +author: "imsxz" +delete-after: True +changes: + - bugfix: "Sergeant Araneus now spawns at full HP." From e1d50e90c7a12ca5638e0610ab0dedc036903750 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 6 Jun 2017 15:26:12 -0400 Subject: [PATCH 053/244] Automatic changelog compile, [ci skip] --- html/changelog.html | 6 ++++++ html/changelogs/.all_changelog.yml | 3 +++ html/changelogs/AutoChangeLog-pr-7473.yml | 4 ---- 3 files changed, 9 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-7473.yml diff --git a/html/changelog.html b/html/changelog.html index aca4d93de31..d8d0b9c6d6c 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,12 @@ -->
+

06 June 2017

+

imsxz updated:

+
    +
  • Sergeant Araneus now spawns at full HP.
  • +
+

04 June 2017

Crazylemon64 updated: