From 0b573bbd59576a4c7bacefa2eb34f745c79af5f1 Mon Sep 17 00:00:00 2001 From: ReoDaProtovali <84661000+ReoDaProtovali@users.noreply.github.com> Date: Fri, 6 Sep 2024 19:23:01 -0500 Subject: [PATCH] That was gassy --- GainStation13/code/game/sound.dm | 75 ++++---- .../code/modules/mob/living/emote.dm | 172 +++++++----------- .../code/modules/mob/living/fullness.dm | 16 ++ code/game/sound.dm | 24 +++ goon/sound/voice/farts/fart4.ogg | Bin 0 -> 20433 bytes tgstation.dme | 1 + 6 files changed, 146 insertions(+), 142 deletions(-) create mode 100644 GainStation13/code/modules/mob/living/fullness.dm create mode 100644 goon/sound/voice/farts/fart4.ogg diff --git a/GainStation13/code/game/sound.dm b/GainStation13/code/game/sound.dm index baa05d75..6c8cb7bb 100644 --- a/GainStation13/code/game/sound.dm +++ b/GainStation13/code/game/sound.dm @@ -1,38 +1,37 @@ -/proc/gs13_get_sfx(soundin) - if(istext(soundin)) - switch(soundin) - if("belch") - soundin = pick( 'GainStation13/sound/voice/belch1.ogg', - 'GainStation13/sound/voice/belch2.ogg', - 'GainStation13/sound/voice/belch3.ogg', - 'GainStation13/sound/voice/belch4.ogg', - 'GainStation13/sound/voice/belch5.ogg', - 'GainStation13/sound/voice/belch6.ogg', - 'GainStation13/sound/voice/belch7.ogg', - 'GainStation13/sound/voice/belch8.ogg', - 'GainStation13/sound/voice/belch9.ogg', - 'GainStation13/sound/voice/belch10.ogg', - 'GainStation13/sound/voice/belch11.ogg') - if("brap") - soundin = pick( 'GainStation13/sound/voice/brap1.ogg', - 'GainStation13/sound/voice/brap2.ogg', - 'GainStation13/sound/voice/brap3.ogg', - 'GainStation13/sound/voice/brap4.ogg', - 'GainStation13/sound/voice/brap5.ogg', - 'GainStation13/sound/voice/brap6.ogg', - 'GainStation13/sound/voice/brap7.ogg', - 'GainStation13/sound/voice/brap8.ogg') - if("burp") - soundin = pick( 'GainStation13/sound/voice/burp1.ogg') - if("burunyu") - soundin = pick( 'GainStation13/sound/voice/funnycat.ogg') - if("fart") - soundin = pick( 'GainStation13/sound/voice/fart1.ogg', - 'GainStation13/sound/voice/fart2.ogg', - 'GainStation13/sound/voice/fart3.ogg', - 'GainStation13/sound/voice/fart4.ogg') - if("gurgle") - soundin = pick( 'GainStation13/sound/voice/gurgle1.ogg', - 'GainStation13/sound/voice/gurgle2.ogg', - 'GainStation13/sound/voice/gurgle3.ogg') - return soundin +/proc/playsound_prefed(atom/source, soundin, pref, vol as num, vary, extrarange as num, falloff, frequency = null, channel = 0, pressure_affected = TRUE, ignore_walls = TRUE, soundenvwet = -10000, soundenvdry = 0) + if(isarea(source)) + throw EXCEPTION("playsound(): source is an area") + return + + var/turf/turf_source = get_turf(source) + + if (!turf_source) + return + + //allocate a channel if necessary now so its the same for everyone + channel = channel || open_sound_channel() + + // Looping through the player list has the added bonus of working for mobs inside containers + var/sound/S = sound(get_sfx(soundin)) + var/maxdistance = (world.view + extrarange) + var/z = turf_source.z + var/list/listeners = SSmobs.clients_by_zlevel[z] + if(!ignore_walls) //these sounds don't carry through walls + listeners = listeners & hearers(maxdistance,turf_source) + + for(var/P in listeners) + var/mob/M = P + if(!M.client) + continue + if((!M.client?.prefs.cit_toggles & pref)) + continue + if(get_dist(M, turf_source) <= maxdistance) + M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, channel, pressure_affected, S, soundenvwet, soundenvdry) + for(var/P in SSmobs.dead_players_by_zlevel[z]) + var/mob/M = P + if(!M.client) + continue + if((!M.client?.prefs.cit_toggles & pref)) + continue + if(get_dist(M, turf_source) <= maxdistance) + M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, channel, pressure_affected, S, soundenvwet, soundenvdry) diff --git a/GainStation13/code/modules/mob/living/emote.dm b/GainStation13/code/modules/mob/living/emote.dm index 0b4bc44f..7bf093de 100644 --- a/GainStation13/code/modules/mob/living/emote.dm +++ b/GainStation13/code/modules/mob/living/emote.dm @@ -1,136 +1,99 @@ -/datum/emote/living/proc/make_noise(var/mob/living/user, noise_name, pref_toggle) - if(!ishuman(user)) - return FALSE - - var/turf/source = get_turf(user) - var/sound/noise = sound(gs13_get_sfx(noise_name)) - for(var/mob/living/M in get_hearers_in_view(3, source)) - if ((pref_toggle == 0) || (M.client && M.client?.prefs?.cit_toggles & pref_toggle)) - M.playsound_local(source, noise_name, 50, 1, S = noise) - -/datum/emote/living/proc/reduce_fullness(var/mob/living/user, fullness_amount) // fullness_amount should be between 5 and 20 for balance and below 80 for functionality - if(!ishuman(user)) - return FALSE - - var/mob/living/N = user - if(N.fullness >= FULLNESS_LEVEL_BLOATED && N.fullness_reducion_timer + FULLNESS_REDUCTION_COOLDOWN < world.time) - N.fullness -= fullness_amount - if(fullness_amount <= 5) - to_chat(N, "You felt that make some space") - if(fullness_amount > 5) - to_chat(N, "You felt that make a lot of space") - -/datum/emote/living/belch - key = "belch" - key_third_person = "belches loudly" - message = "belches" +/datum/emote/living/gurgle + key = "gurgle" + key_third_person = "gurgles" + message = "'s belly gurgles" emote_type = EMOTE_AUDIBLE - //god hates me for this -Metha + sound = 'GainStation13/sound/voice/gurgle1.ogg' -/datum/emote/living/belch/run_emote(mob/living/user, params) +/datum/emote/living/gurgle/get_sound() + return pick('GainStation13/sound/voice/gurgle1.ogg', + 'GainStation13/sound/voice/gurgle2.ogg', + 'GainStation13/sound/voice/gurgle3.ogg') + +/datum/emote/living/gurgle/run_emote(mob/living/user, params) if(!ishuman(user)) - return FALSE - - make_noise(user, "belch", BURPING_NOISES) + return FALSE - . = ..() - reduce_fullness(user, rand(6,12)) + playsound(user, "gurgle") -/datum/emote/living/brap - key = "brap" - key_third_person = "braps" - message = " " - emote_type = EMOTE_AUDIBLE - -/datum/emote/living/brap/select_message_type(var/mob/living/user) - return pick("farts loudly!", "cuts a fat one!", "rips absolute ass!") - -/datum/emote/living/brap/run_emote(var/mob/living/user, params) - if(!ishuman(user)) - return FALSE - - make_noise(user, "brap", FARTING_NOISES) - var/obj/item/storage/book/bible/b = locate(/obj/item/storage/book/bible) in get_turf(user) //Biblefart - if(b) //Devine Retribution - user.visible_message("\The [user] farts on \the [b], causing a violent, otherworldly ripple to echo outwards before they explode in a gorey mess of divine retribution!", - "You feel a deep sense of dread as you release pressure from your rear over \the [b], immediately realizing your mistake as Divine Retribution rends your form into a gorey mess.") - user.emote("scream") - message_admins("[ADMIN_LOOKUPFLW(user)] farted on a bible at [ADMIN_VERBOSEJMP(user)] and was gibbed.") - log_game("[key_name(user)] farted on a bible at [AREACOORD(user)] and was gibbed") - user.gib() - return ..() //Gassy is dead, no fullness to reduce - - . = ..() - reduce_fullness(user, rand(6,12)) + . = ..() /datum/emote/living/burp key = "burp" key_third_person = "burps" message = "burps" emote_type = EMOTE_AUDIBLE + var/reduction_min = 4 + var/reduction_max = 8 + var/noise_type = "burp" + var/noise_pref = BURPING_NOISES /datum/emote/living/burp/run_emote(mob/living/user, params) - if(!ishuman(user)) + . = ..() + if(!.) return FALSE - make_noise(user, "burp", BURPING_NOISES) + playsound_prefed(user, noise_type, noise_pref, 100, TRUE, -7) - . = ..() - reduce_fullness(user, rand(4,8)) + user.reduce_fullness(rand(reduction_min,reduction_max)) -/datum/emote/living/fart +/datum/emote/living/burp/fart //Butt burp. key = "fart" key_third_person = "farts" message = "farts" - emote_type = EMOTE_AUDIBLE //god hates me for this -Metha + noise_type = "fart" + noise_pref = FARTING_NOISES -/datum/emote/living/fart/run_emote(mob/living/user, params) - if(!ishuman(user)) - return FALSE - - make_noise(user, "fart", FARTING_NOISES) - var/obj/item/storage/book/bible/b = locate(/obj/item/storage/book/bible) in get_turf(user) //Biblefart - if(b) //Devine Retribution - user.visible_message("\The [user] farts on \the [b], causing a violent, otherworldly ripple to echo outwards before they explode in a gorey mess of divine retribution!", - "You feel a deep sense of dread as you release pressure from your rear over \the [b], immediately realizing your mistake as Divine Retribution rends your form into a gorey mess.") - user.emote("scream") - message_admins("[ADMIN_LOOKUPFLW(user)] farted on a bible at [ADMIN_VERBOSEJMP(user)] and was gibbed.") - log_game("[key_name(user)] farted on a bible at [AREACOORD(user)] and was gibbed") - user.gib() - return ..() //Gassy is dead, no fullness to reduce - - . = ..() - reduce_fullness(user, rand(4,8)) - -/datum/emote/living/gurgle - key = "gurgle" - key_third_person = "gurgles" - message = "'s belly gurgles" - emote_type = EMOTE_AUDIBLE - -/datum/emote/living/gurgle/run_emote(mob/living/user, params) - if(!ishuman(user)) +/datum/emote/living/burp/fart/run_emote(mob/living/user, params) + . = ..() + if(!.) return FALSE - make_noise(user, "gurgle", 0) + var/obj/item/storage/book/bible/b = locate(/obj/item/storage/book/bible) in get_turf(user) //Biblefart + if(b)//Devine Retribution + var/mob/living/heretic = user //Heresy. + heretic.visible_message( + "\The [heretic] farts on \the [b], causing a violent, otherworldly ripple to echo \ + outwards before they explode in a gorey mess of divine retribution!", + "You feel a deep sense of dread as you release pressure from your rear over \the [b], \ + immediately realizing your mistake as Divine Retribution rends your form into a gorey mess.") + heretic.emote("scream") + message_admins("[ADMIN_LOOKUPFLW(heretic)] farted on a bible at [ADMIN_VERBOSEJMP(heretic)] and was gibbed.") + log_game("[key_name(heretic)] farted on a bible at [AREACOORD(heretic)] and was gibbed") + heretic.gib() + return //Gassy is dead - . = ..() +/datum/emote/living/burp/belch + key = "belch" + key_third_person = "belches loudly" + message = "belches" + //god hates me for this -Metha + reduction_min = 6 + reduction_max = 12 +/datum/emote/living/burp/fart/brap + key = "brap" + key_third_person = "braps" + message = "" + reduction_min = 6 + reduction_max = 12 + +/datum/emote/living/burp/fart/brap/select_message_type(var/mob/living/user) + return pick("farts loudly!", "cuts a fat one!", "rips absolute ass!") + +/datum/emote/living/burp/fart/goon // Fart but it's funny ! + key = "goonfart" + key_third_person = "goonfarts" + noise_type = 'goon/sound/voice/farts/fart4.ogg' + //Shhh... It's a secret! Don't tell or I'll steal your legs /datum/emote/living/burunyu key = "burunyu" key_third_person = "burunyues" message = "emits a strange feline sound" emote_type = EMOTE_AUDIBLE - -/datum/emote/living/burunyu/run_emote(mob/living/user, params) - if(!ishuman(user)) - return FALSE - - make_noise(user, "burunyu", 0) - - . = ..() + sound = 'GainStation13/sound/voice/funnycat.ogg' /datum/emote/living/bellyrub key = "bellyrub" @@ -139,7 +102,8 @@ emote_type = EMOTE_VISIBLE /datum/emote/living/bellyrub/run_emote(mob/living/user, params) - if(!ishuman(user)) - return FALSE . = ..() - reduce_fullness(user, rand(4,16)) + if(!.) + return FALSE + + user.reduce_fullness(rand(4,16), FALSE) diff --git a/GainStation13/code/modules/mob/living/fullness.dm b/GainStation13/code/modules/mob/living/fullness.dm new file mode 100644 index 00000000..a21a7304 --- /dev/null +++ b/GainStation13/code/modules/mob/living/fullness.dm @@ -0,0 +1,16 @@ +/mob/living/proc/reduce_fullness(amount, notify = TRUE) // fullness_amount should be between 5 and 20 for balance and below 80 for functionality + if(!ishuman(src)) + return + + if(fullness >= FULLNESS_LEVEL_BLOATED && fullness_reducion_timer + FULLNESS_REDUCTION_COOLDOWN < world.time) + + fullness -= amount // Remove Fullness + + if(!notify) + return + + if(amount <= 5) + to_chat(src, "You felt that make some space") + if(amount > 5) + to_chat(src, "You felt that make a lot of space") + diff --git a/code/game/sound.dm b/code/game/sound.dm index 11e02610..13edfcef 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -227,4 +227,28 @@ if("slosh") soundin = pick('sound/effects/slosh1.ogg', 'sound/effects/slosh2.ogg') //END OF CIT CHANGES + // GS13 Start - Gainstation sounds + if("belch") + soundin = pick( 'GainStation13/sound/voice/belch1.ogg', 'GainStation13/sound/voice/belch2.ogg', + 'GainStation13/sound/voice/belch3.ogg', 'GainStation13/sound/voice/belch4.ogg', + 'GainStation13/sound/voice/belch5.ogg', 'GainStation13/sound/voice/belch6.ogg', + 'GainStation13/sound/voice/belch7.ogg', 'GainStation13/sound/voice/belch8.ogg', + 'GainStation13/sound/voice/belch9.ogg', 'GainStation13/sound/voice/belch10.ogg', + 'GainStation13/sound/voice/belch11.ogg') + if("brap") + soundin = pick( 'GainStation13/sound/voice/brap1.ogg', 'GainStation13/sound/voice/brap2.ogg', + 'GainStation13/sound/voice/brap3.ogg', 'GainStation13/sound/voice/brap4.ogg', + 'GainStation13/sound/voice/brap5.ogg', 'GainStation13/sound/voice/brap6.ogg', + 'GainStation13/sound/voice/brap7.ogg', 'GainStation13/sound/voice/brap8.ogg') + if("burp") + soundin = pick( 'GainStation13/sound/voice/burp1.ogg') + if("burunyu") + soundin = pick( 'GainStation13/sound/voice/funnycat.ogg') + if("fart") + soundin = pick( 'GainStation13/sound/voice/fart1.ogg', 'GainStation13/sound/voice/fart2.ogg', + 'GainStation13/sound/voice/fart3.ogg', 'GainStation13/sound/voice/fart4.ogg') + if("gurgle") + soundin = pick( 'GainStation13/sound/voice/gurgle1.ogg', 'GainStation13/sound/voice/gurgle2.ogg', + 'GainStation13/sound/voice/gurgle3.ogg') + // GS13 end return soundin diff --git a/goon/sound/voice/farts/fart4.ogg b/goon/sound/voice/farts/fart4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..429b9ec90a42049d31d3219465a5e6c2b04b75af GIT binary patch literal 20433 zcmaI71y~$Q&^9`YySoKh+#Q0uyIXK~mtX;cyF&=>?iL8H!QDN0AXo?x;BL3tRwV-Hr=b#tke7c_%Z;rEtlm2!3m_DU^ZvM~C3Q8~~&zw1@!; zS6MLH$HCotT_&uUq5py9A1UM@fE+2bKi_2sD4?hU0K&i8{X_p$MgOb*+Xy-SW0fcr zAUfhoBIAlP;tC!~WL2HF{BBjOF0cK*C?0^uXMcwss{vzFhJR6ARCC{j8MUJ5QC`Xa%pU{i+w3`Y2~v^eRE|} z1t+QO3d=EtBn1;>z{y2{O^krn4)Q zUf`O9E~JaL$&RFn7F2`5jMOcpy_TG%@}ne&N{WOhha!if6b(ZFPg437hSS(Z?tGAz z1XJ1-!jl(9LGFtzqz(DY6ip6=iNP%j6O2%ZkN^(|MoL0r0*6BUAAm7Hn1Yl)1tnD= z;xP&^qkv$9B!tLF0Kkj{L=PbGLk<8Yy^w*?8^)n(Gb#@mAwcgQU$TX*q)akcVLme+ zte1Wmm20V&ZsnIttCwEln|o}Vd*oX>(#$n|qd3haG>~u?82>zwC zl{5_B{$;_I(&DPfF0;)(^3A2IEVM0zFxciER}@yNYvmsL=34s|o)lD8GDH_1`{vR{ zm)de%DXQQ|&EiODaGCn$9z~U&WR*tQnq?Q3M_1ZqmqJ)ett%O{O0sE6<+YR)7rDef z+C)S2fXXaI(vp;do!8V#k%z^FU;>W@i7@FIIq5X16`TH#@cA=|xFAs+Ab7wPJn6#GJk1n&ni200aU| zAVN*x@x=c@MGycY>4ym1W7$gx%wySybJU~RhY8FT*@tn={u9FqDCx078Vkm$q=s{MitV_ zCtK)cANrQsWGDaig>5cfcB!Qv1kS>v>{1)K^b&|eqe@TpvrB9XY5hu1vmphDiwo^L zOCjJNWmVc#8cyE`LZF?;!IVE9DxE-8YZXuKO+wp=%s=vqX$t&5|ZT= zngl0tv@{_3Y>sIXTS%*!>DwIF7DQLtauj5jLc*dVTQdy+ z!ruUxh-3co6XZbuUkTy~v%ik{>ka}9h@T)n`S)t+ zU%t}6F8YrdlGhkqAX7%YnuU8vQa&WHK>@n}fH%?rR>BsFk1LfXOu^ zN2QtUqcF-@e=O?z7+wtnxIqK{l(RRIkSr!yNQWi#cbs7R79L0C%7Fd;o{k}M{}y}- z>Fjdpq6?4yCYan~OesuAI)eD4Q07*0`X*9P14m0HK_toINafO9i~iL>N-_zeOcI@+AcRv5 zj0Ncw@)^YzD*QX<=OBV1O47|mO3q>nB_XIlRE6A6+mG#=J4ywSdF7KkihcDrHAA%V zk%SmQnQ&xVD0}Ne27xfQ%vX>S()}!U6j^R0=uH2L%M9kwE5@*z#r!fywr3 z1QNATHqbw#1_2&m1O9&qA-HqG1&Gb9cMVS~Zt9=i`Nxm8AOLMh%nc0i#lrykvRFXy z|IBUw&d&eY4Iij*gyNY*EkG0n2$nOGO9z|EVaZWa zG%$@prfbN&4hj4*ND_WR%@Bc1C)(!x0Fwc~fW^ACUrmdzSudJw{rlhK>tgN7^projz zrX;1Jp(3ZOtRkY`1*?T`U>~@3j6v>@cN4N`ilMfO7i;3 z@cK&i`il4ZO88F;(d)n~&fr*OFENkmx5sHN4V~P%f+)(A+K}YOKkK@U)3it$CFfD(+Emih?JUhDAnR?wpWnS#eRSJQQWC-Iv9k#N5;VsEkSKY$I7D(?d0ry`IKv zFRWb2zt1WDHeRb-8Oqc9tnlL{;^%AP*A`wXnceB3hVhl|TI0y?)OA-lgtPiwo9Cth z#qb2MM+g2BTwUuEgYR9*Z|t=#B%uf#Uhq7M=ZMr*UVk_|lpa%g-9XD1;AkupB2lxe z9?2|goc>wPGwW5nc-O&skIY8Zz2iRn8fM!`TI7~?Mo`jDkLzhH$u$V-Tz!)t^dT%0 zF#J_%wk0Rom7^b1xv;@s(pn}H;Q!=}fU)E)&F4%d&144PT$UD`z{qY+$lMl6Sdu*x zJa9V8L;&%my#<@W1>L}aFV7p4tP8&3fph8aqXAnEamak`^;!1360E zOYvopFN!N>xFKKxg#X8(RlUTJP*-F*)bxPY!W%h(0jVvF!AP9`LUNhZsoKhW;qyKm8+Q_RairM# zJt71)?A5F4KJ~tU%^_nHZE?b*{8PILcjlTMJ|(k$<-jqeN}52w==OR<3W#qx@jzMb z!EaLNZ)+q9^nic%62jP%{`$dxmW75WT-PQ5J!N;le;L5%XQh-%W*Nhb-ll$=>?N#9 z)mtC_sJs3tI+b0`3#EXUZ7NAY2I}CzS3_pCGxaTYxP4BxDKtuHetvF@b%;J^AB@du=(iyfW{=nkmKDk3c&Eo>%}5;R=6?@fpQGLW)RX_m?)J#$cwkgDVz} z(caJWa&C1i(iNVBAvOZ82FFaPCYirM3D$?eWr*&@2` z-%#YFqt!^d*bwmaK$5Avp1T;8ra&yAzAd0jH-J{3uA^#v1Ika3#oQBcV51G-O1-gAae zZt6N-0`A5WaY-xJchCvUp0xHDfIm?k;-W!rSh&f{)B3m3UA|iS+ZsW} z^E}J2t|qw8ccC7i2wI22x`&RTjyp*FvjVxO5mlYfGQ_uwQ}=93hUt z|HkQjX7Q5ro}H)&RZH#8`uCQ@5X%RD5li$|C(zqc(KOT}h5z@)`WWpe z!eVtcJQ;#^R%uyBs2sAQ#QDaaWp~7ly6pqsWeLprXQIH>7^jZAa%7!m zvzn-kdJuh+<2M}dWlgdxj}D$cbitTWVLB|!F{s9Szjf-2V3k{6XMh&>j!Gd)}x(>;&RgP%*Nug8j}X}@ZH z;_7f4RPlsC(_PYctnuU8GwGQC#e1@2^#oYH$-&BHUG1sBjR`MEE{o7PL$FnbhQKxu zrWw~fDsCke(Hcfz5qly|!MZa}3HUn38nV~u*1`ubPqe_A${;c_ zSll2`6AT+LY8ssiHvLwqKN^>3gi}cI4-skGW|$JE_2Dt_vPnm8 zHrn4ugbiu%BTMG&rR1W2Tb8-&zfGLZLE}QOZFpW{3&szPJ~EsyD;wcvg2dVg*o*AV zc+kxzKHj%y9>S^atkyA?bh?4<>+*|$;yGkp_Q=sc%5X1HKFmPK`%4^)+w~m`IjG(g zMaEm&S*i8I3nJLN#r>z*`yc$t5>Q<oTHz{^O>pizf)8>#0b?N%O+(Euk8LLWzajei~A7=mLO2n$N*0 zjbceH%xJa~Z?%4KaP3zv3$LQ(Djunr!qk`|GXwctei9Nn$gjjAGL&V^A((C1g9c1n zb*Xn+{`GH}&P4gKiYei#S~?~6WNxUfvdkS=Pk&*K48{Cd+bYq;Lv8H3M;TRw!*-wy znu=>)Uds%!+a9^{)M9Ws*cDhkG>U&%Qlf*0lJaD_M*HF3uaLo3P3f$w?&~jBYPd~Z zKRLcf)`U7nBW3U6X{=4i%O{5gL|Urtq~M$(T6W?NZ|uro{Nxv7Q8d_r?cSj14gc8D z?75Kri4wA4J4o~8>EjVl&KI#%(IiL zCRVDB%-s4d<2!aokc3en=HjzQfj^@I`J(9%CxJ}Nrsoja;5^YL|ezcJ6Asx$hr7!~jXkd#WT(ki=QF_nY;kqD!}Q}Cv_I?7^` zd+313#!!#Qk~T91Fb}ya3tHlT$r@i?>d)TqB}CPY{o+1pK?Aym|T`aSz~bT!(594)lJ z;~-e-&PhY(XVix1)t>9nC)+j4`_?}%JJ=DK`%U`xSof$smzy~~f6yo1D)fF69~9}l z@4Art#Uktsea*MN74%!qi$nfK`dk8sT9hlR&mX_p)0-uLsfH7@AWgb$xB1-Z==;Dz z^7>HzqX2V{P%$N?hsRsWK&$l=e85sJ3VT?C||2T531(OK&rm{ zgwQVMpy6danP?vRgz7nYNqhhNi$MK=c?(;gZaW{QR@`C}2 zRBkpjc#JjD_%35eB4*U|N;SvER0$m3i6ZpZOK^T|JE_wzO`u}@zPS2;x9?5^H|#1U zd$af&=ym@E3kV~Vu{8Szjkb{>yl|EOgY}&}KgP&+;ZDx@(HZSz#jj>d{NziVqbB%& zx){?4NllGywV=$WHhsZ&r4J06^v%tj;nJntXM&Stzo#is!N4GoXQ&bV@SGDPciLX< zu&R zmmCNSRKHC@Xv(Oj;GAVG8(T%WzDBOQ`|`)`-l47SY9d^gMY9{mi4uk1KQTNMapk8p z9z$l6=e=@np8I@K$i?Nzn%9+ynes~;udxR-P|RS>@zE6jH7wVdJGE0YLN-W!q@S8d z!?N-49hRDozs}bWz1fAnsON9O_09X&y%rW-`E#_J3tDtKSH?Ri#O12}NH)|L4#q|c z2960tp{w!QiVVJ>sh4cO2i@5eHqg9Vo_^=}#F5&*StePtCFlP<@R^vd+76mU6IQKT zdT_%BK_m{{GajoOMnOlh*nYsN&6IyqDzBMLTVkyr3uxvzyH<p!KpKj+9^RA1>17nyH(GIMK zYdC=|qVE$yYX;%fBiD{&Fo_(?LhC;GnM{Zi(YZ9CXsBN1&AJRox;ZNKhgET91M!?3 z&>ncSAFDETI;?)3cBNCsxQ733>d%W=tsy1&F_I)puZ}^0kgL_4f|Xc%fV7>FgjW5W z5TM*yLw==u?}ECv2d>8?;2LSDsmO>rmTlQ@n217-Ww5k($MAM(Esl3u>WDCYTH{Y0 zxLZc$o?A7}(7Zhj3q1mD`l_NP^cQMcwuck|3GFUj17diO8bj;xu*RYQ(RSe#N z#qhELqko)5u)zmu6^~jM2Dh0~A}nf2E`0Q9n0~jxBy&9L%O6>zUptM40ep2gu972} zFpTfM4EaUp;TjK>J^*~DwAb1#p*ey^^<%DchRW8sU>zYSpo>K%_*C!8>|y8-Go<*ZYym&}^zhAlw;+@T%5t^>O-vx&c+X)q zMJm{zDYkha(FD;Twnfp5x3zU{+P)12OoLdrciO{S5yfl8>F$!b< zSt9m%o0H)C&+9e&6}RVx`+Wg^m=9i3;ZLUU)RNOYkZ+XJi-%W@JZY-sw-(VR0bU3J zeE08#?RQst#Hkwrlwumr6PM`dTF&^e)7$Zjux2&@AxaMq z{q!j0g-vsDDXIJTM<9`qR9Es0Ij9K{c#Z-ZP+XPo)vG8|95Bei%=~PZqLh9s)SwGL zdpBlTvg|X)-?WckC2XtmO4RfLJuxDeZQQZzZ9ShpHS**gL(QQD^_wN+Mx!o82e)Pn zfbiZ@<@ysa!6ITCv4l_H?&tiiFM;q%EHHgj9uxJFLIZcaXTr(lW&}yJ?+BgfCJPx*^9@!HWIC;Xfm_(qKc}wOK+B z^#UbDX4+GC^dlT{uM4*@ju|YR2wa$)JlvanyqlEH z$T}QG^teb2Ep#%`tlrIhHE+^qa>ZhixwrDY4fce5Q#oRhc@`XHJeFo$~UVMm1)h%)aarQ)O z$j(ud5gt(V2a5IeO92=5JB@NA5%ZA2StPHMCsg}WpLLd=n}o8KLQtvu;nCWdCKB_B zpxyYKcN5Q_c{X(%n=QmPsf)~5Lba%tlw@;C0@WUR>^)oJV`}F$Cm)^Qz#eyz8^ssg zH}HU`ru2ZGwPJaN!e`MZ$_V6AfkL@f27m+bhtv3Q6nC8cJ+OLH=-9<+LV({9-NVy- zd4w0Q(T4wzh*VDlG_*^2s+pOZC@l}~d1X5hjQilS?s3lqo{QX-+{Ot*iQb+<6cpw| zEKmF{6bz9jQlFevS$m}Q@9E1@wMgy}+tISJDzhY1Eh&4IKq`E(t5b_RT1153JzT~; zOCS2Q^PdnyzEq)M_ci(FZWbsf%OLHKx{z(VUVpoB3Pyx-fJ-ZROnDaXBog>vYx6jeqgu58(IN zdsMig(Q>7kPYwK4=WE5PZgQp~@ri~Kg_Kx>Bq9vsvHK3%KIk&w6RBn@4TUejb+KY0 zUZXB~$GF8$Hy_Z~`5K6PAU&v931>&4?vs+=b(e}OQ=0Y-vwR;>N5V@rUxaWwQ7eGF zC$G}Vtc&fl*F5-5j*Y+`j_AH6lQ%F_1=pLOmjFnf;>aEBiBW(qQ*D=`?G^SM%C|V8 zeb#YLMRA7gfl&+afHMj{MYaBX^J6m=O)Mv7?x#Ov;&Ftx#`0BB6!}{XT!BSOQ94eF z@!QvPn9DNCzS^E6lUgK3e$!W)$AqHRXbyhUrvRd;(b#L#?t^zGZhCy}@qa1s`bB~%$`R?du+nok#; zmF}!786#zXU*{ysIa4(E0tNnM0<}nBX?xnEmr|OEcqT47%p%mwP^g>h^J3>;5RZ`Q zv;pe*!(SC!pp2VYGEbjz>6hE}gjk-`5E&+UB9nQ&1c!>VATGwos2Cx-`}hS)@(~Qu zVz$?umKpnzt4j7xPvnzvNo9S`j*d|uBTYwlM;=W23&tl7UiTpOa&Ap;P~gi=wn(K= zSm2>7jFxZ=Of%hl(BkXyTF$te1uhuCd0d$&F#XPW#H(Sm!a!jgq(U`jyM9I#CU*15 zdN(YL%Q86Z&s&!{M2w6!7l!XyabOEEqANSjwE|=x>efY(HL86awey8k}%9ZF4R*>cnG{>^C^ETi`}-|or9X1$s*aP^`M z136jdhbnj4$nUdO+tB8t0vnm9_j2n z9uANZ5yE2djGVqN*YuZ2v6O2s<#L7`IL4=Gz=xV8?jnGILU+%dNdNvtecRY8z~hB% z_+$~?bvHE+JR)Uqy%iB}(zbQ`)gxGMfYT!F0Eawz;obnMTQSVX0{LWc5XVg<2?NRx z{2U|fKhIxh=Elb`@>XqrC~|469eJgX1tfV2PSm%1f4kt!iu?3~tUB)gjz;nY(|&Yo zO?Adtd9H8M#>D7q+1WPNtA`pPJ|MSTv(A3K=lolthck_AFu{|yzLEa4F*Em5RVV+F zm=ikJuhHbBIj_LD_o>r;L^L{=nH}4Uu}Ys?_Kfg-R;{HJ=>40-e6nWkU~_}+%|d(i ze~P60D?GI}rt!02#SQl#t6*k&?>8Teer)uOmX?GJXIRb0;pU4~wA%%WpU&1|#g&JI zTt#em#CwtK8g8MQ{UILY7MGQXEFsUffI>$kYy=mRlU(yud1KWR;vXV1Q~g}un26`u z!IWxyXwmB@ossf2`zv8Ua*qT2scn!0S86M6+FOJ9Y}|TV{H-NfTiHRw*R>#y&7e!d zU3_A-bGu+6(VtB$80IG1ycCpdjQSLAxT5g%VB=9CNtc`v_XvFFnB19GVJ1>PNtnMbPi zK15=Q9eb=GZ6!pq!23w^Tz~dy)LB-T_>N)@0&ii!7O9TcB_VqA7`W%M!kIdSCMkLT zW?rXG8+PotP3=Frdzfu1^sE*ITwvUbTv8Ac2HepVLiVt5UYY2)|b^FuN zo3mTC0;dXS%|i!Z%)PUjrEE2e@S(D=tRR~H32d(rrsmjVfpo3u@bU!_!H|Fokr5T7 zO%}R0lEQvmVf|RUZzqRQQ;dp>Q@kwy)9=>hA(-Z;kyYH+&+x$QstbH`ab!zH&E{A2 zETtV}3#E^oE>pHsR}onqqZv55Z{ACNnxj&%Ic1dKwI#D3{L1+fDta@H$2cGV+p@&& zP^Ky9rK`J}Ln{AUsg5bM!;3Z$MafX3@rQL^b6;hF5edm`s|9_dAscr@Tr$k0sCha> z^r2G2WNAv zBvLvGO{AC8be%KW_BENj{iQ=YyG7Wd2s+e05s1^er8UqLGgT z>wf<@tC#M1|M~VEbL=mwp}t!{DWQ|qrm_H){+sCn0EQC7DPCjK-GR0Fk{eA44t;Ln zU_U$GP{8Sa2PLNI3f*gLiRcGgyb}<4=q`J4ICT54@p;QxCtH0;?;%;GW^^Nk#z7bO zh|qIOh+H&r94Mg32}nZuibl3E{dn6@UF#UBkUdtz7dy&n&uQJVEBE>~CY}z4$T%i_ zAHJS94fWP_BP}bnT4MWY{0il)@J!3f2wF?0FK$^M7o*_NvCEqBGsxoNZGM~l*urbA zdwJe$$8X!^BCW5QN*sm3@Gxq=Md&QP9Aq#ZUiA5uU9D?I&4ZzKw5}_Y(op^e8kLqmcK;Ny zUw@I#Q0ZZ#K#P#GvnUVMYZHlu;oWete4CVsBr5C^MkY&^GmHiKeO}r0w9{_G)ai&e z3l1=R`3ZB-jQv{m#6P^|SZ>Ss>OVfQo+^0vwdz>bB_vtu^Pd9(f?i2QOpeJ34uz=& zbS*c*(Lj0(l5~veWv!Op_KTxOEFGE$NJM#g_i$p!SPTZZD7v9fbJ4q)E zp10e_NOxO#%ex7JLq6CEkdw=zobHxF&6W$bMWjxC^(VC@?>#B#p-7QEWawp6A@cc$F>$seR(aep>2OEasQR8Zdh{M8D?g6yH|ORJiZ|)I z;oA52ue9Pl!U~XYl8kaLuy(`Hf1BA}hy2P8?qlq{2@WjUj*#ip9z{#(nNrRF+hS-Duv}cmG zCTXgTAXx8lusN93Ej9PF?quu*Ah5ShW}58j2dt&iS@cCvhr|+tt0TnPhXEZTF6X`aF|otGXN2fX?OtCc7&oTTk$or7bpZ3X$(mL^n$aqi!Z)3+*=C9BRgomuW? zx63=@8&gMfV%!bFaq^-VTbK!fcRudiYUp;XzqQ}gM|?F9vyh;aAThd62Y<_zpA)RS zsikAw#Jk3K%3V-qm7|+Lc0<&IDJkkxV`F) zF!H$2LJ^b1oY9aOOGid6ZIX2tx+d|qN?n?|@d}CeL%I@$nkLVWNS0FM>*kV;fr~~v z*5~v7hcsX7Iz7G8me_lO`D=f|ZkmH$+3&)EZGI9_bH3g~#wdqzcVA-|f=*XhGhBI8 zuyiz*B82zH0U#5UzO{^REB0jn%RVFCaVP`|jt`EFjZtn?>Ca9mSS1qHL+r`vi*wD0 z{a0zcH$-C%agBrMlr%@%e4RJl#9qSzoRDW>alf+sBca!?R|ZJrYjPs^W1byuAWsNF z*%LJoSyg{CHoq(UXs`2ZSd@$T(FRZM2hj2b7y~+Zxi7w(G~>`u=WG*EOmuh9D{3}S1LVpazZ?fEoquymG9rVP}KJs#!cq4c27g%(s;a}zWPD1 zsJWD3bALXXpr7Y2%GnjkJGS_AxBcDu!;?Qf)#*^j<-zd8G0c;g$mzkGsdJj!Fqk(` zENsA*u7cgUX(o@1J&d3@v^@n>EM?d;iN44<=Ka*2_1u(I9f7Zt^+QV~*_H(yrnjZ# z=(t(&s@hXnK@^XyD`s$#3&{h59w|~LQ>@DV1 z*Q~y-betHr?}RCFywly1N@^Oh=3$j*jep8An)UL;)yVL2&}zwS=(_*A1t?f`fH_7Z z$wWsQTl^A_jJ%8=j+FSO8Uzn-w1Sfrvp;z}lEa++`D0#VmN!!=@*&Z$rL(Ujy2`sY zsJfLv&R{83~twSrfP^3e{3;$%cf_G&9uH*lU&PCwd!7!D`W}q_+ zp^`m5H8f^8h(r%8-@?HJ zbrPh!F>upM5!1kS`(Y)C`<_t($^3f)z9ZW(&A^Xnxo>?Gx@^{4gAP3VT^#dz*dd;R zVsP!Zzta^iGFJ0gDw5jOX2hk|sS!hPpw$dNRxnXYt<<%rD&VLw+?4_~Hoa&3O^C!**D)z~xkk5!1f?TVkO3ZKkD zhq4H^AFm1rFRE!Wb;y0DzXo$o(|sF6Z4&_4P{02qQUbTUH}A%|dxOrykIW6ouG1ee0qpEbu&z#wYJUZ#D zSpt3Hb!KP8e*5RAcx?i2L@hnuoU%`F3Rrju1hHjsIUHP`w|*$0GU9ks z#GIS7d};3Kqyg~BNGvO}*jO7p$(V0`D1Gv7jZ9k;mLn@$asK_@Negk{m)AAcbGi1h zTv_RYpKwL}#{T{<4L)>C2^ynAd3VS&h&s^*2707*AgiOJBm#}f0C>lTY*K`JfXS#m z!VLO`A10fRkQwGKi3!s`ML_5KNfJbF?xblUM%k5ovQ>Hno3%QJy=DM=T{5#gJ#~4# zhh?~d0onOw7Keb+hybb-hiAZ=RIrUV?>@i_8P-|cG#5OXzeUtl-L^)VO3 z;SxT-B5r*u(=TGg-d=PMFdB#^+sYzu3&U5~=j%^%7-=3*dcO5yxc>-4?a8qYg_ZWe zp+5Y({7QV(XTb~l(=6N!rxZ)NjM@F-tZPj6l+?`>(q?k1C)#ht@PjuLk6(k92y(V* zlz!4DV<}njLSOxQ+d5w#HsgKEnX1lY;ttah2M#MZnQh)U6?>l`%`dVm8s4pi!gqTd z)XbR(D)Ey3V;dr~BK`M&E~D_o`=Ys(2qiK-vhMGxPP3xvte$KU@Sv%_rE0Yv;Xfk!(k)f8N8U;S*JDZ=joZc< z!V53wK^S48StUCvko2iMXA(XX9K6r*329pIi>lLMt|u|^`#gD=y52-;6Wvwi0{3d) zeU3e^o;R5BLX6kshl&%E?e7C0?Y~z^Rj|>c^7nj~Q?S5a0yFFE)ymQ0J0N!#9@>x5Wv|_8c`9sJ>gqo>*ybL z6Wy#>W0M~I3wc4I5E}`p3q&AwtZ?-~g(v;jhnl#<2@$fsZtf)_z{ed_oTav}v4d z3$fi-8bbzeiwZjT`l6Dauld*RjAUS7t~V4AlsFWi1;#QWX>TAAZWo@&-H)tO~V z<2Wa^QH4E7j3`xu;_ttm$jy!|_J5M=cpMbt@Fu7eCR3O0A{)3SBCd@b{!*2)0(lLq zjhh)*O9jmqT-xX3K2l5M8DUgf((4;~Kj1WK&wFI-LC6TijGzpN<3X z2XsP*#{K7o3*&_jt$pjML#RsPMB(hcsnFSIXmDgPS?+($oM1U>P#w5!70;5ZtAd1i zCA?hW_{cpU5pDjIf;sEiCz5)x)za?EN*QNHmHeOB{OsfDoAq?^@8yOvky;E#A8RD6=i)~ZQKyvCQ|b4BzP8>fh7u3I?0gI z)EvbK+qOm(J8Zoz+{k>%Tp#mkGHk^r7Zyy6Hegz}PySdqog+!{t0m0?3su`_Kfo2Z z($E6xQP8MlKh#l>e+7rtzJ|IiV94YnN9xx~e!>`WaVq6& zG7KaN2P{6RkF)!BV|%Bi-sct?uYzVc*9f2@sn4v0AR(CfwaN8s3xBwUfOysq+ThPQ zD-&>tn zqimX?(19HQ#-<$`Z2ZpU(7g^rW^&e!V%RiE?cP?fQzEb^a!K{x^QK@_i9PVWap$n+ zWQ(Z^w~9vB_pC`gs(~V(xGjeUJE2&cu9sQqIvUwd`x7T%oj_EsULECeh!SxswdjH7 zTvDdTl`2}UwWV4(u6tx%OGTqjR1$fkMgzUtNsFLaTWPP}|Cw3kMvW5+_{xjz;euT3 z7M1}QOmO7EGZP|75}KV;E=X>xA}}r*&y9gO9C_0Lf|-l>u@p!~T~_^WFSoJPC(2Xk zdPJ%&@~ds3bW&}3Q;$^n&G~?m8odA(>DythFE)d{o&|l$@dbyc>iI&!wf;z#gYugI=cF;z2kO;e=T!ZHfK?s39>kd zvyR0%X5qDSwAhZdksfuGSe^%Wa)&HXt?hlIut>F(>m8i1?Vs>Po0mgc5Z2Fp3;m`o zlhtZHjE9%dX(%Jm(>$yR`dob8Y#YH3k?SRb$Bf0ce-V?!$_(xjhm(o`R*kHqo-dOL z(;j6|jQXZf`Ul5*jz(pSbdcUh3Rv^pM^l;fUTYrTM1jIzFDH@LO->q$GEm(QTH(Xo z8lRg>lgu{aR4v`o{QLrgR_r@ET)uwL@!^M&nJ|<|&M|!F!_Fl2;ik5+bxz6zxZ6l> zA^ILV=;*pTD$Pk`#{JDN39=)aj4M6^{O*rS#NkZ>`iqi?ySAKKMwmQ)C!x!(;;P~z+hm^$ zaLmnFK`=04=S%>+hz~aGJG1&k^n~6BWAdn<{Xt0ZOoKOF&hZ0<2-V*z;9U*^WPers z^cW4p*57(pL!qnUSggEO>edj9^ZORjRi^=g-TtKAx}`P5eW>*Z^*Xki>-$D0;;M+?&o%Tqs11f8xmPYb)YJbX@d@YiswBo!Pr@s)_gZUVj|hs?Yz z75$-zvDGUUYhghQc4UhXGwe6@N^hh#_F*kVa$>ibRrC*Q0&PQ?8>h;FA5$8F^>^P> zle45ut}{|~xUqMa$KNP|%VsLk4Sb?-cA^9`vijc#pjfpHbu{XnIZ1x|vE59XCKNed z9KD5B8d0d7JvmhnfK3UGQUppItiM_@AA)kbqa^ZKG{u*gLE z9#PbM2gY@x!@9W2fX6dL&6rwnBcrItoQ8iTVLCqNmcY<{oWywJp}?cs)&Y6#QX*I@ z=nJy~D|KeE=Sk*U<2!}2V*R!q^;SMyA-617T+K3`P<5dii|EMYd;vnVDG~m#p2Pi4 z!FfyVBQZP_4(Kg*&zyMLB3yfx8fqUlLusvB0p7Q2>H-0yH!B9tW-E^05E+++E50h* z$nBv1U5={~1tfZu-c3>a9O$}zCiJ6l{j#%+jDTWRM4Z=6Htd?Tj>h-{DH56X2`<^M z>T+zQkfcgfWnm|P>-`Tl8Ck^XOoT{P z>#u+AMxi2xD}nYaI41q4;|4GfEOK42DxQVSxjqZ&n(CPte)N_ph9a({OM%{#Mu6c~ zS>w^E(h`b0MGxYJP%=E!giqcjAO5H}FB0cA(VhLipU*t2HO$I(x zsWYV%5_uzH(Jd#Z%7z$Lu^{ktZTZ%kW5nFYhSoXL-5gLWw5%ZUZ?`nx1ZK)4$@1iPtSfxw$31-)#5Mdq`Dx^>+O zaeckgwEv_*?4PwQiU}B@jhVD{{#J~YN*;j)$5s_?>&w0Q(ac;&xVo$pvnRsP-1B8# zH&s(xA%iz0DmooYx7p>%K1?>AQVMs`S27GHCsiXJah=YDJ;kH%(+fUX9NGz}es#xb zcS!7o3MQ!HI;2TX?O^*DnSl!1+-z?p6NspjhZYRmx}qHoGS>Vy_87!_X;ar}AT2Sd zqb5|lRU!w81fZO)*#Il6PQ^M={6$DFKOei9Jo0l#2$cZ-cW(iY8S4zw0@EmrDmQya zmuRzZxlv6^t$d-MBs(wssHb#apM|yO%RdLoT@+T@S@tF+vjW1snqQK$&x-F_RwBy)~_Z-Dza zNo32x#2oa8dDW9yYr>3MiA<}NhHQYatnEl)6_358c71U|@98wEVwGY#*xkqX$f8yE z`5t>Fi9<}*y}LUs<8?K$XNZ84-PPHjyBBR+X7 z+qp)wg%bM?k|KCy(Ws1~5XY4pj{rTHaQmt9+J{Q(re~L%w_BwJ?@H(taldd|D$<9m z^OqLrGxnkXi59yYzP5;PzZ&b*b5mLlx5`BOeif?8HcknLc(jVY+GOn}}GHqzyLM@+qYpmYz<} zf7fEU`sHNtGpIf@5B*I{0-V^07zODPc7U*RNbTyyB#4Sk3hPS1dpCjk5Y5c#vf75Z z#iBL-{HqlV5!PBq>;V!%ZN4aHyiv#@HRC*yQJQ4N2U<<*$!XorPsfs)Azyzng(Y5d z1af1JAO@UDt|$s}JYs8oDigVLa_1gdxbyg z4}@|TfM516I<#t06ffB3crufjP&y4iR$>4BYaYi~s><**d;pVYtfQaNi>|-}&ymcB z_gCHkkI&CB8X{|v$CLrooKDSG#%SL^vKjurTUPSfl@2xZTSY2bqm~YtB0u$^yOnBb zs(2nbt)g1`Kz7p_B)Bi>RkaE4J5Znt3_cf6-gUnnR};u)3%sp^{Oux=hS)JNOxwBK zCNkCnZ6(eP_0v}h?u63171Os##45dOhDKRFZQVYfcW*`>Ig!k>4TJRZSLI*QNJkJ1 zktK|_jHq6V!twa?D^9_*j5y(;19LwRV-yVp-{EHmv>j*!P5G3lS$ypmLQu#j8NtnC zX86fez~`zl$5z#ohKY;+UT3VvxNxgvxC&pf^=@OyERir-9 z3Kq;J8Vd^kl(57CGwfYO^A(;O`o6Poamp)XCt;@b_8_3^Q#apL5lTmcrzy(0%7wdt z5Tmkp-kZn)KUKmoi!WkP{EE$LDL=|r*VnP*PkyBGCjEYUTLU)c3lBqOJ*n!^jK{=zaV+I469pE#^3tB%jXeqt3Ee+@od<75^9c9)TDeptzyEb09; z-ub=l8+GcXRB%XnU_9Z#<#aq7!joWZ{C@&V47Bt4Mjl%(%o3RjWMW2Y7#kV~f=6D{ z$2*{*WZ?3yF%l;CATQaE8AbKofk;CCSN>=xwqhEKVG8Vo$|E!(S-GQ2fn}n6Q#-bW z?DLmJK}_~>=YO`%NxVjML3+0~R1G!haybN)&K`fK#c3#7{~$DsvIK&I6)|oU=v%6W zt9AOxl{J{_aDfQl7~J5gsf+P4v)3tIcHuK03@&l_ZvgXa-w_x-0}H9{u>!66$zRd& zf<9kPAK2=-g6Aa%b4Om+UUwjx#>MIK*x^&iZ*)0fupNikAZx;I9+|P66%Fa=A@9xY z{|YDN3nTRZKwt>Bx!IyYxiVU!n0hBiQ|hV@*%j{`s&cMPOi4Ksq~siaXA#_^Ohw!4 zA1hBSFijR%0G>5tbw&}De(DxJfI0tiLIW58`^5d=WHyGL$OTz=i<1BK&%peQL|GNg zme7_3Z(8UB0}r`AjHJ^2u+@BwT07S_D9XI$lip`$Rv3kYpTOCyaD+e@BxtFj+cT_P zcSQ0Wd&u47a^PJaq_2o3s)qpCEd=GrVOEL&oV3AM;TZ8-J&Q14#88qx1j;y%oncLG zI#7{K(q_$7ig<1c%|Iik&CRX((Df}{pVxj;nU$5dFyhYY=^{vX6_h6c8~{*h3>j0L z6axxWhm(rEVP6GCVdM~K8Syj|>^R&(^Qc8Q{pFCFpD1anga{%hi?|hyrHjEuq8)k; z7K17Cl8GZStkIOnhwgeb)yekBKk>Oo!&Hi-GiX(W!nt=o9dLL(DXl;}cK-;jF zA_@1H^B|IO878O@v)?=-w9c-2WD~tGg^|12t3-+Z^ew(Tg0{@ZlzPM zwjwPlwy6@av)b+AmV@3g|LP=UZ|VxS6@@50-1tppH-uytW>=B29a(0hyNz|WyJvTO zMROV)ET)wYNQRpxc_j7k#9yypO(&v7r`Ktzvt~@~-Eybm0ejp&I_Le8JE9y*f!Kr# zWe!Awk5pg|v^u@ae(u4G{@jZO0KPR#{OAI#2k`~~$EINhN>myHz*=8l5#MKd8&RdO z@b3xKU$(x?+sZLF%E=BBNKdE})?nhHg)x#)DpndRp+<{sbK9;un_x-8%qa2B>)RLe zO-2fECM(%tH|MR2p{!UG3zdau(Uz*kYrV_;(q-|Ai(`x=K;ozf%rQnXs=|6d|1OG#IiL>S6Im+Tb4jB`aYWlZzNnuMlv^vO*u_R~AIBbgaLQ)`o(s9a#Zuz<4T z{YuqBORrRpbksL5qAy-hsG|A&&tQ$W3(P>p-GTHOkQZRUqh|ie4s1;C1MZt%D)S>oKs7DDCZbXc}^PzAl`rshW65 zS`(+J%~G}r8x6?yqxD*We$!(v+IP)GHGu%#Ha&9>eacws-~PV%ginj_3XRc6=bMdg zs7rs|`OCRFuc&r~_SdW*C)T$&^vl=n{r7R+-J0PvHGZdocBM56HOj^1h@@vdL$SY8PRR-~6Q)b#L3>PuR{eEG_C8@JcW2Re z{V{(+ysb*Z!W^Zb2NDX&X;yqnmDT0h-8R5Z+p%c(JXOB$JWepD^fYF738f%GQ=+eZy432i$4=62jR!eH=S65!JA0UR8H}HJ zXI^ql-w143!0 zqd8S~CtuYI`m-T5v>fQ$s-Ovhq}}OBF^32|N?CKXpifUdcZ| zw2pap8UU`Lgc}r*5)87~vklQkBue{pbfv8w$*0^X;+sL+6?7c}R*O?Y(4o z=TauSvA{al&D`{E0-?aO;LBTqc>Np zD3HOB351P|rWR89Axn?M;`}a4)5Lr9w0xQOo{D zm3^D|4+oG^7iB`&ostYBl}>8ROPdGAAix1j5Z|j=H?buMv+O|*i(O-nBBrmURkN@A zai#8BvLmY$ZK(7rdN7?XTKk`Smllb5wBidY*%uOIa!h2zmkUDJiyTEHRpcnm=sAr8 z{NnRsTd-T3Qpxs;EB{mmfewd27=&qW50DSW$Y65ld*9|7#jjMaBIlBFO?RE;Y=L|A zwxx}qi_UAZXE$+3xmHSyu}!z`OCO?;?LBnTP3!w|*a{-1z1T}pql*&z{rrKZx=1@> zj}engryL=XDXc&ZEB|J-D%-s%x3`kpXSPj`!i>Cqz64kI0ALvAij%H_ZsVj{QhuRq z!mDV6J1nKda%2Y^Gm#q9-}x#W%t~*tJ`US{?n&8Ua{h?gWbwJG_wVg|M{WGLQ+=wr z_)QoP&xqgoFAWa9bM3cva?pct^JTE*m)nuwUSkgt$k=x4X9__|DhCHhl^f=%rC%DE zf_mcb(rO5~0iH9vAixfhS&xsM0rxyS+Re_)pIvlLT<4SA*Pyld2WF=Je_%4cVfU#jQn3#vJ zTKd)&8UA};RKE4eEG&Z>OY`M#zxP%F5YjeW0t7}O3|wLqQHlV-S}TFmP1LxOjb_M7 zWo}TS7b_O(&}1to+y3f*m!3C}ddZOZGf{UKOL``reVK@2`Lqf|82$OV z00000007`5-5=XFwnb``!rPid*=_u>k;y|2ELZQBLz%w390z@v+>(<7lQ< zHk{HJ??R9a$NjW>imAE#8BA_@{QqljETI4*z$8-ka(8wh%@+Ad_5tz;<_6+X2D1J9_ot*)mgS)@@FrYwT z;yyk;LIZ$vs+Sr7inTSi9ZybdN#$zI;`+Y#*(dj~w0r;GpJU5ii-V?~NPYAB8*&8B z0{{R37)wPE0Dvp@hbCuH^_39-0Jv$?B3CD&nXIExXQcHglR^6Ih84W4BoXp95)IP~ zkO{#~lnn*|@V`|%cb+)F=RfOMKMHc+_ZaPbjQ7ehbj4r(Td3ip%)Q;L+pp9L0TU1&RuBb68*7N#hDh0LTb_oP?cUDCfQE$EHm@I~6}REq;FD J_MFV%#|5@j2T1?` literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 369210fa..bb5a0379 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3127,6 +3127,7 @@ #include "GainStation13\code\modules\mob\living\emote.dm" #include "GainStation13\code\modules\mob\living\emote_modular.dm" #include "GainStation13\code\modules\mob\living\emote_ported.dm" +#include "GainStation13\code\modules\mob\living\fullness.dm" #include "GainStation13\code\modules\mob\living\nutribot.dm" #include "GainStation13\code\modules\mob\living\vore\eating\living_vr.dm" #include "GainStation13\code\modules\mob\living\vore\eating\trasheat_lists.dm"