From 10d12de3bb53610118a85287f25ead87a3e337e6 Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Wed, 27 Apr 2022 22:04:40 +1200 Subject: [PATCH 01/36] Proteans part 2 lets go --- .../species/station/protean/protean_powers.dm | 54 +----------------- .../station/protean/protean_species.dm | 3 + modular_chomp/sound/voice/android_scream.ogg | Bin 0 -> 17264 bytes modular_chomp/sound/voice/borg_deathsound.ogg | Bin 0 -> 31638 bytes modular_chomp/sound/voice/scream_silicon.ogg | Bin 10953 -> 12453 bytes 5 files changed, 6 insertions(+), 51 deletions(-) create mode 100644 modular_chomp/sound/voice/android_scream.ogg create mode 100644 modular_chomp/sound/voice/borg_deathsound.ogg diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm index c192ef6b81..507fe07f34 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm @@ -323,9 +323,10 @@ to_chat(P,"You can only do this while not stunned.") else if(P.l_hand) - drop_from_inventory(P.l_hand) + P.drop_from_inventory(P.l_hand) if(P.r_hand) - drop_from_inventory(P.r_hand) + P.drop_from_inventory(P.r_hand) + P.has_hands = 0 S.OurRig.myprotean = P src.drop_from_inventory(S.OurRig) P.forceMove(S.OurRig) @@ -334,55 +335,6 @@ to_chat(temporary_form, "Somehow, your RIG got disconnected from your species. A new one has been created for you, contact a coder.") new /obj/item/weapon/rig/protean(src,src) -//// -// Change size -//// -/*CHOMP Removal start - I am replacing this with the OG set size. No more metal requirement. -/mob/living/carbon/human/proc/nano_set_size() - set name = "Adjust Volume" - set category = "Abilities" - set hidden = 1 - - var/mob/living/user = temporary_form || src - - var/obj/item/organ/internal/nano/refactory/refactory = nano_get_refactory() - //Missing the organ that does this - if(!istype(refactory)) - to_chat(user,"You don't have a working refactory module!") - return - - var/nagmessage = "Adjust your mass to be a size between 25 to 200% (or between 1 to 600% in dorms area). Up-sizing consumes metal, downsizing returns metal." - var/new_size = input(user, nagmessage, "Pick a Size", user.size_multiplier*100) as num|null - if(!new_size || !size_range_check(new_size)) - return - - var/size_factor = new_size/100 - - //Will be: -1.75 for 200->25, and 1.75 for 25->200 - var/sizediff = size_factor - user.size_multiplier - - //Negative if shrinking, positive if growing - //Will be (PLSC*2)*-1.75 to 1.75 - //For 2000 PLSC that's -7000 to 7000 - var/cost = (PER_LIMB_STEEL_COST*2)*sizediff - - //Sizing up - if(cost > 0) - if(refactory.use_stored_material(MAT_STEEL,cost)) - user.resize(size_factor, ignore_prefs = 1) - else - to_chat(user,"That size change would cost [cost] steel, which you don't have.") - //Sizing down (or not at all) - else if(cost <= 0) - cost = abs(cost) - var/actually_added = refactory.add_stored_material(MAT_STEEL,cost) - user.resize(size_factor, ignore_prefs = 1) - if(actually_added != cost) - to_chat(user,"Unfortunately, [cost-actually_added] steel was lost due to lack of storage space.") - - user.visible_message("Black mist swirls around [user] as they change size.") -CHOMP Removal end*/ - /mob/living/carbon/human/proc/appearance_switch() set name = "Switch Blob Appearance" set desc = "Allows a protean blob to switch its outwards appearance." diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm index db0bb7cffb..796db01e43 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm @@ -52,6 +52,9 @@ rarity_value = 5 + female_scream_sound = 'modular_chomp/sound/voice/scream_silicon.ogg' + male_scream_sound = 'modular_chomp/sound/voice/scream_silicon.ogg' + crit_mod = 4 //Unable to go crit var/obj/item/weapon/rig/protean/OurRig diff --git a/modular_chomp/sound/voice/android_scream.ogg b/modular_chomp/sound/voice/android_scream.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d3f179a84a152012941f703ec0dabd67d6e59091 GIT binary patch literal 17264 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%0D1XxM{ZoPF`Lr?c}_hd(XyE!e z+cy5HUXGonM0Z8XHBG^!h&SF94gSM$MafMD#A$gX!!Za(mVP);6cHNa*Wkt_t`iY` zqCZDLNzoVO^TrtkXruZmlVVLN=^4typV%q@)9W_@R3ZBN{BMDb)B0CTSRfOIxmuo= z!7L#vDm}BX^ZMQF{4joEU~J~Y$FbL=Gg2qR4suw2=+NG9mwF}#;OeN!+)YGRukPUe z*9*~xyI)$F6Gg>ejs-GM?%MiFN5 z8sDp5&rBXDPyWaeG;B=wGV@_Gp%n=>D-)zjZ;;>BO8SIqnT|zl{z+D~4!3U7epW|( z_M04$zp#CO7D$w2>aas62ygeFrFkXH9&Z|TNt>d!B)I=g#p~=_sJ$%l`^MFcQETrO z>KDTss6M(uE+V1Pu-e?S7Amo?X9x_up#p%LQPWvtc~@h4E{YO11sQ2t@>td&r&~5z z${jSz+~{DL(;yF&fFOCKiqOcgUFNPQj@mwIe(Xx9&E31p{0|l=^JSf1Vrmh-0GpTA zr9IwEPx17@y?5W|@Lh4!IR&{g;HMYF`3oa?tAsJt* zI4c@@@q%!q-lGlh7QaZu%|KgomJ|Rpfc^Oja49tON;n*|JL%b@16AfJoWke7_)=q& zlh0%;Dm0Ui$J+R1;RPvs-yxGXKvi_V5W4IyIWOAF= z@W=B8gBDNKxBWXg2TDlbm5gg-8*|$qZu~Om{mZ?xi70o8ovSD6;cNhps-xF$82358 z0-nt-hz>iy{ZQmw>ER zT4@NkSoRi~-o1>@deQj4k)#EIN0f4UUz{FOiTBM|c;El|yJE#0aU|cwou6YTdh)HN zgAH-_?*p$46!f)Dd6KKJFQ4`4I##5mAI7%KY1TYr18;muXiFQv{Zs&@VUA)=0?a?n zxazgs8b<C1y5 zil=n4Cv(1jynL80Ig6^Ue>o#Uf9jojK1Afr5^n-Q^s^7}P$6Wmdwu%w`jCvW_J?`)Isfs6-X@UEm zPV8p{?vaVLTZdbQk66~;vBNCQoOks0^7}IzmceYY2Fu4W`zl!W6WwRqo4Y}1vF684 z3zUu3ddva!z2q>W6~e=;>Z#2 z6w?v*UgDJ+`s_apL9Ea3RgU52BjLR_zi*#U-Z;K3@AJFoTP2@C8qc!||NX~PBsZ>; zQs&!pbWi*&0imuGNldxdP7hOZH?%G|x<2^5t>C@ary&lod$Px8PoB4)P)N&jWmkN9 zW^zO+mk+itIK7mLVWID(Y*Gomt>ujSwBtFmb?XY^Ph<8U+?g{C3#*tuUjrtxoQ!U?)R^dtVk$XuEFuDQz zvh!2NGHSz*Bg=>fE2o#_Uu#<$$^C;a+9` zA^g|GJCxYCP@n(Do!pD0f5c*O929Xx*e~7+{ETN@ahBsyw9?Vb=T#IMin-E`Ib$QA zvi|%Mm*(Axl~O~BpTJS(HzDK0G1l||OsB`f@lW+d~yT?HhYE>LEo-jJuTIR-JRq1AI%UDj7igGxG>zle0%D zOzmViArJGz#VZag)#s<~5F@d@S=Y8+N($U+-IGjZ5iNMBUQu24GQWcw`*0zQC(QCW zI5!+AmRUAXu3Zg)h$rg}D{0iD*oU^`?wmds7@GZvi5`Eoh(L)ak4xR7tv+~@yv+d; zk)|A15V=BBskz0+%Csa!DdG>G=#n9b$92a$%YJ7k~Wl_;Vly-cY6siv~K!9mFE+eM6W!ZexZTo{d=+(`Od9T|KvDe{=Ta zg)b;=TpU^Pg27ZD*RDY#8%{2}D(@K}0abN*lYT~;D2|RPhvpZ18rC1}tH)EbYjz&GeE5`1%0J;{5o%;b3V3?{`1l-&2H7>&w$>(9 z{}7QW+iq}vy?0A3j|O|CN#V7>7h3^ELA&SA2?a%DQ}I2{inzPlBd6`Zx~Tx}Q5p%$ zQ{28?gLR+WN58X~eZN5lxO2;;!1V;@rmr=P*GI=De)~csQmCp z2(X~gu!B}Q7RX;K=a~@p35!t~l3^OpLbx@MzDb(YBnJ3{`;liKv^^_!GtUbtu}mmD zKQedTEX>~9oZUg!SA}kDM>|U%aMy-J-v(MpmBWBM=eQ$UW^eV2H+Ln_J>4SFd>VZq zVx)BCd+YWYs=P9WC)F3Xn_W!Fymk4-TMuD7 z5azWW$7y7@dwla-i})W~(64>m+$6P6&90A374l~&PLV}~WF5TZE%%6ryGRFZ>KF>E zul1|u6i12|CLgRfH{&U9a9eSRTOxnWPVTt-f&AZ*O&#ir6OvWyW9Jq*gT16rHJz&W z)5y`Cf2F2x-q>(YkH5es6l3~%QMED}u^GLPSAipSFs8?L(Hz=^tRgY-)GwZFfOo}b zJxu-doq6vG8JQz)$bZhRYXcym;%HCdIFI)F)is_|%b6RuZ+WEeHJH8_QwE>K5{u*$ zm;q@UGym%0UFs=)1kT6YUbi%-WyIEF^wizWST^3u{#l#y39_ zzZhNaQz|2CUd`1x6i@CxQ4*3TKrY^UyX6MT6!Z%pI4(?{(0};LVw+!t#3o|VDVVT6h5&`$TJ?n zs1_@z8kN|Tcv-^BB(c<(BvB^m_Y9vCo&J!4XxtU(mM0`ZGFq`w_2woYhtTTsISl_4 zjU-a%jG9AexBhsUNDeT8FOK^LUVRGS-VmEuUGYzo?QkgG7*f>hQKt5@yg=SWWTMSCI*@;x5s&)bg$0gMG8 z=~ZXLTo>Z+e(?VO>o;SRymVAkT0?uLole~)mg7X=2a(NtkjpkwafSAnQ(e@Kzw1l8 zPL1XXM6q4nuH3@Xop0B7bjtpC?)x6f%w~u}y<|CUjjw7`{9I#-; z-mJoQ|1^0OXF%M_8QjFwR$GN4dI|>U=ByQQ`ih2%zTf@na37iKv1{|D0Yt#7<)%kb zPH1wBrP&G0eizRC$^IjJ1plwMjuOwl3yp)=abXxnL~bVWsIZNQiOL))^0HQDAmp=1 zL@o@S3U_WIYOR0xS=I`G;t3zw4cUZH&pX*SYgIO{dw85`b~q*QI9N$9gG|zAJB6H^ z**9cw&wg^S0I6dzUenG%(79fekoZ_%cxNy)pwa6lfgr&tg&ekjoj?UQX3`MEK>ST(0t zH#y@a6<(bKp?l$lYXG;P%#j!r)I+AlZvD>faIax^wF;O95F)q zYAXM6B(F9#Rd8;wXujwhD&a3t6RjlJ$ftTV)R<&b1se@g6n1eJ0R-8*a^A8o>08Xm zkUp?~x~}CVY3-RTS*>PvbMl(_2eCpc0^6ga|bdj z*Waxov13=3iZ?8-FqGb25jSskWi5TVMV#?7Pl>^%HZ)jBW?T{29i7v4&Z|kUsTb&~ z{$%j-V%J?FjBh-(Y-vkc=*5+&dpTIOr`)uNfmm8AR+@^VI2oIJ z`a&0dzAVaVD9wqU23(eq$(;9=UPzg^c2#4EQWke(Re$cX?qVE0`S6;dwLOODI^WOL zy7CWVuD?#mW4D>!w;D1s?Nk1ssFlJiOrbbG@@?gOyqX5EpT-=<0tbM&`e5#-b-u4- z#5F|V(_rAc`)cO$cYE&M7f<)rSSppfa8*@`D~){SjwZ?5(evsMzV2E3SO6tKg6Bb1i=^S`@J)RL1-*B&&S>?qDWxVaS==-0RE7; z7NEF<8^+E&ISL{(C{IU!^bqmA_Ju*)Wwywj-T(p8@3h@<`YsV<_j1%~>_x6Zo6~4U zTjN%unv{+<)YEYesZ9Hl+d2-80ySc&{h2FVVIqheMQ^_@w^v!rkiMH z01i!uBWst*AlOiWVr>)GI381t5v zIAYlMz0D?3AlsI*A^x-n@7WWBkx4t}PcG)M15ke;z^r>t*H--DWLn4uc?-J9m8omh zAit?VK-gBC6L(p8J_BgB!1vS@SJ8dg$2c92pwf4b)_Db2Lc|9J#-z5F4pp$KsD&aZEOtoGMx zfBP^xTW{ZTRZ`EzbuXZ>Z7Fa=cJzlk8WGR`s&=0!COrSv(((SW{Vw%q8_Pv$dx7RWeJg_Hjl=rjtu~POHm=RZGHowc$l&`0Bl=rJ{HwI4WvIAtD>Lq8S8sKe42fMJnq_uFiKFBI*D$8`7tT8~f7`o| z6lfSq#RO;W6Bid3&!5!)vk-IA!d2_`dm~LPgI}deTc@zf8By=ql+9H0&rN*Pn@t<0 zcrj4HM~quFL3i+tBro4Pns$HW6VA=r6zoVx&kraoidkcOZT+`1a&C?HTBKFPBTde4 zzBra8LG>^8*RYr)TkmnS*`<}swoYIqHnWb)q))+EPWRb@m&w-0tCoDhhkG2O2ruCm zSO;MR;|tD2Ll*rKa$HQZ@oTqA9$T(`_tPixD@;dfuxK^_e^yQvoqKzW2r7Q<;O+Bz z2i4x3xjGeSBwLguR^=OidtN;!kjl*|^#60aU^XC7zb;dohAnvG`ApTg1gCr-(R52$ zca|c^)IP!Vm9(&?1TUw3}MV-03lw zHV-*>xC(}e06rv#=GK1ywO4@?pXP}tomd=kNoq>8FIxCB!Aw}%&g(m@H`NykHmNu6 zAwXlbFqQsWRX?7~jt@dcO)$5b!y?!of?0+Y5MZAjQOOgyVM~0iVJHXl7I7S4l%8As#OJ&H|V z)@?j;9?U+g3gVnv5^q>}1l)9QUsF~@hrWuS6FBC<8T3WF0s+of7WAtH{MA~%rj8^|L9=d!7}gH1I=scK9HE`&@ix1wvgQ(stF)d)@T z(1QaVYrh})&+NmmU#Hc6s*EK!LAkKAh_(|&{}>z)$@r#Trtv-2PvxMYwbJy?NhTU_ zU};@P_vD~hqS@w$*&{w|qPY`UL=~T8vzOi2P6Qq8fZ}z%BQjL+n@1Dz({?rJ%uP1M6)My)=Wp8fgAkB%c|=u)$5bc#@Jl+i>ym_h((Ug^d}Hlnyh9VQJVy;|j+Y6p7aXzmK3B4KTLF*E z{$%^Q12fn6kb(KANlXp-j?Hch6xx2FBuWy#cS-k%g!UdM{)c#4p1md>)a-_^sU}Fg zD!I;Uy|_LsLe=YkCm$JXbwQR9bN5}f29laf60x+N_Ut+NM?ETcX&M`1xssz-i??6Z zDY}!4yqo)jYP<98GShp7o{+Vg;~-x3265WC7`YQX*ZN1ds4fzxn5xryHMim^_DI32 zxIOL0#jzt-xAW`MFOf>3x-sUlRuW80r=5Mycq~(`XV_lSQ$B3wrU2P@mI0Qg%9GSf zT3P=Lz!Qx-eCuH>H$xMzEjONC{&Da4<%}B6!PiFBm+}~yZJVU-fu)`~P(;{c^K6R! z+$rAGlC<5x?vk%9-w}Ckb<8{SR_e?n)aHX1oCr!GXZBz7EOxij)^xwIeMh99Sx2xF!J(__TBdM#@OfI?IX%lK^hr$U1xBETsZF!ch zj7}QIy`&}2j=Ssb$?$2$M*UMECkEe14yVc0q}82W#gC}?eRgIn&85C*+UKk1(f+CF zmRzWLqeAaVrjUqnC%pqo{@8OcTyG5xL23TB=b>Elr_VkwFPxetRV;D3%{$LFVOW3^ zkvWk=n!0$UMi|k~>KH+0;Eg#vsu0TJ4rj-bZc#*CNsAKtMtq|Jo9tr}Oiq7_zF&47j2=RPVAUQE46UHQTch>|blZd_NKf&Tft{ZBi;vYiz6n04jG ze!DIz9Gu;nz2w|tO`hCmBV8KfZV(w?T*`94r;P~XATZ~x(cNo*hgHX#azsJ@y$d4# z)@@NQq^_dHeNqH|oYcdOY@_`J(wA7#q9*KVEAm%UA1&5*E_~r+X%*P`_9hw=Ml;?S z7}Oo9OhW~*q(KV7c8)ulqOz6<#)bAp&=j)vHGF~Gc@eCCE7c|QB@So{tbe|o#D4Se z4!-4}R#xe5tU7*Z5gawFiJMe=TBq+5|D1bnE_aBrYimc;oHyqKk8|1G4Ry-t=$om zNKiYwW=6%pUtJ_Bik^J><^5)6iqYl;a(VH^S1&0hhIziLi_GqZ#)>eW%56IZcZ-k;uY%EnB4s7ZsGCpeNeKP3Ojkdh+a8>gKY&&aaxQpf94k-YD2d~qNP7+f9Fnx+5?tnMm&3)XnU&EaV-`>?pp?#X)uS<-dl*<(nfdC26q2XtB8kX8zg>zMc$bp#XQqhrLMjUT(ee(YJXbFRt{6Qg)Pr?KZ=4}^jgjKZGa z0=t2Twukia3~7M?#u1f*%8!hs#!`8eAe_AN!7veaWRdjfI-3-~YI@@V^QcO#3KDC3 z279%hl`~q1wpQjv?P#au#Y>2uo>mioqLVBe2NlmIvOEBhbT}H&M`k**~B~B|0?BeWz~(e<|8{GM~RZ-2tNt- zvju>c9Jot0-bl(J1vv1Cn=lkiP6ZC$_2*spTwoJZ(b|7qdua1DO45q!+)}o`sKw0Z z_u8e2HZ5)!Pn9oeSl8KV;14IaQZIg*lSz9Q-W{1YAB95VR(}eDrH}Tv{8Krb%#d_m z6r=XpdSVRuJJebpDlM53Tgw^7%G%^L3zCr_)2&U`gTmBRhlM|1ikGUqas(tw*}R1; zXnxlSMQv|~1P2Q>AyNove?ZMT3KyVl`um1bnMqHp|K#x>$nJM}HypQy$Tzbu&XL`C3U z<~p$d6`~*y6#K1rxDoyS_E%McJR>LK+2V+{eV)pjh=c1KG+Lp30tY&j;0`>1h)olE zyUMPj_-%=0mdNrOx%w}yyb$^<0DdEzKmf3z@M;+=Ap+DiHnj+ElA5T9Dn(lG5`l|+ z$6P0ACGD0RVw=&DC7+%ScX$V7ZTFfru;$rOOq5%=w>QJly22(=eZHjNt4XiUQUsaJ z@aIx+#ZPYTTitpF#-_Hx5s3@19wN&3o>(K&Z#j2#BeQPyJPAmqNk-}qeMv-$^MN6i zLgM`2ZrfO}x#!&GSeEuQu~Dc{uFWCF!=WyI($a_OnB7xeiik&3aC<(;1u%hM7VAymDSJ-FdX66?|O{==dJwdtnNR#aL2^Rw(YiO~DdHy`XR_vs(0m5G0 zY<&x@SVoRZ*=0Q1YDelnN~n2Wz^rhb1sw^=a|jy-X@p+QXwExwfcwsaE$rkx*a|C> zf!Zv3`!&%)F2V$0kD3s`i&*Yqmjc6`%RlE^CWzlvI8HVxKMt(Fc3Ccz6#Ja^ePJ-~ z>K@a8S%EaLvSLpd$!N|y+-F5zx>XK^B-eT>lWr741@O;st|%*Z_sW>*e3ZnCp{~im zBUbPmVFi@HCKX%T3HU8lH-hCkqE@jKLB@_lD*z5(3=HUfvkp_=h~KkTnTgSDivNd~(5$7nw56^>-_ritBlAffrJ|e-iW!eIK!Yw_}{6(&a7_FpQ79OvU zt@tj^|Eo`k9nz_v>mG`@tP2rkosRr~+}FY{k@$ zFmm*W7j(b!jIFyd4>?(UwvPyN2gu`N$tp^UIiA5ckG*kBkP8 z5m(E}BV(0egh*L4bb}Gwp$a#Av5 zCr_9OtOKBrBZ++kI5`-xcBqPMBsU&#Q6jNny2{_4m2AqtTd{Y1n07wp>!-00LGA(v zf4SU-Dh98iYT^A%sS}0qTfpnLt4>4q z?pR$XIglHRj3f6Ss9ZPGe0v^-;_=gKB#>pA-W+ttFoFQZL;#dty!&JvU-t>Ksl`2r z&7ldq3-^450f0&dv~r(9@q+OWqRe3!UKA9H48N; ztfDpCR^MRfPx@{xJ6~j*=u++?GHc4=fh*syN8o055XpbWkRT}JaTxrvNd#Ew65tV5 zz9Xzt7|pGqpQ7|@XeFGVU;>%|7(fAHY)}W>>oCH-4noGi0}bKi)NI&##GhgmN}L3o zU-WE|`yAfW`=cXCxmn_5>;w`Zu&$w$08{uZH?uYuC)E+z<+T2ExG)8bXSYhFB{(BI z0|9Qy_x=_$NNEeXZkMgEN_o6tA%iN+H3M=~3WvHt94=gD)f+1E7(q?K4!Vp_ z(qRBy9wmm)ffj^myZA?UorFkh2u#^>GDm=DWCaxfV#5}JF7t+pR%fpfo4p^b)4Tdh z4zfeVn?3W)q0{H1C)OP3j7u`MdWj7qdcBQ4V%8b zlMUWy%vbEBDmqRRaZfOUSxHMI7+`_^9H{?@1g1YaqmlEc5bN-hMhL|fcSiVAddfl@ zfaX%%>6uaw8c>=8Kv4Bbz|DLT2)Po&3i$jf)jW~U?Jp_>Djzyn=(G#1OT#k?%$t3J z@@er9E1%I-0Z;-I9ynwg&=47ys6~gqGcv6G>k#SyTBrv}usag0fV=Yp(kAI8z}YF{ zE+B9uHLM6yqzxT#3u-#VOdq|QlF!%(Sy1whfyZrPnZtK_PEnL?VWvm!En9>;-b?v@ z<3WHkYKWT|mwxIs*laWg`J>G=mzk}SbxfzcdC60U&BN%_D(ga-aoxBY&R}JN=UX$M zlLO@)P$Dt495IfKfD{rB=-COu6h|`wmGk;5U{5`?Uk^YQ_9?*hzz2X8P+6#bqOe>x zsd*~p%f~p$>T-?U^8j1NiuE}TLW?u56J<&S_7Z~ATZ6@vUy z72&_$f6#Y-{fbuj3ByJnz-?uK|5g)&aS>uletYK(z}}z-Y-U_BK;MYyM*`2mFpU4! zyc`19`-APT!CwULxs8I+kJ;A`)w8QhG0FQzms4s#&-y8Zk z-Jk}s;tX&IzzNo0=C0gutvmd=6y6teWe(xc{sQ2l`>Hzv0KLobB6lm0Q|mnLwEBe5`I56?kRu ze3i`_V7WdI3T!z841MzYpUamq)~J9q68vNF^J(y445V~U|8p{LO$Y>747x$s6BoIy zA_Y9*GT8U=z{7gD8i5XGObcA+f{P3`ZI4D^)dtpp{Q~In0^qK=*!1SF7!aC*U)|8} z3mpSkKYqEO&7Q4W!?CoUMRx7=Y$T+;{fiyRp&aj_JA_@04Zer1lY=c(6mxo$856Y6 z+-6fRqzM3T~eov2dQX zI@&1_Hta|pFt_tfQ+Bgn7#x!0Hf&H;F3(Iati1&e+4RS46?XbJ%aTX&+##W+DK`L1Hn zU5F8oLUn)SFV^f62qGY50j--s9oUU2BPz2VdlAqsB$(pxp>p?&KRbS|ODiA_RssR% zVO;{1uUrm)t&m2;7@^v+i&r25DtILXCldMpo!Ao$Xihv2=6~v0& z;a`O;KsmuR9SC#Uj-j|gy4B99Bj#(MEvx$mZ5d?wBaRM@C8*zko8Ybw^mqYo?5AU5 z0@qz@L8=rY^&pFO!a@Mx2}S=2c|e*HF2WHEV))DSJoy6M*50qZ-+OagyFb^Kwsv;5 zz8z`0m-VICsh9sW_x_spfs+*ANP{6{q5)t$OjA8z>=GR61~JZC22-iX!Uj%Y4dEA; zg1}}j^+M>a+OsR4DT9-ib+OUg_W&|9p2$3cM` z!HIzUQ(?rvkXREUpw#_o|GZh=MIhT# z8dC|qu{R*rx@*8+JLWqi?%TgCw7WMneEsn+Ii0X=?`TcFnE``TYszdjB)|qB32Pv@X@8` zHA9_Zq+l}Im96QoDoal%aC)M0I>At3LL7BWp@PDFAC5;nw<@KQ}--O1&&>yCwHs?dh)Q5=E z)jZXfEF)XD0jAy@|1#hb;`22#KDDb~f!V?u;I5n5;>`;H-~V(%F$}$>Pc5f+RF5JA z+zca;V1_=y#ANLT*-6z?F_`|PP zQ$P85b?L)C_+}u% zhMB(#VLh6-hUk?9o9NW{T|tn-sT?5f)HOKYP=^Nj$QiEK0Pxgn zf`|c_d1wQn)-+WhyoAKVw%PmMM1ad8$9%vvnt$ny{;Sc$+T||*>|*txrW1xMH9qVy z{BIz$0@TVnHi}HxKgw8YY9Y`^(yT*D&4oJ+0&J2Mf6MJJd_5St_|W25k1=u$fw|6$ z^KPO65#-+r7lPmd<)&5+k~%i#WErrb|2;l=5e>)JX=jAtqhjWU*|{P({Gmm3n{E@^zk&z z!o1IL(6e5t4YyKLmv#`k$}e0zychNu@(1?SraNL3Y6`eu!7tW9nlG5=*l9C)3|{_p zdQ>~AB=j9cAvFp|`o{E4tO;ec}_(NLD*(+XeuYpJbxZnRzOHTq1)%X1!gGsXd zB4n?GP-II9(?XQc@-0dzg(9?BBAzG}MMadg)zU(C**Gi(@=m+F z%`Lr4_?1bFT^g7TGVSsPxQ*o4_PDX?Xw^jl7fUQ&6n?o87DQ{)`d^*8R4EU5zJ`p` zKz61v*!Z&N6cz-*oAkb-CPKi<2nkBpQ=SBH4QV4juyx#Mui%UB?zV_a3qPJ`*qZB` zd$R6Q*aAZkMM#$fqT@;xO`Rfss= zCn7rtNF$#yj0&0vT8o>O*5g1W6!It&a7FU&BJh_uqmTPW6t^zwzvU@R+!6NboqZan z1brUx53vrFY`A^e{f3IR>JEHPJkV zWIn7Bn9I%lI*MFk4cAfg1s2eN2RD5f;|L&+xBdAgM&yE-VT8e=AX4QLWeh2}s^`xKyh2Rn+HuGt`r4}GY9Yv5a zs(|Df4zy%YW2KwoKbxA}^;;RoD!ODG7E{!BF9GBGDKr8% z%B`b#q2SB-1rEvLOD!J56)~KZ7V_G?J|cXt!TyesW|KRTKL>3o#OWWd*WtFjk(@3R z(GiNyWd0Q|Db#u+VQ=^Z?}{^jqsg6R5)Hn>$cG#TXZ@Wliez&K!h6;d89_j&H^9L~ zyNJ~c2YE7^!cqe_mFA#@^!&Wo&5V90(~z#9?3pb|67kDWTKreWDzwn7Z zqm=VYy|?Fq$F+2v6tM^Nk*jT&-8q1Ez8yvGXug0ELg=`^^h4k*QKXskClt&Q#DIa= zBoUueuHzAt_jH18z{6I40Yd^Y26bWwuHVps0&LJ@ePVS^~8%^4Mkx z5`#_X2XHlQL=p+l@>y>bp$7%?B_pCpNV>RU;BVl!4_{m6{hX3UZ&Qd08~Vb1VN|I4 zgPRnsc{=vE{!#rk+w_9@^KG&`2di}q{sAmS3!6hjTGy8F?;6BEnA;-8r7g}-5z zPyQi>`z745Gm1(=%btRH1_4ju=&$03y=#TUdm_1<8hLl#KfC4z%)Kd{A61uX!XVbE zl88sr=l=9PA-6SeZ*EpU@X>fH53xWdEd`Se)k+`vYRWQxD8kP<5V_kdQKn73f=l)DaC*DVvATc~1>t zhBfN$1nvU4r6SKRt1pzfu&GhEzOeEg>e-HS;fU`&Ut~_#9@M%cBK2(pCHYA%x9~Yc zf}FD7aWTBb58`w^BJ!@=x+L7fDi~sn+u;~8&_Wk#IW1xc%oc3KR3(@$c=)vkr!Yse zVj&f_Oa#@~Z|O1p$02%wO?dev@>juMdKK&RQf6my=PFWm%k5Ol|6S=A&_iU7WYu4_ zG%(-+7hgVozj)h!OH=4(mab(vH;)|d<%L4#i84t|He|{nB@8_zuPRav<$od<~7zzO`QD9*iy9Q;x zZzQAwo~2X*)UM95_y02kTJ4|Y=b+wZE)1|DQrRXG`-kwA?bjVM`3Cr`C>M`F${Br} zJ1x5xfs&`9cSl=yyW!=acVpL!&i;i*?HuzCDL(!DKuL(Z!IzHK7uineks)uglZ@#~ zxXbM?1M!(0G=gwkx3y$O_C2T3-{=FkOEkLx-{uL_aDBa>qm=Wl@ z94@He1XTwho>HB}Q9K+Cp2Z@a+aVJNz(! z=)}v)9N!Mw`NoA3rT;v4E1igG3sIOo(NufqBArSC9JV)=P?Nn1ny0{aC?Vs;hhAL) zDl5}A`5ff%zV+ni6u)(4YSx81b3L1}Ijgmd)TB%4^=Kd0T($ZtEtN4J?W7Uvh2k_E3$7~nJ z!xR6XGr);dIB?DYFJ`W~*v_TXf4c|9#s>!ny2iS@+Wz(ojItgaX^h>Y9dVMIRjhrv zR(+T1=dBx3|7DbH6F`@f3t&^YCH;wU3ZlnkiX-I&5C8{dLI`er(c%)$45lH7ax-4& zO6dyaDcvt}4K!MC4C;)aARc1R`2Tp4MdB3KWSEb%obQTygdDtqBM?hg6&6UpK$44G zFAmo({HnMcthJBmzmth|Ap@&13ZH(R!Z$X@ZNeUR>Tg@j_fS5&B)1Z?4_*HSzU-%Q zI2%IkN(qVVdtVxVBH;tC%G^iQKy&)m-OMSjZ^wy^%M`p7hGZ`qm>jTk`rz7h-DvjN z-;q>%-Qs1uZ&9Y)ggW@EbT(pCUICLmC5_}5?tuAf(0HO2=mmlEN*c7@xc_Aa%YbP| z4h5&C+16j**Y&Fl+9!%N8DgMgJ0!9Dn9M;Xwe*+5*?j=@L_!J%6&Rk3`bQkEh8jyw z552lDjV+567kQ73Z5VRM`C*O+k?I^my4dtZ0X2ZqQF5FGh&uXr@&sp7F&sL*!b3Q^O72at8{UJZC< z^I!w0LL-}~B=3ZXRf!NGqbDIr?^SXriJ_qZ1_C*7I8`Le9-W;VZ>g*MdBwHp?RFaK zxW)D7a15fy^Ih1h%SHcbu?|ok5p)NI#4Ld_2ROocW$`kg`o9C{B)3C)uq+16Ro+bZuO&rDtoUi9(6XZDzL_vB%3t+D`@A%DmDB^0_OGQWHW39qJ= zT02vaeWxM3aeleQx80xBIB3QxaZ)*;wf!E<`poXvBL)-zoDa)~o#mLWA3`t92|5ZRPYR9uKYH=a?&SS3PhY)0+Wx z+4P$w+i(1dp4XnW>@p_@8qc{FT;+vdjR2}!E}n&;Y5H3D-D$V*&kxa-fa z*dVv0mp-g;Vgz*@?gBv za2)Q)*TjE&KlX4YAXY{gYmB$}Lp18%RYoPAKQ1#RUFYj7t^y1F7bbKA3&NwN;GF#S zZtTipnkH6RvCUL_%Xlacut-(E~cV)She?njwY3L%3oe#ur)(DY><)%bjn zL;GhBE(hmypEjyk3_g`rSKFxR1;lv#=0A=C_{Y(uZw!iVL0shYg5p55KyujxC}4sMw6QA}vf^8yf_o+6z$3kcZ^YP$Ql!O;yg)Ihz>a)b zmE3gsbol9tr!npKrM~9FQ{-9IN<{ief`iSNfXsl4l+0NGJ>h?06PQ-Zwd6Snpycly zz67URheKxA2ukwQ=cwJoERNGMwyk!_Py0H|2P5IAn~Lj?!8$S^4C#z$sGiZO1#244J@UxKk3Xv2CK zsuI08BU68g0DB?209W5l+>gj#2k`pn{lU76__IUQ{I7ALP9qJ~8GytRg9DEQI^jNH z6fm(f3^O_4y0_xV3A3rZ`N{7~`LY8O_EHOzDGcgd8x@fUME>9UFu7PTc(V>rI6fZu z*kKELm_!VxY;mBe0w2T9n2CIr$EP@*j-iyH@Cct0ZFEtZ=N|vGD0-22T_1ik=d7zI za4K2m4;sosYWglr=L6OrGCqwb{*fe^zgvalA~n6h9U2>9F95jVvl$-cFLq%r6`!ED z7!o*ydqlWLyW0m|!MRjMBy0%}HFe+{tXQ98*lnArp#Bx#0D-gNn}o1kSs!*}ro6RR ze@$65`&6wVz*-v$DGd1@?}TK76bDNRs@aG9iF}A$UlJ@tydxK52XoN^cZ-v7(_3z& z44I>dORNs2Yrasd7klVZ%hFAufx}$%U)=Qhka94v`xGl6wApC(3|?PsbV(TyPF)NL zLo6)I^DbZqoWa4X4FZl26Ad)k!N&K|wP~ETgj~TFtd5DS6B}I|@iiKCvg5Q4Zx%^B z-Z=3q3aF+la|bz0U*yCLgb{1d1_zjik9grPVPpcDfR&cuY~!BQwd|{7D%;mUN`6b3 z+Sm7Vjej|}0UpG*2mK`f4f1#ca^G-{2k@80*5UoA@F zC%-xW+Wq=9>{QZ0g_EG10BX+-=7N`0fYr19rh^KB!{Mba2OA`R_u0Ro7da+vD0aY1 zO1A#Sv4XJBA8-;7*>f86GvlQ7kdq{wpt!*ExG8MG%h2-ma@VcF!ZU_&?sllO4G-Pv zt#+S|PspU0=-<2G#1I^(PmvEIlFi4rC8p5J)Q+^j+6Io3;(id)Qje`z3kO`vgYBzn z$_P40r9U)6$(}SQs}w?}=ZMMWl+<@`xgljK)>-beN6<+j;HB=LLcZ}(*p8*j%V>JR zlODiHDRHL&s3og?#W>aiec4tGZ^y^-Kuj$(@;UdPz-k0qL^N>JO>c}MzLPASXoXvc zE{xU)GkAF71-_o_y0aD|lZrw&ghDl66|>;%^lln0YlOD_ZKNATRPq-3 zx`l?^cAHO!og1I@?HtZv@8#X}(E}Fo7rLei%1-DD2IGW-8q9an|0h-nNaIWPE-Zl# zhZ^xEN-i9zxr0|8eX4|EU=bf<64n^Lmel)qJr7a@y!SrnJTgCd-B{_|C9q(Rkj3zK z4MbPood(&5klLF)^^{$&?iSp`W7**_At7m(o^Uw)wxyrw?u5ArIXexP_buuc&TGIz zlSb(Pj1Ll?rZFJCe<6nS2bLmbAfZDa{ER^)O6o?{D@h*d7ZhzY(#K9Z;AdnRoaOY( ze^{Fx0$)`CbLAG1T?kJW}OsfUKsAHD{J!SR@+n?&eU7Y$&qD zh$H0Gl2f(;F9w4{O(O6pxE4^4^B6zgB1;+_SHU;MEjTjw>j_+-`j`WYI(qI;AHk$f z9%b7+M_$%?5imfB)j|9?+Hd|X!`N87J3Py5DUrdlYG{Yu0ccmi%J_| z)~Og?67PrJX2D*_>3rGzDnRh*h3y{Do3Z>O1FtnXWJ3BX8#iM}QRM6`ki}#gcj~@$%!hzV z>5jRD%@}f|auEN$Fo&fTDN*HmIH)$vaXbu%UmPXo@N*ZXynSlfNj@Y$r-0PrUVC$! zb1g-z>oRfGu?Dic3$tlutLdxW2mHKQ?&N@&T=PZ1|1$xXmC(pXK8BwP{{4~&N@g$w z!`mSHsNEy$i5NC$)`CLbLxO^IM0`|FD$Cl)PN+|!8QNZ2i2l#8Vk?*YadbTY03S*o z5TqhPAthh<#G)Z>3|ddSEm*9>thaQwhUQZYJ8H_E#F_^sM+A-?hA|ANTbzWAZhTBV z*}^Cc=bU~L=a`sUX*^Bx(~dz7hZ03Hn9GsXL5>d<>!&Xe6(DnQC$N#5g2E(t`G*pU z)OJWUyT-1%B|9(L7@lUYE3Pe!nuLm9!gIaT@DjG~QoN>yB*?kO|0bXkA|CZJD7F;z zP@jiR25~o0iQ_|-EaynMn@OeTx<$^34H89Wphskn4SJ`Jm;NG)d2%$)>8T7wF~{>S635@ z5eB?%m^LBB35xdcAUOwR5KmEvgk<%hFvubJRtX~dMUew-DbiR$A+3(Me~mM{vwNJj z@9O1FC3Q%p!xT`9sA~=wd0%}F%FOi8?oQkZwcb*kOaur)Nc6v+)#u1LC~JV@WG%)C zIcT2#C+bK+r1%xSgKGidP!`3134?h@2dBXE@BYI$j!d?fgHQXq?lcbyIaT6CEzt2v z+5L}^SUcq{@Dl+$4V)ir;muHZ*0(}@nb}Imp_tO;)Ge?hI+d~%(U0sV?a;OBI|1{F z<=|#K1_c^jV@dy`KrXf>@g{hHB$XC}_-SaYwpsdOz;sx9_Wb=utqm!0wk*i$pceB7 zh4@8?9w6t(l^iRQ0q5py!`T18k0NJ&anM4f=IVdKe&-u!s}r%xD&1iKBI=&4zz_fV zBMuFcZ|2B%=IefZMdxso!;w3gS$CV~R1ta_1ihK#q%GypXepwn zhvJ~{_i(_kXA5kPPX?Ah&y(t^!5-XbF*^7|iyuW|1|DQ}D{?uAV!dP2BIE~6s{JWI z?@sak3vdCr5WkGpOgwH%7AfpH@hsT$iUby^Wr}JsAjuoNC9cmZKp1;2w1zr<8c04z^jbm$T zJaCEv>Zqj#Cgu&OKSBN(F8{Poqy`s9SdmwE6^DeC7eB-a;PGeiCO*n^)5TD`=yFUHs$o5K z@7|7Y6Z!{m^R@WezDyHy2}u6c=_0pRMV2U1rP4mk5z%|=Ox>u+C{Q~GNKUBZ*;{QA z6m@TASxcp}dbX{oH!hRd=PD0jy8T`rME0X8kgM|`grqMuvs?-F(q{Rt{Z>L22!D3u zAOk!~(bvO49y8wkrzU&!%8aMp9g}_5>mgdOMv;`Hf4rwKY;ttzBcmdy{zE>7&20m` zSXZC>7r$QB^d(z4m|CAH;@D3I18Wa2j0=6%4R@f-Ys+v`g?%StVJ#%9VIF4=r3r7$ z79f({dcunN?E=fBps)ls0hHwQVxT*~=5(~q;Tx`T>7m7+Li!%rpVEo~(=FFz1WV9; ziffjJL>gJ3MLj?UAvKX2vXNd$%j6PNM7rd3C>NL>QWkCY|HO|Q^MpyZ#14l3&)4w5HUjB z=9JR@n`2*G*a~<^-;D&0&f(~Fi^d>@d$MJTrO;+Fvtq@hl4T82iI^md z&W$K@AS+mh-;F$3(U>=h6#MqIcu7#CVI1c^US;4?PBw}0`ON&bQc%n=(EBQGHs|X- zoH#yxAGx{7Q65=xwXJL0#fQfCzJfPoD81POYe6r~9r(K+=JHX+Oq3HtMTypv(Ys@u zW~37zUK}wHsXkG*pO@)@+4U~u>LjXb-wDB50X0ViAe9DjTjCO_WG^lU9%*wZjn?Nu zfU7xTJHIfPN`qrxfNvvaf7Ez9DD>S_VD~eDDxob#8O$)`6Bm6mvEd zS_U};wbBe*vsRbc4MU+A=63ZH_mw@`xgKjVz8m2WqY^(Hptp9_x(w&f9v`m%NNPK} zvikDupVHfW9Gyzu`Y?vHTSd?`DApo1Qcw%glN_i~B1ptdqk_^vX)<@9(U27vvK+Rv zl?x0=d~@)Z9jor%;_(-6G3o z;yGDuWL@b4*Qj84)ahFkoRD4VIM+mcwDF`vixky)VIm~_-;qtw5Jd^N6VdZ%*B-no zK4@SE7v$uRHB{tN4=ak8@Sy<_1MyM^m6_zt?Q1arodFw^r<^UB}c`zxz=x>@jX zc!7OI=pUdlFoFHgSRphez7&&KgNLMoe=6lkY?2p*5~>^AOz;qT%)vtdq!Egsy^44G z7I4h1xoC1)?!KI+9Bg2Z0|?(tWj~oWS)N!1ulxAjYcO*irmIns7YNgh;m{8zaD@t1 zJWe6-3Gq#V<1kG;cOHP%q3eICcJV_sx>kKK;Bw|BrsfGys+PDy;&;Mm*Wp=^Cbb`%1uK`dCn>EMjDsmAtxe4*T#& zu5Fm8$6x@&gJELOkU<0GX2{f08ut;eQ%sXYjsoVykLM?$BUQlqcUxrzoO#S}H%aUR z7s6cxn+WrgNf&&Iq#IWwUoXTA%y(j1h@gR#K@#Lyw6kSZ{_d~Pcf`L$TN#l z40o_;Eae167rysbr<%HJ1p>+zc@CS5W?5J@irW6NaA&4o?(4~cufloBcnFm@`KhXT_V>RJF^`;9FI2J5WrUEr0T zy|XD-)CLzIFK4@Z-o8*DGOMs#=l15<<6Q842;;;P(2-g-x90su12E4P&N1q5$H5pm zUjCsf2#laC6OdE3ew>;Iq-BtIC!UM~QJZYInFWGYD76o+R zbkxLVtVLvtI2!u65q~fy3`WB1J=;sx9d3?@1t<@S93|rR8|K-}EX?FyGJ9t4zNL5v zZ0a&Q!S_CUuAGYM>M2GDDKyBxeXygF17c|nx>F~cLzd_(6{ zM$xcI_NA_oVKtcDByJU^De4mK%Pxu2x1<1inT`RS^$B}6uLnU-PE6-Qs{IYYg`1f5 z7C@7VsGKzYICvK%qm(kE{TYt6*gDRJ(+8z$efu1BiwH}ujaKO%IfIlAg z^@yLTBvy8eitb2?+*A*&hmmR00eIoaxWCl%IJL!T*$oLl!QoY}-d#Y4;yqz@(IUu+ zLE@)r@b$B3k35it1b$8AHRvk2EAS1wci44qD=dcUIo=4!MON>EAH^Ilr)CyVm~x1) zQDJ!UWyTBC@NViABjo6sR7E5)(O;=vmy_n2acI@1LeVBeP*o>Z?cW!7r4~SxFLY}3 zdljL%Ednk`m1ngM&*Sm`P?wsovz`YXXT%t89O<}z6Yj+uE*!h}%y%&&H_;qx-9c55 zYfi>HcN2e&0d56E@XJg&IA7;&dFc;K<(|OB`g!E_?(HfcHtKH&B{k1dI3@|&&aUSm z2!@e#ev^_tu9$H6XgM+~I&lD|yB;9Fs;z`V2CAzB&L8Q<$|xzte)MrZ*jbkN%LEPi z0a4j~y|O<7C)iEvK3`r)l%Ug~>PoIR@F<0@yd8dCs`NftR(98%k9Z{LrHAP7y~q;t zng>J3QyRH6P4H|JFeLLZqMU$5p_k91#uk*P| z*-t~C`qX%er1uXIlz3jYnt!_8d}eB+#j9;c%|Ofd-KL;V)03r@d2;?BDb| z@ItaZ_}!!LT{VdVLU!ia+eRwVC*JYYP{Z-kG}(F}c2+J)iJh^r2Sm$5OMP_Jp!qIPZyKz*XWA50xos??dNvUh zbB*)u+4GhBY;cG*DBmuslD1Xg=FQJ=t9{Dr%Zx>@CW0ThZr>|}ta`^U-rxt*_yj&~ zV*2g3xE8_m{i5&8ONhR>RW~Hm+ZZBNbEt;ah^89bhS}>ylh>p^-1mM1mDC$(`AZcB z6;$O%Pv4ZiJt>Zh5G(6_ImeT9hMG8iUf^d?)5+4S-;eb4|DenVHYX-08d|d5(K@?; zlTfGUiU`|5J*G9)Cy*wIp5}_h2I)v8=ca)J$2=@BvF*}HcbCRf3e}QXuM3L~PI`kX zA|8cDXspx<5w%jIpuT;vt&J_zpG&~eZ&O+)5wT|G&|XBm8Hmg?IO*ozfFJBTvR2xxay*xU@`JpQl>xG%5|Krq+l!$c3cEtqK;TKPa8t zv|X)A!RPnUY@6juElw2wXUoqEC=aMUnAc9}P!LTzZoKrBvYUWn`GeN*EBtHgU3)Yx zFo&0LatquKKLL}$fh!`gGg7-XsAUNo^>x-aRh6bcO+I1QqaB?|bvk(Q_=o4L=fMl5 zyj|nW@vXtP3ZURtZbV=aT5{j$9aY}vA+^;zl$%Um>B%iqV^$K${}rZdyYM~rxaz{* z>1Chzy{(7J?j8N88?wH~Wwvn#;x0!UTtwKzPUe zc(kt5_1w@_MJU@O{;*0O>H^3MlAmZ?Z@k1+QH`Lb)A^u==)0FW#4cmqAy-%`nz|2EwWLi z-+U%>@qqYQ>J|z;&+2LJ?(^qwDICk`ig6Ec)Co7Ki}-a;61|<3mI2< zbv#8OM>2i;%3YenS`pPLO*)w+%NvA4pGdsftW4efK4ry+(5&P@1x0>E<#X9%m+q9E z=F@RJkJM0N%=Wu4V!Tet{pXSPpw4Zl#hk&6E~JBzpd;OQyC4Gm&fi>S2mW*N*F7_C z@7`8i(D@RxHtfBf7_r)iYeC!klHEn|YFjL9z!pC=?srOvN2GrOOs zqL-OB@b^iFraWVRN@iKddA>UqR@yUYn`ME2~2Y!6& z`1p>eNO<{a-XBkc`qPD9W{6EZyX#h}A|;{sPR1})A-va7S0y4fzn*)o&Q7+vQM;C|otMfDmKSqms zgjt!AbA{AV$vtS75pAY>{)Z*1-@$VJ5xm$uu)&0MX}7K%UjNn3Z_=^jqi6f!RL}3i zcIV%6cP;nf-_NbLB3@TIZ=b)bw7Azw&zx^RH#bU(QEsiE7#_^2&|LREb)osj^G*Fq z12fstcbA}*gE33_Yc?!jTJc8Vw546QW|q)fV87E%guIJS@RG|ykT>9bdQsv7ZV?r^B= zjjx`QHm91B%DJ^4?|HZ@hu8XnN%vG+tY{XEOz{8paQzk2X!2Y8c+w8Jt3^n#{T4EG z&gpN`8r^s>db7gY9W#GKBKvnPY&c7iHbKRoW1l20v)cjj*IAtgE0-m!)1Sv(wzz2) za`{nYGcR(9Pf~6lSmt+I>)}_EN$zOVYHI%xv8L9!DspoaP}zg{^b4LWg~6FlKQQ~2akhi5tKq5$>$=HzQN}z z&N&N-d;H}?cI~=q88f|=nsg?HN8{wjQ#%i5P?7ecA-^a55d#`2f#)y1tMm{R@G57V zT>QQEu3~bD-J-gn-J9}T??u0tE=e;FQwS-qHSbXT@!U>$$`N+V4r_+18YiwEjG6IB z=zqYorAkaO@~U#Szx-vV6b}W$;bVY9*5Mg*o$|4$MtTjC;fEQ_LO>foINgQuttZRFp2{->jaAWL#Ag zNbB!Dd#s_hFka`+Yi@ek2ucYr0zVe!Cr8*bY zYq2Bil;+gqm*Ip|8x=Y{Q3j#dv28`*t%^=_qh zari<&jP1j!b}n11n@>c4G|=`M@v>GhDyG=xS5LU-&8zR8V^a0xJ!XQcJ`1e7m~M6T z5CVsitX>J$w)KSQm{<;-lGau(CALH(4~5sg-?dqB?LO4CTY$gW;Mk5PJA;vRX~Exu zSG(Td#|Z6wFPW;l_r~D1cB#=@$FliP-Bq&D@^J3{&)BTn%w>;|vk<>l%KE;`xv~=b zk0%+rlzW`)`})D7iSH*lbNy5LM*)N67h*r-e+;fBo`&rT5a}(KD@ml1FQJN=-a($B zaB(jdG~^ZcIvo}DJ#QH*J>l=sn6FN$GI8S7H~?-b%4{8*ajqyYd$#xBidQZ1I~o?W zuFcOL_Q*{V44Uyu^*YBC3yKz9kp&3dBX#rvAA%vkzk#1=vR9aeMKw4@Dk(L%1=@yU@6hQ<* z5HJV}pELOT$8%rY&wX)^XU4Vn+I#K2zAN^cbGYi_Vhlime=afgzeJ}|!~}#35_Hqg z-p!xT1>rIK%Q5Wx`+pVWDq-foFTzX+*xJerHKI%V^WWDh(O)?tAlt&t$5s5Qp9|d6 z&ED)xI$Q@XDS?!fkd(Lt7rN@@?dId>Y?*cf&LYLxtxzDOL@2jJxVq78v{7`dai>H4Y`Qi87#cAT_%M^5 z&2t0*ayy}fQn{4(7U?+4LbB-CCr}_90EoeH)LIS9`k(n;d{KPy_5Zy8E(-?$AX3N? zM)WTekaM%MsTE)tZ75k$91Lols7bXdT+}KehTmbv_=zexci6tt@k;3aUlV{1aD!Pc zE@Fs}oIBc{Sy0`#91c<&d={g@TYThiqUcd=`JrR&;EXdUKppY$XnGVl2K+*lVKLf> z@@)GA#1M!7IC2OcMJ>5ilwqJSQkHI@Fv?e&g7H8!GaKtQY_K}iG|%Vz*Qp{Ll8}S2 z|9tVD!2l{uPs-+)3T`l(`An!ED39Z>S|F1USsWS|J}o~!t#rPTbWxoQ#jz&Btv{=- z&tf`f>a}p>b^XZe?VQuwBd6s#C)+HiH_cwQ^R~7Nf&cqHQ$3s*2v2zrq7L5LDP`J} zXU0i|0Q5k3sa(RkHfWC&e#>+Lw=9?7tcu{=%6P7`A)sLhVFLi+C1+;iv&<@YE362A~m#hM(wAx|A-c z<4g4y-)xLz0*%eR{$&Jk2;my?R|M}75DJjUP}F%TrT_nU6M%&Rp!0DIWQStVRg=bgatbE=|826M5 zG#&$>4kj#e?m>EoI3y`|6g_ef9zf4C$PrDABIU+1qetM;j3}Kn2Wk`<$i+|;JJO>N z+?k+Bp&Z~xG#cCsG2jaY$WfErgK+gERdW6^W|TITrHW zy1XDib_RpMH5;Nm&KRI$x$D;qu%q3?urpR5W7aCUrkS005bijsGm@WyLA%v}j7^SA zS`?Zy8jD7YWnrzx^D|~twQy0X7#;qWbW9R|<{}!6%);7xiVZH=KamD!{AGx>uv;fd zYbB|IqQJ#*gf*&~!Cir(6v+59vG$_;&DkIW6h+33OUHQf;}%hfn!k)i`|;-HMR%d9 z0m2$Mm~~Qf%cA>k*;7_bJh)x^#D@8KtD0ggO!sW@B;@>S`zP`sLx+Db9g`^5VgoK- zG4JOk1~SH_2W>)Ynm^21)l@ZGfs7$`|0m6xE2^O8jMm^9peV6HD>X#J+2R9di(B{$ z5k&p7_#n*Rpk@waNH?2#fTCa?yMINsF1pt=A6@g`Z3bN%LI$QFrcsq*ZV^bh5CHVT zaImN;cp27#o;@0CPm97aJ51_SVeLT}avVVC;dhvnC+Cl$N9*w8Kwu& zIhYTo9|WQ~3rxp^J_K%Fa`SH=Zq|wnOhIUHp?RwvLPkR1%4V%R&iZg=SgS!9ICl`{q5m(+p$1Iu9CBbn zhN%j&nX=v}r8vhGe&(`9AX3OUWIxO=MRmAHeG*BL6Fn@ih093Sp(xIrmqZk2rdz!S z{mf{z5}So`%PE_&axDgcdLlCLLsdMLnhB_I0YF45CJEFLgk~_`pB90GfnZj^9LB-3 z$T$hP2_8rU26!qF82>u1Xi;YrSuueDkDekh=ux1pD)A5ij@L|^pwNt@q_Ly`%D_k) zmH@?oSYyGMA_t)o8i1Wa>Q8&tv>Jp3FcMIwMF|mrOyZ0_Yr-yrgF)nwK?IxN=Iuq# zU`Ebc5eCnLVFDrt`mB`)x~duG@T7Sj3gDSIfN)Ar3(mDNSJC=29Z3N^JpgVCAfg2i zN&#%dS@x+Sz(-I#8pDn|vul+US{}431~ZzUVF;QEG(8w^;I?a`K<_{_vpSF!W3iye z4AP>63C(2AGY1-kseyx89g>=33H}6{Pwb4_ylF*fvU^N`P9053K>fU#mK=heN>s{` zA4nwwRN(#KStNfSYfmTy)Ig`pCZG-bi#E79uxj{QArKhk4!5%({b&ujzb{4829W*5N-alDO71T!BilWl3QhECZOLB5EL!LU_c7YQ3Q8P z0wF(hQTwE3g7RVm77jIM+SW9~JZK1J@I=n%g0T&HaZKCcd^h>5aFN^Kf~cX5DxDL^&_0Vgv0$TNY5xN z23-b*`o9>_AQ(kpRFZ>MK_l4yVW5R@(Toab42m-bE&$91e`66Gw|!PI{AFNg2%f$hpnD^R%bLLYi^hQ-MOF~a z>|V)V9*ZRB4j{Nyi-kXFaT%B)#Re^+CX_%|12ZW&SpM8PnALH!_SMZFIFk0xQZ~Wg z_PSiBbimlR^50V;yRHbP2hjbL$Sx#Flwh;$pES&KgfVEsjL^DbgSnv-T`-4eG-A*y zbh7<}O%j7Lj@6;I{g^9Ey!YfCcy=7Wi=tB|zmb%R++6fO=sM?+MAtiP<1gL|TThhe zJ%M}Hw3A&=0_8b`?Mt5&g(7>&d6U4eH~!NaCt$>C!mdX{fOZC2AdX6t5#z#U#_qdL z0pm#pV-Er#!JG}&B4w!{*kEq|Uu9?hStbPlJTc*<6Isl(v}!hbJ*#u=o9Zf)g8e1Q z_ZVSkKc1~LcJ~Ix-6=}%1L#>Q1K0rIeHj*OCB}{#Rdth&8-{Q24e;?eq(;s}R-_{1 zbVfNHD7i_hf~Jr$%%$uY${Y-(`(ydo6l5h*a1BF&BLzK&9)QF706d`joEngjQ-R6T zZ;``&T!{c`^>ltFj160Ww$`av;Wa9a4pZjS916-rd%D-?R zoDK+&hQ`G?JJaH~}aa z*uZ4<&jp1NitE3>I-$_NzedBw|1t@`MhRTVrisnmN**`Dxz6NJ?$YL}0FtJB}RG0sd)yRc-=y`bhyG6m~d=2uMT$E&cY>vjP z+cO)&3ZlOz-+n}=^zG)Rb3!Z^@IJS`g6F~(d~9MNbC!6Jc0YA?7Sm`e*VycMseJui z@l4p0)6jeAeK>qiZS_6hjh<|`RbgQ)({u9F;VhwEB29>WkREuMdW4c~$zoyEZtMrw(5nGqIBtO*j>WS$^T;iguEVm?l-?XZ@ zp4+=}8AWuJ?$WW!QMBR0%MZ3{v$N9f<1clS~%JL(c@+>(T?rEfk+ z_q|38{Hp9_cQCD&-_IB`<1X_&Y`YXWo8mWWUN7~ zvEYJD*i}8{*1*VGHM60RO6f^T5BeGT*0@OAHMxfKudkXG-j+EKjvVH5RFu&l)#-9R zs*#*GW+!8~r4PtoKH#&DUGs|4h@0OW4GfoUROq1YHgOsGzW*B}59l?XQse@p`f|m*ix3cl~J> z%?IKM-&c)6SCyO;_r)>`EOY5hJ7Q~+x3v{R6q2v(BB21a$fI(X7hmW;jI((R*L@Ma zkFWjXC}6Zha(~8;EAi8{>npPzJ^4#Ej}I&J-U#F$2JcV!REIp)9NN0`~J2&9=s>aKWP4w9_WiB$d{00u22OUeTt)G5IGqa(wLAe;@m9!JeX@S^3 z$eIu`<8L{GGbT2QwxwC-TTZ&nK0oea;Rz$cB_H_=t6zTTZZFZ4K5DfLVh-);Abx&a z3IH8)JLd4l%81fe{&z3BCdlpbY>Dw-CNHmFk!!ykLAkq5T^|%=YE#d(Zg5&bVY|PA z>`-)gJjefXG~Q^qEe1O+bE}TguZ~$vH&k6Z?LpBAJiF7t%dtK)MDM&EikkHBFk!rq z%#x8&U5c?iliSBryp1h)RaVp7j-;ec719%q&z}8-EyF|jYL4L&6h)=_#Vyw|4s6J4 zX%0g7w8-qdH6IXj>Eu}rJl?x>@aAqCE5#^90>?|Id!%v0qG2ZYL^jR#FSuhgiciKB zzS4d@NOmK;2j8Xc40J~cTW}InHBqZtzE#2Uo7{S|SZzMaA!&(YAyEc09BF2!ZyCN= zp5DED&lXDMLu5ovD(-ecEmEOL$aU*ysjQo4|RDE|thvzr`$_u3^&dS=)94zXPWU0H@tJTh`Aq)k+`Dh@J$xAUK)XJGWI(*hZsi>WN z*^j0(dn~V(oIR~pg4!8Flz+gb5Rz#c|}FKTn`Usd}afLhcbx&@ue$4WeJ*B!Y+mkb&Nz- zypq4vo#^A8M-|x@FLP4SJ&Yc`a|wSPmXpSGpM{6X=JI;F4oe+Wh$*_!dQGRMc3j7# zMON+=X<)*Ey>F+4pO$A8<1LSkTC9f8T~~Tng##O6?g+d~g@C;M_hKhs2r%UV<-bTm zuO7E2zTq5Xees>8EZNG*$3y9-4;d}x{4OY4`-`Q9*w3)h;rI5?Sdo_I`SH&`|p$>WpBIQnZ(YMQKE)o<6weEiBk5Fg)4feEUJ=r_Z3%}-nqT*@ZNt+Glu_o_Y5 z=1QGKnYI2+gLfnW=j-9gOVv}v6eg3<+HxqVVZ_xMohJBdSuN=Bts_CSf9hWOEv02 zyOfVR-`n3-s%@)6PBN-e!Kdxt%XeJVen$yt-ePVgUp?1WwX$onwI%ZOHSU}c^iheI zZZ1o9sn^J!d6J6FXF1XXYM`6k8o~V3EpT->__lazM}LX7%P23c6wH%LQC}`u_=a_Z zsEdE0_n7iM1s$>GhL5Y(^zh+WK}7#w(>-QTPh8Wk^NA!o2n_#>c)k}|cCqKc%0adj;T zNliEVxd`;*`3dVH+#JO6%$U^ z^bkF7JLN&FD5gToLbj|52CChdrk&Lo1mHsCsmDtO6Q{iCGgj?Y@A8VVOVB&D&xaIx z*1jI0a~?BW$l)Hm%A zBst-PTnW}od6~95@>PEM;u9KOCMk8GDZ)$PAQ68_aWp5IoHX3|V)*2)p1dRJ9nrOn zu%4{j>MhXGcdN+qiRn(@TkYx#0l8uxKo;O~%TrGYvZR!A_4bU{zXO!q1A=Z{GJa7j zZF^4VPedo8iDCbk*d8$>LD|b6lir0BImff`3a0(Xk5Z6OYYZn9?6v9m+3kR z@5QwY3@;?cwH`h;n|`WRY>iD}FV}S>oyuzf+#sHUk8dOJA_}WH{BRNpT1=CjZxJ=~ z0o1%YuF-nqrqJn8Tlg)XS`mmh3`{0m!8C6dvqGcTi?Y@i0{+$q#}pN`z$>ZGKXHp8Xt9UP~`}qA{QaPj`rtMEtwvKm_9gZ zUiagF?qir1k(Mp#@nhuFY)2}tj+0KAVm0k?`pWij@U4Uo(2u54i_Aqz5e~B--tqk; zBB7CBBv)kI`At0r`0THSFsV2uT2Xv_51eLOe`ZHt06x<=$=FouBnZw5(&Hm1V%dw( zj^*41-bWI9P8&}`m529wg-u-H*i2>!vI0F*X&l*5A#q3Bw{Nel-ak3H*{m8h`EW*Y1!Ug7+KLF~5~X zbcKz?zn!^lsUZGfP~w^A@-BVsL*&!^5v^zzjj#rB`)gXs;#@C8xJamg6*=qV*I0QL zA5j^u-RJ6IEjq@x^?>7|)jij`OE2dH+1)%}KUP#K;!&cINlKtky|ECNZz;y=%?OFy z+}3p3&0foh+bL+;I#hRaEDlGe*cJ!ITDWx^Zm3jQ7iP8A0@)GT51=O|D)~HZ_pFJ* zdL-e=sKfGncv}t2fmQCzvi?|v{FW!y3os{AluBeu`H^AfF{ld>I^=&{C!ZMvZgA&V ze#r#5o1xY7$(g6{qs1~dpabS|VA0+geZE?@FW)~$u-rb(JUcnI$O7#d&&=u3GNp2r z9J$FA%>U(W%xj%O9Z6r2a1K(VIM&o*Jd34}T5rEWnU2)Ga4{zt5@H9<>^2R@8AcS`{TK_opyX2P;MA7{vVU-Hx)%qhIl^-jDdpGbg} zEvx6ROU?yDXhTv?J@QlJb~Sx0vORy$9B>gA)-D;`OOnb<77NV#b$2*yQJ+_t! z(KqT@%e-a>`2RiWiAuH?xliM1hLFkmca1qE|HV z^zA$?J^|?7vTA1hR8JxICHOYggj=M+)W8Wey4{#Xw`V`?T20_a-H%P5$Z@Qo)=Vpp z2%@no3H$v>G(D%6nb?6m#$wt9`&rmde*)|FJo~3eU*vhfirLPX_I~&>`gLDG?+2&k zkvNk3g1o1yB>ChqlsP5Cm+-2PoQontlx{?iGp0q z;wQ(8({;nFM=)4GkAiJ^H-p7SXaM zb!dpBEag>I=zT0H!y60Xet;5objYAl=l&9CO?CYsE>e|`jj7}&`PN+7%R-ItYB*Xp zW|(2okX(hSRH7W{w~;PdVJO((hMdx@%i|qQi~NfCjBmVAJ20keW%xBq1du}%z3^Gd zB!w~u9d}BgfbzCgF($HGVD)E8a*ubQ!fxSA`v>MCjIXMQ0e9W1aZg>@87hAqEO3riB3uou-(?56sBPpz19PAyts?@_}2WKtX+_WT@1Bs=nt;>_#|indL&@PY8jVt7$uChy60=)oQr zQuD_CZz`cexsA+Ms!?lehW3z8IF)Bq_<6;FH^gO58V7yEaU`p(;f>J2cZy$kolnr8 zp9y|kk|`p_*OA_qHfBHoz(3Cp9RKs|fbi~l&@{&Nd|_dJeo<+`qk@v$jG~-^!or;5 z>@2XWFsW>N{U~RzfT^6BpfIpr-7Wlvx87 zg}SrGE@7fYdvsO|IZiStm=4Xdzq3M2UdOary8D<$e}qb0?yYwzVc!1apFcNR%zVn- z8YB@hob8b?kdboKBe!8giw-l!lby@3&~vH zoQXNJizAwaS3B=BQyWKA|Jov<`P`;bFCsyqB3pF5y;`wu?#^3joFLDOyWLb+YSn|e zrtPW#OOdU&;A;s&Dql!Y|7wQkUXf$YW;!&{(u%vNyXIXh9frw~7}!^>GESBYRC?#| zKqnjR_M<692ipOC5dY$NYuMrgYtNy`cw?efmggR_+sxk_$@1+lXzZ3@_3qYQVCb{R znkFgJHK$<&^m(!_Fr(L|R+hqTA+ISVqyeOYQWoTdzM8MnHZ$FYF69EH2`gfu8o0w+ zaGwsx!D9cM_kq7COtUp^|xM}m}l;548@0wJ7Cu)F1ov-AzCM7Db^rKm-lDa?j zbTZAmGLt}WT43Jjw9pl$#n!axTpf0OY7b=ZYGhj9 zDxz35T^%NCW&pai^PFiuS+JZ0gn_Teb+yksKow&;qb*Fndg|>AEIC~#PgxfG*^@k0 z&QzuC?=)g@?#uUrY}eY;?16G;?)CkVEs^GjeC+j5Vv+m065A$LFg+4D>jOB|ea;>3 z%2!|eYh7%L;XJ|5v)#^HU%nu9p9_FHx)+pKLtYbqbSb|atw((Qns^%rd9)hjk06@Z`>H@5FaZ7V52OGWTb^^gOeQ5q@P)#UN=&{zeLk>*bL)`tH@1;g zziZ|-t_FT%_AvRdwudIw#qLoIO=QKU{(NFD${R?+&UW(xyNEn}_yJ8gS+PaA06)a| zJ?*l>EdlG&kk{S@?)|t%A&sc54pqD^$NP3jw(96h527~8)kGFbSq8(@(d)X1Z-&KM z`jHjQY}mfAx~n^_(OG_SiE*2!QKCVvUD$CSHOo9Jqrt}GhP0nb0uovD7qcMQr!GZHv-)o*(4<8S0km>K(+N1u2wk$u=pw;y&gU(FN} zNQ5YGHeGJ{$@H1qo&M`L*A&lro5v(Uro$vYi>kL6pUb*`18;joz)lX_+=d0@MCta)tqJavntIwv4FzM* zpa{~ayqwS^vARD_t*Un%9<$7RQq4=v>vdtS&KA&!{~jR_g2o|@iP|Q-n z7isJgs=JY?}76=?Be=GRAeW;T-%KZzM=o6)*(rcFS2$u&W*b9HBQAUxv-|#rTru z`LIs@_^}fr!{MX4=1N0Zav--Ok@Mhue@ahV7X!QapWLICFztGzn8BbqYNm0V zxo&pWic}q|Z5h7Qxvr3+iQwby5?vg(@Jvv7VhDL>6M3EM9VZ#8Wa(pg)nYJ|w38Sh zZzsxNnNXU9a$OfD#+EFEQmk&)#+?HAKnoJ^9Whw@ZzEi_NQ;gyZ@+!ceTP+V_Qs8w z?LWZBN$7Xaj_=Fgc$%k1<5q8E36|;DNo#cR>t0j#CAW;Hp^C2jW$$LqYxDph8Yz1% zt12>>a%X)pjAAZzJ-~e1_?3|977Zej=(B71iV(w_T&Q{YlD`c_f_OVy0~z1iPB@>= zXJx8m{(_j=Ih!6WxT5(}?)G32!q1VsBk*wo$-&)#nI5W`6iO0`j1XNHNm;x@UwT32 zQWv^?LLc*D(H%RKpOh%UE@w0$W^_4u79A{bz^jR`A~#yEpRlA&_)~b@id3Eix- z_K@dUqOT5npWV0jv(3B8=ZcwtcT*%-;L9n+^5donqZ1NeCaP!BfGlLxEVr$El}|9s z&79xj=Aq;>w0$mLkL6AVUWsh!G70z?2FxSh_*8E)Y&}bUfqFjw+kiVpc?{NnxisI&wGo`u|(DJ0Nd zDZb?qU+4(hwXGB*dbs`xKWd7Q5i-Y5b&2>i(LYt>xGTRs%dthO(iGKsQ@kirYx^jj z=j}7UPv-G%rd7{6IHp;EB5&$AO5jv`CzQmikwVUo?kY)i{NZ{`od1~4xxCvF@Kphe z%5ul*_WSg50&HrPlt(ts=aYUhtTm6&_+bs=c#X3-?%VaX>3>cj7Cgs5FJ1QKlofqz zLAaLIaL+2e;#KR~gNs~LN)JvOfjY_~xbt(#X25uQ^F{KeHg{AWr6)l2B(?dyRGG9E zY&o{|vShyx_CyTo&5HN0xFx5z1^&4pm;8n|zE(}Dnq&?I()9cXt5npQQ?bWfMxxkoOi>JY&wkBPk|BfW5$flH9n3&Rz48Tc_ z@%kEHEM&`G7mgI9Sjt-6Em7-a7|~P&-=`_->{w4c9l7jtqA1j$(_T&$(2{>IoQB*b zhy~G`puF!~cPec*X8C7vF~ra9eB-9*6c<(K1tYE``G<^Kab@<_&HB$9$D{#$(y;pb zZ;>HXOt-6V-6#)#YhNBA&&A`1^&%e9V78|p4l8Quz4HqiWVCrh^M*V36MYgWolcr` zbE;GGbt>T|0I_HyL-GNqV#z^rJ)UX*Rj$S=DR3=54^1>qv$_>*X#Wa>A+k-Pso$Cu z^7x|Ts~7zCW@`p^8n-LkKc6e1bLH~TaoP9up9b&C=w-0H1#xx!noM=-MASqR2qyHc zYO4I+t0o_+l6y1s)x{E3O|RG?wJ7Ar(sNvSY$H-BKFV@VM^u?YMj}@_mZ`>_La0B-{0H`KI%e z@2#dApK_GjXXqIYDr$9Y-9n-F#L9jzIA+FPI6t3SR5C4eE|>}UO7YY+PqXNdA);?ZZkJWyHs#Z*O%^+% za*|6+ZkZqF3g7J3`S}G|&#>;^_z^oqPrB%p_*#+h(7=jI5j@ z678Ir=dcMnbi8i&W7_%eSE+wmd{ZALe*za!&r0ZaR=zC!5HVz_d zEGIwTrF;CqJrzA)-Cy#k<}sI1+#5lSH+meVwY<0RE<*xBfH76StpZ6Sh7q_O44-en@I5!T+Ma54fTgo6Z z9$05Gnm6$ZJF>g!)#v;n@39gu;AXaZ4|QG3*jaTNadgZM=uneNA{OQ0CC51JWlY*^-g*ihCb% zH{i2qt$flQ$(o%?l5RG~VJZ-}Yub6Ul&Uw`Pdw)P`rNt9N{5lxH;D?!+9=MMw9i~? zveAE)_VlgsORtN~mtWsw7+nl0`6J%KtLx5xQPbIJYe0d{g5I)NQPbWF7$qpTO^9#K=s$=ho+YDrNp&}fPIC$fGo`&Kw(1Vd7~`xgi@=PxW0hc* z1$T_nTJ2U`(uHKj8g|CJ=D~eZZaswn%CMbd{^?)LtEpV49SV*;Z#8C_%P(!TLG{WS za@w&>r;{5UQ&rI&+OHXp@~35{i*vq{icCdtK5r|M30r(|Bjpbx3SWh)JO;!?7^Wn9 z=g3vF{G@$v?bgq{?MlY*aLzh0@?FZ5lo_xk>er?4nV>p0CvMvezd%XfXy{7in$j;( zKE5eD*Aq(eXZEMDS?C;n8T0C35`)Zl(6WVs)*~w06bHC32dN5y3^I7uyn-Sqk+d`V z;io+3pLqTD{dkgN_ZPKAy5D;E3-fEa8M73Iz5JLhgnAvP>a?C}UzCO_6M3k1{Zi&~ zx#FvHecBu$tX5Mowp{Q#dky{3*lCYyl%q|gmq#N026R+w^&CBO9NU{GY-yw^-JXKm zgLb#d1a^wrN^j@4@h_7DN399c$J$RJT8~QiOJ5loNQz!=|FRLFH~~$u3WLbVj{mMx zs1E$@=HO6&TJ&lBPjxdt$E!g*W9N&Nm@-%$_9*C1a}RqS@pK^x_xL5F+yt)6Z`CMz zA|#8uO^W<@t#GftPRLf`h5e;4fJ}`1>+|qBX!bni0ae9Lxe7^>1CgMDo9@BI4|}4i zOT?sH3}Jk$gAGG`Fct{&KaVVkgPcLP124j#JAe=ZSGlU{pssG;;9m_Gf^}G~4*Wu7 z*=6rglLyAFl28<|==<;8ymei(v!j}8)8whx_p1vUhflwcdbE@X-_2@{)NOy#WWvH@}!I;Ax8|@^dFaZ1y>zJL9Guh;Ls?(;n7-h1x3=bn4+J?EYoJ8y3szy|y$1^E68 zM4enuhR8x9gTp+0!}qEnhaLZI=_CL9t%ca__5AO&*AoJk_MaIJ;k)wpzmpdGzeHrf zw$r{LJ{opm-f{uH9*+NzmP5*EYib_X)YaBz2N6WT2N!%c;+%UJ#mMyBDOFXuNNo)* zA+Q>c#M@dJVS_z_BjilO!orS#b*F+uqQZQ=eIkth8`>kMsV0XDrUrR=1$&2Ucm@YT zIR9lq-0YMi1mFgMSUFzFf!Og(0sw%d&8}Jw*jMFn-qX3S`OhQ1^^s@i3F#B$4f09GwyPUM?4NCaBeehcYU6`Fj)g0v#)Xq zLK>?t!anqTmF4Dl;sik1YI4gbfMoVwyzojajd zJv&2tu=>_C38nr>6c=#!(P{q%oz>_5_Cpe$X<7sS^Wy$z9&!MXV9F)wwMRMeAEJBo z9{)QnIUp944`7ugI+!Irn5BqhD%wmcj%}-f*-k{q0cSy=5?HMrjN}QvT|9Adp>T(d^rh~RC!R8C!1&QL(+Rr(gK)|4ryGHPopd~0iKix|HDmu%wm zLa;_698P(K6_ECEa~ApiX)TY91#=8jEFht#c9I9|5^la z*}>GeB|Ww!ZMO}I0t6K8CK2eV|HljpHuoQWiI<)dpeYK)^U}P9!iBQWih|I4i5$`F zV>xPnLzg_Dy#b7$yd6UZZT?mgE||xikTblnL+y=ZvGtFy4(1% zjv4T)HelbqhWA5vej2ZYlif~JoFp8b#gjmWC1;~Mt`;i6@5kwjiaigkD*7VY;m6vQwYKo0X>z2ofd!)v|z91<)ny8DOp{kGJ&?6$~IS~s20ZpKy3Atpjbwe@#C z&RVtNS``*k?R}>j>p^2@V_ib5uDauS_46A*;_WeSyN>}fPA!b8YTitMH;Ll#~ zB4$7>BLM6+%-mRLQy=ctEMoW0|a9 zcB!wP;0aD`;6_cy?|lv=p=#AYnf|m?0OHH@{;7lgg5?+~xMZqg2a40PpSkngq|v-p zSOg(qPP++JBm?%Bddx)BJdgT*RF0TrS zeGUL7@V64#_GT*bxk6^jxt>A>N0jK(Bp!H+u*%v^YK9p~z10z`qC^n}J&y!oly7Cu zG-^;TLD&o~pO6DGn~-P91JAL?qLf<4v2dj;LT0{7bVsZ|JO_{Es-z2}P&F;HSQU7y z0LrGaWtOB0PsEc@GC4F7D4JQ4azpE^0kX0slVsD->PUiDM&yB`wa$|K8Y**0Je4hz zD1UIsy;eNdU%fSN56UB{R_5e@D0_G{^l2<_WsW0?x26(osA&;0vr)=*B>92_uqx#s z8z9Oo300mej#5?1%^|7O&~vahHK4q$YZ4r>HVt4mm711m5TavAD)34y0F1}6117Qi zbHzQXB#E+d3cQlAo1i5Z0?x>pon?z-Q`XFc08nloEMVduR~}Km&+MuknZwC2yzJ2RpP25oLq1Ae=-QqD<^8%^j@GZSiPJV>44*TePjUDay*m*1^)=33jfQ8M{k@O8h-0M8G7N4G=Jb!b3b&)@C14RWj*%eE@1I z$NzUx&vtY+^X#RO-pwu8Few;iML%35BqF9VdJ)J|475ZX+f6$gHndjJzP8!g{t0;& zr!?zJ=8|ETD5Dn=+3piJ1dUzX-gjqNV@BMitPyw|xHiu=|K z%8it5VJD%G4nyfh*B3kk1!;9dEhiUS8EDcQc~^4jsW&xc&9}pa{8DT>Y1FG9)IaGS zYuy}%d+QIukK3>r3ND`OL)%sijRv4+U2;42+4$w{ zXslmszO;Dnj-{W1(WDTke!9nUe_`iegE|eXyVE=arJtLphvO1l1%8I<+OjG4xIAuI zv`x|I^m0B1u|(HF^lpeW=(wnx##-V5Xl-3>z~-O2i>(b4e?Quk<-IA?`}!7X8DOt{ zIPy8y zKp+iI*=pGez7?#Keed4q)5W*mqN6Jj4wbBrlc(g#Zyw|qsn#@WKgyssuZb;etazV9 zi_TyBj(U@Nh)_Pk%r$0hY;#;PfGoMhLNNrEKtUKH!v8KU&kIp;5Rki6;$hA3>j%4Bjq!$WB?fBz$t1=Uidvspu_ZTLG(;&c)1n}b)&il zdXTJzH&HHGFLGM7pzI^|%;vb+JeeYyTCuf=`N}f#F6I`y+=M)Y6EHv@XA6mn4O(>J z#0b+R`XH!lwRc>73xB1l*+q%R%#A*F^3PsKl^DwS9uLb5eXa*wc_W~Hf9Q$7B6RY6 zAj>y71#_-wQYZlv3YY?#oaOe)4eZ9m1JXiKu^;k@MH8AB7fJTavSUrinBw30Ijzo* z%wBkvSj?^n!Dm(MS;!&d0sNQRUU3oBf zzxY?(u|wf$Rm-HMnfnJuXm87_%?gNc9)Bm-TGo_p)sWofn^pEZhukko!Hfj&R3rVB;NI& zxZ>%76q(fs*%$HMYrvwqG|I5$%6hr{36o5dlQNm20EuWMFW9or@yEO3I+(T8zCy&V?4PFgpsc0_lagJ)e5*KW` zM9^G+Wp(d}OIjvBr98%~fQ=#<^!LrJs#<&d*jZ!jO`GpNUl4J6`uW7=1+zN(K}GOF}Zg zb>+U!nDa6iAzOPajD6s>+q(bj7na1$3GC=A-ED>ASlrKs3sjkQLLbz%m73jz8o zIX{~N*)loFLI5Y==)i(>{ATNvZNzEO=um-J8iTKTHKk|dFZx}PPFLWnl;C3o`GqW8 zY@-}?-HgT?>9saJRn&G(Y=Sei*+q9IKq`F5v>f11XFy2km`dqS#82NI>yYNNS2_A( z9k7y9w$e6{&vc_^-+nbNQv4y8ag~;F@>XQ{(#Q19%B!UXTPL6UKTp2lCLO7?JP(WlIn2~dysJ-PgX4Bk>yPnfXM)s4#{kqE4-a#SJhGdK{}gt-NoYitS@4V zfkvbd*n8=+0o=kf=CrHvfgM`utz-=WW^1na(W*%uURlFfxq}4}CQafyGOwq9e$|M2Gz)3A7r% zfoMwf!Kh+CYx@6&!<&h4%&Qp1Lbu=#e zPHM~Xf_Fad&sLZPPemg7?_ZfR$yyv~3l%3%#zTcrIPhrONmL~AoMe^k( z^_h3DvBS*Znt?SI z@Fa=iT#T=?*2WA$_^v`}9Lnr+qjyK2(~EsNJFG}F-O1Z@O|cZu!6$hrvyVJ0zNd=e zu%>Rdmo3Lk<2b+_&lf`BS|l~H@vFaPasu{P$*jcTtlc1#`p0}D=kRTHDrNtm&`)R6 z#jX+a8@6+)pIZy9ABL^zNNu)E0WjrQsAkqp_GeI60#2zaXJ&kJMM=kW_?bSAv1?oS zi}YF?Ufk)N#)lj5cDGYI(zwg<;#Gf_OR!JF*C@{L(}!l^O|bwsf5qkU7lkK2PN zqHrX?{3a`e^N2;J2LO$1Opt$}tDb!*tIF_teN$0#GueMZ;jEA2tthJ-8*Xx(Ho9AMnK{HuO){!pU-^R^3>8ePAzWi_RYpRTS^xRUqkT|^Jwl4%E9hzC&>Q#g4^ za&5r{lv5fz-%UI&$wy_Wtk!e3YOqnqS*CuX+ZT4T=(_e&%O=~sjVINTQY*bSp3llwX5;Z+w7=tlid%ui?Xf7UiQ1+*A+ImW);=$Ec_%mw}x7leNe23!yuth zieoU2y^sB@$2-idsxZn9G$i`5fsG`t!5VYHH1;hMVPF(Lr^>W;YNj*ZM0YZ&NY@F= zRQkIV1Jnw`5;HuX8+f&WKW}LIwzdYxi80H<@bY8Y)SCw)#>I*w_(F=e1G%L0#-B=hi{8@4L z@O3qTgypU}BZ=uL{8C<9wo*w+g(@yuKq{7ptq)>m1Lc)~jX!pCJvCzb(G2#lkADAD zn@ZWochR14F)(}okk%`Me*zF3@1Oop0AlY)u^>Z+u$HM6(#Xon0%eM^CD>S)pR&f- zSt9MMQMR@YU`zswJ?)6Wo+i3DI-e$x9q}XwE6~m6v!3K!)Mx^|fCHfkX*b&xbgWX( ze#k2P^T$JW_0w9EMt|;1+J$sCyGO6?Dtjc}ZCFu5Mjz}7QyhmV18jSqwa^Lx-V_DY z`AwDlV%cX1TxpMC_u3b9cU8xj4Dfu*qY5Lj5hYqymk?a)VRl$|>OhWpjNA zXq+Ey4nWx@i(1d}gWhMAN7|d0z*?@B$B(ja!*i&=u*Fd)1=-;{{awWD)VIsNi^)`% z>U-Iw!cU}??p?p8p1te(cpn5B!fS%uvrC-T`jVaZvZG{Z;Tp*akbburkP7ZpJOqpPN`ZVcSBP%mZm)r zyZhB^cE@ch82$6Y&*SS8;9j@3qO%nf7_CP8G9F$OB3TBkRWwia9$%^o;~kHqgVr@! zT2ucZc%NKB(iD9`3y+8OUCb`EA?4+$kGhFCqa28cKv%eE)|UDGN*^z2j#dG_TFv>% zw<~y~r0?^>5hiBtY=9%qnM?5oKe#rP@_GkC@mx<}T}@kVuiFM}f85*ZNY!Ut)*`c~ zq=z%t6ZG02hNq5L?&cin+^x@j)D0Vg+*A~d9e`j6$?kv`t!_ zjPF?K=5Bu7Y`BWBBaIn>;f9fs=D_{Wiz3s%q%Ecdst9)3Iw`t#xf(RFn-w(eqp`C& z;zSe#Ux}>w3pTCn_#oE^0MhHDS8~07NqdjWlkED(UCe-EdE@ljXErtHdsEs^8e3~3 z(kJ`F4P%vQ>57^Va6STiF%%WzBZ>PI!8Aw?o}$JWsbDsE1kX{@&!YXOar3l_Nxq$P zH6>S0{}5Pj9$gbp2ko@q+(4qP7!U2Xx|oPuw*WLYmIJ^NoVg^5_w8NU)d#Dqg*D}R zRWci4ov=&kM%%wH)1UhL7Vl8j&r};D+k!SzZq&9vKcymk)E8I2sMd4?mfEk@`RK4{ zPoXSS5#neE`k&pgjU!@sjw*3>sEMzGQmD&T>z%4;%um)2<7?LI1-rxVxT{0z!g>?m zkxYX>)HA8NlZ{uTrJkuLO_Ne4B1=_;aiRtsi43TTjcuGjtN@C@;_6#9e=pH^7>Ty9 z+mX=I#KR^(?v%DY`RgzJS*dlhGZWC|zc1 zWn6a3pAjScnqc{Fa!S5O^T~7QH_=TeHaX0?w+(3<5mkjSEeMK`%x-NQ_d)QekM%%G zb{gb1c_HU--dW$rQ?lw7UZc3*MvM_rB>Fnt?LlTW>0=z*XTO7f$-m#!=QExlEOs@( z4N7q4?en%e6y1?J&4E<9kfs3ipkgCVe8y-{g0q|4$|}Dr+Z0!!tX~`%WZ3;m3h=vf zi;@Lr$YHwXF()<=CXw^&u5rg97zZds@1#k);88uK=KlP;GcQnD>$Clr!8^mBy4n(j z!>gA)zrfF(3T}T+O+t_jovEpgNtpP}Cjui`8*`w*Y3B9K|Ry%&3lw(It}6PSsO34dDkd8*Q#n zC0nw)TwPPv5%vWh2Et<;28Mb7=&K1x+%Rp=uPdjNpmqVpt7C;gMV7anT5Frl#ou9< zi(!?zhljCXu;2q76B_X4c+Zz!g!+SxP?C{ReOjHc2rm}OvF9T1`S`4F;-#4{8v50&AfY4mk2zxL z;NK-cSqXG#UkO@rNw;Myf$-f#6x#bTDT6<9mWnB5pZ(6JpP$4WTs%>DFu-TZcvjz*S$n!ajBmmqF5!Y4&20WUOhW_ zgwn25v$Fypp0)DBww?8*VVAm`EuRFvNPY>Ov88}FWLGs0k;lc*=6QH?Wjxn;EO@)t z1Emz)nDi#Ci0dU_MASTcdAm6!=!^g7&9;?j9k|Q@0*y^L(*4Iemuy^rdw*QXFLA4* zdSU8cE%i4~7@&od>H5~TfFq&Kv~IwAd^0RPNnlVCkkiQD|8^%ETihekykfV4PSve< z{_}R&H1S9D!kp4(u=D|(WUJ}g(ADSWQrRkZ-ij)kFmB2L5z^za9N=vo9Q zB-B}ei!WER$8E^2r=#i1nCFE<*WZpzi6wZf#{VfdaHaLU^y)+eO&iqZR4{gs_%8jo%!~n_*^oqS^|A&3CST>_ z!|R7{^B$ppD52rrv5|1Nhl28A5lb#IB&qmRh_td&uGUA-l%5{C?w`QjF?wbmDyz(^ zrNud)HvT($$n)SVK!8g$)nf6m5_bl`CX*5S8t`z+?mOb$Q|>%W zRT-$(?~Cgw(*Abx4#QC9`wRM#zHdshUF2JxlxJ>7cVP2~MZf5IOv`D5l^h&Ke_!Zh zcvXp+tyb+pDJoc&(X$6U9AXr_-H$nT>2zn6ly%cvs?8Vso8SC=(;9HS9xr-#4xc|` zQGK_4=%qmG4e@TnGlVk=q6&C6;ZJ27L2YyEdX%gO0Wf}EZjJK$93u`eUeKi0@o4S^ zs_K;bxZeYO5;elVUj)oX*sSMIw*LK!N^WyvA=ht;M}(LER$aD2yr5NIGYLulTUatQ z5~l9;^96^<)N)dCJ0N_MGiOle6TlCK&A^?`+j+7(RT1g8cC7|e%nYwNUF+<}>WsF! zaP>#|Czt9Ih{R6@J@>qtvms>)SZz#m*%irjbLNREr@J3?N)Au?KzSHh(pInM)Yt^2 zlqdUTXj~}tUU+sB^P{}oRZlV0TZKl_6k-sUHusU+sNf4bxcdu7qwT~FEZ07mw%oPdMa)mpdwqk@mtY^IK7KIu zA-Qg7(H|?BRf?y$$|-F355HDFbm7D!6A>?wO2vb2%SvVJ07+rG0bxmo@@Pi#McmsW zXmO1~xW?;h+eh+-E^RU^r;Vd}r^Q0shKtAO2w~5UE-l4NDPN2F4AxrKR#H|kbXOct zRZOj))A?d+^K|<40p6@seMZK)VFzL~azR2#LpCQp_SjGh_U<@E2y3TtF z0R8c;_)BVb+RJ{t&WOJePPT^ZdGhjKw?e!1raNQfaj?$d%W9pJjPB#QEXl$xR6b%k z_ao*+Ix>r#TA*uuqVRdz?G@y;)+;}w{V#R|gjUPt#Q9D^T-g9uaylC@Gt?5?rsnR-T|5WxCMigb6 zWq9^Fvh5gko|Lu&>|Ont0ea`3O*id*D6jQ{5Vg^FTKJeQ-IjXSC3W|)Fps) zZP|PNyyBIjZ4Co_H;-rU_w3r)UJ`chYFs5mnWF+{ZHtmCyd0-I^+`Ej49(y=Lt+?3i^IGN4Ny4@Gzrbl{8hv z$R7H-&71Iv8!c$@uGDU*giV_~B`QHUzMxR_CH@#j-LKKFJGTh=7Z&7yqx5@lPP0U4 zc9iotaxE{vIT(3dyQ9V!n}mrWC()ZyB*=ncvp-@tsLd z4L3psx%|CvWsmu6on+O+8bWJKMz`ZVX5%cZC#`!MpLVi*eq44IuWj!7dzbg&;MIbX z&cGU$1qRW0bU{% z{yS!?ZJku{v6%|`y?%LasKBT8)*lakld&jgMyOku7S-olOU*fbg}*C3EB;M)s<_88 zGST`IxmRE5d-`@n4svS}{TWra{z8fkZaD&o-{95R$f=PzB+-_#Fj&@?JZPD$c(Q!R=8kXdXSx}ixK$AO zp14s*$KQZWElCBxqU9atyVnO3KNF67j*b!opOlu6pTd(~rF*w6$t@aggh6_BlkR$! TO0=`{0?M%fW3$3$gAMpURTOSm From b38db9e72e026391d36e3ea8971f21666a5a423e Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Wed, 27 Apr 2022 23:05:22 +1200 Subject: [PATCH 02/36] latch verb --- .../species/station/protean/protean_blob.dm | 8 ++++ .../species/station/protean/protean_powers.dm | 46 +++++++++++++++++-- .../station/protean/protean_species.dm | 1 + 3 files changed, 52 insertions(+), 3 deletions(-) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index b84bec95e5..77991e1006 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -74,6 +74,7 @@ verbs |= /mob/living/simple_mob/protean_blob/proc/nano_blobform verbs |= /mob/living/simple_mob/protean_blob/proc/nano_rig_transform verbs |= /mob/living/simple_mob/protean_blob/proc/appearance_switch + verbs |= /mob/living/simple_mob/protean_blob/proc/nano_latch verbs -= /mob/living/simple_mob/proc/nutrition_heal else update_icon() @@ -117,6 +118,13 @@ set hidden = 1 humanform.appearance_switch() +/mob/living/simple_mob/protean_blob/proc/nano_latch() + set name = "Latch/Unlatch host" + set desc = "Allows a protean to forcibly latch or unlatch from a host." + set category = "Abilities" + set hidden = 1 + humanform.nano_latch() + /mob/living/simple_mob/protean_blob/Login() ..() plane_holder.set_vis(VIS_AUGMENTED, 1) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm index 507fe07f34..0794b5ade6 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm @@ -341,10 +341,10 @@ set category = "Abilities" set hidden = 1 var/datum/species/protean/S = src.species - var/mob/M = src + var/mob/living/caller = src if(temporary_form) - M = temporary_form - var/blobstyle = input(M, "Which blob style would you like?") in list("Red and Blue Stars", "Blue Star", "Plain") + caller = temporary_form + var/blobstyle = input(caller, "Which blob style would you like?") in list("Red and Blue Stars", "Blue Star", "Plain") switch(blobstyle) if("Red and Blue Stars") S.blob_appearance = "puddle2" @@ -361,6 +361,40 @@ var/obj/item/weapon/holder/protoblob/PB = temporary_form.loc PB.item_state = S.blob_appearance +/mob/living/carbon/human/proc/nano_latch() + set name = "Latch/Unlatch host" + set desc = "Allows a protean to forcibly latch or unlatch from a host." + set category = "Abilities" + set hidden = 1 + var/mob/living/caller = src + var/mob/living/carbon/human/target + var/datum/species/protean/S = src.species + if(temporary_form) + caller = temporary_form + if(caller.loc == S.OurRig) + target = S.OurRig.wearer + if(target) + target.drop_from_inventory(S.OurRig) + else + to_chat(caller, "You aren't being worn, dummy.") + return + var/obj/held_item = caller.get_active_hand() + if(istype(held_item,/obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = held_item + if(istype(G.affecting, target)) + if(G.loc == caller && G.state >= GRAB_AGGRESSIVE) + if(do_after(caller, 30, target)) + if(G.loc == caller && G.state >= GRAB_AGGRESSIVE) + caller.visible_message("[caller] latched onto [target]!", "You latch yourself onto [target]!") + target.Weaken(3) + nano_rig_transform() + target.drop_from_inventory(back) + target.equip_to_slot_if_possible(S.OurRig, slot_back) + else + to_chat(caller, "You can only latch onto humanoid mobs!") + else + to_chat(caller, "You need to be grabbing a humanoid mob aggressively to latch onto them.") + /// /// /// A helper to reuse /mob/living/proc/nano_get_refactory(obj/item/organ/internal/nano/refactory/R) if(istype(R)) @@ -453,4 +487,10 @@ icon_state = "rig" to_call = /mob/living/carbon/human/proc/appearance_switch +/obj/effect/protean_ability/latch_host + ability_name = "Latch Host" + desc = "Forcibly latch or unlatch your RIG from a host mob." + icon_state = "rig" + to_call = /mob/living/carbon/human/proc/nano_latch + #undef PER_LIMB_STEEL_COST diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm index 796db01e43..72bd99a3c4 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm @@ -90,6 +90,7 @@ /mob/living/carbon/human/proc/nano_blobform, /mob/living/carbon/human/proc/nano_rig_transform, /mob/living/carbon/human/proc/appearance_switch, + /mob/living/carbon/human/proc/nano_latch, /mob/living/proc/set_size, /mob/living/carbon/human/proc/nano_change_fitting, //These verbs are displayed normally, /mob/living/carbon/human/proc/shapeshifter_select_hair, From 0d5c751b22800b8fe5d97641039aaa9a9a853c7a Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Fri, 29 Apr 2022 19:52:10 +1200 Subject: [PATCH 03/36] beans --- .../species/station/protean/protean_blob.dm | 10 +++- .../species/station/protean/protean_powers.dm | 52 ++++++++++++------- 2 files changed, 43 insertions(+), 19 deletions(-) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index 77991e1006..dd7b81c2a7 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -71,6 +71,7 @@ verbs |= /mob/living/proc/usehardsuit verbs |= /mob/living/simple_mob/protean_blob/proc/nano_partswap verbs |= /mob/living/simple_mob/protean_blob/proc/nano_regenerate + verbs |= /mob/living/simple_mob/protean_blob/proc/nano_metalnom verbs |= /mob/living/simple_mob/protean_blob/proc/nano_blobform verbs |= /mob/living/simple_mob/protean_blob/proc/nano_rig_transform verbs |= /mob/living/simple_mob/protean_blob/proc/appearance_switch @@ -104,6 +105,13 @@ set hidden = 1 humanform.nano_blobform() +/mob/living/simple_mob/protean_blob/proc/nano_metalnom() + set name = "Ref - Store Metals" + set desc = "If you're holding a stack of material, you can consume some and store it for later." + set category = "Abilities" + set hidden = 1 + humanform.nano_metalnom() + /mob/living/simple_mob/protean_blob/proc/nano_rig_transform() set name = "Modify Form - Hardsuit" set desc = "Allows a protean to retract its mass into its hardsuit module at will." @@ -285,7 +293,7 @@ datum/riding/simple_mob/protean_blob/handle_vehicle_layer() else return ..() -/mob/living/simple_mob/protean_blob/death(gibbed, deathmessage = "dissolves away, leaving only a few spare parts!") +/mob/living/simple_mob/protean_blob/death(gibbed, deathmessage = "Coalesces inwards, retreating into their core componants") if(humanform) humanform.death(gibbed, deathmessage) else diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm index 0794b5ade6..cb681ecc24 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm @@ -203,15 +203,19 @@ set category = "Abilities" set hidden = 1 + var/mob/living/caller = src + if(temporary_form) + caller = temporary_form + var/obj/item/organ/internal/nano/refactory/refactory = nano_get_refactory() //Missing the organ that does this if(!istype(refactory)) - to_chat(src,"You don't have a working refactory module!") + to_chat(caller,"You don't have a working refactory module!") return - var/held = get_active_hand() + var/held = caller.get_active_hand() if(!istype(held,/obj/item/stack/material)) - to_chat(src,"You aren't holding a stack of materials in your active hand...!") + to_chat(caller,"You aren't holding a stack of materials in your active hand...!") return var/obj/item/stack/material/matstack = held @@ -220,23 +224,23 @@ for(var/material in PROTEAN_EDIBLE_MATERIALS) if(material == substance) allowed = 1 if(!allowed) - to_chat(src,"You can't process [substance]!") - return //Only a few things matter, the rest are best not cluttering the lists. + to_chat(caller,"You can't process [substance]!") + return - var/howmuch = input(src,"How much do you want to store? (0-[matstack.get_amount()])","Select amount") as null|num - if(!howmuch || matstack != get_active_hand() || howmuch > matstack.get_amount()) + var/howmuch = input(caller,"How much do you want to store? (0-[matstack.get_amount()])","Select amount") as null|num + if(!howmuch || matstack != caller.get_active_hand() || howmuch > matstack.get_amount()) return //Quietly fail var/actually_added = refactory.add_stored_material(substance,howmuch*matstack.perunit) matstack.use(CEILING((actually_added/matstack.perunit), 1)) if(actually_added && actually_added < howmuch) - to_chat(src,"Your refactory module is now full, so only [actually_added] units were stored.") - visible_message("[src] nibbles some of the [substance] right off the stack!") + to_chat(caller,"Your refactory module is now full, so only [actually_added] units were stored.") + visible_message("[caller] nibbles some of the [substance] right off the stack!") else if(actually_added) - to_chat(src,"You store [actually_added] units of [substance].") - visible_message("[src] devours some of the [substance] right off the stack!") + to_chat(caller,"You store [actually_added] units of [substance].") + visible_message("[caller] devours some of the [substance] right off the stack!") else - to_chat(src,"You're completely capped out on [substance]!") + to_chat(caller,"You're completely capped out on [substance]!") //// // Blob Form @@ -375,25 +379,37 @@ target = S.OurRig.wearer if(target) target.drop_from_inventory(S.OurRig) + to_chat(caller, "You detach from your host.") else - to_chat(caller, "You aren't being worn, dummy.") + to_chat(caller, "You aren't being worn, dummy.") return var/obj/held_item = caller.get_active_hand() if(istype(held_item,/obj/item/weapon/grab)) var/obj/item/weapon/grab/G = held_item - if(istype(G.affecting, target)) + if(istype(G.affecting, /mob/living/carbon/human)) + target = G.affecting + if(istype(target.species, /datum/species/protean)) + to_chat(caller, "You can't latch onto a fellow Protean!") if(G.loc == caller && G.state >= GRAB_AGGRESSIVE) - if(do_after(caller, 30, target)) + caller.visible_message("[caller] is attempting to latch onto [target]!", "You attempt to latch onto [target]!") + if(do_after(caller, 50, target)) if(G.loc == caller && G.state >= GRAB_AGGRESSIVE) + target.drop_from_inventory(target.back) caller.visible_message("[caller] latched onto [target]!", "You latch yourself onto [target]!") target.Weaken(3) nano_rig_transform() - target.drop_from_inventory(back) + spawn(2) //Have to give time for the above proc to resolve + S.OurRig.forceMove(target) target.equip_to_slot_if_possible(S.OurRig, slot_back) + S.OurRig.Moved() + spawn(1) //Same here :( + S.OurRig.wearer = target + else + to_chat(caller, "You need a more aggressive grab to do this!") else - to_chat(caller, "You can only latch onto humanoid mobs!") + to_chat(caller, "You can only latch onto humanoid mobs!") else - to_chat(caller, "You need to be grabbing a humanoid mob aggressively to latch onto them.") + to_chat(caller, "You need to be grabbing a humanoid mob aggressively to latch onto them.") /// /// /// A helper to reuse /mob/living/proc/nano_get_refactory(obj/item/organ/internal/nano/refactory/R) From 232c0c580699f585715b4b0bdefdad43b91cc699 Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Sat, 30 Apr 2022 02:10:51 +1200 Subject: [PATCH 04/36] some rig stuff --- code/modules/clothing/spacesuits/rig/rig.dm | 7 ++++--- .../human/species/station/protean/protean_blob.dm | 4 ++++ .../human/species/station/protean/protean_powers.dm | 4 ++-- .../human/species/station/protean/protean_rig.dm | 12 ++++++++++++ 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 148fab5d3c..6c2ae7f179 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -921,9 +921,13 @@ return //CHOMP Addition - Added this for protean living hardsuit + wearer_move_delay = world.time + 2 if(ai_moving) if(!ai_can_move_suit(user, check_user_module = 1)) return + // AIs are a bit slower than regular and ignore move intent. + //CHOMPEdit - Moved this to where it's relevant + wearer_move_delay = world.time + ai_controlled_move_delay //This is sota the goto stop mobs from moving var if(wearer.transforming || !wearer.canmove) @@ -955,9 +959,6 @@ to_chat(src, "Your host is pinned to a wall by [wearer.pinned[1]]!") return 0 - // AIs are a bit slower than regular and ignore move intent. - wearer_move_delay = world.time + ai_controlled_move_delay - if(istype(wearer.buckled, /obj/vehicle)) //manually set move_delay for vehicles so we don't inherit any mob movement penalties //specific vehicle move delays are set in code\modules\vehicles\vehicle.dm diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index dd7b81c2a7..842cbe9c4c 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -314,6 +314,10 @@ datum/riding/simple_mob/protean_blob/handle_vehicle_layer() /mob/living/simple_mob/protean_blob/lay_down() ..() + var/obj/item/weapon/rig/rig = src.get_rig() + if(rig) + rig.force_rest(src) + return if(resting) mouse_opacity = 0 plane = ABOVE_OBJ_PLANE diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm index cb681ecc24..0c15c0d737 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm @@ -318,12 +318,12 @@ perform_the_nom(P,victim,P,P.vore_selected,1) P.forceMove(get_turf(S.OurRig)) S.OurRig.forceMove(src) - S.OurRig.myprotean = null + S.OurRig.myprotean = src src.equip_to_slot_if_possible(S.OurRig, slot_back) S.OurRig.Moved() P.has_hands = 1 else //We're not in our own RIG - if(P.stat) + if(P.stat || P.resting) to_chat(P,"You can only do this while not stunned.") else if(P.l_hand) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index c75b8d9cda..79413cf142 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -349,6 +349,18 @@ AssimilateBag(user,0,W) ..() +/obj/item/weapon/rig/protean/take_hit(damage, source, is_emp=0) + return //We don't do that here + +/obj/item/weapon/rig/protean/emp_act(severity_class) + return //Same here + +/obj/item/weapon/rig/protean/cut_suit() + return //nope + +/obj/item/weapon/rig/protean/force_rest(var/mob/user) + wearer.lay_down() + to_chat(user, "\The [wearer] is now [wearer.resting ? "resting" : "getting up"].") /obj/item/weapon/cell/protean name = "Protean power cell" From 921c3f602a797336c37496befc756fd70ce7766a Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Sun, 8 May 2022 00:27:17 +1200 Subject: [PATCH 05/36] Protean Death Handler --- .../species/station/protean/protean_blob.dm | 10 ++-- .../species/station/protean/protean_organs.dm | 19 ++++---- .../species/station/protean/protean_powers.dm | 45 ++++++++++++++---- .../species/station/protean/protean_rig.dm | 40 ++++++++++++++++ .../station/protean/protean_species.dm | 43 ++++++++++------- .../icons/mob/species/protean/protean.dmi | Bin 17219 -> 23804 bytes 6 files changed, 120 insertions(+), 37 deletions(-) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index 842cbe9c4c..dfe5c14c1f 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -185,6 +185,8 @@ datum/riding/simple_mob/protean_blob/handle_vehicle_layer() humanform.species.Stat(humanform) /mob/living/simple_mob/protean_blob/updatehealth() + if(humanform.nano_dead_check(src)) + return if(!humanform) return ..() @@ -196,7 +198,7 @@ datum/riding/simple_mob/protean_blob/handle_vehicle_layer() //Alive, becoming dead if((stat < DEAD) && (health <= 0)) - death() + humanform.death() nutrition = humanform.nutrition @@ -338,6 +340,7 @@ datum/riding/simple_mob/protean_blob/handle_vehicle_layer() target.forceMove(vore_selected) to_chat(target,"\The [src] quickly engulfs you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!") +/* Don't need this block anymore since our Prots have hands /mob/living/simple_mob/protean_blob/attack_target(var/atom/A) if(refactory && istype(A,/obj/item/stack/material)) var/obj/item/stack/material/S = A @@ -367,6 +370,7 @@ datum/riding/simple_mob/protean_blob/handle_vehicle_layer() I.forceMove(vore_selected) else return ..() +*/ /mob/living/simple_mob/protean_blob/attackby(var/obj/item/O, var/mob/user) if(refactory && istype(O,/obj/item/stack/material)) @@ -408,9 +412,7 @@ var/global/list/disallowed_protean_accessories = list( // Helpers - Unsafe, WILL perform change. /mob/living/carbon/human/proc/nano_intoblob(force) - if(loc == /obj/item/weapon/rig/protean) - return - if(!force && !isturf(loc)) + if(!force && !isturf(loc) && !loc == /obj/item/weapon/rig/protean) to_chat(src,"You can't change forms while inside something.") return diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm index 54174b54d5..445d581463 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm @@ -23,60 +23,63 @@ /obj/item/organ/external/arm/unbreakable/nano robotic = ORGAN_NANOFORM encased = FALSE - max_damage = 100 + max_damage = 65 min_broken_damage = 1000 //Please vital = FALSE model = "protean" /obj/item/organ/external/arm/right/unbreakable/nano robotic = ORGAN_NANOFORM encased = FALSE - max_damage = 100 + max_damage = 65 min_broken_damage = 1000 vital = FALSE model = "protean" /obj/item/organ/external/leg/unbreakable/nano robotic = ORGAN_NANOFORM encased = FALSE - max_damage = 100 + max_damage = 65 min_broken_damage = 1000 vital = FALSE model = "protean" /obj/item/organ/external/leg/right/unbreakable/nano robotic = ORGAN_NANOFORM encased = FALSE - max_damage = 100 + max_damage = 65 min_broken_damage = 1000 vital = FALSE model = "protean" /obj/item/organ/external/hand/unbreakable/nano robotic = ORGAN_NANOFORM encased = FALSE - max_damage = 100 + max_damage = 65 min_broken_damage = 1000 vital = FALSE model = "protean" /obj/item/organ/external/hand/right/unbreakable/nano robotic = ORGAN_NANOFORM encased = FALSE - max_damage = 100 + max_damage = 65 min_broken_damage = 1000 vital = FALSE model = "protean" /obj/item/organ/external/foot/unbreakable/nano robotic = ORGAN_NANOFORM encased = FALSE - max_damage = 100 + max_damage = 65 min_broken_damage = 1000 vital = FALSE model = "protean" /obj/item/organ/external/foot/right/unbreakable/nano robotic = ORGAN_NANOFORM encased = FALSE - max_damage = 100 + max_damage = 65 min_broken_damage = 1000 vital = FALSE model = "protean" +/obj/item/organ/external/head/unbreakable/nano/disfigure() + return //No way to repair disfigured prots + // // // Internal Organs /obj/item/organ/internal/nano robotic = ORGAN_ROBOT diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm index 0c15c0d737..cca67ca871 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm @@ -12,6 +12,9 @@ var/mob/living/caller = src if(temporary_form) caller = temporary_form + if(nano_dead_check(caller)) + to_chat(caller, "You need to be repaired first before you can act!") + return if(stat) to_chat(caller,"You must be awake and standing to perform this action!") return @@ -206,6 +209,9 @@ var/mob/living/caller = src if(temporary_form) caller = temporary_form + if(nano_dead_check(caller)) + to_chat(caller, "You need to be repaired first before you can act!") + return var/obj/item/organ/internal/nano/refactory/refactory = nano_get_refactory() //Missing the organ that does this @@ -245,17 +251,24 @@ //// // Blob Form //// -/mob/living/carbon/human/proc/nano_blobform() +/mob/living/carbon/human/proc/nano_blobform(var/forced) set name = "Toggle Blobform" set desc = "Switch between amorphous and humanoid forms." set category = "Abilities" set hidden = 1 + if(nano_dead_check(src)) + return + if(forced) + if(temporary_form) + nano_outofblob(temporary_form, forced) + else + nano_intoblob(forced) + return var/atom/movable/to_locate = temporary_form || src - if(!isturf(to_locate.loc)) + if(!isturf(to_locate.loc) && !forced) to_chat(to_locate,"You need more space to perform this action!") return - //Blob form if(temporary_form) if(temporary_form.stat) @@ -294,16 +307,19 @@ //// // Rig Transform //// -/mob/living/carbon/human/proc/nano_rig_transform() +/mob/living/carbon/human/proc/nano_rig_transform(var/forced) set name = "Modify Form - Hardsuit" set desc = "Allows a protean to retract its mass into its hardsuit module at will." set category = "Abilities" set hidden = 1 - if(!temporary_form) //If you're human, force you into blob form before rig'ing - nano_blobform() - spawn(2) + if(nano_dead_check(src)) + to_chat(temporary_form, "You need to be repaired first before you can act!") + return + if(!temporary_form) //If you're human, force you into blob form before rig'ing + nano_blobform(forced) + spawn(2) if(istype(src.species, /datum/species/protean)) var/datum/species/protean/S = src.species @@ -323,7 +339,7 @@ S.OurRig.Moved() P.has_hands = 1 else //We're not in our own RIG - if(P.stat || P.resting) + if(P.stat || P.resting && !forced) to_chat(P,"You can only do this while not stunned.") else if(P.l_hand) @@ -373,6 +389,8 @@ var/mob/living/caller = src var/mob/living/carbon/human/target var/datum/species/protean/S = src.species + if(nano_dead_check(src)) + return if(temporary_form) caller = temporary_form if(caller.loc == S.OurRig) @@ -427,7 +445,18 @@ /mob/living/carbon/human/nano_get_refactory() return ..(locate(/obj/item/organ/internal/nano/refactory) in internal_organs) +//I hate this whole bit but I want proteans to be able to "die" and still be "alive" in their blob as a suit +/mob/living/carbon/human/proc/nano_dead_check(var/mob/living/caller) + if(istype(src.species, /datum/species/protean)) + var/datum/species/protean/S = src.species + if(S.pseudodead) + return 1 + return 0 +/mob/living/carbon/human/proc/nano_set_dead(var/num) + if(istype(src.species, /datum/species/protean)) + var/datum/species/protean/S = src.species + S.pseudodead = num /// /// /// Ability objects for stat panel /obj/effect/protean_ability diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index 79413cf142..a65480506a 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -24,6 +24,7 @@ offline_vision_restriction = 0 open = 1 cell_type = /obj/item/weapon/cell/protean + var/dead = 0 /obj/item/weapon/rig/protean/relaymove(mob/user, var/direction) if(user.stat || user.stunned) @@ -340,6 +341,16 @@ for(var/obj/item/rig_module/module in installed_modules) if(module.accepts_item(W,user)) //Item is handled in this proc return + if(dead) + if(istype(W, /obj/item/stack/material/plasteel)) + var/obj/item/stack/material/plasteel/PL = W + if(PL.get_amount() < 5) + to_chat(user, "You need five sheets of plasteel to reconstruct this Protean.") + return + if(PL.use(5)) + to_chat(user, "You feed plasteel to the Protean, they will be able to reconstitute now.") + make_alive(myprotean) + return if(rig_storage) var/obj/item/weapon/storage/backpack = rig_storage if(backpack.can_be_inserted(W, 1)) @@ -349,6 +360,35 @@ AssimilateBag(user,0,W) ..() +/obj/item/weapon/rig/protean/proc/make_alive(var/mob/living/simple_mob/protean_blob/P) + var/mob/living/carbon/human/H + var/datum/species/protean/S + if(P.humanform) + H = P.humanform + H.setToxLoss(0) + H.setOxyLoss(0) + H.setCloneLoss(0) + H.setBrainLoss(0) + H.SetParalysis(0) + H.SetStunned(0) + H.SetWeakened(0) + H.blinded = 0 + H.SetBlinded(0) + H.eye_blurry = 0 + H.ear_deaf = 0 + H.ear_damage = 0 + H.heal_overall_damage(H.getBruteLoss(), H.getFireLoss(), 1) + dead_mob_list.Remove(H) + living_mob_list += H + H.tod = null + H.timeofdeath = 0 + H.set_stat(CONSCIOUS) + if(istype(H.species, /datum/species/protean)) + S = H.species + S.pseudodead = 0 + dead = 0 + to_chat(P, "You've been fed the necessary plasteel to reconstitute your form, you can act again!") + /obj/item/weapon/rig/protean/take_hit(damage, source, is_emp=0) return //We don't do that here diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm index 72bd99a3c4..fbcbf87828 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm @@ -29,18 +29,19 @@ male_scream_sound = null female_scream_sound = null - virus_immune = 1 - blood_volume = 0 - min_age = 18 - max_age = 200 - oxy_mod = 0 - radiation_mod = 0 //Can't be assed with fandangling rad protections while blob formed/suited + virus_immune = 1 + blood_volume = 0 + min_age = 18 + max_age = 200 + oxy_mod = 0 + radiation_mod = 0 //Can't be assed with fandangling rad protections while blob formed/suited darksight = 10 + siemens_coefficient = 2 + emp_dmg_mod = 1.4 hazard_low_pressure = -1 //Space doesn't bother them hazard_high_pressure = INFINITY //consistency - //Cold/heat does affect them, but it's done in special ways below - //No it isn't? cold_level_1 = -INFINITY cold_level_2 = -INFINITY cold_level_3 = -INFINITY @@ -112,6 +113,8 @@ var/blob_appearance = "puddle2" + var/pseudodead = 0 + /datum/species/protean/New() ..() if(!LAZYLEN(abilities)) @@ -174,14 +177,20 @@ /datum/species/protean/handle_death(var/mob/living/carbon/human/H) if(!H) - return // Iono! - + return //No body? + var/mob/temp = H if(H.temporary_form) - H.forceMove(H.temporary_form.drop_location()) - H.ckey = H.temporary_form.ckey - QDEL_NULL(H.temporary_form) - - to_chat(H, "You died as a Protean. Please sit out of the round for at least 5 or 10 minutes before respawning, to represent the time it would take to ship a new-you to the station, depending on how you died.") + temp = H.temporary_form + playsound(temp, 'modular_chomp/sound/voice/borg_deathsound.ogg', 50, 1) + temp.visible_message("[temp.name] shudders and retreats inwards, coalescing into a single core componant!") + to_chat(temp, "You've died as a Protean! While dead, you will be locked to your core RIG control module until you can be repaired. You will need to be fed 5 sheets of plasteel in order to reshape yourself.") + if(H.temporary_form) + if(!istype(H.temporary_form.loc, /obj/item/weapon/rig/protean)) + H.nano_rig_transform(1) + else + H.nano_rig_transform(1) + OurRig.dead = 1 + pseudodead = 1 /datum/species/protean/handle_environment_special(var/mob/living/carbon/human/H) if((H.getActualBruteLoss() + H.getActualFireLoss()) > H.maxHealth*0.5 && isturf(H.loc)) //So, only if we're not a blob (we're in nullspace) or in someone (or a locker, really, but whatever) @@ -317,8 +326,9 @@ CHOMP Removal end*/ material_name = MAT_STEEL /datum/modifier/protean/steel/tick() - holder.adjustBruteLoss(-1,include_robo = TRUE) //Modified by species resistances - holder.adjustFireLoss(-1,include_robo = TRUE) //Modified by species resistances + holder.adjustBruteLoss(-1,include_robo = TRUE) + holder.adjustFireLoss(-1,include_robo = TRUE) + holder.adjustToxLoss(-1) var/mob/living/carbon/human/H = holder for(var/obj/item/organ/O as anything in H.internal_organs) // Fix internal damage @@ -328,7 +338,6 @@ CHOMP Removal end*/ else if(O.status & ORGAN_DEAD) O.status &= ~ORGAN_DEAD //Unset dead if we repaired it entirely - // PAN Card /obj/item/clothing/accessory/permit/nanotech name = "\improper P.A.N. card" diff --git a/modular_chomp/icons/mob/species/protean/protean.dmi b/modular_chomp/icons/mob/species/protean/protean.dmi index 297432003c25b6874bee247eea8b8a9912283d41..075c3fb0372d4c0648ca53f7fae04159ac486121 100644 GIT binary patch literal 23804 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 DPxQ6J literal 17219 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 nvNXMIL~e)yQolrQBG}cjmG|F&>(KuTB2p@n From 611c228c947135817221e214a15331bcc678d8f4 Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Sun, 8 May 2022 19:58:09 +1200 Subject: [PATCH 06/36] Fixes protean death loop and mob melee targeting --- code/modules/mob/mob_helpers.dm | 4 ++-- .../carbon/human/species/station/protean/protean_rig.dm | 2 +- .../carbon/human/species/station/protean/protean_species.dm | 4 +++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 1777e1578a..9ddbc4e67f 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -621,7 +621,7 @@ var/list/global/base_miss_chance = list( //Also used to weight the protection value that armour provides for covering that body part when calculating protection from full-body effects. var/list/global/organ_rel_size = list( "head" = 25, - "chest" = 70, + "torso" = 70, "groin" = 30, "l_leg" = 25, "r_leg" = 25, @@ -631,7 +631,7 @@ var/list/global/organ_rel_size = list( "r_hand" = 10, "l_foot" = 10, "r_foot" = 10, -) +) //CHOMPEDIT - Changed "chest" to "torso", as chest is a typo. How long has this bug been here? /mob/proc/flash_eyes(intensity = FLASH_PROTECTION_MODERATE, override_blindness_check = FALSE, affect_silicon = FALSE, visual = FALSE, type = /obj/screen/fullscreen/flash) return diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index a65480506a..2b43b91aaf 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -377,7 +377,7 @@ H.eye_blurry = 0 H.ear_deaf = 0 H.ear_damage = 0 - H.heal_overall_damage(H.getBruteLoss(), H.getFireLoss(), 1) + H.heal_overall_damage(H.getActualBruteLoss(), H.getActualFireLoss(), 1) dead_mob_list.Remove(H) living_mob_list += H H.tod = null diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm index fbcbf87828..53a6a0fef7 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm @@ -178,6 +178,9 @@ /datum/species/protean/handle_death(var/mob/living/carbon/human/H) if(!H) return //No body? + if(OurRig.dead) + return + OurRig.dead = 1 var/mob/temp = H if(H.temporary_form) temp = H.temporary_form @@ -189,7 +192,6 @@ H.nano_rig_transform(1) else H.nano_rig_transform(1) - OurRig.dead = 1 pseudodead = 1 /datum/species/protean/handle_environment_special(var/mob/living/carbon/human/H) From afe6d88de24d8015b0afbe91a59b157848618c21 Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Sat, 20 Aug 2022 09:48:09 +1200 Subject: [PATCH 07/36] Back to work. Protean rig interface. --- .../species/station/protean/protean_blob.dm | 29 +++- .../species/station/protean/protean_powers.dm | 4 +- .../species/station/protean/protean_rig.dm | 49 +++++-- .../station/protean/protean_rig_tgui.dm | 127 ++++++++++++++++++ vorestation.dme | 1 + 5 files changed, 194 insertions(+), 16 deletions(-) create mode 100644 modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig_tgui.dm diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index dfe5c14c1f..7317d2fbf4 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -506,16 +506,15 @@ var/global/list/disallowed_protean_accessories = list( if(istype(loc, /obj/item/weapon/rig/protean)) var/obj/item/weapon/rig/protean/prig = loc to_chat(src, "You attempt to interface with the [prig].") - prig.ui_interact(src, interactive_state) + prig.tgui_interact(src) else to_chat(src, "You are not in RIG form.") -//CHOMP Add end /mob/living/carbon/human/proc/nano_outofblob(var/mob/living/simple_mob/protean_blob/blob, force) if(!istype(blob)) return - if(blob.loc == /obj/item/weapon/rig/protean) //CHOMP Add - return //CHOMP Add + if(blob.loc == /obj/item/weapon/rig/protean) + return if(!force && !isturf(blob.loc)) to_chat(blob,"You can't change forms while inside something.") return @@ -589,4 +588,24 @@ var/global/list/disallowed_protean_accessories = list( /mob/living/carbon/human/proc/nano_set_panel(var/client/C) if(C) - C.statpanel = "Protean" \ No newline at end of file + C.statpanel = "Protean" + +/mob/living/simple_mob/protean_blob/ClickOn(var/atom/A, var/params) + if(istype(loc, /obj/item/weapon/rig/protean)) + HardsuitClickOn(A) + ..() + +/mob/living/simple_mob/protean_blob/can_use_rig() + return 1 + +/mob/living/simple_mob/protean_blob/HardsuitClickOn(var/atom/A, var/alert_ai = 0) + if(istype(loc, /obj/item/weapon/rig/protean)) + var/obj/item/weapon/rig/protean/prig = loc + if(istype(prig) && !prig.offline && prig.selected_module) + if(!prig.ai_can_move_suit(src)) + return 0 + prig.selected_module.engage(A, alert_ai) + if(ismob(A)) // No instant mob attacking - though modules have their own cooldowns + setClickCooldown(get_attack_speed()) + return 1 + return 0 \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm index f75c11e914..5e4f2ac87f 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm @@ -350,9 +350,10 @@ S.OurRig.myprotean = P src.drop_from_inventory(S.OurRig) P.forceMove(S.OurRig) + S.OurRig.canremove = 1 P.reset_view() else //Make one if not - to_chat(temporary_form, "Somehow, your RIG got disconnected from your species. A new one has been created for you, contact a coder.") + to_chat(temporary_form, "Somehow, your RIG got disconnected from your species. This may have been caused by an admin heal. A new one has been created for you, contact a coder.") new /obj/item/weapon/rig/protean(src,src) /mob/living/carbon/human/proc/appearance_switch() @@ -408,6 +409,7 @@ target = G.affecting if(istype(target.species, /datum/species/protean)) to_chat(caller, "You can't latch onto a fellow Protean!") + return if(G.loc == caller && G.state >= GRAB_AGGRESSIVE) caller.visible_message("[caller] is attempting to latch onto [target]!", "You attempt to latch onto [target]!") if(do_after(caller, 50, target)) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index 2b43b91aaf..79618a432e 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -19,12 +19,14 @@ boot_type = /obj/item/clothing/shoes/magboots/rig/protean chest_type = /obj/item/clothing/suit/space/rig/protean glove_type = /obj/item/clothing/gloves/gauntlets/rig/protean - canremove = 0 protean = 1 offline_vision_restriction = 0 open = 1 cell_type = /obj/item/weapon/cell/protean var/dead = 0 + //interface_path = "RIGSuit_protean" + //ai_interface_path = "RIGSuit_protean" + var/sealed = 0 /obj/item/weapon/rig/protean/relaymove(mob/user, var/direction) if(user.stat || user.stunned) @@ -48,6 +50,7 @@ else to_chat(P, "You should have spawned with a backpack to assimilate into your RIG. Try clicking it with a backpack.") + verbs += /obj/item/weapon/rig/verb/RemoveBag ..(newloc) /obj/item/weapon/rig/proc/AssimilateBag(var/mob/living/carbon/human/P, var/spawned, var/obj/item/weapon/storage/backpack/B) @@ -57,18 +60,28 @@ P.unEquip(P.back) B.forceMove(src) rig_storage = B - rig_storage.max_w_class = ITEMSIZE_LARGE - rig_storage.max_storage_space = INVENTORY_STANDARD_SPACE P.drop_item(B) - to_chat(P, "Your [B] has been integrated into your rigsuit.") - P.equip_to_slot_if_possible(src, slot_back) + to_chat(P, "[B] has been integrated into the [src].") + if(spawned) //This feels very dumb to have a second if but I'm lazy + P.equip_to_slot_if_possible(src, slot_back) src.Moved() else to_chat(P,"Your rigsuit can only assimilate a backpack into itself. If you are seeing this message, and you do not have a rigsuit, tell a coder.") +/obj/item/weapon/rig/verb/RemoveBag(var/mob/living/L) + set name = "Remove Stored Bag" + set category = "Object" + + if(rig_storage) + L.put_in_hands(rig_storage) + rig_storage = null + else + to_chat(L, "This Rig does not have a bag installed. Use a bag on it to install one.") + /obj/item/weapon/rig/protean/attack_hand(mob/user as mob) if (src.loc == user) - src.rig_storage.open(user) + if(rig_storage) + src.rig_storage.open(user) else ..() for(var/mob/M in range(1)) @@ -80,7 +93,6 @@ /obj/item/clothing/head/helmet/space/rig/protean name = "mass" desc = "A helmet-shaped clump of nanomachines." - siemens_coefficient= 0 light_overlay = "should not use a light overlay" species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) //CHOMPEDIT: adding more races to the proto rig @@ -93,13 +105,11 @@ /obj/item/clothing/shoes/magboots/rig/protean name = "mass" desc = "Boot-shaped clusters of nanomachines." - siemens_coefficient= 0 species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) //CHOMPEDIT: adding more races to the proto rig /obj/item/clothing/suit/space/rig/protean name = "mass" desc = "A body-hugging mass of nanomachines." - siemens_coefficient= 0 can_breach = 0 species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) allowed = list( @@ -428,4 +438,23 @@ give(charge_amount) charger.nutrition -= ((1/200)*(charge - C)) //Take nutrition relative to charge. Change the 1/200 if you want to alter the nutrition to charge ratio else - return PROCESS_KILL \ No newline at end of file + return PROCESS_KILL + + +/obj/item/weapon/rig/protean/equipped(mob/living/carbon/human/M) + ..() + if(dead) + canremove = 1 + else + canremove = 0 + +/obj/item/weapon/rig/protean/ai_can_move_suit(var/mob/user) + if(offline || !cell || !cell.charge || locked_down) + if(user) + to_chat(user, "Your host rig is unpowered and unresponsive.") + return 0 + if(!wearer || (wearer.back != src && wearer.belt != src)) + if(user) + to_chat(user, "Your host rig is not being worn.") + return 0 + return 1 \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig_tgui.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig_tgui.dm new file mode 100644 index 0000000000..85b4870c4f --- /dev/null +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig_tgui.dm @@ -0,0 +1,127 @@ +/* +It's a bit snowflake, but some rigsuit rewriting was necessary to achieved what I wanted +for protean rigsuits, and rolling these changes into the base RIGsuit code would definitely create +merge conflicts down the line. +So here it sits, snowflake code for a single item. +*/ + +/obj/item/weapon/rig/protean/tgui_state(mob/user) + return GLOB.tgui_always_state + +/obj/item/weapon/rig/protean/tgui_data(mob/user) + var/list/data = list() + + if(selected_module) + data["primarysystem"] = "[selected_module.interface_name]" + else + data["primarysystem"] = null + + if(loc != user) + data["ai"] = TRUE + else + data["ai"] = FALSE + + data["cooling"] = cooling_on + data["sealed"] = !sealed + data["sealing"] = sealing + data["helmet"] = (helmet ? "[helmet.name]" : "None.") + data["gauntlets"] = (gloves ? "[gloves.name]" : "None.") + data["boots"] = (boots ? "[boots.name]" : "None.") + data["chest"] = (chest ? "[chest.name]" : "None.") + + data["helmetDeployed"] = (helmet && helmet.loc == loc) + data["gauntletsDeployed"] = (gloves && gloves.loc == loc) + data["bootsDeployed"] = (boots && boots.loc == loc) + data["chestDeployed"] = (chest && chest.loc == loc) + + data["charge"] = cell ? round(cell.charge,1) : 0 + data["maxcharge"] = cell ? cell.maxcharge : 0 + data["chargestatus"] = cell ? FLOOR((cell.charge/cell.maxcharge)*50, 1) : 0 + + data["emagged"] = subverted + data["coverlock"] = locked + data["interfacelock"] = interface_locked + data["aicontrol"] = control_overridden + data["aioverride"] = ai_override_enabled + data["securitycheck"] = security_check_enabled + data["malf"] = malfunction_delay + + var/list/module_list = list() + if(!canremove && !sealing) + var/i = 1 + for(var/obj/item/rig_module/module in installed_modules) + var/list/module_data = list( + "index" = i, + "name" = "[module.interface_name]", + "desc" = "[module.interface_desc]", + "can_use" = module.usable, + "can_select" = module.selectable, + "can_toggle" = module.toggleable, + "is_active" = module.active, + "engagecost" = module.use_power_cost*10, + "activecost" = module.active_power_cost*10, + "passivecost" = module.passive_power_cost*10, + "engagestring" = module.engage_string, + "activatestring" = module.activate_string, + "deactivatestring" = module.deactivate_string, + "damage" = module.damage + ) + + if(module.charges && module.charges.len) + module_data["charges"] = list() + var/datum/rig_charge/selected = module.charges["[module.charge_selected]"] + module_data["realchargetype"] = module.charge_selected + module_data["chargetype"] = selected ? "[selected.display_name]" : "none" + + for(var/chargetype in module.charges) + var/datum/rig_charge/charge = module.charges[chargetype] + module_data["charges"] += list(list("caption" = "[charge.display_name] ([charge.charges])", "index" = "[chargetype]")) + + module_list += list(module_data) + i++ + + if(module_list.len) + data["modules"] = module_list + else + data["modules"] = list() + + return data + +/obj/item/weapon/rig/protean/tgui_act(action, params) + switch(action) + if("toggle_seals") + toggle_seals(wearer) + . = TRUE + if("toggle_cooling") + toggle_cooling(wearer) + . = TRUE + if("toggle_ai_control") + to_chat(usr, "Proteans cannot be AI controlled.") + . = TRUE + if("toggle_suit_lock") + locked = !locked + . = TRUE + if("toggle_piece") + toggle_piece(params["piece"], wearer) + . = TRUE + if("interact_module") + var/module_index = text2num(params["module"]) + + if(module_index > 0 && module_index <= installed_modules.len) + var/obj/item/rig_module/module = installed_modules[module_index] + switch(params["module_mode"]) + if("select") + selected_module = module + . = TRUE + if("engage") + module.engage() + . = TRUE + if("toggle") + if(module.active) + module.deactivate() + else + module.activate() + . = TRUE + if("select_charge_type") + module.charge_selected = params["charge_type"] + . = TRUE \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index 8bfc07e1e8..95d9727e3f 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4496,6 +4496,7 @@ #include "modular_chomp\code\modules\mob\living\carbon\human\species\station\protean\protean_organs.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\species\station\protean\protean_powers.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\species\station\protean\protean_rig.dm" +#include "modular_chomp\code\modules\mob\living\carbon\human\species\station\protean\protean_rig_tgui.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\species\station\protean\protean_species.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\simple_mob.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\simple_mob_abilities.dm" From e19cc2ebfff1150372c0441b0580e2b3e538953b Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Sat, 20 Aug 2022 19:35:05 +1200 Subject: [PATCH 08/36] some fixes --- .../species/station/protean/protean_rig.dm | 44 +++++++++++++------ .../station/protean/protean_rig_tgui.dm | 5 ++- 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index 79618a432e..3e7be7feae 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -27,6 +27,7 @@ //interface_path = "RIGSuit_protean" //ai_interface_path = "RIGSuit_protean" var/sealed = 0 + var/reviving = 0 /obj/item/weapon/rig/protean/relaymove(mob/user, var/direction) if(user.stat || user.stunned) @@ -68,15 +69,15 @@ else to_chat(P,"Your rigsuit can only assimilate a backpack into itself. If you are seeing this message, and you do not have a rigsuit, tell a coder.") -/obj/item/weapon/rig/verb/RemoveBag(var/mob/living/L) +/obj/item/weapon/rig/verb/RemoveBag() set name = "Remove Stored Bag" set category = "Object" if(rig_storage) - L.put_in_hands(rig_storage) + usr.put_in_hands(rig_storage) rig_storage = null else - to_chat(L, "This Rig does not have a bag installed. Use a bag on it to install one.") + to_chat(usr, "This Rig does not have a bag installed. Use a bag on it to install one.") /obj/item/weapon/rig/protean/attack_hand(mob/user as mob) if (src.loc == user) @@ -354,13 +355,17 @@ if(dead) if(istype(W, /obj/item/stack/material/plasteel)) var/obj/item/stack/material/plasteel/PL = W - if(PL.get_amount() < 5) - to_chat(user, "You need five sheets of plasteel to reconstruct this Protean.") - return - if(PL.use(5)) - to_chat(user, "You feed plasteel to the Protean, they will be able to reconstitute now.") - make_alive(myprotean) - return + if(!reviving) + if(PL.get_amount() < 5) + to_chat(user, "You need five sheets of plasteel to reconstruct this Protean.") + return + if(PL.use(5)) + to_chat(user, "You feed plasteel to the Protean, they will be able to reconstitute in a minute from now.") + to_chat(myprotean, "You've been fed the necessary plasteel to reconstitute your form, you will be able to reconstitute in one minute.") + addtimer(CALLBACK(src, .proc/make_alive, myprotean), 600) + return + else + to_chat(user, "This Protean is already reconstituting") if(rig_storage) var/obj/item/weapon/storage/backpack = rig_storage if(backpack.can_be_inserted(W, 1)) @@ -397,7 +402,8 @@ S = H.species S.pseudodead = 0 dead = 0 - to_chat(P, "You've been fed the necessary plasteel to reconstitute your form, you can act again!") + reviving = 0 + to_chat(P, "You have finished reconstituting.") /obj/item/weapon/rig/protean/take_hit(damage, source, is_emp=0) return //We don't do that here @@ -448,7 +454,7 @@ else canremove = 0 -/obj/item/weapon/rig/protean/ai_can_move_suit(var/mob/user) +/obj/item/weapon/rig/protean/ai_can_move_suit(mob/user, check_user_module = 0, check_for_ai = 0) if(offline || !cell || !cell.charge || locked_down) if(user) to_chat(user, "Your host rig is unpowered and unresponsive.") @@ -457,4 +463,16 @@ if(user) to_chat(user, "Your host rig is not being worn.") return 0 - return 1 \ No newline at end of file + return 1 + +/obj/item/weapon/rig/protean/toggle_seals(mob/living/carbon/human/M, instant) + M = src.wearer + ..() + +/obj/item/weapon/rig/protean/toggle_cooling(mob/user) + user = src.wearer + ..() + +/obj/item/weapon/rig/protean/toggle_piece(piece, mob/living/carbon/human/H, deploy_mode, forced) + H = src.wearer + ..() \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig_tgui.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig_tgui.dm index 85b4870c4f..4abad5b966 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig_tgui.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig_tgui.dm @@ -86,7 +86,7 @@ So here it sits, snowflake code for a single item. data["modules"] = list() return data - +/* /obj/item/weapon/rig/protean/tgui_act(action, params) switch(action) if("toggle_seals") @@ -124,4 +124,5 @@ So here it sits, snowflake code for a single item. . = TRUE if("select_charge_type") module.charge_selected = params["charge_type"] - . = TRUE \ No newline at end of file + . = TRUE +*/ \ No newline at end of file From 44edd5178b6988018a3a4f455e4a2f5f4fc313f2 Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Tue, 23 Aug 2022 00:09:10 +1200 Subject: [PATCH 09/36] Protean Tankiness nerf --- .../mob/living/carbon/human/human_damage.dm | 14 +++++------ .../species/station/protean/protean_organs.dm | 24 +++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 645d563ad0..9d5d9e42f9 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -10,7 +10,7 @@ var/total_burn = 0 var/total_brute = 0 for(var/obj/item/organ/external/O in organs) //hardcoded to streamline things a bit - if((O.robotic >= ORGAN_ROBOT) && !O.vital) + if((O.robotic >= ORGAN_ROBOT) && !O.vital && !(O.robotic ==ORGAN_NANOFORM)) //CHOMPEdit - Protean changes continue //*non-vital* robot limbs don't count towards shock and crit total_brute += O.brute_dam total_burn += O.burn_dam @@ -68,7 +68,7 @@ /mob/living/carbon/human/getBruteLoss() var/amount = 0 for(var/obj/item/organ/external/O in organs) - if(O.robotic >= ORGAN_ROBOT && !O.vital) + if(O.robotic >= ORGAN_ROBOT && !O.vital && !(O.robotic ==ORGAN_NANOFORM)) //CHOMPEdit - Protean changes continue //*non-vital*robot limbs don't count towards death, or show up when scanned amount += O.brute_dam return amount @@ -90,7 +90,7 @@ /mob/living/carbon/human/getFireLoss() var/amount = 0 for(var/obj/item/organ/external/O in organs) - if(O.robotic >= ORGAN_ROBOT && !O.vital) + if(O.robotic >= ORGAN_ROBOT && !O.vital && !(O.robotic ==ORGAN_NANOFORM)) //CHOMPEdit - Protean changes continue //*non-vital*robot limbs don't count towards death, or show up when scanned amount += O.burn_dam return amount @@ -302,7 +302,7 @@ halloss = 0 else ..() - + /mob/living/carbon/human/Stun(var/amount) if(amount > 0) //only multiply it by the mod if it's positive, or else it takes longer to fade too! amount = amount*species.stun_mod @@ -310,12 +310,12 @@ /mob/living/carbon/human/SetStunned(var/amount) ..() - + /mob/living/carbon/human/AdjustStunned(var/amount) if(amount > 0) // Only multiply it if positive. amount = amount*species.stun_mod ..(amount) - + /mob/living/carbon/human/Weaken(var/amount) if(amount > 0) //only multiply it by the mod if it's positive, or else it takes longer to fade too! amount = amount*species.weaken_mod @@ -323,7 +323,7 @@ /mob/living/carbon/human/SetWeakened(var/amount) ..() - + /mob/living/carbon/human/AdjustWeakened(var/amount) if(amount > 0) // Only multiply it if positive. amount = amount*species.weaken_mod diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm index 445d581463..082ff2580f 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm @@ -4,77 +4,77 @@ encased = FALSE max_damage = 100 // <-- This is different from the rest min_broken_damage = 1000 - vital = TRUE // <-- This is different from the rest + vital = 1 model = "protean" /obj/item/organ/external/groin/unbreakable/nano robotic = ORGAN_NANOFORM encased = FALSE - max_damage = 100 // <-- This is different from the rest + max_damage = 100 min_broken_damage = 1000 //Multiple - vital = FALSE + vital = 0 model = "protean" /obj/item/organ/external/head/unbreakable/nano robotic = ORGAN_NANOFORM encased = FALSE max_damage = 100 min_broken_damage = 1000 //Inheritance - vital = FALSE + vital = 0 model = "protean" /obj/item/organ/external/arm/unbreakable/nano robotic = ORGAN_NANOFORM encased = FALSE max_damage = 65 min_broken_damage = 1000 //Please - vital = FALSE + vital = 0 model = "protean" /obj/item/organ/external/arm/right/unbreakable/nano robotic = ORGAN_NANOFORM encased = FALSE max_damage = 65 min_broken_damage = 1000 - vital = FALSE + vital = 0 model = "protean" /obj/item/organ/external/leg/unbreakable/nano robotic = ORGAN_NANOFORM encased = FALSE max_damage = 65 min_broken_damage = 1000 - vital = FALSE + vital = 0 model = "protean" /obj/item/organ/external/leg/right/unbreakable/nano robotic = ORGAN_NANOFORM encased = FALSE max_damage = 65 min_broken_damage = 1000 - vital = FALSE + vital = 0 model = "protean" /obj/item/organ/external/hand/unbreakable/nano robotic = ORGAN_NANOFORM encased = FALSE max_damage = 65 min_broken_damage = 1000 - vital = FALSE + vital = 0 model = "protean" /obj/item/organ/external/hand/right/unbreakable/nano robotic = ORGAN_NANOFORM encased = FALSE max_damage = 65 min_broken_damage = 1000 - vital = FALSE + vital = 0 model = "protean" /obj/item/organ/external/foot/unbreakable/nano robotic = ORGAN_NANOFORM encased = FALSE max_damage = 65 min_broken_damage = 1000 - vital = FALSE + vital = 0 model = "protean" /obj/item/organ/external/foot/right/unbreakable/nano robotic = ORGAN_NANOFORM encased = FALSE max_damage = 65 min_broken_damage = 1000 - vital = FALSE + vital = 0 model = "protean" /obj/item/organ/external/head/unbreakable/nano/disfigure() From a26503b1a5ac43ccd32054a11bf8fd19bb100aad Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Tue, 23 Aug 2022 01:33:41 +1200 Subject: [PATCH 10/36] bug fix --- .../living/carbon/human/species/station/protean/protean_rig.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index 3e7be7feae..de923cdb56 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -455,6 +455,8 @@ canremove = 0 /obj/item/weapon/rig/protean/ai_can_move_suit(mob/user, check_user_module = 0, check_for_ai = 0) + if(check_for_ai) + return 0 //We don't do that here. if(offline || !cell || !cell.charge || locked_down) if(user) to_chat(user, "Your host rig is unpowered and unresponsive.") From 43888a6718d1bd435bfdf6f77139801584a21393 Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Thu, 25 Aug 2022 21:57:08 +1200 Subject: [PATCH 11/36] starting prot rig modules --- .../spacesuits/rig/modules/specific/defib.dm | 24 ++++ .../rig/modules/specific/protean.dm | 135 ++++++++++++++++++ .../station/protean/_protean_defines.dm | 2 +- .../species/station/protean/protean_blob.dm | 8 +- .../species/station/protean/protean_organs.dm | 2 +- .../species/station/protean/protean_powers.dm | 8 +- .../species/station/protean/protean_rig.dm | 8 +- .../station/protean/protean_species.dm | 2 +- vorestation.dme | 2 + 9 files changed, 176 insertions(+), 15 deletions(-) create mode 100644 modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/defib.dm create mode 100644 modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm diff --git a/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/defib.dm b/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/defib.dm new file mode 100644 index 0000000000..faeb5d7170 --- /dev/null +++ b/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/defib.dm @@ -0,0 +1,24 @@ +/obj/item/rig_module/device/defib + name = "mounted defib" + desc = "A rig mounted defib unit. Has expanded functionality to function on both organics and FBP's." + icon_state = "flash" + interface_name = "mounted defib" + interface_desc = "Toggle to swap between FBP and Organic compatability." + device_type = /obj/item/weapon/shockpaddles/standalone/rig + usable = 1 + engage_string = "Toggle Mode" + +/obj/item/weapon/shockpaddles/standalone/rig + name = "mounted defib" + desc = "Rig mounted defib. How are you seeing this? Stop that." + wielded = 1 + +/obj/item/weapon/shockpaddles/standalone/rig/emp_act(severity) + return + +/obj/item/weapon/shockpaddles/standalone/rig/checked_use(var/charge_amt) + return 1 + +/obj/item/weapon/shockpaddles/standalone/rig/attack_self() + use_on_synthetic = !use_on_synthetic + to_chat(usr, "You switch the [src] to [use_on_synthetic ? "FBP" : "organic"] compatability.") \ No newline at end of file diff --git a/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm b/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm new file mode 100644 index 0000000000..5d37ade4d2 --- /dev/null +++ b/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm @@ -0,0 +1,135 @@ +/* +A collection of Protean rigsuit modules, intended to encourage Symbiotic relations with a host. +All of these should require someone else to be wearing the Protean to function. +These should come standard with the Protean rigsuit, unless you want them to work for some upgrades. +*/ + + +//This rig module feeds nutrition directly from the wearer to the Protean, to help them stay charged while worn. +/obj/item/rig_module/protean + permanent = 1 + +/obj/item/rig_module/protean/syphon + name = "Protean Metabolic Syphon" + desc = "This should never be outside of a RIG." + icon_state = "flash" + interface_name = "Protean Metabolic Syphon" + interface_desc = "Toggle to drain nutrition/power from the user directly into the Protean's own energy stores." + toggleable = 1 + activate_string = "Enable Syphon" + deactivate_string = "Disable Syphon" + +/obj/item/rig_module/protean/syphon/activate() + if(!..()) + return 0 + + var/mob/living/carbon/human/H = holder.wearer + if(H) + to_chat(usr, "You activate the suit's energy syphon.") + to_chat(H, "Your suit begins to sap at your own energy stores.") + active = 1 + else + return 0 + +/obj/item/rig_module/protean/syphon/deactivate(var/forced) + if(!..()) + return 0 + if(forced) + active = 0 + return + var/mob/living/carbon/human/H = holder.wearer + if(H) + to_chat(usr, "You deactivate the suit's energy syphon.") + to_chat(H, "Your suit ceases from sapping your own energy.") + active = 0 + else + return 0 + +/obj/item/rig_module/protean/syphon/process() + if(active) + var/mob/living/carbon/human/H = holder.wearer + var/mob/living/carbon/human/P = holder?:myprotean?:humanform + if(H && P) + if((H.nutrition >= 100) && (P.nutrition <= 5000)) + H.nutrition -= 10 + P.nutrition += 10 + else + deactivate(1) + + +//This rig module allows a worn Protean to toggle and configure its armor settings. +/obj/item/rig_module/protean/armor + name = "Protean Adaptive Armor" + desc = "This should never be outside of a RIG." + interface_name = "Protean Adaptive Armor" + interface_desc = "Adjusts the proteans deployed armor values to fit the needs of the wearer. Incurs a slowdown penalty." + usable = 1 + toggleable = 1 + activate_string = "Enable Armor" + deactivate_string = "Disable Armor" + engage_string = "Configure Armor" + var/list/armor_settings = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0) + var/armor_weight_ratio = 0.01 //This amount of slowdown per 1% of armour. 3 slowdown at the max armour. + +/obj/item/rig_module/protean/armor/engage() + + if(!..()) + return 0 + var/armor_chosen = input(usr, "Which armor to adjust?", "Protean Armor") as null|anything in armor_settings + if(armor_chosen) + var/value = input(usr, "Set armour reduction value (Max of 60%)", "Protean Armor") as num + if(value) + if((value > 60) && value <0) + to_chat(usr, "Invalid armor value. Can only be between 0-60") + else + value = round(value) + armor_settings[armor_chosen] = value + + +/obj/item/rig_module/protean/armor/activate() + if(!..()) + return 0 + + var/mob/living/carbon/human/H = holder.wearer + if(H) + to_chat(usr, "You activate the suit's energy syphon.") + to_chat(H, "Your suit begins to sap at your own energy stores.") + active = 1 + else + return 0 + +/obj/item/rig_module/protean/armor/deactivate(var/forced) + if(!..()) + return 0 + if(forced) + active = 0 + return + var/mob/living/carbon/human/H = holder.wearer + if(H) + to_chat(usr, "You deactivate the suit's energy syphon.") + to_chat(H, "Your suit ceases from sapping your own energy.") + active = 0 + else + return 0 + +/obj/item/rig_module/protean/armor/process() + if(active) + var/mob/living/carbon/human/H = holder.wearer + var/mob/living/carbon/human/P = holder?:myprotean?:humanform + if(H && P) + if((H.nutrition >= 100) && (P.nutrition <= 5000)) + H.nutrition -= 10 + P.nutrition += 10 + else + deactivate(1) + + +//This rig module lets a Protean expend its metal stores to heal its host +/obj/item/rig_module/protean/healing + name = "Protean Restorative Nanites" + desc = "This should never be outside of a RIG." + icon_state = "flash" + interface_name = "Protean Restorative Nanites" + interface_desc = "Utilises stored steel from the Protean to slowly heal and repair the wearer." + usable = 1 + engage_string = "Toggle Mode" \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/_protean_defines.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/_protean_defines.dm index a968ec9850..1e2d91577d 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/_protean_defines.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/_protean_defines.dm @@ -1 +1 @@ -#define PROTEAN_EDIBLE_MATERIALS list(MAT_STEEL,MAT_GLASS) \ No newline at end of file +#define PROTEAN_EDIBLE_MATERIALS list(MAT_STEEL) \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index bb155fa215..bb2ecefc07 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -439,8 +439,8 @@ var/global/list/disallowed_protean_accessories = list( blob.transform = matrix()*size_multiplier blob.size_multiplier = size_multiplier - if(l_hand) drop_from_inventory(l_hand) - if(r_hand) drop_from_inventory(r_hand) + if(l_hand) drop_l_hand() + if(r_hand) drop_r_hand() //Put our owner in it (don't transfer var/mind) blob.ckey = ckey @@ -534,8 +534,8 @@ var/global/list/disallowed_protean_accessories = list( if(blob.healing) blob.healing.expire() - if(blob.l_hand) blob.drop_from_inventory(blob.l_hand) - if(blob.r_hand) blob.drop_from_inventory(blob.r_hand) + if(blob.l_hand) blob.drop_l_hand() + if(blob.r_hand) blob.drop_r_hand() if(blob.mob_radio) blob.mob_radio.forceMove(src) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm index 082ff2580f..8ac8238ff6 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm @@ -104,7 +104,7 @@ organ_tag = O_FACT parent_organ = BP_TORSO - var/list/materials = list(MAT_STEEL = 0, MAT_GLASS = 0) + var/list/materials = list(MAT_STEEL = 0) var/max_storage = 10000 organ_verbs = list( /mob/living/carbon/human/proc/reagent_purge diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm index 5e4f2ac87f..55110ea1f2 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm @@ -221,7 +221,7 @@ var/held = caller.get_active_hand() if(!istype(held,/obj/item/stack/material)) - to_chat(caller,"You aren't holding a stack of materials in your active hand...!") + to_chat(caller,"You aren't holding a stack of materials in your active hand!") return var/obj/item/stack/material/matstack = held @@ -233,7 +233,7 @@ to_chat(caller,"You can't process [substance]!") return - var/howmuch = tgui_input_number(src,"How much do you want to store? (0-[matstack.get_amount()])","Select amount",null,matstack.get_amount(),0) + var/howmuch = tgui_input_number(caller,"How much do you want to store? (0-[matstack.get_amount()])","Select amount",null,matstack.get_amount(),0) if(!howmuch || matstack != caller.get_active_hand() || howmuch > matstack.get_amount()) return //Quietly fail @@ -343,9 +343,9 @@ to_chat(P,"You can only do this while not stunned.") else if(P.l_hand) - P.drop_from_inventory(P.l_hand) + P.drop_l_hand() if(P.r_hand) - P.drop_from_inventory(P.r_hand) + P.drop_r_hand() P.has_hands = 0 S.OurRig.myprotean = P src.drop_from_inventory(S.OurRig) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index de923cdb56..d20032b7b5 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -13,7 +13,7 @@ offline_slowdown = 0 seal_delay = 1 var/mob/living/myprotean - //initial_modules = list(/obj/item/rig_module/power_sink) //Commented out unless I end up needing roundstart modules + initial_modules = list(/obj/item/rig_module/protean/syphon) helm_type = /obj/item/clothing/head/helmet/space/rig/protean //These are important for sprite pointers boot_type = /obj/item/clothing/shoes/magboots/rig/protean @@ -360,9 +360,9 @@ to_chat(user, "You need five sheets of plasteel to reconstruct this Protean.") return if(PL.use(5)) - to_chat(user, "You feed plasteel to the Protean, they will be able to reconstitute in a minute from now.") - to_chat(myprotean, "You've been fed the necessary plasteel to reconstitute your form, you will be able to reconstitute in one minute.") - addtimer(CALLBACK(src, .proc/make_alive, myprotean), 600) + to_chat(user, "You feed plasteel to the Protean, they will be able to reconstitute in ten minutes from now.") + to_chat(myprotean, "You've been fed the necessary plasteel to reconstitute your form, you will be able to reconstitute in ten minutes.") + addtimer(CALLBACK(src, .proc/make_alive, myprotean), 6000) return else to_chat(user, "This Protean is already reconstituting") diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm index 53a6a0fef7..3e09370657 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm @@ -37,7 +37,7 @@ radiation_mod = 0 //Can't be assed with fandangling rad protections while blob formed/suited darksight = 10 siemens_coefficient = 2 - emp_dmg_mod = 1.4 + emp_dmg_mod = 0.8 //Since EMP's apply damage to all limbs, and Protean limbs account to their total health, EMP's are hyper lethal to them hazard_low_pressure = -1 //Space doesn't bother them hazard_high_pressure = INFINITY //consistency diff --git a/vorestation.dme b/vorestation.dme index f9fa796fb0..6bb672e10a 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4496,6 +4496,8 @@ #include "modular_chomp\code\modules\clothing\face\miscellaneous.dm" #include "modular_chomp\code\modules\clothing\head\misc.dm" #include "modular_chomp\code\modules\clothing\spacesuits\rig\rig.dm" +#include "modular_chomp\code\modules\clothing\spacesuits\rig\modules\specific\defib.dm" +#include "modular_chomp\code\modules\clothing\spacesuits\rig\modules\specific\protean.dm" #include "modular_chomp\code\modules\datums\supplypacks\medical.dm" #include "modular_chomp\code\modules\datums\supplypacks\munitions.dm" #include "modular_chomp\code\modules\emotes\definitions\audiable.dm" From 72f1ddc6fa326b5ed901423aa87a8dc8a152064c Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Fri, 26 Aug 2022 16:11:06 +1200 Subject: [PATCH 12/36] protean rig armor --- .../rig/modules/specific/protean.dm | 55 +++++++++++-------- .../species/station/protean/protean_rig.dm | 2 +- 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm b/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm index 5d37ade4d2..26d7f3b338 100644 --- a/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm +++ b/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm @@ -48,21 +48,22 @@ These should come standard with the Protean rigsuit, unless you want them to wor /obj/item/rig_module/protean/syphon/process() if(active) var/mob/living/carbon/human/H = holder.wearer - var/mob/living/carbon/human/P = holder?:myprotean?:humanform - if(H && P) + var/mob/living/P = holder?:myprotean + if(istype(H.species, /datum/species/protean)) + to_chat(H, "Your Protean modules do not function on yourself.") + deactivate(1) + else + P = P?:humanform if((H.nutrition >= 100) && (P.nutrition <= 5000)) H.nutrition -= 10 P.nutrition += 10 - else - deactivate(1) - //This rig module allows a worn Protean to toggle and configure its armor settings. /obj/item/rig_module/protean/armor name = "Protean Adaptive Armor" desc = "This should never be outside of a RIG." interface_name = "Protean Adaptive Armor" - interface_desc = "Adjusts the proteans deployed armor values to fit the needs of the wearer. Incurs a slowdown penalty." + interface_desc = "Adjusts the proteans deployed armor values to fit the needs of the wearer. Incurs a slowdown penalty that scales with the amount of armor provided." usable = 1 toggleable = 1 activate_string = "Enable Armor" @@ -72,14 +73,11 @@ These should come standard with the Protean rigsuit, unless you want them to wor var/armor_weight_ratio = 0.01 //This amount of slowdown per 1% of armour. 3 slowdown at the max armour. /obj/item/rig_module/protean/armor/engage() - - if(!..()) - return 0 var/armor_chosen = input(usr, "Which armor to adjust?", "Protean Armor") as null|anything in armor_settings if(armor_chosen) var/value = input(usr, "Set armour reduction value (Max of 60%)", "Protean Armor") as num if(value) - if((value > 60) && value <0) + if((value > 60) || (value < 0)) to_chat(usr, "Invalid armor value. Can only be between 0-60") else value = round(value) @@ -87,27 +85,44 @@ These should come standard with the Protean rigsuit, unless you want them to wor /obj/item/rig_module/protean/armor/activate() - if(!..()) + if(!..(1)) return 0 var/mob/living/carbon/human/H = holder.wearer if(H) - to_chat(usr, "You activate the suit's energy syphon.") - to_chat(H, "Your suit begins to sap at your own energy stores.") + var/list/temparmor = list("bio" = 100, "rad" = 100) + temparmor = armor_settings + temparmor + to_chat(usr, "You signal the suit to harden.") + to_chat(H, "Your suit hardens in response to physical trauma.") + holder.armor = temparmor.Copy() + for(var/obj/item/piece in list(holder.gloves,holder.helmet,holder.boots,holder.chest)) + piece.armor = temparmor.Copy() + for(var/entry in armor_settings) + holder.slowdown += temparmor[entry]*armor_weight_ratio + message_admins(temparmor[entry]) + //holder.slowdown -= (armor_weight_ratio*200) active = 1 else return 0 /obj/item/rig_module/protean/armor/deactivate(var/forced) - if(!..()) + if(!..(1)) return 0 if(forced) + holder.armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100) + for(var/obj/item/piece in list(holder.gloves,holder.helmet,holder.boots,holder.chest)) + piece.armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100) + holder.slowdown = initial(slowdown) active = 0 return var/mob/living/carbon/human/H = holder.wearer if(H) - to_chat(usr, "You deactivate the suit's energy syphon.") - to_chat(H, "Your suit ceases from sapping your own energy.") + to_chat(usr, "You signal the suit to relax.") + to_chat(H, "Your suit softens.") + holder.armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100) + for(var/obj/item/piece in list(holder.gloves,holder.helmet,holder.boots,holder.chest)) + piece.armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100) + holder.slowdown = initial(slowdown) active = 0 else return 0 @@ -115,12 +130,8 @@ These should come standard with the Protean rigsuit, unless you want them to wor /obj/item/rig_module/protean/armor/process() if(active) var/mob/living/carbon/human/H = holder.wearer - var/mob/living/carbon/human/P = holder?:myprotean?:humanform - if(H && P) - if((H.nutrition >= 100) && (P.nutrition <= 5000)) - H.nutrition -= 10 - P.nutrition += 10 - else + if(istype(H.species, /datum/species/protean)) + to_chat(H, "Your Protean modules do not function on yourself.") deactivate(1) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index d20032b7b5..edaef6f7c8 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -13,7 +13,7 @@ offline_slowdown = 0 seal_delay = 1 var/mob/living/myprotean - initial_modules = list(/obj/item/rig_module/protean/syphon) + initial_modules = list(/obj/item/rig_module/protean/syphon, /obj/item/rig_module/protean/armor) helm_type = /obj/item/clothing/head/helmet/space/rig/protean //These are important for sprite pointers boot_type = /obj/item/clothing/shoes/magboots/rig/protean From 65e2cdd259ed2b487c626f306b79749bc7487f4d Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Tue, 30 Aug 2022 22:24:10 +1200 Subject: [PATCH 13/36] Some fixes --- .../rig/modules/specific/protean.dm | 24 +++++++++---------- .../species/station/protean/protean_blob.dm | 15 +++++++++++- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm b/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm index 26d7f3b338..a421e78aab 100644 --- a/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm +++ b/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm @@ -63,7 +63,7 @@ These should come standard with the Protean rigsuit, unless you want them to wor name = "Protean Adaptive Armor" desc = "This should never be outside of a RIG." interface_name = "Protean Adaptive Armor" - interface_desc = "Adjusts the proteans deployed armor values to fit the needs of the wearer. Incurs a slowdown penalty that scales with the amount of armor provided." + interface_desc = "Adjusts the proteans deployed armor values to fit the needs of the wearer." usable = 1 toggleable = 1 activate_string = "Enable Armor" @@ -75,14 +75,15 @@ These should come standard with the Protean rigsuit, unless you want them to wor /obj/item/rig_module/protean/armor/engage() var/armor_chosen = input(usr, "Which armor to adjust?", "Protean Armor") as null|anything in armor_settings if(armor_chosen) - var/value = input(usr, "Set armour reduction value (Max of 60%)", "Protean Armor") as num - if(value) - if((value > 60) || (value < 0)) - to_chat(usr, "Invalid armor value. Can only be between 0-60") - else - value = round(value) - armor_settings[armor_chosen] = value - + var/armorvalue = tgui_input_number(usr, "Set armour reduction value (Max of 60%)", "Protean Armor",0,60,0,0,1) + if(isnum(armorvalue)) + armor_settings[armor_chosen] = armorvalue + interface_desc = initial(interface_desc) + slowdown = 0 + for(var/entry in armor_settings) //This is dumb and ugly but I dont feel like rewriting rig TGUI just to make this a pretty list + interface_desc += " [entry]: [armor_settings[entry]]" + slowdown += armor_settings[entry]*armor_weight_ratio + interface_desc += " Slowdown: [slowdown]" /obj/item/rig_module/protean/armor/activate() if(!..(1)) @@ -97,10 +98,7 @@ These should come standard with the Protean rigsuit, unless you want them to wor holder.armor = temparmor.Copy() for(var/obj/item/piece in list(holder.gloves,holder.helmet,holder.boots,holder.chest)) piece.armor = temparmor.Copy() - for(var/entry in armor_settings) - holder.slowdown += temparmor[entry]*armor_weight_ratio - message_admins(temparmor[entry]) - //holder.slowdown -= (armor_weight_ratio*200) + holder.slowdown = slowdown active = 1 else return 0 diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index bb2ecefc07..91d9f36600 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -608,4 +608,17 @@ var/global/list/disallowed_protean_accessories = list( if(ismob(A)) // No instant mob attacking - though modules have their own cooldowns setClickCooldown(get_attack_speed()) return 1 - return 0 \ No newline at end of file + return 0 + +//Don't eat yourself, idiot +/mob/living/simple_mob/protean_blob/CanStumbleVore(mob/living/target) + if(target == humanform) + return FALSE + return ..() + +/mob/living/carbon/human/CanStumbleVore(mob/living/target) + if(istype(target, /mob/living/simple_mob/protean_blob)) + var/mob/living/simple_mob/protean_blob/PB = target + if(PB.humanform == src) + return FALSE + return ..() \ No newline at end of file From 19574a99506718dc38354d19a7a1d5194c052516 Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Mon, 12 Sep 2022 22:40:52 +1200 Subject: [PATCH 14/36] Last of the prot snowflake modules --- .../rig/modules/specific/protean.dm | 67 ++++++++++++++++++- .../species/station/protean/protean_blob.dm | 6 -- .../species/station/protean/protean_rig.dm | 4 +- .../code/modules/mob/living/living.dm | 17 ++++- .../mob/living/simple_mob/simple_mob.dm | 23 +++++++ 5 files changed, 105 insertions(+), 12 deletions(-) diff --git a/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm b/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm index a421e78aab..f3083541e3 100644 --- a/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm +++ b/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm @@ -137,8 +137,69 @@ These should come standard with the Protean rigsuit, unless you want them to wor /obj/item/rig_module/protean/healing name = "Protean Restorative Nanites" desc = "This should never be outside of a RIG." - icon_state = "flash" interface_name = "Protean Restorative Nanites" interface_desc = "Utilises stored steel from the Protean to slowly heal and repair the wearer." - usable = 1 - engage_string = "Toggle Mode" \ No newline at end of file + toggleable = 1 + activate_string = "Enable Healing" + deactivate_string = "Disable Healing" + var/datum/modifier/healing + +/obj/item/rig_module/protean/healing/activate() + if(!..(1)) + return 0 + + var/mob/living/carbon/human/H = holder.wearer + var/mob/living/P = holder?:myprotean + if(H && P) + if(istype(H.species, /datum/species/protean)) + to_chat(H, "Your Protean modules do not function on yourself.") + return 0 + if(P?:refactory.get_stored_material(MAT_STEEL) >= 100) + healing = holder.wearer.add_modifier(/datum/modifier/protean/steel, origin = P?:refactory) + to_chat(usr, "You activate the suit's restorative nanites.") + to_chat(H, "Your suit begins mend your injuries.") + active = 1 + return 1 + return 0 + +/obj/item/rig_module/protean/healing/deactivate() + if(!..(1)) + return 0 + var/mob/living/carbon/human/H = holder.wearer + if(H) + to_chat(usr, "You deactivate the suit's restorative nanites.") + to_chat(H, "Your suit is no longer mending your injuries.") + active = 0 + if(healing) + healing.expire() + healing = null + return 1 + else + return 0 + +/obj/item/rig_module/protean/healing/process() + if(active) + var/mob/living/carbon/human/H = holder.wearer + var/mob/living/P = holder?:myprotean + if((istype(H.species, /datum/species/protean)) || !H || !P) + to_chat(H, "Your Protean modules do not function on yourself.") + deactivate() + return + if((!P?:refactory.get_stored_material(MAT_STEEL))) + to_chat(H, "Your [holder] is out of steel.") + deactivate() + return + +/obj/item/rig_module/protean/healing/accepts_item(var/obj/item/stack/material/steel/S, var/mob/living/user) + + if(!istype(S) || !istype(user)) + return 0 + + if(!holder?:myprotean.nano_get_refactory()) + return 0 + + var/obj/item/organ/internal/nano/refactory/R = holder?:myprotean.nano_get_refactory() + if(R.add_stored_material(S.material.name,1*S.perunit) && S.use(1)) + to_chat(user, "You directly feed some steel to the [holder].") + return 1 + return 0 \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index 91d9f36600..38e43958be 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -404,12 +404,6 @@ return ..() -var/global/list/disallowed_protean_accessories = list( - /obj/item/clothing/accessory/holster, - /obj/item/clothing/accessory/storage, - /obj/item/clothing/accessory/armor - ) - // Helpers - Unsafe, WILL perform change. /mob/living/carbon/human/proc/nano_intoblob(force) if(!force && !isturf(loc) && !loc == /obj/item/weapon/rig/protean) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index edaef6f7c8..df1f663224 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -13,7 +13,7 @@ offline_slowdown = 0 seal_delay = 1 var/mob/living/myprotean - initial_modules = list(/obj/item/rig_module/protean/syphon, /obj/item/rig_module/protean/armor) + initial_modules = list(/obj/item/rig_module/protean/syphon, /obj/item/rig_module/protean/armor, /obj/item/rig_module/protean/healing) helm_type = /obj/item/clothing/head/helmet/space/rig/protean //These are important for sprite pointers boot_type = /obj/item/clothing/shoes/magboots/rig/protean @@ -48,7 +48,7 @@ S.OurRig = src if(P.back) addtimer(CALLBACK(src, .proc/AssimilateBag, P, 1, P.back), 3) - + myprotean = P else to_chat(P, "You should have spawned with a backpack to assimilate into your RIG. Try clicking it with a backpack.") verbs += /obj/item/weapon/rig/verb/RemoveBag diff --git a/modular_chomp/code/modules/mob/living/living.dm b/modular_chomp/code/modules/mob/living/living.dm index d9b851cb33..9ea0957cc6 100644 --- a/modular_chomp/code/modules/mob/living/living.dm +++ b/modular_chomp/code/modules/mob/living/living.dm @@ -1,2 +1,17 @@ /mob/living/proc/vs_animate(var/belly_to_animate) - return \ No newline at end of file + return + +/* +Maybe later, gotta figure out a way to click yourself when in a locker etc. + +/mob/living/proc/click_self() + set name = "Click Self" + set desc = "Clicks yourself. Useful when you can't see yourself." + set category = "IC" + + ClickOn(src) + +/mob/living/New(var/newloc) + ..() + verbs |= /mob/living/proc/click_self +*/ \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/simple_mob/simple_mob.dm b/modular_chomp/code/modules/mob/living/simple_mob/simple_mob.dm index 749d8b9f7c..7fa0c33308 100644 --- a/modular_chomp/code/modules/mob/living/simple_mob/simple_mob.dm +++ b/modular_chomp/code/modules/mob/living/simple_mob/simple_mob.dm @@ -84,4 +84,27 @@ handle_status_indicators() +/mob/living/simple_mob/proc/use_headset() + set name = "Use Headset" + set desc = "Opens your headset's GUI, if you have one." + set category = "IC" + if(istype(mob_radio, /obj/item/device/radio/headset)) + mob_radio.tgui_interact(src) + else + to_chat(src, "Your mob does not have a radio in its radio slot.") + +/mob/living/simple_mob/proc/use_pda() + set name = "Use PDA" + set desc = "Opens your PDA's GUI, if you have one." + set category = "IC" + + if(istype(myid, /obj/item/device/pda)) + myid.tgui_interact(src) + else + to_chat(src, "Your mob does not have a PDA in its ID slot.") + +/mob/living/simple_mob/New(var/newloc) + ..() + verbs |= /mob/living/simple_mob/proc/use_headset + verbs |= /mob/living/simple_mob/proc/use_pda \ No newline at end of file From 0af27b48f6f42cac3f47457fc23df6ea1a376597 Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Fri, 16 Sep 2022 12:44:16 +1200 Subject: [PATCH 15/36] Prot EMP fixes --- code/modules/organs/organ_external.dm | 2 +- .../species/station/protean/protean_organs.dm | 4 ++- .../station/protean/protean_species.dm | 29 +++++++++++++------ 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index fe69463090..52e4e164c9 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -118,7 +118,7 @@ for(var/obj/O as anything in src.contents) O.emp_act(severity) - if(!(robotic >= ORGAN_ROBOT)) + if((!(robotic >= ORGAN_ROBOT)) || (robotic = ORGAN_NANOFORM)) //CHOMPEdit - Proteans handle EMP's differently return var/burn_damage = 0 for(var/i = 1; i <= robotic; i++) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm index 8ac8238ff6..e62348a5c6 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm @@ -167,9 +167,11 @@ icon = initial(icon) icon_state = "posi1" stored_mmi.icon_state = "posi1" - stored_mmi.brainmob.languages = owner.languages +/obj/item/organ/internal/mmi_holder/posibrain/nano/emp_act() + return //Proteans handle EMP's differently + // The 'out on the ground' object, not the organ holder /obj/item/device/mmi/digital/posibrain/nano name = "protean posibrain" diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm index 3e09370657..9e9cf3a0fe 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm @@ -37,7 +37,9 @@ radiation_mod = 0 //Can't be assed with fandangling rad protections while blob formed/suited darksight = 10 siemens_coefficient = 2 - emp_dmg_mod = 0.8 //Since EMP's apply damage to all limbs, and Protean limbs account to their total health, EMP's are hyper lethal to them + emp_dmg_mod = 0.8 + emp_sensitivity = EMP_BLIND | EMP_DEAFEN | EMP_BRUTE_DMG | EMP_BURN_DMG + item_slowdown_mod = 1.5 //Gentle encouragement to let others wear you hazard_low_pressure = -1 //Space doesn't bother them hazard_high_pressure = INFINITY //consistency @@ -328,17 +330,26 @@ CHOMP Removal end*/ material_name = MAT_STEEL /datum/modifier/protean/steel/tick() + //Heal a random damaged limb by 1,1 per tick holder.adjustBruteLoss(-1,include_robo = TRUE) holder.adjustFireLoss(-1,include_robo = TRUE) holder.adjustToxLoss(-1) - var/mob/living/carbon/human/H = holder - for(var/obj/item/organ/O as anything in H.internal_organs) - // Fix internal damage - if(O.damage > 0) - O.damage = max(0,O.damage-0.1) - // If not damaged, but dead, fix it - else if(O.status & ORGAN_DEAD) - O.status &= ~ORGAN_DEAD //Unset dead if we repaired it entirely + + var/mob/living/carbon/human/H + if(ishuman(holder)) + H = holder + + //Then heal every damaged limb by a smaller amount + if(H) + for(var/obj/item/organ/external/O in H.organs) + O.heal_damage(0.5, 0.5, 0, 1) + + //Heal the organs a little bit too, as a treat + for(var/obj/item/organ/O as anything in H.internal_organs) + if(O.damage > 0) + O.damage = max(0,O.damage-0.3) + else if(O.status & ORGAN_DEAD) + O.status &= ~ORGAN_DEAD //Unset dead if we repaired it entirely // PAN Card /obj/item/clothing/accessory/permit/nanotech From bb6c77dd5782fa83e7e83b8edfab290b86a7d66b Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Mon, 19 Sep 2022 14:40:29 +1200 Subject: [PATCH 16/36] Total Reassembly --- code/modules/organs/organ_external.dm | 3 +- .../species/station/protean/protean_powers.dm | 128 ++++-------------- .../species/station/protean/protean_rig.dm | 44 +++--- .../mob/living/carbon/human/update_icons.dm | 45 ++++++ 4 files changed, 100 insertions(+), 120 deletions(-) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 52e4e164c9..cd2a045a2d 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -117,8 +117,7 @@ /obj/item/organ/external/emp_act(severity) for(var/obj/O as anything in src.contents) O.emp_act(severity) - - if((!(robotic >= ORGAN_ROBOT)) || (robotic = ORGAN_NANOFORM)) //CHOMPEdit - Proteans handle EMP's differently + if(!(robotic >= ORGAN_ROBOT) || robotic == ORGAN_NANOFORM) //CHOMPEdit - Proteans handle EMP's differently return var/burn_damage = 0 for(var/i = 1; i <= robotic; i++) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm index 55110ea1f2..452abf136a 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm @@ -89,113 +89,39 @@ update_icons_body() /mob/living/carbon/human/proc/nano_regenerate() - set name = "Total Reassembly (wip)" - set desc = "Completely reassemble yourself from whatever save slot you have loaded in preferences. Assuming you meet the requirements." + set name = "Total Reassembly" + set desc = "Fully repair yourself or reload your appearance from whatever character slot you have loaded." set category = "Abilities" set hidden = 1 var/mob/living/caller = src if(temporary_form) caller = temporary_form - to_chat(caller,"This function isn't coded yet. Soon, my child.") - else - to_chat(src,"This function isn't coded yet. Soon, my child.") - - - - /*if(stat) - to_chat(src,"You must be awake and standing to perform this action!") + var/input = tgui_alert(caller,{"Do you want to rebuild or reassemble yourself? + Rebuilding will cost 10,000 steel and will rebuild all of your limbs as well as repair all damage over a 40s period. + Reassembling costs no steel and will copy the appearance data of your currently loaded save slot."},"Reassembly",list("Rebuild","Reassemble","Cancel")) + if(input == "Cancel" || !input) return - - if(!isturf(loc)) - to_chat(src,"You need more space to perform this action!") - return - - var/obj/item/organ/internal/nano/refactory/refactory = nano_get_refactory() - //Missing the organ that does this - if(!istype(refactory)) - to_chat(src,"You don't have a working refactory module!") - return - - //Already regenerating - if(active_regen) - to_chat(src, "You are already refactoring!") - return - - var/swap_not_rebuild = tgui_alert(src,"Do you want to rebuild, or reshape?","Rebuild or Reshape",list("Reshape","Cancel","Rebuild")) - if(swap_not_rebuild == "Cancel") - return - if(swap_not_rebuild == "Reshape") - var/list/usable_manufacturers = list() - for(var/company in chargen_robolimbs) - var/datum/robolimb/M = chargen_robolimbs[company] - if(!(BP_TORSO in M.parts)) - continue - if(impersonate_bodytype in M.species_cannot_use) - continue - if(M.whitelisted_to && !(ckey in M.whitelisted_to)) - continue - usable_manufacturers[company] = M - if(!usable_manufacturers.len) - return - var/manu_choice = tgui_input_list(src, "Which manufacturer do you wish to mimic?", "Manufacturer", usable_manufacturers) - - if(!manu_choice) - return //Changed mind - if(!organs_by_name[BP_TORSO]) - return //Ain't got a torso! - - var/obj/item/organ/external/torso = organs_by_name[BP_TORSO] - to_chat(src, "Remain still while the process takes place! It will take 5 seconds.") - visible_message("[src]'s form collapses into an amorphous blob of black ichor...") - - var/mob/living/simple_mob/protean_blob/blob = nano_intoblob() - active_regen = 1 - if(do_after(blob,5 SECONDS)) - synthetic = usable_manufacturers[manu_choice] - torso.robotize(manu_choice) //Will cascade to all other organs. - regenerate_icons() - visible_message("[src]'s form reshapes into a new one...") - active_regen = 0 - nano_outofblob(blob) - return - - //Not enough resources (AND spends the resources, should be the last check) - if(!refactory.use_stored_material(MAT_STEEL,refactory.max_storage)) - to_chat(src, "You need to be maxed out on normal metal to do this!") - return - - var/delay_length = round(active_regen_delay * species.active_regen_mult) - to_chat(src, "Remain still while the process takes place! It will take [delay_length/10] seconds.") - visible_message("[src]'s form begins to shift and ripple as if made of oil...") - active_regen = 1 - - var/mob/living/simple_mob/protean_blob/blob = nano_intoblob() - if(do_after(blob, delay_length, null, 0)) - if(stat != DEAD && refactory) - var/list/holder = refactory.materials - species.create_organs(src) - var/obj/item/organ/external/torso = organs_by_name[BP_TORSO] - torso.robotize() //synthetic wasn't defined here. - LAZYCLEARLIST(blood_DNA) - LAZYCLEARLIST(feet_blood_DNA) - blood_color = null - feet_blood_color = null - regenerate_icons() //Probably worth it, yeah. - var/obj/item/organ/internal/nano/refactory/new_refactory = locate() in internal_organs - if(!new_refactory) - log_debug("[src] protean-regen'd but lacked a refactory when done.") - else - new_refactory.materials = holder - to_chat(src, "Your refactoring is complete.") //Guarantees the message shows no matter how bad the timing. - to_chat(blob, "Your refactoring is complete!") + if(input == "Rebuild") + var/obj/item/organ/internal/nano/refactory/refactory = nano_get_refactory() + if(refactory.get_stored_material(MAT_STEEL) >= 10000) + to_chat(caller, "You begin to rebuild. You will need to remain still.") + if(do_after(caller, 400)) + if(species?:OurRig) //Unsafe, but we should only ever be using this with a Protean + species?:OurRig?:make_alive(src,1) //Re-using this proc + refactory.use_stored_material(MAT_STEEL,refactory.get_stored_material(MAT_STEEL)) //Use all of our steel + else + to_chat(caller, "Somehow, you are missing your protean rig. You are unable to rebuild without one.") else - to_chat(src, "Your refactoring has failed.") - to_chat(blob, "Your refactoring has failed!") + to_chat(caller, "You do not have enough steel stored for this operation.") else - to_chat(src, "Your refactoring is interrupted.") - to_chat(blob, "Your refactoring is interrupted!") - active_regen = 0 - nano_outofblob(blob)*/ + to_chat(caller, "You begin to reassemble. You will need to remain still.") + caller.visible_message("[caller] rapidly contorts and shifts!", "You begin to reassemble.") + if(do_after(caller, 40)) + if(client.prefs) //Make sure we didn't d/c + var/obj/item/weapon/rig/protean/Rig = species?:OurRig + GetAppearanceFromPrefs() + species?:OurRig = Rig //Get a reference to our Rig and put it back after reassembling + caller.visible_message("[caller] adopts a new form!", "You have reassembled.") //// // Storing metal @@ -511,8 +437,8 @@ to_call = /mob/living/carbon/human/proc/nano_partswap /obj/effect/protean_ability/reform_body - ability_name = "Total Reassembly (wip)" - desc = "Completely reassemble yourself from whatever save slot you have loaded in preferences. Assuming you meet the requirements." + ability_name = "Total Reassembly" + desc = "Fully repair yourself or reload your appearance from whatever character slot you have loaded." icon_state = "body" to_call = /mob/living/carbon/human/proc/nano_regenerate diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index df1f663224..8119f08655 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -362,7 +362,7 @@ if(PL.use(5)) to_chat(user, "You feed plasteel to the Protean, they will be able to reconstitute in ten minutes from now.") to_chat(myprotean, "You've been fed the necessary plasteel to reconstitute your form, you will be able to reconstitute in ten minutes.") - addtimer(CALLBACK(src, .proc/make_alive, myprotean), 6000) + addtimer(CALLBACK(src, .proc/make_alive, myprotean?:humanform), 6000) return else to_chat(user, "This Protean is already reconstituting") @@ -375,11 +375,8 @@ AssimilateBag(user,0,W) ..() -/obj/item/weapon/rig/protean/proc/make_alive(var/mob/living/simple_mob/protean_blob/P) - var/mob/living/carbon/human/H - var/datum/species/protean/S - if(P.humanform) - H = P.humanform +/obj/item/weapon/rig/protean/proc/make_alive(var/mob/living/carbon/human/H, var/partial) + if(H) H.setToxLoss(0) H.setOxyLoss(0) H.setCloneLoss(0) @@ -393,17 +390,30 @@ H.ear_deaf = 0 H.ear_damage = 0 H.heal_overall_damage(H.getActualBruteLoss(), H.getActualFireLoss(), 1) - dead_mob_list.Remove(H) - living_mob_list += H - H.tod = null - H.timeofdeath = 0 - H.set_stat(CONSCIOUS) - if(istype(H.species, /datum/species/protean)) - S = H.species - S.pseudodead = 0 - dead = 0 - reviving = 0 - to_chat(P, "You have finished reconstituting.") + for(var/I in H.organs_by_name) + if(!H.organs_by_name[I] || istype(H.organs_by_name[I], /obj/item/organ/external/stump)) + if(H.organs_by_name[I]) + var/obj/item/organ/external/oldlimb = H.organs_by_name[I] + oldlimb.removed() + qdel(oldlimb) + var/list/organ_data = H.species.has_limbs[I] + var/limb_path = organ_data["path"] + var/obj/item/organ/external/new_eo = new limb_path(H) + new_eo.robotize(H.synthetic ? H.synthetic.company : null) + new_eo.sync_colour_to_human(H) + if(!partial) + dead_mob_list.Remove(H) + living_mob_list += H + H.tod = null + H.timeofdeath = 0 + H.set_stat(CONSCIOUS) + if(istype(H.species, /datum/species/protean)) + var/datum/species/protean/S + S = H.species + S.pseudodead = 0 + dead = 0 + reviving = 0 + to_chat(myprotean, "You have finished reconstituting.") /obj/item/weapon/rig/protean/take_hit(damage, source, is_emp=0) return //We don't do that here diff --git a/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm b/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm index 7ead82c834..b9a8ef70c6 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm @@ -103,3 +103,48 @@ spawn(12) struggle_anim_taur = FALSE update_vore_tail_sprite() + +/mob/living/carbon/human/proc/GetAppearanceFromPrefs() + /* Jank code that effectively creates the client's mob from save, then copies its appearance to our current mob. + Intended to be used with shapeshifter species so we don't reset their organs in doing so.*/ + var/mob/living/carbon/human/dummy/mannequin/Dummy = new + if(client.prefs) + client.prefs.copy_to(Dummy) + //Important, since some sprites only work for specific species + if(Dummy.species.base_species == "Promethean") + impersonate_bodytype = "Human" + else + impersonate_bodytype = Dummy.species.base_species + custom_species = Dummy.custom_species + var/list/traits = dna.species_traits.Copy() + dna = Dummy.dna.Clone() + dna.species_traits.Cut() + dna.species_traits = traits.Copy() + UpdateAppearance() + icon = Dummy.icon + qdel(Dummy) + +/* Alternative version of the above proc, incase it turns out cloning our dummy mob's DNA is an awful, terrible bad idea. +Would need to fix this proc up to work as smoothly as the above proc, though. +/mob/living/carbon/human/proc/GetAppearanceFromPrefs() + /* Jank code that effectively creates the client's mob from save, then copies its appearance to our current mob. + Intended to be used with shapeshifter species so we don't reset their organs in doing so.*/ + var/mob/living/carbon/human/dummy/mannequin/Dummy = new + if(client.prefs) + client.prefs.copy_to(Dummy) + //Important, since some sprites only work for specific species + if(Dummy.species.base_species == "Promethean") + impersonate_bodytype = "Human" + else + impersonate_bodytype = Dummy.species.base_species + custom_species = Dummy.custom_species + for(var/tag in Dummy.dna.body_markings) + var/obj/item/organ/external/E = organs_by_name[tag] + if(E) + E.markings.Cut() + var/list/marklist = Dummy.dna.body_markings[tag] + E.markings = marklist.Copy() + UpdateAppearance(Dummy.dna.UI.Copy()) + icon = Dummy.icon + qdel(Dummy) +*/ \ No newline at end of file From c36f78b600c643a3a1cc63174a0641221a16b8fd Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Fri, 30 Sep 2022 00:35:45 +1300 Subject: [PATCH 17/36] adds rig phase gun, moves some files around --- .../rig/modules/specific/mounted_gun.dm | 8 + .../code/modules/projectiles/guns/phase.dm | 5 + .../code/modules/research/mechfab_designs.dm | 232 +++++++++--------- vorestation.dme | 4 +- 4 files changed, 136 insertions(+), 113 deletions(-) create mode 100644 modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/mounted_gun.dm create mode 100644 modular_chomp/code/modules/projectiles/guns/phase.dm rename code/modules/research/mechfab_designs_ch.dm => modular_chomp/code/modules/research/mechfab_designs.dm (91%) diff --git a/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/mounted_gun.dm b/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/mounted_gun.dm new file mode 100644 index 0000000000..cb59511f2e --- /dev/null +++ b/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/mounted_gun.dm @@ -0,0 +1,8 @@ +/obj/item/rig_module/mounted/phase + name = "mounted phase rifle" + desc = "A forearm-mounted phase rifle." + icon_state = "taser" + usable = 0 + interface_name = "mounted phase rifle" + interface_desc = "A forearm-mounted suit-powered phase rifle." + gun_type = /obj/item/weapon/gun/energy/locked/phasegun/rifle/unlocked/mounted \ No newline at end of file diff --git a/modular_chomp/code/modules/projectiles/guns/phase.dm b/modular_chomp/code/modules/projectiles/guns/phase.dm new file mode 100644 index 0000000000..963909c5e9 --- /dev/null +++ b/modular_chomp/code/modules/projectiles/guns/phase.dm @@ -0,0 +1,5 @@ +/obj/item/weapon/gun/energy/locked/phasegun/rifle/unlocked/mounted + name = "mounted phase rifle" + self_recharge = 1 + use_external_power = 1 + recharge_time = 10 \ No newline at end of file diff --git a/code/modules/research/mechfab_designs_ch.dm b/modular_chomp/code/modules/research/mechfab_designs.dm similarity index 91% rename from code/modules/research/mechfab_designs_ch.dm rename to modular_chomp/code/modules/research/mechfab_designs.dm index f97584eebf..aef60aa390 100644 --- a/code/modules/research/mechfab_designs_ch.dm +++ b/modular_chomp/code/modules/research/mechfab_designs.dm @@ -1,112 +1,120 @@ -/datum/design/item/mecha/phoron_bore - name = "PB-23 \"Phobos\" Phoron Bore" - category = list("Exosuit Equipment") - id ="mech_phoron_bore" - req_tech = list(TECH_POWER = 5, TECH_PHORON = 5, TECH_MATERIAL = 5) - materials = list(MAT_PLASTEEL = 4000, "phoron" = 10000, "silver" = 2000) - build_path =/obj/item/mecha_parts/mecha_equipment/weapon/phoron_bore - -/datum/design/item/mechfab/scarab - category = list("Scarab") - -/datum/design/item/mechfab/scarab/chassis - name = "Scarab Chassis" - id = "scarab_chassis" - build_path = /obj/item/mecha_parts/chassis/scarab - time = 10 - materials = list(DEFAULT_WALL_MATERIAL = 15000) - -/datum/design/item/mechfab/scarab/torso - name = "Scarab Torso" - id = "scarab_torso" - build_path = /obj/item/mecha_parts/part/scarab_torso - time = 30 - materials = list(DEFAULT_WALL_MATERIAL = 30000, "glass" = 10000) - -/datum/design/item/mechfab/scarab/head - name = "Scarab Head" - id = "scarab_head" - build_path = /obj/item/mecha_parts/part/scarab_head - time = 20 - materials = list(DEFAULT_WALL_MATERIAL = 12500, "glass" = 5000) - -/datum/design/item/mechfab/scarab/left_arm - name = "Scarab Left Arm" - id = "scarab_left_arm" - build_path = /obj/item/mecha_parts/part/scarab_left_arm - time = 20 - materials = list(DEFAULT_WALL_MATERIAL = 10000) - -/datum/design/item/mechfab/scarab/right_arm - name = "Scarab Right Arm" - id = "scarab_right_arm" - build_path = /obj/item/mecha_parts/part/scarab_right_arm - time = 20 - materials = list(DEFAULT_WALL_MATERIAL = 10000) - -/datum/design/item/mechfab/scarab/left_leg - name = "Scarab Left Legs" - id = "scarab_left_legs" - build_path = /obj/item/mecha_parts/part/scarab_left_legs - time = 20 - materials = list(DEFAULT_WALL_MATERIAL = 30000) - -/datum/design/item/mechfab/scarab/right_leg - name = "Scarab Right Legs" - id = "scarab_right_legs" - build_path = /obj/item/mecha_parts/part/scarab_right_legs - time = 20 - materials = list(DEFAULT_WALL_MATERIAL = 30000) - -/datum/design/item/mechfab/phazon - category = list("Phazon") - req_tech = list(TECH_MATERIAL = 7, TECH_BLUESPACE = 5, TECH_MAGNET = 6, TECH_PHORON = 3, TECH_ARCANE = 1) - -/datum/design/item/mechfab/phazon/chassis - name = "Phazon Chassis" - id = "phazon_chassis" - build_path = /obj/item/mecha_parts/chassis/phazon - time = 10 - materials = list(DEFAULT_WALL_MATERIAL = 30000, MAT_DURASTEEL = 4000, MAT_PHORON = 4000, MAT_GOLD = 5000, MAT_VERDANTIUM = 4000) - -/datum/design/item/mechfab/phazon/torso - name = "Phazon Torso" - id = "phazon_torso" - build_path = /obj/item/mecha_parts/part/phazon_torso - time = 30 - materials = list(DEFAULT_WALL_MATERIAL = 30000, MAT_DURASTEEL = 2000, MAT_PHORON = 6000, MAT_GOLD = 6000, MAT_VERDANTIUM = 2000) - -/datum/design/item/mechfab/phazon/head - name = "Phazon Head" - id = "phazon_head" - build_path = /obj/item/mecha_parts/part/phazon_head - time = 20 - materials = list(DEFAULT_WALL_MATERIAL = 10000, MAT_DURASTEEL = 1000, MAT_PHORON = 4000, MAT_GOLD = 4000, MAT_VERDANTIUM = 500) - -/datum/design/item/mechfab/phazon/left_arm - name = "Phazon Left Arm" - id = "phazon_left_arm" - build_path = /obj/item/mecha_parts/part/phazon_left_arm - time = 20 - materials = list(DEFAULT_WALL_MATERIAL = 15000, MAT_PHORON = 2000, MAT_GOLD = 2000, MAT_VERDANTIUM = 500) - -/datum/design/item/mechfab/phazon/right_arm - name = "Phazon Right Arm" - id = "phazon_right_arm" - build_path = /obj/item/mecha_parts/part/phazon_right_arm - time = 20 - materials = list(DEFAULT_WALL_MATERIAL = 15000, MAT_PHORON = 2000, MAT_GOLD = 2000, MAT_VERDANTIUM = 500) - -/datum/design/item/mechfab/phazon/left_leg - name = "Phazon Left Leg" - id = "phazon_left_leg" - build_path = /obj/item/mecha_parts/part/phazon_left_leg - time = 20 - materials = list(DEFAULT_WALL_MATERIAL = 15000, MAT_PHORON = 2000, MAT_GOLD = 2000, MAT_VERDANTIUM = 500) - -/datum/design/item/mechfab/phazon/right_leg - name = "Phazon Right Leg" - id = "phazon_right_leg" - build_path = /obj/item/mecha_parts/part/phazon_right_leg - time = 20 - materials = list(DEFAULT_WALL_MATERIAL = 15000, MAT_PHORON = 2000, MAT_GOLD = 2000, MAT_VERDANTIUM = 500) +/datum/design/item/mecha/phoron_bore + name = "PB-23 \"Phobos\" Phoron Bore" + category = list("Exosuit Equipment") + id ="mech_phoron_bore" + req_tech = list(TECH_POWER = 5, TECH_PHORON = 5, TECH_MATERIAL = 5) + materials = list(MAT_PLASTEEL = 4000, "phoron" = 10000, "silver" = 2000) + build_path =/obj/item/mecha_parts/mecha_equipment/weapon/phoron_bore + +/datum/design/item/mechfab/scarab + category = list("Scarab") + +/datum/design/item/mechfab/scarab/chassis + name = "Scarab Chassis" + id = "scarab_chassis" + build_path = /obj/item/mecha_parts/chassis/scarab + time = 10 + materials = list(DEFAULT_WALL_MATERIAL = 15000) + +/datum/design/item/mechfab/scarab/torso + name = "Scarab Torso" + id = "scarab_torso" + build_path = /obj/item/mecha_parts/part/scarab_torso + time = 30 + materials = list(DEFAULT_WALL_MATERIAL = 30000, "glass" = 10000) + +/datum/design/item/mechfab/scarab/head + name = "Scarab Head" + id = "scarab_head" + build_path = /obj/item/mecha_parts/part/scarab_head + time = 20 + materials = list(DEFAULT_WALL_MATERIAL = 12500, "glass" = 5000) + +/datum/design/item/mechfab/scarab/left_arm + name = "Scarab Left Arm" + id = "scarab_left_arm" + build_path = /obj/item/mecha_parts/part/scarab_left_arm + time = 20 + materials = list(DEFAULT_WALL_MATERIAL = 10000) + +/datum/design/item/mechfab/scarab/right_arm + name = "Scarab Right Arm" + id = "scarab_right_arm" + build_path = /obj/item/mecha_parts/part/scarab_right_arm + time = 20 + materials = list(DEFAULT_WALL_MATERIAL = 10000) + +/datum/design/item/mechfab/scarab/left_leg + name = "Scarab Left Legs" + id = "scarab_left_legs" + build_path = /obj/item/mecha_parts/part/scarab_left_legs + time = 20 + materials = list(DEFAULT_WALL_MATERIAL = 30000) + +/datum/design/item/mechfab/scarab/right_leg + name = "Scarab Right Legs" + id = "scarab_right_legs" + build_path = /obj/item/mecha_parts/part/scarab_right_legs + time = 20 + materials = list(DEFAULT_WALL_MATERIAL = 30000) + +/datum/design/item/mechfab/phazon + category = list("Phazon") + req_tech = list(TECH_MATERIAL = 7, TECH_BLUESPACE = 5, TECH_MAGNET = 6, TECH_PHORON = 3, TECH_ARCANE = 1) + +/datum/design/item/mechfab/phazon/chassis + name = "Phazon Chassis" + id = "phazon_chassis" + build_path = /obj/item/mecha_parts/chassis/phazon + time = 10 + materials = list(DEFAULT_WALL_MATERIAL = 30000, MAT_DURASTEEL = 4000, MAT_PHORON = 4000, MAT_GOLD = 5000, MAT_VERDANTIUM = 4000) + +/datum/design/item/mechfab/phazon/torso + name = "Phazon Torso" + id = "phazon_torso" + build_path = /obj/item/mecha_parts/part/phazon_torso + time = 30 + materials = list(DEFAULT_WALL_MATERIAL = 30000, MAT_DURASTEEL = 2000, MAT_PHORON = 6000, MAT_GOLD = 6000, MAT_VERDANTIUM = 2000) + +/datum/design/item/mechfab/phazon/head + name = "Phazon Head" + id = "phazon_head" + build_path = /obj/item/mecha_parts/part/phazon_head + time = 20 + materials = list(DEFAULT_WALL_MATERIAL = 10000, MAT_DURASTEEL = 1000, MAT_PHORON = 4000, MAT_GOLD = 4000, MAT_VERDANTIUM = 500) + +/datum/design/item/mechfab/phazon/left_arm + name = "Phazon Left Arm" + id = "phazon_left_arm" + build_path = /obj/item/mecha_parts/part/phazon_left_arm + time = 20 + materials = list(DEFAULT_WALL_MATERIAL = 15000, MAT_PHORON = 2000, MAT_GOLD = 2000, MAT_VERDANTIUM = 500) + +/datum/design/item/mechfab/phazon/right_arm + name = "Phazon Right Arm" + id = "phazon_right_arm" + build_path = /obj/item/mecha_parts/part/phazon_right_arm + time = 20 + materials = list(DEFAULT_WALL_MATERIAL = 15000, MAT_PHORON = 2000, MAT_GOLD = 2000, MAT_VERDANTIUM = 500) + +/datum/design/item/mechfab/phazon/left_leg + name = "Phazon Left Leg" + id = "phazon_left_leg" + build_path = /obj/item/mecha_parts/part/phazon_left_leg + time = 20 + materials = list(DEFAULT_WALL_MATERIAL = 15000, MAT_PHORON = 2000, MAT_GOLD = 2000, MAT_VERDANTIUM = 500) + +/datum/design/item/mechfab/phazon/right_leg + name = "Phazon Right Leg" + id = "phazon_right_leg" + build_path = /obj/item/mecha_parts/part/phazon_right_leg + time = 20 + materials = list(DEFAULT_WALL_MATERIAL = 15000, MAT_PHORON = 2000, MAT_GOLD = 2000, MAT_VERDANTIUM = 500) + +/datum/design/item/mechfab/rigsuit/phase + name = "hardsuit phase rifle" + desc = "A compact phase rifle for a hardsuit." + id = "rig_gun_taser" + req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_MAGNET = 3, TECH_POWER = 4, TECH_COMBAT = 4) + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1250) + build_path = /obj/item/rig_module/mounted/phase \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index 8b2ad96aac..47d277915c 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4002,7 +4002,6 @@ #include "code\modules\research\designs.dm" #include "code\modules\research\destructive_analyzer.dm" #include "code\modules\research\mechfab_designs.dm" -#include "code\modules\research\mechfab_designs_ch.dm" #include "code\modules\research\message_server.dm" #include "code\modules\research\prosfab_designs.dm" #include "code\modules\research\prosfab_designs_vr.dm" @@ -4502,6 +4501,7 @@ #include "modular_chomp\code\modules\clothing\head\misc.dm" #include "modular_chomp\code\modules\clothing\spacesuits\rig\rig.dm" #include "modular_chomp\code\modules\clothing\spacesuits\rig\modules\specific\defib.dm" +#include "modular_chomp\code\modules\clothing\spacesuits\rig\modules\specific\mounted_gun.dm" #include "modular_chomp\code\modules\clothing\spacesuits\rig\modules\specific\protean.dm" #include "modular_chomp\code\modules\datums\supplypacks\contraband.dm" #include "modular_chomp\code\modules\datums\supplypacks\engineering.dm" @@ -4550,8 +4550,10 @@ #include "modular_chomp\code\modules\power\cells\device_cells.dm" #include "modular_chomp\code\modules\power\cells\esoteric_cells.dm" #include "modular_chomp\code\modules\power\cells\power_cells.dm" +#include "modular_chomp\code\modules\projectiles\guns\phase.dm" #include "modular_chomp\code\modules\reagents\reactions\instant\drinks.dm" #include "modular_chomp\code\modules\reagents\reagents\food_drinks.dm" +#include "modular_chomp\code\modules\research\mechfab_designs.dm" #include "modular_chomp\code\modules\research\designs\power_cells.dm" #include "modular_chomp\code\modules\research\designs\weapons.dm" #include "modular_chomp\code\modules\vore\eating\exportpanel_ch.dm" From feaaf95b6590ee4dd7ec0faaa05c0c9ef4b8e891 Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Fri, 30 Sep 2022 04:11:25 +1300 Subject: [PATCH 18/36] Update phase.dm --- modular_chomp/code/modules/projectiles/guns/phase.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modular_chomp/code/modules/projectiles/guns/phase.dm b/modular_chomp/code/modules/projectiles/guns/phase.dm index 963909c5e9..85fe7d305e 100644 --- a/modular_chomp/code/modules/projectiles/guns/phase.dm +++ b/modular_chomp/code/modules/projectiles/guns/phase.dm @@ -2,4 +2,5 @@ name = "mounted phase rifle" self_recharge = 1 use_external_power = 1 - recharge_time = 10 \ No newline at end of file + recharge_time = 10 + one_handed_penalty = 0 \ No newline at end of file From 53c6731ecd5bfa6d13e7afae67bfe2dc91d78878 Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Mon, 16 Jan 2023 12:14:30 +1300 Subject: [PATCH 19/36] Update protean_species.dm --- .../human/species/station/protean/protean_species.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm index 9eefd319fd..7f9bba6d9c 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm @@ -43,14 +43,14 @@ item_slowdown_mod = 1.5 //Gentle encouragement to let others wear you hazard_low_pressure = -1 //Space doesn't bother them - hazard_high_pressure = INFINITY //consistency + hazard_high_pressure = 10 * ONE_ATMOSPHERE //Same as their RIG cold_level_1 = -INFINITY cold_level_2 = -INFINITY cold_level_3 = -INFINITY - heat_level_1 = INFINITY - heat_level_2 = INFINITY - heat_level_3 = INFINITY + heat_level_1 = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE - 500 + heat_level_2 = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE - 200 + heat_level_3 = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE body_temperature = 290 @@ -83,7 +83,7 @@ BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right/unbreakable/nano) ) - heat_discomfort_strings = list("You feel too warm.") + heat_discomfort_strings = list("WARNING: Temperature exceeding acceptable thresholds!.") cold_discomfort_strings = list("You feel too cool.") //These verbs are hidden, for hotkey use only From 69829de66eb8de9b733e474f85978eee336dd9ad Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Wed, 25 Jan 2023 21:05:21 +1300 Subject: [PATCH 20/36] About time I go get this finished --- code/modules/clothing/spacesuits/rig/rig.dm | 3 +- .../rig/modules/specific/protean.dm | 3 + .../species/station/protean/protean_blob.dm | 251 ++++++++++-------- .../species/station/protean/protean_organs.dm | 15 +- .../species/station/protean/protean_powers.dm | 100 ++++--- .../species/station/protean/protean_rig.dm | 155 +++++++++-- .../station/protean/protean_species.dm | 14 +- .../mob/living/carbon/human/update_icons.dm | 6 +- .../code/modules/research/mechfab_designs.dm | 2 +- .../icons/mob/species/protean/protean.dmi | Bin 23804 -> 24379 bytes vorestation.dme | 4 +- 11 files changed, 354 insertions(+), 199 deletions(-) diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 0a0b64862e..7d06f0a66c 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -536,7 +536,8 @@ offline = 0 if(istype(wearer) && !wearer.wearing_rig) wearer.wearing_rig = src - slowdown = initial(slowdown) + if(!istype(src,/obj/item/weapon/rig/protean)) //CHOMPEdit - Stupid snowflake protean special check for rig assimilation code + slowdown = initial(slowdown) if(offline) if(offline == 1) diff --git a/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm b/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm index f3083541e3..a19df3b1c3 100644 --- a/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm +++ b/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm @@ -86,6 +86,9 @@ These should come standard with the Protean rigsuit, unless you want them to wor interface_desc += " Slowdown: [slowdown]" /obj/item/rig_module/protean/armor/activate() + if(holder?:assimilated_rig) + to_chat(usr, "Armor module non-functional while a RIG is assimilated.") + return if(!..(1)) return 0 diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index b9ff4c7d6f..d5b6d68e87 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -35,8 +35,9 @@ min_n2 = 0 max_n2 = 0 minbodytemp = 0 - maxbodytemp = INFINITY + maxbodytemp = 1100 movement_cooldown = 2 + hunger_rate = 0 var/mob/living/carbon/human/humanform var/obj/item/organ/internal/nano/refactory/refactory @@ -271,6 +272,12 @@ else return ..() +/mob/living/simple_mob/protean_blob/adjust_nutrition(amount) + if(humanform) + return humanform.adjust_nutrition(amount) + else + return ..() + /mob/living/simple_mob/protean_blob/emp_act(severity) if(humanform) return humanform.emp_act(severity) @@ -284,6 +291,8 @@ return ..() /mob/living/simple_mob/protean_blob/rad_act(severity) + if(istype(loc, /obj/item/weapon/rig)) + return //Don't irradiate us while we're in rig mode if(humanform) return humanform.rad_act(severity) else @@ -302,9 +311,6 @@ animate(src, alpha = 0, time = 2 SECONDS) sleep(2 SECONDS) - if(!QDELETED(src)) // Human's handle death should have taken us, but maybe we were adminspawned or something without a human counterpart - qdel(src) - /mob/living/simple_mob/protean_blob/Life() . = ..() if(. && istype(refactory) && humanform) @@ -409,81 +415,84 @@ if(!force && !isturf(loc) && !loc == /obj/item/weapon/rig/protean) to_chat(src,"You can't change forms while inside something.") return + to_chat(src, "You rapidly disassociate your form") + if(force || do_after(src,20)) + handle_grasp() //It's possible to blob out before some key parts of the life loop. This results in things getting dropped at null. TODO: Fix the code so this can be done better. + remove_micros(src, src) //Living things don't fare well in roblobs. + if(buckled) + buckled.unbuckle_mob() + if(LAZYLEN(buckled_mobs)) + for(var/buckledmob in buckled_mobs) + riding_datum.force_dismount(buckledmob) + if(pulledby) + pulledby.stop_pulling() + stop_pulling() - handle_grasp() //It's possible to blob out before some key parts of the life loop. This results in things getting dropped at null. TODO: Fix the code so this can be done better. - remove_micros(src, src) //Living things don't fare well in roblobs. - if(buckled) - buckled.unbuckle_mob() - if(LAZYLEN(buckled_mobs)) - for(var/buckledmob in buckled_mobs) - riding_datum.force_dismount(buckledmob) - if(pulledby) - pulledby.stop_pulling() - stop_pulling() + var/client/C = client - var/client/C = client + //Record where they should go + var/atom/creation_spot = drop_location() - //Record where they should go - var/atom/creation_spot = drop_location() + //Create our new blob + var/mob/living/simple_mob/protean_blob/blob = new(creation_spot,src) - //Create our new blob - var/mob/living/simple_mob/protean_blob/blob = new(creation_spot,src) + //Size update + blob.transform = matrix()*size_multiplier + blob.size_multiplier = size_multiplier - //Size update - blob.transform = matrix()*size_multiplier - blob.size_multiplier = size_multiplier + if(l_hand) drop_l_hand() + if(r_hand) drop_r_hand() - if(l_hand) drop_l_hand() - if(r_hand) drop_r_hand() + //Put our owner in it (don't transfer var/mind) + blob.ckey = ckey + blob.ooc_notes = ooc_notes + temporary_form = blob + var/obj/item/device/radio/R = null + if(isradio(l_ear)) + R = l_ear + if(isradio(r_ear)) + R = r_ear + if(R) + blob.mob_radio = R + R.forceMove(blob) + if(wear_id) + blob.myid = wear_id + wear_id.forceMove(blob) - //Put our owner in it (don't transfer var/mind) - blob.ckey = ckey - blob.ooc_notes = ooc_notes - temporary_form = blob - var/obj/item/device/radio/R = null - if(isradio(l_ear)) - R = l_ear - if(isradio(r_ear)) - R = r_ear - if(R) - blob.mob_radio = R - R.forceMove(blob) - if(wear_id) - blob.myid = wear_id - wear_id.forceMove(blob) + //Mail them to nullspace + moveToNullspace() - //Mail them to nullspace - moveToNullspace() + //Message + blob.visible_message("[src.name] collapses into a gooey blob!") - //Message - blob.visible_message("[src.name] collapses into a gooey blob!") + //Duration of the to_puddle iconstate that the blob starts with + sleep(13) + blob.update_icon() //Will remove the collapse anim - //Duration of the to_puddle iconstate that the blob starts with - sleep(13) - blob.update_icon() //Will remove the collapse anim + //Transfer vore organs + blob.vore_organs = vore_organs.Copy() + blob.vore_selected = vore_selected + for(var/obj/belly/B as anything in vore_organs) + B.forceMove(blob) + B.owner = blob + vore_organs.Cut() - //Transfer vore organs - blob.vore_organs = vore_organs.Copy() - blob.vore_selected = vore_selected - for(var/obj/belly/B as anything in vore_organs) - B.forceMove(blob) - B.owner = blob - vore_organs.Cut() + //We can still speak our languages! + blob.languages = languages.Copy() + blob.name = real_name + blob.voice_name = name + var/datum/species/protean/S = src.species + blob.icon_living = S.blob_appearance + blob.item_state = S.blob_appearance + blob.update_icon() - //We can still speak our languages! - blob.languages = languages.Copy() - blob.name = real_name - blob.voice_name = name - var/datum/species/protean/S = src.species - blob.icon_living = S.blob_appearance - blob.item_state = S.blob_appearance - blob.update_icon() + //Flip them to the protean panel + addtimer(CALLBACK(src, .proc/nano_set_panel, C), 4) - //Flip them to the protean panel - addtimer(CALLBACK(src, .proc/nano_set_panel, C), 4) - - //Return our blob in case someone wants it - return blob + //Return our blob in case someone wants it + return blob + else + to_chat(src, "You must remain still to blobform!") //For some reason, there's no way to force drop all the mobs grabbed. This ought to fix that. And be moved elsewhere. Call with caution, doesn't handle cycles. /proc/remove_micros(var/src, var/mob/root) @@ -512,73 +521,76 @@ if(!force && !isturf(blob.loc)) to_chat(blob,"You can't change forms while inside something.") return + to_chat(src, "You rapidly reassemble your form") + if(force || do_after(blob,20)) + if(buckled) + buckled.unbuckle_mob() + if(LAZYLEN(buckled_mobs)) + for(var/buckledmob in buckled_mobs) + riding_datum.force_dismount(buckledmob) + if(pulledby) + pulledby.stop_pulling() + stop_pulling() - if(buckled) - buckled.unbuckle_mob() - if(LAZYLEN(buckled_mobs)) - for(var/buckledmob in buckled_mobs) - riding_datum.force_dismount(buckledmob) - if(pulledby) - pulledby.stop_pulling() - stop_pulling() + var/client/C = blob.client - var/client/C = blob.client + //Stop healing if we are + if(blob.healing) + blob.healing.expire() - //Stop healing if we are - if(blob.healing) - blob.healing.expire() + if(blob.l_hand) blob.drop_l_hand() + if(blob.r_hand) blob.drop_r_hand() - if(blob.l_hand) blob.drop_l_hand() - if(blob.r_hand) blob.drop_r_hand() + if(blob.mob_radio) + blob.mob_radio.forceMove(src) + blob.mob_radio = null + if(blob.myid) + blob.myid.forceMove(src) + blob.myid = null - if(blob.mob_radio) - blob.mob_radio.forceMove(src) - blob.mob_radio = null - if(blob.myid) - blob.myid.forceMove(src) - blob.myid = null + //Play the animation + blob.icon_state = "from_puddle" - //Play the animation - blob.icon_state = "from_puddle" + //Message + blob.visible_message("[src.name] reshapes into a humanoid appearance!") - //Message - blob.visible_message("[src.name] reshapes into a humanoid appearance!") + //Duration of above animation + sleep(8) - //Duration of above animation - sleep(8) + //Record where they should go + var/atom/reform_spot = blob.drop_location() - //Record where they should go - var/atom/reform_spot = blob.drop_location() + //Size update + resize(blob.size_multiplier, FALSE, ignore_prefs = TRUE) - //Size update - resize(blob.size_multiplier, FALSE, ignore_prefs = TRUE) + //Move them back where the blob was + forceMove(reform_spot) - //Move them back where the blob was - forceMove(reform_spot) + //Put our owner in it (don't transfer var/mind) + ckey = blob.ckey + ooc_notes = blob.ooc_notes // Lets give the protean any updated notes from blob form. + temporary_form = null - //Put our owner in it (don't transfer var/mind) - ckey = blob.ckey - ooc_notes = blob.ooc_notes // Lets give the protean any updated notes from blob form. - temporary_form = null + //Transfer vore organs + vore_organs = blob.vore_organs.Copy() + vore_selected = blob.vore_selected + for(var/obj/belly/B as anything in blob.vore_organs) + B.forceMove(src) + B.owner = src + languages = blob.languages.Copy() - //Transfer vore organs - vore_organs = blob.vore_organs.Copy() - vore_selected = blob.vore_selected - for(var/obj/belly/B as anything in blob.vore_organs) - B.forceMove(src) - B.owner = src - languages = blob.languages.Copy() + Life(1) //Fix my blindness right meow //Has to be moved up here, there exists a circumstance where blob could be deleted without vore organs moving right. - Life(1) //Fix my blindness right meow //Has to be moved up here, there exists a circumstance where blob could be deleted without vore organs moving right. + //Get rid of friend blob + qdel(blob) - //Get rid of friend blob - qdel(blob) + //Flip them to the protean panel + addtimer(CALLBACK(src, .proc/nano_set_panel, C), 4) - //Flip them to the protean panel - addtimer(CALLBACK(src, .proc/nano_set_panel, C), 4) - - //Return ourselves in case someone wants it - return src + //Return ourselves in case someone wants it + return src + else + to_chat(src, "You must remain still to reshape yourself!") /mob/living/carbon/human/proc/nano_set_panel(var/client/C) if(C) @@ -615,4 +627,7 @@ var/mob/living/simple_mob/protean_blob/PB = target if(PB.humanform == src) return FALSE - return ..() \ No newline at end of file + return ..() + +/mob/living/simple_mob/protean_blob/handle_mutations_and_radiation() + humanform.handle_mutations_and_radiation() \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm index e62348a5c6..379d488524 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_organs.dm @@ -200,4 +200,17 @@ icon_state = "posi1" /obj/item/organ/internal/nano/digest_act(atom/movable/item_storage = null) - return FALSE \ No newline at end of file + return FALSE + +/datum/design/item/protean_reboot + name = "Protean Reboot Programmer" + id = "protean_reboot" + materials = list(MAT_STEEL = 2000, MAT_GLASS = 1000, MAT_PLASTEEL = 10000) + build_path = /obj/item/device/protean_reboot + sort_string = "JVAAZ" + +/obj/item/device/protean_reboot + name = "Protean Reboot Programmer" + desc = "A small, highly specialized programmer used to form the basis of a Protean swarm. A necessary component in reconstituting a Protean who has lost total body cohesion." + icon = 'modular_chomp/icons/mob/species/protean/protean.dmi' + icon_state = "reboot" \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm index 452abf136a..21a1aebb35 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm @@ -52,7 +52,7 @@ else blob = temporary_form active_regen = 1 - if(do_after(blob,5 SECONDS)) + if(do_after(blob,50)) var/list/limblist = species.has_limbs[choice] var/limbpath = limblist["path"] var/obj/item/organ/external/new_eo = new limbpath(src) @@ -114,12 +114,24 @@ else to_chat(caller, "You do not have enough steel stored for this operation.") else + input = tgui_alert(caller,{"Include Flavourtext?"},"Reassembly",list("Yes","No","Cancel")) + if(input == "Cancel" || !input) + return + var/flavour = 0 + if(input == "Yes") + flavour = 1 + input = tgui_alert(caller,{"Include OOC notes?"},"Reassembly",list("Yes","No","Cancel")) + if(input == "Cancel" || !input) + return + var/oocnotes = 0 + if(input == "Yes") + oocnotes = 1 to_chat(caller, "You begin to reassemble. You will need to remain still.") caller.visible_message("[caller] rapidly contorts and shifts!", "You begin to reassemble.") if(do_after(caller, 40)) if(client.prefs) //Make sure we didn't d/c var/obj/item/weapon/rig/protean/Rig = species?:OurRig - GetAppearanceFromPrefs() + GetAppearanceFromPrefs(flavour, oocnotes) species?:OurRig = Rig //Get a reference to our Rig and put it back after reassembling caller.visible_message("[caller] adopts a new form!", "You have reassembled.") @@ -239,48 +251,54 @@ set category = "Abilities" set hidden = 1 + var/mob/living/caller = src + if(temporary_form) + caller = temporary_form if(nano_dead_check(src)) - to_chat(temporary_form, "You need to be repaired first before you can act!") + to_chat(caller, "You need to be repaired first before you can act!") return + to_chat(src, "You rapidly condense into your module.") + if(forced || do_after(caller,20)) + if(!temporary_form) //If you're human, force you into blob form before rig'ing + nano_blobform(forced) + spawn(2) - if(!temporary_form) //If you're human, force you into blob form before rig'ing - nano_blobform(forced) - spawn(2) - - if(istype(src.species, /datum/species/protean)) - var/datum/species/protean/S = src.species - var/mob/living/simple_mob/protean_blob/P = temporary_form - if(S.OurRig) //Do we even have a RIG? - if(P.loc == S.OurRig) //we're inside our own RIG - if(S.OurRig.wearer) //We're being worn. Engulf em', if prefs align.. otherwise just drop off. - var/mob/living/carbon/human/victim = S.OurRig.wearer - victim.drop_from_inventory(S.OurRig) - if(P.can_be_drop_pred && victim.devourable && victim.can_be_drop_prey) - if(P.vore_selected) - perform_the_nom(P,victim,P,P.vore_selected,1) - P.forceMove(get_turf(S.OurRig)) - S.OurRig.forceMove(src) - S.OurRig.myprotean = src - src.equip_to_slot_if_possible(S.OurRig, slot_back) - S.OurRig.Moved() - P.has_hands = 1 - else //We're not in our own RIG - if(P.stat || P.resting && !forced) - to_chat(P,"You can only do this while not stunned.") - else - if(P.l_hand) - P.drop_l_hand() - if(P.r_hand) - P.drop_r_hand() - P.has_hands = 0 - S.OurRig.myprotean = P - src.drop_from_inventory(S.OurRig) - P.forceMove(S.OurRig) - S.OurRig.canremove = 1 - P.reset_view() - else //Make one if not - to_chat(temporary_form, "Somehow, your RIG got disconnected from your species. This may have been caused by an admin heal. A new one has been created for you, contact a coder.") - new /obj/item/weapon/rig/protean(src,src) + if(istype(src.species, /datum/species/protean)) + var/datum/species/protean/S = src.species + var/mob/living/simple_mob/protean_blob/P = temporary_form + if(S.OurRig) //Do we even have a RIG? + if(P.loc == S.OurRig) //we're inside our own RIG + if(S.OurRig.wearer) //We're being worn. Engulf em', if prefs align.. otherwise just drop off. + var/mob/living/carbon/human/victim = S.OurRig.wearer + victim.drop_from_inventory(S.OurRig) + if(P.can_be_drop_pred && victim.devourable && victim.can_be_drop_prey) + if(P.vore_selected) + perform_the_nom(P,victim,P,P.vore_selected,1) + P.forceMove(get_turf(S.OurRig)) + S.OurRig.forceMove(src) + S.OurRig.myprotean = src + src.equip_to_slot_if_possible(S.OurRig, slot_back) + S.OurRig.Moved() + P.has_hands = 1 + else //We're not in our own RIG + if(P.stat || P.resting && !forced) + to_chat(P,"You can only do this while not stunned.") + else + if(P.l_hand) + P.drop_l_hand() + if(P.r_hand) + P.drop_r_hand() + P.has_hands = 0 + S.OurRig.myprotean = P + src.drop_from_inventory(S.OurRig) + P.forceMove(S.OurRig) + S.OurRig.canremove = 1 + P.reset_view() + else //Make one if not + to_chat(temporary_form, "Somehow, your RIG got disconnected from your species. This may have been caused by an admin heal. A new one has been created for you, contact a coder.") + new /obj/item/weapon/rig/protean(src,src) + else + to_chat(src, "You must remain still to condense!") /mob/living/carbon/human/proc/appearance_switch() set name = "Switch Blob Appearance" diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index 8119f08655..30a3a80fcb 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -27,20 +27,20 @@ //interface_path = "RIGSuit_protean" //ai_interface_path = "RIGSuit_protean" var/sealed = 0 - var/reviving = 0 + var/assimilated_rig /obj/item/weapon/rig/protean/relaymove(mob/user, var/direction) if(user.stat || user.stunned) return - forced_move(direction, user, FALSE) + forced_move(direction, user, 0) /obj/item/weapon/rig/protean/check_suit_access(mob/living/user) if(user == myprotean) - return TRUE + return 1 return ..() /obj/item/weapon/rig/protean/digest_act(atom/movable/item_storage = null) - return FALSE + return 0 /obj/item/weapon/rig/protean/New(var/newloc, var/mob/living/carbon/human/P) if(P) @@ -51,7 +51,6 @@ myprotean = P else to_chat(P, "You should have spawned with a backpack to assimilate into your RIG. Try clicking it with a backpack.") - verbs += /obj/item/weapon/rig/verb/RemoveBag ..(newloc) /obj/item/weapon/rig/proc/AssimilateBag(var/mob/living/carbon/human/P, var/spawned, var/obj/item/weapon/storage/backpack/B) @@ -69,7 +68,7 @@ else to_chat(P,"Your rigsuit can only assimilate a backpack into itself. If you are seeing this message, and you do not have a rigsuit, tell a coder.") -/obj/item/weapon/rig/verb/RemoveBag() +/obj/item/weapon/rig/protean/verb/RemoveBag() set name = "Remove Stored Bag" set category = "Object" @@ -95,18 +94,18 @@ name = "mass" desc = "A helmet-shaped clump of nanomachines." light_overlay = "should not use a light overlay" - species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) //CHOMPEDIT: adding more races to the proto rig + species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) /obj/item/clothing/gloves/gauntlets/rig/protean name = "mass" desc = "Glove-shaped clusters of nanomachines." siemens_coefficient= 0 - species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) //CHOMPEDIT: adding more races to the proto rig + species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) /obj/item/clothing/shoes/magboots/rig/protean name = "mass" desc = "Boot-shaped clusters of nanomachines." - species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) //CHOMPEDIT: adding more races to the proto rig + species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) /obj/item/clothing/suit/space/rig/protean name = "mass" @@ -120,7 +119,7 @@ /obj/item/device/suit_cooling_unit, /obj/item/weapon/melee/baton, /obj/item/weapon/storage/backpack, - ) //Subspace radio is in for the citadel version. IDK if we have that and I don't think we need it so I removed it from this list. + ) @@ -278,6 +277,48 @@ /obj/item/weapon/rig/protean/attackby(obj/item/W as obj, mob/living/user as mob) if(!istype(user)) return 0 + if(dead) + switch(dead) + if(1) + if(W.is_screwdriver()) + playsound(src, W.usesound, 50, 1) + if(do_after(user,50,src,exclusive = TASK_ALL_EXCLUSIVE)) + to_chat(user, "You unscrew the maintenace panel on the [src].") + dead +=1 + return + if(2) + if(istype(W, /obj/item/device/protean_reboot))//placeholder + if(do_after(user,50,src,exclusive = TASK_ALL_EXCLUSIVE)) + playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) + to_chat(user, "You carefully slot [W] in the [src].") + dead +=1 + qdel(W) + return + if(3) + if(istype(W, /obj/item/stack/nanopaste)) + if(do_after(user,50,src,exclusive = TASK_ALL_EXCLUSIVE)) + playsound(src, 'sound/effects/ointment.ogg', 50, 1) + to_chat(user, "You slather the interior confines of the [src] with the [W].") + dead +=1 + W?:use(1) + return + if(4) + if(istype(W, /obj/item/weapon/shockpaddles)) + if(W?:can_use(user)) + to_chat(user, "You hook up the [W] to the contact points in the maintenance assembly") + if(do_after(user,50,src,exclusive = TASK_ALL_EXCLUSIVE)) + playsound(src, 'sound/machines/defib_charge.ogg', 50, 0) + if(do_after(user,10,src)) + playsound(src, 'sound/machines/defib_zap.ogg', 50, 1, -1) + playsound(src, 'sound/machines/defib_success.ogg', 50, 0) + new /obj/effect/gibspawner/robot(src.loc) + src.atom_say("Contact received! Reassembly nanites calibrated. Estimated time to resucitation: 1 minute 30 seconds") + dead = 0 + addtimer(CALLBACK(src, .proc/make_alive, myprotean?:humanform), 900) + return + if(istype(W,/obj/item/weapon/rig)) + if(!assimilated_rig) + AssimilateRig(user,W) if(istype(W,/obj/item/weapon/tank)) //Todo, some kind of check for suits without integrated air supplies. if(air_supply) to_chat(user, "\The [src] already has a tank installed.") @@ -352,20 +393,6 @@ for(var/obj/item/rig_module/module in installed_modules) if(module.accepts_item(W,user)) //Item is handled in this proc return - if(dead) - if(istype(W, /obj/item/stack/material/plasteel)) - var/obj/item/stack/material/plasteel/PL = W - if(!reviving) - if(PL.get_amount() < 5) - to_chat(user, "You need five sheets of plasteel to reconstruct this Protean.") - return - if(PL.use(5)) - to_chat(user, "You feed plasteel to the Protean, they will be able to reconstitute in ten minutes from now.") - to_chat(myprotean, "You've been fed the necessary plasteel to reconstitute your form, you will be able to reconstitute in ten minutes.") - addtimer(CALLBACK(src, .proc/make_alive, myprotean?:humanform), 6000) - return - else - to_chat(user, "This Protean is already reconstituting") if(rig_storage) var/obj/item/weapon/storage/backpack = rig_storage if(backpack.can_be_inserted(W, 1)) @@ -411,9 +438,8 @@ var/datum/species/protean/S S = H.species S.pseudodead = 0 - dead = 0 - reviving = 0 to_chat(myprotean, "You have finished reconstituting.") + playsound(src, 'sound/machines/ping.ogg', 50, 0) /obj/item/weapon/rig/protean/take_hit(damage, source, is_emp=0) return //We don't do that here @@ -487,4 +513,79 @@ /obj/item/weapon/rig/protean/toggle_piece(piece, mob/living/carbon/human/H, deploy_mode, forced) H = src.wearer - ..() \ No newline at end of file + ..() + +/obj/item/weapon/rig/protean/get_description_interaction() + if(dead) + var/list/results = list() + switch(dead) + if(1) + results += "Use a screwdriver to start repairs." + if(2) + results += "Insert a Protean Reboot Programmer, printed from a protolathe." + if(3) + results += "Use some Nanopaste." + if(4) + results += "Use either a defib or jumper cables to start the reboot sequence." + return results + +//Effectively a round about way of letting a Protean wear other rigs. +/obj/item/weapon/rig/protean/proc/AssimilateRig(mob/user, var/obj/item/weapon/rig/R) + if(!R || assimilated_rig) + return + to_chat(user, "You assimilate the [R] into the [src]. Mimicking its stats and appearance.") + for(var/obj/item/piece in list(gloves,helmet,boots,chest)) + piece.armor = R.armor.Copy() + //I dislike this piece of code, but not every rig has the full set of parts + if(R.gloves) + gloves.sprite_sheets = R.gloves.sprite_sheets.Copy() + gloves.sprite_sheets_obj = R.gloves.sprite_sheets.Copy() + gloves.icon_state = R.gloves.icon_state + if(R.helmet) + helmet.sprite_sheets = R.helmet.sprite_sheets.Copy() + helmet.sprite_sheets_obj = R.helmet.sprite_sheets.Copy() + helmet.icon_state = R.helmet.icon_state + if(R.boots) + boots.sprite_sheets = R.boots.sprite_sheets.Copy() + boots.sprite_sheets_obj = R.boots.sprite_sheets.Copy() + boots.icon_state = R.boots.icon_state + if(R.chest) + chest.sprite_sheets = R.chest.sprite_sheets.Copy() + chest.sprite_sheets_obj = R.chest.sprite_sheets.Copy() + chest.icon_state = R.chest.icon_state + suit_state = R.suit_state + user.drop_item(R) + contents += R + assimilated_rig = R + slowdown = (R.slowdown *0.5) + offline_slowdown = slowdown + +/obj/item/weapon/rig/protean/verb/RemoveRig() + set name = "Remove Assimilated Rig" + set category = "Object" + + if(assimilated_rig) + for(var/obj/item/piece in list(gloves,helmet,boots,chest)) + piece.armor = armor.Copy() + piece.icon_state = initial(piece.icon_state) + + //Byond at this time does not support initial() on lists + //So we have to create a new rig, just so we can copy the lists we're after + //If someone figures out a smarter way to do this, please tell me + var/obj/item/weapon/rig/tempRig = new /obj/item/weapon/rig/protean() + gloves.sprite_sheets = tempRig.gloves.sprite_sheets.Copy() + gloves.sprite_sheets_obj = tempRig.gloves.sprite_sheets.Copy() + helmet.sprite_sheets = tempRig.helmet.sprite_sheets.Copy() + helmet.sprite_sheets_obj = tempRig.helmet.sprite_sheets.Copy() + boots.sprite_sheets = tempRig.boots.sprite_sheets.Copy() + boots.sprite_sheets_obj = tempRig.boots.sprite_sheets.Copy() + chest.sprite_sheets = tempRig.chest.sprite_sheets.Copy() + chest.sprite_sheets_obj = tempRig.chest.sprite_sheets.Copy() + slowdown = initial(slowdown) + suit_state = icon_state + offline_slowdown = initial(offline_slowdown) + usr.put_in_hands(assimilated_rig) + assimilated_rig = null + qdel(tempRig) + else + to_chat(usr, "[src] has not assimilated a RIG. Use one on it to assimilate.") diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm index 7f9bba6d9c..bc10c5c37c 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm @@ -35,7 +35,7 @@ min_age = 18 max_age = 200 oxy_mod = 0 - radiation_mod = 0 //Can't be assed with fandangling rad protections while blob formed/suited + //radiation_mod = 0 //Can't be assed with fandangling rad protections while blob formed/suited darksight = 10 siemens_coefficient = 2 emp_dmg_mod = 0.8 @@ -48,13 +48,13 @@ cold_level_1 = -INFINITY cold_level_2 = -INFINITY cold_level_3 = -INFINITY - heat_level_1 = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE - 500 - heat_level_2 = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE - 200 - heat_level_3 = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE + heat_level_1 = 420 + heat_level_2 = 480 + heat_level_3 = 1100 - body_temperature = 290 + body_temperature = 290 - rarity_value = 5 + rarity_value = 5 female_scream_sound = 'modular_chomp/sound/voice/scream_silicon.ogg' male_scream_sound = 'modular_chomp/sound/voice/scream_silicon.ogg' @@ -189,7 +189,7 @@ temp = H.temporary_form playsound(temp, 'modular_chomp/sound/voice/borg_deathsound.ogg', 50, 1) temp.visible_message("[temp.name] shudders and retreats inwards, coalescing into a single core componant!") - to_chat(temp, "You've died as a Protean! While dead, you will be locked to your core RIG control module until you can be repaired. You will need to be fed 5 sheets of plasteel in order to reshape yourself.") + to_chat(temp, "You've died as a Protean! While dead, you will be locked to your core RIG control module until you can be repaired. Instructions to your revival can be found in the Examine tab when examining your module..") if(H.temporary_form) if(!istype(H.temporary_form.loc, /obj/item/weapon/rig/protean)) H.nano_rig_transform(1) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm b/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm index 269652dccb..2148d1726a 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm @@ -105,7 +105,7 @@ struggle_anim_taur = FALSE update_vore_tail_sprite() -/mob/living/carbon/human/proc/GetAppearanceFromPrefs() +/mob/living/carbon/human/proc/GetAppearanceFromPrefs(var/flavourtext, var/oocnotes) /* Jank code that effectively creates the client's mob from save, then copies its appearance to our current mob. Intended to be used with shapeshifter species so we don't reset their organs in doing so.*/ var/mob/living/carbon/human/dummy/mannequin/Dummy = new @@ -123,6 +123,10 @@ dna.species_traits = traits.Copy() UpdateAppearance() icon = Dummy.icon + if(flavourtext) + flavor_texts = client.prefs.flavor_texts.Copy() + if(oocnotes) + ooc_notes = client.prefs.metadata qdel(Dummy) /* Alternative version of the above proc, incase it turns out cloning our dummy mob's DNA is an awful, terrible bad idea. diff --git a/modular_chomp/code/modules/research/mechfab_designs.dm b/modular_chomp/code/modules/research/mechfab_designs.dm index aef60aa390..73803e742c 100644 --- a/modular_chomp/code/modules/research/mechfab_designs.dm +++ b/modular_chomp/code/modules/research/mechfab_designs.dm @@ -114,7 +114,7 @@ /datum/design/item/mechfab/rigsuit/phase name = "hardsuit phase rifle" desc = "A compact phase rifle for a hardsuit." - id = "rig_gun_taser" + id = "rig_gun_phase" req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_MAGNET = 3, TECH_POWER = 4, TECH_COMBAT = 4) materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1250) build_path = /obj/item/rig_module/mounted/phase \ No newline at end of file diff --git a/modular_chomp/icons/mob/species/protean/protean.dmi b/modular_chomp/icons/mob/species/protean/protean.dmi index 075c3fb0372d4c0648ca53f7fae04159ac486121..4a70f7c56a211175e755bb1fb5f6c567383d511e 100644 GIT binary patch literal 24379 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 literal 23804 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 DPxQ6J diff --git a/vorestation.dme b/vorestation.dme index 62dbce8152..c42fc37d5c 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4591,15 +4591,15 @@ #include "modular_chomp\code\modules\power\cells\device_cells.dm" #include "modular_chomp\code\modules\power\cells\esoteric_cells.dm" #include "modular_chomp\code\modules\power\cells\power_cells.dm" -#include "modular_chomp\code\modules\projectiles\guns\phase.dm" #include "modular_chomp\code\modules\projectiles\gun.dm" #include "modular_chomp\code\modules\projectiles\clockwork\clockwork_guns_ch.dm" +#include "modular_chomp\code\modules\projectiles\guns\phase.dm" #include "modular_chomp\code\modules\reagents\machinery\dispenser\chem_synthesizer_ch.dm" #include "modular_chomp\code\modules\reagents\reactions\instant\drinks.dm" #include "modular_chomp\code\modules\reagents\reactions\instant\instant.dm" #include "modular_chomp\code\modules\reagents\reagents\food_drinks.dm" -#include "modular_chomp\code\modules\research\mechfab_designs.dm" #include "modular_chomp\code\modules\reagents\reagents\medicine.dm" +#include "modular_chomp\code\modules\research\mechfab_designs.dm" #include "modular_chomp\code\modules\research\designs\power_cells.dm" #include "modular_chomp\code\modules\research\designs\weapons.dm" #include "modular_chomp\code\modules\resleeving\machines.dm" From 45dd3bdf59f575248378cd86cadd9ebb4085beb6 Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Thu, 26 Jan 2023 15:31:51 +1300 Subject: [PATCH 21/36] More fixes --- .../species/station/protean/protean_blob.dm | 27 +- .../species/station/protean/protean_powers.dm | 13 +- .../species/station/protean/protean_rig.dm | 299 ++++++++++-------- .../icons/mob/species/protean/protean.dmi | Bin 24379 -> 28939 bytes .../icons/mob/species/teshari/feet_ch.dmi | Bin 0 -> 182 bytes .../icons/mob/species/teshari/hands_ch.dmi | Bin 0 -> 182 bytes .../icons/mob/species/teshari/helmet_ch.dmi | Bin 0 -> 182 bytes .../icons/mob/species/teshari/suit_ch.dmi | Bin 0 -> 182 bytes 8 files changed, 200 insertions(+), 139 deletions(-) create mode 100644 modular_chomp/icons/mob/species/teshari/feet_ch.dmi create mode 100644 modular_chomp/icons/mob/species/teshari/hands_ch.dmi create mode 100644 modular_chomp/icons/mob/species/teshari/helmet_ch.dmi create mode 100644 modular_chomp/icons/mob/species/teshari/suit_ch.dmi diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index d5b6d68e87..61dd44b70c 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -56,6 +56,9 @@ shock_resist = 1 nameset = 1 holder_type = /obj/item/weapon/holder/protoblob + var/hiding = 0 + vore_icons = 1 + vore_active = 1 /datum/say_list/protean_blob speak = list("Blrb?","Sqrsh.","Glrsh!") @@ -321,20 +324,30 @@ healing = null /mob/living/simple_mob/protean_blob/lay_down() - ..() var/obj/item/weapon/rig/rig = src.get_rig() if(rig) rig.force_rest(src) return - if(resting) + ..() + +/mob/living/simple_mob/protean_blob/verb/prot_hide() + set name = "Hide Self" + set desc = "Disperses your mass into a thin viel, making a trap to snatch prey with, or simply hide." + set category = "Abilities" + + if(!hiding) + icon_state = "hide" + sleep(7) mouse_opacity = 0 plane = ABOVE_OBJ_PLANE + hiding = 1 else mouse_opacity = 1 icon_state = "wake" plane = MOB_PLANE sleep(7) update_icon() + hiding = 0 //Potential glob noms if(can_be_drop_pred) //Toggleable in vore panel var/list/potentials = living_mobs(0) @@ -345,6 +358,15 @@ target.buckled.unbuckle_mob(target, force = TRUE) target.forceMove(vore_selected) to_chat(target,"\The [src] quickly engulfs you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!") + update_canmove() + +/mob/living/simple_mob/protean_blob/update_canmove() + if(hiding) + canmove = 0 + return canmove + else + ..() + /* Don't need this block anymore since our Prots have hands /mob/living/simple_mob/protean_blob/attack_target(var/atom/A) @@ -484,6 +506,7 @@ var/datum/species/protean/S = src.species blob.icon_living = S.blob_appearance blob.item_state = S.blob_appearance + blob.icon_rest = S.blob_appearance + "_rest" blob.update_icon() //Flip them to the protean panel diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm index 21a1aebb35..76962b046b 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm @@ -268,9 +268,11 @@ var/mob/living/simple_mob/protean_blob/P = temporary_form if(S.OurRig) //Do we even have a RIG? if(P.loc == S.OurRig) //we're inside our own RIG + if(ismob(S.OurRig.loc)) + var/mob/m = S.OurRig.loc + m.drop_from_inventory(S.OurRig) if(S.OurRig.wearer) //We're being worn. Engulf em', if prefs align.. otherwise just drop off. var/mob/living/carbon/human/victim = S.OurRig.wearer - victim.drop_from_inventory(S.OurRig) if(P.can_be_drop_pred && victim.devourable && victim.can_be_drop_prey) if(P.vore_selected) perform_the_nom(P,victim,P,P.vore_selected,1) @@ -309,7 +311,7 @@ var/mob/living/caller = src if(temporary_form) caller = temporary_form - var/blobstyle = input(caller, "Which blob style would you like?") in list("Red and Blue Stars", "Blue Star", "Plain") + var/blobstyle = input(caller, "Which blob style would you like?") in list("Red and Blue Stars", "Blue Star", "Plain", "Catslug", "Pai Cat") switch(blobstyle) if("Red and Blue Stars") S.blob_appearance = "puddle2" @@ -317,10 +319,15 @@ S.blob_appearance = "puddle1" if("Plain") S.blob_appearance = "puddle0" + if("Catslug") + S.blob_appearance = "catslug" + if("Pai Cat") + S.blob_appearance = "pai-cat" if(temporary_form) if(blobstyle) temporary_form.icon_living = S.blob_appearance temporary_form.item_state = S.blob_appearance + temporary_form.icon_rest = S.blob_appearance + "_rest" temporary_form.update_icon() if(istype(temporary_form.loc, /obj/item/weapon/holder/protoblob)) var/obj/item/weapon/holder/protoblob/PB = temporary_form.loc @@ -361,7 +368,7 @@ target.drop_from_inventory(target.back) caller.visible_message("[caller] latched onto [target]!", "You latch yourself onto [target]!") target.Weaken(3) - nano_rig_transform() + nano_rig_transform(1) spawn(2) //Have to give time for the above proc to resolve S.OurRig.forceMove(target) target.equip_to_slot_if_possible(S.OurRig, slot_back) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index 30a3a80fcb..ad0dab80ef 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -95,17 +95,125 @@ desc = "A helmet-shaped clump of nanomachines." light_overlay = "should not use a light overlay" species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) + sprite_sheets = list( + SPECIES_HUMAN = 'modular_chomp/icons/mob/head_ch.dmi', + SPECIES_TAJ = 'modular_chomp/icons/mob/species/tajaran/helmet_ch.dmi', + SPECIES_SKRELL = 'modular_chomp/icons/mob/species/skrell/helmet_ch.dmi', + SPECIES_UNATHI = 'modular_chomp/icons/mob/species/unathi/helmet_ch.dmi', + SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/species/unathi/helmet_ch.dmi', + SPECIES_AKULA = 'modular_chomp/icons/mob/species/akula/helmet_ch.dmi', + SPECIES_SERGAL = 'modular_chomp/icons/mob/species/sergal/helmet_ch.dmi', + SPECIES_NEVREAN = 'modular_chomp/icons/mob/species/sergal/helmet_ch.dmi', + SPECIES_VULPKANIN = 'modular_chomp/icons/mob/species/vulpkanin/helmet_ch.dmi', + SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/species/fox/helmet_ch.dmi', + SPECIES_FENNEC = 'modular_chomp/icons/mob/species/vulpkanin/helmet_ch.dmi', + SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/species/skrell/helmet_ch.dmi', + SPECIES_TESHARI = 'modular_chomp/icons/mob/species/teshari/helmet_ch.dmi', + SPECIES_VASILISSAN = 'modular_chomp/icons/mob/species/skrell/helmet_ch.dmi', + SPECIES_VOX = 'modular_chomp/icons/mob/species/vox/head_ch.dmi' + ) + + sprite_sheets_obj = list( + SPECIES_HUMAN = 'modular_chomp/icons/mob/head_ch.dmi', + SPECIES_TAJ = 'modular_chomp/icons/mob/head_ch.dmi', + SPECIES_SKRELL = 'modular_chomp/icons/mob/head_ch.dmi', + SPECIES_UNATHI = 'modular_chomp/icons/mob/head_ch.dmi', + SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/head_ch.dmi', + SPECIES_AKULA = 'modular_chomp/icons/mob/head_ch.dmi', + SPECIES_SERGAL = 'modular_chomp/icons/mob/head_ch.dmi', + SPECIES_NEVREAN = 'modular_chomp/icons/mob/head_ch.dmi', + SPECIES_VULPKANIN = 'modular_chomp/icons/mob/head_ch.dmi', + SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/head_ch.dmi', + SPECIES_FENNEC = 'modular_chomp/icons/mob/head_ch.dmi', + SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/head_ch.dmi', + SPECIES_TESHARI = 'modular_chomp/icons/mob/head_ch.dmi', + SPECIES_VASILISSAN = 'modular_chomp/icons/mob/head_ch.dmi', + SPECIES_VOX = 'modular_chomp/icons/mob/head_ch.dmi' + ) + icon = 'modular_chomp/icons/mob/head_ch.dmi' /obj/item/clothing/gloves/gauntlets/rig/protean name = "mass" desc = "Glove-shaped clusters of nanomachines." siemens_coefficient= 0 species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) + sprite_sheets = list( + SPECIES_HUMAN = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_TAJ = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_SKRELL = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_UNATHI = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_AKULA = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_SERGAL = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_NEVREAN = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_VULPKANIN = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_FENNEC = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_TESHARI = 'modular_chomp/icons/mob/species/teshari/hands_ch.dmi', + SPECIES_VASILISSAN = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_VOX = 'modular_chomp/icons/mob/species/vox/gloves_ch.dmi' + ) + + sprite_sheets_obj = list( + SPECIES_HUMAN = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_TAJ = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_SKRELL = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_UNATHI = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_AKULA = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_SERGAL = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_NEVREAN = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_VULPKANIN = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_FENNEC = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_TESHARI = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_VASILISSAN = 'modular_chomp/icons/mob/hands_ch.dmi', + SPECIES_VOX = 'modular_chomp/icons/mob/hands_ch.dmi' + ) + icon = 'modular_chomp/icons/mob/hands_ch.dmi' /obj/item/clothing/shoes/magboots/rig/protean name = "mass" desc = "Boot-shaped clusters of nanomachines." species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) + sprite_sheets = list( + SPECIES_HUMAN = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_TAJ = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_SKRELL = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_UNATHI = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_AKULA = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_SERGAL = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_NEVREAN = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_VULPKANIN = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_FENNEC = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_TESHARI = 'modular_chomp/icons/mob/species/teshari/feet_ch.dmi', + SPECIES_VASILISSAN = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_VOX = 'modular_chomp/icons/mob/species/vox/shoes_ch.dmi' + ) + + sprite_sheets_obj = list( + SPECIES_HUMAN = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_TAJ = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_SKRELL = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_UNATHI = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_AKULA = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_SERGAL = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_NEVREAN = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_VULPKANIN = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_FENNEC = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_TESHARI = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_VASILISSAN = 'modular_chomp/icons/mob/feet_ch.dmi', + SPECIES_VOX = 'modular_chomp/icons/mob/feet_ch.dmi' + ) + icon = 'modular_chomp/icons/mob/feet_ch.dmi' /obj/item/clothing/suit/space/rig/protean name = "mass" @@ -120,49 +228,6 @@ /obj/item/weapon/melee/baton, /obj/item/weapon/storage/backpack, ) - - - - -//Backend stuff to make the sprites work. Copied and pasted from rig_pieces_vr.dm, but added ch to everything. Only reason for this to be touched is to add or remove species. This might just need to go in a new file named rig_pieces_ch.dm. -/obj/item/clothing/head/helmet/space/rig/protean - sprite_sheets = list( - SPECIES_HUMAN = 'modular_chomp/icons/mob/head_ch.dmi', - SPECIES_TAJ = 'modular_chomp/icons/mob/species/tajaran/helmet_ch.dmi', - SPECIES_SKRELL = 'modular_chomp/icons/mob/species/skrell/helmet_ch.dmi', - SPECIES_UNATHI = 'modular_chomp/icons/mob/species/unathi/helmet_ch.dmi', - SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/species/unathi/helmet_ch.dmi', - SPECIES_AKULA = 'modular_chomp/icons/mob/species/akula/helmet_ch.dmi', - SPECIES_SERGAL = 'modular_chomp/icons/mob/species/sergal/helmet_ch.dmi', - SPECIES_NEVREAN = 'modular_chomp/icons/mob/species/sergal/helmet_ch.dmi', - SPECIES_VULPKANIN = 'modular_chomp/icons/mob/species/vulpkanin/helmet_ch.dmi', - SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/species/fox/helmet_ch.dmi', - SPECIES_FENNEC = 'modular_chomp/icons/mob/species/vulpkanin/helmet_ch.dmi', - SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/species/skrell/helmet_ch.dmi', - SPECIES_TESHARI = 'icons/inventory/head/mob_ch_teshari.dmi', - SPECIES_VASILISSAN = 'modular_chomp/icons/mob/species/skrell/helmet_ch.dmi', - SPECIES_VOX = 'modular_chomp/icons/mob/species/vox/head_ch.dmi' - ) - - sprite_sheets_obj = list( - SPECIES_HUMAN = 'icons/obj/clothing/hats_ch.dmi', - SPECIES_TAJ = 'icons/obj/clothing/hats_ch.dmi', - SPECIES_SKRELL = 'icons/obj/clothing/hats_ch.dmi', - SPECIES_UNATHI = 'icons/obj/clothing/hats_ch.dmi', - SPECIES_XENOHYBRID = 'icons/obj/clothing/hats_ch.dmi', - SPECIES_AKULA = 'icons/obj/clothing/hats_ch.dmi', - SPECIES_SERGAL = 'icons/obj/clothing/hats_ch.dmi', - SPECIES_NEVREAN = 'icons/obj/clothing/hats_ch.dmi', - SPECIES_VULPKANIN = 'icons/obj/clothing/hats_ch.dmi', - SPECIES_ZORREN_HIGH = 'icons/obj/clothing/hats_ch.dmi', - SPECIES_FENNEC = 'icons/obj/clothing/hats_ch.dmi', - SPECIES_PROMETHEAN = 'icons/obj/clothing/hats_ch.dmi', - SPECIES_TESHARI = 'icons/obj/clothing/hats_ch.dmi', - SPECIES_VASILISSAN = 'icons/obj/clothing/hats_ch.dmi', - SPECIES_VOX = 'icons/obj/clothing/hats_ch.dmi' - ) - -/obj/item/clothing/suit/space/rig/protean sprite_sheets = list( SPECIES_HUMAN = 'modular_chomp/icons/mob/spacesuit_ch.dmi', SPECIES_TAJ = 'modular_chomp/icons/mob/species/tajaran/suit_ch.dmi', @@ -176,102 +241,29 @@ SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/species/fox/suit_ch.dmi', SPECIES_FENNEC = 'modular_chomp/icons/mob/species/vulpkanin/suit_ch.dmi', SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/species/skrell/suit_ch.dmi', - SPECIES_TESHARI = 'icons/inventory/suit/mob_ch_teshari.dmi', + SPECIES_TESHARI = 'modular_chomp/icons/mob/species/teshari/suit_ch.dmi', SPECIES_VASILISSAN = 'modular_chomp/icons/mob/species/skrell/suit_ch.dmi', SPECIES_VOX = 'modular_chomp/icons/mob/species/vox/suit_ch.dmi' ) sprite_sheets_obj = list( - SPECIES_HUMAN = 'icons/obj/clothing/spacesuits_ch.dmi', - SPECIES_TAJ = 'icons/obj/clothing/spacesuits_ch.dmi', - SPECIES_SKRELL = 'icons/obj/clothing/spacesuits_ch.dmi', - SPECIES_UNATHI = 'icons/obj/clothing/spacesuits_ch.dmi', - SPECIES_XENOHYBRID = 'icons/obj/clothing/spacesuits_ch.dmi', - SPECIES_AKULA = 'icons/obj/clothing/spacesuits_ch.dmi', - SPECIES_SERGAL = 'icons/obj/clothing/spacesuits_ch.dmi', - SPECIES_NEVREAN = 'icons/obj/clothing/spacesuits_ch.dmi', - SPECIES_VULPKANIN = 'icons/obj/clothing/spacesuits_ch.dmi', - SPECIES_ZORREN_HIGH = 'icons/obj/clothing/spacesuits_ch.dmi', - SPECIES_FENNEC = 'icons/obj/clothing/spacesuits_ch.dmi', - SPECIES_PROMETHEAN = 'icons/obj/clothing/spacesuits_ch.dmi', - SPECIES_TESHARI = 'icons/obj/clothing/spacesuits_ch.dmi', - SPECIES_VASILISSAN = 'icons/obj/clothing/spacesuits_ch.dmi', - SPECIES_VOX = 'icons/obj/clothing/spacesuits_ch.dmi' - ) - -/obj/item/clothing/gloves/gauntlets/rig/protean - sprite_sheets = list( - SPECIES_HUMAN = 'modular_chomp/icons/mob/hands_ch.dmi', - SPECIES_TAJ = 'modular_chomp/icons/mob/hands_ch.dmi', - SPECIES_SKRELL = 'modular_chomp/icons/mob/hands_ch.dmi', - SPECIES_UNATHI = 'modular_chomp/icons/mob/hands_ch.dmi', - SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/hands_ch.dmi', - SPECIES_AKULA = 'modular_chomp/icons/mob/hands_ch.dmi', - SPECIES_SERGAL = 'modular_chomp/icons/mob/hands_ch.dmi', - SPECIES_NEVREAN = 'modular_chomp/icons/mob/hands_ch.dmi', - SPECIES_VULPKANIN = 'modular_chomp/icons/mob/hands_ch.dmi', - SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/hands_ch.dmi', - SPECIES_FENNEC = 'modular_chomp/icons/mob/hands_ch.dmi', - SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/hands_ch.dmi', - SPECIES_TESHARI = 'modular_chomp/icons/mob/hands_ch.dmi', - SPECIES_VASILISSAN = 'modular_chomp/icons/mob/hands_ch.dmi', - SPECIES_VOX = 'modular_chomp/icons/mob/species/vox/gloves_ch.dmi' - ) - - sprite_sheets_obj = list( - SPECIES_HUMAN = 'icons/obj/clothing/gloves_ch.dmi', - SPECIES_TAJ = 'icons/obj/clothing/gloves_ch.dmi', - SPECIES_SKRELL = 'icons/obj/clothing/gloves_ch.dmi', - SPECIES_UNATHI = 'icons/obj/clothing/gloves_ch.dmi', - SPECIES_XENOHYBRID = 'icons/obj/clothing/gloves_ch.dmi', - SPECIES_AKULA = 'icons/obj/clothing/gloves_ch.dmi', - SPECIES_SERGAL = 'icons/obj/clothing/gloves_ch.dmi', - SPECIES_NEVREAN = 'icons/obj/clothing/gloves_ch.dmi', - SPECIES_VULPKANIN = 'icons/obj/clothing/gloves_ch.dmi', - SPECIES_ZORREN_HIGH = 'icons/obj/clothing/gloves_ch.dmi', - SPECIES_FENNEC = 'icons/obj/clothing/gloves_ch.dmi', - SPECIES_PROMETHEAN = 'icons/obj/clothing/gloves_ch.dmi', - SPECIES_TESHARI = 'icons/obj/clothing/gloves_ch.dmi', - SPECIES_VASILISSAN = 'icons/obj/clothing/gloves_ch.dmi', - SPECIES_VOX = 'icons/obj/clothing/gloves_ch.dmi' - ) - -/obj/item/clothing/shoes/magboots/rig/protean - sprite_sheets = list( - SPECIES_HUMAN = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_TAJ = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_SKRELL = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_UNATHI = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_AKULA = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_SERGAL = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_NEVREAN = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_VULPKANIN = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_FENNEC = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_TESHARI = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_VASILISSAN = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_VOX = 'modular_chomp/icons/mob/species/vox/shoes_ch.dmi' - ) - - sprite_sheets_obj = list( - SPECIES_HUMAN = 'icons/obj/clothing/shoes_ch.dmi', - SPECIES_TAJ = 'icons/obj/clothing/shoes_ch.dmi', - SPECIES_SKRELL = 'icons/obj/clothing/shoes_ch.dmi', - SPECIES_UNATHI = 'icons/obj/clothing/shoes_ch.dmi', - SPECIES_XENOHYBRID = 'icons/obj/clothing/shoes_ch.dmi', - SPECIES_AKULA = 'icons/obj/clothing/shoes_ch.dmi', - SPECIES_SERGAL = 'icons/obj/clothing/shoes_ch.dmi', - SPECIES_NEVREAN = 'icons/obj/clothing/shoes_ch.dmi', - SPECIES_VULPKANIN = 'icons/obj/clothing/shoes_ch.dmi', - SPECIES_ZORREN_HIGH = 'icons/obj/clothing/shoes_ch.dmi', - SPECIES_FENNEC = 'icons/obj/clothing/shoes_ch.dmi', - SPECIES_PROMETHEAN = 'icons/obj/clothing/shoes_ch.dmi', - SPECIES_TESHARI = 'icons/obj/clothing/shoes_ch.dmi', - SPECIES_VASILISSAN = 'icons/obj/clothing/shoes_ch.dmi', - SPECIES_VOX = 'icons/obj/clothing/shoes_ch.dmi' + SPECIES_HUMAN = 'modular_chomp/icons/mob/spacesuit_ch.dmi', + SPECIES_TAJ = 'modular_chomp/icons/mob/spacesuit_ch.dmi', + SPECIES_SKRELL = 'modular_chomp/icons/mob/spacesuit_ch.dmi', + SPECIES_UNATHI = 'modular_chomp/icons/mob/spacesuit_ch.dmi', + SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/spacesuit_ch.dmi', + SPECIES_AKULA = 'modular_chomp/icons/mob/spacesuit_ch.dmi', + SPECIES_SERGAL = 'modular_chomp/icons/mob/spacesuit_ch.dmi', + SPECIES_NEVREAN = 'modular_chomp/icons/mob/spacesuit_ch.dmi', + SPECIES_VULPKANIN = 'modular_chomp/icons/mob/spacesuit_ch.dmi', + SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/spacesuit_ch.dmi', + SPECIES_FENNEC = 'modular_chomp/icons/mob/spacesuit_ch.dmi', + SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/spacesuit_ch.dmi', + SPECIES_TESHARI = 'modular_chomp/icons/mob/spacesuit_ch.dmi', + SPECIES_VASILISSAN = 'modular_chomp/icons/mob/spacesuit_ch.dmi', + SPECIES_VOX = 'modular_chomp/icons/mob/spacesuit_ch.dmi' ) + icon = 'modular_chomp/icons/mob/spacesuit_ch.dmi' //Copy pasted most of this proc from base because I don't feel like rewriting the base proc with a shit load of exceptions /obj/item/weapon/rig/protean/attackby(obj/item/W as obj, mob/living/user as mob) @@ -536,28 +528,34 @@ to_chat(user, "You assimilate the [R] into the [src]. Mimicking its stats and appearance.") for(var/obj/item/piece in list(gloves,helmet,boots,chest)) piece.armor = R.armor.Copy() + piece.max_pressure_protection = R.max_pressure_protection + piece.max_heat_protection_temperature = R.max_heat_protection_temperature //I dislike this piece of code, but not every rig has the full set of parts if(R.gloves) gloves.sprite_sheets = R.gloves.sprite_sheets.Copy() gloves.sprite_sheets_obj = R.gloves.sprite_sheets.Copy() + gloves.icon = R.gloves.icon gloves.icon_state = R.gloves.icon_state if(R.helmet) helmet.sprite_sheets = R.helmet.sprite_sheets.Copy() helmet.sprite_sheets_obj = R.helmet.sprite_sheets.Copy() + helmet.icon = R.helmet.icon helmet.icon_state = R.helmet.icon_state if(R.boots) boots.sprite_sheets = R.boots.sprite_sheets.Copy() boots.sprite_sheets_obj = R.boots.sprite_sheets.Copy() + boots.icon = R.boots.icon boots.icon_state = R.boots.icon_state if(R.chest) chest.sprite_sheets = R.chest.sprite_sheets.Copy() chest.sprite_sheets_obj = R.chest.sprite_sheets.Copy() + chest.icon = R.chest.icon chest.icon_state = R.chest.icon_state suit_state = R.suit_state user.drop_item(R) contents += R assimilated_rig = R - slowdown = (R.slowdown *0.5) + slowdown = (initial(R.slowdown) *0.5) offline_slowdown = slowdown /obj/item/weapon/rig/protean/verb/RemoveRig() @@ -567,7 +565,10 @@ if(assimilated_rig) for(var/obj/item/piece in list(gloves,helmet,boots,chest)) piece.armor = armor.Copy() + piece.max_pressure_protection = initial(piece.max_pressure_protection) + piece.max_heat_protection_temperature = initial(piece.max_heat_protection_temperature) piece.icon_state = initial(piece.icon_state) + piece.icon = initial(piece.icon) //Byond at this time does not support initial() on lists //So we have to create a new rig, just so we can copy the lists we're after @@ -589,3 +590,33 @@ qdel(tempRig) else to_chat(usr, "[src] has not assimilated a RIG. Use one on it to assimilate.") + +/obj/item/weapon/rig/protean/MouseDrop(obj/over_object as obj) + if(!canremove) + return + + if (isliving(usr) || isobserver(usr)) + + if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why? + return + + if (!( istype(over_object, /obj/screen) )) + return ..() + + if (!(src.loc == usr) || (src.loc && src.loc.loc == usr)) + return + + if (( usr.restrained() ) || ( usr.stat )) + return + + if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src)) + return + + switch(over_object.name) + if("r_hand") + usr.unEquip(src) + usr.put_in_r_hand(src) + if("l_hand") + usr.unEquip(src) + usr.put_in_l_hand(src) + src.add_fingerprint(usr) \ No newline at end of file diff --git a/modular_chomp/icons/mob/species/protean/protean.dmi b/modular_chomp/icons/mob/species/protean/protean.dmi index 4a70f7c56a211175e755bb1fb5f6c567383d511e..11845c5ad9f6b59f200dc002bb6485c02d66149e 100644 GIT binary patch literal 28939 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

pzbBsFHP?-bq@)x^+bKF5urzn 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 diff --git a/modular_chomp/icons/mob/species/teshari/feet_ch.dmi b/modular_chomp/icons/mob/species/teshari/feet_ch.dmi new file mode 100644 index 0000000000000000000000000000000000000000..cf74d73796c8c6121c0818fdac74e4a7f0ab9a5f GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;m;-!5T!HlRD%)E?im@cfFPOpM z*^M-ilB$r15|`BC)e_1!5cyiE*d|0 zq;uX!^CUx2Pwx&3;~?Y9#$F0CsjT7l;v3i)KHlcf^{%~V4K$R;)5S4_V`g%K#2p}S W0R!VxY5#RV7K5j&pUXO@geCygCOLEf literal 0 HcmV?d00001 diff --git a/modular_chomp/icons/mob/species/teshari/hands_ch.dmi b/modular_chomp/icons/mob/species/teshari/hands_ch.dmi new file mode 100644 index 0000000000000000000000000000000000000000..cf74d73796c8c6121c0818fdac74e4a7f0ab9a5f GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;m;-!5T!HlRD%)E?im@cfFPOpM z*^M-ilB$r15|`BC)e_1!5cyiE*d|0 zq;uX!^CUx2Pwx&3;~?Y9#$F0CsjT7l;v3i)KHlcf^{%~V4K$R;)5S4_V`g%K#2p}S W0R!VxY5#RV7K5j&pUXO@geCygCOLEf literal 0 HcmV?d00001 diff --git a/modular_chomp/icons/mob/species/teshari/helmet_ch.dmi b/modular_chomp/icons/mob/species/teshari/helmet_ch.dmi new file mode 100644 index 0000000000000000000000000000000000000000..cf74d73796c8c6121c0818fdac74e4a7f0ab9a5f GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;m;-!5T!HlRD%)E?im@cfFPOpM z*^M-ilB$r15|`BC)e_1!5cyiE*d|0 zq;uX!^CUx2Pwx&3;~?Y9#$F0CsjT7l;v3i)KHlcf^{%~V4K$R;)5S4_V`g%K#2p}S W0R!VxY5#RV7K5j&pUXO@geCygCOLEf literal 0 HcmV?d00001 diff --git a/modular_chomp/icons/mob/species/teshari/suit_ch.dmi b/modular_chomp/icons/mob/species/teshari/suit_ch.dmi new file mode 100644 index 0000000000000000000000000000000000000000..cf74d73796c8c6121c0818fdac74e4a7f0ab9a5f GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;m;-!5T!HlRD%)E?im@cfFPOpM z*^M-ilB$r15|`BC)e_1!5cyiE*d|0 zq;uX!^CUx2Pwx&3;~?Y9#$F0CsjT7l;v3i)KHlcf^{%~V4K$R;)5S4_V`g%K#2p}S W0R!VxY5#RV7K5j&pUXO@geCygCOLEf literal 0 HcmV?d00001 From be32183b75cbde4b208a302c62a16486ae31ff7c Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Thu, 26 Jan 2023 21:59:21 +1300 Subject: [PATCH 22/36] more fixes --- .../species/station/protean/protean_blob.dm | 8 ++++---- .../species/station/protean/protean_rig.dm | 6 ++++-- .../code/modules/research/mechfab_designs.dm | 10 +++++++++- .../icons/mob/species/protean/protean.dmi | Bin 28939 -> 29071 bytes 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index 61dd44b70c..f5d6b2955c 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -561,9 +561,6 @@ if(blob.healing) blob.healing.expire() - if(blob.l_hand) blob.drop_l_hand() - if(blob.r_hand) blob.drop_r_hand() - if(blob.mob_radio) blob.mob_radio.forceMove(src) blob.mob_radio = null @@ -584,11 +581,14 @@ var/atom/reform_spot = blob.drop_location() //Size update - resize(blob.size_multiplier, FALSE, ignore_prefs = TRUE) + resize(blob.size_multiplier, 1, 1, ignore_prefs = TRUE) //Move them back where the blob was forceMove(reform_spot) + if(blob.l_hand) blob.drop_l_hand() + if(blob.r_hand) blob.drop_r_hand() + //Put our owner in it (don't transfer var/mind) ckey = blob.ckey ooc_notes = blob.ooc_notes // Lets give the protean any updated notes from blob form. diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index ad0dab80ef..0cf25300c7 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -525,7 +525,9 @@ /obj/item/weapon/rig/protean/proc/AssimilateRig(mob/user, var/obj/item/weapon/rig/R) if(!R || assimilated_rig) return - to_chat(user, "You assimilate the [R] into the [src]. Mimicking its stats and appearance.") + if(istype(R, /obj/item/weapon/rig/protean)) + to_chat(user, "The world is not ready for such a technological singularity.") + to_chat(user, "You assimilate the [R] into the [src]. Mimicking its stats and appearance.") for(var/obj/item/piece in list(gloves,helmet,boots,chest)) piece.armor = R.armor.Copy() piece.max_pressure_protection = R.max_pressure_protection @@ -567,7 +569,7 @@ piece.armor = armor.Copy() piece.max_pressure_protection = initial(piece.max_pressure_protection) piece.max_heat_protection_temperature = initial(piece.max_heat_protection_temperature) - piece.icon_state = initial(piece.icon_state) + piece.icon_state = src.icon_state piece.icon = initial(piece.icon) //Byond at this time does not support initial() on lists diff --git a/modular_chomp/code/modules/research/mechfab_designs.dm b/modular_chomp/code/modules/research/mechfab_designs.dm index 73803e742c..92fc73b6f9 100644 --- a/modular_chomp/code/modules/research/mechfab_designs.dm +++ b/modular_chomp/code/modules/research/mechfab_designs.dm @@ -117,4 +117,12 @@ id = "rig_gun_phase" req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_MAGNET = 3, TECH_POWER = 4, TECH_COMBAT = 4) materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1250) - build_path = /obj/item/rig_module/mounted/phase \ No newline at end of file + build_path = /obj/item/rig_module/mounted/phase + +/datum/design/item/mechfab/rigsuit/defib + name = "mounted defib unit" + desc = "A rig mounted defib and jumper kit combo." + id = "rig_defib" + req_tech = list(TECH_BIO = 5, TECH_MAGNET = 2, TECH_POWER = 3) + materials = list(DEFAULT_WALL_MATERIAL = 6000, "glass" = 2000) + build_path = /obj/item/rig_module/device/defib \ No newline at end of file diff --git a/modular_chomp/icons/mob/species/protean/protean.dmi b/modular_chomp/icons/mob/species/protean/protean.dmi index 11845c5ad9f6b59f200dc002bb6485c02d66149e..3d3b58e4c69c8a729eccf8ea2cd60d76cd3c576a 100644 GIT binary patch literal 29071 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

pzbBsFHP?-bq@)x^+bKF5urzn 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 vcFZAy28=qZvxBTdPz&ekqrg6-Iq;96P+y Date: Sat, 28 Jan 2023 22:11:25 +1300 Subject: [PATCH 23/36] more fixes --- _runtimestation.dm | 11 + code/modules/ai/ai_holder_targeting_vr.dm | 11 + .../species/station/protean/protean_blob.dm | 17 +- .../species/station/protean/protean_powers.dm | 26 +- .../species/station/protean/protean_rig.dm | 18 +- .../station/protean/protean_species.dm | 3 +- .../code/modules/research/mechfab_designs.dm | 2 +- .../mob/species/protean/protean_powers.dmi | Bin 1852 -> 2407 bytes .../icons/mob/species/skrell/suit_ch.dmi | Bin 11196 -> 9801 bytes .../maps/runtime/runtime_station.dmm | 2602 +++++++++++++++++ .../maps/runtime/runtime_station_defines.dm | 47 + vorestation.dme | 1 + 12 files changed, 2710 insertions(+), 28 deletions(-) create mode 100644 _runtimestation.dm create mode 100644 modular_chomp/maps/runtime/runtime_station.dmm create mode 100644 modular_chomp/maps/runtime/runtime_station_defines.dm diff --git a/_runtimestation.dm b/_runtimestation.dm new file mode 100644 index 0000000000..b0a5aa1a88 --- /dev/null +++ b/_runtimestation.dm @@ -0,0 +1,11 @@ +/* +Toggle this var to 1 to compile using runtime station instead. +Useful if you're constantly having to recompile to debug something. +*/ +#define RUNTIME_STATION 0 + +#if RUNTIME_STATION + #include "modular_chomp/maps/runtime/runtime_station_defines.dm" + #include "modular_chomp/maps/runtime/runtime_station.dmm" + #define USING_MAP_DATUM /datum/map/runtime_station +#endif \ No newline at end of file diff --git a/code/modules/ai/ai_holder_targeting_vr.dm b/code/modules/ai/ai_holder_targeting_vr.dm index 4c7ef85403..10bbd99a05 100644 --- a/code/modules/ai/ai_holder_targeting_vr.dm +++ b/code/modules/ai/ai_holder_targeting_vr.dm @@ -3,3 +3,14 @@ return FALSE return ..() +/* +/datum/ai_holder/can_see_target(atom/movable/the_target, view_range = vision_range) + log_world("TARGET: [the_target] and TARGET.LOC: [the_target.loc]") + if(the_target && !isturf(the_target.loc)) //CHOMPEdit, AI shouldn't be targetting people inside objects of any kind + if(ismecha(the_target.loc)) //Except mechs, of course + target = the_target.loc + else + return FALSE + + return ..() +*/ \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index f5d6b2955c..4904ded817 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -316,10 +316,15 @@ /mob/living/simple_mob/protean_blob/Life() . = ..() - if(. && istype(refactory) && humanform) - if(!healing && (human_brute || human_burn) && refactory.get_stored_material(MAT_STEEL) >= 100) - healing = humanform.add_modifier(/datum/modifier/protean/steel, origin = refactory) - else if(healing && !(human_brute || human_burn)) + if(!humanform.nano_dead_check(src)) + if(. && istype(refactory) && humanform) + if(!healing && (human_brute || human_burn) && refactory.get_stored_material(MAT_STEEL) >= 100) + healing = humanform.add_modifier(/datum/modifier/protean/steel, origin = refactory) + else if(healing && !(human_brute || human_burn)) + healing.expire() + healing = null + else + if(healing) healing.expire() healing = null @@ -438,7 +443,7 @@ to_chat(src,"You can't change forms while inside something.") return to_chat(src, "You rapidly disassociate your form") - if(force || do_after(src,20)) + if(force || do_after(src,20,exclusive = TASK_ALL_EXCLUSIVE)) handle_grasp() //It's possible to blob out before some key parts of the life loop. This results in things getting dropped at null. TODO: Fix the code so this can be done better. remove_micros(src, src) //Living things don't fare well in roblobs. if(buckled) @@ -545,7 +550,7 @@ to_chat(blob,"You can't change forms while inside something.") return to_chat(src, "You rapidly reassemble your form") - if(force || do_after(blob,20)) + if(force || do_after(blob,20,exclusive = TASK_ALL_EXCLUSIVE)) if(buckled) buckled.unbuckle_mob() if(LAZYLEN(buckled_mobs)) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm index 76962b046b..6de69069e1 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm @@ -52,7 +52,7 @@ else blob = temporary_form active_regen = 1 - if(do_after(blob,50)) + if(do_after(blob,50,exclusive = TASK_ALL_EXCLUSIVE)) var/list/limblist = species.has_limbs[choice] var/limbpath = limblist["path"] var/obj/item/organ/external/new_eo = new limbpath(src) @@ -105,7 +105,7 @@ var/obj/item/organ/internal/nano/refactory/refactory = nano_get_refactory() if(refactory.get_stored_material(MAT_STEEL) >= 10000) to_chat(caller, "You begin to rebuild. You will need to remain still.") - if(do_after(caller, 400)) + if(do_after(caller, 400,exclusive = TASK_ALL_EXCLUSIVE)) if(species?:OurRig) //Unsafe, but we should only ever be using this with a Protean species?:OurRig?:make_alive(src,1) //Re-using this proc refactory.use_stored_material(MAT_STEEL,refactory.get_stored_material(MAT_STEEL)) //Use all of our steel @@ -128,7 +128,7 @@ oocnotes = 1 to_chat(caller, "You begin to reassemble. You will need to remain still.") caller.visible_message("[caller] rapidly contorts and shifts!", "You begin to reassemble.") - if(do_after(caller, 40)) + if(do_after(caller, 40,exclusive = TASK_ALL_EXCLUSIVE)) if(client.prefs) //Make sure we didn't d/c var/obj/item/weapon/rig/protean/Rig = species?:OurRig GetAppearanceFromPrefs(flavour, oocnotes) @@ -258,7 +258,7 @@ to_chat(caller, "You need to be repaired first before you can act!") return to_chat(src, "You rapidly condense into your module.") - if(forced || do_after(caller,20)) + if(forced || do_after(caller,20,exclusive = TASK_ALL_EXCLUSIVE)) if(!temporary_form) //If you're human, force you into blob form before rig'ing nano_blobform(forced) spawn(2) @@ -363,15 +363,15 @@ return if(G.loc == caller && G.state >= GRAB_AGGRESSIVE) caller.visible_message("[caller] is attempting to latch onto [target]!", "You attempt to latch onto [target]!") - if(do_after(caller, 50, target)) + if(do_after(caller, 50, target,exclusive = TASK_ALL_EXCLUSIVE)) if(G.loc == caller && G.state >= GRAB_AGGRESSIVE) target.drop_from_inventory(target.back) caller.visible_message("[caller] latched onto [target]!", "You latch yourself onto [target]!") target.Weaken(3) nano_rig_transform(1) - spawn(2) //Have to give time for the above proc to resolve - S.OurRig.forceMove(target) - target.equip_to_slot_if_possible(S.OurRig, slot_back) + spawn(5) //Have to give time for the above proc to resolve + //S.OurRig.forceMove(target) + target.equip_to_slot(S.OurRig, slot_back) S.OurRig.Moved() spawn(1) //Same here :( S.OurRig.wearer = target @@ -445,7 +445,7 @@ /// The actual abilities /obj/effect/protean_ability/into_blob ability_name = "Toggle Blobform" - desc = "Discard your shape entirely, changing to a low-energy blob that can fit into small spaces. You'll consume steel to repair yourself in this form." + desc = "Discard your shape entirely, changing to a low-energy blob. You'll consume steel to repair yourself in this form." icon_state = "blob" to_call = /mob/living/carbon/human/proc/nano_blobform @@ -469,26 +469,26 @@ /obj/effect/protean_ability/metal_nom ability_name = "Ref - Store Metals" - desc = "Store the metal you're holding. Your refactory can only store steel, and all other metals will be converted into nanites ASAP for various effects." + desc = "Store the metal you're holding. Your refactory can only store steel." icon_state = "metal" to_call = /mob/living/carbon/human/proc/nano_metalnom /obj/effect/protean_ability/hardsuit ability_name = "Hardsuit Transform" - desc = "Coalesce your naniteswarm into their control module, allowing others to wear you." + desc = "Coalesce your nanite swarm into their control module, allowing others to wear you." icon_state = "rig" to_call = /mob/living/carbon/human/proc/nano_rig_transform /obj/effect/protean_ability/appearance_switch ability_name = "Blob Appearance" desc = "Toggle your blob appearance. Also affects your worn appearance." - icon_state = "rig" + icon_state = "switch" to_call = /mob/living/carbon/human/proc/appearance_switch /obj/effect/protean_ability/latch_host ability_name = "Latch Host" desc = "Forcibly latch or unlatch your RIG from a host mob." - icon_state = "rig" + icon_state = "latch" to_call = /mob/living/carbon/human/proc/nano_latch #undef PER_LIMB_STEEL_COST diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index 0cf25300c7..15f299d01e 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -94,8 +94,9 @@ name = "mass" desc = "A helmet-shaped clump of nanomachines." light_overlay = "should not use a light overlay" - species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) + species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) sprite_sheets = list( + SPECIES_PROTEAN = 'modular_chomp/icons/mob/head_ch.dmi', SPECIES_HUMAN = 'modular_chomp/icons/mob/head_ch.dmi', SPECIES_TAJ = 'modular_chomp/icons/mob/species/tajaran/helmet_ch.dmi', SPECIES_SKRELL = 'modular_chomp/icons/mob/species/skrell/helmet_ch.dmi', @@ -114,6 +115,7 @@ ) sprite_sheets_obj = list( + SPECIES_PROTEAN = 'modular_chomp/icons/mob/head_ch.dmi', SPECIES_HUMAN = 'modular_chomp/icons/mob/head_ch.dmi', SPECIES_TAJ = 'modular_chomp/icons/mob/head_ch.dmi', SPECIES_SKRELL = 'modular_chomp/icons/mob/head_ch.dmi', @@ -136,8 +138,9 @@ name = "mass" desc = "Glove-shaped clusters of nanomachines." siemens_coefficient= 0 - species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) + species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) sprite_sheets = list( + SPECIES_PROTEAN = 'modular_chomp/icons/mob/hands_ch.dmi', SPECIES_HUMAN = 'modular_chomp/icons/mob/hands_ch.dmi', SPECIES_TAJ = 'modular_chomp/icons/mob/hands_ch.dmi', SPECIES_SKRELL = 'modular_chomp/icons/mob/hands_ch.dmi', @@ -177,8 +180,9 @@ /obj/item/clothing/shoes/magboots/rig/protean name = "mass" desc = "Boot-shaped clusters of nanomachines." - species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) + species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) sprite_sheets = list( + SPECIES_PROTEAN = 'modular_chomp/icons/mob/feet_ch.dmi', SPECIES_HUMAN = 'modular_chomp/icons/mob/feet_ch.dmi', SPECIES_TAJ = 'modular_chomp/icons/mob/feet_ch.dmi', SPECIES_SKRELL = 'modular_chomp/icons/mob/feet_ch.dmi', @@ -219,7 +223,7 @@ name = "mass" desc = "A body-hugging mass of nanomachines." can_breach = 0 - species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) + species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) allowed = list( /obj/item/weapon/gun, /obj/item/device/flashlight, @@ -229,6 +233,7 @@ /obj/item/weapon/storage/backpack, ) sprite_sheets = list( + SPECIES_PROTEAN = 'modular_chomp/icons/mob/spacesuit_ch.dmi', SPECIES_HUMAN = 'modular_chomp/icons/mob/spacesuit_ch.dmi', SPECIES_TAJ = 'modular_chomp/icons/mob/species/tajaran/suit_ch.dmi', SPECIES_SKRELL = 'modular_chomp/icons/mob/species/skrell/suit_ch.dmi', @@ -305,7 +310,6 @@ playsound(src, 'sound/machines/defib_success.ogg', 50, 0) new /obj/effect/gibspawner/robot(src.loc) src.atom_say("Contact received! Reassembly nanites calibrated. Estimated time to resucitation: 1 minute 30 seconds") - dead = 0 addtimer(CALLBACK(src, .proc/make_alive, myprotean?:humanform), 900) return if(istype(W,/obj/item/weapon/rig)) @@ -431,7 +435,8 @@ S = H.species S.pseudodead = 0 to_chat(myprotean, "You have finished reconstituting.") - playsound(src, 'sound/machines/ping.ogg', 50, 0) + playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) + dead = 0 /obj/item/weapon/rig/protean/take_hit(damage, source, is_emp=0) return //We don't do that here @@ -527,6 +532,7 @@ return if(istype(R, /obj/item/weapon/rig/protean)) to_chat(user, "The world is not ready for such a technological singularity.") + return to_chat(user, "You assimilate the [R] into the [src]. Mimicking its stats and appearance.") for(var/obj/item/piece in list(gloves,helmet,boots,chest)) piece.armor = R.armor.Copy() diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm index bc10c5c37c..2e4b934a55 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm @@ -14,7 +14,7 @@ flesh_color = "#505050" base_color = "#FFFFFF" //Color mult, start out with this - flags = NO_SCAN | NO_SLIP | NO_MINOR_CUT | NO_HALLUCINATION | NO_INFECT + flags = NO_SCAN | NO_SLIP | NO_MINOR_CUT | NO_HALLUCINATION | NO_INFECT | NO_PAIN appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | HAS_UNDERWEAR | HAS_LIPS spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE health_hud_intensity = 2 @@ -43,7 +43,6 @@ item_slowdown_mod = 1.5 //Gentle encouragement to let others wear you hazard_low_pressure = -1 //Space doesn't bother them - hazard_high_pressure = 10 * ONE_ATMOSPHERE //Same as their RIG cold_level_1 = -INFINITY cold_level_2 = -INFINITY diff --git a/modular_chomp/code/modules/research/mechfab_designs.dm b/modular_chomp/code/modules/research/mechfab_designs.dm index 92fc73b6f9..59a5682e27 100644 --- a/modular_chomp/code/modules/research/mechfab_designs.dm +++ b/modular_chomp/code/modules/research/mechfab_designs.dm @@ -120,7 +120,7 @@ build_path = /obj/item/rig_module/mounted/phase /datum/design/item/mechfab/rigsuit/defib - name = "mounted defib unit" + name = "hardsuit defib unit" desc = "A rig mounted defib and jumper kit combo." id = "rig_defib" req_tech = list(TECH_BIO = 5, TECH_MAGNET = 2, TECH_POWER = 3) diff --git a/modular_chomp/icons/mob/species/protean/protean_powers.dmi b/modular_chomp/icons/mob/species/protean/protean_powers.dmi index 9692c07cd77ffd58c17d0809d3fd4fa2a6c872e9..3120d9d0ce1f0dde8723f8d0c5ed8fc85fa52543 100644 GIT binary patch delta 1896 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 diff --git a/modular_chomp/icons/mob/species/skrell/suit_ch.dmi b/modular_chomp/icons/mob/species/skrell/suit_ch.dmi index 8b7407c0300cb0888aa04c5e92786d9ad453dc85..fce0eadfeffa77f73993b947b27472383d56e14d 100644 GIT binary patch literal 9801 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 H9Q1zxM|^DX literal 11196 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 Ht-}8oZ&?L~ diff --git a/modular_chomp/maps/runtime/runtime_station.dmm b/modular_chomp/maps/runtime/runtime_station.dmm new file mode 100644 index 0000000000..0bac9fab12 --- /dev/null +++ b/modular_chomp/maps/runtime/runtime_station.dmm @@ -0,0 +1,2602 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ah" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/landmark/start{ + name = "Head of Personnel" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"aw" = ( +/obj/structure/closet/crate/freezer, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/cafeteria) +"aA" = ( +/obj/structure/bed/chair/wood, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/landmark/start{ + name = "Scientist" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"aD" = ( +/obj/random/trash_pile, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"aP" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/cafeteria) +"aW" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/spline/fancy/wood{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/cafeteria) +"bA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"bK" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"cb" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/industrial/loading, +/obj/machinery/navbeacon/delivery/west{ + location = "Kitchen" + }, +/obj/structure/plasticflaps/mining{ + opacity = 1 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/cafeteria) +"cg" = ( +/obj/structure/closet/gmcloset, +/obj/item/glass_jar, +/obj/item/device/retail_scanner/civilian, +/obj/item/device/retail_scanner/civilian, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Bar Storage" + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/item/clothing/head/that{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"ch" = ( +/obj/structure/closet/crate, +/obj/random/maintenance/cargo, +/obj/random/maintenance, +/obj/random/maintenance, +/obj/random/maintenance/clean, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"cu" = ( +/obj/machinery/gibber, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/cafeteria) +"cC" = ( +/obj/machinery/appliance/cooker/grill, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cT" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"cY" = ( +/obj/structure/catwalk, +/obj/random/junk, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"dt" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/item/weapon/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/weapon/reagent_containers/glass/beaker{ + pixel_x = 5 + }, +/obj/item/weapon/reagent_containers/food/condiment/enzyme, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"dw" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"dT" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"ef" = ( +/obj/structure/table/marble, +/obj/machinery/cash_register/civilian{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/blast/shutters{ + dir = 2; + id = "bar"; + layer = 3.1; + name = "Bar Shutters" + }, +/obj/item/toy/xmastree, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"en" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"eo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/landmark/start{ + name = "Chief Medical Officer" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"es" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/cafeteria) +"eE" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Intern" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"fj" = ( +/obj/structure/table/marble, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/blast/shutters{ + dir = 2; + id = "bar"; + layer = 3.1; + name = "Bar Shutters" + }, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"fo" = ( +/obj/item/weapon/stool/padded, +/obj/effect/landmark/start{ + name = "Chemist" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"fE" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/table/marble, +/obj/item/weapon/material/knife/butch, +/obj/item/weapon/material/kitchen/rollingpin, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"fJ" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"fZ" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/door/blast/shutters{ + dir = 4; + id = "kitchen"; + layer = 3.3; + name = "Kitchen Shutters" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"gh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/cafeteria) +"gQ" = ( +/obj/machinery/vending/cigarette{ + dir = 1 + }, +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"gX" = ( +/obj/machinery/media/jukebox, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"hp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Psychiatrist" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"hC" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Cafeteria Port"; + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"hH" = ( +/obj/machinery/vending/cola{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"hK" = ( +/obj/structure/bed/chair/wood, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"hO" = ( +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"hR" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/landmark/start{ + name = "Botanist" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"il" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + dir = 4 + }, +/obj/structure/closet/crate, +/obj/item/weapon/reagent_containers/food/drinks/flask/barflask, +/obj/random/powercell, +/obj/random/maintenance, +/obj/random/maintenance/clean, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"ix" = ( +/obj/effect/landmark{ + name = "JoinLateCryo" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"iE" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"iQ" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/fans/tiny, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/cafeteria) +"jg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"jj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"jB" = ( +/obj/structure/bed/chair/wood, +/obj/effect/landmark/start{ + name = "Warden" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"jX" = ( +/obj/structure/table/marble, +/obj/machinery/chemical_dispenser/bar_soft/full, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"kg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/landmark/start{ + name = "Internal Affairs Agent" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"kq" = ( +/obj/structure/bed/chair/wood, +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"kA" = ( +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"kQ" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/window/southright{ + name = "Kitchen Delivery"; + req_access = list(28) + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/cafeteria) +"lo" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/structure/closet/secure_closet/freezer/fridge, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"lF" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/landmark/start{ + name = "Chaplain" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"lQ" = ( +/obj/item/weapon/stool/padded, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start{ + name = "Bartender" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"nh" = ( +/obj/machinery/vending/coffee{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"nQ" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"os" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/fans/hardlight/colorable{ + light_color = "#D7D7D7" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"oM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/cafeteria) +"oT" = ( +/obj/item/weapon/card/id/gold/captain/spare, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"oU" = ( +/obj/effect/landmark{ + name = "JoinLateStationGateway" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"oW" = ( +/obj/machinery/door/firedoor/multi_tile/glass{ + dir = 1 + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/cafeteria) +"pi" = ( +/obj/structure/closet, +/obj/random/maintenance, +/obj/random/maintenance, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"pm" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/landmark/start{ + name = "Barista" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"pu" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"pw" = ( +/obj/structure/table/woodentable, +/obj/machinery/reagentgrinder, +/obj/item/weapon/reagent_containers/food/drinks/shaker, +/obj/item/weapon/packageWrap, +/obj/structure/cable/green, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"pA" = ( +/obj/machinery/portable_atmospherics/powered/pump/filled, +/obj/structure/cable, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"qj" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"qC" = ( +/obj/effect/landmark{ + name = "JoinLateGateway" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"qR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/obj/effect/floor_decal/spline/fancy/wood{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 10 + }, +/obj/effect/landmark/start{ + name = "Quartermaster" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/cafeteria) +"qS" = ( +/obj/machinery/newscaster{ + pixel_y = 30 + }, +/obj/effect/landmark/start, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"rS" = ( +/obj/machinery/vending/boozeomat, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"sa" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/cafeteria) +"ss" = ( +/turf/simulated/wall, +/area/crew_quarters/cafeteria) +"sz" = ( +/obj/structure/table/marble, +/obj/item/weapon/reagent_containers/food/snacks/pie, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"sB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/cafeteria) +"sC" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start{ + name = "Detective" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"te" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/deck/cah{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/weapon/deck/cah/black{ + pixel_x = -2; + pixel_y = -2 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"tj" = ( +/obj/item/weapon/stool/padded, +/obj/effect/landmark/start{ + name = "Explorer" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"tT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/landmark/start{ + name = "Engineer" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"uv" = ( +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"vm" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/item/device/starcaster_news{ + pixel_x = 8 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"vF" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"vM" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"wc" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"wy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"wD" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/table/marble, +/obj/item/weapon/book/manual/chef_recipes, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"wW" = ( +/obj/structure/bed/chair/wood{ + dir = 1 + }, +/obj/machinery/atm{ + pixel_x = 30 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"wY" = ( +/obj/structure/bed/chair/wood{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"xd" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"xg" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"xh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"xM" = ( +/obj/item/weapon/stool/padded, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"ya" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{ + pixel_x = -3 + }, +/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{ + pixel_x = 3 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"ys" = ( +/obj/machinery/appliance/cooker/fryer, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"yC" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/gun/projectile/shotgun/doublebarrel, +/obj/item/weapon/tool/screwdriver, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + desc = "Talk... lisssssten through this."; + name = "Station Intercom (Brig Radio)"; + pixel_y = -21; + wires = 7 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"yJ" = ( +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/cafeteria) +"yP" = ( +/obj/machinery/door/window/southright{ + name = "Bar"; + req_access = list(25) + }, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"yT" = ( +/obj/structure/bed/chair/wood, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/landmark/start{ + name = "Xenobiologist" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"yW" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 10 + }, +/obj/effect/floor_decal/spline/fancy/wood{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/cafeteria) +"zf" = ( +/obj/machinery/smartfridge/drinks, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"zh" = ( +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/industrial/loading, +/obj/machinery/navbeacon/delivery/south{ + location = "Bar" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/cafeteria) +"zu" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/sign/securearea{ + desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; + icon_state = "monkey_painting"; + name = "Mr. Deempisi portrait"; + pixel_x = -28; + pixel_y = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"zP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"zQ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"zR" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"zS" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/door/blast/shutters{ + dir = 4; + id = "kitchen"; + layer = 3.3; + name = "Kitchen Shutters" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"zY" = ( +/obj/structure/reagent_dispensers/beerkeg, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Ai" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"Am" = ( +/obj/structure/flora/pottedplant/bamboo{ + pixel_y = 10 + }, +/obj/structure/table/bench/glass, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"At" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/light_switch{ + name = "light switch "; + pixel_x = 38 + }, +/obj/machinery/power/fractal_reactor/fluff/smes, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"AM" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/cafeteria) +"AT" = ( +/obj/structure/bed/chair/wood{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"AU" = ( +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"AX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Bj" = ( +/obj/structure/table/marble, +/obj/machinery/door/blast/shutters{ + dir = 2; + id = "bar"; + layer = 3.1; + name = "Bar Shutters" + }, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"BK" = ( +/obj/structure/flora/pottedplant, +/obj/machinery/light, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"BY" = ( +/obj/machinery/vending/snack{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Cb" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/sink/kitchen{ + pixel_y = 17 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"Cq" = ( +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Cafeteria Starboard"; + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Cyborg" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Ct" = ( +/obj/effect/floor_decal/spline/fancy/wood{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/cafeteria) +"CR" = ( +/obj/item/weapon/stool/padded, +/obj/effect/landmark/start{ + name = "AI" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"CU" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/obj/effect/landmark/start{ + name = "Atmospheric Technician" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"CZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Paramedic" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Db" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/disposalpipe/sortjunction/flipped{ + dir = 4; + name = "Kitchen"; + sortType = "Kitchen" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"Dc" = ( +/obj/structure/table/marble, +/obj/machinery/cash_register/civilian{ + dir = 8 + }, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"Dj" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/cafeteria) +"DR" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/status_display{ + layer = 4; + pixel_x = -32 + }, +/obj/machinery/chem_master/condimaster{ + name = "CondiMaster Neo"; + pixel_x = -5 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"DV" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"Ev" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"EG" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"Fo" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"Fq" = ( +/obj/structure/table/marble, +/obj/item/weapon/reagent_containers/glass/rag, +/obj/item/weapon/reagent_containers/food/drinks/flask/barflask, +/obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask, +/obj/item/weapon/flame/lighter/zippo, +/obj/item/clothing/head/that{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"Fy" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"FM" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/button/remote/blast_door{ + id = "kitchen"; + name = "Kitchen Shutters Control"; + pixel_x = 26; + req_access = list(28) + }, +/obj/machinery/light_switch{ + name = "light switch "; + pixel_x = 36; + pixel_y = -6 + }, +/obj/machinery/button/holosign{ + id = "baropen"; + name = "Open Sign"; + pixel_x = 36; + pixel_y = 6 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"FV" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/landmark/start{ + name = "Command Secretary" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"FY" = ( +/obj/machinery/vending/dinnerware{ + dir = 4; + pixel_x = -4 + }, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"Ga" = ( +/obj/effect/landmark/start{ + name = "Head of Security" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Gc" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/material/kitchen/utensil/fork, +/obj/item/weapon/material/kitchen/utensil/spoon{ + pixel_x = 2 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Gd" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/weapon/reagent_containers/food/snacks/mint, +/obj/item/weapon/packageWrap, +/obj/item/weapon/reagent_containers/dropper, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"Gf" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/window/southleft{ + name = "Bar Delivery"; + req_access = list(25) + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/cafeteria) +"GA" = ( +/obj/structure/table/marble, +/obj/item/weapon/material/ashtray/glass, +/obj/machinery/door/blast/shutters{ + dir = 2; + id = "bar"; + layer = 3.1; + name = "Bar Shutters" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"GJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"Hs" = ( +/obj/machinery/appliance/mixer/cereal, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/ai_status_display{ + pixel_x = -32 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"Hz" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/obj/structure/table/marble, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"HP" = ( +/obj/machinery/appliance/cooker/oven, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"HY" = ( +/obj/structure/closet/secure_closet/bar, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Iv" = ( +/obj/structure/kitchenspike, +/obj/machinery/alarm/freezer{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/cafeteria) +"II" = ( +/obj/structure/bed/chair/wood{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"IP" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"IZ" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Kitchen"; + dir = 4 + }, +/obj/structure/table/marble, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"Je" = ( +/obj/effect/landmark{ + name = "Observer-Start" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Jh" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central6, +/turf/simulated/floor/tiled/monotile, +/area/crew_quarters/cafeteria) +"KC" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"KF" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/reagentgrinder, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"KS" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"KY" = ( +/obj/machinery/button/remote/blast_door{ + id = "bar"; + name = "Bar Shutters"; + pixel_x = -26; + pixel_y = -6 + }, +/obj/machinery/button/holosign{ + id = "baropen"; + name = "Open Sign"; + pixel_x = -24; + pixel_y = 6 + }, +/obj/machinery/light_switch{ + name = "light switch "; + pixel_x = -32; + pixel_y = 6 + }, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Bar Fore"; + dir = 4 + }, +/obj/structure/sink/kitchen{ + pixel_y = 17 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"Lr" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"Lx" = ( +/obj/structure/table/marble, +/obj/machinery/chemical_dispenser/bar_alc/full, +/obj/structure/sign/double/barsign{ + pixel_y = 32 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"LG" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/fans/tiny, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/cafeteria) +"LV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/cafeteria) +"LW" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/newscaster{ + pixel_y = 30 + }, +/obj/structure/closet/secure_closet/freezer/meat, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"MI" = ( +/obj/structure/catwalk, +/obj/random/plushielarge, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"ML" = ( +/obj/structure/table/marble, +/obj/machinery/chemical_dispenser/bar_soft/full, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"MM" = ( +/obj/structure/disposalpipe/sortjunction/flipped{ + dir = 4; + name = "Bar"; + sortType = "Bar" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Librarian" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"MR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Nl" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"Np" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/structure/closet/crate, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/item/weapon/material/knife, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"NI" = ( +/obj/item/weapon/stool/padded, +/obj/effect/landmark/start{ + name = "Research Director" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"NZ" = ( +/obj/effect/landmark/start{ + name = "Chef" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Of" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/cafeteria) +"Og" = ( +/obj/machinery/icecream_vat, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/cafeteria) +"Oj" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/landmark/start{ + name = "Chief Engineer" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Ou" = ( +/obj/machinery/vending/coffee{ + dir = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Ov" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"OH" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/door/blast/shutters{ + dir = 4; + id = "kitchen"; + layer = 3.3; + name = "Kitchen Shutters" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"OZ" = ( +/obj/machinery/light/small, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"Pj" = ( +/obj/effect/landmark/start{ + name = "Geneticist" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Pu" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/toy/xmastree, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"PA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"PY" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Qk" = ( +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/obj/effect/floor_decal/spline/fancy/wood{ + dir = 10 + }, +/obj/effect/landmark/start, +/turf/simulated/floor/tiled, +/area/crew_quarters/cafeteria) +"Ql" = ( +/obj/effect/landmark{ + name = "JoinLateSifPlains" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Rp" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/freezer{ + name = "Kitchen cold room"; + req_access = list(28) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/structure/fans/hardlight/colorable{ + light_color = "#D7D7D7" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/cafeteria) +"Rs" = ( +/obj/machinery/computer/guestpass{ + dir = 4; + pixel_x = -19 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"RU" = ( +/obj/machinery/atmospherics/pipe/tank/air{ + dir = 1; + start_pressure = 4559.63 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"So" = ( +/obj/machinery/atmospherics/valve, +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"SG" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"ST" = ( +/obj/structure/kitchenspike, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/cafeteria) +"Tn" = ( +/obj/structure/table/woodentable, +/obj/item/device/radio/subspace{ + desc = "A heavy duty radio that can pick up all manor of shortwave and subspace frequencies. It's a bit bulkier than a normal radio thanks to the extra hardware. An engraving on the frame reads: IF FOUND, RETURN TO THE BAR!"; + name = "Bar subspace radio"; + pixel_y = 5 + }, +/obj/item/weapon/deck/cards{ + pixel_x = -5; + pixel_y = -2 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Tx" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/closet/secure_closet/freezer/kitchen, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"TB" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 4; + name = "Hydroponics"; + sortType = "Hydroponics" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"TD" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/obj/effect/floor_decal/spline/fancy/wood/cee{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/cafeteria) +"TL" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/cafeteria) +"TZ" = ( +/obj/machinery/appliance/mixer/candy, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"Ux" = ( +/obj/item/weapon/stool/padded, +/obj/effect/landmark/start{ + name = "Cargo Technician" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Vc" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/effect/landmark/start{ + name = "Shaft Miner" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Vf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"Vx" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/cafeteria) +"Wn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/landmark/start{ + name = "Janitor" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Xe" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/material/kitchen/utensil/fork, +/obj/item/weapon/material/kitchen/utensil/spoon{ + pixel_x = 2 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Xm" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Bar Maintenance"; + req_access = list(25) + }, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"XL" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/landmark/start{ + name = "Roboticist" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"XS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"XU" = ( +/obj/machinery/door/airlock/glass{ + name = "Kitchen"; + req_access = list(28) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/cafeteria) +"Ya" = ( +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Kitchen Cold Room"; + dir = 1 + }, +/obj/structure/closet/chefcloset, +/obj/item/glass_jar, +/obj/item/device/retail_scanner/civilian, +/obj/item/weapon/soap/nanotrasen, +/obj/item/device/destTagger{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/weapon/packageWrap, +/obj/item/weapon/packageWrap, +/obj/item/weapon/packageWrap, +/obj/item/clothing/gloves/sterile/latex, +/obj/item/clothing/gloves/sterile/latex, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/cafeteria) +"Yo" = ( +/obj/effect/landmark{ + name = "JoinLateCyborg" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Yw" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/cafeteria) +"YA" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/cafeteria) +"Zi" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"Zl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Bar Backroom"; + req_access = list(25) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/cafeteria) +"ZA" = ( +/turf/space, +/area/space) +"ZQ" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{ + pixel_x = -3 + }, +/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{ + pixel_x = 3 + }, +/obj/item/weapon/reagent_containers/food/condiment/small/sugar, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"ZR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 10 + }, +/obj/machinery/floodlight, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"ZU" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/obj/item/toy/xmastree, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) + +(1,1,1) = {" +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +"} +(2,1,1) = {" +es +bA +aD +ss +ss +os +ss +ss +fJ +pi +ZR +So +il +RU +ss +ZA +ZA +ZA +ZA +es +"} +(3,1,1) = {" +es +PA +SG +ss +aw +oM +ST +ss +ss +ss +ss +ss +ss +ss +ss +ss +ss +ZA +ZA +es +"} +(4,1,1) = {" +es +jj +xg +ss +Og +gh +Iv +ss +FY +TZ +Hs +IZ +Hz +DR +qj +ys +bK +ZA +ZA +es +"} +(5,1,1) = {" +es +Vf +AU +ss +sa +Dj +Ya +ss +Cb +Ai +vM +Ai +Ai +iE +Ai +cC +bK +ZA +ZA +es +"} +(6,1,1) = {" +es +wy +Np +ss +cu +LV +sB +Rp +XS +wc +dt +Pu +KF +fE +Ai +HP +bK +ZA +ZA +es +"} +(7,1,1) = {" +es +PA +hO +cb +kQ +Yw +Of +ss +LW +vF +Gd +ML +ya +wD +Ai +Tx +ss +ZA +ZA +es +"} +(8,1,1) = {" +es +GJ +ss +ss +ss +ss +ss +ss +lo +TB +xM +Ev +Ai +xd +Ai +Lr +es +ZA +ZA +es +"} +(9,1,1) = {" +es +hO +zh +Gf +zu +Ou +ss +AM +Zi +Db +dw +Zi +Zi +FM +Fo +EG +iQ +ZA +ZA +es +"} +(10,1,1) = {" +es +hO +Xm +PY +kA +zY +ss +ss +fZ +OH +zS +zS +fZ +ss +XU +bK +ss +ZA +ZA +es +"} +(11,1,1) = {" +es +aD +ss +cg +AX +yC +ss +gX +ZQ +ZU +Dc +vm +sz +hC +TD +BK +ss +ss +LG +es +"} +(12,1,1) = {" +es +dT +ss +HY +MR +pw +ss +qS +fo +eE +NI +CR +tj +kA +zQ +kA +Rs +Ct +Vx +es +"} +(13,1,1) = {" +es +pA +ss +ss +Zl +ss +ss +CU +Oj +kg +XL +FV +cT +cT +YA +en +Ov +aW +Jh +es +"} +(14,1,1) = {" +es +MI +ss +KY +xh +KS +GA +pm +eo +Wn +aA +Gc +II +oU +hK +At +wW +yW +yJ +es +"} +(15,1,1) = {" +es +pu +ss +TL +zR +Nl +fj +lQ +sC +MM +kq +Tn +AT +Ql +Am +ss +ss +aP +oW +es +"} +(16,1,1) = {" +es +cY +ss +rS +DV +KC +ef +hR +tT +jg +Vc +oT +kA +qC +gQ +ss +ZA +ZA +ZA +es +"} +(17,1,1) = {" +es +dT +ss +zf +zP +uv +Bj +Ux +Pj +CZ +jB +te +AT +Je +BY +bK +ZA +ZA +ZA +es +"} +(18,1,1) = {" +es +OZ +ss +Lx +IP +uv +Bj +lF +ah +hp +yT +Xe +wY +Yo +nh +bK +ZA +ZA +ZA +es +"} +(19,1,1) = {" +es +ch +ss +jX +Fq +Fy +yP +NZ +Ga +qR +Qk +Cq +nQ +ix +hH +ss +ZA +ZA +ZA +es +"} +(20,1,1) = {" +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +"} diff --git a/modular_chomp/maps/runtime/runtime_station_defines.dm b/modular_chomp/maps/runtime/runtime_station_defines.dm new file mode 100644 index 0000000000..614a80e6f0 --- /dev/null +++ b/modular_chomp/maps/runtime/runtime_station_defines.dm @@ -0,0 +1,47 @@ +#define Z_LEVEL_STATION_ONE 1 + +/datum/map/runtime_station + name = "Runtime Station" + full_name = "Southern Cross" + path = "modular_chomp/maps/runtime/runtime_station" + + lobby_icon = 'icons/misc/CHOMPSTATION.gif' //CHOMPStation Edit + lobby_screens = list() //CHOMPStation Edit - CHOMPStation image + id_hud_icons = 'icons/mob/hud_jobs_vr.dmi' //CHOMPStation Edit - Job icons for off-duty/exploration + + zlevel_datum_type = /datum/map_z_level/runtime_station + + station_name = "NLS Southern Cross" + station_short = "Southern Cross" + dock_name = "NCS Northern Star" // Now we're the centcom! + boss_name = "Central Command" + boss_short = "Centcom" + company_name = "NanoTrasen" + company_short = "NT" + starsys_name = "Vir" + use_overmap = FALSE + + shuttle_docked_message = "The scheduled shuttle to the %dock_name% has docked with the station at docks one and two. It will depart in approximately %ETD%." + shuttle_leaving_dock = "The Crew Transfer Shuttle has left the station. Estimate %ETA% until the shuttle docks at %dock_name%." + shuttle_called_message = "A crew transfer to %dock_name% has been scheduled. The shuttle has been called. Those leaving should proceed to docks one and two in approximately %ETA%." + shuttle_recall_message = "The scheduled crew transfer has been cancelled." + emergency_shuttle_docked_message = "The Emergency Shuttle has docked with the station at docks one and two. You have approximately %ETD% to board the Emergency Shuttle." + emergency_shuttle_leaving_dock = "The Emergency Shuttle has left the station. Estimate %ETA% until the shuttle docks at %dock_name%." + emergency_shuttle_called_message = "An emergency evacuation shuttle has been called. It will arrive at docks one and two in approximately %ETA%." + emergency_shuttle_recall_message = "The emergency shuttle has been recalled." + usable_email_tlds = list("freemail.nt") + allowed_spawns = list("Arrivals Shuttle","Gateway", "Cryogenic Storage", "Cyborg Storage", "Station gateway", "Sif plains") + default_skybox = /datum/skybox_settings/southern_cross + map_levels = list( + Z_LEVEL_STATION_ONE + ) + lateload_gateway = null + +/datum/skybox_settings/southern_cross + icon_state = "dyable" + random_color = TRUE + +/datum/map_z_level/runtime_station + z = Z_LEVEL_STATION_ONE + name = "Deck 1" + base_turf = /turf/space \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index c42fc37d5c..32031c1bd4 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -10,6 +10,7 @@ #define DEBUG // END_PREFERENCES // BEGIN_INCLUDE +#include "_runtimestation.dm" #include "code\__spaceman_dmm.dm" #include "code\_away_mission_tests.dm" #include "code\_macros.dm" From d05b31a73c36e43705e0a3b4a8bd1d2f7c4b68e3 Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Mon, 30 Jan 2023 00:28:27 +1300 Subject: [PATCH 24/36] Unga bunga me fix code before sleep --- .../code/modules/mob/living/carbon/human/update_icons.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm b/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm index 1f0ac8f2e4..d052d58fe3 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm @@ -112,10 +112,12 @@ if(client.prefs) client.prefs.copy_to(Dummy) //Important, since some sprites only work for specific species + /* Probably not needed anymore since impersonate_bodytype no longer exists if(Dummy.species.base_species == "Promethean") impersonate_bodytype = "Human" else impersonate_bodytype = Dummy.species.base_species + */ custom_species = Dummy.custom_species var/list/traits = dna.species_traits.Copy() dna = Dummy.dna.Clone() From 3cf60e9c1988d3301b0285d7b3455b9aa539f7cb Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sun, 5 Feb 2023 10:58:11 +0800 Subject: [PATCH 25/36] vanity copy to --- .../human/species/species_shapeshift.dm | 2 +- .../human/species/station/prometheans_vr.dm | 1 + .../species/station/station_special_vr.dm | 7 +- code/modules/organs/organ_external.dm | 2 +- code/modules/organs/robolimbs_ch.dm | 40 ++- .../code/modules/client/preferences.dm | 232 ++++++++++++++++++ .../living/carbon/human/species/species.dm | 1 + .../human/species/species_shapeshift_ch.dm | 31 +++ .../species/station/protean/protean_powers.dm | 4 +- .../station/protean/protean_species.dm | 39 +++ .../species/station/station_special_ch.dm | 39 +++ .../code/modules/organs/organ_external.dm | 2 +- .../code/modules/organs/organ_icon.dm | 12 +- vorestation.dme | 2 + 14 files changed, 388 insertions(+), 26 deletions(-) create mode 100644 modular_chomp/code/modules/mob/living/carbon/human/species/species_shapeshift_ch.dm create mode 100644 modular_chomp/code/modules/mob/living/carbon/human/species/station/station_special_ch.dm diff --git a/code/modules/mob/living/carbon/human/species/species_shapeshift.dm b/code/modules/mob/living/carbon/human/species/species_shapeshift.dm index 59d64d2019..3e7ab6f035 100644 --- a/code/modules/mob/living/carbon/human/species/species_shapeshift.dm +++ b/code/modules/mob/living/carbon/human/species/species_shapeshift.dm @@ -16,7 +16,7 @@ var/list/wrapped_species_by_ref = list() //var/default_form = SPECIES_HUMAN //VOREStation edit /datum/species/shapeshifter/get_valid_shapeshifter_forms(var/mob/living/carbon/human/H) - return valid_transform_species + return list(vanity_base_fit)|valid_transform_species //CHOMPEdit /datum/species/shapeshifter/get_icobase(var/mob/living/carbon/human/H, var/get_deform) if(!H) return ..(null, get_deform) diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm index 2d8dfc0050..675265bb5d 100644 --- a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm @@ -34,6 +34,7 @@ /mob/living/carbon/human/proc/prommie_blobform, /mob/living/proc/set_size, /mob/living/carbon/human/proc/promethean_select_opaqueness, + /mob/living/carbon/human/proc/shapeshifter_reassemble //CHOMPEdit: reform verb ) /mob/living/carbon/human/proc/prommie_blobform() diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm index 5239589931..7f730d6b58 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm @@ -27,8 +27,9 @@ /mob/living/carbon/human/proc/reconstitute_form, /mob/living/carbon/human/proc/sonar_ping, /mob/living/carbon/human/proc/tie_hair, - /mob/living/carbon/human/proc/lick_wounds) //Xenochimera get all the special verbs since they can't select traits. - // CHOMPEdit: Lick Wounds Verb + /mob/living/carbon/human/proc/lick_wounds, + /mob/living/carbon/human/proc/shapeshifter_reassemble) //Xenochimera get all the special verbs since they can't select traits. + // CHOMPEdit: Lick Wounds Verb, reform verb virus_immune = 1 // They practically ARE one. min_age = 18 @@ -445,7 +446,7 @@ catalogue_data = list(/datum/category_item/catalogue/fauna/vulpkanin) - spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE//Whitelisted as restricted is broken. ChompEdit;renable + spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE//Whitelisted as restricted is broken. ChompEdit;renable appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_COLOR | HAS_EYE_COLOR flesh_color = "#AFA59E" diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index c521e4dfe2..d43b309631 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -1139,7 +1139,7 @@ Note that amputating the affected organ does in fact remove the infection from t force_icon = R.icon brute_mod *= R.robo_brute_mod burn_mod *= R.robo_burn_mod - prosthetic_digi = R.can_be_digitigrade //CHOMPStation edit + skip_robo_icon = R.no_icon //CHOMPStation edit if(R.lifelike) robotic = ORGAN_LIFELIKE name = "[initial(name)]" diff --git a/code/modules/organs/robolimbs_ch.dm b/code/modules/organs/robolimbs_ch.dm index d882d3ba96..d4a5b35320 100644 --- a/code/modules/organs/robolimbs_ch.dm +++ b/code/modules/organs/robolimbs_ch.dm @@ -1,5 +1,10 @@ +GLOBAL_LIST_INIT(dsi_to_species, list(SPECIES_TAJARAN = "DSI - Tajaran", SPECIES_UNATHI = "DSI - Lizard", SPECIES_SERGAL = "DSI - Sergal", SPECIES_NEVREAN = "DSI - Nevrean", \ + SPECIES_VULPKANIN = "DSI - Vulpkanin", SPECIES_AKULA = "DSI - Akula", SPECIES_VASILISSAN = "DSI - Vasilissan", SPECIES_ZORREN = "DSI - Zorren",\ + SPECIES_TESHARI = "DSI - Teshari", SPECIES_FENNEC = "DSI - Fennec")) + /datum/robolimb - var/can_be_digitigrade = FALSE //maybe move this over into more of a "does this have a custom digitigrade sprite, and if so, what is its icon file/icon name in the limb's file" when someone can be bothered making them + var/no_icon = FALSE //specifically for DSI things, makes it so it doesn't override the species icons + //var/has_digitigrade_icon = FALSE //make this a thing /datum/robolimb/valehoundhead company = "VALE Hound- Head" @@ -9,32 +14,45 @@ parts = list(BP_HEAD) /datum/robolimb/dsi_tajaran - can_be_digitigrade = TRUE + no_icon = TRUE /datum/robolimb/dsi_lizard - can_be_digitigrade = TRUE + no_icon = TRUE /datum/robolimb/dsi_sergal - can_be_digitigrade = TRUE + no_icon = TRUE /datum/robolimb/dsi_nevrean - can_be_digitigrade = TRUE + no_icon = TRUE /datum/robolimb/dsi_vulpkanin - can_be_digitigrade = TRUE + no_icon = TRUE /datum/robolimb/dsi_akula - can_be_digitigrade = TRUE + no_icon = TRUE /datum/robolimb/dsi_spider - can_be_digitigrade = TRUE + no_icon = TRUE /datum/robolimb/dsi_zorren - can_be_digitigrade = TRUE + no_icon = TRUE /datum/robolimb/dsi_fennec - can_be_digitigrade = TRUE + no_icon = TRUE + +/datum/robolimb/dsi_teshari + no_icon = TRUE /datum/robolimb/dsi_teshari/New() . = ..() - species_cannot_use -= SPECIES_PROTEAN \ No newline at end of file + species_cannot_use -= SPECIES_PROTEAN + + +/datum/robolimb/dsi_other + company = "DSI - Synthetic" + desc = "This limb has a realistic design and squish. By Darkside Incorperated." + blood_color = "#ffe2ff" + lifelike = 1 + unavailable_to_build = 1 + skin_tone = 1 + no_icon = TRUE diff --git a/modular_chomp/code/modules/client/preferences.dm b/modular_chomp/code/modules/client/preferences.dm index 76dea00a76..6c9af02123 100644 --- a/modular_chomp/code/modules/client/preferences.dm +++ b/modular_chomp/code/modules/client/preferences.dm @@ -34,3 +34,235 @@ SScharacter_setup.queue_preferences_save(prefs) feedback_add_details("admin_verb","TAutoTranscore") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/datum/preferences/proc/vanity_copy_to(var/mob/living/carbon/human/character, var/copy_name, var/copy_flavour = TRUE, var/copy_ooc_notes = FALSE, var/convert_to_prosthetics = FALSE) + //snowflake copy_to, does not copy anything but the vanity things + //does not check if the name is the same, do that in any proc that calls this proc + /* + name, nickname, flavour, OOC notes + gender, sex + custom species name, custom bodytype, weight, scale, scaling center, sound type, sound freq + custom say verbs + ears, wings, tail, hair, facial hair + ears colors, wings colors, tail colors + body color, prosthetics (if they're a protean) (convert to DSI if protean and not prosthetic), eye color, hair color etc + markings + custom synth markings toggle, custom synth color toggle + digitigrade + blood color + */ + if (copy_name) + if(config.humans_need_surnames) + var/firstspace = findtext(real_name, " ") + var/name_length = length(real_name) + if(!firstspace) //we need a surname + real_name += " [pick(last_names)]" + else if(firstspace == name_length) + real_name += "[pick(last_names)]" + character.real_name = real_name + character.name = character.real_name + if(character.dna) + character.dna.real_name = character.real_name + character.nickname = nickname + character.gender = biological_gender + character.identifying_gender = identifying_gender + + character.r_eyes = r_eyes + character.g_eyes = g_eyes + character.b_eyes = b_eyes + character.h_style = h_style + character.r_hair = r_hair + character.g_hair = g_hair + character.b_hair = b_hair + character.r_grad = r_grad + character.g_grad = g_grad + character.b_grad = b_grad + character.f_style = f_style + character.r_facial = r_facial + character.g_facial = g_facial + character.b_facial = b_facial + character.r_skin = r_skin + character.g_skin = g_skin + character.b_skin = b_skin + character.s_tone = s_tone + character.h_style = h_style + character.grad_style= grad_style + character.f_style = f_style + character.grad_style= grad_style + character.b_type = b_type + character.synth_color = synth_color + character.r_synth = r_synth + character.g_synth = g_synth + character.b_synth = b_synth + character.synth_markings = synth_markings + + var/list/ear_styles = get_available_styles(global.ear_styles_list) + character.ear_style = ear_styles[ear_style] + character.r_ears = r_ears + character.b_ears = b_ears + character.g_ears = g_ears + character.r_ears2 = r_ears2 + character.b_ears2 = b_ears2 + character.g_ears2 = g_ears2 + character.r_ears3 = r_ears3 + character.b_ears3 = b_ears3 + character.g_ears3 = g_ears3 + + var/list/tail_styles = get_available_styles(global.tail_styles_list) + character.tail_style = tail_styles[tail_style] + character.r_tail = r_tail + character.b_tail = b_tail + character.g_tail = g_tail + character.r_tail2 = r_tail2 + character.b_tail2 = b_tail2 + character.g_tail2 = g_tail2 + character.r_tail3 = r_tail3 + character.b_tail3 = b_tail3 + character.g_tail3 = g_tail3 + + var/list/wing_styles = get_available_styles(global.wing_styles_list) + character.wing_style = wing_styles[wing_style] + character.r_wing = r_wing + character.b_wing = b_wing + character.g_wing = g_wing + character.r_wing2 = r_wing2 + character.b_wing2 = b_wing2 + character.g_wing2 = g_wing2 + character.r_wing3 = r_wing3 + character.b_wing3 = b_wing3 + character.g_wing3 = g_wing3 + + character.set_gender(biological_gender) + + // Destroy/cyborgize organs and limbs. + if (convert_to_prosthetics) //should only really be run for proteans + for(var/name in BP_ALL) + var/status = organ_data[name] + var/obj/item/organ/external/O = character.organs_by_name[name] + if(O) + if(status == "amputated") + continue + else if(status == "cyborg") + O.robotize(rlimb_data[name]) + else + var/bodytype + var/datum/species/selected_species = GLOB.all_species[species] + if(selected_species.selects_bodytype) + bodytype = custom_base + else + bodytype = selected_species.get_bodytype() + var/dsi_company = GLOB.dsi_to_species[bodytype] + if (!dsi_company) + dsi_company = "DSI - Synthetic" + O.robotize(dsi_company) + + for(var/N in character.organs_by_name) + var/obj/item/organ/external/O = character.organs_by_name[N] + O.markings.Cut() + + var/priority = 0 + for(var/M in body_markings) + priority += 1 + var/datum/sprite_accessory/marking/mark_datum = body_marking_styles_list[M] + var/mark_color = "[body_markings[M]]" + + for(var/BP in mark_datum.body_parts) + var/obj/item/organ/external/O = character.organs_by_name[BP] + if(O) + O.markings[M] = list("color" = mark_color, "datum" = mark_datum, "priority" = priority) + character.markings_len = priority + + var/list/last_descriptors = list() + if(islist(body_descriptors)) + last_descriptors = body_descriptors.Copy() + body_descriptors = list() + + var/datum/species/mob_species = GLOB.all_species[species] + if(LAZYLEN(mob_species.descriptors)) + for(var/entry in mob_species.descriptors) + var/datum/mob_descriptor/descriptor = mob_species.descriptors[entry] + if(istype(descriptor)) + if(isnull(last_descriptors[entry])) + body_descriptors[entry] = descriptor.default_value // Species datums have initial default value. + else + body_descriptors[entry] = CLAMP(last_descriptors[entry], 1, LAZYLEN(descriptor.standalone_value_descriptors)) + + if (copy_flavour) + character.flavor_texts["general"] = flavor_texts["general"] + character.flavor_texts["head"] = flavor_texts["head"] + character.flavor_texts["face"] = flavor_texts["face"] + character.flavor_texts["eyes"] = flavor_texts["eyes"] + character.flavor_texts["torso"] = flavor_texts["torso"] + character.flavor_texts["arms"] = flavor_texts["arms"] + character.flavor_texts["hands"] = flavor_texts["hands"] + character.flavor_texts["legs"] = flavor_texts["legs"] + character.flavor_texts["feet"] = flavor_texts["feet"] + if (copy_ooc_notes) + character.ooc_notes = metadata + + character.weight = weight_vr + character.weight_gain = weight_gain + character.weight_loss = weight_loss + character.fuzzy = fuzzy + character.offset_override = offset_override //CHOMPEdit + character.voice_freq = voice_freq + character.resize(size_multiplier, animate = FALSE, ignore_prefs = TRUE) + if(!voice_sound) + character.voice_sounds_list = talk_sound + else + switch(voice_sound) + if("beep-boop") + character.voice_sounds_list = talk_sound + if("goon speak 1") + character.voice_sounds_list = goon_speak_one_sound + if("goon speak 2") + character.voice_sounds_list = goon_speak_two_sound + if("goon speak 3") + character.voice_sounds_list = goon_speak_three_sound + if("goon speak 4") + character.voice_sounds_list = goon_speak_four_sound + if("goon speak blub") + character.voice_sounds_list = goon_speak_blub_sound + if("goon speak bottalk") + character.voice_sounds_list = goon_speak_bottalk_sound + if("goon speak buwoo") + character.voice_sounds_list = goon_speak_buwoo_sound + if("goon speak cow") + character.voice_sounds_list = goon_speak_cow_sound + if("goon speak lizard") + character.voice_sounds_list = goon_speak_lizard_sound + if("goon speak pug") + character.voice_sounds_list = goon_speak_pug_sound + if("goon speak pugg") + character.voice_sounds_list = goon_speak_pugg_sound + if("goon speak roach") + character.voice_sounds_list = goon_speak_roach_sound + if("goon speak skelly") + character.voice_sounds_list = goon_speak_skelly_sound + + character.species?.blood_color = blood_color + + var/datum/species/selected_species = GLOB.all_species[species] + var/bodytype_selected + if(selected_species.selects_bodytype) + bodytype_selected = custom_base + else + bodytype_selected = selected_species.get_bodytype(character) + + character.dna.base_species = bodytype_selected + character.species.base_species = bodytype_selected + character.species.vanity_base_fit = bodytype_selected + if (istype(character.species, /datum/species/shapeshifter)) + wrapped_species_by_ref["\ref[character]"] = bodytype_selected + + character.custom_species = custom_species + character.custom_say = lowertext(trim(custom_say)) + character.custom_ask = lowertext(trim(custom_ask)) + character.custom_whisper = lowertext(trim(custom_whisper)) + character.custom_exclaim = lowertext(trim(custom_exclaim)) + + character.digitigrade = selected_species.digi_allowed ? digitigrade : 0 + + character.dna.ResetUIFrom(character) + character.force_update_limbs() + character.regenerate_icons() diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm index 70eb1876a6..597f95bac5 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm @@ -17,6 +17,7 @@ var/mudking = FALSE var/icodigi = 'modular_chomp/icons/mob/human_races/r_digi.dmi' var/digi_allowed = FALSE + var/vanity_base_fit //when shapeshifting using vanity_copy_to, this allows you to have add something so they can go back to their original species fit // Handles non-standard eyes when using a species that utilizes a custom base icon set. // Eye data is stored in the head organ, and this needs to be handled specially. diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/species_shapeshift_ch.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/species_shapeshift_ch.dm new file mode 100644 index 0000000000..6141d17e22 --- /dev/null +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/species_shapeshift_ch.dm @@ -0,0 +1,31 @@ +/mob/living/carbon/human/proc/shapeshifter_reassemble() + + set name = "Complete Reform" + set category = "Abilities" + + if(stat || world.time < last_special) + return + + last_special = world.time + 50 + + if (tgui_alert(src, "Are you sure you want to reform yourself? This will reset you to what you look like in your current preferences slot.", "Reform", list("Yes","Cancel")) != "Yes") + return + + var/input = tgui_alert(src,{"Include Flavourtext?"},"Reformation",list("Yes","No","Cancel")) + if(input == "Cancel" || !input) + return + var/flavour = 0 + if(input == "Yes") + flavour = 1 + input = tgui_alert(src,{"Include OOC notes?"},"Reformation",list("Yes","No","Cancel")) + if(input == "Cancel" || !input) + return + var/oocnotes = 0 + if(input == "Yes") + oocnotes = 1 + to_chat(src, "You begin to reform. You will need to remain still.") + visible_message("[src] rapidly contorts and shifts!", "You begin to reform.") + if (do_after(src, 40,exclusive = TASK_ALL_EXCLUSIVE)) + if (client?.prefs) + client.prefs.vanity_copy_to(src, FALSE, flavour, oocnotes, FALSE) + visible_message("[src] adopts a new form!", "You have reformed.") diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm index d7a904fa83..77a0cdbc2b 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm @@ -132,7 +132,7 @@ if(do_after(caller, 40,exclusive = TASK_ALL_EXCLUSIVE)) if(client.prefs) //Make sure we didn't d/c var/obj/item/weapon/rig/protean/Rig = species?:OurRig - GetAppearanceFromPrefs(flavour, oocnotes) + caller.client.prefs.vanity_copy_to(caller, FALSE, flavour, oocnotes, TRUE) species?:OurRig = Rig //Get a reference to our Rig and put it back after reassembling caller.visible_message("[caller] adopts a new form!", "You have reassembled.") @@ -237,7 +237,7 @@ to_chat(src,"You must be awake and standing to perform this action!") return - var/new_species = tgui_input_list(usr, "Please select a species to emulate.", "Shapeshifter Body", GLOB.playable_species) + var/new_species = tgui_input_list(usr, "Please select a species to emulate.", "Shapeshifter Body", list(species?.vanity_base_fit)|GLOB.playable_species) if(new_species) species?.base_species = new_species // Really though you better have a species regenerate_icons() //Expensive, but we need to recrunch all the icons we're wearing diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm index b7bea74148..e94b767e84 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm @@ -136,14 +136,53 @@ if(saved_nif) saved_nif.quick_implant(H) +/datum/species/protean/get_race_key() + var/datum/species/real = GLOB.all_species[base_species] + return real.race_key + /datum/species/protean/get_bodytype(var/mob/living/carbon/human/H) if(!H || base_species == name) return ..() var/datum/species/S = GLOB.all_species[base_species] return S.get_bodytype(H) +/datum/species/protean/get_icobase(var/mob/living/carbon/human/H, var/get_deform) + if(!H || base_species == name) return ..(null, get_deform) + var/datum/species/S = GLOB.all_species[base_species] + return S.get_icobase(H, get_deform) + /datum/species/protean/get_valid_shapeshifter_forms(var/mob/living/carbon/human/H) return GLOB.playable_species +/datum/species/protean/get_tail(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_tail(H) + +/datum/species/protean/get_tail_animation(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_tail_animation(H) + +/datum/species/protean/get_tail_hair(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_tail_hair(H) + +/datum/species/protean/get_blood_mask(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_blood_mask(H) + +/datum/species/protean/get_damage_mask(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_damage_mask(H) + +/datum/species/protean/get_damage_overlays(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_damage_overlays(H) + /datum/species/protean/handle_post_spawn(var/mob/living/carbon/human/H) ..() H.synth_color = TRUE diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/station_special_ch.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/station_special_ch.dm new file mode 100644 index 0000000000..5a9a0e0810 --- /dev/null +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/station_special_ch.dm @@ -0,0 +1,39 @@ +/datum/species/xenochimera/get_bodytype(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_bodytype(H) + +/datum/species/xenochimera/get_icobase(var/mob/living/carbon/human/H, var/get_deform) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_icobase(H, get_deform) + +/datum/species/xenochimera/get_tail(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_tail(H) + +/datum/species/xenochimera/get_tail_animation(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_tail_animation(H) + +/datum/species/xenochimera/get_tail_hair(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_tail_hair(H) + +/datum/species/xenochimera/get_blood_mask(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_blood_mask(H) + +/datum/species/xenochimera/get_damage_mask(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_damage_mask(H) + +/datum/species/xenochimera/get_damage_overlays(var/mob/living/carbon/human/H) + if(!H || base_species == name) return ..() + var/datum/species/S = GLOB.all_species[base_species] + return S.get_damage_overlays(H) diff --git a/modular_chomp/code/modules/organs/organ_external.dm b/modular_chomp/code/modules/organs/organ_external.dm index 73e00426c0..02c7d19170 100644 --- a/modular_chomp/code/modules/organs/organ_external.dm +++ b/modular_chomp/code/modules/organs/organ_external.dm @@ -1,5 +1,5 @@ /obj/item/organ/external - var/prosthetic_digi = FALSE //CHOMPStation edit - when it's prosthetic, can it be a digitigrade + var/skip_robo_icon = FALSE //CHOMPStation edit - to force it to use the normal species icon //new function to check for markings /obj/item/organ/external/proc/is_hidden_by_markings() diff --git a/modular_chomp/code/modules/organs/organ_icon.dm b/modular_chomp/code/modules/organs/organ_icon.dm index 339a45a4f6..36b004674a 100644 --- a/modular_chomp/code/modules/organs/organ_icon.dm +++ b/modular_chomp/code/modules/organs/organ_icon.dm @@ -9,8 +9,6 @@ else if(dna) digitigrade = dna.digitigrade && (istype(src,/obj/item/organ/external/leg) || istype(src,/obj/item/organ/external/foot)) - var/robotic_digi = prosthetic_digi && digitigrade //could make it so the prosthetic digi var is more of a "does this limb have a custom digitigrade sprite for its robospriting" but this is fine for now - var/gender = "m" if(owner && owner.gender == FEMALE) gender = "f" @@ -20,7 +18,7 @@ else icon_cache_key = "[icon_name]_[force_icon_key]" - if(force_icon && !robotic_digi) + if(force_icon && !skip_robo_icon) mob_icon = new /icon(force_icon, "[icon_name][gendered_icon ? "_[gender]" : ""]") else if(!dna) @@ -37,7 +35,7 @@ if(skeletal) mob_icon = new /icon('icons/mob/human_races/r_skeleton.dmi', "[icon_name][gender ? "_[gender]" : ""]") - else if (robotic >= ORGAN_ROBOT && !robotic_digi) + else if (robotic >= ORGAN_ROBOT && !skip_robo_icon) mob_icon = new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]") apply_colouration(mob_icon) else @@ -48,13 +46,13 @@ mob_icon = new /icon(digitigrade ? species.icodigi : species.get_icobase(owner, (status & ORGAN_MUTATED)), "[icon_name][gender ? "_[gender]" : ""]") apply_colouration(mob_icon) - if (model && !robotic_digi) + if (model && !skip_robo_icon) icon_cache_key += "_model_[model]" apply_colouration(mob_icon) //Code here is copied from organ_icon.dm line 118 at time of writing (9/20/21), VOREStation edits are left in intentionally, because I think it's worth keeping track of the fact that the code is from Virgo's edits. //Body markings, actually does not include head this time. Done separately above. - if((!istype(src,/obj/item/organ/external/head) && !(force_icon && !robotic_digi)) || (model && owner && owner.synth_markings)) + if((!istype(src,/obj/item/organ/external/head) && !(force_icon && !skip_robo_icon)) || (model && owner && owner.synth_markings)) for(var/M in markings) var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"] var/isdigitype = istype(mark_style,/datum/sprite_accessory/marking/digi) @@ -73,7 +71,7 @@ mob_icon.Blend(limb_icon_cache[cache_key], ICON_OVERLAY) // VOREStation edit start - if(nail_polish && (force_icon && !robotic_digi)) + if(nail_polish && !(force_icon && !skip_robo_icon)) var/icon/I = new(nail_polish.icon, nail_polish.icon_state) I.Blend(nail_polish.color, ICON_MULTIPLY) add_overlay(I) diff --git a/vorestation.dme b/vorestation.dme index 08ba683e78..bf3e245c88 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4559,9 +4559,11 @@ #include "modular_chomp\code\modules\mob\living\carbon\human\human_defines.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\update_icons.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\species\species.dm" +#include "modular_chomp\code\modules\mob\living\carbon\human\species\species_shapeshift_ch.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\species\outsider\vox.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\species\station\prommie_blob.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\species\station\station.dm" +#include "modular_chomp\code\modules\mob\living\carbon\human\species\station\station_special_ch.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\species\station\teshari.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\species\station\protean\_protean_defines.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\species\station\protean\protean_blob.dm" From 7621731489195d39d96addd7706f456d3392afbf Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sun, 5 Feb 2023 10:59:55 +0800 Subject: [PATCH 26/36] stops protean rigs getting deleted by explosions --- .../living/carbon/human/species/station/protean/protean_rig.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index 15f299d01e..77253dc05a 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -42,6 +42,9 @@ /obj/item/weapon/rig/protean/digest_act(atom/movable/item_storage = null) return 0 +/obj/item/weapon/rig/protean/ex_act(severity) + return + /obj/item/weapon/rig/protean/New(var/newloc, var/mob/living/carbon/human/P) if(P) var/datum/species/protean/S = P.species From 103a9db0dcc66bfb6ce04a8bc3a8042ac01c1527 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sun, 5 Feb 2023 11:02:12 +0800 Subject: [PATCH 27/36] protean and prommie blobs not having real_name set --- .../mob/living/carbon/human/species/station/prommie_blob.dm | 5 +++-- .../carbon/human/species/station/protean/protean_blob.dm | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm index 470206a4c4..cbadb3a702 100644 --- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm +++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm @@ -403,6 +403,7 @@ blob.ooc_notes = ooc_notes blob.transforming = FALSE blob.name = name + blob.real_name = real_name //CHOMPEdit blob.nutrition = nutrition blob.color = rgb(r_skin, g_skin, b_skin) playsound(src.loc, "sound/effects/slime_squish.ogg", 15) @@ -513,9 +514,9 @@ B.owner = src //vore_organs.Cut() - + //ChompEdit begin. And let's drop them again. -// if(blob.prev_left_hand) put_in_l_hand(blob.prev_left_hand) +// if(blob.prev_left_hand) put_in_l_hand(blob.prev_left_hand) // if(blob.prev_right_hand) put_in_r_hand(blob.prev_right_hand) if(blob.l_hand) blob.drop_from_inventory(blob.l_hand) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index 260e6ca283..aee4dfc810 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -512,6 +512,7 @@ //We can still speak our languages! blob.languages = languages.Copy() blob.name = real_name + blob.real_name = real_name blob.voice_name = name var/datum/species/protean/S = src.species blob.icon_living = S.blob_appearance From e37832dbf18136c1d06f66c27bbde948c9caf9a1 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sun, 5 Feb 2023 11:52:33 +0800 Subject: [PATCH 28/36] gives protean blobs their emotes back --- .../carbon/human/species/station/protean/protean_blob.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index aee4dfc810..8d140262a1 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -174,9 +174,6 @@ /mob/living/simple_mob/protean_blob/speech_bubble_appearance() return "synthetic" -/mob/living/simple_mob/protean_blob/get_available_emotes() - return global._robot_default_emotes.Copy() - /mob/living/simple_mob/protean_blob/init_vore() return //Don't make a random belly, don't waste your time From ce0eeb66b58b6074143a407f442cf4fd0a08196c Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sun, 5 Feb 2023 13:26:49 +0800 Subject: [PATCH 29/36] direction persistence and resize runtime fix + no resize animation --- code/modules/vore/resizing/resize_vr.dm | 2 +- .../human/species/station/protean/protean_blob.dm | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/code/modules/vore/resizing/resize_vr.dm b/code/modules/vore/resizing/resize_vr.dm index 076f6b86ce..018365098a 100644 --- a/code/modules/vore/resizing/resize_vr.dm +++ b/code/modules/vore/resizing/resize_vr.dm @@ -65,7 +65,7 @@ /atom/movable/proc/has_large_resize_bounds() var/area/A = get_area(src) //Get the atom's area to check for size limit. - return !A.limit_mob_size + return A ? !A.limit_mob_size : TRUE //CHOMPEdit /proc/is_extreme_size(size) return (size < RESIZE_MINIMUM || size > RESIZE_MAXIMUM) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index 8d140262a1..8fef3aaa20 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -469,6 +469,9 @@ blob.transform = matrix()*size_multiplier blob.size_multiplier = size_multiplier + //dir update + blob.dir = dir + if(l_hand) drop_l_hand() if(r_hand) drop_r_hand() @@ -582,14 +585,17 @@ //Message blob.visible_message("[src.name] reshapes into a humanoid appearance!") + //Size update + resize(blob.size_multiplier, FALSE, TRUE, ignore_prefs = TRUE) + //Duration of above animation sleep(8) //Record where they should go var/atom/reform_spot = blob.drop_location() - //Size update - resize(blob.size_multiplier, 1, 1, ignore_prefs = TRUE) + //dir update + dir = blob.dir //Move them back where the blob was forceMove(reform_spot) From 484b164b647cd55f692ce4c5d8bcd9d3e933d77a Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sun, 5 Feb 2023 13:37:09 +0800 Subject: [PATCH 30/36] fix linters hopefully --- .../spacesuits/rig/modules/specific/protean.dm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm b/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm index a19df3b1c3..f0d36a706d 100644 --- a/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm +++ b/modular_chomp/code/modules/clothing/spacesuits/rig/modules/specific/protean.dm @@ -157,8 +157,9 @@ These should come standard with the Protean rigsuit, unless you want them to wor if(istype(H.species, /datum/species/protean)) to_chat(H, "Your Protean modules do not function on yourself.") return 0 - if(P?:refactory.get_stored_material(MAT_STEEL) >= 100) - healing = holder.wearer.add_modifier(/datum/modifier/protean/steel, origin = P?:refactory) + var/obj/item/organ/internal/nano/refactory/R = P.nano_get_refactory() + if(R.get_stored_material(MAT_STEEL) >= 100) + healing = holder.wearer.add_modifier(/datum/modifier/protean/steel, origin = R) to_chat(usr, "You activate the suit's restorative nanites.") to_chat(H, "Your suit begins mend your injuries.") active = 1 @@ -188,7 +189,8 @@ These should come standard with the Protean rigsuit, unless you want them to wor to_chat(H, "Your Protean modules do not function on yourself.") deactivate() return - if((!P?:refactory.get_stored_material(MAT_STEEL))) + var/obj/item/organ/internal/nano/refactory/R = P.nano_get_refactory() + if((!R.get_stored_material(MAT_STEEL))) to_chat(H, "Your [holder] is out of steel.") deactivate() return @@ -198,11 +200,10 @@ These should come standard with the Protean rigsuit, unless you want them to wor if(!istype(S) || !istype(user)) return 0 - if(!holder?:myprotean.nano_get_refactory()) - return 0 + var/mob/living/P = holder?:myprotean + var/obj/item/organ/internal/nano/refactory/R = P?.nano_get_refactory() - var/obj/item/organ/internal/nano/refactory/R = holder?:myprotean.nano_get_refactory() - if(R.add_stored_material(S.material.name,1*S.perunit) && S.use(1)) + if(R?.add_stored_material(S.material.name,1*S.perunit) && S.use(1)) to_chat(user, "You directly feed some steel to the [holder].") return 1 return 0 \ No newline at end of file From feaaa59bd48bd25e04589750583bc715e0314b29 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sun, 5 Feb 2023 23:47:32 +0800 Subject: [PATCH 31/36] slight bug to stop proteans from resizing to whatever they want in blob form that I accidentally introduced in that last batch of updates --- code/modules/vore/resizing/resize_vr.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/vore/resizing/resize_vr.dm b/code/modules/vore/resizing/resize_vr.dm index 018365098a..06d0d488e1 100644 --- a/code/modules/vore/resizing/resize_vr.dm +++ b/code/modules/vore/resizing/resize_vr.dm @@ -65,7 +65,7 @@ /atom/movable/proc/has_large_resize_bounds() var/area/A = get_area(src) //Get the atom's area to check for size limit. - return A ? !A.limit_mob_size : TRUE //CHOMPEdit + return A ? !A.limit_mob_size : FALSE //CHOMPEdit /proc/is_extreme_size(size) return (size < RESIZE_MINIMUM || size > RESIZE_MAXIMUM) From 369e1bdcc589d12d90426f2702610c438167bf43 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Thu, 9 Feb 2023 11:53:23 +0800 Subject: [PATCH 32/36] adds the ability to turn into other people for proteans, and gives protean blobs their robot emotes back --- .../code/modules/client/preferences.dm | 1 + .../mob/living/carbon/human/human_helpers.dm | 138 ++++++++++++++++++ .../species/station/protean/protean_blob.dm | 5 + .../species/station/protean/protean_powers.dm | 79 +++++++++- .../station/protean/protean_species.dm | 1 + .../mob/species/protean/protean_powers.dmi | Bin 2407 -> 2578 bytes vorestation.dme | 1 + 7 files changed, 223 insertions(+), 2 deletions(-) create mode 100644 modular_chomp/code/modules/mob/living/carbon/human/human_helpers.dm diff --git a/modular_chomp/code/modules/client/preferences.dm b/modular_chomp/code/modules/client/preferences.dm index 6c9af02123..63ca5acd26 100644 --- a/modular_chomp/code/modules/client/preferences.dm +++ b/modular_chomp/code/modules/client/preferences.dm @@ -186,6 +186,7 @@ body_descriptors[entry] = descriptor.default_value // Species datums have initial default value. else body_descriptors[entry] = CLAMP(last_descriptors[entry], 1, LAZYLEN(descriptor.standalone_value_descriptors)) + character.descriptors = body_descriptors if (copy_flavour) character.flavor_texts["general"] = flavor_texts["general"] diff --git a/modular_chomp/code/modules/mob/living/carbon/human/human_helpers.dm b/modular_chomp/code/modules/mob/living/carbon/human/human_helpers.dm new file mode 100644 index 0000000000..6f950f1762 --- /dev/null +++ b/modular_chomp/code/modules/mob/living/carbon/human/human_helpers.dm @@ -0,0 +1,138 @@ +/mob/living/carbon/human/proc/transform_into_other_human(var/mob/living/carbon/human/character, var/copy_name, var/copy_flavour = TRUE, var/convert_to_prosthetics = FALSE) + /* + name, nickname, flavour, OOC notes + gender, sex + custom species name, custom bodytype, weight, scale, scaling center, sound type, sound freq + custom say verbs + ears, wings, tail, hair, facial hair + ears colors, wings colors, tail colors + body color, prosthetics (if they're a protean) (convert to DSI if protean and not prosthetic), eye color, hair color etc + markings + custom synth markings toggle, custom synth color toggle + digitigrade + blood color + */ + if (copy_name) + name = character.name + nickname = character.nickname + gender = character.gender + identifying_gender = character.identifying_gender + + r_eyes = character.r_eyes + g_eyes = character.g_eyes + b_eyes = character.b_eyes + h_style = character.h_style + r_hair = character.r_hair + g_hair = character.g_hair + b_hair = character.b_hair + r_grad = character.r_grad + g_grad = character.g_grad + b_grad = character.b_grad + f_style = character.f_style + r_facial = character.r_facial + g_facial = character.g_facial + b_facial = character.b_facial + r_skin = character.r_skin + g_skin = character.g_skin + b_skin = character.b_skin + s_tone = character.s_tone + h_style = character.h_style + grad_style = character.grad_style + f_style = character.f_style + grad_style = character.grad_style + b_type = character.b_type + synth_color = character.synth_color + r_synth = character.r_synth + g_synth = character.g_synth + b_synth = character.b_synth + synth_markings = character.synth_markings + + ear_style = character.ear_style + r_ears = character.r_ears + b_ears = character.b_ears + g_ears = character.g_ears + r_ears2 = character.r_ears2 + b_ears2 = character.b_ears2 + g_ears2 = character.g_ears2 + r_ears3 = character.r_ears3 + b_ears3 = character.b_ears3 + g_ears3 = character.g_ears3 + + tail_style = character.tail_style + r_tail = character.r_tail + b_tail = character.b_tail + g_tail = character.g_tail + r_tail2 = character.r_tail2 + b_tail2 = character.b_tail2 + g_tail2 = character.g_tail2 + r_tail3 = character.r_tail3 + b_tail3 = character.b_tail3 + g_tail3 = character.g_tail3 + + wing_style = character.wing_style + r_wing = character.r_wing + b_wing = character.b_wing + g_wing = character.g_wing + r_wing2 = character.r_wing2 + b_wing2 = character.b_wing2 + g_wing2 = character.g_wing2 + r_wing3 = character.r_wing3 + b_wing3 = character.b_wing3 + g_wing3 = character.g_wing3 + + + var/bodytype = character.species?.get_bodytype() + + if (convert_to_prosthetics) //should only really be run for proteans + for(var/name in BP_ALL) + var/obj/item/organ/external/I = character.organs_by_name[name] + var/obj/item/organ/external/O = organs_by_name[name] + if(O) + if(I.robotic >= ORGAN_ROBOT) + O.robotize(I.model) + else + var/dsi_company = GLOB.dsi_to_species[bodytype] + if (!dsi_company) + dsi_company = "DSI - Synthetic" + O.robotize(dsi_company) + + for(var/N in character.organs_by_name) + var/obj/item/organ/external/O = organs_by_name[N] + var/obj/item/organ/external/I = character.organs_by_name[N] + O.markings = I.markings.Copy() + + markings_len = character.markings_len + + descriptors = character.descriptors?.Copy() + + if (copy_flavour) + flavor_texts = character.flavor_texts?.Copy() + + weight = character.weight + weight_gain = character.weight_gain + weight_loss = character.weight_loss + fuzzy = character.fuzzy + offset_override = character.offset_override //CHOMPEdit + voice_freq = character.voice_freq + character.resize(character.size_multiplier, animate = TRUE, ignore_prefs = TRUE) + voice_sounds_list = character.voice_sounds_list + + species?.blood_color = character.species?.blood_color + + dna?.base_species = bodytype + species?.base_species = bodytype + species?.vanity_base_fit = bodytype + if (istype(species, /datum/species/shapeshifter)) + wrapped_species_by_ref["\ref[src]"] = bodytype + + custom_species = character.custom_species + custom_say = character.custom_say + custom_ask = character.custom_ask + custom_whisper = character.custom_whisper + custom_exclaim = character.custom_exclaim + + digitigrade = character.digitigrade + + dna?.ResetUIFrom(src) + force_update_limbs() + regenerate_icons() diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index 8fef3aaa20..c26d3ca134 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -180,6 +180,11 @@ /mob/living/simple_mob/protean_blob/isSynthetic() return TRUE // yup +/mob/living/simple_mob/protean_blob/get_available_emotes() + var/list/fulllist = global._robot_default_emotes.Copy() + fulllist |= global._human_default_emotes //they're living nanites, they can make whatever sounds they want + return fulllist + /mob/living/simple_mob/protean_blob/Stat() ..() if(humanform) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm index 77a0cdbc2b..513979c618 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm @@ -130,12 +130,81 @@ to_chat(caller, "You begin to reassemble. You will need to remain still.") caller.visible_message("[caller] rapidly contorts and shifts!", "You begin to reassemble.") if(do_after(caller, 40,exclusive = TASK_ALL_EXCLUSIVE)) - if(client.prefs) //Make sure we didn't d/c + if(caller.client.prefs) //Make sure we didn't d/c var/obj/item/weapon/rig/protean/Rig = species?:OurRig - caller.client.prefs.vanity_copy_to(caller, FALSE, flavour, oocnotes, TRUE) + caller.client.prefs.vanity_copy_to(src, FALSE, flavour, oocnotes, TRUE) species?:OurRig = Rig //Get a reference to our Rig and put it back after reassembling caller.visible_message("[caller] adopts a new form!", "You have reassembled.") + +/mob/living/carbon/human/proc/nano_copy_body() + set name = "Copy Form" + set desc = "If you are aggressively grabbing someone, with their consent, you can turn into a copy of them. (Without their name)." + set category = "Abilities" + set hidden = 1 + var/mob/living/caller = src + if(temporary_form) + caller = temporary_form + + var/grabbing_but_not_enough + var/mob/living/carbon/human/victim = null + for(var/obj/item/weapon/grab/G in caller) + if(G.state < GRAB_AGGRESSIVE) + grabbing_but_not_enough = TRUE + return + else + victim = G.affecting + if (!victim) + if (grabbing_but_not_enough) + to_chat(caller, "You need a better grip to do that!") + else + to_chat(caller, "You need to be aggressively grabbing someone before you can copy their form.") + return + if (!istype(victim)) + to_chat(caller, "You can only perform this on human mobs!") + return + if (!victim.client) + to_chat(caller, "The person you try this on must have a client!") + return + + + to_chat(caller, "Waiting for other person's consent.") + var/consent = tgui_alert(victim, "Allow [src] to copy what you look like?", "Consent", list("Yes", "No")) + if (consent != "Yes") + to_chat(caller, "They declined your request.") + return + + var/input = tgui_alert(caller,{"Copy [victim]'s flavourtext?"},"Copy Form",list("Yes","No","Cancel")) + if(input == "Cancel" || !input) + return + var/flavour = 0 + if(input == "Yes") + flavour = 1 + + var/checking = FALSE + for(var/obj/item/weapon/grab/G in caller) + if(G.affecting == victim && G.state >= GRAB_AGGRESSIVE) + checking = TRUE + if (!checking) + to_chat(caller, "You lost your grip on [victim]!") + return + + to_chat(caller, "You begin to reassemble into [victim]. You will need to remain still.") + caller.visible_message("[caller] rapidly contorts and shifts!", "You begin to reassemble into [victim].") + if(do_after(caller, 40,exclusive = TASK_ALL_EXCLUSIVE)) + checking = FALSE + for(var/obj/item/weapon/grab/G in caller) + if(G.affecting == victim && G.state >= GRAB_AGGRESSIVE) + checking = TRUE + if (!checking) + to_chat(caller, "You lost your grip on [victim]!") + return + if(caller.client) //Make sure we didn't d/c + var/obj/item/weapon/rig/protean/Rig = species?:OurRig + transform_into_other_human(victim, FALSE, flavour, TRUE) + species?:OurRig = Rig //Get a reference to our Rig and put it back after reassembling + caller.visible_message("[caller] adopts the form of [victim]!", "You have reassembled into [victim].") + //// // Storing metal //// @@ -491,4 +560,10 @@ icon_state = "latch" to_call = /mob/living/carbon/human/proc/nano_latch +/obj/effect/protean_ability/copy_form + ability_name = "Copy Form" + desc = "If you are aggressively grabbing someone, with their consent, you can turn into a copy of them. (Without their name)." + icon_state = "copy_form" + to_call = /mob/living/carbon/human/proc/nano_copy_body + #undef PER_LIMB_STEEL_COST diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm index e94b767e84..55667c2f42 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm @@ -95,6 +95,7 @@ /mob/living/carbon/human/proc/nano_metalnom, /mob/living/carbon/human/proc/nano_blobform, /mob/living/carbon/human/proc/nano_rig_transform, + /mob/living/carbon/human/proc/nano_copy_body, /mob/living/carbon/human/proc/appearance_switch, /mob/living/carbon/human/proc/nano_latch, /mob/living/proc/set_size, diff --git a/modular_chomp/icons/mob/species/protean/protean_powers.dmi b/modular_chomp/icons/mob/species/protean/protean_powers.dmi index 3120d9d0ce1f0dde8723f8d0c5ed8fc85fa52543..efcd821a813507c566afa4be18c7e80062d41f98 100644 GIT binary patch delta 2003 zcmV;^2Q2vK5|R{fFDZ*Bkpc$|&VO$viB5C!0Ma*Ck)(!XstMJX=o6-qSG3?v;%ri!<3 zu*I$<-Mt4NkAca>wY*ieDDD*>wGV(#aS`X;p0f!QnOIIo&WwiM(5D2Fq+`q)i%rIv z0)HQ3J#f}}>GU^S#9>K4j%wcGE3)7=H&^5|Nt;w7+LzNw=AloTFafnDeZ2ffwK&X= z4!zrwxhU&m`N$i$*>b?(qGv?_00x~&L_t(&f$f?5d(%`H$8(yHw%dSCsoU5~EYe!3U0~8eTzWqzSC+Qe% z&Phv4ANgVLL-Q08zMu1c-*et}dl_al?rtE23af82nF>ijCYEChNI)z*h8x4O1tTDq z!%;W@gLu&A3t9x8FQh&~JTk+pPzbz-AOoX)#O0G9GI3C4&_^7Vz*{UCb}{{=s(veBYcwpCkWga0i)rb(``~Xv#YACZ+?D z`eXvalCVp)G9n59Zd<VE{N##E}YtT|p*`MJprCBgl;k(ALj#Ma4y=BoOQ##9BDD zjMy)-ikSvL+VV@(48RDKo&|IXWPipb#$`m*eqrWl04oOxl#DIG3Ou3Zfc^Lst2fMu zdY)(&VSDh}NFCr~O%b-;49 z*N>=^c9MlR)5~ZK&=9IF;&m0i1%P8pEn^bE=Fx1iMbt8CVWu6_>;Rk!FnU?{J#NOhsdvthWeb^?DH$5AwVr)o@E>jdW;)C&Q@A_pS9F>{{)l00QwJAnX_ikaZa2&Z$9NQmn&Dm_zLHYEL?I`=Sr}a*JR_8 zYeBWk?RMt?SXj9z3zuB3T7MucuFC=OaQ%|ZF1e}~)Vf?Q_fkOIDd3U%hKw$`s%y0( zyWLBv1kvO5h=hOlIUmjB64oDnPbG*BzsK(&5E`A2C0%M-*1UZAMd+*-}$BL7#waD};@j0zHFgozH15ZCkzl`Hqekw(n@3wev*+ zz}B|aMh7sW-{bK3Mg5JJ>UU`_?cVe9-hG{2n_t^?e;1S{tfLQvkJE zAJPEsx}`)wyVvXYdi6DCJcsKwm)Fzvw^!VGS-&x^wqylP3S}837Ab5&Jf<7a?J5O_|wSVWmu0zL;cb{Ij<^6G~ z&tO8bRZ#VrfLKHXFdAC zM74wr9_p-Mgkwo}hmSck4Pzfis5c z(wvzeZ~0{Zr+=R{%&7WYB0uN8^G}1}0GB4!Py1p~)9f#&eKq%-NO>%$&rCJIr75S@ z9xf~Yy6l@%=cdZJ>d+&^3Zc;a^QLc2=j}=X^haYf?uodk=L;9Y7cOMf&ttw2{_gwU zUPD488p&h6(04HwkHvd08R#bxiAc`#g|;7JafsgDAAf0xNTR>Le;^vkalX)YIj%*l zw~zQh6zfA=iAHkK9|6Q;SAQY`2Ktk6B|=X@y6s8>#4leB8v+ank|5o>>Igp%1Fl{F zrO^m5FhC{9vLZ>6A`?GqepRa+zwulA=I;c+FkxVzAKp<3il7K&eddo?{N@eVN7t_R z5dkO)>VH50`DlUykc6?KAQ#KTuM>TLLJBu7#;*Ou#vIbgLZq`Pq`|f9}XK{e}pz)0D?%<2hCvcpJ34buiZX~BNc%-6or!< z!7uuJL6&3%Uc`H#>cf(-_8`3V`3BPfEQ&;+9e+iP<_n-ND&!JieP43X_CenuGnh)q zZoV)iNZ`^C8Q}AU!%2Y82iJ5!7V`zHkN*$|+M<&LyDvQQms^A^<_klLESwi)g$%%p zP6F)VurEztWn`K!;0jB)&KWYmg@(5zfZ==rK>#F%!Ln`qTqfFN#p=9oG*aoU=Z$g(CvUB-T8OGO!Ec!I8!7= l7!u$ri#h!KM42!A2ag>PR)jk|bN~PV00>D%PDHLkV1k)o!%+YL delta 1830 zcmV+>2if?N6z39&}1udlDMv9VTGR<5qD#l^+O#>P=m zQLU}5TwGkVw6v380y%$#P|RHb0004WQchCV=- z0C=2*&`k=$Fc1acb#jW(?!~{Y8)=a)>>W}wHUo)MlCj0x8>-Y*&F($;cnnjjbA4%A zRb3l7LWoEYbyCO8R*DG?+f)vFDJ)=b`BNfmh7^m=QCCP|FvNdUcT(Jg_VCS)XqeNF zlX{Y_85bY{!9KuU$|HDA zzX+fA=Fu1EzYOjmuV}TY2!&>>6E`s%kkzLX5SD~4C1pem0G#x(Ey4hBph%z<0=t4d zJ|8I~%Ol8*2_Wm|g`(mjS`rAl2k}0^DkJubuHt0@5LteSl>r!mhGqd%0(o(XaTyVF zUU&r-z%PG50wv>1u!2Y#Ibc8D#nuTgV(urFMc5v^wi3|x!)~><><|Jt@3UqRNU(Q{ z$Y?@5iFuwE2Zp^4K5O+k`UFbFs18_e&H8)lv`+GgUUnIC0|>&>MWU_3cLA_XnPtoZ z_yUG4wuo6q5?|cmQQZc7%nMF4G@;qIzT*Jw>-Z~ zO4Wbj8bwjUD*!Q4z$10_d0kSfYDkg8;T24R8i__!%Fkn=NAtOa_4}VQ32IP_Xh900 zA@o?*rN)&_t5!X}va$M!CkK0^EVlFm0gJGV3W#f3uqdc$aod?hXf<(Z&D!Rto?f@U zWo_d#8+1wnf!5XlJB7A372bKOZEchcRuX@gR&U(2dCS&qo0_**mrb%K5ZD0`V5Y#% z;Mve~#HF3_6WNC5;|cLdk~PSqm8h^E?4yi~WBxU_Ho%Lfj2bZ&cP z=b9-K?EsFm9AW~Xha&K>pIA~km$-E3aC_&GBOP7chhD7=&;UDf0-_O3(;`v(iQs>p zYT{DM;nzBjzJ9QMb4z_?=^#K2nL`8+u3bR|v_+#@G-|Ig7dci(Tzcbpd&h~Brw$x% ze)IGoz_8ksi=WYoB4_M1=H5EHfwy|X$L91N(rH%eIv03lMWQuI0f z-G#)ZmhSgDkDff$b#CMK_a_X#1`~g>qk^f=#nmDzfJ^ekrF|c4?dt3}aDIPF{ple9 z&YGn#t!tMt^&x|{2o=!pQq#r@Th4!Ye%J0*b1FU>dI=uamOOiy#^Yz=3;=Oyc~kSc z3*GzI@7p_T+9dl$cv{yo3Y<4Am*&s;c>5=ZKK-nIcID?f{krhTUk&;LT$+DcH}i|7 zjq|>o`PG7pD&sOoubEbWOViJ8I94|K>#}doUYub#)nP}Hmy^jwmptEkE=i^f`eQK` zW05Z|r!HT1Q$O|H_dPu>5_+$sGwDpvRk!q8e@JH_dU}3z3DJ5jLn7VN>nvxYf!q0#GfEzb|X>bTI3{%&2)1bc8{AyJ>bL+Rv?cbdOIKz}p znXb?Mk0e3e!{G#B=!OXo>N!x2VM$nf0-k@yVtoz(ps$+r z5@7vUcF|H_tdHw+LbxOA;L;sBAQnrdvVd3&jt&4=AAeB@WYJlI6ieOvW<&tfkT1!G zNeAFXX8}?w6?34^;R@@x&Q!pFMN1el@-9M90998FL#KT1IPa|K zZj)Kf?`(Gwb%gu^)E8>hWkVP2x4H0|3;DRyy3M7_vTCTZtm~tGXPw;UGUOywI4MJ~ z+HZ3e2*9_w@Fp`&Jg*^%(Y|>PmV-ff*1@y`hCcfLV*)Q{rf$l2WH=h?=>7flAL;9@ U+_ Date: Thu, 9 Feb 2023 16:45:26 +0800 Subject: [PATCH 33/36] protean - few runtime/bug fixes, tesh suit sprites, digi suit sprites --- .../species/station/protean/protean_powers.dm | 6 +- .../species/station/protean/protean_rig.dm | 69 ++---------------- .../icons/inventory/feet/mob_digi.dmi | Bin 38667 -> 39236 bytes .../icons/inventory/suit/mob_digi.dmi | Bin 342817 -> 344123 bytes .../icons/mob/species/teshari/feet_ch.dmi | Bin 182 -> 362 bytes .../icons/mob/species/teshari/helmet_ch.dmi | Bin 182 -> 536 bytes .../icons/mob/species/teshari/suit_ch.dmi | Bin 182 -> 837 bytes 7 files changed, 9 insertions(+), 66 deletions(-) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm index 513979c618..21f1bcb114 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm @@ -29,7 +29,7 @@ to_chat(caller,"You don't have a working refactory module!") return - var/choice = tgui_input_list(src,"Pick the bodypart to change:", "Refactor - One Bodypart", species.has_limbs) + var/choice = tgui_input_list(caller,"Pick the bodypart to change:", "Refactor - One Bodypart", species.has_limbs) if(!choice) return @@ -326,7 +326,7 @@ if(nano_dead_check(src)) to_chat(caller, "You need to be repaired first before you can act!") return - to_chat(src, "You rapidly condense into your module.") + to_chat(caller, "You rapidly condense into your module.") if(forced || do_after(caller,20,exclusive = TASK_ALL_EXCLUSIVE)) if(!temporary_form) //If you're human, force you into blob form before rig'ing nano_blobform(forced) @@ -369,7 +369,7 @@ to_chat(temporary_form, "Somehow, your RIG got disconnected from your species. This may have been caused by an admin heal. A new one has been created for you, contact a coder.") new /obj/item/weapon/rig/protean(src,src) else - to_chat(src, "You must remain still to condense!") + to_chat(caller, "You must remain still to condense!") /mob/living/carbon/human/proc/appearance_switch() set name = "Switch Blob Appearance" diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index 77253dc05a..ce38cf5bab 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -136,6 +136,7 @@ SPECIES_VOX = 'modular_chomp/icons/mob/head_ch.dmi' ) icon = 'modular_chomp/icons/mob/head_ch.dmi' + default_worn_icon = 'modular_chomp/icons/mob/head_ch.dmi' /obj/item/clothing/gloves/gauntlets/rig/protean name = "mass" @@ -179,48 +180,19 @@ SPECIES_VOX = 'modular_chomp/icons/mob/hands_ch.dmi' ) icon = 'modular_chomp/icons/mob/hands_ch.dmi' + default_worn_icon = 'modular_chomp/icons/mob/hands_ch.dmi' /obj/item/clothing/shoes/magboots/rig/protean name = "mass" desc = "Boot-shaped clusters of nanomachines." species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN) sprite_sheets = list( - SPECIES_PROTEAN = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_HUMAN = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_TAJ = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_SKRELL = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_UNATHI = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_AKULA = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_SERGAL = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_NEVREAN = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_VULPKANIN = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_FENNEC = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/feet_ch.dmi', SPECIES_TESHARI = 'modular_chomp/icons/mob/species/teshari/feet_ch.dmi', - SPECIES_VASILISSAN = 'modular_chomp/icons/mob/feet_ch.dmi', SPECIES_VOX = 'modular_chomp/icons/mob/species/vox/shoes_ch.dmi' ) - - sprite_sheets_obj = list( - SPECIES_HUMAN = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_TAJ = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_SKRELL = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_UNATHI = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_AKULA = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_SERGAL = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_NEVREAN = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_VULPKANIN = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_FENNEC = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_TESHARI = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_VASILISSAN = 'modular_chomp/icons/mob/feet_ch.dmi', - SPECIES_VOX = 'modular_chomp/icons/mob/feet_ch.dmi' - ) + sprite_sheets_obj = list() icon = 'modular_chomp/icons/mob/feet_ch.dmi' + default_worn_icon = 'modular_chomp/icons/mob/feet_ch.dmi' /obj/item/clothing/suit/space/rig/protean name = "mass" @@ -236,42 +208,13 @@ /obj/item/weapon/storage/backpack, ) sprite_sheets = list( - SPECIES_PROTEAN = 'modular_chomp/icons/mob/spacesuit_ch.dmi', - SPECIES_HUMAN = 'modular_chomp/icons/mob/spacesuit_ch.dmi', - SPECIES_TAJ = 'modular_chomp/icons/mob/species/tajaran/suit_ch.dmi', - SPECIES_SKRELL = 'modular_chomp/icons/mob/species/skrell/suit_ch.dmi', - SPECIES_UNATHI = 'modular_chomp/icons/mob/species/unathi/suit_ch.dmi', - SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/species/unathi/suit_ch.dmi', - SPECIES_AKULA = 'modular_chomp/icons/mob/species/akula/suit_ch.dmi', - SPECIES_SERGAL = 'modular_chomp/icons/mob/species/sergal/suit_ch.dmi', - SPECIES_NEVREAN = 'modular_chomp/icons/mob/species/sergal/suit_ch.dmi', - SPECIES_VULPKANIN = 'modular_chomp/icons/mob/species/vulpkanin/suit_ch.dmi', - SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/species/fox/suit_ch.dmi', - SPECIES_FENNEC = 'modular_chomp/icons/mob/species/vulpkanin/suit_ch.dmi', - SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/species/skrell/suit_ch.dmi', SPECIES_TESHARI = 'modular_chomp/icons/mob/species/teshari/suit_ch.dmi', - SPECIES_VASILISSAN = 'modular_chomp/icons/mob/species/skrell/suit_ch.dmi', SPECIES_VOX = 'modular_chomp/icons/mob/species/vox/suit_ch.dmi' ) - sprite_sheets_obj = list( - SPECIES_HUMAN = 'modular_chomp/icons/mob/spacesuit_ch.dmi', - SPECIES_TAJ = 'modular_chomp/icons/mob/spacesuit_ch.dmi', - SPECIES_SKRELL = 'modular_chomp/icons/mob/spacesuit_ch.dmi', - SPECIES_UNATHI = 'modular_chomp/icons/mob/spacesuit_ch.dmi', - SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/spacesuit_ch.dmi', - SPECIES_AKULA = 'modular_chomp/icons/mob/spacesuit_ch.dmi', - SPECIES_SERGAL = 'modular_chomp/icons/mob/spacesuit_ch.dmi', - SPECIES_NEVREAN = 'modular_chomp/icons/mob/spacesuit_ch.dmi', - SPECIES_VULPKANIN = 'modular_chomp/icons/mob/spacesuit_ch.dmi', - SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/spacesuit_ch.dmi', - SPECIES_FENNEC = 'modular_chomp/icons/mob/spacesuit_ch.dmi', - SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/spacesuit_ch.dmi', - SPECIES_TESHARI = 'modular_chomp/icons/mob/spacesuit_ch.dmi', - SPECIES_VASILISSAN = 'modular_chomp/icons/mob/spacesuit_ch.dmi', - SPECIES_VOX = 'modular_chomp/icons/mob/spacesuit_ch.dmi' - ) + sprite_sheets_obj = list() icon = 'modular_chomp/icons/mob/spacesuit_ch.dmi' + default_worn_icon = 'modular_chomp/icons/mob/spacesuit_ch.dmi' //Copy pasted most of this proc from base because I don't feel like rewriting the base proc with a shit load of exceptions /obj/item/weapon/rig/protean/attackby(obj/item/W as obj, mob/living/user as mob) diff --git a/modular_chomp/icons/inventory/feet/mob_digi.dmi b/modular_chomp/icons/inventory/feet/mob_digi.dmi index 9165745e2cae545b78e4dd042cb4b4ed8300a157..16623f107175e5be851a68c2c6bb4393b3028ff7 100644 GIT binary patch literal 39236 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 z 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

>G#1-$CE8zrk&A1Y$v5)_*;(lbatcA3MoEl@t4 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 diff --git a/modular_chomp/icons/inventory/suit/mob_digi.dmi b/modular_chomp/icons/inventory/suit/mob_digi.dmi index 9ddf8b6761a06f7d789af208b3b9c07725c01478..43ec6bc337416c2947d2146b8e0b6a55e32d1fa4 100644 GIT binary patch delta 16210 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 R|8+nXgQu&X%Q~loCICO0AEE#N diff --git a/modular_chomp/icons/mob/species/teshari/helmet_ch.dmi b/modular_chomp/icons/mob/species/teshari/helmet_ch.dmi index cf74d73796c8c6121c0818fdac74e4a7f0ab9a5f..7641489d2f1414eecb13edd40b016d2587117263 100644 GIT binary patch delta 484 zcmVPx#0d!JMQvg8b*k%9#0E3Z1K!2R# zlEji!AX7<+i!&v&s2IpJZ(w8ic$+`hyY`+nP=d$P#W93qW^#hW9UyN31LIR^ R|8+nXgQu&X%Q~loCIA`WA6ozb diff --git a/modular_chomp/icons/mob/species/teshari/suit_ch.dmi b/modular_chomp/icons/mob/species/teshari/suit_ch.dmi index cf74d73796c8c6121c0818fdac74e4a7f0ab9a5f..c142bf055961e4199e9c5a2e50c8cb94f6242413 100644 GIT binary patch delta 787 zcmV+u1MK{^0mTMiiBL{Q4GJ0x0000DNk~Le0001B0001B1Oos701&on3jhEBAy7P?7JA77lBn3I}u1Ogw58*zA`zUGd4eoy}1B<}3tiY5fg|G5A-fvk}_WU$a zv}x1(QXEBl&u7JcZmkpSWAMCCFt@f7yC`uyQJ)pm2dXPHy1aX=B`?j=iA+`?P|qbU zohgBDAE2Q=E2s~TWUR%K`j0=TpNd&j!r1XGS%uFpM$f->0tQRGpMlx>%g@rz2X=^9 z8k2vI9&BA&$Y%pA2Q;u7cic7YBO#d&M7q28>h7z~>-qKFwfL7Z^?{^Ne8~sG6EjOb z&~6{+)W;{b{PW(l>3p5!sB0JK+g}3T{|>!*=Z;i>^m;Sn zkhvq}ecrsj4Xy9x=)T9&yCz;6x5MSx#VvmQGw|Z+=(bSE$wkM~2)E(o+@FZ@!ZqcC z;*vaqb14qphyE3OUL7t8eaJG!3thP-h8lv7nAv51urZ7{=bG7e*a&=i*R0ez>8o$c*Ki$rGFDNe|WS% R0IC20002ovPDHLkV1mN(Z`c3; delta 127 zcmX@gwvExTGr-TCmrII^fq{Y7)59eQNGpIaBQucn-11^OkYWz-32_C|%d2c}0V&3k zAirP+hi5m^KuRXYJDAF(vWDA>Z(w8ic$+`hyY`+nP=d$P#W93qW^#hW9UyN31LIR^ R|8+nXgQu&X%Q~loCIB-hACmw8 From ef419014556bad1d1656f58bfcdaf1117af21562 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sat, 11 Feb 2023 11:07:12 +0800 Subject: [PATCH 34/36] makes the vanity copy copy size changing traits as well --- .../code/modules/client/preferences.dm | 24 +++++++++++++++++++ .../mob/living/carbon/human/human_helpers.dm | 7 +++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/modular_chomp/code/modules/client/preferences.dm b/modular_chomp/code/modules/client/preferences.dm index 63ca5acd26..c90390afb6 100644 --- a/modular_chomp/code/modules/client/preferences.dm +++ b/modular_chomp/code/modules/client/preferences.dm @@ -208,6 +208,30 @@ character.offset_override = offset_override //CHOMPEdit character.voice_freq = voice_freq character.resize(size_multiplier, animate = FALSE, ignore_prefs = TRUE) + + var/list/traits_to_copy = list(/datum/trait/neutral/tall, + /datum/trait/neutral/taller, + /datum/trait/neutral/short, + /datum/trait/neutral/shorter, + /datum/trait/neutral/obese, + /datum/trait/neutral/fat, + /datum/trait/neutral/thin, + /datum/trait/neutral/thinner, + /datum/trait/neutral/micro_size_down, + /datum/trait/neutral/micro_size_up) + //reset all the above trait vars + if (character.species) + character.species.micro_size_mod = 0 + character.species.icon_scale_x = 1 + character.species.icon_scale_y = 1 + for (var/trait in neu_traits) + if (trait in traits_to_copy) + var/datum/trait/instance = all_traits[trait] + if (!instance) + continue + for (var/to_edit in instance.var_changes) + character.species.vars[to_edit] = instance.var_changes[to_edit] + character.update_transform() if(!voice_sound) character.voice_sounds_list = talk_sound else diff --git a/modular_chomp/code/modules/mob/living/carbon/human/human_helpers.dm b/modular_chomp/code/modules/mob/living/carbon/human/human_helpers.dm index 6f950f1762..88c8f5c851 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/human_helpers.dm @@ -114,7 +114,12 @@ fuzzy = character.fuzzy offset_override = character.offset_override //CHOMPEdit voice_freq = character.voice_freq - character.resize(character.size_multiplier, animate = TRUE, ignore_prefs = TRUE) + if (species && character.species) + species.micro_size_mod = character.species.micro_size_mod + species.icon_scale_x = character.species.icon_scale_x + species.icon_scale_y = character.species.icon_scale_y + update_transform() + resize(character.size_multiplier, animate = TRUE, ignore_prefs = TRUE) voice_sounds_list = character.voice_sounds_list species?.blood_color = character.species?.blood_color From 9490a5b69c67c145c41a62c72d5619515f44db23 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sat, 11 Feb 2023 11:48:26 +0800 Subject: [PATCH 35/36] puts dsi prosthetics back to normal in favor of dsi - adaptive skipping icon --- code/modules/organs/organ_external.dm | 1 + code/modules/organs/robolimbs_ch.dm | 25 ++++++++----------- .../code/modules/client/preferences.dm | 13 ++++++++-- .../mob/living/carbon/human/human_helpers.dm | 13 ++++++++-- .../code/modules/organs/organ_external.dm | 1 + .../code/modules/organs/organ_icon.dm | 11 ++++---- 6 files changed, 41 insertions(+), 23 deletions(-) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index d43b309631..170f107821 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -1140,6 +1140,7 @@ Note that amputating the affected organ does in fact remove the infection from t brute_mod *= R.robo_brute_mod burn_mod *= R.robo_burn_mod skip_robo_icon = R.no_icon //CHOMPStation edit + digi_prosthetic = R.can_be_digitigrade //CHOMPStation edit if(R.lifelike) robotic = ORGAN_LIFELIKE name = "[initial(name)]" diff --git a/code/modules/organs/robolimbs_ch.dm b/code/modules/organs/robolimbs_ch.dm index d4a5b35320..a5c7add14b 100644 --- a/code/modules/organs/robolimbs_ch.dm +++ b/code/modules/organs/robolimbs_ch.dm @@ -4,7 +4,7 @@ GLOBAL_LIST_INIT(dsi_to_species, list(SPECIES_TAJARAN = "DSI - Tajaran", SPECIES /datum/robolimb var/no_icon = FALSE //specifically for DSI things, makes it so it doesn't override the species icons - //var/has_digitigrade_icon = FALSE //make this a thing + var/can_be_digitigrade = FALSE //used for skipping the icon if it can be digitigrade - maybe turn this into more of a 'use this icon/iconstate' instead later, when actual prosthetic digi icons get made /datum/robolimb/valehoundhead company = "VALE Hound- Head" @@ -14,34 +14,31 @@ GLOBAL_LIST_INIT(dsi_to_species, list(SPECIES_TAJARAN = "DSI - Tajaran", SPECIES parts = list(BP_HEAD) /datum/robolimb/dsi_tajaran - no_icon = TRUE + can_be_digitigrade = TRUE /datum/robolimb/dsi_lizard - no_icon = TRUE + can_be_digitigrade = TRUE /datum/robolimb/dsi_sergal - no_icon = TRUE + can_be_digitigrade = TRUE /datum/robolimb/dsi_nevrean - no_icon = TRUE + can_be_digitigrade = TRUE /datum/robolimb/dsi_vulpkanin - no_icon = TRUE + can_be_digitigrade = TRUE /datum/robolimb/dsi_akula - no_icon = TRUE + can_be_digitigrade = TRUE /datum/robolimb/dsi_spider - no_icon = TRUE + can_be_digitigrade = TRUE /datum/robolimb/dsi_zorren - no_icon = TRUE + can_be_digitigrade = TRUE /datum/robolimb/dsi_fennec - no_icon = TRUE - -/datum/robolimb/dsi_teshari - no_icon = TRUE + can_be_digitigrade = TRUE /datum/robolimb/dsi_teshari/New() . = ..() @@ -49,7 +46,7 @@ GLOBAL_LIST_INIT(dsi_to_species, list(SPECIES_TAJARAN = "DSI - Tajaran", SPECIES /datum/robolimb/dsi_other - company = "DSI - Synthetic" + company = "DSI - Adaptive" desc = "This limb has a realistic design and squish. By Darkside Incorperated." blood_color = "#ffe2ff" lifelike = 1 diff --git a/modular_chomp/code/modules/client/preferences.dm b/modular_chomp/code/modules/client/preferences.dm index c90390afb6..135250340b 100644 --- a/modular_chomp/code/modules/client/preferences.dm +++ b/modular_chomp/code/modules/client/preferences.dm @@ -136,7 +136,16 @@ // Destroy/cyborgize organs and limbs. if (convert_to_prosthetics) //should only really be run for proteans - for(var/name in BP_ALL) + var/list/organs_to_edit = list() + for (var/name in list(BP_TORSO, BP_HEAD, BP_GROIN, BP_L_ARM, BP_R_ARM, BP_L_HAND, BP_R_HAND, BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT)) + var/obj/item/organ/external/O = character.organs_by_name[name] + if (O) + var/x = organs_to_edit.Find(O.parent_organ) + if (x == 0) + organs_to_edit += name + else + organs_to_edit.Insert(x+(O.robotic == ORGAN_NANOFORM ? 1 : 0), name) + for(var/name in organs_to_edit) var/status = organ_data[name] var/obj/item/organ/external/O = character.organs_by_name[name] if(O) @@ -153,7 +162,7 @@ bodytype = selected_species.get_bodytype() var/dsi_company = GLOB.dsi_to_species[bodytype] if (!dsi_company) - dsi_company = "DSI - Synthetic" + dsi_company = "DSI - Adaptive" O.robotize(dsi_company) for(var/N in character.organs_by_name) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/human_helpers.dm b/modular_chomp/code/modules/mob/living/carbon/human/human_helpers.dm index 88c8f5c851..5fc8ab66c3 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/human_helpers.dm @@ -84,7 +84,16 @@ var/bodytype = character.species?.get_bodytype() if (convert_to_prosthetics) //should only really be run for proteans - for(var/name in BP_ALL) + var/list/organs_to_edit = list() + for (var/name in list(BP_TORSO, BP_HEAD, BP_GROIN, BP_L_ARM, BP_R_ARM, BP_L_HAND, BP_R_HAND, BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT)) + var/obj/item/organ/external/O = character.organs_by_name[name] + if (O) + var/x = organs_to_edit.Find(O.parent_organ) + if (x == 0) + organs_to_edit += name + else + organs_to_edit.Insert(x+(O.robotic == ORGAN_NANOFORM ? 1 : 0), name) + for(var/name in organs_to_edit) var/obj/item/organ/external/I = character.organs_by_name[name] var/obj/item/organ/external/O = organs_by_name[name] if(O) @@ -93,7 +102,7 @@ else var/dsi_company = GLOB.dsi_to_species[bodytype] if (!dsi_company) - dsi_company = "DSI - Synthetic" + dsi_company = "DSI - Adaptive" O.robotize(dsi_company) for(var/N in character.organs_by_name) diff --git a/modular_chomp/code/modules/organs/organ_external.dm b/modular_chomp/code/modules/organs/organ_external.dm index 02c7d19170..f88cfc0bb3 100644 --- a/modular_chomp/code/modules/organs/organ_external.dm +++ b/modular_chomp/code/modules/organs/organ_external.dm @@ -1,5 +1,6 @@ /obj/item/organ/external var/skip_robo_icon = FALSE //CHOMPStation edit - to force it to use the normal species icon + var/digi_prosthetic = FALSE //is it a prosthetic that can be digitigrade //new function to check for markings /obj/item/organ/external/proc/is_hidden_by_markings() diff --git a/modular_chomp/code/modules/organs/organ_icon.dm b/modular_chomp/code/modules/organs/organ_icon.dm index 36b004674a..5b84af02b0 100644 --- a/modular_chomp/code/modules/organs/organ_icon.dm +++ b/modular_chomp/code/modules/organs/organ_icon.dm @@ -10,6 +10,7 @@ digitigrade = dna.digitigrade && (istype(src,/obj/item/organ/external/leg) || istype(src,/obj/item/organ/external/foot)) var/gender = "m" + var/skip_forced_icon = skip_robo_icon || (digi_prosthetic && digitigrade) if(owner && owner.gender == FEMALE) gender = "f" @@ -18,7 +19,7 @@ else icon_cache_key = "[icon_name]_[force_icon_key]" - if(force_icon && !skip_robo_icon) + if(force_icon && !skip_forced_icon) mob_icon = new /icon(force_icon, "[icon_name][gendered_icon ? "_[gender]" : ""]") else if(!dna) @@ -35,7 +36,7 @@ if(skeletal) mob_icon = new /icon('icons/mob/human_races/r_skeleton.dmi', "[icon_name][gender ? "_[gender]" : ""]") - else if (robotic >= ORGAN_ROBOT && !skip_robo_icon) + else if (robotic >= ORGAN_ROBOT && !skip_forced_icon) mob_icon = new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]") apply_colouration(mob_icon) else @@ -46,13 +47,13 @@ mob_icon = new /icon(digitigrade ? species.icodigi : species.get_icobase(owner, (status & ORGAN_MUTATED)), "[icon_name][gender ? "_[gender]" : ""]") apply_colouration(mob_icon) - if (model && !skip_robo_icon) + if (model && !skip_forced_icon) icon_cache_key += "_model_[model]" apply_colouration(mob_icon) //Code here is copied from organ_icon.dm line 118 at time of writing (9/20/21), VOREStation edits are left in intentionally, because I think it's worth keeping track of the fact that the code is from Virgo's edits. //Body markings, actually does not include head this time. Done separately above. - if((!istype(src,/obj/item/organ/external/head) && !(force_icon && !skip_robo_icon)) || (model && owner && owner.synth_markings)) + if((!istype(src,/obj/item/organ/external/head) && !(force_icon && !skip_forced_icon)) || (model && owner && owner.synth_markings)) for(var/M in markings) var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"] var/isdigitype = istype(mark_style,/datum/sprite_accessory/marking/digi) @@ -71,7 +72,7 @@ mob_icon.Blend(limb_icon_cache[cache_key], ICON_OVERLAY) // VOREStation edit start - if(nail_polish && !(force_icon && !skip_robo_icon)) + if(nail_polish && !(force_icon && !skip_forced_icon)) var/icon/I = new(nail_polish.icon, nail_polish.icon_state) I.Blend(nail_polish.color, ICON_MULTIPLY) add_overlay(I) From 38fd6c93070b0ed79727c422de182c4b3358ea4e Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Thu, 23 Feb 2023 14:27:27 +1300 Subject: [PATCH 36/36] pushing these sprites for later --- .../icons/mob/species/protean/protean128x64.dmi | Bin 0 -> 31284 bytes .../icons/mob/species/protean/protean64x32.dmi | Bin 0 -> 12074 bytes .../icons/mob/species/protean/protean64x64.dmi | Bin 0 -> 64047 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 modular_chomp/icons/mob/species/protean/protean128x64.dmi create mode 100644 modular_chomp/icons/mob/species/protean/protean64x32.dmi create mode 100644 modular_chomp/icons/mob/species/protean/protean64x64.dmi diff --git a/modular_chomp/icons/mob/species/protean/protean128x64.dmi b/modular_chomp/icons/mob/species/protean/protean128x64.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5e1139a83754401242696bc96c50ccfdd54bba7b GIT binary patch literal 31284 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 literal 0 HcmV?d00001 diff --git a/modular_chomp/icons/mob/species/protean/protean64x64.dmi b/modular_chomp/icons/mob/species/protean/protean64x64.dmi new file mode 100644 index 0000000000000000000000000000000000000000..6f5e008dc825f2afbc92d9c744680795e5a09ca3 GIT binary patch literal 64047 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

n05kNpS>3>LC{~xpa1>`o_y|c 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≫Bc#(2`ud)uw)xXIQ*V&T7FgNSPduBW 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 WQ!ZmKV6KCKe$wLdVl^U$LH`4=)?V%a literal 0 HcmV?d00001