From ba2b5589e9fcf147a5e070ad166970c4fdf138b4 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Sat, 28 Feb 2015 10:59:14 -0500 Subject: [PATCH] Ported CorgiUI --- code/_onclick/hud/_defines.dm | 5 ++ code/_onclick/hud/hud.dm | 2 + code/_onclick/hud/other_mobs.dm | 35 +++++++++++ .../living/simple_animal/friendly/corgi.dm | 56 ++++++++++++++---- .../simple_animal/friendly/corgi_powers.dm | 11 ++++ .../mob/living/simple_animal/simple_animal.dm | 20 ++++++- .../reagent_containers/food/snacks.dm | 23 ++++--- icons/mob/screen1_corgi.dmi | Bin 0 -> 12074 bytes paradise.dme | 1 + 9 files changed, 129 insertions(+), 24 deletions(-) create mode 100644 code/modules/mob/living/simple_animal/friendly/corgi_powers.dm create mode 100644 icons/mob/screen1_corgi.dmi diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 98b99d0a1d3..2c9eac69a0f 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -114,6 +114,11 @@ #define ui_borg_health "16:28,6:13" //borgs have the health display where humans have the pressure damage indicator. #define ui_alien_health "16:28,6:13" //aliens have the health display where humans have the pressure damage indicator. +#define ui_construct_health "15:00,7:15" //same height as humans, hugging the right border +#define ui_construct_purge "15:00,6:15" +#define ui_construct_fire "14:16,8:13" //above health, slightly to the left +#define ui_construct_pull "14:28,2:10" //above the zone_sel icon + //Pop-up inventory #define ui_shoes "2:8,1:5" diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index 20e50d9472c..9e64de0697b 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -190,6 +190,8 @@ datum/hud/New(mob/owner) ai_hud() else if(isrobot(mymob)) robot_hud() + else if(iscorgi(mymob)) + corgi_hud() else if(isobserver(mymob)) ghost_hud() else if(isovermind(mymob)) diff --git a/code/_onclick/hud/other_mobs.dm b/code/_onclick/hud/other_mobs.dm index 2cb7cd15b41..f84cfd6c232 100644 --- a/code/_onclick/hud/other_mobs.dm +++ b/code/_onclick/hud/other_mobs.dm @@ -5,6 +5,41 @@ /datum/hud/proc/ghost_hud() return +/datum/hud/proc/corgi_hud(u) + mymob.fire = new /obj/screen() + mymob.fire.icon = 'icons/mob/screen1_corgi.dmi' + mymob.fire.icon_state = "fire0" + mymob.fire.name = "fire" + mymob.fire.screen_loc = ui_fire + + mymob.healths = new /obj/screen() + mymob.healths.icon = 'icons/mob/screen1_corgi.dmi' + mymob.healths.icon_state = "health0" + mymob.healths.name = "health" + mymob.healths.screen_loc = ui_health + + mymob.pullin = new /obj/screen() + mymob.pullin.icon = 'icons/mob/screen1_corgi.dmi' + mymob.pullin.icon_state = "pull0" + mymob.pullin.name = "pull" + mymob.pullin.screen_loc = ui_construct_pull + + mymob.oxygen = new /obj/screen() + mymob.oxygen.icon = 'icons/mob/screen1_corgi.dmi' + mymob.oxygen.icon_state = "oxy0" + mymob.oxygen.name = "oxygen" + mymob.oxygen.screen_loc = ui_oxygen + + mymob.toxin = new /obj/screen() + mymob.toxin.icon = 'icons/mob/screen1_corgi.dmi' + mymob.toxin.icon_state = "tox0" + mymob.toxin.name = "toxin" + mymob.toxin.screen_loc = ui_toxin + + mymob.client.screen = null + + mymob.client.screen += list(mymob.fire, mymob.healths, mymob.pullin, mymob.oxygen, mymob.toxin) + /datum/hud/proc/brain_hud(ui_style = 'icons/mob/screen1_Midnight.dmi') mymob.blind = new /obj/screen() mymob.blind.icon = 'icons/mob/screen1_full.dmi' diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index d0d432ce102..7837713dd17 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -7,6 +7,8 @@ icon_state = "corgi" icon_living = "corgi" icon_dead = "corgi_dead" + health = 30 + maxHealth = 30 speak = list("YAP", "Woof!", "Bark!", "AUUUUUU") speak_emote = list("barks", "woofs") emote_hear = list("barks", "woofs", "yaps","pants") @@ -29,6 +31,33 @@ ..() regenerate_icons() +/mob/living/simple_animal/corgi/Life() + . = ..() + if(.) + if(fire) + if(fire_alert) fire.icon_state = "fire[fire_alert]" //fire_alert is either 0 if no alert, 1 for heat and 2 for cold. + else fire.icon_state = "fire0" + if(pullin) + if(pulling) pullin.icon_state = "pull1" + else pullin.icon_state = "pull0" + if(oxygen) + if(oxygen_alert) oxygen.icon_state = "oxy1" + else oxygen.icon_state = "oxy0" + if(toxin) + if(toxins_alert) toxin.icon_state = "tox1" + else toxin.icon_state = "tox0" + + switch(health) + if(30 to INFINITY) healths.icon_state = "health0" + if(26 to 29) healths.icon_state = "health1" + if(21 to 25) healths.icon_state = "health2" + if(16 to 20) healths.icon_state = "health3" + if(11 to 15) healths.icon_state = "health4" + if(6 to 10) healths.icon_state = "health5" + if(1 to 5) healths.icon_state = "health6" + else healths.icon_state = "health7" + regenerate_icons() + /mob/living/simple_animal/corgi/Die() ..() regenerate_icons() @@ -292,7 +321,7 @@ ..() //Feeding, chasing food, FOOOOODDDD - if(!stat && !resting && !buckled) + if(!stat && !resting && !buckled && (ckey == null)) turns_since_scan++ if(turns_since_scan > 5) turns_since_scan = 0 @@ -336,9 +365,10 @@ if(prob(1)) emote(pick("dances around","chases its tail")) spawn(0) - for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) - dir = i - sleep(1) + if (ckey == null) + for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) + dir = i + sleep(1) /obj/item/weapon/reagent_containers/food/snacks/meat/corgi name = "Corgi meat" @@ -387,9 +417,10 @@ if ((M.client && !( M.blinded ))) M.show_message("\blue [user] baps [name] on the nose with the rolled up [O]") spawn(0) - for(var/i in list(1,2,4,8,4,2,1,2)) - dir = i - sleep(1) + if (ckey == null) + for(var/i in list(1,2,4,8,4,2,1,2)) + dir = i + sleep(1) else ..() @@ -467,11 +498,12 @@ if(!stat && !resting && !buckled) if(prob(1)) - emote(pick("dances around","chases her tail")) - spawn(0) - for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) - dir = i - sleep(1) + if (ckey == null) + emote(pick("dances around","chases her tail")) + spawn(0) + for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) + dir = i + sleep(1) /mob/living/simple_animal/corgi/Ian/borgi diff --git a/code/modules/mob/living/simple_animal/friendly/corgi_powers.dm b/code/modules/mob/living/simple_animal/friendly/corgi_powers.dm new file mode 100644 index 00000000000..ad945390cd1 --- /dev/null +++ b/code/modules/mob/living/simple_animal/friendly/corgi_powers.dm @@ -0,0 +1,11 @@ +/mob/living/simple_animal/corgi/verb/chasetail() + set name = "Chase your tail" + set desc = "d'awwww." + set category = "Corgi" + src << text("[pick("You dance around","You chase your tail")].") + for(var/mob/O in oviewers(src, null)) + if ((O.client && !( O.blinded ))) + O << text("[] [pick("dances around","chases its tail")].", src) + for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) + dir = i + sleep(1) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 9702d9b1abb..d8beb5aaca9 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -10,6 +10,10 @@ var/icon_dead = "" var/icon_gib = null //We only try to show a gibbing animation if this exists. + var/oxygen_alert = 0 + var/toxins_alert = 0 + var/fire_alert = 0 + var/list/speak = list() var/speak_chance = 0 var/list/emote_hear = list() //Hearable emotes @@ -105,7 +109,7 @@ handle_paralysed() //Movement - if(!client && !stop_automated_movement && wander) + if(!client && !stop_automated_movement && wander && (ckey == null)) if(isturf(src.loc) && !resting && !buckled && canmove) //This is so it only moves if it's not inside a closet, gentics machine, etc. turns_since_move++ if(turns_since_move >= turns_per_move) @@ -114,7 +118,7 @@ turns_since_move = 0 //Speaking - if(!client && speak_chance) + if(!client && speak_chance && (ckey == null)) if(rand(0,200) < speak_chance) if(speak && speak.len) if((emote_hear && emote_hear.len) || (emote_see && emote_see.len)) @@ -166,6 +170,9 @@ if(min_oxy) if(Environment.oxygen < min_oxy) atmos_suitable = 0 + oxygen_alert = 1 + else + oxygen_alert = 0 if(max_oxy) if(Environment.oxygen > max_oxy) atmos_suitable = 0 @@ -175,6 +182,9 @@ if(max_tox) if(Environment.toxins > max_tox) atmos_suitable = 0 + toxins_alert = 1 + else + toxins_alert = 0 if(min_n2) if(Environment.nitrogen < min_n2) atmos_suitable = 0 @@ -192,9 +202,13 @@ //Atmos effect if(bodytemperature < minbodytemp) + fire_alert = 2 adjustBruteLoss(cold_damage_per_tick) else if(bodytemperature > maxbodytemp) + fire_alert = 1 adjustBruteLoss(heat_damage_per_tick) + else + fire_alert = 0 if(!atmos_suitable) adjustBruteLoss(unsuitable_atoms_damage) @@ -559,7 +573,7 @@ if (S.occupant || S.occupant2) return 0 return 1 - + /mob/living/simple_animal/say(var/message) if(stat) return diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 6405b6ec3b6..18e9ee854db 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -237,18 +237,23 @@ something.loc = get_turf(src) ..() -/obj/item/weapon/reagent_containers/food/snacks/attack_animal(var/mob/M) +/obj/item/weapon/reagent_containers/food/snacks/attack_animal(mob/M) if(isanimal(M)) if(iscorgi(M)) - if(bitecount == 0 || prob(50)) - M.emote("nibbles away at the [src]") - bitecount++ - if(bitecount >= 5) - var/sattisfaction_text = pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where the [src] was") - if(sattisfaction_text) - M.emote("[sattisfaction_text]") + if(bitecount >= 4) + M.visible_message("[M] [pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where \the [src] was")].","You swallow up the last part of \the [src].") + playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) + var/mob/living/simple_animal/corgi/C = M + if (C.health <= C.maxHealth + 5) + C.health += 5 + else + C.health = C.maxHealth del(src) - if(ismouse(M)) + else + M.visible_message("[M] takes a bite of \the [src].","You take a bite of \the [src].") + playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) + bitecount++ + else if(ismouse(M)) var/mob/living/simple_animal/mouse/N = M N << text("\blue You nibble away at [src].") if(prob(50)) diff --git a/icons/mob/screen1_corgi.dmi b/icons/mob/screen1_corgi.dmi new file mode 100644 index 0000000000000000000000000000000000000000..e601d684e5bd587ddf5a07466eb6900ac60c79c8 GIT binary patch literal 12074 zcmX9^bwHHQ(?9wM0qHJ5x}>GMTe`bDrH(FXC8QgqLpqKQK|qmikP?AAK;Ymw-uwRE zKb~jzd7j;w+1dH*&dfeZI$FvvaHwzq0Kf}X6$L$HS^D1v#6;dd%sX)-i(et{jQtfH z{Oo*Py!~CgJOO~KlaYS$ZpI@-$FAvM1o|o^Z`$B4L+wNrsHZyY^ zZs#1|_7hRR^?Tg_aKc1&L80;VqOVDKo(yzGF-1EVwd!*=@kT(Db~rH>HH}fK7x2;3 zSZz8FXSSssuw?~#X4i6X61~fD3HciLpe@m(`;T_wg)gThTrY6Zb9hTMm}q)=A^)<7 zd4Ce(TZIU8Ug;JV@S;qudQI9BT8rDcV+b^E({JqIm2&?34!Lx5KDI>tI8L=b*40^f zUFatKGSr>4)flg)<7uJ1--R^>Fp1t{(73cM{)&%F4!6Q>2k)jebU`~0@{vz~59KYv%9c6mP1 zVA;sgxzxF3tL`T56g^C|TK2C&^6NGnu~4tRawL}14mQ^y!Oc?&G~fcDC030c#WsG= zOP9jbV<5~x`LVrSTug?8j*413Fc6L&<(U4@gl!pjZe*axDR&M8w;^B6R?ocxUw1WQ zbc3F5JB-@=8#^Q)eXlNf$%#i$<@|g z2jSm|N!Rw#^u6!AcG4W6I8~hF#1p8?RfB!*`vOwS@z9TG!BMAqISbh6QL(T_QJH&d zb&5FxbkwXZqO=qV4;kz3x{h91i<~OAdDRe2wE*zpDqR`_fS!-K z7y_`d29nIaR;DCd5MFk|Zmkt+C(tn~%9$3!v+F=XLFAs39_!bm;#ns*(atJcVL=um z?#GfKP~ljBT|B{nfWm%7yVx?Rg9^DnFTP%`vqE?i0TyAu$>BecdPMh+uaV0&3ajEY_Q$=Ab#e=z=Sn|4HW$ZA^k3$zV^VV~$(mv8#>?7Y@A=VB z1j5kmhdbyh8!&Is;^v3^2ZPar>Q><^-{ zV~?%-vjX5GhCDyTeWlz_!V^qEk&dg*jbEvURwI;A`}^v9+cr>>76mN(L~oqWwM!hU zBi@gfWlu-N>0Po$Q-3##Nl<0}1iqT5mdRwHsT)fXbK3Rc_!auD@^=C0%Z+;VMPC!U z=v(39MsoL68H6fZF;nsM2KhB`f7j8OjTZnM1ruV_O=s^23b$AGn@agcnCCesO)2?CP-{q5unE z_MG>p+Mn64HAUgfJ_Q@m`@aZ=oW+x)9EcCY2>ukI#dj7IvxcXe?P?yl(5rS>Ow_VGm=yifvK6DafpZOY`kc5SUwQG(P=xd<|TDS1(>#fW4Dne z!@$6CNbhDmV5T0sT-a<8R)*x%Gf8il*&)AJQjO7PGy{k+l&ys~4C=Yzb4NViAtQ}Tv817&`>5@*oXSLwg@k?&eOOxT*4I4&wTrgs!wil2$_eM6;Tm)cYy zwCSwnf@0iJ)Sr<}X`{OLUC-68wIsUZ0(H7%BHnaQ8cXUb8nfG`H$IrK9H*L4w>S*L zPUjV5QD!qtks6*N-Pi z0tlISxUbpfFyy;ktt-j4!_fDb%oJy|qor?J&Tv>GyF2HbbCJ-$00feX^NxmCPN1ba zeWMK*Pw_i4pR+Bk7H3}5WaTXM9Q?|SJ2y}5N?vOBkjpDpb7z(=*QDs*w05JbUixJR zkWNl&T{UQZIF?ZFQ>l5Uvh1}{6lCdfNm=q0(O)RR;J|YIZl?nndi^DIz8P1jhE6N# z%ct{{9X_Q|K4hl?piZIQ!4;&W!~8hq&U1{xf-Q-$l@us^Dae&c_FyT0uFAs5_@qp@evjhtV_ zTS4{Z9y%+es#5a|{_Pjzhsy>^tr@nFWmr6+vINkWkris+6%tvo5rs6qYw2@YBd|jR`3iVJ%l{E z4?i|G3bu382<}Q2l?yJqt*3uh{r$T-DD$&c`_k+IEJmA|=lpcRiO1yF z_Biziw0pBo=TGAJpkh!BC}E}lT`Lgx?JJT$kt81ojCkHRj<_DshA}}?E5JXHU3y6( zi#ECz;ZlbXZ2Dz76k+=gY+mtuh5eruVE*yRc*WZrE3Ck!{TuT@(n4;Tc5Z^(v^bVQ zlXgd4Bd51J7i;YaO-)TdURqZT>?HBXsRv`xshfLs?Bz80eZ~^Wqy6$9b^o-s8jsXK z@=Y|7nor%=}WLs%Ku~;2U8btt9P3^nY(B1P;><8+to)6pZmq zK?2oEDw1 z?rHSLPiBLEIy_R9HmJ_o`v^Cdor9`2A{%<^YvjT6hLY0RZ|_L0jW(z}iO{mbk09v2-eRBtp^z|I!<}+h>PlFj~(q!;IC{vLa=Canm&)e_AFU`X> z;_iIph-*4K#kjAl+lL1KWb*GZ7dvY;FiVH7zGe~bChi%%F_FLQt%qugS~ zZF2zzY461y52QY4%+cdq9u8)ma=C8>v`uRhSvZ~bA z-rIdb;`if2_-m8x`EkQ}P0Yf;b(fzLsg5V-3QWU8Lo&VJI^rD~_=gpkWCf`-?;^N= zcSMe(3x6K(f{zROeLn5NQ<1dCt_6CvxL}_ner?2jb(c^q=Uo7>Jb?M z&fCb{m3(dN&chmQ2xIqQF5YjVyNO;Dw)Vk1f_t#e)1 zpCBqDj1HF2;v#!RmtNtLFXkaKw_@g3`yaBpMvX0;OILZMHfFJ^(f-_?F`UyDiCpsc zL44%usK}O65(%S`lOmwdHi?Fpj^djCpJ7m?mY=;%Qn2NCYbe~{B0M9;Nc}|!+}Cz6 z`pIwG*y1sG?=aVjEKr*QkT5E1XZH$U*)j4KsW4HR*O@BT6ce8SoN-H|MYBaIz8Tzd zs#%a=iC-%#6>MrDV8Unxrp%_ans^(IG5gCsLtM8D5gPoONx=DlUG9tn{-TD-5PJ%% z+C?n7FeduemsB!mFrUEBN0rI?agyiXzj?plbiUbE)fG zcIll#mlxdr0pyn2Iygw~A|OS-;Z#2~v3esaYI3<9&TM;;@n^Cl-q6>T#y6D*FL6VX zLB7yjmLWah#MNsJs5WxJ?Ac{c;Z$-*Bm3Yj}yA6C2Gqv?|7?D^xT}*TXAuL?sJz3oP#G+jn{~Nx*vf~3X$== zd7wTaQBhIb3UE^se#txy_NDfdkWo)@Pu#t7FQ)jNF(f?*#`+2rfor_G_ZT)*xQCpZq*lRK#jzmw|*ZOxO6>Ayn;C z406imrEPhGLnc{H@n#siO3YsT&nTJzW-0~WE+oM`k4$aTjS_Fj-jI)yJewthPx$cg zy0A=UXh|!K=Eu>l^|*9ZLU%y0+Tb$do&SOgcpN=cPknBT&=Gf_yyEgOO7`)$WwNqD8JP*(+K?6b7& z9@YM|uwy-(MkQqsg3-L9v443da5nZ>R)!8*)b@c1<&7_(>o)9%XU&;Nq!)B#e*q9LyNQh}O zIQPBQvCI+tG!5K8-SA-UCQxr_H)*v!yXsWrc4$EMyi|3Kiz09)7&y==E&aR{2g41L zQ%fcgfs0cwQkjY_?|etVJ_%zN$I0!tUwd&xffmEsHH~?2lIG_?LD=x1d6A9S!;v<3 z{F*Gr1~CEi)Ba0iv01O=LGdC(puo9^(MgzxItHA5#_-eg;*r!+na;7-gihMk@c`CO zmq$Au9#b30eNM1!u_`&e_x0RUgSoHmL#Qt#$jO}?{JaH3L3OSz8Q!}XwVU&zh;G_` zbwBVO{gpDdQYkNWcg6#re53%jbL_5zOT!60pi=DfO^klxbbU-C_Cyk3M3l2wT|*#`tlH6^zzc zYc?Jrc~f}Q8w_LDuL0yRAc#~pnLS9A^jczLm>}(|reA*F6no&vSWa0qtU>hgtL`C|3Y~-sd}00O zJ3TL=2GsK=0W`C0_4yP7_&uTNJ-?urfq^#{HvgKs##Pp@09&uY&$(7vrB5PYrA%f) zgOS63I>&bl#+PN&Mq%jAa!)oL0UwPDgJhuxP9?&BHkFP$+}~du9(?oas0ZB0TiMU} zHIp>{>~s&Ol9#bwlVg?{`Kpo4R2b=PUOHV$-(9@pu@l2wkTZvGl9R!FztwJ*#IiTL zs3m(hr9#B49E?>@R7y%cXQKJqVRt0-dqQibRqK8~?wk8A_a}pg;J<&Thns8O5&_Jt zg5#EUG!LIwIj%P*z{n;)%hu?gH#xbiIsqn_+(C(L_IR(azh$nRDH-Yp+ z6kY_D_b`lp=t=h)BkW$k89KMP6R(eE*V2vAAS!bhJW*rjvyCAJk8Aj;aI_Mj@&|P* z@~%W^6NOlgBz3-P|8Lw>R&2G3XdR*TWyV;mY>f5TZo{JX_?v1}ir`E6Q~$C<>FJhP z@_sid%Nm6uv$8pZLOZz$tgw0rD_$ZiMi#SE5Bi-@!^mevWgsjrOQ-CUhD}M|k^?(5xnr2`b@C6^ z^Jp>FBUG2u6Ipm6dsFU2NkK6+(>#kH__TJ1cc)fQaeP9VB}(;^lHw<2GS%2Vss;I& zq4a30-KYQ!8JJ7Gw*7M0XJo6kE@hGNprMnzFm;-&#FOiOiCAmM=MO>M5zeFyn=2oQ z5LO`Z+rJjQj1GqivJs7qFOK2#4C)L!z{7zVV``f?wO-=FrC5ZLiw z#x+zuHC2V^-2vWbJ`G$NO`t#RZAl>O$O5jf8Jvkqu~_)~U)uB`e#Qf|<+tD;8|qiP z!*%a%vD;rb2PnkaNZqJFR8*0?Q$>k&@hlUD&OZHk=chE9@A?6cX8NUd*;V?q#*}@s zw$Ti{7obXX>cZXr%zi?zL4-}mUo$+Bv2&II5uM%s${fY4&Xz3qtmErDi8X6^pvw*F zxqz*?Nz@(ku1N0qj#~-rMAZRJrC?l^B?OGyoHYSCoPpjC#FS z%1ypt2n%VApL9u{KMbr8qxrS6q-$hU(iv8Dm3x-ILmP9~KNH0`MA?n2nx$h;3I^kY z=hK;IrruW@x53V&cVYm`5p^wY5ov()i)+~aXf`p!8}W2K^J_0Ec?7Z$Nnr%BBZYkI zpTur&T2Gq4oILd1^A^o8$c~T4{Bw5Z;_S>;047-pn+dnf9`@U|0Ltjv3u-DFlE4EH zHy?CTz)k^@azMCIP?eM4RnO6id6-P!KWa^c=5-!5A)bk| zJDg6C8zfMQiP68YzTX}dHSfP>_9C`m36w3SkXY21cQZT zr1f`@IQk2^yq-(C{=wIUb4tia4?lr8VKjJnE#}=FiF|4HQpoyV9a&!I zQg03%E{!6Lo=D@I{rnLfZ{iv(C`3-bu<@op*+UR^j=T1utj8gkbi?^-gS?GgUY$1V zX$9M!G6eB}m(2C!CP6*Z;d5CT+^~iu;!*Cl9In;MRHT5Ii@CRSEr&``r0~m+VoZxbVqu)W-99oVQYM zkwoqX$7*lu%2q@5N`5r#sU+z2`5sEoQ3z>YLK^e%KoAQj2-sNw`eEb?6G6DW36I%` zBG@jRdHw}vsSg1f!kX{RFG3$6Acq{ValY#eXztkW`r=;85vHuBuZoPgExJXG%&CLo zK2zhP@#*E;GI5z=1ff~=s#dv#aDLZpM4q24{Q5PrXPxENWYh?WG!HNORu;wlB2@sg zB(m7UlGHr-xxQI{=Av))2Y%Rn4jfM3Z&D?heH2}Ab#3MSF@NRFr)1Av;+0x996=$W z8flny;;dji-+W^y{IaLh7jb89W&yitilE%k9~R3i6D4sR z9Pb01>lYF<8n(d9haq|^@iDxT{94};KpM(&yJf z-n8QVK@iyHXzQ<#RiuzneiyIHkYM^Z&c{A)HoiM~ZsVU;Yybd0#()0;^xsNvwXDt_ zup2;@)_< z?U@x%;bV9&R0xIOH~8@!yw7Y%;tk&K5DSHzZ#%SYi0T+-Pxg&H$PVvC6d^?!79r+IJj0h5PYUML zUvHO*4n}DS5Na6CKtGH49jBv=h417;;@2AJ$V!}CFXO^jVWw8*Hpfy{ynJcqlfNsc zw6zilRUx>hFhZa6ch{Ih(s#aD^1-GrFZeFS&wV{|rd+77dUsJwvq+S-@c4Vl7R$eMP8}K|I|~^9xm4 zW@Ta&h@wgFuJ}1reA;{UFA2uV@l~IrEgoGy34EEOzbUtm5Y?2dlh5t~hX~r;!_$4I z?I@!$$|o(yAP$$IFSd@IQfXbIu%URJ8C&6_fBG;B8iBz0FfmnPM^A>a`0##8z9R&x zXdBnJQIeJCFAyHgHOt>kjMAv%Nr#Od$ojt3+F%we>sVh%(Ii<{*c@q5*xV9(CK*swgzxn)SR)-Ljx0b>9Ca4J<73@Sj|GCZO zKP-G;lSR^5RFX-mo>|k(txY_LkjrBgOc85}=&Ai?BB=w;)0;MQ)8w5~^b+-Qo7fYb zj#=s8slUTiS;*SaLI%|+UZRea~WH8*VlZa;?P)#xgxhU z8|qx54Vg-IF!T;Q3fS)XYXL-WHJ<${6TjO~<#auAdkn~1T+T6F;IfP5^omO%16A=8 zW4_wOc!>9>X$^%4e?^6C92XxKI?MpBtEuCyADd_k2c7v%IgBfmKQ7qwF=gk1zTVH= zRDK)Q5tRKq)K0TyhiNWtGyR2PMCBTn@qWe)i> zlAfO^C>g6#Wyb2eAHtH#$h=*#DjHqvDnuXpQ!{s*`=PT`Erp`8HwPA@>#cz9DG!;r zu-HU^j}TUK(sIsgU9-R}nH~6<_aMXpPz<}}$(IIPAI~afGny*0mJ%Uuy)MgLKHWbS z5~cFXa+Uf0P8|Re^gpbC`MNw_4~iXE7f2)TzW#Umfc}<4ZNZX#JHsDRjt+ev= zV`F1E+Fw6je16P*5`lKRW76TlLBd{!#yvmr3)=9!td$5yU(7btmsgiRN4EV{xw!Jp{I zUMbk|ee|6amd5GKenWP1T9dbG<*WU3G`2OrO^dVXR`8&Bn^+?J1 z*ctKxL3-9F3qqHen@pfhkelgW9erYtR*JeED~rTis@)Yu4uyQjD|)e0S94)R3F4-P zk~b2g;|sRLip*UQtKf5lWRzJ@>6s&9?(+v908zZY(u}mkRO&-V?cm>R!Xg{}`sL zALL&a6&KTmgoaY4P)&U)IJkRM*D8M1nx3l{ z2b#va|F1jKK51Ab>%^Kqgu~p^za<@+DPhBz=H1L4JVhHQ5__LxfYANTTLaHQ`@*C? z#$;1HFJ5r!B~G3@lfAS?0e)or;&KLUlU+hYaLg%F8x*YaH0RjaM?CFn_Fm+1&TrNQKB8PFcmZauYZN-TQH11sD78 z!E-nES_r+g2&QPyS0VSlKUl)jUXjt0Emn?Eu8fd>>-VDIi{_ONgVrb$BXRfAa9|et zv4w5~?0`Il?z!;U$nrlwmMhO@4%#^jBB;DC(jw={#Wl&{k5xb(v(VsIP%m>Ojzoi> zNSc-nHwB!0|2#^e5cS`^Yb^a=-0B5>+_J)8CNYp*eD}^^{PJ#3ThbXR_0Hwwd0LXSPsbk>N0vN}-RB=)!lZbmnnfyH zTN|2J&V&x`r{BbMSs{ba;OC>v5h=uyIk1>#P$imHKxUDaO7z}e4QE;`Zba!zi9NtSG`({HgY5s)^IsvVVYY>Z zL_WMi9;A+_zn3wpzp1M(bL}a6W6nd4=C)GVMXIQJ4ZhRM-jUKXg%vzU+`ybb8dXoM zuW~^plcQ^X2IW4qCG+Wgcr^G}_z7s5`Y6~2LaDOCf|>_a%9rY1Gi@4gK93Q4U$9fn z59YXGTpJF1YU&)v=fp^lofXX8JU?)Gc2U=iB2W4hG!3F|T^B-dYjy@+M0!)ml`((2 z?y^n1LJ0f!!z}WLE~Ag;lp(>?E@3CH1=PMA4W0V${|o*}wt9TM_b&t*Jeyk%EdZkr z!49qXMDrBZVBFWu`mBWDYL#vpoau@_pU{4qr}K}F<}!+ki-Lt(tUS4#2M7Ld1yISj z`|kx5DttmLJ+wpHj^(#~WSWTu6?d=er|u$X04C6bzycf7#=u;RJ`7Yy#F@xRuk2`v z7mH2aGyhBW1I!c=@TAREXgJ4JOo=x1(Yt3UCD4g6f|w{EbWrilI6e14dc|acmA-?$ z$*zx!zvMM8fMh&s@l?gAEAF1$Dp06TIE)|zc=5=+Y?Z+B4}Q=kM%IF1{A{IaPBqpW z1mJtT^7HPqVE#Dw6=tCSQv7^bS(l_-mr^y$1%Az~B6C?F&WG;4k-^0x!GN+$utOP+ zK$GV2a4^P&{E}BKl+wW zgrOFoxw4G7ecHhU98PbHCk)sbljzIMN~Z+*{a$+dChm}`I=Sx+gc^vlfw1Ml;UHlwt6ZP~7)AJW zcXld`o$oATV56u&76u%)@7?Vs6R(?j)1QOxK7kI}ZFrya=YL<-h+RX>Xq$d;JZH^k zPl6v2e`dVM_c3bvPDAZ7Cd8IqyKP>s`{zyMG$pt%q0u literal 0 HcmV?d00001 diff --git a/paradise.dme b/paradise.dme index a59937230f9..440516b4cbf 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1369,6 +1369,7 @@ #include "code\modules\mob\living\simple_animal\friendly\butterfly.dm" #include "code\modules\mob\living\simple_animal\friendly\cat.dm" #include "code\modules\mob\living\simple_animal\friendly\corgi.dm" +#include "code\modules\mob\living\simple_animal\friendly\corgi_powers.dm" #include "code\modules\mob\living\simple_animal\friendly\crab.dm" #include "code\modules\mob\living\simple_animal\friendly\farm_animals.dm" #include "code\modules\mob\living\simple_animal\friendly\fox.dm"